From 638fff64d833e3c5b378b16eda12d5e131417541 Mon Sep 17 00:00:00 2001 From: Dan Sun Date: Thu, 23 Sep 2021 09:54:09 -0400 Subject: [PATCH] Merge kserve to main branch (#1811) * Change e2e test job to point to kserve repo * Fix prow config * Remove dir dep * fix image-transformer built image tag (#44) * fix image-transformer built image tag Signed-off-by: Theofilos Papapanagiotou * rename ecr registry directory for kserve Signed-off-by: Theofilos Papapanagiotou * merging kserve branch to master (#35) * KServe Go module and API group change -------------------------------------- Updated go source files with new go module. Changed apigroup in yaml files. Made changes in Makefile to represent the repository and apigroup names. Verified `make test` is passing. Removed reference for old names. * Pointed correct repo reference for ko images (#23) * Rename changes python - New (#19) * python changes-initial-commit * updated api gen. Renamed package references in python. * Renamed python/kfserving to python/kserve * renamed python folder according to package kserve * Ran client-gen. Updated swagger.json * renamed constants from KFSERVING_ to KSERVE_. Yet to change namespace from kfserving-system to kserve and hence not changed in python side. * Updated kfserving reference to kserve Updated version for Python Package Index to 0.7.0rc0 Renamed KFServingSampleModel to KServeSampleModel * Python package and corresponding directory change has to be reflected in test and dockerfiles * updated a specific version in requirments to address issue with pip resolver. Added more specific versions in requirements,txt and updated paddleserver setup.py with kserve dependency. * Changed namespace from kfserving-system to kserve (#31) * Update local dev scripts (#33) * initial commit of dev-scripts update * Updated quick-install * Updated python Makefile * Generated install for new release * Updated generate-install script with new release * Reverting controller name in makefile. Will be updated in separate pr. * Github action changes (#34) * Github action changes Migrated images publish to kserve repo. Added github workflows for the ones that was being pushed to gcr.io from release/triggers. * Removed batcher publisher since batcher.Dockerfile does not exist Updated tf2openapi.Dockerfile to correct directory and package. * Fixed issue with working directory of tf2openapi workflow * Removed the deptrecated logger docker * Excluded tests from linting. (#36) They were pointing to older directory and package names and hence were not being excluded while linting. * Update license (#20) * Fixed errors thrown by flake8 linter (#37) * Kfserving kserve manifests changes and code reference changes (#39) * kfserving -> kserve migartion initial commit * kfserving -> kserve config changes * Changed constants. Updated image reference from kserve to andyarok * Reverted kserve models web app image repo. * go changes for kfserving-kserve * Updated KFServing refernce in python code * Updated KFServing to KServe in python doc comments. Updated references of v1alpha2 from duplicate aliases to just use pkg name. Updated docs samples references with proper name. Made changes to use Constant for container name instead of literal "kserve-container". * Updated gitignore for generated files that came in after folder rename. Removed the generated files. Fixed lint warnings for go. * Removed travis yml file. * KServe doc update (#38) * Update main and pythonserver readme * Update python docs * Fix role binding * Update kserve sdk doc * Fix e2e test script * Fix import * Kserve error fix (#40) * Fixed linting errors in python * Fixed make test. Issue with storage initializer name/path. * Fixed failing python test. Updated ray version. Updated KFServingClient reference to KServeClient in kserve init. * Updated ray version from 1.4.0 to 1.5.0 * Fixed error with e2e due to kfserving reference in test overlay (#42) Updated quick install and added 0.7.0-rc0 install manifests. Updated e2e namespace. * Controller repo update (#45) Made changes in workflow to update image repo to kserve instead of kfserving * Controller repo update (#45) Made changes in workflow to update image repo to kserve instead of kfserving * update pytorch image * Fix transformer dockerfile Co-authored-by: Andrews Arokiam Co-authored-by: andyi2it <87992092+andyi2it@users.noreply.github.com> * Generate 0.7.0 release candidate and update roadmap/release process (#46) * Fix apiVersion for examples and docs (#55) Fix apiVersion for examples and docs change from serving.kubeflow.org to serving.kserve.io * add default deployment and fix startup without knative to master branch (#57) * add default deployment and fix startup without knative * fix suite_test error * fix suit_test error * add constant vb for RawDeployment and Serverless * update predictor string RawDeployment to constants.RawDeployment * modify getDeploymentMode return type * Update kserve layer diagram (#58) * update diag (#59) * Remove kubeflow copyright (#56) * Adding kfs_architect.drawio and changing kfs_architect.png's "KFserving" name to "KServe" (#60) * Delete kfs_architect.png * Add files via upload Adding kfs_architect.drawio and changing kfs_architect.png's "KFserving" name to "KServe" * Delete kfs_architect.png * Delete kfs_architect.drawio * added Metric scrapping title * Delete kfs_architect.png * Delete kfs_architect.drawio * fixed typo * add Nick Hill as a reviewer (#66) also removing rkelkar * Separate out web-app repo (#68) * Sepate out web-app repo * Remove models web-app github action * Fix feast example Co-authored-by: Theofilos Papapanagiotou Co-authored-by: Andrews Arokiam Co-authored-by: andyi2it <87992092+andyi2it@users.noreply.github.com> Co-authored-by: Chin Huang Co-authored-by: Qingshan Chen <38182824+Iamlovingit@users.noreply.github.com> Co-authored-by: Animesh Singh Co-authored-by: js-ts <79689323+js-ts@users.noreply.github.com> --- .github/workflows/agent-docker-publish.yml | 2 +- .../workflows/aiexplainer-docker-publish.yml | 2 +- .../alibiexplainer-docker-publish.yml | 2 +- .../workflows/artexplainer-docker-publish.yml | 2 +- ...l => kserve-controller-docker-publish.yml} | 8 +- .github/workflows/lightgbm-docker-publish.yml | 2 +- .github/workflows/paddle-docker-publish.yml | 2 +- .github/workflows/pmml-docker-publish.yml | 2 +- .github/workflows/python-publish.yml | 2 +- .github/workflows/python-test.yml | 4 +- .../pytorchserver-docker-publish.yml | 79 + .../pytorchserver-gpu-docker-publish.yml | 82 + .../sklearnserver-docker-publish.yml | 79 + .../storage-initializer-docker-publisher.yml | 79 + .../workflows/tf2openapi-docker-publisher.yml | 77 + .../workflows/xgbserver-docker-publisher.yml | 79 + .gitignore | 12 +- Dockerfile | 4 +- Makefile | 74 +- OWNERS | 2 +- PROJECT | 4 +- README.md | 123 +- ROADMAP.md | 127 +- agent.Dockerfile | 4 +- cmd/agent/execprobe.go | 1 - cmd/agent/main.go | 12 +- cmd/manager/main.go | 57 +- cmd/spec-gen/main.go | 11 +- config/certmanager/certificate.yaml | 10 +- config/configmap/inferenceservice.yaml | 32 +- config/crd/kustomization.yaml | 6 +- .../serving.kserve.io_inferenceservices.yaml | 15983 +++++++++ .../crd/serving.kserve.io_trainedmodels.yaml | 114 + ...erving.kubeflow.org_inferenceservices.yaml | 28170 +++++++++------- .../serving.kubeflow.org_trainedmodels.yaml | 10 +- .../cainjection_conversion_webhook.yaml | 4 +- .../inferenceservice_conversion_webhook.yaml | 4 +- config/default/kustomization.yaml | 12 +- config/default/manager_auth_proxy_patch.yaml | 4 +- config/default/manager_image_patch.yaml | 6 +- .../manager_prometheus_metrics_patch.yaml | 4 +- config/default/manager_resources_patch.yaml | 4 +- config/default/webhookcainjection_patch.yaml | 18 +- config/manager/manager.yaml | 20 +- config/manager/service.yaml | 12 +- .../development/configmap/ko_resolve_agent | 2 +- .../development/configmap/ko_resolve_batcher | 2 +- .../development/configmap/ko_resolve_logger | 2 +- config/overlays/kubeflow/cluster-role.yaml | 14 +- config/overlays/kubeflow/kustomization.yaml | 14 +- .../overlays/kubeflow/patches/namespace.yaml | 2 +- .../kubeflow/patches/statefulset.yaml | 4 +- .../kubeflow/patches/web-app-sidecar.yaml | 4 +- .../kubeflow/patches/web-app-vsvc.yaml | 2 +- .../web-app-authorization-policy.yaml | 10 +- .../test/configmap/inferenceservice.yaml | 30 +- config/overlays/test/manager_image_patch.yaml | 6 +- config/rbac/auth_proxy_role.yaml | 2 +- config/rbac/auth_proxy_role_binding.yaml | 6 +- config/rbac/auth_proxy_service.yaml | 8 +- config/rbac/leader_election_role_binding.yaml | 2 +- config/rbac/role.yaml | 10 +- config/rbac/role_binding.yaml | 6 +- config/web-app/deployment.yaml | 16 +- config/web-app/istio.yaml | 6 +- config/web-app/kustomization.yaml | 6 +- config/web-app/rbac.yaml | 16 +- config/web-app/service.yaml | 6 +- config/webhook/manifests.yaml | 52 +- config/webhook/service.yaml | 6 +- docs/apis/v1alpha2/README.md | 246 +- docs/apis/v1beta1/README.md | 278 +- docs/diagrams/kfs_architect.drawio | 1 + docs/diagrams/kfs_architect.png | Bin 410830 -> 72816 bytes docs/diagrams/kfserving.png | Bin 225929 -> 0 bytes docs/diagrams/kserve.png | Bin 0 -> 472792 bytes docs/samples/accelerators/tensorflow-gpu.yaml | 4 +- docs/samples/accelerators/xgboost-gpu.yaml | 2 +- docs/samples/autoscaling/README.md | 12 +- docs/samples/autoscaling/autoscale.yaml | 2 +- .../samples/autoscaling/autoscale_custom.yaml | 2 +- docs/samples/autoscaling/autoscale_gpu.yaml | 2 +- docs/samples/batcher/README.md | 2 +- docs/samples/batcher/basic/README.md | 2 +- .../batcher/basic/batcher_v1beta1.yaml | 2 +- .../batcher/basic/pytorch-batcher.yaml | 2 +- docs/samples/bentoml/README.md | 2 +- docs/samples/bentoml/bentoml.yaml | 2 +- .../client/kfserving_sdk_v1beta1_sample.ipynb | 12 +- .../alibi-detect/cifar10/cifar10_drift.ipynb | 4 +- .../aif/germancredit/bias-v1alpha1.yaml | 2 +- .../explanation/aif/germancredit/bias.yaml | 2 +- .../aif/germancredit/server/model.py | 8 +- .../aix/mnist/aix-explainer-v1alpha2.yaml | 2 +- .../explanation/aix/mnist/aix-explainer.yaml | 2 +- .../aix/mnist/rfserver/rfserver/__init__.py | 1 - .../aix/mnist/rfserver/rfserver/__main__.py | 7 +- .../aix/mnist/rfserver/rfserver/model.py | 5 +- .../explanation/aix/mnist/rfserver/setup.py | 5 +- .../samples/explanation/aix/mnist/train_rf.py | 1 - .../explanation/alibi/cifar10/cifar10.yaml | 2 +- .../explanation/alibi/income/README.md | 2 +- .../explanation/alibi/income/income.yaml | 2 +- .../samples/explanation/alibi/income/train.py | 1 - .../alibi/moviesentiment/README.md | 4 +- .../alibi/moviesentiment/moviesentiment.yaml | 2 +- .../alibi/moviesentiment/moviesentiment2.yaml | 2 +- docs/samples/explanation/art/mnist/art.yaml | 2 +- .../art/mnist/sklearnserver/setup.py | 5 +- .../sklearnserver/sklearnserver/__init__.py | 1 - .../sklearnserver/sklearnserver/__main__.py | 5 +- .../mnist/sklearnserver/sklearnserver/http.py | 1 - .../sklearnserver/kfmodel_repository.py | 3 +- .../sklearnserver/sklearnserver/kfserver.py | 3 +- .../sklearnserver/sklearnserver/model.py | 7 +- .../sklearnserver/sklearn_model_repository.py | 1 - .../samples/gcp-iap/sklearn-iap-no-authz.yaml | 2 +- .../gcp-iap/sklearn-iap-with-authz.yaml | 2 +- docs/samples/istio-dex/sklearn.yaml | 2 +- .../kafka/image_transformer/__init__.py | 1 - .../kafka/image_transformer/__main__.py | 7 +- .../image_transformer/image_transformer.py | 7 +- docs/samples/kafka/kafka-source.yaml | 2 +- docs/samples/kafka/mnist_kafka.yaml | 2 +- docs/samples/kafka/setup.py | 3 +- docs/samples/logger/basic/README.md | 2 +- .../samples/logger/basic/sklearn-logging.yaml | 2 +- .../samples/logger/knative-eventing/README.md | 2 +- .../knative-eventing/sklearn-logging.yaml | 2 +- .../multimodelserving/benchmark/BENCHMARK.md | 4 +- .../multimodelserving/sklearn/README.md | 8 +- .../sklearn/inferenceservice.yaml | 2 +- .../multimodelserving/triton/README.md | 6 +- .../triton/multi_model_triton.yaml | 2 +- .../alibi-detect/cifar10/cifar10.yaml | 2 +- .../cifar10/cifar10_outlier.ipynb | 4 +- docs/samples/pipelines/sample-custom-model.py | 1 - docs/samples/pipelines/sample-tf-pipeline.py | 1 - docs/samples/storage/pvc/mnist-pvc.yaml | 2 +- docs/samples/storage/s3/README.md | 12 +- docs/samples/storage/s3/tensorflow_s3.yaml | 2 +- docs/samples/storage/uri/README.md | 8 +- docs/samples/storage/uri/sklearn.yaml | 2 +- docs/samples/storage/uri/tensorflow.yaml | 2 +- .../v1alpha2/custom/customized-urls/Readme.md | 2 +- .../customized-urls/customized-urls.yaml | 2 +- .../v1alpha2/custom/grpc-server/README.md | 2 +- .../custom/grpc-server/client/client.go | 10 +- .../custom/grpc-server/grpc-service.yaml | 2 +- .../custom/grpc-server/proto/helloworld.pb.go | 68 +- .../v1alpha2/custom/grpc-server/server.go | 8 +- .../v1alpha2/custom/hello-world/custom.yaml | 2 +- .../custom/kfserving-custom-model/custom.yaml | 2 +- .../model-server/model.py | 8 +- .../custom/prebuilt-image/custom.yaml | 2 +- docs/samples/v1alpha2/onnx/onnx.yaml | 2 +- docs/samples/v1alpha2/pmml/pmml.yaml | 2 +- docs/samples/v1alpha2/pytorch/cifar10.py | 1 - docs/samples/v1alpha2/pytorch/pytorch.yaml | 2 +- .../samples/v1alpha2/pytorch/pytorch_gpu.yaml | 2 +- .../v1alpha2/pytorch/pytorch_v1beta1.yaml | 2 +- docs/samples/v1alpha2/rollouts/canary.yaml | 2 +- docs/samples/v1alpha2/rollouts/pinned.yaml | 2 +- docs/samples/v1alpha2/rollouts/promotion.yaml | 2 +- docs/samples/v1alpha2/sklearn/README.md | 4 +- docs/samples/v1alpha2/sklearn/sklearn.yaml | 2 +- .../tensorflow/tensorflow-canary.yaml | 2 +- .../v1alpha2/tensorflow/tensorflow.yaml | 2 +- .../image_transformer/image_transformer.yaml | 2 +- .../image_transformer/__init__.py | 1 - .../image_transformer/__main__.py | 7 +- .../image_transformer/image_transformer.py | 7 +- .../kfserving_sdk_transformer.ipynb | 6 +- .../transformer/image_transformer/setup.py | 11 +- .../image_transformer/transformer.Dockerfile | 2 +- docs/samples/v1alpha2/triton/bert/README.md | 6 +- docs/samples/v1alpha2/triton/bert/bert.yaml | 2 +- .../bert_transformer/__main__.py | 7 +- .../bert_transformer/bert_transformer.py | 5 +- .../bert_transformer/data_processing.py | 1 - .../bert_transformer/tokenization.py | 1 - .../v1alpha2/triton/simple_string/triton.yaml | 2 +- docs/samples/v1alpha2/xgboost/README.md | 4 +- docs/samples/v1alpha2/xgboost/xgboost.yaml | 2 +- .../v1beta1/advanced/cluster_local.yaml | 2 +- .../v1beta1/advanced/pod-overrides.yaml | 2 +- docs/samples/v1beta1/advanced/probes.yaml | 2 +- docs/samples/v1beta1/advanced/timeout.yaml | 2 +- .../v1beta1/custom/custom_model/custom.yaml | 2 +- .../paddleserving/paddleserving-custom.yaml | 2 +- docs/samples/v1beta1/custom/simple.yaml | 2 +- .../v1beta1/custom/torchserve/autoscale.yaml | 2 +- .../custom/torchserve/bert-sample/bert.yaml | 2 +- .../v1beta1/custom/torchserve/canary.yaml | 2 +- .../custom/torchserve/docs/autoscaling.md | 4 +- .../v1beta1/custom/torchserve/docs/canary.md | 6 +- .../v1beta1/custom/torchserve/docs/metrics.md | 4 +- .../v1beta1/custom/torchserve/gpu.yaml | 2 +- .../custom/torchserve/logger/README.md | 2 +- .../torchserve/logger/logger_demo.ipynb | 6 +- .../torchserve/logger/torchserve-logger.yaml | 2 +- .../v1beta1/custom/torchserve/metrics.yaml | 2 +- .../torchserve/torchserve-custom-pv.yaml | 2 +- .../custom/torchserve/torchserve-custom.yaml | 2 +- docs/samples/v1beta1/lightgbm/README.md | 4 +- docs/samples/v1beta1/lightgbm/lightgbm.yaml | 2 +- docs/samples/v1beta1/paddle/paddle.yaml | 2 +- docs/samples/v1beta1/pmml/pmml.yaml | 2 +- docs/samples/v1beta1/rollout/README.md | 20 +- docs/samples/v1beta1/rollout/canary.yaml | 2 +- docs/samples/v1beta1/rollout/default.yaml | 2 +- docs/samples/v1beta1/rollout/pinned.yaml | 2 +- docs/samples/v1beta1/rollout/promotion.yaml | 2 +- docs/samples/v1beta1/sklearn/v1/README.md | 4 +- docs/samples/v1beta1/sklearn/v1/sklearn.yaml | 2 +- docs/samples/v1beta1/sklearn/v2/README.md | 2 +- docs/samples/v1beta1/sklearn/v2/sklearn.yaml | 2 +- docs/samples/v1beta1/spark/README.md | 6 +- docs/samples/v1beta1/spark/spark_pmml.yaml | 2 +- docs/samples/v1beta1/tensorflow/README.md | 10 +- docs/samples/v1beta1/tensorflow/canary.yaml | 2 +- docs/samples/v1beta1/tensorflow/grpc.yaml | 2 +- .../v1beta1/tensorflow/tensorflow.yaml | 2 +- .../v1beta1/tensorflow/versioning.yaml | 2 +- .../v1beta1/torchserve/autoscaling/README.md | 6 +- .../torchserve/autoscaling/autoscaling.yaml | 2 +- .../samples/v1beta1/torchserve/bert/bert.yaml | 2 +- .../v1beta1/torchserve/canary/README.md | 10 +- .../v1beta1/torchserve/canary/canary.yaml | 2 +- docs/samples/v1beta1/torchserve/gpu.yaml | 2 +- .../v1beta1/torchserve/metrics/README.md | 4 +- .../v1beta1/torchserve/metrics/metrics.yaml | 2 +- .../v1beta1/torchserve/torchserve.yaml | 2 +- .../v1beta1/transformer/feast/README.md | 8 +- .../transformer/feast/driver_transformer.yaml | 2 +- .../feast/driver_transformer/__init__.py | 1 - .../feast/driver_transformer/__main__.py | 9 +- .../driver_transformer/driver_transformer.py | 15 +- .../v1beta1/transformer/feast/setup.py | 5 +- .../torchserve_image_transformer/README.md | 4 +- .../image_transformer/__init__.py | 1 - .../image_transformer/__main__.py | 7 +- .../image_transformer/image_transformer.py | 15 +- .../transformer_model_repository.py | 6 +- .../torchserve_image_transformer/setup.py | 10 +- .../transformer.yaml | 2 +- docs/samples/v1beta1/triton/bert/README.md | 6 +- .../bert_transformer_v2/__main__.py | 7 +- .../bert_transformer_v2/bert_transformer.py | 5 +- .../bert_transformer_v2/data_processing.py | 1 - .../bert_transformer_v2/tokenization.py | 1 - .../v1beta1/triton/bert/bert_v1beta1.yaml | 2 +- .../v1beta1/triton/torchscript/README.md | 10 +- .../image_transformer_v2/__init__.py | 1 - .../image_transformer_v2/__main__.py | 7 +- .../image_transformer_v2.py | 7 +- .../v1beta1/triton/torchscript/setup.py | 3 +- .../triton/torchscript/torch_transformer.yaml | 2 +- .../triton/torchscript/torchscript.yaml | 2 +- .../triton/torchscript/torchscript_grpc.yaml | 2 +- docs/samples/v1beta1/xgboost/README.md | 2 +- docs/samples/v1beta1/xgboost/xgboost.yaml | 2 +- go.mod | 2 +- hack/alibi_patch_dev.sh | 2 +- hack/boilerplate.go.txt | 2 +- hack/boilerplate.python.txt | 2 +- hack/generate-cloudbuild-triggers.sh | 10 - hack/generate-install.sh | 5 +- hack/image_patch_dev.sh | 6 +- hack/model_server_patch_dev.sh | 2 +- hack/python-sdk/README.md | 18 +- hack/python-sdk/client-gen.sh | 18 +- hack/python-sdk/swagger_config.json | 4 +- hack/quick_install.sh | 7 +- hack/self-signed-ca.sh | 23 +- hack/storageInitializer_patch_dev.sh | 2 +- hack/update-codegen.sh | 4 +- install/v0.7.0-rc0/kserve.yaml | 17084 ++++++++++ install/v0.7.0-rc0/kserve_kubeflow.yaml | 17280 ++++++++++ logger.Dockerfile | 22 - pkg/agent/agent_suite_test.go | 1 - pkg/agent/downloader.go | 5 +- pkg/agent/mocks/gcsmock.go | 1 - pkg/agent/mocks/s3mock.go | 1 - pkg/agent/puller.go | 5 +- pkg/agent/storage/gcs.go | 1 - pkg/agent/storage/https.go | 1 - pkg/agent/storage/provider.go | 1 - pkg/agent/storage/s3.go | 1 - pkg/agent/storage/utils.go | 16 +- pkg/agent/syncer.go | 8 +- pkg/agent/watcher.go | 12 +- pkg/agent/watcher_test.go | 9 +- pkg/apis/apis.go | 7 +- pkg/apis/serving/v1alpha1/trained_model.go | 1 - .../serving/v1alpha1/trained_model_status.go | 1 - .../serving/v1alpha1/trainedmodel_webhook.go | 14 +- .../v1alpha1/trainedmodel_webhook_test.go | 1 - pkg/apis/serving/v1alpha1/v1alpha1.go | 9 +- .../serving/v1alpha1/zz_generated.deepcopy.go | 1 - pkg/apis/serving/v1alpha2/configmap.go | 5 +- pkg/apis/serving/v1alpha2/doc.go | 7 +- pkg/apis/serving/v1alpha2/explainer.go | 1 - pkg/apis/serving/v1alpha2/explainer_aix360.go | 3 +- .../serving/v1alpha2/explainer_aix360_test.go | 3 +- pkg/apis/serving/v1alpha2/explainer_alibi.go | 6 +- .../serving/v1alpha2/explainer_alibi_test.go | 3 +- pkg/apis/serving/v1alpha2/framework_custom.go | 3 +- .../serving/v1alpha2/framework_lightgbm.go | 3 +- .../v1alpha2/framework_lightgbm_test.go | 3 +- pkg/apis/serving/v1alpha2/framework_onnx.go | 3 +- .../serving/v1alpha2/framework_onnx_test.go | 3 +- pkg/apis/serving/v1alpha2/framework_pmml.go | 6 +- .../serving/v1alpha2/framework_pytorch.go | 3 +- .../v1alpha2/framework_pytorch_test.go | 3 +- pkg/apis/serving/v1alpha2/framework_scikit.go | 6 +- .../serving/v1alpha2/framework_scikit_test.go | 3 +- .../serving/v1alpha2/framework_tensorflow.go | 3 +- .../v1alpha2/framework_tensorflow_test.go | 3 +- pkg/apis/serving/v1alpha2/framework_triton.go | 4 +- .../serving/v1alpha2/framework_triton_test.go | 3 +- .../serving/v1alpha2/framework_xgboost.go | 6 +- .../v1alpha2/framework_xgboost_test.go | 3 +- pkg/apis/serving/v1alpha2/inference_logger.go | 1 - .../serving/v1alpha2/inference_logger_test.go | 1 - .../v1alpha2/inferenceservice_conversion.go | 5 +- .../inferenceservice_conversion_test.go | 16 +- .../v1alpha2/inferenceservice_defaults.go | 1 - .../inferenceservice_defaults_test.go | 19 +- .../v1alpha2/inferenceservice_status.go | 5 +- .../v1alpha2/inferenceservice_status_test.go | 8 +- .../v1alpha2/inferenceservice_types.go | 3 +- .../v1alpha2/inferenceservice_types_test.go | 7 +- .../v1alpha2/inferenceservice_validation.go | 1 - .../inferenceservice_validation_test.go | 1 - .../serving/v1alpha2/openapi_generated.go | 1 - pkg/apis/serving/v1alpha2/predictor.go | 3 +- pkg/apis/serving/v1alpha2/register.go | 9 +- pkg/apis/serving/v1alpha2/transformer.go | 3 +- .../serving/v1alpha2/transformer_custom.go | 1 - pkg/apis/serving/v1alpha2/utils.go | 3 +- .../serving/v1alpha2/v1alpha2_suite_test.go | 10 +- .../serving/v1alpha2/zz_generated.deepcopy.go | 3 +- pkg/apis/serving/v1beta1/component.go | 5 +- pkg/apis/serving/v1beta1/configmap.go | 37 +- pkg/apis/serving/v1beta1/doc.go | 5 +- pkg/apis/serving/v1beta1/explainer.go | 1 - pkg/apis/serving/v1beta1/explainer_aix360.go | 5 +- .../serving/v1beta1/explainer_aix360_test.go | 3 +- pkg/apis/serving/v1beta1/explainer_alibi.go | 5 +- .../serving/v1beta1/explainer_alibi_test.go | 3 +- pkg/apis/serving/v1beta1/explainer_art.go | 5 +- .../serving/v1beta1/explainer_art_test.go | 3 +- pkg/apis/serving/v1beta1/explainer_custom.go | 5 +- .../serving/v1beta1/explainer_custom_test.go | 3 +- pkg/apis/serving/v1beta1/inference_service.go | 1 - .../v1beta1/inference_service_conversion.go | 1 - .../v1beta1/inference_service_defaults.go | 3 +- .../inference_service_defaults_test.go | 1 - .../v1beta1/inference_service_status.go | 1 - .../v1beta1/inference_service_status_test.go | 1 - .../v1beta1/inference_service_validation.go | 5 +- .../inference_service_validation_test.go | 1 - pkg/apis/serving/v1beta1/openapi_generated.go | 20 +- pkg/apis/serving/v1beta1/podspec.go | 1 - pkg/apis/serving/v1beta1/predictor.go | 3 +- pkg/apis/serving/v1beta1/predictor_custom.go | 8 +- .../serving/v1beta1/predictor_custom_test.go | 3 +- .../serving/v1beta1/predictor_lightgbm.go | 5 +- .../v1beta1/predictor_lightgbm_test.go | 3 +- .../serving/v1beta1/predictor_onnxruntime.go | 5 +- .../v1beta1/predictor_onnxruntime_test.go | 3 +- pkg/apis/serving/v1beta1/predictor_paddle.go | 5 +- .../serving/v1beta1/predictor_paddle_test.go | 3 +- pkg/apis/serving/v1beta1/predictor_pmml.go | 6 +- .../serving/v1beta1/predictor_pmml_test.go | 3 +- pkg/apis/serving/v1beta1/predictor_sklearn.go | 5 +- .../serving/v1beta1/predictor_sklearn_test.go | 3 +- .../serving/v1beta1/predictor_tfserving.go | 5 +- .../v1beta1/predictor_tfserving_test.go | 3 +- .../serving/v1beta1/predictor_torchserve.go | 5 +- .../v1beta1/predictor_torchserve_test.go | 3 +- pkg/apis/serving/v1beta1/predictor_triton.go | 5 +- .../serving/v1beta1/predictor_triton_test.go | 3 +- pkg/apis/serving/v1beta1/predictor_xgboost.go | 5 +- .../serving/v1beta1/predictor_xgboost_test.go | 3 +- pkg/apis/serving/v1beta1/swagger.json | 9 +- pkg/apis/serving/v1beta1/transformer.go | 1 - .../serving/v1beta1/transformer_custom.go | 5 +- .../v1beta1/transformer_custom_test.go | 3 +- pkg/apis/serving/v1beta1/v1beta1.go | 9 +- .../serving/v1beta1/zz_generated.deepcopy.go | 3 +- pkg/batcher/handler.go | 1 - pkg/batcher/handler_test.go | 1 - pkg/client/clientset/versioned/clientset.go | 3 +- pkg/client/clientset/versioned/doc.go | 1 - .../versioned/fake/clientset_generated.go | 7 +- pkg/client/clientset/versioned/fake/doc.go | 1 - .../clientset/versioned/fake/register.go | 3 +- pkg/client/clientset/versioned/scheme/doc.go | 1 - .../clientset/versioned/scheme/register.go | 3 +- .../versioned/typed/serving/v1beta1/doc.go | 1 - .../typed/serving/v1beta1/fake/doc.go | 1 - .../v1beta1/fake/fake_inferenceservice.go | 3 +- .../v1beta1/fake/fake_serving_client.go | 3 +- .../serving/v1beta1/generated_expansion.go | 1 - .../typed/serving/v1beta1/inferenceservice.go | 5 +- .../typed/serving/v1beta1/serving_client.go | 5 +- .../informers/externalversions/factory.go | 7 +- .../informers/externalversions/generic.go | 3 +- .../internalinterfaces/factory_interfaces.go | 3 +- .../externalversions/serving/interface.go | 5 +- .../serving/v1beta1/inferenceservice.go | 9 +- .../serving/v1beta1/interface.go | 3 +- .../serving/v1beta1/expansion_generated.go | 1 - .../serving/v1beta1/inferenceservice.go | 3 +- pkg/constants/constants.go | 40 +- pkg/constants/mlserver.go | 1 - .../v1alpha1/trainedmodel/controller.go | 18 +- .../v1alpha1/trainedmodel/controller_test.go | 36 +- .../modelconfig/modelconfig_reconciler.go | 10 +- .../trainedmodel/sharding/memory/strategy.go | 5 +- .../trainedmodel/sharding/strategy.go | 3 +- .../v1alpha1/trainedmodel/suite_test.go | 16 +- .../v1alpha2/inferenceservice/controller.go | 24 +- .../inferenceservice/controller_test.go | 327 +- .../istio/virtualservice_reconciler.go | 8 +- .../reconcilers/knative/service_reconciler.go | 8 +- .../knative/service_reconciler_test.go | 37 +- .../reconcilers/knative/suite_test.go | 10 +- .../resources/istio/virtualservice.go | 5 +- .../resources/istio/virtualservice_test.go | 8 +- .../resources/knative/service.go | 9 +- .../resources/knative/service_test.go | 25 +- .../resources/knative/suite_test.go | 3 +- .../v1alpha2/inferenceservice/suite_test.go | 10 +- .../inferenceservice/components/component.go | 12 +- .../inferenceservice/components/explainer.go | 20 +- .../inferenceservice/components/predictor.go | 25 +- .../components/transformer.go | 21 +- .../v1beta1/inferenceservice/controller.go | 55 +- .../inferenceservice/controller_test.go | 32 +- .../rawkube_controller_test.go | 14 +- .../deployment/deployment_reconciler.go | 5 +- .../reconcilers/ingress/ingress_reconciler.go | 13 +- .../ingress/ingress_reconciler_test.go | 8 +- .../ingress/kube_ingress_reconciler.go | 8 +- .../reconcilers/knative/ksvc_reconciler.go | 8 +- .../modelconfig/modelconfig_reconciler.go | 11 +- .../reconcilers/raw/raw_kube_reconciler.go | 7 +- .../reconcilers/service/service_reconciler.go | 5 +- .../v1beta1/inferenceservice/suite_test.go | 18 +- .../v1beta1/inferenceservice/utils/utils.go | 21 +- .../inferenceservice/utils/utils_test.go | 9 +- pkg/credentials/azure/azure_secret.go | 1 - pkg/credentials/azure/azure_secret_test.go | 1 - pkg/credentials/credentials_suite_test.go | 8 +- pkg/credentials/gcs/gcs_secret.go | 1 - pkg/credentials/gcs/gcs_secret_test.go | 1 - pkg/credentials/https/https_secret.go | 1 - pkg/credentials/https/https_secret_test.go | 1 - pkg/credentials/s3/s3_secret.go | 19 +- pkg/credentials/s3/s3_secret_test.go | 1 - .../service_account_credentials.go | 12 +- .../service_account_credentials_test.go | 7 +- pkg/logger/dispatcher.go | 1 - pkg/logger/handler.go | 3 +- pkg/logger/handler_test.go | 3 +- pkg/logger/types.go | 1 - pkg/logger/worker.go | 1 - pkg/modelconfig/configmap.go | 7 +- pkg/modelconfig/configmap_test.go | 5 +- pkg/testing/be_sematic_equal_matcher.go | 1 - pkg/testing/envtest_setup.go | 10 +- pkg/utils/types.go | 1 - pkg/utils/types_test.go | 1 - pkg/utils/utils.go | 6 +- pkg/utils/utils_test.go | 10 +- .../admission/pod/accelerator_injector.go | 5 +- .../pod/accelerator_injector_test.go | 3 +- pkg/webhook/admission/pod/agent_injector.go | 10 +- .../admission/pod/agent_injector_test.go | 26 +- pkg/webhook/admission/pod/batcher_injector.go | 6 +- .../admission/pod/batcher_injector_test.go | 14 +- pkg/webhook/admission/pod/mutator.go | 14 +- .../pod/storage_initializer_injector.go | 22 +- .../pod/storage_initializer_injector_test.go | 66 +- pkg/webhook/admission/pod/suite_test.go | 3 +- prow_config.yaml | 4 +- python/aiffairness.Dockerfile | 2 +- python/aiffairness/README.md | 2 +- python/aiffairness/aifserver/__init__.py | 1 - python/aiffairness/aifserver/__main__.py | 7 +- python/aiffairness/aifserver/model.py | 5 +- python/aiffairness/setup.py | 13 +- python/aixexplainer.Dockerfile | 2 +- python/aixexplainer/aixserver/__init__.py | 1 - python/aixexplainer/aixserver/__main__.py | 7 +- python/aixexplainer/aixserver/model.py | 5 +- python/aixexplainer/setup.py | 11 +- python/alibiexplainer.Dockerfile | 4 +- .../alibiexplainer/alibiexplainer/__init__.py | 1 - .../alibiexplainer/alibiexplainer/__main__.py | 9 +- .../alibiexplainer/anchor_images.py | 5 +- .../alibiexplainer/anchor_tabular.py | 5 +- .../alibiexplainer/anchor_text.py | 5 +- .../alibiexplainer/explainer.py | 7 +- .../alibiexplainer/explainer_wrapper.py | 1 - .../alibiexplainer/alibiexplainer/parser.py | 7 +- python/alibiexplainer/setup.py | 9 +- python/alibiexplainer/tests/__init__.py | 1 - .../tests/test_anchor_images.py | 5 +- .../tests/test_anchor_tabular.py | 5 +- .../alibiexplainer/tests/test_anchor_text.py | 1 - python/alibiexplainer/tests/test_parser.py | 1 - python/alibiexplainer/tests/utils.py | 5 +- python/artexplainer.Dockerfile | 4 +- python/artexplainer/README.md | 2 +- python/artexplainer/artserver/__init__.py | 1 - python/artexplainer/artserver/__main__.py | 7 +- python/artexplainer/artserver/model.py | 5 +- python/artexplainer/setup.py | 13 +- python/custom_model.Dockerfile | 4 +- python/custom_model/model.py | 19 +- python/custom_model/model_remote.py | 19 +- python/custom_model/requirements.txt | 2 +- python/kfserving/kfserving/__init__.py | 107 - python/kfserving/kfserving/models/__init__.py | 72 - python/kfserving/kfserving/utils/__init__.py | 15 - python/kfserving/requirements.txt | 22 - python/{kfserving => kserve}/.gitignore | 0 python/{kfserving => kserve}/MANIFEST.in | 0 python/{kfserving => kserve}/Makefile | 2 +- python/{kfserving => kserve}/OWNERS | 0 python/{kfserving => kserve}/README.md | 41 +- .../docs/KFServingClient.md | 0 .../docs/KnativeAddressable.md | 0 .../docs/KnativeCondition.md | 0 .../docs/KnativeStatus.md | 0 .../{kfserving => kserve}/docs/KnativeURL.md | 0 .../docs/KnativeVolatileTime.md | 0 .../docs/NetUrlUserinfo.md | 0 python/{kfserving => kserve}/docs/V1Time.md | 0 .../docs/V1alpha1ModelSpec.md | 0 .../docs/V1alpha1TrainedModel.md | 0 .../docs/V1alpha1TrainedModelList.md | 0 .../docs/V1alpha1TrainedModelSpec.md | 0 .../docs/V1alpha2AIXExplainerSpec.md | 0 .../docs/V1alpha2AlibiExplainerSpec.md | 0 .../docs/V1alpha2Batcher.md | 0 .../docs/V1alpha2CustomSpec.md | 0 .../docs/V1alpha2DeploymentSpec.md | 0 .../docs/V1alpha2EndpointSpec.md | 0 .../docs/V1alpha2ExplainerSpec.md | 0 .../docs/V1alpha2InferenceService.md | 0 .../docs/V1alpha2InferenceServiceList.md | 0 .../docs/V1alpha2InferenceServiceSpec.md | 0 .../docs/V1alpha2InferenceServiceStatus.md | 0 .../docs/V1alpha2LightGBMSpec.md | 0 .../docs/V1alpha2Logger.md | 0 .../docs/V1alpha2ONNXSpec.md | 0 .../docs/V1alpha2PMMLSpec.md | 0 .../docs/V1alpha2PredictorSpec.md | 0 .../docs/V1alpha2PyTorchSpec.md | 0 .../docs/V1alpha2SKLearnSpec.md | 0 .../docs/V1alpha2StatusConfigurationSpec.md | 0 .../docs/V1alpha2TensorflowSpec.md | 0 .../docs/V1alpha2TransformerSpec.md | 0 .../docs/V1alpha2TritonSpec.md | 0 .../docs/V1alpha2XGBoostSpec.md | 0 .../docs/V1beta1AIXExplainerSpec.md | 0 .../docs/V1beta1ARTExplainerSpec.md | 0 .../docs/V1beta1AlibiExplainerSpec.md | 2 +- .../docs/V1beta1Batcher.md | 0 .../docs/V1beta1ComponentExtensionSpec.md | 0 .../docs/V1beta1ComponentStatusSpec.md | 0 .../docs/V1beta1CustomExplainer.md | 0 .../docs/V1beta1CustomPredictor.md | 0 .../docs/V1beta1CustomTransformer.md | 0 .../docs/V1beta1ExplainerConfig.md | 0 .../docs/V1beta1ExplainerExtensionSpec.md | 0 .../docs/V1beta1ExplainerSpec.md | 0 .../docs/V1beta1ExplainersConfig.md | 0 .../docs/V1beta1InferenceService.md | 0 .../docs/V1beta1InferenceServiceList.md | 0 .../docs/V1beta1InferenceServiceSpec.md | 0 .../docs/V1beta1InferenceServiceStatus.md | 0 .../docs/V1beta1InferenceServicesConfig.md | 0 .../docs/V1beta1IngressConfig.md | 1 + .../docs/V1beta1LightGBMSpec.md | 0 .../docs/V1beta1LoggerSpec.md | 0 .../docs/V1beta1ModelSpec.md | 0 .../docs/V1beta1ONNXRuntimeSpec.md | 0 .../docs/V1beta1PMMLSpec.md | 0 .../docs/V1beta1PaddleServerSpec.md | 0 .../docs/V1beta1PodSpec.md | 0 .../docs/V1beta1PredictorConfig.md | 0 .../docs/V1beta1PredictorExtensionSpec.md | 0 .../docs/V1beta1PredictorProtocols.md | 0 .../docs/V1beta1PredictorSpec.md | 0 .../docs/V1beta1PredictorsConfig.md | 0 .../docs/V1beta1SKLearnSpec.md | 0 .../docs/V1beta1TFServingSpec.md | 0 .../docs/V1beta1TorchServeSpec.md | 0 .../docs/V1beta1TrainedModel.md | 0 .../docs/V1beta1TrainedModelList.md | 0 .../docs/V1beta1TrainedModelSpec.md | 0 .../docs/V1beta1TrainedModelStatus.md | 0 .../docs/V1beta1TransformerConfig.md | 0 .../docs/V1beta1TransformerSpec.md | 0 .../docs/V1beta1TransformersConfig.md | 0 .../docs/V1beta1TritonSpec.md | 0 .../docs/V1beta1XGBoostSpec.md | 0 python/kserve/kserve/__init__.py | 106 + .../kserve}/api/__init__.py | 1 - .../kserve}/api/creds_utils.py | 11 +- .../kserve}/api/kf_serving_client.py | 61 +- .../kserve}/api/kf_serving_watch.py | 7 +- .../kfserving => kserve/kserve}/api_client.py | 15 +- .../kserve}/configuration.py | 7 +- .../kserve/constants}/__init__.py | 1 - .../kserve}/constants/constants.py | 31 +- .../kfserving => kserve/kserve}/exceptions.py | 5 +- .../kserve/handlers}/__init__.py | 1 - .../kserve}/handlers/http.py | 5 +- .../kfserving => kserve/kserve}/kfmodel.py | 1 - .../kserve}/kfmodel_repository.py | 3 +- .../kfserving => kserve/kserve}/kfserver.py | 7 +- python/kserve/kserve/models/__init__.py | 71 + .../kserve}/models/knative_addressable.py | 7 +- .../kserve}/models/knative_condition.py | 7 +- .../kserve}/models/knative_status.py | 7 +- .../kserve}/models/knative_url.py | 7 +- .../kserve}/models/knative_volatile_time.py | 7 +- .../kserve}/models/net_url_userinfo.py | 5 +- .../kserve}/models/v1_time.py | 5 +- .../kserve}/models/v1alpha1_model_spec.py | 7 +- .../kserve}/models/v1alpha1_trained_model.py | 7 +- .../models/v1alpha1_trained_model_list.py | 7 +- .../models/v1alpha1_trained_model_spec.py | 7 +- .../models/v1alpha2_aix_explainer_spec.py | 3 +- .../models/v1alpha2_alibi_explainer_spec.py | 3 +- .../kserve}/models/v1alpha2_batcher.py | 3 +- .../kserve}/models/v1alpha2_custom_spec.py | 3 +- .../models/v1alpha2_deployment_spec.py | 3 +- .../kserve}/models/v1alpha2_endpoint_spec.py | 3 +- .../kserve}/models/v1alpha2_explainer_spec.py | 3 +- .../models/v1alpha2_inference_service.py | 3 +- .../models/v1alpha2_inference_service_list.py | 3 +- .../models/v1alpha2_inference_service_spec.py | 3 +- .../v1alpha2_inference_service_status.py | 3 +- .../kserve}/models/v1alpha2_light_gbm_spec.py | 3 +- .../kserve}/models/v1alpha2_logger.py | 3 +- .../kserve}/models/v1alpha2_onnx_spec.py | 3 +- .../kserve}/models/v1alpha2_pmml_spec.py | 1 - .../kserve}/models/v1alpha2_predictor_spec.py | 3 +- .../kserve}/models/v1alpha2_py_torch_spec.py | 3 +- .../kserve}/models/v1alpha2_sk_learn_spec.py | 3 +- .../v1alpha2_status_configuration_spec.py | 3 +- .../models/v1alpha2_tensorflow_spec.py | 3 +- .../models/v1alpha2_transformer_spec.py | 3 +- .../kserve}/models/v1alpha2_triton_spec.py | 3 +- .../kserve}/models/v1alpha2_xg_boost_spec.py | 3 +- .../models/v1beta1_aix_explainer_spec.py | 7 +- .../models/v1beta1_alibi_explainer_spec.py | 11 +- .../models/v1beta1_art_explainer_spec.py | 7 +- .../kserve}/models/v1beta1_batcher.py | 7 +- .../v1beta1_component_extension_spec.py | 7 +- .../models/v1beta1_component_status_spec.py | 7 +- .../models/v1beta1_custom_explainer.py | 7 +- .../models/v1beta1_custom_predictor.py | 7 +- .../models/v1beta1_custom_transformer.py | 7 +- .../models/v1beta1_explainer_config.py | 7 +- .../v1beta1_explainer_extension_spec.py | 7 +- .../kserve}/models/v1beta1_explainer_spec.py | 7 +- .../models/v1beta1_explainers_config.py | 7 +- .../models/v1beta1_inference_service.py | 7 +- .../models/v1beta1_inference_service_list.py | 7 +- .../models/v1beta1_inference_service_spec.py | 7 +- .../v1beta1_inference_service_status.py | 7 +- .../v1beta1_inference_services_config.py | 7 +- .../kserve}/models/v1beta1_ingress_config.py | 35 +- .../kserve}/models/v1beta1_light_gbm_spec.py | 7 +- .../kserve}/models/v1beta1_logger_spec.py | 7 +- .../kserve}/models/v1beta1_model_spec.py | 7 +- .../models/v1beta1_onnx_runtime_spec.py | 7 +- .../models/v1beta1_paddle_server_spec.py | 7 +- .../kserve}/models/v1beta1_pmml_spec.py | 7 +- .../kserve}/models/v1beta1_pod_spec.py | 7 +- .../models/v1beta1_predictor_config.py | 7 +- .../v1beta1_predictor_extension_spec.py | 7 +- .../models/v1beta1_predictor_protocols.py | 7 +- .../kserve}/models/v1beta1_predictor_spec.py | 7 +- .../models/v1beta1_predictors_config.py | 7 +- .../kserve}/models/v1beta1_sk_learn_spec.py | 7 +- .../kserve}/models/v1beta1_tf_serving_spec.py | 7 +- .../models/v1beta1_torch_serve_spec.py | 7 +- .../models/v1beta1_transformer_config.py | 7 +- .../models/v1beta1_transformer_spec.py | 7 +- .../models/v1beta1_transformers_config.py | 7 +- .../kserve}/models/v1beta1_triton_spec.py | 7 +- .../kserve}/models/v1beta1_xg_boost_spec.py | 7 +- .../kfserving => kserve/kserve}/rest.py | 7 +- .../kfserving => kserve/kserve}/storage.py | 3 +- python/kserve/kserve/utils/__init__.py | 14 + .../kserve}/utils/numpy_encoder.py | 1 - .../kserve}/utils/utils.py | 1 - python/kserve/requirements.txt | 34 + python/{kfserving => kserve}/setup.cfg | 0 python/{kfserving => kserve}/setup.py | 23 +- .../handlers => kserve/test}/__init__.py | 1 - python/{kfserving => kserve}/test/kubeconfig | 0 .../skip_test_inference_service_client.py | 63 +- .../test/test_azure_storage.py | 41 +- .../test/test_creds_utils.py | 3 +- .../test/test_inference_service_client.py | 57 +- .../test/test_knative_addressable.py | 13 +- .../test/test_knative_condition.py | 13 +- .../test/test_knative_url.py | 13 +- .../test/test_knative_volatile_time.py | 13 +- .../test/test_net_url_userinfo.py | 5 +- .../test/test_s3_storage.py | 25 +- .../{kfserving => kserve}/test/test_server.py | 7 +- .../test/test_storage.py | 35 +- .../test/test_v1alpha1_model_spec.py | 13 +- .../test/test_v1alpha1_trained_model.py | 13 +- .../test/test_v1alpha1_trained_model_list.py | 17 +- .../test/test_v1alpha1_trained_model_spec.py | 17 +- .../test/test_v1alpha2_aix_explainer_spec.py | 9 +- .../test_v1alpha2_alibi_explainer_spec.py | 9 +- .../test/test_v1alpha2_batcher.py | 9 +- .../test/test_v1alpha2_custom_spec.py | 9 +- .../test/test_v1alpha2_deployment_spec.py | 9 +- .../test/test_v1alpha2_endpoint_spec.py | 9 +- .../test/test_v1alpha2_explainer_spec.py | 9 +- .../test/test_v1alpha2_inference_service.py | 9 +- .../test_v1alpha2_inference_service_list.py | 9 +- .../test_v1alpha2_inference_service_spec.py | 9 +- .../test_v1alpha2_inference_service_status.py | 9 +- .../test/test_v1alpha2_light_gbm_spec.py | 9 +- .../test/test_v1alpha2_logger.py | 9 +- .../test/test_v1alpha2_onnx_spec.py | 9 +- .../test/test_v1alpha2_pmml_spec.py | 35 +- .../test/test_v1alpha2_predictor_spec.py | 9 +- .../test/test_v1alpha2_py_torch_spec.py | 9 +- .../test/test_v1alpha2_sk_learn_spec.py | 9 +- ...test_v1alpha2_status_configuration_spec.py | 9 +- .../test/test_v1alpha2_tensorflow_spec.py | 9 +- .../test/test_v1alpha2_transformer_spec.py | 9 +- .../test/test_v1alpha2_triton_spec.py | 9 +- .../test/test_v1alpha2_xg_boost_spec.py | 9 +- .../test/test_v1beta1_aix_explainer_spec.py | 13 +- .../test/test_v1beta1_alibi_explainer_spec.py | 13 +- .../test/test_v1beta1_art_explainer_spec.py | 13 +- .../test/test_v1beta1_batcher.py | 13 +- .../test_v1beta1_component_extension_spec.py | 17 +- .../test_v1beta1_component_status_spec.py | 13 +- .../test/test_v1beta1_custom_explainer.py | 13 +- .../test/test_v1beta1_custom_predictor.py | 13 +- .../test/test_v1beta1_custom_transformer.py | 13 +- .../test/test_v1beta1_explainer_config.py | 13 +- .../test_v1beta1_explainer_extension_spec.py | 13 +- .../test/test_v1beta1_explainer_spec.py | 21 +- .../test/test_v1beta1_explainers_config.py | 17 +- .../test/test_v1beta1_inference_service.py | 45 +- .../test_v1beta1_inference_service_list.py | 81 +- .../test_v1beta1_inference_service_spec.py | 65 +- .../test_v1beta1_inference_service_status.py | 15 +- .../test_v1beta1_inference_services_config.py | 61 +- .../test/test_v1beta1_ingress_config.py | 13 +- .../test/test_v1beta1_light_gbm_spec.py | 13 +- .../test/test_v1beta1_logger_spec.py | 13 +- .../test/test_v1beta1_model_spec.py | 13 +- .../test/test_v1beta1_onnx_runtime_spec.py | 13 +- .../test/test_v1beta1_paddle_server_spec.py | 13 +- .../test/test_v1beta1_pmml_spec.py | 13 +- .../test/test_v1beta1_pod_spec.py | 13 +- .../test/test_v1beta1_predictor_config.py | 13 +- .../test_v1beta1_predictor_extension_spec.py | 13 +- .../test/test_v1beta1_predictor_protocols.py | 17 +- .../test/test_v1beta1_predictor_spec.py | 29 +- .../test/test_v1beta1_predictors_config.py | 25 +- .../test/test_v1beta1_sk_learn_spec.py | 13 +- .../test/test_v1beta1_tf_serving_spec.py | 13 +- .../test/test_v1beta1_torch_serve_spec.py | 13 +- .../test/test_v1beta1_transformer_config.py | 13 +- .../test/test_v1beta1_transformer_spec.py | 17 +- .../test/test_v1beta1_transformers_config.py | 15 +- .../test/test_v1beta1_triton_spec.py | 13 +- .../test/test_v1beta1_xg_boost_spec.py | 13 +- python/lgb.Dockerfile | 4 +- python/lgbserver/README.md | 114 +- python/lgbserver/lgbserver/__init__.py | 1 - python/lgbserver/lgbserver/__main__.py | 7 +- .../lgbserver/lightgbm_model_repository.py | 3 +- python/lgbserver/lgbserver/model.py | 7 +- .../test_lightgbm_model_repository.py | 1 - python/lgbserver/lgbserver/test_model.py | 1 - python/lgbserver/setup.py | 9 +- python/paddle.Dockerfile | 4 +- python/paddleserver/README.md | 68 +- python/paddleserver/paddleserver/__init__.py | 1 - python/paddleserver/paddleserver/__main__.py | 7 +- python/paddleserver/paddleserver/model.py | 7 +- .../paddleserver/paddleserver/test_model.py | 1 - python/paddleserver/setup.py | 9 +- python/pmml.Dockerfile | 4 +- python/pmmlserver/README.md | 50 +- python/pmmlserver/pmmlserver/__init__.py | 1 - python/pmmlserver/pmmlserver/__main__.py | 7 +- python/pmmlserver/pmmlserver/model.py | 7 +- python/pmmlserver/pmmlserver/test_model.py | 1 - python/pmmlserver/setup.py | 11 +- python/pytorch-gpu.Dockerfile | 4 +- python/pytorch.Dockerfile | 4 +- python/pytorchserver/README.md | 70 +- .../pytorchserver/pytorchserver/__init__.py | 1 - .../pytorchserver/pytorchserver/__main__.py | 7 +- .../example_model/model/cifar10.py | 1 - python/pytorchserver/pytorchserver/model.py | 7 +- .../pytorchserver/pytorchserver/test_model.py | 1 - python/pytorchserver/setup.py | 11 +- python/sklearn.Dockerfile | 4 +- python/sklearnserver/README.md | 119 +- python/sklearnserver/setup.py | 11 +- .../sklearnserver/sklearnserver/__init__.py | 1 - .../sklearnserver/sklearnserver/__main__.py | 7 +- python/sklearnserver/sklearnserver/model.py | 7 +- .../sklearnserver/sklearn_model_repository.py | 3 +- .../sklearnserver/sklearnserver/test_model.py | 1 - .../test_sklearn_model_repository.py | 1 - python/storage-initializer.Dockerfile | 4 +- .../scripts/initializer-entrypoint | 4 +- python/xgb.Dockerfile | 4 +- python/xgbserver/README.md | 129 +- python/xgbserver/setup.py | 9 +- python/xgbserver/xgbserver/__init__.py | 1 - python/xgbserver/xgbserver/__main__.py | 7 +- python/xgbserver/xgbserver/model.py | 7 +- python/xgbserver/xgbserver/test_model.py | 1 - .../test_xgboost_model_repository.py | 1 - .../xgbserver/xgboost_model_repository.py | 3 +- release/RELEASE_PROCESS.md | 48 +- release/triggers/latest/alibi-explainer.yaml | 27 - release/triggers/latest/batcher.yaml | 27 - .../triggers/latest/kfserving-controller.yaml | 27 - release/triggers/latest/logger.yaml | 27 - release/triggers/latest/pytorch-gpu.yaml | 28 - release/triggers/latest/pytorch.yaml | 28 - release/triggers/latest/sklearnserver.yaml | 27 - .../triggers/latest/storage-initalizer.yaml | 27 - release/triggers/latest/tf2openapi.yaml | 27 - release/triggers/latest/xgbserver.yaml | 27 - release/triggers/tagged/alibi-explainer.yaml | 27 - release/triggers/tagged/batcher.yaml | 27 - .../triggers/tagged/kfserving-controller.yaml | 27 - release/triggers/tagged/logger.yaml | 27 - release/triggers/tagged/pytorch-gpu.yaml | 28 - release/triggers/tagged/pytorch.yaml | 28 - release/triggers/tagged/sklearnserver.yaml | 27 - .../triggers/tagged/storage-initalizer.yaml | 27 - release/triggers/tagged/tf2openapi.yaml | 27 - release/triggers/tagged/xgbserver.yaml | 27 - test/README.md | 65 +- test/benchmark/README.md | 10 +- test/benchmark/sklearn.yaml | 2 +- test/benchmark/sklearn_hpa.yaml | 2 +- test/benchmark/tf_flowers.yaml | 2 +- test/benchmark/tf_flowers_hpa.yaml | 2 +- .../serving.kserve.io_inferenceservices.yaml | 16117 +++++++++ test/e2e/batcher/test_batcher.py | 42 +- test/e2e/common/utils.py | 37 +- test/e2e/credentials/test_set_creds.py | 47 +- test/e2e/explainer/test_aix_explainer.py | 41 +- test/e2e/explainer/test_art_explainer.py | 43 +- test/e2e/explainer/test_tabular_explainer.py | 47 +- test/e2e/logger/test_logger.py | 67 +- test/e2e/predictor/test_canary.py | 41 +- test/e2e/predictor/test_lightgbm.py | 23 +- .../e2e/predictor/test_multi_model_serving.py | 69 +- test/e2e/predictor/test_paddle.py | 27 +- test/e2e/predictor/test_pmml.py | 31 +- test/e2e/predictor/test_pytorch.py | 40 +- test/e2e/predictor/test_raw_deployment.py | 27 +- test/e2e/predictor/test_sklearn.py | 37 +- test/e2e/predictor/test_tensorflow.py | 31 +- test/e2e/predictor/test_torchserve.py | 23 +- test/e2e/predictor/test_triton.py | 40 +- test/e2e/predictor/test_xgboost.py | 37 +- test/e2e/transformer/test_raw_transformer.py | 43 +- test/e2e/transformer/test_transformer.py | 46 +- test/scripts/post-e2e-tests.sh | 2 +- test/scripts/run-e2e-tests.sh | 17 +- test/workflows/components/workflows.libsonnet | 46 +- tools/tf2openapi/Dockerfile | 4 +- tools/tf2openapi/cmd/e2e_test.go | 8 +- tools/tf2openapi/cmd/main.go | 11 +- .../generated/protobuf/meta_graph.pb.go | 2 +- tools/tf2openapi/generator/generate.go | 5 +- tools/tf2openapi/generator/generate_test.go | 7 +- .../generator/tensorflow_serving_protocol.go | 5 +- tools/tf2openapi/types/tfmetagraph.go | 7 +- tools/tf2openapi/types/tfmetagraph_test.go | 17 +- tools/tf2openapi/types/tfsavedmodel.go | 7 +- tools/tf2openapi/types/tfsavedmodel_test.go | 21 +- tools/tf2openapi/types/tfsignaturedef.go | 69 +- tools/tf2openapi/types/tfsignaturedef_test.go | 6 +- tools/tf2openapi/types/tftensor.go | 4 +- tools/tf2openapi/types/tftensor_test.go | 7 +- web-app/.dockerignore | 12 - web-app/.gitignore | 3 - web-app/Dockerfile | 63 - web-app/Makefile | 13 - web-app/OWNERS | 5 - web-app/README.md | 109 - web-app/backend/Makefile | 23 - web-app/backend/apps/common/__init__.py | 18 - .../backend/apps/common/routes/__init__.py | 5 - web-app/backend/apps/common/routes/delete.py | 20 - web-app/backend/apps/common/routes/get.py | 88 - web-app/backend/apps/common/utils.py | 91 - web-app/backend/apps/common/versions.py | 27 - .../yaml/inference_service_template.yaml | 6 - web-app/backend/apps/v1beta1/__init__.py | 26 - .../backend/apps/v1beta1/routes/__init__.py | 5 - web-app/backend/apps/v1beta1/routes/post.py | 21 - web-app/backend/entrypoint.py | 30 - web-app/backend/requirements.txt | 1 - web-app/frontend/.editorconfig | 13 - web-app/frontend/.gitignore | 49 - web-app/frontend/.prettierrc | 11 - web-app/frontend/angular.json | 124 - web-app/frontend/browserslist | 12 - web-app/frontend/e2e/protractor.conf.js | 32 - web-app/frontend/e2e/src/app.e2e-spec.ts | 23 - web-app/frontend/e2e/src/app.po.ts | 11 - web-app/frontend/e2e/tsconfig.json | 13 - web-app/frontend/karma.conf.js | 32 - web-app/frontend/package-lock.json | 12632 ------- web-app/frontend/package.json | 64 - web-app/frontend/proxy.conf.json | 11 - .../frontend/src/app/app-routing.module.ts | 17 - web-app/frontend/src/app/app.component.html | 1 - web-app/frontend/src/app/app.component.scss | 0 .../frontend/src/app/app.component.spec.ts | 35 - web-app/frontend/src/app/app.component.ts | 9 - web-app/frontend/src/app/app.module.ts | 24 - .../frontend/src/app/pages/index/config.ts | 105 - .../src/app/pages/index/index.component.html | 10 - .../app/pages/index/index.component.spec.ts | 25 - .../src/app/pages/index/index.component.ts | 217 - .../src/app/pages/index/index.module.ts | 20 - web-app/frontend/src/app/pages/index/utils.ts | 12 - .../details/details.component.html | 65 - .../details/details.component.scss | 3 - .../details/details.component.spec.ts | 25 - .../server-info/details/details.component.ts | 110 - .../server-info/details/details.module.ts | 34 - .../explainer/explainer.component.html | 39 - .../explainer/explainer.component.spec.ts | 25 - .../details/explainer/explainer.component.ts | 44 - .../predictor/predictor.component.html | 30 - .../predictor/predictor.component.spec.ts | 25 - .../details/predictor/predictor.component.ts | 25 - .../component-extension.component.html | 51 - .../component-extension.component.scss | 0 .../component-extension.component.spec.ts | 25 - .../component-extension.component.ts | 15 - .../shared/container/container.component.html | 47 - .../container/container.component.spec.ts | 25 - .../shared/container/container.component.ts | 56 - .../details/shared/pod/pod.component.html | 52 - .../details/shared/pod/pod.component.scss | 0 .../details/shared/pod/pod.component.spec.ts | 25 - .../details/shared/pod/pod.component.ts | 11 - .../transformer/transformer.component.html | 5 - .../transformer/transformer.component.spec.ts | 25 - .../transformer/transformer.component.ts | 10 - .../logs-viewer/logs-viewer.component.html | 9 - .../logs-viewer/logs-viewer.component.scss | 32 - .../logs-viewer/logs-viewer.component.spec.ts | 25 - .../logs/logs-viewer/logs-viewer.component.ts | 54 - .../logs/logs-viewer/logs-viewer.module.ts | 12 - .../server-info/logs/logs.component.html | 50 - .../server-info/logs/logs.component.scss | 12 - .../server-info/logs/logs.component.spec.ts | 25 - .../pages/server-info/logs/logs.component.ts | 69 - .../app/pages/server-info/logs/logs.module.ts | 18 - .../grafana-graph.component.html | 14 - .../grafana-graph.component.scss | 12 - .../grafana-graph.component.spec.ts | 25 - .../grafana-graph/grafana-graph.component.ts | 74 - .../metrics/metrics.component.html | 48 - .../metrics/metrics.component.scss | 7 - .../metrics/metrics.component.spec.ts | 25 - .../server-info/metrics/metrics.component.ts | 157 - .../server-info/metrics/metrics.module.ts | 12 - .../component/component.component.html | 69 - .../component/component.component.scss | 4 - .../component/component.component.spec.ts | 25 - .../overview/component/component.component.ts | 19 - .../overview/overview.component.html | 63 - .../overview/overview.component.scss | 13 - .../overview/overview.component.spec.ts | 25 - .../overview/overview.component.ts | 103 - .../server-info/overview/overview.module.ts | 29 - .../server-info/server-info.component.html | 69 - .../server-info/server-info.component.scss | 25 - .../server-info/server-info.component.spec.ts | 25 - .../server-info/server-info.component.ts | 304 - .../pages/server-info/server-info.module.ts | 31 - .../server-info/yamls/yamls.component.html | 8 - .../server-info/yamls/yamls.component.scss | 3 - .../server-info/yamls/yamls.component.spec.ts | 25 - .../server-info/yamls/yamls.component.ts | 20 - .../pages/server-info/yamls/yamls.module.ts | 11 - .../submit-form/submit-form.component.html | 20 - .../submit-form/submit-form.component.scss | 4 - .../submit-form/submit-form.component.spec.ts | 25 - .../submit-form/submit-form.component.ts | 76 - .../pages/submit-form/submit-form.module.ts | 12 - .../src/app/services/backend.service.spec.ts | 12 - .../src/app/services/backend.service.ts | 154 - .../src/app/services/grafana.service.spec.ts | 12 - .../src/app/services/grafana.service.ts | 87 - web-app/frontend/src/app/shared/utils.ts | 194 - web-app/frontend/src/app/types/backend.ts | 32 - web-app/frontend/src/app/types/grafana.ts | 22 - .../src/app/types/kfserving/v1beta1.ts | 150 - web-app/frontend/src/assets/.gitkeep | 0 .../src/environments/environment.prod.ts | 5 - .../frontend/src/environments/environment.ts | 17 - web-app/frontend/src/favicon.ico | Bin 948 -> 0 bytes web-app/frontend/src/index.html | 20 - web-app/frontend/src/kubeflow.css | 9 - web-app/frontend/src/main.ts | 12 - web-app/frontend/src/polyfills.ts | 63 - web-app/frontend/src/styles.scss | 28 - web-app/frontend/src/test.ts | 20 - web-app/frontend/tsconfig.app.json | 18 - web-app/frontend/tsconfig.json | 26 - web-app/frontend/tsconfig.spec.json | 18 - web-app/frontend/tslint.json | 58 - 1043 files changed, 86631 insertions(+), 35243 deletions(-) rename .github/workflows/{web-app-docker-publish.yml => kserve-controller-docker-publish.yml} (92%) create mode 100644 .github/workflows/pytorchserver-docker-publish.yml create mode 100644 .github/workflows/pytorchserver-gpu-docker-publish.yml create mode 100644 .github/workflows/sklearnserver-docker-publish.yml create mode 100644 .github/workflows/storage-initializer-docker-publisher.yml create mode 100644 .github/workflows/tf2openapi-docker-publisher.yml create mode 100644 .github/workflows/xgbserver-docker-publisher.yml create mode 100644 config/crd/serving.kserve.io_inferenceservices.yaml create mode 100644 config/crd/serving.kserve.io_trainedmodels.yaml create mode 100644 docs/diagrams/kfs_architect.drawio delete mode 100644 docs/diagrams/kfserving.png create mode 100644 docs/diagrams/kserve.png delete mode 100755 hack/generate-cloudbuild-triggers.sh create mode 100644 install/v0.7.0-rc0/kserve.yaml create mode 100644 install/v0.7.0-rc0/kserve_kubeflow.yaml delete mode 100644 logger.Dockerfile delete mode 100644 python/kfserving/kfserving/__init__.py delete mode 100644 python/kfserving/kfserving/models/__init__.py delete mode 100644 python/kfserving/kfserving/utils/__init__.py delete mode 100644 python/kfserving/requirements.txt rename python/{kfserving => kserve}/.gitignore (100%) rename python/{kfserving => kserve}/MANIFEST.in (100%) rename python/{kfserving => kserve}/Makefile (72%) rename python/{kfserving => kserve}/OWNERS (100%) rename python/{kfserving => kserve}/README.md (71%) rename python/{kfserving => kserve}/docs/KFServingClient.md (100%) rename python/{kfserving => kserve}/docs/KnativeAddressable.md (100%) rename python/{kfserving => kserve}/docs/KnativeCondition.md (100%) rename python/{kfserving => kserve}/docs/KnativeStatus.md (100%) rename python/{kfserving => kserve}/docs/KnativeURL.md (100%) rename python/{kfserving => kserve}/docs/KnativeVolatileTime.md (100%) rename python/{kfserving => kserve}/docs/NetUrlUserinfo.md (100%) rename python/{kfserving => kserve}/docs/V1Time.md (100%) rename python/{kfserving => kserve}/docs/V1alpha1ModelSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha1TrainedModel.md (100%) rename python/{kfserving => kserve}/docs/V1alpha1TrainedModelList.md (100%) rename python/{kfserving => kserve}/docs/V1alpha1TrainedModelSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2AIXExplainerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2AlibiExplainerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2Batcher.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2CustomSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2DeploymentSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2EndpointSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2ExplainerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2InferenceService.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2InferenceServiceList.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2InferenceServiceSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2InferenceServiceStatus.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2LightGBMSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2Logger.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2ONNXSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2PMMLSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2PredictorSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2PyTorchSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2SKLearnSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2StatusConfigurationSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2TensorflowSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2TransformerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2TritonSpec.md (100%) rename python/{kfserving => kserve}/docs/V1alpha2XGBoostSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1AIXExplainerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ARTExplainerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1AlibiExplainerSpec.md (98%) rename python/{kfserving => kserve}/docs/V1beta1Batcher.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ComponentExtensionSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ComponentStatusSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1CustomExplainer.md (100%) rename python/{kfserving => kserve}/docs/V1beta1CustomPredictor.md (100%) rename python/{kfserving => kserve}/docs/V1beta1CustomTransformer.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ExplainerConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ExplainerExtensionSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ExplainerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ExplainersConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1InferenceService.md (100%) rename python/{kfserving => kserve}/docs/V1beta1InferenceServiceList.md (100%) rename python/{kfserving => kserve}/docs/V1beta1InferenceServiceSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1InferenceServiceStatus.md (100%) rename python/{kfserving => kserve}/docs/V1beta1InferenceServicesConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1IngressConfig.md (91%) rename python/{kfserving => kserve}/docs/V1beta1LightGBMSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1LoggerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ModelSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1ONNXRuntimeSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PMMLSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PaddleServerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PodSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PredictorConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PredictorExtensionSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PredictorProtocols.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PredictorSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1PredictorsConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1SKLearnSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TFServingSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TorchServeSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TrainedModel.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TrainedModelList.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TrainedModelSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TrainedModelStatus.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TransformerConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TransformerSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TransformersConfig.md (100%) rename python/{kfserving => kserve}/docs/V1beta1TritonSpec.md (100%) rename python/{kfserving => kserve}/docs/V1beta1XGBoostSpec.md (100%) create mode 100644 python/kserve/kserve/__init__.py rename python/{kfserving/kfserving => kserve/kserve}/api/__init__.py (95%) rename python/{kfserving/kfserving => kserve/kserve}/api/creds_utils.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/api/kf_serving_client.py (90%) rename python/{kfserving/kfserving => kserve/kserve}/api/kf_serving_watch.py (94%) rename python/{kfserving/kfserving => kserve/kserve}/api_client.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/configuration.py (98%) rename python/{kfserving/test => kserve/kserve/constants}/__init__.py (94%) rename python/{kfserving/kfserving => kserve/kserve}/constants/constants.py (59%) rename python/{kfserving/kfserving => kserve/kserve}/exceptions.py (97%) rename python/{kfserving/kfserving/constants => kserve/kserve/handlers}/__init__.py (94%) rename python/{kfserving/kfserving => kserve/kserve}/handlers/http.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/kfmodel.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/kfmodel_repository.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/kfserver.py (98%) create mode 100644 python/kserve/kserve/models/__init__.py rename python/{kfserving/kfserving => kserve/kserve}/models/knative_addressable.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/models/knative_condition.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/knative_status.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/models/knative_url.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/knative_volatile_time.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/models/net_url_userinfo.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1_time.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha1_model_spec.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha1_trained_model.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha1_trained_model_list.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha1_trained_model_spec.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_aix_explainer_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_alibi_explainer_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_batcher.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_custom_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_deployment_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_endpoint_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_explainer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_inference_service.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_inference_service_list.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_inference_service_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_inference_service_status.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_light_gbm_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_logger.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_onnx_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_pmml_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_predictor_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_py_torch_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_sk_learn_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_status_configuration_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_tensorflow_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_transformer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_triton_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1alpha2_xg_boost_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_aix_explainer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_alibi_explainer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_art_explainer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_batcher.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_component_extension_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_component_status_spec.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_custom_explainer.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_custom_predictor.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_custom_transformer.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_explainer_config.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_explainer_extension_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_explainer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_explainers_config.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_inference_service.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_inference_service_list.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_inference_service_spec.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_inference_service_status.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_inference_services_config.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_ingress_config.py (85%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_light_gbm_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_logger_spec.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_model_spec.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_onnx_runtime_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_paddle_server_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_pmml_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_pod_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_predictor_config.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_predictor_extension_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_predictor_protocols.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_predictor_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_predictors_config.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_sk_learn_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_tf_serving_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_torch_serve_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_transformer_config.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_transformer_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_transformers_config.py (96%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_triton_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/models/v1beta1_xg_boost_spec.py (99%) rename python/{kfserving/kfserving => kserve/kserve}/rest.py (98%) rename python/{kfserving/kfserving => kserve/kserve}/storage.py (99%) create mode 100644 python/kserve/kserve/utils/__init__.py rename python/{kfserving/kfserving => kserve/kserve}/utils/numpy_encoder.py (97%) rename python/{kfserving/kfserving => kserve/kserve}/utils/utils.py (98%) create mode 100644 python/kserve/requirements.txt rename python/{kfserving => kserve}/setup.cfg (100%) rename python/{kfserving => kserve}/setup.py (81%) rename python/{kfserving/kfserving/handlers => kserve/test}/__init__.py (94%) rename python/{kfserving => kserve}/test/kubeconfig (100%) rename python/{kfserving => kserve}/test/skip_test_inference_service_client.py (59%) rename python/{kfserving => kserve}/test/test_azure_storage.py (82%) rename python/{kfserving => kserve}/test/test_creds_utils.py (93%) rename python/{kfserving => kserve}/test/test_inference_service_client.py (59%) rename python/{kfserving => kserve}/test/test_knative_addressable.py (78%) rename python/{kfserving => kserve}/test/test_knative_condition.py (78%) rename python/{kfserving => kserve}/test/test_knative_url.py (79%) rename python/{kfserving => kserve}/test/test_knative_volatile_time.py (77%) rename python/{kfserving => kserve}/test/test_net_url_userinfo.py (92%) rename python/{kfserving => kserve}/test/test_s3_storage.py (86%) rename python/{kfserving => kserve}/test/test_server.py (98%) rename python/{kfserving => kserve}/test/test_storage.py (86%) rename python/{kfserving => kserve}/test/test_v1alpha1_model_spec.py (84%) rename python/{kfserving => kserve}/test/test_v1alpha1_trained_model.py (84%) rename python/{kfserving => kserve}/test/test_v1alpha1_trained_model_list.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha1_trained_model_spec.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_aix_explainer_spec.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_alibi_explainer_spec.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_batcher.py (82%) rename python/{kfserving => kserve}/test/test_v1alpha2_custom_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_deployment_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_endpoint_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_explainer_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_inference_service.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_inference_service_list.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_inference_service_spec.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_inference_service_status.py (79%) rename python/{kfserving => kserve}/test/test_v1alpha2_light_gbm_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_logger.py (82%) rename python/{kfserving => kserve}/test/test_v1alpha2_onnx_spec.py (82%) rename python/{kfserving => kserve}/test/test_v1alpha2_pmml_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_predictor_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_py_torch_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_sk_learn_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_status_configuration_spec.py (79%) rename python/{kfserving => kserve}/test/test_v1alpha2_tensorflow_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_transformer_spec.py (80%) rename python/{kfserving => kserve}/test/test_v1alpha2_triton_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1alpha2_xg_boost_spec.py (81%) rename python/{kfserving => kserve}/test/test_v1beta1_aix_explainer_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_alibi_explainer_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_art_explainer_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_batcher.py (84%) rename python/{kfserving => kserve}/test/test_v1beta1_component_extension_spec.py (79%) rename python/{kfserving => kserve}/test/test_v1beta1_component_status_spec.py (84%) rename python/{kfserving => kserve}/test/test_v1beta1_custom_explainer.py (91%) rename python/{kfserving => kserve}/test/test_v1beta1_custom_predictor.py (91%) rename python/{kfserving => kserve}/test/test_v1beta1_custom_transformer.py (91%) rename python/{kfserving => kserve}/test/test_v1beta1_explainer_config.py (83%) rename python/{kfserving => kserve}/test/test_v1beta1_explainer_extension_spec.py (88%) rename python/{kfserving => kserve}/test/test_v1beta1_explainer_spec.py (90%) rename python/{kfserving => kserve}/test/test_v1beta1_explainers_config.py (77%) rename python/{kfserving => kserve}/test/test_v1beta1_inference_service.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_inference_service_list.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_inference_service_spec.py (90%) rename python/{kfserving => kserve}/test/test_v1beta1_inference_service_status.py (82%) rename python/{kfserving => kserve}/test/test_v1beta1_inference_services_config.py (65%) rename python/{kfserving => kserve}/test/test_v1beta1_ingress_config.py (83%) rename python/{kfserving => kserve}/test/test_v1beta1_light_gbm_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_logger_spec.py (83%) rename python/{kfserving => kserve}/test/test_v1beta1_model_spec.py (84%) rename python/{kfserving => kserve}/test/test_v1beta1_onnx_runtime_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_paddle_server_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_pmml_spec.py (90%) rename python/{kfserving => kserve}/test/test_v1beta1_pod_spec.py (91%) rename python/{kfserving => kserve}/test/test_v1beta1_predictor_config.py (85%) rename python/{kfserving => kserve}/test/test_v1beta1_predictor_extension_spec.py (88%) rename python/{kfserving => kserve}/test/test_v1beta1_predictor_protocols.py (81%) rename python/{kfserving => kserve}/test/test_v1beta1_predictor_spec.py (92%) rename python/{kfserving => kserve}/test/test_v1beta1_predictors_config.py (76%) rename python/{kfserving => kserve}/test/test_v1beta1_sk_learn_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_tf_serving_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_torch_serve_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_transformer_config.py (83%) rename python/{kfserving => kserve}/test/test_v1beta1_transformer_spec.py (88%) rename python/{kfserving => kserve}/test/test_v1beta1_transformers_config.py (79%) rename python/{kfserving => kserve}/test/test_v1beta1_triton_spec.py (89%) rename python/{kfserving => kserve}/test/test_v1beta1_xg_boost_spec.py (89%) delete mode 100644 release/triggers/latest/alibi-explainer.yaml delete mode 100644 release/triggers/latest/batcher.yaml delete mode 100644 release/triggers/latest/kfserving-controller.yaml delete mode 100644 release/triggers/latest/logger.yaml delete mode 100644 release/triggers/latest/pytorch-gpu.yaml delete mode 100644 release/triggers/latest/pytorch.yaml delete mode 100644 release/triggers/latest/sklearnserver.yaml delete mode 100644 release/triggers/latest/storage-initalizer.yaml delete mode 100644 release/triggers/latest/tf2openapi.yaml delete mode 100644 release/triggers/latest/xgbserver.yaml delete mode 100644 release/triggers/tagged/alibi-explainer.yaml delete mode 100644 release/triggers/tagged/batcher.yaml delete mode 100644 release/triggers/tagged/kfserving-controller.yaml delete mode 100644 release/triggers/tagged/logger.yaml delete mode 100644 release/triggers/tagged/pytorch-gpu.yaml delete mode 100644 release/triggers/tagged/pytorch.yaml delete mode 100644 release/triggers/tagged/sklearnserver.yaml delete mode 100644 release/triggers/tagged/storage-initalizer.yaml delete mode 100644 release/triggers/tagged/tf2openapi.yaml delete mode 100644 release/triggers/tagged/xgbserver.yaml create mode 100644 test/crds/serving.kserve.io_inferenceservices.yaml delete mode 100644 web-app/.dockerignore delete mode 100644 web-app/.gitignore delete mode 100644 web-app/Dockerfile delete mode 100644 web-app/Makefile delete mode 100644 web-app/OWNERS delete mode 100644 web-app/README.md delete mode 100644 web-app/backend/Makefile delete mode 100644 web-app/backend/apps/common/__init__.py delete mode 100644 web-app/backend/apps/common/routes/__init__.py delete mode 100644 web-app/backend/apps/common/routes/delete.py delete mode 100644 web-app/backend/apps/common/routes/get.py delete mode 100644 web-app/backend/apps/common/utils.py delete mode 100644 web-app/backend/apps/common/versions.py delete mode 100644 web-app/backend/apps/common/yaml/inference_service_template.yaml delete mode 100644 web-app/backend/apps/v1beta1/__init__.py delete mode 100644 web-app/backend/apps/v1beta1/routes/__init__.py delete mode 100644 web-app/backend/apps/v1beta1/routes/post.py delete mode 100755 web-app/backend/entrypoint.py delete mode 100644 web-app/backend/requirements.txt delete mode 100644 web-app/frontend/.editorconfig delete mode 100644 web-app/frontend/.gitignore delete mode 100644 web-app/frontend/.prettierrc delete mode 100644 web-app/frontend/angular.json delete mode 100644 web-app/frontend/browserslist delete mode 100644 web-app/frontend/e2e/protractor.conf.js delete mode 100644 web-app/frontend/e2e/src/app.e2e-spec.ts delete mode 100644 web-app/frontend/e2e/src/app.po.ts delete mode 100644 web-app/frontend/e2e/tsconfig.json delete mode 100644 web-app/frontend/karma.conf.js delete mode 100644 web-app/frontend/package-lock.json delete mode 100644 web-app/frontend/package.json delete mode 100644 web-app/frontend/proxy.conf.json delete mode 100644 web-app/frontend/src/app/app-routing.module.ts delete mode 100644 web-app/frontend/src/app/app.component.html delete mode 100644 web-app/frontend/src/app/app.component.scss delete mode 100644 web-app/frontend/src/app/app.component.spec.ts delete mode 100644 web-app/frontend/src/app/app.component.ts delete mode 100644 web-app/frontend/src/app/app.module.ts delete mode 100644 web-app/frontend/src/app/pages/index/config.ts delete mode 100644 web-app/frontend/src/app/pages/index/index.component.html delete mode 100644 web-app/frontend/src/app/pages/index/index.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/index/index.component.ts delete mode 100644 web-app/frontend/src/app/pages/index/index.module.ts delete mode 100644 web-app/frontend/src/app/pages/index/utils.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/details.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/details.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/details/details.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/details.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/details.module.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/explainer/explainer.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/explainer/explainer.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/explainer/explainer.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/predictor/predictor.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/predictor/predictor.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/predictor/predictor.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/component-extension/component-extension.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/component-extension/component-extension.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/component-extension/component-extension.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/component-extension/component-extension.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/container/container.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/container/container.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/container/container.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/pod/pod.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/pod/pod.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/pod/pod.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/shared/pod/pod.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/transformer/transformer.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/details/transformer/transformer.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/details/transformer/transformer.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs-viewer/logs-viewer.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs-viewer/logs-viewer.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs-viewer/logs-viewer.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs-viewer/logs-viewer.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs-viewer/logs-viewer.module.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/logs/logs.module.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/grafana-graph/grafana-graph.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/grafana-graph/grafana-graph.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/grafana-graph/grafana-graph.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/grafana-graph/grafana-graph.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/metrics.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/metrics.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/metrics.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/metrics.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/metrics/metrics.module.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/component/component.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/component/component.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/component/component.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/component/component.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/overview.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/overview.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/overview.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/overview.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/overview/overview.module.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/server-info.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/server-info.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/server-info.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/server-info.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/server-info.module.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/yamls/yamls.component.html delete mode 100644 web-app/frontend/src/app/pages/server-info/yamls/yamls.component.scss delete mode 100644 web-app/frontend/src/app/pages/server-info/yamls/yamls.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/yamls/yamls.component.ts delete mode 100644 web-app/frontend/src/app/pages/server-info/yamls/yamls.module.ts delete mode 100644 web-app/frontend/src/app/pages/submit-form/submit-form.component.html delete mode 100644 web-app/frontend/src/app/pages/submit-form/submit-form.component.scss delete mode 100644 web-app/frontend/src/app/pages/submit-form/submit-form.component.spec.ts delete mode 100644 web-app/frontend/src/app/pages/submit-form/submit-form.component.ts delete mode 100644 web-app/frontend/src/app/pages/submit-form/submit-form.module.ts delete mode 100644 web-app/frontend/src/app/services/backend.service.spec.ts delete mode 100644 web-app/frontend/src/app/services/backend.service.ts delete mode 100644 web-app/frontend/src/app/services/grafana.service.spec.ts delete mode 100644 web-app/frontend/src/app/services/grafana.service.ts delete mode 100644 web-app/frontend/src/app/shared/utils.ts delete mode 100644 web-app/frontend/src/app/types/backend.ts delete mode 100644 web-app/frontend/src/app/types/grafana.ts delete mode 100644 web-app/frontend/src/app/types/kfserving/v1beta1.ts delete mode 100644 web-app/frontend/src/assets/.gitkeep delete mode 100644 web-app/frontend/src/environments/environment.prod.ts delete mode 100644 web-app/frontend/src/environments/environment.ts delete mode 100644 web-app/frontend/src/favicon.ico delete mode 100644 web-app/frontend/src/index.html delete mode 100644 web-app/frontend/src/kubeflow.css delete mode 100644 web-app/frontend/src/main.ts delete mode 100644 web-app/frontend/src/polyfills.ts delete mode 100644 web-app/frontend/src/styles.scss delete mode 100644 web-app/frontend/src/test.ts delete mode 100644 web-app/frontend/tsconfig.app.json delete mode 100644 web-app/frontend/tsconfig.json delete mode 100644 web-app/frontend/tsconfig.spec.json delete mode 100644 web-app/frontend/tslint.json diff --git a/.github/workflows/agent-docker-publish.yml b/.github/workflows/agent-docker-publish.yml index 51d6fa5c4336..ebfdc814a83a 100644 --- a/.github/workflows/agent-docker-publish.yml +++ b/.github/workflows/agent-docker-publish.yml @@ -54,7 +54,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/aiexplainer-docker-publish.yml b/.github/workflows/aiexplainer-docker-publish.yml index 0b9401b180ea..6f8d21832850 100644 --- a/.github/workflows/aiexplainer-docker-publish.yml +++ b/.github/workflows/aiexplainer-docker-publish.yml @@ -57,7 +57,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/alibiexplainer-docker-publish.yml b/.github/workflows/alibiexplainer-docker-publish.yml index ce82f31742d2..0f434f8470ae 100644 --- a/.github/workflows/alibiexplainer-docker-publish.yml +++ b/.github/workflows/alibiexplainer-docker-publish.yml @@ -57,7 +57,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/artexplainer-docker-publish.yml b/.github/workflows/artexplainer-docker-publish.yml index 9c7e6f8f27ed..3a027dd5ebb0 100644 --- a/.github/workflows/artexplainer-docker-publish.yml +++ b/.github/workflows/artexplainer-docker-publish.yml @@ -57,7 +57,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/web-app-docker-publish.yml b/.github/workflows/kserve-controller-docker-publish.yml similarity index 92% rename from .github/workflows/web-app-docker-publish.yml rename to .github/workflows/kserve-controller-docker-publish.yml index 71e282899019..ad4234d220e6 100644 --- a/.github/workflows/web-app-docker-publish.yml +++ b/.github/workflows/kserve-controller-docker-publish.yml @@ -1,4 +1,4 @@ -name: Models web app Docker Publisher +name: Kserve controller Docker Publisher on: push: @@ -14,7 +14,7 @@ on: pull_request: env: - IMAGE_NAME: models-web-app + IMAGE_NAME: kserve-controller jobs: # Run tests. @@ -31,7 +31,6 @@ jobs: docker-compose --file docker-compose.test.yml build docker-compose --file docker-compose.test.yml run sut else - cd web-app docker build . --file Dockerfile fi @@ -49,7 +48,6 @@ jobs: - name: Build image run: | - cd web-app docker build . --file Dockerfile --tag $IMAGE_NAME - name: Log into registry @@ -57,7 +55,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/lightgbm-docker-publish.yml b/.github/workflows/lightgbm-docker-publish.yml index e67d05d3bc12..c7b7b71f7751 100644 --- a/.github/workflows/lightgbm-docker-publish.yml +++ b/.github/workflows/lightgbm-docker-publish.yml @@ -57,7 +57,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/paddle-docker-publish.yml b/.github/workflows/paddle-docker-publish.yml index 8acbbe5145d8..d2381e6506ea 100644 --- a/.github/workflows/paddle-docker-publish.yml +++ b/.github/workflows/paddle-docker-publish.yml @@ -57,7 +57,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/pmml-docker-publish.yml b/.github/workflows/pmml-docker-publish.yml index 5b51d9548411..862b37ef431b 100644 --- a/.github/workflows/pmml-docker-publish.yml +++ b/.github/workflows/pmml-docker-publish.yml @@ -57,7 +57,7 @@ jobs: - name: Push image run: | - IMAGE_ID=kfserving/$IMAGE_NAME + IMAGE_ID=kserve/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index a020b5d22e3b..14d2e65f9e48 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -25,6 +25,6 @@ jobs: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | - cd python/kfserving + cd python/kserve python setup.py sdist bdist_wheel twine upload dist/* diff --git a/.github/workflows/python-test.yml b/.github/workflows/python-test.yml index fd869062ba1d..bf57c0b123b6 100644 --- a/.github/workflows/python-test.yml +++ b/.github/workflows/python-test.yml @@ -20,7 +20,7 @@ jobs: uses: py-actions/flake8@v1 with: max-line-length: "120" - exclude: "docs/samples/v1alpha2/onnx/assets/*.py,python/kfserving/test/test_v1*.py,python/kfserving/kfserving/__init__.py,python/kfserving/test/test_knative*.py" + exclude: "docs/samples/v1alpha2/onnx/assets/*.py,python/kserve/test/test_v1*.py,python/kserve/kserve/__init__.py,python/kserve/test/test_knative*.py" build: runs-on: ubuntu-latest strategy: @@ -41,7 +41,7 @@ jobs: pip install pytest-cov pip install --upgrade pytest-tornasync cd python - pip install -e ./kfserving + pip install -e ./kserve pip install -e ./aixexplainer pip install -e ./alibiexplainer pip install h5py==2.9.0 diff --git a/.github/workflows/pytorchserver-docker-publish.yml b/.github/workflows/pytorchserver-docker-publish.yml new file mode 100644 index 000000000000..59d5fb238676 --- /dev/null +++ b/.github/workflows/pytorchserver-docker-publish.yml @@ -0,0 +1,79 @@ +name: Pytorch Server Docker Publisher + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + IMAGE_NAME: pytorchserver + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + cd python + docker build . --file pytorch.Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + cd python + docker build . --file pytorch.Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=kserve/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + # [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + diff --git a/.github/workflows/pytorchserver-gpu-docker-publish.yml b/.github/workflows/pytorchserver-gpu-docker-publish.yml new file mode 100644 index 000000000000..853ef2e6a83c --- /dev/null +++ b/.github/workflows/pytorchserver-gpu-docker-publish.yml @@ -0,0 +1,82 @@ +name: Pytorch Server gpu Docker Publisher + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + IMAGE_NAME: pytorchserver + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + cd python + docker build . --file pytorch-gpu.Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + cd python + docker build . --file pytorch-gpu.Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=kserve/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + # [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + #appending gpu for version + VERSION=$VERSION-gpu + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + diff --git a/.github/workflows/sklearnserver-docker-publish.yml b/.github/workflows/sklearnserver-docker-publish.yml new file mode 100644 index 000000000000..971993503737 --- /dev/null +++ b/.github/workflows/sklearnserver-docker-publish.yml @@ -0,0 +1,79 @@ +name: Sklearn Server Docker Publisher + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + IMAGE_NAME: sklearnserver + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + cd python + docker build . --file sklearn.Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + cd python + docker build . --file sklearn.Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=kserve/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + # [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + diff --git a/.github/workflows/storage-initializer-docker-publisher.yml b/.github/workflows/storage-initializer-docker-publisher.yml new file mode 100644 index 000000000000..dd364d4252e7 --- /dev/null +++ b/.github/workflows/storage-initializer-docker-publisher.yml @@ -0,0 +1,79 @@ +name: Storage Intializer Docker Publisher + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + IMAGE_NAME: storage-initializer + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + cd python + docker build . --file storage-initializer.Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + cd python + docker build . --file storage-initializer.Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=kserve/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + # [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + diff --git a/.github/workflows/tf2openapi-docker-publisher.yml b/.github/workflows/tf2openapi-docker-publisher.yml new file mode 100644 index 000000000000..826e236792ab --- /dev/null +++ b/.github/workflows/tf2openapi-docker-publisher.yml @@ -0,0 +1,77 @@ +name: Tf2Openapi Docker Publisher + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + IMAGE_NAME: tf2openapi + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + docker build . --file tools/tf2openapi/Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + docker build . --file tools/tf2openapi/Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=kserve/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + # [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + diff --git a/.github/workflows/xgbserver-docker-publisher.yml b/.github/workflows/xgbserver-docker-publisher.yml new file mode 100644 index 000000000000..abb923a5a1b3 --- /dev/null +++ b/.github/workflows/xgbserver-docker-publisher.yml @@ -0,0 +1,79 @@ +name: Xgbserver Server Docker Publisher + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + IMAGE_NAME: xgbserver + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + cd python + docker build . --file xgb.Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + cd python + docker build . --file xgb.Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=kserve/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + # [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + diff --git a/.gitignore b/.gitignore index 452d108022c5..f1f432da4085 100644 --- a/.gitignore +++ b/.gitignore @@ -50,12 +50,12 @@ config/overlays/dev-image-config/inferenceservice_patch.yaml # swagger-codegen tools and auto generated files but useless hack/current_violation_exceptions.list hack/python-sdk/openapi-generator-cli.jar -python/kfserving/.swagger-codegen-ignore -python/kfserving/.swagger-codegen/ -python/kfserving/.travis.yml -python/kfserving/git_push.sh -python/kfserving/test-requirements.txt -python/kfserving/tox.ini +python/kserve/.swagger-codegen-ignore +python/kserve/.swagger-codegen/ +python/kserve/.travis.yml +python/kserve/git_push.sh +python/kserve/test-requirements.txt +python/kserve/tox.ini # Ignore files for MacOS **/.DS_Store diff --git a/Dockerfile b/Dockerfile index 61691998fc82..de4ce32ecf7d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM golang:1.14.14 as builder # Copy in the go src -WORKDIR /go/src/github.com/kubeflow/kfserving +WORKDIR /go/src/github.com/kserve/kserve COPY go.mod go.mod COPY go.sum go.sum @@ -23,5 +23,5 @@ RUN if [ "$(uname -m)" = "ppc64le" ]; then \ FROM gcr.io/distroless/static:latest WORKDIR / COPY third_party/ third_party/ -COPY --from=builder /go/src/github.com/kubeflow/kfserving/manager . +COPY --from=builder /go/src/github.com/kserve/kserve/manager . ENTRYPOINT ["/manager"] diff --git a/Makefile b/Makefile index df40fd30bb38..74fe39995c41 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ HAS_LINT := $(shell command -v golint;) # Image URL to use all building/pushing image targets -IMG ?= kfserving-controller:latest +IMG ?= kserve-controller:latest AGENT_IMG ?= agent:latest SKLEARN_IMG ?= sklearnserver XGB_IMG ?= xgbserver @@ -12,13 +12,13 @@ PADDLE_IMG ?= paddleserver ALIBI_IMG ?= alibi-explainer STORAGE_INIT_IMG ?= storage-initializer CRD_OPTIONS ?= "crd:maxDescLen=0" -KFSERVING_ENABLE_SELF_SIGNED_CA ?= false +KSERVE_ENABLE_SELF_SIGNED_CA ?= false # CPU/Memory limits for controller-manager -KFSERVING_CONTROLLER_CPU_LIMIT ?= 100m -KFSERVING_CONTROLLER_MEMORY_LIMIT ?= 300Mi -$(shell perl -pi -e 's/cpu:.*/cpu: $(KFSERVING_CONTROLLER_CPU_LIMIT)/' config/default/manager_resources_patch.yaml) -$(shell perl -pi -e 's/memory:.*/memory: $(KFSERVING_CONTROLLER_MEMORY_LIMIT)/' config/default/manager_resources_patch.yaml) +KSERVE_CONTROLLER_CPU_LIMIT ?= 100m +KSERVE_CONTROLLER_MEMORY_LIMIT ?= 300Mi +$(shell perl -pi -e 's/cpu:.*/cpu: $(KSERVE_CONTROLLER_CPU_LIMIT)/' config/default/manager_resources_patch.yaml) +$(shell perl -pi -e 's/memory:.*/memory: $(KSERVE_CONTROLLER_MEMORY_LIMIT)/' config/default/manager_resources_patch.yaml) all: test manager agent @@ -40,21 +40,21 @@ run: generate fmt vet lint # Deploy controller in the configured Kubernetes cluster in ~/.kube/config deploy: manifests - # Remove the certmanager certificate if KFSERVING_ENABLE_SELF_SIGNED_CA is not false - cd config/default && if [ ${KFSERVING_ENABLE_SELF_SIGNED_CA} != false ]; then \ + # Remove the certmanager certificate if KSERVE_ENABLE_SELF_SIGNED_CA is not false + cd config/default && if [ ${KSERVE_ENABLE_SELF_SIGNED_CA} != false ]; then \ kustomize edit remove resource certmanager/certificate.yaml; \ else kustomize edit add resource certmanager/certificate.yaml; fi; kustomize build config/default | kubectl apply --validate=false -f - - if [ ${KFSERVING_ENABLE_SELF_SIGNED_CA} != false ]; then ./hack/self-signed-ca.sh; fi; + if [ ${KSERVE_ENABLE_SELF_SIGNED_CA} != false ]; then ./hack/self-signed-ca.sh; fi; deploy-dev: manifests ./hack/image_patch_dev.sh development - # Remove the certmanager certificate if KFSERVING_ENABLE_SELF_SIGNED_CA is not false - cd config/default && if [ ${KFSERVING_ENABLE_SELF_SIGNED_CA} != false ]; then \ + # Remove the certmanager certificate if KSERVE_ENABLE_SELF_SIGNED_CA is not false + cd config/default && if [ ${KSERVE_ENABLE_SELF_SIGNED_CA} != false ]; then \ kustomize edit remove resource certmanager/certificate.yaml; \ else kustomize edit add resource certmanager/certificate.yaml; fi; kustomize build config/overlays/development | kubectl apply --validate=false -f - - if [ ${KFSERVING_ENABLE_SELF_SIGNED_CA} != false ]; then ./hack/self-signed-ca.sh; fi; + if [ ${KSERVE_ENABLE_SELF_SIGNED_CA} != false ]; then ./hack/self-signed-ca.sh; fi; deploy-dev-sklearn: docker-push-sklearn ./hack/model_server_patch_dev.sh sklearn ${KO_DOCKER_REPO}/${SKLEARN_IMG} @@ -93,44 +93,44 @@ deploy-ci: manifests undeploy: kustomize build config/default | kubectl delete -f - - kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kubeflow.org - kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io trainedmodel.serving.kubeflow.org - kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kubeflow.org + kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kserve.io + kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io trainedmodel.serving.kserve.io + kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kserve.io undeploy-dev: kustomize build config/overlays/development | kubectl delete -f - - kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kubeflow.org - kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io trainedmodel.serving.kubeflow.org - kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kubeflow.org + kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kserve.io + kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io trainedmodel.serving.kserve.io + kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io inferenceservice.serving.kserve.io # Generate manifests e.g. CRD, RBAC etc. manifests: controller-gen $(CONTROLLER_GEN) $(CRD_OPTIONS) paths=./pkg/apis/serving/... output:crd:dir=config/crd - $(CONTROLLER_GEN) rbac:roleName=kfserving-manager-role paths=./pkg/controller/... output:rbac:artifacts:config=config/rbac + $(CONTROLLER_GEN) rbac:roleName=kserve-manager-role paths=./pkg/controller/... output:rbac:artifacts:config=config/rbac $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths=./pkg/apis/serving/v1alpha1 $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths=./pkg/apis/serving/v1alpha2 $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths=./pkg/apis/serving/v1beta1 - + #TODO Remove this until new controller-tools is released - perl -pi -e 's/storedVersions: null/storedVersions: []/g' config/crd/serving.kubeflow.org_inferenceservices.yaml - perl -pi -e 's/conditions: null/conditions: []/g' config/crd/serving.kubeflow.org_inferenceservices.yaml - perl -pi -e 's/Any/string/g' config/crd/serving.kubeflow.org_inferenceservices.yaml - perl -pi -e 's/storedVersions: null/storedVersions: []/g' config/crd/serving.kubeflow.org_trainedmodels.yaml - perl -pi -e 's/conditions: null/conditions: []/g' config/crd/serving.kubeflow.org_trainedmodels.yaml - perl -pi -e 's/Any/string/g' config/crd/serving.kubeflow.org_trainedmodels.yaml + perl -pi -e 's/storedVersions: null/storedVersions: []/g' config/crd/serving.kserve.io_inferenceservices.yaml + perl -pi -e 's/conditions: null/conditions: []/g' config/crd/serving.kserve.io_inferenceservices.yaml + perl -pi -e 's/Any/string/g' config/crd/serving.kserve.io_inferenceservices.yaml + perl -pi -e 's/storedVersions: null/storedVersions: []/g' config/crd/serving.kserve.io_trainedmodels.yaml + perl -pi -e 's/conditions: null/conditions: []/g' config/crd/serving.kserve.io_trainedmodels.yaml + perl -pi -e 's/Any/string/g' config/crd/serving.kserve.io_trainedmodels.yaml #remove the required property on framework as name field needs to be optional - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.required' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.required' #remove ephemeralContainers properties for compress crd size https://github.com/kubeflow/kfserving/pull/1141#issuecomment-714170602 - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.ephemeralContainers' - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.initContainers' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.ephemeralContainers' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.initContainers' #knative does not allow setting port on liveness or readiness probe - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.readinessProbe.properties.httpGet.required' - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.livenessProbe.properties.httpGet.required' - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.readinessProbe.properties.tcpSocket.required' - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.livenessProbe.properties.tcpSocket.required' - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.containers.items.properties.livenessProbe.properties.httpGet.required' - yq d -i config/crd/serving.kubeflow.org_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.containers.items.properties.readinessProbe.properties.httpGet.required' - kustomize build config/crd > test/crds/serving.kubeflow.org_inferenceservices.yaml + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.readinessProbe.properties.httpGet.required' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.livenessProbe.properties.httpGet.required' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.readinessProbe.properties.tcpSocket.required' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.*.properties.livenessProbe.properties.tcpSocket.required' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.containers.items.properties.livenessProbe.properties.httpGet.required' + yq d -i config/crd/serving.kserve.io_inferenceservices.yaml 'spec.versions[1].schema.openAPIV3Schema.properties.spec.properties.*.properties.containers.items.properties.readinessProbe.properties.httpGet.required' + kustomize build config/crd > test/crds/serving.kserve.io_inferenceservices.yaml # Run go fmt against code fmt: @@ -254,4 +254,4 @@ endif apidocs: docker build -f docs/apis/Dockerfile --rm -t apidocs-gen . && \ - docker run -it --rm -v $(CURDIR)/pkg/apis:/go/src/github.com/kubeflow/kfserving/pkg/apis -v ${PWD}/docs/apis:/go/gen-crd-api-reference-docs/apidocs apidocs-gen + docker run -it --rm -v $(CURDIR)/pkg/apis:/go/src/github.com/kserve/kserve/pkg/apis -v ${PWD}/docs/apis:/go/gen-crd-api-reference-docs/apidocs apidocs-gen diff --git a/OWNERS b/OWNERS index 68444f6dd8d5..3d605f54442b 100644 --- a/OWNERS +++ b/OWNERS @@ -3,7 +3,6 @@ approvers: - yuzisun - cliveseldon - animeshsingh - - rakelkar - deadeyegoodwin reviewers: - iamlovingit @@ -16,3 +15,4 @@ reviewers: - adriangonz - pvaneck - theofpa + - njhill diff --git a/PROJECT b/PROJECT index 2eeec72b8589..251f1248a6a7 100644 --- a/PROJECT +++ b/PROJECT @@ -1,3 +1,3 @@ -domain: serving.kubeflow.org -repo: github.com/kubeflow/kfserving +domain: serving.kserve.io +repo: github.com/kserve/kserve version: "2" diff --git a/README.md b/README.md index a5bdf60ad7e1..87cd40cb1f9a 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,61 @@ -# KFServing -[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/kubeflow/kfserving) -[![Coverage Status](https://coveralls.io/repos/github/kubeflow/kfserving/badge.svg?branch=master)](https://coveralls.io/github/kubeflow/kfserving?branch=master) -[![Go Report Card](https://goreportcard.com/badge/github.com/kubeflow/kfserving)](https://goreportcard.com/report/github.com/kubeflow/kfserving) -[![Releases](https://img.shields.io/github/release-pre/kubeflow/kfserving.svg?sort=semver)](https://github.com/kubeflow/kfserving/releases) -[![LICENSE](https://img.shields.io/github/license/kubeflow/kfserving.svg)](https://github.com/kubeflow/kfserving/blob/master/LICENSE) +# KServe +[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/kserve/kserve) +[![Coverage Status](https://coveralls.io/repos/github/kserve/kserve/badge.svg?branch=master)](https://coveralls.io/github/kserve/kserve?branch=master) +[![Go Report Card](https://goreportcard.com/badge/github.com/kserve/kserve)](https://goreportcard.com/report/github.com/kserve/kserve) +[![Releases](https://img.shields.io/github/release-pre/kserve/kserve.svg?sort=semver)](https://github.com/kserve/kserve/releases) +[![LICENSE](https://img.shields.io/github/license/kserve/kserve.svg)](https://github.com/kserve/kserve/blob/master/LICENSE) [![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://kubeflow.slack.com/join/shared_invite/zt-cpr020z4-PfcAue_2nw67~iIDy7maAQ) -KFServing provides a Kubernetes [Custom Resource Definition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) for serving machine learning (ML) models on arbitrary frameworks. It aims to solve production model serving use cases by providing performant, high abstraction interfaces for common ML frameworks like Tensorflow, XGBoost, ScikitLearn, PyTorch, and ONNX. +KServe provides a Kubernetes [Custom Resource Definition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) for serving machine learning (ML) models on arbitrary frameworks. It aims to solve production model serving use cases by providing performant, high abstraction interfaces for common ML frameworks like Tensorflow, XGBoost, ScikitLearn, PyTorch, and ONNX. -It encapsulates the complexity of autoscaling, networking, health checking, and server configuration to bring cutting edge serving features like GPU Autoscaling, Scale to Zero, and Canary Rollouts to your ML deployments. It enables a simple, pluggable, and complete story for Production ML Serving including prediction, pre-processing, post-processing and explainability. KFServing is being [used across various organizations.](./ADOPTERS.md) +It encapsulates the complexity of autoscaling, networking, health checking, and server configuration to bring cutting edge serving features like GPU Autoscaling, Scale to Zero, and Canary Rollouts to your ML deployments. It enables a simple, pluggable, and complete story for Production ML Serving including prediction, pre-processing, post-processing and explainability. KServe is being [used across various organizations.](./ADOPTERS.md) -![KFServing](/docs/diagrams/kfserving.png) +![KServe](/docs/diagrams/kserve.png) ### Architecture Review [Control Plane and Data Plane](./docs/README.md) ### Core Features and Examples -[KFServing Features and Examples](./docs/samples/README.md) +[Features and Examples](./docs/samples/README.md) ### Learn More -To learn more about KFServing, how to deploy it as part of Kubeflow, how to use various supported features, and how to participate in the KFServing community, please follow the [KFServing docs on the Kubeflow Website](https://www.kubeflow.org/docs/components/serving/kfserving/). Additionally, we have compiled a list of [KFServing presentations and demoes](/docs/PRESENTATIONS.md) to dive through various details. +To learn more about KServe, how to deploy it as part of Kubeflow, how to use various supported features, and how to participate in the KServe community, please follow the [KFServing docs on the Kubeflow Website](https://www.kubeflow.org/docs/components/serving/kfserving/). Additionally, we have compiled a list of [presentations and demoes](/docs/PRESENTATIONS.md) to dive through various details. ### Prerequisites Kubernetes 1.17 is the minimally recommended version, Knative Serving and Istio should be available on Kubernetes Cluster. - [Istio](https://knative.dev/docs/install/installing-istio): v1.9.0+ - * KFServing currently only depends on `Istio Ingress Gateway` to route requests to inference services externally or internally. + * KServe currently only depends on `Istio Ingress Gateway` to route requests to inference services externally or internally. If you do not need `Service Mesh`, we recommend turning off Istio sidecar injection. - [Knative Serving](https://knative.dev/docs/install): v0.19.0+ * If you are running `Service Mesh` mode with `Authorization` please follow knative doc to [setup the authorization policies](https://knative.dev/docs/serving/istio-authorization). - * If you are looking to use [PodSpec fields](https://v1-18.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#podspec-v1-core) such as `nodeSelector`, `affinity` or `tolerations` which are now supported in the KFServing v1beta1 API spec, + * If you are looking to use [PodSpec fields](https://v1-18.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#podspec-v1-core) such as `nodeSelector`, `affinity` or `tolerations` which are now supported in the v1beta1 API spec, you need to turn on the corresponding [feature flags](https://knative.dev/docs/serving/feature-flags/) in your Knative configuration. - [Cert Manager](https://cert-manager.io/docs/installation/kubernetes): v1.3.0+ - * Cert manager is needed to provision KFServing webhook certs for production grade installation, alternatively you can run our self signed certs + * Cert manager is needed to provision webhook certs for production grade installation, alternatively you can run our self signed certs generation [script](./hack/self-signed-ca.sh). -### Install KFServing +### Installation -#### Standalone KFServing Installation -KFServing can be installed standalone if your kubernetes cluster meets the above prerequisites and KFServing controller is deployed in `kfserving-system` namespace. +#### Standalone Installation +KServe can be installed standalone if your kubernetes cluster meets the above prerequisites and is deployed in `kserve` namespace. ``` -TAG=v0.6.0 +TAG=v0.7.0-rc0 ``` -Install KFServing CRD and Controller +Install KServe CRD and Controller Due to [a performance issue applying deeply nested CRDs](https://github.com/kubernetes/kubernetes/issues/91615), please ensure that your `kubectl` version fits into one of the following categories to ensure that you have the fix: `>=1.16.14,<1.17.0` or `>=1.17.11,<1.18.0` or `>=1.18.8`. ```shell -kubectl apply -f https://github.com/kubeflow/kfserving/releases/download/$TAG/kfserving.yaml +kubectl apply -f https://github.com/kserve/kserve/releases/download/$TAG/kserve.yaml ``` -#### Standalone KFServing on OpenShift - -To install standalone KFServing on [OpenShift Container Platform](https://www.openshift.com/products/container-platform), please follow the [instructions here](docs/OPENSHIFT_GUIDE.md). - -#### KFServing with Kubeflow Installation -KFServing is installed by default as part of Kubeflow installation and KFServing controller is deployed in `kubeflow` namespace. - -:warning: Do ensure that you do not deploy `InferenceService` in `kubeflow` namespace which is labelled as `control-plane` and is system namespace. - #### Quick Install (On your local machine) Make sure you have @@ -73,7 +64,7 @@ Make sure you have 1) If you do not have an existing kubernetes cluster, you can create a quick kubernetes local cluster with [kind](https://github.com/kubernetes-sigs/kind#installation-and-usage). -Note that the minimal requirement for running KFServing is 4 cpus and 8Gi memory, +Note that the minimal requirement for running KServe is 4 cpus and 8Gi memory, so you need to change the [docker resource setting](https://docs.docker.com/docker-for-mac/#advanced) to use 4 cpus and 8Gi memory. ```bash kind create cluster @@ -83,7 +74,7 @@ alternatively you can use [Minikube](https://kubernetes.io/docs/setup/learning-e minikube start --cpus 4 --memory 8192 ``` -2) Install Istio lean version, Knative Serving, KFServing all in one.(this takes 30s) +2) Install Istio lean version, Knative Serving, KServe all in one.(this takes 30s) ```bash ./hack/quick_install.sh ``` @@ -91,7 +82,7 @@ minikube start --cpus 4 --memory 8192 ### Setup Ingress Gateway If the default ingress gateway setup does not fit your need, you can choose to setup a custom ingress gateway - [Configure Custom Ingress Gateway](https://knative.dev/docs/serving/setting-up-custom-ingress-gateway/) - - In addition you need to update [KFServing configmap](config/configmap/inferenceservice.yaml) to use the custom ingress gateway. + - In addition you need to update [configmap](config/configmap/inferenceservice.yaml) to use the custom ingress gateway. - [Configure Custom Domain](https://knative.dev/docs/serving/using-a-custom-domain/) - [Configure HTTPS Connection](https://knative.dev/docs/serving/using-a-tls-cert/) @@ -130,30 +121,30 @@ export INGRESS_HOST=localhost export INGRESS_PORT=8080 ``` -### Test KFServing Installation +### Test Installation
Expand to see steps for testing the installation! -#### Check KFServing controller installation +#### Verify installation ```shell -kubectl get po -n kfserving-system +kubectl get po -n kserve NAME READY STATUS RESTARTS AGE -kfserving-controller-manager-0 2/2 Running 2 13m +kserve-controller-manager-0 2/2 Running 2 13m ``` Please refer to our [troubleshooting section](docs/DEVELOPER_GUIDE.md#troubleshooting) for recommendations and tips for issues with installation. -#### Create KFServing test inference service +#### Create test inference service ```bash API_VERSION=v1beta1 -kubectl create namespace kfserving-test -kubectl apply -f docs/samples/${API_VERSION}/sklearn/v1/sklearn.yaml -n kfserving-test +kubectl create namespace kserve-test +kubectl apply -f docs/samples/${API_VERSION}/sklearn/v1/sklearn.yaml -n kserve-test ``` -#### Check KFServing `InferenceService` status. +#### Check `InferenceService` status. ```bash -kubectl get inferenceservices sklearn-iris -n kfserving-test +kubectl get inferenceservices sklearn-iris -n kserve-test NAME URL READY PREV LATEST PREVROLLEDOUTREVISION LATESTREADYREVISION AGE -sklearn-iris http://sklearn-iris.kfserving-test.example.com True 100 sklearn-iris-predictor-default-47q2g 7d23h +sklearn-iris http://sklearn-iris.kserve-test.example.com True 100 sklearn-iris-predictor-default-47q2g 7d23h ``` If your DNS contains example.com please consult your admin for configuring DNS or using [custom domain](https://knative.dev/docs/serving/using-a-custom-domain). @@ -163,13 +154,13 @@ If your DNS contains example.com please consult your admin for configuring DNS o If you have configured the DNS, you can directly curl the `InferenceService` with the URL obtained from the status print. e.g ``` -curl -v http://sklearn-iris.kfserving-test.${CUSTOM_DOMAIN}/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json +curl -v http://sklearn-iris.kserve-test.${CUSTOM_DOMAIN}/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json ``` - Curl with magic DNS If you don't want to go through the trouble to get a real domain, you can instead use "magic" dns [xip.io](http://xip.io/). -The key is to get the external IP for your KFServing cluster. +The key is to get the external IP for your cluster. ``` kubectl get svc istio-ingressgateway --namespace istio-system ``` @@ -189,14 +180,14 @@ Now in your editor, change example.com to {{external-ip}}.xip.io (make sure to r With the change applied you can now directly curl the URL ```bash -curl -v http://sklearn-iris.kfserving-test.35.237.217.209.xip.io/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json +curl -v http://sklearn-iris.kserve-test.35.237.217.209.xip.io/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json ``` - Curl from ingress gateway with HOST Header If you do not have DNS, you can still curl with the ingress gateway external IP using the HOST Header. ```bash -SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kfserving-test -o jsonpath='{.status.url}' | cut -d "/" -f 3) +SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3) curl -v -H "Host: ${SERVICE_HOSTNAME}" http://${INGRESS_HOST}:${INGRESS_PORT}/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json ``` @@ -204,15 +195,15 @@ curl -v -H "Host: ${SERVICE_HOSTNAME}" http://${INGRESS_HOST}:${INGRESS_PORT}/v1 If you are calling from in cluster you can curl with the internal url with host {{InferenceServiceName}}.{{namespace}} ```bash -curl -v http://sklearn-iris.kfserving-test/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json +curl -v http://sklearn-iris.kserve-test/v1/models/sklearn-iris:predict -d @./docs/samples/${API_VERSION}/sklearn/v1/iris-input.json ``` #### Run Performance Test ```bash # use kubectl create instead of apply because the job template is using generateName which doesn't work with kubectl apply -kubectl create -f docs/samples/${API_VERSION}/sklearn/v1/perf.yaml -n kfserving-test +kubectl create -f docs/samples/${API_VERSION}/sklearn/v1/perf.yaml -n kserve-test # wait the job to be done and check the log -kubectl logs load-test8b58n-rgfxr -n kfserving-test +kubectl logs load-test8b58n-rgfxr -n kserve-test Requests [total, rate, throughput] 30000, 500.02, 499.99 Duration [total, attack, wait] 1m0s, 59.998s, 3.336ms Latencies [min, mean, 50, 90, 95, 99, max] 1.743ms, 2.748ms, 2.494ms, 3.363ms, 4.091ms, 7.749ms, 46.354ms @@ -225,42 +216,40 @@ Error Set:
### Setup Monitoring -- [Prometheus based monitoring for KFServing](https://github.com/kubeflow/kfserving/blob/master/docs/samples/metrics-and-monitoring/README.md#install-prometheus) +- [Prometheus based monitoring](https://github.com/kserve/kserve/blob/master/docs/samples/metrics-and-monitoring/README.md#install-prometheus) - [Metrics driven automated rollouts using Iter8](https://iter8.tools) - [Dashboard for ServiceMesh](https://istio.io/latest/docs/tasks/observability/kiali/) -### Use KFServing SDK +### Use KServe SDK * Install the SDK ``` - pip install kfserving + pip install kserve ``` -* Check the KFServing SDK documents from [here](python/kfserving/README.md). - -* Follow the [example(s) here](docs/samples/client) to use the KFServing SDK to create, rollout, promote, and delete an InferenceService instance. +* Check the SDK documents from [here](python/kserve/README.md). -### KFServing Presentations and Demoes -[KFServing Presentations and Demoes](./docs/PRESENTATIONS.md) +* Follow the [example(s) here](docs/samples/client) to use the KServe SDK to create, rollout, promote, and delete an InferenceService instance. -### KFServing Roadmap -[KFServing Roadmap](./ROADMAP.md) +### Presentations and Demoes +[Presentations and Demoes](./docs/PRESENTATIONS.md) -### KFServing API Reference -[KFServing v1alpha2 API Docs](./docs/apis/v1alpha2/README.md) +### Roadmap +[Roadmap](./ROADMAP.md) -[KFServing v1beta1 API Docs](./docs/apis/v1beta1/README.md) +### API Reference +[InferenceService v1beta1 API Docs](./docs/apis/v1beta1/README.md) -### KFServing Debugging Guide :star: -[Debug KFServing InferenceService](./docs/KFSERVING_DEBUG_GUIDE.md) +### Debugging Guide :star: +[Debug InferenceService](./docs/KFSERVING_DEBUG_GUIDE.md) ### Developer Guide [Developer Guide](/docs/DEVELOPER_GUIDE.md). ### Performance Tests -[KFServing benchmark test comparing Knative and Kubernetes Deployment with HPA](test/benchmark/README.md) +[benchmark test comparing Knative and Kubernetes Deployment with HPA](test/benchmark/README.md) ### Contributor Guide [Contributor Guide](./CONTRIBUTING.md) -### KFServing Adopters -[KFServing Adopters](./ADOPTERS.md) +### Adopters +[Adopters](./ADOPTERS.md) diff --git a/ROADMAP.md b/ROADMAP.md index 4e894e0c1151..8c1eee221d4b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,12 +1,5 @@ -# KF Serving Roadmap -## 2021 -### Multi Model Serving Phase Two -Objective: "Make multi model serving production ready" -* Trained model status probing and propagate CRD status -* Memory based Trained model sharding -* Scalability and Performance testing - -Proposal: https://docs.google.com/document/d/1D_SF_RpMbItnupjnIlGazPmq9yzVd4RzP1yDfOK0KdY/edit +# KServe Roadmap +## 2021 Q4/2022 Q1 ### Kubernetes Deployment Objective: "Enable raw kubernetes deployment as alternative mode" @@ -15,8 +8,6 @@ Objective: "Enable raw kubernetes deployment as alternative mode" * Allow multiple volumes mounted * Allow TCP/UDP -https://github.com/kubeflow/kfserving/issues/1320 - ### Inference Graph Objective: "Enable model serving pipelines with flexible routing graph" * Inference Router @@ -24,113 +15,11 @@ Objective: "Enable model serving pipelines with flexible routing graph" * Ensembling. * Multi Arm Bandit. * Pipeline - Proposal: https://docs.google.com/document/d/1rV8kI_40oiv8jMhY_LwkkyKLdOwSI1Qda-Dc6Dgjz1g -### Batch Inference -Objective: "Enable batch inference with large dataset" -* Event trigger based batch inference -* On-demand batch inference job - -https://github.com/kubeflow/kfserving/issues/369 - -# Historical -### v0.5 API Stabilization and TCO Reduction(Jan, 2021) -Objective: "Stabilize KFServing API" -* KFServing v1beta1 API - * Promote v1alpha2 to v1beta1 - * Conversion webhook - -Objective: "Unify prediction protocols across model servers" -* KFServing [prediction V2 API]([prediction V2 API](https://github.com/kubeflow/kfserving/tree/master/docs/predict-api/v2)) - * V2 KFServing Python Server(SKLearn/XgBoost/Custom) - * Triton inference server V2 prediction API - * TorchServe/KFServing integration - * Enable support for GRPC. - -Proposal: https://docs.google.com/document/d/1C2uf4SaAtwLTlBCciOhvdiKQ2Eay4U72VxAD4bXe7iU - -Objective: "Reduce Total Cost of Ownership when deploying multiple underutilized models." -* Container/GPU Sharing - * Reduce TCO by enabling models of the same framework and version to be co-hosted in a single model server. - -Proposal: https://docs.google.com/document/d/11qETyR--oOIquQke-DCaLsZY75vT1hRu21PesSUDy7o - -### v0.4 Performance(July, 2020) -Objective: "Prevent performance regressions across a known set of representative models." -* Automated Performance Tests - * Define a set of Models to test covering a wide array of use cases and frameworks. - * Publish performance results over time to enable regression tracking. - -Objective: "Increase throughput for the inference service" -* Adaptive batching support - * Queue and batch requests to increase throughput. - -### v0.3 Stability (Mar 11, 2020) -Objective: "Improve practices around dependency management." -* Migrate to Kubebuilder 2.0. - * Use Go Modules. - * Stop Vendoring dependencies. - * Avoid the extremely heavy dependency on Tensorflow. -* Migrate to Kubernetes 1.15. - * Enable LabelSelectors for the Pod Mutation Webhook. - -Objective: "Prevent feature regressions with greater end-to-end test coverage against a live cluster." -* Automated End-to-End Tests - * Execute against a Kubeflow maintained GKE Cluster. - * Execute against a Kubeflow maintained AKS Cluster. - * Achieve >80% Test Coverage of Supported Features. - -Objective: "Improve build and release processes to improve the developer experience and avoid regressions." -* Improve build reliability - * Implement build retries. - * Reduce PyTorch build time. -* Automated Image Injection for Model Servers. - * Implement new developer commands to deploy kfserving with local images. -* Improve versioning of XGBoost, SKLearn, and PyTorch - * Replace KFServing version with the corresponding framework version. - -### v0.2 Integrate with the ML Ecosystem (Oct 31, 2019) -Objective: "Continue to simplify the user experience by deeply integrating with the Kubeflow Ecosystem." -* Kubeflow Integration - * Prepare KFServing to release v0.2 and v0.3 alongside Kubeflow v0.7. - * Integrate with `kfctl generate` and `kfctl apply`. - * Deploy as a [Kubernetes Application](https://github.com/kubernetes-sigs/application). - * Integrate with Kubeflow Pipelines to enable model deployment from a Pipeline. - * Integrate with Fairing to enable model deployment from a Notebook. - * Achieve 20% End-to-End Test Coverage of Supported Features. (See v0.3 for 80%). - * Support PVCs to enable integration with on-prem Kubeflow installations. - * Document Installation for various cloud providers (GCP, IBM Cloud, Azure, AWS). - -Objective: "Empower users to deeply understand their predictions and validate KFServing's static graph architecture." -* Explainability - * Deploy a predictor and explainer, powered by Alibi. - * Deploy a predictor and explainer, powered by user specified explainer container. - -Objective: "Increase coverage of ML frameworks to support previously unsupported customer workloads." -* Frameworks - * Deploy a ONNX model - * Explore supporting other model serialization mechanisms for certain frameworks (e.g. saving PyTorch models with dill) - -## Q2 2019 -### v0.1: InferenceService Minimum Viable Product (June 30, 2019) -Objective: "Simplify the user experience and provide a low barrier to entry by minimizing the amount of YAML necessary to deploy a trained model." -* High Level Interfaces - * Deploy a Tensorflow model without specifying a Tensorflow Serving Technology. - * Deploy a XGBoost model without specifying a XGBoost Serving Technology. - * Deploy a ScikitLearn model without specifying a ScikitLearn Serving Technology. - * Deploy a Pytorch model without specifying a Pytorch Serving Technology. - * Deploy a Custom Containerized model by specifying your docker image and args. - -Objective: "Empower users to safely deploy production models by enabling a variety of deployment strategies." -* Model Rollout - * Rollout a model using a blue-green strategy. - * Rollout a model using a pinned strategy. - * Rollout a model using a canary strategy. - -Objective: "Reduce the total cost of ownership for models by minimizing the delta between provisioned resources and request load." -* Autoscaling - * Scale a model to zero. - * Scale a model from zero without dropping traffic. - * Scale a model that is GPU bound. - * Scale a model that is CPU bound. +### ModelMesh +Objective: "Unifying interface for SingleModel and ModelMesh deployment" +* Ability to perform inference using Predict v2 API with REST/gRPC +* Unify the storage support for single and ModelMesh +* InferenceService controller to utilize ServingRuntime +* Single install for KServe which includes SingleModel and ModelMesh Serving diff --git a/agent.Dockerfile b/agent.Dockerfile index e61a2c345ad5..5555d04c6f06 100644 --- a/agent.Dockerfile +++ b/agent.Dockerfile @@ -2,7 +2,7 @@ FROM golang:1.14.14 as builder # Copy in the go src -WORKDIR /go/src/github.com/kubeflow/kfserving +WORKDIR /go/src/github.com/kserve/kserve COPY go.mod go.mod COPY go.sum go.sum @@ -18,5 +18,5 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o agent ./cmd/agent FROM gcr.io/distroless/static:latest COPY third_party/ third_party/ WORKDIR /ko-app -COPY --from=builder /go/src/github.com/kubeflow/kfserving/agent /ko-app/ +COPY --from=builder /go/src/github.com/kserve/kserve/agent /ko-app/ ENTRYPOINT ["/ko-app/agent"] diff --git a/cmd/agent/execprobe.go b/cmd/agent/execprobe.go index 4c9e839e7b8d..4016a5ba418a 100644 --- a/cmd/agent/execprobe.go +++ b/cmd/agent/execprobe.go @@ -1,5 +1,4 @@ /* -Copyright 2020 The Knative Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 83f6257a4065..58d7bcbd9093 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -12,11 +12,11 @@ import ( "time" "github.com/kelseyhightower/envconfig" - "github.com/kubeflow/kfserving/pkg/agent" - "github.com/kubeflow/kfserving/pkg/agent/storage" - "github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1" - "github.com/kubeflow/kfserving/pkg/batcher" - kfslogger "github.com/kubeflow/kfserving/pkg/logger" + "github.com/kserve/kserve/pkg/agent" + "github.com/kserve/kserve/pkg/agent/storage" + "github.com/kserve/kserve/pkg/apis/serving/v1beta1" + "github.com/kserve/kserve/pkg/batcher" + kfslogger "github.com/kserve/kserve/pkg/logger" "github.com/pkg/errors" flag "github.com/spf13/pflag" "go.uber.org/zap" @@ -54,7 +54,7 @@ var ( // probing flags readinessProbeTimeout = flag.Duration("probe-period", -1, "run readiness probe with given timeout") // This creates an abstract socket instead of an actual file. - unixSocketPath = "@/kfserving/agent.sock" + unixSocketPath = "@/kserve/agent.sock" ) type config struct { diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 740007ecceff..2ee265390833 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -1,5 +1,4 @@ /* -Copyright 2019 kubeflow.org. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -20,13 +19,14 @@ import ( "flag" "os" - "github.com/kubeflow/kfserving/pkg/apis/serving/v1alpha1" - "github.com/kubeflow/kfserving/pkg/apis/serving/v1alpha2" - "github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1" - trainedmodelcontroller "github.com/kubeflow/kfserving/pkg/controller/v1alpha1/trainedmodel" - "github.com/kubeflow/kfserving/pkg/controller/v1alpha1/trainedmodel/reconcilers/modelconfig" - v1beta1controller "github.com/kubeflow/kfserving/pkg/controller/v1beta1/inferenceservice" - "github.com/kubeflow/kfserving/pkg/webhook/admission/pod" + "github.com/kserve/kserve/pkg/apis/serving/v1alpha1" + "github.com/kserve/kserve/pkg/apis/serving/v1alpha2" + "github.com/kserve/kserve/pkg/apis/serving/v1beta1" + "github.com/kserve/kserve/pkg/constants" + trainedmodelcontroller "github.com/kserve/kserve/pkg/controller/v1alpha1/trainedmodel" + "github.com/kserve/kserve/pkg/controller/v1alpha1/trainedmodel/reconcilers/modelconfig" + v1beta1controller "github.com/kserve/kserve/pkg/controller/v1beta1/inferenceservice" + "github.com/kserve/kserve/pkg/webhook/admission/pod" istio_networking "istio.io/api/networking/v1alpha3" "istio.io/client-go/pkg/apis/networking/v1alpha3" v1 "k8s.io/api/core/v1" @@ -37,6 +37,7 @@ import ( "k8s.io/client-go/tools/record" knservingv1 "knative.dev/serving/pkg/apis/serving/v1" ctrl "sigs.k8s.io/controller-runtime" + client "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/log/zap" @@ -81,35 +82,47 @@ func main() { log.Info("Registering Components.") - log.Info("Setting up KFServing v1alpha1 scheme") + log.Info("Setting up KServe v1alpha1 scheme") if err := v1alpha1.AddToScheme(mgr.GetScheme()); err != nil { - log.Error(err, "unable to add KFServing v1alpha1 to scheme") + log.Error(err, "unable to add KServe v1alpha1 to scheme") os.Exit(1) } - log.Info("Setting up KFServing v1alpha2 scheme") + log.Info("Setting up KServe v1alpha2 scheme") if err := v1alpha2.AddToScheme(mgr.GetScheme()); err != nil { - log.Error(err, "unable to add KFServing v1alpha2 to scheme") + log.Error(err, "unable to add KServe v1alpha2 to scheme") os.Exit(1) } - log.Info("Setting up KFServing v1beta1 scheme") + log.Info("Setting up KServe v1beta1 scheme") if err := v1beta1.AddToScheme(mgr.GetScheme()); err != nil { - log.Error(err, "unable to add KFServing v1beta1 to scheme") + log.Error(err, "unable to add KServe v1beta1 to scheme") os.Exit(1) } - log.Info("Setting up Knative scheme") - if err := knservingv1.AddToScheme(mgr.GetScheme()); err != nil { - log.Error(err, "unable to add Knative APIs to scheme") - os.Exit(1) + client, err := client.New(mgr.GetConfig(), client.Options{Scheme: mgr.GetScheme()}) + if err != nil { + log.Error(err, "unable to create new client.") } - log.Info("Setting up Istio schemes") - if err := v1alpha3.AddToScheme(mgr.GetScheme()); err != nil { - log.Error(err, "unable to add Istio v1alpha3 APIs to scheme") + deployConfig, err := v1beta1.NewDeployConfig(client) + if err != nil { + log.Error(err, "unable to get deploy config.") os.Exit(1) } + if deployConfig.DefaultDeploymentMode == string(constants.Serverless) { + log.Info("Setting up Knative scheme") + if err := knservingv1.AddToScheme(mgr.GetScheme()); err != nil { + log.Error(err, "unable to add Knative APIs to scheme") + os.Exit(1) + } + + log.Info("Setting up Istio schemes") + if err := v1alpha3.AddToScheme(mgr.GetScheme()); err != nil { + log.Error(err, "unable to add Istio v1alpha3 APIs to scheme") + os.Exit(1) + } + } log.Info("Setting up core scheme") if err := v1.AddToScheme(mgr.GetScheme()); err != nil { @@ -132,7 +145,7 @@ func main() { Scheme: mgr.GetScheme(), Recorder: eventBroadcaster.NewRecorder( mgr.GetScheme(), v1.EventSource{Component: "v1beta1Controllers"}), - }).SetupWithManager(mgr); err != nil { + }).SetupWithManager(mgr, deployConfig); err != nil { setupLog.Error(err, "unable to create controller", "v1beta1Controller", "InferenceService") os.Exit(1) } diff --git a/cmd/spec-gen/main.go b/cmd/spec-gen/main.go index 9343ff7b3096..2b48471afee9 100644 --- a/cmd/spec-gen/main.go +++ b/cmd/spec-gen/main.go @@ -1,5 +1,4 @@ /* -Copyright 2019 kubeflow.org. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,7 +22,7 @@ import ( "strings" "github.com/go-openapi/spec" - kfserving "github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1" + kserve "github.com/kserve/kserve/pkg/apis/serving/v1beta1" "k8s.io/klog" "k8s.io/kube-openapi/pkg/common" ) @@ -37,7 +36,7 @@ func main() { if !strings.HasPrefix(version, "v") { version = "v" + version } - oAPIDefs := kfserving.GetOpenAPIDefinitions(func(name string) spec.Ref { + oAPIDefs := kserve.GetOpenAPIDefinitions(func(name string) spec.Ref { return spec.MustCreateRef("#/definitions/" + common.EscapeJsonPointer(swaggify(name))) }) defs := spec.Definitions{} @@ -51,8 +50,8 @@ func main() { Paths: &spec.Paths{Paths: map[string]spec.PathItem{}}, Info: &spec.Info{ InfoProps: spec.InfoProps{ - Title: "KFServing", - Description: "Python SDK for KFServing", + Title: "KServe", + Description: "Python SDK for KServe", Version: version, }, }, @@ -66,7 +65,7 @@ func main() { } func swaggify(name string) string { - name = strings.Replace(name, "github.com/kubeflow/kfserving/pkg/apis/serving/", "", -1) + name = strings.Replace(name, "github.com/kserve/kserve/pkg/apis/serving/", "", -1) name = strings.Replace(name, "./pkg/apis/serving/", "", -1) name = strings.Replace(name, "knative.dev/pkg/apis/duck/v1.", "knative/", -1) name = strings.Replace(name, "knative.dev/pkg/apis.", "knative/", -1) diff --git a/config/certmanager/certificate.yaml b/config/certmanager/certificate.yaml index a5cf5d33a90a..dc3a3566efa0 100644 --- a/config/certmanager/certificate.yaml +++ b/config/certmanager/certificate.yaml @@ -4,7 +4,7 @@ apiVersion: cert-manager.io/v1alpha2 kind: Issuer metadata: name: selfsigned-issuer - namespace: kfserving-system + namespace: kserve spec: selfSigned: {} --- @@ -12,13 +12,13 @@ apiVersion: cert-manager.io/v1alpha2 kind: Certificate metadata: name: serving-cert # this name should match the one appeared in kustomizeconfig.yaml - namespace: kfserving-system + namespace: kserve spec: # $(SERVICE_NAME) and $(SERVICE_NAMESPACE) will be substituted by kustomize - commonName: $(webhookServiceName).$(kfservingNamespace).svc + commonName: $(webhookServiceName).$(kserveNamespace).svc dnsNames: - - $(webhookServiceName).$(kfservingNamespace).svc + - $(webhookServiceName).$(kserveNamespace).svc issuerRef: kind: Issuer name: selfsigned-issuer - secretName: kfserving-webhook-server-cert # this secret will not be prefixed, since it's not managed by kustomize + secretName: kserve-webhook-server-cert # this secret will not be prefixed, since it's not managed by kustomize diff --git a/config/configmap/inferenceservice.yaml b/config/configmap/inferenceservice.yaml index e4a5904419de..f216e77d46e4 100644 --- a/config/configmap/inferenceservice.yaml +++ b/config/configmap/inferenceservice.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: inferenceservice-config - namespace: kfserving-system + namespace: kserve data: predictors: |- { @@ -26,7 +26,7 @@ data: }, "sklearn": { "v1": { - "image": "gcr.io/kfserving/sklearnserver", + "image": "kserve/sklearnserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "sklearn" @@ -44,7 +44,7 @@ data: }, "xgboost": { "v1": { - "image": "gcr.io/kfserving/xgbserver", + "image": "kserve/xgbserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "xgboost" @@ -62,7 +62,7 @@ data: }, "pytorch": { "v1" : { - "image": "gcr.io/kfserving/pytorchserver", + "image": "kserve/pytorchserver", "defaultImageVersion": "latest", "defaultGpuImageVersion": "latest-gpu", "supportedFrameworks": [ @@ -93,7 +93,7 @@ data: "multiModelServer": true }, "pmml": { - "image": "kfserving/pmmlserver", + "image": "kserve/pmmlserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "pmml" @@ -101,7 +101,7 @@ data: "multiModelServer": false }, "lightgbm": { - "image": "kfserving/lgbserver", + "image": "kserve/lgbserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "lightgbm" @@ -109,7 +109,7 @@ data: "multiModelServer": false }, "paddle": { - "image": "kfserving/paddleserver", + "image": "kserve/paddleserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "paddle" @@ -123,21 +123,21 @@ data: explainers: |- { "alibi": { - "image" : "kfserving/alibi-explainer", + "image" : "kserve/alibi-explainer", "defaultImageVersion": "latest" }, "aix": { - "image" : "kfserving/aix-explainer", + "image" : "kserve/aix-explainer", "defaultImageVersion": "latest" }, "art": { - "image" : "kfserving/art-explainer", + "image" : "kserve/art-explainer", "defaultImageVersion": "latest" } } storageInitializer: |- { - "image" : "gcr.io/kfserving/storage-initializer:latest", + "image" : "kserve/storage-initializer:latest", "memoryRequest": "100Mi", "memoryLimit": "1Gi", "cpuRequest": "100m", @@ -163,7 +163,7 @@ data: } logger: |- { - "image" : "kfserving/agent:latest", + "image" : "kserve/agent:latest", "memoryRequest": "100Mi", "memoryLimit": "1Gi", "cpuRequest": "100m", @@ -172,7 +172,7 @@ data: } batcher: |- { - "image" : "kfserving/agent:latest", + "image" : "kserve/agent:latest", "memoryRequest": "1Gi", "memoryLimit": "1Gi", "cpuRequest": "1", @@ -180,9 +180,13 @@ data: } agent: |- { - "image" : "kfserving/agent:latest", + "image" : "kserve/agent:latest", "memoryRequest": "100Mi", "memoryLimit": "1Gi", "cpuRequest": "100m", "cpuLimit": "1" } + deploy: |- + { + "defaultDeploymentMode": "Serverless" + } \ No newline at end of file diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index 2247b61d6a54..22037f4c1358 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -8,8 +8,8 @@ # YAML string, with resources separated by document # markers ("---"). resources: -- serving.kubeflow.org_inferenceservices.yaml -- serving.kubeflow.org_trainedmodels.yaml +- serving.kserve.io_inferenceservices.yaml +- serving.kserve.io_trainedmodels.yaml patchesJson6902: # Fix for https://github.com/kubernetes/kubernetes/issues/91395 @@ -17,5 +17,5 @@ patchesJson6902: group: apiextensions.k8s.io version: v1beta1 kind: CustomResourceDefinition - name: inferenceservices.serving.kubeflow.org + name: inferenceservices.serving.kserve.io path: patches/protocol.yaml diff --git a/config/crd/serving.kserve.io_inferenceservices.yaml b/config/crd/serving.kserve.io_inferenceservices.yaml new file mode 100644 index 000000000000..0f2e132cfd69 --- /dev/null +++ b/config/crd/serving.kserve.io_inferenceservices.yaml @@ -0,0 +1,15983 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.3.1-0.20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: inferenceservices.serving.kserve.io +spec: + group: serving.kserve.io + names: + kind: InferenceService + listKind: InferenceServiceList + plural: inferenceservices + shortNames: + - isvc + singular: inferenceservice + scope: Namespaced + subresources: + status: {} + version: v1alpha2 + versions: + - additionalPrinterColumns: + - JSONPath: .status.url + name: URL + type: string + - JSONPath: .status.conditions[?(@.type=='Ready')].status + name: Ready + type: string + - JSONPath: .status.traffic + name: Default Traffic + type: integer + - JSONPath: .status.canaryTraffic + name: Canary Traffic + type: integer + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha2 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + canary: + properties: + explainer: + properties: + aix: + properties: + config: + additionalProperties: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + alibi: + properties: + config: + additionalProperties: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + predictor: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + lightgbm: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + onnx: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + parallelism: + type: integer + pmml: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + pytorch: + properties: + modelClassName: + type: string + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + serviceAccountName: + type: string + sklearn: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + tensorflow: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + triton: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + xgboost: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + type: object + transformer: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + required: + - predictor + type: object + canaryTrafficPercent: + type: integer + default: + properties: + explainer: + properties: + aix: + properties: + config: + additionalProperties: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + alibi: + properties: + config: + additionalProperties: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + predictor: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + lightgbm: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + onnx: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + parallelism: + type: integer + pmml: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + pytorch: + properties: + modelClassName: + type: string + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + serviceAccountName: + type: string + sklearn: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + tensorflow: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + triton: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + xgboost: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + type: object + transformer: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + required: + - predictor + type: object + required: + - default + type: object + status: + properties: + address: + properties: + url: + type: string + type: object + annotations: + additionalProperties: + type: string + type: object + canary: + additionalProperties: + properties: + host: + type: string + name: + type: string + type: object + type: object + canaryTraffic: + type: integer + conditions: + items: + properties: + lastTransitionTime: + type: string + message: + type: string + reason: + type: string + severity: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + default: + additionalProperties: + properties: + host: + type: string + name: + type: string + type: object + type: object + observedGeneration: + format: int64 + type: integer + traffic: + type: integer + url: + type: string + type: object + type: object + served: true + storage: false + - additionalPrinterColumns: + - JSONPath: .status.url + name: URL + type: string + - JSONPath: .status.conditions[?(@.type=='Ready')].status + name: Ready + type: string + - JSONPath: .status.components.predictor.traffic[?(@.tag=='prev')].percent + name: Prev + type: integer + - JSONPath: .status.components.predictor.traffic[?(@.latestRevision==true)].percent + name: Latest + type: integer + - JSONPath: .status.components.predictor.traffic[?(@.tag=='prev')].revisionName + name: PrevRolledoutRevision + type: string + - JSONPath: .status.components.predictor.traffic[?(@.latestRevision==true)].revisionName + name: LatestReadyRevision + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + explainer: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + aix: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + type: + type: string + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + alibi: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + type: + type: string + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + art: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + type: + type: string + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + automountServiceAccountToken: + type: boolean + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + canaryTrafficPercent: + format: int64 + type: integer + containerConcurrency: + format: int64 + type: integer + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array + type: object + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + logger: + properties: + mode: + enum: + - all + - request + - response + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + shareProcessNamespace: + type: boolean + subdomain: + type: string + terminationGracePeriodSeconds: + format: int64 + type: integer + timeout: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + readOnly: + type: boolean + volumeClaimTemplate: + properties: + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + predictor: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + canaryTrafficPercent: + format: int64 + type: integer + containerConcurrency: + format: int64 + type: integer + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array + type: object + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + lightgbm: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + logger: + properties: + mode: + enum: + - all + - request + - response + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + onnx: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + paddle: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + pmml: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + pytorch: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + modelClassName: + type: string + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + shareProcessNamespace: + type: boolean + sklearn: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + subdomain: + type: string + tensorflow: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeout: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + triton: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + readOnly: + type: boolean + volumeClaimTemplate: + properties: + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + xgboost: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + type: object + type: object + transformer: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + canaryTrafficPercent: + format: int64 + type: integer + containerConcurrency: + format: int64 + type: integer + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array + type: object + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + logger: + properties: + mode: + enum: + - all + - request + - response + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + shareProcessNamespace: + type: boolean + subdomain: + type: string + terminationGracePeriodSeconds: + format: int64 + type: integer + timeout: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + readOnly: + type: boolean + volumeClaimTemplate: + properties: + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: + properties: + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + required: + - predictor + type: object + status: + properties: + address: + properties: + url: + type: string + type: object + annotations: + additionalProperties: + type: string + type: object + components: + additionalProperties: + properties: + address: + properties: + url: + type: string + type: object + latestCreatedRevision: + type: string + latestReadyRevision: + type: string + latestRolledoutRevision: + type: string + previousRolledoutRevision: + type: string + traffic: + items: + properties: + configurationName: + type: string + latestRevision: + type: boolean + percent: + format: int64 + type: integer + revisionName: + type: string + tag: + type: string + url: + type: string + type: object + type: array + url: + type: string + type: object + type: object + conditions: + items: + properties: + lastTransitionTime: + type: string + message: + type: string + reason: + type: string + severity: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + observedGeneration: + format: int64 + type: integer + url: + type: string + type: object + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/config/crd/serving.kserve.io_trainedmodels.yaml b/config/crd/serving.kserve.io_trainedmodels.yaml new file mode 100644 index 000000000000..7262979d1d7d --- /dev/null +++ b/config/crd/serving.kserve.io_trainedmodels.yaml @@ -0,0 +1,114 @@ + +--- +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.3.1-0.20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: trainedmodels.serving.kserve.io +spec: + additionalPrinterColumns: + - JSONPath: .status.url + name: URL + type: string + - JSONPath: .status.conditions[?(@.type=='Ready')].status + name: Ready + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: serving.kserve.io + names: + kind: TrainedModel + listKind: TrainedModelList + plural: trainedmodels + shortNames: + - tm + singular: trainedmodel + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + inferenceService: + type: string + model: + properties: + framework: + type: string + memory: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageUri: + type: string + required: + - framework + - memory + - storageUri + type: object + required: + - inferenceService + - model + type: object + status: + properties: + address: + properties: + url: + type: string + type: object + annotations: + additionalProperties: + type: string + type: object + conditions: + items: + properties: + lastTransitionTime: + type: string + message: + type: string + reason: + type: string + severity: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + observedGeneration: + format: int64 + type: integer + url: + type: string + type: object + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/config/crd/serving.kubeflow.org_inferenceservices.yaml b/config/crd/serving.kubeflow.org_inferenceservices.yaml index 2ce8b0dec70c..726a5e68c093 100644 --- a/config/crd/serving.kubeflow.org_inferenceservices.yaml +++ b/config/crd/serving.kubeflow.org_inferenceservices.yaml @@ -1,3 +1,5 @@ + +--- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: @@ -12,5552 +14,6146 @@ spec: listKind: InferenceServiceList plural: inferenceservices shortNames: - - isvc + - isvc singular: inferenceservice scope: Namespaced subresources: status: {} version: v1alpha2 versions: - - additionalPrinterColumns: - - JSONPath: .status.url - name: URL - type: string - - JSONPath: .status.conditions[?(@.type=='Ready')].status - name: Ready - type: string - - JSONPath: .status.traffic - name: Default Traffic - type: integer - - JSONPath: .status.canaryTraffic - name: Canary Traffic - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha2 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - canary: - properties: - explainer: - properties: - aix: - properties: - config: - additionalProperties: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - type: - type: string - required: - - type - type: object - alibi: - properties: - config: - additionalProperties: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: + - additionalPrinterColumns: + - JSONPath: .status.url + name: URL + type: string + - JSONPath: .status.conditions[?(@.type=='Ready')].status + name: Ready + type: string + - JSONPath: .status.traffic + name: Default Traffic + type: integer + - JSONPath: .status.canaryTraffic + name: Canary Traffic + type: integer + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha2 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + canary: + properties: + explainer: + properties: + aix: + properties: + config: + additionalProperties: type: string - type: + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + alibi: + properties: + config: + additionalProperties: type: string - required: - - type - type: object - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - custom: - properties: - container: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort + type: object type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name + command: + items: + type: string + type: array type: object - type: array - volumeMounts: - items: + failureThreshold: + format: int32 + type: integer + httpGet: properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - required: - - name - type: object - required: - - container - type: object - logger: - properties: - mode: - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - parallelism: - type: integer - serviceAccountName: - type: string - type: object - predictor: - properties: - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - custom: - properties: - container: - properties: - args: - items: - type: string - type: array - command: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: type: string - type: array - env: - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - name: + level: type: string - value: + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - type type: object - type: array - envFrom: - items: + windowsOptions: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string - required: - - port - type: object - tcpSocket: - properties: - host: + value: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port + - name + - value type: object - type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - livenessProbe: + type: array + volumeMounts: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name type: object - name: + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + predictor: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: + type: array + command: + items: + type: string + type: array + env: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: + name: + type: string + value: + type: string + valueFrom: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object + required: + - name type: object - securityContext: + type: array + envFrom: + items: properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + configMapRef: properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: + name: type: string - required: - - type + optional: + type: boolean type: object - windowsOptions: + prefix: + type: string + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string + optional: + type: boolean type: object type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - devicePath: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - devicePath - - name + - port type: object - type: array - volumeMounts: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - mountPath: + host: type: string - mountPropagation: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - readOnly: - type: boolean - subPath: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - subPathExpr: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - required: - - name - type: object - required: - - container - type: object - lightgbm: - properties: - nthread: - type: integer - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - logger: - properties: - mode: - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - onnx: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - parallelism: - type: integer - pmml: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - pytorch: - properties: - modelClassName: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - serviceAccountName: - type: string - sklearn: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - tensorflow: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - triton: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - xgboost: - properties: - nthread: - type: integer - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - type: object - transformer: - properties: - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - custom: - properties: - container: - properties: - args: - items: - type: string - type: array - command: - items: + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: type: string - type: array - env: - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - name: + level: type: string - value: + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - type type: object - type: array - envFrom: - items: + windowsOptions: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string - required: - - port - type: object - tcpSocket: - properties: - host: + value: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port + - name + - value type: object - type: object - type: object - livenessProbe: + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - exec: - properties: - command: - items: - type: string - type: array + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + lightgbm: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + onnx: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + parallelism: + type: integer + pmml: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + pytorch: + properties: + modelClassName: + type: string + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + serviceAccountName: + type: string + sklearn: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + tensorflow: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + triton: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + xgboost: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + type: object + transformer: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort + type: object type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name + command: + items: + type: string + type: array type: object - type: array - volumeMounts: - items: + failureThreshold: + format: int32 + type: integer + httpGet: properties: - mountPath: - type: string - mountPropagation: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - readOnly: - type: boolean - subPath: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - subPathExpr: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - required: - - name - type: object - required: - - container - type: object - logger: - properties: - mode: - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - parallelism: - type: integer - serviceAccountName: - type: string - type: object - required: - - predictor - type: object - canaryTrafficPercent: - type: integer - default: - properties: - explainer: - properties: - aix: - properties: - config: - additionalProperties: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - type: - type: string - required: - - type - type: object - alibi: - properties: - config: - additionalProperties: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - type: - type: string - required: - - type - type: object - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - custom: - properties: - container: - properties: - args: - items: - type: string - type: array - command: - items: + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: type: string - type: array - env: - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - name: + level: type: string - value: + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + required: + - predictor + type: object + canaryTrafficPercent: + type: integer + default: + properties: + explainer: + properties: + aix: + properties: + config: + additionalProperties: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + alibi: + properties: + config: + additionalProperties: + type: string + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + type: + type: string + required: + - type + type: object + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: + type: object + type: object + type: object + livenessProbe: + properties: + exec: properties: - containerPort: - format: int32 - type: integer - hostIP: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - hostPort: - format: int32 - type: integer - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - protocol: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - containerPort + - port type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: + containerPort: format: int32 type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - resources: - properties: - limits: - additionalProperties: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + type: array + drop: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - devicePath: + level: type: string - name: + role: + type: string + type: + type: string + user: type: string - required: - - devicePath - - name type: object - type: array - volumeMounts: - items: + seccompProfile: properties: - mountPath: + localhostProfile: type: string - mountPropagation: + type: type: string - name: + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: type: string - readOnly: - type: boolean - subPath: + gmsaCredentialSpecName: type: string - subPathExpr: + runAsUserName: type: string - required: - - mountPath - - name type: object - type: array - workingDir: - type: string - required: - - name - type: object - required: - - container - type: object - logger: - properties: - mode: - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - parallelism: - type: integer - serviceAccountName: - type: string - type: object - predictor: - properties: - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - custom: - properties: - container: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: + type: object + startupProbe: + properties: + exec: properties: - name: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - value: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + predictor: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort + type: object type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name + command: + items: + type: string + type: array type: object - type: array - volumeMounts: - items: + failureThreshold: + format: int32 + type: integer + httpGet: properties: - mountPath: - type: string - mountPropagation: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - readOnly: - type: boolean - subPath: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - subPathExpr: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - required: - - name - type: object - required: - - container - type: object - lightgbm: - properties: - nthread: - type: integer - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - logger: - properties: - mode: - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - onnx: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - parallelism: - type: integer - pmml: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - pytorch: - properties: - modelClassName: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - serviceAccountName: - type: string - sklearn: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - tensorflow: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - triton: - properties: - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - xgboost: - properties: - nthread: - type: integer - resources: - properties: - limits: - additionalProperties: - anyOf: + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - storageUri: - type: string - required: - - storageUri - type: object - type: object - transformer: - properties: - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - custom: - properties: - container: - properties: - args: - items: - type: string - type: array - command: - items: + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: type: string - type: array - env: - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - name: + level: type: string - value: + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - type type: object - type: array - envFrom: - items: + windowsOptions: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object type: object - type: array - image: + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + lightgbm: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + onnx: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + parallelism: + type: integer + pmml: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + pytorch: + properties: + modelClassName: + type: string + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + serviceAccountName: + type: string + sklearn: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + tensorflow: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + triton: + properties: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + xgboost: + properties: + nthread: + type: integer + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + storageUri: + type: string + required: + - storageUri + type: object + type: object + transformer: + properties: + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + custom: + properties: + container: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + key: type: string - required: - - port - type: object - tcpSocket: - properties: - host: + name: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + optional: + type: boolean required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - key type: object - httpGet: + fieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + apiVersion: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + fieldPath: type: string required: - - port + - fieldPath type: object - tcpSocket: + resourceFieldRef: properties: - host: + containerName: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object + required: + - name type: object - securityContext: + type: array + envFrom: + items: properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: + configMapRef: properties: - localhostProfile: - type: string - type: + name: type: string - required: - - type + optional: + type: boolean type: object - windowsOptions: + prefix: + type: string + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string + optional: + type: boolean type: object type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name + type: object type: object - type: array - volumeMounts: - items: + preStop: properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object type: object - type: array - workingDir: - type: string - required: - - name - type: object - required: - - container - type: object - logger: - properties: - mode: - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - parallelism: - type: integer - serviceAccountName: - type: string - type: object - required: - - predictor - type: object - required: - - default - type: object - status: - properties: - address: - properties: - url: - type: string - type: object - annotations: - additionalProperties: - type: string - type: object - canary: - additionalProperties: - properties: - host: - type: string - name: - type: string - type: object - type: object - canaryTraffic: - type: integer - conditions: - items: - properties: - lastTransitionTime: - type: string - message: - type: string - reason: - type: string - severity: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - default: - additionalProperties: - properties: - host: - type: string - name: - type: string - type: object - type: object - observedGeneration: - format: int64 - type: integer - traffic: - type: integer - url: - type: string - type: object - type: object - served: true - storage: false - - additionalPrinterColumns: - - JSONPath: .status.url - name: URL - type: string - - JSONPath: .status.conditions[?(@.type=='Ready')].status - name: Ready - type: string - - JSONPath: .status.components.predictor.traffic[?(@.tag=='prev')].percent - name: Prev - type: integer - - JSONPath: .status.components.predictor.traffic[?(@.latestRevision==true)].percent - name: Latest - type: integer - - JSONPath: .status.components.predictor.traffic[?(@.tag=='prev')].revisionName - name: PrevRolledoutRevision - type: string - - JSONPath: .status.components.predictor.traffic[?(@.latestRevision==true)].revisionName - name: LatestReadyRevision - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - explainer: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + type: object + livenessProbe: properties: - preference: + exec: properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: + command: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array type: object - weight: + failureThreshold: format: int32 type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + httpGet: properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - topologyKey + - port type: object - weight: + timeoutSeconds: format: int32 type: integer - required: - - podAffinityTerm - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: properties: - labelSelector: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - matchExpressions: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array - matchLabels: - additionalProperties: - type: string - type: object + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - topologyKey + - port type: object - weight: + timeoutSeconds: format: int32 type: integer - required: - - podAffinityTerm - - weight type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: properties: - labelSelector: + allowPrivilegeEscalation: + type: boolean + capabilities: properties: - matchExpressions: + add: items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object + type: string type: array - matchLabels: - additionalProperties: + drop: + items: type: string - type: object + type: array type: object - namespaces: - items: - type: string - type: array - topologyKey: + privileged: + type: boolean + procMount: type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - aix: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - config: - additionalProperties: - type: string - type: object - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - key: + level: type: string - name: + role: + type: string + type: + type: string + user: type: string - optional: - type: boolean - required: - - key type: object - fieldRef: + seccompProfile: properties: - apiVersion: + localhostProfile: type: string - fieldPath: + type: type: string required: - - fieldPath + - type type: object - resourceFieldRef: + windowsOptions: properties: - containerName: + gmsaCredentialSpec: type: string - divisor: + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - resource: + scheme: type: string required: - - resource + - port type: object - secretKeyRef: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - key: - type: string - name: + host: type: string - optional: - type: boolean + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - key + - port type: object + timeoutSeconds: + format: int32 + type: integer type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + devicePath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string required: - - port + - devicePath + - name type: object - tcpSocket: + type: array + volumeMounts: + items: properties: - host: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port + - mountPath + - name type: object - type: object - preStop: + type: array + workingDir: + type: string + required: + - name + type: object + required: + - container + type: object + logger: + properties: + mode: + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + parallelism: + type: integer + serviceAccountName: + type: string + type: object + required: + - predictor + type: object + required: + - default + type: object + status: + properties: + address: + properties: + url: + type: Any + type: object + annotations: + additionalProperties: + type: string + type: object + canary: + additionalProperties: + properties: + host: + type: string + name: + type: string + type: object + type: object + canaryTraffic: + type: integer + conditions: + items: + properties: + lastTransitionTime: + type: Any + message: + type: string + reason: + type: string + severity: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + default: + additionalProperties: + properties: + host: + type: string + name: + type: string + type: object + type: object + observedGeneration: + format: int64 + type: integer + traffic: + type: integer + url: + type: string + type: object + type: object + served: true + storage: false + - additionalPrinterColumns: + - JSONPath: .status.url + name: URL + type: string + - JSONPath: .status.conditions[?(@.type=='Ready')].status + name: Ready + type: string + - JSONPath: .status.components.predictor.traffic[?(@.tag=='prev')].percent + name: Prev + type: integer + - JSONPath: .status.components.predictor.traffic[?(@.latestRevision==true)].percent + name: Latest + type: integer + - JSONPath: .status.components.predictor.traffic[?(@.tag=='prev')].revisionName + name: PrevRolledoutRevision + type: string + - JSONPath: .status.components.predictor.traffic[?(@.latestRevision==true)].revisionName + name: LatestReadyRevision + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + explainer: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - exec: + preference: properties: - command: + matchExpressions: items: - type: string + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: + matchFields: items: properties: - name: + key: type: string - value: + operator: type: string + values: + items: + type: string + type: array required: - - name - - value + - key + - operator type: object type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port type: object + weight: + format: int32 + type: integer + required: + - preference + - weight type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: + type: array + requiredDuringSchedulingIgnoredDuringExecution: properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array required: - - containerPort + - nodeSelectorTerms type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight type: object - type: object - runtimeVersion: - type: string - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: properties: - add: - items: - type: string - type: array - drop: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: items: type: string type: array + topologyKey: + type: string + required: + - topologyKey type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight type: object - seccompProfile: + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: properties: - localhostProfile: - type: string - type: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: type: string required: - - type + - topologyKey type: object - windowsOptions: + type: array + type: object + type: object + aix: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object + required: + - name type: object - startupProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - type: - type: string - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: properties: - devicePath: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - devicePath - - name + - port type: object - type: array - volumeMounts: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - mountPath: + host: type: string - mountPropagation: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: type: string - name: + role: type: string - readOnly: - type: boolean - subPath: + type: type: string - subPathExpr: + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string required: - - mountPath - - name + - type type: object - type: array - workingDir: - type: string - type: object - alibi: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - config: - additionalProperties: - type: string - type: object - env: - items: + windowsOptions: properties: - name: + gmsaCredentialSpec: type: string - value: + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + type: + type: string + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + - type + type: object + alibi: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + config: + additionalProperties: + type: string + type: object + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - containerPort: - format: int32 - type: integer - hostIP: + host: type: string - hostPort: - format: int32 - type: integer - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - protocol: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - containerPort + - port type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: + containerPort: format: int32 type: integer - httpGet: - properties: - host: + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + type: array + drop: + items: type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + type: + type: string + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - runtimeVersion: - type: string - securityContext: + type: array + volumeMounts: + items: properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: + mountPath: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: + mountPropagation: + type: string + name: + type: string + readOnly: type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + - type + type: object + art: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + config: + additionalProperties: + type: string + type: object + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object - seccompProfile: + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: properties: - localhostProfile: - type: string - type: + name: type: string - required: - - type + optional: + type: boolean type: object - windowsOptions: + prefix: + type: string + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string + optional: + type: boolean type: object type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - type: - type: string - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: properties: - devicePath: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - devicePath - - name + - port type: object - type: array - volumeMounts: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - mountPath: + host: type: string - mountPropagation: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: type: string - name: + role: type: string - readOnly: - type: boolean - subPath: + type: type: string - subPathExpr: + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string required: - - mountPath - - name + - type type: object - type: array - workingDir: - type: string - type: object - art: + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + type: + type: string + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + - type + type: object + automountServiceAccountToken: + type: boolean + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + canaryTrafficPercent: + format: int64 + type: integer + containerConcurrency: + format: int64 + type: integer + containers: + items: properties: args: items: @@ -5567,10 +6163,6 @@ spec: items: type: string type: array - config: - additionalProperties: - type: string - type: object env: items: properties: @@ -5589,7 +6181,7 @@ spec: optional: type: boolean required: - - key + - key type: object fieldRef: properties: @@ -5598,7 +6190,7 @@ spec: fieldPath: type: string required: - - fieldPath + - fieldPath type: object resourceFieldRef: properties: @@ -5606,14 +6198,14 @@ spec: type: string divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: type: string required: - - resource + - resource type: object secretKeyRef: properties: @@ -5624,11 +6216,11 @@ spec: optional: type: boolean required: - - key + - key type: object type: object required: - - name + - name type: object type: array envFrom: @@ -5679,21 +6271,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -5701,11 +6293,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object preStop: @@ -5729,21 +6321,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -5751,11 +6343,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object type: object @@ -5783,19 +6375,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -5812,9 +6406,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -5838,12 +6434,12 @@ spec: protocol: type: string required: - - containerPort + - containerPort type: object type: array x-kubernetes-list-map-keys: - - containerPort - - protocol + - containerPort + - protocol x-kubernetes-list-type: map readinessProbe: properties: @@ -5869,19 +6465,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -5898,9 +6496,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -5911,22 +6511,20 @@ spec: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object type: object - runtimeVersion: - type: string securityContext: properties: allowPrivilegeEscalation: @@ -5974,7 +6572,7 @@ spec: type: type: string required: - - type + - type type: object windowsOptions: properties: @@ -6010,21 +6608,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object initialDelaySeconds: format: int32 @@ -6041,11 +6639,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object timeoutSeconds: format: int32 @@ -6055,16 +6653,12 @@ spec: type: boolean stdinOnce: type: boolean - storageUri: - type: string terminationMessagePath: type: string terminationMessagePolicy: type: string tty: type: boolean - type: - type: string volumeDevices: items: properties: @@ -6073,8 +6667,8 @@ spec: name: type: string required: - - devicePath - - name + - devicePath + - name type: object type: array volumeMounts: @@ -6093,2358 +6687,2302 @@ spec: subPathExpr: type: string required: - - mountPath - - name + - mountPath + - name type: object type: array workingDir: type: string + required: + - name type: object - automountServiceAccountToken: - type: boolean - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - canaryTrafficPercent: - format: int64 - type: integer - containerConcurrency: - format: int64 - type: integer - containers: - items: - properties: - args: - items: + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: type: string - type: array - command: - items: + value: type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: + type: object + type: array + searches: + items: + type: string + type: array + type: object + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + ephemeralContainers: + items: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: + prefix: + type: string + secretRef: properties: - host: + name: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port + optional: + type: boolean type: object - timeoutSeconds: - format: int32 - type: integer type: object - name: - type: string - ports: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: object + type: object + type: object + livenessProbe: + properties: + exec: properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name + command: + items: + type: string + type: array type: object - type: array - volumeMounts: - items: + failureThreshold: + format: int32 + type: integer + httpGet: properties: - mountPath: - type: string - mountPropagation: - type: string - name: + host: type: string - readOnly: - type: boolean - subPath: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - subPathExpr: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - logger: - properties: - mode: - enum: - - all - - request - - response - type: string - url: - type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - overhead: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType - type: object - type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - timeout: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - topologySpreadConstraints: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string - type: object - type: object - maxSkew: - format: int32 - type: integer - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - x-kubernetes-list-map-keys: - - topologyKey - - whenUnsatisfiable - x-kubernetes-list-type: map - volumes: - items: - properties: - awsElasticBlockStore: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - fsType: - type: string - partition: + containerPort: format: int32 type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: + hostIP: type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: + hostPort: format: int32 type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array name: type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: + protocol: type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array + - containerPort type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - type: object - ephemeral: - properties: - readOnly: - type: boolean - volumeClaimTemplate: - properties: - metadata: - type: object - spec: + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: + name: type: string - volumeName: + value: type: string + required: + - name + - value type: object - required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: + type: array + path: type: string - type: array - wwids: - items: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - type: array - type: object - flexVolume: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + targetContainerName: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - driver: + devicePath: type: string - fsType: + name: type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object required: - - driver + - devicePath + - name type: object - flocker: + type: array + volumeMounts: + items: properties: - datasetName: - type: string - datasetUUID: + mountPath: type: string - type: object - gcePersistentDisk: - properties: - fsType: + mountPropagation: type: string - partition: - format: int32 - type: integer - pdName: + name: type: string readOnly: type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: + subPath: type: string - path: + subPathExpr: type: string - readOnly: - type: boolean required: - - endpoints - - path + - mountPath + - name type: object - hostPath: + type: array + workingDir: + type: string + required: + - name + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + initContainers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: properties: - path: + name: type: string - type: + value: type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object required: - - path + - name type: object - iscsi: + type: array + envFrom: + items: properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string secretRef: properties: name: type: string + optional: + type: boolean type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object + command: + items: + type: string + type: array type: object - type: array - required: - - sources - type: object - quobyte: + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: + containerPort: + format: int32 + type: integer + hostIP: type: string - user: + hostPort: + format: int32 + type: integer + name: type: string - volume: + protocol: type: string required: - - registry - - volume + - containerPort type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: + type: array + drop: + items: type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: type: string - volumeName: + name: type: string required: - - gateway - - secretRef - - system + - devicePath + - name type: object - secret: + type: array + volumeMounts: + items: properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: + mountPath: type: string - type: object - storageos: - properties: - fsType: + mountPropagation: + type: string + name: type: string readOnly: type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: + subPath: type: string - volumePath: + subPathExpr: type: string required: - - volumePath + - mountPath + - name type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + logger: + properties: + mode: + enum: + - all + - request + - response + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string type: object - type: array - type: object - predictor: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + shareProcessNamespace: + type: boolean + subdomain: + type: string + terminationGracePeriodSeconds: + format: int64 + type: integer + timeout: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: properties: - nodeAffinity: + labelSelector: properties: - preferredDuringSchedulingIgnoredDuringExecution: + matchExpressions: items: properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer + key: + type: string + operator: + type: string + values: + items: + type: string + type: array required: - - preference - - weight + - key + - operator type: object type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms + matchLabels: + additionalProperties: + type: string type: object type: object - podAffinity: + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: properties: - preferredDuringSchedulingIgnoredDuringExecution: + monitors: items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object + type: string type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: type: string required: - - topologyKey + - key + - path type: object type: array + name: + type: string + optional: + type: boolean + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver type: object - podAntiAffinity: + downwardAPI: properties: - preferredDuringSchedulingIgnoredDuringExecution: + defaultMode: + format: int32 + type: integer + items: items: properties: - podAffinityTerm: + fieldRef: properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: + apiVersion: + type: string + fieldPath: type: string required: - - topologyKey + - fieldPath type: object - weight: + mode: format: int32 type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: + path: + type: string + resourceFieldRef: properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string required: - - topologyKey + - path type: object type: array type: object - type: object - automountServiceAccountToken: - type: boolean - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - canaryTrafficPercent: - format: int64 - type: integer - containerConcurrency: - format: int64 - type: integer - containers: - items: - properties: - args: - items: - type: string - type: array - command: - items: + emptyDir: + properties: + medium: type: string - type: array - env: - items: + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + readOnly: + type: boolean + volumeClaimTemplate: properties: - name: - type: string - value: - type: string - valueFrom: + metadata: + type: object + spec: properties: - configMapKeyRef: + accessModes: + items: + type: string + type: array + dataSource: properties: - key: - type: string - name: + apiGroup: type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: + kind: type: string - fieldPath: + name: type: string required: - - fieldPath + - kind + - name type: object - resourceFieldRef: + resources: properties: - containerName: - type: string - divisor: - anyOf: + limits: + additionalProperties: + anyOf: - type: integer - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object type: object - secretKeyRef: + selector: properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string type: object required: - - name + - spec type: object - type: array - envFrom: - items: + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: + type: string + type: object + readOnly: + type: boolean + secretRef: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + name: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMap: properties: - host: - type: string - httpHeaders: + items: items: properties: - name: + key: type: string - value: + mode: + format: int32 + type: integer + path: type: string required: - - name - - value + - key + - path type: object type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: + name: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + optional: + type: boolean type: object - httpGet: + downwardAPI: properties: - host: - type: string - httpHeaders: + items: items: properties: - name: - type: string - value: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object type: object - privileged: - type: boolean - procMount: + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: properties: - host: + key: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array + mode: + format: int32 + type: integer path: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port + - key + - path type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: properties: - devicePath: - type: string name: type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + predictor: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer required: - - devicePath - - name + - podAffinityTerm + - weight type: object type: array - volumeMounts: + requiredDuringSchedulingIgnoredDuringExecution: items: properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: type: string required: - - mountPath - - name + - topologyKey type: object type: array - workingDir: - type: string - required: - - name type: object - type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - hostAliases: - items: + podAntiAffinity: properties: - hostnames: + preferredDuringSchedulingIgnoredDuringExecution: items: - type: string + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string type: object - type: array - lightgbm: + type: object + automountServiceAccountToken: + type: boolean + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + canaryTrafficPercent: + format: int64 + type: integer + containerConcurrency: + format: int64 + type: integer + containers: + items: properties: args: items: @@ -8472,7 +9010,7 @@ spec: optional: type: boolean required: - - key + - key type: object fieldRef: properties: @@ -8481,7 +9019,7 @@ spec: fieldPath: type: string required: - - fieldPath + - fieldPath type: object resourceFieldRef: properties: @@ -8489,14 +9027,14 @@ spec: type: string divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: type: string required: - - resource + - resource type: object secretKeyRef: properties: @@ -8507,11 +9045,11 @@ spec: optional: type: boolean required: - - key + - key type: object type: object required: - - name + - name type: object type: array envFrom: @@ -8562,21 +9100,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -8584,11 +9122,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object preStop: @@ -8612,21 +9150,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -8634,11 +9172,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object type: object @@ -8666,19 +9204,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -8695,9 +9235,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -8721,15 +9263,13 @@ spec: protocol: type: string required: - - containerPort + - containerPort type: object type: array x-kubernetes-list-map-keys: - - containerPort - - protocol + - containerPort + - protocol x-kubernetes-list-type: map - protocolVersion: - type: string readinessProbe: properties: exec: @@ -8754,19 +9294,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -8783,9 +9325,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -8796,22 +9340,20 @@ spec: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object type: object - runtimeVersion: - type: string securityContext: properties: allowPrivilegeEscalation: @@ -8859,7 +9401,7 @@ spec: type: type: string required: - - type + - type type: object windowsOptions: properties: @@ -8895,21 +9437,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object initialDelaySeconds: format: int32 @@ -8926,11 +9468,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object timeoutSeconds: format: int32 @@ -8940,8 +9482,6 @@ spec: type: boolean stdinOnce: type: boolean - storageUri: - type: string terminationMessagePath: type: string terminationMessagePolicy: @@ -8956,8 +9496,8 @@ spec: name: type: string required: - - devicePath - - name + - devicePath + - name type: object type: array volumeMounts: @@ -8976,35 +9516,42 @@ spec: subPathExpr: type: string required: - - mountPath - - name + - mountPath + - name type: object type: array workingDir: type: string + required: + - name type: object - logger: - properties: - mode: - enum: - - all - - request - - response + type: array + dnsConfig: + properties: + nameservers: + items: type: string - url: + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: type: string - type: object - maxReplicas: - type: integer - minReplicas: - type: integer - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - onnx: + type: array + type: object + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + ephemeralContainers: + items: properties: args: items: @@ -9032,7 +9579,7 @@ spec: optional: type: boolean required: - - key + - key type: object fieldRef: properties: @@ -9041,7 +9588,7 @@ spec: fieldPath: type: string required: - - fieldPath + - fieldPath type: object resourceFieldRef: properties: @@ -9049,14 +9596,14 @@ spec: type: string divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: type: string required: - - resource + - resource type: object secretKeyRef: properties: @@ -9067,11 +9614,11 @@ spec: optional: type: boolean required: - - key + - key type: object type: object required: - - name + - name type: object type: array envFrom: @@ -9122,21 +9669,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -9144,11 +9691,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object preStop: @@ -9172,21 +9719,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -9194,11 +9741,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object type: object @@ -9226,19 +9773,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -9255,9 +9804,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -9281,15 +9832,9 @@ spec: protocol: type: string required: - - containerPort + - containerPort type: object type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string readinessProbe: properties: exec: @@ -9314,19 +9859,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -9343,9 +9890,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -9356,22 +9905,20 @@ spec: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object type: object - runtimeVersion: - type: string securityContext: properties: allowPrivilegeEscalation: @@ -9419,7 +9966,7 @@ spec: type: type: string required: - - type + - type type: object windowsOptions: properties: @@ -9455,21 +10002,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object initialDelaySeconds: format: int32 @@ -9486,11 +10033,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object timeoutSeconds: format: int32 @@ -9500,7 +10047,7 @@ spec: type: boolean stdinOnce: type: boolean - storageUri: + targetContainerName: type: string terminationMessagePath: type: string @@ -9516,8 +10063,8 @@ spec: name: type: string required: - - devicePath - - name + - devicePath + - name type: object type: array volumeMounts: @@ -9536,22 +10083,45 @@ spec: subPathExpr: type: string required: - - mountPath - - name + - mountPath + - name type: object type: array workingDir: type: string + required: + - name + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string type: object - overhead: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true + type: array + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: + type: string + imagePullSecrets: + items: + properties: + name: + type: string type: object - paddle: + type: array + initContainers: + items: properties: args: items: @@ -9579,7 +10149,7 @@ spec: optional: type: boolean required: - - key + - key type: object fieldRef: properties: @@ -9588,7 +10158,7 @@ spec: fieldPath: type: string required: - - fieldPath + - fieldPath type: object resourceFieldRef: properties: @@ -9596,14 +10166,14 @@ spec: type: string divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: type: string required: - - resource + - resource type: object secretKeyRef: properties: @@ -9614,11 +10184,11 @@ spec: optional: type: boolean required: - - key + - key type: object type: object required: - - name + - name type: object type: array envFrom: @@ -9669,21 +10239,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -9691,11 +10261,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object preStop: @@ -9719,21 +10289,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object tcpSocket: properties: @@ -9741,11 +10311,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object type: object type: object @@ -9773,19 +10343,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -9802,9 +10374,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -9828,15 +10402,13 @@ spec: protocol: type: string required: - - containerPort + - containerPort type: object type: array x-kubernetes-list-map-keys: - - containerPort - - protocol + - containerPort + - protocol x-kubernetes-list-type: map - protocolVersion: - type: string readinessProbe: properties: exec: @@ -9861,19 +10433,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string + required: + - port type: object initialDelaySeconds: format: int32 @@ -9890,9 +10464,11 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true + required: + - port type: object timeoutSeconds: format: int32 @@ -9903,22 +10479,20 @@ spec: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object type: object - runtimeVersion: - type: string securityContext: properties: allowPrivilegeEscalation: @@ -9966,7 +10540,7 @@ spec: type: type: string required: - - type + - type type: object windowsOptions: properties: @@ -10002,21 +10576,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object initialDelaySeconds: format: int32 @@ -10033,4019 +10607,6352 @@ spec: type: string port: anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - type: object - pmml: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string required: - - name + - devicePath + - name type: object type: array - envFrom: + volumeMounts: items: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + mountPath: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name type: object type: array - image: + workingDir: type: string - imagePullPolicy: + required: + - name + type: object + type: array + lightgbm: + properties: + args: + items: type: string - lifecycle: + type: array + command: + items: + type: string + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: properties: - containerPort: - format: int32 - type: integer - hostIP: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - hostPort: - format: int32 - type: integer - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - protocol: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - containerPort + - port type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string - readinessProbe: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: + containerPort: format: int32 type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - resources: - properties: - limits: - additionalProperties: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - runtimeVersion: - type: string - securityContext: + type: array + volumeMounts: + items: properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: + mountPath: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: + mountPropagation: + type: string + name: + type: string + readOnly: type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + logger: + properties: + mode: + enum: + - all + - request + - response + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + onnx: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object - seccompProfile: + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: properties: - localhostProfile: - type: string - type: + name: type: string - required: - - type + optional: + type: boolean type: object - windowsOptions: + prefix: + type: string + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string + optional: + type: boolean type: object type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: properties: - devicePath: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - devicePath - - name + - port type: object - type: array - volumeMounts: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - mountPath: + host: type: string - mountPropagation: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: type: string - name: + role: type: string - readOnly: - type: boolean - subPath: + type: type: string - subPathExpr: + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string required: - - mountPath - - name + - type type: object - type: array - workingDir: - type: string - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - pytorch: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: + windowsOptions: properties: - name: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - value: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + paddle: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: + configMapKeyRef: properties: - command: - items: - type: string - type: array + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key type: object - httpGet: + fieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + apiVersion: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + fieldPath: type: string required: - - port + - fieldPath type: object - tcpSocket: + resourceFieldRef: properties: - host: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true + resource: + type: string required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - resource type: object - httpGet: + secretKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: - properties: - host: + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - modelClassName: - type: string - name: - type: string - ports: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: properties: - containerPort: - format: int32 - type: integer - hostIP: + gmsaCredentialSpec: type: string - hostPort: - format: int32 - type: integer - name: + gmsaCredentialSpecName: type: string - protocol: + runAsUserName: type: string - required: - - containerPort type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + type: object + startupProbe: + properties: + exec: + properties: + command: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - runtimeVersion: - type: string - securityContext: + type: array + volumeMounts: + items: properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: + mountPath: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: + mountPropagation: + type: string + name: + type: string + readOnly: type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + pmml: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object + required: + - name type: object - startupProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - devicePath: + level: type: string - name: + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string required: - - devicePath - - name + - type type: object - type: array - volumeMounts: - items: + windowsOptions: properties: - mountPath: + gmsaCredentialSpec: type: string - mountPropagation: + gmsaCredentialSpecName: type: string - name: + runAsUserName: type: string - readOnly: - type: boolean - subPath: + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - subPathExpr: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - type: object - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer type: object - type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - level: - type: string - role: + devicePath: type: string - type: - type: string - user: + name: type: string + required: + - devicePath + - name type: object - seccompProfile: + type: array + volumeMounts: + items: properties: - localhostProfile: + mountPath: type: string - type: + mountPropagation: type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: + name: type: string - gmsaCredentialSpecName: + readOnly: + type: boolean + subPath: type: string - runAsUserName: + subPathExpr: type: string + required: + - mountPath + - name type: object - type: object - serviceAccount: - type: string - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - sklearn: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: + type: array + workingDir: + type: string + required: + - name + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + pytorch: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: + configMapRef: properties: - command: - items: - type: string - type: array + name: + type: string + optional: + type: boolean type: object - failureThreshold: - format: int32 - type: integer - httpGet: + prefix: + type: string + secretRef: properties: - host: + name: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + modelClassName: + type: string + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - name: - type: string - ports: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: properties: - containerPort: - format: int32 - type: integer - hostIP: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - hostPort: - format: int32 - type: integer - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - protocol: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - containerPort + - port type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + type: array + drop: + items: type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - resources: + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object + name: + type: string + value: + type: string + required: + - name + - value type: object - runtimeVersion: + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + shareProcessNamespace: + type: boolean + sklearn: + properties: + args: + items: type: string - securityContext: + type: array + command: + items: + type: string + type: array + env: + items: properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: + name: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + value: + type: string + valueFrom: properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object - seccompProfile: + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: properties: - localhostProfile: - type: string - type: + name: type: string - required: - - type + optional: + type: boolean type: object - windowsOptions: + prefix: + type: string + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string + optional: + type: boolean type: object type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - timeoutSeconds: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: format: int32 type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: properties: - devicePath: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - devicePath - - name + - port type: object - type: array - volumeMounts: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - mountPath: + host: type: string - mountPropagation: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: type: string - name: + role: type: string - readOnly: - type: boolean - subPath: + type: type: string - subPathExpr: + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string required: - - mountPath - - name + - type type: object - type: array - workingDir: - type: string - type: object - subdomain: - type: string - tensorflow: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: + windowsOptions: properties: - name: + gmsaCredentialSpec: type: string - value: + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + subdomain: + type: string + tensorflow: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: + configMapKeyRef: properties: - command: - items: - type: string - type: array + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key type: object - httpGet: + fieldRef: properties: - host: + apiVersion: type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + fieldPath: type: string - port: + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object - preStop: + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string - required: - - port - type: object - tcpSocket: - properties: - host: + value: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port + - name + - value type: object - type: object - type: object - livenessProbe: + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: + containerPort: format: int32 type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - name: - type: string - ports: - items: + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: properties: - containerPort: - format: int32 - type: integer - hostIP: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - hostPort: - format: int32 - type: integer - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - protocol: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - containerPort + - port type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + type: array + drop: + items: type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + - type: integer + - type: string x-kubernetes-int-or-string: true - type: object + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - runtimeVersion: - type: string - securityContext: + type: array + volumeMounts: + items: properties: - allowPrivilegeEscalation: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: type: boolean - capabilities: - properties: - add: - items: + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + terminationGracePeriodSeconds: + format: int64 + type: integer + timeout: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: type: string - type: array - drop: - items: + operator: type: string - type: array + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string type: object - privileged: - type: boolean - procMount: + type: object + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + triton: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: + value: + type: string + valueFrom: properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object type: object - seccompProfile: + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: properties: - localhostProfile: - type: string - type: + name: type: string - required: - - type + optional: + type: boolean type: object - windowsOptions: + prefix: + type: string + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string + optional: + type: boolean type: object type: object - startupProbe: - properties: - exec: - properties: - command: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: object + type: object + type: object + livenessProbe: + properties: + exec: properties: - devicePath: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - devicePath - - name + - port type: object - type: array - volumeMounts: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - mountPath: + host: type: string - mountPropagation: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - name: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - readOnly: - type: boolean - subPath: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - subPathExpr: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - type: object - terminationGracePeriodSeconds: - format: int64 - type: integer - timeout: - format: int64 - type: integer - tolerations: - items: + timeoutSeconds: + format: int32 + type: integer + type: object + resources: properties: - effect: - type: string - key: - type: string - operator: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: type: string - tolerationSeconds: + readOnlyRootFilesystem: + type: boolean + runAsGroup: format: int64 type: integer - value: - type: string + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object type: object - type: array - topologySpreadConstraints: - items: + startupProbe: properties: - labelSelector: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - matchExpressions: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - operator: + value: type: string - values: - items: - type: string - type: array required: - - key - - operator + - name + - value type: object type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - maxSkew: - format: int32 - type: integer - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - x-kubernetes-list-map-keys: - - topologyKey - - whenUnsatisfiable - x-kubernetes-list-type: map - triton: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: + path: type: string - value: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object + devicePath: + type: string + name: + type: string + required: + - devicePath + - name type: object - livenessProbe: + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + volumes: + items: + properties: + awsElasticBlockStore: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: + fsType: + type: string + partition: format: int32 type: integer - httpGet: + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: + type: string + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: properties: - host: + name: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true type: object - timeoutSeconds: + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: format: int32 type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string - readinessProbe: + csi: properties: - exec: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: properties: - command: - items: - type: string - type: array + name: + type: string type: object - failureThreshold: + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: format: int32 type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: + items: + items: + properties: + fieldRef: properties: - name: + apiVersion: type: string - value: + fieldPath: type: string required: - - name - - value + - fieldPath type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + readOnly: + type: boolean + volumeClaimTemplate: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + metadata: + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + required: + - spec type: object - timeoutSeconds: + type: object + fc: + properties: + fsType: + type: string + lun: format: int32 type: integer + readOnly: + type: boolean + targetWWNs: + items: + type: string + type: array + wwids: + items: + type: string + type: array type: object - resources: + flexVolume: properties: - limits: + driver: + type: string + fsType: + type: string + options: additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true + type: string type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true + readOnly: + type: boolean + secretRef: + properties: + name: + type: string type: object + required: + - driver type: object - runtimeVersion: - type: string - securityContext: + flocker: properties: - allowPrivilegeEscalation: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: type: boolean - procMount: + required: + - endpoints + - path + type: object + hostPath: + properties: + path: type: string - readOnlyRootFilesystem: + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: + chapAuthSession: type: boolean - runAsUser: - format: int64 + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: + portals: + items: + type: string + type: array + readOnly: + type: boolean + secretRef: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: + name: type: string type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal type: object - startupProbe: + name: + type: string + nfs: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: format: int32 type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: + sources: + items: + properties: + configMap: properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array name: type: string - value: + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: type: string required: - - name - - value + - path type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + type: object + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: + items: + type: string + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: type: string - required: - - port type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: properties: - host: + name: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port type: object - timeoutSeconds: + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: format: int32 type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - type: object - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: + items: + items: properties: - name: + key: type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: + mode: + format: int32 + type: integer + path: type: string + required: + - key + - path type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: + type: string + storagePolicyName: + type: string + volumePath: + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + xgboost: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: properties: key: type: string - mode: - format: int32 - type: integer - path: + name: type: string + optional: + type: boolean required: - - key - - path + - key type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: + fieldRef: properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: string + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: + type: string + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: type: string - resourceFieldRef: + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - containerName: + name: type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: + value: type: string required: - - resource + - name + - value type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - properties: - readOnly: - type: boolean - volumeClaimTemplate: - properties: - metadata: - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string + - port type: object - readOnly: - type: boolean - secretRef: + tcpSocket: properties: - name: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path type: object - iscsi: + preStop: properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: + exec: properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - audience: + name: type: string - expirationSeconds: - format: int64 - type: integer - path: + value: type: string required: - - path + - name + - value type: object - type: object - type: array - required: - - sources + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object type: object - quobyte: + type: object + livenessProbe: + properties: + exec: properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume + command: + items: + type: string + type: array type: object - rbd: + failureThreshold: + format: int32 + type: integer + httpGet: properties: - fsType: - type: string - image: + host: type: string - keyring: - type: string - monitors: + httpHeaders: items: - type: string + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object type: array - pool: + path: type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - image - - monitors + - port type: object - scaleIO: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - gateway - - secretRef - - system + - port type: object - secret: + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: + format: int32 + type: integer + name: + type: string + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + protocolVersion: + type: string + readinessProbe: + properties: + exec: properties: - defaultMode: - format: int32 - type: integer - items: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: items: properties: - key: + name: type: string - mode: - format: int32 - type: integer - path: + value: type: string required: - - key - - path + - name + - value type: object type: array - optional: - type: boolean - secretName: + path: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port type: object - storageos: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: + host: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + runtimeVersion: + type: string + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array type: object - vsphereVolume: + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - fsType: + level: type: string - storagePolicyID: + role: type: string - storagePolicyName: + type: type: string - volumePath: + user: type: string - required: - - volumePath type: object - required: - - name - type: object - type: array - xgboost: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: + seccompProfile: properties: - name: + localhostProfile: type: string - value: + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + storageUri: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - postStart: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: object + transformer: + properties: + activeDeadlineSeconds: + format: int64 + type: integer + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - exec: + preference: properties: - command: + matchExpressions: items: - type: string + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object type: array type: object - httpGet: + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: properties: - host: - type: string - httpHeaders: + matchExpressions: items: properties: - name: + key: type: string - value: + operator: type: string + values: + items: + type: string + type: array required: - - name - - value + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator type: object type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port type: object - tcpSocket: + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: properties: - host: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey type: object - preStop: + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - exec: + podAffinityTerm: properties: - command: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: items: type: string type: array + topologyKey: + type: string + required: + - topologyKey type: object - httpGet: + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: properties: - host: - type: string - httpHeaders: + matchExpressions: items: properties: - name: + key: type: string - value: + operator: type: string + values: + items: + type: string + type: array required: - - name - - value + - key + - operator type: object type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port + matchLabels: + additionalProperties: + type: string + type: object type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: + namespaces: items: type: string type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: + topologyKey: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + required: + - topologyKey type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: + type: array + type: object + type: object + automountServiceAccountToken: + type: boolean + batcher: + properties: + maxBatchSize: + type: integer + maxLatency: + type: integer + timeout: + type: integer + type: object + canaryTrafficPercent: + format: int64 + type: integer + containerConcurrency: + format: int64 + type: integer + containers: + items: + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + env: items: properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer name: type: string - protocol: + value: type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - protocolVersion: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: + valueFrom: + properties: + configMapKeyRef: properties: + key: + type: string name: type: string - value: + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: type: string required: - - name - - value + - fieldPath type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - runtimeVersion: - type: string - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + items: + properties: + configMapRef: + properties: + name: type: string - type: array - drop: - items: + optional: + type: boolean + type: object + prefix: + type: string + secretRef: + properties: + name: type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: + optional: + type: boolean + type: object + type: object + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: properties: - localhostProfile: - type: string - type: - type: string - required: - - type + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object type: object - windowsOptions: + preStop: properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object type: object type: object - startupProbe: + livenessProbe: properties: exec: properties: @@ -14069,21 +16976,21 @@ spec: value: type: string required: - - name - - value + - name + - value type: object type: array path: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true scheme: type: string required: - - port + - port type: object initialDelaySeconds: format: int32 @@ -14100,1884 +17007,2381 @@ spec: type: string port: anyOf: - - type: integer - - type: string + - type: integer + - type: string x-kubernetes-int-or-string: true required: - - port + - port type: object timeoutSeconds: format: int32 type: integer type: object - stdin: - type: boolean - stdinOnce: - type: boolean - storageUri: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: + name: type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: + ports: items: properties: - mountPath: - type: string - mountPropagation: + containerPort: + format: int32 + type: integer + hostIP: type: string + hostPort: + format: int32 + type: integer name: type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: + protocol: type: string required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - type: object - type: object - transformer: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: properties: - nodeSelectorTerms: + host: + type: string + httpHeaders: items: properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array + name: + type: string + value: + type: string + required: + - name + - value type: object type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true required: - - nodeSelectorTerms + - port type: object + timeoutSeconds: + format: int32 + type: integer type: object - podAffinity: + resources: properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object type: object - podAntiAffinity: + securityContext: properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - automountServiceAccountToken: - type: boolean - batcher: - properties: - maxBatchSize: - type: integer - maxLatency: - type: integer - timeout: - type: integer - type: object - canaryTrafficPercent: - format: int64 - type: integer - containerConcurrency: - format: int64 - type: integer - containers: - items: - properties: - args: - items: - type: string - type: array - command: - items: + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: type: string - type: array - env: - items: + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: properties: - name: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: type: string - value: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object required: - - name + - port type: object - type: array - envFrom: - items: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: + host: type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port type: object - type: array - image: + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object + type: array + volumeMounts: + items: + properties: + mountPath: + type: string + mountPropagation: + type: string + name: + type: string + readOnly: + type: boolean + subPath: + type: string + subPathExpr: + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + type: string + required: + - name + type: object + type: array + dnsConfig: + properties: + nameservers: + items: + type: string + type: array + options: + items: + properties: + name: + type: string + value: + type: string + type: object + type: array + searches: + items: + type: string + type: array + type: object + dnsPolicy: + type: string + enableServiceLinks: + type: boolean + ephemeralContainers: + items: + properties: + args: + items: type: string - imagePullPolicy: + type: array + command: + items: type: string - lifecycle: + type: array + env: + items: properties: - postStart: + name: + type: string + value: + type: string + valueFrom: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + configMapKeyRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean required: - - port + - key type: object - tcpSocket: + fieldRef: properties: - host: + apiVersion: + type: string + fieldPath: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array + - fieldPath type: object - httpGet: + resourceFieldRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: + containerName: type: string - port: + divisor: anyOf: - - type: integer - - type: string + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - scheme: + resource: type: string required: - - port + - resource type: object - tcpSocket: + secretKeyRef: properties: - host: + key: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true + name: + type: string + optional: + type: boolean required: - - port + - key type: object type: object + required: + - name type: object - livenessProbe: + type: array + envFrom: + items: properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: + configMapRef: properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: + name: type: string + optional: + type: boolean type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: + prefix: + type: string + secretRef: properties: - host: + name: type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port + optional: + type: boolean type: object - timeoutSeconds: - format: int32 - type: integer type: object - name: - type: string - ports: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: - name - value - type: object - type: array - path: - type: string - port: - anyOf: + type: object + type: array + path: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: + x-kubernetes-int-or-string: true + scheme: + type: string + required: - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string - x-kubernetes-int-or-string: true - required: + x-kubernetes-int-or-string: true + required: - port - type: object - timeoutSeconds: + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + hostIP: + type: string + hostPort: format: int32 type: integer + name: + type: string + protocol: + type: string + required: + - containerPort type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: + type: array + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: properties: - devicePath: + level: type: string - name: + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: type: string required: - - devicePath - - name + - type type: object - type: array - volumeMounts: - items: + windowsOptions: properties: - mountPath: + gmsaCredentialSpec: type: string - mountPropagation: + gmsaCredentialSpecName: type: string - name: + runAsUserName: type: string - readOnly: - type: boolean - subPath: + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: type: string - subPathExpr: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string required: - - mountPath - - name + - port type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - dnsConfig: - properties: - nameservers: + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + targetContainerName: + type: string + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: items: - type: string + properties: + devicePath: + type: string + name: + type: string + required: + - devicePath + - name + type: object type: array - options: + volumeMounts: items: properties: + mountPath: + type: string + mountPropagation: + type: string name: type: string - value: + readOnly: + type: boolean + subPath: + type: string + subPathExpr: type: string + required: + - mountPath + - name type: object type: array - searches: + workingDir: + type: string + required: + - name + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + hostAliases: + items: + properties: + hostnames: items: type: string type: array + ip: + type: string type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - logger: + type: array + hostIPC: + type: boolean + hostNetwork: + type: boolean + hostPID: + type: boolean + hostname: + type: string + imagePullSecrets: + items: properties: - mode: - enum: - - all - - request - - response - type: string - url: + name: type: string type: object - maxReplicas: - type: integer - minReplicas: - type: integer - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - overhead: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType - type: object - type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - securityContext: + type: array + initContainers: + items: properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: + args: items: - format: int64 - type: integer + type: string + type: array + command: + items: + type: string type: array - sysctls: + env: items: properties: name: type: string value: type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - timeout: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - topologySpreadConstraints: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: type: string - type: array - required: + name: + type: string + optional: + type: boolean + required: - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string + type: object type: object - type: object - maxSkew: - format: int32 - type: integer - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - x-kubernetes-list-map-keys: - - topologyKey - - whenUnsatisfiable - x-kubernetes-list-type: map - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string required: - - secretName - - shareName + - name type: object - cephfs: + type: array + envFrom: + items: properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: + configMapRef: properties: name: type: string + optional: + type: boolean type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: + prefix: type: string - readOnly: - type: boolean secretRef: properties: name: type: string + optional: + type: boolean type: object - volumeID: - type: string - required: - - volumeID type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: + type: array + image: + type: string + imagePullPolicy: + type: string + lifecycle: + properties: + postStart: + properties: + exec: properties: - key: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: type: string - mode: - format: int32 - type: integer + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array path: type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string required: - - key - - path + - port type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + name: + type: string + ports: + items: properties: - driver: - type: string - fsType: + containerPort: + format: int32 + type: integer + hostIP: type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: + hostPort: format: int32 type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: + name: type: string - sizeLimit: - anyOf: + protocol: + type: string + required: + - containerPort + type: object + type: array + x-kubernetes-list-map-keys: + - containerPort + - protocol + x-kubernetes-list-type: map + readinessProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + path: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: + type: string + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: + type: string + port: + anyOf: - type: integer - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - type: object - ephemeral: - properties: - readOnly: - type: boolean - volumeClaimTemplate: - properties: - metadata: - type: object - spec: + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + securityContext: + properties: + allowPrivilegeEscalation: + type: boolean + capabilities: + properties: + add: + items: + type: string + type: array + drop: + items: + type: string + type: array + type: object + privileged: + type: boolean + procMount: + type: string + readOnlyRootFilesystem: + type: boolean + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + startupProbe: + properties: + exec: + properties: + command: + items: + type: string + type: array + type: object + failureThreshold: + format: int32 + type: integer + httpGet: + properties: + host: + type: string + httpHeaders: + items: properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: + name: type: string - volumeName: + value: type: string + required: + - name + - value type: object - required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: + type: array + path: type: string - type: array - wwids: - items: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + scheme: type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: + required: + - port + type: object + initialDelaySeconds: + format: int32 + type: integer + periodSeconds: + format: int32 + type: integer + successThreshold: + format: int32 + type: integer + tcpSocket: + properties: + host: type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + format: int32 + type: integer + type: object + stdin: + type: boolean + stdinOnce: + type: boolean + terminationMessagePath: + type: string + terminationMessagePolicy: + type: string + tty: + type: boolean + volumeDevices: + items: properties: - fsType: + devicePath: type: string - partition: - format: int32 - type: integer - pdName: + name: type: string - readOnly: - type: boolean required: - - pdName + - devicePath + - name type: object - gitRepo: + type: array + volumeMounts: + items: properties: - directory: - type: string - repository: - type: string - revision: + mountPath: type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: + mountPropagation: type: string - path: + name: type: string readOnly: type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: + subPath: type: string - type: + subPathExpr: type: string required: - - path + - mountPath + - name type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: + type: array + workingDir: + type: string + required: + - name + type: object + type: array + logger: + properties: + mode: + enum: + - all + - request + - response + type: string + url: + type: string + type: object + maxReplicas: + type: integer + minReplicas: + type: integer + nodeName: + type: string + nodeSelector: + additionalProperties: + type: string + type: object + overhead: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + preemptionPolicy: + type: string + priority: + format: int32 + type: integer + priorityClassName: + type: string + readinessGates: + items: + properties: + conditionType: + type: string + required: + - conditionType + type: object + type: array + restartPolicy: + type: string + runtimeClassName: + type: string + schedulerName: + type: string + securityContext: + properties: + fsGroup: + format: int64 + type: integer + fsGroupChangePolicy: + type: string + runAsGroup: + format: int64 + type: integer + runAsNonRoot: + type: boolean + runAsUser: + format: int64 + type: integer + seLinuxOptions: + properties: + level: + type: string + role: + type: string + type: + type: string + user: + type: string + type: object + seccompProfile: + properties: + localhostProfile: + type: string + type: + type: string + required: + - type + type: object + supplementalGroups: + items: + format: int64 + type: integer + type: array + sysctls: + items: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + properties: + gmsaCredentialSpec: + type: string + gmsaCredentialSpecName: + type: string + runAsUserName: + type: string + type: object + type: object + serviceAccount: + type: string + serviceAccountName: + type: string + setHostnameAsFQDN: + type: boolean + shareProcessNamespace: + type: boolean + subdomain: + type: string + terminationGracePeriodSeconds: + format: int64 + type: integer + timeout: + format: int64 + type: integer + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + topologySpreadConstraints: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: type: string - iscsiInterface: + type: object + type: object + maxSkew: + format: int32 + type: integer + topologyKey: + type: string + whenUnsatisfiable: + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + x-kubernetes-list-map-keys: + - topologyKey + - whenUnsatisfiable + x-kubernetes-list-type: map + volumes: + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + azureDisk: + properties: + cachingMode: + type: string + diskName: + type: string + diskURI: + type: string + fsType: + type: string + kind: + type: string + readOnly: + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + properties: + readOnly: + type: boolean + secretName: + type: string + shareName: + type: string + required: + - secretName + - shareName + type: object + cephfs: + properties: + monitors: + items: type: string - lun: - format: int32 - type: integer - portals: - items: + type: array + path: + type: string + readOnly: + type: boolean + secretFile: + type: string + secretRef: + properties: + name: type: string - type: array - readOnly: - type: boolean - secretRef: + type: object + user: + type: string + required: + - monitors + type: object + cinder: + properties: + fsType: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + volumeID: + type: string + required: + - volumeID + type: object + configMap: + properties: + defaultMode: + format: int32 + type: integer + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + csi: + properties: + driver: + type: string + fsType: + type: string + nodePublishSecretRef: + properties: + name: + type: string + type: object + readOnly: + type: boolean + volumeAttributes: + additionalProperties: + type: string + type: object + required: + - driver + type: object + downwardAPI: + properties: + defaultMode: + format: int32 + type: integer + items: + items: properties: - name: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: + type: array + type: object + emptyDir: + properties: + medium: + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + properties: + readOnly: + type: boolean + volumeClaimTemplate: + properties: + metadata: + type: object + spec: properties: - configMap: + accessModes: + items: + type: string + type: array + dataSource: properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array + apiGroup: + type: string + kind: + type: string name: type: string - optional: - type: boolean + required: + - kind + - name type: object - downwardAPI: + resources: properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object type: object - secret: + selector: properties: - items: + matchExpressions: items: properties: key: type: string - mode: - format: int32 - type: integer - path: + operator: type: string + values: + items: + type: string + type: array required: - - key - - path + - key + - operator type: object type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path + matchLabels: + additionalProperties: + type: string + type: object type: object + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: + required: + - spec + type: object + type: object + fc: + properties: + fsType: + type: string + lun: + format: int32 + type: integer + readOnly: + type: boolean + targetWWNs: + items: type: string - image: + type: array + wwids: + items: type: string - keyring: + type: array + type: object + flexVolume: + properties: + driver: + type: string + fsType: + type: string + options: + additionalProperties: type: string - monitors: - items: + type: object + readOnly: + type: boolean + secretRef: + properties: + name: type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: + type: object + required: + - driver + type: object + flocker: + properties: + datasetName: + type: string + datasetUUID: + type: string + type: object + gcePersistentDisk: + properties: + fsType: + type: string + partition: + format: int32 + type: integer + pdName: + type: string + readOnly: + type: boolean + required: + - pdName + type: object + gitRepo: + properties: + directory: + type: string + repository: + type: string + revision: + type: string + required: + - repository + type: object + glusterfs: + properties: + endpoints: + type: string + path: + type: string + readOnly: + type: boolean + required: + - endpoints + - path + type: object + hostPath: + properties: + path: + type: string + type: + type: string + required: + - path + type: object + iscsi: + properties: + chapAuthDiscovery: + type: boolean + chapAuthSession: + type: boolean + fsType: + type: string + initiatorName: + type: string + iqn: + type: string + iscsiInterface: + type: string + lun: + format: int32 + type: integer + portals: + items: type: string - readOnly: - type: boolean - secretRef: + type: array + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + targetPortal: + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + type: string + nfs: + properties: + path: + type: string + readOnly: + type: boolean + server: + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + properties: + claimName: + type: string + readOnly: + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + properties: + fsType: + type: string + pdID: + type: string + required: + - pdID + type: object + portworxVolume: + properties: + fsType: + type: string + readOnly: + type: boolean + volumeID: + type: string + required: + - volumeID + type: object + projected: + properties: + defaultMode: + format: int32 + type: integer + sources: + items: properties: - name: - type: string + configMap: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + mode: + format: int32 + type: integer + path: + type: string + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + properties: + items: + items: + properties: + key: + type: string + mode: + format: int32 + type: integer + path: + type: string + required: + - key + - path + type: object + type: array + name: + type: string + optional: + type: boolean + type: object + serviceAccountToken: + properties: + audience: + type: string + expirationSeconds: + format: int64 + type: integer + path: + type: string + required: + - path + type: object type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer + type: array + required: + - sources + type: object + quobyte: + properties: + group: + type: string + readOnly: + type: boolean + registry: + type: string + tenant: + type: string + user: + type: string + volume: + type: string + required: + - registry + - volume + type: object + rbd: + properties: + fsType: + type: string + image: + type: string + keyring: + type: string + monitors: items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: type: string - readOnly: - type: boolean - secretRef: + type: array + pool: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + user: + type: string + required: + - image + - monitors + type: object + scaleIO: + properties: + fsType: + type: string + gateway: + type: string + protectionDomain: + type: string + readOnly: + type: boolean + secretRef: + properties: + name: + type: string + type: object + sslEnabled: + type: boolean + storageMode: + type: string + storagePool: + type: string + system: + type: string + volumeName: + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + properties: + defaultMode: + format: int32 + type: integer + items: + items: properties: - name: + key: + type: string + mode: + format: int32 + type: integer + path: type: string + required: + - key + - path type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - required: - - predictor - type: object - status: - properties: - address: - properties: - url: - type: string - type: object - annotations: - additionalProperties: - type: string - type: object - components: - additionalProperties: - properties: - address: - properties: - url: - type: string - type: object - latestCreatedRevision: - type: string - latestReadyRevision: - type: string - latestRolledoutRevision: - type: string - previousRolledoutRevision: - type: string - traffic: - items: + type: array + optional: + type: boolean + secretName: + type: string + type: object + storageos: properties: - configurationName: + fsType: type: string - latestRevision: + readOnly: type: boolean - percent: - format: int64 - type: integer - revisionName: + secretRef: + properties: + name: + type: string + type: object + volumeName: + type: string + volumeNamespace: + type: string + type: object + vsphereVolume: + properties: + fsType: + type: string + storagePolicyID: type: string - tag: + storagePolicyName: type: string - url: + volumePath: type: string + required: + - volumePath type: object - type: array - url: - type: string - type: object - type: object - conditions: - items: - properties: - lastTransitionTime: - type: string - message: - type: string - reason: - type: string - severity: - type: string - status: - type: string - type: - type: string - required: - - status - - type - type: object - type: array - observedGeneration: - format: int64 - type: integer - url: + required: + - name + type: object + type: array + type: object + required: + - predictor + type: object + status: + properties: + address: + properties: + url: + type: Any + type: object + annotations: + additionalProperties: type: string - type: object - type: object - served: true - storage: true + type: object + components: + additionalProperties: + properties: + address: + properties: + url: + type: Any + type: object + latestCreatedRevision: + type: string + latestReadyRevision: + type: string + latestRolledoutRevision: + type: string + previousRolledoutRevision: + type: string + traffic: + items: + properties: + configurationName: + type: string + latestRevision: + type: boolean + percent: + format: int64 + type: integer + revisionName: + type: string + tag: + type: string + url: + type: Any + type: object + type: array + url: + type: Any + type: object + type: object + conditions: + items: + properties: + lastTransitionTime: + type: Any + message: + type: string + reason: + type: string + severity: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + observedGeneration: + format: int64 + type: integer + url: + type: Any + type: object + type: object + served: true + storage: true status: acceptedNames: kind: "" plural: "" - conditions: [] - storedVersions: [] + conditions: null + storedVersions: null diff --git a/config/crd/serving.kubeflow.org_trainedmodels.yaml b/config/crd/serving.kubeflow.org_trainedmodels.yaml index 3d4560a9c577..a358594c813b 100644 --- a/config/crd/serving.kubeflow.org_trainedmodels.yaml +++ b/config/crd/serving.kubeflow.org_trainedmodels.yaml @@ -68,7 +68,7 @@ spec: address: properties: url: - type: string + type: Any type: object annotations: additionalProperties: @@ -78,7 +78,7 @@ spec: items: properties: lastTransitionTime: - type: string + type: Any message: type: string reason: @@ -98,7 +98,7 @@ spec: format: int64 type: integer url: - type: string + type: Any type: object type: object version: v1alpha1 @@ -110,5 +110,5 @@ status: acceptedNames: kind: "" plural: "" - conditions: [] - storedVersions: [] + conditions: null + storedVersions: null diff --git a/config/default/cainjection_conversion_webhook.yaml b/config/default/cainjection_conversion_webhook.yaml index f26c9ab4c896..a6d9aee684ae 100644 --- a/config/default/cainjection_conversion_webhook.yaml +++ b/config/default/cainjection_conversion_webhook.yaml @@ -4,5 +4,5 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: - cert-manager.io/inject-ca-from: $(kfservingNamespace)/serving-cert - name: inferenceservices.serving.kubeflow.org + cert-manager.io/inject-ca-from: $(kserveNamespace)/serving-cert + name: inferenceservices.serving.kserve.io diff --git a/config/default/inferenceservice_conversion_webhook.yaml b/config/default/inferenceservice_conversion_webhook.yaml index 79ea458f8d8f..6a0c34478f44 100644 --- a/config/default/inferenceservice_conversion_webhook.yaml +++ b/config/default/inferenceservice_conversion_webhook.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: - name: inferenceservices.serving.kubeflow.org + name: inferenceservices.serving.kserve.io spec: preserveUnknownFields: false conversion: @@ -14,6 +14,6 @@ spec: # but we're going to set it later using the cert-manager (or potentially a patch if not using cert-manager) caBundle: Cg== service: - namespace: $(kfservingNamespace) + namespace: $(kserveNamespace) name: $(webhookServiceName) path: /convert diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml index 17cd6fe88102..39dd3168fb04 100644 --- a/config/default/kustomization.yaml +++ b/config/default/kustomization.yaml @@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization # Adds namespace to all resources. -namespace: kfserving-system +namespace: kserve # Labels to add to all resources and selectors. #commonLabels: @@ -39,16 +39,16 @@ generatorOptions: # To make namespace for standalone installation kustomizable, # variabalize ingress gateway, webhook service name and -# kfserving namespace in webhook configurations +# kserve namespace in webhook configurations configMapGenerator: - - name: kfserving-config + - name: kserve-config envs: - params.env vars: - name: ingressGateway objref: kind: ConfigMap - name: kfserving-config + name: kserve-config apiVersion: v1 fieldref: fieldpath: data.ingressGateway @@ -58,8 +58,8 @@ vars: objref: apiVersion: v1 kind: Service - name: kfserving-webhook-server-service -- name: kfservingNamespace + name: kserve-webhook-server-service +- name: kserveNamespace objref: kind: Certificate group: cert-manager.io diff --git a/config/default/manager_auth_proxy_patch.yaml b/config/default/manager_auth_proxy_patch.yaml index 42e72bcaa5d9..ed60fe0ed04d 100644 --- a/config/default/manager_auth_proxy_patch.yaml +++ b/config/default/manager_auth_proxy_patch.yaml @@ -3,8 +3,8 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve spec: template: spec: diff --git a/config/default/manager_image_patch.yaml b/config/default/manager_image_patch.yaml index 56a6c5a0cc1e..f81c9cf1c3a6 100644 --- a/config/default/manager_image_patch.yaml +++ b/config/default/manager_image_patch.yaml @@ -1,12 +1,12 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve spec: template: spec: containers: # Change the value of image field below to your controller image URL - - image: gcr.io/kfserving/kfserving-controller:latest + - image: kserve/kserve-controller:latest name: manager diff --git a/config/default/manager_prometheus_metrics_patch.yaml b/config/default/manager_prometheus_metrics_patch.yaml index 93217b6abc08..9c5a02bd8242 100644 --- a/config/default/manager_prometheus_metrics_patch.yaml +++ b/config/default/manager_prometheus_metrics_patch.yaml @@ -2,8 +2,8 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve spec: template: metadata: diff --git a/config/default/manager_resources_patch.yaml b/config/default/manager_resources_patch.yaml index 5a918afc43a6..5af98256b8d6 100644 --- a/config/default/manager_resources_patch.yaml +++ b/config/default/manager_resources_patch.yaml @@ -1,8 +1,8 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve spec: template: spec: diff --git a/config/default/webhookcainjection_patch.yaml b/config/default/webhookcainjection_patch.yaml index 4ac01215dd11..0b2f2e8b67ce 100644 --- a/config/default/webhookcainjection_patch.yaml +++ b/config/default/webhookcainjection_patch.yaml @@ -3,26 +3,26 @@ apiVersion: admissionregistration.k8s.io/v1beta1 kind: MutatingWebhookConfiguration metadata: - name: inferenceservice.serving.kubeflow.org + name: inferenceservice.serving.kserve.io annotations: - cert-manager.io/inject-ca-from: $(kfservingNamespace)/serving-cert + cert-manager.io/inject-ca-from: $(kserveNamespace)/serving-cert webhooks: - - name: inferenceservice.kfserving-webhook-server.defaulter + - name: inferenceservice.kserve-webhook-server.defaulter --- apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration metadata: - name: inferenceservice.serving.kubeflow.org + name: inferenceservice.serving.kserve.io annotations: - cert-manager.io/inject-ca-from: $(kfservingNamespace)/serving-cert + cert-manager.io/inject-ca-from: $(kserveNamespace)/serving-cert webhooks: - - name: inferenceservice.kfserving-webhook-server.validator + - name: inferenceservice.kserve-webhook-server.validator --- apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration metadata: - name: trainedmodel.serving.kubeflow.org + name: trainedmodel.serving.kserve.io annotations: - cert-manager.io/inject-ca-from: $(kfservingNamespace)/serving-cert + cert-manager.io/inject-ca-from: $(kserveNamespace)/serving-cert webhooks: - - name: trainedmodel.kfserving-webhook-server.validator + - name: trainedmodel.kserve-webhook-server.validator diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml index 734c274303fa..c4bd0725bdc0 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -1,27 +1,27 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve labels: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" spec: selector: matchLabels: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" serviceName: controller-manager-service template: metadata: labels: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" spec: containers: - command: - /manager - image: ko://github.com/kubeflow/kfserving/cmd/manager + image: ko://github.com/kserve/kserve/cmd/manager imagePullPolicy: Always name: manager env: @@ -30,7 +30,7 @@ spec: fieldRef: fieldPath: metadata.namespace - name: SECRET_NAME - value: kfserving-webhook-server-cert + value: kserve-webhook-server-cert resources: limits: cpu: 100m @@ -51,10 +51,10 @@ spec: - name: cert secret: defaultMode: 420 - secretName: kfserving-webhook-server-cert + secretName: kserve-webhook-server-cert --- apiVersion: v1 kind: Secret metadata: - name: kfserving-webhook-server-secret - namespace: kfserving-system + name: kserve-webhook-server-secret + namespace: kserve diff --git a/config/manager/service.yaml b/config/manager/service.yaml index 17f94993010a..0404b565578b 100644 --- a/config/manager/service.yaml +++ b/config/manager/service.yaml @@ -2,22 +2,22 @@ apiVersion: v1 kind: Namespace metadata: labels: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" istio-injection: disabled - name: kfserving-system + name: kserve --- apiVersion: v1 kind: Service metadata: - name: kfserving-controller-manager-service - namespace: kfserving-system + name: kserve-controller-manager-service + namespace: kserve labels: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" spec: selector: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" ports: - port: 443 diff --git a/config/overlays/development/configmap/ko_resolve_agent b/config/overlays/development/configmap/ko_resolve_agent index 46b6ca62b506..da9efd93af0e 100644 --- a/config/overlays/development/configmap/ko_resolve_agent +++ b/config/overlays/development/configmap/ko_resolve_agent @@ -1 +1 @@ -image: ko://github.com/kubeflow/kfserving/cmd/agent +image: ko://github.com/kserve/kserve/cmd/agent diff --git a/config/overlays/development/configmap/ko_resolve_batcher b/config/overlays/development/configmap/ko_resolve_batcher index 64f3052b9a63..02d076ca3097 100644 --- a/config/overlays/development/configmap/ko_resolve_batcher +++ b/config/overlays/development/configmap/ko_resolve_batcher @@ -1 +1 @@ -image: ko://github.com/kubeflow/kfserving/cmd/batcher +image: ko://github.com/kserve/kserve/cmd/batcher diff --git a/config/overlays/development/configmap/ko_resolve_logger b/config/overlays/development/configmap/ko_resolve_logger index 60ab778df21a..89eebe612450 100644 --- a/config/overlays/development/configmap/ko_resolve_logger +++ b/config/overlays/development/configmap/ko_resolve_logger @@ -1 +1 @@ -image: ko://github.com/kubeflow/kfserving/cmd/logger +image: ko://github.com/kserve/kserve/cmd/logger \ No newline at end of file diff --git a/config/overlays/kubeflow/cluster-role.yaml b/config/overlays/kubeflow/cluster-role.yaml index c5d98503ddb1..766ab17e5fc3 100644 --- a/config/overlays/kubeflow/cluster-role.yaml +++ b/config/overlays/kubeflow/cluster-role.yaml @@ -1,25 +1,25 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: kubeflow-kfserving-admin + name: kubeflow-kserve-admin labels: rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" aggregationRule: clusterRoleSelectors: - matchLabels: - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-kfserving-admin: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-kserve-admin: "true" rules: [] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: kubeflow-kfserving-edit + name: kubeflow-kserve-edit labels: rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" - rbac.authorization.kubeflow.org/aggregate-to-kubeflow-kfserving-admin: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-kserve-admin: "true" rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - inferenceservices verbs: @@ -55,12 +55,12 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: kubeflow-kfserving-view + name: kubeflow-kserve-view labels: rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - inferenceservices verbs: diff --git a/config/overlays/kubeflow/kustomization.yaml b/config/overlays/kubeflow/kustomization.yaml index 1f0ef6fbba49..e97c39b33db6 100644 --- a/config/overlays/kubeflow/kustomization.yaml +++ b/config/overlays/kubeflow/kustomization.yaml @@ -6,8 +6,8 @@ namespace: kubeflow # Labels to add to all resources and selectors. commonLabels: - app: kfserving - app.kubernetes.io/name: kfserving + app: kserve + app.kubernetes.io/name: kserve bases: - ../../default @@ -24,8 +24,8 @@ patchesJson6902: group: networking.istio.io version: v1beta1 kind: VirtualService - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve path: patches/web-app-vsvc.yaml generatorOptions: @@ -33,13 +33,13 @@ generatorOptions: # To make namespace for standalone installation kustomizable, # variabalize ingress gateway, webhook service name and -# kfserving namespace in webhook configurations +# kserve namespace in webhook configurations configMapGenerator: - - name: kfserving-config + - name: kserve-config behavior: replace envs: - params.env - - name: kfserving-models-web-app-config + - name: kserve-models-web-app-config behavior: replace literals: - USERID_HEADER=kubeflow-userid diff --git a/config/overlays/kubeflow/patches/namespace.yaml b/config/overlays/kubeflow/patches/namespace.yaml index c7c0748d763e..bdca3de1243a 100644 --- a/config/overlays/kubeflow/patches/namespace.yaml +++ b/config/overlays/kubeflow/patches/namespace.yaml @@ -3,4 +3,4 @@ $patch: delete apiVersion: v1 kind: Namespace metadata: - name: kfserving-system + name: kserve diff --git a/config/overlays/kubeflow/patches/statefulset.yaml b/config/overlays/kubeflow/patches/statefulset.yaml index 493508d180ef..eb3107332be9 100644 --- a/config/overlays/kubeflow/patches/statefulset.yaml +++ b/config/overlays/kubeflow/patches/statefulset.yaml @@ -1,8 +1,8 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve spec: template: metadata: diff --git a/config/overlays/kubeflow/patches/web-app-sidecar.yaml b/config/overlays/kubeflow/patches/web-app-sidecar.yaml index 1bdcf8f38284..825618da9082 100644 --- a/config/overlays/kubeflow/patches/web-app-sidecar.yaml +++ b/config/overlays/kubeflow/patches/web-app-sidecar.yaml @@ -1,8 +1,8 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve spec: template: metadata: diff --git a/config/overlays/kubeflow/patches/web-app-vsvc.yaml b/config/overlays/kubeflow/patches/web-app-vsvc.yaml index 123731be787b..f35fed042e14 100644 --- a/config/overlays/kubeflow/patches/web-app-vsvc.yaml +++ b/config/overlays/kubeflow/patches/web-app-vsvc.yaml @@ -1,6 +1,6 @@ - op: replace path: /spec/http/0/route/0/destination value: - host: kfserving-models-web-app.kubeflow.svc.cluster.local + host: kserve-models-web-app.kubeflow.svc.cluster.local port: number: 80 diff --git a/config/overlays/kubeflow/web-app-authorization-policy.yaml b/config/overlays/kubeflow/web-app-authorization-policy.yaml index 59e058f7a4ba..58bc937e16e4 100644 --- a/config/overlays/kubeflow/web-app-authorization-policy.yaml +++ b/config/overlays/kubeflow/web-app-authorization-policy.yaml @@ -2,15 +2,15 @@ apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: labels: - kustomize.component: kfserving-models-web-app - app.kubernetes.io/component: kfserving-models-web-app - name: kfserving-models-web-app + kustomize.component: kserve-models-web-app + app.kubernetes.io/component: kserve-models-web-app + name: kserve-models-web-app spec: action: ALLOW selector: matchLabels: - kustomize.component: kfserving-models-web-app - app.kubernetes.io/component: kfserving-models-web-app + kustomize.component: kserve-models-web-app + app.kubernetes.io/component: kserve-models-web-app rules: - from: - source: diff --git a/config/overlays/test/configmap/inferenceservice.yaml b/config/overlays/test/configmap/inferenceservice.yaml index 3ece57e044bc..e4a3b91f65f5 100644 --- a/config/overlays/test/configmap/inferenceservice.yaml +++ b/config/overlays/test/configmap/inferenceservice.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: inferenceservice-config - namespace: kfserving-system + namespace: kserve data: predictors: |- { @@ -26,7 +26,7 @@ data: }, "sklearn": { "v1": { - "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/sklearnserver", + "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/sklearnserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "sklearn" @@ -44,7 +44,7 @@ data: }, "xgboost": { "v1": { - "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/xgbserver", + "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/xgbserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "xgboost" @@ -62,9 +62,9 @@ data: }, "pytorch": { "v1" : { - "image": "gcr.io/kfserving/pytorchserver", - "defaultImageVersion": "v0.5.0-rc0", - "defaultGpuImageVersion": "v0.5.0-rc0-gpu", + "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/pytorchserver", + "defaultImageVersion": "latest", + "defaultGpuImageVersion": "latest-gpu", "supportedFrameworks": [ "pytorch" ], @@ -101,7 +101,7 @@ data: "multiModelServer": true }, "pmml": { - "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/pmmlserver", + "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/pmmlserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "pmml" @@ -109,7 +109,7 @@ data: "multiModelServer": false }, "lightgbm": { - "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/lgbserver", + "image": "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/lgbserver", "defaultImageVersion": "latest", "supportedFrameworks": [ "lightgbm" @@ -123,21 +123,21 @@ data: explainers: |- { "alibi": { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/alibi-explainer", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/alibi-explainer", "defaultImageVersion": "latest" }, "aix": { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/aix-explainer", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/aix-explainer", "defaultImageVersion": "latest" }, "art": { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/art-explainer", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/art-explainer", "defaultImageVersion": "latest" } } storageInitializer: |- { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/storage-initializer:latest", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/storage-initializer:latest", "memoryRequest": "100Mi", "memoryLimit": "1Gi", "cpuRequest": "100m", @@ -162,7 +162,7 @@ data: } logger: |- { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/agent:latest", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/agent:latest", "memoryRequest": "100Mi", "memoryLimit": "1Gi", "cpuRequest": "100m", @@ -171,7 +171,7 @@ data: } batcher: |- { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/batcher:latest", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/batcher:latest", "memoryRequest": "100Mi", "memoryLimit": "500Mi", "cpuRequest": "100m", @@ -179,7 +179,7 @@ data: } agent: |- { - "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/agent:latest", + "image" : "809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/agent:latest", "memoryRequest": "100Mi", "memoryLimit": "500Mi", "cpuRequest": "100m", diff --git a/config/overlays/test/manager_image_patch.yaml b/config/overlays/test/manager_image_patch.yaml index c33acfce9bac..365683e20db4 100644 --- a/config/overlays/test/manager_image_patch.yaml +++ b/config/overlays/test/manager_image_patch.yaml @@ -1,12 +1,12 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: kfserving-controller-manager - namespace: kfserving-system + name: kserve-controller-manager + namespace: kserve spec: template: spec: containers: - name: manager command: - image: 809251082950.dkr.ecr.us-west-2.amazonaws.com/kfserving/kfserving-controller:latest + image: 809251082950.dkr.ecr.us-west-2.amazonaws.com/kserve/kserve-controller:latest diff --git a/config/rbac/auth_proxy_role.yaml b/config/rbac/auth_proxy_role.yaml index 67422229f7bb..c63fd98f9583 100644 --- a/config/rbac/auth_proxy_role.yaml +++ b/config/rbac/auth_proxy_role.yaml @@ -1,7 +1,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: kfserving-proxy-role + name: kserve-proxy-role rules: - apiGroups: ["authentication.k8s.io"] resources: diff --git a/config/rbac/auth_proxy_role_binding.yaml b/config/rbac/auth_proxy_role_binding.yaml index 436fa187f9f9..3be90c808f6f 100644 --- a/config/rbac/auth_proxy_role_binding.yaml +++ b/config/rbac/auth_proxy_role_binding.yaml @@ -1,12 +1,12 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: kfserving-proxy-rolebinding + name: kserve-proxy-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: kfserving-proxy-role + name: kserve-proxy-role subjects: - kind: ServiceAccount name: default - namespace: kfserving-system + namespace: kserve diff --git a/config/rbac/auth_proxy_service.yaml b/config/rbac/auth_proxy_service.yaml index 6a2bbe682be7..3bb85e5a6fca 100644 --- a/config/rbac/auth_proxy_service.yaml +++ b/config/rbac/auth_proxy_service.yaml @@ -6,15 +6,15 @@ metadata: prometheus.io/scheme: https prometheus.io/scrape: "true" labels: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" - name: kfserving-controller-manager-metrics-service - namespace: kfserving-system + name: kserve-controller-manager-metrics-service + namespace: kserve spec: ports: - name: https port: 8443 targetPort: https selector: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" diff --git a/config/rbac/leader_election_role_binding.yaml b/config/rbac/leader_election_role_binding.yaml index e2b60a7151b8..b348f43ed318 100644 --- a/config/rbac/leader_election_role_binding.yaml +++ b/config/rbac/leader_election_role_binding.yaml @@ -9,4 +9,4 @@ roleRef: subjects: - kind: ServiceAccount name: default - namespace: kfserving-system + namespace: kserve diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 60744bcd56c7..be20cbfab9a9 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -4,7 +4,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null - name: kfserving-manager-role + name: kserve-manager-role rules: - apiGroups: - admissionregistration.k8s.io @@ -170,7 +170,7 @@ rules: - patch - update - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - inferenceservices - inferenceservices/finalizers @@ -183,7 +183,7 @@ rules: - update - watch - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - inferenceservices/status verbs: @@ -191,7 +191,7 @@ rules: - patch - update - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - trainedmodels verbs: @@ -203,7 +203,7 @@ rules: - update - watch - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - trainedmodels/status verbs: diff --git a/config/rbac/role_binding.yaml b/config/rbac/role_binding.yaml index 76b24b0d3ec3..364a1cc77f51 100644 --- a/config/rbac/role_binding.yaml +++ b/config/rbac/role_binding.yaml @@ -1,12 +1,12 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: kfserving-manager-rolebinding + name: kserve-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: kfserving-manager-role + name: kserve-manager-role subjects: - kind: ServiceAccount name: default - namespace: kfserving-system + namespace: kserve diff --git a/config/web-app/deployment.yaml b/config/web-app/deployment.yaml index 4b6bc293474f..4b1142e175f9 100644 --- a/config/web-app/deployment.yaml +++ b/config/web-app/deployment.yaml @@ -1,25 +1,25 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve spec: replicas: 1 selector: matchLabels: - app.kubernetes.io/component: kfserving-models-web-app + app.kubernetes.io/component: kserve-models-web-app template: metadata: labels: - app.kubernetes.io/component: kfserving-models-web-app + app.kubernetes.io/component: kserve-models-web-app spec: containers: - - image: kfserving/models-web-app:latest + - image: kserve/models-web-app:latest imagePullPolicy: Always - name: kfserving-models-web-app + name: kserve-models-web-app envFrom: - configMapRef: - name: kfserving-models-web-app-config + name: kserve-models-web-app-config ports: - containerPort: 5000 - serviceAccountName: kfserving-models-web-app + serviceAccountName: kserve-models-web-app diff --git a/config/web-app/istio.yaml b/config/web-app/istio.yaml index e011fc97cc64..888ff6a9ecfd 100644 --- a/config/web-app/istio.yaml +++ b/config/web-app/istio.yaml @@ -1,8 +1,8 @@ apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve spec: gateways: - $(ingressGateway) @@ -16,6 +16,6 @@ spec: uri: / route: - destination: - host: kfserving-models-web-app.kfserving-system.svc.cluster.local + host: kserve-models-web-app.kserve.svc.cluster.local port: number: 80 diff --git a/config/web-app/kustomization.yaml b/config/web-app/kustomization.yaml index 9aa2c65b7d8a..5c8564cf0f1b 100644 --- a/config/web-app/kustomization.yaml +++ b/config/web-app/kustomization.yaml @@ -4,9 +4,9 @@ resources: - deployment.yaml - istio.yaml commonLabels: - kustomize.component: kfserving-models-web-app - app.kubernetes.io/component: kfserving-models-web-app + kustomize.component: kserve-models-web-app + app.kubernetes.io/component: kserve-models-web-app configMapGenerator: - - name: kfserving-models-web-app-config + - name: kserve-models-web-app-config literals: - APP_DISABLE_AUTH="True" diff --git a/config/web-app/rbac.yaml b/config/web-app/rbac.yaml index ca34cc75843e..27190da52776 100644 --- a/config/web-app/rbac.yaml +++ b/config/web-app/rbac.yaml @@ -1,13 +1,13 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: kfserving-models-web-app-cluster-role + name: kserve-models-web-app-cluster-role rules: - apiGroups: - authorization.k8s.io @@ -26,7 +26,7 @@ rules: - get - list - apiGroups: - - serving.kubeflow.org + - serving.kserve.io resources: - inferenceservices - inferenceservices/status @@ -57,12 +57,12 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: kfserving-models-web-app-binding + name: kserve-models-web-app-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: kfserving-models-web-app-cluster-role + name: kserve-models-web-app-cluster-role subjects: - kind: ServiceAccount - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve diff --git a/config/web-app/service.yaml b/config/web-app/service.yaml index 4cc040937399..b2f17d167bfa 100644 --- a/config/web-app/service.yaml +++ b/config/web-app/service.yaml @@ -1,8 +1,8 @@ apiVersion: v1 kind: Service metadata: - name: kfserving-models-web-app - namespace: kfserving-system + name: kserve-models-web-app + namespace: kserve spec: ports: - name: http @@ -10,5 +10,5 @@ spec: protocol: TCP targetPort: 5000 selector: - app.kubernetes.io/component: kfserving-models-web-app + app.kubernetes.io/component: kserve-models-web-app type: ClusterIP diff --git a/config/webhook/manifests.yaml b/config/webhook/manifests.yaml index 0c5c76d4b537..461cccde1e25 100644 --- a/config/webhook/manifests.yaml +++ b/config/webhook/manifests.yaml @@ -3,19 +3,19 @@ apiVersion: admissionregistration.k8s.io/v1beta1 kind: MutatingWebhookConfiguration metadata: creationTimestamp: null - name: inferenceservice.serving.kubeflow.org + name: inferenceservice.serving.kserve.io webhooks: - clientConfig: caBundle: Cg== service: name: $(webhookServiceName) - namespace: $(kfservingNamespace) - path: /mutate-serving-kubeflow-org-v1alpha2-inferenceservice + namespace: $(kserveNamespace) + path: /mutate-serving-kserve-io-v1alpha2-inferenceservice failurePolicy: Fail - name: inferenceservice.kfserving-webhook-server.defaulter + name: inferenceservice.kserve-webhook-server.defaulter rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io apiVersions: - v1alpha2 operations: @@ -27,13 +27,13 @@ webhooks: caBundle: Cg== service: name: $(webhookServiceName) - namespace: $(kfservingNamespace) - path: /mutate-serving-kubeflow-org-v1beta1-inferenceservice + namespace: $(kserveNamespace) + path: /mutate-serving-kserve-io-v1beta1-inferenceservice failurePolicy: Fail - name: inferenceservice.kfserving-webhook-server.v1beta1.defaulter + name: inferenceservice.kserve-webhook-server.v1beta1.defaulter rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io apiVersions: - v1beta1 operations: @@ -45,17 +45,17 @@ webhooks: caBundle: Cg== service: name: $(webhookServiceName) - namespace: $(kfservingNamespace) + namespace: $(kserveNamespace) path: /mutate-pods failurePolicy: Fail - name: inferenceservice.kfserving-webhook-server.pod-mutator + name: inferenceservice.kserve-webhook-server.pod-mutator namespaceSelector: matchExpressions: - key: control-plane operator: DoesNotExist objectSelector: matchExpressions: - - key: serving.kubeflow.org/inferenceservice + - key: serving.kserve.io/inferenceservice operator: Exists rules: - apiGroups: @@ -73,19 +73,19 @@ apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration metadata: creationTimestamp: null - name: inferenceservice.serving.kubeflow.org + name: inferenceservice.serving.kserve.io webhooks: - clientConfig: caBundle: Cg== service: name: $(webhookServiceName) - namespace: $(kfservingNamespace) - path: /validate-serving-kubeflow-org-v1alpha2-inferenceservice + namespace: $(kserveNamespace) + path: /validate-serving-kserve-io-v1alpha2-inferenceservice failurePolicy: Fail - name: inferenceservice.kfserving-webhook-server.validator + name: inferenceservice.kserve-webhook-server.validator rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io apiVersions: - v1alpha2 operations: @@ -97,13 +97,13 @@ webhooks: caBundle: Cg== service: name: $(webhookServiceName) - namespace: $(kfservingNamespace) - path: /validate-serving-kubeflow-org-v1beta1-inferenceservice + namespace: $(kserveNamespace) + path: /validate-serving-kserve-io-v1beta1-inferenceservice failurePolicy: Fail - name: inferenceservice.kfserving-webhook-server.v1beta1.validator + name: inferenceservice.kserve-webhook-server.v1beta1.validator rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io apiVersions: - v1beta1 operations: @@ -116,19 +116,19 @@ apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration metadata: creationTimestamp: null - name: trainedmodel.serving.kubeflow.org + name: trainedmodel.serving.kserve.io webhooks: - clientConfig: caBundle: Cg== service: name: $(webhookServiceName) - namespace: $(kfservingNamespace) - path: /validate-serving-kubeflow-org-v1alpha1-trainedmodel + namespace: $(kserveNamespace) + path: /validate-serving-kserve-io-v1alpha1-trainedmodel failurePolicy: Fail - name: trainedmodel.kfserving-webhook-server.validator + name: trainedmodel.kserve-webhook-server.validator rules: - apiGroups: - - serving.kubeflow.org + - serving.kserve.io apiVersions: - v1alpha1 operations: diff --git a/config/webhook/service.yaml b/config/webhook/service.yaml index eb94aca082d6..7a0eabe9fa8a 100644 --- a/config/webhook/service.yaml +++ b/config/webhook/service.yaml @@ -1,11 +1,11 @@ apiVersion: v1 kind: Service metadata: - name: kfserving-webhook-server-service - namespace: kfserving-system + name: kserve-webhook-server-service + namespace: kserve spec: ports: - port: 443 targetPort: webhook-server selector: - control-plane: kfserving-controller-manager + control-plane: kserve-controller-manager diff --git a/docs/apis/v1alpha2/README.md b/docs/apis/v1alpha2/README.md index 467ea5663e59..3a400af3c5e8 100644 --- a/docs/apis/v1alpha2/README.md +++ b/docs/apis/v1alpha2/README.md @@ -1,20 +1,20 @@

Packages:

-

serving.kubeflow.org/v1alpha2

+

serving.kserve.io/v1alpha2

Package v1alpha2 contains API Schema definitions for the serving v1alpha2 API group

Resource Types:
    -

    AIXExplainerSpec +

    AIXExplainerSpec

    (Appears on: -ExplainerSpec) +ExplainerSpec)

    AIXExplainerSpec defines the arguments for configuring an AIX Explanation Server

    @@ -31,7 +31,7 @@ Resource Types: type
    - + AIXExplainerType @@ -88,11 +88,11 @@ map[string]string -

    AIXExplainerType +

    AIXExplainerType (string alias)

    (Appears on: -AIXExplainerSpec) +AIXExplainerSpec)

    @@ -107,11 +107,11 @@ map[string]string -

    AlibiExplainerSpec +

    AlibiExplainerSpec

    (Appears on: -ExplainerSpec) +ExplainerSpec)

    AlibiExplainerSpec defines the arguments for configuring an Alibi Explanation Server

    @@ -128,7 +128,7 @@ map[string]string type
    - + AlibiExplainerType @@ -185,11 +185,11 @@ map[string]string -

    AlibiExplainerType +

    AlibiExplainerType (string alias)

    (Appears on: -AlibiExplainerSpec) +AlibiExplainerSpec)

    @@ -212,11 +212,11 @@ map[string]string -

    Batcher +

    Batcher

    (Appears on: -DeploymentSpec) +DeploymentSpec)

    Batcher provides optional payload batcher for all endpoints

    @@ -272,13 +272,13 @@ int

    EndpointStatusMap defines the observed state of InferenceService endpoints

    -

    CustomSpec +

    CustomSpec

    (Appears on: -ExplainerSpec, -PredictorSpec, -TransformerSpec) +ExplainerSpec, +PredictorSpec, +TransformerSpec)

    CustomSpec provides a hook for arbitrary container configuration.

    @@ -305,13 +305,13 @@ Kubernetes core/v1.Container -

    DeploymentSpec +

    DeploymentSpec

    (Appears on: -ExplainerSpec, -PredictorSpec, -TransformerSpec) +ExplainerSpec, +PredictorSpec, +TransformerSpec)

    DeploymentSpec defines the configuration for a given InferenceService service component

    @@ -376,7 +376,7 @@ concurrency(h logger
    -
    + Logger @@ -390,7 +390,7 @@ Logger batcher
    - + Batcher @@ -402,11 +402,11 @@ Batcher -

    EndpointSpec +

    EndpointSpec

    (Appears on: -InferenceServiceSpec) +InferenceServiceSpec)

    @@ -422,7 +422,7 @@ Batcher predictor
    - + PredictorSpec @@ -435,7 +435,7 @@ PredictorSpec explainer
    - + ExplainerSpec @@ -450,7 +450,7 @@ explainer service calls to predictor or transformer if it is specified.

    transformer
    - + TransformerSpec @@ -463,15 +463,15 @@ transformer service calls to predictor service.

    -

    Explainer +

    Explainer

    -

    ExplainerConfig +

    ExplainerConfig

    (Appears on: -ExplainersConfig) +ExplainersConfig)

    @@ -505,11 +505,11 @@ string -

    ExplainerSpec +

    ExplainerSpec

    (Appears on: -EndpointSpec) +EndpointSpec)

    ExplainerSpec defines the arguments for a model explanation server, @@ -527,7 +527,7 @@ The following fields follow a “1-of” semantic. Users must specify ex alibi
    - + AlibiExplainerSpec @@ -540,7 +540,7 @@ AlibiExplainerSpec aix
    - + AIXExplainerSpec @@ -553,7 +553,7 @@ AIXExplainerSpec custom
    - + CustomSpec @@ -566,7 +566,7 @@ CustomSpec DeploymentSpec
    - + DeploymentSpec @@ -579,11 +579,11 @@ DeploymentSpec -

    ExplainersConfig +

    ExplainersConfig

    (Appears on: -InferenceServicesConfig) +InferenceServicesConfig)

    @@ -599,7 +599,7 @@ DeploymentSpec alibi
    - + ExplainerConfig @@ -611,7 +611,7 @@ ExplainerConfig aix
    - + ExplainerConfig @@ -621,7 +621,7 @@ ExplainerConfig -

    InferenceService +

    InferenceService

    InferenceService is the Schema for the services API

    @@ -652,7 +652,7 @@ Refer to the Kubernetes API documentation for the fields of the spec
    - + InferenceServiceSpec @@ -665,7 +665,7 @@ InferenceServiceSpec default
    - + EndpointSpec @@ -678,7 +678,7 @@ EndpointSpec canary
    - + EndpointSpec @@ -707,7 +707,7 @@ int status
    - + InferenceServiceStatus @@ -717,11 +717,11 @@ InferenceServiceStatus -

    InferenceServiceSpec +

    InferenceServiceSpec

    (Appears on: -InferenceService) +InferenceService)

    InferenceServiceSpec defines the desired state of InferenceService

    @@ -738,7 +738,7 @@ InferenceServiceStatus default
    - + EndpointSpec @@ -751,7 +751,7 @@ EndpointSpec canary
    - + EndpointSpec @@ -775,7 +775,7 @@ int -

    InferenceServiceState +

    InferenceServiceState (string alias)

    InferenceState describes the Readiness of the InferenceService

    @@ -793,11 +793,11 @@ int -

    InferenceServiceStatus +

    InferenceServiceStatus

    (Appears on: -InferenceService) +InferenceService)

    InferenceServiceStatus defines the observed state of InferenceService

    @@ -860,7 +860,7 @@ int default
    - + map[github.com/kubeflow/kfserving/pkg/constants.InferenceServiceComponent]github.com/kubeflow/kfserving/pkg/apis/serving/v1alpha2.StatusConfigurationSpec @@ -873,7 +873,7 @@ map[github.com/kubeflow/kfserving/pkg/constants.InferenceServiceComponent]github canary
    - + map[github.com/kubeflow/kfserving/pkg/constants.InferenceServiceComponent]github.com/kubeflow/kfserving/pkg/apis/serving/v1alpha2.StatusConfigurationSpec @@ -895,7 +895,7 @@ knative.dev/pkg/apis/duck/v1beta1.Addressable -

    InferenceServicesConfig +

    InferenceServicesConfig

    @@ -911,7 +911,7 @@ knative.dev/pkg/apis/duck/v1beta1.Addressable transformers
    - + TransformersConfig @@ -923,7 +923,7 @@ TransformersConfig predictors
    - + PredictorsConfig @@ -935,7 +935,7 @@ PredictorsConfig explainers
    - + ExplainersConfig @@ -945,11 +945,11 @@ ExplainersConfig -

    LightGBMSpec +

    LightGBMSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    LightGBMSpec defines arguments for configuring LightGBM model serving.

    @@ -1010,11 +1010,11 @@ Kubernetes core/v1.ResourceRequirements -

    Logger +

    Logger

    (Appears on: -DeploymentSpec) +DeploymentSpec)

    Logger provides optional payload logging for all endpoints

    @@ -1043,7 +1043,7 @@ string mode
    - + LoggerMode @@ -1054,11 +1054,11 @@ LoggerMode -

    LoggerMode +

    LoggerMode (string alias)

    (Appears on: -Logger) +Logger)

    @@ -1077,11 +1077,11 @@ LoggerMode -

    ONNXSpec +

    ONNXSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    ONNXSpec defines arguments for configuring ONNX model serving.

    @@ -1131,11 +1131,11 @@ Kubernetes core/v1.ResourceRequirements -

    PMMLSpec +

    PMMLSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    PMMLSpec defines arguments for configuring PMML model serving.

    @@ -1185,16 +1185,16 @@ Kubernetes core/v1.ResourceRequirements -

    Predictor +

    Predictor

    -

    PredictorConfig +

    PredictorConfig

    (Appears on: -PredictorProtocols, -PredictorsConfig) +PredictorProtocols, +PredictorsConfig)

    @@ -1249,11 +1249,11 @@ int64 -

    PredictorProtocols +

    PredictorProtocols

    (Appears on: -PredictorsConfig) +PredictorsConfig)

    @@ -1269,7 +1269,7 @@ int64 v1
    - + PredictorConfig @@ -1281,7 +1281,7 @@ PredictorConfig v2
    - + PredictorConfig @@ -1291,11 +1291,11 @@ PredictorConfig -

    PredictorSpec +

    PredictorSpec

    (Appears on: -EndpointSpec) +EndpointSpec)

    PredictorSpec defines the configuration for a predictor, @@ -1313,7 +1313,7 @@ The following fields follow a “1-of” semantic. Users must specify ex custom
    - + CustomSpec @@ -1326,7 +1326,7 @@ CustomSpec tensorflow
    - + TensorflowSpec @@ -1339,7 +1339,7 @@ TensorflowSpec triton
    - + TritonSpec @@ -1352,7 +1352,7 @@ TritonSpec xgboost
    - + XGBoostSpec @@ -1365,7 +1365,7 @@ XGBoostSpec lightgbm
    - + LightGBMSpec @@ -1378,7 +1378,7 @@ LightGBMSpec sklearn
    - + SKLearnSpec @@ -1391,7 +1391,7 @@ SKLearnSpec onnx
    - + ONNXSpec @@ -1404,7 +1404,7 @@ ONNXSpec pytorch
    - + PyTorchSpec @@ -1417,7 +1417,7 @@ PyTorchSpec pmml
    - + PMMLSpec @@ -1430,7 +1430,7 @@ PMMLSpec DeploymentSpec
    - + DeploymentSpec @@ -1443,11 +1443,11 @@ DeploymentSpec -

    PredictorsConfig +

    PredictorsConfig

    (Appears on: -InferenceServicesConfig) +InferenceServicesConfig)

    @@ -1463,7 +1463,7 @@ DeploymentSpec tensorflow
    - + PredictorConfig @@ -1475,7 +1475,7 @@ PredictorConfig triton
    - + PredictorConfig @@ -1487,7 +1487,7 @@ PredictorConfig xgboost
    - + PredictorProtocols @@ -1499,7 +1499,7 @@ PredictorProtocols lightgbm
    - + PredictorConfig @@ -1511,7 +1511,7 @@ PredictorConfig sklearn
    - + PredictorProtocols @@ -1523,7 +1523,7 @@ PredictorProtocols pytorch
    - + PredictorConfig @@ -1535,7 +1535,7 @@ PredictorConfig onnx
    - + PredictorConfig @@ -1547,7 +1547,7 @@ PredictorConfig pmml
    - + PredictorConfig @@ -1557,11 +1557,11 @@ PredictorConfig -

    PyTorchSpec +

    PyTorchSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    PyTorchSpec defines arguments for configuring PyTorch model serving.

    @@ -1622,11 +1622,11 @@ Kubernetes core/v1.ResourceRequirements -

    SKLearnSpec +

    SKLearnSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    SKLearnSpec defines arguments for configuring SKLearn model serving.

    @@ -1676,7 +1676,7 @@ Kubernetes core/v1.ResourceRequirements -

    StatusConfigurationSpec +

    StatusConfigurationSpec

    StatusConfigurationSpec describes the state of the configuration receiving traffic.

    @@ -1713,11 +1713,11 @@ string -

    TensorflowSpec +

    TensorflowSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    TensorflowSpec defines arguments for configuring Tensorflow model serving.

    @@ -1767,16 +1767,16 @@ Kubernetes core/v1.ResourceRequirements -

    Transformer +

    Transformer

    Transformer interface is implemented by all Transformers

    -

    TransformerConfig +

    TransformerConfig

    (Appears on: -TransformersConfig) +TransformersConfig)

    @@ -1810,11 +1810,11 @@ string -

    TransformerSpec +

    TransformerSpec

    (Appears on: -EndpointSpec) +EndpointSpec)

    TransformerSpec defines transformer service for pre/post processing

    @@ -1831,7 +1831,7 @@ string custom
    - + CustomSpec @@ -1844,7 +1844,7 @@ CustomSpec DeploymentSpec
    - + DeploymentSpec @@ -1857,11 +1857,11 @@ DeploymentSpec -

    TransformersConfig +

    TransformersConfig

    (Appears on: -InferenceServicesConfig) +InferenceServicesConfig)

    @@ -1877,7 +1877,7 @@ DeploymentSpec feast
    - + TransformerConfig @@ -1887,11 +1887,11 @@ TransformerConfig -

    TritonSpec +

    TritonSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    TritonSpec defines arguments for configuring Triton Inference Server.

    @@ -1941,7 +1941,7 @@ Kubernetes core/v1.ResourceRequirements -

    VirtualServiceStatus +

    VirtualServiceStatus

    VirtualServiceStatus captures the status of the virtual service

    @@ -2008,11 +2008,11 @@ knative.dev/pkg/apis/duck/v1beta1.Status -

    XGBoostSpec +

    XGBoostSpec

    (Appears on: -PredictorSpec) +PredictorSpec)

    XGBoostSpec defines arguments for configuring XGBoost model serving.

    diff --git a/docs/apis/v1beta1/README.md b/docs/apis/v1beta1/README.md index f1024949dc94..f8a49a52c094 100644 --- a/docs/apis/v1beta1/README.md +++ b/docs/apis/v1beta1/README.md @@ -1,19 +1,19 @@

    Packages:

    -

    serving.kubeflow.org/v1beta1

    +

    serving.kserve.io/v1beta1

    Package v1beta1 contains API Schema definitions for the serving v1beta1 API group

    Resource Types:
      -

      AIXExplainerSpec +

      AIXExplainerSpec

      -(Appears on:ExplainerSpec) +(Appears on:ExplainerSpec)

      AIXExplainerSpec defines the arguments for configuring an AIX Explanation Server

      @@ -30,7 +30,7 @@ Resource Types: type
      - + AIXExplainerType @@ -43,7 +43,7 @@ AIXExplainerType ExplainerExtensionSpec
      - + ExplainerExtensionSpec @@ -57,10 +57,10 @@ ExplainerExtensionSpec -

      AIXExplainerType +

      AIXExplainerType (string alias)

      -(Appears on:AIXExplainerSpec) +(Appears on:AIXExplainerSpec)

      @@ -75,10 +75,10 @@ ExplainerExtensionSpec -

      ARTExplainerSpec +

      ARTExplainerSpec

      -(Appears on:ExplainerSpec) +(Appears on:ExplainerSpec)

      ARTExplainerType defines the arguments for configuring an ART Explanation Server

      @@ -95,7 +95,7 @@ ExplainerExtensionSpec type
      - + ARTExplainerType @@ -108,7 +108,7 @@ ARTExplainerType ExplainerExtensionSpec
      - + ExplainerExtensionSpec @@ -122,10 +122,10 @@ ExplainerExtensionSpec -

      ARTExplainerType +

      ARTExplainerType (string alias)

      -(Appears on:ARTExplainerSpec) +(Appears on:ARTExplainerSpec)

      @@ -140,10 +140,10 @@ ExplainerExtensionSpec -

      AlibiExplainerSpec +

      AlibiExplainerSpec

      -(Appears on:ExplainerSpec) +(Appears on:ExplainerSpec)

      AlibiExplainerSpec defines the arguments for configuring an Alibi Explanation Server

      @@ -160,7 +160,7 @@ ExplainerExtensionSpec type
      - + AlibiExplainerType @@ -231,10 +231,10 @@ Each framework will have different defaults that are populated in the underlying -

      AlibiExplainerType +

      AlibiExplainerType (string alias)

      -(Appears on:AlibiExplainerSpec) +(Appears on:AlibiExplainerSpec)

      AlibiExplainerType is the explanation method

      @@ -258,10 +258,10 @@ Each framework will have different defaults that are populated in the underlying -

      Batcher +

      Batcher

      -(Appears on:ComponentExtensionSpec) +(Appears on:ComponentExtensionSpec)

      Batcher specifies optional payload batching available for all components

      @@ -312,15 +312,15 @@ int -

      Component +

      Component

      Component interface is implemented by all specs that contain component implementations, e.g. PredictorSpec, ExplainerSpec, TransformerSpec.

      -

      ComponentExtensionSpec +

      ComponentExtensionSpec

      -(Appears on:ExplainerSpec, PredictorSpec, TransformerSpec) +(Appears on:ExplainerSpec, PredictorSpec, TransformerSpec)

      ComponentExtensionSpec defines the deployment configuration for a given InferenceService component

      @@ -398,7 +398,7 @@ int64 logger
      - + LoggerSpec @@ -412,7 +412,7 @@ LoggerSpec batcher
      - + Batcher @@ -424,15 +424,15 @@ Batcher -

      ComponentImplementation +

      ComponentImplementation

      ComponentImplementation interface is implemented by predictor, transformer, and explainer implementations

      -

      ComponentStatusSpec +

      ComponentStatusSpec

      -(Appears on:InferenceServiceStatus) +(Appears on:InferenceServiceStatus)

      ComponentStatusSpec describes the state of the component

      @@ -532,7 +532,7 @@ knative.dev/pkg/apis/duck/v1.Addressable -

      ComponentType +

      ComponentType (string alias)

      ComponentType contains the different types of components of the service

      @@ -552,7 +552,7 @@ knative.dev/pkg/apis/duck/v1.Addressable -

      CustomExplainer +

      CustomExplainer

      CustomExplainer defines arguments for configuring a custom explainer.

      @@ -582,7 +582,7 @@ Kubernetes core/v1.PodSpec -

      CustomPredictor +

      CustomPredictor

      CustomPredictor defines arguments for configuring a custom server.

      @@ -612,7 +612,7 @@ Kubernetes core/v1.PodSpec -

      CustomTransformer +

      CustomTransformer

      CustomTransformer defines arguments for configuring a custom transformer.

      @@ -642,10 +642,10 @@ Kubernetes core/v1.PodSpec -

      ExplainerConfig +

      ExplainerConfig

      -(Appears on:ExplainersConfig) +(Appears on:ExplainersConfig)

      @@ -681,10 +681,10 @@ string -

      ExplainerExtensionSpec +

      ExplainerExtensionSpec

      -(Appears on:AIXExplainerSpec, ARTExplainerSpec) +(Appears on:AIXExplainerSpec, ARTExplainerSpec)

      ExplainerExtensionSpec defines configuration shared across all explainer frameworks

      @@ -750,10 +750,10 @@ Each framework will have different defaults that are populated in the underlying -

      ExplainerSpec +

      ExplainerSpec

      -(Appears on:InferenceServiceSpec) +(Appears on:InferenceServiceSpec)

      ExplainerSpec defines the container spec for a model explanation server, @@ -771,7 +771,7 @@ The following fields follow a “1-of” semantic. Users must specify ex alibi
      - + AlibiExplainerSpec @@ -784,7 +784,7 @@ AlibiExplainerSpec aix
      - + AIXExplainerSpec @@ -797,7 +797,7 @@ AIXExplainerSpec art
      - + ARTExplainerSpec @@ -810,7 +810,7 @@ ARTExplainerSpec PodSpec
      - + PodSpec @@ -830,7 +830,7 @@ overrides in the PodSpec. They must not provide PodSpec.Containers in this case. ComponentExtensionSpec
      - + ComponentExtensionSpec @@ -844,10 +844,10 @@ ComponentExtensionSpec -

      ExplainersConfig +

      ExplainersConfig

      -(Appears on:InferenceServicesConfig) +(Appears on:InferenceServicesConfig)

      @@ -863,7 +863,7 @@ ComponentExtensionSpec alibi
      - + ExplainerConfig @@ -875,7 +875,7 @@ ExplainerConfig aix
      - + ExplainerConfig @@ -887,7 +887,7 @@ ExplainerConfig art
      - + ExplainerConfig @@ -897,7 +897,7 @@ ExplainerConfig -

      InferenceService +

      InferenceService

      InferenceService is the Schema for the InferenceServices API

      @@ -928,7 +928,7 @@ Refer to the Kubernetes API documentation for the fields of the spec
      - + InferenceServiceSpec @@ -941,7 +941,7 @@ InferenceServiceSpec predictor
      - + PredictorSpec @@ -954,7 +954,7 @@ PredictorSpec explainer
      - + ExplainerSpec @@ -969,7 +969,7 @@ explainer service calls to predictor or transformer if it is specified.

      transformer
      - + TransformerSpec @@ -987,7 +987,7 @@ transformer service calls to predictor service.

      status
      - + InferenceServiceStatus @@ -997,10 +997,10 @@ InferenceServiceStatus -

      InferenceServiceSpec +

      InferenceServiceSpec

      -(Appears on:InferenceService) +(Appears on:InferenceService)

      InferenceServiceSpec is the top level type for this resource

      @@ -1017,7 +1017,7 @@ InferenceServiceStatus predictor
      - + PredictorSpec @@ -1030,7 +1030,7 @@ PredictorSpec explainer
      - + ExplainerSpec @@ -1045,7 +1045,7 @@ explainer service calls to predictor or transformer if it is specified.

      transformer
      - + TransformerSpec @@ -1058,10 +1058,10 @@ transformer service calls to predictor service.

      -

      InferenceServiceStatus +

      InferenceServiceStatus

      -(Appears on:InferenceService) +(Appears on:InferenceService)

      InferenceServiceStatus defines the observed state of InferenceService

      @@ -1122,7 +1122,7 @@ It generally has the form http[s]://{route-name}.{route-namespace}.{cluster-leve components
      - + map[github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1.ComponentType]github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1.ComponentStatusSpec @@ -1133,7 +1133,7 @@ map[github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1.ComponentType]github. -

      InferenceServicesConfig +

      InferenceServicesConfig

      @@ -1149,7 +1149,7 @@ map[github.com/kubeflow/kfserving/pkg/apis/serving/v1beta1.ComponentType]github. transformers
      - + TransformersConfig @@ -1162,7 +1162,7 @@ TransformersConfig predictors
      - + PredictorsConfig @@ -1175,7 +1175,7 @@ PredictorsConfig explainers
      - + ExplainersConfig @@ -1186,7 +1186,7 @@ ExplainersConfig -

      IngressConfig +

      IngressConfig

      @@ -1240,10 +1240,10 @@ string -

      LightGBMSpec +

      LightGBMSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      LightGBMSpec defines arguments for configuring LightGBMSpec model serving.

      @@ -1260,7 +1260,7 @@ string PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -1274,10 +1274,10 @@ PredictorExtensionSpec -

      LoggerSpec +

      LoggerSpec

      -(Appears on:ComponentExtensionSpec) +(Appears on:ComponentExtensionSpec)

      LoggerSpec specifies optional payload logging available for all components

      @@ -1306,7 +1306,7 @@ string mode
      - + LoggerType @@ -1322,10 +1322,10 @@ Valid values are:
      -

      LoggerType +

      LoggerType (string alias)

      -(Appears on:LoggerSpec) +(Appears on:LoggerSpec)

      LoggerType controls the scope of log publishing

      @@ -1348,10 +1348,10 @@ Valid values are:
      -

      ONNXRuntimeSpec +

      ONNXRuntimeSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      ONNXRuntimeSpec defines arguments for configuring ONNX model serving.

      @@ -1368,7 +1368,7 @@ Valid values are:
      PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -1382,10 +1382,10 @@ PredictorExtensionSpec -

      PMMLSpec +

      PMMLSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      PMMLSpec defines arguments for configuring PMML model serving.

      @@ -1402,7 +1402,7 @@ PredictorExtensionSpec PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -1416,10 +1416,10 @@ PredictorExtensionSpec -

      PodSpec +

      PodSpec

      -(Appears on:ExplainerSpec, PredictorSpec, TransformerSpec) +(Appears on:ExplainerSpec, PredictorSpec, TransformerSpec)

      PodSpec is a description of a pod.

      @@ -1979,10 +1979,10 @@ Default to false.

      -

      PredictorConfig +

      PredictorConfig

      -(Appears on:PredictorProtocols, PredictorsConfig) +(Appears on:PredictorProtocols, PredictorsConfig)

      @@ -2062,10 +2062,10 @@ bool -

      PredictorExtensionSpec +

      PredictorExtensionSpec

      -(Appears on:LightGBMSpec, ONNXRuntimeSpec, PMMLSpec, SKLearnSpec, TFServingSpec, TorchServeSpec, TritonSpec, XGBoostSpec) +(Appears on:LightGBMSpec, ONNXRuntimeSpec, PMMLSpec, SKLearnSpec, TFServingSpec, TorchServeSpec, TritonSpec, XGBoostSpec)

      PredictorExtensionSpec defines configuration shared across all predictor frameworks

      @@ -2134,15 +2134,15 @@ Each framework will have different defaults that are populated in the underlying -

      PredictorImplementation +

      PredictorImplementation

      PredictorImplementation defines common functions for all predictors e.g Tensorflow, Triton, etc

      -

      PredictorProtocols +

      PredictorProtocols

      -(Appears on:PredictorsConfig) +(Appears on:PredictorsConfig)

      @@ -2158,7 +2158,7 @@ Each framework will have different defaults that are populated in the underlying v1
      - + PredictorConfig @@ -2170,7 +2170,7 @@ PredictorConfig v2
      - + PredictorConfig @@ -2180,10 +2180,10 @@ PredictorConfig -

      PredictorSpec +

      PredictorSpec

      -(Appears on:InferenceServiceSpec) +(Appears on:InferenceServiceSpec)

      PredictorSpec defines the configuration for a predictor, @@ -2201,7 +2201,7 @@ The following fields follow a “1-of” semantic. Users must specify ex sklearn
      - + SKLearnSpec @@ -2214,7 +2214,7 @@ SKLearnSpec xgboost
      - + XGBoostSpec @@ -2227,7 +2227,7 @@ XGBoostSpec tensorflow
      - + TFServingSpec @@ -2240,7 +2240,7 @@ TFServingSpec pytorch
      - + TorchServeSpec @@ -2253,7 +2253,7 @@ TorchServeSpec triton
      - + TritonSpec @@ -2266,7 +2266,7 @@ TritonSpec onnx
      - + ONNXRuntimeSpec @@ -2279,7 +2279,7 @@ ONNXRuntimeSpec pmml
      - + PMMLSpec @@ -2292,7 +2292,7 @@ PMMLSpec lightgbm
      - + LightGBMSpec @@ -2305,7 +2305,7 @@ LightGBMSpec PodSpec
      - + PodSpec @@ -2325,7 +2325,7 @@ overrides, you must not provide PodSpec.Containers in this case.

      ComponentExtensionSpec
      - + ComponentExtensionSpec @@ -2339,10 +2339,10 @@ ComponentExtensionSpec -

      PredictorsConfig +

      PredictorsConfig

      -(Appears on:InferenceServicesConfig) +(Appears on:InferenceServicesConfig)

      @@ -2358,7 +2358,7 @@ ComponentExtensionSpec tensorflow
      - + PredictorConfig @@ -2370,7 +2370,7 @@ PredictorConfig triton
      - + PredictorConfig @@ -2382,7 +2382,7 @@ PredictorConfig xgboost
      - + PredictorProtocols @@ -2394,7 +2394,7 @@ PredictorProtocols sklearn
      - + PredictorProtocols @@ -2406,7 +2406,7 @@ PredictorProtocols pytorch
      - + PredictorProtocols @@ -2418,7 +2418,7 @@ PredictorProtocols onnx
      - + PredictorConfig @@ -2430,7 +2430,7 @@ PredictorConfig pmml
      - + PredictorConfig @@ -2442,7 +2442,7 @@ PredictorConfig lightgbm
      - + PredictorConfig @@ -2452,10 +2452,10 @@ PredictorConfig -

      SKLearnSpec +

      SKLearnSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      SKLearnSpec defines arguments for configuring SKLearn model serving.

      @@ -2472,7 +2472,7 @@ PredictorConfig PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -2486,10 +2486,10 @@ PredictorExtensionSpec -

      TFServingSpec +

      TFServingSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      TFServingSpec defines arguments for configuring Tensorflow model serving.

      @@ -2506,7 +2506,7 @@ PredictorExtensionSpec PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -2520,10 +2520,10 @@ PredictorExtensionSpec -

      TorchServeSpec +

      TorchServeSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      TorchServeSpec defines arguments for configuring PyTorch model serving.

      @@ -2552,7 +2552,7 @@ string PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -2566,10 +2566,10 @@ PredictorExtensionSpec -

      TransformerConfig +

      TransformerConfig

      -(Appears on:TransformersConfig) +(Appears on:TransformersConfig)

      @@ -2605,10 +2605,10 @@ string -

      TransformerSpec +

      TransformerSpec

      -(Appears on:InferenceServiceSpec) +(Appears on:InferenceServiceSpec)

      TransformerSpec defines transformer service for pre/post processing

      @@ -2625,7 +2625,7 @@ string PodSpec
      - + PodSpec @@ -2645,7 +2645,7 @@ overrides, you must not provide PodSpec.Containers in this case.

      ComponentExtensionSpec
      - + ComponentExtensionSpec @@ -2659,10 +2659,10 @@ ComponentExtensionSpec -

      TransformersConfig +

      TransformersConfig

      -(Appears on:InferenceServicesConfig) +(Appears on:InferenceServicesConfig)

      @@ -2678,7 +2678,7 @@ ComponentExtensionSpec feast
      - + TransformerConfig @@ -2688,10 +2688,10 @@ TransformerConfig -

      TritonSpec +

      TritonSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      TritonSpec defines arguments for configuring Triton model serving.

      @@ -2708,7 +2708,7 @@ TransformerConfig PredictorExtensionSpec
      - + PredictorExtensionSpec @@ -2722,10 +2722,10 @@ PredictorExtensionSpec -

      XGBoostSpec +

      XGBoostSpec

      -(Appears on:PredictorSpec) +(Appears on:PredictorSpec)

      SKLearnSpec defines arguments for configuring SKLearn model serving.

      @@ -2742,7 +2742,7 @@ PredictorExtensionSpec PredictorExtensionSpec
      - + PredictorExtensionSpec diff --git a/docs/diagrams/kfs_architect.drawio b/docs/diagrams/kfs_architect.drawio new file mode 100644 index 000000000000..99c0e69e44aa --- /dev/null +++ b/docs/diagrams/kfs_architect.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/diagrams/kfs_architect.png b/docs/diagrams/kfs_architect.png index 1e9273eca2dcfd1abdfba70ffe7d2cb453f257e2..d8b19d3dd0bf41f0ec7a6f3ea5dd07a6327fc818 100644 GIT binary patch literal 72816 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 literal 410830 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

      hu`_B1ivXj*ZsQ@y(Dw{QF0PUog&%u7F% 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 diff --git a/docs/diagrams/kserve.png b/docs/diagrams/kserve.png new file mode 100644 index 0000000000000000000000000000000000000000..8639fcfb2c46c901a227736a3c2cbca7cbd24431 GIT binary patch literal 472792 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

      NLvO6A`kxd+N@HZebW)$PGe~&Ut86fx;tt4k z%1><9RC-Z76lzQK=-_XTq6>EMAUkDoDR2TsD+%=UiPvc%L`?FKVNdqS&MLLyDUsyb zJxd>L^YYH0LCErsTNK$N!U!h>?Kbu)Gk+_{%l{TpRh2&P*AQwTOk)sq*4Rb;QX>j? zg}*t8Dm_p~STprKEo(Xoc6fjt`5qW6xAqlRvrTw}54uczOf8hqqvRVfX!?fQ^6Eb( zqE8fhohWMyEfkz$q2MH4_AQ0CYL$pP5hI+k52zDme6Vd@X(icwsu@-BR=GjCda?kU z!iivVjF9Uuw*ycrlp27h=r|em{%22k4wNzbLOkrkVPvYwjb`z|evoz=h<>+YoXjW1LjjCH!Y`S@+TUb&2t=OuFlMs4MCkw`6t7u^X@8np=y5o*MlXwqEF?9rv!Hi z%o;^^`N*q8qgtPGf$W%^if!SNE$-;y8Rz(dekG*8X)&rY>VGkY+RT^V!m{p?yw-&c zT;sdirBp3eSKTd31X}URO_ypGb7zKI7UX8b)rea*I1x_A*|aoDHy~|^#-8OTKnYeM z_E#uI&7B{nN{#=Z! zp=ZbM4&*>2>`Eh$tFKMNnb+IB0AloZf`ro%GKtHSS(75;n|1Tjkv#G zDkF3lAxB}fnB*n{aWy5?C+*L$aLG#E21}$CDiY&BC(^Gh%Vwaj=3e{jN)?Ll=}NfI zLlPKmPVLE2DSGYOeX1XJ$2MC%T?Bf6T!lG;71{2`nK3*CoX%tSqiGR?F-vT!^8{9X zlyjvCP;}US<%CHlT5i#KL)Yq=$mPW8UjY93&XSf#GI63{H`!q$%|F+=j_@eeRa#j6 z^u9Za^zUZ5aGcowp&Hw-&>)#3GC)0#!Xb9w=dHJ6JIo7{0SFLr-p;e~`0trghns8` zJn@9F>x*6yd#&k#{txV1DKF15*GJ(ofNr+mP+QP28yMf!aGg`j`B7|uL_szZuyaY% z1n%r}S<)$~S_YWj?962X>o7-FgbQUf2~akhz?eq53zfQmQvl|mXVzR+Q3CWjd?i2} zLkl+D*pP>r((5#E29;(4_Z&BqVP>ShJZbz;bln7+Usf7FW56o$xtvhSX>r9BaTfKf zceSz=pyK6zxpPqF%q#k$lHbVV6t{q1rvl`=P}Z$DHi5tLpoNieX{s@4<(?vOm;K5y zH2yHurn+AH=WqBCf3DFCn!`X^9bRIc0`aC0@%axTMVclcY^PvD4BKCTt3!qIe4)vS>d$ti$vbEd?J9rkITvuG#WajpUjKnJEGKn$zRI+0kq; zraUO3l{QoIDbT!}&-J=FEC0x|xmIUwD=H(R+Ot?E-x=dGud;Lk-H;Zp+~TKR$Yqzy zOZLMW5!HO(GjY9orpSB$6`zO!2HC|*9T|)9Uq52$b^0^g!>qXHg&OUK{XSi3XU}6R z&kk!#TFpcT$q`D`BwAt=Mskpm3_EzZ9K~VFsP~2bWjBs^MhlQz3aE#j>~gDCnvlqQ zQ}&B!hwcT+ z;;`~NT&Yr#j%Q{dc3*zGWZNv$wjutxUKOp6-tPEtj$IA+iYb*>SGWl);eKddCN7ar znY^eUf|05=(@_-F#9w${}8HS9L~&IL0L>Flo9pR zoTvV~Yyu-Y2%uRXBYi(qg_5OY=w0VAJ{x|ANrLRO-d-Xn3E4L``~h=+-J1hQ41y!t z{e4Ke$xWG{^2fBD#{GjKE$##tU2n;>y=hvhF-60J>G*xl;(`6GVw1gJCTu{wQQ<;n z84A(2^2wj2RA!ewll{(JNisvKtgnay((W-<@V#GAtp_gWglpk{^T zhe@BPbZ%`cMG_myfttfOq!sYrCAXEd@qAlbe16N+DapRsMgr+te;C(**j&LahIn<=K zk4P=c5R$}W8jbSeT7Rgzil$zVbcnj2ij!;?RjkaZ$>)4PdzCWzGX2>xcThDG&%92* z1I8JFTuWh1JO2xTorW#Mjga9x97gT8GY5Qb_ta^}p2bBw{VqhbT{L)k|6UGK5&JR2 zKVKD&=(!giS{l|$HCy|y`}C;B7@5u_nV@(pTp@@SShZRhnXUc$px)$bA3%q63GHk1mu9w zpmK-4e(<@;{)yW07p%SnO{YDnoYbg0G6BNuMkC3%=m_x^#XyRcj$-S}ASrakg?r{a zl31aPC{aEkh5;)TRw(3$HKm|!t2&@6B^B+qoGq9P1jVtrUD7~x&5yD?zsR)sEhe_y zEoOgZKZ6xYo|Tlqg5_4TpPW1&R>KmE=c)LH?S%wA?_)y=g~YdINvIaM%d1W+1Rs`) zy%RsF_kWPcw<*! z{R8o%$WU2k`~(abu_i(s{==y7k9BHbW>f}xoeb12Dl@^FE}i_6o{%-<#9<^`Wv zKLYC4irq_Lm0sKYfDJ?is<%ZEkAQX%PzBBIwejy(SaN+~>d}RtPTeBqPQyKq{e6M0(%232?Ct@aI4{{m6 znq4ZBPqyZ-sW}~K&T!>W;-aIKDA=dl$fumiRbyBLn_PRPDbm3^ zOk95@N5KD)G=^!?#SFD-=#Gl%s8sZYW(3M3(up-sW~l(D&?43M_`hOou)}L0m)lh# zsND)260}x2nl_=cnx>yz1Y=FYC6_ko0mx{38=$LGapgSp3j7z$=I=4Wu*CR zvW(yb&XJuanTuEAI$3t)M$nHsNL{p*GfQA^&glsn*+@X90(a|0sp^MXuFv&yy|V8eii0ed zDxCd!$Cy%^r1~wSI=F~63H2S+I+BcfF-)pD=|eb57;R)dZ4a!nOt?!HGRgHLq{^|# z(JwX<^$LZcf@|?F!G*E2Df4sGv!tC+JJS5?$Rbp{s?GKZN5rz7S4exofZ5(VUP zRB)V>hB`{jdMV>LR-%(1zv`t{X4rt7jMOKQ1SG7+Qv`?i(TE9g(#Yw;;vG8~DJ+BOBN2@8s%W&T(rdUn`<&TGF`BPwvf065J}*c!MdO;)vYNVUroK#jMrJ_{XDP5{lOma0^ZMEx@~* z77QKdpg|wUPtKy?TGV3PfpOj#lb+i(sP_U(iL5ln&ti!GG8SmclcaLA#WxJzJ(_Ef zlkj?U`OIZo6eP<+bL4&*rv)!$F{=IEDFRt;TRFeX(JFo@X6@ufwboiQ`$#U9@EDKr zsBwidu6R277r`-LZGh68Yl{P_CV(?+L#+)L$#-wc+Evwk(7!$>EUA0qojbuM`oBMK zz@uFg)`9Ym2iKmOei>f;8~sDiljhq#KB(LIQ3tAi3qemFA?pj}zxa@y`rq9f=xz7e zgGpSH#0zi*3yS=OZ?w8V(c*zqK$vgN>7oEEpIs1aDjw&zYA~sfBP#(;+z9G7h*p(D z&3o4X=|k@mV$1oj@<2a$rtF}w>BwSLtW=Nb#h~bm3>7ll^sR_e^#u{0#prm3Z^1^N z#?L5`&u~MLGnC93-t}6;dg-4ci>!oO^E1lOK<*Ka_USzSabmUp+}kJmeJscR^`LSna{Qt5=h-H72A+G%WT@B8EpTP!_Xj@k`ZZ4P8nVDE;#t1r$M ztqpKMlk;&DY3IpX`+hfkaDr53*>0)h;WQ?x?m=2mAGy5Pv*&R2bE;MWd_P^FLot>9 z=efaoN;8SWwDQ|^hnd4l*9~3C^)AFFQN)@ZtDRz#&gYGFn{HPfvzip%cf1*XqP>EI z$T=XyG)CvFsif6o(gYK}4wRbR0*l3HQ~2=J8Z}$a@I<^zm0+L1tf7Ws#aKxE;jsI3v>KDExGhZ+tyDcRf!sg_u7coc^uP zM~MI3A7P%0H`5ORe2200#N?$M;w8NIxqTaL+fYBvz=P4D;Nbr@{T9m%B?0H~VnY?& zNU5fPqy*h0P#K@#X(LNa8L%N)jBAd(%&gFv^h;{aP7WYWHF{oXeg-nGg5009*Dr69 zuacz~%DAN?TK5xm3Qj*XHMuPz;otmu4ZG|7$GUPu(|N!2=%9$~DKNu=Su?RMi4OYx zvD)c#P|W?uDEwKUWf{9q8sbNI+#%<}3>2VmLVC3!hu&}&r9y_>N^~|;S{)pc{^(>U zZ=toEhPqtUoCC5-al$IG(i2_@v(cRiBBc1}uHxTP1$35Maa#0lf|{6pERvBZ|_gt_FgYe9+oM#Ny_Bi_mSd&gd?{WKr0n=A_h$875`G?vR1W2xR^GR^q#xRt}24l#@?Cwm;eEF z!iX=UNIdgkB9MfVSJKGOkpY3!_!<$&nzXj)IwQ*NcDb%}3W zovZJzTQ&EWgD}mgoIZ8smKuKgfNWN(-ifk`jEu})$J;6iq03%f{EJCrGTYmQ@(xzq zRQSteNz}K?lZc^GCe5{41Scm7*~4q5g}}&apFcyKjP%F0*jO+q?G2nrg-c#H*5l1i zj*hSp`fkqf8{gBOP$HuTldau;hZ$HGL>qfB4}9iLXrrI=$<$C|`;Dl!q?tkr6Y`{! z&D8nSzSO)LVEsj$a7#`n?Ck2w{jh*@?hme$KEuG}TYkNaEjh}L#I?SuUi$_A0pEO6 z_#zlE5pG4;U+bDe-Lq_Y6I+|oa67gAfbqa&lEzzo^(c0-U_z?w$fZ0`x259Hxc!^U zBF<+n?_|bAUU}lRyj{1J>JCRJr7oJWG548&D1Yf`2YS&_Fn-!!ifGN;*+CX7(bWh> z0O5o?16``vXXo+YPLTnJWizFJNL|7>}e2V&LM^a9U1ACUeGg!Q`m& zB2kVF494*i+)Y&E! z6wnr`zQn4j#=`jH7j;Pc80FbSinFM;>$oEwd*?BX_O`)1_+E1{1XTO4$;) z{ERDYJFD8Q88FO%-aQ4?yNf<%6w}Ki4uefl)VMP>ovc11OvMtfUBG4b!tajEFUT|fJ84}=0-qFknO z5eqh#gOB43*FKo6qF9ukf{2{#*4$`gvFiuYaGf1PJ|d*+OuEALI* z@D&z5n7*-Y3LI9u;RYGDH)OP4HrG&qc5p0jXVG-#i>=J%{6X)tQBzea?3R+9<}(7v z6?Ha%b`cb5PL+$mHdC|gpE&EL33Rp~akpI}Dff_T@8EBhcJfF6N zUmhc5A5Eh_6)VYU*4dU?AC^9N_LQXs>>rO@v_gU7iS?SqR2vE$WmCD^o9R73h>!6> zkSd$YzWTnjhvwUCqa2HcV`Ukg<#CxGk`aCBw>+P-^yh(Ios3#{edd7+?$Tec=C}E{ z?KdUiHUqI4m{F5!5^T6H)yV{mZqla9wF_2(*&N2Afgoc|UVn{AoRvV@ni&=5YODu; z>|BGb^qkQA-1IG72xoUETq^L6Kq{q-TWStTY0v4e-Utlzu!MQjf&issY|sH4T??5y znFlr~UZcsmR5p!IRU#CR99`hl2Zexxc1gN{6&(e#+U-wx*{k9f*u8{d9kY zN)29K^LvhyZ%3^@0)i7`PzkyEM!c@sEtZ=bIQ?gOLh&g)AFktStrrN4MffjdU`+A3 zZBl(LL!Z#SPGK!(%5;Jn(Q|&=Z%8C@TE&06o--S7aYSYtWW zkGlk~0b~3y)AnrQfo9bz9Y>G9&;Jg9A4ij`{V6yydsvLwVvC8q+61s?WdsCw9Gz6? z%LB60@AQIV`;8v_B8Db**5~rp`yy@cr>pT64;NT1So7P5eF@=k`2AnyzzoDpmuh*h z7!)q=Jhm@CY$fQ;llXES*6@=5Ce4yFHqKde-3ZH*lgJXvqH zXCuc%!DPX-r)iac*&Lt40cV|YIn<|B-s+Zn2{>ewoWh!9#BNm8M^PkmV-b1K5;6-h z0qXnaL+v+##Ybc&`#~ z|EjiMlDHF1OSk+pt$e#hQmD){-}!bpjdw-_MH4iz=^Y;d4xU`PSGw*8ZKq}Nwe{cCoDeu2GP zR!>SzF{ZbYu82>I?N5J2?>)CG8vhVaI68n483@YCzP@qx8kQ=TPv>Fo#f`q?+$L-UOba~nYC&MMbJcuwD-K84)iiyo@CrW z-XFV(9w#!MjZdkW<*S1$!CrR77XY~c5ePru8o}<^H8nmQH=*he&5kwjcEam}E;4ce-Ix0LxF*1s3@n&DG{elYAjYulWj zkHVZD0oRwr%H87Y2bzp;Z`}JE&_6U$cHdTEbQ@C((Lj4B*Y|yGu^Gpht3#ZxwX~+3J2Q zoyuWzup@&LNGFK;a!mjql$=^_Cv-HCA8{1N<7Udi>g{_cbh`@cp9Q{mzuYxA8ZgJd zW6b~pr|lQQ=Vy*n@1BOO<*R>%6ctB@F+Ul0eH)cw6tjgdG8m@$mZXF7Z-i}U@0Zu z&-|&rB9L~oi4yH=i_IYwlV)9HdF!nv@y_%dYH|2J^H#Vcog}x%Ka8X7zZplWg(FH4 zm9a&!Gt@ldv0XeG_jTuZMuCprlaCH(bq-O7!nXYeJjhr)uqb#6oFAD(dt9l$rp zmVrtL#@(YVP9yyE5du%&b#T*IErJfGZaPD7V-`3rE#;gdDSqoQ1K@C`C-<(d35Zj} zYmjf@Bd9I?rHd@%Tumdpk65Nfo7n5M+~VT0=Vqi}kyn;(j?BaDe5nCRGD`w_)_75N z+T$`Rwl7}M?^#u6MIZm=Irc1I&c$p^r`@`8>GW7xd@+T+K5WN&$$a0r_Nr;SgLL}C z2gx+}3uWUAy$h(iy>$k@J~okt5)P^aGiOLyBk)U|EAmq~sB(Y=9Pl#aK`;AAo5m2) zj)q z*J~^!4N}8_IQ_r0pOFH(Kd|<1zp3Xv6FPQ!+@66@v`#%4D|4zWh**Qhp+`gSqI zjYA*%`lrj1Q$h_SzqxM3YhfP!G>}4Z6ek>YKE6_Df7Pj4>W=RyOOI&e;L>+Ssu`y` zW5q3kYrH%&b+nNue#TGWeFlstZGw@%Ky}DYPNr8TY52zbx3;5R^Bo5Zwbtx*kr^Vw zU>@99;>#a9o9JJ6XslsVQ+Vuu`8w7uIt+a1;N9*kP|6z`w3YnZIF|H9a z{*UjQTv^Q3cLfmkw>>dTqRqM8+|pQo$<9kI3G9-(^^pp=%BN?dgj11joh~2FRZYCw z;R)jNyFM2v5H=SZ6|&Oq6W&Dcm$F)hm?)ZN%JmDKxsT?HXcc7&4nmf9-nSJ5iwpH{ zarVp3ne~wGR+&tDgKAtsK+i$7As<~(j)-JG4a8|&FLlFoFwvlb_@erAmFak%93e9H zpb)qFrTLE^KYri!k>Ccjb(5paNQc88H$Po33^hcb``d5QIOTmY%M`wIO{*OX7x4hT zPfz8Vdo3ys`>TMR&EwLEmzni1APdANpqeHTmPlctfZH5?1lA4>o_(L_oxYE+ zBN1VB*vdyDne;|Eg<$)^X+vuo&E~88gbY!lTrq2|}l< zZjlKBbUS1wtTu-aJa6DuiQ4jK+G6KHec)lRnKJq+(Xh=WW_|-UgW9Zi@;d{+BOOq1 zeI1N$o~$`Y@wQj^c`Q>c^<uhk*EGrg#={|j^9X-OH)FCELLiF->Q2(;F;~y}8_dDD zvW=>>xx~F37l`yZCjszx+m1^5_n=OeW@e&1=@*n})=C>hb-9zU==+G}(#Pdk_j1A6 z#;Vux>i^_qnC=@7yqA>UhcRQ8ZMykblUTH$syLY%jZnpBciL_|Di4n19GKC#opMVi ztv~+GH@AlL$1HH@fLkU(SI5|=aUDE=7EHI%M!*taLiy>f+pVmsEEuD|Wi9?7SN@3) zBTKPwHp{FAty#AT2yOT_-SQ=Qv-PWBkDU}bM=j$H~Lyfa;cZ;;y17eBpm?q}8Gkk2^_g8@q>SF{A}64Zy~9CT z9n!EJCr2~Gj{~auc{z2wlZ_jp_+9$3@f;J(hOJ?(!7Ow;8^6v#84mGlF@ou)mLMZ4 zY}$gAt1EsZ@g#%?8*>(~hmoC^yTxkLHk+~9KosR*VQr8Y=7ygYX{14--$LmW%VNoIg#{|i=w0)=*M+r8jmNRE5SxK~yQHytpcBpG2w zg0nykK5A8_a>&8oDe&cuDBF=&U+sfeSJ!b2XzY){U%=w4Fpp(AO(+4Yq8MeyB24c! z1Xcq9hBM>CG!OS3A|UeMgJXBQx6;;D0}oHWimshkfGGkq8gO5Lj7#o=LB>A+UJLO7 zDHc{lqOCAt#=j!5IS3X<5mG^Nie#O`eD4p7_0*mFz0nYBIO~bXzicv4i_~O%hgvQ< zk*hk)o*bPZDk7i>uh(UFv_pg>6Y=s-7(xP7couOe7#Cv=}k)Yy#!v)Lw%#9(%P{Ib&8q748%4mCys%{J0gSV&0B)5FaI z-Y8CLT%vIM+jdF|s{5Z8WFjPd()*UzBC|4-xN%zDl{LH z(MabkVR?m1*wt4)MY=8S*9E#QjbNH)$)y00$sj&vC;o(PwXv=ux?^Z7ECF~#5zXp* zs}lEyBw@o|cj5%|G^m$td(gfg76r*E)re#xwP$h1bG}=HeWft?E)W*CH$S0o-C*#num>Ti6UGAq3 zq}vR9mFZg5<_1>~(Aa2}7}F$&Rn)o0$)a@dm*i&vV|Hk{qW7SbPxfNxsKJ-_Lo84U`ykxgX*glixQzI^#D|C@{Yk+(vVZ z<3qgqOGHkJs6*$^+2<8-T%xmYAl$(e;Wl(2qCdz@#Cg(uA-~{V80^J%JP7Uy;*`u7 z1%=_^-iJOP9s$g5*$72LICdy;eetjB7|EsK@hfrz+Lw%%$NVAhYnEz*uq;$ZU*~Mp z2QnjB-p#CU*Lu}iqyZ78OrsLjSx@F&Bp>-d65$SFP9u979xK9Y!o>dee&?Np3u*+) zDb^gt?RKUA2q816il@u?ZIq_W0wQ>Lv(ZI>1lh4^xl&6J4uv%e5fZ>->EXgk%_cPm zxuUhZ9M#P9uXgwk9mUnMz9g<(f{F3r_w(d@xy-}3I!L-2!dozPW?6iw5VMAw^YzUC z5M?p;q&+(@J{gj3;f0$pu~8qsuMT9*wz=;RN|}iUVBA`~MYv4l7#dl%$gZYdmHTbF z%hw{U@%Pb6mGDv?Nc>Z%ve_@T+`D2T|5@jwMU#vg5cSV}HrOl;dtFE$&>U7P zp#C4Wj|R2rGkR8v?-XY)KTfbihR<586&^|O3!T=cr^Uo%F{80pLr#pEy*EeSAS=k# zj~ne5NzAIO{?=UK>l!Ny^>K9Myrd^rwudcMF8%rSXi4>EjcH$myHj*T?Nj>+JkU3% zd1LXOlMuy@u(T}0XD}<=5vZ9O$B*4=HI^4RS)>wTs*y71f;*&R%$JE>=3ei2j%jDJ zp7^8k%b0`PJ+8vX1Y5B2^*YSGe)*QWNI%E+0PD2PFl$%}cT~RDbxy+(WJb-eIUqib z&E}`5ok`DmZ zcLH`0haXUUR(vPk)oUMfZ5hM-@GF@x?K-pDG|7b z%M{CK=o2UH6B7m>@t`UCbHOfwiQbSzIDWG za3&#>;BVqjAkt98RT!r+vrcA*D0Ei@MVK%!r_?3H6J+dz?HdMq3ySQMd;$5>V)}d! zG3YokN8;(d9aqcb?Ns>1Zv_4#P6#pvRhv^BrTkibv#KaTyklr&w3X2Im>Y+j=|_R> z1Zq0PR7BWenU~dRCp8aE!MJlHMF{wf=#$av`7lppB!8x9Zs-+7N*3#tMLeI43!*d< z5ey}EOgKvx@@x#mH*NO$HHuC{b7|77-d$41P*wxE3g_E2KA%ya<;0yq+-Wk;H5W2`5w>l5O(4hBhb@%J zD5wX(U94){7T93n>MR{POx(&bo4xVe?OnJ4*jIl9428zvMM&D2r{UYt`C#JMf(t?# zv}-I?C*W>T@Iqz~j!;Cp=T|*@d^vxh4H~plPa{5=5JNoS+&c@AUE^AOI3r><^E13G zA7G#K1$_OFThzN`E#}PO@wyLeTkrC~??VwEU_8ZXuG!`#3_Zb7V63t9oeb~gX&#eD zz_<`6{Bk$4ZT#2WD814-sg3fyqIT^2-5+g{6n&B^GkYSq|DRo-n+0K+-|d7yW9tU6$6J2Je91rv+U-u7eTxOJSuSWAh=)Xjwm7# zH67{xT%qtDuQbPLu5G8WM#h4E=Z~aX&C(>HA41H#+yYvne;diiL{!oR-vM3{k%=I$ zOw>`L`&ZWDgw(+JkG$f?NJwAbIZk+vpSsu3YOv?*RN!>oF9!eF+S9q;GfY1%CN z&llA(p23w#O}qW}q5Mxq-UcndS1Q^-VU_ac?2aT%v!r{t8}HjjGitt@?shjIS`wR_);f943WrC`w=dhrj11kOH$XnU>2vc`eI0$R{_8j!3r^ND(h(7N7otJwL8PYmVZtlwOk%YJ-y_ZYw z00{qBSa^pRr=cMnK_nQhU*@z4pXYkpi@va zXsk-ap=&%wDk1Ne*an%_(+9m&_??27ll+{UWp@QJLGQvWZLQC(;Y)nx2;)g`p}*DN zBscD$3Qh#n-KPKbzjyw!KwjSZm>g(%YDG`Y9x{>)<8bWx6m=DuD)^HpHQbJ^pmAQu-QTOMU z>s+4=lS;3KllcaS_{2JRQxA@x*FXoto^nZcn16;a6XaWGP`w-~f;>tSQHI0PfHXgr zgdJ?DLwlWw*x=l|2fsPw5>(6{SuD{eq1#*ZA?ygn8pvd6>`5tNW3LKnq+YgZ*d$#= zL-onxuzm{%@)hny36u=aWnG2q_(2T@e&$}^8SJp3Hb45GC#pcSM>_}!TfBm*(QCt4Q_Y>y?{U zfsRrD>VpvhC$F!gy#|TA;ywn0eNcQnq2@Y51XuwWap$R=A}fp{aq&ZYGK{7yNn@LJUF18H}u{<4_1Cn zL*&)Htj?qiOb!@k4TcDWAkw3vAZVfwWBq|&1h+bi83RrH<;MHP%o@3!UH?^TqR-oc zj7A@>0%WH8Q@Ag_*X9uY4?68M!p~Z4ph z*kUgrO1Mfv_FjZ!8;t!opqI9m86G2@zrP` zFKm4PR{*~0@;mNA^j(C+SM89#0Qhz!%~6+mRGuCpNF+@AFOr^{hMn}P>oFF6=6+Kz zFdpmiBr!$_g_|HagoM?>}hao;wwJE#rwz0^M z3eXwS^W8xDc$KLQFpnZci6i~bR8KJXmN(lyCyM*hTRdstbHIpDy7ysKIYm@Y8_@D(BIq%X)yiBrb5ldgTl&?$ zx;iPDgJHlzKXI4QmY(%93Sd<_#M@N;4vgB%SV6S>`z*gKA);`y6AUTWy~=K3QKqi7 zzuwMZHfZL0hSqCeAXH>fRUnVN=n(a7 z^lg{`tQxdZ>|HQA!UOgEOellMD%X!2u7@C7uFNKL+6#BP5$~`2uBGf9+#{$Br7S`? z-+{XjGd>LUIWkp&)V#>v|6dPcD z{#J@UE8)4HrH6s?h`78=5rDrv(+O|o$Q1_{&8U0s`{41~Z6)p1Gh|GHZK5Z8!=X~%n1M~k(n z!@p07mUW5i-^t!iLp>+ESkp?<9@Jh}&A;<@b?I&i-p2bzsrVV09J?e5BRVx`tnUd#uuJXi&9&+cU^ON#IvCJl2z$+N;!)gH~@qQti#HxbGgj z&t@6^YHvU9JabNC=^42`B7FPHhuOl}$*7}RAJBHR*+di9Fiq(q93cF=k7+ZvT7-^P zzaxOQ0WjfTU5>?kEgfUw;X%+2r?F1wutX;L`|*GAHsNt?Cr{Vp|31(;8J-=_%}7QA z2(l7cZ9EfTuN&aN0}EgZJf)58zNjz&1PpH$fLKV{gt=VD1`bdc;LCLRTiwcid?~Fx zkr>H{Dq=V@n+^|mS_Hj;6r)B!8hDLo@$Mt(J?z!|0$M&j zdTJ!BsIE!o5oK)qJ~%0vb+^q>7+Oa#ba9SGhk%_y=aajHLdV_81k^czLSW@xYJU{q za0WQHfzzUqbo=4=2Fyq&BVn@^BI`&Jy(qf^gFEQm8ie5_pY~=Tfj}F*A{9wFNmi^P zjPOZ{vScYAVuFc^!MEG#UC-rFkr)PEDSnfVcpcy~*bn3>s-b8H+qEsKkK>y+bjmtS z3!e{NeZYLS4}ql{vWUO>Y>rm7iFVevv5e%I**9=ec0is^C(bY)pceC;51t zy(Sc!0flaU07Jb%J+0y%sk{a_^}j$fh<1#^Ee6c0Jc$G8ioo0r$29i^7P@w%`^Owv zTz1XD{=9DOA*_pj{RHQUe!c@&oqjY`}KAXoVpe(_ltLm%1 zL=Fo+D$Sng~6CHr zkaC7}-6D62-bc*)D#G6f0m~nk9f-0N2wTU5wMVjYcQ(!3ho3P@pLr`!)TUVIY`)g! z@lVtBhBw6~RAi*#iWu)F{}* zX})3Iy*&u&2kgPs?>{_Hu$9@r**xeXs-XgHGWz4u1`hqHIN9HHoEbrHN;Ahs&HEXI z(i)5GFzy{s(7nR#_MSbJEv8o&o+*0jlttZc*5kS(E{}`BNlqu0Y$ZgNGZ2OsCBsi| zK0A0Cb}@1o+3;qZ%W_*?{b-fy7$B@2*eH|S$kXLRMP}PPNU` z;N7NpP-HRGw*9mP(+YbjvXFay@8-xHa^m3rWK$DkFa4ga=Z=EJLr4JFat7$Oma~(_ zc`k&O_dOSyk32Dj;;n*lvc*>3=J{%}Ioy*!DRjVkLGbVkZ(HPb{T8kfVzJn-2Cry| z3s$L+d5T&JnOM?)kDUy@J60YM8^d3GDUY(WdaaJh?#xT>g;L?<=jLYp(1%QnT<2CbiN(S+)g(Fq;?V{X7{ zjU!ib@!%VG!M&{RuvV+X<8Y~c)rpC*c*r|7{`v2pP$xp>o8w)CzkZW;3Fh$Fld`XU zII-uLj{$l?`=CnUF1EL#7&bCpzy#b1s0yk~&-jP32!dw|u0m_n^C|E%pKy34Kn|cI zDItpiI_ziIeMY1o@WeTMMHTK|7ssJb4*+S8Dv@O;)Yk~CA*_Z^AUyZi&JbV8WhK{O2 z!Gs6hY&$^goR=Gg&48*v3Q3Yo*Uu50BVxg!0PANA&JkyKt>S$g7vHjw5U^nIV+%oj zunmg9=watT9}*jtlRWI6r0v-NVyP5*6<7-FzCP>_BFb8v*c4V^G=98wxVQGr z<%nkEkO4gIK0)C+L$;&pQp|r=#RcX1%?WS5`g;mfT=n8F>y|;IRQw+aa89A72)7N} z(hvOVo>(~yzQTXThxfB-yF~7KWE_#b$T}Cfo5exCawC!?rK}m)!k%^jg|W| z3MQ^7>}~EakWx)3A!?J(Om{kVYO_5i>erKXPCFi!NSEGhm~rh z55YcEi$ZLFj4Gy)Ka_N}%I)VzXkVu0x$sbJ8SM>6erYf;qQ$6Xa)q&RX6^&es{{|c z5jb%VnhrKmjmpQY(k0;Lazo@2OD25vjL7d-f7_s5Pd7F|Lg^@7GbK(9rKq&FsJ!_I zC%B^LOCygC29S&aw6nV$?0KHho|y0JgJ(()J}P+}Z49n?@8qt=%Qx@aEQXGS?qLF! zrv;DpG?6)F*DzB@rbcF8#x`-mjgZ6!F+3 zW5_I0WZjwbI!M#wXyO2JWaeHgwR3tULuaE?(G<~{Gg~+EG-~hV%F8I5eYtRF#dDV6 z%U1%;rRmY(roZ=Wdzb2K8R$0zP@SQ2b1Gl96(hfV(wUF?w;ZHLm@^fJeR?Z?b8CHo7P0fFp-T1Hv8Cnwt48CP2$d_tr9VZ(L)MtIXZCSO z6&ai2^Kg*{o08vzhS^c^bW{vKnFn(oFz81(~7?xnC;i5UhG;m0-zABz2lB`yD@T-YV0X9Pr=W0-@ z!AMuJp`^V9-2hMup9mN(KznNiHaxv6x4?6(8azfXbVJD+aDy0GJaIv!j9(PVTN!kt zt(DoBg{`h%h`Cp>7b8@6Ptg#sMO4obPDkwDbR@u-YSV@t$@Of;G54h7!#XoX!TkQH z4&Jobazt8=3to1JDFr_IAaX`*=v>?`*aUMm5bj7oOv5bb8R=3^;&FgwkBDy4Ymyp^`G8czC1zzKUn6ijOSJm;+-UXzAMC*zPH7XXE9O*PP?97 zqI<^TdSzR&L-_Ukq>yI-02ZW`5@n~q-p52?&I7h{?41=Y3NG&-HjHNTnG8$3DyuD9 zvp`In9q}QYy__pc7DW1yD{fH9cmE3wJougiAIH7ygo*0brkEb3za=MkJI$dsnMv#s zKo0|(z|98Oz4Ax`#a3C%xLc%ycyNmIRNb?WF}v-}=3(77fb6gsE+g1D%C5cWJzwy2 zp4K+q7Dn)Eo=B#ot-5zRUozfw^o5RL2d`=*b4X=vhv`7hitOhDv(q4YdX!F(ziL=xj6#&oFvli0;Ki7c>*Hl*`IxaNeZHN+(WQ6~^eFLlK|be^vW)kdR!08uqts)LT+{ zC(f3kQl;hi5OsUu@eA`Ge+B-lEE}m}6HQ1S#rXWuoQk{V|CbUh{}UG!KbCtyM+yJ8 z7%RJ_8h#!x8bK`PmEk$JBqI7D-1+OBt*)!zZ$PyI%<_`Pd2iSXZt7ne%K&qN8hj~` zdUV1p%<*2!Sg`&|d&%p@o8R8Z-rLvnRiFNx%?PEP=?7@v zO|FyXa0F0##+@w(D}fAdPRyv-@DsDJ8-Qvu))LkQwn55WQ@#u7DDtme>G-OeZQyRbOHre~f>G7Xu!>d)R_8;nEnX-S@HvnJ2XWXl&4MViJB| z+syHp#=!yV%3d1;E ziow(cNi2tb?g{LPh}lrerEvV&#m?WQEdddTEVnFr_iz8cN0Pq=Og6-U+4M}w47Eyt z0wA^Inn=%^@;)|xWCp$jYtC6gJpg|{mGAmy-~KakmtLyFk%Nq$Q^uYYJ+lj%gHfQkv;)Cd}(6?Ri za=kLA5q@gAUHF07ve?k)Nd1g--i0`|Zu2>@09?1}$p%FoP{B~}i}?}08-Np-d<1v# z7YHx0m-5)oY@eUg#Rzs@)tNS&9OcD_Jp7ZNP!$bn0E_%7-OhA%CXGKdAL>U|-E5(| z#UOR@A>?bkPwCLO>F0w;7USKv(_AoeN%t!9=txz?tC9T)f+C%{Y@5Wg9B*<{e&1HK zj&eYXo(S|bJ?{7U+vt-zerOUsZ;jK*TKUH;6aGSBpV^U9K?%cX4g(OR}kYLZ; zO42Exr`zQ5_ZFn}vx^!m)m_6Ts-sfq$c8A|$v7B8F$J&SU zi9^X@t7)~Vl*>A)>%jhOkY$crNqUME=lLtY%6yp}8P}X{Ikg6%?!dnLTcw({eH$)u za3I_XUbf*2+nt)NxFQlBvhtKK_+OJdRcPB8yZqlje(yWW?;@Lrwl|Pi_A<`mK?hBn zykh71|Bl5Ug?Wu5uaqGiDCdu#M^e`-Y zs6@apjw>4>Ez^p|i!{4JrV2hOqg}i=nGHBa<|S)lkX^g~5g;7tt3Xg~5K^T=jjSZEc181fV>cbYGZNM#f73@|69}1C%;m6pJ zuQ=MmSix(Ij&bi;$PYvMV{M$nKFeL8ry_%4q0odv8eeAW{e?n|1Dpi4Eir5+JTVW6 z5pT0s3W1ac_b~>52w4IzeWvRE-byXoYWo4RmlWk23Q(BpLXg{0$@rgX2#n1_XC07n zlP(i}P0vJB5Say-;}`k7NGeqH62$4Iu^{1Cqn~FsNUE+}0MlCDtZ49X?#~>iP~AD0 zC>x&3?Alhmel|qmxibo~rd?>kr!cNv)`Vb34EZcx8IM86K1A9pb^@{ZvxKKzNn^ap zo)Bq`;^t&@jR_KiuB8D!6Cr{!id5l1&P$17FTvlqUx9b(i=HN@k@Z+m3EMCpa5cvP z7$|FIEd6SK0Ws`JRWTOY;w?5J^0|ph09@V2o8+F7-q-dZMBTt-6o$gQg2v~6PUcl&Y%O=jZ3e$B7K0h1_(cEud$EW}1>?YgQ$31K1@f^R%TWB8=QrY?_5!Ol5#vI$h?_r}-dFf` zp2B@8{8<*Q;ytX>S+#pv{S1T^AxFyM?tWR*&bEukRNVmW$Ga*hL8$PT##mv7Da(7O zw}jsEpS(6t{e+4GPcLR(@eVSQ>bafqc4)# zRSa+FdqFuslzK?VNw5;co&o?lbv%=~)}Kewx$sPCj8-y}`cXZhFX3KhG!XKR10m_k z?uBY1t!Ds%&3KeRA;4y z7`0yy=pb!?0dy==>VGu?E=SV7XH!sC>b!dB#3s}kSRnWY{6k`Dc@AS#1V(_My9sEv zQP@rXJQCB&jr#=df#eOa2zUhG@tN2u@m~`3?>;*kaN#vCw7`gpYDDzzr5R9)b;;|# z{2U4~^kiBTII+(4n>kk56_TwEgY4Et^pw76Hx+;i8+G#odEO(8Rr{ZXL4eK|W)U9* zr{x^YfFU=s==udor+_m!0!x24TcTIiRUIr(FvwD#l$?Y%;3p!eBJ08>?qn1E3lOD# zcilBZ61ur1Fcui~%-@5zGxHoXdBEY(i(Q-lrjy1Tf#JLekxAt*5N1yS=iiL+W6T=Sws`V@Zu7C zXAfM>-PYXwe7O8?PBPB%iRq>n0+HQJt~ckjOO++6l2jpkxUrbkof`>Cy~_ziAq8Xu zpfUBRQ?c80TpnZv8PYknGE`feJk2UPz_QU=Z(d4SXW33gRHbu&O#L@U*kBJdXqpLz z%ky3^;*?8N&Gol|M{T1#v%WG#93d-Kz) z*-d975Lyx=+l@AmWKF`KKUNot9Ll7i1&6G>$vMGL?;inFZ^fS4BC2Qbs=(Gx7&8j-P!7R(0z$wy<_Ov zmsSLWFKdb#b%sqeofzYIuhOm^K(aw1e6!!LiQ{p*mAxK86( zDinNY$KHu>MTTr31W9ln6Ctsm30`6x+quF-Vqm1lvP%k)=#cq!ism|GH1aO~3qBM; z;BE2AfXu(C)^JEegBl-_6yfB@GLu0voGh5kW#)mG2i!5XGawNR0r&v>HvaewJq)Vu z6sQk00*^qan>;AQP4F?GLVu;hz?Ncsu+J*0t#WbF1cLtOfi`?4<97s^fv??ssgphd zOT;VGA#*sA5o8t;9f^s2vR`l=vY`k7R)8XS18h{_^%fzsV)*3D>I!}x(sf^SmNQd! zfik0qz%LvItj&{jbt22HuNyTH8wEWmFv4Rx$R)0`?t5^UpE>gdzjBI-W^1{;*8grV-H8{oufc42|L{n za452(+Cp2CM^+H~H+F2I_NxOzq@wO3FQ@u+FFNC6QY6@|w7UGg$b$x%6Kj@n|NU|#fn7I zPmz->_!hxyt!2YzE0ADnA=@lWGylO;YxiNe$SdI9-;5el@wdjS^z$+4R$1(CRD8#r zD0hOfCC*LR_Kh@mTOnwUtKW z40fj>kNQk>zoH(L`hrWRK@~cQ*2klSFq)xW!nIv4&DH#L7w2g#b|7xh{JbJb)oU4#gj$9esg?XRDKJ^=X$)i zu6za6(3zjpw@!Z0eeuxp)Au8%{bCr=t%>+SZoM*@ZKY}M;H?ZD zoYC8#K0A#&k)cgEuPqJw&Ijzwxu=iYjn+6Bna-TKvlV_AIGQG^ASy;bGRON2*E>sQ`^(O2J3un@~lD4%c*FQ9dM`XpHJjcq+ z?Me?r+29e9DzZ}RXRnFkaV~9o98PkX%#Ly>qgNW4QFv*<`0kY_mH>w+ET9_)Kjgj5 z3O9zai$;s!*#iPFq8KJTFPK}iePlV5>{S~&B8YQ*KkZ28{Y%9_XiJFku?XdHA)f${13m$?!9g$*5=V}b zG(}mGxu|S?pk?x#Q^f=;yeyuVpeZFN`y)FDRx}lRjYw3cBBxo-blfLLvtt=*bupJZ z;tzmMK6!v|sqCb$&o# zx^H}1Yf2STGvajsK`>_^HXhxZqlzPjRQ~crxH5GczV4RoNUr(y#6b7m^G$?Q%=EEr zyWBldsbv7s|CFZ(W9Lo2t2EsG#oI54(>>Ba6jFg(-_9D~aBSvNrhIAwx7_3u`_L_X zf^%qlCElPx_hoeIA{XTZ?G=vPJhj$Psta~azBJUx0Ik5mOQ%3@BO*y7wt0&r=wqX zc26H-xSvEwA7!I^2jqIyG47djX{A8!iGLkwuzyO~>Ax5Hnr8N=Uv;4%AjIpOG)EVu zZ0N|*&u@IvHQkpwN&hsL-zS=%i)NCMzDJZa!*?MoHk>;+fk=j z`Yx&71nua8X9IP^vd}P;iLSTEych*KclNVy{ZgG{_n&EaP$*1U&w{6P8fFiiz&wQ_ z4Cm7-x6bZ$g!8V&;qRxIF1hxy&9RLriS|nUJU=3IXQqjY1PnXGl4=I!d)0fzN(57% zf8gOu{4=ecsDlkqnp@!f8$VyK6Qupt1;uzfA+6*$((Fa1Nu9xM?WysGEcFr@-S6YH zAA!ylV{2jWEJCZx2)Im+W+nTzR>*Q3vcj=C>8n{=Qn~0JE5oxG624sTa`&A1T>cL> zdxMBU7jw;&sS%Fx(OU~%J%jZxPlr}AzbO0>H=UjZdkHgnnfTP#L0ss)%9`}v3k{VY zLMu1ErBvRko_euVUHmpm*1jt3^~q1EFK?4;0-f`wckB%*Vlr3HbqKB9`mA1Y?!Q}h zyHBp~?~{b`)6dQ>WUUBlqfDWbs(rPg5PG(Hy~S?!qwg4l<{8oCov)X#``RXGur(2< zJC*!LhS?(hf(mTu&(LLNoHeRB2(NW8_*)RxxccDRz4xmWYr|gD4|T+R%2dekrxVUL z<^>meAf4@2`}+rUm%GYKV*azy1X$d^y{t74e$8MxUhnZ*vsK92C7xUQgU(B9r=STr zSM8GGbpFK}>sM2Fn*w{&pEIT*re-GMjw@5QhJq!vXl)@=qgUm*w6|9%OMOo%g>{tj zi}!jnG$^b0XB>{ZrxEiE|HA3qE8V}}8hH`&GG%+gPIIu?l1KAZ(5Jzfj@r;piG)qX z_!kn3u~u968>*M?emD5J+oVUo-tu4$#e1pBYlq#T-tXy0^p?k1ndghBmouspHohYX zsqR)y{}nlnEUA0n{L8f!A=jKk!uM=9y6lrRcKp2L54WS=y<69m;^dYhGdq?-DeM!7 zon?xf_{45w#MYrMa&W$pIa_?{!$=v$tJE!c>A%$Hp1GgZjr)Vo>y4C&P@Z^HE_)sA zcnz0Wy?lNj6mIUXx{wb@JACJO>u~GIsratw#9iAON4r9c@&`H(uU8E!7O-3mykOPR z%}j?~{ia3BS(}%!uppzS&b|NgRpIpfy=K8mSCT=vY?}Z0#=b;sryfDR8U|+WS#m@z z+=ognq>mpb>SuEF^aw067y$z+Jb*TRjn0D1A!q>x*lTg@!}o^@ZR8Or@3I>S0-z|G ziU=5PfyBhCQ|+cGSE+zOxGrD=9e-88#y=VsU_Un*8j+l>|Ncx1-N_3eiHI_Y$_LEA zg#aAz4oCnP`Xi|v0cEgSz^`AJdTRU;a1x)2zl~+j6~eP^@xQ}I0{L18Ti++VFuEiR zpcrs>YMqC`f^kKKgXIwJy#?f!fmR@L;M7v0V=80vRbEcs03)(Fsu(P{Km=cvRA5qI zpj8a0EnN_&nL6Q(@Ul$|t{3*|a-t2%_v*IFMdaL4dLq5)@)__3uTSVBfQw_&g0`?U z#6MUUvnj!O6o}&!$DG4+&B143hrm@>1TYS&=A4ZUS{muAHJLF~Xt(7$li* zPDrqyF~T#;ii0eOdo)?6tjLa$Ao62*T}9WqBMO9w;(NI=?f}LpjO<62>sIUl`?>t_ z68t!-k{bR3ts@P0UI0LrgO<>-n|Gdt%&{UltLX2+nvPfiIJpWK=!Id-H(1kf-5_4% zj;mjKqc@Yn<5fTJ*qG(mJ#P2jx~U8F+>bi8;&%ZBeSWeNvah}aMdF#4_n(c|1o&18 zI5MAW8HEGU_)YxR+^rgKGp8!TVJ_GSR1H{LzJ`%*_g4N2hzS@Nzv#H_p&@LBC(o9(b0+wc@$@UG1xp z$hJY?oR|RV?7ZyeOJDg-#0oy^N9qBD)zi>d&{}=_GviYSgw5pL&QYA!h@Xl_6h>po zOZYY$Rij-?PY?psz}G>WuXC?r)wy_V4~c!_$sV-5TK35r5$SRjeDSGmfK z9cFV|2eKZ-Z7+ON#h1VFD-mhx{d;~%d0Ic4Kt#*?a5UtxZE|;Uai(v^ZPcyiibTvr zi0(1qzw9FZbsT11#6%J~);N&n8g3;l3l~NByn4Y2aV&i1AO)9l8?{p(fDNd~QC#yP zho$uGDcY0R+~b8)k|cmQB6|L`Pk^+Hh6`S)eib*N=uDKIS1pBq&1J(K-kX5HU76vI z>tMiGvrn<<;ezQ{ZFr&f-;YsN{k4sAH%|mgiH40HRUlhkP$v)-*O|Tn76J*PuD2vjb@s)8T;K}LAA<| zp8+r39doaLub;prWtKqUsGOfP$79^e9>~PkQg@MUzgk1izHmvv5 zx!|Q$e?cBcUcO>q$4fr?ni;h#x18>Age0@~2M!5FS%igaJIN95I<7-aCR0=--f2uO zqUht-&dc;G!{=YS3);w6%l=L+lsBMneo?XU;sc+?#`w>qh`k5@E7S7yDcveI$v>EQ z?ckU(Sn$pE^N0T;h#*o>&1YqAWup0#yNdIy@Eud&G8{$laSZU8W52$Hn2*Zvy%yeRy%C@}n^)XlN;aO3UKwR%Z~~F zA>CM*xh;>62*wCGmAzL|7NTVIXTBtv!*c)WTY?9@GQw})U2SX*Zn67g(u#vVO-HX| z1)UL)Z?NR%32 zk$WXBEr*U71R2116jJLj5s=t-a2iI2#6$t9n0m61_vao`16HR0M3g)0IjN|nybPQ z1$|XXhu>{frcg_{D@6G{#lxr0fX>3jD3mbUY19)m@1lYB0P>eQiREA_jP@mnd^^QR zMCy4+4o`%uE)*Z~V2&JC^*jV9vyhl3r&-Ah&RQDY5hlqBlq>E?3-*9U;_F;|j5e}W zvv+%0Xno_Pk3`K^RsnRDSLI&i2??yXmv0eh-W-4R=S4adOQ3|9+gb-CU2n2)in)k% zst)eFZc67LB6^Rc8R69={ZP%&-$S@UQT<(fWIsFYk;E1px@=!Y_s^$ZUmW7{uM%%y zFqkzgy{e9Tg2PW%Jy%nX9le`~V>PXlxGArG?qSe;>}HaVXG?P#2kuFIXW*R30r6`R zt#f(-nMjKj6gYryeOKUkvp-(W&;0V__bb?t^(ASO%P-IQXAGYYmSUHZEjKVKETJlKjy3RX%7#tK zg}y8-P)hX7uYWkESO4RwQqAN_5_4u_>#wRWBF(c3&h^Z7-TzfHKlp@AhEJWdD#@*0 zp>%5eM3FrcMcgumnFUTg8nF$2`YOd&5=-g+v({kc;AiK=H47!*3hzyiTif~jPn2X- zznpfQt$TGlVGnZGLj|jT8?k|3Kb~n{Vj3+(+I(xRc|ABk^ksTg%_w4}@$aT9E#`W> z-{-c)4@Rr)Og;46%oJ1IGyeh!|CMBWe+&%opSm@CJuJOsahOfU>AS|?jJk^=i#V%& zuhQUE)h>qdz3VMz&8^L0Z&HTyizS+lg?g(-VfNpX zuXu`>4$SSj2)Nki|8;hl-dTZ)Yyh=!rX=B>l=yLpdhR!i5oe$=z9!l2)bhJj@W^BK zrftrRvq$LSzUL0LepQXab>h%}>dJbN>j5k^51@`u9-@Xybul+bzI9YT$^NNXJLZh` zHcZ-e?D2Ap{S(Y4BW*Lf0i6vTzt#Bv$md>Hgr@dQE-``0cR%dbtOoL6TMlk4bD~s7 zg1SMHQ|!?RSW93A`CF!+?^*vJ1npO(ini)1lKd77;aWrJ~c+CZ+bL3 zp08JXpF!tWhfXq``aD{0&(KvG77Wk>OrzO?w5z*6cKS+Nd?Z((t?w53eSGs2YxH-n z_d4PV;jf>06x)UC^XhL8jLBvRMO*xTz{pw?bLEA zcp)tQKOS4_X3OiLq_L)e`nMNX?tk}JTR(j3H}~j7P1sK*r_itO{GEz?vs*RhpWM@U z@jfs1ebG;L%GnP(gPmsgkJeUK4F#@|>rbuRL(LdPRR*GZi|y1#Bob+jsUsy0F7@N8 z!5Hkp6Z)({HG{;UkAZ@xU01G-)p?dbSdz*AsZsd8g1~Mr^KrS^$-!>}5!j&VnB=e; z5bl+j_erw z8{c1AtCnD$bmjm1xp1%AeeBd&wR^@yp)NX9XqpC58~;d;2J>wORf}><-1aA$f{G^~ zaEe{EoH|7wvE+C|Y1ZBwcS>8!hq^^%u*4pZ96<4v*rA8Kq#lo?^4Vg9iR)QIOe*`r%F%kpNaansP{T36_u zQ*2XNA~ht81yvbBgFES`ew9LRM2~nFp@ydZ@}YtkT}8pBBH+&Ts&Wp}sZmmIoovMNph&Or*GLck};#dJ#7ipI`Us=fZ7#%Cdm- z>g12VztT)vg_Z?ZM1KBjNS?d;bD){%QWX_>EBoWY{(%8L>7Dt$XP&OjnB-PYlXs-y zs}0BPd#9aRy4E&Z>v^5;wptM^)&DwO63JBq2g?jPjaHh+x1G$6dQ0O&Ec;#z2iN;I zOl-Ro`xOS4Z%iW-4Dv(sH$QK=LN#<1eFY_g^Ql3qomno!|7pEB*e}cJ`%KGp5Im%jYmF?dr3*UFypUPEJ}F4cUOf!?_Btu-o&~wu{0^H0 zU`nwpVUyL^!m6uTK3^TL=zYDyp!=`tqSsg3TL`+=VtbYE9jsCRy`EyUm(N5Ghe)w4 z>cZ!t{`8ggk+fe?FC8Y-%>O>ga8@p`=xO+py{W839jAC~`nA0qNqMQ-D*TU@Bs7sH zG^SQkbv@pz@wvmA9>}C@C%UV9&Kk(y*uWx_d3*cqwkgv^-SAAiBYDIeIq57dw@{x3)10=9% zI>6)3(w$_FG?so(FAMADk#}xuZSYlAE;W6B0>$f6S`)En)WZG9S;4Y8>x4?PX#g(j z>e7ENzVSxsT>ovC+~l)qJzU~$<2(7jF>{f9?3?^S@4c->B)Q&K+3CW2J%XbRfL;Bm zZa5kmxnDYb@Fud}IWm%`Yu>TMeXZ$_m-)!$2A>I|QSA1og3P{_7lqc9+YK?0uiJE_ zJYf54)KLbteiqF9R!Z1=@K?^MZb*Wd^)C9_*MKUxfH^}XjNI{(&GDoXH_k~a zc@nBkM6Ui3KROI|c+aPQ9bF!}{9}^#^G_Pj_uLzyqaWo`*k3a;&m=-yx^F^47p3(G zB+RN5^bO+!iYX_#rK*^*l_#(PP;BM4?$M@hR`Z>%WU=|o`^^5Gy=q8oK%*rBVqbd( zY>?z*T|Tr6M)79KE+4S2^y$(YU#bsTv3IEPOMmp|v3qCY?g+^OXCVr0E$i61 zq1(Py;8P(uUn5=Yy*4I%yZ?OiRb1<>-+n(gb}#?lefd@_VrG%I7!pjeH}~-ElspVn zXUs2_2UsnBx7Qvnyf+AnEVMLTeDTerz|d6pPQO)la%8nZgVFZz+~sqKbO$V z!m+YA+G!}7ffB7oMq7THvNw7%Xq3Gd{r28j4~f$9rTa^rfew?c9AmGObi5GHQ*s?J z!ak0dJ~PLJE)88WF)_7XqMWsM_Az$|S@0>=n3$ObdS9bLhG?vjT_;~v;}Y~a8cvlS z{qh>Diu*Zw0s{)_yVcq^WB3 z{Ma#g7&Y^#w!`W0!!@g~>&D@PaH!oNI2BWc*oMf5sOYNAXWFUe2nYUPek#FTYjby&Mnyc6ic z=FNNdj;TrR?AFb^16QH)K1ZZ~>hVQ|QdR3Il&ID+`y6fYn7@uyzY572Yrev+E7cx5{%tV^eJD5)MVpTEY3>k zQdrY!Y~hg=*fXQ!cyLh&{z3t_-+46yoUHL|DnlGQOM1`!ys;o*P!Ti4SnM1J0bqkN zputq+(F$4CsaB4N1-2tRr(;?t*>-239#w(2#ivVk*sm1}!W$k_l3An=U;Q8kEhzB^ z`!Y<>k1x00Ez$N6RiR3b{xMnY@fw=MFyp6`EKNqa2ddOJ@_fX3SuckojL71(m_uRs z`7;e_g4(ZY{k*?E>A&kCo!+>}$lEBL+#BB&k)BpN;?bYv9P%uNH1UU3NQYs@mZ@x} zr$9k#Lzvt|T>77Ih*`q6Ia*`qt>W+LWiIVAhcq=g&~p{} zuQ5+ZpYFeNJ--W+4ghs#MLwH*ih0jxg_u|Q_;wc?H<|U&GU_?p!K7}tYk@V0S4L|; zqlh1t-yap^GrwWk^f)Dyze=|j*f(snlW9GWGWk^z;Aw#~_R?PHoOk4Nt00q~dU~t0 z_z->c*N?ioxFNpkxdtU`LPhISU&Z<3otf%;Q?l%F=HQIC?>_2}<+C!a95y*xcLN8W zcM}vgl`t}qs?6fL8E{y^H+Qn{gFzba1crf$Y})Fw(tOua0&1wg-i58@RYIv z$9Z9g+c<{R?-@rzY5F&DHBOmG^-$lX+v*MHww5ji_9aJw0mTOp$mQ|v*@o3@w~Txy6;Y3?-@m6Ou;UbsTLGZd=w}V zfu@yH^9rZhgQHsP?MrADH``8fX{haGkw{cbvOLZRC7yJ|acoO!kTsmM>}HKaUe%*6 zPobD7qQac?wxI8aq7;%o&+QKj$;@wxvn%CqUM3J>8nj&~r8T1N-4?cuvdU} zk7>s%3%IHjTgaQ3@)kn1=qpW}WKv6sdRxTl} zVr4Vco3vhi={JMyuN4LOf;*Sb;ik3!sBO=*!U8vtJ(2vz)qftdo{QK%?vFU?hSnG* zLx731n)XREPN%HvhyvkdlD#=A#yt{Qkyrw2BBCLzJ6L%mmGRxM#tH`C#rw@=&` z$0~Xsv_jPGymT)yNNrbZuwn_jq#-sYuh;O8_g}TjhXE8Bt(of1A5YHX2MZe?a)>& z2jXpB(i<@3nV0*QaB40Hvw}VEa{8g!IG6HO%{PN3#ACd*PQrZwQAyeDIBH7rA#W;e540lS%r`r+q@6m{efg zGUHQEckm(=S~&O-oGu%jE|jCxyG{1=nd{sX#3KdWXOch{s})!?Lvxx$nke}0m$NRps0=#^))KGhvz7HH4n3#*fJEB^%m?WTHXt{=mWshiU5*t}=i}a*CKED`Rf1maN<+<3d$0RuUIve9eAoV0!JA=XezS$5H zbO#+?Z3~Nz#C`^b;1SAmy;clt@ms6Wu%qL1=4eTpvPW`g8JEAjWMl%SweG0%g-uG^ zqRYQq!367nwKom)fsO|xga7z`#uPXb(prDg)2>?=Y3b>IDs%ud{~bNg(cy+}WH^z7 z#;W{3*JER2?U8_6^F-Wu>N=6t+t$dhn6o+pl~JIBvT$}THQmmY&RUbcwqmfnO-Bx7 zONu(6gA*`!43VA$Y++Y2An&=)!N>tj!+J!73Mh#~q{7-awCA!$XIBOO z4Vum&CrMQOMT2^XsybI`M0-|2PHMK{*R86$u9tQt0*QBA)!j$Mzq<-BBAV~iT`GB? zT0$l{|F0LoCbvw7LY@7w>wIkny2Qbu#%)`83hcumtzlEN_^Q|Nco*Da8CVkz&8eI5 zO(J;g?Y)0<7_;PJ+YTI^9-JW^S7OM8{5BIedyZ}bSQsBEJ`+X+%X+liSn*v!B{Bq` zf#M##?iGlUQ4zv|wqBG&mh5&Z*0@gbW1PKU^TXQEL6!i$6vdAKUpKGTRD@t?py zm(P9OYHmV;AWWqfc#f>>Gx4>@7;L?$GDu-Q2Uq)_==l{@VbB)N>ZRV?WpmjX9-i~g zs1PO4@2|~%eqqG+#GWhn#x6@)G#e7P1N|dU6j2i*WjV)RApY~z*YbuC>-!$_4K-Yk zxXtM&Z_f1LHj--OI*?Qz)7xUt)TiK1LqAQ{KkMc_9=3#d`922;b4&JZo5NjOy{w_5 zsgsb0=R34k+*8?L_u6BwjROOT>tA28Q{9=TJnK<%K~^P$8O`L&Ex8QA7Cc8_mxBD( zau6>+@7@x!+n zPJi_VN5F9hE%^?20l4WnpkZ~jQvGtfS(^GiT;)uN{Yt8+s1J)CTcI~b@1lc{7@lHlz$Z| zbg6ITVLzMHq7W2{Fs*yu#6tV|7GV|R$ng$g3;2jBq!YG3o#e9vdeD%R5*evgr+?6! zC0bea(HcXIU0iAS1{}Eec)ny0yRKlLX$ih|7vpJPUoE0E;JD3%^%Nu`@n-pU2@0{| z^om+@zi+gepxzZsmD9X`EY5H*BsSnfmnMTlQpCCw%8oQ!1hb!)*5;D_ z^^~5H2;thEq{V#2%|9 z+=*_&7GGzvk9J7@BohodWIPHk8<Qqo&uPpEEB&o(ZjHX_>%SVU z!-@W`)EcEz7+I@>OfM2zao_dQpBU~i31B#{RX>&EHISymCmru6rL2mN`hRI1pBG%C zrRb~rOrTR3Ijf;5OwE^C$JGGGd+V)~UWB=@PyD3Ut>n2ny3Z{e9Q&yXsi2T%aTM>A zOVgl#d_)*;m>H z@!FeZZxoI4jn5Afr%GJb6Jq=|#FAwLq#{d^E|Q*ie}g1R^Q`|YGykaail1umARAs< zRzIJvSShQlbt1Y`8D?ihLX!IT2!Y$>JtbzeH0Q-*ga ztVBOv2erhLx+N=J>s&`9#>z1Zd&OluOxs;{T-`$idqfEk$c%k$G*2||S1F^oN+ae(A_cZ}Ffm=j1x{8^;KnXjxa5$HdA(_C5b+Rw5fikNz3$*<4hAL}__DmMvk zA`>Pywk!=HNVusr|G^`&S}}ppi||d#R>nl}5A)-jTQHStbMjZaX7F_^;6mp)J3&{}2q@2Ex~2dnj*jRxfrMT&jX_mcrgrDx_A{+Z3I(XMbCCx4u6TN*({Fl_{{});ZOo#yi4h zF2#Ut1-m0Sb}D8Jcs6Gbe*sGwp)B!g-&&~Enf-6udp86)3D>(edhC8zyb+c8s)H0H zTt`oHL`n*9S%yH8$ui_=XZW|*`Ckd>Pb(g}@*fbfco7lhFC=%^49HJr_Bt=@Xvm?i zi>TNLAvxrRzC{=FPd4%rKsd3Frn$C^ zx!;ymaFJ%4JJP||(+cGXcRQlumZiX!eN&omL`R9t`%;9@OXT0rwHb-*QdU?3tn0Lm z0Hl?#!|w5Xv*r=Zc8*G3;^_d06 zjlBx0g^96Zt!fVY)?wP)WGENq&zOD3>>9~7JWAzZw&{FnDYL-R5X1_zK%L(3+o>qd z*lq9|6JC|F`bLkP^|*z$4wC3zREh5X+I4gTL3mxe&IE}7+x6egfiyFC%~_GkxMT{M z+3wDYu8#%Uy1pTj4t`)lapiwUT7!Rr(=TM3qrTc1lg&U&>o~+H0!7IMTh&>GS}>}3 z6L^bpkJO9qCXaf#`hTib+g_taHY`Gf=2_cuTTnQENP9a61ao{Pw>#f0LrIz}1qyCe z*JU2q^y*;Qo^oGov|WqUmoGdS81p;Qg>+uJl?z!l|Jvf22%ZtHwKTDUzkIu3Cq-^4 z?GWyb2?tJilY1k{R&GhP8kXq1nnfP!DU=)6RZVZJhu;ZXW=^(B%$5-3;_6+9#DzzP zi?L8wGuusPi|Yq$)Hy=igMIl<#kiUuOW|Qi@A7+tEw*$&ML^W+lGbzFNuj7btPXma z3yoPSvkNFY-GEt^TBA;d;Q`o}IZ}bmu)#@s`{1I&mUF)Xk%wK__kb5pd3@2r?VsS8 z6@m^j>V^k)xDA-Wy$@ipE17(@Vgi_5$$$Gd4td%&{UTom^-$w&ERf{Si_tC8ZN zc+nm7WV@G?etb4-t{edLh;)Cu)g?Jr(U;D*O^;3%QBwa6&>-1e`Ow4ntlD~wn=1=}^;GpAn=4e|SDeXwf(1&tXj5#I z|H0~V5A5`0v{sdmWvZWx4>-MlHU4FV2X0h4}W*2!eNCHsk1d z&S$>Mbjjsne!e!)pp@Md!-jNu3;ujGDLB`#*U&E%%>3!)ABJ@_((c-(VqU*e*Qq_% z^uszqAN_Rj$+-4qQVyE|T2QFvk(erNi96Rj6aA=pK9%>yg{(?{C3F}$@WNY|*2*GB z0~oow)plUhSoot?tRLrKz@QvtDmNd1bzD6>%RU|Z9DFV4g8Zwv5X*j1DlzIX>MBx2;HC|TK z`X{UUHpn{;iQ*1FeJ9t5*R_c$OB%-4-?_;98pTT}$Kn{(PJpxx+a#U;YSK-NHK{Z$ zdEMpfeF90u{*=Tx${@JJ!5XW2>W}x|vw))-g1jxZrF3sr-tEd!JhqwV*ub3bKXWYc z!JIy|i`M;=YFvE83~gM1DsW7Hx)&Uuvv=iT5p7cwR9l?RK@#r9SnFy+|I2F>9!HiT zRc-syBa6>o!RN!Yekc`k-IeUO!!G;AjzTgFQ6tlGT_%^*Bc%INX+ zt}%VodDb5Z&Zfw166t5jR9{(SuZ%hut@=t3Vgb$&CH|~4*ED?WL3-YyPm#;~ddgSN zQBAp^!DCib2X{pAK8^o|&^GVA+)|FKuXJv8jw`F>(>Ms3LR7n5g;8m)&Lk7ddgDlZ z)uo&S*X;4mLdAg~ij|D%(IZ)LjdK|b65Ga80)&lW{+@$Dp)x zZihrSVLKjqhUsBQe)P__nP|I}`avn16MPIt^3SfsgnzG5#tMCAn!IWxJdw5g*tW%|W)~nZwn9E>C;h^jSgt*iLM)(%~`k z5{)vgi%^(6sW=WFS$kF>zz7reoA3badSCa1kdaYh-@nbIcg73mLNt7qy5CCrEVOse zM-$Eby~C+Kg9zt4o;bPIU7Uygv7kIdyf$B)=Z-ur4VT_Y#u`sOJz6~Z6Ua+-lR~+B$sPrfe{|I9)wYfm&+YOTVAMScArQ@`R=`=|yrtGbxpEcegcXXuXrHNh@-dJCa+fs?mYX#33|LoCWPd zuyO+F>tZ)jxQZXwUiz)w!7uSgC@UynKD_Lblt07RF?)NicgcKz32Y0c-_1y8R5l}U2NxcxAEdzYs zN;LY(sz5IBOxtlQ%1nY?PXR69ucZo{h-X5?#s^ko@G~BcHR{{KtF}W)Zz+lHfd>%g27|?!XcA zdB)FOM~yVVL;5FF_3={SgT+HSwxWfQf!G=nz33hC^Ts>ktjB|O3cWfsGKk3}pW>*n zchjUCKWA<~=0@u}}{svydUV2m783f&?d9p3D9woHG#b5a1#4-aiQK)xNTVEmXu zQPaYP@0*rbd+mTThJX?O<*yF|d^-v48Vn2hcCgF>hIA6;jA=9rpIF+l=X7`Hk{<>0 z)@|#AAQT4jU=aj`l=ruEuSDDs3^3o+i_buYj-;_gqG6%UOUsaF9E|%!EQ;jNz}&bVOJys&>+y|DR?>UF^|gR#b~8)nyG`KPu0-0vMDrL>Amu_lBz!R zb-d%$*vwfX_?xBP?zlI#xE@v1g7{{!l3s!K!8VgUn>jhwP~Z}AQme51l5q0_*By41 zrX2&O(7Um(FeL@&>o3QUiWk2qskyvupxw^8EETeSRlhQ+SC3$qDJ+g3ajbmd7HQBa=<=C=slBQ8iV*UBSQH-2H`_ zO1cVzYPI0g4(7cF>ohEHv+&zo`@&EBh_+cwCQYIbEYL!)si zop$b{8zUH#4u^Lw4^%aEu>w|N`bX)$+K`WPY`M&pLH8HobS zI)d8kES)9xy`w(>mrM<`Q&9O7$q^>yhQmkSJUNud8gBpLk%+%xvSQXV9{sYI6++i+ z7B)`zS&6^DX_-qWlqpTRgj^-q@a=7RJ*C{OaNde^@sE5}6O`Mgzq@1tNb(a9P=Qg2 zD1WnWrZZB!29N1l*uKluzVNjBBg+8DEk#A@n(6OI_xny}bRQxf1e>GI13Nz7WY?{? zFml1YcAaaCr-BF9V^AH_rXqHn!QBcme+)5y;?uNEg61OYY`~@kJ`R3S{_KgTKUG?H zuMfl2DU7?CZRUgdOtzWAc85<6zlf=GAd}PY1|{pV$ypSfQCk7$>35=e-kIlxT1X8{ z3xKx)mr<{YJsQCVixohHu(MccBakB=l$yvQImY_e{bqK85bgHSlCTE<+_Ue|HlYE} z@5d8eyUVpeP5B%yAJl`nBH-bOV5-i}X!la+utqGgc*29MHhWuciwSE}RHdhtWZRPiYj91Qg z`7>(&XOrYH{UbfPJX~0-84U6cZD#D&o`DGq4ui`LvJeuX;vF= z<|cHw((GrPyt^vvF(Gj1xN*zZ{+5B;7ly;(EFgstz|CEX$%UxO^c^;C=LxlEYc~by0TX?N4_I%%Di3 zb%vj3)NwFo++xnKOijRXZOaOaTfi*M>F!nCmGW;Zo8;#WE9yd6mZQE%Ic1F<&gZp( zKRo#Pv1%85b0Am8(RIC}7hvm4f)OSO4;Nx=m^K20c?|{X3dVb7jkVeQkTf~|4kN&) z3xDE2s!_VsUdh>P5NQWs_$E<#sF7(wY`J(^V*GZHo!7}_s#emo*9@&6kU zCXdu4G+oJOAPIW*n@vTVWsCgQ-H_osujQ*4s(hlmL9d9-9Vf+b&Na)|zZw#l&x-%y znhCpbEhW=!sv}agd#&7@M&V67we&JLHey{Jlu~$lpVa!jN-QL}{d1g{#RE=H7!aJ() z`DENc-L+c3H#m6}WLEr>Dqs7En(#I7C0mcY=i7%fg)E(~L&96Q9!cVBGgs{g!zM|v z8*S-adE{#};?=4^`glyT!@6SfSxj7`(@04|Vinu^(I`91uI$N1Ze;9j_p33yTB}=b zBFZ0s&t+#d%MJou-mcpVDkcD5%(@hSlX;#E0ZyQo1|MJxBl)LrIS3E`q)QH>Bc13- zQGYuAX_sD?cHQNbTHLJW{Hu|)Mc--Z+(nTin}XfdA5_59tCn-VKd*h?_8*RU%<)E( z(!pD==aNybyqc^-%bif$D>JKB&^wl;mFi^V8aDLsj3vpxr3)3ZeVM<|tQY%Z19Y9} z$cjA@TUDk(PO5nybVaokE~QIa)w=$88oGEKrEnD)QE@NU;ZfGoC%EsVL+hsQWf`zM zg&J#3^Nf#3{gW99C>yP;R9@~A%|*>V0lWIn40ZbUOCa}gsH=K~)5ORD_nuc6U?LwQ z^Etgo@a-#e0zbIvgr2ND*!B|8IMeD>+E&3C68g>_j_ic{Nrm*j)x=~sMkb5g>(%u} zU)s@1PcIA+}3W4ZjSBbeKso2ZuJLApq&UTf9R#k#%WuhEKFQiqy5rRgsH*ndX0X33W*vgy@y za^SZ$P!s+?YB16OUv&SwJmYEH|52EKO5m%thoP+$DPhZ~-$-KITCv6qfw z4nI8J6eSEI8q0E@FWFiR2^ey33NSh|8#@*ly)wk`3f7T=YU@85y8?RRbG(UzOg~VR zWR7?RlOKX=jVlaIb-Iu>(39z1%Y_SnG;&jHs@_)>=Jb15()ZWXxN#;4w?9~)_~9IL zz7jiyh>JH=xcSE=E()KBbD2-RO9MjWELanoMwfC6bT4%bn|*O5swTr=hdkR0l$Zv98l)=lz48xGs%xg z6VK7L3TD`um=8t1hMH95AHjRRwd85%oS(Bttkv29z;FYMEo{LCeKmXH&oJkEv3R}b zpCf~{i7RiT$nEhJ4*M{z`J7>Ksat6$!)|_1t%-$bTZ|lpZDm2T)E?v4NtmFnF5oSR z57Z}%GT&udtB&t`78lguRfT($IZ{WQcE4w~ArFp!iYaxVzX7MF^20%`XqHVQ#%I?v zrsNlLyqXvXG;(>Cw*8MH(K_4dT(Yoni5x;VbBKxg_H2)Sr>oQIGNV^Zf5(|pCkPrI z(04z%`es1_=fG2oQD(c-pAoA9rpKN{9V9eUSw+lNB#4Y8J^>9VLh@;ap~r;VZIeK3 zupX#3Tj2^RQvJH55@O$X5057{QdOtqEZSfNXPUhjNBBWlw9bVJNRzm zlHbY71I!Uf@VI0;3xMuhTLO@rjb*`}JAO*`!Z!(e;l$EeM#3 z`lWN%&S~I}r5P6=FN7|R4Jn445QmxZneMji2EiH@6NzTCE&Eb#&9}K#bzIKLWwtBL z=3kHco2q*IUMOIDJki!=39d){~ zv=)Qc5)fU2J~AtX#+12t;J(9lN+YDs_65;};R0E;#+Eo^nem&40ydUdsrvv!DwuXC z>+S*w%69E<0EeIYg*yTBrFF>7fNU|XB!8m$yTBT&X`Z(qFR&eBTIo0TdinII4J~CD zyL=zDvB5OH8euV?d4QfPh zrqH#FE7d2TU4)S2-=i$!X@~DCfjitK?yTZ}wq?3nrKA1BZzu>tn<1u6w*Mp%4%|dI z$soX+hHWejh#LGay<`eRXVw%?JJWxlmm2U%#PPdoAU=*|@TiU6hdm7-I6u(< zavtHb4dAaUG+w+4XhmD+oytxX>C?mwE8e?`4hIA~7M+CQLbaB;H5RRXsO7cc>|Lq0 z0^E|nX%iwN+8_CQ5#p9Z6^8NBnag>3qTp8tc13kpPL^}W!JbQ6cn3&N9vL$O;&LU3 znm^;bAYmZV+~;?BG=5<3`^ec0shBRLuHUyjt1INWF9Qwq-()g8W;T zAgHLlB+L5L&!wF|@wD3G=O3v;(K-3v^j$zh`q@e(xSrK&YIZ3W*JRz(cG$2KdDf{- zip$T-oWE}{+2a?=N#!wMSW={VDRty&3;o5N7>cr)*b;YL#s*({NB#jGUx&|0`d6y# zW@Akrpo=i&z+TLtnOjKsB!ReA>zA>Ve)sUUwdM;qo0~osY=;{+(lCy5~ z*GzYjksywm-#B~uvm{U=-=wH|&G(u31t^5-ewX3sNQu1e@JjQrcUI4)ir918uAFE# zS!FPP2!q6|feuH0X_^&KOH04^w{QKB!Qxy@Y(|YJu_Pt*PZluoFd<9=L>`d0VtsR4 zB~3MMIf!>w*2y`$zLyW92~IRk5+tKs=&MYpmt$^FvwsrGJ~5I$y{V56(pRN`R@G0NwW~EZlrB@l0*%x#wM_B{Z{fAl!aLII6_#X+ z4&&U<{6mrs%jpHo3}qY5<^0z^vJT0+Z%?DI{JOt_-~1rKOC)taQ6gK7Yu05D9YUH( zbPd;kw<8<0`31OSdKXeWP-ALC)ea>Trlu99Ljbr`!B?S8nBxfx#zNRS2-hRhiGc-- zN8ir{dUxhBJiN9}-H3LNXWdG&xK?*~TofA)n*-!3k46*nVqHA7)&RCWHibb|48s$+aog>{?aL{by&mn8**)v6-{XFFhvZY8jTD)jJu-)n z=xSPusoDX*8gz{kQ-wX@=v}M8fQ{PPLg`#&qYq$8(Cli^mPbFR zd@cvy=1(2JXW5iRi5q~-**zxrORF7^u9EY0*7X`keL5Wmv|!b)4a?JXxx~r<)wAdo zI|q&&2?`$F4p<@ZKsKsUmqBU!lLrTUs-nOd3vtq|za~9qjJqtY5?=-STu(;%|Ds>M zqa1%w8eUCGOoeRSlawI^zRmpi2>$PG-f7m9)4~NVRhhps9qr{>=L7c(%2@#(zVVDd zHe6B0e=Zx0SqtwOsC}#43yHbsEA;XBq;I_^5(qT1QPm85ps4|67O7TpQ{;a&p#N2+ z&%Oe2_gD33CorNiC!-)F^fv5!^?O4Fq`^}qzeRE@19YevkUpnz zzu=Q%v%>&IYp-qwPFpM5dy?f@&uXF<;;SQgR!n z&F0UmOkkPT$YminyHvwTC-aKWhEwHQoZB-cu~~#akAIBon;)1CcOWlu$6@Z%qnt{| zp`H7Ya4f=)M?bf@p{Q?eXVd@ioZ-87zr2?Ru=`~S|3_vX7FGb>Mk3(CP?*V(>Fn~E z&f)CIjk=tPYBx7Gh}$K1j<|DUjYWexR+i`J{+ZE=m|qn{s3tt?ILL94x#s0SDkQAm zyLCnv;*|rPH|sp2_dvnHP@xM(x|Ym;MZJ|_UPIJCByZ=~p;-#=)w*_>?NVLp6Cy>a z#S{(?6Y}T8Ka>=+J!^Dxyn2Bb4heZ=-E`ja#)Ki4E5v=J9DB5O?8n#uH-u|hX+|qZ zuJ!D@5T>yT_D-Qf_vYMDQwl>P?R{IQMcP!Jkgc0q0e!vzk2WnwausV7xhRcu9IF@* zd*RWOvaT1vj@hd0?<-*KhiPz_=ALgO!Lz<>y6VInXqFXn9LuZGW@UKAy$g6T1Vm-z zkah>s6ZBhadd?1Lo(yIxOk%MBiU{!})&CNvt?USFow@(I(W1&)5pm!TWRi$V_AR_> z4S|o!b%DEVWdC!h`tO*o#K*LL1W^re-Y-4|yvb$^Q~AyEy>+a?N#Qm#>Fa~Kw_n!^ zyTB&+$TnRx2*o#}Zuoi3r~qJ$CyMIjwdHcX$!H$oTr`l2`~w+O?~|y^AU$zo7i$ro zU+z`iHR}a@`Jyiew0SZ;HImuD%UmCZ?$_p;l$+ZoCj-`6Jn2jrS^+b7ZVxE#4@2<9 zsV{Lvk4jQv_!BWPFW~wSbziU4`x99i>T=<8nZT`P`f)1I+?ys;ykmb&`&PwtVZQaB zq>a+k7a}6ulIp^K8JOnd5$V*W3fr_vxHveElnXFC=`~3{Xl~pgs|W4Oh&r<8Zfs4~ zxvY|`y%pjG)!-jJ*z|NRgB@rGrX_)Hb(yy%RQLWR1lGVxD{Wd9@lE0CLZl`-cM9~( zQ7-${5733Bd{~Sw?vzz!$%(|e7dCHsWVsJFzw_P$w>w2|K?8mOmq)s z)`d(02JR^lfvex{$G{eRZ&SZd4ydAHf*vXsbML14XPrk@7Ram*Hi*5DFvm22 z_teL}Gll%)q~kfNVsGQa7Z8hdPM*;#DMvNDsxh3boy6^FmHboVr~AG2*I~~)tQgNn zP$A9Fk906EQru+uyz=h4$*r<>0OID)*b-cn;#APRY+b||*O)4hjo(`VB9-7+GcsWX zX*|rOJT#_FI^S+1r4p~37-~qpld_FsumX%}U<^c_)a@r#egm-S7lVeP4dOlXFpqh4 z=A%9xYI_DD!)G^Fl}tis?*{FrEjHDL`%JGFRG$Ab=>|61uYu6A8;lE$1(0}3ykdc} z;%@$bQY`4=6$>4Q#kra~3a)X6$2gj*Q2niUkE|-jL;=|SyOHXrzUayBUOG=ot0e>U zpZFEFU(O~^R;-~f#Auw;{=OlI++XIZ@dJqdW*1ZlJlj?@GKg2%R`2_6rM8t}qp=&A zXmT;Dp)#a+EZ6vV;_5fjxsJyGG%ZG4d)ZKoU0J_zMc?}U1B1}a!RDMmYNrHI+?lL#jdL+3epCEVXsabW1Xt*LDmVgz_Jbh`zqkr?g06$}aAi=IS z_&tI2U{Nk$E4JG0e^%h)##q0Qa>z+NkRc3AfGIk!nCqH_UR)O{d*fRsq_LRK5CuNL z=GmdGC(;1XOmoBT)nw|iCvBn4Fk8f0nP0v~Bo=nOX;g*;e?0us<)fudNx|C}dpq5& zFB|)B;amNe`j=hX^4Fcg*XQim<-QYo0(cz!j8^4M1_JXgVSc~p3*@OX=N>X*v)><_ z5dksGV4`LzW!Jlt{`rxscLF??p{XT%e`;k-uBONkoypG{CaiwEuVfoI{rz6=aQ5Ka zU3gu@;)8bojJ!+7?;jhE5mlXORoDk56?M+Z3fGh#73poBzi13GwE)=$X#VN#?+bkH zEHz0HSbFe1;6mD%(a7|%O*^1+RGhvMC)@16sUVCE5^*bJ9x z-8t?O+GA3=)KB+*L%&eGSzc1OH|Z^q(fB9NEYc&sMwajWYiL~*Pl!H$=HHCv<~eu? zS^7X^~9x7KDmWEZ_oTXGx}^_;_Trq&k! zY$t$sBy-fVz^*o(LH;8#;^1|&+K5`R$VsqqP_xpiwVOr6Fl|Ub18Zc7)6=6kK%s}k z3m;ocUM^(O;&Zfo=XV)6%|S<4&!C#AF~KP+`I=o{jiUO`F5~Ni&6UHlP}cS9ce++`o;T_l%$ky(5T+krCb8&&sj3*}8_$g7J2tdR7G4&;UJ#03 z{gKXBMOP$&qN*|JXHFEae|fiX$K=Dwr@;*48o{7#F-^4f0RSdoU!ijuemF(@_ptK& zgY@{ca`+_#F{F>?8@=BO<%tcf>0N4~aeTWu8%p|adU9J_;zu(C{mUU5%o7G9-u1>6 z=2?imZ|P;@tZYN)ii9(49+U1Yop!xsl1_S=$MLMyf1)%Sg@uk4hi7|Y6CZA$B!BKZ;=dzSvSu^)cINEl7)HG&vc zq`6C?_042l(guOuHCda-ch*vys=fc85$^wq-!uHG>R-LEn4D_og|>*dM43h?r=-d1 z)eMTFV$1P#n?MEL zBfRPPO-wjKzLG(-dWI+t27M)J+xHHVI9P|OZ*r0@ah+C%SnrT4>H|&PmOJ8bC$f&L zJ6e=-3r{dgJSig$E`3xM@}WI%J~))3U6n7cJ*D`v%Dm#+WVMmb=J}TSq`S%LQ{zEH z>e89x8adCN?4zl#I%FQBrM(iHbkv&7PQW2pNYJXK$3$~O;MUYW<>cG6yPG$sYb;%u zr@Wh)z?C?_0Dr4rG&*LqPXb!5{C!MRRNJE5AF9Qf;B&98zXX->aBkNxB5mq1C#R8= zbJ84-Uqm^R+2l}buA{Gwww4|kXuY-9sir#2f<4B*4XDv@1umUWZe!B>Xra7w!y#`m z2meAc-2YA=A$0%F*ZVS=CLinC|T{O z@|zh(0#*qNK|YHdAi-hO65&|X&?%d)C4woCsm+6BakglNQj`hVcZ{9+7EoG6U#BJU zx}<${dRt*JsSfwroY{^t4@@-q5j-zDyw>fWP238TK<7 zQhe9~XQe|!RoxtYqpO5YWaplSnoH(lHi;2_uj3E~ZARyT>U2prL(y zS}K$xuxKhnESZUWk+l$;aSn!AQ_vz773}bz%I+mi#too#XT<9g81Hb)v;GITBpE+# z%AvF(8=eY;TlBU?^uE^T96JCM-r=`G0M|iBinZDyzak@pRQnAKjRGcGa!kwBrk3ov z#bv0vGD-BzL(8{19JJCO(rc@)Rwanqv5eos&7CkwK@{Y7ySVa52$#PVf4F_`pL1&K zk9z#?H9uvBTcC#EBpf$?{5^3ajZ3bgkvFp@e43v?G}xSH&);P?b)|NA`XJA)@tC zid?z+;5a-(C7(fw^=HwqoYIb2b7hP+CpuRfoih7au>Xy>>9hEa=HiaSw8S6~i=!^g z7dl^y_HL!fpnFui>19>*>L}l^=+n0~ga&+7RFGUuZFxu8FZtqDIl z50(gc^`_EO|1K$I8?&C!<;pt%z^3LOYw=SMRc4POcKd4Jna(1=9C%*DtzhwD%@&4CpQyq|>5oX1E^7yen*#vMCC`LWgn{#AuKO<}H7HR~h znHtsPtErkr)~oQ#3$}ysxLp*1tA5WiuzrqfC1b zQTb|q$}TO4ebkbr&tdfGO+FJ}=^|Y&dQJ}RE{A6h5{&cGNz(myHZwC*1*I;usSngd zGZR>YYYKSQRC7r~J}D9w5{hN=nSEcm&!yA{gJ>MOD3h6{1*VnlYLp~Jni@X!y5zt z`^I{27URdPzDjfD)=bvWQ2Q+UVJ?Cay2rod{br(hW4x-@yv8e_lV*durp&}nm~sE& z`!awj`dOr9j~{BUw>3!dg27vEVy#Gdg#DiJDR=8Ot zzSdNpVXJww&=MM7BEU=a+YI1%$G$uY*}5~Q*0Gb7+dMQLMljnDgNr)Xnh`3i4!8>CsgD{IK^LQP_ zS~Zn-W&`d;3V@k*l{d;wbtLgQm zG@mu>ux*%W`^G<7C~^V{L03R+N`ZJ!P{*bzYu|Hq3?X)(tn9bIgo44{?7RnW2qTt$ zX1?Z_ZE?H!X_RaZWrl6ZBLH03TL$V?f1EdOl`u72r&Xqx|C4Ba4e@y!Sey$cL?|4* z-O`@R`2#{T$xIVojZPcI1inIYe2qTZK%qv|2&4=ry)B^w48u0AiK~9oz~%StKpl}P zqdElrWTMeRHoeEK^29cRTg>9_APXmJKIyF2=t4Pye1^UEM)vzBrxfacX{F1-Rgc#!N>fXkHmOtA6)A?>ZBqKd<<;h{?!=^;fx zq`Ny61Oe$1=^7Y1WIzxk29Z))=^9FEXpm4~2AuZ(b4bAJYBM9Pzg>no#1D?t-QtXE zJ|^y6(=7n0V5zh#7b+TI&v?GUv{-gZGA*WhfeUMY}J z3nDk0pB=yPWZv6RXw?!C%+~gA z@Z)4pe`R#Ra1u#x^5c%Dy1$$XaJ>-*mWk?LB!30xElI3zo2TAiGshUS3K&28uZ#=8 zp6B*YVEV7Qh5tcyp8O*^PkyAh3D)_X?04gwP7mE}xyZYHkWnCADE87X#kONh!fVT!N%Yzn%l&|uwqNEv zW`U8HPXb|ZXGFItHamg0z0&b7x(&U@CG$;tD@N{*mxBl5%ahUj8$rH>*;V!^pJrU_ckSIM|07ekny)5Ne{m2 zv{h2vykrgg%h{DigUhq#-=5$FGnk!xWeM{tQ^o6te9=0hGp#u#JO^aiH+w(;&~G3E z3-zYExwBz=espCJ7GeX9m@GO>Y7V8QJ}Q1b4?Pr8qQfwR@^Sx5f8gyUlgP;6w&7Kv0P9MYm+=#iGgY z3p0?cg<6l8n_Ef2Ipw0uzmhe1enyWb|6s4^ZQzeb6uv5wuyTvX2-b3u&@PzdUc}+N zDtSiK{PT99$-T*uKg&GyP2dwr-KhK~YA044AE4thx3m?3!BlH+tI~(feA3u{WpRDM5^HtF>eC<--a^~4Y%fz$n zO&+JJuUX;_=^mDy-@(_rVdpGvKRXiph~{Pe|9;G7g=;mbx~4pD0ZhpyrbRbEfYx-w z8udb(cf4+v)JXpz*IsS4qNC*L&gO}a6}laUd}Q43@})4NFA#)E<1yDvI(Cu9vhV3mn8RuAdTR++d2zhwuNrGBi?(LTi0jG9$a8WA9n&= zow@lRVds=XHe*}17Vs;2HEMb^FD@Ijk{D(QHhI}~w*AAUK?O$*rCb0-uXY8{!7(9$ zc*n9}mZEz6;GdAp>29B$YRiUV+4SG9t5x4AW6=!$_zP2IiI)@=op^lGrI5ujAWd6W zXPO!~p^LLCsP6;VZ{!FGw6K{EpFrI`=guAZl5>aK{QomBckfaA(1MZ zzo~>-n|a#CcwPZrOgBCPZF#(*w)F7xJUa2>8WEz6^dnjMk>SIm3_d6&&p~fkYX(Sf zjSCcJ95W~wz#nk&{B3ev@wIfK^>yLEC9qoAZTWDdOlD_i_0Q|3}u3ctpJ6@RMfC}HRSp6bY$d$`{T>r4WNN53O z@Qg>_l)%$JdLgk(8rvwAXBE{d%fnD8_~*^b1Ani zK3Qsl+}MGemawr7fI<0tgz%ip-94Js?Fpx-4vi1{=BAzQ#jeA#nGgA8E4BHwfM z#nG_bE#3a=YH6(s{EitK9!$j{B3Qra>?D8BXTtJPN@GopNy4)f!i3cfox{93LoM}a z{q$@{z6*zS{-W!Yv~Ki(zsKsmd}2GGbaQL!ni&Z#`6;?S`7VXgKu4=dcv@%2`?_>HKoHMH6$zHN&ORDEABaAsuB`_lmEgb=YW0+ z>5Sqa!XDfBy;F2lG+qazR1JyJfjA2x$^<39~{~3GK;^toQZ--&7(MWk8K^h^* zu63!k3`Pus@b!JX_{0o^*=Y8^{3fhDTW>`>a<0Ek4Q?eJ>s(?|Mw$b?B6XhqqZQ{1Q&XaI7=nuEvAPFq|Va5?o6t7S6(J!gDPIRT5i=&K1jUT5O&Vi$kw}^@hZB?ubl|%!dW$_ zj?n1yxvs}b<-fWVZ5Kdp9w4U$E}uJwUWXI+P7!Qq>W|`~>6aF!^P8JllgoT{j$&}E zaGDENJV9cc0IjE8C$sXh3C9~EKF z9>SX(7HB6zl)P?oZNYYpq*9VOXXnf^t(1?~?mT3^CKtyBaGf^>j9UA}%VGf`@j_&c zR{FBXGtYY@Jq>H%0-lxx(zll1)+Uq-obIewXTCjK`YnN&f+HXd&nHPUfe#06m|sn?nDoBMw<1=TeHGJg?oyti#27*?ck~_y9Rt(`ecd z3c{}O7)H=1)^v;uFyiwCR94u1-JU`tjx2})9~b4=Q46y(OVWE20puqEQ)Lj zY#A?GY}x0miBEJN#Ypsf9?3@^^`A<L3FN!$K&hy@kCQk8}qNI#`=0A>-nAG4PRG zn~r~lAaulJWt>sU#58f@qT?|Px>yFKWKxFrq=j=b?{BVK_qLNs9G&z%tRpLeex8o! z)qjemQ7clH;g^Lsd;T34?=KIid9%C>w{or)e_-aNnJe&+7R}Yve#9<@MLrlDr`JOnGVRiRw zW|$`I_p9DOaq%p0h~1WWpJKlW;oVUF=y8#)9s6>LyMQ$uPsvI$QHN`+iTkB|ev=0= z9=zM$GuGm_=dal$yr@M;~b09_iS)NR>cTolH(-eHz&BL~RS@ysE8$GX%!K5*b zq(e>>7S_wjNrQB(*V+y4IHpMytP!G(z+d1Bz6!?MYU_xe{6OCSy*BlM3(R!Zj$DCU zi=Wb<)B-da{Y2MU=FdADUgr`p&81H(+ERYG7_|Nti^ZLL3Y_B`Y9UPL2HHprxfI_N zhEz(eW|H-2d*WoTZAw{C%S7u+1q5AU70*TiftG3I?o6|@4IC*WNw5XHC9UC zV1A&6DZX&rI~-qNEwg8~mm|U#bD37_j>b=9WP96yW$h#`zE%ISD2|wwLIR+sZytYa zSIWJe`#IsH&uS**7U6E*YKDcULY33%hyM!0=2ABBYHGq5HoK)gvuicQp6Irinp8X} zEcXY!!Nw2zAnc#&T@yv~fsFYBd%@em_g7f;SVr+liJkZ;`HOmP2h4O1RR^!-wEaEn z6S*SIWftNs;YL5Z)%8)6hd;!0Na0lG&%A} z4b<($N#|f~!9Y#F><=YN0x(X>%11gnx-XLo;j8BWkVWuUS2wY#&s_JaLaC5Rjl zLTa$~t9_jv7gpar`GM-!cX3+={?>g>ic~n5I9ErsrGb3h@+z_`@3WPx|M%3pr)h6u z^&Jb27{k3<6V9A(uZ<$#2+l~T)FnugMKG;D=?o%rOEozV@VYwv`mA_po&4d@Yz*sI zv%AW05mx%ru2Qi*^N|y3=7g)+O=wysJUTc2tUh$bhy8un);g~@6q-V39cCSg#C7>9 zcEam?VX!EBEFVdhW7UJ?5nFOo5(Ihf;>CpRg}0=a6f>uNXVrVbcGaNR{*Zq^7b3e8 zKicvB*{=&Djc4?UXPLXJ+n99A3V2j)PKykW8eU5+@DF!&;WDj*BvMWV>D3~x4 z&&gbk90xpaYPE%$j|Jz0#qjcBGAMTTNbxURq6$54i;iZ8H+ed4`3Amr8~8#6{O=6z=(bSkojQLhOrw2vHz_q}3nyLvOI>w|)|S&%ruB=_BxRb?1wa z>+!2i&N^0IF!yUKT7ZqOnsp|#u-3kQ_jkVWZJI)&*vWw#+;l>m_>*qn${7fQ?^apz z8g!5DOTw`|<9&;Tf(~r|8Cg^d&#*|ygyO4OK1Q_F7|&peKUId0(<^#*GOrmHK)D(8fAbtk^10U$jb`z5v;Xad?7R*-Xh^w z;c~y@0>N#>FPd)+2pbtyPIGR#JN#qs@z{le7;?1C%vKQL(h98!t8k-nxe>KSgQrCkJsHgAhwA8W)wqON`5MXR64=;<0tq1w#{@RdfU`3% zA|xQh=^Jg(QIlduJ|g1qGA}%25C2ep^eJ1EfLsD|B2IR?FPpZ#A(7=l?GMn{hKvch z?Wa7&FYuLN4T2_|14saD&D<0k_Rk?WMt*IMXJ zkinabUBR&leT+RFL``7aW{r*L8k;@kb_XF?TVjPo`I^Opm)beP@P5eL8lyIW6n3Bs z$l(Jy7hmcO31xkPSdpQDz#>0=wGKgnQuDw;CcO*N?MmRYEVI?z#=SETh)%^l;aSlW z>Z_dnbzFJ6yw8gH!RRbMgSibHp<#4axI2~@l=pbs8sO2jzYRR=6;{# z9%DGt@+n8;iMvk23LI^sqxW#=HRyD(p*siAfjkWByuarH(O3Y%%i4u4bM@E^O!LCd zi|!T&5<*lvxzn(3^e`dDU)eI?Xc|ksKc_}gd0DfW<>AYm-N=*7WOO?|Rd%bqQ!|r` z0V8@5P`$%A3RoHW<*!Zv@}!}1hr0`~t!ury|11tf+4k;^5|*8)ydjmP^=wa{*74=- zqUy+#^AsacIG=SN{;23C_d22L^F_24ffsj1rg?Rl*$|FiTfp5}ebz{H1XR*+kVO*j zX+&$;KWt*?Aqxbw5dVWP|Mz3j2n+Zb9vPG|cd0O1{VeXd3ITQo-fm40kh#lGT~zK9 zHAB--&v1Ve8VHl6)|Pog>{^3QM3|=*x$dFq*5v01!^THEFR#K=*J2~V!pUe$1fV~Z z3Yq61Pq=X5jx4`Oj{_rJT35dL|32jMMyv?nVotj}5(gBo>lJlMcHdw%ESBWoTWKM| z)J=6KwmLLbW^$+8UMPav`#BhW6DChijWfjhuSaq&1rt>qa6JY*qr0Tlnok*Ju+C02 zjnwUrGYZg)=4!oE`dR0zd*c4-Z`NiB6NS@HnS~FDXICZS<_;*Y94;;T$ z@Y|MD``l2cQK#W<`e-|2Sl@$Qbf{6$za$bG#bG7nwRB0H{X`ssILBS=T~Ne_z&#Ta z+#RlYbJht*!T3V{jNZA|`5(P21VGJgZSA0J(hq+i^0LH29z)2HnFy$_OKWO?_9fX) z1)8bkq3}vRww03zO3PR+{Ou|66vGvob+31>@>ARO<z5Fr3(I#T_v}|~Y31J0g z=$efFtoLrR6KgX0?LmZEmvaD z*YSM^vRg;T##JZ7l4ewO>0Y;M-Cp+F`02H>siad-uuHpYzV`$nG7{ktxOkHG9Yh3- zQYCfQr5(V@c(geTWZ*Ek^#)xF_^Ic0HTXQ6WU*SN7ru;NzQrbcFFq9pM?tTp*MfU6 zhao-nzGVf_l9ZGbjn|HL?Sm@!d;}IbgZ_q{S3jDjA^4U$Azf$Q;2JD&o4vQ(WCM&F zK48gZA? zfU=XWhP&vW)MaY2KeZ%|z2JZgM!)KNZwst}F|8rm$0=vGa6-|_&4f_0E#^Wu#Th@9 z9(3k!VoRw4jxX!=XNrb&oy=YDz?2?CC!f&F_O?Nu*yGFuGx`$n=ruq5$q`{XwP`BA zPH=9+pJTk7Z{8=Yvt1aIW#w!W{4HL)W)kXqfDA41H|4;5zF34{2n+6;} zt5Ld_T~8MQ6rWTsJb+O?skgHi{%;!2e=0h{klo!j!gFO8|35AlhXtKHxW?5How(7Y zsfaL5S_V+J5OR?JdKD+SA()J%8Z!U+M)(|k_yG2Sc*1E`&1F$eKX1TlihJUN!>`Hk zwKrWq57{h#5WbGCwu&Oxt|+rNhg5%t$;1I~;nE@n^+KiJdy2_8P>sYvpQ4u5X!kj~ zp}gl+P!Qd^{xyq|``iS*H+Aa@TH?Z{xHk1WfC=sadv=v_uUFh%n<>jihGBWUDLQCEgiXeKH)j_x#>zUh@fKLq zi#~x>hs|_Qv4XK?TC9TkBOq<|g?v_r04Tx7nEOp$R9cLh0P*F=HV`s%J+W>^8{=3U2%?$?4@;Ia`$s$a$lLz;Z{$!_}I z6TTU~k4Hc5Ix6j7J$SH2Ubb!NtX0yr+;+iKMl?|I0Z_YG>>t8kpbOxd;C4NY`P&=v zaFfKK8{gMoWU1HFS#CnK0{rk(-D(>u(kpvRCFrFx?jBtjgo#6TX^W{9>3r#VVd(RF zGKG{6bMR`?yhrce(CcdmEXO1gUhh4yo!l67hIyO$FeolCz+zfnjP;4;JAkrv-n=4s zS+e=|6E;N#$OKQxF3N&Q@&Jcok*LN~9?T5pFcGw>+W!=87;d%w0o1aKm1^;`{Vj{? zfR0S;i>epuc?;~#Zvulu%Gba%29YBnUtT_7c`wLrCDH#>lE|532c4@ese>qs!l_5S z3L~N2qw493+75*zh6>~;GuVMA_}7ck%%j~K?maV6>8zpdZKvvBA|&O#+cTTx?!8nD z&8gevjwvBZn(a~MZk}&jp~hqiV7RqJm_>kbrfw2Z+3w%9d5LK>HFu{QQf5@Rl@Rq7 z6gWd?#n=$|&DcfC-2ik)l}0?vi_<2tyqLxMq}?cqDFPZAj=t)Oh{6dL=m?lX7+Of( zo_6otfBxs9>L&1?fOCy1`VSZc=q??_(*?W`Zh$%M>Xo~NWnmY0?L4wYFYY{Y8~`r< z8<+v0O&8c0AVIQ^ypmC)z3m<&J)@KbNOgNP^M<|hMUzNLP!m(A6?AOn+;J*j_ zMB-A$OFSFoqsI$~YGuW8Q)&xFaAenTROzJCGYgew{F@sn%bAYO`4|t7-WM~(@j|X* z&6vb)=^pc)*5fq(3d|6a%SQX|igilMSjAr&(jxno#~9lI*Hr}sY!jU0{keQq@O6{s zAsBgT7?{M0@6#6b=S!1UvjfBv%#4Av>f%?PwYtHf2O$(e&CrxBRa?)o*^(9484%3e zPg}E%pVO`E4PEy3d~a=1ZN(L(9rD6rpk)smgRi*%^>OZnFo)?GTVqj2|9T@Skla)$ zCry+S;BF2lPqp&)SSoU?LY^yKMLy0sDU%tc?B~qZfy|71vd z(q+35L*TnXzI%N4P#&;cYESBHs4BCT&Z>eRYhlXLP13armKwpg(ex?*bEV4A!!w&F z^~JjDiHbKQtY2i)r#}Dkwfqgv=8Ww+ANg9~vYH^J+=K1A&u*kt%8sL__+2~3;iOKy zj*!gZW<_n91+FBQ-lYsMnc7O+Y2*o6nm)|S-B-v$CcJEnD-o4BVlH8*mEm2v15#)^ z?5r*|B%cvMdLeN0PiB^HjC&|%2AW^Mi=?E^0$@-kQ0f$j!k|KrUrOkAudT_-rK(c1 zN^~5(rmz1ML9L~n#U+d&jGft+gPdcJ2dk^lkKz$nB3~!F00~m zc9PtzU9Bi50S^B-HfU`WR?7WY2+Z-X%*@!Jl%uw+gLXz{XvlbpvN@wf zcWb>@*R~4`TK`5N0&pqHh}Kx`1NMwFl##~5j!oQXX$fpDUnEDVR_rJ<#weY2iVg?U zvFtm62Zy_eQWRM(H+8ffWXzmk;uTfhd1IcVQH?KVC=uLkd6dJ6pgM_tH#Sm6i7xXx zA~%;xLC^jk*8Pdc*!ve`03LA5~RUOi{xJWNt5V&dY1!PteqY2mlO@NqY` zQVmIQLCw5W*%Yxz!_{XAlOWV|CoQD5k!K_<>l_42o zUd(R3+($S; zAofw*oO-}CS{ZB!HlD<1+4Op|GAk0Q@EVIs!Zrc!@V)X`A+K!(tjpGgdJ^pE8N=nX z{ph;odQn}u*%g+uX3nut4s7ZHO~+Bnq)U@kX>gHrDoI6 z^H$qTY!TmgfDQUS@LMj$A{>$h*&Sn4pld4v8NtqqwmlX&n78n7GJ#MM${;4JriubU zC}FS85eUlJyYA?M~kNtk5bYVjdeAs=T-zxbo&SGg`y6u>;^he}^@XQO*ncl2HEuC-_s<;8|s61XWyT|mfOPGrbxFO(actV=uNH; zWb>SjHboV~&96cEl;#!))gjU&!l6u=D`*LpjQhq8)gGk-7Rq-MM93^ z;==Nf`{0j+>$NUMe5=nl>r!LR$TXNI4&d;x&aTCKV0ojYRu2fm#h&4ALn=CC(XG{u zRlU1K>0NI#gYJ_Zd^mj|e|Z{=sGCK`+9TR6B?9_rIcY0C0=n!a7cY&s9r{xlHkxXYFDC5Zls}nXc0tw>FffNMyq%<0ZsRc1RWnPJLBdw2g)EO~KwR+qVh z)bxQlVF9IU0k!LSF{CSyd;OD*TmeYp>dNQPM1&-{5*M`jMYBm>!`aKalYuQT7oLXB z<^;**hLBF%p$zC3#akK;$s+@NIf~X?Fg2*HMal5fNH>EjUrVmV!3N0m*EtnfjbVmf z56|Heq|c((x#%AKw9SlbR7(T zsSQ_+j6|rk(~4250I*Mi>W+4&$l*$0)v{Mtplipy_t314G`SqEhk(tw#y!yuP;)M- z7%~H-$|9mwBa5Csf#0@m?xqsd`FI89VQ4AI^|uC9cxcO21vOF*#L4k@v4oWmJueax zMx;YD+QPDU+NR6xC8e=GdiK`ML7bmV4^GK|zL&oUfVnN;MQ;)AQR){kS$V)Ch5UA-=4IKnj{-ogIW)^~f}Eo)6WS(y>(F5}VeZX#PWkzYpz9z~@?j6Ns^ zhl`6Bi){(@0gP#^O1=+$s6EO~{v(!1usp>2I(H}bja3nxW7n^3Y9|g!4RW7;NH|`) zCPdf#P^y`tG=8z}`Lw_-)r_G{W&`nu8f9|lr|!w`_a$4)%mP@SOnGUA`eK-1a zed<-D-YP&3B*Uhk{FXxZnWg;t5Z^*K*@t+NM+uoB!B-;+p#9d7)&O)H<~~u%eA{_9 z&spDjZvJRhd`N2a4+u;ztL3DP1a{-SR!JW=bD1rZxX(bSbI4XwYC7?2b(^tpOmgAoM1um^Hy&6@qLUs*qsB27G& z=n)ui9Q2>{^+MP{4nBrZt+=RI`{lLrJ3vPvv9gJ#CHgpa-&NXHqeE}v`NX~KpC;dv zw*R9pDFAip024w4IEkDrpEc)t-*ArgNf}|=4q%N6|7kgCLiymD(Df{(P!=bA+GVEY z@R)CkSXg{~@fDPf!=`DX6AAVGR_NwH4(qo*X+uB%L`KiAV>binB;TJ@ca++S%ygv; zJll#seap!R#1LAv`u|P$8=6@OsQ!W6CGRpv((R_~UGG@2#||_k>od^41mNJ&gPCs! zkeasp5IEusAj%*GsONV?Ymzz!gcQ=Y=dmg;*gpA-8lIM zB4*eAD>nMKbQyuwHlfT!q9ACuG-2NwX*(wle1ByWt#spsD4o*P73CAX0BI-pF{$Vi zX!TYfW`Z=0vT6D?^FJ}=HD13Hi;i*g*pzXMm`qY_Uk?L(pWaS* z^fIwf)j3=`D}uh~MtEMbK%qLnc}T&nc}m0A&5OwSCy}?&35~VA*cOXg9ZSMO)s1)P z-;Dbb(P?I2Kh<0CcDu`J|g_;D?(dBudeHfiCmq| zdldY;tvm%Se^H(7Jg4ip(tpfly73zrlHMs95Oqu^3y2Zg<&j!Ds8uGHiza_w!G{|_ zrEeB`EHT#>oQoU4`k*~VH#NKRsdO9b`yb^kFa@&JQ-M-n!s$y8}Px2 z7cYD4gx}fz^R8XoRX4NY^`ID)EcntPI~%rR)cLu&w{ICcn4&i1;Z5^!)-3{ghZjxy z+%y@sGOuoE17dK&y$Q`0&{V1VEIs4*RjnjK+h0LIMxEPAn5AL**hosXAEZ> zrqSGlxK!B-9YL*sQ@+uSvOelAF zYX3})RKjaXWpM?rnZq!mgW(QODBI$fM(wB?ZF_admY>KnV=g($(@;9N-m5Ry98M;t zwqSJk^!x7DtO%=JAWYj-z=x$H)o2PW&7#A_UpEUOhbNe$^~Ad~iEL7W49pYWv|1*q zvzu3K#t;Ev1%nxy$VR*N*3IuC6QVRaTy5$ly8UG$9jQ$wf)-V9sIMf+F5_eNrAUWU zjExNe%EPjr(tE^asQOo+x}9);40}K>n*5l~cG-H|qF(oxFrcNLR8A@b+w9 z4vBXLTHwzn2o&XjevJq5W7%_rYC6B)CS9v6xps;}2;$;A!`fO4!RwYr=25*}Xbj2< z72bSe_w=+zxR(a;aIs(Fx1u2>Ydh7pAXwjRdk+#SXn%YTc!RJ;RF0*rNoL$!bxdR< zp#vZyL-PJXiJsu6^5?f*8Ueb|9)mdKA4Cq-?GN2?o_s%{KZwVw{@U8NSYH==@LNhBU1r%u1^ zi8)mFd#~~FF`WUXAc;TS8g>AOy8vpQQ#J1Y?v@(@Hv-N|);NeGe4+MFou@zjgv<<1 zI_o1NDIqV}-;Xg`{cetLv^5d={1`dufDM<4S>;<=DVLRUqbacfKfBH%pQBXZyf=WM z%;j9{51#}6C#CfZlKC$J6-=^YJl!xW&YBc_Olv>dyR6#CHb!+xJ}^H^do;Bl;mMMl zl@`w2{~9maHqtc#yGWEez_4`+m4siUs`+Qr@Ejy|pTY_ZviFo~%N$WFk{dQFMKKRzMk=D4v7-}>ij%=+}3KJ%0 zRGqnJX{g&I1G;PTOOR9Gy!rUbFaYLDriWUEVM{dl_xsfe4XH?wG)9g2yITrCi?0nM zvF=WoE_f~vCXVP5n$9~XMaVt9K8@w!+4Q%5QOzNz9W|RRGGt4VB^!`Ov39pV%4TIA z!1%zW!YAKW<1~^iTVsqZnXd9_C!@opRLD&%?Tta{xZ4w059-JjV!XSe9uk?Q_hAET z75Z$H&vqpM&)rW3;$(G?oeVcHBeH{>^(nrQ0T$a^ zR?APpJj41Rlm}o60>=ed7HY25A+f}?WP0mT& zSxKu<`{*HYw?5_rGiGDBiH@?Oy8R+EQj!F;M!8xL!nz_6nG~+^*JJJBjAnyCPLt6; z*?qzZ!aCK5bI_`}0_*e6i5g;Cqi;~Y*MU#Z`eddp!zSG9l6)uQ&Q$uw_5U;YHU)3L z=$6)~^GRfoejSBut_?@pi!grLbrf!W`C$7oNTzZibo3!;SiIcr48gc z_R>d3o;V&GCmLRDCZ>o>({>#_F0Pd9b;2Td(tS_x@))cRBK0*#zLdZGUHl#x&1VJ z=Shpne`rV1|D_$(6=xV!*tNgBn91AhSND`~XPGsV@!zQqH%Yx7&O7CF65W?oF|YId zDwi3mBx!reY4(|tiuTKU<{FYR>@+@;`+5E67R2I=J+afCR{z@bR(!G(fZKVu4I3Y| z6qLAg?|+EiFkT4LzmmoDGVSoQ@27$zCOd&hbKi8%Ya={;Q|&~3Qvu?d4A9&0`&EqS zrY%_K#)~u6ZXRsb$NSc5$B!c9k!?$*l(TEiMBd{$iTc0D9o&d4#x`}tYok|*9m+NTRoUm?TIy#xdA%fI+yoi+-Uw3%l&oz zBWH~d`{u?eX7VB{0_x!AxWN*z-=+MH;9I{GYFO0iz7pHDI$QT#pEf7J;iudDU^1H& z=do`LEgodY1!G~mMStwhSxE*-JzF_3QO|5}f26zeV4y!xN#>lQ?Ip=QVk1Jq*Mj-d z&2yA$L&LaQ*#QQND-*qg`p5-g4zKlQN@AR&4#MVMJb(9i)AnDGvSDKaF_r-O8tcn< zzB^gF3JvnE+Cz<1pd4QVf`VQchW_Ukp62KN*r=j-CaknD5Q=_HQ%Mhs zK|SZobT>AY+6FPVahl~;9lXkxgy#t$bhlR5-%4gHMFxT=us3?z?}!NQ<36BQDdCdg z8Gi?-e9cUN)s}k`;_8bQ=!#1i`b}_XY2r5JZ?expPiB~V(ngbAu)tzrMdN`~Crr)$)O=Ur1v>>i3Bn z#ZO}PCEef<8qO0(VEI-*7<>U%Y`T`jt3{L?Wb0YU5aqBw!Nw3S9XOq5;0|e!PuWpF za9qY+epz6Dzue)~zo=Q-X~Yo{-#dqEY{;J>=^#K5yETEE7`{Y53E`MyO4!6(daVAoWmU{~Ioz$;3F4B7qde`jYwtv;hCB1kK z2m**{bFfuH6jVD>-w7?vTL_Fuz`HX3Odv(hX6x=X`^Q;6|8*ia~8U`=}_SJfHu zHS;uQ`6vL+dDnbhPa7I&W^T{3q3O5M@KUY_3!nCQD4ayBaHDS^Tu6bD5@|p@GR{zg zd{Yp0%owL~hTewrFFKiB<<6L1&;OXGC(Y)w5bc?{7eT0zkUJ1__ldy?y%G3g$>;oY zIH}agcv{Inb1dH20Wjpd6hr7D3{Uk`j~WkDOc#}hgRq$P*1VT3e~_#6i}+~`ITA$a&qFWTT~i-R{@`QJ zNiv9O36`CmO=Gm;H}3IH@9BLk^daNlGVvpiLq`Ro*a4XlYrGM+(0Gq8$kSrc8O{N+rb zDeKrPdphRms&j5`X3WUVS8C&%^Y%qq*UsrLw7}=`1CgJxktpK}5@wxw)mjRAb|1Rm<>v84! zE~3P-z2P!ZKP$HUg>X|v7sfFf&u#$`ay`d{rw<|12*Xw?pqbd(x5VRxi}G#{xf=E2 z`?yG}=MF{}_7A?0Kww$s9oEo#^REQgc#k~%bbR}uxk|pm6JlvIOOSN4zVwVnh3RUr zO0!|2w*GUtDjrPnd>{stW$`G#iB8D79sgu~Gf$oi7;LKB*j6XbqRcFi<+jr1=0u%L zEw?`cB&xD)*(KFEg|I!*#J{@{u^!0JEV9A(gbsKuHFFbyF($S(|6t~&CjlPIq~{)G zh$dVN;lo>!U@^B}PqAgc8q045PLHnf-9(q~q|)bLge1(E=2P$XYFsDT4zGO^ zZ-togUu|y_-6VA^j=!(TfP4jFVN)pJTsrP&z0}T?E*TJc5C|Q$!{u70XqPoK0xzdD+Z48 zr~O~JzFGa>+ot~cZ%tkTcGMrThkujrspX1%nf_Tq`I6QmwyFB=nZ}z|zt6x6%3tKQ zCx<7*h$VWd< z-amLX*-f+zy~gWe&$9q=ADZtva;jyJDZvFov!*?E>zBW zGwF?hn#T6H=5<_^sn~%dWjBxk6=>#}k}_6ZL;3_n`VHk8^O%T|V2S|5w_{D%^ZcT? z^3>dy z%Kdv%$lnPr>OW(7gX45g))xNFt<4?qhEwEiC1~wAo7KBl{e>^`!{P8PDa~fcmZqV2 zZrZ`ugj`2fcT1c(f)ljNEPHeNaLl$9mejz8r-~nQFN4w_-$u?Ttuq4@LCz(h+d|v$ zBP0HouBJ16ECWHY!lClO329b)t=U16-J0+XufJI!_aK>BIu#US=|!}qppQIeeA`+7 zDD6C8bp&-`7`)ikk~iVL(2$AkU;{jLKW>@l2zCF5u$Gq!)cc#l;st?IS{kXZinIr; z@3zK_>eFMy_PstQH#`)EQWxSW_{BWD0At!= z+d^?H3w>yaPs&;f_iRJuEcjzTws>Q@iNA$C6Jjg)nR+qi?pl8{%_(*APbCq)j@#-|QixQFhbnr^jFctAj34a#<# zuKRS{Bh|>6dsPq~{y6cP32Vdcp|X|Cqu~&2*olZG`O>=e(~=A05AqSiS1hO13pXK$6$;A4oxvj!a)Z%8-(rHc>`1NQx6h&mA=DRzeGEZ4#Pi9 zR*&uF2Vum4Xv>Qn z6&#FC`0l?a=_lZG0eY}c&LYS+QUq*@NzU$v+MwO7)WbDPjfhZV2^xaa9o>%13Nd7J zmx9a{MD;)MWW(R+ak;mBmX%m6KM3#MV~cJbSJ-bGg7mh=-d%+H>Gl(m;Yk62Sc z-)-i^Tb)Z;5Fi!03pXCAUv*?UI<7~1u8cItTTlfq7nowZZP1p=Q7tdVOFi4SV-dj7 z+=8rEjfOLSqh_BuO{iuzVkP0rCC>;R`l>b}ID(;&^_6bZJ$_r}+zV1_$jU=2&{CN< z1La9x%LI;0EBfDj42T811SFw4m=9&=IN!68K?0 z^}!+gPl-z)P&PhuWfB~OtnyW``*X?KK^}1v2765z+?MKYA251}sA-YndZ`!f#FS9K z>6}GDb=iYlU`R;Ce)Ho3VW%t&A8TqLUk~1FKnjoj;%lJA%bEGE3F*0LRg$=E>6wd1 zJ;QkXg~P&sE|%&a;CyLW_?3tYYv_3r*{I zTW9+9&7H!`o;Kkk^PMiB8*450zSZu3QwocUhtZ@dCs%?enqm{qd)sl4Zn%J+g=pxv zAdt*O^Nb-d>MG=HUUC5y4x*E@xYsM2|Gm2`Ok&v`PRCXEyHQJ0upTBU|MU?_kS{Sb z%az}Phw(#IIo$gkjECzC&1W)4CYQ5%ehj3B@y}WzR_pQbBaAL*WD<@oi zgsK)p3)Xd8{ipb~Rx7U*#8N6;=3L`N0*-=n?e+&N(Ysuf?U6p9rEs}7Xq&Nwt)ezh zjKx{d&dZ%tv?6{pS~(N{Ri#-}%juu$Qk8olLRdZpMfal)Z1aTTxmDOLwll4pJP^E~ zizUK@wOafN$MSV`2ElvES_`x;aP_7h`8ll44_-xv+$GbQD=Ni89{DRXs_ldTLV{%*3wZDrg7k>u zJgx4pS0XVv=-T{zP@XLwR&MY zK7$cvf8Sn(lUO2L%_#AN)3f`{hxBms0WrT$sOMDl4A0+G9;LL=8YU}P&98`c9N**T z3NAQX(QaPRPTd2mP6|+|XVxDCJ}t3C$^sq3Vj#jU#KJrg=CX)OB_IR;na8UO9CZY0 z4=7*IR6K0Gm?)_e%Y!w0a_JhcCpjNAuK))jZVV$t%B8oL&y>d` z+o`li%yu`-r4VyM+Y0jJ?H;_&Uxs&d(T2Bi>G(N1ir+ekJ5RGZG6*6J z96rcXHz4fqpVUqoAAiA_p6LG?;sA3w=NI~TwFrbBB)i}`m{(yBZ`YSSja}7*eYPva z;{8qp{J)Ir@#e=t&LHYgsBWERtVu;J1RX-l#vsk+RgM=_sf2tucnRHkB049!U!=7qV zs+R#2X1ONHi9(u2Hp2!!En!0t-XOcqd10|F&;&7|YHO_2ZW3r+sfmAmM6uHcf1IfQ z8SV5t(y8w~0zodup|IxO4PVc(bn1zJ{FO_r%ZzV-g`;Veqg$+BCDNyaxiQa0vi|D7 zewoKvWEeS5F>(ziJ%S`KMQ6uZ>j15t1S~H^S#fH%B@Z^QcL%rtgc0t7c}t`372^fwx+I8a@a`2`a$~EMd)H=n_!b8 z)Q`AzB0NVQp*@c47II0O&g&)z!B}an7q1mZdIaKRx7<8uofzHPU#CQj-bh+(M%2T` ztrT9YYwNv)1nCj_M=HTml3shbA1}1PA2F!ltW7Ex=sFVQXilDu?mYm0X(pq_B?Cbm z^VydPjsMfq@A&&$Ru)2k;4*3)uKWhd5c(iIrv>0F;31TY^9)Z6J94GqxYf*%f8s1v7GguRwm+Rb+oAb3l8POuP;W2h5boOw} z4+z{LdI*R#eO%Uj*DrA0jwMCbT5wj3SizeeRw3I&5gVUYpCa8~*!bQV0$V+GPWb-) zcy7(^)d+Nq#nOqud^X3fl-9_hzovDzq6kp{bc>X|idWy*EA)Qo7yKkd$;pOvS!=D0 zC2-+#NOt5X(hcZiN}F!>GK}rP_M0B`(E|^b6c>?Ab2%UQ$%(KAd5YO#$AU!B%$&x0 zcWa&IbnYJ$5cylYoqyOt*gax(ttiWY4pR}~3(?G)vW^I`!ijpvhP`q_2weF|7 zpHaaeB((jnvV)O8iupp1_A7?zNRMAqGl$~J39-H*S#|-4d`Qaq=nVU@6y{cSNDnmT z%Lut1mcZq9Jf+>Y0+UrN9S(4TutxLUKM6|SChp9CtAF=kGy{YFP(!bL84;1Y3PVNT zIxPw_N>I$0n>G0t&=taP&OQHJ9cb6%WTyG58`-w9#15HT(G!r3O3_MuaTm~Vw>Mz7 zd*ug=ExN@-&+-dvt5PeZw_B?>mUpt5sWJ3w&OR2EeF!9^T>qP?@A@$X-9o*2sh!5% zJbk*k?fwk=cZzBx)$XJZQofXF7)(*9vwhiV)yOM@iL`|2WaGJ@_S+eddD0L)Nc*P^ zaR6`=kY<`KSmSe*oh~4v6*fR+c-AJ+CNu1jf`N`NE}c>90@^&CwhWt`<;W_#$k}%G zCcWFN8fcTW2CQZ!b~ea8#y@DJ^CeSc$) z_p0w#p!-E7sF@c-TvsAKiyRH+M#_oq2szrz^+4tYiwg7gYB*-nA^LAzT#@mZEQX&? z&+7#H00SHpHq*4xF*IXVDWuewh#~BavA$yhZe%diP}EtqY4~GVFo=xBj=62kmw)Sz z)2C%S?Z6{^lj|JUBi@(!zHZ1@p4koi&yd4g<$&UO-#wo9{kXn~```N>FaZ~P^y1rn zcU$vl8gdyhV&a3f!)ux>TX~>2A=RIja^_3)@&2oKJFx@uLJeGxywlodkals=AF>+nKdGO(NS^_tD1<*Xo*yESe-NaDlk~^`HXzYW;%Ok zz0rSHnXFCc^_thA@Ks{26s0szi|{&>vJS|<8ucz^9VZxPyH`#2qUXvjO2O3PxA&w1(8Ia0 zpru*%cO%_mHgQ8sAIN${Unuq87CC3#X-+0#o8f;l-sQGOSl$sT-zWR}P6%oon!Nnm z*w7VZrFl=$-;mn|by4LYHZ`Z^AJwIN%A5VtDY?1-g~4PduDt#C-`bY?RfD5#U~t5W zO2eViGwl2#2wv3R+QGtLR)>dPWD9+h# z&`#N2tCk?cUBxS+Dw?C1xI~iYDuGReAJH<}uKnL^*uMeuUV7yhM$`XR_Ys|H&y?Fu zqrkJv8W_u*p1%FoQVT7#OJOe1AtBc(Qsi~%=M|taum8Mt|Bj7PIR4S|QE7h6mk>xa z%AMas*)=gWs6>k4vI{nr1q7gBy{O7pv})kzCbw!2oc&c# z05XGzr01rDHO;C}Uam)xj=UNwGK`oSR(Ea+ddkptHP{XUjb0rzI~)pRs-jbw;T>J^ z80KD=Bf5v%y1`)ogRAD+=anCYY<*OO2O>eM zUy;zc^=KHMFXriO88C=%DZu&mJ~aK4A!398j&gvINxbPFSO$#7`UjRRtM8f&DXq-ND&H?O zEGn;AR~f#Q(&?)_)Z3$;mT50~Djh1a`3^>haP{(TY`RPnvD=DwEvfLb%>{4|IKX@UFsn{bpttmQ;iG{*-HQhLa~V|8 ze3C~I7TWQf3-1qxJ-vSd+U-h&&fHguB^I82Nv$9UAM^i+^sh2JcWM*~T)-uva8(?DN)Xq#Xo3K&Ll3A=ZfU^RP zz-D>OjH|CYEJ7&Mx}(9*alC!357=sy3w59ZIw}L&3-w?GkC&krJ&u-LA1jNH(Z2y* zWQ1U$jI?jULD&azc(2T!yEu-l+~9%JI+lsTrqcGzhk`%OE=&QFxCn1ou$=c(5CT}& zU)1l0zOxY~=dRjdU2R2V{Pp)f_S7u#3$g(vfnr1c-jrTY{rV~yM%FTua&y871^IdN zU8ao1y9lv3gjHa!tY)=g1{HZ#+lOQw1Bo}zgM;7Lsry1)CTi`LUWd&>j9OSt#QY6# zwxKq*TSPdhEBl|m>gVb0VDRe4fVSc3&i~pJBClyNUVmm6#gTfa+x#;YzxgRYTO_k$ z?w{E@BaO$4a&BdTf+L8m=>%P*HPm+Mn=0CRamX<5xJ<>fZX7mm-2tO2{qrK}ucdxK zvN7Mx;WTV}1qD2F++;!IiQIbpHS%X9L2n!q9ml362CU0#3CCsvQfE6pREilhh;k`2 zOc)5BAj4HtlLyL(1R&P697%60j*^|__rCKh^11g6*PjlXLYkDg^)benkRMXhkO z*aVnF-m*jKXOoEdtSijX&w-I@!+#<&1kXho>(MEBOV7zABcP?Hwiswm&2e6_RtbjM zDN{Em(k`k>I4lP$SbGqS0#W>wfTiBg~CRN>f))(fdPJ z=mtdl0YE0s#^%fHQNKGSjd!8ubrk%Bdmn`b7IF8^PX6Lz+y4UoqzaXCw3sDR@e}Iw z54NW|_tKurO2m`W?MA|)G2@q~^_q=k$s>7F`iauk6t#7%~F?|?Ht*wC_tBQ11(W_`=2vXcuL6rs;)#qQKW zVHRP(d+Y-6!Idf7f$%d}xcUbyz`AAsraijYsRGJyK2;dt`ub?l(=@G|BB+(|Up1HX176@%B&(Yp~D~jZ#{+u+>AUJr|7{zQVU^MUAHc6s0j#F)mcpMA+u@nBTD>O zZ;EKD5^8pN8FlBbu>M<~oOGzSrR-(8n9x%L+8%o+<6CY>T3aca+-xuS(-9r^t{_2z zA-(?nOhEnhVfZzk(3(b9el>iO|2^YsCx_dRdj#ZRM&(G_;H`aY>3sb_caE31ZTb9)_i!2 z>=qAr^y#emmvpfxxm(XQ*x8-dkQO~j79xpp zR!Vh=G{6cLX(W#wd11#f zx+xo}j&J1<4lAw5z)Gh*X&UrBkzlY^Z1<-{W_gUV%dKB=^0tU;0Mp?rg+( z!FGR&;yFiVCR)Pn`@QsC=@MpZ{d8AqluMoPX-pB}^KN=O;*LDfxP%GU*TJT;-FU7s z3pE?NK-W(>s32UYH}vkAN6TW8+^lSw2j zH6n>t7&dbKRTjH>53duYdQXW0K|sp5sILCn5KTB&xL2|Y-rZd7c5XiqX|9aLfHXE) zf_mjQ>fqrLA$t&Yhb1sju0Wm2!+@igw@C6zF>ntUcEr|zdo!}3rz{F|MGwsW?t9Za zP+4;ns}qFbx8{=kbYaLw$Gy$NiIh*hJfF0RnjX6{8HzxXxVQgD@q(JF#cIqq?7(2n z+Ylv;NubGfmSJyu=*wIq;|q}Pjg7#zi^tWG!+z0tWYi?0@Q{A}o0K2qlPYk`;TMzz z5D=?Lz-dnw9MuM)ZNU`z$`gr(vP^3czWc8lDb8-w&!6dI$?w3Cis2O>!XGXCx4;Gy20)--+`W%V2#gx zbaq%30i0~BKfXSEMxdhLfBAXJL=q&4`Sp1w6_y*(EDI`hEcZO#iCP#X5Y!oXNLH<% zD2T%E82YrMCRYm2gF8QR51Pktm}W@7((e9lCa2ruxeF^MBUh9k*Cqj@^R=* z+{h+$^^Wo;>=immT+d2p69SZLq>hcM<%Abw=0hx3ZY(cw+Ctlryh)dRTCYcLWN$tx z>6-8>3))!@+36vyuMe34G47LCml!8~@X7694``~GTxakQ<$mj~ zd;QvILx@1ebn4swuGY|MY}0KT(21lS3vq}dA8~aT&hvZaQrKq6G&uh5k3x#RMNxw<)jUh5GE>VS`1-OQ_X;*6IZCzO&smff5Cxe*$Gj-I!hJ+Q*Rm}D@$ z{k3qVcMi)5^G=%6G8q{f2)A* z7V0nnIQu~CDd`QCQTN9mAa7Guonps&rHCm~e)7pU_WhqWmG~}*7UR?#4aK!5 zF<0~$F4fDP!(|&P?~Agr1TirOJw5Mk7&wnqjYC@m2s)+M-{lMr#YFs?Gv=q0h+xKTq4Xh zc7D%g?pnuF-CDN`UjiYLrbVM5p`%xjKu_%>`;Qi}EMMDF&q{uTjJLA`5Ib=XuA2C? z=X&aaQFT(GlCT>R9SM_<{u3fF$&6mXRh){fAM7b2zSiQR)=@lQd}O)p*R(E>?oXqg zGmkoUbK9i;%TC-~M$HQrKuEVQe2;qofrP9~l)ynBRQ5b?e@Kl3WnCU~b|2scKA$PN z*%TO>RDH!>nRWpumVXVzKqJA^5q{Yucv(V;_~lj7}>zEMFPnYcG`Tb4C~z|Vvc z?e8@2=-)$(Ix7HzJ->qc{oNHGl#4WHO=m0*7#IiLUxOUhZ%Su8K2qYAEb7VvBU1%h zX4O5qZH^yJ;01b}UD53WKj}7(ecvA0Y%#PBuo+H38*KlDk08&)VV{?Y;|lNyx7=3G$?jJ#V7+sj!W|LkubF8n9|a%TJz8~q zH0EEry=on)%odhuUPzEwsE#nf(VgbIzIvEk$ScpvPOkgj>rp`|AkbzM0@bq?OiK#A z9eZE7LEw?y_Ic~=@|^`CCvbFG()48o#|8Y>hlrwCE>Ezdc7Un4GJ4Kk-w@2h{abbFzkub&o!_`QEOj)UN6Z4qkj$ZCyxIpc zpx=h<+HFPN{SuZCoq34TOs41THQG^{bF zXZ!iFkn+w1Xy#ubwp${e8(#ToFM@46XZ!7X%&X}#GWY<_3P9U(3WS;if=U^GX5QFIjjR0%h4LX z#N}limv}n6$@ESl*-bDQvkWv0*$*J7%0g&JHZ3tIN~H64@*#)A3; zhxQDm`%%k#cMuqQ>HrxOA47 z7n^OWTL?xezVq1%jX>YT4cLuP2pSh~+0=^}OX~8c$5UXokBx&^^(oeHt9Y#U(9$59 z0-wA_6_b{*j|MfDw_!3o!E1Q-a+a!7q(IWE=MNq=k@+gu7L?< zcWWF7uVi-b8yr?>R%G^dmbA!+^xj*BGUhDq+{#3}?fU3I=!t<&N`Sps-zk_PAuSN~a4;-r%4*#6M0Cai!bYv-XC%PPw3ifBVPh}+$EL}_ew;L}e~z35 z1J{|zVd0|Z?LcV^fkv%MlDB|lOj_tBJL0W5d;{)kE0FVJ#vua2O}!tmyUyh#tSuTo zjlSE~CeR+IX{9A{v|@)Gy@ug-x+h)^L{98sscK?kxwl`^M%r0T|G09=E=VTxc*}1a z{zI#IxQ44Xq?)AXZLjYii8-xE0{wVm?AA#Y&&Pm^MSY3l?a-&<_A_BLb!W!|6>=CV z!X@QJ^R$%YB0yHa0lL=)-BG4A%v%~W@f&6@*)Y07UmQzuwYk9cw1~td(pL{%r!YHz zV_}^C3nY7t%Kns=@$^G%d*iZ0fU#N#=^YWGbS9Xu5iQR*nPLJ#teOn@o+@+VucAVF zUjP+QdPca&AJEftqFNoYL;%yikTBFV;>rFC zE$8-MTBUGaKF$Ywi39-SRHpO(PDgclnOWO^emRNh+paUK>q$gDd=8V^K-rgD7RK5ON(0#mb$^s@;`lmAEJ z-~|7<4x3W!MsOhmy{D$T*=kE9P&p(Nd8{`s5kIzb6>R>_gf$c|*L>QRmjHxSBu?G^nkpPAoBs$-_l=M{Tr!vtMh&PduYcyZArD|;6VCRDJM4?={E8BkowusKCDd?orb zUvhYz?JQ2t)!t{(mosMBw@|;cESvoP4s>-s0MWurk7H zMQI7gXmM~koo>DLcZJ8^!8Iwl-?O1*^%iykSx1df}ctI{;G}`^UoXHJ&T}?G@E5K_2 z)xhi4KjBSITn5h)s>=}8A$L{{awdBTGS~aerHWlwJ6GGl+*}D_q!ew6(*#-CLX=X`B)NpB5ELWCDD|3 zw@+WQz9(i7=KLZGTiJTMd=ED)u6P-g82#3^;Jv+T1!X0De=v}5!=~)V7>%IEAd!1MrSmpAl zHSGkcxljk6*z=h#?=Qk(~JQ8niiP$^YXq*8+q_jUP>vyhUC+Qf_^P*$m`XZE{b zr%sO|Dv@pK{szz-!J=K4)Hf;=ldmauq-#k-oBf3OZG}hO##ie{K19-~=fmb_Guo(MbP z+&;)Up7GJExKjaPa>up-N2Z+o+OvDQkOCb`$*H6mQeG!{txkK(UgP8B3klL=SPY{r6!Z@VJ&}LB)|KJ2w}l1QWwXNv_ZYDzs9t~ z)D2i!8J|4H8ylF7$$8YM3Xtrp?jLWFoLVb9VOO$?y|T0;!RPE`rSxW|oC+2(N51d* zEv*$j2)C$u59dBZteCYv+V}2&Lte?QQCPA}ry3{r_w&G*7wypiWP>cV! zgec%+e@jc#a@CfY_nz#b*Mh@HKZO6v7dT2DCxysiI#d|dGCc~!5HmJ-%#*cl#K9&U zjJYV@bq;#)mmF60A$lyKYuNz%$_qTYus1DR? zA9pf08PGw$lI@dq9KT;V7!XirrZ*jhQ2A9=rTNM*Ep#l+W!1jnZYbPaHl*PEiM=~D z&GGd2iBHY8fPg(|54zVNFvo3*4`Yw^KaB!;etTUOIxnKCsygFVr&6689-Gam^hPqSDf&zo`|%;c$86Z4%a z?EcV)JGY8vVgHS<+>H0rydDXJGzq_$gNO91JiF8|wg^df8NJNOd#*tq<C*@^m|H^5pdh#dy^*3NbPo&jM z>Xs~e=#NOv%6S3VMbptfI;c&aXYDOkifsoYG>1{l4DWA(fX6;mtdV%EWi}++XwH-Z`|Up`RqRrP6%xAYR!Q6|`xl*)eJc57|l ziiRi&prdmxIi}dTxKGRA3!+YEJ0T61v@J0JRYcvTk~Ys{iFx3Ao}pq4dk#foW>zb?j^=xicrjQ>w)>mBUq_z*$(FRz?~h5v`bOKcBrv zRpQEupRYa;w@gX1&tWcN{`$3l5T5NUDsEomR{Hb%7kz`&xsL;~Z*F_FMiU^_L6M*H zJ239D7_v3e2yN_#>RnkO18?Z1`BUD=DBz^b>=+Al-yclZNEx8J=d|#Zl2#?GRddDc zhsR}9kS6>6{K%lWsY-CnpOv@Ml!gB3=HZ1x$cQIn3wji0))(4yiiF7UeQG;Qa^B&T zOc^hYSj2ZGYJ|UZO7(ONwQLj<)}yTLTh|#UEV}^w#f`A4=NC-!mzdA|bo%XPb#1a- zp(cMmb&T8bf+4@NwT}gpVm9&$NB`;l*^h>6&^h_-Y zaGInr^<+I*WuhXM{+*};%<=9F(h>u!hAQ21n< zl{dD(-#Zaw{x*#x%jy1%#X$rcTYDZg+l?~kpA3BEh|G5%@JaVyZb%NBMkbDJnJ9aZ zU!n}OU`dUE0mN-U4QL83Isn8d{sV}yp{ZxvDf9~;GeHH#bqQb)FcXDQsI$&@(|PgX z*?{zdY@2q=S%cAe#NZvBuXk`v-lCV*)m^wx$JfpRg>&ySQ7BFm-awRQr<<<}%D(o9 ztfHJ^-m%MP_T}P8xBNUHtK+~6@VmD|btOijco|k0A<7yFBE}dQGw(tTUP{F}&<%5~ zDpVB54#K&@biuyEUkyazGZc1qn%~gByi{tHtJ9(H#Z!6eQgaMAu^Ij`!iVkBcqy10 zgPSivWYMDwNb+1BAmsbvC}i;e4IL#&kO6eeg%h$)&xe)R8=jQTn2zgL{wgb;4ci{) zT~hB<=Nm#*euY!lss)~zGdBYSLQQ{U`h5E?9E~lyrR`Lh!OuGnf_VzkiCT zedT8G0?C|$Pn@fmpo8MjjCLkg;qF})WBOwLoJnc-8=KU`HmcUG((Z`2WC_dFE>SAO z+jr$$S>K3h`Aphu%t;_pcL{^e95^#nYaj6E?4f(b40JrPh<}N5-CtlAR-?pvcZ_KfL53DijEw~v7s6&# z3a%HAMLr94KOx{>4CaiSTMZNpgp2swGNIzIjKP<&Z)f|SbDE)yX)f*d7s4Swc;26%w^Ns9FNt(6V(hcH5o$+c+nc1_;t zUAel>$z5rm|5=~c>o$=kMY&X{#tsZ<%c|0OB#*cInJa&u`RXw9vB9YxfA#_4{Ivtd z9rk>L?Y;zMvGVuEkW1w<-3PMErbW;y_n5&I?3TIip7m420!|`$6 zzVP?y4_#&bxl6}QlSAUMhjQ1*k{>;YG^CxJ*p&_lQjL9n`O>2^V9b5$`Dx2VInqxo zog5XIk!f+amR=#zUJ1B~pCT_@8vIPy^3w7Ofc-)JlMILEN(U%ZRK0MBK*W>tGMhH? ziG;b3;=23|)CR###Z7Zc@6fdl+(dL@Q(FUx4~)Ni3GVB77c$ezx91jjf&);!6>SL@ z=uJz308B)y@skQ1+O3RFW2PGdj$mGR%im(;YjkULeE?= zhaqq!IdBQd|7O&5q;6b{h2)l!LTjpd7{=$+s0QrE4eFO^id4Q_&vmq$nJRz!jEu?{ z;vA<x#xXQqzXB3>gC-{qK z(zQbR`JMpg_`_yPB{9$%;9g4E<*L-svTV}?Z7RXtF{Xwn+D+jm)Reh2C4KEO!!hAm z$4vCpn+4>g+={YR5usQK8||p~(>ktt0XZ$S(V!eJcZdjIG)Q+F#4BC|^v_LSXMCrx z25s0b-0r?zcv^U~oAbw%;(q;)LSARcd5^+lQ^e(4Abe$_*$(JPKJ7FALmfE?L4p9a zwV-j)t89_;>vT)#eOA?m{5VY+yn-q{&=PPT;QuDi=P%2g z1KGisXL|r43i9)DAGvxO?@Er^kk!a;GfD3DSLl8N2n1iy>0ebDI4f0++{Sz5s6-eu zM~ae#U!`OIWr7LvgH?BeMpAi^VN1qhS@Ged8DLD_^$gxB0muR{ zoS;iL8pQRH0A|kGei;p*L~dCZs8_N5L}qtq4(Zm9pmDk?-Olq_MMO`Dw}SLDw}|({ zR={E!hleseKP4^jICHpSZEu3W0QmeDeG7sr13%9?mmD02WB`ObAa3j;`w zcrW=Bv@Aj-3j2KW#N4v8lW3UAY+j4OrmE6EAhTj%=xDD2GB zpF-D{x0F4fmFE`llO7NAb=G)0IKajVA#n>+!{hDr1NU%SA71+<-yIA$Ac(;!qJluT zDg^u}2<=A{V99i!AvG@6|K=g+;Q0X%0ZL|HdIOJFtrWPPZEW72izFfoTn)X6?W2ds zbIt~CGL%>=iRYXHT+QLuAp&d-19%|T?h_ug1c``eNsG+*-$+_gU>5N3Eeh!lfJvGM z_#c#=%R~)4z#m*of4 zvjG0D>)Cp}3$lg|M;!Yy0=@DH7II)EPU3cHx&$(HE;i#^%pC?PxtFO-+{HguKZMY$ zY_(`pLQ;sH9%Nb`elJ;F_AVrue&HY?AxRh8-;7z8lCwM_KYH0CxxRy#x{+Ie^>zZ;0BcXm5C3)_-;u4 z!^_AcI0Bmndt=-PNVr)#AboB9o}y@;vA|Wl3UP!IAol`*WPoX{LjIcuyaJ?5KX7-w zL`f}mlu4j9FG{TZfIYmzk32ik}`4??!_SUwwJ3 z1J#o6Cu0geClzR>Ak5GizUTuH!nC>>T(s+-Ri9~y{UVl?9thL9ki~ZYkXId04p`IH zR2*1;F3O$E#i)xVjW|3^)CJ)OdV z`9Edp7B!dZO)XDaLVE?@T0mbC>e6JMgyWSFZH9P=r(8Y$&Hb4zto4!O3mb;^d#R{7 zDHJS)4_)tQ7pXI#lu7pumZoas)t$Fr4L1m`TAOrA_k zOzh{-H#q?1WlyvOXblx@>U-HuxzQ}k(VA*YTQ@6HmRU_bjkWtajO49LF8`%>q_;Oy zjrsRO43e~_4YMc^G+Vi|h?}h}48)`?NKu*g=6+YXVN`&tN89VUp z1|XDz;1tZH!2M?<2>wD2_H8!M^yK3w%%H86Og?1jSQXUEM=@pNJ=i+u3J-=SKa50 zi&HV^cYOrHyfc(x`@^pKgk>9|7Q1=c$s^+0-KJ$)k{4)X5!i1tTh0#nVrW4-@DwNwLM(8o6LjEVT^Sk>X{)x zG~M3@3%CK!es@h^ZLy1DV(|HUt#IRcGbB5^uk}j~O!E>KK?>gr^@4MFdavpC! zU5f?GV()AJ;}`!e&hNnP;LpfRBVk*d>Sf8b#PL4mjhXWUC;x;4;4{iL8Fl=&-mNhf zJUcC^7W1AkNN<1D#x0wf)W;^t84LlcCA|&xMGGZ2MXk~w2WWIcxfGe;Tm7a!r-U&k zUODGzb+^Ye&U6OIQcQd3o|JmMj3^%y<;e-sxN!wfsV3SUDjcy>MYa;$&i%ql0V$tk z@x9C1X73t~8@VaJQZ`&$vk%%6DfuiC^4Z#*_9r|sC~!po6uNu$QZ{Pp-y+Q>>Cc=| zD0~N6sW5j=>Vpotg>ZxWRBuue?$E$s@1D^a`zkw})?{;4mXY|~3Y}YVX zPmi8R0#JE1P~M@hYf{TTqQYq|TKJ^S2F^e@pd^bHmTp;B)rx~gS}zfh(+LbSLfME+ z-RIV|v7DE9&Yd1=hGB|IA;L>&z)Ydr&d+AX^qq>(hMCXp7z`y<^u?e*FhN6KAG^{@-4tENEGCpvMgi z`{U~`$@5iug5u{LJ5e1<5!edZ7KgqbmM4`}2N7P9w*YGu0`o~*;L+(LLEoPi;-9y# zvaXU*aJ76b3`V%r^{}jd&T>Wuel7F_V6+B~o{V@rYv*rMN1%d$a)G`%3EX)6!esu( zNJ)1e>st!M8n>EY6O-E355aO%kZMVhebV1|nW;XAKDyl-0RoSgOok_;+E6m4k7qea zAtVo@xD)Mnn@htZTTpy#ISeE&>lTwe+UcNyIS~Lb$G$W)h)@Vo1uHa7y%Drvd~$u9 z408Vzp>DEt2beAF%Aj<5fdr@ZthLTDALAXFxltc4n@5p&R&lkJyZgP1iO%I~_VpHw zj2k2wCivv(&x(YI28p? z1N}9oS-EM1#1}_4w9M2n51&Ny_fa6z{Kfr`WSUc%8BVT23IDSfeBBaylpk62tgQub zJp8J|7cAm=Yp!Hdg@YN-mr?Ns38%P_qc>8&Q#h|OzNb}xox541+PvSAWvhE3uSv^O zhq|wYV|ae5pV0?YYR4#IzmrUDI&QZvA|8js_j4R>?!Pz1GCj*w(`H)j;#)4!r%6>& zP_9jX{9L2+h~=ikBK?Kk32ECQ0gZ^3Mz_pyH93x{qxE10!^YE`$!k%oQ_z%H*s>9> zE!raoNl~Dg;%qznJR7|5$n3dKIysKy5txm#P&45;BRnlTo4+7K=kV*ycIGML;}@@a zQ2|k!8KNaIRTPfyIY4RFUCD%I9^U+wULBZM@FcDD;dn8(hbo@7%yxP}PW9Dp*->)O zjcp&qtxWr-R(2cl$|TB>WgYeXi>PZfv#e@n(Hb~|?~-}8V=m@zYb|AC>``+5b04nf z%nJ4i*zE`O=c`k0>Qqt&J=2u8}d!_ikPEXgU>)*kwWlZbSKG_Z5hi0mOPz|F?z*uOBoQNa4vnCWJ z2lg4gf|A!=%1M*4S$QtR_lH7b%*O7E+fRHtm^Sv#Q<%dmcPnR=!FhmC^$??*9l!f6;G?fKyI&Hhet zw$FU$yL!iqLfXAcpyGmp0yPDN&{P{~&XAMy9O3#cg5#~jw)`kq5Eg6Qj^ZHNf=L>CKG_(MQ-1a`h5OSwrnsc2t^&zs-P|dDE4Zq4FC#Wb*sAUPa3QH2!JBeT zq1G2;Wm?2;x`4UReSWY-w4I6z*{2h)#=S;~slx8m$MT#Ah?}yM$(T6=`>c0zw_b3g z)bx*DSx5reJL+!pTd;2n3yVOxM^YB3$Z*^x-QX-JFKJ}-6M>-HYwMA{Dq2-dKGIu0 zA{k7FBjF#PCdt>D7?~yAUv~uZoO^DnL7Z&E3(wiSRL?q2xD3^R^l~nt z4L5k+ak9EFXJ(-|HNFV5`6P2tJQlt`Y)<(zylms>*Zp>Kj{My?@$YAq7&iIxcxS%$ z=>1=H=IRr1@=h>se=2`!ohS!T5yZMTa!y$spSa;$5e-${ywQ40_9 zYxH-JJQ|+mKY3^GyZ1}Cq@p5`K{}vEDC97ftq57CfshRRRo!wNA?DB*%e}L3`MW*6 zMywbSVF0wT6{%uYejTx!TM=8SA?II*9Qwog3NNpjz4iH#@MhJj6jTPeJc{2}ojs-7 zyleDa^sZ6H$g9YVJX zpHesj4IZ08j-xpVYwmH|WY$@%aDw==jGbEdMCt@UL)Vn-=nvvvDbmB#lVKwb^KPTnMG26!~ zbIQsAqUodjvPhT-BUe;&5u0t&e6>t9I1j({Av(qUy-3<}m||4@6Ik^S5Hy~(j_8)S zxsC7F+eKKOCI)cW^5cR8_NighFsXd{J`|7I$Uh+ z7hP3Y-^=49wZQ&CJbzW&QE9UCnnChAi0%`9vKLz0Ur%4M@lJ_P3A!%p98bfnDcdhL zs;>IedV81WjhZO@*XGz|Os#>-?_66xs?+zHS>lElGqS;$$Pn*(Z{>FiPLm7mzXFbT z#M*cdi@}GN=hm{xB0LixE(rW{xO>fH_2O?`Xm=yB)0t6ou;sGp%L-q(<}vF+1nm=UHcaoU)0y>;UxF)Mj`6t0pVp4>nnRGN3CECyzbGek)HroVc%n z#hd?xD!x<%>W*o!to5JjE;PX7vQH4GmbOYOv`g)*#^rtzH|AvDBgE2we~Vi{_A;8- znVd$-H6iw)v>x#()dzfLMh0Qdo2MAa=qgY;fpF;5Mj!xru12=(7DmH_3j2I7e@dn< z&bE>+u*zOo%aTV1henVj{mc({S)bDx4bfq5zq!d+%V?WeIEdf?j@1%$6KDk31@~&f zzVh&I6AUD`M?RySY|W!mr=^OVtoA{g%-ogOH?V|FrdDYgK3#toKezrvA_GKdU7dCp z58EqKKpBT)dJKt+hGob+$Gsw7oLyNFU6hRwWtPbmVH?=j6E6!nWRqhtyOheAEqAcH zQ}?bsYe|_JCo@{xh!?p{;uP%YZHXA!*DcwhnNV?2QKi8Za`yT@AhMs=30RyZrdqr( z>=IA*--NsIp>vl7R(9H=jJeSj#Lhc5FuLD|WR{F3nW|a%A{SQKZpVr4$!~0^+Z0*S z+VKTuOMmGjVnTn`q+RXr<3G5+|7xOPS0#wU*TrKuJtqioC6iNgVBH?8-&ucrKdZJ3 z3xHYb`Q_?GA225QUhcgQEWhnBbP?}Z@X@2K<>VV9p_3O^V$XqCTvBNI7lLw92--Cp;#ol znorX$y$+qqS}eJq6A8P;HZ9J0xIE>KSuoRNtuVUeFld@@kAd=s%LrxjUdg41VDC;M}Ba!NUMb zQedJR?7fs&9q7r0TtvJ8*(la}2R)7LAAFHYW-kB6AiacTQ2~A?sAW1W&V)YqQi6YE zb7_l)4Xw=%xh4W1E;G(D)|w<_oh~ zant>ups6Nk8A1xG-nM_ZAXqzXUe(SH0ByGk>xmdcbe^NLY@XW!Mas^+`L@%vg&57_ zS0B0IX8G)9Gy0`eQLs&N9E1O&oZnK4Y;OZ(2H8|=_JH5?+4tCM0OB>f7Z1hmZ!l|Y znX$kNAsdTjo#``0K#w>avuF{fZl~%q^U?M`8+W8vk69>KG&g4m*@`V@8lS$_d+WMk zy&~#gj&0 z^MjaKd*vtw4Bn6wh__2MqXJ!KRd}uEix=tpYA&>Jc}K3D<)l5~rV=<4M)-+X6)D@N zdY`|gCbTjJy&AA&xYROmk)GYPPI11DXuXQz{Wp3Q7!aEI3He*DPPHU?GaZz7~|Y+Nvi|_uUh| z+PxtS$lB=el5+Ziv!VZ08HYp`s^+|v@jMLm)d;p}b6se$6s=lteb+>uAAv`$=v4qn ze}684lAzy-J>RGVghMl($x$n(70`_$Hm>k`+>mtw<5>r(Fu8lO)Y)>!$m9<$V+tIA zJ?I5rek%i1nSpBAKNMRk=o))d@0r_=7G)wMh&=&tM3m>+ZNCT-`lR3tK`{XF9=-gS z8`^XPg038JquD+8GJtDHl;JB{Pwx_|4W~z{ZPQMvgmF===wy4o4!*bXbCj*2^R#8c zmq^%YtB9Hs7Yi2C?n3pVV_3z}^0dzZo{wC2m6PTBF4c^;lYf{xf zIqEJ9CAp5BPpWp6piOlEQROM}bc(3P+7WvNy*OET%I6|ktTMu$TfsNKdG4nY3EQO6 zh$Hq-z#XhkPZsognZFOi#&S^F1`W_|z>ho51#7B?kc;)>3_!WY{123C{px+o@dD?% zTJ+M)rl_gf7riX$%`dbv4KB{6&3BfzFHIPN)^*c!ouE{>K8MV{7mR$C&t>RTNj?ap z*y=fTJiWgz-pH8uiMdN7qX=N3$kJMMqvC;s@7oIrLJp3|oxp-)3m>h9z4cKIhKn~&)EXd~_qWWkz_jZff$7W0C#=gCD%)w_zblIu-uC(IK2oP< zMsbk2cz9aSRymKj1fa~Flm3uo&h{N-aM1i-I|SP*yDlE-i9;iV&WnnQG^)<5JY!PJ z&u8^>-~;aINg2J13?~aoTX~~y^vGV6pgDk4N zzYD7tEgi{mixDI=>&9i7_G^yJa_PFsFO>AA^@S37A4Im-jbp?zz!3(G#-cYJ+;k@a zkh!kFWqMld0ipeGu6C1xfqLTZm0mOpx{LJmU20j^$z)|7_k>C`e^emf_{qLsMz~nD zTTK#hDmngv7LH5JEU?(bxyr**;DhBa{x!e#53$MjUl;v}YN|VWTOhRIhl|mXQDo7PIHOiV&+LUR`EltZBsIMD2&D#+B7(G#C2kP2E(lvchNp z@LdawOvJTGaWavXX--Z+0fZvOY~?@}L+Aj}?J1A%HA|)XHVZHi_noH^nfQEw!4xsu zp}rlM^B}^0%E}=xDzLSQy;qEyBXbYcFmcr*{qaNhbIpb0b=~Jp^SZtDqD+VL>3bX{ zoAVLdiRx7II+di{o(V%t!(EKzRM=l(JH_>&U%7>r%Fmm~H_fc*F2y;m^Doy+X-i5= z1<#9+9GMqzxQI-2ME+HUvbYxwCgLWxot%+W*hy4>`b)KlbT3o5MrLYDU6;w{@48fH zONQigv)b`Zy$UXIGqaKq&KGaZ`dOvf)rj|k^_N;c+hNK5Y%Jm2gQnw5o|sqdvohZW z!ZP?L_(XnhHy<6ivq869y%nQ}l$PT`hFelJqSt>0Wi%a*qqaE6mHm8>U?S$qJ$Vya z@2om0&r!H0&BW1V`iu^}C_djnqv7V68p!a(VIpB=Khg6BBj7QJ<^R)1;MblAjAw2RI7yr?KW&6f*gE=*@089vm{l#{o%zYc3d!Z4W5_s${5`q z3O@WqHModqQrQ`3c`a33;{N;Xhz8x;w*vdm9Qyvs2|O*dhkHHu6{a!^KNugBn<}_& z@-6qAWD^VTF1mrNQil!`j7)-nk{224lSQl%-sc(W&(TX=Z;wBc$0s4glE4w3^&U<% z*43|dQd3gdeB*Ze;X)EC+rOz!6?R6cAbLf5=55h&LwqBi#i7DCelH5ky*=yd`*_96 z;FsE>g8huDP#JbPeVIp=;0hLtZ@EE(y38ba0#C<1aIuSTeP#S+Q#MJ7#fPlnv*ytK zH-r*pS0Lowe`05fODYoy0!VwZvjVU}d<*_~>Bc@tBY)G1&(xQ=E4AWcpuZBrJm|4~ zCo9{K12R%wEtr*Kkah!OP~REgxn!vl1#7OaTS;BAG0i^=Fkmlwr|_sqPC98>4x&d_ zByZ8aH8`U0W~cZb5!b^RA-{vJOc)c6+C!@+ZO_m0da&1#AFe1<;H>5!CNETAPFnq+ zT6COz5TA5h?)z-+v*`e2WG?NNO+^z?1}7^&|cjIa!=!?~_rj@HMyai7Hi{QvQvW}3r`s?whVta5Tna&PZa(Q@Z7rJ(x= zm_|ByOr){@raLb{SX1Cef%=sc(kq{baiz-7i?WLH#hx|4r@#f*b8rbbJ6nd|EGXzK z2v^$X60@{7XwwED?Ea+T8i`DuVxt$OlS9T`dP8jmQNCoz^7nLxh|IAe&Y`td1>QQe z{--=oZ=9q&a3k-}%Trw)BkC|VeGE|&sW}7JkR(V}Ej4zh-+<47Ub>raUaWL_Sq2z%Qk>RQvm@@ScE&*CgRe*k4yTiQdO80FIv{L`M)agn> z_JjE<>f0XVfibL~Oo1`U1ko^o;@LfC3(({Ozh)|ks?aCWKO$}DLV50jCq|va3MDGkzfaVMa{g*EBKkO_1hgvLRy!pL4B8D2r zaj@U3p8@hc(ljx8bgN$tlEs7Z%u+^Veq5YgTz>ac4{=9b(IrW1eH-qv@Hz^{*M*u9 z_Wm_o5^UNa#+&*6Sqn=(DX2mZoCAs&FXkg^SbVgq!vOGW<@$o_}YrJqiK zB$?!2f`6ea9iP$m>;v34P~Z*2SN={4I#x3j!X2v%(rOyeljT=o9O$e_RbU2#Q?Huf zV*xey5sJ#gVkznnz>6l-7-jZtPni-YpCM>sMVV+FM4wzA;g!4kr1A&nDACE4riNZ3 zAD_?7;+OFqTpXdj#ju^08WpRFh`DsDIm}o@NLyvCIRpRM(9J)=Ti?~bQX}8GI#?e7 zuhRZTD%+3~cVDWl&SIAMDcTKMsg_k`2Dua94bz#Qo#%ah9K_PQ{yoevL%xrGWGwt} z;(k;5HJYhzP83bl;fqd`A&{~*mmS5@K4lf!ri|-ane#gs78uEH3FAhuJNe53%3g%K zcwt&S;oA0u7%UUHINRu64ZNib(iILSA+4fZ_?XNt)R(UPH}%(Q0M*FF<91U<={;Yh zxid@U0*Eo$x$BMhHDwb{BbEQs2AiCJ*2n_3d2X!`kaN!dmz?uIWJ~@{Njb%{I9p1< ze0<#Z(O_JKaB)`bfp82gAtI@KE~hiIHQYC?6E#x(^hLmPtEUVIdev1rC+N}JFTxH_ zVe6(gTPZ{lE(#}xUJ|xRoehsjHGZS2_eO{0G9-=j7ZDdyhGn%{KSnCJ7NQmFTVmO6 zv)x3i0hr-yYARfU>T~Z|okfIa#6yl~y4Y%&gaJ%aB2|owbbDZkYH*W9ffCg$v4L{v zq_|ze_Q*-Gdt{G**LmfbcdU53N1k=|xXZM}<3lpeL{Q__OI3hJ)hM_ic@`wRx|xcJ zKJtoA6n2~lpO@_Xn*92MH|;{O0b-N`q6f%iUr87TL#~X061&=0K~3^c2eqw@MGKt* z<{nQ*#=HG@a&8tV-#{{eZU;HIKYf1hK%=nG`M7eUkbVA_VVk7RgVdZ#0Ao8RF&*Lt zUdN6OP#qyIBd@xprACc*Kgh={X~1BO_|RwBqBGJv-G9r9ul=@o-+Cl9&cDRs2s?F+ z)x%-U(cI39H4>K4&6ITRukCNoDe>Ln@Vv|V-b-7qco@tFvE0zVNfk}Ij4?{ zg4Kw~|7q3hzoi0T)#&^5FH8$^2UR*e^H^Nf^;Q4?*iN4reT-}@4DePg{Xn-!pVY2p zth@|xL~t&jaw*;$ASJ-8duAiUJ%&lhPtXYu=p1^vZKPs=P$)5Cdw*~JCw!`Jb^dnn z8!61rXYx+e9J|f&?m+?*dG&H&XC#a@Wx;M#2Q8}R|J*WoflnO#d;T7fOxjeow*{JH zsxQz6Dg%i3#!txbtcJMHMwD9#pFbof*-vPkP|0uPEz)m^sbGegfJEz1XYEcm%F^_U zg)ACYlOp#|uGGNdtS-cS#!s({3o;FwzywphyXocepnrwrcgaI6oFSupVyaV|jA43| z^RT!&+)JvgBN7I>+1AX%Rm86tdnR1au3hNlXV{|~WI$X8`xuLpY?e1WFk}~WBi)SG zQ-0VDw3&PQKEETAvDhbkbwfgbd7@R#O(F%_KS3p+_9g3+&=pR zT{UYUIJQu5bXBtdaZ32#f*eXH2G(xQm|Tz(hE(tWB%dsQ9mAR-eE7q@J#m0Z{kY!K zDQ^q@DnzUG6C4~Nqc7Z9mRZ;$chEfYMz3z%KScE%U2z^}ko8>o`M1_ww(_ieD;h(W zsS#r_B5YM3U!EJM9lcrfZZ3DQpS^lsF%~Gk)ZTH;HLs~o0?Rh;?QC?Zhhho7(f6Im=f%hZrRfU*A^oE=uYXUMlKDVCzFu7zC3j(FJB^fz0V-%oZUMztELn%sfA{kN2oxCKr!{W3l!3`!8-oAdu!%0tYv-`(kM! zN;?*+H%d%H&ud@2)1En`xqW9dzz`u>%I@Zy3TenEk|e%1#i*@G+C#lJUx@+!qyjC&go-(l-kQG)%dDH-d9A&dEsKSDPV2~! z?!=*(OXjkPlHz(sXR=iGB!=_vhkR=qP=4hE;4uAB$o$_*+gZR_Vn`&vla~sAcRwW? zVgD}IDMM6DV!=^8o?~9FyX6xrI+t+eBZHb}QJ>bFP!;bd9FP<)2#QT9=qfJSYjW#sC#o z3=mjcMF1lBpF1URa9Vl>j|fO12oP!xxtP%s=Dz{KgJ3qb0(5(8%V9L7+UXb#@=L?K6KP{iuD7H^g(Nh2zuO zvA~d4s$WN7A-$tR5GvU)_)boPc*X0wBS8N);qlX^@xDpS~q+A zBtYybd#Au4aZmBtif0AT`Xc|))1-#bNTL@vd5|g+@oncKJAo(AK>2RuI&GI zf&u`zs@HISbM0EubsQo$816+a9luRipS(?sMHypKRxbtgN<7z}LVk_bD*|UL`ky>o z>7A(Q@ARf^VqE4T>~4+GQg-#i__1p;rotoJFFegz-W;?x(?YjqGPqU@7A@e>x|s%^ z)34Zg>GtmQ+77cSQFi$|mtbyyx}-&=KVsdK^40`8Y1;i^Heen5mqCr!WYTMIOGVgcF|f?m5g zvx)tBJ~=<2B^)7Oc{qbv;neVtZtO(yspu~s*F*HISd$9aRoW%Qrc_^>F#g6mWp20F zUDolS=Y*_q>hK+e1c`I)-&ICL1*@8{F+}20-S4CQ-^;PDr9}Cj1*he;FxeYTM4feK za6tU;rtd?W`@BsU9Sqq)FO0w${<-cR=1754=lO(916@AVQ?Q-D z;Mn_HDbH@_X)mryZp~ezf(JLSaGe^ihbA9fA;Mtsm)xj3tbR@kKLX|K@wvCHmxRd& zOW5i@p6E1dhhdkGBj44XM}gYs08J_&3cX>+gXw&73#wiG(6HD+9LAr@-(|uCw1XW- zOa@8?Z36}#QLr2at;7)XakhGp;Q;_`dK9xo?n$YppjV@e+p_`Y-&JXMlDHPGnK2tH z*QSBbH|yWHuyxQeDm{v+%g}ir6{@(Ayhh z-101#bF-0JA^NmV@syLZb$UxRL=0nn3z1a@AhWoB_vx! z_B`ZsI|ZuKyBj~@R-n`_#wypleKGjZl}`yL%DL!#;^YY45>Drh?s?L@7<%Ce$+K@HTC-5A_Wdo)>lW&FoP;1yu4RaDX_r;ALP z%9x~%c1CJY(^&~o_cccSHUY38XwUbcH?@4XwM^|XgbKGaDj3&dSjy`wKL>Mfz@xc#4_ z%8=%hZs`nKvC??$`O$sos_SGjK1h|4g4yVK0lQjs>P8&Hl}EW8h(n*Ak4}ZiU)lWt zTP$EI|HG%M&H&$DLEI+?K`2BGJFal{2LU|mJF(=4t=SPk`nMYz_56@8e2u>~?2AwR zA=$+J8a+sgr1_)7JKp5n1H*dNX6vxDR1YO?ty}tHPJUX*J%@rQwG9Pp)nWzt8OAyT zo@Mcuii`9k(=A4&-gCM4;juS|%i;^0g7mk&OF7WFUR&N)421(u0hGAMoaehq_Q*=o zqW32pmW(*vTI11SuOOx%GImp0V3~~i>uiIh#95i*UAPzQ??Lx0H)tIK%hp+U+GXAO zS!1qb8bdV(F5kug^Xr$NB>*>o$l?DJ0-FCBzP$_^&Q9PTH%2{+y+PNdr8!Nv(*I5q zhIGHB_m(D=1ONdCd947WF8*8YTJ-nK6kyml)vjD5y}?-hvYm$?o(9T?9GOXt2rLX! zl>c^u#bqcOkCG*dHH7W)aIN)u>V@P4x>?n#2hD@Vo7PmL&oCJr;?|r=ndxlSn1H7x zM&KQ zl60sp>;$G7i8CkrjK zLCy=fx<38YF$$Qv9?4&cf>+RNXhX5(o)JsAsbCgfB}Z04mjr8_r28edt)CF&KPa}_ z&bK$BVQ@pO(9Q`lOgdB{L7{dwD!Mw^Fq$4rnF>H4G{u_==ulPBmPYNud%x74Qg-Ea z+hA|y5^IvKIfn0R3f4|#nXQcDfH31*%{yKmPf#S{T_tB(x*yW(#D>n*hrl@Q-*nJXatA%r_twt@am zzjMlQf~IjvFHFHZi1*=ES~FlY&_gu8i(Z^%zn>i-2OLxGKjO;$H)#7R`F%^IpDK8Z zDT+|2-FarxROBMAk@7YB!x}K}g(57cv-#y^mL=5PB3HXjknsKiOtlv05WcUg4N(&{~ACLi%uXvMDCC)|zG3xcjT;&wo|A}IB!Hh1X)avd2 z@VsXiSO3gMr?`H@@Q#eEa{Nn^Z8l3rkU_%^&)&(zN2zwv7wW9kFOJR2Nh3=EZ8qTB zfdFFwzz-P$)PSYC{ZA~Npq^(zEk8^DLD+KFz8veFds{!@jw?j=h(ZU;p^o?9BCBLC z;}RDnu?CIXyJ)Nv#bjRMHJV9QH72$Cf)J&;-_^lc##%-7Qk?H2=D}0)1lSr;t7gY z6UGmRd&@||CzN(y>O)$%(7Bdu4}zho*2*Q3QTtyzQ4ihzv_|PlE?NT&e~r3 zd$z&bdRMHMmM`!sdXB&b{|5ANhdDWf1q4d{+k~fdJ^Q z*hH-ewx)BxPuP5HMoU>>se+UA4cX6-2p=iO$8^+s`Kr=}lCMqiskMm;n6BJ)65Z%? zX=O(ja293up3Q}SY^j%K+lQE$8DIz}x=kQPbj2kB7<@G=+9o#P?`oN8iJOOe>HAN# zG|EZV3U#cs9O;nEhd~Midc%{D%E`j2u{%=$Pn&W&0>$ zQDOBenO6Jd$wZ1;#xWiJf6g_Xna(z$+5PRbZ*yXj|G_AefGEp`z|5Rn`Fx9`{^E4n-K z+OrFj*UG;Jr$6c8ToR$Vqi05R;U5iDGVFTHED*-O;qJy{=Pz@L_}>}+74re_NV3yE z@KpwWmIBt;42TF0WlqfE?5I8dP&oLAq_=mMyyNyJKW%QWYlcN?m0ibAL#TU*sYwIA z$)pmW52#3!IkG;EV0c@*X$a0ao>WMW*q#SMFO%3DFpR=}_hH{Z;!&vb(Kv}KdrG8_6?tzRh?q7f{i z;Uw!nmYcMVDpRoAd}6g$mvZOWN}{b~ZKGfo*^`U*o_s(q4(NMrzmM^inKy68P+I|G zNi104fKW_H<>*_}$Cgvm9=1Y}QnH)BaZeyr0rs`l2_w(db4vrp$oMz!L4G5P^O1eH_Tn`eWO?8N#?I` zyYB}XJxS;(1T1YcPtD^s_vw6e8;-UNfrBNWpT2=HL;J!7%SUVL$2@PSawk4Sc>`KStf2n0R2Cfb8_ zX5`F=>uuQY*xs`V8e2c%YGvAKz6Ys=bSadRo{@NCJbPaFzDd3N{vQIlttqduqTMDr z3=IuI=(v>AN_oU-E;+8D6nRjrnI*E{6bb83rQ-MlB7rC zR|O)CMps~@Ppt_M$w%-26_YDuGX)i7+1?`VON5cL-nutdR{=P`1tFtN%B#L?&AEtz znX5dt;C734%FPp~Nl!VbaQvyQu5N)?5pwv413*u|!E>+QG$>y93G&-quC3vl`5A6V zfkFv-_Ab@m1~(NXO!^71u8mILEE0DlN^A{&n+AG3`2A%y`*$!+ksHaFUd0txgYr+o zzHG{|6^Ptb~k)hgqnXm~W)^7Cl`8z+NDIjTTRUBw@}C0Eqv6TGD@5{Vvsv0-ORc?L~kZ#IFjB zm_;Iys;ZY7A>Q8gN9Vzi0F6=4{HYaS7>c1PVD@|`&)nOGPTD}YuFdB+AK&G_l5VY+ zI)C*Bz9`0g^y=xI{FTG^HpV+5ZGlpRtHgh6L%gKCI2jmWa9*b_57pU_Y>yd(M9=)+!`dZyk?^yruu1k(uW5JrS@1%ZS`d03UXQoaCxi1Q<}_ zu6#A2;p`k}r7^uPnDknqx1vIVnf2UY~2w4+)=;#Ki z_*?e-()`K&gT#9|t_cnrnUuJjclDrKUnQ|gVBaTKo_lBiQsFTXRX;z}&-k_=nRevb zaSMarh;&smigVAe?X2bR07cdkS~|LVV0O!1gm@1=-H}aN=okMUAP4R2-5OY=SB|!? z5o-vq+j{|<(oJ^T%uZw@)pF){nHIocN;OkorC}}rQb$aw3$@LwmD*-ZhIQ9QLQ-TPdHDz%D;-aa|U3 zF;|gqW<&GRaZejUwy*U9ce4i(pY$M0;F|Zk_FX3W*G2?W7S|mHJ`W4ptP`e-dlc@i zPIb)g=MqFXY*)6{+HBqw_gVfxz6O}S94Hn5-v?Lz_t<2>Y0T;;7kp~p#aW14AMQ{w ze5h~pRH+^iI8zaSOF|%c^`C1#S)`|x4Ol4;Y}v2_<|R0K?sRgqE@PeAg;oXVi<+hLBx8`iZX;W~|K$@8%5DrKtn;l1N>N9;EEe2Vq zhd*VT@&kGM+84Q`O+i=VJ04~FK78`)%I9o3<6EzR=y<5EmD*F(=RLy#nJOzEIaN>j z))pq{@|8Eez;#q;q#&JR|X#C7wZD$Yh8t@SqUsKgE^m!_-)z~Q>siR6^9s(|BH_BW_To{fN z<2(($6q@MOUGoSzlRAGry6vewNUYipW+tt*Ea6D1(EYl;UojZ#U#hu(qm^XMp6s5v z21_$JAjfg4__6=y^dg@)wPgJ@WCJgRCwOc6{FKLs^TKvA5C@o@j=N8e$_m$8^Lt~s zrlLn$Kj`nTC|)|Q=&4P!S+a69o{SB=2Hy2BbqHJM$t#taqoigG9ZLg_Pken8HLM+ zRbwk>fZHH&xT|Tz|M8rk?{-CrO-6yMk%32OBISA7$1h(aU9Qt5VVR2qNPHFKmE$J1_LsjRLFXMJs3QWzvw!e~nBhJSWn1>s%!ll%rfO z9L#<`EoBs_3H%ITYI~G?A5sv?MXgFw{K5D8p6-vvrz^Z4>^e~jM5Miy70vd5%@LHC zg{eXEI3W3*-ooE|_f#``?z)N5^bRrpYD@P^|tIQ*7=0LIDb}(yfSWIX4oEFDCTVZ-pqt+g9;*paI%&4){ zMVJS6+pf*DSJBIQS{Mb@nf0mn#R^kH+BzQIB%uM0R9sT;C}+A?3wFCg$4E)fOwT!K zg^7mb(G$fh8_y_Cvk2@vGskc`2n+t4Wr>KHhkp8SKbbZq^5jM7gxCYNepiV8onl_X z#GcI#J}AG$7Ax*sZ4H>0PFRG5+Zim(HIh6kyg1txKwnxQAuB7*l)noH%subGObc>M z<|tXVcB>hCtNeF->Rnp;Q1tqhCS|qt+$TsUc-QGic|`Ad;Par5Rq^|NLtx#~R z>wLA+#JV_J?)l|L7Lk`BE~TNd=^Yv9^=j+k{FAPSu}>yHlc#n1WJq(Pkps&)BI%la zZ1C*K-cGgWNuN8lHa^clzj}=ZY`2Dz0pq7FPYy3Sl_-=|uUoEV!*V{Q{@}v}W2bU@ z<^A@yQY*~*_(nNU2e}h^Ug&06ecZD|so#SF8r|qeSxko;+d1Q>X}y1whXMm1uVoNo zRLrZ~6GZwkpGB)%PY=oAXkG`msXT{T+u!P#Lhso@G4UruE2gDY=1nuN|f?LYE6jPtdm%~Eq0TRWd1KKS*OwbuSCMOxoMS5=Ul|2`f|v03Ue?!1U#pE4K?eC2(G-kHhW^pJTCIOoMCPp$drN#%H{_hNFCyO!PQofx6;TVPNA# z&HZ?CT&d&zQeP(Yc#s1bZatfuRi5bsAsOziT3QYBUvH)&idyx%8ZVAd^sl9wG++!|S%{w@5YV^|Wp{4V2--%P z^iRaE@TK}~4^g_{oNvF#dG#t)*kjm&c<0V?eEV@eC5GX+NQI4EL}{j#0mi2yBqWI4 zI^9lc3q4UUC3cK30M9fzl?{wT_4eBYf|p`yLxzGOX6CEY1%-{S%u60LxbIwJqR7<0 z9Njb^-{~sVoZ$u&r@*BpY2w?1DY{F_PSLhjz%-fP1J z%2BXu&@F+GK)LU+jC`yfwA>xtcYS+(4?@ak5FAHy;&`p@#laIZFd{zMcDIZ;9Pg=5ZH-DDJBVMS-<@~v4QA6}2A)8oa zqq^^Gc|j%nS=bD)_^3sz`?w5eIz7sKUT9@oWjGm5LO3oVN;(fgmXc_>p0vup60>I{ z?(B+DO&=@sL}XCn9wf7)!#;t)-xH1)7w&jjEtdRJ46*NG#Y`I$x)i09v`l6ACsy)TAN5{*~=Dm|C+b z_TIHyW2t{FTDV0)Wq~Q7e*t4VZ`h%Ljm@G2-T@f$?yWZ;fu}nXwj8hjA}nQk4K}{< zFus+Z3}R?DYsakhN9wwm$owR#(3!n!Xz^ zZp-aK5J8fx3#v3N&9odk|LJEc6;cEAC7%gVx*4Shjk1@J6(_n$$*tCoUMQcz!1NcP1SP@c*Yu}Aam5+NM>D6SA>Qsgv#VPqCRlqjR>N)W-Fzpg>T9KQ1hap19odCGdn!ZyU z4ss-kOk#D^aKQ9Zm^M@?+K#8-hgtME4&R@cOfvy-rTx@-_b#+jv`!vx)ro4VB3iVV z6LL_zMF#~EIt*7`~62(Z|0FvQwr zejo}adpwlW!vT5Pe3%=61O`fqmQQg_@YgwHrV8roPfPgXH&mB#*qC~m^EKa)6+$U^ z+eC#~k($eP?;}ub95C|7{{YV&2d8a5T?odynWF4dl1oK~D;3OX9(%oRxfr3-`uh_K zp23ECP?%b6l*eZ*q=oRzsTY>esHBs&@v7)VrCsj$x-p*mr6b*J%%TzpG^U=ls1=4Ev4nE~a`GdK(ny;ZC&HpRFTdDcZntIWQPX zyF_-PjvgioLolQ5M)h6Zre#_hGnu7&$@Q$8mA$r90vZSf#2r$g9Lc`V$XpV~vbTMx z*NY)3=SVS|o~_7GoYXJq=b=0V-kJ-HUUN6FUrSW#zN|ou7Ws2AI>4ialjwjU!Q-qO zrTBZYr=Hrxj;fsu_`AT(thg0`6~VHp&bWHz0rf})|36x6!4)h6^`Mw&+e*r z)##t#V;2>jsLubM_U- z-RZPV9(kosCm|2mrb!yV#fsUAvXV;gUb8#3M#Y`OJJ8CV+rKivX<5dgVE6GRdyg94 zX+xHo_h~)72)&fN&M4Rkrlj-57mLF^Rg|^z-sU&CUIDo{6AV21B4 zDtkkHWIT5ig=2N{_FX>w5L)TeBERN-b(nAd zvBMm22_&z-+d_BhJ%YyTrR&`YJ5gM2UDE|Bjws78K8Y9WgGE94ZmO|W;CQcB{Q0h(pcx#yVFf?t&EnfND5RX@jY3;#YpRz6 z`@REY?V-Tmqn@8Q(CNk0)YQ0x!##m)A2)-5y{(@})P$S4%jpYBpMzO6^i^5Q=nBPyqpHK_E2gy@y^@dI<`W&{bNb z1?d6;XXg7vJ^#PYzBvCrcjty@Js~S=t}#b>$2-QHleN6k4VjC0O<<0Q zTeGW7AR-s&El^WiSn1-sf?;vjX#!7f#ERLzMv)_$ObxH)pNq-4ZGyhMJ0Zp=zf%<) zqX~MN-0jY58--HACsBSF()y{cBP>&piWHa4sw<;B3pM745+2W^=$#+)gK77z9 zt9Mz%>tE;$&F`9io5s*}X;?gWULq0!#XzNW21oC0NPzlxcNmE1l{ZoO-dQim0`3Cj zb{b;Z_Vfs;y()0-=$2|Gup9Ryus!zUQYe{RDux_@K5^|6fpYJ`)o}&^YPlmMdXym6 zle}m*+piYe5~0CAtv3Criz>fRJvIh467~DOHv|JryN=6jIvcGy`-9_0&^vwMBt%u7I5s;6*W+(FB+m=nBJn&y}P;vNT;5xRV zE`bem78GSPVBFX+*!9lWHKD?3&RIRxwzU}xVcH$Zh)9H%0w#FGob z{_eesw+kR4@xnuOdV#Qk%MZIps*R~W$y=`%blrhqDz#YVQ=G#i?{VGMbF((>(N5iWXugu0NQe3CS9W?c!btneGj1O{nD}K!>)0 zI%w5ydbHHQ*2rf(&g17BB_No+nbx?B<(H*V*m~=6&F1GsxJT6?<*ADUKcWbLw-ZsCf} z_!kTc<6ghL8Yl0ubcO(z>UemeWQIwflc4*g zAuexSPaWlbP)L!XUWe_k^LM^1;GS{H21~M;+OvDNQT2Y}M(%D#G1|V;JzsW@plO|i zu`52yAfPMZzLe9iSmSoj1$ysB+7FOJdOU_M@B2c#CP-t~`OJD^ed{(me^B7-+;fr1 zwv$k(PrcMyovkhjly!iBn#F#QYKWhxlDmj8`r1Y(VbRgvTB9+Nr&q(9++;{nXxy%L zX=+$Vh*2sYRT+vw|A_zIf*X-oEZKb&h)qPi*GM z?8cL&)*?sS-HO}W1&|1%(f&L>*cQM!1kSi%csdnvyw6uJ}{B}-6eq&3` z!f{v0e<=;kFiD74Gt8q(ud-T)3 z{?;*}tE9}7x+LW`y-~~l2fH_tp1ff>a+FN>7H}{U^7UXd29P1FJv?e8L(2T%9Y_eB zF0mYwOPwIP8c7#O;1N>3^WY2ZcXA@dvPD(n2zt*E6yw~-p03lXKKEW~#aZny9xocS zt2hN$kBZjamni0RV&{4q7MYg*R7I9%9+NE2?d`r8>0x&8jJQz@_28Az$|t;>oOj5J z3@t1y*%}mUsi$qmB#B$dEE-oP#CUA>h~uIvOG@5X-d9&vN17$9i%v~k?pMN5rmyX< z*U9SKb50uD>NMiQoUH+yE!oC?8JWWu9Cs{0NAZFsa0^xNx-A0Vz;ZGlHfyk`>Bq|P z(&;)fVvRT=x-E>la@;J~}Cd+rE0wC-EjB~qmo{*^vWxN#?HB*%U`d)2AR4*rWjAL^w$K+srP07ypx49qH}2|j zeb%~&$J)biaqB+x5;|PRM>yP}xNDcw?81(XDk`TBU4YKN2MC{p+R<>nH*Vazm@ki!f=PNqJ%<^os9c?U6C`f@#j#tj z;<7Z2j<4!mVQo)Zv_*&x=t`K3f_*Zlmkd6+!{z}qJLH44$5L(c+*|(Kc+)A|F!lu9 zg3L~SplvE)8i6`Q1Y0L%oWhBj!J-q@me-@99OV zUMxQlEM%YYeUhGG;x#Q2UCy=qeJ436PpnF|TtSqPH?peoIQ||@`eJdx?g_>27k+o5 zqAszl22G$&D&`O>~=x_(vFw~=C(D@cd1m&Pohwb z_x9E?I&B`UCMzOktmGE%if65zmy>U)Idw1xwD{4N(r3>RjNF&HgN}eu0`#L92mFJN zshQ}>qo78haTItK0{GzJ}#5e5vK44v$q=ubSEeDA{t+j#l7T(*YH92{wioBay)7P|en>wNZu`)XVzRi6u8 z?i(qCh&p9hK;<*xYip~Ou?vc(PeS~ zI;+_iaxPiY1GB`hB%UGSoM-1ArpKuE@;1%Pi>kr5vwsD*^m^th(QMH;0nU!gV2pbb zRcIVhA(g*mZ2obbhq@&JMu(B%Wwk<`(!M@t@K-UInhVdU$?^85%#kXV+ltmNWF#TR zL2vJWXiA{Z&a3{ej1sztcTol8Vu;lW!J=yUoZb0;gPAVnhSwR+3$RNTdPnnG7t+9? zlkd@O`~_SwZXoe-yCFQMn~~cUW1dXOn=TSrBG0j!Ply420URJV1Io~3a14ybvVjtC zM8s+S9uG`ACBJ)uITcK<*a-kIs);Pp7IpJ}!)-9Pp?a3Rl;2JQD#HI`X_3c0mpF18 z$QVs-y-hFz5*<%wAh6Lp>n4wyK-@8jPPlDD?gR-rPFk%3(@A_?oiWt;5VAD92kDDf zxR_aJ1w$MU6rslN@4w|(NRF5-uLZAkcsCuGGA>*vY!VuL zMFDK4E}hOe^C^oe*^E5Sr|>~TI-OBg*Z zi-5?wtt|%FR!-)lnMlVEft9W!H1`jLBD*DjB?vRU&%+e?r zjgaQY%941$s!BIZ9<2Fz+I@?oO{wF%Q{?K`oJ-2OjOeC$zNTOV+T5~f#xPit>7+*7 z?V_D7YnRMq3deh}x35-2WR5DiXD#~Z)-OWY=C{dEX(7v|OK`^)@%*Wtqjy$ggK=Ne zy<6F6-I!?C3r=Dk@XZ*dyS_Ugm&O}Mt$D+2ow?nMTfh2-x$>7+6t1XAmv3IS)EWo5 zfCd>5dJvA01>;$0Q2?0mf0SI72zn51!*rxEM<(gp0dq#?0b<`5Ka!y)S^#}KOYI9T zlk5Y=6dxh+bc&Bh1T)fu0SQonVVQQ8S_+Tv$xXLH^J0gEE8#x%WnhQ>uGrNCFbE`P27WC^x2a+id>K8#S4eudqW3#u82c}){ z_4jJJHivZbGTy*Bsk@bnrb@b+A;K9A-~>jRQZBQjaEw9$OM=)|9~Y*w=-wo%)9hdf z%2N|$Js%wmB^Nl~52YSZn-nbW4t(=S%1wI<@!2(Z2s&5WXX1TJ+^D!NYuV_P&Dr{E zE9qjk8<<+dJbb#YOh2*^Qc<%;$@Hb4EPApVb1Tn9yj`1!d=D-HaZfn-raIzE6sji4#j;EpcBkn zSOg`$US9xv8blf}A&(xVfQi_ysa-rvqH+WtZV6mdpybh(ng_B+7e9ppJ+C(u!Jawl z5Axr&TMX~uw3+tIucWHHcb&wm4^my1$8Q=}I?Wk3^)n7ia*)7_Tng(UnBjT#6J>#- zssY~qu+r$S;YqxjuuvU1k5N!|MH}R1u2{BUw6X%^{c+)(S*}E18`p|61~r{gtt853 zv2!ufl5r+nfI8}0<345WY%?r%AWQ(X^I8IlEgX(zTrZdKYqyE)zqV6(;oU45Mu82>Pn$%FiU*vEW9PCjN#k_2$^wy??zrPW`_>^`&@4=Qym`KD(+QMpqZ zYucE{f%O3A+6+JCbt{tVE|DMIHl82(QlQ%V z@!5xT9+x&(xsc6Q>DQ>%@9m^$v{ztbe#dTA1&(P^T5&`H!1 zGjpGHeg&vyT6nsd8indchp5q)9q_0}^=A{zs6Q?W1$0y4otCL*T59+bBn)C7*rW`* zW+-48xgvuS?z;boy1Q|l22Wss4r>e95josiu{Srfk*+tLUhUIQD3-DY=Kc_NgOJvCR)(8Z`Bz!M{iv z>>Wu={;)0%GqJaLP40FAd#Oe=+g)b8Ch4*y6HT$)-j2SGtZM#f0p2nQeby`$&uTEE z7A?r@_`r%I>2tqzFhUcEn*5>Y0U1ZRqOz?z8WvBV^WZaKb@`d@j!8|iq5j|CaWI&i`xzqS#}O^3^zRqHQYl+9>lOO5$4VdsvXb$!jKLfF?d{* zHfg=2zm>uj8L=5teX#@?V#_PPgt%ibZnU7K+KG4@=l4FU)8h5jF+ZNLqEbl6+52>y zNkuHPdZ^{Db}&I)gn=PmgB1q@C8O8SWb|8+G{WN$2hRkIjR9&WqOHGi^zumRRcND2 zmBfqpBk@OYh6{`yih?NiH}OL@c+33c++#b{(U6ZDxCFJiOl@dTt)cwuPH)K2@OBBZ zbX;$UKGSl`v2Zdy1VuBWPQA@@+&LfpZSS_M?HWo?xj1EF)L60ZzVyi;`#U4se{J_= zh)FVS)^@svZSW*EU)SpM5Zd#TrUj5d1!jGrn6ly zg{$e?6=q`F8fkM%Y&Ob8iy;|dI=TH(ajE|e_5g0Em zX&=!MIs0CrHzdw|#~uH5OJYA@fSphJK?2$VXrQ*leF;>h{#htw(^2dEK;V0tlc7n> zwl3q~+=7K`>X%*&tikUri{}S>xf9gRscT$=aeEhHivw0*s|)}&Q2pmn&5D-t8y5&! zU9oG4Vz%U#NG=;*p`~tJHdwbEl@2Paw-xNq#tjRZUQ%z3N}s&LsvZC<){bEhX>GTE zo#@w0nj_E9KApKJ1qYc;X|Tt2x3H+)rwZbooJ!W2A#uU_qIf~|B$M39*h&u(yJB^f zzzOHzyXURnCQi`4T-3JL%Z#@r0#hlJQXAs_y<(wU_-`rN)(G zJiF`d2WP+KR)|(HJc%1VHMCuw?q8v%e;L!iusEhyzv%O-#1{W9uzDjw3a8(vRC_8B z(rc7&O1D&9*}aJ_rBlCx&#oz7h)N7O!LU@)>Qza`Srs@ zZZc*oL~tb_hE9dv;}r>`4?_LS#$)tWQhA}FsQs=v^%bEFpI6OUx6;+h z29Di}Fg=xu71U6*#;0d?IlIdgxVtOm)w<}lm9w>oaOoL`PE3u2Z@kEA8@BF8B~gH` zfNsn)SWTWSzhWz9oh{N100x8ny!K-Ii3Lxh%3k@ORN2$F-~<%&H7*qoIz4ot6+~BUR1lgd+ENA6xCg<1`s%uHjqgi`{_G zhFZL04;XGIu^h##chsf(#~5}SQsYr_*;BaoAh9iY7ev^2cVHk6(@v%SEU`)FwAY-A z8;<0J{g7H_yNQ>Aatbz51Ep$bRc11{A;eOYdRw@&L~Y0i?pDf!73aBwX{q7vyX71^ zP58L>LB3T=(!*Wmik+Z^FBGJ=F+hWi9xk1qMB%vFyok&v5nFx}0vaM~5Z7=+4!{%m z89=q=Qm3*?M+co+c zpMc!e~p4Yn6DXlvx@)GH>(ao96hBGhwvvgtLfTORlaNBnLQHca6kHM z(PWS5zJqU#_fJLn$#ecv;UyNJL^P@&+KrT))Zgh*4l=6qu2YQQ(vTGJ)` zcH#0Q^x8{|Wg1{K;8Fi+O8(o= zgIZn>D=L`<6QolKYXUT|i_QO}c+SC#1S1}JJr$$X7%bWYMTf5V|55h{LY36pIUo@+ zy}C_rAbi{ZFZ^G+`Ttn>HCpHK+SJk3Z}smm&2+JO+Cin&Akq+Ov^#Xem( zI5Z?b^vk96r=*x^o6hYYYa;cdpQ-@4QPubyF;U3C{p^sc^(RI?108qL02QKPefdld z*xIMy@@>gihv7AFA!RNvdgN#yk+*f2GZZ8B0laOI%jKIlP~|j=ib~2>3ReG&Lq$a; zqq;&Y2l27>^LeT-m|F@83Z`e;FNv^eLA80P>s1gp0cET)O;2Y zK6Up3&wv0hc7%w?z7ZY4=gS~-4d4dO-Bh_nvhO^;UWZ%%)FJ-L$Q(3TZf8a<9wV6m39dnn6Udr8znuXnr8yP|xrl8t z3HbVnTpI3QEcyZX{D--v`=wdpbo@9{;tPTjJY49=Q3~Q@-2GrENa`aG(lw4CD>}+= zfD)|f3L-j|C$_{_F9Of;U_ZYs1(I)#LPO49$v22#_=79u@BSi&ve}c5mTn#a!$ch= zd-xKBw3DH2Q7oUS!6!1DY@?4J-6DoGK6+yRlhhNSH4oUqbGU;a;>AH@f_tLjSeTXF6$zeTaVN#VyHMnx@s`fhJm z=BoLpoxC%2LR$NKCl3h2z9kRH0;vN&?frs`CGyp;qhWCFZ!72b@|R*F`f> z*JOSGi0(0Ku$&&qttP7U?qRCzLrj(1TdiS~e-Y*PPpZ5)gjQ}mST>J6>g(M#pef56 z%(ySx{H_7HDCO|k&8nWDs7smMLM{~)l=5* zOKvb0l660odw70`coK?4e2|z&F4*kui`)J%FKG4i22ZTCy~vdU2=`c(l5>Y+VrG6U z*3S9pQ6Et!>zf@YK(8OM^|SJM^-&U*Tg{r2W2$`zDfK&5wl~8CPCo`}qJH;BM(*l1 z|6XVd2OD&^jndC!6nS>l|6mOv?(@K(tT-wY*p~s-ZFLw|%E4+=$G1CEMLyh%$*hbt-BCbBLRk$75T-F0saRl+jJ$)Z=a2bR|3KzeIK9j@uvROrUJZNV zC>ityGekmZq+*%5voqJAp4w0IJpOI*?BXTxt_(o;MpjN`)`5+?a<3E||4HQjhHbma zK*yI=drp9gr9H4oy<^X-SSTNp{$RrdF`FSte;V}>QmGrwEj2TtvN7$AJFnK~N4u$E zHjzZTnvZVYM$vD-i$35!?isn7abrw>`-3W3qM$WPR&@gm zt#ESjkWdcL0t`NF*Wf)z%A8|BXl_R$SwJmClSnhWZX5c%0)~Bh;BC3%uldvp0Gk;j zKKb8-Xe3>896{%PJ4f-i$u*Nr&&+oI7+w>}tT+yeu;HZO+-U-l>h?9n_fuJ?u< zDLh=~|GUrq5@}yd+T(-O?89CMlLq^sC>F224&`h!c-@+@fwNQQ_{{{ATJoD%C;Pn_eFLVP7dJI~Q`R?Dpe2L@+=u)B; zt~hh%x0r9<9bApD!fh5N8}Xke`o8yCq{bEYyzg#>MNh|kOyxNWTAE9*Vg{vkl!(^& z4>ZSt#wUVT=ZZMl!$2^hw@$SRf(cCpEeNNt7@v45_a02`@w2?gfNT3XwmwR+=vYoX z!bPgw>>|;3r>2p$w6?3-8w&*o2a|VEf&NQI?w^f#MDS0n06b^_%32ghpYr6yNH*m`ruCcpnRq4pt+Nb`Z`gRfB!GQ ziv{?9{#Ws&Bxi}u6<>yggh0r>0=_Pvey)Ioq>}i5I^!|GZ#!aNqmCTmk5N{*p?f%_ zpU)v<1Y@YR4gHTN;BeqMGy!zy@x&NjQlfR0mGuc$1+AY*9+?O%DT9*d*r6N`OHV#T zlg1yn@dhScNi=E2ma~*(;$YTU45%*twxgfFe@`V94Jr~Yt*xz5DJjd1i*O&GdSSbM zHZ^iTpV8+CCfm2%hgw9O8fJ{h1<%$WFX=P)haTRC$zeMnJF5W(tbDM2UQ{J z32f%y-_mASwue)lKY#uT-KhXQ0Epzy8OTKT8D&G*YL(9){v>my;EJNvuK-Orf(zLM7V z^r&%iaYg0iTvOK2Kx+EV>j?VpxLy{%|MG7on=|ztmHqLBVg}c=Un#Y>KH&1ncgu7S zVs?nOfCA;v0tsw9j#p-W{{YO$m2hbx;6BoT9`FgzH*+y-(SiS0rnUa6fd4YdfY0Z_ z_&)7N9K4JdvhCX0STLv-s{$1-Uh9H)Y0r5 z_xR+?dUM6-w~7SN5i#bIBimx6@=0J+IR?)+z}&qd204efFDL?PiKF^^Ey}-I>H}#~ zl1b>U`x2Xo$RIglczBrT7N}-P$`X_jk&%&9OicXX0HXd(Ra#|D&8B2d>9xzFYa37w z4b)4}vAX?+!jE|%OT8|c<@=dK839kkKy(+ZFV7qc&;m6k+Pv6%rr=Xw;-~!mJ;wrS zK>#xF;JHlx%MK4G@c}Cs(AbcGWrjhqnahvwaB-jSC5HL>(M_jLpXNX93W)-)OC0Vr zRt@h@zeN!YR-wp`hZV5I$a+h!LgDaI!`%@{LiNp^%_X|7QA@{PFWkHZl*z~3LiEzF zCKw>Wzj6FB7}x(+7(2Y_d$gP!YInQO50bL;G23cwwpY-9-^X*Iu!@b9^(HuC3%Ucn zb0_i`B{emxot+&xfYaZcP=ja0)rxR&b)`ITdSKAjs=ZVF%leOyULhLSyHZ;lvX7^M z!Fj#uVFQvO19o`&%Vdc#nJzJ{JM~xn@6ddBbB-+uSVd*f^dnPh|NB%_eEb|0esghn zN*lkpTkEzk2J`gvw6L=$CnsM83xcW@D${O0QvqX?E>4&`{0*X7Y6$`R5t(W+rThjw zxp*HkJP6pA8}JB4;c|j!Naq2g29x{&L*g(l%UuJ)KAmY_a*>QQ z06d5?Rgew%KTa^FWG>p!phrM6+Hd^3`2?N_$OC=3<3XosQEVRbA34QczrI`?sZ_nl zWB9p|ikjMbx+8LR$=TmzXMK)!Wo0F;ltusO&w&%oH{cYQf3D`wETlh(T`>`Q)|x=@ zj=*vUpI+ROXBH;fuo8pe@!wz(kq4pmMc*?4! z124+RPzVVPW#{MbWB=edUaO~(EHxK3TkAS^_1K9s_p8XUt`);Iu0k0-P?`;D*)&IDQc&W=qeA=X~T55Mk$IHb<2Z1y`5s_H1G~&_2KQxe1 z5WIwZ)&(9?k~aVr(b5;a0MPB>GXVMi&OIqX=LIeE8;^g}7`b;;)r|0>dj>s=f4*uC zF*i*ppVT0G7zKWVqr2@j2)Yu)jQrVOmrs#w5S1}mPU!5vj#n=A3V5r*Ba^?8`ES@R z^{4m!p$;bb(}uOjKKNC9Uu_xpzYgvjfNtW;gD+@)gHy7Pppg>VYXs*Yl~M-xM_XHd zAbK<6Y~6fy=6HbDRWL-&)c6zs=C`!Y62s?_6|ey8aAF>1gY3_<)`y3YWDwYQe)651 zvB-G1d^n>x+sVx(+|Iwaj1LmpCkFvfGg z<`2O)U(=^;G^{&AmJ2R|E<(#b;U1FqiKLJfo*ChmgzP;1Q% zE{uBP(z(l^J`Zxapal5a7hqtoXi!T#fN4VUcXdF1P0CLbXg*1d23iW}!^r}lYY{0G zt`FZ%{L>RD>89{EW0PA2r0JP&R&bF7Bv9dqKkoQ>Np=>DDDBS4Km83QJ#my@x^gJV zE`uu;oe+Ck?IbZ=E{vj6#zU!0!?r8;MKoBif3>ul0+a4H4{9XkegfZP+k?}Rgmvt?_hxTNrMam8piaC7DcXNWpN zc#YA>a@#U+8Xzm7d_}@(Z5=7$uA{7>?6#cL*%dR8Ey%{tj~gGzQ3J|UYn2jxniiva??!;ayxHW&UYoMAgkM61{kT5U z^~jEn4iy+b0DC@3{H#-fC^4@V--%>e8d_zj14>xMfk#*(%|wqO{2$S$hkg1G)cgih6)k=DTTMYEv~g(*>(CUpA1;RC_zDL%y= z=F*4S4_cdv3vT>8h3I};o7^7JO3f#FP6T)n;m&eLvG?2gmKxC|iH?bJNvpNC$}*=x z7mnokOQQB;3LJ=~i5k7l#WB8To6ByiMgul;{plXEbK}mb>jX(TZC!bx_<~72t(W}S z8p$t@BR)m<(qXIn%<3P$2}UqTxWiKz#J%bl#~Kxpe!_je6?SW`mjxYS*5`%fYB#?Y zE;}L}6R&qXb<1Z{RTQstN)R*J*<@P8);e}84L4ZkpSdIjZPQHPGOgQikvF?>BiX^Y z$@n7wD^}nbA}w!GsA6i$HJr*Ts}|lX*KREGT5_l%HyLVk)@evyQ zgfr=FYo;XD$DvSMjw9|bH*241nAR;A?}o0Z!ba+&9>wK*i_|y|uC|t0eSnG=!Ab-i z&rr{dT}rCGjprNB#AgbqDb#CEA`)jKUJ{{NS?0ZalsUjFLu2nh{GDwcIs>g@U^nwL z*Q5W)4L*YMT#eTWj4Nf1Gnl&#^&dOeYMmW8!V?6TAN{7jiwtA$bC*J4KXm>swT56Edo|%0$MOiu?9%OnBo(;>wW4 zyejI=p#8c0*zR9^H^ zZ(QvE#?$amD{lQA4t?@~5TN2*{h$9gK=*h2_^*HznGBey&q6jQ$b^Z^|A|)f{LW%c zROo{;lTc(~1ux7W&{~o8KcwPPk?_gt==WEzva*{EfP=Bu;qg*S8gbu|vGJTH6*CKU z&JB~K6^|c3?pAijUL9m>pl%PZ#%3c=*j`QOv~(X-Knbn%Sk+kUy#ReYKSbeO!Zn_& z!s1@jFCo2-F%h$U$bkea+pP+RL4D&YyJAa^m!Y)$U2pch*?`*xF{h2aZg_%6pidhw z;jzR5nIFc}_U_7IP~yCiT$JILq%oB`>W(97?Y$4|Tp+VaA1_Ezf7>~CiD!UNuldwo z+pKOgsjJN})w0Le9FwbXiGhaqo#PotXV{XVrZwulXoZRO!9)_DNMGAm*@v&x>Tb4Q zk}fgf0XP|thUxG0zdiTQkeuoS;L;$krqb_ho05!|7!33% z^p6Ed5S=>y_7l<18_yAtE)hqpyw?UD^L6!Cll?O;dQv9kF1cv)@oVk6+T8|`e8$Ul z3yqp)PPkhCWvA`WOvT-KGfXx5*=WvaoYxlJwQ;X?B-U|M62ACoqRQ^w6^{2tFr7O4 zt6)W}?UI_L$HJGk${0zyIz$zL2%f;AYsE5;t#j(>-H2d!%XUqyXbx-3NHd5BH_q8z z9S_Mooit{f>xp$je|nTA=sU}!o|4Gy+_WEs&iB<6Eiz%pBg#y>#>8+k?iH?IhX&cF z84OmO>(Gy-tD6d19VFGe=!6|&&M-=JEiEtM4rW{G&cY08FBU?+hb6k^pTT-NoKa0E z7eG6j@js&=cz8R1DlOlw4;wfJ#|W&v1+9c;IaIJfIcp%Vp9QU-V*LrK0G$iCln|-4 z!!%@!y$Rrei5{>5F77kesa6+-il4jxFLhEVTY1)H5-tBJ<*DKH3 z7qzstgjC+z>&G>*SB=9XS`^xAFXqx>QsNGFm-=QZC?1{ZT-@?VBMa-5JuSorSZY2z`d(BhJzMelapEp2>X?@yyjs%dcvImvGf1`voqe;*O;=GEgZD`WBU$!)x{}tv)^1K7Ir(EFobG`Q)A*f~cx%LF<9Q znC-VC-PzR@166-mUQtP2H8x9%MkWxj*GfxGcFi2!But{`ki5xY*(bk8F>oFW*{cba z(n%6~jC0uXh{UGbqYXAT$uTJhpG^d}o>ZBJVy`(yTmf`Xdb@hRe)%5T)vIsGy%iOM z_~1_ES>v%WF=7IIe0*jyyFta>$0DR=v6j1F3kLu;$MF3oXrwF6enGE;i%T9`p6;bw zM|(PUh)OnQJVSl-TvQRSW3*2H*j~|iKHAGP)zS)hhWeNVlRJ~M5zi$QGwk@o{0D(-2DXefAIE)m|X4~@FB-j1cc;LZ-6V2 zYx~CPe$tarfbLxS_9E_2j$N1=@PGLVs;~93*wOep*gELhYL|IR?2G93q-vYTw;L0(7_OgJ!G0Y{=lvemMrp4$xQ}Uft zee!ebpm*JWsNz4D0bYP4H0W!NKleMMO*JDrVs0nM6S+NN-s(S#lbixt+S_l^v6r%g z8WX-3;%ZRS9W@2E_o#7i_Esvh6NnFfp|s&)R^kuUu?T*NR>ti3^L&(Kfeq z{9x~Ba`GG_OLUe7ZoP)kFCV>KT@R=@44s=rEM*R{N#W{Q#y^;XpMdx`op*?kj|6-s zX0I}qHjm_$4d{rg7Lcw;-59xTZ| zj=ij5yX$nB@#t%((XuxU`qXgDNIRx}i)Aij&MDVUeHAStNx}rE%`E}8`a@^+J3!y3B!=I|Ny>jXxp}Z;7b+cKbA?R! z0x^(WHQ)7IP({&6Z`ur_-JaBc!++|WFqPEhlU%$wTJGT=?=zaz-(bsRH(VQLl`n@@ z9T=PK^VB@IIL@9es8PKOG;VzBr7NNTrZ!(NA~TcSg|KL}J*e53J~@`iRWoyc1R4cO z%b8b4vaNsg>SWrL&uV9oj13DJIT4=hZb{_w>W@|%3z{zbJ<0HG#{f`-vu?+#Yv=Hq zq`!X6W){7`qgbRqx>*#KPwvH`n~=EsX0*(GP>}OZX_0dD1-rr8LZ4M3^9Q@Ay$L!# zN6>i;R*?vW=3=xh2xA~#ac5&arV4>N^c%H&ui z>q%W1ZykMJlW9_6RTEWh0p12h*qrSB97y?wOR$6Y)*{&L8V4KgUmNMK96DcZ2FJ+w zm<=rL|JXI}9NYTjK81%_pp;=%eW=XIu|f%FCiO?%(Lhukbz6y-V2zi!6opl7Gy3Sf{B3ApfFG+q!NSRbVMqv^+jb2>l2L@af>k>a*2| z>*ns3Z0zg{-wUTdwC@`c5;i)SQ^=kc|B{LpvCV8gLPY3~?ER+*ixfef)!6kR=u|nR zS(+EXx9iPrU@3mKXj}`NDAELGmOvP|P-Aeg^MXgqv!I#1N>RnfhZScm!YOXVXI9ND zE{>lbix;wR)K@PmUr++uYEA0r6;wTZ^K3OO#2Yz(@%(uf$5FSJ7Yj#jN1bwkd`;@> zM6!;kfSQEBb!S>fyu=)KPSE}Bg}JOHeRHob5l-XC=W!`<+;_M>xe@wJjjNWJJ2^RP zyU1{DZllOBjko2M9{pRlBI=AF>hUbnUR%*|=HH`vP+N_VQAe!z8ao8iHa=jivyi}+ zUE465?^EU2?IrGd_tT79wSZF+%R43gPsZ4@Z<)@5VtUaV)n<~nF^~4fVdfAa+@}0L z+w=W4)}P`bebx*PA7^K0C)hS`BJT42sf&Tc&IGM|vV{OS24V!YOua#0WDh53To!SE zEQ~{D!Swkex0&{DPWbPNaPsiH1hK(XWn_pvIuo{KMny-LO$BX4GmlUAkC=I`T<#R} z9Lua7f9+_<0i3zgxbU4QVbi6_*3+xA-25H&6ccb><-R1zd@AGQXnLMj-W%+-L)Bs& zF{U3|#9`z12JvDZ5ib~Im7j)P;pnF2e_tcx>Ubw2Z_x(VKp~Y^s8*>5!x5sQMm{#! z_+QAsU@JKG)Qx+549g|D;F?9fwkW;(MOp5>(1*91(OF9-&(6^C3K1I3Yh9N)IXUgh zEatB68GmJyqU)nt0sH!o;issm6h5w$ix#o7i`rzs$R!^RU1OL!Iyaczgbq}Xqv85i zSTC%Rg-+vTx_SI<;KQo$w~ybJ3Aplx(Or*BV{PkTka!yG(H8Lc>R4h*KF3e8>EQ_~ z`;f3?+(83Zj8d3xkA}M2QYGwaKR8ZzL8^rAPw^8~`Ws)sNC?OiY3BOu`@Zs9;q7lx z>;}!Wh0&>&?U#wt{+WKt6Wd2}^a3~JQp1TZLf}2~xhm@^V~(_5zvZ*TMap*W@rxox zK~;b>mr!;p1f4(=v0D>fm0%z1Xh^9Wd=k3I4tH8(hZFk1uH~Ioy)op`dMF)o{z5w; zb$9N_nWvt!W`o)B4>ZK^0hW)A0328~Iy?L6VrQFQjb>QSo zB4qlN+e1QeRuYbyUS^7=1KAq$59wwCyBv`6*=_NVkFB@MXGP6osC%#l#(9s&6F6^VKZ>`!i)1 zWT35l^3v9eER3}+Y%&S$5~h2nH=~AaJh3os`4LOMa`b{R+I}Hw&4GTj&ex`|$kFBd zdp|$|m5e?ke~8t`ZqiXx=Xb)xD%@asQ#gPJ<_4T!w&axDGd&ujN8i)0Uy43KH}xt! zGMC52m0^=EGOqo744Z0A`4!jYL0s7R!oquYyjrEN)AlaG`6?FP&HqqtR+#hM-RyjN zmTo%9V*<{Z+~Bnlh|dKj z)Yx~=D7q&aysftg<7K{}@8B90w~$TG%cI9m+|JfWs;~0Y|D*2snb=?1$S**5=I3(n zqDFsMgO@%vPA$2dRIIKb%uK~tr?jHxHqERWy<|bKYbc<>B4+(R_kUY#)G)2BQ>Zzg z-mYBScx)+ip>gpU7g8n0Z6^i=N+IQ36Y&a>1+R^bjfL!9_a_!k8Am0A-Mcy-`R?R& zOxMF2TK-yv8ilZfDglQArQl$V69x8Z0ZasX>3VYwYn1Dp2V@A8FZx@g8Cb>tQgYS1 z`OWKB8Q+|`0|Bi}q$1cnv!Bp^+kB2And^oR{QrnRnca#w?0Z$>xwPt>HXh%b$WdlrJS)X zR5#!;y>?63u2(^zu0KH(r(0Rn4;XZ1=V4+tghs}MM_a@E zKI$jzMxYC5hA|j!_u1av)}kNv&^Xb!;;Sj-7fMUvMKpQreWt1jr+ZBDR>wUZ2NSYo zQ^_-0jU=(v-ybq?Pjo&MB~!$5v*_ z?_zVG{>|*H0@B}jCzV+I6+g{*qd5-vFCQZ;-NeVImE1FX9%gYO+_c>oM-$=WIW3in zOJkMKTnCU@OBIR*l{(Tnj)rmkMyYlWvP}h(DxWg^_3)L?e(0x{j19Z0+R@W=W~YzI z{cbMP5(yZ{)~x$jQ#IkGy1#>Ks%6SMNg%vWd-CFvz+2z5j8cXPA}~m9Zth5)q;j&? zJm)sXqlx=q`yEH6^!FzL5#Jbo5BXQc)C)pMiTB$MHSd^;kmUm{VlJ~impglUVk%*{ zuC7?_aa<(pE$B!+Z(nVq)cX6Ie|Kfc_*8=pUO%qo{h9qAArT=q=Ll(x9Y0)c@VNGy z<*jqUoeIv4tB-vu?uK8WrBR82ZqDa=F5_D_HVJWrdy?E^@K5c zl#lu0eL}e{>asva-Sv0hn!Pvt*tw|`I~r%4PoOHxFwM~s>(2T z&`mT>(Kj$KFiz3`>?|E*)0)#w_Wka8d=a%2(;w9EPZ;*`Jh826ifQjQP}4SbE4$`m|zxAv?|kRwC^OH@`_6M5-+TYOn%y(~{TQWc7=&EyAB#aR5r2TzSj9Nb&COTIK!Hx@Mrm zcRRyNRdz12-I;EvQ|_np*CZOESeD*4KeGEL8aw$Ydd9(V0K`5vRWUq6)Pyi=WPEM) zVa(SPufvw@?Z1Zu1Vz0url#(u;UOFxw(z8k3h1{f>fm;e!S+w#1V{8L3GrQg@C5ijpve0V?Q^FaFZwFabc zHDo!*oKNJDm+u;<>W2ez=GC!s#0qQ_L|Vl;=kHX0BG$_Z%CAmtT#uWnmb(29if^|e z#73){mBZkDnP`pSS+_?*IZt>+WynCk07hpC3E>?lgvMz9f^(S~v*aKhS1iZn< z#&XU^xbem^9n>mve~54X$gV_pgS2VqJ8JTwbb0VBb5${5@ch020GKt#*+i@7QupWR z3vinW0;My2D8ZA8aGby5w6cGeY|~cL{q8{rZf&OrV50HJ${IE_H1tc9FNJvNT$9l! zJ+6{6!ENTXKM&1AMG(_a*k|3*eJr=Ce|ESrJS^-qL~I0kNDaiOqvzhKG8olfktkma zZ$Io7j<+mX}=(x)R!UKVP3HLte1=IZfx3-dPVk3scty?(3CIFF80P53slSfTBB3jK=>@L878aH4Z(TYzXedh47`Ep zT`Xwxh|^#PKPht=*IycxDCfuPE&9-Qm7rLxhLL4zYAcsW_@A?La zFS@t>qUQMdJ|>86&|4s-x(z)Yx8}J4XySPoI$W>BEmuhQjRICkj|&j^pgduz6>u*> zAi&HZVL3P;*M*BfEA#VJ_A7U9Y}>MBVNnd&sw*0mg!CBGK;T%!NtGBS)wZMusfBeuaAi6{9 zLVeGLVo!7GQuR!NkXLulindHfz&(&y9!7S9!F~=d5>=mdynMA5z3W8o%ItFGn2!A= zpR)d;Aw?sj>_{v`Gj>KODTXH}9}Rr=3lm29s0D3y$+2F;IIU(P^X!!N|8f<2=$7Cb{N`B3U(; zJsu3ZaVpGsb-}k*cs9{ERi$_ylQ^^U*8u%x#YbJ~4#91lE?>>r)&IP_0NA)%t~O;^BVxIBzL$__5f-PYS#{!Fh-aY~Ryc*&dqI*3=}Yr{6NZrk>UH zj6;UEO61w6+}Fn^N+X+&W~dQEn=%b`8myY0_xEce(i1pAWC<`ariaXN?z>UA(y?<< zN%~4+Q725PXT=MG7q|NTA(q==>V6pUc3m#d^yA(I;TjO%^%ng}+~IDYTKgIKfb{EQ^N#jDTW?0Yfqcbc zSmxdnr^!|wY3Jc28-obLee|4;L)~lx7*x4S3ScyW?lf7|3j0rphXX1K@`AU$!rNa? zP$&0nuX!{!b9i8NAy{%q^`YZGjyHwoL+R;~uFC?o8y)x8WNba{;{f}zD&kMD;5{Iq z8Z0*XM=5Y}gHgNeFV=l&-`;7%hW3C9osoJM(rW#@J^Nd7U#sihdTD8ghJPPddceo6 z>H5lmz#yT&?YJ{ggRu*H91^Qor%$SPa#xsS#?m1wIw5pB^V_($r)xDRDWd1ACaYfw4=UQ)k}v#`g4ll6y+S%x+V&ji4&=IkN$#;*fXJEvR$XCAle#dmST@F83Nop!?j}vkq4D70v zPxNk(yO-foy0SmqUZ5@{UQ#Qo!$|3A$Lyr8cP#$%phKX$3r^Y13Lf0Gv0#ukAw`ly z(up`jVcXAE%}&;+FB#VYNd%aNxl3d{3lrNY?e=6;)hZi3Pk2`z>W-;thn(STd6}JW zRFscWXiVo|DBd=X#l#;nV4;*{78yr&9*=;g(hvU;{FqTa)1GE_%t3GI~w9fVrj z6D&_p!N9D0?{jParB~j(#t!X6ey{QsK{^bFvpZ;Q}LsaVpED?zP(C$y|n6drhw~q{U{w z9cCV!uYF1}!aj<*g^TchZ)u6WUmhK!HLe*dU@wQP&)*0 zz9J>TJJ}-fx1!2Z4N4l{Gx>O>>@VKoopYZndj*fSzv|?qX=`@#|g2+HUoLr@+{X*ED-nH1@zPg z(hcF^1_BO+QgOkK(PbHtaYL&TaF6I3lrd$~Y4eax_Cij_rVR2fyXezU%KO=AqqiFoE6E z`Cowqpg!{OW@4fMS#@sZsq#KF1%8vaV>ur9v&kA%J&*3HqV4mvyZY+rI!y_ zadqZ?ejT1RZlTd=m2jkCR*q@guHR4fOh_Eg@yd25%Dd2Y8uKZ(vdaZzBB0bbilFS( za{FehKMxB~qol&lolYt;aH?h&u>@MXYRBPS3$-H3Q>bFALTk-;)KK2KnA*i)xcw`m z2aiM0X%iS?khfrD6`Xl4l)ZUwVBlt8jjglh3p{=`Fjns&uC5aYOD2tYR6(%TO7!&Eqe{fx;3%v zFcist&t0IZR?i$)ClXaYeIB;^1L)o$^iFq$PTANkw z62&fV%-#`MBj`9WGt9MfaANiwa}3D0$mwGi0fBa|?JJ25 zpaL2g5*$S_a=(QBxN!0ya#2vN@Qd4vrxv5Z^rJF;CJ0B~^D4!IyvLJaj<9IE@l5n| zkEdOAOcW9rH}}PMOW04N8}MBU@vnnR2O74~33{iA=4FD8=HA_%n1+0Syqwp5Y;f*6 zYAV!W@_Wh%#2aS^dY3=<*{{p@S0w1y4KB8Qa8Qo}BNAUkr8*`ZRpm#vQ?@ad#SrKspx&tV z?%Igvtroj?xeFsKhbLHcxe6(h@vp~G%3G9_6di`g+xP0DxIA@OswxCMw zhl&|1PrSkju_F9#^_|+h5PyY!KWSe4z)vJv1UTmZ{P*3!9oFDwf5E}6ry!NmsYlW; zGput;rk)DDkU*i5vK^}}Xk2qeu@emyg@FyJ-ZyL-W4^JVw6zB-ib~oI_>$vocG0dk zPvnwc@y5UwSDE+%VXLO0#VHBA>CVj$MI#FI$+q}$C7oJ8Au<%Cjg2u)#N-Ox-_Ie| znUba#9#3*5JtXfC_|j@}#9&`3#k0Pwp?Gr3aC$==VY2a{#U~KiSvjp33NxcZWUZ^JpaB#kzV!HZ7(}kQ_B>6V?XaajZQ{rlp@A z6&)Y%kTAx&JIc9?p4|``4i_9ySFXl%<>DhI)@OY;2n0(y{v}Q@^ZDU!G;HA-V|BNs%L!r17AYvP!%`bFP{ z=$S%y_qf%|&%6lDZ9({cj|m0vG{@rCjfjd0ZVI(9(Q8Vp0VTCPVxm$dPJrwhF}=Pz zwQ-lN%|>N#G}WQ&`Qg`ES;dz$rW`)Hy$~wUaj&YZknX9I%Ry1fBHFMSvqNs*7TV)Z z;<7D{B=KwsJ?WW*v53VJ>=Qj^De#Z=mH9`@V`84Tj=FM0TIzHGrf6=S(^uAM`V9`3 zhNNa{!_v;*Po1W8t$15Dr}~nPo2|PaLR<6Z_k@LR?CyoxI|plD?MSp_Yuc8rm6?L;NE*J& zdKbuIuPbw_pweP)SzK=6QVv;JFvc zkOc$=DH|_MOfBy{VvINgrP~BLPq$E#?mKml@1tHr49T=k!*6Ue5wbfIHSw23sAZ28 z9xIFu;8@O0r4#I7CK1l74@-wmNBGXVWX@C$S>ox0!yJ#_&+ZWB}Biz{Kp?AR2>UNn!{+eD#c43bTeS&88 zN#1I@_|jInTABwtbomm)v9DBa9lBHrr&2)c=-xS*c6|RZcfx@E|LVDn_k(F zzODwes`>fvf5t(O%ZGv6QL9Aqs@Hn-jrc=k3;Mi9pkvG+G-ibliRLgyfhbYoW1)VG zKQ`X^avRRpInWV`{a@b*z1do=&i|=4A}-EaIZtM!VJwuRKC<@}*RE8q-gZf4k6L;z z7XM{Fz<5K6Y=xpn#5@PhsnQ7A7|WF=YBmW2Ag{RFxU^}8whi5C*paW<3-}AVbQDd0 zNZh#Yk+H?%a>v-SF5I(D-!?+ZHM}^ZXkG=aky`DQSna|te_`f{)3#-4at^juAN}L$+y{EvsWlyWjy|W31MBpg=np zd%!iQ`aIu!ymH)1cL&`Nug!GuLTGYvevx2ysUEy&(E&hy*ydW?r>=z62WH>o@R;R< zYEP`bgjdsc(gKt26HmO{g29BC%0XnQ_j# z;&*Gcn8-r1)X>kbkE?jdB!Nvb>*CRCpdS+Bpp>IWw8{uF2u3et$3xk;R5rnA-@bjx z$@vv2ucO~$@ka~;c^g{Q)a?qz?ZOt+J@P+ja;Zlq;V~YCseQ}^^J&<#7Q?o8_*CroxFmk|(gC`u zltQxCc(d!vV%x!|5{9u1Gv=0wl8pcnAacpj$w@lO%$(_jJ1vNVN0RW^LYFtg0SAhb zOM82{_#4gSBgU09MKiv{Cjt&m^Yk^q=06GE_F7fz1X;qWotw@gu0oHnVE> z%SaWB+1zd3_jR!{NGt}g89}k4Wx`l9zlmK&k@S(x z{gIk{&-GARn3N*VAs2c=lNlu{#>#x_3xq3geXD(uBq#;w==!(axX^ym#VGSgLN$h_ z*!+;B4__Ng9_!3ic5rlTKgN7`s8R(eU;41{7(UhY9(tZeNb!j^FpOmnti z*Gi9Xt)vYmHU>NRq0i~SszD)iEa4=GmpG4s@BA-?o&Ocs{W^%YZ0!Q4SUbhyoBUSb zNq(5Rd4ef41BDS@8d4Z3f-_8q|3$r2^?79l$3vURYl%@vq4j86s`(HInGwm`#gI4zvIg%C965s_JkQTI1E6|PM)%GW2h z=ft;BB*O@5edY}oZx310N>a$b6Vj@!^dMyr9}Rs{#r2Nn)i|Oy0jq5RLvBpPCf3dq zV&kT?RR_rCFnxrbO`<-vvo;|8j&8t*24W1i+MuxFvh zjvrYU&o+jwEKImmJBwQw4}5*2reVX6YW&`j>bZCseH}CEA#P7~v-^rA`g)I<*a#Qv z=E%aaq4acn4TQ#?`m2@70;0TpX^OQpn*p+Cned0}Pon^xgO9mr$M+OPaQbNR`|t)R zC_w1N`%2}_3u5zx`lElX`jH|3XMcq|-a@}{y(;9;6c9KTPNheXwsqwDgnW*kD@)Ci z&Dk2mQx@+ut_+|9xJ1Wy*{Ev96P~<}Ah^l+tll?0GsBJAQB*F!v}>A`Yh2%5SVcMABtq>~$xVzaVQ3WEen5jacYh z>rZW)q?7SCpzh0$#x(X&uZkln8jdPF#ak`g$|7cm<*%k1xR4?igwT_Q9etChmNR&p z2MUsde7 zN{4KXf-dy^=~%a!Tb%`Q-i}0p!2cx%s4*imRXxKn+NuPCWchb3Oxp8XVH0R?)R=}r zq&)j&KGCpvfhL--ubw)syZmljo+tePB%RIrs+~mhX<~$6De_|WwquVpQc(3}c|LWD zd_?p~x&H7LD@^Sdzbo+PG81clNc#)+rfY0L*ziOP{4Au|Cy0KXC;2 z3Y&JhtMS=}O2S54--IJFVzixr!}v)rg$s7Hu+az&^O*;$i<$+U;$CMPTE@DtqZ!Rz zVRCCbks8dMO8#x7m{_4(YIe^i-qCDUL=M~e?{x!N_Pst-8$G(Q>x)a~3_4(fs82fP zy^)ML-$uG&cl?~&Lj#8;X9uMr_lXSo+QAUaz?XMxaJBlK=MdRlZ%tH2*d%AS@_pB1 zYo{2m;DQ|GzgCo8b|sK*vCH~|x7&9eOu>?!N!p~!zL{1I2=(Vyt%uoDE01LZQm20! zXfhT#niV}+bJ3={2;60ShxEsLHMi%B9nE|zadVRW^|zwkR4w)@fuL2{MEe84}w4&1E)jq2;XkVq6{k+s<^oNgz?JJy!}g^a05%*c za;tKIV{cq4zV&1VBPc(E?7^PCHFl2+OiT+VA%RN81UCaA?F(Ti#@zO{Wextc`_0}91=*+U6SzER;1E5ex&D7xFKeH*wNu=BHf0-@( zt+a=EgzTtqS<#^Hw>GBQs#j}nBrto2rF9m`ikV+6x|VUDWw=&9u5v`oCGsv?)2sLI zeJNJWK;;;*w$!s>54+~*kSB_UQF%(lFkfqUn)F`9kj{|m6@!olGMa3)j5h~Ph%53M zdqm|ov82+pn=1-^FRrD>q73ChY9!3hpP>%!G6?w7@?q;vE^8I&EnRPLv|T-BNHn|y z(fEbo)c78l)y2{2X6X#DCJ+8`mO~TxJ zpOrVPICRL)7dF>|``CBJbpR{F@tiw~vljIg+f~1i2~7@ZHJW{^9|QtEJhAY%j28qX ze`xNN4*xr{FA&L7ing!_tTslndY=YV?J!U{DZ-}l2z&vd*->mVmu^sMne(@%=9JX& zHX`x>dkY^Z@f6Ny_L0Udb9^3XZj}+>Q1b2IVE}w-4+eV-7a5mzMcXl4$1$q%NT!Y} z%-GRsKTQro_EeOLjUE+H8FI~oUJD_t1K`eZ0w7~sR8&+Eng_HOSlA|S4^vfUL6w?j zK*&yOu6OXsb_zY^O;jc@D|qq5ybIPr$WDE$$7r7l>obf&mF^4y&R}&R(XkP*=;-6q z{T#k$IIKqE5Y}W{ne27yIQ%qKeIk#jT5wgmxN^I+jFM>nd=7TnrA@ZWHPD_6m(d2T zFG=?ea}Zu23)K1wLv?8-RPz^+Mfg~-$VarT5}=An7X%I{D0+6YTmCI^UQUJyCeJ0y zF~51-n8RDQ?c0Q_bAG*0R8AQAW$APgs$W34EI1@E%F0+VbYAMlpCE%K1TtI;w3ppP z1b+pNoT6ak`PVc5JJ?%)dBAFG+@5-BxIWncnEwp%^4`w z6B0IX-cMq5mh>69hOukkJslLTNg(}+4-3R?WbT@_sU}nQx?v;D8(RJAEo%MUiD;an1z?qv zqmhoqeVrUY8%PV9y<2J0N=Co-TJHH>ugI;e#`8ERYIi3~5x;?uH$B39(q7QJ!2 zI+^_L%@N_r7L)6tH;NC$mt#*-bgMkRbEpOe>OwJSqnK5LlE>UBPNp;!N9!8;+l46z zU63Q)<~by33{u}AWYFk8Bm5+&g5m}IvHulNEuW_e;2AuB&dTW)|$O zTzVyYt$AIWv$Rktnm;v201NH#2y;XucwXp}%c(ac?VOj#4zSdp&+=o@La-ccQ<@rNv6 zn&Z;QIKi`@F4(CY>19gxob)l>a}ObqsJ9h`rJ8JQJsnS{p&et6zDQ4O^RQV190(dq z2ElpNL&aq#=SfPTjR8e}-fB95L~x#dY1CA9ht)F0@%X+zG{3v2%lN&|)=%9GpVgUU zxPu^n;W$|#V(n=_?zv0nuekSv?MHepb~wkV^l`&YcU^&m@y2Yc5Z{%a%Zwq+wq#1|T!&BXfZ%Ub& znWYPDACP@WE(A~objt9}WduQ<3=R;ew~P7P32`fRy*AT?z2IcWZxMn&Qg{KK@e!Bb z{QmdHe&PXE={ra>_pjAk;mAOXc>x&A-qMjz%j?3|&kw)${ruYId%a&B2sqS#7$VrHj42hqqYN7*(T1 zri-N2FI`0oAG79Q?3ECQ8_}6vJFn;>8D|0x7WNlK)w0&MtIFNu_ru<`u=D}+6kIXK zYKCqt?cu{9MCefIZulx>e_O^ZXZu(o3VPlnV@m(zA1p#@wVcySG&=zBVt$ye|Ge)0 za11_seD~HKV21|3IQl-bRm-l)8HKg{^ywnYDR6D zk$HW)Rl(Tx=&@?=@UsK7odsp5MaX4+6KVYM?GLh(fBlJnJ(g!~Ch3~D99iuDFq|zr z`rh4X}ET z(I&{-19>0w%m9r5s)vhWI@R?lqi5H4{vO3!r+*UwFfG}Mj{-TV-;XN1 z^#re7qI2P|8k#@yx-e+|7M=e+sQmfN01?HFWibiVp%IpdjEaiNo2I7Wm^yu;whbaH z;jB7AA9}~r)bGGk{uiC=FQT2FZwMsw@I|fv{SASg+{33^0v%6ZseKE)(!kU_hb*1{ z9&jlF$P4C0&hP6abU*pNmOzFZdlr$VW3BYKW}$!y3tN3gWDua=y)cC>^3$ z1byk%|L1Fd`;qFx{`FKF3cH-E1Uz2Nz|dZPjP*NxNCdpgk5Buz)eI~qArR_N_Ds<+ z`-zfs_J=p)ko2SAccLIq+gqFL0?+~pS|b;Kc-lfX-ONcJNxvRy^YQ(@fY;n7hx*@_ z3!r^}f{yavf!+3>pY~T;zq#?4Aq&IP21Cy0!C7z8%e6TwxA?&m3hcNLq409EfWBq> zd*F0p;MU})rSOsq`uXKx%->fuFy{q|5mqnqzuwuu%)y^S&vP6y2jBd(zu=?IR7e2w zf4p2k9W|{eoOxeyZF5v!Lfkp6z2>}re*%7B{Xjl8Q|a6A_Z6-|KYz$V-vrG!U-L3> z`GzlA|7*N1_3UU68vN>M=y^ndKf2%Mr`;UCU!O(u2^g41_u}avK_v4iFnBYPQAmMK z+M}P9w)$m4N*d>}=;OdX5$aCV19=4c1wlXG4a@$E=kd>#^bkU!r&|9V_y6hUei?Fe zH-p^VH$Uy>v;O)l>4(6;?Cp`x2|heT-N(ebDKq;8k^=X0Ey(?RP=eR=#cd!_vKYX;t}hk)Pw_N{!^YGxA+SN5OeEnl2V zgjiXZj?Io<0atN+HN_h=-fKJ3@3Xl{4_ySy=-r*_n}>Eo-5yNzSXg!dRx`vPRD4*c zd1&_$znh>v^U|2HS<9kjL(vrq=V4PIbmG+9F4A!DQ^~Wg=Y9_!UwAaFKU##J}+B5So_{x@Tipapexr(emcm-}Sh0ylrI zIOuYq7$iBA>z`}z>%(!yfYp2TSF3|Gu&bZAfY11K{YSs?C!+Qf&A_&%&3DST!MEa( zkh_q04uIq7Z=dviPWAqJXEoU<#XvgPQb;`$}bCC|b>5W;w zR1`8JhiZgZfOG7krVtiHLJy&O=1s_g{W3)2OLjYca_gbRo#0bHWB?^&Uv#r@NtO>ps*B#+R#8>TkVg!XUrEY0T#XuOZ1} zFxd6aZ81#eQGuNRA>#XmV7P;-<8m{^ut#Y`aA%A!@+(zN;YcQBz`vU%d4K8qE z{n2{{*hIa1m20;9Ds;>5-fWe##B#u%ire+01J5dWq$Q^B)W3Dgc>?*!hCz*e2EgZd zwfduB5NK&r51NiZ4$%*;-KjqG1mYkaR=-L9?YCzDE}em$1b(sysnC8{gq8+hZ@eS0 zzHJJM`gP+RS^}@e1@$4S0q=WlY1`X*utqDS68_rQ=g?{BKP5l6-nR7=$ajZOl0e~i zDh@iIr@)jCsaDARtql?9H1ujdA+08n5MzJ(SHGZ(+YbHEydPu<;km+j87z)#H-9zu zp;GRFdAleHsV2L@lv5L*xKjUT*Cd60=+#z18=|w&QX4q9r46VGz{1_h*?kE-`YE9k z$j1r~p@sYWa^C*kZUAD5vjhEt{=0DhyKw)zaDTM>`tOMgH7EP;i3=i#|DL%2=};lg zb)TNTz5sAxRM*txMx)W{${U#px`szG`4+8fvVj9p80d?Y>pAuWaNP^syoX(7_D=7c zC5kM}6qZ#~RzlrgDk?t$74*}%i|*?5TSD$qh3dMxXFo0z;nz&>n09y^i8#U|#iN(0 z)hO{{_KobZ*wuEgDxiXS5y@R$jW8+d{iMeNEB`>ccrV?Gsi6cQ^TBQ1aI95dGRTfS)(qFMd< zQ)Kj{&)I-^4r$?IAzEiga~zxS#`S@Y7#%_cjE(ZiuXISEoWiQDL4@PcezO z4$4UTfR8&7NG@qS9nt-)DglJn%*xmmU#CO^@5W~MHMoo*>Hzyq9L3lhm0B)tI6XaW z5UhnvDgG9|Zy;zi=N?Q`!mdSVW2Mo!`mq?>$=@RwaV;)bYNny5Qxx8=L@`Fxu9uNh zHob}mw3bKkwd^soXpj{|wMR|;1dmJUhOSS)s)AlgM8O#I>nJ%G)jm7m$BmIi{XJ8ym|D)s3#Z5J||G*p$97@?}w$JrAytweV z9PBuXER&mUQ$-dr?>#o$oRj7>)}Ur;dIuOS&B;OJ-~B1JYenj^xkVKpE4}yM!n+X6 z#;)A~HU7t0^nB0*PzU&Z?uz52e@dwpV?~mQ8*gkJ5=nt1(UQ}wzhiq|2h`qA+LpiH zDk3KY6=l~y*k2^8_+V`g>)>l}OhKbIhM3iY>E6c+p5 z1BRGhK}-WIUStLHlJi$W(Wh`$=bMwS3>^@;l|l-J7v2QbL!m%KpgIs8FbWb9B4J*GY=jai}F$`&gw7;c};q)YUaW6;~@< zBZ3D$5&71_Kh|?tmgNa9E?g)j1+8wN$-QI8Be-Rb$K3XXj{egA$YhPaWwm5T6C+M&&xM!6J&s8oS4|q<7dYwwqHUSFO^^`EZVKddQIas=yo?s z$SEXJOAKsD7`~3|nM%HC8LjxR%86>-cE>L=3L6yd4#*)+my^azlM5LFj}t?1nlkgYkReH zf#@huDM4IsdH;xDyk?P%o{RdU(mQ$9JtBOAHo6owpq)GoOsBuHe4tQ9wyFNOG^s-@zSu>*C#N)dxYWhEwcsPq`&QS84u++FLZA)ShvGZ= zo6UX{S4fN~mWz2T?bDBcL8ooAjTlHk+GUlqn&`GQ5O?# z0mv0pWwkx_ZK*cK)MCVu2&NSGT9)vX(a+#mE%lt&*U>k$gGoHA4kWZuT&82|&|b<| zqCOCMYr9Ogz?PPlLf2lJJV^HW;89~i(8cS@RH~i=3f_Ybz3~{_XlKZnFqo>jYyWRk z^*^U)SeP0uYEIA+J|=US;dEEfQ9eP?(>0?hVNJGs7(MOeAm41QHY z$iJ9K7MIDiKt8WH4!_WBS9t zb-I05Ub>2E(dSAaJ!KbHEKI+R%kuA$PXszE8%%E;sibtBHfk1~Z9nXfmY(DqaBd)+ zk(cO7>1UU6s0eh-h!M5GSaxNUJ}tZVG@t(c>DQ#SfVg9KhrM{I>@=scSMRy1x@dYD z8bd-oa6TEjN!f5Q=#-&w$J+Gve`F*5V|K=y`^7O9G1?cDGclgcuaDp8aQ{%bAI)%X z?9amsJ6AjM=EVENA>!ENElYksE_HRxh^eLKAX0&-olG;$H(K+Eq0VPtTdVk31V*A?T2y1|P~x~4Qa(>c(CswJDKS6mwUPbPov6v`&#o3l{9}%74+t4e zjOY;))3(T3-r_kheK!X2_r-6dycHhwI=yRw!^t7q&`!9RKFF3FXd^?JjQl9juh(F- z@osHke#JII+Xf|NKk=-5J)&g(JtkYsI%mDKpAnm5KLgCHYWtpD?3o~v+Fd3I4)q5o z!rT+75%qFQN`s$c1aCY$xn@NeSjp9Isii7Yi)Z{~(2L(pRNkPbS}!l%t-K+y8;+AL zo-gpMEibq#MLG zf?f#bYaXB=3Sm*^b88<9I~d{3SA~$63q6@HUn(3Sv12-xod-tPavJ8-btI41_UAP| zyAbHen;5;t9A?zlyWw4maE0lUo`c(^rhDH`AZ?39Q*St$t+y}bUD0SX?K4fe9wM5d zk(1q&uJwU*UAfT_8AR01ra3eN1Mo89eAZ;ie72BbLDO10*&BtU(GV!&DR~zqvMnQX zT#ce=tCH#88@(19_TZZlGmbRxosz#uz07zo-F7b(zZ=kb#T zg&y5EwzF!2D9?!6=3Q(r%bwPr_v zzK&LcbV6SD%p;Ww;&v&f??OB|=vb_D{mOI@IiJ)dd&hDGlY#K4bd4ZC>>#@rr+y!I zUC=i?G{l>@?sk2k9>BJGF5mdfr|8fV2te-4$}5+oV5)2>hkOWndOxqZ|!3MaD@u2z;l2N5dQg6P!A(Ui0piN2M7l8GhJ^cl*r{0l&f8F+!#rx@)J8|2K>N6p zrSn?AEbg}}yFR^5+D3}EEJEJB0EDJ}LbL^!J6+&|D=b?aLryR8CE~kvZd9tC7*Zb) z>Y?_RgXy51qA?meJtkpLc*hTiy97FIxQ)2uN-Pletj6b?Q#whFE`%JbybecScWU#8 zBa^8rv0PXO3n0(Igm?JYvlP&XpnvNV(8KGA)1AXXS1g7HzQKNH;(7M*xe?D zz0=e256RAr;_Q5ey?wm{uaNM_UB2@ic^<7+xO)}^eIhY0**>DuA<0MFXW9*cK-%+r zVlySyLWZ+Ltij!8*^-`w^dri)mT=TBwxkR=H}{u(Wx8ISk4ckit>=CVrihpM#0QLR z5hJBpFIEdxJLBtZq+}%2yr$AX%cE(N^=49IG8aNivcP0kl5jQNSTA~#<1XAoiy7G0 z3Rz_Gg~u+O)YITAew{5S5vsg+fp(+77sPFV9SpC|$U^x>Y027r+dGaI!0f>9`H>gW z&Y7!I0rI~OpZpyv)^!_zA*Wt@Qh&PJ9zvIeIcovjTn2h%7utn9|Bdq&G$jJ;QcM6% zH-_-`!Pniw)F_IT*zwQ$go!qys!$lL@7`m~9jiPVkB%Xix7N2jmsbNYR6RE}dKS%Z z3z(qVQrXKo_s0^7_KzUIRh?oOK!y|Ge1cU752@C|aBnV@h?bI!!{U=Nk^Y;@ho$0t zbQ=yP*ZQsP;?DJWm4COxz_xtjfO2##PJW~7^+e2zmSgmq<|EwzCm1l(iw0t(VcqEP z`1rm-4#%Ejg)8!9f*9?rs7EnZE%IUv8^6vw&+!P*3}>6A#{*h9s93tO*A;QQma*`e zI9*)0(D550W*@_u!!xQK`|{UDpX8n~`}E{=I4*XmVTQ^>O-W6KqWu0m3_Rk}nVp4F z1g-IXs=(C+O(|q4jDSaT%dX66n&kK)%RKv1B)H+?Dok_BwW_C<12H-nu6Tr>AWP2k zwDm=eR&E zP;+b5g@d)^{elCJM{}ae*XMFBvB$oHN*;d_EH8rUGxg4nJB8pr`vUga4tD-+mpS{v z%U=$Cu?JjSL{Ku2+4tg{Z<}#k8y;cDOYU%@hlnU@G+{p*b0Nj*tcTyD;mUQ4cq5l_ zv?;=#W=kqTk49G%VrGV$NcB=~^${WmZp>g`bBLu4m?d6)oy- zGQ(wS-|cM+Q_>?@M@6*Dtxak0!v(O*`$uc*x=LGlh_WEo5O{-Dw6@L?wQl%AQXqlO zPc=0|Z@d}j@3wFj4p!pPbJNX0FUBR2`UwG2Qe4EKb$uEKn9VSEV)^q{jymk@gW-lW zUk-_9fsTNe_f@mZt?)aQEnbwKr;Jq2sg)D9r%KKbccD@Z*GeWpr|rC>+i zTrD~+v#VK?9Gnw3qMsUbd!CA){A6Mi3p{c&`5g?=Q%~Nh1Yw%;!!Q^RUi*p1Z8^9M z9i=E1g8ohYko+9AH@Qmwu`}NdqL(I=X6Oc)9bdw(q<9ax03K!}qo7c#F#FMH)Juc|NadIZlJ>vElOL2goGkr3t-WhSMlyn@pBh2 z_#(4)b>`kdDSK+?B&hx>#YwAO59Jsps`TYvYaBH4n&;u06tiShcqhci!$6l{c+W)k zuF1%<2g`~fC&Vh&&#W%xTM^K`aa1XHM!((BAt6$|etp^NhIS}tz-H24yB;hA(VbyT zV#+ANxU@56sC20T1;kxO6uAm1=qpjaCJvgMpOm@ppV>e)UN|byanf7#hV9C`4a87F zTEp`P^7|m!<~y!8F0B{c2VLdE`D4;mdJW#BivS0u|7q*BGlvPHSiujDAfESZUR#!eb~c zDcczO;|f1dwWI&1Q|%{P^N=FAV3Lw+Tfo>}g97EqWArO;?|>8PqV_o~2o<(Nt+Ky_ ziEwVe3FeE2f>vd6o>6ldQon(wPg_G6yI5c2bx)pn2~Wv1R`w3$1UfDq{R&%qq38= z7kQyz698s?cq{>10L3@aE_G;A*cDgnjvhX0M|W}_kz@tCL3F5ATv}~(PwS_^+IU8< zVkGXX%E~R9v;DS!5fIO|Tb#44-# z-B9z|TMcMykQZ+1`@7FWL6+dLT0n#GhZgy_o511tG*sz#s89kIdK~b_ZP$DIaH-8W z&~Zj9&U0N1cNZHMg(isJMg{cj}Y08_R{32reCr zhCHo($0gk3p598zy7XbE%Bk9FsB@Z+>VP)k*^VKG29+mj6Dth#PDi!T0*ZvR96)zQilKR}ccp)$)Cb|OqGOzjN;Rne#CQr%X z<=-sa-|JW`re|AxQr4l#o2H9;98=Jo=e+OyJL_yRP+Zo98VNjh)>b2=Dw;NnEsa^< z03_d|EJvkHtcT{~^L!_La3k6;5w6%|ZRL;Tii)euLnAlO*c@&HS)gS{HVKI(ijvf$ z`dnGhn$wdfYNgcCd{(XX%m%E#mM3A?r$2Nc zI?iC!Pu6dJI=2MA%62tCsL)b_D2iNVA0Dr{aJB&xY)C;D+K)1a3Em918A32!!FgLt z$YqFwsjj$dwS*~n5 zsfq}a;f`*q+P(RC-Ezf6t1<nKul&is-PU#B+%Wra5{n4Ep;qj@6 zob9Zows<9_NmOU=<)t?ZGqe3f*PpEV+Ns7d@?UORfQT9Yfob#$WNrchsdQLJ6Dt`0L&(`xgMM@$1#RO&FKJU%JuW})o6 z{eFwYGX#eYGM$6=S9&lrTY0i&;OSQ!4m?3@kRxJ{x z?P8@MC8g|Gr9lV(#Wpq&9Q9t1?WkOmA?8`@gjpa_s5fE`k?>G0W!A#>Z-WRnDM z=^XO`il>fYdF;K0QMWP$T~O$Kymw8S{aU>j@7p3UJpUr}mY=F{Tv*eqLD{Bh&@58>|GUb2RKx_qT<3P;~hGzvk5xUTqbH%U?PD2Yx zKRAg8>-I{3r%cWNpUV2z=zIUJ( z-nlHf{-ZJI-eWGY&}fQhbDl022yU-US5VaUM9U#7Yxc)WI7LpXh4=eqygB}WTn`)# zO0dI8iK48fM690vjEXV;y@sD5Y`L34uT^ho(5R+IyWqQEd#oiJ4Ib~GmdIsFrTFiC zeU9s{6LX#!iYdGTpUzgjg=I254xcDx%&bkf8M<^Na@ia{Umr!~c9tZ2=XbcLJbxFC z*lj;*tBVx<^%xonRoG(_(q%k@98pd<|9FbBmW|Y6Ush9U+Im&n{?c|_Znmu+Uw?McdOSRF z2|AMcS*^xZ$*O2u@1o?8+j{XGsns_Lb5%N})Z#24e*4nTQ<^dhz4V1K-jF>_^QrIEKk z>^|lAa*zJW+W2ydy5GE;)#9AYPU3kJ?CqBLEq>Xz%Srj6I#K<+U-K89kDJF&yf5J>H7 z1RhH9-`_5Ebk3&9k=6BV@a)&!KHNop)#qGyu^{MJn3rtx|@)g zCMvON_$ILYJXdc#a7VZLZ8)1z z%j>Q-Q{`JFxwdA_&bw@_7bl2JA1`@@#3sc{xi9pFV+a){vU3beXEgAP(}VX0 zYMH_#jl7SgrfTir<9kT`=dQs~8c(W0gV11D~Q67 zEG9Xa>ETc}5%;A0JcAA5Jv`=VI(+C)c7(m_VW3}!HxS#=$v%vNMOj#FcHvAXT}b^#+v!%{9T z9J0><6HKLK>|tPJ@&yI^WUl#e;}S##LIoAFk!b+VZMP5A*~p+|oKLB==(VEz7UPKP zz*~>&IwX7^#kjZ)pKQ=++z4egpZsGCiL`p1SH7nh79Qw#d6cz$RlneNVKds0y^~$z zy#7;a+RcXZh=+X;DFJu?n34B(S_eTq(c}Z`70g^2KDY2YEsA(wLVu;&w7j;u35}d{ zVI-PHF%EnjM%CF(K-s#sr3eEVngdx$PMLqM6(B)`A<*gASwuC^M#;tkx6% zk`2X)dTMO^Kx{Vux4S0VTdgO=rb+r&&RFmD-llf+v zPajOOnQ3yavo2nk&Hl-B_=fr*)Hp%Wh0?h&*ljY@`73nM=L5fm>&=JxaIKA;uPp+r zO$B|aa^Av=d)a`inttI>apTtHMXE{TyJEGS*^4g-dQU#zDtj`9WTY2&pbKbb5OWxW zKkO1vp_*)l^M?h$r2lAcWle!Bw)Eu{2M)x7Ckv)sniw;GF=?%mTO!^6#Ro@;sGn>t z(|yOGWN)^`H&XHHU2(d+p!rbQbJEt=eZe}<=&dE*Ji%)u&6y$@5}_>io33uQ7wun7e9eWCjWO?y=18GM!PzQ2D z0sTG%JFLiuHgz`4D=0n8jISpka*Z943#r0RBCI>0Da7uE?~(z1;&-E_>%vd?nq@>1ko3u{FlB+(QQgF(UtPBDYSdD>(plOnFC$u=YO zjTNF7)AZ6GTw)a6B`2H<8NQbpw2e3Xo{vf!#6GH6hg=7cU;95H-VkJ|@4z91830II zr*r?(Ch%T3bP^B?y46N8*CJc6yRe>t_PeU-2Ng$6E_Dyr?DBqpZ)X`4=!naW6*GSD ziC=|M?M6VOa6=CEVOyhlO&*A%?#OZPo~7h)O=8Sq^vEIJ(8fY;!Sma94(n9z%1 z))Rf=cf-GTeNcXvCht$Gyb~EGGDRnljFeSNaV3&V>l+z`W6j{-@;gg%uROv3Cftt2 zJm|6ic|N1FaX;04yiQ%OL~E|r6&^+P3hGJl$7=EEhPtI6kKP7vp{dD3YxTHWNt}Zs z=il9Rg)PHNq19@gC_-7xjfQSk3BqApTvH zA8QhL>FZF|BWihdG$l%NRpwz^mT{VS z)S-$26E!l}h$(E7h>`1A! zM_O}Duo>l&l&<84-KvZa#WlnY`VCpO1RhI_#miePsC~+XJhyy2SB*MBUlek8{n+ z5;X%>GndRIrl<*IquG52!eI(YaeWflEKc*|}I{)@A7@rxexzY5UH*S|VUgO8(u)vP_1CzQktk@jEI z&(2;Ak@d&I116z;>#o}kLqKW2t|RYCX`V3UwBL`xFq$_45P9o~5{4tx_>U|;dNKwk z1_b~o$Hb&1rILwm3lMSL<+B7%!wJ95w4XH-9;9FQkWqrdxlR8ly$F3fE&IdX?8L9EQxs_^>wFfQ0h`QN z!dKo-IRo7M^g1JpsaAPbbm3OSrr>Z&*KPPVq?k7Gepc4s5!_*^k)?T`E0L*6&me}u zY(i2+6U`o2VMPfvH-f7DozvIT$GK{f4C}9IvxKkU1)6{LY&J2BA8d~18r@(2k=Hs_ z9yrt2#mc@;Xu9fz|C3%AiMumhHv=R9M;cLH>)M=h(;<<()JWW%V$yhh#ihq2STCfV z$C#I*kYaY%GX9I{H)XolQ7nTiaQhv)E`c>2M|xuBdth7R1#wk~W76B#1M8S$XUUYo z^pyw8vp6UUlrZUkJ;sP|iq2jZqgQvyGJb&Car8-SAogHHOG);8kvh!VlL_zRm3%MvGp~MF<9Sb@+n7wka z171b@<6=6~{jE89u#ZZiSwNt-xqwi9aoRz6_=76T?MY~bE zHH&>i*54j`g%W&R+!wTDi8Tdq_0s%@N0o)yS7#M|c3)>6D(Nf8^IIL|=XQUr#hW;P zafD3HFZ7s+eTZ{L=2ElwO}Qt#HH`k+y@kFrBNo{SXT1GvihvyXs}j$6xJnPlVdog{LMzl_U=S})VX?cnp7W-hg4g9fS`+b=OH zlX@d%Q4$$$q2tB*g+ESqvKHc2BDE$Doc{&|EhjFtnItyWXcPt|5Qx8@9a%zVmSe9T z7dz@@FH!`5j`&T=P%NJ?fbCL2)HuY<_Z`P6;NeN6(aqOY-o5SccyF$$ovPhmZHRk! zQ;1J6aG$O@9iV~3rPJJVScKDH1tqYa6h}#7d-$y`0lsxd8xUcP&^tfz@emWnD>{G~ zh8{(YFkledr-K#W;vB_@?K8mD#DfD&;Cc+vkqk35td&>{bL8^L0rt^{X1A@X1Nl3N z2@#2qzR$mJuUL_CVn$-ii;4M9yx3V&+4|}A`sr9vusUSWAnC#VnAl^38HEseQY;t0 z+4O%v3e$gq6dWr8Im_Nu=HrugAA5D1lBeKgHMk&~p7oli{gC8EI(F+^*k&my+4cyVo38 z&*{q(N2f<~Fr><^&#UF%$~ts}dI;}bk~nHft+2rJXHooaSJN)ynym3B!y{a!T#tUH zU`X9&6X%eK$+HSH#51b_8b0s8mEoZb3JD21q&QjLd$SjRD4y*~^-U^b z3D{nKkhr|6m3;gubCyP_W?8V@#m0C|_`j0rwLE)^fge zKaIwsG5;iQUyX+wE2pNhA!Z$uck(Xh$EV*x%Uwooh3htX422r8-yRb^+b>_m4Ssa@ zA<^@{)1Nazf9}-g*i?Wu8J%WmU-_YCh_~5inJNVJ(7kJGk6xRAl>^h87Q&WtNA1V00b~e7c zJdUY$7?Aej5SNY|#}XQCel%gJbA9l_NIFsr*B;2Tjw!xg?(#Yi4(aH-og9m#enq@< z8PP1!j*}jEic8NgeDYUVqzKp5%WWqSJGHpp;_T^cHEwXstCQqjA0yxMJQ40M57&KV zk*o&!wFBIKBF`;tZigP%N9=^ZS4vRYNCPNsL#Ce>T_y$ANLIv`+J-3Zg_*C`-;73MB}f<_p^t-`y&T5 zV*%vxtIxC4&mX)prSiR`T^}xq94*y5n8{*2b6S+SK|7zDaW=p1him(C{3mgX=}v3{ z#JCUdfY%Zto-#p$LENARjBW?B}cixQtCZL_dL>z^CD&UD*Csn0_wCY{6vGX-ES)sDzoErH#=HEKSLdqYS8qoJQqH_fYI7aZg`xbIAguh}*a z&*F1U-XBa_AnLT*9em)IjxTu#CIo!;Yegbs?ZX9r>xM4ZB1zn|$M9Yd$l1Xcu4J=J zH*E+%rt#H5#srUGGfrns@}28eR$5LMXPrZ4t7J7>sqCok!>KIM-2K1OXNz#o75QUQ z_`K@xX`~bhe5ty|kzRsilO`Xu@D;V|cgAl(-Yx!V_VbXzZXn?6YBatw@07Sd&3&om zKnM$`Z`V}ND*9AEFS*+DM^+r0ztc*;z-!lz%WRa0WNmPLDC*UEYQ<==mVMBz$!rBL zjC%RsiCc}C#i(gns!ndl?19Ve!iXFFm?w*IbWip#xp)(q1Vm6 z57*L-gg}(#Uim=(ixGTgH@q?lf@T{r!0W6pGF32r0bWnfVt-tq0Nf)#SP@OP;!poe z5L}hhtzrWd-vUtl8uq>W3(~jbWMx@i3qF9H(G&#-2ZJNnlvnOm4ULs+D>NN%Kr*~s z5y|;4c)JO%=&vb$1UJpixb}||=q;cA*t(aX1aQk28uP#7>*aNxh}R=-H0^Ly%YoO&TX1aim1%&c%!+rVU| zOMWiYMU%MH?b4z!BgnP;k%+R;lIh`Lj)?Wg+9RaNPj#x2TV7=NODm_?0oWBpetFXQO zS{9Mm^z5U=c^X8vMTJ>!JS0Rit?<^m@lul#@xzB^#4~@sNh_>TW!TnULRyEId^tu6 zzQ-P<-V3QJFNz8bra``3naFzmF7gLNw1?T0irjQvLY5F(v@TiGo|?y{S0~TTXB75@ zb{YE}J6&+(HI(e`9(MKIz7*>+os$0Rz!CFASacFJht* z(Q|@*UeKRS*6R>CB{|fAJ;4XALh>!{%6ghO+;ExMbaa$~GyH=%FD$|7KI1$R2_ZU> zf?782cZ8pNCTrZSc=uXM+=0*q*{lKNY1XX_owVC*s&I~y;^k0eJ!>iwmli*eJd-Rt zJA406&61L+1kWLx&m*7wA?`QEkHgavpF!m9?JM*39`QZ6xA=HNm3D76(kbKcjLUBv zQ#W^L$TqD`cfdJ$yp8wW=x2z=o05n%(oVw=BE$bVEB+DKg{yES%ZO|Td$sg1Q;i7%{6KlTfHWs5BXF4Gd?quqoysLA>~PuqIL4$k%GL1 zAHHfi?zjrVf&Tkl-;DY&Noi;jXy(eS`t#MQHRMS2Xj;-0g;@lkw;yNA*%Q&k4r?gD zbN{BgKpH*?zTkqWjr=K=Q!2BR!W#{5z*71oL|f=+o4@3uwrASY^QBsg6_2Tvr#Co) zRl7Wy4f6?SzLi7?lcKzAHFVO3bdRP*_-Gi;<^A1W0SayR3@TOKBMhXjt4qxvl_yC` zwVGDbEVC{}^2Gi(Gi&zUZqlk;?b9f;ma=84J1?{z>lC2R+@5Pxk*esb_PBa{M;lf}TarK_rjT_c?6MEgBE;;Ec-tog;} z!95lS49Etprfqg#hYTS_l>^Q7>lTSc3Q4`YUo2I!P;2DzOH|{Qxopfvh8#^g}a85{f?j3iT(_E`hjQ8m(PHG{-Y=Y{jM;7iK7Z{GL z6S9qsbhC<|j~);*tHB!p)a*)Bey4b5&>!t$4HhrLrSrT)&%(OxNhS691oCo^9h+i` z>4LA-gH9*WbH{AK4+-`N4r}du}8Qr3H_`|Yj?Kv4>1uKr_Ifvw zmoc`uGZHaV?<{)S2r#pdPvYsxi+_1E_97B{O>TWPf3fL>xP%wq*v(Xx9RijMqFuzs z(#wK~2tK5?;k@3*ej;dHDCc}SJ6I-U9+1yoW`z18NuY6)Ey$?>kKurw&w`j*+O#{H z;sl9LxY0_-pLp3&Z{(#1nl+90?_kv(XUr(blsymjuh&)2A205#hRtv&yn2oLjbG97 z$+1r>Nm>*-hrvc@sOAlHskzA3DAX_fZF+QTQKGx6&*nf6Wyus2mQfiL%Xdw+-;34J~5b1}3#iA!XhHL^Ps zkqQa(9P!{@)eWQ&4e$F|;J07P@RfmqvA1?8U$6QJ@o;Dqg~>DWw)&wWje05b=8rJm zX&C!QwGw4x6LAZPCW_AI8s5A%!=KAT_TI1%c(_jmnpeM{@a=6)g;i4wbCP$ytehSR zf+`VYvqGAx?@iW8fTsCo`hs#g%-p zKBi$o6^2Z%IGe&j>aoJuhy%Fbivm5qS#q^yn!6SH)x(+XIL8#VmW;usSG5KevOk|8 zsAid<6ul2q_WGKB*B2}q(r^U| zxbF^UF%%lNy5iRZs>WGVQ)yhV8 zO5w)|&q^5rN&T6-uL9)ovpc{kA}H-NDiduj$E!Ntj#6laW=g> z*jfp!G8>HU22IkOWAD-UIDbwq&svEe{7#6f0JQCd=v zW`|Ec&zk<*oSa6-tm*|`FJU~@@REEIOKy=9j}2A*JXwQ5UyIG`^Q2MkB3DkL4S8%F zxkgoce7I}|zOMz%+5IB7Z!uJ4Kxe3iEG)wiP0BKJ+dRFjzd;ue{9uSzrV&nO^ywF} z4ub*+if}BvAdoSC{q!9MqVp^o4Z0~rti}0fp)Ili|C<#kN%EsJ7*l2eBHV{h!Ge&` zRI+Cn#LQx#4uL^4+e(LVm(a^?yQWV<)@o7^#%|qC>!XB})e5l9*Fr4{-?gJ`s;x&d zB3s0xbcEf)ZSZp;j=aMt(3zafc1xKxAJ0n0parrP53ZJiG0wFt>n^h4f=si zOE8vQNKJ6>ZfyceXyCTvlVza~PO%-aC(Yd!i80BkHadFSCUKCg=mcC^Kab`39Q#6diU9ap$i+0hH(d{eZY33*=DES=wPvbOF@V z;K{#g<5{D;=>bUoB95K^JwRE%cmcMullXd@-hKi21-Avx2TZbtOa`k%n23jg%@sAjaFcqgQ9e0t%j;l1(8sWW7LT&mazm zgJK_>fu~ENF?0o*um1#2GtQyMT9Q;2m#CmEADho3p6;buauiE{c(HIT9;*>n25KP+ z4+H-MY|fYN^^<&{oqSsSnD2Nm%&b7G86aU<>8B;@E?`gqV)_V{#vfSRK5>091ih&5 zHw2FGxi_cZ8{h_%fg6x9-u|tNDR*zE;@N4IR{U#!iIC#@f%v~|9+ZRqWUJRxu>Ege zVGitY+V^T7~eFGF088CobM8uhH3uoI6HG{O}lVjF?{LsH&t_R{?t{} z&fdv$hhj(oJeqV<-AOt$)5-rYqQ*t;e$Nn9S@jl?A*ANF!F@0Lw2zE=U*+YVBsQdI|2fb%dgv87aaGeSqjBo;tO{w zWW8M4y*3*wmVFvw^^}g_=~z->@tah44SA_n{W9(EKSuNKWk^3DIrco-W!TiNNK(1+ zttlow^1d&^t7Rh82_0Z9cXPinJ{$3Cbxm5FRUh_JeIGvB*G;^j!Lz!+{c2ta7*ysx z^hWqag$p+SLwZnzq4=l0*)X z`S8IL+5wZa-eK&1vtd1WY4MnwgI!olIZwI6x5aJIO!sStb)L#3NhujQxw5z`Q8mQ9 z{riWU;0fXX6Pr!|O(Xk>20SwC@Y5ktU^WvGi|Gf70?%+8j>Y1 z^W`3!FqghbYG?8XL{buy%*);#4YlgA!q5`7uwu|L&@fJx<;{{dZdYB~4ACr+-S$Kw z-_&#?t`UwKwa9c)Ix8{``ISF?!?ot>3Sko4n{K3Q0G_hEZ#fU8c;%=M3MJ1#^F#tK z<&5mXYuytzW}Qc{=``W~v$L}ic{04emUu^^ZPN?uxKfrkT=av1c;r-;Lv1(r3a z)I^a65Q{e0e%=h-2Xdc>&}F3>>?LQALQ*h+6%I&>SS)??l}l&KE$}qSz}go7-^O(I z(s{K(&kSntfAcO#v32uSDH0M zLo!{~r*v19(^#Dfh7z4DhZNB0z*)8wpY72*D;MpGRa|S0xTo6MU5!;LQDe~YJJnWm z7E}Jk6QrApW)i~&V^1|v$*2$MfKIGnd8(=bEu0+BhT$lL>E$lYcGmMaaDamQ^juN# z5l@-*T#=mXB;)0wl?RA7wbwkd$J^6P)NKN9b}v35GnEoSZp(N^yG=+;6MxtsfUfW| zDFFKtZjeD2*|34DXO->rJ4R>OTK}Rfn->!#i0DdVPgCNi+3sMgTAP}O!rQdJa9rXC zq_h|q7*t66d7zkJ57VfVP@_cF7~b~m%^iwLI$hdhEH0aHil!1|bYBueDt-tK3DI?& zOH8K_Sqsh|36Y<><6^#LYRXV2QK~NtBwDu9915!(adbE_$!yv=X1L89#J~Gssg#mU zz7iL5HZwZm#ZMXVd8X_Zg&>0&Z3gL}Unfo?)&699_u4sI1ifo7{>Kiq7or#tzU z0S;>@fiB)Z4cKO*T#_jOFsJAOc?ID8a8I9rE$mzOHk||5*AiGE5S?&4-hUIlHaeLM zlpFrO25ZTl3)^7Dt1$M@Q+g@AlQ`F(`caLzGf^bN#A1+tXq&JY)74*Y+q`1-I$pme zmhnqoP@b=%h}A@62ID{moCMOny#NUIg3P4PpKmFYO7xM(|0Z4}UiqAPr6yMbebXrD zJgRCnR-UNe>}n9NOrP2iwg=}iCyb}8Gf5TIW@*X6^(<5i5!2=>L~c!0$&6P(IiIYj zcz%4V&>M8A^=7Em^QbsoPLvKUg93GDUgadJ4E8d@aL;wJ5v3nOwKtU%Le3id(F6<}2ntlFX6b+%3J3(ZPD;P{>H^rD5$nH*$tDlD#MAPA zc=gIw1{E=uBNaIx_akF)s41Pn3i2~si}b7h10Qy?dQZq`BJ-QC)_QN2njCu}B=a=+ z+4Cr`1-s!wUAh>LPm4#6tLBOO9Mj%?39P1=Mu1_9E?Fs)at>@VrkbcQs`p!}$dPhx zTlh|SvEWN}f+RP**cSP%b#w%#Da7XnQiGwN)oMBhKjzx)1$ zq;I{qFQ6~z*~o*{I=ZCw+8UF7MOtK}9`BYaB$@A)`w+Xm9NaL_Ls>C^9*P8ussSt( zhk82?4-dp+H-@zcN{;eyr&AK0?;a@xi*r0mY0c%~Zj+cVX*p>=6%L*a4u8t%Z1-kF z-^-JK^Scz1rlDi+=xnr7&+pF>h^)0Zib!DAeGSnlrkU6;*Im@l*D8J;Az=%fFf>>R z_}NkFit_H-j~)oRJ(mS+%cC6s-~R{hT4(k;rt#Utm66xUUsk!x31mDY+HkB`h8FAf zsxdG;<9cn9+ARyzCc|~6dS6~3dmS!}(Rp-Z+rQb3Z1D%c!wcwNh`xy@j%N$l(cchg zO!XQoS8sCu5Ud>?3+7A66O>t&skKHdO|1E!FriV|=4*65{BOh@(IgG7+o_s0(=u0X znd7w)vz40<*`XSkn3(jHI-jua+?j5t%({is!ig^8=s)^5hbh;L&mYP8@&xn?W#gWe z8^w?{y!z*N$^Om13#!P>4*|vyexVLza9>0KC?jT;1zD~5v+EiaG(VH`uiitV&dSJ@rd`be9#&l(tlAR0LhyRLwdqF}(L?adXsCC=h=)Qidr)D*WWj_k$@oZxNG;AP<8RTcjp2rRW z;onrNew*{uYRE;yNa*IWVJ~TV*j|4qqIJY7#PJ^62nSN`ZIu`cshWHQ87l`y07i(T zt>JPQnsB)(XGN1R(f=Y6=D$129hcp6)MmWv3#H@Tc}{!__ShEK1ikPx{quVp>_ETN zW_x*DgGN9TtsLd(GHos5i-ZZwuBZ zZlJ(ir03|&BtG5bq}p!9b3Nx^L!|P=wxZSdstKLX$=s(*bSW8E0P-}m(@7kP2RC-j zlLizYgq||hv}e+xlL*Z;1e$)qCBScu)ZTwc+`tV&mfPy$eHk=!ApbvS4lXk|V%>PO z9i1wA61Ui{lIbR1w&oV*Cp^Sw<6sC3M7oF5uxPblu@UGc@IlK@c-@k0{P3+RATH@?L@z$lU{1j zrkt;m!jVf&$pAEsr?wR#Y#$El-cNIk9JT<3PcLh`hi=53Suc}$Te9ZJ+szsey$@pE z18z%}^w9;H_rivK{)p9vF0w5o&Ys)|qS2Rl8~@2Dt6%K7(loyx2B^o;|6&FUq8FFn z0>c0}d~sF;bGcvcmoH$ac6^O!2LbQ!*%kn}S;p^sa-TiGRl4Oy=ZBPaGWu=r;&hP= z=5;c)6-SHIaZhXo*{SD6j~}oblhUEiiv!1%umv3iqQx;6(AB#Id{@H+z~hsnacKKP z0I2pGCR$<8de7BEUEO-ejFy}3i{o9jFL}#(eqP{|!fnpHegwj#D`LtVY^&b5+cL{X zH(my=c5~*MWu{b=?737=7~&v49wkyo=F#6`C~lP6XEQ$SCmW&5KS})-aDeXq|A>OCRLB})Q=j$X z$}q58SEegR!0(a%sphl<13l}o9)XG6@n6nYtqL_%J<6>IJc%`1%O$mnz)-t}sH>Hc zBX=%bZ*&gnlXd7}3(z?LF-Eu1z;<@i5S*TEY1XQh_Bvfc3S#{_Eb6fhX(?)BJU(`q z)-?r?NK?&D6?u)6lU`z6+?>7d5?A-T8vXrm$%%L=1InehH<-RLXRJuJgjKIDN~6fI zD}GcS!B%9|*@fj&RFtZN^JeF=5#Len8y+6Siduz2B{n^s;!7jZ8b~C2G?jQn6W!$( zU&e8;vl{?*G$)IbHnCQ#4mw~BB_)RhoKstWI(7z?7cj?sE`+}z&;U##$6C~n%aLMp z;Jnspp=V;)Y(-8B-`1qK7gI=&uBh_X1sm3XxK@kw>X99aJj!-SZeN zm(~tPY@kZ;8-C4hmD(tr2!Wn8GYhl6vDp&hV$yoq%d}TcZF}o{$O<1eqwJQCJ`lNG z-8Fb_Mb~5VzQn}BKYgx*#SZWP+;|aQL?HSkx<+JLXT~JL`8%K_Pdc7F<{ZYB2URrcnp3F@qF_mGj+E)3pK6~J7(gn->(92~RN(H_?PBO$_Ot*^pVko-%lN%6yIWDzHtm_Glwp^*1C zg4j>^8d0pZ&?(U4QJ|86FvmxrS;IrBn3>(0WZ>jcd0@KiaG4t)e39lxd|u&$Lag~g z61pjqLC*Y(|L0p^NKhPPEGN(9Vtg3(mb00O{vty((PW7uqkRM|u0&z-_iUJJ{j#*!Qu;0#hJ<(L^_WztpJuT<3mn+dxp_t)OgFZcBihu6z6)JA?AI5o+?zD_bll@-1x7_CKtsqEsPg8V1k?5PufZ1nuT3e&8dfxr-DaS@&^ zIgCvP6E}aJ@qjKkA!kK~26;%=7`Fq527E+|!;mHHJ_SM@x8UVKLvh}sf!dq!|rfu9ZuZtpD($@r8hgHt+_9)r)7)B ziWy}Hsp3Q+csZ+&Se#_tfS_jh0F6F)U=s<(rlGoOl-)YdVF3{#%}SRgIz>7A1W8V* zKa#wGOlJkPL&SQYSw)|3Qw{MwSx{XqUPU3CSa!UGUOZ1eCEabQn*jbB4NsI(`49{T zh#tg|UgFJ*s~C-lw3icrYwf*JmnOMsxN1OWr3**@pPc^L;%oy`W|Cd&`NhY{#5p0Hw}N%)m#4oOCGiR z@qJi`!!my}Eu#pbrQISKn>UiktlO6#4|mc1);r2a!2R;ePSdXgTJyeja)de0z)mQ@ zmT}+TZvYrk!}hyeHZBM8j*LRB+pN{3Oa9%)w*hCN(H=woq-P$f^nnBiYtUWWqnQg?{ATf@W}<)q<{Jadf-NdT~ zP*`xXujttIM;O`2fhta@2kF?ub}k4r;vU{OUri+bq{Vux*}BgH#Yu67dZ|0ENI`-l z8ks*<)|?2wrA2{eR(||PU@`&Nh&9yHNCt71Yrzd~YKkuTreLHefA9Ks)dY=qnYArk-Cs}&==41;iArI{X zJMxxyVsA+9(-qSzpE~CYBhzPQdJazS68>fU2QB@&@?nYjP9>b-8VB=hK z)0Sd%JWxfk=5dLW)HF3x)b16>KT)|Aoe})MDt0>?$qe1aZ}2mPG}AW>hLUvC*|qR>|nmwNsg{E?Qn$GLZqeB zG{_!k&aL{_HU*pF(C_@EBCT}P7%YLfkk`ixzF=266!c@9>J(0gr#sKmbI3XxL%haH z7Zgc$1m&mp6AuZx({Ragza967k~(Qz3v#+I)mx?6snr;ovS^FWb~l$UPOfSmtej>W zxL$=0%qUD?BV*T zic=IN5&Xt3WhGtSs`EhBss5-dM=2*G3&H+*R9XWt>bp#6GvYgV*k)IC*qg93#8*W8K7wt zFBhuys*#VzS@~XsRWie#Yhv7NcbkE$DSv*`e5&53b!)n1c!v|ISg27p_M@{aIQL@f zF@Lw~4$~V?pPrAhQF6`pTI0oLxUT2rjS=u|q@0aq;?w@L7E8`UcsmH=^{S0f1-Grg zFQ%Ft(%3TEC9#{*s;#d{X&aU_AAn4tc5YJoV_vhD075u~Bv}sn0Hv*KW>E-bpGifsrIcCY1c! zKRSW&fse**QEr>C)7^_Sz)24sWdo{s$?ya(!U=RECB!XB_Y^>EGhVqFg1#|qFGgDP zow8T0=C9{ERD{{qP*9g)AvoK*?dM92+dw8TTWP|k%xV_zm?U9Rl80T7gV zpY0_H&L0d{+bY0!IMSOxwWkG7JGFV(aC?o5dtNN>X308S-Nz^%FN7F)xoP6QQkXwG zXjU`GtE7c&jQz;EFI&_xtIe*1)H6^HF#r{s!X(pL>CR%fW&iaK^!$nFak%B``|k zifXFO$*ZKLi{J06eIik&91LIRQ#*lZl+svg`p>uc)+qW~R$qOW_)4vI2)gWyNy}n! zvOL%2;H!4}?X(5)%DvW!7x~JW#nr#;pYWbz0FhAQ)@;)V{YdU4Nc*-P0bq2L^svZV65E*=baS`^QlF^7K!+PA3(pl#$7j` zSl8gx@eZ&0z9h&X1J$c{@9mB~-nKYz9DKr4cVTH}JN^k!F&jZ-m?9kB@{b6K{aZC&I*yhV>+W$q{TgSu|zwd%bk)kcqQrszC zDDLi1++B+6Fu1#Gffgwgx51s_6pGt0xEFVK*u(ek=Kk&`yEpk|H<@Jk12PlNIq&Cv zpZAftqZJAiHwTVWtR&r(^h=rsGcxPR!m`)kehrL;qDZ%*JoB%5HkARG3?4+`Q8%2!qbxb=)cHW-xiEOr5M>+{u6S zqu#zCO*qhOu`7;rq^H}s6e`{4!{BDavi3-L7fhzdtWTN%7dmuJ`$_0#9@O&UzSxBGeH(+Ho}A$xaT`42Y=wA`NSD;&qc8G-Ub<^5qa zoOFgiB(E?Pwu0gMS>>pd_Fkl}sa(UI!a}YrXIyX0nmR?}r#RsfwsY`9ptm7l|3Qm< zI1y3+Ppd3a7jWXFF||cboQvZWTO%H%jE=wd)rMyMEd<+czNRE3b?iBQ-66`&7<2Ab zN?-zZ>&2ca0wv@9!!ct7aKxtr#J>OYh{sCDyPmC$N5fercf=&(9Ddbc`X_o|CR?$V z5B9?Inq+;xyXQ8~5vshy+ASM!T)2Gj7=T(T0Vyl$JA^iBL(?m_fZp1?@7pe5B=DOa z*N;z>undFi@Z9>!$9ACv66tzrwzqIA<5F=c52n3jO!oP_{d*{$L2$k16!lzmxhMQS@kU;X~# z=ub$KV}4-n6S%B!K~%Zt^W7R98BTt8mV$tFH{s7_0GXr(>`+`YX#bi#9r86Kr-SRe zHH1+n-b`1rKJL+!>{IxEi+utc#{cqadLh7+ zc|32fay#g2$ub*W9WRof7q*un=wzZ9QEvQvj=lKs)Kt*7l>RkvaN^uD*-k?=xOUbvNLE08-&lLarCRaef%W1&QMuMqiEspYyb3O zH$cbnMD;UiR>_z77v^-?_SnzVN}-2505e$W+ZEcO@Z8&68HzMR0kiCz7YzCr;l$~- z*%*tk5g~%hJP>j1fUie;=#5o9s4L^R%#}ZHLRuUPd z^KF0LKOckeynN*N%x#uPVG7v?2|=ZjH}f0Q<%(XmNx&3 zRrBpv+n+SgqU;htl|J*rBDJJk~3dA5?`Oy#!G%#gswST&tl=#LT#mM{s=V=zeXGe=8` zM}~;j2BnO^Q`-t70G}!Ql&Y!NT38k>M4wMANtvn2H+DEe#tVaAxQG& z10Pe%Xa{!&R6goGuhu``7`EIBUdEp~2+sW0zDM6S!|>_-Ozkf~B;QdKh1W)ZYC`r} z`0BCbd9)*rq{E)H=}LICtNAt~Hs1M!@V@<00Q-C1Dd`Jr~>x89Q9J@loW!cOSpn56r zv;*zVRTkA9&Fb#IDx0lyGMc%(4c#?X;=9kdF1n6;UVA=k^bxuxa~8;!e5xhO7H2nn z+CFl1c(Og9ejFMd$nNJxIUgH%j_A4FSYPoNfsmb#4P{F|ZJ$+U`#)uk4hhfnb%Y`w zk?iJ&t)+tN(EYJrn8YD3Oyd6m5Vc$$(T+Vle7IfDV}%6OwbL4hrC?93%tYyNT3>B4 zeRv-BfS@UU)ABzr#UPkp!I>qOpevIJE8QKvdkE?b#auCZliTs|kMXw0@!7Z%qSg^d zGoLbJIrsh4EZo3jt+%Ww3Uj!)!?2}WQ=aFh0hleqOwWn3}+u!__ zf0o|qTLA(hz_?frAiEY)F1*g}ZGLC3`Mw@#^TGO}CXK28vR9?MoN+%Lje2fR%HMC{RRq^^$R_4vyD8Tb8%pzW09 z&o%}q0-r=^+79o$SLpeXz}0QY7lXoCWd8a8L4&&g_h`_6tu_e(Wx$^`M_n6X#c>NJ z$~Cy}>*{cA<0=Zu!}6PO*stcE6PCsM_1ft2Lmm#peqxu{U#DuYUp{JW+PMS`e0?)X z*m#idSelx0$l!iUIaF74;IGG1XJ@1fXjne|?k3S@vew#`e%=jAElM zsm@*~Y(Z$5VRUoTFtJK55yzmd0%|?mowTN^et@`LhhCCuHPha&{Nd9Xz3=&DDK&|( z`MSR9q6w~MPy%0(svCH{mL0-s%Qrc9 zOa0hnH)?s+Vh8bttmMZIM38t3=V-L^bGA7a*y(bP9hH^RB8!y(#Na2ixkfh3RHr~T$N&N@f)_V`NAU(lsY1hdf2G65#eT2tjG3r6gql*MtLa)B&OI((92DWuKWU zR9{bqe!_;L=Qd#DdnVA42lbLf&)jB08TOgVKF7i8D4Qon`0TeSJ+6*wj!4rHsSdZlm<6^74(h~n}sXdJ~iiXGp-A}BUjxuhFTYk$J_ zVO}*H{V8N?MD`uj(vAfRxKWetm*g{&HIUC24irz)lsQ^zo@pm#zc7@yMoZI$xPONL9y;*P8Z8!ZM>4KthH28k| z4s+KsNozfl`mv2-0cVoj)kHjf>(BXn3z$~zrU69HSLM&Dl%g4vDAw2_kZxj=VvVb) zS7x$(tk&#x_s#mQRX_FHp0J_2Uo+vB_cei^$P%e!~iMcOGvGSU{biA*X`$lT|=csn+;PZaE7hE4QD zW|-Z6$uBP|&aRi{N5x!SZf7Ma|Lt5d(-xYWENlE(*mvqxGbKZ3-FV37zaAEYVI|Z_ zw6^aQYojJXmP&GuebtldWd?~MZd>X>@#~A)o@ehn-s{`mW{zph@>H@b=J#?qI!4;4 zFtk#@W4-qAZmg)jXRgFq+$nleH03NA(JP&YtP^7-czrjs(-LjbYoTouP1kGHJ{JA+ z`IBSGWnEi%tX85pP4<-RN(3l8hI!965gN`$-WRHgnpRLNl=$Z}-4LfQE|*yHu`=(1 zHlw+1*>`uj0^VWwf#EOTq<_I|gSo%5h1<@Y)e&;_ zG8iTjM3fq+LupI@HiD*H<{BKTssE5^cIAhOXcF^y1-1E24SMPxwn|#$sisQI)QCG~ zL@O?jJpnAc#UNmpgKT3n7Tw{qwuN-j6<8$gr?J1XawEc3v1Da!eaPQ9Q#vt9Ya|jT zR`d2Bk~)lHj;_hIDoW{+rcgHK=gRQj137)UQN8FsA`sPU(4a|?_pVakiWhfZsq_xr)M_w@x=ie< z(W|z(fdL1&U|{3mgb&Y1n2f!0r>sPimDC=5pRSx*xIPP5$nz~%`dvHH#=%n`5!HMS z`J4}Jd+uAIX_5P;K_S)~+?!h7P1s}y^%5Q?8J0&*sj8!LvMU5t8dRo6TFWwYuj>D` zPk5!$9ASx=&qXZ&KAO|nTsuQhIqGSo-P3N?P z_>~nh9Der1I&Y|l-uopWpIc!B1i587w zIoH*oTQNS~x9;8llJwg;jPackeutk^st5EwbeUXVEzu6@|8`QT0aws)GBfCJ3OQNL z*F>TT#VR;7b54vlA4jwjMFI>ox)%l-K&((&Up%iAU=6<}<0^5TYEiuMHPT0_0jT}* zFEMM8evWo4bsKul4y%ZWG={di8+DYIfVbbB{tl(MG`31JBt&!3vW$lq5D78WMjd58 z_J2_{&bon7L)<#dSIi)sDjZVTl^$-t(C~L%JZM)vkrD~EeNP&(FL`G~`hidxn0CNEtfVI+?`R-Ws({f^?V=m|mHwWfeQhvN9trlV2f zz_G9Sn4-^09u|LtZ#m6hgTbc!5*PGC%h!g{63Tz=vL7CC=SqP@@Yrn%bI}JTo|4I{ zf9|vyP!yd;hv1ge-E8Alkz+>dF*`I-J&O=Q9 z)xI>{&T-HkMz8?Z2Z8}_53ZTXZC7>IZ%moBe_tJDtP|sGdo2U@y(b&M7IxHsCgVkF z1BmGUpQSc{bm_mm^k3{6G=4w3IQ>qHH0P8tmH+C?w5_UCx~i-|+E5DX7f|hWV#zN9 z?9VJ#t}f4B_cn)^dBqYyP^2R(NT+KA^jMG=2D>N*7UH<7+e$T2D<<*m@-nO6A1k3Qe^2a3%>Ee@4qm#-~MK+F*> zf}f4qv^`WcO!y8|V%V4%<$zz`$0?t@>h^aA_c=dkSt!M(M%|p)!qnt2Y()JdT4K5U zhZ>(FJe{^3TUoWQ#mRq&W?pbBYC)NZdLoWmbvo$6PjwTAwYtc3mPWbIyf@Y>W)U$z zPL3I#71K1(+oAtjUqzOy4*e4zMtOK}2Grh*r7t_{9zM}OoOU<5LuxAL4|C@XB$;)k znlc13E7mgwZ8Ufg-I_twgweuGjkgTigrzsgyZb?fg`zek?Z1J7C`^f%0|KniTNZQ87DeUyzg2@Y=1UDa8ZOk|GIB6MlQzHl z^Dg{*OI^ijKds(!xl0?p&B8T@cK(q_7nWadhyRbf&xEuI2H>yxoP7lfR~ff|n39+0 z_kBe!#16?rnE%>Sk&;sUN@qZ!$J#iW#^Z+`fDd3@=5gzPqHWPE(qF8S?8^bO;jVU+ z4R!Nip73vV*^mChDS*>rELA>7{@XwboK;|Qby$Cm^NSo!j8EKvT!IIcC;^kPI5XTf zQ-P2EH2pWX*TY9MxQREW1JcK~lgU5TAYZ|XYG@6h>(YNHC6(<_L4X_x<~^A3A|maB z>rcc9mFuo8UY?edj);3>h%CsXEV(qK%iN?`sPxoLojmA8n)HyMhoudk@^R*zoIpy`9k@uG`6a%EGc%nb=LGi?o7k0-=AA($;uv76`H3@_2k7|6%)UQ z-mb5_(XPV!PQ@dl*~=#;B5Gy+J>K?0^zC|~RNx}*J$$ax9i9;JwYmyh9 zz8WUM1I=FdKKw4^PU?N7;{A1WqQyZVoV+|&uEoBnfnm;K02ZsaSsR&M7NOslMCOgP zV=^|#{d|#HVDAQa9nKdkyfZ?D=>>k5?IN-?xL%ccuoB*tzfXPGY z-4xyw$=x|xSS?;#NM7d*uqIaOMm^zh9{bRD}N1%r8OC0!e>o+fJ*H;D@4-ObpOmXQCozoJynWB51vA~VfuZ%lOxsxN=AA}l_< zAKR}_gyAvukli;I^i%x8JZEfLVi-+o_=9n!_0k0FcdLeH_$QVN&Zh zS*k{64QpssFHsqbvoLBmm-U$vzAGz$2Ks{@AI7B(lP+~{TTJHcAeKWgv>6!tL1Olf zfQ_x-!L^a6Rr2*IAg2{VxTh=H2K3-I;`T;aUiHk?7_1Yl!t(6FonS5+jW|*v8>9V= zpFXoV?&LMTz+$IHCK>#q4#p(pta?=~fd6OIre$t%_gua6FV|bl6yF=thl`#uCQl4{ zk>X{E!!1DQs1PF(Y73-r{9Ae6Ug6}m&R{aCS_Is8o?AZm zOT6iB{{??}HC_50MRg~^9QpN&aCX$JVzf141hE^5LCsPj%Uaed;om22AME!fq6Gh! z7l5M*@4uiZHxjUbjCFz*piZ_y_|sI>zYFG*0cp3Pm_cZ& zdpNjB`DufM#qa+hdwwXfD`5!!C3I4(S#zazi)e~Ykedt6rR@=|3Mhx^tEEuZC*jGu z$lL_SaKEI%6tE*p^t^B;i8}myaAp(GkUn5e7ol8{R^4}ge}hJW*?zabB7c;kZx+NS z34KR7fElT9?&|yE+M)`CmmsV>{6H^Hs*i@91fdfgEH^Aj{OLi7|NB`u%h+_Kn-|?4 zb6tbFtE~Y*yH#`Ic6b3*@wY*hl*8W*S@XrkX$&t?VA*dx*yo`>9?IL%mmx91;9j*8x^vD0A_yh?D|t|iMpO1D<(hKJxe1i zi>1Ph!%wky&e8D4imQ$$I>Kd37r5=U0^j*J{212-SZo8+mhUI$uMQT?E(hx`Eqg_L z{nEy%WvF|yc(Y6!^}a~1p#i3_if&1TT4KYY5@C2e`8_5Ina`|%Dbd}OaQ0VWbi;|> zW&;L}Q6e1Y*Z5Z6m&XOd{(JI&BBIiBxTlh?T{x|4qoRD? zc(d+}eUh(TtX}vzoj8$5OT;zKD{e0I`#EAs{8D#X{i)0}3G^FQPCDy7z6HPbrp96K z2Z-+pqt(scmrJ8uy(`4{Zubf1(W$4_EdwWXT4+k^vDtWQb_a$)vk zuxTLMeTIB&(~6z2w|R%~vObQZdrx}<>rj)PR++JxLGJdXSZ}LRG9HHOEnbl3Y-*#;guEm{nzOXRl8b@4f?*_ipXlSoH(+D;fB&+98rMdh1& zs-*zRT1Ew;odT*;1O3ka-F6xFv(-#5u`NT8lMTY50&-c zH?yVcm8P!+ex$d&xcum87%-+}F<5~=_7($N-q#^vmi|vMfMk>~qzdVS-R?tyF1_v$ z(0ZsE0Pdm+ETRmPH%0v!y&45xb&+0gxl7@dX%@9PSpcK1dwkMX3C9?c;V?)JtE4O6Htg>L;nk<- zi2Im2mDQS6lpl^S2BtKpqip&Edr$^GwiN-v1G?jVjmC;z{H(_h~I z+PIfze9h_+I$G@=%W~gV9<+(rH!gW+h=O>)h4lZ>0u-1S$q7!_?g=`bgTz`n&CKkd zyMbK7u~@WJ#b>)PpVGvV14fbVm@MDI;J#mRP1Yfjo$Oz){Gx3%u7@3sC`(gjkKv4G z3M?&ecPsrEq@kh7R!8o5Pl!six*2VeGq_g`M`+k9mz@U4_=uL3y6uCMmCooRGQy<} zIfNt?4#mTPj~h)b(KXz0zUJjI(9>TV>$lO<2CnJ67aFCivZkh{7b{>5JJtf<3nWT& z2cA`CU>?3RA%;@DdzW*J3<)>0Vn#xB9_w{xd7n81Zf{-O?;c}aLF3`k@|zj!YF@3( z3I=t}K=oXa#7Y8!LBG^z7Tl2Z11A|)SM{y&&+jS%7+2An5dP=e8&xFYO!Si9G&aPY zcC84u#|$5ln!;-J?i~;@LTp!j14QivxO~?$-c3iMlQ=j?Ph$NObEwBF^f-~;;zB_mzn#s9-i<`R-N(#?wfdXG%cGOgXh{WKw3i+Y*~10ykXu?W z^@O1WvkiA^AQGfEU(l35$4`fio+^;KCHW04qI$c^6IBcF@YvEMGiS!Y zEzj3EnqgT4n51yLyNhXoUsFe(6%8R{%jS7Svgof2A7+Kv>!g+U=2{j?GOptbzQ5(` zZ^mAJ=$uC$w#gYa@4aq2og~`R=U&PEf}4ypLV{`>_*b+~RGssjk`TYxVbVK!SP@nG z6&=4wy%iGUUf)d03o%L&=^va*_6!f~L$*>{(NAAFAT^F|8vh&O8P(RCCM=W|_#R{e z2~@xhyYKIj>P>lNOY5KM*xK6(EI71Lg?oHuacSZVsTHC5P7G5dBbB21lfS4S>8J|Q z0wtB^if^rWt|kwi;k~q1s{LH13UoI4rgv+u{K700qnY<`;&7S)aPSfctHjPl*g{Xt zvJMG$@t=z&LGM2hBN}V9Dlvm22bJmCnMk%jeBko>4o?m>8wq&5;=3U@way041R}o3 zwu_1iYBy)~y=-Hck*bg^n=*0d2!D}S7^6A(#iSMMnp*EO93W_SgO$G+91>a|P>hd| zBKa8J4l$Nm6hd(KiAvIyo1P*j|3Kov5-Wv-B_8!rK#far{~tB3x1+X6>#EF*R>|=o zI-vG}A89tV31)`ItA>43|LZ9D0VAhDVu^ZAFN0BC0SbnlGIhOnc_I2MQ)t5(&PPVY z!P+SQTzy%D26RL?Z3_JpqIKZc>woj>+8FHH9(EMD*23yM?E9BjLLRZTI(&lx1y7Os zb6nPeBqk9z)IWQ=ferMmhFzpWUfUfi2v>!w?7rUz*^23J57(nJgP)XNYW;FAV57`Y z#Vo@0I8N(CoIrL$rj)k;rND=bGW4Ra4tq>c>0Q&3FJWczqpouL7MA9bl3zsP(p{|N zzqb>%`1$(@9)lhGDlec9E@J0ZKE``RJ05SH&){EFKQm{LDH}d8`e%3A;#4)K?d!p# zY!4pa@$D|O=bF5JNqHWrqcpt=UcSRIm!G zQMNWh(&CpNY5^k5L?<6yqnp7!k$&ngW3qtdN#1PTZ}h8+ITP0ddBUDbv=1Bc?+l_c z2otMBj3Ini-;fn`=ZNEog>ok97C55zgF+;wb_u-a1z2gU{G8&jlQTXx%{0gh?+Tqr z-3M^kKa>7AJBof6IfPQPbQfF0qZv>qe(&b{dh~D{TegR}6nq0|UL`grtFBh-Ya=J? zc&=I9319XNU-^~p_Dy1%{M@R=PQ~fS3<9!xWaY7`7PR82z=4j{Mw_F_9*cXuS*^SZB(CO3}C-v>9xY_#9t7IPk zzKWCd*$M&;ah8Hx0hmNW|S!FH$p(uXsTQ5(*Cse@;)kDFS5EfX2wGo;wy?_5OuC+{wW^D6@Zni7h-VMJ zXsx1G3vhuRQ7o}oNJX}V8&&l3uaRtiI@$j6Bbn$Nu>lU&S>n)jfJ7L6SN$e~&vY0S z#7H@MJkrrokfYGhVARtoegx*%qKG>u?3r)&w%mo4Wn2)BPwB@yWl=fcFDY&P+u`N$ zgS}Z?g~JcrcAD#Pj%%9g_q!npMwkfiZf;UuOARrMiN8d?At)wa1yZfcNwMVhsg8eh zDLq{*2oL1#IZPX7<);>l;|A!}+e|YBCH&P!b3%_(fMYcA5{zj#s|)muc|XIm{_X>7 zG-5?}-WFd)DG~7H_N(?VT3QjY>;aIS<(?D5)6)1ccj_fND|k!15co!HoD( zwu3558h6k_RDr@GR#MS;2sAwf8l7FulMGvz2LDU_0ICUjKF~qESM`)%ym1b#) z(55$~FCC_6L$0Xjmh^qz`O1Xac+okQTo7_vLE?pxbhU&chiHGTyvNd2;!qZ3_CTCh z{VTw4AXfLIld}ZizQyn%{JIQrlFgP5ZgefGQDkYR!BIa2eX}^2B+ezk&l=@wAW^(z z@4`)H?Z>?8m#m#T8z#GCO%m1;OFyTha6(JM-o)`+8j$!mm)o6ZLUChU(9m3oTxq8g@ z8{_MAj(bKVU8TL?jzxLpL-@%jr%pMX%=B#8|J*lvmB{x#c8f1O51SlWNig7jQ#(8a zz8|9fd$9t%=m73od{;Zq4qn97Xr8nZJ@OZqxP@(h>J;pCup4N2+mUyfE z>ExY$gL-J$@$^ILs(x@{Q_cyG=yQZ_oT`L;=z4*DYL?9VcNAC+~&7 zjiPO@vCCkvtiHYsocnm&)oineDv4(*h(wLO=ixl}>T8z@+BGBbDV)Aj%^r{nChD;h zU^Yzv-Y_fg{D`+TaQVtEO_^0RfF)3`Lem*&f6lN*@u7K4r0`Afp3YQ~55;H%rjr!!+J7J+ob=S)zOJQYy;ZpY9oyJ3cbY^D0*QVKM@f z(5-q__TC;ZaE!GCAN`gLu8zicVu}tP$W?y&oAR*%ZOSru%dhz1F?(}uRFTba0;+X^hJt`hHXgg@t~|uS8u{8<<9J_&%fzWFxk(+TM~+{4r+l{S3f(HZ@21Dylm(~=Q^>)NOs z+SSaq_vQ-v`3wFITyenJ_R6EqmX(C{wnG-PTT`FJO67Llj2#bmjzc|37 z^U{`UN6=F>u!`12WJ4By!6i?(Y-kC4$$p$@wI}IT-u$Wj7RHr890#)HNCov-e#T6) z8t3^#yyt|;mk1U!eB3X4w=h?uC?8F42YBQOHt2W#=I>uFsc>0h>Q0Gh-;jY{OOxa&ykm3cm+v8mK1sWLx0*P2r;Q8AR02ls3LOa)Rlh)i2NOwzo>NPV?af~ET7wMu}YvKa|^ym{OzLG zF=Xo<3V9zv z&7%xv(nKCnIH9`7*1jH`YI&#`&5}Ddi2(Hr#Xb;CY8_Adg5u3;A!dg8Ro&d#A1Ld; z`{y%XYk-%oaBCbztcfD3kBkye{DAMovMR;x0X2?pv-l0?$h^={^#uR8weR76xM=Sj z4;O!#v^Nl4ifF%l3s(`Qh}kl%Lek`?EuCxe!`(g$H?cvh3;;EhJyEvN_SU5TgIC~b z0_S&k)VFN2mxovLzyI)x#Gn%vM1Ve2K_{ElEP};!=k}n;y^M0oSh3 zDl%AYfhL1f7yPu13th8|ZvF+|@pcDE1Tkl(RE>3a-mOu}!0|R|Plh)E@%}6LclYpEm2U^3* z$wGlnYXw&W)m~Wm6xr&cDAG--Aws4Z3EbNsRE}InE47NEIiH*3^!J8?YE@%rd8{ix z={>)7|GrO}SiOS~BV%qqU23wYJR{=p2#dEPwi5G}*hlD?mbbPsqjGugF4!rfe<0*> zi0#G_6?~MX( z^RsZZ{OG>atDOb4JDXSZ#`B~0{N}$~YAhH;+=rGLwaZD3VL-IN$mU_Znn571ZV3>UK~=Fw5p1!xn+5 zRWM`ZVL+vjCc_AhvYjbub3K5Gl587t$sAP|k*d9^NRdonF{o4Ef-F&E3!O4&fv^{h z+;@38urkH_fj}G}+u38n^y_XoZ$6n)ny?K913AI@F@IAw)KS@p%0h;xJSM~T!GNaf z_(jK@MY8PsJl+Fm!AlqzX|HD_-b!2lsp-f;{cpuDg!JKi8+_nlWjJ2d7ZrT?`!b&g zcE13V+KFeNgH`>LnLz-bwB2KFLHMN(JjlwW`}V*ID`Nf9x7S5^`u^9M{y!5wYRSu~ ztiG(u{WEXWP9pbcN_!0P-mQ3HN(IEg51H_QqtL+TiJbhakz1>@X^y`7-Z|SBx>jBv zqz?DBsTJN6zMn*sCmIA_i%kqFm24J%e9UL2*Tc9-j_Gth$#jY4c`_|KcfoQv=?%k1pcShI>X z!C$8K2>a(@i-&K*p00KXun(3hHWtnLJFSMK(7G*2N&9U)3lX81j;F2V=%(8M{ zceOWfWMZ$Ja?CO%ieYhIaP$x0P$NN-j$19(Bc{`L-@8KW`K|#QSbn@6G?BM$?v8qu zVV+@rvW}LkB zx7?X)Yu-X7M**qc9cK3>JLgQEytk*3WkjQv(`C{`0%)!cw)aX%)mZZJLV_5X{JEdz z_AJUU!-ja0fbiNIgvoARho1S^tv*<-IgpjHIg3m5PKk@im%-!obfB!AUI8a23YnN*1Uqg+6FXe)rjZU%rj~?B0TP)H( zc5->hd!!%iC-SAiLc`f!a6wQS*cGIs!#=V0G!o3&URU^sq3}pnL$HiMnaksbJbD%> zQ~X-LzvYf_PTzoCJw9)q)*g2t%CGkw!c*J%9?uepL5G^@Z5>=Vf8!yCF?JDmp9u7@ z_nLOzi|yw+@pf1&>DNk>nD+^UGrSjtaJ}%_pJ@TZgluy@JN?FqzO;mIRw@lm$fO#m zNzT_KP%Wt?_DNG+=ats~Ign!uySxBnIaRQyt&E>xbrd<s2at1lr@ISl z#J<#zd?!^%|d5UWJ@|La-y+_*Y+xndRa^sx!xa`;h(9`7MDzFUZ z<*$X7EP%Z|vV4{ns%@cE2#a!2^`$K=gNhiOXO=sCT3!kaUpZKIOPHBu#l1|YMLapo zQ>ZXC-l7Y`$WO+lHk@Fam=Y7VGMp5#mUh z8$Diqk%(kRj#hddqBV6h5erY^ck)F?S>>#K!n=%k%D$U7k^ovbwcR<6<54$Lx|6BI_wloRkZ7o#;U`T0dpKAsqFj5 zzI>H6KR_P(0OT{6iqJZE04$A!FG6?F0AUeX*N86>+$02!$AN7fx%(-8z)2Dm^#Vx! ze|!Je5Tg9--o?0yJr*$!(9sB(!TY*#nu)7}=59_ujAOZ~`GkcC_ih{Kbg zGn9BVi{H#a0m{|S4R%4CZB_pzoWo9u7b$D;8$Y^)%qraT=QGY(o)M+_2gU>=**-ab z$v_Z^HwL>U?>uVn^g7gX9f|K5dF2P$rx-|dg{bjw9t1;{Z~aaIs37QwLz~nk0F%gU zxTTc@8<#@P6WGiwI*VJWDN25|oNcxU`UcZ~`=JJ`@|IQg$N#PlZ~SnfevAmTcFrW)di-r!d_7{87@1)v1*G(P61 zSnsUjX>k-RM%R?D0dt=A`@=t`lH5Kj8mxYm*(i*~%#7C5sy(m++b*^*P>RC0cSD`A zjN?#kawVy#IHh#^Rf-%)5WAg}&4{hTC+(Hsj1tin*or!N7#QHtZ%}eVH|DBiHoTrA z)z#o)8faRepn3V zO-3D)u7UyB&cjrFoGe14?cI2~dW~LLfuQ;g8@-ECQ7bPY+qZcj$;PG-o=6D(y+vz3 z(hMK$qagFrmI~lSmnDrUt04Eu;5+v{K?0RSsFkX8o-3l+(BLrp_p^gJ(4D>{iFfYd zHdHvF#VDKKJb=|!O}u}IKs&<u0u z5gJm8f~Hm`F2vc*CNpY$p0?4l^68s$$K^+K*&k9-3M%`~aI*9=?~OcvR0e}AYzti0 zX3pPXq6r||h3XL*!KsF#vm|%g!hIF-utuAByCRoKXAG@Y4{}6@DgsPeQ=I63sB2Tv=;5n%+a^^nt};C*bSQduDE@3eWwmv!$Z! zVUQPMX3yJ%W66|cx-T}bu4Iu2@sHF#VZkNb(ZHui+pwMx9Bvi&808p5|7AAC&?nO; z67d)wb5+K4YHVF(d)4RCyh4)6Se*0!&vmHrocb568K=k*{aDXBB2c^!wE2I4uT&gP*8GB#DQg2r zI~t>^UmQs$`jaj%&wC%mHc2h=Z!gHY9JtLMxWPX{fZilUldbajf1x0}U~3dF*nGm^ zeykA%5&&vb+NKVxXyq}1`fN%PbWB~$Vk=`ctwKFuXKG4W!?31)vl@q6fw@-SJoQPd z370|=x#SnyOdv1iVsB+?owpLAV>mYl*9deTGCzxdFaxNt1&Dla9$>Y`a}jOrZ9Ww|X@$N|j6#E9DlXZrT6t5T6v)GVpc z&FJ&Mu7ItYI3Qdxu*u@7O=Wke-D#+tc}`>SJfCX*h25Vi-I3Y9tfM|~>=Rjd+iwnP&$-*XozuCK#?YZ-YRNq9hsIRT zd^YVouas8ty)m0-j#!M|{CWV(-K3E!~rkWUFZhTeBqEAdroNQO~22((2 zCOC6D*hjmuXMd)FRB3%b&E07c#&MkdMmW%{x51AtL;h+z)gH@XJFP&OM>P%Rkp{T> zw%ZWBHlbr;zvAKw=biUOmGYN+bbu*KEDZ&{sLgbR#R)MM2nf||U>SN}nLuT|o0Q_& zEh1pdf2ZJ(z@(_hk)nC1YfBV~l+%ikb=$=W0dBcXch8p!F#q4K056~b+soyS;d%N7 zT<#G4m&zgsKnS9OV$LBMb6%k>??!b#Zmj$upQBTf@iFy*ms!r-!i$TIi%Yukdd+^& zXM$E&5Bt8g$Nrf7f&J+a8$W1)7092$F%aY%+hl(BfS*?7SoZu|Ofd=UUg6F2R+>L= z$)$^#WJdQ88WSpkROYqp4z)jc^(Z49>Jq9qdMum%_&;cS%djZlZ*6!61e8<}=}<&a zO1eXlR=T^T85rprL`oV#y1Ryu9AXeD0qGKkj-iomc<%ZA_w&B{efRU}zxVTj4;&oF z9K(HI*IMT~*SXI1%JEa0CRz}N9A#FtUi=9Qk|~&@@Zu8!6NrTL97dU zN~GV$5g7V9SfV$I7sNSmM4s}e%QlZilqdU#O5YF);w2rWX5PwJ`3S4qPL#ZOtB(Cp z?IqS@TYtf2&7oV@y-`D8YNdd|fRy?WP*1Lm%4hbL*?iA;G&39xIm9A%?I(RznLkkF z(9J&r*zTn21IP$_SBpcRsgIm95%8s5X}mTZ;u9&3d9tjmpcMCm5s#H{N~vVB2yXt% zbt;#Hb28+g3+L+g-@I@QSe-1uCFNQ=QwLJOeHV;Ig9X4YILCK8V*{X6A6g*0Pm|B) z-r7v%Wup!kW<5FLdL!ivgn!X$$u=?(eCs(W7qRGAe=uSv$!SwM0EJrh$3}PgT2xXm z=yk(siHcZ7wIq2Msyg!C-XkFSdj9<}1x20Ij2$rH-TpD1?ciKv;KiT%51D0ZCib0i z3EV(A5&37=VOcnr!_|B2$Ig;;(3(;@e<5PLPkW1EjY`z*XSqPq3&+kc3H`27t&ko@ ztjG0;#M>hQn_)zw&uQU2UnOzd?v?^5?UDost;MO&jvYc2Z^fRfkR#lz3OXA|6J`|b z{e5L0{KHRhVAkuje9gN1O#IdZ@xw{dhZga%@-Q^gl9+Yuy<>M>`h?ORxMlSwWbZ3r ztNJ>z-pF$X^z)f(9>&I{#&&dMV)b)-WO0-F_!CHDnL*u1*V{)z4$Ir<)eAKs9Ue5z z0UWpg4gl&~3+8fI?<-)WdijXCI^b5sYXP@Hp)_gI{r@M2F$jpk1Wvit<1S3#q`YAsI{MqKXm*+S8xXo$*}~3#{lWP{Imt@6&G)=PnD~gdiPMHiQ8X6ha5dMRIb}vS zw;=M-5|s&8QBb!+8kFJS__It@YlTBqNQQ{_zyPJ!vI_KzxxbjtLM2;Dz1-TnOmhZ0 z4tqhAG~kVV#qW?gb~aX?T9;xz``KM0t_kUyD0;L~&yK~nu%@MXx>ADQy))gaI8kQ6 zI9l*dUAx}xV4Z}Hi{cd{yA&~<6Nsq-iNg%LIdD|MLqXR z-};#(U@4=uIxj?NcHtXq$4Ts`5XpC3e0DwN5uqn`I}c4oEZe&u(q(L=bzf2Q+hh^DlZ`v<=H&rN+S9nd zeq9f>6FRsvi%bmgo(Q-_BUJx+p=1A(FEk*Rvb&#X{d``66Ftti{;M!EzJNVN;hp_E zBih>^WM|JYK~#kg2%eh{zU2PXJ!jS*TmOE0^Ddx4(_oUNqUA3_I={|(_6^`4QV?4% z#lGaaA@?(r&7tqVycOKC&oC|$Q6rZ+D^9Qi~>QB1}YQF4hI%spJi(&S=YUoVH8oszgKNC@W!<&d}w_N@CG^J5QJMvN0f3^>2HUZ-(1;) z(tbMcMqN53D$NSt+x2=xb68znZIS=RPn}sg0r-(GpRTpo&NX*v#T|IB332Sy`|*oJ zRvdrXjJRVS>sPikX3Ns$rr_x>+00(i@kX_Lg^?<0@lb0SMZFDmG6|KKd zi^nycRznKC@iOMH`;kxmcQnv*4M1Rhlna2E&d_D$)fXxhX_vdo8JO@-Mlb-@P8&Ky zs#8_TiqcCeNJrw{nFtLH9r9=kZ3Y-~QJT*%0T?Ss8j?Y?RFe;nh2gQ}!+~Oh{OVfp z8CKbAUsM8zQG@ky0LM0}vIIBd{?|~_(Ldim{C@C4f01k;Ut>b>=iMN67?0py&J9V? z@^@PG|&^!V?Obl;%6y7#Os<@h=$E;rm`=>uIEIdY)=|WGde`OoPUo;PTNR z{czGm%cfs2bOuh_wAvc7H`+7Y8aMJvI#(YVvyY!$RUs`ct8l2r{!9%?&aof14|tA3 zv4^KZ9`_q%Il6{h{JQEyNJz{1yfKuQQ+Rb2wdYE@gj3kK$(KV^XTJAq@0s>PNYp;5 z-NmM{QLWA-Ami0Tz1X$)zZ{(>)T0)43FWm%Nwz<2e}`?R4s~(Kvm1mTd^f%w>$(r9 zmffjKj#IZpG$hN#80xCk9+k2W2*gx22 z3%ExAz8e0&oCG}x@f7=Vk1CXGy2kJ8_H=8XNqptsS2n1csv5`1UV|WrS&jwmpqij% z;v1Uqm4%x?T+{<<3UwYCrI-D|r7Ee!4uq0n5fQv+pBf}Ku^ZA zOxEY=S2*Hc`Q7ZJ4;E*ZnRZlCUN;KXthxsiL^OJqT8%i#`3LR9v1`S*d?}h(4gc2H zDt5W;voQZ1pAs8qa>DQ7*M~r>61;gcF>pdhM-m?ggG#n1cXO`-qaNQoGsG{hW$o#i zs$F*@Jl7_I0}V#k-shX;e|emYkj&Metk8Ah$N>}@$(g^$oX7dwlCD$RZ~U~tA5PS0 z7P?SeGBUHG3bY$kR9S?Ar+-!kEl!SvaA(E=1LspwoSd)=TuC^kzPet$lY^4m`bFs#XS*hm?wziK;jAk0z!4zJS2*|R#~gyM0Gamhj70pO4#63bq{RvPyXD@l z@7hysX>iQT&4b|Zhq3nx zDBGcev=6XDsYg761Rq*!h+*`%uUkxJ@#{z(y!yh@JBR9xHR|$ zadirO(Qc0|+@34 zD?vP#Zo0sx8R?xNgBggdI*5q5e|>WplZI7#>QWIuGzHoSx*P3rx~IIUcpZy~osEN< zAe3=#_?g} ztoS==x#`#5>XxXj<&~-7Weh1758ceF*Lkw6;hWZS9989>)JL~dy~mM^d~2n2{pR5& zlTW8}lo(B6BSmCRRPNN|)IIfUvjo|sog4Y@yN>cz8Rfk06+n3fHtsqb-MDOyy$C8+#-C@k)~})> zH+oc)bW3x4KCS)_{3`e#g2wGP`t3R$V;@^obNhf|}Cp~e=}>CR=I^I;e6T+4Ou46vH@ zxg4R*NOPD_yDGh4lt-su;N`D$64VpdrA>;ogAsZoZsxoK{BEF*M@dqk(2yML_{QU1 z{k)2OdNQ;KbZBay8`UGDuBc`U-o zx2Mk-3=Pouo@0WO$M-%OTC$WKWm@r_U7@;&8W zu-0yX(;GMa10g0S{)ZFC?vD1nYJIj4?psjFu{sOUU97^a!RN{e!0H8SLgOT$)vdBj z($ss1^f#(=nuQ-`{c!{Yyl${(=JYMbi?uSiv)9M|w~7cXh2!m}-dARE~T$|t_KCt4xBCvJp-+KRbZsr8N=KV?bCX;?Wm zVawbjJQjey1$VVdVi6IXN)tmTNi&eLEj=oc4zHRZXLGy&2X#+fV&y+uKpk|l_HXQb zLi8`L@UH|vd7N-P+(gQkbJ4uxUyt(r9?(`}cUdM=s&rveE%Xxr#{8^V5mK}a#wKj* zcy}5!epu%?au)HhI8UF7e~cc}kfee*0wTTs*GCwE8c?EEyniz34F7ch9RKJW62wkQ z(4_cU+&~g}`E@U)kG9hArdlCD@?(igcFymLy)1FhD7W*i^TGcqZt_1-C7$^4xM|qJ z=hsd*nE}w2G0mu+A9TK6Nrw+#^=@xKEzXx#*C+%m#_oqRT_Mpo%H}xHzebTh(`}8m z<0ZeiB5Cf#osI6@u+?sjeY>P@G~Q%lQmA|L-2bdXBFPRlioB}oWWZ`y^#}BdT1bZw zeixwZ?Guj-o2|AfWizhnU(%<)nfr;`4X{}vk_kdQR(%pi7a^aZ?xjtmzi~SjDnBwD z!%&bumc~65h_~ne_5xVEJmCFH{{{n(aa>*hp_K)DNe13uK&oXb-4ZizyT5xb(D+tI z?;rOX8z)51UCV)iCAYawBpc(%!W|wMRIrfGE}v^efbi?ID{@m%`}NDD@aOyaf=$)u{55sA;dkL+t5Dje?hFil13Q(~Jn?#Ue@;W4r;bxsA+$7@#!N1d!07pnvOhzO5x$2f0ho=N0@8Ga7~!jOII7@-s3H2Uud zos67NfNJUsrT{eS*e^VI#PUKAui^FB929v~-k;gh_EZIohFD@b_KC-`_dVwL3K-p$ z+6_I$)`D%#`7Rq`%Vyk6(o^4m{gIyIJ@thBtEoF53YvgqkoF}ik3QD90$J)P<+{4z z?>mhO2C)_)0amkg-oS9z5n&zy@-0(uFkc->P^-1ogudgxEA=D+AgfbzA4&F!;m4sM zTaj!0AyTuyzA{@b{0(qfE*Ds_S&;ZF^G{W>`LC)(11Jsr{tV7t&7}TI%M(u1DdzBF z`yAIv`sJAP%8TKls!eh2292_}yf&8M9^&xf0{@FWiR4TD@85oJrx{^;$?NDOb=GI} zh{jTbFK?dRBOwux+li{GS5){J-)t3*jV|hF?n3ey-RvKvVyM>N8{gr(U$ZNg!9X(_g=ns_)H)7|R zjs~|2djM;7fvWxrUXN+k{<|Y5EzX$680IN{dC;BNtDeQXK=ZfD|Mmh&6wxGQI1hog z7Z<6mD&P)0*sFg>yAZ00BVz-=w0CMcpV9sYrI~U+yNLSl-LuAkiUWNIR)kkPitmJj zdhiD}9-o(M+%qQTU&>?I#3nfCXG>V%gY_oe@B(g`AB{wI{8VEBrD_Q;6PRA)w<5^F z9V>6R&;uEKFvqFLpAKnnLA$fHlNTF2mC=Nhe1gi@w@-Ngp_H`$MJX|!6djjN^yPSl z6Moss_8$8lM1#h#MbAqC{?yMr!m~3U4)cyB2w$DOgi;joh;74 zJ)dqN9&TYZy&A_STzuv$QbE&NoW|_Q_yM){GYZ1i+jamS;Z++Z{Sylx`y4BL-$2>5 zzKKoNTuD09ncws-zu*4&yXe%ku~6+Sm0?h`Z(^!KED{ze|yn6o*}FNZkU zHiH>h;!MKmA%xRe9FP!Vn!1KInN5m2Y_AKRRQUm`aroUEpy+{QeH0Ywqh#AL7IVqR zPnNUWLzJNU+WH)`XiwuOG(sz#h83_cXpo7q^f|E&cR;{9<>oh*u2HniT5ns=$ zZB*50Tf-sZgN(HFGzDmWnzbxs>jN0#xcs}2t_*1PFV2QB|7^q++C-WKT?d8sT0P^~l5iLSz*Xj3e(HrRUv0pTm zZvM2xL*QlHBE+xG?PP%v0C0`M|BVsY|H3t5rWLWpjyeJ#dw&U6yTNMHs@2op;KptUKilt(`CWqSIw-GoRoepcipNu4G(=-%78Z8!L z?K~VR>KVP+M^mqm!*y{MPe?4**T!)^&}nP8V~FROJ+pTxz==m4~GJzTnw^B6f9je!Zl!# z*EMeGdXJNPlS(w;W|fevKtO6@o4HX}xM(n0tj|2t2oC;J>#d~-O!a!uQcddG%D5z zG)gCo79_g4qmr>vkAt?jqi7N`5Ybo+^dfHWfW3w<@LZz+SDb{d-&A-?FHS^Y#xi=r z0q)j*Z~eQZ0ZK5sXs2kMC6(0MuesF`q~YC&5fT8&2M`gNW^$SB)-VX-2E@Yiys)_#lq%BIiTW@{Dt|<6+Od2zQaIh z+e3kQ*Y9J>^3_SrR|t^*Sdp&OH%=o{$ld$0K#yl7SYP&qq?%#%*y0YozqfiWK2QEB zFwty~duC=g9*_3F{RA)>y27XHZ0SwzbxG|(RA9OIrH7H=XVp&IjOKhCT(3h}eQx|S z6F<7jZI0xIPwZLvs?g)TKz#u^;Y=76dcYG9jo>uXOCR@{mimo`E!HBnUk1rq?E3l6 zmDDTZuHTy$zfrFO2dL*;B=Nwi@uJPNecqup}klDFJ(qo2<0avGWZ|0P8%%{=UXyDwsgS>(~ z83rZiOe!^gXa7DN#nC&v=W=lf?aRclj7UC$2;juR9{#x81%O}8(Kmwt)@Sv0d z-?(Uwy?Eg-Zxe48TeP^i=yG-DoP4wYF-R&(vAjXAF*cA~I;zOrK;fqarSA-dtCs?| zj>WgGdbn=mgaJB~?b*aJ*03+W52(6!XR3<^9d|5x(Q(ga^y2rMW(F?bx3pM#_x(dJ zRp(#(uEL#WZFXe^$1s!3LX3uj{;!ws=Z^g!@DxJKaB19&>gK zue~>gj)IZ3TebUCCyqkH7eJ zTux+m1(K|DoPKT-GWtwp>+?i(;#VOdE#&-yp9|nHZAWPT>Bo!ku}ETVCNpwQ>r|Lq z!*Z?l=$j`^;v+y&FJkoSL-zJ4i}XT79qmlYrQxE`g)`(I)+PhP+Wd^>Fb?=C#Qb}f zL*R{f@iT#Uu_>E#TI^*d(q^RJr)6I+Mj6ZW2EXV)capL6VbIz)?ZUGvpqsA+c{j&-CeGUpOYHp&uQfciTp1!E_uaI{--{D(eTx~^ zrtc8eYZ-18&0{8amSm$-p=$ZP32cw|i=tLTg-6oIinMbc+D&|^O`1xfA|qgFKTl3h z=2ymj{DAU_>aZ%m%&qb|2BBxw{qH9SK54?NG!Cw%CbAF*?6obn#648$ne{|C#FYR- znLSKC>>=F)4!R((^AvA_Y)ohz+NAEC00b?q2!K2McZNm1mNDwM2n@5r7$xEQ2j5_< zVO+gX=@;OXLHLf*ip(R5MGIfj2$-brzwr6CJ?}0Vrxur|wW9-U=$g&JsdxIr!6Tmf z#NpAV$5OX4MNFb6n|i3*Z;c_27x@`N%wX^P(xK4VcjXc$Qy|Z?CK7#7wgs9X>yFVv zr5SRDdnyK+kuUEg9lBs%IXvs+U(e!GAt-i+(uUGS?nh(Vw*8F1b4Dqx_6&`<^WxDG zemowgnk6aKIHCYTsa|5A=h%{nSVSfJ79$YEIqWlOr8S-`f)Ya-bbfN*cT$b`L}{$ zNe6&g-R2&@>B9$P<^G>FWX-mo$=UCmq3%L`TOmTeFJ&+1o^If&k9(ekc4o-F)k-WV z7m?pV9OG-BF0^O~IO9bGi(K+91qjs(k9_lTX%W zv%BYi-Na^C`R?h{r+FFekhg^oyAl5Le#Iq~w8So_5-v!vJKiaMJo5T{ui8_LUQ$}_ zOBeCOErcns!ayR8Lv!qp<5|)orVy<-(r89HWdUCTM;eM@NBmYW$yU-7^C-*Y&V~LF z+pJ>37dvW67Y8tiy$WFi+(@?P5K1Yv8!s6h{dMA~Yh$MO6LE)Jlq?jcvo%EAr$0|V zYc;~QnaR(LXhq*E*5{ONYGfh!p!6*tD)H5|58XF>6d2SrAObH^LM6P^j@{(5llM`R zvMKnhzopcYAL+MGqhh$|!h0RlpLA4EX27fN=BUf6S)w({#T(y5?=2(zkv@q4MJE0$ zS_&gZev&vPf|=b?!=$7a9S0@ww$+!A{Uzye$scQ($S;3gc3!sWsh>IegVkjwsF}fO zI4p0m&ugvK&ioAm9c&2;-CMnlCw9Q{HkQov7uUb>ZwId(ZH%t9tCj239!O+! zivyEJy=PeGe+>fcbONez2XKsxk-zM=syh!?=l%DkHYN&lueSVemZ*$s?d)u?yv@f) zG^<@lwXo+0GQ>V0>mU50dQ4YfVo=TNFsz|hXH%?nk8Jhr#68`{kNLm=gZfsX4a#J9 zFKaBigwB$|@VnOUJl#I4$!{u?>-NA4X{f~9gWP5s9HSagxTR({Vs<=v&pRI zvn?|9SrPnd;LhUc4zW(90T_#X21DxTHArKl#l55+|Gv;Un{Cuh<=|f8$3auo#|ZDs z2bH2}sRi93^N9*qVpB2HY3yRado zP9JAdmrYIELynsFJ5tw$goNDQ<@JqwVdKMKRr!U51cwT8axpzU2CPe1`Ak?C@phE3jB8kol9JMmZu+ri=-HxP zPk;ZTr+y7^*y5L$HQq->T`Jb8Wkg$XNl7fGUJg~_MhXQWuUz_57CmTW?&7gZ!?(t| z(UB2*#Qy$%9Z7=4Zdy0rZ@xadu2!E58mRVjU5h1a=wveYWWsOV;~)ib858--0Y+QBNe6%v?te7!{!f5k=oCn zG0BBbu;*EoQ(Ow%=UJI%m?J|AZITZ6o>$e{$*Z};);u z;9Xfyp&Hzliv<4CmgJ!Y{)_Y7m!a+~?-y86qS<(Y$T19+J zDjHkgr>gJ@)|&ukW@-9JvsO3#*Kt(*iNaL5dbw6RoFQOA_hCPYfq~w!o?~oJuDL>`Hx7j=bGs0Dw+sr7TcH6Hy=n;yI#8#`88%CrNFC1lssC9BT5dUl-gklwU^YH z5|1XX^u*mDyLv{3nW?NQH~;W$<;l?vG^~{lGyLcK(f(|wbKVsw-_zN|w0l{1+wR7Y z(oYCDOlxe8mwu@1X!X6c*qN>!DN<#$8OaN4(KRYo%U7%;D`CbmnZ%>_F?qGH94*1I zGgDu`+Z9dE39MUcB&6hiE9|z-A}=p*xl2^7vhk(~kAyD15sFr@wJq^A;WF#EyD^fl z7=~Dpik@w9@B2c=YSA12Vx+~}-E%37`HQG~cNA^4=}+8b0jCTQm)Oye6z<_8P0FFQ zugc=FLeRA-p|bI*D!>ckqxx7w-?aI=qkr zF^p^XEY&K1c+%G5eL77&=avt9LYv zgTFEQu-2b^aL~u8m?`d?r(I!GM-F9=&&$I0HV26lZpShS38>(m#Y_fM@>unR(EC|W z6Vi)|{yoyXZuLC0^4!QzB=n#b^{BM@Ij0fV-rP`c9XL{~&YVqTL_$I%$UyLzt#S)J zlr4qZ=DY)_U=^r%t^bl)Q+PNnwg(mP4AE31!=BX7x}~-#IXlX~egKySb>1U=-cxPa zN4T`ydOP6Wsvc+Knck-YoV~vLgUT(N_@F#P4M<{3K~ZQ-skkJqe^_s@)pWTv{SMIxV#|zVupKK#e25a3GES{6)Oi%2q7U zQ%DJrXbFoCR?h=UG8+lJ8?m3){d=*%l5+m_z(YZJnZLpP#~J#W5~6pZK9r{~wz@>>nz#9w%my2=vh-nOv_x&q}bh6?MfcsoGc-{aj zpcszTQdX#CcK5^^dLAGVuGjd<*Bjn|&|0IN@#$(*NXEB}K&QA@*MJDh;ASQl& z(0=QgN7_x*Fh^Ku8AqYARqB@gCHy*Hy&`+0{FVi0t*?u|5S_ZscbgjsoxFN@dB-ro zB_GJ`tG10km8*sU-(zrU9JA%jbfxM#7#|GE^+sVsh;7eE3d)i#gN*83{y z?|rfz8!dj(GeJC=d%1_4|9Dr_809X`@TbP+tIvKX`N1jj))2Ov;l11VR2kSCkk(1#(@08`K#E|6;dXZx-nYV*G=!wc6-2i`?MbAqBwV` zeHgOZmzc`mU_a-HPA?$xR+qr zEbBggyI8wXUO!h&l5B2nPPDtmx4xF@RL2F*NjwTP&k{>BGxpx$vr9a-GRAE`e26i{ zBPeg}to4(bEmvAii)j%Nm@(dcteuGVV61i_a}9|2GC?Byljsv1uznc(qIiW+@B4j7 z&XJZ#n%up5)%YF1RHN2Yt6ZyQ+1_o!Ir3UA@#m$xqQ%DuUfW@gz2DQ-uT0lmsN55z ziV=?8&PrTsZx`DqUGH@Z;+p z91KUZe+%1tU+uAxx8lX^a|9_aobOZnkq_PJtv%R0tdI}vdU4Qydm6!J*zj)cciM-a z_7l~`5eUopvCtQP=zA0L8_#v%oEY4V+}Z)|-M<=gdJUL+Hx5sIb{#y=!7g$X6aTy% zpXBF_4%g+|0(*lNIYymZmdhitG9Ic$ukQNHxUsp&-uJcB#WuvtFy3o<9<-M^;; zC>D2|{PkCg8(3EH(0<3I#$@*f7WpNw7D@ciqym*8_}FRKI_>3uQ=2^vS77i!JPgzK zxv}51GUAn)^mjSjEqonI+N-Jc~3u&4D!oMZ+FM4 z^=KTP=Xx5y3`uS^N)oagNY-3d{(^O@7NF-V*NK*6w9yK;s_wtqlfPQ*MZK@XtKS*X zo^;Yt9c|*EW3^jA3E}V$uG9ax+Vj6DjqpFEKiNBd{###u&o3}vf3S6=!1n_H{T)@; zg2;O?J~n4ntSTpD4UYlSmd$pBdx8;(R%F1DjnuO&bmR~$^#4dsXB9iVikqfi`3}(f z+TGIGPUjS(AOJ0Hi7q*aHBbN;UXJ{CfBaEETB(Tr57=gjlV)zvjBWyqlqhd6=q)Y_ zG~_Uhr<64XWGbt%)xdRM4=fMlX^@ScOi>C`XCS-7Pm{Y?ks9wd|{QBZ}ZCZ+6lrD4@ zTgT)2cyfm#E6Dl&EmptuX9l#`*+L+$@InS&7EYODW`FX{=46FaCARsWeCG(}@#|0B zl&s4|`t|T1fenOQZgd|a9;KlmZBHMQW#u?8cTI@LVE?5Y4(tCaH1u5fzJubeew}?) zE64>R^~U=m7nB6XUOJIwV>W*y%kbi2eJDFnh&r1uI+s3%#7;hq9)ioEA3=o2vn&>CRcVKIh;tj) z-1%rmSjNNEwElbAc$3J{PYArQ=mXb;J;pa7o6ccH;~AtTNlbFvJ)os^SY9&d>gH>A z{k?2W4lyJ&=o1~_16c=Yfl@_fE!fTPc34(-Jz9G$;q!rgBk0pc)=KdeK+=S%IKEkF4BYWuJ6bcCEVEUM~!1r*FPo}yi@z2fZ%FxfE2p$s-$ z{=y=y&7mf!%lZu%w^KfrtFxnH>T2pc!gb3^f`=b}l46p6dDVc|yxAJnMPsHjTX0+WOi6+=(%Y(NFtwPJf(4T?a$mIjBKd$$fz~F&8CNYUsy)Y)Y^TR zJ`_EDdMIlQf3T^VqbQ=m-uLD`J{gMU|x{n7d`t|}KlT>6B2U{Tnd z(0bqkTaQa?&440pIYsu?5P|2ySy_-ac-%>&Loo6A@P)w#r{?`&LnzoG3EO;4v@4Q- zJFq|ecCEH7J$^%yLSb zrd4&3E&+MFb5^r!X+6B;e6XDDe)AEdTdI1c<}O$5`z_if#RM}FwCI-`$A-w)P@AE$ z-w9MMJ(s38;a0w7#6EaT99+6o>&7C?0*<;CNbfqQxc7F6z0Jk+atfmpF7u?wA(BYO z@G@^cx;tq<9UO~qYL8dkGZKeSMV|zAqc{%>d|8_6oob%Au5+m%j;USwg0-Jtu-Prp zRI~`<`29VxJNVPR3=CcpU0i6(Zx-_MPB!MP;Eq(vLv5yt!k!6O+wb!>52ye^lQc1& zq@9c<0c(;<(EXz3#xEVA9c7hQ`hDXb(9-^vcX5$zk(y38A2J#EUJo*4U;DG$g~Txii>K)x61fJdO>4q{Tt>&;>C zWbM4|I#!mBD+Zh>ut2&w%&|c73LAuNLU4WXTD%R5f#5#j0*K+>5b*+zxfx-bF9;h( z)36PS1d-n98jw%`8{J$YZ)Y|S1VO|mBZZlMwjl8Rw+u$#5H)y}caDCDQm``MR$?n@ zwY}&k>j|ubsezsifnVX@C5XW)jY<^tuQ?h4@eP| zx=x@i3L;v=5#@E76HS)zZ}pXxn!Ar(XCe;chJAvGwmpuZj-L5o?5tz}@V1=5@LOPd(-VX{%E@hzktOgdg!uW4*ij-SQ5FbO(0+MMnNhe|H_R?RL~D0`1>qMc(=`H!5`l? zG3i@WZW+63-a7HS&SQ;+N{;>@&sUkSD3DS=_-~wD!hSZF>{7~LAd-A-3UdYGKS7AhKO1A9L(3HOc>NCL=2o6|8V z5;2QY?5&^FBN4YjO<+usMLZ+_}Qm9KZ*k>9zp zp4chS!Yy~5TA}^TI^=C{8J?Z+!)?}nxV9hT*>~3d5Gv#OOK*-3i!;b9BVu>~cQ2z( z$svGVt$bB3Qx=C6(4N>!zJQybyx7&<#a;tjbczj}8-({K+og+9~5z#_9oKTBBOOmDOx753waEBAy3oA|;=9+Bd6Q-jzy+R_m?upmQ+Y4E0 z-q+M!ZLaOEUkbL<4VXcwHplh0L+f8gT^@}YL&4A?+~3a6EN&MOAmL@YJE1GnR=z{Q zmoYv17m}w}3p6mM!^_%FP{BX@UF6HFuAkfa`ZBtObGRy`3@-cATLP_ZCo);|{nqAM zw%|?g1iJcKx*CS?W`{y1+2Q_O9W)e-m!wq{ux}^=RG;;aD;;Q->slvOmKar4_nm2z z<}yx6Az>bW25}?xMhWY1J76^SU;RHIGjME*gY%$j%X)*G*KdSeJdiSP9b+5uwexr8 zbN$0Ep*C}MrL(6UQbx@luT7iGFP^X3gx7|KMUpP*c?QM_XaYsH+2x?nweIcnDRGtx zs>hBFhZGNrwuus6YVzNWM&iTIR_&fw5R3txo$hJjii#J_U792Or8d0wmcH+Ed=;`d zoWB<;Z_!Iwr(R_F{>4WDWA7t=aGk18b?$02Vs_A?GJjK=(7%-|>b_A>R%?m0OixiM zU>6FRP=iwlV11YXn6t|RjSu#^1THiu;E3o&l+x=!a?{i0u7nQNdfO5lBrV6}o8BX) zjV^?m`Js>I8OBJ9O`un|f4oWB;JsV7w>|h4QqMofzG^4*-c!}Ze;G9)tiMxVYg{{C zH=(8Puv33~vo-0YuivEd`t^ettm-=t+UL9n*&bS9eXa~a9ttm--Mwe=wGDbK6*q{U z`_Me-nc*!l=sOE7Sr-RJ^d>`HtzAQE!!(}N#1`iKA$M4J&sRuzFLJT(YRqAi{NZ?7 z#<=9(G?Y-;)JccS*vj`JgK)BQk#zyJTdwz;_FF+7G&B2;*XGR!<;-Ro?@dYdnr^qL zzceYOw?mwpuceT%EY_W0#p<3nEzJSY3@z#jc>Jp3lI7Y5QYKyXy1DFIQ%(tBcRH|P zx@FpZ^SS9_EIt#<#|kuil;`p|dA{PH+rj3Z@%|SViF7Qb0GG11a@>J*(PXBXdixkd z{A)lJXqa8VKZ0hr^pDu3eaBbOn%HVr zcUgfT&hRc+*A0z#J*^wSmava)mfr3=2?^oay;0>N&#vVVbn2Q|fmlSg;da!83%dGE z1E3UrQU5CYndaFxk=78VZKa{Dp+o$E@t9WZONDO7^gKYw=*4kV#h0O}sP$_)VasCl z;yo?|Yc(i1c*+&yQJN1uRXYC!HTVEt>l}=lJlw=}&<{3p-#FLKZUNfs7`Fw!3p+(t zR(8JkkNv7tfGxavG1d+(eh3Endtuz$0gDGi<|NOhWlEa}9)PC~YD$;Gi;MdGR z0F)}Hqk<(r6o9CY-hWE$^&!gGK@Q4_5a`;B{IrYDW zhT3Lb`Z6gZuij~~U!c@VfL^ZI{!nzfugd$vOSzwIK%crW@yr#i^E?sdB%>EnXyN z5W}0}bWZn@x9=l1;@kZ|$+FPa$bJ8h=Hep={v*JrWq?fQWqq!C))_uX6k<*f!p(xE zu1N~Ra8WU6ClakEOstpKco7s_?F*C{ws$^1$st*|zkm$^UxLUXqnUT#f>>{nW|Z?ov4iKD_@40iux$A$SKC zvH)0H8;|1kl(flwDNMASJjpWB(0uBBpy~IiZ&18|^;5A^~rywOYS0Oeb zbXDcQxs!F*qI3R?cW<#`I|TV%mE-=y)nQJ@fhBj4qKNx$%~9uaS0qoWI*B-No@v_% zZri#+&`J^5eew3BEW(R$D;V!pq{C1YVja&MjKqs?*Qy~h2FI9|RhsI9fUV0E7FVYF z(_j@0jXHl3th^F@zwrm550BT8^%kT5GO{LpAKP9wvnW&ePqZ8O_b`Y3pkNkV&Cif2 zavgkMW3LUSEzV`I{~g@7*ikFpIw3$3ww>PIqYC+jvj;kF)(#CA6IZWCX7+x1A2%!JQut8MQudM!>)`V%t#MPORpL7p`Yl`TL1_K*mayAnD zrp9aH4DvN#TWMe9N&pyA;Z<$4O$@6@JdPjzOKzi(#PFIF?U^>O}*>l$= zX6s*mM|e$K%&`Mh4oQr|!BFZ}>G>kO`8M~zWKqj!+Qz=)e&}YH_!K>|T{|fi{3O%o zK;H9wHF3vx`YmP6uPtl_-km~2>z=7BRHr7kIilye0(sI+j>1N)f0A(C%+y*&N?R<;SX>8FZAcmSttltgtcX1{YRY*1 zkxhrY`~1RAV``1cRjM&l%0^zxZ(=|9;r%jbkqp$X^uZ3+CtFGyya@NRHt|0Q$1rve zU^kLV$tA8_dFAv-o~3uOx^acj&n=1-TpAhLFnri>##bsK5?HB~+~=`Ko02wtl48oo zrfstWze`uM-oRk?Y*YO93M*)Zi2>SFE&VaE%*|HeOyd~RWXfu@8^T!$`GCBXk!mRt zn@I;)ej(1o{zgi{dgpxhwm9*x@wIPD6eXJHLDkc))Gt3y&hp+XlOG!lKRI_3d;XsB zYFHbDweb35cvvKlTZQy?#R z!6SbxH`Vy72K}7ZS1=|eYeNs++Y&9F$SgQne0rZXQRBJ(B>Q)-bv%OJ+V-dU&f$I2 zvTyIznIpw!Ca58l8m#XwYm8@7O$jFQ-W1E}d*YzEM@af6-fvm1%+JUDrk*JBeUzeM zD&!vWIaskg=2goae(dw#dUD}f4*8y?{Bhq>p89)SGi^*a1!ALL#*rfG<|gn_whJ`q zMRQpm3+F3x?zI;8Z5ncTtf*f77E8Haec~Ga2+sO3ucU`jDmMB+Egu*o3V=4bZ%^z^ zG83^8+#{%kPQZ7XR;({nDPQFwKW@(H>UHoXVn%&Yx=?m1gGj1zCWLBDc_Q6#kxQG~ z6Z}Ts%O;X=e;D%FwtTz|Y2mNU)lw!zHk^yMh_yD?wr_6Mn<$GQdMu=d7ctX9GHX7( z%l+u%<@$9rVHyDu!SFidiJlRA-GU|0Il%<%emGbVhS4_f;fT^PB11G`BcKl)( z@Ko~tlnoQ7v3kx30rFM8--c$6kSILtfVC^v^z1IzoSjT$)@ushpFeKm#V!;Yo(Pgt zlm)PP5n{?(+w;ik)NErI=byk-+12$}scKHsknPzjd0>kMhv=Q&3qlf3w;lI-af=P} zOeY;mPFB7paXUs)hN;#Wfjn2Vc>Adz9g9KsADrrskxW|j#5)sCNd=y?8BKk=dukeO z0nmIFIP3I_g-0wkSipCzvDgI_N)D5O?k)t2+`j|Ey-$!u2EuxU&CoyScf!+@t@M$@ zu?{*)7fKi!M7=Ai_rF-W@^C2M_xrvx%w!!~c19#r_B~d3EB5`?7z3~_4|LWnfIER=Q;O%?sLxV-MEu65p{ZuxaZr(M*xXb z7&wNC6GouwiW9XYdIRi48sHw0Su+LpRuGTEG45=s5dZ?K6cV6Y2g%fQ*8pKa0RtA6 z!?|%bL@5QlEEJ4vNU}>VKmm%?tm_X0O(i^GmM{s}1n}Jvz6~}N^kejhwDa03@$6LO z4g}lI=gH$f0orY<%h%Nf*Ye?j0D&%*Ish~W?rx|>xWMlMMg?B}bHUpew9Z2~%ah6| zK(_+ZpXMCX&WRQSi~w=$EkHdUazj&J)l`X}rBVXRu2G4TS*odFU?|>5?f~k^zKO)c zkT(`;7<#>^`oMc60?hB$oJf$*BE= ztEWd>hwTG`X|%^d>i3I>x_onZ7RBaYU-MR7e~EV_9BxefnzcZ2p&3h97aPO|^g zN%>=Ltm=GdrWgT6I-L|ojK17Y*?Vcu8MRHFv|%u7;twDYgelo0tkVMWU@Gj}ouj_o zo?vaBMID}5)nqu(7PKH4=w#O!G%qp++}u=)KzwiA-G(>2Omf(V4|JfKdZb;6me)~O z=W0h@X?rq?!Z#*mG=Nx7h%~*hg&HHPP_CZnA7e5SQAh1DOaq8R>2h!q;2ntFBgLM8 z?1LAoscyi}w<}P@ntCm@)x#Nn5k&k@o{ouTi1iCj*sb$KaTB4u{BxefH4=Mj(r$s| zu4AOjw=ETd@*%8mK$57~A#jZ6+onUetlF_%Inc@>Ft0IdrA7QCP;>h>7279*A8p@3 zH&6MG8J8wMP4IoYt+n&&eW!cP+O}Z_B2lRpv?*YA<;IK@UD})O&jAg$pS!$QxwQPl z^g`2VhKKFv8yuQEqe+{xCB|IaU!(!=MEAkg*8}k`_XBLe?jK1{UhrpI22()>{R8BkF$1#l0di)p zWDV@ASvz5ffxAD}wo?7Aj`bT?C`+ZhoGw$xdJnIa-LO61H>ew)Hi$R8?KWKe0p{iV zz-9^VVci&<%xj>2k0i5x&U9z=u64jo)zu$7U#?|e*EGNTt{7>?D*QIm>6qWQkNoK} z^`SuN!~bIS!>D)aQJ*>ml(C)i3HPmOEh6{u?WPI=Mdv*-5A%Z08T*uL^heism5sgA zw%(!f!hiRL&fMF>1NSl3A9exLG`>LH_rh1j3j;#PZLzH@p{fSett$7{k0;Y+J?ky) zFZQVOD{=6WFQHTq((RgWN^%%>qELkk0fU7p;{OdndY&JBnad4NY%kt=n>fS5H)MG? z=i{^D-s$h^RWs_W9iq9U&S<~CtxwCDjiPxj`Mitv3rEj{{TO^~-_sRza=XBLWx)O5 zvK!Zk5ja_^a9hjmV0c}(QKJ0p+qus`PCvznI7_VKIlK`vAta&{v@s>jCFgMRp9YZEb=pYi=Yx~OTu1{;kXXLs{gKAPXpQ@`(H z_2BN)8=SJ&hRZFXe4@Q7UH?jMTd$=K@ha^}A;bTsU6TI3MCCi;KbU^>52hbk zdfhI;_?`vE$S%svId;K+s6Th3I6+aMf$9_DJasT@g=yd?)BdFJT_gc01Fi~Iajvr) zlK@2^oq)o?Q`rLmGC_%^eX~UUxEsp?ATg>v)SBl6*$8I|s00(>N;*;$UIvDPyu|wx z4)9R05NC)vg8?QXdXpjet~!<)$4!r5HC(7!es<& z_yN`xr^@vD-;sx&F;^*xNeX}(7y=lYs7q0&@-rbF&Pws6y(mq%8A8+nxB=MfCp80<|F zVx4~U41lnV?Q+*#!S|+LQzxiogU3>l*hB*JG*&|tHfU44;r>WbXjmC@UH^kC(t%k##-( z{CpM&XK>^oYReV;;_r&l#;Q_e17NqL?XbD)B7o@;m3o^C*0(xkA7s$`sfP|u*{5bg zVcEs~uGdhgBs;`X(Q0&wkJJGL=@abisL0$=>s6SN-c!r5L^MDxWA9+Fcnuj&4Lp_Z z`cz^wdvo#JdojN$_liar0q!Q_SD1U>J3r|}Mc(!6V04Pzr_O6p9C%ropbi>M(T!$b zSwMLfh<_93O+m}DSBiViQFGE*B4;{+i@avFj-E@?a3q`UT?_3IAxgn*}7e)w_lyG(7g$xHVw*c?z@sqB;~v+g$= z)xi@9$9C^?+A80d$&*Gs=yTweK@CWHXf~4=dr3S|IQ#S`zmyf32Ux^8ZznRyP387j zZjm{??R?Zfob`cLeQiGCiS{dOwxsNr)Q^6;#bFRp7*O(?Wh6f{G4gPv>Osqm1hbBZ zA`6B;@8`Apr0Z#Z9NXcxlKX^7lKSYfz{|HK==pi~L&OuCPQkehc>@neIsLr5Ud2r8 zB#yMT!2fP43+DaW>WUhl@O6!PdIP;@{P_2v+zTDQB)bu_>+*tQ!#iI+qe}4-5%Qa> zzb4HHE37|jLXxxs;oD1ihrQEtdSWksU0V0G`yt5yXSucSVeUn^La3G}iOzPxI2iz(szIlv1OxZHpD99`?x z{oG&4$F%E)FXHP59?YqxSo^CGTL+@{YoO+-9(q#|2fl%6vu!7Y4+D8YbipMDUP>%U#Cxjzy}jhpSlQotF-d+ zHG7Tj_aLT|=+^T`f?p{!9{Kkz!R`2)g&%J)-$rm5*2O)U6 z@=!A=UbbcPxqV})*qBjw{jH^YPg;XQtI|vIBCNQ-xO{Y4Xm$RV34EtmeLT>^k3s3S zq!l`JW!%=q=%p~LTCT&~AVg@30VBjFo~l5F&6PC7Qozd3AHOS#$de`LsQ(65nhx96 zbfFa#;;%dclJK4TKRu122TlHgR{noK(`l4Ck72|Ag}9D;ez}d^`H|Xn03ldY`hG?# zPcHo7*1*yg{5bsc-;W!=cBa12(e`eTX6kqz`dw}4+_U1pe9v}t+)`Gsp4Xk9VePz(N5u1mg{s)eQ}2<9TvawXYKU5Rn3|k%4Bf04QY07qB&A> zDYJj%2Oi42FZSWvXixEc6^BIqvN(X4sPb+3KzSwVTp0B~jHMpwSy^Bct%U&(G>LyM zsAJ%Y-=a|fb$qpkX7(vG&y@{^5u$T;Cfbn);4E0^pq@;f6$~jqtMZ0#l0ng@XY@5$ zh3c7@Kpqm@)Hi;!jgE|fsJSd@!~_!;-8`5DNLB|9yjX{j&Fz7ycupuJ2JYXC?HZGdibrV{{ zt&TBH^j_BHxk_L(bX9ReG~?_5;qZwVZa0opP9iFm#p%p@f=U$Y4^*QYkB`VYvojdY zyh3MB-E-GtP~Cs4gQqD4HE>_R?g*YVz<{P|g7x5UjCD0ZDCjcn-9fu9C3$o<;$;*k z3UHz@GjRui83R#*A%CK(pZGqOl$DfP!y(CM*V$|TMjU1Pe#zBW=8dzL(g80?tBs9w$~@VjW7|DG|@Gme1f6yGzIy+AUdgO_G$BgeMGHEMw~C^&yd1 zrO-Mrle-<6w?3cQ3E@eQjO^xZ`-E$x04w*@V9%V&9K#kn*c;~` zgEkjW@y1K0eMVwu(w}{5bEtI?FW4g^|F-V??G|oaOrl5L9QGqeu)J|IJwAeq|Hr*> zTd~6S@~cqBXP=w)BksuTsaNS-leMRw%wBjt|LXuXRA=0xoFu2{J*JZ(^WvsZb$Ud}5n}K@!$+yeYL&KwWl>N-S%qs!z){hhi^DitLrRJR+lnmY}7~VLR(-Io^7x$}n zJa10Db~H2B9HM9bhM!4rg71b(DT?V)SAntmT_1jipJj*TR`q7Z5myYeYyJylP}0f% z0i{;_OVTR4ag-wW{#r})?s3}In!f7m?K0a?e~8gGloRwxzwuJ)$JoZS{fTA$-fHm( zwrTgcKHjVz`id0)(YA`|r4y^fF=mv&=l3&gqqLqGIxOl$eF*U5KfnBr`R}6qe=Z{e#2^tl`1OYJmjrDsXxVw40pj=G zBWFx07kAnR{kEAS0@82|6Pa!DP9Op{wGlb5fkwTb6C-E!*pk}e) zGiK)APc;1;C9MzrF#K2ttTM*b11qdK3?7kVRp0DmY2z~xn$$`}7;7s1z&Icje?)!e zTKdD>9OP>1vs4~MO%E6qxC&$e@!&J4$E`n$McAJJpMl=^|Jo6ytzpC<8!`+J>Jh-- zK;HlYZwr0|$RL`@w>yDF>%0_(!|WwYCfEn@7ghntfM-B?pdJtzFvjpZ@G3YkZ3}Lq z$OtB?Pyops-4#Qazohso{<`M)Jetf{3u6ZZVHu!+V*$MfO*Pe3jq`%lR1Q>Cpb37m zVU%<>m1;gNG+G>pr-k)_g^9e%gAS}jA%#d-1ulP&UrNWwCwcd-AC}3VXpGecVuI23 zEgTJzAwC(meD={}ap*AS{CTH7wG9;lN&&BGM}+~Tu|`L5d!!&Z-{L(03+sG$x&^y} zHyllF0?Hgxa>=|TF4HZ*;VKC+NnA}wk{*hK`aiGwFcOetS}DY7kwkcU=lphAQ3uS6cQ7JfFLn)!Xhw3~VW z^Pi{tF_C|)iH6&XbF5!S(*nuO+b>F!G@JWks9vlud}gMFJPDOxl7MHU@}k3#40L=9evKSvZdB@dN^jmqiL&x#A;Dy@92g#r$HyIu z(OKhoxCay?MXoy7@XPSU0?F+cm7pta1C7#?e!SQi&?B?=_xm%a zb=2o!Fn=%EeZIJ#U^T@77G{;;*vP+?cQ4S z)s4RPqpq*a=UNfIctNd?H|2B=F{c!i53a$HgOX!J?T7}#xxX-v!N_fACl40+w5{Ut z@``_)Z-w!lC@Wqcum0g3+R7x-_i|Nv*qyM1hqYSfQGK_%-X*Ki9IZzkUpEgM9^U#D zk^n;nBLvvTs|p_8?v?+wl!ItzXgd9j@J z;3WsHfsxHI`dn+{_Bs^Xk-LQP)jggK)Y~^$thUtf86O^tzRbrT)Lxvl@n?j|$?&ce z{nC71&`5k#m}@xL6%NU9J*-UZbG1LgVbC^UUaBs*SApj@l^prIe0lPut_R1lYGn&; zj9n+`jfn5yKG=0@aOn-J)$Z&MI_Fi{n7`iGR0^0}iA#j2*zg1WGbVx^586iGBt-JG+klFF5><>{vovdxF$%FTC^$9mqu z_Kmtx9}fJr^E++FKX#3KpI8jPzf+EB;qs&%n7#P3E7bLrGfFnXidrQ z%SxA{!lyX~Yl4u-zF(Ky>Ox<^9^V9fyjtU)&)ly#N!eahEKSwPoctwe+hf$fGf*1U zC4x?_Udzor{26c5x+CW{qR}Sk&$#5cWhwHi^JEu_r0Lw1hp@A`xc7rIzmkq-OKGU7 z%*^W+vyazyQ>c*ZvCGh{8ILjlLg0YSQY>E zRL$Y!^jz{pVz=yhVKJ@9&BcU4C~w4F<3Ihk9+M5WYN4l2jV*Szk^7(RyH-~|JC7AE z9Prh>)qa$a@drhpIYv8KDJ*=x`{2jY-|4;1J8bn(c%ep{M$w(G#faaAC-p5X4-{8A)aNH3yTZS$1lEy7|wUW3Vz}es?=R1 zxrp6xWZ#R|?e&a40dFnvxK{aI0X#{q1n+ z{G~TmjSoWR)7(3;WRu6Uf;;)$u8l5ds?G!~!*L%C(CjvK4za2?EDh1?^k&4AMA%he z-m|Rjyes$ZVP|0H?(`M?61$i}&&-oyw72@+hix{9t66Yc(hsCnqNe?K%xEiKsU`R#w*kUIpVlc>ENDWNieSRve~%&opbPMa z%>p;S)`9CJBvFWXMvw~3BaCXbOXA=H960_SFj0_&1q-IqVBpq9K8ymi!Bl4+ic3O( z0TM}eD7GoYxfQSvTm^IC>o^G_Bi{8dWZ29H8Y@A^U~=wlM1(*+v*{G@?h}BFgcIQh z`D=wGMZJK$COeGw{2(jSSsv!+STk2eD|jAQ1H2^J?{=zHr!eT!lv1TWOi#Vs0DfeH zju-{>hslBS@B_fEr5`&uk5uSp=mTE^w_z3oMi^GX2IdxqLr6aaKMxj!oZMq*IzkZ{ z-D1FFAOlMR{*GdQ0d}MDxVVT)u1KA?rUJr?REbm_AQ@ztQX-!N&Izi4C@`C3k=%*E zXe+lUn>~O{Ir`zwDWGzvgRl({FSd-L(x}7U@xXW{8WRO^9DpIfb%dDIxb2`59;@aU z<)B5ryxbSNN)hMAu|{kNGHfazQx~6SkRtK8sYO=-d84G%O;s|BC~GM)%E@N>Hbs;t z8&dudS*|5;q@E=)shuI~@r1A;VJof4(v2JA4B9mpLV{6IF6 zj<%2aR?@udD2=`I(H|j-daZ+oHBM@lsY6zZJzy&4s86Zn*X3kc4yJA<3KxZ@S=%7l zxv5Q}p)c$KsMd*iM=`>EJh_1y@faHcQ{>s=TtTxGLl z6j6@#D`czNdfh2UYtLgVkSrZFTDIV!ezfFncDrD2r@`-0bP#fgg`rBQXzA6STKSf< zbAl$4_|av9*A~Nn|BVHbKI$fW|I2&K@Et1Qox9n3h1x%J%E#7z)=F3(lCA9Bqb`0u zfX&41YRlC#!BsjH#ZJu;07UG z%5nZOKX!6?$ID*GdH&Xqs!hMb?Is~pm8?BXleuE8*nN7mC^A@dI}EDGha@Nd7)4i^ z0Y0n8LE3r=pK4k1o%St$E~^l4XP$TLH`1H}2m$u^Wql8Sgd?jG0Y z)O2!-Pw93GZwq{m!l=Vm+tP*{H?H@k&K)X!kd&kF>{=VL`(YiOb3M$pde7&U_P-bo;0)`#|_UZ;_zh)zOmM$C28db8DS&vBmaPQTxw=2gq zm8)(HjRylvU8~;~o`I-_}{0FjQ$}1>w=&SVSQ(9E`2O9 z$BohgufSoZka=w~uMZBE@yC|-xilisbpEi7mcB27hzR6f)Jrs`6fP&4wq93zXB z3W@fElF6nG#) zAI867Rs(yBL)9}K)4D!xj#d?gr_yJo?17HJNNEnWrvMjD8Y7Ak7u+@FH^C!Qa6+aX zSFQ7zArDTg2>74t2V_LP*p(2b3vbl9E@3<<;>RFSP*uXm(94H$ojxLgwhyc!-6tD4 z2v!69g|9Tb3e<^CfF8zT{)yp+s+y4J#TDe+^EDR&J8CIVHi&8U^}7^!M7tu1Nqm5d zk|M(?f-!Y%i}jZB2Ic{yKk#kVQ;;6UiS=)5FnTWJ{F&g+QAd6adqMahvO}Or54|B`=aJ}l6jRUH zmL9E*dB?95XUo})$@fU?Ued~i=L-GDxkbf%faTn9n^hvK&QfhtQ=CrlYRmD41SBBk zC+}G_`Hh((8QDK7XehfS;*{0|AKFkmd745B#Hxp9D&Pj7_}Sj_ZJvlq;ZAc!PYq;G zp?8C^^}OsMo?#1~#vI+bu7k?e-~qZ@v3|r_3jLT*xnnM@6I6F{610b214YTIIeF>u zgeUu@aWJ4fmAs`DHe_dw4;X;1t6Gyv#(y}{A1j0#JyIULI)t8;A?sB;8Wlw(hIH_z zZ4tQ0(oCnj(>V-9`(4;$IQ1n@FbH29;(H436JGg!QG-8NKf5Eqf_PCo`rWH4 zr)hnI9X-w3&b%<&|3n+K&sRUrGrsBL_3p0I-F0?1wfjb#Vl>$jY}m3`iCByBXRo-= z3M5mHuaE7>i|gtbREEkOXf_)hkPN4+Jnzk`1)J#IrjtC`$kF#1Z<$DDs3 zV)L#2l_gzXv0owp?ES`WV?-kr_OQQ6Vp zI$1&6vHB+aSN}0(xR>!?^ZoJAu>Trj^G<8V+^Om>yj3+0_KVmmYE7+?dqtzbFf1p2 zHsF#snRmpdVfI_r<*lYH$MuOf&+ictl)yc5g+lQ#I)FzlahbciLH{SSp043Vw@wcnHy%AvZ6?+(C&LzGLrLR23l{#eaEYWS0&VDh;HQLS`pSi zPwd_tv5t0@aJHci`Uc1d|6WPcf2IrkgV{TlccT5SCXR%W;Da{k*7H@7*A#(I-`j07 z=;D@aN zsDLYgKTza~B*IJy@g3BzAe-(ljDRq8pDA*k+Ju+P%`?yo$YS4?qKJh`WL^T@4seb6 z7vnlSi%uXu5>y5Bm;z{4zmT1R+Y$to`eaQ>+OrBU3~Uj0;rs(mBDaI!N~bqaiB(#sBeD+$%~H(;r<^>qVzqqI zgcp{gy)qR`^Bn7J*&w-6{p3tx zd~Qwe@hj<`bFM8JJ7$NxRuJiY7CB zhEEefs>&>5%}d)DjCakA=jj2(#9YP{>1)+$-Wkq8G*y zW07cpHC?8U*PxQz{nAG{uSR7<6%U`#zG#491(XlK<#>jtw0+XCpzemZgVyZXG0f*G z@BiX!c!C+(7Rw%!TSM}JkXk~&lX*Cx`%IY)n<&HC_6;=tZ(9w& zHefIL>|EMu{Q3BZfrQE%d2Sp6T+9=kVTl^yaST!S?Ob?e6dl~Fud!CQ1dTqW>yyqP zA?&a5$O#Mz_#qUucreC&bQp*EM+)D%UE7p8jMo<=n<%Y)rr5M^{dVn|`0aceX47ch zO7$IIdOyxN#f~du!DL=P-UFFaDaLiaG0e~06jC&UI{s=0lONiTaZ6&?IWYsF6t@B_ z&vRg;#Jo0m4!V>pR53l~+{O~?iN_DhfTDBV0 z@5BdcXAeL(zPPbZG8=czl0tR7U#AS?R~)mk{>_*RQyfgL$7&UGQ{S8x5ND`=(0?fP ze`3Y4R#_T4*Jy0{NP*o@?+2}t;(pu5qKG~3u4CgS0fVM24--!2^Bo2>_SmH`JsD%>3lB6=^HJQ8|pt_L)!JBi(% zH9XWcFV*as?r)kUDu2-LKAJ94JX$(!I(N!-nxFf9jmLCn(VDxhmakrS%fgdQ;*Idh z6@~vq{TFPlO+Q0dOb4Qztps!DBA}#r67vMo1D~1=sqcz^eQQu70VogaUWkyfD!#$# zKF4_C;`Dne7tisH-Lu?KrEztQbjPt+V)I1(LMzOr+(`Fh&e{|)yve>a~Itny?kXIw7BnA zRV-ETOs?5Ca+G?3rq9|F@39W)@8{~`{e;(y%iEX!RpLua(`t>4|EvGUKR3kq zmF%387 zz|i8T0bcwJAi*RYH*XG5X|90W00mG2{imrPwI@Yj&Iq7-c6X`y9qoG%4`8!62`n7T zg%J^;Wxo==H=212@kJY0(|9E$06T(@ez7nk^O}am*K5w?f1HdQmk5N07PM|6c^n+M z@B=|^PUZ~V$28Cl44j7*UTc@cDv(97^Z+9S44eY8SV;#p408`L603n_#fTCG3v^Oy z1Mwox@XyQvH1P-?m<6-=(rVH-Ivm-gLKe~w1!zhsHJ=os+a7DJXe&7&h z@JZ;h!iraOxPD21SVu_*)&p8xj3h~sEP!E3{*o8ZqUC>n5f(nJI+g_0qd0ZD<^CoL zz=LDDLiWRi0>W4!%{TBSkg7FKDI*dF`d%HIQlzjl@ke~g960-m^kO&UjV+`|$gA2) zP(sE(Vj$%vov|jSCDK3&aVojaEMVC2h=l5(ZDJ_Xw$`0X@Z@}69T!31AhWHrOvBKB zf|EA{|I24M(VE1DVk_32F`{;w>(?bQdU8$$YGftc&1Fq=7Bc>U4!473lE?v*Z9-}E zJY0ze`>2<2R^cmMF5ExoYDm@oc^_H=2ag{Ba7Ii8ALaQPPiDnnryh7EstBBuYth+| z9qXO|MjyS8H`1JCPMNFNERuV+;Vj^A*7C?mwULwTjdqk7{YE@EA>+HtjQ6?iZ@6Y$s-+ys&aGL)b8H!^qY%+W%U z6WRCx%LoMlR=MU?bBvQeRM+8{=ScMS)H6=YPIL!ajoW#Z55+gQ$o|XP`VPx|%9$bD zIn!a^bbf~nF2x;&yoV0bXN%`K`$iirb!&P{Ca7Jra!;M8;cUy->&GQ8^(g#%Hw z)o&tVub%I%rpJ{(r;TD}_B!l1izt%!`fZe4j3#`4XDz>Jr5numxbZa`zLGh_eQ!8` zHbXp3-k>QpSryq$h>OCJM%fIw45(@$&AYp1ZJbPd%ujM52s`hzKSqC9<>7JQJMc$IIQgUL<%qs9H@Kq>x?$37%o`2T+r?E$)pD zBlAuk>;A~LZ?B6rygS3A(R|L{^~(2tIbrv$PcG~O;!>i-!FT*)Q6>uB6L$yZ5cFIQ z15=Q%TAbEK-|XqkS>M%ZQ}lSyNBg5y4%!Ulg8Wl$v#6+CD60Rb88J3CP9N8l_esRm zd|afvDLrEFgS|2JTx9th>)ZeKyexmVhD=&Dzu?X*Jpr5h_w$zIzq>_@w%s23s-Q60 ztJ_an>R4Wj+*7@J-TYFV^`gaKJ#6WCxhAjv=KH_B(%u8RkT;QCzHG_je_T=8y-VM( z{pEr*Y6e5!U}Z7iAc1yy0&iwledv4N{(|~iSg^RDBrwcHZcq8}|>l&X(J%O0O$cb(PGn<0t zpd^R^zFtgS*>_^hWCNhU>66()~QJDRG`cNjuTBm8%<-}7M!ygUGMIIuv z6N?FRDot~{4i`$Zw2cFl1%Hi-^89j5`IukB@t0)awh)2fJ%iJFYrL$bzH#T^hUzG) zlw*?G;rjRl&)))J0UoAvP6-&zXJd6i%U%RUQ+#vxUPaPGLRqEgn6 zkGYq#VwBS|ee$J{n-GRu>TKYw7UVIKVoxH_tT^x!`FW?4F7-c%GCS=7wwS3jNTv(9}! zn%NKhSob|bO%}i3hI?jd0M5$4mxKacB4@%|m9%)a3$FS*9yM(BsaV|hYTh_;v4N)! zNiGvZz~0JB0R_qnf#BxrkXf!J6q(l(mh1G}A)JuUwc}R~M*g))$aCP3bGk9rpDQ~m z3PE$@RM>6EIX9E(o zGZP41kw3!Ue)UcAfM}B3*Cr2|MMN%UHAN=zs#V+f3%@7|t2p8QaltD5?FeD%$6;la2itM(oOGLGiZI8RQ)Ja?6}^n7{EVu$;?tZtJ3`?8Pw`-g7&o9x^h??1n& zG|sOW-QiBfdaKO7^>(7#Q z^{z`ieD(gRtBs$#aerbw7y!<-55^^TXh%5gBTS*S>gg5QtMC$x-akRrGqb@LewY3= z9)ln6h9KtRhnphzuip8%Y;dQ>wU%;#9J^wWsiv_L-R`yj^m#^ubw+Q_1s;p`aVvA1 zIJ?1G>!^idl)~_!T!q&q)qltnI#&PeUwTUGzxJrreKr{yQ``Xsl*u682Gk_@!qGlR zA{En99twt+$jG0L=mOI*?E*L|;Ig1O=ne2QU5n4zpTHp>IiP{FsBPfeQ;X6h84A4; zVDg0L7z3uG8el-XVT2ukw3Aa#&cCeidv6Rrj~NF=048iAHV3$kjfDuG+XCsT-{THv-gwO9bY>XLK1bXQbfs?FnNVwnTI~oykK9e!0r9J+CD? zMFlYqrbkKfcfV^*f?mLht0I6{5%`bEhsSe9cKP~@nE!RSP8qd5tJgg2eUPIxkmGarsA3Pd#cm|$DR4PX}x7CjFtpfCSBe+bxfZv=In?uy)4v*zVP3jEIwpW?1!&Ky#}`Ip zjtSHPyq(h(+b^32T|AY-ac2M9Zv&Xz3ZrI2Yy`2yhcd%kC+G0`{2Dg7*6!K z5S4W?O?7lNdf zBYI57eqFtSz8d%Hds|j<)O=5@y-e&+beI`p`o)R#FaasWWi_pmc(wy^+-@|=X}iGD z`5{ly8z;Mim+hR&Tke$p{RuCg7_f{rB=9wLH6(jcP|kSC!~9E4y%TY2^ICZW6DqGG z8ho|Yee2@i&glZq>!#< z|I*&oJd#JDb8em^(1E|u=ICktz;kIL<*wS@@)^~!7`}P+e>$wlZ@j%56vpWUrvduU zK>d`ghg~y4#Sal!(*HZSz;-*@X+!nkOQmbu(NgXIlMd#?c`U!g-TE!yb-QchmyAzm zP=jwZP&-S@XHu_z`Rp)Er8ju<&8>I)qU7ODvxMY>txKU33S67m;{O_XeZBHp?`z(Z z^(puD3%M~AI=sH4=<4}rj`i%las5*bA0Q;mV3-hnLLp+2-f4d>~s*IJh9ZPTBoK*Cu z%Eha036+ZGz!`IVtc~}>IzeO5f#Xbfs#+?yv9|^O z%ksK-yi<{j?k?}t&zTPL#MPGt4tA%GDP8N{rzD)(Sfx7D3<=*Tn6V`-#Sd}QtOZ{g zIlON;7a64L0Ze|1I<|XPuOZZ@8gZ*#S#Tw3f84vsD5hi3oqUX-IPrgs{sAXoMoBP?^q1wx@WxGAT*!-wBN5`<;mdJHB{x4_utz_C! z{O+6^`rQ>Kn$(-3Z=QUfF);YS{l}~(w9n+ay74{!+hKebzl@iXj`UefRrLFFPX7D4 zT>W?CT}QOvhp;UmSGneP-{`*j1P2SZ;0}I? zCUv5_?D^nZ&r6L8-}=IR7H7m_CZH(mcXPVOtHVt-ErGko-XnH~BN=6;s3HHx*@k^f zOU#~!<<~zhUw3D&V@y*BksejyTAHM zLgkZ+Z;zN&52`mwZoYaJ3cQ>e`?8=x_Y(!1)Ro+;Gsh|Y^UNqM);W30|3i@jcJY4l z#FqpP4~G9^>#f7u>b`B^;9jIq+@TbQ;w~-j?p6xLwYXC#?(Xgccc;8aad$0};_mkC zyuWk5d+xdSACf#fJW1xBYp$`TjPZ5JTcM~5Q|5w=_K-A6uOSH-Q`==6pQ8387bVBi z=Rf5zpiXDNR+*YE_rYw{1BTx+-3-$0VNQNfLAM|(ImjD8v;sj^45*bS1(sGxLw7#V zS&xF(J0cj6AeR3H41J5t#4mJ}l+gE*>J(JyFg)(8o2b!19~HAQH_rnMMoR!@1E^F~ zXxFS@;|hB+&=tovD)jSb52|=fm2g3V^1>B#Y1pez&o-iDe}mTfc$SB#NY0Qq5hvk| z5hrB~b?aEU&5Yj7E~el=KpOqV+hh;jyaT#m<0g$BP>)n5S>Y`}ANB&MpT^Gn8!;Y? zk)H5HZgNSNJ6(d3O zb`^?R!dziDGU2iJ%WWdIUC;a>RECy{{>sAW<++@T_P`dx4#`tEaYpv(MY800E*iVS z%bBR|wAi=oyE_vVZuotgN^Ge~Cj4#mi+#0yq=exWBWn%=rft;+Tj&I0-7Gu8^qWGO z;cx_woltR$Tfv9QqRKO0&jbAE6()@>houIJlzz%EC-;OA2jcr?N7%l@*J1>K(wgTNXCRN5x7C zfCl{M$FqfLU&OeWF_3(a(cdJU@n09VHWk>(t1Xq)Y&2moe!X1o$C=9w3k>LFQZ;Zt zK0^8^7!kLO>+i63!Rivwm?!>22?cwJDQo`)cPVd|DJF*{i!0tBCvRi6f7SNk^QEp% z_m^zR(UF=jPgi9Yx!s$(d4SNtDAgoPXOCZQ{4W8o(IEog`Cln8)KLCg%55{>7LqH zSKo?f1gwqdHkZ{`5q-VIrW`F}mP_~Isx5=*!%zOgA_m_s=pESc$G`a@3Hx5P7(~Fp zUSwr)w~f&|a6k`9W9l1o2J8Rnx1q6jIH51wC`}VWPBlW)zT~U4rg9b`uD}%ZHFh96 zWDry)$iw^?E-c4thQ=3?3a~&g|!aFa7F+XQdAz{%0^b|}Q zcgK-cYUiSRp>)25m@tw{MAJ!G&d{>& znf{OxH)ha?9QoB}Im6XViNPoTu*~K9?vlr`*>!7?uAWoZAFZ)%d-D+=-SNH^2xa?u z`X22MDsit*jJ!tx^Y8%EL3$u{@0dEYZKDPhQr_eZ=jEo{K6}}txvPR zeHSj<1Lyq&jzV15-TMc!vo59yZ9P10&h`SHzF&AJ=OjXobF`LPM{>y~vK!(u;2Xe9 zJO@R`cWkyd4Pqs$8IT`GN-O(^*UN|dLoXzU$3|GTP74OvFE^Y8MjaikF}@mCU28U3 zq`YqR%nmNkqDJ2)ve_4pR$Do6$aE&C>O8!#@0l;%e`d~vYP)^N+&#p%$VvEv=Z@AA z5&8{e18KP)<1Hs=MN-UQi2D zk|kV5--A0)u~jjp(H2+HchW8~*4N3L5;&24@`x&( z!5DL?AvNvT7nt%awa`>2X=~Ybm^s1|ez7rWYuVBVw9jd=~5QJ=HX}4?Mk@tpzqITu5iQ;Yj0uB@5>v@MKTq%pkoNrv@|A zO&T7Wf6_CA%(~Jkebvq3h$+sv5l-iSr!e`k#=Pm~ZjcZGa|&rqoch4xzQ{Ss4ufge zZy4aLbK~2<-R%JKxvH-3v^vysaiNpNt!kcCYn`SMHY;^1O?J9;QR$ou-!p7!X*l(% z!)smfEEXm+y)KtYcvDgsnoqn6?K=w>K5n&Fc^7rtD%ugR> z4&N^PN|bm`!EGx*C;L;XFB7v6LWrs+DYm?Sm3?e7LSN2Npbs&0Ex41UOnq%tH7b}(CWX)szd0F!blNL`Ql;#ddv3%>= zn(MPZOg>o{0Qa(KcW3$;^rj%(PnkgF8@yNRGb*TJz$wg}l}kaay|gfoWlYbreeM zHC&`)r(4jnhfqn)Kw>HBvD}<4sl7+PDeECRfPeLHca)}vI0$o6XN=0`daU4)>(&`o zj@B*eCu-8;b8ia@EK~#+^2owWgpOZ=@Z zq$=eJ+8xC|L?$+ien(ikm^ECHe7uu@ZAE-Fo$`OTrues2Qwi!$O5J+b7F9l-%#S7; zPdRtYqg{!=UnByiJ8lw(lx*RIM%SX_Eiy_%=rx1riaNLVAyEyi*vxicC;?N3{b?@; z_7|8|fDB-q+;G-%++K7wIBasahmYq2@LOO?dj2bq=$Nx^2>p>ZM`NFY1q+8h`3vR_ z^#$ugb`3{{)`+Um>SN|?1oZI_`a%U`A*A2TtaiM8&5d{tzUg+|dYoK1y<~NoJKndc z#WY`BF9wP_8}c<^u*HIFuD#4!a)Q+WlLgO=93Mlg)K$3tHR=YzD@@HwZagpAE5qd7rTWYJa z|M&g>xk3N=MATB?Ll|6nJw*?oa127Ca~#V5n;o&w?!~hQ>GrU9B2uWd&GsKNBsxQl=Zx{WAsSGO9R^NdN5!VQ!y1LMbLA=aq6b;hfVaz~|TBB%YWZ?el4l6cZn&u4x26>U%$X7dhX{j>p1_* zfGtA*qSShU$<-n`{M~=f3!L_5Wy;jc;_qh9-oExwJU+k4cW(jUEZVjO7RT!;Ad(=aI zKl+i=5{7Wlv}o1{KCh}xcR72ZprbZe8&oU&ZSx&N)M5J;P^n!f4kU`1);!&k4BuMh{mm3Dm`%zM?Mx%|TG70n))v?NIBPL08GJyp>kme>vfQGpRBb z)Ye!@vaUG^bkQTdvouRNby7gmt73AMK7wEBWDUt+05Xp+aMmD~|x?Vg!<*K-@dRA=(NSTaPhr)K} zBzH*7v*ys5G#<*x+hpFAZRoeTt3;E?&k?u2s4{jmttVD_&qeLS;u}f|03*?nK`dXm z@W+i}FCi0p@T0Oxj0SHhOGEqH`oc>=lW+F14Z?e=P*Vp@pc^4Bu%f|(Tz;0}6M%~7 zNLQgx9l$Nf=lwVI*ooY1!k!B+{f_AeG1*@)Y3HSmv`G4H$_s|e6|Fub$ ziTUu}8Fh?ycp&M#&i2`9snsm1SK&ysO;fZ4;H;Bvw}XQckWROF2%x+{VO=;=TcX!~ zu^#627M+fF9qHI7AIW?EeX&?yO>d*FkUX08B!P3dr{jAkc(XSKDWAe#Xvlo->)} zM)+j8KnRX-jm@w5Kx_t67hiQ6*;Q`%ljlRmt+U+~sdAKhsNqHgY?V$HKC1!!#tiE> zgZpR2jLEc{Y+)D4UXs^CNxqAlBE{uXwJeWKYf;*6PrJce=$0_|@4n#i>>@MB?ktfU zcoE6f1h4SgYI*$r-e#J!OszTk=`X&>^ao2WjLhmn)0(4N5oKv#XLZ zaC%*$dSM}skl#&*{-m`SNT>Ca&AQ3a$6I%Lv4pqrTnaY%v$o1w;(ecNz3W8=Iq2$P zgg9R4`!bq&vmX{g`TKnyYnYqaQ4?hmP41WdNv*0gm7bT>W@qFFBETc2` z^FN3-qy3pNPT2|W1C4rYv_RJTDZ*~Q3;o>m*?$xjn7DI>)({yu-V zihj{fZ*;$2*n9kCM}Q#SB%}_oFEt5xjUVhhh50Z#GyC0Zt4_Ba&qKjqbFz?ueRv7r zy5S``0?YKu^H4Xe#B;mm147dR6zu#bbNfFcJ%D`xUHD8!f!`C1oGA^~5l4#+vh&QZ zs=Xl~gwk|ri_ZoT?_5ug2>HAzBvfxsu=1w?&PnOl_HO2=^v2qWF#Wxz3ovL?-)fo# z0W$DAui>l5Q|kf^Q(YA()L@!;WzO0H=ye&B<@}@Xe*Az#x}s`NqLs4KxnlNk=O^$w!;gSdEyFG4=qNusdmBHqNkwf5&gv|@NP3j zjZO)LXQd1utIF=V?VV2*3zz{y} zIP9MbdDYsJY6@N^=f1r7LMLwri|t;=Cg>uVFv_7QIpH5^|)m z8PiZ?gB`bpv&Oc(*HZeRg1D5$=QFU!l*^spW48aK-6@F?78%Yt8TIj`&AwEkdqm`q zJ~uB?kER09sl6QMn(cm8i-g{U_yG6Qu*o8=qrjh3cTO3(U7})dx>ipL4)XN;3??02 zSW&0$;eQZIpG^kq$wu%-P3u=jOFR~^EMd;{upj_QY^_MO+(_tNO^9+_?g(HVROkg% znuL|#{~l}p+fEIDaz^N0ttlI^{?BOLkg480OB~!IPNAhf-9G!KAxedsk^Kz<UKA<5Goyu|+fJ4gryV zM`ccUL~uB2@~Bi6(x{)?ap~!uR4(jUFr{P_EFp{04T^AZQz?+knz5jgn!%LS++$xm zwQ>E9tAH&R#Hs2Jz(Knlm>&pM=~KDsl)B9^>eCPnn)_Y3?IgGzDrv-L8n-O1 zb$Cc_F?H*W3tzBa|4mVk56A=!_siicpm7R&JtSUN{LJY-z^U4weyV(4B@yzH+)9e< zn}2r$)=#sbnrn>dEk@IY(#MP8*(zz<%4I|pf7Yg?GJeQ=c2Ybv6A`h+v>k3Wz!;|m z+Qi$|jicX9m-}AN(SqdwCh(~F5A;d9HIjwYzbJeJisGzmVz^c8ZIGlz9heoiGR&R@ z3Z5w?(WkbpeoCgkkVwhS9}{cIf+wY!>jS=8w1<7+b^g2Y&qaA9ftKI$)^|x<9X>#2^D? zh}TTPWR?fgKFxM>{BV4d-iN}3?zcVFXw1DEp&vi1mlUC;{H6(3`?)Tl?t7Q;EnK~? zwqOv~Njmwy9y0Rhj&{01LQS0PcX$zFQTPq}pO3kJ@W%D!)H}0%ya*_!wbjrO7f^46 zStgaHaaAE*iRy5S()E7>*mxNHGp-8RBegb72X+WAezE#ho~@pFW6CXN8JCevSmDyB zQoEkcjDcdkFqzK22e4&;Hcn+;FfnEehj&MIwAc6!p~itMNtF#8ikYE zrB-c?=lMt>hg#Js9=g8ArOSxhFnur(Y_0}_!6wvP7r+&%2^P?~{oStX=8~q zF&36g&G`=p2EsBEkx&>Zk5P1v^M2`BEibA-FWy`J@x8LJKtV=6`Mc1|y8XJf^LA7Z z-}LPKq-mO;fXgY<>-EzulMC~LdB_{G_#(9A;lF-96!=`IhNa@Z7+((L0Ondkwy*wy zK_%#^dS%C=ht=xjRhBL9Dyty{@5fAw^s4Q?^yCmly*O4$tE?$y4yl7HB4Q+D!C(AI z(&NkVEQqp_|9TjM17rRMWLun;)EK7z`qPPc^--HdsHPg?$Na5rd;3M8^#>y=IXuN-*~VGjWrns?Gn2Vmw7qoA=YMeGY^-61uc&Ii0go*_VTWM`(-*tsstsd8Jiezz(5h96LndI|b?ME9;lF?+Vd9DJ6Aucta=meRv zl<(!-V`Dd;T?u&IUXPGrS|e)GpD(NJ8L-6E-Y`pS+4ebB|4s=)Lt)F7fW_gZWCyYc z&Kr-#=;Q+WFtJ}nO(0(;WOz3bbX^(#P>hNaPmYfX%pH6lnYt8lf2m?|A*&%5i{;Qp z!VvTImtlb;E5;5tFF8*bv|J;rcyX$8`nqxQT=!)P)e<%VS1kG*Gdks+3G>O{WllkC zHbGPlY|0L)Y)|dWwk)v|+{_W_k;&)WtuQQS>eN(Z@Z$L{JbI?{=s!JtgMxOqQwssk z?EX4hEV}fMCXt0>^)k|Lyo{y)0ca9){Er zj8T~V9$vm(tP`L9z8Wm9K&Z!3K2N^Z!z%`~DUv2N^H4nvWLs&xKydX|i3=I`QE95I zY@(-P84I?WUS=s|2B0}^HR&VxNT>GZV-@8}%)Lp%9#UrKoQ~VDUuKQUe8V{?L6J%@ zJG<$~dJ{c@h%p3AMo8nq&2Q9FBhU0!qHTAAQw){eQ$ee7Kcv2joYc1)zh#!xD986V zTE1EC;ph22svO4ape-!k&ro58a_n+CgW;e{Dx)a>v*?rnAWippS{j_KlJfenbub}f zP};;()#=+O%18XR;?~%lH2jgLmoG3d4m%E2#ThdVDJme_FdKCmJKWU3ruwCmGbT8P zx$VvPxpQUj8b&)^HP821WduSF5TesW%R60_!7Yf4@^_9y{6O3FBPR;-S5a1;XT=EJ( zZOR!wNWc_`_g!n-1U9XS%>%2oVKL1j;ndPxN*=gUAH4z z45Hug@(g^=V15C<-ysi#2$|xw-tfZhx(wIf&oQ`X+QJ?rLLVgt!Zrww7 zrpGI0FdZq^uH*iybl=p!-PE2uaV%~uhR9|qrN$Eyv#86L-wo2^@*D5aOT zW8pu=O+DeY;~34_)IN+B+Wpl!gUVd@J_S+O4Ri5NEEh*Ntf_&;;rO)knf6j>`kZNq zE9{>P3R{6|#JdGltSD*zo+jFyCpDH{{sr*sha&_0tQbUxN0TrO1VC0ys=#Q$m%7k8XA5VxFgP=e zpXze`nM1VypCVmF|V7*k@#;Ci}(3u zNA|C`Zi{p?#@~slfs9zf{IMP*Ns24I!T6uUM-z=@fbeM4{d*fM8T|P8pnR{ogmx8>INwQvE-^ljdyT`|hypSIK z=iG-HmV4`6G6nHV5#8Kt|A}sO*m1{`%00P`*is4-R(b89CJLfdZ8cdv!+kM=FZ+Q- zsD;y1>i!3s=|9Ioc85GI)uRssOj&(+Ad*Z>+s{E77NJ(}h+vh!{%o*9k|TYyC!Rra zh?houX`GZ7Q{5btdlPF;y<9|fBQ^Apbf}U?P;r~do-iPNyS`Rrc9`rR%Hd)=8pZwI zFvUR{M1imSjNDy|8b8o#mcyDr&rxEb!EF6q=TRH2>4PQ{PWjg5U9s@Okf&aHvc-_I zBTOdjSsWky?4^`qSj$G?A)ogfN<3KV05;SM<6`}kz3_1T^m>c-i)#Gb!`~rA<#-HU zD0jS@82VtUcFn1cHMJ`-$dw6_zGP=X3S0Dj~m4D60Ev+ z?=M$mtOG4OI{bcR=`)f_1mN5Efz}P#&yVD<$vR4-(_YB7nHlqT@e{&#^6o|^2HdAe zWxwf5C)epp6tjPwzU>FiWiLFQqJq3@{fCedFyRvC5xGh_nrp3GpUW{kZRaDV$z-)3 zu0^`5HV#Q)FfO|WA9)vQ5Po(P)Fh01ekn#Lr*MG#+ z{8KlcaqF-*UYpFS??{??_|u2Vq04!MMF&~>v{wgnxMvFv=BjnrBUJ+Ph>zk}pmE{w z@*9D*$8jkU3IVSc*UglsiZJwXsW9q(e2Gkyg)MuR7DdFTt(9ObD!}+7kZh zC&7QoF(MH`j$MI^=_vJI-%GmOnLURCRn-*@`cHv2b<16jVwdONz}XQq0KMR`uKu?c z!P|>LR~DAm3q?8eP1!-eqvncXu8DvDMauDyI`Qv#T*w*TbmaJYmbyO;y3WmZkzRtYR0)E%v=?~#%e#O=70JoTbYCLTWHerTG z6r68!ViLF80(I#Ixxv%CV+gsm4L~>{IFNH@fBBFW_&L`#^P7T%`B$bT0Z9a z(>3Z!AzB zmtBtO;3Spi4punWuECOI4f7a;JZkl{mC`Gj8jbum8m%IW&0g(KH{UjrvY*?BM!Fw$ zT4Ri+;BX$o105kz-5q&n16NWdWd>0oNeoe~LMfdJ5)U>UiorJs+{jkg`V_H^X3y`^ z1h--K!%(}TthpIdd)s=|wPWHSHM7X~-^{9o+N!`aTape4c1m#9sWfY_i*lscbFSH6bZ*l`3{Y7muS4PK)ptuZFS z4@3)%Y&iw|;CTyf&)aJ^ymji1f#F{5+0tp$1#;Issci2S8oSXSSQ}&n!FywA)p))E zZ1`i|-am=5+^11MRv{*z{-jpM?|SQO%OXc%Nm~2AuN0>VVm~eLK*gT_*;)pi(LP$- zQKX$s!iV)N22NENoVJJ}3MT?u6gu=SPLy||0s7OJMcS!IJH4r&XteB$oHK|Yy?{8ILm^8UVyq!ijeb5 z?Dvx?odw0%kQ(wR4XGLkmx_UOY_*xYTqUL6;rlc=u-v#e0WYM*3vrxp&#^tm4nLE6 za+qlDTlZt+FLRO{^On07_a}5#RqfQ`?VGY&#RNX4Qn67n|Uu49f#gT$x5DI%X6%OW~}k#5vk99ilfDYXxn>w_pL zZ)43#4;z+dX7_G}U%RO4bF!H+g`Th&)DQPXzHhFszd|1CzOLh>9+|Jc<6S_@r8u_d z?7-gK?F_n&85koP39l--v4g=*th?d&0&1MdGeidG&J%>n=C6Qi_!vUPoFl(CIvut0V`0n zw-P<9*zkWvzF}!-2irJLa2lP`A$~dAcx5DGglhb*n(6w%>jXDlQPI{!;VeuAVH{`lSv( zXFRW50%cq4H?TLj~30FjEWugN&qC3Me6=x+xjC^*qvn6zK!pO=P>e{|Z0=DX< zG(k;sfj{a;UF=x3(P{q+*VvD3Sb!1jQm#X2iQ0~hRe@qU6#6@+Oeczsl(IG<&Wrsu zX_`#4(^BaLYc8%9htxxKp2^e5`w7-;XGh9p()uS)kkHOfTqlmp*Bs#x4~&evP^QNn zh1szawG2Jt*`n!HO@D@!#0W@(`TPniNTa3?hRSYcSa-evr+)8y@O}L9oot1b9M8F8Zz~|*GEL<5+e&l!uSHyej>GA^#zzvaiXgI9E%^PW%4}Ab zPM;#|i$a+bDntCBQ{-`sUt}C~;%@Mmea0U%c@I5MdJad3tKU}b`U;LhPk5*bQjqcN zgaw#!3DOwY%}MQFAofWLDLLiN2N+bvDfmQJdWwV%Yy(s9JNpLsx7F&} zi}8(A$!vX-Dj;o`b!^`c0B_9mdOd3URCoh68+`XVs0JY~CO`j+e}AoRoRk9#dSfX3 zKNlvBU)Byqj6B|&7yF`C(L02ci;m|hgfxBpvWg6*rWq2KK4R;VB#6CyAG%<#EJB(x zNsjT^8f1G1yK^RaoP)ooXuK=fQ?FUtieWz^%SdP$sn_^5DKmsH21!9FXfB=Gn&Hqm zzo3(zV$x{v3}h3Rmv_M)c$1)_z`E2_T*XbGU}??@;hQQhn%Vvg?!8QU%K7 z0Fp+N9UI%O>8T~+4p-|9#P5uRVkobT?Avo6aBj`wa2RKgS@HP}cxQn6vKva#6z|}V zJt?9IsyCl45ExEtpUC!Z2?7ko$9#~k=U(j)#tWjI|*yByV&%hIR6qqKa7OH6Vz$Pbf7RXJb3C`nY-~_ zThfCZ#7CE6Vr6P@1j+G!Gqa2voX}lWp0r6~A{6Kde_Hpk{#tm*>x9_P!+^O6Q$DA% zXGP5apN^6wqE9-`o$e<%_b($GY7WtOWkDbh?}wKXt4o_eud;6jm`^`qV8O9Pd}*$e zEJE#nJ>d7FVN3Ob1f3j3Xn3WR?~^t<^CcD1dD5f|X8*a6mXUooAL~qRF=8sjcRFVe z*O0-TG1uzT2>S?<_lbb8ASUXgy^8i5RCGTZOJ9d9B_s>$>aCejf`hA9RJd^19IC92 z3c&f^&}ZIG4Ju3l!_c$luV0*ZH)q+*7wZ)Ol&ON9e;84Sa?ZpzX&CPeDW#7ZD7&nkvXU?*J-#aO z4XS-)J1R}WUX9sZ%b zEhFmsT@HcUCjT-bN|>R6+A4Dp7=TPO1(J-%{O)ZpX5UMpOIGSqMff`e`#>ycgs(JoT%*WCWtq!;M;<%d;kU zrrSOQ9# zUN2jigYp^GnceSKmRXp24O4F=Ep2ni8MR^Ru}O3~zc!{PSV-o_g*k6^2pW4qlS{P; zgC9uxCbHlYhrDLh{W+pQxK7z}_)LH_HU5F)VEOI@lBhoXz+$^|wdV5_uaxOjw1R;0 z%w3uJGTuG*D0QSX2M#46?2ifWN5Wve79`Fq>~KOMOHTQ;){FKOOF@O1P7-0)7R?r% zplz3Vur{kw#~FNXhKz2%bi}kk&4tU+vRIUYU8#2`sO1~SO?s>nd(S`QF9)<^XD=Rj z8~5_i^xEiurPq!Fof}5xT*1uSbTMiX?*}2b6ehc*8E&OfQIo8PlK0P}ULW)J0JWNO zz6;IG)hcj%gYN^9$ZMB;I=@WG7z77BgXddz^rM>p7m~-A?uUYPw}Y0}^0b7;Lcu!@ zf3B%)Lt0VN3TYJnw;f*RA*?+OeD(hbdmihrlkfR)8oh^`H5EEK_II`gG!O%?<6V`i zQj}SlQ%<|itA6>ic3cH&Hrau4B^{z~wpyG{!RfxnieZR_bY;ej^1{pKtm^JYEr&+udIR%-Ox-d%fwJ^SW=dw_nbT-*HCc z6dnfh2|xYQSBDz=ot{^!k8Ui#a%-*5H6l~U`Q4^Tp!w0(77Syli0DNC>f-q~`rDc4 z@;D%iZ{Bm7VxdFh zH*r8PNZ{kN>h2G}Cso_;m2AumOtA$>uBDC4HDadwB2MADJMN^g?m-7t`t(0*Sww+? zP1M8mSgFDqRSckbHI4S313x9*N{?ZH&x23LUoe~_@ZV)8OSZ0-VJDy|mDdQ)@bewKcdQM7(@$v&L`PSGUg5b4fka2;D-Nrl@ z+b(m$+nRoCj5vw6$1c&I!jr&D4tDJ(`m>N>dU*4_SbTP|SE;RRFGR2(_K|8hKF7x#w zNpEY8v3Y5N=9wz9u8@u-KN&1-14t^_wrwc(yk1%3-A|qbgWc7%ggUgQ9)%I%xFyyX zamWd*nlUG6fVpB%2Igj-_>miHuJSjC9wU>n9qzSraNKZi__ThcrWU(_*X07Y{3N;} z-~^D*wt{T=_}f46e8MnTxv`y_pGTeqO{@i`_tXJ?#G@PhGlmofZTSP&1D2|Gq?L$a z$Uqxq%@DS>`}OO~drp!mZHN)8=$KFtiFTP(kL}J~oD+w`2{Ehpr@hU?M>lfi&49)V zYLke9uu%WupL4{!oO@EA$e88fLNI1gyZijlwWDN*qS;8QKbg)Lf-Fwh5Q9NI#$-V! z7Ur@)Jwh)jLA>yYyuTQOP*93Vqj<~D5b`<@wLh_E_bqD@?R*4%gXeiOo!%EXf}krk zvaIGy?zf#0W9>qI>=qY7jW?O`d_@i7Z2Q3Z)|o-l+8E`m6?TV0elT53oP5IfR)Drf7w~2MTW3e7*>N4$gU<#wS7Ar@8crshyIf7=#_QV>#aW3}^vvz& zpaDMEFYw_gNeEkH{XdGi=VdS5sPNUxE=a@&UOf&)YUG4j>$}+N3(2mRCs616$KiMf zb?wE!Hp7jdzYIKR{OUjLJns^BJ~p{nZ8xpvw3)>^yXMes9c#qOG$rN5$bg5tuiupF ze#ny-!((>-BNR61_3EuO&tl}Z21*Hi+@xK+L`Ip;U%F0rWI@E*Gy%E8C!w8j{B3i5 z!dhfkx?;x_XYPe7Uw?eL%14I_Z?%*bWCwTzsIHAw{tb=EugaI1ND8IG`0T^f1 z6`HJfRd>z*?||oD_@gcfjYX2foF2Gxo>q0=?L z)a`i5WuJlB=7N*n4)E9=`Gxtya+vIm>~JC>Wg5^q%HC5kHdRpb+KZE*j zfM&!oyVH)B=!WA(P2aPNTRi;&nGZ;yU+KHnyY~JE$Q4mO#-k~b&M_jlElZdN@a@eXF>idh>}2Ts|f$qVv_pv?M{T!fspI|Q;}7KGkBY!K07s7Uhd?0G&HH&qqP;) zK2g2VE&+j@HJ1Fj4xX$`r=mFftQ z=Ft%F-6M}z8vVf>o;e0K6ww?*5zTSw(dYjg(L_QKO=O~6Rj=%%((5%6A9k(Y zp|BTbngeMhLly!h=Pw7KL=|HdXv$m>%M)s@ushHp(Oz2*|s}slhg-tIl~FXQ|6BP7qPKVj?z7mAJPLiq-byyyUw|Ur-VE^hJHz*R zq7yLpQsyo6wnl*)Nza~Hn{;sAELAu7>x?LLb)6h5X4jNt`WVl z{QAt$2aXez20x1l%ap*F)A@|Vwc2>NtaTgNSo79o_E6Y3(Oir8XGG;Dz0P*#BzBbv^Un)H99vpu&j@SE99bWmzEkU~X0VulQO>~czreyLz zSweJ=CSMBzEEaCoE+#8O8u(*D`u}u&GJ=JSgLpRyDy2zzZT#&BtY0;m#E-v=*F~=o z^&pNVj~L_Ur-g9+2*Q<(aREub+#QNoVo<=ah@xydC9#Sv+}S;PW3j z__yqu675)^c^>qa0Ky3B!d|Z&!DG73_F#(7&OJErTF60JQG6AetxHNmsvid$MNq;f znVP+~PJDg#fqRwP1xGMIBb4og!^e$H>RXp(+G0c518_dWu{*x7@e~)b59nx3V!iRiU&2r zLV)gEvppX354fKW$uX-AC%W(J=a1^*W1D&+8|1mr-ymXf7+d%W#UP65!daH;A@wB$ zI1|YwJ@oaowy%tP!9eC=v3xJ*nsMunCtH8$l3U&iIv-R9)&U(~8t$pLQ$Xlgf6F^K zJSmaG9KXm>8;`lN)3BsA=k!~{ex(Iyvo;F!Qi1EltmS_|HvXgKcU!J$;U*@;$*6OW z$%=e{Ex!Gn%0|4kx57SteXxOs*iz*mRnVB7bo*BK1QC-Q-Fi)QkqzksvO-V#Cduhc zrSlph@58CzUHf>FF$ZMpXSmM%s_)gwV5yT34eM6dYL}W9LL7cxx#x5F^~dYD5Ka!w zu4&!ovl$7{kBJJD#7%ue#j3qH|8Nc1tr_J!()IW9M)20gkJ}T7>lv1~q(~!lr%6Sd z`U0ZMK_e&&*r+)lt;2N{THU-r-~Cl$9woi9Nj0c}08u_5yv#662Rs|5 zlOpcNDXoMq{K~>(egJhi2mm=`Hv#%3zW*}=1H4kUgr=7*RT%FYO`pG{jx-J5bEsG) z9P)hmXr+(=syRb&P|4-yUfzu+T`jxLgP%I!LY_aE3SG-k-t`cd6g+F0?|67vn6aAJ z4sjh;$vo8^G$05PdJjNj5(9oVC!fSnP>S;aa=%TmAf02S5{N&ft-S)g9 z2gm*ib}lg+Z0r9MVzubYwseok>EBDMG*6u{Lq~O$Im(&Zbf)TYc77_8vi_-mtnaM@ zHiPX5$*Y1x^jwo;Nz6z{DcpN)zTMhW2KT=@DK2fd5Jzr))tBoMa=Amzt&7W74+O7c z4?o2#Zu8xv%~d{s$I3d>YX-4;Y&LA{Cn|4EZROIWBAGCmI-*Hj6W006I@gK8390B` zJ8JX1QmH*-V+x2^KU)wDfjC&x+PFVSge4j09sM96PAKx!FV|u}r{WO9M%arG==ehl zJ)S+G%O;bW_cmqYMZ;S2M+Urgzg7L@UYnk`@Zp`sbOlNeSU_G1!vupWSNzjtVp@Vp zDcW4yjH&}m@+OIuJh_i&Q(tsRap50BFGUy(aWmGJzY>;6pU4;$ER9wWLW4kteVd5s zgtm@B$9EmMl48w3kp!Og)jL@8x6@jX_Oc5D`yRF?O{rul4G$gW!f-N>k%0ZE|9&GR z&3?L(e?R~MqT58p%cEwYfr`vjM#F?Qj*TNPBR_Q{sYsCb?mgnK>r7rJaSZLsd@hIa zEi+YGGQdaOR)!w;V0xN!ULb1faolk^uP#s6OZHm~va z!{rVAJ!wGFe5D(0&wRbT5{f->bot?o=L8=n98eeQn3xaTkH0N(2U$F=CK4tTiJY99 zfPdjOF=uQJ_gCxyW%g)xFKHkd;YE8Y(9m7`#dB|)qwyqZlBlAdw5Rp|W9_Y@qW;=< z;UOg?m2N4KM!E$B1VK86mXwB(?o#PcKwtnVK^Q_{=$7v81{tZLyWY=y&+nY)cb@aE z_mB5HYt3>-*MKv7-}{d1zOH-!`aQAIdweOW>n~zAr(|STYet`Hw|N}S9~)1*zf~1* zB;D&~-&~bTYn`obGw1Gu3{#AtIw8!G1i0XM3>m>&pezC@~`WhCVS3nlm-> z;v#i~U~+1}qOH5o?)G|KU@zf4-djk?0}bOQ03m}Pj=oU@@k&Y2wN!R-@O5VeG7ZX~ z*jUXv?EZqVnXNz}$n?SbcPM=Jof}+(J2(=B&qgXwb)h&z4XFNk!|TD!{}Z1jL*cVz z|72LuUX==g zVBUH;jdhBqzFeo>bqgk->HnC|(BD|bH^gf4S*I8buzQ4x^YC5qc1jEd9+1a#2~7*( z;r>pKK@*pLA#D=cRoh$HLJ-fYtd`S$vJ(R#%9T6wp4pu$7K@##BZf8Ew~!>JC*fMW zj^16YP`0;cAHGWl#5owy1}>7B2jGLVefwfdVqHx}(iV9gk?^;oArM!)31+hz zTx_u^vn!CtuE;K0BT43Wp<+|vp;x{1y71DAle1_@+1;Bt_bql6p0S&IoBhYS4r!T*y8gc<&wl$aZ*D13ibVFyqsK zK}*|h9yyKY1`@F;(B(U;LJt5EZ1a&Z_7V(}g$RrHE{-WQG=Y;7>pMJ!VfL&Sd$bHio>( zr*I@!V?V2`@h5R#l#I^{M_E0zDGt#Z`xa;$^qL6COO%VA@SsewJgyvnP%g{=fNB8J zy^+3r&9%KiVC&56RSZU_p@wp(8)nC~9)<4Dd zZL@BXm39GKw{^aR8$u?J#(e-NtiA;q0d)k;@8vJhY(iIH{Qf~thGi& z=X&UWU`8&NSgip()YIw6B}}idm^8XCkpL4w94R!;W&$&JHtw zEAK*KMzd8OUtorCH8g{E=bIF?Mm?d{1@<>oWv4k+)<^U{yFL6&Pko7X2RSb?hB3(B z-h%=c82I06w-8cGD~Y@B=kYncw-PEd^*J!PIP}eGZJc_s(=_k#G&q(BjWQ1_wsj@C zy8z?mPIl@cq_OOXx{jjS`G3v=fZ18)dy;P|H7x#cPoKE!jXJ(+4D{TZHOT7U)*i|_ zcU;PyTDPGJ?o|1i^0__R;J;XPYehiXCWfzhZY-H$+cv%|P)QGxDqu;D2ix zCCi4R-WRS2%njBvmwmVRw5>!cJ!NP4X9UFo_Rj}P>cu5yST6*dgL~~J&Wx{LS00>| zn|l3*e&sb(f2~|O|EJL?=rPaQ)*k|hCXd~#}iyK93&$Vg$1(+Rz@Dx0s@l6U7e95b11 zK7%y6LbJ`7LMEU$>YwHbFHh-&U(1;4t1}+jfSZ-8^673w@bn1J8aT3O+Gk-*=6|4>(~R5 zj#N2MRR4d}*beF)BcRAZOr$jG)L=|NY4R z5D%^Mbaxtqt=gXKM>&?GQ4@)K{}$h~%cr1KgK2ptQW+4{+vW?*?_YhuhssK!>hl~y zPK)N`X%9n5iPFw4u)PIA)$-Sb=#~;Cr|{*g(Hiw-il^7+4s#6_ysdGf-dFR$&CUT* z?y;Db`rhBN(#uYx-lFMeU&glL6R6bH)g3LIXN}{v{$1A)FJLY|8}#z~c!DV@=Q|cV zD4{M?`+`8DN|GdpiBW$PxOpZX`i+Y{F7xYRkGrVD+jY>`i1Mq}@E{g6^7b%*LgR<8 z6Y&5*4Htz;tDgiVe~r%@p&_uq+)yS0^SpOpY3vu@3i3gl9<;u^yu8R@QOxRx@F0wn z=RjkAXcZ*Djm{}-q5*Gm!MfJTQwbGvRXj-inrzox>VWcWO^d!|n3?r@3nOZco-W0m=R>nBjVd?5)lM!uUb%UHl$Rh1 z3ZmL4f_3r;?Ix9`2R<@lZteD^93B^2IcI7g-QsKgvkGK3v}La=O@3agah6F*odooV zJ<3!G%ZM%KlPQf@){^>_Dcjly6=`eHbcsurM!tG-w?1cprglwhF04CI|IXQVk%iJE z?3cHbz;3`mxNoOv$L-B6*%KQpSWQihE`)t`sfP=F=YgF`{;`#+NZ`~6VIO~;!Y0+{ ztVfs!->f)ZdRqve{by1h?g!Qcb_2aQGn27Jz*tF2M@zx0iC0#|Wr6-6`=wKn*fEcz`-j3*IglTEXD-sMB|Y{3TtIcp+l27#3m|=cwRz>Hg4-GfR4T2* zAB)-x3mVSx*)U0+VZf+jvLt~m8+E|eK#Z#P*PP3 zig3#JyUWr86`ZD^F&8M=rVsh-ja??+N=Q6!vh>&YRS=&NIeOvGd`Wq>zMb^$n?)m9 zzk4^$=$2hJzSErC97fM^CoK-=*h#nYf<+;Wj&GaEn71r@#I%FQIGu*ERye~aJ7+gB zcC^-j6TWhZH8DNBhqbFHnqZ26&bx1Mx~p^dPf!1sh(d{t5j#ZVcyr)OWr4-y$W)`% zbKLhNIm?g2aB;{-R^%Ve0kn;vtpa=#8-og)YbTJ7%Es)zBr|hYOnfJVqL@Dh)D~op zk#`@@OM^IYESaKr20r=7GW^+C3$@h7a1G!(|z#XGHUU>B6rruAZ{IaB-SW zHg>xhA%TmJ)^~-tpk1y@{wqQdgez->m+y&G>fO-F+R?OWLrr5by>~GN{-q-D_OPG;pj}~$z%FDJ} z>~kkwcuF~ptFuFfMmZ%>0saNDX4Tz^%@hPzx=qR49d=J!-a*5GqSs&NV+{2^tp90^ zHw`d$LSyMrw#tyygR_TMeTRip9@lX6%m5t{A!i^GI*vSfcaxF0UO}BaS#TrOj}cG3 zZ!aQ&cMykrA@#N=j+mNBbSSsNoNw^KG2?(DWegRG`UbR*-iTp;xpDv4NF?Y}KK5h< zLV&2A!N$-@DIUI9b5y#1cYRm8# z(#&2070}S-*?_fC6OewC`s}xqERohO1OJK)m?ue(`?pSw`XK6EN2Z`FHkuV4IZMn= zTf6mcWKjBoR8t2=y#C%?DR_EYj_%R@Z;cKSZL|U_tJaa=XIfJcV+x3vXIgWAaArt; zG@#2ytx!xV`B{8{m*qQGkv`+>O0UdY!udSe?rzJuiV#id_ZGA3T=z1O4!Ckh*9)sx z9_}ChlO9@!cYSyXt)%zLO;`bMo#L#Jy)%|9Am98>E@70igSfd6*|BuStiRY~Mf7+R z%k}>e#|^~9M1OXoH4@_-?}jvDUxsby`wje3UhbGIJ5;r`)W)x?t*YD84Iu2HXsq&cs(jOL_dHa%YVUa$ZYT-JY2;$xs1 z!|O?#9W(k+e*Kr|AEL>My#OaCKI0tEO^tlD^Bj|ynAp|as(sY5XVvA%*m%9aJr$lh z%)k~B@gkgY(1lf}1cc}!g&Lx}03flfJ?1Yb?4jOCY5~`6%=h$DMzJ6tiE^4VVf|%I z^GJ(DW0zdU+w|7Ci%(sgPrLU+Eehq04o1x734B1UtJ&vm(nF3)LaE6j`0 zLjcr9?sSc-=`8XUr}`ds?njBC403k44@6P|I$*ecek%jQi*tPey){fxR=*17{;J$Px*tApW|+e*2(-`x)><|=IMa(?aqUCo_Yr{w7H zuT#qqx9jWc+<8Lrv4o-V#y^~4KTGd0V;CjZ8bA?Caw`~;mgK$m>kbjZGQ;a#!%5u> zw(T4HWRiU*S~A{yabr6vcg9x|e_{~Yecj)lAuFyV9tXg$`otj8`QAtCWnhMuq0sZg zv2~9jUa6G89SGGQ$AO(L#BBFa3V<05)z}EHN21vGk^NH&)tJwopw8eE9hz}Kl7tin z{(=-1^UeIX180V-t%Pc7D8Xuko-!4@Yc;ilVvOV;kb|D0yVQtZurZnohUiyK)S+uz zOmZ%fOo(7PpEk~4N-m!?gz$?An+t~+ib#}#OjhAy6zwi}ovT-Wybq|MiW;j{SZ^21 zJ~Dsp-bw1F>4v@I=IWW|$IT{D;FQvbq~S0dOFnb3c*~G7Q^-8VuvrWA51)p4GXK@P zf?n@ABZ-(^API^mkkbGdeQj@}ui8gl4?xU#uK5M|7-NGv>f>~0q9L}Y>QRbOV69di zSPpZoLM`{zOTi*ziQn~8Mme#HDIl|;J)FSNgRao^3TGlF$6XR=m9+NQ z2HA@8#H$9p+Uu_@pnsy0`@d3YS?wo*)@l_1d!F|?V!1K^bfbSfO|B~*DC zEw*lW)U9S4ZoVAM_ojY2;jhJLy>NRhce|nO-Y$?FcM?Htr+@98+P#WxlbUUE6xob8 zHE;QbUrd-A`-(&IHO8a;-i0jKz#H=tUQYa$%SD^X&)xjcQ^1A0B2YH`o8ACb8LFeK zsgLblTrmV?JBY;^xP%4pN^HG!7Rnu5ln$7qj;FJu)xQJZS}0^p%PC#89{tg0X&+fN z1*E){T^RMFeZ>H~P-*yzUAv2Cr|W+*#}njwj3#z$ZF*(TLlmbJljr%Fb#p1&l&}iS-Z{zkcGwXwmF#!+CKq4;FBz zeYcGgpfY^s8~Mja3IjpAE(j1_iF_?l{7czcpgF*q{#mMY2vvV)crH&Nqk&h5=mu*@ zHD-|$YAqL=;7R|i@qeRis-*(!saEGGyoL8BXk{VwuTt-j(kFvH!?bE!Zb0<+InYe~ zzpWbB`4gT@JLIOUsz`^4SJwECJ283g-rn(BiXx#HwpvE*DxdFbLT3)pfEd$2m#N3_ zAre_;ZI9y65d*Y0NrFSJLsbA(BA@a231-huvh_>KSfH%k?C8ea67?)i&024RC?mRu zw=Q979i;X-0cqu6D~5%AU^v%oi+u~1arqm94<++(auHd-s)5lrh`n`IZbSH2;Hu{L zF%DM4za-0SR-hJXfVFIz$Ni%odWy0at4F`OC&d7}Dmq5a&t>ofub{5e4nxVZld6DE zD{82z7Wnr@D+dbE;HVj7GY-Zz`YgfSOEJ7f*64T3TKM|u?pvpG_doBkx-_!ofgCCO zP`q>H(De{d-ztlFoe6C`f%sldU zYm4KQW=ao-pF*e}c1U1P$J6xSMAIwQ6tan8GcTgp%>T*F{f^UBl#?UZ6oUUy4{o2N ztyqLzgkEMy_et2LR2*5qo@Vei&4ua3o*N)ilaq2_dzQ!>C1Piu4#!D2%b1S}lnOjN zI&<^Okt&MEv~A8Ms_s zUyhHCs-#6&IdsN&@;OBH9=MkTpap31mS>jh);yyHj0Kq!42kugVgAPk`T##-H2ZSb z)g2|r*lxV8_OJm+L1H!wLg|&P>h7o{avNDvGVtHjxG1WjOCRb8-aB&gpFLJFZ?jtM z=HU^_*DaaTJfFj0R7L23wiz3G3mE6D=g6iruBa!< zIU=+EgWmvX(ilx{vkw=XrHm0*<&jW2e>_FQbP`0-Bb__UG0TQ4h$$I zMY-~??NKnEhNf>zla@D5x*qkI%vRWChQW8(N+ixmmxHd>Hj%Ey;~AUBz_%OJoqfq2 z{0!x)V(0CE6Hb5DgIfLI3Y4=GCh;}OK<$e7esjqp73$nlc@Azm;A$_TOr_q}p7Y=3 z(@+6akO`b8T^m+98O5l0x75NSv=t(Vhx?^%{YQUL0+De|=i;D_*yilt+%>(jU`$~L zt{1BE8s_>4r;kM^h>cCl-tfu-OF%_Z5wN8wu%4QwH2lKCl7YT}CG*p(K^;H}$5|qN z20N+K*~EIk#0ii`FDf-EoagP{k2S(S?DDG{EiO#5cox?I6m%2v!OKq{kU}p3@;Jw7 z`8|E6Nsaj8duitt=(t0Y>I7+FBFdN70s~S1GmfqFriR_10u!89Wgf%*p z1}O0BypUBJe=Ku-s(!Qwp`C_4^LI+}exX~ni9jfCG?xh6-vU>K#k~-)-u|*?Fs-;+ zXE?~pbO(F+3K`nO_cDZ9gu;{Zf&H{c)8v-gu{YqGt&1IUl4X-nr>@%(=q3JV9O0iv zN4`i$K;d}iV9e3^Dm*bYR(S}*FJL<$NF{dZ3hzuxYai2m#LCKKVx+F64C477P(Bgt z9sQu##GoIH@1h+;{RDQtQ0JODBB@*Ug0HnsZ7hG7ujKON!-c9T)-CuDl1$LeKkEhL4LLdJbf1ph<-0^e2fyK#8HC*)9i64X22^@D9_5;n zz1@&&Fbyz?-AwwDRJsF!oPWh`V@fkn-Dr0Z>sH~wO>{vQTQ{?A@NA=7si5=Zi>rsJjH`u5B~kv-4~+hvWV=d=CH;3<3!=~aIFq)Pc9l7rv6(Uv+@P=wAFRU#Xy# zsFhc17w__!V&ewePrgU-DhuDM%);N-z1*FB2-@W{t9=Myy%vdxRq>1K-Qk(Pfzop&n=*x#)~Ft#kZfrf1(H!tgin519^1#u^k-AlXgewXtL>jb0m?M&F0f7p{Sdd~H7k7M;0FiWBD z%suKcA>iT?1&)8mewJH3K!&?GG*U4!!1=g!{VP$cWps?GIGK|pq zfL4!;18N}sFPy-L{}$>m9e%Y0^tWGc1Uur*dbhrueq0t)daD2^*VoZHCN=eAhot~Y z-8;3HN@yl3?%TDm`#p^F;1Kel6q3P%o4&T7R`tu6N@f5V37sPg1FGHq~{w6Gp!PwwYay4L^FPW@w{qEQdNEV{*uuYGeX)su=-!$JNi_O8};bc~Q0(#489Ia(R zyUHOVLiD=4p!dN{a4O=$$hq#>A>RtoK0lDv0?e0>Q z+zUZDU%@YA6cn!&z>y|d7VbMTns{gld$SdI9~(un>TW=Rlh`xeTzIyD7)qi*XDJ-P z^F7&pd1?|BCfkd2OFg@m>njCC`I?{;1)H7Lf;T=1~vjm`9~w?!G1SP-!GCW@`d? z{WLIJ7+m$U3^QE)_Z$WzU5xX7^HBw@RIM@4L!N9`RF5??dHBX#@DToK&uQ+93@NXv z4Av$2u(ztFc~fpLZ=RK5t1|)X)!%?`+k|G#pC%rP_>JWTb%5W+o(eA0+%tXvrgh2u zmK=)Y{VujSm*;K2YZV5Sc2$b;q^)u9Hc5Nsr1rzX^t#R~SGk(ZZEFS+KR1``fAu58 z2e#<=;5Xfi-V>GAcxcGkMmg;0v}YI!Y8t-uj&A*k<`N4+fWUe#%F1uD*?4DIvRFdE zY}CNx|6%#tZN%?}KVNDBc>T?@nEiUi=WMl`OARghT^Iz8&Ip2B z%b!0p#rV)N#hV%$Io~DVH|8K&qi^1OJ3syG+v{;gw0ce3<1UA1SAY)inYcO4GLS7d zKSKq?ag>eyXVPcqd9_?@$oUVe#5AuL+*Y~tescP}U~n(B?{?uE-|bJ})onb!?GYqF z4b~8<2Ea*mG_BE(aa9FXhQoJ$w30LZ6vAKrq*{_%g|lBM3pH)}Xjebq;GGZNvCYeM zb)p27kR9K#8tQS!p9QVstizErkJu{u%cqPJIfH)TERUKfTsU9aIQM`1lqt))D~fd$ z8Hx9}HWK}-Lb~BSiB_Jjqn?8n-lG-B#~EtD7y?6#C=s6Pt**dd-k`n0@;F;?&-cBtL{x@lZ{{ zf#}hgNdk^b`?G<({%hWne_6ucq#9T8HOMJny?%vwThLV6M7a~}NDa#;0X ze?RsBB4}B{s;MPQ?(!>> zyTxIoBcE?I5WBRMQRQTp!+)&EGM`sh>{Hg(buayP&5Knex$V;?K4rRK#$aLfY)6du z`x0b~nYSG#jD4V44)D=@R9u|KBj1wM9?6~BsZ!FO?Rjt?EzK z9sF)7)+tfhHyE{wEum2DZ*~TIOy8;6_7(G0@aII=P|a@ zA13Jlv_b=SEoSO$5pW-Uz#T%sYxje8ichPy2ieCu$%rU1v~k0VDu?k`JBDu=;zkg} zjSZ2s`lD&MK|31>Qg{SIn4*dYaXQ5hJRNJfU1DA4;$5FV-nAdg5eoCr`(wEw9o~)3 z=N#hV?(YYm`ntm&eb#f#yEA8OWTZ}(&icRurc)SuR+GKXa0gz8atf?~4ce41_|8uF zDUnl8J`q{XbSPS`!4MNaJW1d`F%bgeTJYp*0?@ z7(euqh`dfWh>W)@Bbmtbp1@9Dv2SB`c@$3k<9damWemJbkDB@5b5$O zp^&}!q}GM?KIwsf4_GnRxkd1g6T~%h$Te_f_4>xHMmU>GU9Id9{_(RD>OcHmswrt} zCjG`2HFQZSvh*f2SY9zROz&2pO?X_vyr@Q96xS{QyHKGzc~l;~o3^;xS*UO)?d!-1 zkQq_9%Kr*&P*l?a>7R}hMFO1zbP0Yp!}mHav8{;>pHg%y$jQl{_Plh7fPY)Oia{ry zl5eXp)PXzcp8*0NRSjTU-9rl-U8)ASE>;5*1)$*=EzyC&-&z#zM?KPF z9xm*l3ZXGt?B}{ax&VG7b77EFxqTBcs6o^3)eTw%ph-acZ2wizVa&*uJGaD9a3`AQ7%|_^S04qwa z@FKUspIa1xE5TUe4lA&Fg%q0@qz_|q{#_AgHL=l6CYhHVBUELmJE%omt}vKJI#*Qr z`0+-6k@tNv3ozGUkGWBCohEK=?Mb6F9;p3PLxRpR@O5EH6PYN2fs%{$v}AR<*w+~o z0n{yAifAuQl?Q!oPVl2aK6b7WH%9w67qY(PPnJrZ&We|?;M}kOUn*O zhHMGhaB`1-5;C@Yhcr9~6r1v*GbV zWhE13Jeg~i>;Sh+Rt%M8i#@RW{qN{DFisDZMm7EEwlN(VPRfgNEfg_k;zZmT+A7&U z)S_$?XhwU}!$tD_F%z$DQ8jW#1v?u01W>^wgM@_2563YB$I(r@@6v2J@*L_Ro=*8BY%{TC%KD;lqODqj(E0DYAuv=ANZmW_U zc5I^oPh;5%8n+E*&P)E1!~`H}Z~cc03jiB9VR!wOUmJLZh->YozV26l^6ZU+ETsnafM>i}+1Mg3UNyIf-G z8Nae%2rwM^=xu2*g!ivxUkGHiaL|gCb4MSL^(DkgVHc&AR@>7_Wlh5C#0hS)#?h{c^)6Tm9wY( zB6JS&?Zmq_R&M_6ucD*PgErW6#_fi#9VDw22RNg%9G!N$f-<%5<8arylj_)$dR3fRmM5AXV zZAdl@&|iX8eb##l-oEVlY4L#NIk!#-nzgFWg|}GT_SBv|1=>jwD*;-`DUBG_ia|N` zVsgOI4^(B!)Ofad1rTZJbV?-5f`Jf0Rs?Q%&Hk+$XQu>wP}=SV+!BP&GNocKio3hF zP_7*V2`|t7l~Z{he+bS_%SbH^qHSvifE7`jPcP|bcv3X>sAkIf85=qDhj|RndS$Gx zv}8h9_n9bX{3g?qv7SbO43*cgu&!*a(y#Yr?8qF>?{X*e5IYQo(@b79Zg&zOL_mn7 z!jguLJ=^zEe$cI)c^@ZMJ+Rk8=DxXyPGqGd4=t8H7Jyf0>sUHMcV0b$LOQu8s)}mzw^}Xm{p*@d1E$)2vs={l?9dyMD?QykFQPF2x!eQtCfQ-5Ri9WwI&F+52!rCNXGm5ka=v>X%4{}e(}Q`lsBhQiQB6HnpId0hYCA0n3!TaY z3JJ}eSmc-BpjG{4^^xYCpX{IP}cac^%y}6kgy6my<}9Rg$2t%(Kx~=HD6KZj z*OKo*8rJ5>u!bgIa@(Jy<#u3wY^vM8F)&K-O=BF_GwqF+zT6W(R z!_lb>CZ($*5~^sKa=@Lt#JGr(p>a1{q2=_(KRTWO*8oHO8mB(mk#V;*PUPWN03yY9 zaoxE+eJVqoVdE;b;Sr3tBkI#D&d$#{{)*; zy6V$^4=QRX6~%eAxnN92TufpoLsPbU0jzO%&KYySUWyJ|O|>59(G35DcQZ%W4%@)R zj|tdb5xk(P=}*oxxK>#km_+&55OdcZw>)z6$#mU0F&4u1`+U=TtPOKL7MzdpOpNZo zLSjyWMH0ALzmg|vO#IDNpEAK!YMqFn(~^x%<>()76U8b#=bycwhGz-BUjj4nO!biN zuDcsdi#x0_2UR?=JPkPqP1Ws)4IbPyF3^_vmtg5f2hjzWY=lAV!1j+xvGrkbY2$ck zldg^9?1a4r6CH%~&yD9i_V6D;8`7qPxo(vn|BzS18_JN$J+`v?>+Zrsw?bP4?x#io zRVz)?8DsP;W9?6Lzhardw*Y2to^D^rCWY<}iLw^GUZrk>g zy`J+eYvwYUE&@9X4v{olknQ#uQX=fo)ptbv0MJU5D8zoC*(!YqT-op4nH8Za`s;k< zaLo5FCM6oigtQV3y}d22!PsLZv!iv9d%dh~DKo3xn6A2W)7!ce01CPy^aUN{vrl=x z)D66oJ`>XCbZjyk$aUobnjAt0u7P+wh%M-a7;hFxsK2hx*Dh%XZHDCiUhXI#%ux?c z6Tkt*y8~|3Bcm-Ra0Wbx=|7#OL%q^X{bgaqwGzbd z4r-lTFgF9w@U(F$>PM252=v4x+-R{*~yg|)uDs>RfhpR6Dy{N z3qo8fMW`5N;<&&?Tb?Gv`^{boEg=i9ZZ(>!z9^Mg&JSM;T+H$umlE2 znyEx#Hzw!(cs_TG1Gloub%g0}2!=3c38lbK!PbBy!CS=0+=z=SOlDXu$mD+DM$tMKqf_k=t z<`xG*JH8Anv`Rp2$wu7z|Ybrrir$-)e;8|kSi`sE+uNlh zRK=oFO@6f4&3ME-yu1%4VKf@NX-{4hj-JR%*#MoS5<{s6@`lpUPGPAy?UOJae1-L!cItDi(fuF>eBV>t;kIOw$C*>(k{1^!MwQ<$|aPP5e(-h(J8_L-P>m6PQp00 zwQ=1^1pE8mXu0t5-@%NO>k5N1*n^rtLHglXSYRw=b=U_#srwD{tspyf-H0)~lo);- z^s$r8&|N~LKKmu8xqaSUE6V77a#h`{-C0bpvQp|3FaJ#!;q5}Xh%m}yx5~%57NxMD z#R$83pvTguFY9HL(!l=WMR%xfZK%XlRB<}ZSy_6!JLaXpxF(qcv;K62qm8U}(@6v@ zL5jxzF=Rjkr_?~-*I!M%wM}!}#7V7Mcd96Z2wS!kE@(=ah|YKD)!}qQS9U#AWJtXq zOE<@nITJOaoAF^_>~idxlDyF)kk^7|X@*cSe~$p#Yyq2Td|FTH!4H5pjv5CBHj91| z^mVH+O3KIf)718+rL`@0Da|vVOYz)r-iKvG(s7WI|Cik4^MBU0w6vI4^^>)|QP7V$ zNDO&bKD@Zg_|!v;_iZqLyD{dF9VlR(G6gN2WV_zyv^<^Bt8MTgpJ{>d!s8g%zAr+I**RM)FOJL;jsAhUNXrn7bb-E1Bkhh ztvB5O*K;WyH98s0c`zN;mC?>b+l|plTG;Mp(=q#2)U(M4^xh;ZS)WR?8%qN#T_Y2? zO9I1?M`+5VevtDM%|{D^ZWed2YSynkyU5Mj=*Xr1Ld*PL@nsBpurIQfTWz~_adoq) zX%xY4(ynY-8t3hkWBtnlfl1kAxO2xq_P%0*%G>x+RH)-ZwKyPeQ)}=?*b4!t4j@Hd zKf%B5LA}8QBRL2HRDn>)UdrGUY2h|-!1N|PXQoiO;y+!N|9TQN0P=*}bCGDXN5P`H zQKVj1%HJZ0A4j`+h0G1fMsW0W@#|k2cu~bu-zoOfybuX-w<5|^`5VnQnY6}f$C$f? zv{u}z1@d51F_D0#T1uf`wLH_UJ3Fq9CSiXcA2r}YJu7#Xh7h$&z+DKlRquGX0(#dT zk0s7u({9>D3^wq<4rGNRi8w4vWoW0 zONRdi#QX!xxS*0INCiRVmN-j%qSp&xgk}L*b=bL|*^tHF(_;1a0mnzDDML*kl~bhU z=`wAIka55dG{~H_S)1c(PosW#;c^>q$e4#TqUnQ9#Zj5EDqf&7&+TM++Qno%Xt+$Y zjbHPV;%fuFKYrr(9B4eQl}rb$0h7~B9|gPI?N*l=7j^~dzC-VU*g6$#yFqkEZI-6?nT}_? z@f@EXp^#7B0jdOlk^)qiH)lW@!>m0(>nTNj)Y99ESunbe6smZ80}MFb>sbN_L9jP9|6@T&Y<+!w z6KLxW?q_}X|2`Y$y!Xudv6K)`j3ea3o8#%SzgXMp0i97>BV~UM**8w@O_SIu?H#ZT zSpV9~GQ{FqvrbJT!iPQTyKnrNClZuhs)h8F`Lv!JN|Gqs?qlko#gz@oI|u0ZerMSC z3By-TEgejS=kMeal~ulB^2Wuw_HUS^?Naxa)_GoC@>XAM>kW@1o2Z?n-DbqW|nS%YJ_A(HmviP=e4XK9qEEKO6kC!>0B!rxkvWDh`tYXHLd}gsIL>cf$c&?@G z(abR_N&>lt4c6yh3;$9+Zx&n&^&4lxQHSmjTdlAueIF~=M!=ql*t3*B+?aNWY#tK13EPj6l%ly z-Xmhj6KnC#+=@FUy12TlRV$k;%gIzr)&HBgluEdj8GZNJgEE4rs^IKG&6Vd((wfmX zEYk!~r`QNxB#|SQ6KBp8+hnK*b$3*t# z#s^^mYaYb~wjo8>QNR3viI7kVx^}?l;@~1nKEZcNOvu%?y#^b#+b8XPAj^~Z)BD~#Rs(=tEm;&4|GR!UqOd`!O9Ag|aR`z<> zo1W!#)_c$MLVjDywQK}(f<`S`ILv<=j7Ym{WpJf@;5)5e6V3S{?XdjW7991C^YeNw`r|3}cE}=5Me|IP<=GfdcjoSRT#FY!BZ zl3$~8C09S5ulY6L=a+(tWTgH5&!E>ocRmX8t7bH~m*WrHuQ6R18FEEJ5*|~STW%RnR@yfh9qbZC)w`VgBpU`VLqg1DM$Y5AMuoz~E@ez9=%G z;s0~Ws)iVcel~hE3NSuXxFvfJarY{FZ(J82uN_%WK&q)ZAi|nQcI}tbYnC6Mp|*CM z#wT3b%1RXDA@7#x?5EJ}M;{!2euP&B<2X%c;U_CPsu$fDGIyeia80KueNJ4Jyejrg z(@}z&?}_n4mgZDuV*$2hR^vx>3Z?Z25XZyJHKX`1GUv)NkT&zU-< z$y=X5QXjWQ9o|`1>X9Sm0>9cXhHOE=Hc4~!9TJR&A7%1Mjj&jHV=6|!vm zj67NJ341-#?*2v~jBAzqb(T*0t#N!B`q4EPiTNrJw}0cBQ`LH91FNP1yJP!L+TCY} zIM3-VfypdLOf{TUCq`Se-Z{)L(k+9nZs#4YoA}h}MO~2J=V6{@gh+cvq)StS_#c3~ zud`KpIOjIQTdaIj;n(t(P_`PfHvK$a)?=D4%V z7e0q&Zi0~q?^)rx%)EsL6kl`kbG?8066dv=+;}4n{Sv@q8(i;xeUJr1?!G zGZpw{veT>D&YuIfHD!;0<^;Wwn#GNH zuRr<%Fpb;-c3!Wy5n=C($OX^t2GzK5X+sP&WGLLkAmp%gjv5+DRtT>U|Z064mxr$XXa)Cs0)9@1sz|(LbKPzla`YJo=NzbH4T0K zu2O2_^;|=R!>GV)6C^HST(0K)r8f(Yv>M*^>sf&u z&lws_OI!Z<^!E1iAA$c?I$rvBC(|8uc30-t7tP`Lh%9-8LZy7CBwO}_q}_&ppDPVF zW{$BosTfKppW9ggpYuuZ+zY5yT?w|p#Bw}!^}}A5G(J6qe8qw{qW80VtwPI=j~{fN zr4FwBOmkN4QRkgaww^~(RhX}&P%pP9LEM{bAB%iFlkOC0h0aC>)k8mS-Yp0({DZSk ztRDZSPIvFNCX<@h&Je@zUDNzJ(b~3gez}ui4f@fq0&izB>L-|+4;zM_4E_A%4_eoj zk#k!ikCv1|f32ZcDD$eFvzBS$+%~x3cCjVIkOKfbH?B(te%K5y!|NO~f zg1q7eC1%5+R#$(|FXsIF?*SF|*G{R&y$)1D0bdig$LjOohHLX@gY$pJiDaIyLD~8j zKOj^|AJK3_tOxlyyqLSAzgC?HM!fy(EHBWgV+bTe6t5@x)}TMC-uI=%YU%v69X&5?e@r^| zA=<${d9kxjiqgIw*Ft}=$M~d=o~1tnHgO^reyOTCNAr^y5g@t9{RrRChMAn1<6xS2 zU2vA?(do#Xy`8bG&RXi6%(I#I+|CT!i8eo~dFXV8v(NRT!y52`jo1D$KGE2$qyt3t zuNRd3yD!VM0{fb`CSC_V^|I!L-rwT7hS62L+7DB~Me{BOCT zEIK(e5bob$t$Vy~RRBW#Y~eRYug7GFrK|q=iooT72*rBnkG_};!70h?((3<*wYLn5 zdhOnZH;O1ADM*(L-Q8V7OCzmxI}F_lO4raZfJ#XVN(^bxF$hCQ%g`;|@c!ohKhOKz z`#7F2@4NRmJq|~PE7m&Kxz2N4$av2@8P^7qNgP5tCuPKzN4v3$tBd{2syoainJs%x zPzAN&J?Lslw|&o&n9Lhqelxh@rEXyX?_}xBo|L>}Y!YJGHa0dEEnE5?>+tB)tVg4= znwqAY#rEWrdC_QSK_11LVPea9b#Ae%!`p!N#FX(bh>uRn*ESpNclfC+JTeg-^OIOx zDm_izJ+^S}ld|ET#f8?#=k@-f*XJQEaNd~M7}&30rl0RanQomPVXm)$nI0S!StFDj zEiAK*AFsyK6>UtHO+`S&(Y=&xsy*eR81M4c(I}^dJjS}}87J~Ou-(L$5u&p<2NxH+ zgPuLiWI~2S8-CFhE1)R+vzJ+YxbV7WzXYqJ`kT0!wt!|dBsy`W_0bdKTka^54qh^x zq5FIXQI=f@N$iunSKzXZ2+8Rq>`o23+6uHO_l1(dFWyml^t~DE_{DL73YCx6t`ou0 z(2kr1o9?d;3UE{>LVyDJ`s~wXY#9ARA_2vD^#?MWr>saH*$W@}#Mc>@SW{cHh6?uHuH83R>|+Mo8c< z$0fCY6<6vYJK{~g-*NelR>I#@HgwN6o8SKR5#3J{mo1m#?RCghhhv8TbMV>hw^5~J zvJwNzB8PVQwuo2N zam|F@xs%aA@~*W~bZp_$K7G1a)_AYF>fq&Q^Pt4o4T zs6sukc`}ZNd^OQ^bY7u@`wbD9@`-Or zDDYK7nq4#)E|_PWyWv*7CfQr;v-#jd%@}vfu)zrNQ*BxI*Yw=g}5K~u5+JVKwF!Dqtc zh1=XO2v8}KVk1SH!t$Xg?8bZ6yu{jhsG_FtvTp!)-HJhk0t-By>u&-4s(;3wq5RH_q9N?hx+Eu^+Z)u@M{- zs3uGK?ZVXurGi%D)w^h3g*;B+frV0vRKVtRw*B_6y1cG_L4e^Z2O3T?(0^TbBL5UFrAIY35cr-APl#4O+OAy|DCu(pAdqSatIUh* zapE=J8I|Z5=7g}NKy~gRZ9b(_^IuFLQKRE4K@lik(Y_bC= zh3|zRV(h(~hVJ=FahDZ1BQ*6>CK(qjLbz=YP!Rs14R>|`DzLl2mvs1M0+NR$%E;fD zz|azA$7m1rue+F}-1c3X;lJQ9K>EZ3;XIB!euf2$1{1;yUoxdDBc{tC}@Z`B^TX=k_A0Bl&)T|IeZyc?z#*H|<>+ks+Lu zv*JqCEh~~66NNOY^%H%&bU}7I{q_2FEz0>9`>C+hT;_tXBLr1a`JLH^7INOp#4+7q zBf7bZ6-OuwE2~-H(Kb`#JhWnLd^}7Ej=B}PrjWaQlXAHGD&8c?)pu`}XRq}l(aym> zXLv<1I<7n9Xv$pFP2u}2Z@>dv2hZk1*7N0SUArIC39JD+sq3uFmb{#j8i{lqsR;kj z6@*4~B<`wgVRw>?5<2hH7|86doi%QGoYX`LWnVpCf~*gaHzLAV!Fo0X#G zit?jVfw%m5$|V4Uu7nn>pBhjumVNlOv^47_Hu@*W-1pHMlF5BXSF^3oKS|eR^WKJ+ zju5YpRy!-Q-ZRXb3{njl@^PyuA$=RD{OJ5>Z;*&BNI6@$ksbL47udAVzqtScq=%jn z%N4T;Re_L3kc}UZN4Kq>=O_IadlHV#tqRmRU3lF)u-}zwV}5c}$7yoY zoJagqcj9Zg_Ju1{?!kx@L!a)={ypZgwu2}WZ9xm5juBj$<`A@b8Fr|ponYSX^d@b0 z#xuX>)C)1oL%MddJHD9>Fd7064!19VraXpmA)7&q~r^V zySnL;%hIdj+y`KwardHTW}^Feq~!JBx6z1$P9Oo}2CZgZEyV)AR$QkeIi#9? z);U)vqQm`9Hg?qqi&AN!apr9GMBnt)v|rUrl;e_noAEB=WBl5>C_@B3#SKT=8T(c4 zuil{PFiyq}>oG?2q_blBf`FH4=E86Im?X14`7X*R?(Kk(LPJ;XPygZrSufhVV#jSvPa{xR2p+Kr!u$;*(CGu(h{% zg=*~%v&yvqu#yw7mH!YerzMLwx*v*`sYzPw-Lw^d^5i?jCSQ2*qL780*|??1FQxjK zB?||Ox?$zz?;)agCZxMnhstB5C3}+edGzdU-X){9IDa#tBJSw#n*%w%0rRkc0kF@8 zC2D0zu7iWEUneU~Ogmb$JH#ii;-j#w(cP@LUovdwp?^>e8it03ah-^epc5(yPmun8 z=!LGF$mLjP3x*Qe&%__3ob1UD9gK$FuH9bpJwwZWb}Ujw)?%fz5}hm|&7y+aiVWhnb2{kR?{l)* zEpu!^kkFOVYsi32rnDfANb~R6oqgjjg!PbT_)peRf+uUAi6!ghl&X@Qs!TzZ}_kznQ(m-HbN;DpeJsL;Rn9*- zSg_=Q?Ec;ecZ>Lav{4cl2W=CiW!0+=%P?r}ygzJ-%PO^>ZGU+sc>lnZd~{Nf(ev6{ zQq@aw-o<4~9Uf$xZenHr%2csZ_$Ad}keB*=nOa+@qw`#}mxNpa5oA{dU`n5eR^)X` zXy;UbCKv(}8yt4suF*M64(tt%=sm za08RddTn*(IE5JUoOw;Ac9vrdRC6vV3-t>^7o9Vfx zTF6FI>Z+1oy)%#5v4nA}0LMI{+Y{{MwDY0sQZ{irf1>-U?#*^jI{7Unr|Tb2QtTZK zFk~_wKSaa(&4-!xJ;<=jN-`|F0G5Pajr95Rw?hk7$CPuxTvd?!kmhL2DynO!QfDEHo$jW60~5Kz%H^c1=8#i;|~@H5j;a zuq`Le3>2OMqQ^21yo?+GDPN-no0957fnjOy-^os1d8m!Fv@c{-IAuCrEg2wWy&=5i z@J4ERWub$6M$9vFjMrK4`KEui*AUrZu=Y39nyY@^edZTYNz|<8Z3nq4-|%z(Q;DRI z1FP2KO}5(fx}^A1uYuKhO9cz^8o~iX@$ZUI>sa^|z1rwCiL~r5D-YjRo6btS8Y@D$ zUbbi*SS+Ou%`B!akTD-urT`$>&|sh%J^P7Xhne66>~4nV8r!#WbLA2Zb#%FNP+%Qk zKSE!i{Jt_oC{GaEYc_i`JS`8OF#$=`XQ34~sJuCQ)UHq~=v`ux8MLAuo!$HexHv`P z6d#})dt__8Ls1<&761tKsSZ5+GJ$ChU5G5>g1_oufN5EdH2&X!>9251bBHWO4d504 zY~(odz5cL42|cS24OKT`M*{PAH5}S*V=SOcB3?h-Cz(}vt^0NJVKt0HJG1QrVDI6p zxg?O7oQdq^jN_^!koa1Qi80eXSuoim|DmE8d7%%^t zZZaK15%whmF)gX&KR3X>SKG57GgtNbU^(9F`eVw4Kw(B}#rPR7khsg?$$Q>&Tvc~b zD}W=SMqBW7Ntnk%9hs2VI7_h<0O0jm@Fk|Y9XxxCT|=`tA%E>xonz$5*HkD=Ehvn=pG&B|w=oJ^h%n1GPiD8A)yd$R0HrSX|UE2SyyjXDlt(&mCK_8LjE z^rUoj?yC9ulA)vVQae)bYP1l(v3A}={I>d;Kv9Li#v@n;#f`yT{bH1EKgBz7Rp_DH5eCRS>@eaV?L6|b*lr}?WZ~*Ji)A%Z2hvjucvOk3G!m{8Xs_YFfpv3O~6=Mq$JAh4q zsTu4|OF?*viT4*ZS86({aq(>KZ4e^pnV+5JJ?xDol~etMqh)4F5ntYxSZKzqK~B1s zw)BbiG6ot7-x5}>yYYBslCe#|igb3F9h>J(l`oBn9A8f|O;Y+I=kOR|*L|GQB`qdtgyS|RH$InzK zX)$IU&WgXx7pYUn8=ckHPZhuu?JN4Z0S%UwvqRu<$QkjL>SSozzlnuD!3C#j4ug9_ z3|MeU^H5Z23!F$ppgAEHq@|@pCMR1{XYH*eyjvCYAWLZ7hjXUvs$?`jwB&ue0y0mE ztyDKpq1iI0$VdHA!2;WO^6Am}ivNu>|IY~Jo=$M!BrojkmhcX^FWs(awB@Yk-y|P;uyFnIIq0QAcTj9(0VN9iIozG6`gozy0JM9iL#Vi z*7c7Q3pR$X1Zwru9)_-TW@zkDoZF^O{1`!YB#UYss7F$(-$JDO94#kA`E3&>#s6J| zZ-|L1Cgpmcvq+0>ygaVZEcYTebicp=-XczM^92fo>Pd+$q=9)Ra6z^v5~bL%q%h&T zr~E+c|0qcSRf)}W%tl#Ad*oqrV_J7z_`hB?*3?bEt*5aYIuNOQv7wQDo_D#@5acOT z=2cDvpivqu9hHV|O?$Cx{Z~~D4TK$d;D?`tha#4X)d3ls1JjadTdGe zEj&!jW#69O0q$&yyA3(S;~Q_mRl_eXavv=9o{tj@I^RA{1havRQ+hi_Qr286{H)`k zJ&Z_6mHeFbjFz`8328Ke-CJC3AFR)|xS0cS42J6rc-y2bTp~*&O7GU~CtGJQX}cYg zbfo0Z`X?r?DI?+jFOlCLMm_BF?eDbW?UOGzO_MrW{_V$%hoM6@KsaEUy0y)^8=eDX{yjfN4ma@N#O@LzxUPuTh{Te5V(SqBb?u_ zljYYipF148a49%agzRF)tG7W{^Gt$hg01dj085>`G3i>U%mNoD;|6;_8=JqK+baX% z^c|N-fnCnSfjIvgonVvqRYRQ;rdpixJkvX=nU8~3Xpt0gLgWhJqkBO**qw2%q$%9K zw+|Xg@(l@FvUbTx*UA@f%f(Nxyps^Jb?8MuU(z*0(=olGY5WK#q>RJ}bATmniQIQK zj}8+~WScl&*2!cBnpRO;1@&Oz+u3~Me({q$4Jc=OnQ*CXu#894vQjxb=BD=zxBn}e zo8$LD`g%#E4M*L)6F(Kn*KB_$?x!w&WzPmQy{c2m;XU=zz&Xp{VR`0afuTA6$p6B!lhW0llc0hLj zlmoYhBBrG<4!UB5mEAbNS8;l2H}E`O`YkvOFJ}9_o(EMN&{JIJ)tZQvem>LcN(3Ri zfvum%`k{l1#Tj6$qsb+i3tb$K@bX}|3L1~rUfO|>5=FWuQ7I)kl6nAH+llz~(dJ+} zD>zeYX9wmVf86?VN&!BDU;C0?e^!+KC~g8=TpOCLgJNj=#zk-q5it&mhE6jCw!Z)e z!KV@S47!X2=40s5Wc{JSxnU-J3+y?p7S+u^wu3d-wUzZoP<$ zfj;N_r#&S?-?WR1Knb6#G+I6>UVF7f&6?1*qIZ6w_h(od58W{+?AfbCZe*EZ!)I>B z8XN4=L=BZs8AaU^MN-`bR+GalN`d0VT(EKPc;}#+iCE~}W{H(WfnCj5j~sg6WjFbG zvz7F=_4Ki+jMS)pdV9A`><$(5n>cEO79wO;aWa=d2z6Zb*1hIOMcJa>MQh3EsXHt(2D z7vh-sPJM|80hW3=S!tnZoR?*Z9H~Hly~x&5g6z3}>SS+@q`vXx-rHBa2nux{%db0% z2pCXr{!_8l=Lov4JvC~hkO+WXRR@}=07S^HA#Bk0STkqET+YAfp207jB6L@G|MV>i zg~mG(#43v^9*xvI1jVp)iG!$j^$ZF*m~{i~_sp1)8>xm~`ujYaq#kKGdi7SlQ1Jqq z7_T`44{3AaV&|4Bzvjavd_ZFMCEo19;nWx(s?btV{Gg`{ahzr zIy!rQE2IujJu(W3Jt&UyFWR2Fi|a-Udr&Wj{*be{K-o>+?g7yFN&0#`EfNBx$5QxA ze;y!972hT1x8Z#MnD{|kb@M~wLysZOh^L6PNNd^7g^DV$*w_vDJ{#R$;PA^v5>c9k zBwz(`{$a)bUvjlXc4XOKzGQcP-6sxyynB*uSNSkLV;eP&3t<Hyi20;3h zW?T0cZ9wFwj2eke78Ik!g>Z zufnhXwE4(Rg>tipuPEG5XYHiX;4~GA`1S3s(k6wbreGf@1<|ol_cnA8G{cm!B#q6LoJgM6WKI4=`lv*l zqHT*$a`fz81AhF}CXXJN=XUxsbqoY7SOKjH3WpEAlKMs+M{di=lUFj}t=dc(q zez;;AF@#RYbaDLnN#U3DQeBi3&j(=J{qFp`M}X{jm9qx^@nQ6%5ieW*K&W@VX7{p0 z0wsCC>x#o_5#SrPZe&g1z9C+G!P_R6{*IJi|BG7r573bFg^773Cn%;WinhM4lP~TR zr>DX9&AZc1Y$A}1YaDd1=CI$BgII>x>=zlHm>083jtL%QjpOp=P5~0IFM1 z{fpbL4%duVPr)gAJ~XwPy1?f`EC*Zl;(vXZT}DrZSGMMoYCDAsUM`rz9cPV)Bm}P7Q96r}t6*EiR{*{q4_&6fvldiVcfL+n4 z^XOc5j@Q+d>AEQ0Nl?6$Y8|YZ$(i4H6LMpcA=bOV-)%BnM*3R_B|XYAPXgJk2+5j= zhRTlZCcftlAiVUbcr(GTXyvZ-N$x1b>08^Q#>8NiYmt%>*Lq(((4f# z=9GFlfUi~mr#+bfGSW|s804w41xCXMvbl@d?$!|(ipxzs6u|qgYef-tWmBhyqXfSc zoowVmI%_;5&|lWjIbW%ula+}1QvWmd6@O-WB-v-~QZlCO8i>mr(l+$`A$Q|q3+tKX z!h*fs=k}(CiJ)nHw1tsn{I=Xi=5XVM-G)_1$~WP9?Mr3?^lT%d-5sK1-@17b?j}vP zO_VOC#D%+L^%+Jh*jj3UW3P52V-_p?UE()_B5cnPkQY4NFu06BTSUKm@GssEpwS`% z8h8PQx@uh4-F&hReB$oGuUudr)s!GlfjF$V-1X{2Ffi+BsWmioxr9^JFMVA2bne2| zDFJ@@p8W2jde=vFFs#KflBVwkI8W;Kmtg$z?467_{u^HcRVZPvckf4wObemENbCq* zW1vy}h1y}20Bdr$^e(JmH?5X(DG1>DLET>n)`(FPp`KOZel4s>CiU8?iK(1$H@U~j z_QZ={%pICGDSFfNKiHDV~4< zjRfF6kdH*uw)}swAN=1`;>i5N(})D9%s zNlsPdYyXLF2~|bD=0Sr7)M8)q#2blXAT^av$#meym6dVQ;Rcs?^Oqxj`|N=mpBKxa zj1tIx7$oyscQ;L>Ujl^B&Cd>K(g(SIBwadcyflKs_dqUNe6o)wyeEkfNEdhRFC@!H z0aZZtkIZNq&?_B`4z`q2j7alu1QlHYK%OL8Gw&v2Z)*U>p(WP6;c!gT`2F~Y_`q#%<^^QB(*7M>8o#*#dsiGn=ZHP z#OC_8l5dU%lK7k49zd7yg>kFgPk#M=^h}SGwybQ_qM%xbDsPQ!Zt~SZxD(oxL=_?{ z*v*p-rodwQG4Ya)C-JEw@;cXiHg$!p9cpWX;e>Vd+@t;^xzT*eU*7RGLlstbSmf zj5<-oL1EW3DDF1jW#*CkeqjcW7%TM}Degp^%+_e=Nj4lC$Fqgd7uv|pucyChx%OKB zve4`8_u3@%EvgrqaJtW0gfK~-C{aW|jfTo)C)zbr0v9pvRJku~$dx$#L68mh?&std zL*lImuCm>Q?cyB@F3G=3Z1sFRIYr+_%4*|Yxz|qiI`1H?3r_BzT{*>?v)V3~pF|}# z$V84bpi;p8KmICRE|Or8*bQE$6)g<9*?Em~?$x5(de(X}q3iGz?rOmn3r%qT8uk>AzwB=Vw_XNU=o+VA2zUwEC|B*p?}JU^ zd9|AuHxkhn$(BLaQvfiNx%d&2>ykq^3r67IS$XFH)KSwdlAEVGMMGt#z;V+mM{4shAA6}R!eGm5+hGlFqgsuIzn~4!Cmlz;aQWXyjF& zoucfR$$9$cUgtLcCQV;K8sA^GsG?M_eivt;`dqj|1KOhdk&{J`Jm!VmU!Or>=Y089eVqcm~DS)OiAET?G82 z$#5sB!R#2EEfoi;%5gJEz(%A<==^XR$LdHkT7RTMPrZ|ot>PgxZQMh!HG1>0lXCL* zTeO`_gjE2(YQ1cfvSOl(Nc14XKdcw?>+vAW67|@h414u6+s?vbjv5p{Ch|IBy9q@kKqYh*GOhF^VB5sC?LaKw97?N1fcZ zPPBtX z)e26Sfjk_YjR~i{lY6}q${|6X%pDzIiB5S*v6QSZrISs_#I+eb4JVb1cQx5N?TaPt zaJw@}yX|NPSP*GfA7>5#fi(i3Fk3H*y~OY8hZY)MHB3MStKqbKdMe;3Ql-klt%CkS;(x$7lI&x3x`x!DjKZa85L0g z(cO9WWOvCqO}MmiB!nBdXbWpy2>8IRFg_UUp47V(ZC z?+;L}4NJr}|7en=FY`$I(3aK3Cgtnr15VKD>Zuxo`aO>`}{)@Lv4{qK($>v#g zLbYGfENe4bV|X$u%&o0`DQfHr$f;{KTwbk_y-AbMj;BdFoQo0`m$Al|o#1|LV1yOm zSEXxgd$c3)KtD%(f_a>YDA8*G9Pc-7Zv>=7#4uBE-p7aXTHch1g9avEgwLOQDM3T} zE-me_+;Kwv~|5 zm{TQTsOQ(PMdpzfKJ0V3c;n4GYvY~MT;a9|O7+bj2sRtLE$=^DM5~gljV$_RD3JMW zE>K~cv8AIfY-+T5v{9(qFP!rEWw^cT(xqBk5r@y?U07ihe2(WMG$I5~rUxoCBd*_{ z8V5kRyT2tWgvBF$H2TkL8-c|BkBuhMc(|sRc5CkkA7zM6*Au?Z_n8^Oy==LE6f^6F&+tL>RIXsugw#2mbtN6=};HFl#S~7 z`1H*_VVs}MY8b1A@jbrjmGtYY$kI7p^qMvXs7B`k^xR6&nU?&Gqh3U%RJd4kxP-(6 zlUyhJv^sbX(CLRF%qoh}aI4Y}3xI+7pfj?>vEFzBr)Rqy)O76hlzv?Ai=>MQ3YX7u zyilw^S@w(~zIlA!^)Jbt1WF)Jz|kpG#6+Vb%=bTB*Kt)tnn z#%DCxQRvSv3EM!#CSMd6I{QR!L5dPpl-xApNn%dKJE0_w<#oJ_Qj8{a@)u@P5-CGb z*ACdFcn&}VMi7xXFbgHNYwsQ?N5k{qm+RQgDHM@ryp!|2ENZqokB-MaeLoig$g4(Q zP*YkZj8j99_|JAkhQ(}oe8u_Ds>v{8CT6*t`K(i|OX)rc+HHCwJ z(Irc##9VQ#uJwzeO*2sGPNcF)(pZxrs8mK0$rC`FeL_bBw)g_Z!Ttt3-YX#LAL_^a zN~fm{x$u6&C$wntT%}7!J3TH!ON5YFt3zzwUA4yw+|`e^SmzF0m19=W?&{}!5Xous z_(j^@j?%0k@dq0xZuj+zlZ$yX$bZPOP%{*8C<Y7A~p@~~oV8;Ibs-k*QSrJ5%zn7#3=4!QddYJ}sS^zqDM{4p8 zONaQr=UV!f1zM%EIOm3s2%-8v+Q=^ALra0l13;_(|IbK^{~MkbsBI z-XVe_mfUAbbbaNoEdjuGW&bSVqgxhk?XCnUrwlwkRu>^oAvwdv)ykUvv7UUtoM*d5MOpXzt^6bCZxl?0kW8o@E zx|W|uO}1A3R=Bit+8mA|sS*Jb1qIbpcs-i8DHAq{%JgXR)LXk2qq`2Yl*@b=bvDMw z#objVFG7T#3*&nLNDRTHXbU|ylC^o$m2?wv9*E$}lSM-Sd5ix3jfV zn6M77aEH^;eSn62_zyvZ!+l8&`KoZ$0Z6@Dj_UBTrYk@mP&{J;q__BfN^ma1Sg2)k zN%81#)9X*-{}ZBsZ|&5>r*xwqpkrcOr=+Twj0&6g25rng!W!{LyiYFdrjWGvV(6?8 zF#`l_B~6F1&>AKmoy=IEIn0T)tQrS2DEUin+J7A%1DZ{R+B&h(`%$an#dqW;A=N=T zXDYWIPGL@-53!=UHM_oxaUexhN6~Tso0o(RS)ye`x@a zjalOWT8I(`=2!qaRj(gRDj{JX%&C8?@5t_E21s3doq5Y22)y>@?EGl{R`rIa7(H9V zgmjjC=BNcXfao9y?l!Ku^CCASJn6S#dp6vzxT=>P-O&pHl#cPY*f}>%0nwKBFrix$Ur=7W27&VZ{BV{*nS+xy zW)i3s;E|=^yJE%Ecv`^JlLM#CxyBUnOwz67)}!A|Bb$LKwqWwOB+~5Z8GG0|j&(A- zDj*F3WCW$0YOB5w4Q(ZPqyoE4><#uJ!~g4#Sb9C_Zz`J#-w-^r@K8 zv{xy9NGmDt(Q+!9Iyy0G>ohtWc6G>Sf4zC^wZMGZ-z&h(0+^aX9rZ`_CV_J>bg|%G zT)?U*U<>OX@|y?6t?{MYUS-}22Q{Cpx(?-&l0K?F(#yLz1lYm>z(7>}LDZ&OZ(0Q6 zabjFBIKP^z1kRAUOI41A`-1mO*F$U0d$Gdrt-&tMA}sWoj=F91PID2Tm$Dbd~QI16_P%|M=4U-{d)8-(n8Pr;pO4xTcZ7hvLZkU(CQu z(X;(N3J{N9@`&rYPQ)$$!CXkvESrjL2OZEt8}1O~@RK=YM9u-n`o(#1ER+b)>>yVt zRy7q#yAWK?y1=d<{jXgg*MJ*5t3EQ6x3b~+w|5fgh5UGl-+ z-cQI@jVOaYt-qghUsO0tukhK_vr*>8sLrmgY^lrw&P>2sy!>>7Y2+5#++J;kCPlM| z@Z7_7J%_!jEgl&eQKcWTYZ?tH288;05(c5&U%Ij7q%Q~frw7P(4%8d6vFhj z6bNW1wpW|`wmrpYw|k+h-B8TC5BK3d%x8q zDhc1SEM*ln^#!aD`=MBogYmV)9P+hU`o`yB#I1?+-EH3ncD&SI=);zmkNFE-j;X6g z79*mHOPU`C?JouqAUEy~u=j0eaOAkGd0W{SXU$Dr0(Ei9aeb_~N$UVxNB*A39evf; zO8Kv{gn1WY=o6)NgW6im(D3r7>EOratut)JD{Ea6SA&Z$!NRbvIs;lk97SUd3sbzq z#X8RDX8@vF86Kc6YE}R}a`qn9J?;HCTY{BtlBqd`u-$o6IkZc&l=v!sLi>eGt@iw( zNc7vBk0l$yKln?IvN`Dc)S;A%pZbXE7x}8+ikHre--yQxe^&_#_IeDncS6`0tG1|I zc>DBIUI&qQ5S2x7nHVu7`%U<#n65p#Dh2FNK*l>4sZY$4;w-Ju6+7P2Ifeq%S^2EA zn-I1kJm_+c$Zq?KIg5}~V|K;4D=FhE&)lyg5tnuW``p<9dvgb)ntUNMGmD47WtEfw z?r>f!mVfZyX*DMdt@b7Mr5xyI04C3=Rp}}uOEulTG9&690m@`aU*ojrvg%>! zRQEmo&y)+2&ySJj>}o`G>6@D_RD!{u;;F?nN*4I%qFptVV z*IH$3NKmVTIkvE6LOOA$?#2?O&RlVKSUjbSV&L%(%l^9Xj{=lpG8zi--4-hO5ew@UKetmhmlWC8i5!3&QNN)er5!KHgxRU+%xf#C! z;Kgj^mA3ozVe$>`^AnZgrAxL(-wmicMR15d2Lk+ z>qH*A6fUBAqP3=?D)S3(nc$1<2dOrtvyw9y2QP#R=#RVx+zzIaorqG_W+o&8MBQih zvVS@RV_xwh)W_G`Vr?}au`OAM5+fMV^fuV24Gsx)kd zg*{co=ceK6d>oLJI}STm-1P!z0ofUJDncrF^|2P*l}#lpLPy_;J{4OMqbH#I#GYAO zyabM(X>=_JK3Obf<>0Ad)EyNXWnq;yPGnr!exNLo-Uu^*u>hlrq~Et!>+~mIW#o^j z(BI7eVD&-H{7%=EJ2N!qw&I|tZuh zz9E4!&)fasOdU9CxcuSire;mw3||M&TrziNLeRj-+l~{ofLN= zfQc+bfM|4DJ>Y^(ci`Roh==%dsdy3i?G`r54SRB@AyWwVHI^;}mDr$sj%5bIVr)9FTxES31}AJC7{ijHh%V zc%rUL)F z3HQOs5mh{{ZS!cdFGh7v^G|@chG{$NJiJhJVhV(sLZeeXdqavJEYh$3BF#<|8F!rz zIt-a=@@3Zl&6?wlu)4;xpXqjAGe8qE1ysxD2k)v2`Fi(VvDDda5pH)fr8;WC&N}^t z5`E^k&-GtpH)BQI?_G9f#drk)x9?#}@cuppEDdfqy49^kY1`emxju#{2(#BY{FR#2 z|MmIZgy4xMkm`1Yn?GmwQ1W)YAT*~|z>OOZI*tDzUmFJ~m~|FkQt<6_p$sFn_?y**FnnjXBrpk8gQuif0}n7eAtdNx%$a$X zC#&V@ZooQyY9$2?1wiuB-Ch7j)`8J`nk!Rb{u8~gyR0A6IPd;^rSx_W7}l!|)=H)< zT2xU}Gk=Gg4vhm)e72biTm=JDDI;$M^Aou-5{%LDi`)e5AI*)jzq&Kyin^qhF`XECz<1tLJnIa|J*fW| z@%!J+|0WCI_VZ@a%Kd%z66hx{fD-EQjpx&_!SC*2{`?p09xrYTH0*L~!EQKF=78w- z>QvAdZ3{9)BKJ~%g>*G-}mF;C78$*gZ z@janr=Q(r<;XAghR zIe2ePr*CO}w*cIJUWa*N*&vBFbtR<;S{ZM{(0$#GWYmh|@<=H|y2!vJqu!1|_W8P2 zcIXdps3-Y~cgX$-MICjANkEnPsfXZ$J|D@)#>FC~12JPP!4j`O$jjeBD;?=LG-_q@ z`@GgtlAP<@cx29kY>OkQ=R6z&2C;Y#ZFAs5)zw!RQDCwEUy0sKNQ;int`OtK{zVJ{bV5!AVKEPxz}yCsW) z>XaN_aIbxQ{J=H^+w7zosC@ww&{+_>pmYxh-{2qcX<9~%8K;V~OAc#z{qiGgx8pud zP3m~!V)YlzB}cw}DDWdxZG8^w#B5!zcrT+ujR_?*9M4r1-m>MOuBm$oOm2Dz+4YEqUR?e^?7eqT zQ|lHttR5^_K!b=VQZxbS(t8n5NJ0(0OYb0Ex*&omD1?Mwq=epks7f{T-iy>2s#2u{ z-p#r9p2L~>{<`1HJM+%m|1z-mQ&#=0^{i)YeO-5`fL)I*!N#_^1?1BQz3KT_eS3m-uWAtG z4Kxr3#Iwa!_I`5|=GKsn6Q=LIc;uU%m&ct3+q$-u4qQ-wK5EmIHSBKSr&)ipx@UHY zM4WObH8m}?Y;SYJFru7wBrc*@2rC5iDll27`<^wN9OFaq7092se(Pm9n{Jgn(4kWY z+-M~j`?rtzUke!?1%CtjIqtYUPra7df!~R{Rl;?buI6X%vzz2fA12oLjpu&$ zHFfPI?w>}bLzRF`IBC1q#r%rQ-90qj7jNMGBJ=)Je;Hq}%Nt3&|83Mc4>nS%L<2+o zjc?gG-}l1#(eGxI))$dURw>CcPS~GQ>+`<*e66q7W!mH0?M|zgr|t%izXEO*8NSpq zBWcFsGb{BHCY+@P=6Qt_DVe`1{>})ovT|e*nx*+2`|;rrN~{)5yjzzYVtigs1-Q8v zI(_|P?gRh6be8A()+Cu8=Z=d2vBLLz=4xT@%tJL%zZoD zI5a=eBcxfGhL|J0M8X2^9*kk?ft&X!68F-t*2RVl0!DYl1(SnQNY%ig}^`!JlAQQ6L*kcf$TKuT18xYcr1j=3Z*F~<5jvPQ6xb}}IT>aEx zC*E9~U-jU|G8645Su#4&)2s7T3T{9*nB=4RYb8!NmMa|Gfh}lZ^Qx0BAfR-7livbs+*bK*0l;F9T`bV;EUgP)%%T6o8a9(1 znQ8jv`*}gb#8c?2m?%hj8^2x+-KI_S0ifyXx!e%vYOkGm>xlGn>bcPxn>zE`i(@+J z9CP@WUEq7-y7y$VugkgoG!3(LyOO4myWA{i;Yt4B*8%TBrOMrT>bEPLkhmdZlB|zG z#2Ji%ioaqDglMZem#}W4MV<-uQ#}vgm>EQz&$+}s*(m0_&$C__fS#WDklgn4_j1z0 z7rZ0c(dy&CqN@q2Eka_Mx)+~Zd0qD;VEZ`2o{&iGtpQJeJoV`T@ULj@App~^HSHK& zF}q2o;Xg#RFxqqs8+n{qAuyOonKE@Jkb0llhGsnGUyLZbqQkVZkyB6+>T>U(_QdFu6~hHnZS>KR zq2JqEYd%d4woRHF4aE0H9X-BmoW~=6xY8c+i6Hl-{C{}c?-M|Y>H0+BdH1uO(ShH+ zKr?IX^C!QNBy!(R@9w#)J629KjY}o0OqYtJSH6y@fiaX!o%|poc+JyIU3-u_xg#Cz zEvyRFI(rH0o4-HNM%%?#;8s7Gn`|d&mN=IzwoW*pP=mLD#>96h@fz&9VJAE_U#_?c zOR4+udkxdXp5CvI7gc=U`U$C%KJkD>%(OLABPkbYV_*IJ;Az=_MFped`i?{$0|nQT zE6@XqYuPo9dO#;2P}C=5`efJ3A@V|K_K=Jyacq};VzEZzs34Svr!jrS=eQ3K^tCno zHa0-XZQA@DXc=O{7#ab5G*>(LSB0VEyPCD6iG^V=`yf>cR#S{)C62i?BHn7W zo^uSiA8`!H^V9&IKDh_P*$YO`92J#5I}HlSnaXxwS^zFM#MX6LfQ8V*YHV*hu0Can z8C+^=;9(IUSV+ND$Jg)9A^T1wyzu7@G#xW$i@_Zg3)5blRhpAlmqNL^wx<~a@Ac!% zOK}+vECg`M-t^ZO@53CMs(>#suj@y#d7NxSb5;aG(sR9V=yj2v_I`ACEYDVV=d4G` z#uky0vb;>DAT{vePUS0SgBUAP^9_#98!P!onbp{-W-R>RHt!s5Wf`_Dlg23`Tl&py z&bI8p!X?*-!Ws(%*#;Z3()_X?rf}K&4QwMVOhk1jRC86%?mL+M&KQmSd*l<$bdGLg zQvZPB8p?Xp@I5+Ep_rsR&G>sC(`};aGfI4!`CO%|L;cN6BnD=y`aU_XnH%>Ky>^)h zv$DG^|4O97)z)&w;xMf=->}qpSjo!ug8=Ylv5p%X1);u9t=m4#zUwxaMpXKy&eg&kj zyvQ-x{4g!IDBRl3tlXh^frhd!0;VP_7S{T4)iRFs?42!-B5)%TN` zjCHOXQ(dr(isJsvuqNbNc++M}hhFGPe;WL*@AS_i-!9L{`HVO<0oGLk?E;6BdWJ_l zO|UQKZ>>}_ymI0Z(?JQsf}v#=u(-qTYkOi5`HlmODK=+9bH{FgvNws{UyY2()xTa?k$GP!rfMAJh#`4 z7R^hK_CLsntBwuB^FL`sfit&jWl#3CVz_-_KWsw0VbQs|h4wLa$atAbwwl6E82psa zjF=Ij5i(1xlz0ivFpH1sUYjSEAZs8JHoWDTV$W$|tkF+w#%)=p4@;t>*9I|>q)t0c z^*)D9$cymCX)!OU#qIXl_bY`zh3bg!L!6@|qs?s?7{T3dUjs2o-~LQTuAuuWn;OzN z0pbA-6>*V4Mm~-uVUJ87ax7+BzS1>ry0Wk#CSl$`U;HtF%&Aeyd&weQupM8Srou~(L zXi$r`ibVb(z6o;Okm1QE4$=l%CfOD&d=s7E%-f|YYQnq|pf<2{Hq;x&vjyG4$@fI3 zU8;ot0;TV3qSj~LvvfazKlPH5if;2zJ|@d0!#TkdYKyfDrg z#yB_~epjnB2SXVr4^*d!Q7T9$h`@kWLXWTc2K-yVPo-M23=rp3NSn`JV*lq~^{&u& zw_IdRlsb0-LJwTszaY2x9mz?FZwIqBbO zY&T-;P1W&hSgS|y$k5OFSz4nOX?kvV=t8-9!ZgN7S->t(!HvpDn?d!TcL^_nK zNj_0&M?U4{%1Ymj8T}3J4x{1gZ^tS=aa^zD=uULprA{$hi89(pE)LI37_H}d7%&Qm ziA^m^{?aI!wz5cE#^{i*_FQ$S+l*rBR_C9WCT6SImIyRs14KSQ1lo8hdGrQ8=7R*= zO*spCn;XWjD?_7nvC5*8|@Bd7vQ4&m1tt?Y+Y0c{qQAk2y70Y#^9!6P7p-4nAeT2lc= zdou~Ou-QJGkWo~Am<(1`{-fwfdk#PU zeqPjCvdIKD#Ui-V%1`d~pl~+H%9#Fuo<^<_@p&9*POVk_@CU;LUA%2wx!a?fjG&Y? zgqVk-6Yw28oFX(ZxuAq-Wc-8nFu`bZTAfL!@x_W-gQjuj0(^&^pg7<2Bn3en_j|5a zFwlb}q*?*iIGdsSf!SB3voiTE>Ksr&y--E|w}A#E_1(4e&Dg3J7}YD1pGg2ohMmi% z(JOJ^s4wza*)8fs%(|_OQUe{f@5b>u%snzJ_g3%KgurcbO&;n7Q;Y{&QxECgi|4gR zjMfrLd&iLDar`!O7sgUOKCl_tL$w;*>L3|w&LIj=CszfImElrd%f5_fS?Ve6b%%O8+pAb^*!L8O84Uy}7}cX+O%>To zk5*a~;+(Tntjlwfj)pUQ;(O~=y_E7Jzw;B)puRrQ>-ydtEPuosKIHOy`cWaltKU=* zZD}`EP|h^X9IFU*X4fhInU1Y^Fz%U}2ufS(PN2HOsYN4R>QN(T!Dc1n10WGqUX^ z?6&?r+ih%YEXufYFqy$hnaF29UPZH7@SE(GV*&lld;0DNB9EL+-lV71U4G*et73|W z8f)K(M1p(Ox%Pixt%4g@N}ZeP6PgVAOW-D6n%eI*gY?tVxe}j3ZD8@L*dEHL-SR0C zOdR9XjdGI0jzbLgH4`&objb-Nwnuyx9Dw+FC)P!?2e~?~J2pH%w0Riao1S6HgHydP z->qB2(?iiaIAi8Bkk@Pz_dyv3?XtTeA_F(RJ7KvLV!R1adx0EW@M>N_4*8g?)_!uGy0!Z+e~k9Z5UMLA4|Lh?%}uJj2V`3NC&j;T#lOHrDg^L% z>_Y2r&KTo!By&>d9630&2)8fXe0&}dZIC3a5so5ZVpfD`k<*G=8f&vhw}HJMuojYr zk?^Ahr|Rv3qowloGo$>J*ln3d%RwWkOO;Bg$(S1EME26>=HEIyUHbBQvp!Mcll(T{ zz8rC1zb+koW5*&lFsC06?!jPUvC3KdNAi=ANAw}eChAgp+T*^gJ=K02$DhIVyrq!k z;avBHeY2HHHWL=|y@%bDdYJc&-INJaza+vckg*$_oi}vZyX-Wh(CfVZ?SJ6pB@tH> zYtw8ahrnQ{De?(~IR}eYelVyJ@{*B*(y85Tz{4Xl`#$(fn{X*74bm&2JmG@E##3{>3Nyo9qA|EOCx>XSqjz zlL`Qbj$dJ!fD0uBoF)1k0%Y*;t3rqqs1tRpfps#2tK=SCv{JNm$p=@gz8QN8b*NUH zxpvL%R_L-4)FEO85(~8-5W`rtQQ#FH_~u;my;lfs7(}TlePx|=koi8a0qL^Jdlpvt zv+kMC9o8HQHP7056QW2nmJ_6o9omVynklv!3u%XbJ~UM?_+Y0al3z32 z-NJuZu-WitJpC1me(9q_Y23?ad=P5dB4P@n5ti&_Vs9T~zvzhuW!6JFtjM3~h`?Dz z>r`QumKakTUFP9Cu3K<2*<;$C4M0N(fcpNIRzCy|LP{nL!BLZY+mCtz`wBmjjZAtf z-1Xl4tUS@)Ov`D;!NBzOGtidvt3r6_T*8&CBLW#~L$&3=?9V;~>x4D;06?0IlqmY) zQf*k4jg;E#W?oy3Y(wNx`t6!u!+W|>FPXSt1gE$0$oB5lgnQ#dN~F|;{W-N+o4Flo z#{$a|SnPxq#uL)5pku_Ze@kI*5?UcK9{XFXXIEB5%4~K5GR>U$laiJCh_HM_bgcCf zi4n{sGEghwf(^}1vDy9q9-HYQ!%0wjOdj@gRUt-8W!ke~)`9V2=eF>OSe2!cTvDOg ztHO@~dASy!H_|G$GEvk(^@3IgshxVhUdDoe4~NwN&+dckMwRFjwq^bu z?WXoG8M<%r^C7Ab9}V6SpkJLrSBvZf#i4VaUT(gTio!~?HpGv(?Q9j7l!ExmvZyPW|sS7!(ZzdXA4I=k%VIy>q_k0Uls##+vG^_4iN$+u&)& zrm_7dJqthjK#~a`qGHmN45nAq&rCwEd;u5? z^12xUSf5G2`cTSz5Y!Bp<@S+EfM*PG5cL2;a05d1Uz)Oi69T~fH`xJV(Big99XVn( zYPOx90b>HW@&7i6(7OO^BMjKa{|J04X{Q9XOMU0O!*f6Ip1SpI8k*!e*bB|!f+D+_ z;VSV*cM>x*)k$}FR)TY^)J^&x_@KhS4EyLduIEibYO9S6g9J5;N215hh@Uqf0D|l9 zb&Fm+E2lRfGn`_HfH`g;tFZ(;Vf+zA2IMagr}>L3thbtl!XAt9iKS!GDgRu;cjf7n z@Wl8BBNol6TPPTFy~K9n?$E8?>0a6tAWU!L_)m)DR5&HaNCEek$RKt`RDqvdU_c9` zV_Yr*TJRp=c=k(2Ej7D?-vxB!H0$!`koy2Q()1nq z7$N<)_)C740@N)xyrVsxUYX<6<$f?T4!@aI1iXKh<4-yLb3o-7U^b(N-a%)8l_cSG zjY-t*|6HTv=^ACLTyC7davM;&0xi*_TR=>~0}w0V^)39>&F`m>&A;(<28vmpzZZCp z1f~Q$zuj5&$3N)&?h){+U?au`2uHMlowm%)egY_z0L)HF5(=p3HLPh@K{3*};1y9ZDBfV;XgYQoTfsOX~3Sc*4f!UvaIW^2b zPpz<|5isxDke}3NIe=jTp7%7LJb#7|z^f6!t2DFyd;po*07@DE`Y8)&LiZ_OFFa3R z{r2Y1Q1j~PlH~(?&T`#LP*ko1YVuH5?ugn)cBNAAA%)-REgs$UvEA+ zHJSet#WNiEe_0f>EaxT%K1tl=s6M`*Vw23^nEw1!(%G)qY5~FH(I_#+qQ_uXR^r6u z+qcfpXO$-r;u${NTt}EXd)r%6`muOGXz{fA8pTzFB)*m|l?&Dl1&rEi; zC)gLf)_l~h{^gk&3>a4aRNZegC7v6DEBpEFP|I-_ZC^@ zD%Y8>$vo?>0+i0_f6-%8@9|-^%nk0PqgE^w)5_XSGvV<%$~EalNju@GW^;t-4B7 zkcT9_)s=06z!SZfxFLo*7}`k$kM4*L8Zq!@v7IhUne6uWm!_vC9n8{Z4K3LNz9CVE zbUe5Sd~LFNk3IlJNF zxzj000itrAZ~mtV{u@=D@f}|@Wj{X*aW;Iwmvm}s|K*Ta?f~zc1o(?n6EVtz z0Zht&yp{g~;M=3UZMs9xn)vWuz-oXzJ?_%{wWr@Oz>)btVmz(@rs*TVeDr*a$&WJz zh*TOd*G5qR{(p`A=NcXYUReB$VV4BHPc0rAxApezMtKe@-JW@^;$l& z=YI|V`82BxgNLpFGG}^93R~80?=$brJq30}t45&s$BN#avV8DI72t#ay-u~e7eM&w z`$Q+folaHhfh7f&&e|A&ROkG)ZhdPPzS|l`O=Ue|Pjifq-V3f+6KTm=xj?M_-I+F< zDN!qM^o!i@iu;U@yMM#4^M8#AkZCayn8?HMX)F0(3^|c^D?jx%Dl3DB*; zJC7m_zyN<~rDQ*#sPH(9dFp@2_SZ_jpRUB)|1RyBr(;i{6Dgg*Sx0>CLNVaFsBBWV z{~2D`tfG{bO~fyYc@4 z(C=AWSj}JbKS$Dj8JKaiSTPjzH;v9+fS#(ZRa9IEU||0-jAQ_yM)02(jbEMlvl*b$ znvC9)XCWMbTuxOYFQosU$*0rZ&0wAESZ{Q%*bLp(ElqtWFvySkJj(u7*CIqbP@AQo;81fY@plm4@L!vG+21n+%oq;&>Z-IUV+ zkP@zXv-AFi#o#Z;#KXqJG($SZmfHXH0wCYQcVEA}yFpI8oOt_rf_nt~7RWc%>Tq|R zw8nkyy4UXNrf*!i<>Drc*N2$79xGt+{MFW?g>)vzl=O!0AJT7v!lcc2?x~Q=au4L7 zI~v;;;f?RjK1lb76PvzA20fcHoV~wyZ|la&a8+5V<8Y2Xlc}lco%+xo*(-8!@w>QY zAPTq|y)^DB$go|)$7~fD16e8*Kaq*y*-}*GjmPMGx@Ht>-wFX zk*q~2-LJVOhlKfJlSWy(T8c~8g&<}26JHm;NE;DSF9HWaxY-1i=(qL6;O1R_(&6}F zH~h!7dXD*Nx(D4fLM#d1<3CC6oBe9S@lo4N#i5P*8a<4b7k(LybU(OgAHK>A&3_N= zR){MvbG4_c-V^5HwH*W(Y)%^A@2MRd@L}7z$9ui*knH-0JDsG3^}p5bdTvr58|2Ou zsbFtYUOTr0MDEHd0GwC7enYzQ?U@@opWa*m~$kc4*)Zb^Dn0XvDZ~l_=^(P zj-{W44M)Q=@$OB>M6V_+l>u$N+lae#SX_B()D*wN_zS6i7zI|tt9t15*UX^monL|oQ#@Fj# z&SZqGG-XCg@RPE!^IA`W%d7{)2OWBUTpRiI!TSP;x~=}iO{@Bq|24TO&uubkMWM9j zSKw~DnF`3!oa_wQd|UnfW zb98<`3TKP`h!8!ep|F%>s1q8&f?ef3ZsMA))?L4vndImOt!AzqdCcrI5ac?0nqZMV z-p9W@tlN8Q<4~QZ*Ck7M4G8KL3JFh%+M}b$rw{c9me?hd-{AdenV-f-Xp8Y$jf-BF zuu%IkS#FV~Ut=#9qPjWR{A(k4Z^omkt*=CV;>l(JTwmGy2c6&bM?DSAJ<5^h?BQ+_ zhRnVIL;{^=NgozmH8~Suy`u!okXA%G-9OO-BVe$M10ocGa7gghXt7-`<}>>Za^n2) z6SFxj*2}L16O0jE5KRNRan~QV7c>U4lGv!B$k70gQYm%T$X7$Il|f7F6EZ_1e#;r; z(>{-mmMr$?Cb4N8dkY0Jckn2Zog-CpuejL$0kC|z{m87uTh7_!+>(l1_VX{>cI}dS zF{r#HcAe-~lWjoH6}&})tHF;KAx^ij(2~iod2AAwH|mHw%EFqmhldc&>6^kX%ZNF= zjPvX~`7xj9W}!qdTp{7U_a=cOf4$6uMZeIi&=)BFa_e)^wO`MEGM9icP^39AdPT%! zN>?WNG*XWEvHRUHHHoXj+TeGK`U16at~wK?-PmucY&Co9R5@xY*tJmsv6VV^gFR#u zyL^I3TQm0E?YzB@-O8?TZ8p2H`O!}(+S6$HwgM2sTk;=W{5vN6d~}*tIkEY6{Y*>= z=+0?cC2P@?`)1Zlk|>U(4dYM!OB!st3ufvQ6&t2zkVB7toy_hjpYF?KtK>j6($)Ly zEzBM5SlGGua;9E;tGnC*Fww|P21m>8JgcY|0^`l;lt6LmK;%21_S1pepsmPcqN2#G zBcsT7&6*P*XNQBuM#ZSrC{Fd}*c~bt`btNOlPxX;{&9Ktt*gyQU=P2;m709D6jMw) zf$$V68^&&wt&uOxkngk@9vy8#%r7bAGdkR5e`=+`63MI$#aw%2rr~;G5ij6LDuZ@H z{fs~`w?sBtk7Qdo8QL^xL>}uUh%Cy(XKOl}u^)XCmuifNI&^-!U-MpE3PI23nJt2J zwc2$>sGcKK2kMJ7A3EV&Sji7?>Ax5ow{N@&N;1FhMgloe&)4Weq-`E52dK$-_X(nt z$`?x&j50&Gt>++$u-F{k2LDeML6EV!gGSZ*OI@}%07J=FW;xWV+J_R&M3%CwWpQyD zRts9v8fS7>hsE=jaxMJkiHdp6WP||87is0zdF@uc$Z+9X^LL?e;+-*P*U?GUZ&EJR zu#*lqUX*mM>tRo}+b;X+bGRD>6gldpTD?HTfqv%bl4?Wdtkx>y%dFnqxXiw9*MJrs z+8JwQ;3*Btw=3=K-Zet!41Lsf zAhtGEpJI76+WN_JV|%fteYHhqTa11|!%EIkBzt2SVcmR8ho4XMZCSJlLqQq^l@Ve2 z+2~gJQV$srK5AkNyWM`jPTnlu?SW4i??>C3lL2Om#uZNS2X14+E7-~@VqI_30w154 zF8;Yqjl&G>N#btVa4vM~PRhqMC?7_OaVdazO~b>4CKqz2wc;ZC@pEPN!08bFSkol zIGVI{AXHD)xVM*>S6qOE2Uv&Dur)o1ERC6PZjaO zl}IM?DBf=4x2vbXs1`Vapg+{Vlv(HZW%md2?N$>*{HNjk6pZxpRN9Q6`JvI`X3O#6 z^RRdiD?GI-)7ue4U&aKN<)1&pHi%lPyBY4WFk^>Go}a7pCuEUKp{`c;Sr|qZh^m*N ztwy1qy~+4@3r*&C>TB|Z&K0b1ji=^%8Q+fB3%oAWHLjz3ZGuSr%rh}Q-QgLmQQF@V zDSq4w!atnTyHA1V*eVsZI=Y;q`$^m_Nce4B#Y~y+vg%?QALp8G-GIxbounZV76@dh z+b=3PjlET2bz56uvbo~f3ct8{U5(|bKQ?{_ph*od;qu?6i2l~8cb?06!g$u;gSh}N z05AUi!l2*6wp^YU{UHF@}fBttEd5geJN@7vX7^u1S=Xb~cotHE{+`KThM*|{ss zketbdFzcsVX|AqSZTd8Z+bH3K9TT}o2P{JIN?|M;3bNk}E~Kd5{V7v$jRPyp7AL{l znZVxyZz|BM=UttunP@?gB~}NO_B4!A6oVJnW|$&O--K->KJi(WiLAS${m>xk8l^?3 z;0&@XC^o%s>@fNj|88AnUXOcY<9=zAIK>C+nA;B{(i~2{?(#L8MNCdgb8u&0&jqKl zGd9YZNAM1%nBbpuBAN~o1ixL3;{^Ik=xuA2T6^3S5QB3ko1y?Wr4!OPV0T0nOQSKM zx=Yi|bs__F#8OTC-FKPs?cxVn)@V-0ORg(?KV6DSdum263Ul@9SSBFV!RHAUd?A9c z&-aY2jP>n4!urcA$BJ747@F{ai|{{9l8SgW#GB%7##!to^6W< zK;!;hwdcFpvd4ry16!OWXkxg)fbx06FC;oFfsn0%ECO>R8L#A-=2omJy$q3W{4gr_ z{qPG+$bPbDx-B*RtAWp9@GbtrJB*!j_0$#+1Rn=Z;uhD-`Ji$R2Po}eea(*&8wGl6 z%K!~Z1*~MGTDDIv7f`JC4nis)(3>JHlu`o?0UcV$1@cc+btUpmjbQ5_bzy>gsl6Co zC5xa+MAl73_9;|jOZSDz(aX+wquov`4rZVELkThfMs8z24532iy+c8z0Lpy7f@6e1 zm4}WIo@wnLVf>Nd;HSKXRTGvrecii~8=rlg0~X{cGHCsNWC^;@eMu2_`!!r&vm7*0 zn~)(0ed)8Yrs=~z9D7$Y&3vu56>;@&R1~E(I_JYo z`u(<-y&Zr^g#P~3I=@j%G0 zd;5u9JGenHHN7>JSV;6<8pGG1n6x(uZO2wyV|3M{)jO3teZufzwUY=Jp*mUjwb9v) z(h-H@`)*6vSucqLj0EfEr_mhZp+iF@&p~QKEn~qvGTZ7_- zCL7dihHKZ>_(&r=R*CuLXj3LGk6cIHYRmdCfq{#a&d>FiHd=xhOMJKqX`DdcAKg#d z?J4a_1#>QY4Uuo#bWuU+=~k! zj_sZHEu~j+Ds2?i+SN)FRGMn$>JI~v#o!lm70Lnq-0;l9mz}zdtF~7RPg?gRl)7}x z`g^6|gnKptx|ER#95n|SpT)tr$IJ>L&Y6iq{TDf*LJswt2~duCg|h5brcGc`e< zAeeO^BG3z{g-5sz)yRVk`QP6HqcoCM!P?6G?c5Yu;CFIh)wyW!Q_dml5a&nvG)9r; zU3TItVqalaRxtWp2dUuo=w`6CEU6mO3dN{d^{iQl)PAFW2bN`pM8M&sxkgg&NRnKm z8t)KH7CfR~NhKia!2@!4GmoHEs{JU$glAkh<5y@vBBE#7bLXPc3)MIj$sLGj zow*q;de^O`yz&)d#GqzxWAB7TP7XQvm>;iWjS_^v8aznwY?V7Cvd>aL^?5RNX5dol zEAZ>6=MaKL1JGz`RCuG26}aQ%G<}~_;(pYqctnqCTl(WJ6S~~4>c~o4C>44R za3Tvv0hzKJFkG3mCV=r%FE2;0Vzxd9azT?}MUl1{r8&-7Soo_PmC~pl+3S$x_tDK_ z`8z;Y^~0@ZY(4R^2dTN3MJPJ7jyQejy$+J!5#drRiQbjp{c1~B3OWc%=3xmH#5WcV zBWb8Q6Db)(eK^xGx>6}?j%ywe5)Q+XZ+nC+c;PQ`@BpPf=)NYK{_3Hek6N*5OGZUK z%xth~D0nyGKshItL@wXoR3>qsG3uvg$FMRYUFI1y^ig-sw-(sUp4$n$M|`P7(>GQ7 z0o8Z#!)0O`(Y?q01Yb3mFl>p*PfQoVR1*@@i5c6nn7al1M#@$mahhQ|u6o|8S7$jW z_$qa*Gj@+XsPqY-)e^|HrVmOIb6!Q&`C;89-Q_ZpA%=<7Zsc``*I%ArO%yOB`>>jb z!R8DS&P7f!`iTxdQ_j!a#s7?;iYclZ909)fwA)k%d^bVwc^MDHNNq!!lpgt^r%deg z76kj!zpg1WW`WU&s{?jPfNxAAF45FHvGh_@v&Zz?=)*((3#BrHE!UO~v{9m2L<~x* zZUxmpn${D-QPaf_Eq*zdFpc*+UQ=p%7HvqSC~jAEEe5FrId821HZ>m=8WDL}2kC{T zi{TKzP~25^9Z^3Uc|QHFSM@YD-&sB;qqqzif%Xmy{V;W6xBm{-^cwxoC^jHNTZuS^b9hDe<1;fnrc%IX3~1l*B&)S&PqjUc*Yf(--1R> z?p8!csd-3~nt(p3>9`h$&~DW3!$vKo+66WavpcBcQjy=6x-^`IRv5(wuT)NLiBV~w zdchGuxiCa?>ig!q_J`to3(`q4yv>NTYF!)*QrDFzCe~SE`WQ-y{B2*iA~KBMe$q<9 z2$YY1R)HZ+1u=%%%^9%0saF#Mdgh26B$xvIfX3q(!cml+mu-3*Dk0##M!Qm(d(8)S zE|NDxh6&=b7<)IZtd>gNv(FnsPtburyXB~u`f(xe*%toQy{JGIOk_4&3IdZ6`<-cD zCbgU0-Md4zOKnrx??c%;;3EYUg$>)G*My0euHSed>{U=Wi-t8Ce;oiB6l%sAxeJ~P{u0VnE^t;cIx| z%Up#=L6cx?s#e1S zhCb8C)e3ALll_!@XPm{uJ{ZM00XrRsk^xF_3v|VhxN6Q+$RA3Zu7^WP_4lV=5wtnC za<{+ourbR6s(?k@fVfZZ=hFoZGiEKu)q))rk-b)}d1)9%{&G+*=rY70J2c}U`N_Hu zo*{+cV)B`!f^@!hls10#LgG4_9y|uK;ZQ-;qK_DFIrkl5XQ|=LTTb~J?}0XOm*LhQ z()XCLiY7z82++g_M&vVC`Eo3Bmr?0=FV_38!I$>ZsBk@T{94i=qmXk9=^Nxd^&oZp zv#r6n1ixSENzXHUBt{m**4z_yAri2cs8^qFmt5nlX>BV6CA^K7VGnbN!YnZl<(c3M zq7VX|hrPZdSXGvZ$1Boa&o}1_eUJ1-=C^!qpyY?~&HhGpb?zuOf#HRz2)yC)pwAr}0csgWBBoc>MZfQQqjAkbT86wK9vmNvpN$9iN%$U_$RFB4j@JWIwa_TOeruZfA-!pO$vTa9-O+u zk?V7pCDiT5zmzUa4GByyt<02puu7N|j#2kHmuo`sfd7Q*ifOJmB_=*Y@1aqTjoec5 zOYiQM@QR_`3``#;BId!)Fwy$iVXsDGuRWG9)eZg-2bQ6OU!z?0<}eX)OA9o`BR;@vi`T92@&8i3he2@nJaENE zCleblZ2nmirE*#i38JYyTeWZv$Z0Pc$KC~>t+hY~0~x%{JU*Vck{%D~8I1BFuGtAW z>6evKxQ(P*dsrF!#kN05c*ez(kdfX7O~W2`GxNa_eY4Vg$1-5#r1;p_^&oW9SUAg$AM~!B5q>KexLX zc<=9UxWcT}a8sGIK3@iIqU|4hz#6lL-GI}AdO9@Y@F-Xea?#pBE@6Uk zKdo&#KKNHJaO>q#*Yco=`Ty5L1z9Z{tlz&=rNKBgP2%L#gan%hK8IJ>%G1 zmC_8fq1b>n+!rO7*#MstcI;KwZAdz%RTfSfmh4}C+bU@$j^54y%VUW8&hu*=Z(ywm zZ5{Mu^f_I%Yz@pFR&cM+OPnl`6I$W<33_M10QH55bZgVbq1>qikM(9`-Y9H1*~bTD z56jFa9uvTRny!2Vu94l&1J_(1+i{V&nsx}BZKB-9>#oCwenjFLGqK=DS-T z<;dG^eXqFJBZDnM7|?QJo>-x~o^OZJ^`Q;2xGT9Om9Pu7$HO(m=>+Mq3d7^YdCm73 z-HE&K#WI(fPr^0GPp)o!ZltaoG2VHgFO}0fYrSmj1k4_1S3TZy&2~YAj;apKEPgfH1R&{rX%tz#5-7-X+NF@iNZQ<^^8z5P`_vZ4ch{ z9jK?O>{z>=U`7b$Jx$&e0|iA?tjO&@{wk574?jI<1UahT{l`s2iz zcqi{r;C<4Yr51`j5kH*Zyvufv#Az6{Vev3hSjAoIx%YwWnERBFZm3?YNJsl#m~RuL zsHS1-5tRaXOAeW?ib;9G=80%pae06AQs_j;0(6A;&;8&U3saMucIM zS7I!)GRjepv-)e1VW=mVdep~gD^itxQYSwBZ)0^f(H#ONYo4URK+occ5LqA~8rz1dzTI=GEov;zD}1K598AH{K2mjKkzueB`5lwHnaCc*>eg;^7s{gs*DBDK+?**s}ZRdeZkZ)Iv46|CIv z4;MNLX%H-fx5)5&MmQ%>$Dl0n(hZ3XX(Bu!vJ-Q=dR=2zYbCRXf{j|yrZ;UbM5AEG zINGnprW{>|K4Rih0DyNMK~>*UP5ZkDyI5&eGZt6DY4B=Eh4U5>$l*3W>)qjB8exlg ziCtqNt&BEwj_fG7*LJ88bTD#q=;I}kMB80l9$uE=l!bI@dAwPm5|Gd=f({+7k;Usn zw6;ROvccU^Rcs#0cvYMOU>^=L3WFIH)Y|!X-U;scuMIHiv!U(2*l(tG!%snucA-b&1u?Ij zujXV#g3D<4MQ@E=8bsEY+rv8o2$UL}*|e3pw`si!S7;Jl*Pn^oh_vM<~o(l z)ZGG-1?wU1{OjA|O0V>cH+;fm4>#iC?e|PYHUj-l6EV%F_t&n|_h0-QWk@!jp0ST& zj9&b8qzjZV$SIzlv18Xe?_CH{d{GZM58wp~qor*n(Hl964}h!M3j%zQBB-docD>k1vqLg1trA$CWpP2}BEpAzKoJ0hw{7fs5g8@^q;JV<)|R!;bNa2ORtds_ zDrT^-oqZWjkOMst=b4o^<3Ycwz#+O&APjdR(gSRAgX@<0k8BIyrwJnaF0ApEP$&|m zhR`4wAeC!lTT*YAOiE)perI>CUeuUF5MHrhsI4NJg)m794p-_GU-M@14B<7Edir`q7{axAjSLMEh`2S2Hax7`X9Bnk>&t-6|u6euv7++<#1I zmjiW!q2T2%JVgC2kJ#4(8W<4;EoA7UuSysLGz-Rsnd_5YE;6I~xlQ_JHSE2rby9PU zLDW6Leyw+z$g49IC^1}2wL!Kw%YEI`Y!doJjm}4*UgWSAu9u~@-(z^Pv3C^JQBXfd zLBWS#gx}G=I_AY8$BbT!5~fr z&-j^>kjx3FV&tG_3virFA)jtDom#$!_v%~V%uimBK%X0$rXw!FlTb{*)GQc>np;;_ z6MAtn`H^hcJUPeirM*}j!dbre0kO5CV*OfvPuO(u!Z(_gv{GCM(~bM(?>IY#JKx}l>*(1VP3SkALQRaThG1tObF&_msF!uQR>_9wY)YZu@>gSBP1 zz&)^6sDvoa?yybqVcip!=%b~M9-W8tGF~HO1x znue9VI6il9pM6;LCt8ahH0lR)664)mXj~+3F0ZhkdyLw0M#fqf4TbAUEJ^NOV!8~( zVObvbqJBPJ;%6CrC&fK;_%Qlp>p|p6Mc|4(cHnLIMaIJr+%H)9Zc(~CvL3@Q0d7-siOj*_ZammCN7M!5W94x4gz8GwMBNl*BNwksh9X zlW`PjQZ>Xe6R;`BVco*|n`EYImD~w8@?92PpPD@!0*)?`iN^=QhE?H?m1q&PXeuZI zc7UucZfb|HV6AFMsabZ$dt2R#(Rj6oQ!^*O;YvKJR%0Afp240`FEAO0YW77zVSb+= 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 HA^g7pzyaQu diff --git a/docs/diagrams/kfserving.png b/docs/diagrams/kfserving.png deleted file mode 100644 index 156833530e1549b633669effa8a0939b6944d3c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225929 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