From c27efbdefff224d7655c7121053b325aaf63480a Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Thu, 4 May 2023 13:00:36 +0100 Subject: [PATCH 01/16] First drop of improvements to deployment docs Signed-off-by: Jo Stichbury --- docs/source/deployment/argo.md | 6 +++++- docs/source/deployment/aws_batch.md | 6 +++++- docs/source/deployment/azure.md | 4 ++++ docs/source/deployment/index.md | 32 ++++++++++++++++++++--------- docs/source/deployment/vertexai.md | 5 +++++ 5 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 docs/source/deployment/azure.md create mode 100644 docs/source/deployment/vertexai.md diff --git a/docs/source/deployment/argo.md b/docs/source/deployment/argo.md index a959b0a997..8030f17c34 100644 --- a/docs/source/deployment/argo.md +++ b/docs/source/deployment/argo.md @@ -1,4 +1,8 @@ -# Deployment with Argo Workflows +# Deployment with Argo Workflows (deprecated) + +``` {important} +This page contains legacy documentation that has not been tested against recent Kedro releases. +``` This page explains how to convert your Kedro pipeline to use [Argo Workflows](https://github.com/argoproj/argo-workflows), an open-source container-native workflow engine for orchestrating parallel jobs on [Kubernetes](https://kubernetes.io/). diff --git a/docs/source/deployment/aws_batch.md b/docs/source/deployment/aws_batch.md index ccb79b8624..fcb5cc8627 100644 --- a/docs/source/deployment/aws_batch.md +++ b/docs/source/deployment/aws_batch.md @@ -1,4 +1,8 @@ -# Deployment with AWS Batch +# Deployment with AWS Batch (deprecated) + +``` {important} +This page contains legacy documentation that has not been tested against recent Kedro releases. +``` ## Why would you use AWS Batch? [AWS Batch](https://aws.amazon.com/batch/) is optimised for batch computing and applications that scale with the number of jobs running in parallel. It manages job execution and compute resources, and dynamically provisions the optimal quantity and type. AWS Batch can assist with planning, scheduling, and executing your batch computing workloads, using [Amazon EC2](https://aws.amazon.com/ec2/) On-Demand and [Spot Instances](https://aws.amazon.com/ec2/spot/), and it has native integration with [CloudWatch](https://aws.amazon.com/cloudwatch/) for log collection. diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md new file mode 100644 index 0000000000..9a92e96511 --- /dev/null +++ b/docs/source/deployment/azure.md @@ -0,0 +1,4 @@ +# Deployment to Azure ML pipelines + +For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) that enables you to run your code on Azure ML Pipelines in a fully managed fashion. + diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index d711aea3e9..b0026f4ac2 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -11,11 +11,21 @@ If your pipeline is sizeable, you will want to run parts of it on separate machi We also provide information to help you deploy to the following: * to [Airflow](airflow_astronomer.md) -* to [Argo Workflows](argo.md) -* to [Prefect](prefect.md) -* to [Kubeflow Workflows](kubeflow.md) -* to [AWS Batch](aws_batch.md) +* to [AWS SageMaker](aws_sagemaker.md) +* to [AWS Step functions](aws_step_functions.md) +* to [Azure](azure.md) * to [Dask](dask.md) +* to [Databricks](../integrations/databricks_workspace.md) +* to [Kubeflow Workflows](kubeflow.md) +* to [Prefect](prefect.md) +* to [Vertex AI](vertexai.md) + +``` {warning} +We also have legacy documentation pages for the following deployment targets, but these have not been tested against recent Kedro releases and we cannot guarantee them: + +* for [Argo Workflows](argo.md) +* for [AWS Batch](aws_batch.md) +``` @@ -28,7 +38,7 @@ flowchart TD C -- YES --> D[Use a container-based approach]; C -- NO --> E[Use the CLI or package mode]; A -- NO --> F[Consult the distributed deployment guide]; - F --> G["What distributed platform are you using?

Check out the guides for:

  • Airflow
  • Argo
  • Prefect
  • Kubeflow Pipelines
  • AWS Batch
  • Databricks
  • Dask
  • "]; + F --> G["What distributed platform are you using?

    Check out the guides for:

  • Airflow
  • AWS SageMaker
  • AWS Step functions
  • Azure
  • Dask
  • Databricks
  • Kubeflow Workflows
  • Prefect
  • Vertex AI
  • "]; style G text-align:left H["Does (part of) your pipeline integrate with Amazon SageMaker?

    Read the SageMaker integration guide"]; style H text-align:left @@ -41,12 +51,14 @@ flowchart TD single_machine distributed -argo -prefect -kubeflow -aws_batch +airflow_astronomer aws_sagemaker aws_step_functions -airflow_astronomer +azure dask +kubeflow +prefect +vertexai +argo +aws_batch ``` diff --git a/docs/source/deployment/vertexai.md b/docs/source/deployment/vertexai.md new file mode 100644 index 0000000000..f4deca5c8a --- /dev/null +++ b/docs/source/deployment/vertexai.md @@ -0,0 +1,5 @@ +# Deployment to VertexAI + +Vertex AI pipelines is a Google Cloud Platform service that aims to deliver Kubeflow Pipelines functionality in a fully managed fashion. + +For deployment to Vertex AI Pipelines, you should [consult the documentation](https://kedro-vertexai.readthedocs.io/) for the [`kedro-vertexai` plugin](https://github.com/getindata/kedro-vertexai). \ No newline at end of file From 6d899ada9605165d1b94f076f31700d96dddcd3c Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Thu, 4 May 2023 13:35:24 +0100 Subject: [PATCH 02/16] Fix end of files Signed-off-by: Jo Stichbury --- docs/source/deployment/azure.md | 1 - docs/source/deployment/vertexai.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md index 9a92e96511..b9f305c0a8 100644 --- a/docs/source/deployment/azure.md +++ b/docs/source/deployment/azure.md @@ -1,4 +1,3 @@ # Deployment to Azure ML pipelines For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) that enables you to run your code on Azure ML Pipelines in a fully managed fashion. - diff --git a/docs/source/deployment/vertexai.md b/docs/source/deployment/vertexai.md index f4deca5c8a..03e123c1a7 100644 --- a/docs/source/deployment/vertexai.md +++ b/docs/source/deployment/vertexai.md @@ -2,4 +2,4 @@ Vertex AI pipelines is a Google Cloud Platform service that aims to deliver Kubeflow Pipelines functionality in a fully managed fashion. -For deployment to Vertex AI Pipelines, you should [consult the documentation](https://kedro-vertexai.readthedocs.io/) for the [`kedro-vertexai` plugin](https://github.com/getindata/kedro-vertexai). \ No newline at end of file +For deployment to Vertex AI Pipelines, you should [consult the documentation](https://kedro-vertexai.readthedocs.io/) for the [`kedro-vertexai` plugin](https://github.com/getindata/kedro-vertexai). From ba1c9b8f7295fad57c9d3b422666960964078fb9 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Thu, 4 May 2023 18:00:58 +0100 Subject: [PATCH 03/16] Next chunk of changes Signed-off-by: Jo Stichbury --- docs/source/deployment/airflow_astronomer.md | 36 +- docs/source/deployment/amazon_sagemaker.md | 13 + docs/source/deployment/argo.md | 2 +- docs/source/deployment/aws_batch.md | 2 +- docs/source/deployment/aws_sagemaker.md | 356 ------------------ docs/source/deployment/aws_step_functions.md | 2 +- docs/source/deployment/azure.md | 9 +- docs/source/deployment/dask.md | 2 +- docs/source/deployment/index.md | 34 +- docs/source/deployment/kubeflow.md | 201 +--------- docs/source/deployment/prefect.md | 2 +- docs/source/deployment/vertexai.md | 5 +- .../meta/images/aws_create_iam_role.png | Bin 75032 -> 0 bytes .../meta/images/kubeflow_pipelines_dag.png | Bin 60905 -> 0 bytes .../kubeflow_pipelines_experiment_run.png | Bin 70802 -> 0 bytes .../kubeflow_pipelines_upload_pipeline.png | Bin 82660 -> 0 bytes 16 files changed, 71 insertions(+), 593 deletions(-) create mode 100644 docs/source/deployment/amazon_sagemaker.md delete mode 100644 docs/source/deployment/aws_sagemaker.md delete mode 100644 docs/source/meta/images/aws_create_iam_role.png delete mode 100644 docs/source/meta/images/kubeflow_pipelines_dag.png delete mode 100644 docs/source/meta/images/kubeflow_pipelines_experiment_run.png delete mode 100644 docs/source/meta/images/kubeflow_pipelines_upload_pipeline.png diff --git a/docs/source/deployment/airflow_astronomer.md b/docs/source/deployment/airflow_astronomer.md index e02849221e..1fff6c1bb6 100644 --- a/docs/source/deployment/airflow_astronomer.md +++ b/docs/source/deployment/airflow_astronomer.md @@ -1,14 +1,30 @@ -# How to deploy your Kedro pipeline on Apache Airflow with Astronomer +# Apache Airflow -This tutorial explains how to deploy a Kedro project on [Apache Airflow](https://airflow.apache.org/) with [Astronomer](https://www.astronomer.io/). Apache Airflow is an extremely popular open-source workflow management platform. Workflows in Airflow are modelled and organised as [DAGs](https://en.wikipedia.org/wiki/Directed_acyclic_graph), making it a suitable engine to orchestrate and execute a pipeline authored with Kedro. [Astronomer](https://docs.astronomer.io/astro/install-cli) is a managed Airflow platform which allows users to spin up and run an Airflow cluster easily in production. Additionally, it also provides a set of tools to help users get started with Airflow locally in the easiest way possible. +Apache Airflow is a popular open-source workflow management platform. Workflows in Airflow are modelled and organised as [DAGs](https://en.wikipedia.org/wiki/Directed_acyclic_graph), making it a suitable engine to orchestrate and execute a pipeline authored with Kedro. -The following discusses how to run the [example Iris classification pipeline](../get_started/new_project.md#create-a-new-project-containing-example-code) on a local Airflow cluster with Astronomer. +## How to run a Kedro pipeline on Apache Airflow using a Kubernetes cluster -## Strategy +The `kedro-airflow-k8s` plugin enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. + +Consult the [GitHub repository for `kedro-airflow-k8s`](https://github.com/getindata/kedro-airflow-k8s) for further details, or take a look at the [documentation](https://kedro-airflow-k8s.readthedocs.io/). + + +## How to run a Kedro pipeline on Apache Airflow with Astronomer + +The following tutorial explains how to deploy a Kedro project on [Apache Airflow](https://airflow.apache.org/) with [Astronomer](https://www.astronomer.io/). [Astronomer](https://docs.astronomer.io/astro/install-cli) is a managed Airflow platform which allows users to spin up and run an Airflow cluster easily in production. Additionally, it also provides a set of tools to help users get started with Airflow locally in the easiest way possible. + +The tutorial discusses how to run the [example Iris classification pipeline](../get_started/new_project.md#create-a-new-project-containing-example-code) on a local Airflow cluster with Astronomer. You may also consider using our [`astro-airflow-iris` starter](https://github.com/kedro-org/kedro-starters/tree/main/astro-airflow-iris) which provides a template containing the boilerplate code that the tutorial describes: + +```shell +kedro new --starter=astro-airflow-iris +``` + + +### Strategy The general strategy to deploy a Kedro pipeline on Apache Airflow is to run every Kedro node as an [Airflow task](https://airflow.apache.org/docs/apache-airflow/stable/concepts/tasks.html) while the whole pipeline is converted into a [DAG](https://airflow.apache.org/docs/apache-airflow/stable/concepts/dags.html) for orchestration purpose. This approach mirrors the principles of [running Kedro in a distributed environment](distributed.md). -## Prerequisites +### Prerequisites To follow this tutorial, ensure you have the following: @@ -16,7 +32,7 @@ To follow this tutorial, ensure you have the following: * The [Astro CLI installed](https://docs.astronomer.io/astro/install-cli) * `kedro>=0.17` installed -## Project Setup +## Tutorial project setup 1. [Initialise an Airflow project with Astro](https://docs.astronomer.io/astro/create-project). Let's call it `kedro-airflow-iris` @@ -142,11 +158,3 @@ If you visit the Airflow UI, you should now see the Kedro pipeline as an Airflow ![](../meta/images/kedro_airflow_dag.png) ![](../meta/images/kedro_airflow_dag_run.png) - -## Final thought - -This tutorial walks you through the manual process of deploying an existing Kedro project on Apache Airflow with Astronomer. However, if you are starting out, consider using our `astro-airflow-iris` starter which provides all the aforementioned boilerplate out of the box: - -```shell -kedro new --starter=astro-airflow-iris -``` diff --git a/docs/source/deployment/amazon_sagemaker.md b/docs/source/deployment/amazon_sagemaker.md new file mode 100644 index 0000000000..e6e80ea8a7 --- /dev/null +++ b/docs/source/deployment/amazon_sagemaker.md @@ -0,0 +1,13 @@ +# Amazon SageMaker + +## Why would you use Amazon SageMaker? + +Machine learning development is a complex, expensive, and labour-intensive process with very specific requirements for the execution environment (ML tools and libraries, hardware requirements for CPU or GPU-optimised algorithms). + +Amazon SageMaker provides the components used for machine learning in a single toolset so models get to production faster with much less effort and at lower cost. Amazon SageMaker supports both classical machine learning libraries like [`Scikit-Learn`](https://scikit-learn.org/) or [`XGBoost`](https://xgboost.readthedocs.io/), and Deep Learning frameworks such as [`TensorFlow`](https://www.tensorflow.org/) or [`PyTorch`](https://pytorch.org/). + +Amazon SageMaker is a fully-managed service and its features are covered by the [official service documentation](https://docs.aws.amazon.com/sagemaker/index.html). + +## The `kedro-sagemaker` plugin + +The `kedro-sagemaker` plugin enables you to run a Kedro pipeline on Amazon Sagemaker. Consult the [GitHub repository for `kedro-sagemaker`](https://github.com/getindata/kedro-sagemaker) for further details, or take a look at the [documentation](https://kedro-sagemaker.readthedocs.io/). \ No newline at end of file diff --git a/docs/source/deployment/argo.md b/docs/source/deployment/argo.md index 8030f17c34..0d9562e94a 100644 --- a/docs/source/deployment/argo.md +++ b/docs/source/deployment/argo.md @@ -1,4 +1,4 @@ -# Deployment with Argo Workflows (deprecated) +# Argo Workflows (deprecated) ``` {important} This page contains legacy documentation that has not been tested against recent Kedro releases. diff --git a/docs/source/deployment/aws_batch.md b/docs/source/deployment/aws_batch.md index fcb5cc8627..3d1f8b93c9 100644 --- a/docs/source/deployment/aws_batch.md +++ b/docs/source/deployment/aws_batch.md @@ -1,4 +1,4 @@ -# Deployment with AWS Batch (deprecated) +# AWS Batch (deprecated) ``` {important} This page contains legacy documentation that has not been tested against recent Kedro releases. diff --git a/docs/source/deployment/aws_sagemaker.md b/docs/source/deployment/aws_sagemaker.md deleted file mode 100644 index ac375f239b..0000000000 --- a/docs/source/deployment/aws_sagemaker.md +++ /dev/null @@ -1,356 +0,0 @@ -# How to integrate Amazon SageMaker into your Kedro pipeline - -This tutorial explains how to integrate a Kedro project with [Amazon SageMaker](https://aws.amazon.com/sagemaker/) in order to train a machine learning model. It shows how to build machine learning pipelines in Kedro and while taking advantage of the power of SageMaker for potentially compute-intensive machine learning tasks. - -The Kedro project will still run locally (or on one of many supported workflow engines like [Argo](./argo.md), [Prefect](./prefect.md), [Kubeflow](./kubeflow.md), [AWS Batch](./aws_batch.md) and others), but the model training step will be offloaded onto SageMaker. - -## Why would you use Amazon SageMaker? - -Machine learning development is a complex, expensive, and labour-intensive process with very specific requirements for the execution environment (ML tools and libraries, hardware requirements for CPU or GPU-optimised algorithms). Amazon SageMaker provides the components used for machine learning in a single toolset so models get to production faster with much less effort and at lower cost. Sagemaker supports both classical machine learning libraries like [`Scikit-Learn`](https://scikit-learn.org/) or [`XGBoost`](https://xgboost.readthedocs.io/), and Deep Learning frameworks such as [`TensorFlow`](https://www.tensorflow.org/) or [`PyTorch`](https://pytorch.org/). - -Amazon SageMaker is a fully-managed service and its features are covered by the [official service documentation](https://docs.aws.amazon.com/sagemaker/index.html). In this tutorial we will focus on training a simple machine learning model on SageMaker as part of Kedro pipeline execution. - -## Prerequisites - -To use Amazon SageMaker, make sure you have the following prerequisites in place: -- An [AWS account set up](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) -- [Configured AWS credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) on your local machine -- Generated Kedro project called **Kedro Tutorial** using [Kedro Spaceflights starter](https://github.com/kedro-org/kedro-starters/tree/main/spaceflights/) -- Completed the [spaceflights tutorial](../tutorial/spaceflights_tutorial.md) - -## Prepare the environment - -### Install SageMaker package dependencies - -First, you should add extra package dependencies that are required [to communicate with SageMaker via its Python SDK](https://sagemaker.readthedocs.io/en/stable/). - -Add the dependencies by modifying `src/requirements.txt`. Open the corresponding file with a text editor and add the following lines at the end of the file: - -```text -sagemaker>=2.13.0 -s3fs>=0.3.0, <0.4.1 # will be needed to work with AWS S3 -``` - -Since you have added two extra dependencies, you should install the updated project dependencies by running the following from your terminal: - -```bash -cd -pip install -r src/requirements.txt -``` - -```{note} -All CLI commands in the following sections should be executed from the project root directory. -``` - -### Create SageMaker execution role - -1. Sign into the AWS Management Console and open the [IAM console](https://console.aws.amazon.com/iam/) -2. In the left navigation pane, choose `Roles` -3. Choose `Create role` -4. For role type, select `AWS Service`, find and choose `SageMaker`, and then pick the `SageMaker - Execution` use case, then click `Next: Permissions` -5. On the `Attach permissions policy` page, select `AmazonSageMakerFullAccess` managed policy, then click `Next: Review` -6. Give it a name (for example, `AmazonSageMaker-ExecutionRole`) and choose `Create role` - -![IAM role creation wizard](../meta/images/aws_create_iam_role.png) - -### Create S3 bucket - -You should [create a new S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) rather than use an existing one because SageMaker jobs will save source script data to the bucket root. Having a dedicated bucket for this tutorial makes the cleanup easier. - -Your bucket name should contain the word `sagemaker`, this way the role that we created earlier will automatically have all necessary access permissions to it. Your new bucket does not require public access, so you can leave `Block all public access` setting enabled and preserve other defaults. - -It's generally a good practice to create AWS resources (like S3 bucket above) for the tutorial within the same [region](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/#Regions) that you have in your [local configuration](#prerequisites) where possible. It helps reduce the network transmission latency and ensure that different services can talk to each other. - -## Update the Kedro project - -### Create the configuration environment - -Configuration in Kedro is logically separated into [configuration environments](../configuration/configuration_basics.md#how-to-specify-additional-configuration-environments) which are loaded in specific order where the project is run. To separate SageMaker-specific configuration from the default one, let's create a new configuration environment. Go ahead and create a `conf/sagemaker` folder and then create the following files in it. - -```{note} -`${key}` in the YAML snippets below is a special syntax which allows you to template the project configuration. You don't need to replace those values, just paste them as-is. -``` - -* `catalog.yml` - defines the datasets that need to be saved into S3 (rather than kept in memory): - -```yaml -X_train@pickle: - type: pickle.PickleDataSet - filepath: ${s3.train_path}/X_train.pickle - -X_train@path: - type: MemoryDataSet - data: ${s3.train_path}/X_train.pickle - -y_train: - type: pickle.PickleDataSet - filepath: ${s3.train_path}/y_train.pickle -``` - -> *Node:* `@pickle` and `@path` in the dataset names above correspond to the [dataset transcoding feature of Kedro](../data/data_catalog.md#transcode-datasets). This allows to pass S3 path to the `X_train` dataset instead of the actual data itself to the `train_model_sagemaker` node that you will create shortly. - -* `parameters.yml` - contains the configuration for [SageMaker Scikit Learn Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/sklearn/sagemaker.sklearn.html#scikit-learn-estimator): - -```yaml -sklearn_estimator_kwargs: - entry_point: src/kedro_tutorial/sagemaker_entry_point.py # you will create this file later - role: # put the name of the role you've created earlier - instance_type: ml.m4.xlarge - instance_count: 1 - framework_version: 0.23-1 - output_path: ${s3.output_path} -``` - -* `globals.yml` - contains the values that will be used to extrapolate the values in the config files above (you will need to replace the bucket name in the snippet below): - -```yaml -s3: - train_path: s3:///train - output_path: s3:///output -``` - -### Update the project settings - -Now you need to tell Kedro to use the [`TemplatedConfigLoader`](/kedro.config.TemplatedConfigLoader) instead of the default `ConfigLoader` class by setting the `CONFIG_LOADER_CLASS` accordingly. - -You also need to point Kedro to your `globals.yml` file. - -To make both changes, open the `src/kedro_tutorial/settings.py` file and set the `CONFIG_LOADER_CLASS` and `CONFIG_LOADER_ARGS` variables: - -```python -from kedro.config import TemplatedConfigLoader - - -CONFIG_LOADER_CLASS = TemplatedConfigLoader -CONFIG_LOADER_ARGS = { - "globals_pattern": "*globals.yml", -} -``` - -### Update the data science pipeline - -Now modify the data science pipeline in the project to send the training job to Amazon SageMaker and to process the resulting model artifact afterwards. - -#### Create node functions - -Open `src/kedro_tutorial/pipelines/data_science/nodes.py` and add these new node functions: - -
    -Click to expand - -```python -import pickle -import tarfile -from typing import Any, Dict - -import fsspec -from sagemaker.sklearn.estimator import SKLearn -from sklearn.linear_model import LinearRegression - -# - - -def train_model_sagemaker( - X_train_path: str, sklearn_estimator_kwargs: Dict[str, Any] -) -> str: - """Train the linear regression model on SageMaker. - - Args: - X_train_path: Full S3 path to `X_train` dataset. - sklearn_estimator_kwargs: Keyword arguments that will be used - to instantiate SKLearn estimator. - - Returns: - Full S3 path to `model.tar.gz` file containing the model artifact. - - """ - sklearn_estimator = SKLearn(**sklearn_estimator_kwargs) - - # we need a path to the directory containing both - # X_train (feature table) and y_train (target variable) - inputs_dir = X_train_path.rsplit("/", 1)[0] - inputs = {"train": inputs_dir} - - # wait=True ensures that the execution is blocked - # until the job finishes on SageMaker - sklearn_estimator.fit(inputs=inputs, wait=True) - - training_job = sklearn_estimator.latest_training_job - job_description = training_job.describe() - model_path = job_description["ModelArtifacts"]["S3ModelArtifacts"] - return model_path - - -def untar_model(model_path: str) -> LinearRegression: - """Unarchive the linear regression model artifact produced - by the training job on SageMaker. - - Args: - model_path: Full S3 path to `model.tar.gz` file containing - the model artifact. - - Returns: - Trained model. - - """ - with fsspec.open(model_path) as s3_file, tarfile.open( - fileobj=s3_file, mode="r:gz" - ) as tar: - # we expect to have only one file inside the `model.tar.gz` archive - filename = tar.getnames()[0] - model_obj = tar.extractfile(filename) - return pickle.load(model_obj) -``` -
    - -#### Update the pipeline definition - -Open `src/kedro_tutorial/pipelines/data_science/pipeline.py` and replace its contents with the following: - -
    -Click to expand - -```python -from kedro.pipeline import Pipeline, node, pipeline - -from .nodes import ( - evaluate_model, - split_data, - train_model_sagemaker, - untar_model, -) - - -def create_pipeline(**kwargs) -> Pipeline: - return pipeline( - [ - node( - func=split_data, - inputs=["model_input_table", "parameters"], - outputs=["X_train@pickle", "X_test", "y_train", "y_test"], - ), - node( - func=train_model_sagemaker, - inputs=["X_train@path", "params:sklearn_estimator_kwargs"], - outputs="model_path", - ), - node(untar_model, inputs="model_path", outputs="regressor"), - node( - func=evaluate_model, - inputs=["regressor", "X_test", "y_test"], - outputs=None, - ), - ] - ) -``` -
    - -Great, you are almost ready to run your pipeline with the SageMaker integration. The last step before we can do that will be to create the entry point script. - -### Create the SageMaker entry point - -SageMaker job requires an entry point script that it will execute to perform the actual model training. This script will be automatically uploaded into S3 and run as part of the training job. SageMaker will also automatically [download the training data from S3](https://sagemaker.readthedocs.io/en/stable/overview.html#prepare-a-training-script) to the container before running the job and then upload the trained model artifact back into S3 after the job is complete. Therefore the entry point script does not need to worry about data transfer from and to S3, but it will need to serialise/deserialise such data using `pickle`. - -Create the file `src/kedro_tutorial/sagemaker_entry_point.py` and paste the following into it: - -
    -Click to expand - -```python -import argparse -import pickle -from os import getenv -from pathlib import Path -from typing import Any - -from sklearn.linear_model import LinearRegression - - -def _pickle(path: Path, data: Any) -> None: - """Pickle the object and save it to disk""" - with path.open("wb") as f: - pickle.dump(data, f) - - -def _unpickle(path: Path) -> Any: - """Unpickle the object from a given file""" - with path.open("rb") as f: - return pickle.load(f) - - -def _get_arg_parser() -> argparse.ArgumentParser: - """Instantiate the command line argument parser""" - parser = argparse.ArgumentParser() - - parser.add_argument( - "--output-data-dir", type=str, default=getenv("SM_OUTPUT_DATA_DIR") - ) - parser.add_argument("--model-dir", type=str, default=getenv("SM_MODEL_DIR")) - parser.add_argument("--train", type=str, default=getenv("SM_CHANNEL_TRAIN")) - parser.add_argument("--test", type=str, default=getenv("SM_CHANNEL_TEST")) - - return parser - - -def main(): - """The main script entry point which will be called by SageMaker - when running the training job - """ - parser = _get_arg_parser() - args = parser.parse_args() - - data_path = Path(args.train) - X_train = _unpickle(data_path / "X_train.pickle") - y_train = _unpickle(data_path / "y_train.pickle") - - regressor = LinearRegression() - regressor.fit(X_train, y_train) - - model_dir = Path(args.model_dir) - _pickle(model_dir / "regressor.pickle", regressor) - - -if __name__ == "__main__": - # SageMaker will run this script as the main program - main() -``` -
    - -## Run the project - -You are now ready to run your project! To do that, execute the following CLI command: -```bash -kedro run --env=sagemaker -``` - -The first 4 nodes of the pipeline will still run locally, but then you should see a similar output in the terminal: - -```console -2020-10-06 21:20:25,696 - kedro.runner.sequential_runner - INFO - Completed 4 out of 7 tasks -2020-10-06 21:20:25,696 - kedro.io.data_catalog - INFO - Loading data from `X_train@path` (MemoryDataSet)... -2020-10-06 21:20:25,696 - kedro.io.data_catalog - INFO - Loading data from `params:sklearn_estimator_kwargs` (MemoryDataSet)... -2020-10-06 21:20:25,697 - kedro.pipeline.node - INFO - Running node: train_model_sagemaker([X_train@path,params:sklearn_estimator_kwargs]) -> [model_path] -2020-10-06 21:20:25,713 - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials -2020-10-06 21:20:25,793 - sagemaker.image_uris - INFO - Same images used for training and inference. Defaulting to image scope: inference. -2020-10-06 21:20:27,197 - sagemaker - INFO - Creating training-job with name: sagemaker-scikit-learn-2020-10-06-20-20-25-801 -2020-10-06 20:20:27 Starting - Starting the training job... -2020-10-06 20:20:33 Starting - Launching requested ML instances... -2020-10-06 20:21:31 Starting - Preparing the instances for training... -2020-10-06 20:22:27 Downloading - Downloading input data... -2020-10-06 20:23:02 Training - Downloading the training image... - -... [SageMaker Job Logs] ... - -2020-10-06 20:23:56 Uploading - Uploading generated training model -2020-10-06 20:23:56 Completed - Training job completed -2020-10-06 21:24:20,485 - kedro.io.data_catalog - INFO - Saving data to `model_path` (MemoryDataSet)... -2020-10-06 21:24:20,486 - kedro.runner.sequential_runner - INFO - Completed 5 out of 7 tasks -``` - -You should also find your training job if you open [SageMaker console](https://console.aws.amazon.com/sagemaker/home) and choose `Training jobs` tab from the left. - -Now you know how to run serverless machine learning jobs using SageMaker right from your Kedro pipeline! - -## Cleanup - -To cleanup the resources, [delete the S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) and, optionally, the [IAM role you've created earlier](#create-sagemaker-execution-role) (IAM resources are free). The job details of an already completed SageMaker training job cannot be deleted, but such jobs incur no costs. diff --git a/docs/source/deployment/aws_step_functions.md b/docs/source/deployment/aws_step_functions.md index 4f59c79ba0..f550458adf 100644 --- a/docs/source/deployment/aws_step_functions.md +++ b/docs/source/deployment/aws_step_functions.md @@ -1,4 +1,4 @@ -# How to deploy your Kedro pipeline with AWS Step Functions +# AWS Step Functions This tutorial explains how to deploy a Kedro project with [AWS Step Functions](https://aws.amazon.com/step-functions/?step-functions.sort-by=item.additionalFields.postDateTime&step-functions.sort-order=desc) in order to run a Kedro pipeline in production on AWS [Serverless Computing](https://aws.amazon.com/serverless/) platform. diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md index b9f305c0a8..f5e5efd702 100644 --- a/docs/source/deployment/azure.md +++ b/docs/source/deployment/azure.md @@ -1,3 +1,10 @@ -# Deployment to Azure ML pipelines +# Azure ML pipelines + + +## Why would you use Azue ML Pipelines? + + + +## The `kedro-azureml` plugin For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) that enables you to run your code on Azure ML Pipelines in a fully managed fashion. diff --git a/docs/source/deployment/dask.md b/docs/source/deployment/dask.md index d926f09429..9c5734d744 100644 --- a/docs/source/deployment/dask.md +++ b/docs/source/deployment/dask.md @@ -1,4 +1,4 @@ -# Deployment to a Dask cluster +# Dask This page explains how to distribute execution of the nodes composing your Kedro pipeline using [Dask](https://docs.dask.org/en/stable/), a flexible, open-source library for parallel computing in Python. diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index b0026f4ac2..2006e478cb 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -4,21 +4,25 @@ Your choice of deployment method will depend on various factors. In this section we provide guides for different approaches. -If you decide to deploy your Kedro project on a single machine, you should consult our [guide to single-machine deployment](single_machine.md), and decide whether to [use Docker for container-based deployment](./single_machine.md#container-based) or to use [package-based deployment](./single_machine.md#package-based) or to [use the CLI to clone and deploy](./single_machine.md#cli-based) your codebase to a server. +If you decide to deploy your Kedro project on a single machine, you should consult our [guide to single-machine deployment](single_machine.md), and decide whether to: + +* [use Docker for container-based deployment](./single_machine.md#container-based) +* [use package-based deployment](./single_machine.md#package-based) +* [use the CLI to clone and deploy your codebase to a server](./single_machine.md#cli-based) If your pipeline is sizeable, you will want to run parts of it on separate machines, so will need to consult our [guide to distributed deployment](distributed.md). -We also provide information to help you deploy to the following: +This section provides information for deployment to, or integration with, the following: -* to [Airflow](airflow_astronomer.md) -* to [AWS SageMaker](aws_sagemaker.md) -* to [AWS Step functions](aws_step_functions.md) -* to [Azure](azure.md) -* to [Dask](dask.md) -* to [Databricks](../integrations/databricks_workspace.md) -* to [Kubeflow Workflows](kubeflow.md) -* to [Prefect](prefect.md) -* to [Vertex AI](vertexai.md) +* [Airflow](airflow_astronomer.md) +* [Amazon SageMaker](amazon_sagemaker.md) +* [AWS Step functions](aws_step_functions.md) +* [Azure](azure.md) +* [Dask](dask.md) +* [Databricks](../integrations/databricks_workspace.md) +* [Kubeflow Workflows](kubeflow.md) +* [Prefect](prefect.md) +* [Vertex AI](vertexai.md) ``` {warning} We also have legacy documentation pages for the following deployment targets, but these have not been tested against recent Kedro releases and we cannot guarantee them: @@ -27,10 +31,6 @@ We also have legacy documentation pages for the following deployment targets, bu * for [AWS Batch](aws_batch.md) ``` - - -In addition, we also provide instructions on [how to integrate a Kedro project with Amazon SageMaker](aws_sagemaker.md). - ```{mermaid} flowchart TD A{Can your Kedro pipeline run on a single machine?} -- YES --> B[Consult the single-machine deployment guide]; @@ -38,7 +38,7 @@ flowchart TD C -- YES --> D[Use a container-based approach]; C -- NO --> E[Use the CLI or package mode]; A -- NO --> F[Consult the distributed deployment guide]; - F --> G["What distributed platform are you using?

    Check out the guides for:

  • Airflow
  • AWS SageMaker
  • AWS Step functions
  • Azure
  • Dask
  • Databricks
  • Kubeflow Workflows
  • Prefect
  • Vertex AI
  • "]; + F --> G["What distributed platform are you using?

    Check out the guides for:

  • Airflow
  • Amazon SageMaker
  • AWS Step functions
  • Azure
  • Dask
  • Databricks
  • Kubeflow Workflows
  • Prefect
  • Vertex AI
  • "]; style G text-align:left H["Does (part of) your pipeline integrate with Amazon SageMaker?

    Read the SageMaker integration guide"]; style H text-align:left @@ -52,7 +52,7 @@ flowchart TD single_machine distributed airflow_astronomer -aws_sagemaker +amazon_sagemaker aws_step_functions azure dask diff --git a/docs/source/deployment/kubeflow.md b/docs/source/deployment/kubeflow.md index dbab2f4f8a..d65db10592 100644 --- a/docs/source/deployment/kubeflow.md +++ b/docs/source/deployment/kubeflow.md @@ -1,6 +1,5 @@ -# Deployment with Kubeflow Pipelines +# Kubeflow Pipelines -This page explains how to convert your Kedro pipeline to use [Kubeflow Pipelines](https://github.com/kubeflow/pipelines), an open-source toolkit for machine learning (ML). You can use it to deploy ML workflows onto [Kubernetes](https://kubernetes.io/). ## Why would you use Kubeflow Pipelines? Kubeflow Pipelines is an end-to-end (E2E) orchestration tool to deploy, scale and manage your machine learning systems within Docker containers. You can schedule and compare runs, and examine detailed reports on each run. @@ -11,200 +10,6 @@ Here are the main reasons to use Kubeflow Pipelines: - Kubeflow is tailored towards machine learning workflows for model deployment, experiment tracking, and hyperparameter tuning - You can re-use components and pipelines to create E2E solutions -## Prerequisites -To use Kubeflow Pipelines, ensure you have the following prerequisites in place: - -- [Kubeflow Pipelines is installed](https://www.kubeflow.org/docs/started/getting-started/) on your Kubernetes cluster -- [Kubeflow Pipelines SDK is installed](https://www.kubeflow.org/docs/pipelines/sdk/install-sdk/) locally -- A `name` attribute is set for each [Kedro node](/kedro.pipeline.node), since it is used to trigger runs -- [All node input/output DataSets must be configured in `catalog.yml`](../data/data_catalog.md#use-the-data-catalog-with-the-yaml-api) and refer to an external location (e.g. AWS S3); you cannot use the `MemoryDataSet` in your workflow - -```{note} -Each node runs in its own container. -``` - -## How to run your Kedro pipeline using Kubeflow Pipelines - -### Containerise your Kedro project - -First, you need to containerise your Kedro project, using any preferred container solution (e.g. [`Docker`](https://www.docker.com/)), to build an image to use in Kubeflow Pipelines. - -For the purpose of this walk-through, we are going to assume a `Docker` workflow. We recommend the [`Kedro-Docker`](https://github.com/kedro-org/kedro-plugins/tree/main/kedro-docker) plugin to streamline the process. [Instructions for Kedro-Docker are in the plugin's README.md](https://github.com/kedro-org/kedro-plugins/blob/main/README.md). - -After you’ve built the Docker image for your project locally, [transfer the image to a container registry](./single_machine.md#how-to-use-container-registry). - -### Create a workflow spec - -A workflow spec is a yaml file specifying the description of deployment in Kubernetes. In order to build a workflow spec for your Kedro pipeline programmatically you can use the following Python script that should be stored in your project’s root directory: - -```python -# /build_kubeflow_pipeline.py -import re -from pathlib import Path -from typing import Dict, Set - -import click - -from kfp import aws, dsl -from kfp.compiler.compiler import Compiler - -from kedro.framework.project import pipelines -from kedro.framework.startup import bootstrap_project -from kedro.pipeline.node import Node - -_PIPELINE = None -_IMAGE = None - - -@click.command() -@click.argument("image", required=True) -@click.option("-p", "--pipeline", "pipeline_name", default=None) -@click.option("--env", "-e", type=str, default=None) -def generate_kfp(image: str, pipeline_name: str, env: str) -> None: - """Generates a workflow spec yaml file from a Kedro pipeline. - - Args: - image: container image name. - pipeline_name: pipeline name to build a workflow spec. - env: Kedro configuration environment name. - - """ - global _PIPELINE - global _IMAGE - _IMAGE = image - - project_path = Path.cwd() - metadata = bootstrap_project(project_path) - package_name = metadata.package_name - - pipeline_name = pipeline_name or "__default__" - _PIPELINE = pipelines.get(pipeline_name) - - Compiler().compile(convert_kedro_pipeline_to_kfp, package_name + ".yaml") - - -@dsl.pipeline(name="Kedro pipeline", description="Kubeflow pipeline for Kedro project") -def convert_kedro_pipeline_to_kfp() -> None: - """Convert from a Kedro pipeline into a kfp container graph.""" - node_dependencies = _PIPELINE.node_dependencies - kfp_ops = _build_kfp_ops(node_dependencies) - for node, dependencies in node_dependencies.items(): - for dependency in dependencies: - kfp_ops[node.name].after(kfp_ops[dependency.name]) - - -def _build_kfp_ops( - node_dependencies: Dict[Node, Set[Node]] -) -> Dict[str, dsl.ContainerOp]: - """Build kfp container graph from Kedro node dependencies.""" - kfp_ops = {} - - for node in node_dependencies: - name = clean_name(node.name) - kfp_ops[node.name] = dsl.ContainerOp( - name=name, - image=_IMAGE, - command=["kedro"], - arguments=["run", "--node", node.name], - ).apply( - # Configure the container to use AWS credentials. - aws.use_aws_secret( - "aws-secrets", "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY" - ) - ) - return kfp_ops - - -def clean_name(name: str) -> str: - """Reformat a name. - - Returns: - name: formatted name. - - """ - return re.sub(r"[\W_]+", "-", name).strip("-") - - -if __name__ == "__main__": - generate_kfp() -``` - -The script accepts one required argument: - -- `image`: image transferred to the container registry - -You can also specify two optional arguments: - -- `--pipeline`: pipeline name for which you want to build a workflow spec -- `--env`: Kedro configuration environment name, defaults to `local` - -For the purpose of this walk-through, we will use AWS S3 bucket for datasets, therefore `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables must be set to have an ability to communicate with S3. The `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` values should be stored in [Kubernetes Secrets](https://kubernetes.io/docs/concepts/configuration/secret/) ([an example Kubernetes Secrets spec is given below](#authenticate-kubeflow-pipelines)). - - -Finally, run the helper script from project's directory to build the workflow spec (the spec will be saved to `/.yaml` file). - -```console -$ cd -$ python build_kubeflow_pipeline.py -``` - -### Authenticate Kubeflow Pipelines - -Before submitting the workflow spec you need to deploy your AWS credentials to Kubernetes Secrets. You should also ensure that the credentials you are going to use have all necessary [permissions to the relevant S3 resources](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). - -Here's an example Secrets spec: - -```yaml -# secret.yml -apiVersion: v1 -kind: Secret -metadata: - name: aws-secrets - namespace: kubeflow -data: - AWS_ACCESS_KEY_ID: - AWS_SECRET_ACCESS_KEY: -type: Opaque -``` - -```{note} -Kubeflow uses `kubeflow` as the default namespace. -``` - -You can use the following command to encode AWS keys to base64: - -```console -$ echo -n | base64 -``` - -Run the following commands to deploy the Kubernetes Secrets to the `kubeflow` namespace and check that it was created: - -```console -$ kubectl create -f secret.yml -$ kubectl get secrets aws-secrets -n kubeflow -``` - -You can find more information about AWS configuration in [the Kubeflow Pipelines documentation](https://awslabs.github.io/kubeflow-manifests/docs/component-guides/pipelines/). - -### Upload workflow spec and execute runs - -Once a Kubernetes Secrets is deployed, upload the workflow spec `.yaml` to Kubeflow. Below is the example of how to upload and execute the Kubeflow Pipelines through the UI (see [how to open the pipelines dashboard](https://www.kubeflow.org/docs/components/pipelines/pipelines-quickstart/#deploy-kubeflow-and-open-the-kubeflow-pipelines-ui)). - -First, go to "Pipelines" on the left panel, and click "Upload pipeline", and you will see the following page to upload your workflow spec. -![context input graphic](../meta/images/kubeflow_pipelines_upload_pipeline.png) - -Once you have uploaded the workflow spec, go to "Experiments", and select the pipeline you want to run in the following page. -![context input graphic](../meta/images/kubeflow_pipelines_experiment_run.png) - -Once the run execution is complete, you can see the status of your pipeline graph. -![context input graphic](../meta/images/kubeflow_pipelines_dag.png) - -In order to clean up your Kubeflow pipelines, go to "Pipelines" on the left panel, select the pipeline you want to delete, and delete the pipeline. - -A Kubernetes Secrets can be removed with the following command. -```console -kubectl delete secrets aws-secrets -n kubeflow -``` - -[You can find more information about Kubeflow Pipelines in the official documentation](https://www.kubeflow.org/docs/pipelines/). +## The `kedro-kubeflow` plugin +The `kedro-kubeflow` plugin enables you to run a Kedro pipeline on Kubeflow Pipelines. Consult the [GitHub repository for `kedro-kubeflow`](https://github.com/getindata/kedro-kubeflow) for further details, or take a look at the [documentation](https://kedro-kubeflow.readthedocs.io/). diff --git a/docs/source/deployment/prefect.md b/docs/source/deployment/prefect.md index 0d2d117116..c32d661ea5 100644 --- a/docs/source/deployment/prefect.md +++ b/docs/source/deployment/prefect.md @@ -1,4 +1,4 @@ -# Deployment with Prefect +# Prefect This page explains how to run your Kedro pipeline using [Prefect Core](https://www.prefect.io/products/core/), an open-source workflow management system. diff --git a/docs/source/deployment/vertexai.md b/docs/source/deployment/vertexai.md index 03e123c1a7..1b9934c1c3 100644 --- a/docs/source/deployment/vertexai.md +++ b/docs/source/deployment/vertexai.md @@ -1,5 +1,6 @@ -# Deployment to VertexAI +# VertexAI Vertex AI pipelines is a Google Cloud Platform service that aims to deliver Kubeflow Pipelines functionality in a fully managed fashion. -For deployment to Vertex AI Pipelines, you should [consult the documentation](https://kedro-vertexai.readthedocs.io/) for the [`kedro-vertexai` plugin](https://github.com/getindata/kedro-vertexai). +## The `kedro-vertexai` plugin +The `kedro-vertexai` plugin enables you to run a Kedro pipeline on Vertex AI Pipelines. Consult the [GitHub repository for `kedro-vertexai`](https://github.com/getindata/kedro-vertexai) for further details, or take a look at the [documentation](https://kedro-vertexai.readthedocs.io/). diff --git a/docs/source/meta/images/aws_create_iam_role.png b/docs/source/meta/images/aws_create_iam_role.png deleted file mode 100644 index d67166cf13597ecf6cc506969dc6bfba2bde1980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75032 zcmd3ObyOTp^d%01I{^a0C0KBG4-zD}ySr=9;GQ5sgS$I}ySuxS;1Zl&Z{a)3p`|f>}Fa>!@6hs0<2nYxiX(=%!2ngsg;4O^+1?*Aky08O2Af1#X zMIg$@UVa0THrS1|;q_*0xSO?)+qb9Ki!@KksHD zBl+VHXDfa(bvXqRQ9DNy5_U#5#y4aFh$JK=e2&JZJW65`f1M6|<0mtBcDCnXVsdkH zV{~I>v~x6LV&>-NW_rWI#KOV=9Kqn^Ve4$*&S2|A{^v#hzK)oQlaZr^y|aa#Ey?qB z4GisEocYPfo^SNe-=FO?aku#QPPR^eJr?kQOwYeCF*Ckl`kzj7wlMuaoc8?7pQrut zTz}q<@A+ap3Ks4r*6LywHYT=CK+^=cIobIBxXu6e%fAi%?M#h-&*Wlb{{76~e);Xp z=a%p&nK;>5yF6P$#n!@EfQ66gf7<=mS$s^-*80tQf4b(6y?}275c!z?@v{J8$?16^ z1cVTTw3zUFcgUl3c<_waLw(*2DwNXa;(%-fvO+&UY$U^q1ur{&Jg;8eGjZ|GkA>>! zII*^n;;`a*fmsMju(VTcNEtVRc5TL-sjD?eUSmx+{iknuQ#@FlMk$*12NSIQZI5af+(rfeX z4ad1z^E!>El*u<`U7ypevz*QR@KgHcaJED(S1QhXSeOX!Ps{lqQB)c{eMBMTv|ed+ zn9i5eYOr0cx6$&4fLGQ z^Dv(Y^5jbch7M=xIYdOStAk0|I(>1|HC?ac*=CnR z9j<-t5_RZOz4nX>lc7(v+FZTj!8M6ZJwYHW-@9GBBe%o3GSks7DaAr2DLjJncf zIFX%KKL)Zr!n#0j5rn5d=Qze#lm?~fVfyF*7;>8+BAw)^w`SBowM^6A$rPUAXLA8B|$&qRwzoBY+0^vy6g zGA@f}ONNr@^orjX1>K~@E&Y1DjQPAT@F9OWWz;6;ba4gT*1gYv(V5m2jAXm^D7Z<$ zqN{q*ck-kBG%-6~c5I&4dZ7~Vp;q8)wQ}&UpAYkeih&0hj_N;r_${WuO-|BIA-kAT<-Qz3{Y;RbrTcx++UpKUoToycwtU z!rAS140Zj2Ge>>0ZaR;v^?Fk&Z*PsAmJf_LIPGR)hIv+hjoL-b+bmR425)BJx>Wh48<$X%*7Zl?8_k9F z+0K{ijPSFYPh|N%-PaFp#Tem|C-`9z7a`m3{zN+G?|jrp?NzPNC2IAa2pE=*z$j%N z42YuszIWRG>l$vM@k!#HK51~_{lT@0(%<9W@9?(TWEk*EfVO-J9B@aX(mZPlb>`G% z39FhWkAv-u@ps!r{Uo!wj+H=bW?g3>;$e|+Hwx?F&S#9IhEe&>Iu>ipl>MYldmB?O zHbY*;3p}26AI=nAuDY#{W(sD??rm8Vq??+!XM*me%o1{Y#4)~1m1@-JcVOK(x83cf z1|#8l_R>`Vj?4w^jxK50wTh!7RY+G=&|@MnQ?KSo#sDqUr23F^I-}wcrkEq~^z-3V zy?gI@6w9aI_rLmJzn&|T#8_uFpZ@~og`hzf=6G`=FGR~}8!vixdv0)sqm$of2%glC zH?Q9pb~q)#6FDnz2=0DErzM3VBYA!`g+kytOfPbOsDs8;SpM+zLk)-wQ<&26qc%pN zfEjwCa>dP-WjX5jFA{Ml$)&U3+T@lU=ctxxZob8E@cwzX?}f&&1`}{X0Z+;Ad@!*) zoaEK81xL(p8VT#s;@z`5lENC-6;zbPq$4nTyOZ#4MJ-96f!*W6_^82VIZ^g;SC=$; zk7MyzdrbOx=D0Ui=zN+M7nxo}BJ#zi6E~A)ZK&*WQ3-6wy6?kr6zAH(#8=U-el}7e zV?KVz*+p31T~@m_aDqIKwB>S~qR3y)b(Hs`qi3Guo?o29Jkm!=Ej$LVa(E_<9)ymM zH3=^B1^`Cf5isyIv%4#Vq!6mLY|Lx@VU!=HQXOM=SZgtzHnyk3{rR;@HUy*D^rE{B zMizrs{m$-6J&YLor8{L6mMOf&!?%J=%`fw*6YH}Z2G ztD9_`DNr2Xg(W=_BRnsp(B&vpwt5*M8h5lb>|sbeG9|p@!peJFzat+a1+v z9yDg$>Tum8>nY4q^+3e>#%FP1Ox&1@{L=`lPNhWkc&)XC)vE&%9+{YLK{GUn@&e|; z+J))CYC1n^J|b;KepT0yO7=9nU=cPT8KzfZP&L`;sBt^mi4#)&HM&$Fd0Lsd4;~*@ z?PE8Z-~wT%2Kuz}O*CmD?kV^Z)m33x?Aw{WWo5bJKl5%pncu<&zYo}sqDWH_G3N^| zqh@l#jg6VpGD+;{==Rehc%EtK4W-t{0*Weci9`NuupMu)8li{TF^yWeb~VaHB6T#r z^f7oCth7{5Jh_QbP&3#`yH;nVcE$M(_Hv&!mO>jHX=%xFQO~&iT>a(-++g`nlOGY7Xl@Atx- z(iaT~+8&huG+v3y4?5z;EQepI9=(E$qv|NbHA0P^LJ$ZiHNZG}lt;1aMKwrGkW=sT z#YR%p(ucx`kav=-BBpmb_!{ELI@&udR;pD{&Y8)^(_*`NoZ=qs5g89-he?5$7Q^o* z74388iq-b`VIA{V=8Qbnmz=n@-4L%=WakWPl5a*)OVFt}%TmCTgA zxPhThh$YrdJ}oJ!_^0y>VhS%MUi3oaHo!3k#h8khR(HF`p&W8zGgUoN|BAoQo#1%sDlDi2PT$M5S&*&w z02c;nPU;QDCp^Os*!C9UitY0Yna{7aOU=LH@cQmi>Eb8F_*^@xZ-+Bdo01i)EpwYI zHZY@jus#QpBsXvG;8vd0i#2g#NA6n(4jpv_!P=igbQRu@=lwzNHgHTMi+01srE@E% z?Q5bVah$Gw(p@CdkXC}*TjUbYM37j{uQ~T327TtPRQ{e&NP-|54rQ>JFqAqPKnxM{ z)>}PcZI7`P3+t5*58IZ5zVViX-y=S5LhVmC*sX_Fypw9OxuW#EbY~@eSFzc!+YRk< zou-RTK+9=8o#_HZhbnR67%(i@I<|E;sTe`STm(Br5kDJVF{v+mqjs{>k4b{pyQ z^)a+$9ahB2Dv9dHsvBHa!%qj;nRW|Wk!(!s8%#W@)I>H|qP>LqpsEdas-E|iVe^g; zmc5T(j^vF9&Q0&{)xkX<(A2!(X0)cJY!}h(Cchz1NgldSgzlbA7=z`8{(^;&7@;B% ztp}H1dP{m^biAK_%->=vE}swej4)}In)ChA9Jyd*^;~vO>7gx1V=DKSr+oa^%OEz-%fvx#Jn0hPYi2x&UstS`{RVtbg4^oC4cDi>%|tN)$Tak1WN6;*29U0&lROF z=@Xz7D`6ODB>(Xt8Kia)hA2TP#r==slJao#m2iV~GSh@&@y!F9ZJPn`;?W4}crNZK zp2To8F+WfIjC`HVWU6Ej(}|`ou31cpj{9aXo}M=|WUGM23oQAegFOam36|6P<-GJm zwlWpdwJ8_M2+DJ3>rbs>pO*meEqS-7Rn;Fwh<8f;eqvP5`#iXFYj=*h$b6Xbc)w10nH{%<6Z#^})6fA;5CYUtg@kesTekzn(? ziI$rKo0gON!*E<$OPBMPSnH09CP^N0y)p$W9LN&Z#Dbq~1gQh|G6a0?iQHBuTii}* zcv5w8SHLcW_3dEBtpe3L%!Zr74~H8mX0?mtv_(WFOo~Qz7If`2whUA+Q!@FG;SjO7 zpP>w|@JK~D#gW0~-e?)JAdIMsod>ZuMRk8ZRq@P-CZrvhg*#N!mw>-#E7~P#53P623CNxF2R}-?1Ss)H<3jKH!a7+zU#PC4W4} zHYz&XOSR*$nnPCOJS9xwaVbWcC1VLX>0u4#P5S}Ox(fQ_<+>4vuFLMf zX%mIMVRSpjaDf87hV*yWIP2wG5Fc4R23i7@T=>Q1+7Zoey&~u0-Z`r`SN+4)x9LU) zBWLoZz8`G5WV?Gf^zYw1LMq~4ySW$bO@4~cGk=7M?_h3kp7%P@v zy;K>Mxw*ZK>>_G#IOAVzGd!_MV$``s5zpnY)i>PnF}UEn+XsI`juh8JKe5)F!xuhT zZUwDXMHLGimewrn=r)9$XZqfUy-Y-`hX`#`ZiqMlWz1VoW(SKW)*v`wu#Z7aarflO zF%v8nDO2-33H3pt88kL0nos41-P|zwX#My%GLu0%?TAO3g_=*RMV5Gkei&6-cwjH8 z-(2N=x|)s?dVH^kjbp|8w#nvw%mSZwb|J6tXS7!|NPg5A?g0&hUu~lKuhs3$jPjLj zbqBYC=YH0(=gaAt-t5hC*sb!MU#sq@z19g*yOr~~txRClHCB#Rz&Jlg*g7!2z~=IU=b^x9>JeS8Plc{+Os<^Djzd$UP8lVntD<&BOKjHvKw@ zPHOxR?Uw5qstiF4h5sgjB2X(=^*8*~^eK*zM-Lg`aP!xm%M;ZDAAwv7lRj8smiJy~Cd)TCaG3Wxdl%JxL83(noWV-5E2NH0IAS9)G&9;%kE_OvrBBM7Za z1hkWuIi_YGnLKQ}m5Wq^ya+)R*W1zpT}2*ck<-sYwjL46&H zqixBux|E~UVJ91#^2PXyu3t3WN^!@1pu!<+(eIp{#A<@l?Ym*)MiKkPd&Npi4FAC` zq%i2jup<=#!PENgOn%;E@ir#B?JGpVoQbz3ce)UVcmwGkQWS;20#;rF`UaT#%s zNGEcY{8aHkz!c}W{N_cK2X+o67orDAwdN1Yh81rlRChK)=I(RN-3w*gHGWYu{)cZL zMB~!yg2EIVh_v&pC!f6Jq|~Pnwb$~-j`_C)Jk3mg3Q9VPwUoa&pFT0`(=nCDJWv$a z#EqR4i|VJxx!03ajpN2BOW9`{y}|Flcm3Z=YF#V_X%> z)OmW^^~HOX!&S5e%GrSf8$xD7n91>;B%TK~U5{Pmcl^6;eKNU!M&9hqdA>86+|^l0 z9?UIFakH9;PpR_&wF2GuE90nQp|Za$E?d5Sn_i>(jn`rZ;?s_lWr*gS#J`l-fGgCa z?tQ)qn0Vxu>#F-Pl_PsmsNZour_I{~>By#*1DhJ^IYR=_;E43{8^Tr(n6|NG=D>%? znedYjBhr_*tyiJKB)S4br|COS1Q~t4U3w<{B2!gMn_jc3zuiR#=C%{%Mr+K%jyrMn zRH#6o4*#C+FZ&ac*6@ZELka*!k>IfBL7B%eh5d7PzU0M zQr_)dafzx1Si{_(mNb?*&`nsIk(TGzz}${pQt{hSCP$J*6h%bA@k9S`fjb&dd~m95 z+8#)DQg+l;VY|6&a~oDd91T(VrcRf|pP5{ZZajO*!7=0ge4A?4hWHO486|)ZM5O$T z@i%WcFbw1F9J4-v^b^xn{yvi3I{$17V_hB~yV%%MQ{8+T_}wbdrO_XfLq7CUC3X)t zmc=ij24nu?;JYLUyO~{^E-(}q143mWaDJ~Q&;V4R0dU$AY(sWD60fLA4Oqi2CL@Y- z|9$8k6)3P~kY4n52)$!@{WBe5z{=40oY%ccO>M9nWr1c|Wzw-EBM@P-hOi`E6mDlx8^F7ia+BKt8_x1}txOJ4?v0b!bWCT(O5awkteyERe`OB2~ zOqxz75rT|5O%B~383c+!?H4a8&KG;4D0as=YT}nb=f(dvtc|>5JnS-&f9;hLK(~;I zhX>tczS7#HoKO|m9~b_38d0{mQcrKEyS{lze5a3U*BgCHEJQc>AdxKy|BX;U+U6Cy z56<82LH9p~Ia8`wJQuc1qS4JZXV#t-M*?`sit5Y2IDo3`4SP84`*3$|pUYvFyqE9^ zkB|Bj;5&`zlW`TohnTzLysC&7gRy$H`)>1h{8GLJA8*Vgy({!aAOZ3&Og!ZuLy(>6 zLGkT1I`qR!M|DY<<YW zl3FbHKl{jH5h10I-xn4||J%KQ>rzmV6s4obA^!JXuK}W4`D;GUzYh)&L$R@bxvnB& zum9kP{`sW{J$B~*%fag9HEVlyoxD0?rS_4u=AOyS27OOB1 z=O#8;OjEtKU96_8`(8}>AA`3f3catWufu$G?RDC^Z*xBMnXW&Yh*!S@qV_i7oq)%F zx|?Ui9>r?0N(s<|j@y6zQG*8A~O-GUk z6R6$3P37r#{_2fDBVa=SMUUl=%oHipDwk=pCoBco3Z8X9V^PVz2?U7B`IROocr@ab zf_JYFNzxa^Hg1IhdUGdEQZr>TN7BgO`QiE)je7@uc;`-@1&#ko;i0(wKNgQAh5D7y zM0*O+%jbNcP>iKxBjJ0y2|vBqlbDrpm*zCaZQa%X*a`nC_6>U^-Xmb#`qz(?M}+Be z*-raojMJ35AD&!#*gCgbJ#QooZcf)#e8&46hx1l-r7l?|Cm? zF0b>!hU2H-j(QnL$P#)Zq_9D`;p0!Ti!{pYoA;e# z@%AIf@IBpsdKo@hY^_@Ag4InY$cBedT*erI3Hj^i61585YGY8CQ8f3*LbMxZJ@&Wr z+VlOyUi2ms(J#YT>f11u4C;cD_^s7H!aimBP+`E}kUGPf{f=jHShw~K;^%wE6$(g`IBtd~GV;dr3U$9$Ze_#muqL&_d zmyjS<9JEZK9Rx+>W^T?Zt`FjVIBv-FXqjAZ9B1%sneBv6Wq-s7YPoE1GMX;bt0g)NlKnf)m+=8ZqTn56m_wgEj;3dujWb&2`r ztq{T;jQ^P%FrKN$f?&|dJ&^!o#x!JlUko1T4@<&aHd`4=x!WMTO;@mc++BOk*gCK4 z1&|Xh&GjI74mhTkBbJA7$ra*i@7>R81DkSdj|_Tke8Ouzp_lc-ZD00Ng9QFN6cwSq z#Vwg@Xj(AcY#hJB&6A_yIDJtyms0=?Vj0N#E!YOxslC3o)3%3!O%%U#@CFJY2ax-v zEZeq3HQJZR2k4y52ep~FexC`0>0ErIR9I#iUA9qLehB2MSNZTC4VMH9W(r+Mq{cn& z)rYV}5)tSm4yDxju#LVw94~km^WJ{8*YV=i zzz)B3+HUs!F{>6P6bDz3@QupNEMQGsvgMXh-_P@d$Xq=I^b25?p zn;H8<_I5<_zk-R~Nn9&V|BwGFrxBzqPuXUc;(h}hLO;m>ywTpL)%tt4Ua$c0h8uz9 zvD9x@Ci#F7J2R%YUAFf7tZ~E!z#v|fI#-I{qET!+aI5`_b5*3H8gZ z-}^6eGY$d}l0@ZD;crju2QXjsow8@uGH|y;eLv)FPjynTLjEyAfrb#;_$p^iFZm7Kc z5R9jLJ4l^*`(4*%Rz)-f^@oXPyDu>J1GCH#Kx^`vjlHz}o(020Rt44?IG4A~|cP*nmJ!1VtUK#;^vRv9B#8C#gH6JATw z#fBooe_`ZU0{^bb5|`7pr%%fAU-@*8r4y)HA1{VSzpyU@pfE@4?DI44ZQps%lJEpT zr*>eH4jI&~Ojwmc+#UWzI}Jo={_6$u;O6sUZJ!^r?3Od34WAzkx<3M22%`i_R641R zT`&%p2dm**aPqzR?ix>Q^3{B26b)f?bHGoMl5%QTP6{c*v|5!O4e zRhRi6Yozr8zaE{^%z#>w-qAY%lqwx1>G^(*ysXKdxqBN6?U~*+_Y1%qkb;bL^87z$ zKv-1jR389B{}iByU;124?ra|~H@lQ9i$PU<2Oc`w2q#dzQjV*MHl|3+wy8H*YvTQq zC>61u(}laFP7g>o4ro81}D!epDPSD z9+&T8IN;n!sMM3jZB$LiQTBO26Mcai2!~obSFYRoB^9Ut_*MZ9YG*mxK5NP`vZmz@ zX-~`JRBubS)WEseZoQ3=)3&y3bJ~xkQzL{b$Li69jz<5Y3yCSY4iHB|Ec7jIZU8x- z4S@}3|VD1TcVhn+)Ieg3(cEs$iDUOn^?P zqc%(dqERQp6uD~;Kh`~$@1y%Nttdr%i$C zo3T%nTxpBFz`zvMxyP{!@UVhiK3%o65QSMIv~Bd)qD;i^`O%A~XCH4s#|l$Pk^Ftc zqc4K^$Km|A$XGyBqzC=7?g0|SuiI_32TQYfpcp2+q7&aF<>gz|*>lHyHK-%Qii+h6M5dw@V5B-*MCI!N+$#g(z;fZFMJ*> zdT4xSLSsiViS(U55!pag!U?|waCpyWFJS1OHtlB=QeuZ6Apya zR&`L0lRl!{%Gd77PUHL`uY9?zUK<7x`|K#rGbITnWxef`$5WsN0N$%qO!>g% znsWJc9_LZ2*Iy#{e1K?BPmbBvf&zoW8iIsPBh)_`hul2+Qfz_H4(zYn4n(!4kZxq- zu+TW5kbxCaKY*znNNZ)e=V6nCx|A{oBbOTieA=0kcGeimt-@9MLKsOlJN+sSIy{{P z5#E;K?Ny~3FtMK}6T!|s4=h|~ip5|BT@80l^v)*$a( zc>tWJcnnNVW)s_TZ`3GFA68Y9UU1oybbU%eGyBP+Vi?U;v+6n7=HnIZIYykM?FcF$ zk|&S^_yC|7=HaXx4W1DHQr)#>FaIUPDi1!Cw+YyAjK;DGVq?N-Hig&~&WW1>ef=f5 zPP4NCL3bj4@6pBAh{fV$_%El}{V7;tKna$a22@Z8v1e#an%n6~?RLolLr(1tN1Au5&Ejj;>X-)lk`{wwOBFlSEo#86`>I(mLAkLyt=dQa6*@EMR&cT0Z^ z{rV<}`MqY9VXxFOyhb2<`HHs40I7}t#sP&Z8=#+-SMMazC_-%pd~|YoPG4bA%0x(h z&d=Gld_9dL_ZHtzkpacvC7E6Eq`VgvCEvD}ZhoCusk?#DpBH{ru(;#IFPgOBN8!k0 zO70`E<>L}+{-KhYMy-b@d=AR-`)r9M^j1psC}2MzUOoH;BFskVLjw0>n8 z5R^Vi=2Tt_v47Dh?_WU?3SacY)Q(7qG<3h%2s1XIp;If5Odt&NyER{`{Z`hn_Vxy! z%kaIzi&F1;o8^yNN0T}5Ion_>Hi#QO+{P&*bk7k;5yzV)E2cKGY6BUl!7dg*v9myO zd`d}yhAw=rdvS6jd1$pHZd|81|4?3PWVZVkRT1=}yqXmnYK`A1CTvDhbX&b<%aoHU zvH}Bf^s7lT)SKUgfR6RM$a@t+9)m$9Jgx_Rg)H%^y-y}F&i<3e#~3w8oBiS=9ue&+ z{`!hN?+rdqGr@3r)v`kzN;kN@VS(f_UaGU|H?GHJN!dn$gqG7$RX(s*ojf9n0)}w_ zPL_s#fWr;>8ca z86F}!`TQja#xxf5Qqi;o_aj-DX4w{hLnh9&bWIo zJVS|YD-X3B;T*aWUFPXXhKUeI-M?uNo+A->ZFuS)*q> z&ab%(-=5B`2btU;U=tH9`Hits9@lM5u?^Z#mZrR}4Ik$4Wr?u+n(JX1nB;vJ%pV<= z8Gl&L8Zi?+FQrDsw~5|sjT~y;qzu8OK(y>`sqmgnv~1Ey zYVJ@R>;k$Nl1jEA=o(~7y)p<-g5%(spFr7QQMB^(Y7$2v<;r& zFt#C0Anw`cFJq=yEZAiqWy3g8N<9ZkjifJudYo$V9vUmq$ru);$g83QO>+r*IAu(x zqso|%a_KyuxfNPmZI*+6ikc;u`gXzWGkY29l6sUuwAqWrocc!C7()7uQ4v)jk@kxZ zfW^hXu3|V1SS3oYtm}&h-G0pYCco@8(oQPsw&n}9d=mLjRNo3Mg0O+ zWa*T3pp710wf4hxsfMhYV*q?x1DVvfh(ji7l-&9-&2SC!ZKB~5p_=$Kd@gnew}3pP zs&}NUL(6{27EX?=LiL}CNrR=A9cjQSX^L3H=4pHyzwAE@9!(3o2{M>^eWLwy3LFLj zQ=o%!pV$4w46$S4&t%4`=oC+?A*kcf9kN2~s9VmJC?ie;@H;6 zYpQy~K6-(0oA@Kn+_j0dNw0U~!c;rHR#t?Ht4%uBKfDb%(AB;2FSrC))V^;oe#WC; zA6jwee7ioBn6p|>z2;cJB}5L13bm@SBM2JdA&7LC0bz#YkVL#(8}y4by1zT90^JBI zNA!X`2OgkM^rVrO$U0ka!{?byTYfO=;$?+DCI8_KRTi>=w{vQ2$*`a=gy%M!WV#uh z&ft8dc-o;>)Wn{ZFC^xvXk;1W^HxDcRzzr-`tLy&?eioSr=PmHI_2vlHbPq@nF__% zxuw!+38}Q~n!>-P-ZM@|80;p__K z1V&~hMJ8obF#iQYVo_k?W0y!r>tx7z!iGUV37ysyGT2f_E_)cP4W-W5u*i;-jSx_K z(ABtFtQX4ci?udrIfF;B!s$%}Ltxa(LwgKsF*S0^QTgh% zFbvlvAmF~20!t_*pKz_mb5DUy8IGR^6j@9JO(*7_WKX|oHmNzaVRSE<=oGl7k`i-< zuT=f)^->UAr})({0MH}I+_JfK8Lki+_QwL*{RmfLNm+G0^aSJ`f=a8%Br?kun6c0E zg>OrZ5L*GPtKJbO{R!a$V|$GB_T~2o3jrCm4$4w; z?MIvrI<68=Z%6f+!amoJqn^wyZf=4|nVa@X!O50pIX zUA|x&1Vz_a1b;kBvja7B>)f^^L1~R9kSi=}h%=OG&Ek>x*CJUUM~&c)K6!{RWYW%oYW=w! zMaB-WN9nZc=>vBea4S^KQQ1yuqifJZaL#Yo{6tfgv&U^VSK}JUIQfq{we2AD{v>Z) zq5QAh>vTlV@wUEf4RQz=JAUH(S4jg6X#Uq+EwZjp(#qln<2vWHA8-t^; zLcN~&;yyyunLQvF?^teHY6N6yF>-)|{gCQ8(YxxuP=~3KejRBLBXs8)2S*AhpU`=U ztzUkJaBQ?+b6vK%MK$7>Dn5Jv^4-9B;|o0xGQ@dW(0)%f%ZVMh&t4@TsWvJ;lp5*Y zxsHqq3{%;6S@g_axJ+vCWgH+Wtl3_Eh$DBn5t>1dab4sh3$zE5vbY<87)5j6jP6l= zMDjHmh#i=yiO%{(197=aNA`qF0jE)=o`!j?hSII4==b~v(t{SfEt;|S`vVCz}F8NWr_Ki(0)pXl(6lwaT$2UumTukny zAvuxwRykOg9XG_vr4$|($W~G(QVK~GC&3?ex0z#1>>#J;6}d?5x5%VcIeJqSWhtWN z*3SDw?xbZo9M{dFc4>^Q86Bob%6YgV4F3WwRS28fA)odwaH)vLSsS(J=8&1l?8H@< zxS#^cez5E6{psl``7FP?%PA|oBx+v;T|T@m2hd4eqCNk{-Mu~o-<-DEic>;ov!Y|; zu}n#Jepym#z z_X z74jQ1r_@543&-sYCA^^@DLgY=d%dZ1mgxM=UAY%W$}YfSTzxx&9TgNsou;q2gocZ| z*-5E@tzC=DDF}@>HIv+5O*cNV-Pb2)TY+-EXT;}DOrFrq=WV+@tks1Nr-kz*RHK}y zrru&o_h+$vtO^VZSzS$W2)-qhRp*tx6-s#-3-O+nAHF73B3?f%B^4cfP(^e~-=XV%mIQB+9x z_>pz)d(m%{WQROu>>g+A(M-LS*?%b8*j|8#t#P-XVf&5#^k0z$sv$UIGM0Xq8UG(2 z+K!u&D*4U^&z}NR3JCh=TfKm$asvSGgwoRfjS3Z!G}(}Xqv`EH6s*n zlAkYwRymHvI3HNt4`wc*GBSR;8{O+&Ew}8Le zqrvwKzfDM}PUd!|y%=24ea1&~wlkRFL4$+rU?o1NBMJKY`>LP&9WXe_R6z znr{TPFIxOsHDEoUJQXO}YxcgoSQ~mgL2G}F8NCH)j`S+U?^9Szz&OfMT7=#>fpQnX zj6DCDPR$l5J_{D!SD66VE@y^LkuE*`&3(<=&8cS!hp}`xmb@ScsBR#p$a2yqe)-;I z5P`%GV6KnMv1t^tfMY-vhcs}`(7ou8<+iGnvhdSMK(UB%p@HDznds?SE8Y9TH|}Tp zjV9(y(kUj|wk^jT1bq_=mBg+K20J7z3DsB?X8?IP)&AiF_9GG#c!S|`D}u@QYEse$ zNK&T@VmQ}R+rAf<0M&d8Ko!7rYKq7`P$J+C$SOWKG2DAEjviR1Z$Gb9$#ZRml2?NK z0ebrhV4r2@ega9(6VMAhtpN3Ur?h5_2N0rLQ`Xq3e*#OtO!OX(YGOF`EdHRqjeyQ{ zx!_mK`-|L9Xw&g$`zfyyb-MGEIG)bV@Rje=-F~LmkMF@D7r?5m%RMt`f`aY)ABU4P zKv{w;AlS3!1_HPBK@d6x_`nsr_NVHvr_k`Ij{x_Y0T56C_u~eLmU_UVIPw_20FGlo z>n2DI8Gc!&kt2ap6P7O-P%!C>tz6Omv)N63vQyDAPy3ngd-N-mwlU_fp<`DD=$B`3 zSTu~iThN>7b;7M`b#S}Y8&P1YQ1`5FlGp)d9%F>tg}ObILdlSZal^j=+R+}2g3kgo zZUWRbY^$6Vr@5QB8vMjJOY;{@h2sO11b{b|Oa%G>W9u<#^z-Vt=G{asfW-9Mb5$aA zc=x^oAi&VgD9YRJEun~k(l(qS@(-uYhm2yRoG^gUJ!vtWPpU-v0nn=FD)fE&Z?rdZxlXv4Y0#no($elCEn4Qm4{JZWT({4$tn~0OyuHD#lv?g za2D3W@O3ob#Q;F@o$+3J=Pdxhnb&bgif_FXow4<53She8-fc*(xA_1|_uk%R@O!lZ z1TwHXk|`X0I|k?*0BJ7c8-hwSCiu&Hp8y#4_hy+su4^9qis@)C-`I9Az#nq~1Pv}} zZ95R30In&lLDnr&XUN$xg(=Nk z4%Q&{shjl=<5c<6fLt<+l0XFe>w(%>4BY$aIkxz(NIl2<=r2oYF#gxa%j7ksT|nu< z4KT<_=w&UjqJ(N8zQg;>0of)%m(w2zQ*gcb{068JHD3H0LL9Dt5uAmt=7)xcaS4<< zFsfHVXnaf*(X8qRXhHJRL?%6Xg5Z!O9{_guVOt^(hA!O#`9Fr`ewq_1A{rA(c8zYU z=lg~QoRXMRe94MFfjAB3rn!x@l}b1VTx%W6Y*d-xdQbzBFGMrdpVLcI`kd&zydAxg<1+DFWfOcsT)fjtcXfu(*Y!6mm1SiYr4c|Qk$vmHlXcI z0P?G?WC@mo6;eooLo)Baqfg6JBW&}&B_}^wsu|@1n*8(4T!E+d0Tet@^qjA!fFi*m zoXp+FfC?A-2*jui1awmjotiriuWM@v79nJm?XIZ-`W!zCIJRcj#0zJ_yQ42%LA6`S zl4zUE;@;$(lOBc5S0CT0<0+I#>CU_%)(c`8BK&HXsxQ8L#t1C^N;%0&F~>}$sR3$0 z*sxM3KGny6EyDHbwCpd24r1IMVjm3FmJp~8ySN>|FgQx8pm7I}vH6)>9|7g|NJUXJ zJ0GD9D6n&oUCnVKXq+h`Ai1)*2KVWHx_<=mhl52^v)jw~SU&aa3?|^CUe%VF(Ts=p zGV~p=s3a4*yE=q#V@NjU7#0nLbeiP(mt?foKwN5hM%%!tN5?}n3W?6~ zl+GE`NXQbdHd`#x5ZpzRUlEmWW|ZGicCvh|_YZv_ z^xhqV=!TRySn7r_sn#8YA_nPC!)>N_sifZ! z7CPvMAp#)Hf1z-$Of)%}&6oiTLDK7-DedpbBM+eBNEgITz?WmZ@|M$bJ#2S-`yA)S zdK#cCA`MLRWPf*))d2Y)U1CsE!Y^CJ@ZP)}P(9^=tc&V?A*N3L5;k29swxy#yE69< z-JmOE&j4SU4VfRs6+Cmm_cHHM{7BQ_gm}VzdU0n%fU`&rzisJtC=4A96ux+R7{<^VSEyDJacwE;!Zy@a_$6=IPlyp69g3pL{Ko(^1u)$rACIM$CjtqP zteFvNRfH3^PH1XMg)3I3Tf*1&uu}1SF1Zd>V#FP$F(WZ(&;yCYs*%$#po|3r_EyqC zUkmm7-Se_-M~GcXS=czV#BpB+|E0=GqabWJxugCH(~r5M?vh5+Tdb9B79lemF9vXH4Tjz^I$TW{ERyKGG@_28%X~wvU*X9PtY%NVaA0>nXDg zMJPC5(W?CFaCaM1G^}Ml!W`pB=^6?fxy;mnVGcU+c)3> zU?IVMF)%Wt#EO=ZeHg<2196Cu@K@xHGPJ7jUNS(|5|pbdzdt~3)BK_UlT4D&K-^J& zAC37_W~%4(f)Q3ARGzK*&P^x99kjOEN!6tUa@!khckeaaOPx=U3p%dW3y^l_LTf#_ zFq#|kphD|5=xNfF-qz0_KH$r&Mqb1dCIW9j!M_=Y%C17l?Zb)`B!-Q_q}237YmQwo z8AAWrX1&OgEj-Z@q!N_8Tcj|tWh~A2efYNQO^yKeZz>B zB_1L%zLR-_**Cg8YJ;Nd)?KdHeCwv+o_uga5Sg;KsBD_^a25%fo$1Sr<{=P&>z*k3 z$$+KO)4)I!-k^&Dl03ta@BEXQ8$GLgDq^q=fA<=Qao-g6QA4Uxr{?>1D9JRB;oV?# zbj=>-o`%`d8#{w8Xyj7M1q@Kz6rLK(W@uylA5~~VwiF~4uC_1P>$t_CLaE<}!pd$3 ziuG=hQ&?jU2AhhgW{<}Pj`1|KgNQm`g?;MGiR4XVk)lx}p)eS;%itD8+S;s-52_A& z?~tkvs>I8E-5ex&s1R$8t=$WxUDb36VKBqcxP)VOmMtAM!=lz$RPwU71Y%I8p_qGh zFTCwFYdSVmoY6UASl-b!bCCbAhrUE@Jf=%F%OHJ)G57?J+1Z*LzFS5z5f~O2HvS^j zx>sW?8vW#b`$hm#XtO_|kFd|h0%eQ^i{;!4G2-q{)+8zW2v?G;6a~9=U&Rus4{H)4 zZ8p`alW@fEYF){2&+WGxe|WZq?dm%O)0;Yoz$-pdwVd16SO%2AZlx}6=q*R!VVi{V z371aGSy5vJhT0?|%F1{O2cRlNnvkBBe=P_)sboq!#MZ|~2sMk7hSaU>hEC_>kzNXo z+vrX+i+p1nAv!GU>YQBF)-)PelWf@8v4)SZWD(<4-4l!^w8HSko!pRNQtyudehgC& zU$%EGQ20cKo&eE>ZT7kt>O(P3M`xs}DCt+&^Ubdbjr+E#6G;cG0sKd!6jG3HtHU;6 zEHw%_wc^-uhc~Z79ahr7cc}X>Ed$Nw7lOKHU%IPe@S7Q|U+=uKi?Y84frLi4Q7ADX zCf~ulnLQWVLd%c4rM(Lm66?ZbjqO%@AO#kcQsjvmfMD3naF9s);APX`j&D9Y=;6Z- zO)yPQGYaZLWlT^t<7G1POyP8Uy>({C7&jNt{$K39Wmr|+*Z&Kfjcj_;A>Gp5-AIRY zrzjxZASDe_(hY(rNOwp#NP`GScZ&*wdggw9_wzj7|8t%5`n)*T#pR0y?!DHWbFDSU z7@zNV?DB_D1seI0uYCs!_0C}4Z5Et3FEHh@&s!yl{0Ms^Y2cVdK2_4@SObD1Yu69dv%>noUqCg;DC;-9S zk4dq!z|9!u;TUUYkOVTY2=eMpA)_qAqgRx7a_;rkv79MYDWnqheA9dmVmysqT&cVD z2`m+$^|%Gu0N8`1boI(Oz&t*;Kbf2LA2A6W;fDoH6pR6BIe-ZZF0wsawzH?J^%`O(NY}0R19Eo#H(IofZM2Qn zmkfON!O?k{Ia=o+i}7U|gzE>dGpImtylCcQmOw5r98;$gyA%?SGYg2LeUpg(WBY!! zBRrjXuLQ42a8X3HZA9<%tCmqoOq29p*<$_y1Tu)1pMxT;;gj?Sy1P<;ZeG@(FIqgW z#WML2+&T7%F$QF^egd#!jj??}LxH9M&XTM7v%&??xe@U0qZ@$GxejpXy#Zi+)g-7L z0h20#Cvky{nQ5oL7Z}RvG5}h+6Gxl-f>Q;P8rcQ(70B;%- zVvV1&MBqD+r6>_2^qAjb1SqTl|AJK%C2_TM#~nzS+yKLc!bg_k*X!Zhj`6VU0Kh#i z?D!IG?aUq_quk?;1`bB0J3!V<#~9v6xXlf8J^ay8pC=m#b?2oero)Syu>Ewhiq<~u|-_e(RrE4S6E1?ZVXcB7ZxB~yS`*?S4m zGVV(eWioQJc-D?dl`RlKMle44UXtZ?fXB=JH zK}jciar;me#(f@)wA18I;JOB~mO#PgeD|sHh2guxdZQVHW@gQrXLfi3%->LRjCLlU z15PNmXA-BOt+s1s7)2&7>?)aFsV=d2r_i1d@J`;PQsKSkVd)65L7K(hWS*n<^?vsq z$f(*-tp$!vV0DsRHLi5&Tmt2SSC7aza&w54D@fP+@$*;7+I|2ED7~V_G+M*37sT}q zAo2X>4`BG}9|VfN=0-6K&oTg&gjSGw%_EQ?X&)d`XYPJLXi!w&hYrsh> zIq*4VjgO;I`<*d3SVPgF9QA9KH??5=Xn)#JT_#y+1MR~EF^6%@(iU89V%DA5@qG_s zyBk4}WFVINvME-&izWn1cDBO4h#{DBVcx%ZP&$Ur_Z~eMl>wWAAasPNT=&kHtHDD;BC9~jOA~* zFzrp?2QF&tzHjxbMweP?EW6sQ+~<>hz^lc}LS_Atg2@)2J^Uut2~~0?wV^tkN2Ku3 zFajycJ{L?kcLXkdVp_aoD-bvyhwTuw5eyLXiV9*p=QQfww$hea?3noey45c9dG-r5 z4y9jwUF`2zP&iMYaW8mMSldJQgl-2y)vXv>T4VEik`A^X;*wX|_1BabUVPpd51r=3#r6gV9 z5!dkK4`9)FpexB1t)2IYP+VK&Mbb~*0DCZB@KjDFEctjO> z$E(^ke$iCcWmVP_l-J(v2eBh|#>GK&zICX- zSPgGD2MR>3QJii%@g_4@shG@@%DGl7PVTOvU0^Cqhg03K@#RE0kdjTW*>Sa7TRY{0$}%{Kn9Tl~p(rCI&pP85Tyt@pul<7(otV<`t< z{;%dt;zH17U)WCO2)%q`;ZkCPOvr(WPB@dSM5Us{*}9GYOyLKm0YGCk9k;ycc z_@BI^#G|o;qr2|)317aVxpc_)8+?SWp_+T)@=g^x@|h`Tn+H7A+R-&veWN+ zeIO7WV|Gy>L}I+?pu?C(gIX4T$orUSE#HDa7&0nB%QDvh@jXPev+b5 zYaGtU@zNp7@!k_}5=l|v;{(bC*CYZTD7Ntq4b(&#E9T}JZ{LM2j@o;O(9VZulPkv% z|NIT-&m1DcqCu=SHtKw3t9zp1>N$dT`2>4%I5PANv0Io{&IO=!bZ@KF%nzS-cE*HV zd97W5DKs-(T7V#7wN&y3w~QDS4JrNJ?U0{&U02kLpt^pSfJF z$@K^<1rauMCJM#VJY|29&J4LJd=;)1u83G?mOKrFWxo6H`s1;F>Vb}viv>Dr3rf-X zVvA_Y9+NYU^_eU3#fr}J`(xslJA$+!a20N=auz|@xiVwobAa)=2Gp^3102RwP4>Q;%d)80Z*Euw+}QiZ^m>mT+|%(QP~ZAgG1&~-R>qWhdm#H38|;B zrcjrsGYY}xI&~F-nvz-2tu}NPEyfj_-vci~kZ@_0%1gTl_ozK*@= zni1!hk+ri4tvTiVun3b*Dst-Gi>k=9s}xtXv}<1OB-YU=3HDt`8d?t{evFl<^Z0tx zs*=I^duM8dJ^ezsH+xiV$tR80L3ZLvWL`q)G(J&=sTM)Cjr2aHp_RL4XzNyBf!=xfHPG&1QTjRF2i(!*cUuZ8!6vbtx-RUQ|hiQvF z3xJ8hPFCl?wl=`iL8)8iWczJJLllxWW52{#-rdr4V*8M&&#wIb@h6HQT|e@}eNqvR z^8d;L0ItNbw~h;P6Nhx_P~3fT5`6P+@3870Ujb z6C&LIpPx`95X&Rs+x;EiM@x%>4=4{WcKY|x5Ref;isAkHL*;2G!MlA{MqBXTN2S4q zg~*fr=XC%1Hwg#i9S#av?*Hp3oQ9@?Qo0!HuX6$dW;AeCo?2dN5IKQ;UlpjJ zgIJM%nG+%LjaGQ11|Cw)1pf#Bq~&s!xXkqrAtaXiZwN|3?=w)@dW1A^;Vlh7cgM5( z+&dn=Vr_4sT<-j5#I}tgz;J;?C8ULH^ZuSz?9{CiUUvca6> zQ<-~d{IvoB&XqK`=5^fY@b~D6tAmxIiCZno{1^CCa|G7kndtZB`oE@HI-d#5NqLk( z-rw%vOI~35d?*7>jQ;v68chP0-130(Njrg1@HqAW<;eFjs2GHRvVXGCi@v)(m~j8* z6;mvbiBHTYED8qK(FlK)1 zRT_&n-NyS9jD5C2mA?5Me%_}G?CXoG7quzgW*&_?UB5*!(FxF%q>5ftvL;C{*gi6u z&lFc&2R4bDPd1L`K)SWv2$p_U z6{5JM4q*17nay7TxF5hXZEXetF>YN3D2u-^HAs1)IEneicPjxvMQ5w+K7cuzSO%_& z7a+<^pb(j1bnnXWB^Iv#0&rfyhN0|vn!Kb$Kwza$AB2T{*o(A%aEW3<%G+1dz1rRW_mgVQK+@$kCDWSmNErb+nUKqh z%}a^Fp3KS}{&a_~TGolEIqf-06En0j5OCag}DuBH}^6OnS60^jU+KjHC+w2EyT0s8{LgbeP3b{b& zEU;+0RW;C+2!J(^iEL3$rdzx7d`*xT+~(cjaSUz-ipgbFQ;09y55O0ICj_vAd8yl- zL@VcNCF(~~8TnN#GfP55c-M#nICP74sO0`cuy&Iv%Fh1sM57MF(^P9InI>)ph4s!7 z1iZvNM`es2>)oLU={N$p0n)lnQzbtDThR}1Qc3ui4s`MHdLJ)=Y;tQgxWq11her@x zI)X?)e7Z&-<8VimF*BE5hW4Q%xhVIGN!E%y_N9oRXCSv(z1Eq^xW!gLOfQ*pbHipp zj8m|})+jd_RjJtZ>-%RA5q)s_R0rl#wD@L1=u0IKQVzRrRh4x#BQ^V7#90KKGy>}x zxj1TIpWu`S#K$1FI_@9YX|e%yn6C(U9n%dhfT|h{((o(JA3ERghdqsT#AYMxq>vHd z(~sj%vlt**>b4@d+3@%hr+gRigO=IV3US04X5L0x@pQd_Ws^p__d}-w0TiPB7(xfD zL{hf4mWvL}6xrRieq$Jc{^STejeM80BW8jJ&8>2^*jN?cFAN{vV^{2YihF~QVXpaT z@B^yvJ1{G9^#}%!3*omSCL6W8YCa%#{>}(#Jdy}+p zEx$m8d=!#1rMq+5LCA%;no7kMi}439yCcE6Y6Yt6l_L9Da1qHx?ak|(>2v|xOx<7- zsN4&()2EE}aT*F330C(ie}SNEGgvVpIp)DiZHuwnQhh@UsIYN@cvg>mlAG9oaJ?aT zR$b_Za64DTW8VoRQ6C^}1KKd9O%TI!;}9Yp$UO%ia?`K9W&yRRR8-n$Wd4f`-RlDS1@sP-UqJSEvOxskbIxUyAlGa<=;U920B|-N za=i+j7e;d+;p#37U!qTBB)(ss>;AAqLnbDU1r4>9r={Y2h0mZunVyV^iMIb-fd_;5 z7LTid_4@`V_Pq*skhcA00d|%r09TBCy!&{k3k{9Q!YH3d)201aQ=8WzubB}!&q+n^ z@oTK+@|!V(#1^17b{9b-thZinaKvJ<+n2m2SA#_@c?V+tVtwGo@c2U>owd7Rjit=> zu{-5O=m4*?Byfu^oY33w#hPr02(oB#-6#x25%W48W{*XW>a34H2DVD)2g2p-#J=Mc zi>&y$Q{%9MBp&Na*Sau4-Ne3$u!WWfGWEyLL|^_f)QwnP=8haj#Z&d3f*sbcu@VPdeE4D+BWl z`Ot^$NAKHf#zWv5s>gXWZDxlGUJ}#%0<{izMZ>N@k-eZvCc-92?&-7~i=d~VqaN=fgT~Nt z#u&Oo5|FIwyhs)HnR?SJFwz+1?QZfF@L0^$D*f+8a&%J&_;apB0rc1$(>aSd>9SqI zJw<#xxxD_nE(SMX?{d)317z7Vt=SSb=!UWqSqW*5k%?3-mL3L7txU?26Ob|oLR5Ut zd(dW`-qT&g^HH#v&7sc_f4LWjeabwem&R{dmBY>)9b48&D$|^-C>@>{$Fmu7IVbCV z?TsAxIM-{zXxP)Tj-Hrr1-X!vH*Gi1wHKYV;?X-|>x>jCZHt@z30DN}j47?Q|)P6T^M zbp^%5_Y^!NR(WXVvR-Gw&r=dfS48HSdJw_y=B2_tFkMJwqwkGV9qz*8 zdy9I_q)mbLuwTVK#Fsc|`uS>li7%9>KT&nbe#j)^4?m>9Lz1_owffXQ?JU$H;_jBC zjVTekU0m*z5QXa8pSkeP0JmmJTBSsP%S~Chy^`eaTd3WzVag{A;z=F{izYO3^K{i zFjWo1lm7^^-XTewfrnla)&;!Lg6!+A?vt(4HiI-IEld)?LMEb`#`R`Yg}_MDPs0#~ zs&@@sisRRrhL+_bgfh@f*>iuk-uW(G83HK|`GezMQB4muV?DVFf0v?k&Kt={urM<&1eXP_rwV%RKhWE z9#Kk15%0wI`JV2VTaKK_{xAq*Y6sC;KV0 zJmG=TyQB{-=m(ImxfI^W(DdhOmfITRflu#0#BA)}3_Y?NpKi9kQ{V(o{0j!S#1aEC z%l8*HnKo#ze}i1eSE7vj=SEz#KeRcP`ny`0r=8=&_(=Q1yp>9F>UtoXSf=9M^l#kmzi61T;RajFyQfeLe;4HnLP2c55Youq^R`M_F*gTz-*JkH% z8;!b=AnSbFnvi{m^>MO(ZACuAwe3K6rrcWEJ-MfRLV?FqTk&{b^|sm+!`L2tUD$EO zx0E+LSyDI4pjPAlVtDR)UZ=dJjLbeuV>s@fA~Cp?5G;P%%4VS>=96Hs=2SKN$@Aqq z0rEIN9r|}|%4~3zBfV!?nXuhCNuN&RH;Q*zXW2&X6|q0sUS|{bVtT%57TE;6}c1#dDZ^LUD<@(8Tds3 zxjNHn-U>fH?LpMUR-;`}H!-kT?jBV#p8tf`hdy!0>n7DE5p$vo4U_pp`}i2*7!fq6 zeG^DZ69Ho-Sl@Tlf523Ko=e-r{kUHdPJNlnV0V(F=>25#bAWUdKhn-~Yjo+5K3OlY^MvN~EPb0V|eacL3M3 ztp34AXSd}@$_NtI;ac2>gdaua&YzQg{)2l!_;qT4(2Yp`NeM2CrqjyfKRW-`Tx@ zKOQ*f0~Gu$dc=n-wl;o)JYxsFd*xSxxJoELei&(E-99FDUhg71qGJp3ZYHLyA|;2U zj{o@7HsLJ=qsDPw^ciz|E`qz{svD{16THs0r>6Tgm#9iSjweySZDe~7P9xlZ*@{v4 z_JoR%59&Nryev4aA@=q2qG;oR+Z<;Uh4q?%%6QRUZ_hS=-o*P>)j?*CRKC&p1RqI$ z*mVkbueuoy8>bM(Ryy@pE+G$L@l~e#>`&ZqJhRdZeXd*2BbN+t91c_Lgc&sDsTcUNrEXv4&J2y_>&G20Va z=9r+J7zu;yV@Z~^I;WaltB3(o=;3Eu{9MS~PT!-bHmI0;g3O9*`rh~$YCaorGv>6Y zJ;uwzM|&7D*+-#4jNOa)Js;Lsod$HN*tgtUN|U{rgN_;n=0^>M%S4vVs`#0ba(s`9 zBHDIrSf$p+%%!nK&(=1a%%qEp!g)~1Hdl@QtP5DVx3acuNroL&T4EkfXQ&ITC z)?&kB>}_^;0<;{F0iMM8by;NvPuA4EKeax@>-vPxNHb1PlW-1nYTxT|T5CeJ3f;T5eZjbw<+DHk(ptZ=@D|J%`UqbVp*bO!P%or;DQ1?2K*X zX!9LwsPrc4KlmCn@rD!h3pHrX|oNQ=O^w0=; z`D-V=kOMQE98D6F)LIZO%FYe1e4pvlYsh4$T&n)HIe@b!{?%1eEX9}iL615Kh{OV` zPtX>6_T-0%VWq1Xaj5rHt>49cl=l+ptu~x0LVISJk!t52Sx{>gjC&L8Rvp4cg5B2> zp^Ne`f>%^nhCt0dSbWv~h%NZ1VYlzutUKqJtP85)HN5?eU+|BmYt&sPln=RU%2XC+ zF+UTd$bt$!&3gVgtDbONMivmWgRk#ps)|Vw3k$++g}2!gs$Uc!1wS3HiY9gc<%JO$ zU{%?4^L{f?p`<Q#UX>!~5If5gnY*&;SDP}2ZTkNYO*4QF;S~QI{-nCFI)rS+0SSoe0p^eF8 zZmw?--Z5?)R_E0(e2O=R48*v(D2dwjy(a%byM=G~zz4krW0N5gT`4)ghAx%gg-8wW zFl5qR{@QI%kgeeA1@&W!krmy+XQPo(Dc`WZuXe(iPz*5D{8sJl(~tO1y-RaYlUy^p zjbBv1NQbjq`I>d9lfJjz_3wG5y3a?%6Xs1Pq}Jk~jza3`VrWtpl%jHsrkTm(-4yJq zbkXUC+KVnD-mjt?fhz@9H_d7L{ z$7nG}HPIHqv}9PbVjD4;`(<}>JmP$rUHI!K%Kj>^XI7N9`n#h< z;Df4*@AMkBFv|KC(Nml)%k{7xgY0J|?I+5}!6EFWDFIf(GB=^VK*HAYzCG^sG|$9C z@mdkqmIgz~U_3(fWz5DQZHjl-8^cB39mg%k(<_`yC;_q20du@nmge6q>>PXbZU6I%>UedC!vR%pXk!$Nt*uy~a zF4sW8m91UgZm-pq8{&(YA=I~N4z&IKg`yp$5s?Iq&+yhLHc!QG#Faiih-czL+34N< z_D1`jSsdKf+O^hd(b=^2O?I4UY$_4SjhZYxnR_C3488?*PVLjPT~(Ox|4_FrcjC9G zH@T}qz`j8mw7GRaXs*J!M~tVckQ;Yhh;1c0U~0XLlyF4hwmohlkL7H$3SkSWU+bHQ zmz3*!G1{znDItr+bAo3Z6U2&Shf5qm^DUdT4wbu8`rQRm!y_4ac*FtM*UV3^w zPk$kE5#_#*F7T>NFkdNjtZHRk25+a*4c0|t|UCz=M2V8@;%q5OiX#DP$@QL`(9#6h1}7B)mq1d zD{9kug8nUFSY3)Zx6Kr9C3i&Y9;i9Z#DqzYt zzSw()_YkK!s`=x}NbhPi-3CdhDw9t!%IdT0jvH(`7F03cGHuekC-m3nYK1j7tJ{ZT zgU^VmgsF~8uzkN>@AR5To84uvr}hbJFE^m|ICyRF_j<`AtNG;+W)AX=eoXMf@S1$d zWCt@+)NmV65EuETDf#<8XMykSF|XXouxBwx5bJj7t9ydIgb&YHx-zK$CR zIZEc*c;a^RU7;IiHeQUwyZ!~b4YnmwtV@S%7 z*!9_g-n8~Hg*O!L_Z#^(kjKV_Oeuceiru$9<--sja8`KecSYBXqrB9K^Zp_pr@Qq{ z{l)913u|aq=DXE-g_m$!`NPz{2wN+sAJPz!h-|YrqNN;Pgsa_V%xg}&Fm8(M$-~Yf zUciI?d=8F=RLc7CU}D~D?~#R}NufS3`1VonO>MmndzP;X%yC!TrvDjvPLK>K*X03T zY5{aJ=JfV1Z=5rIs*?0U$O9L`nlXPSSNG+quZ?!QODO1fmb~!X{m+n(--s+T3WSZv zuxKX?UUDT5c<^Cg;}`9I8s4L#XLA@u3dI|m2rXrz9(nqq*gnhRxX`SroWvrO3KP`Bhg)O?7wt*Q& zA$0wI><;pkVCW;|5n5YJeK$_+Oq1mAU$1=jK$n>p86g|n7(aJ5>t4M%^L;b@L(f-~ z`R3G-AT*OPWX;+ypl_c>V^76!hi;S^-(*W1rQQLdruY?~wz_k3}U0(uvB zM(JH(sJjFPES;8*)^Uu&jF$qln&N8K-x6GD>F{ccsEA0+wN^rVfp=R>QiJ4ASb*xL zr43<=PfXA=$*B+(&^QDw0L1Y1@y`lYR)IClFyYF4l3WqqMMJs7QuS>Rk|> zpXe|dDNd~CdS<^kB;*&~etN&XLCO_Bas;;_=?%pKR$#c3d{}<;-aIX%Rc?5CgBnK5 z<(hRU1;l~mi%jYBH`K`00?$NU%luyE8)rAdeVl|BhtF?AhR?IC{raHa?IX#>eondu zsHWT_-0rNrzK6OXt0KLTxqaW3m>ZR)K;R4Ki_Y{QCHgORtU6wne&ioBI3M$^G)wLq zb#bDlU+m^yu@T$v9|W&gYK(4|T7~j0d^T3qRharBm&nV~_3qIdJY4>xu~6~mfj9f5 zAEZwExh>x7UMEJ82N{?hGthm=AAJ`jTAjLCc*0($=}%9^EU)z^mIQZAUGQ0=DjGI~ zHmvtHBA1OqCBW1wqkER1fn-e>+h7Ubw>(g!w&SS%Gh9WN)^A2~vlLwv!_{N|c$djQ z@>F*HaQBq^!hljL{7Xfm4A!1h9+Xl*UJELFwX47qmn({ za@_SsZuW2aq)-~MO6Xp`HM(P;cqYX0cu0h?=FAp?QC-ic9A=5+liHJm%X0dyHCKyo zh=>Mnw|UOwxYSYn!YOp1!$S1SG#Ha^&fCdvC-)}d7NOj7)Sm1qydo7pOHYch9zlOe zY-_C-Mv%K%2%-428XJiRtruyDSaq3}pHuoswHCbBmTKT5nZ6;Rcjzt*TBj22Yeq6hDb4z}9``Ci<1bWBlmr z3Iu4`T-Wx;e@=aFs@)p=#qY<0_xQY=dSvh8 za4SXPrNPvSi#35h-t!oaTINAnzsC%*g3kj!V)6x&1j>zYKGzsfmApF;{g1~ioEG3A zFqw)>SU+YckO*`DsQ_R`w?HZLVn&tgqWt(;%wt&i=SS+auB}9|6dY?%`vO*&%+Fnb zBX52Yv4bmM#J9ix_-Z-{%Dmr!_@KqiA}j^C2%Ovb`{13Ds-; zuFpV=;0WjMIE>Gq9vr@_cKOov3sCWN;${Q?89+MFlZBF&g@_=ug{J$K9 zB81v2a0@qoi!BJ~z(vxIVNVv{cX}S^1b(#l17%}|<5Z}|0&sBI0(CpsBQDYVS)_+= zF6kM%g)_J;euG-C`k<61snt9y6Jo3%JVCdqA^=LiPqTw-~ol^#N?cO3xSw3hA=l=wSc`8ut1*!t0-&Y5-j_7I81{<3Fv+7tn-HoN7_66NG zwA%DwQFFz~VH5>)KaiM<9sZ&a_vKC~M}8^!^G)3APoOz0u(%m6B_`k1mkIcOOk3dJ ziM@*(Vw0r?n^Ip8G{427d;T?ky7Ub68o8p<`NxLt0C9s%Y7xuR?7*eJ(bWX4shj2l zCC6xvQ1uaWb~WI2eB0eZ5jHId8XiFABK~0MfX*tS15F-#8nVK}7C?>zzy_dqP`?39 zRjxoanO7IAdIlcAT}V!E0x+WUr0KKrN6<<7BN?B45`zBFl=?;Z@d(@^e}EjNz;8Ee zPC?=E5U7mrjHK=X660ZkWY9}03D7)w8n}ia9-g%8n0=UF?ml zkC45m_d$b}u{<%M!@%JrT2F#+YFJmmP2({hyYy0LK(kS|6)ual7mGBcqgxzQiaNe? zI681-|F;*wDzN4${SL4OCDrTFE!a~h9WK@zgqw*K@DMK|vVT?Qb)3f=o6~_q&fah`N_>CPRPY(?KkjiU8Z^!`>ce5cQYe--ghie`zd=k{Mcx&R z0lb}XGVK9@J25TkVL$Lt*QUY-Wpu^Sq(LK9h>=B;lTpW8kRB`$bT$Uq|C>(fPzb2W z-w*c8AM1aeAU$LRc!I_3@Z2`o*`RLRWxlwdJCL2Yv>hWO9{xB<{oXT<7PH|K<054|+#3?5#nWJq7V+S(up zysdrvjk4B927Pdljd}gA9=CY_5tTN=6TCD}*;}9dw7(k)hpCj8heqv3znIc{s~58~ z@gtSVZY&$&-j8w*iv?Kd?;!Wipce2Sbl(f7Q_tpS7vCpGJvW~ff5vfr9JAB|3tP*n z{*OzsbR8UaIhN1vZ6^V&2!94X{;QBqzJhMP_ z&UikIA8jp~Bd5PMijWXon^r)2l;$w9fI?{+bX9nR73#9N8$Ee zu|0V)y*5wBxvJLjk)n!p3m_iDRIfFYOdb|~r5(-Z2zaJbg>ek#QdG?jG!7)5QSJm+F|6X z1LvQhwUg_te;>0}v9OjInQD%>R~EyH$@i&=wRPyGgegyNqjs#km+k{er^}Bbdlcpx zVX8R|s2*U2e179hrv^K(ff4w$F~a(2Hk?zMLz+dONjk>4e{Y&tKp{pU7%k+Jy&GKX z42apu6n3L~icZJlB(o_HjaQ)P^G#Ij=Ifr1qeU-UPwRbY%_`^X-_AA)GVItcjv81_ z+)fvb1ae{Y6w?-gO~@EYgrKw;!pumy@E`+Y89P@ds_JSVBUWm~s-9GJz#J zzSD`s*lR0UGlVq`pjA|&VHbj@N%;TS2>gM7_wsY(y0`Gq*+?Yb#B*yZ5BUT9#W=RK zW>=cVm?*&y72lwKQBSs!#i;nVHwM59DbCda`dUI%r4;P~tE1HqG*H*i53wBm04S8S zJ#|V_A9<~;YrB}unti-Ww~6BNP7z!DOc_%C-(CT4UxpC#x*3$vqrZ{9)DfF}hH-Ao zYzNCaAAHn)2q6$!aYeCO0JIsZAP_L!&yQiqrLQr3LqXND{cWuht@2lNaGM+&y3pQ+ zc9@W_Ml!2#o}BnfjAvQTb`8OdaQ^p;Pj)+Z(5$Ib@#?tHKlAtO`2wI064pFKs@-&x5uLqSN((rHZu?fl_U z?1IJTeA8TRH?H zbAOyZN4`lqANx-bkgL*+WDlu+4xp3tZC7xeiTtNco-_kgr!}KjQODR0Y?m~iLOPE6 zHj6ZuF@wom9lyq$W3ci}K)Q4~R^Lch%gCnsO`EUhsMSQq2?0|eD=hyL-`OPw&KDkd z`~7S-qidX-9CFL%=OkB2)uqoelyQH`)_7Tejx3;ZO!VDJmakUN9paC?7r^Hh{B_fL znBgsP?o_`6+9d<^gEK0@Z~EJ+_30soler=zZ znjYdS%5f|lSfJi{GfMM2>`=jOXW>GJvqBbR;65L$v4K^W6BEH)PNP4`))YPeNl8DyTrE873`nor3Hv2IMwD6fnO zf%W4d%Nn`X5^zu|1?e07XJd|!uz~EK(lJ8dve$7)iLSqOwk!gETKogLhQWa@4n}AP z{`>!K@1Sd0%kFQ1yEGJh>>Lh6!RYU; zJzbI~_y83L7R-Mgg(F($z*!I;iGT6XrNEO&LsZV_e-D9QhthzJR=Biw`d{Y?p!YoR z0W)Ny;LZQnML=o6RvH>x_iv*7e|BnrA?@-sFz~>k(MtPw7e5td01A6X*8LTnfb*6? zK=Gl)?0=mr2vtPE2bA)qq5kVA456j||KQL{LnuW(VdGe-^c9r%5^?@D^WEr>{bPV` zGGIiNdKbG^)ciH3(&G5SsCn2-Dkr|VY={4Xs<)vU>JB!bVD3K5`XBf5|BM>k2ihT; z<5~QZt0IrZl$9M)E))tn_)&|vZ(p5;8~-AMN6|2 z3G;dd7#Oqzq{ST~nDe4ts7%6!UlvX%}Rp0Ws3>oe%u_5~=C zf$myYqk8VYZ4II&kvA339Y|R9SY-3m;}{xCq}bp7z1V3u(OLAxIHSz+{`Tht|4rp& zpHCnA@3rox0#?NT|Cj%Jm;9fjbWRcqbfeE!S}p)t{oHQ)Uf=EJU z%haFFznurTY{v}<*%?54#jLe)?gIqY4fcsv7z|rQKutd(-~{B~2&x+Fxy5`=#l2UA z-`Roi9dxES1OdwRINwKhvPUo(aRb4NDIQ4FSFhcC{KC z{aWQf3y*?8uf>36p7Edyh~GGwAE2xC@V$8f{9!$hmw5Jzo=bUvSP097|4_nx8wL;b zh&-tE`?_me0c=p6fn5Cr1WJgmQJ~oWD1rC%tG+^+?=db|aYf>>*C)CDmS0DLbIy_JCG z|5@iZee0*1gO|!D0BB_@kx^@{{rWn!nYcheF=8U)#^QvS-S8X$p)ral=1r55l(^Yv z81k9YJ%|Q6h{n{wk=g=q@HoJ2@qtc6uCo3^Ji+yA7KNvoh{mE{=ooqv-+?TPNN9uG z+H)@p=w^a6n73A{EfRL%5gt?^^*k6vvlLM1DPU4t8^Nu63Rq8Nea7k zCT>-3oRf24-&t$Y=6L}00%t3&^`LbS2!^+<<1aunnp&VTSn4720l}IzqCsa_F%W_m z#^CjU`~>y@FptxqXaLTFg~-t_K|9kH`_hN6V!gp-wE}64N7ih)=Fpb!?nM>whXiAz z3SRAi1NQ)oqfHU8eehk~oy=3!0I?rp%dN2u4+{X@2*Dz8_Xgg$-#+~Lh5Lts{1?zT z3{XXZhFj`PiC=--Vm1?4Q~uN<t zss$K4gy1>1D#Uga=oM<7%(EVL{!09;O31Y#0Mm5gnnD`>0_2jwOVSfNkpcP1GK%f8 z2cVW$f$)Lb6hOvcL6K3Ct7(#{JH+ZEaz$6!jl_J&%shP#O070EwinigJfr-(K=xPc zOkq9j|Kn7h`az6vd*F)Zi69p(I~^wYlhNszVrfoKR^o}m>Ru~2h6ggJd(i|3K4fx*B(?5H+Nq|z9aQ| z1fnJJp?z)*C4Q}Y$P*7>x@vf9uD~Rum^O)vrGrw;+mNIE$8oL6`I1b8#NBxx3l`R9 z?VxI&)broKBf;M!Ms3@DayM-jcu?TI04LsP4PG)O*h@-AZLc9&`VY)C*&=lqWXkvw z*93}YD|DIDM19Ur;IV%ITdZVDzo4BO%EF@fJh>chi5(L0VjFaqTLY$~rBn&%4e{3{ z49?xW5LlzSW=t^chk)i&7>UCx-+jdBQOyQPm%-(-Q4Ia)rP?BR6^zq~F9u^Gn!Kcx{KJ zGmHp%7>Cg#q*eHdWfMHiY76;j@3wDFn!jYm0#O879NTFd&G9}Y+x>W{cG1)Wd)5Zr zLBQBw**QX((#ne4b{M`GH=Gl-PXQD#fQ4TM#wVhuz?$MsTZ|HpWvkIfES}fN=anE* zgF$@P_lC7}@3;`Y6xV_m9G0*5%rt*$xV3{8;JzEE%}>!4tw77-%HXUB&mOusIx;3M zHS)9D1sm}xUXRQ(WAIQ1E)>%nn5Q|hUG`56z{4e^WBEdG^ROD08=7+t99nj*UoOja z73wANy2{jVIu0_&+6aTkeVJAa5p5#bMM4P)b1g1)Ta+qS7FZq!UW;Z?Dbni2QL+`- z4>zaf%?k&nRrc?*ww?E4Rv}Ant(ldwwwoSvqz-DKX6>69#Fy9>51a9bJxpYidoBFx zVm#RcJkIIsL!{e)yMnKZ%6gC8qmXerKYw(2no^eRQoD!qNeHscetyh}OrAkpw{Eq}E#!0|?dN~OR3nx* zukii&(<&$WF4l7PXFM#rb~Ues*MeC=cj4}?+>VjY-l8=IE*LpzqmD5XH?U*&#p75! z|Dty#XyS+$Er)mk3hy7fcMwR2(z;G-3O7$dCvB9{27ni{81Ve&Tw3|XW!@oN+HzTOb;*T)*;q-^-V*gMOps=D^wOLw<)NOzZXN`n&8 zNJyu&bT>#hNU1bPgLF62-60K1!H-R`ya+H1}==XGD# z?=Ik*>JDW%~wFT$x*@K&DFk~d9npQTUAHNBP&Rxqvq{VxK`0(Soz&B^B~&y@yr z#MK;dDXq6H1$<2I<733=hcwBerJ=FRo4xHs9$SitV4olBCNnWxVk-8(no=pR+bx(V6!?RvMz5opcrsTYUjYBzX2k4yh;ZpW@ zO+-I)rQP3k#QY`BU#laWV+?k5pk^M3vv@6H`nW(B=U?d+N>iXi;127#--f6h;Gu)p zUP}dPFp7y=IDg^IA-UQnU^7sp{R)jGc1_FCpeIF*1=UONu;lp^Bwh-Bz;>>~^bwBhgVK+KGl9ohcI<~3kHNv(-`dKFCeP6+cmllUY z(acka#izq|iwUw?ZsG}*(BZAQ=CmZlBGsH&_+WjpGazJlsLd5-(i^WBgj5|%>v%^d z%U|rCVQQI-5QU}ovQB}U7s(W-o}xj>zmqof!^G)&m$-inU3L&OD(uxI3Lc}W#hE+} z>YL4jqWPfBW^V<445nuH!3nE2=tKBmOzo&ljZ~z|R<+IE6q49X^W4P^HEbiXcMF6^D;3)s34Hdkwx*=tdNsvdpqqR14_pM%tcdK5pf_N~+hyx|cyFz| z3F1-*?a7lRyA83VOpDveD}-Bf=gYUty|05tNSemPG!g{Hu>1L<2QYg6^(`#EB)3+- zo-l6l)`+(xYGVWCDTa*p)hh!HSJ7!9uvlh;GLajukYTSHlHFa`+j8Y?if%sG;n*%S z#ce<9)wjQIkVDfF@rM2`K3Bd^V|N+KMlzt5uc7_y5R{yH2Jx0$E7S{-QJ&FUgVbb) zr=Opt2vT4X;VsOz|ECO!*XjPkAO5K2FjJnUs;A;$S@@TGA|ptzM~%Zz@@IcpHee6P zMY1B=mo#oU+;IqIoFtiE{QbS$V3(V66yVON#uh0X!VCKNGd+5cIs4yOg@f8rf=VUx zks)XY-rCDal})D9RZN1r0aox&xo7aVi(Xw&93y`DoLIhLukGKlOQ3uS zhOLrhmUH-|d$cl^i`fFFcZ+Kd?Jrm=nJVnCMkLfAV7&tSk>)aNUFL_AO1sHm8Td}R z$fK}iGR14>kIOnUXlr2>yv4`UY37WE$|w(h+hum9$H}skp+#X~h$IY*Ae#!hg(7x) zf=ZXiEB_Zb>-eaJ^~s1+!@73-?4g#t(-3%1l=)gC-8Lrww4{!Cx_|mXXRPwtYg1S8 zF5)$^Ib}e5K&A!YOk^^>4@$82u$gn6I3W~WHQTMiI9wxl=kBdA#grXL)-nf_FFc&k z<;6|80u~bsowFN*DrnEuF6ar#cs7xv@4qXE^aNyMb5Cgz`gbx3xfeuvuZVT_>hM1g zPp>Q%X7GbIq27S2VCjkL1S@yybzWGGV@VXAogE>lU#|VLeqy*`G_T%r)KW{3({bxd zR_4cgd`EmMFwVJwD$5Y-e_n)6GVFc+nq)3Ks3>cc;Hy@ge9)u$iX8HbO!h% zOz3UOV`7fciHpFJ#fjO>Tc03)DSjD6ihug*JeN_#hX2$DDPlrGVypFION+6jL24KR zX$s@#u6JLgR@EnY7i41NVzs+)QP{he3=vfB$#J2N6%9FDad>d(RfH(RIcxR^vT=G? z1_#;4Ia|%&7_r?K5jZ%TQQ4E#(`wsmJ0Kp+>x8k3lXx4+&p0i?nc({qa43nPPbG2N z?;4q(FEM_TIxc5t^)7B%?GV#2c1pcp(x;Tm@)#whgZ^UczxDD3J%X2JM+98ffqyc? zuv@53pH#4R>I70|1hZ#e2kA3{)Ggb*NvgOFq=JYg*`y7fl0dK>-xF?0)ys|-qQOKk z_?WCMa^JFMM{`fXAmg1h$!M2Y)97v0F&|8m&Dxi-MxSlI!P=76b}6qm zj!lEkDwgSr%X@My&jJ%v1P>QL`YuMt@Ex>Uc+Q`)MEb7%@zY+fwUu5zlGnrH&wLp} z`QbFnQPJg~?J;$imexYV#*3Q%zy`0yG%ELl*S)}mk&B&-4<3w^9A5UoVtc|4@-^tc2GcHVTC zmtoio-0vBU^Wn7~slA2Whyco%9$LL1;GI!G(@`3!FG7#2sJ{-C#B5g@tqEM&E5(Eh zG_4tR#2}tC#ur}kLKh!}sB2=VKz@r^?@*h9$Y*PYbbbm+*Y6(rCw>^zF#ZMZ#f7vA zfJ6V<^v`bGm?*H9@Cn+4aNqw!Ac4aMTAqL4SJr<@P2CWc|GzK&?-ls}?+QHHLW8am z+F;!cc7CNBtzK82ZUZ2)-vx5|dNuU&{ttIopsm~91Ssys67wAcDWW%q38%FiM9b@K z7x7=-JvEwjd4ZbGQ_Bmhzcp*Ib8NW}U^}(-o!*+t!3uVqsJ}UP7Z4@rfk+^ZAcH8a`1CXT3K)`vtzxl{Qm-89yHAg^uqZ3tbNJqOB;2Cf^Ub?9sV(of_B+CIY z(GBd*fG%`6nE)IaoS^%Sq3;7^OOA350M;4}7Gv49l|Z2atcdLr`7RKye*$cVNEvDn zO3`lyKYzgL)kT1T8REbI+@Prru$L~XEdL?|(Ka!6VJCY%o~9q>C@aBsN9d%5>%G_Q z$qiet24ft5*Kvx6%Z-_l7a6!Iz7(sQ{N^F_>uC?gs@Zm!=-4z(l|y2r>dp`c2$$`L+6B;{ZWl zBt{LD{!3Yw0+uG%%eg_P4Mfw?%o~9H+|K-X_XkMHDcw32SxKNojtzV;N||N8$=Mw5 zdI4cm{#0^H{VoSSq4w%;4nZ{#sN{|ScXSB=D`v8QyfeW__r0QFBLXzbPGNk*D4!(l zdJf>HNq{y62mlaogBg)(fgG0J{%f=nq2mS^VrFH`)!JQvJ>~hL1pN~9hRJ;3v7V8# z&|o%f^9EZ>a^>6h{!qwP6_7N^GLS`#W|EP`S#X|7;sH=r zDz%hg|%6K~n6mJ#C zf1>Z*&Qw%fb{b-FPyfJ=Lhq zLYWw&WIyDBXS>+N{*~0?17P~`0ZYFU?eep|1R&Q2d%GafO@@F`;m}W&z#!8PD^n8O z*353k4I5lF_6Ia6VFr8aN)Nh`ybhr1HUWI9^=x@GdY!8iel!2_y1eK47UWGIJ$AGB zKua7~wH!GnC%FrGq4nPIQv5g_?tv|SSzE~vPMJM55l14? zpE@>9{sgmhuM;38)T#3r00o&_h&yl@e2Y}+EZGS1vY03mnH2a^gc0*0Y$ay!iMlUh zvgfxh046|YlRlQQvS;t&#HD5b~-t%A=D1B41=56{}P&FwQla%r|L#I0ptjn25K8 zj&gr~&Bp3-vzxY>en%(-W-8-kZr-VD&45H{Xqi->f+2uRBz55>Nu?B)J_Sul2}!Pq zT%NPjGsp4A<6*U1Vr(j~L{XdHSn=7+#o-cT&(b2WKJ- zQRydkK2%k(XIIbAHc>`{dpy6mmjt(fmNmLD(b*X=`m7oB=*o+XP$YJacBX_geUbf8D7#Vs~U9ygE>a!Aid$06>C z@eINHhNUb8HyPY~+!V?EsBhI_Ax|RkT?2(NTH6+uDY1k=lsktXG5!^^^d3dCgV=l} z4aE^C^Wl&gOYs@Hdw-_3Veg1Mp)yr{jY$2P`2|)5>sm8t)YTBQ&v}FBlK660a43vD zKaGgNsX^9%MIUIlfQ%IQmUd|ym>s`sJ6rg}O7=G81MmzW@QROYt z8&u@#$sz0$$^bT(|g31?qb~rCr@}T zo}-1IWRyrmoPTcz#vEd}BNZ`K18~V@3A!<=wZJxeW0eX{7SGV^RXN@Q7Ppv!Ha(Rh zfYRDhfWBP=l!7s1*+Rqx^A1l_@Yvq5gap{)LPMB=G0<~#ufwyeLrf*80+41*!aKXW zL`KbzQE{0xqvZPuI)ugom0>g)z#K)MBlw1^<2rz1`$!q<%0W9fAyzRIwTJLyZ`gN^ zRoSLqO5494#%Rz_4Rf-eq33b^x2XJVx-5F7u~M{EGj`UtdO4gh$2fW#gg5i-aOT5M#Qi-f0(y-CNQ8kew4jtqD z;;?8a@KWp>Q3egp)beY(g<0=4kg4b68%u6bSR2}1@E)aGhH%Axq(4$1yfhWaln5ZJ zTFKSG?21=WU=LuMnl@-5v>=d8UO(<}0@hD7jI@u0 zU%CWOe1sx$-#7h9}*V%Qnl2t=|I)i9Q3SFLqnL-7tBGF`Mesu1tE{h%cHrUa%O$d>SmmRKZEXLkuXy9$ z%@WEFg-we%ZiU|%*)4AIDK?g+g=i*T8~@JJVS1opQGNCD4Ym5%l@v&b4ZG+;$hr(ksx(mjV7qk0RgBu@|B zgXthgMZ-3&mN1UkO)m)QbxR~Bl2n@`W@a0>>^=MhDyP6=ib&5Wu>?lJQPBr}EHot| z-j=9-@hxUN$^_<5yPTFt*{?}5P2YOgk#2;*hqntD-S{UTmA0$2RJx3(haMLjm*Q&^ zQdoV7(T_Ap>NTAMy{kQKJIfM#(i_n|WSi!>hx*JL7wp{=QJA^QHR$!Wug z)@{stMs0P>Z?*NRgx7>d8~Z(vvDvv3DV?I$NK9)pc=L*&0=KPUu8{WvctQmB-{Q%& z|I4G50I{D`QzvzlV2WwnawiW^9IH0pB6diXVsiOu#a<)xCRTYM>k~=v%WW#ueBwRrjmEO;1}=0EN@Yught$TbPZT?$Gm;cdCW zOOch&uxE%}k=NJ46zmM=-sQ5c!ov-W4(HL>=~qfsALfmSGgTiTVw%Wc-F3snx7>y- z3}76l#HMBqnHr5c`1az8e%F4K7wzH>*G2aJq0Q3>Wm4_P)D`SJ7x2jyn!PfgJ=rmo z3orbej0G3MbsKyAO)W8E6rzGz%d$=BWy1}O$JMDxiKST3%fOyixVz`)q?E_O!|fpq zvJk7%qY|_y^Z9B)S(9>>pVnQvBDW}abr(_3Z|QM5l{e=k1#mPDS+252wvNZ;f*t9? z)xDCT-G!$uxScTx4f%}{pB((rj$IT|%eTLdHQGoeI0!1M8dkOIONklL3hd-xkX1LI zmJ*dBZ`6H(9vEu%s%7AWE)2^V^PAJXX(RCRtdC^akEbC5Z2v z%v);+mNA*d1BpCMVi;6h(8x^qYuP->KOMa7nyDxrn!^^;taWVL+ti`zO)Ca$t0cXCJkA3f#+hGefcC!|={oO|djSk_;iH7Nd=XhFYzE;-;$h03L=Pq}0{l~x9XcAb3Xj_=f zw7v->_2n9Mx}>^k@H$$7&gs`!xfi2NsvfOEggt32_>zc7gindcxk{Nxew$q{6Q?rd zQ84X2AkIR4h7~44-LJFr%)YLQcj_66Vl_OMeC6hO#BeDK)|1&B$|$UzF46vqEuqx zds*6Z0t?aRQhDV@`8s5im8OID0-s=Kh0b_+S#*TN!=e4Zw+pLWUX2bGz=ku_9PT?_Mm=M# zE$iUS^MS_8EG^$mr;I8^qrfrd8LIlIKyn1$Y@_@OBF|ZN+N5oYDS-%a;nEh?^z2Ej zjEE>w>i5OtsODK$tl~6Touw62wO*+>)Q1FF8!RNKp*meiN`}zV4&xEni(u8bg2HpT z!ia4>pEdL?G?gyOsbmojJaKHq*L(Yk{_aBehy$vkPe`tB(qBXCy*d-4o@Lgau|}7V zMqiWo^~pr+)SV4kNHkaOU8V9HBBfLfbjNW`r9%Mwh`j>C&{JAc4rJ%;d%EZj|o}qkpq{%>{|ZU z5I?2pyRvMM;-X1^=0=D(u_J?AZbCI1&Jy3uJ%Rb*FaKpX2at97$-F=4|HCCpkq*&? z-%lpl{`Fpe8$JE`0g08gFR-Hg@BZe0n>VFCfu||={$SldjfW%3Ck}pbgt*^g5DfJR{$Y;|qXifFzn2rTDE{l`|MSZk$D7^@xs54ykVuxCO{WV! z5A~7huSC`rvECRRB%n>=e)E#KE#+8s;Zgn9CpO6v`wF6NJ)XqVBETcLMeATQ7V?>i zmP|)@Yc5$$+_reo%PifAuaH%Z?afSpI10VSzlX_M0l4#3BIMwtCBGj2LH!HeGPUScYg1+VAZ+(1HG6zX*#~OuDcQNVb57a(#Y#q&LCC%F{Fb} zejW4gaUn(zZs0sfPXcucf0&cP-?Hz>mz-T5PGq%|`EUDF1v8so*Zk~ZQ_?S)3D>q& zp>YejLoXJiI!O4p0Q;}O@A`@osOceHp-=eff6LpO@oh0`XVXCy4oD8uKHr0DiuDWqHa?c54Fn7r5UohYcr%3 zOqkdqaHq#)RjDeNq=*3}t~A0MP7Fb+2?X{aeLw7d&Wl>r7nzG+8U6{PYj)RniYd=DB|CnHkaGQ1 z1nx_#ai2eRUku*BhjX*=it>_UyXB7#$LY&==p+JMDn+lPYk)Xz^PN=K$>re>4AEo} zYbsaZ>|Q)|-;B*_4zJQzcKW)LmoC@+Ro?ScUMf-StxiKZZ3)1!h-7v!7ARYPC?dA1 z- z=hy=>cnV33ctwib=#*b#nZ3h(iwZD4>WVg6&DT81{T>xHvDKUvgmcQwRCk&tUQs@& zV#*=^bH$kdcAq40@%2#F_G?%>BWVS`!`90i%dMv~&DLSE@3&p~wj-;V@zh?o(#x#q z!b47;-WPolEO!V?hAglB*>Aq*+z+_b`h0JJAul-|s$D+WwQsB$J4E})=8U9OdeV?o z5vAvPVrJ3i@XjOUhMd+%yYl8ayY1H0Pp71l<&gWX`#Gc# zNsRTK&J}4b*>1l2#nB=#%>p@J@ik&VGw{a+r9e8kp%Ac2sb~Rr4^j;MmFqiDlm{+R z6b?E9!_3@T&_Qj!-rjIjy6BTLXlQ|@TMdZppoJdwAVVdnuYmX$#DoVzqcp|f0t3W1 zt#5A>5d@w&BbUOgQw?7cgpP9tRWL^zN@p6>@kd ze6vw!y-tw6MdJ3~KQ>IO=xOk3+)C*p+PuMbre&S`Gj7)NR!^IzB&+tz(;Ys%Z7L_^ zN!6|(roN~k3EWs=5Nddt9w_GkZ21S!OP#8Eq%}GU(&z;Nog|f77TqF}-$uD={0Iz5 z%om+`Ab(0Z102F5xF)V$@&m!u9(tv)jeIt%9MQTo(q5LwRJ+wR+hS3 z=EzikD0t}*X!4tJ+rztmLx;&Ni7nyx(IR6qQ{wh%{AYdHhqHmL4?=FFQa3MWYcG>{ zP@?W_B`X}iwft#b)ob$%CyAUr`DoXjkb`f_7RMx6u?q6)LD|_en*>K$rNq*%l~!Qm$b-JtO){v;U(~Spedc$fhQGYLi{xN|(~t?IS1s z#=|s~`%D8>O0A~>>#UzEO}lGaKkR6nR~B$q=J%OgMec4U1-`ke*#|Ou82%^>5So3< z=|0$m;j4Wy%u~o#9%nHS(mIB!E72mAWHL`);%mNnaKqp%UBB9-r)AzS3Gg(#=#Yb}q>Y+ILp2-~CQOmfTo6pv8z znq>5=c88mykFjVvrj8U^Gs90#HRtnOg=p#f*3+eLnu*_x?1C}ewyD+1?ag2*ymW4h zAYGsc9%zJ=6cu7os6pwD&oRYj!33S1doY?MG_@q`alY0{2E=&5X7{rVYT1~3U}SV~ zs)_uGK23f8FO=;;Ip*sg{UW=i50$e=c)FQdC5r?@*^kT}0n_K_C8F$;d5+=hqV|N>8l7c+ zD1$p2HIGA6o>7mR^`frW>E1r`dT#m&m=3Y`A5TAfd>Gt5SS?yOBEUO7n(d5 zZ9DsY?#0S_yY$@*UQu6kukXX+9}=n`i?hBiPv$p)zav{GOPA(u7VW&;@YCwPH{|vw z!Yyjqzr+%K_#LIhOvoz0wB80w%&{^1J2P8wn#g|D;H=PmTXh|VwxUY%&&~YUuSH+Z zAKSsf6Z08vq@@>!uT9i$mvp{(R+Yl~DC)FCn@pt~yT5P0SF7QJ=^kCE{k2vdeYYg4 z35|e3n$he%o7W{<*8b;XDF4u;xF~|M&TNDEV|8#fcbWcLmpoF#Tnx!e*AHW>6Z0-V zG(II5-nUiRJ_R9K;&YX)=I9o_*YtGM><9`O(W|=Ht9r-xC!NFgX7qSusJXMQ)6L*GLj*R1ZaOhtY`J5)7sZ zQ;Nm^Ea!wQx#Q@8dz=nA1-Xw03btyh8+iLYfdO2-Sox*zqjxU1}brI6l6O0>q@s43{XFDlvt#C)O&LR$OR*9Pr(%-^m zHth;zfG$tma+3cwIqvYard-&Z! z%21dZ(W8UX1+v9x+@CK`ELN)x1#d2YAbd??Ne#YKQE(j=JeFWh6TL|78{7Xga$ZjT zwC5=kux4#g?9fMBczRd9SVx|BGpMvZRVW|bEB)(plEU`blKsZPas8Wy-}ym=A>gbH z&X>k$PM7n4h`xUV=O)yg6k%SrxV_u>&8<*IJjYQcm`aB+Wmsfm77c^%)%$@^(bCq< z&Q2tR82ev!=s|7HQ~GK~zTFvgwsMm;^W7zgj>^r!(EmtqVN>)PUsWMauA1pa%ian@`IIy7d&U~}4DSBsV0!*~Z1y1; z*_5{=!G7pC@M7keQZVQD^raRXr>N)7<(C|?x}Z5q;Z-mC%aSmvT}0@&#sPNVll4$qJg5kZW*9C??yKRD1m-VE;9jF)*fa~*el)};3p|I z1%-3~bT|W<8|v;pvQ?4mH5ifuSCd0;GJfyNu9Ml^sJkd7Okbj@A~IgH2Nb?U$&wd` z=8A!%wEiXA7aKp8TIV^lt_2Rf-|XL5yZK%|Sgqi2-p@uSIuchbH0(YI#PTVHl~R0q z78vs8qG=DMn?&7fz6kdEC&>Q0gtw$Q+@@ohD7zbAs_}bGkJ?+CAq#YZy_$NtMZ zwGL55{kI$yX+1T{euFUNW8atOtzGSxvU4@&kDJ0~?n#AQe7iR4^;GB3&(f&hHQ6@f zn7<7oKDK%_s^6Nih!q+`!`~UItot-KT}V*AsF0#$@oC^C^5gnJuc6P_5#9(thlHU^ ziFA4{x=0Rjw!=Gr+vS+RyDM^?@7rT_(GfVC{wGfd2R8>=gVx`|a?@N*QdROb7kn}+ z8;&NbH&_TBmsi<~K_mq%Fz@RjcYyBW*9R9WzXM3Kmx`ViE>n; zh{?RU#A0c^q4!MvqU{KTpjI5Z&`559i9^prZyA)xnL&FQ;GXEGX$d+#wwnH`HUvB( zBhGQaolKPqL7eoTf!$J1?$2y?H)N7i?6}l^u+$u}&Nna?;%UK%|>%bk6Nm&Sz}#%zY>uZ*xj3 zGU?=LGo6`e(!keFT#B*H_%Tb1maYTiy2aySnZnAzg^lZa$$+K`tQ4m!`VEN&s#=6j168aXR;WMEL^T%Pd9XVOuQObv}f_(H%vaF zunN9+JO1kO@krvOEZtH{oPrQ$A_OjB0x?=DqJ=(pzQt+)ehH6SU}^D%G>r|X6n`;= zAR#32y8wJQQg0#Dh!&?UPfNv`IcY^DV*cG!SV5vF`ic%Zud`t&E?KOl;RrutcA0a@yJyGlmpY z1KdIyoU#zuw&VxZNJo_~Qm$DH>4&c27Wsp(kt0U*(lGU-F)|44+>-gKjE+`LcI;c5 zG<}>)oWo`nF62?iLO*HFmSyhxV$7@=1T!3N%Hp(~2v=M7B$uuZVFzSxc;JjS?Y9Kr z5BV$ly4^=~3UD31EawqOq|?0(;W__(XZ$-=N4IJ9JT^rbyEH0(V0pAg%lq`%i)~w& zh2@mYaBo>vY*eLgxt>lPwSIgf$+Yl``tsFm2ZCUhBSTCZzSF50_U5acQ(LyTz7=f#SucgAHw%cqTRKnS5Zpd{6aof)| z;WQq=FYd9OQ(wR*5=4IlcF=2aWL)N`$F>F(?x2^G7s`df58$BNxZgSQ-#Y|*$+KSU z%=wZ7z%I(&0UJgA73~1H!`G$m8?_2%09!Dl<;zDfl{>0>)=5Bm)jv-OOS66!K$aY@kX7;Hk>d2&a9b`Ai9o= zTF;WfNp(ep^%#TL%?$Ynb$Ot>^~MV_@+N*tv3%{A&$44{6Rl`Me{epZ@8t&3J@Fn3 zhwTzRJoK+gx3q0uZ3~^;>`74|_~yaS+T4kw>|?Rrx*K;V#QNxIo#yy{33Z5xpW@B` z%7*a=J-U$i52oMaW6+x^d|SGP;5`egE&HX@fnQ1`wae|nwUyv89LB!?`v_UEUqSBp zP$=W-+qEE`72ngDTiOp%M>OgHnG*pkkCKFzQyRnUsOgBD@p;^DZ<&PvWYfUQvM@+2 zOBSB>*-&E7qT#jEe6$6@8pp`pLDu~4Vp1tW|A_#gh0_2d`rGgy`RPSnXPuaKq7EJB zBfdMsndQ5wcv4BFi)}e6Ri_w%!jsQa)3}BP^hK{L3u`2!Kc9mgugRzO0pA6anq{jb z#QO}`5OmV#MNKHN_Q0anC2)|fL8IACGMU*gBsn(>?fDQRbiDSk1cHzfGR<1QfA3HA zy-_QCg=bZZK-G$V0{o8H%*wgE>&uxLtjpnhaBe2dH0~sE=6ad}IrSX)-ojhEzo#Q! z2-6dpcZojSD{W^JRlB#Jr5Lr$kqV{drpW$A$WZb@G5f(S<tGnf|ND)|?@^)RMOus3NE&1++d31ZNyv=(kMsavh&#uHVcrJGx(YSb2 zV;3x(+1Y&LUZpSb>CtNHy9L3asF`hG3bwMTvDg+;ELXnH{CBi^&)JNjSs$xG>(9xp zKTEw&ycpfCT{zB1&UbH9keGv+O`YLVaccezCQs4$y;Zpnw;f`(n(^y|EQ1HXE z03QYW?vtRf`R(ZX8tF#bbGg3BWhn=ifAKUopWO77+2A%WXqU-JW>=sIPQA-QQQ@QVVk zoJLXjN#foSc4yVySeHk2p=1eGc8Bg(=hGJly)~e|ZQr!Wr3djqtJR$drSe&OQoUSa zXp!(*%RG!3aN<~I*EV6iD@sZ{=(0db-BIsY)RNIcP}jNDeHqfI9+?6cksS0%NdsY z(~D1ft?OgbFMrYE`{Xig|0RXKhSV|eDxxCA6tVdmcKg2q{}(C!cNO|WlMiEZIXtw@ zXZGA*jb{zN?99U!+cT~dj^yN}{XUmAz`C*LrfU1;z-D%3vZfU9=Umpl=&#O_n1Nuu z^Ugu_Ck@thJ)%2z{ig->IfL64*xTLl3{tZzRgYASc zLttb>|3}t`{Id2FNeXwt{b1)q(Z6Npzn0bAOhC1BC-wOKALXAxaOBUZ+B*;h>)$^c z5L{AAOv~+mlz+^CRILWjeDTj(%h@YXYcY^Dc=(U<4<|SfJxsF4KkG#9FF-}9g1W-z zpXDE^G;p9qsG*jBoTyj}q@pw%ul3`fr<4yV>J0js8T{|Fl%g7THsTj37#L+|MQd*AzwLB%?}U)&&L3su-vq-(tfoKnC0mP4?(=*{m=ETP@E5%G{Kg` zpj#w0LmIQ$o&={Wji+`(VGZZs@K8)7Fh=F*3r`_B^Jz&1&!NnhuA&PFAX57dn9~Y^ zC#+Mka+AAxnHjdD1)LZeWU#%CCkqu$E^WXT>H!cz_{|0ryBCl&$gF{Z9aV$kbR2{= zEPn!;8Vtq@4hzte5G3Dav7@DYZbQ(B_xgb*PA&REabV9lZxTR7tU7~`jICm~ATDPD zmbbX_@<|W`s(-_aI9@xi@)#j#NH$}x>fJJHIFPwP`eGj_K^NwcHGseI+AN(aDnP$Sa2kYt@fo*6V$n&M`Vse*=Z69hjXkpKp>op^Z{IYTWQ=P zs9Z=pMN7PoK~dja00KlNToPnYwuE}}02K+9n0I(#3gmqd$lU#;Q?j5<=K$ShMCa7x z1{l-r8n^M~CL_VtZZ!+w2f6KmItUQ~ZT;Fo4#8SYklO|r(QA{RhgUiBBp|-U`c@6F zqy2=g`;);9)ZgOI`Rj;iE8zZxvuuIgn*K8x_R9q{^aWHSd&Gt!Do03=2Ba!Lt4{|W zX=lJL#T-}!)R3h{XKLyd5HSEL1*(N{w0<5~e5hxzG*KYV0TM5usj1JOc?;lv?*iDA zVxQ-Ik_1qRqM!h9)^Y%88cXHa1o@J631x-%>VRJZ z?)W}dx(!zdybg=#wZD)p2p;{6VS0`?8a`71Fm9FRgkbAq4*IHw^~-&tRZ`9H4^$#V zI$i-68)#XLp!&0Oit=U|9PbD4?t>;_nLfr}!H{<$hm$m(%fHK7C~O8U1!pn1ZYvC2}Toxc(EG4ljl zDxia)y}X6A2n8E)0Gbku#MwIsuwBmEXU0Ey?Uuq0%_~7pW*U_11Unf}aoiaHYCcI} z%%bT9V7id|TM2X-2c^z+Az#peK9wDCXpn{rMpC79z&&sYYQGl8lm=g3=-q*&J&xZ2UZEBz7$Okdw4ouYJY5S#I;}a64s4zRivqNYFiKipU%K?&N z4`VQO)egk2KFh}L;NO5)Ql!yFXAYAV>(T)t?kE+G8$)#|s4atNiNqV{{BW|R96)j^ zKo!gg$?K&Lhdtv7hX!*pk5veJYA!F9ZsM68|IK@rBUz+8lt^5L&a5-l={!%%1ZUq3 zAyWc7RjQ61W?e2!nbMc1dI@9cP)8fc&tS!SS+8)ONu+_I(tNFBs731ivR~LY@VqrGdJ3m-l$Cc)!pvXD+)1o-v;wVvYE> z_*i1%qkc{pohb3lC4*w-&yqwWRiMCYaT%YX=$D%|%xx{qRIHg_(%DD5#q6~Mb6RSv z`P6)yHqJwMUW`}VUqEx?C^ooMUO-{w_+Ck4jy9Yh6C5|IJRXrc4QALEOvw1jxaO*< z{-s6QW|ZG`^mN*0WByvVQ$WW6q_-s22@+Xq*YDsGst!8-I2{~XWvP+1#T~0?UxIr4 z<}jH1tX>deijgUwzdq;}SEE#SG~RGDO;MqN^D!)+aX)c5pV#r;$lS!?qgzKn6ba~2 zbLU?veTJ9!T9w^BpjAb3@x=r`Dn00X-%YL#y5m`H=|Md`SKT^bpJ&A-ArwR>K zaAo)T2@4ZeN-Dj?FNtb9fL>n;E{WAaJT8W6GUL(!2N5;_lY%l!se1b1by0IumvnPg9$cr^k=mtTKuirb{o}F|WVknMG|$+LWZ$nw1%S z4m3yh2!r!{GJI#G^}9wh552Q$&TSjsT;Y7)Sp^n^M-7cKGWv(F33XGjd9~XhLON-M zw*MvvPgM*G&dL99RgN5)qW#C^ea5S9Q-55EEh@s+`$>hC?rU-`4#FYDFMK1vl-{G7 zVw0Y4jks7r!&X4ArRPK5CySXS!%GVOe z%%k0w@8fupNDh^06*#D(>#9Ri+Aa&(us*8aq587cjl9MfgC$iCx=njA92>OUL&myV zKQA%F`99i~keAk?rd`{<4JB|8NU_2&r;68!}k4iza$0=f*VQ-y@<zT`)6_Un+vhw`lT9NvP z6aC7v862*vn13>Kj8#3ij?64O=LiKWok{_9c7mKXEhzVIDM5u*3Hs2io(>0MX2$Lo z^6amkC)%73C$bgTPIBdld=g0gHkeBOE=@Q!eHa(TgzutK{?nFMNRtOUV){wy<8*O{ z@KK?Ad@;wXS8N<>>3^tX>lVx%Z{>A4C)4mJ<>Te>z4%QhS#O>>+*X+pSq=%KzF4W{ zkdI^{O5TSK;FrwnF)krY^BWz}PBn`kjp^9=*@^A3^A7g>V>+U8pdMV|J`poP@xWwk z4=x<*2jo@zr6e63J!$sltclBHrnH-^^zG=rMwLu{j*s{qUeB~OSr2l{$O7b#M(QjM z1@s>|uF_wwlY*LhfR?+cs$eJvK5KGzR=1eRpl4!-*EQLf-!Tq;65lL`zo zwFIp>BO=C5BWD_AG<}W8>Y+x-nKvIVn1VNoGS(*gu z8bPzQFLHkDX2jQO!zb5_?%Hov;8Sy*`Por*aXbZ~;q$Cgtk&zJn40Veu-_#k?IC7* z9(*Y?piWw$r5my#q7rgUyBv<$s?pTivE}UYzu1n!_f{0=U_PbB>AOHnXQ^F&+r}{! zeLczO{BR>d$7JcChVY7uDHT?tRa1`GCV zN}17oGwYEV2iMwR%2d^=?PT2|$pTw-D>@X;NWWibqglVV_Pr5X8W?sK*@*&qhO5kR zTdoV$lOv1OxfiqfdrUvl!s670sV-3kzT;UeDs8!m;Pu%-j)-LrYqTWZ8DM7!`()L~ znZ=oLh6O7hlksqdChD`*6p-4Fc$xTR9`4PM?6=VOjYK!tt}_?rMx%;N;4ctNh(qQY zSJs*$qZv{clT6WAH@ZDeII;qRMlzDi!iEkJIk_aYyA(>d_J$kQ`ZgLzbuxkx44Jk9 zg1!|clap>`^<;!n9&Om~o!^WFz#~8DOL<%}1a5opQns#MbNt{Sx0i?+Y9(#V?5Epc zI}js@QIGJRz!aw35WlD;NZ^6!hC5R7|; zVQy6uO$C&l52qhq_HMa{+w}c3;G~D~k)oHWJNGq7(^v9Tu4gdnPmb#l?OhTM0(%c? z7$0wyc$a>78ag}FK0od!Bb+x=Se6l-gkwA8KF6`~MY^Zht8QCi!_SPnQ&h%?E|osJ z;KsRbN!oV8elkc;l6p(U$>}p7wX3C`}r}zyv$R z{Z;9jLfnb95Qm6GOAMY}K zy&2RbaJM+8rHsF@v;Pptt2qg$*IeYi)N8(9C{2op&l-WxljmJE(&P`h>Nd!P-&00> z?5}i+*`$0Td^Z}>oGqM@2&S+(7)J-Zp?DJ?6mEeg&ylO?<06vef9nLh_5Ei zYcuMldEq8|29bUPmw8 zUZNk7un3uF|C(%(>BsG$?ElQ#ak~BWg1`UB#fAFp%J9nW^Z&dmSF9N>YT=018R1{= z1bN{rEOx7u{4L&py%Xd;YjxX8mjC-^e_!7JUbFxAx5fhSC@ZC3b|8@BlIN9|9|L(| zyU~4{vrSJ|SID?CNE2%Xbi)Bal)78>p`_^O=s94Stlw5BSA&d~zlH-MrK;7>Y``pi z4DJK$g>xLQjc_`2z&8fq-yQ1(g9c!9e!9qcs%=%e)H(q|(237gGa4Eii^`VJ>dmO= z<5_I-FJ1i$@KiUt1LV^B+pkQ2Z3O;TdvE>?_51&i_iUF?6v>`a_G;{FrO2LytdndR zYu4dpP>s`Gm(Ke3kkc2a2+yFkM|aMZw{cl^uqRY@n269n2)m@;rOE`~cH zo+0>qofOK&DOsrdiYA;Q#OzVzv0JC$p9`=2|b>m6tI0#jk6F~@doS+jp;PKp98wu zF#Z&f7j^to_naz+)7o<$$~!sjdD+9f?cJTYahondhzif#bNF9j2J(!#iBMk+P{n&<;i z+$%fJ&fu-%Y~kKBJ@&v#pZE&h6_0EW2};HG!(?(l_i-Z;1y|JAbV z*cRL$PXLT^GTtQ+)9Vz`@dG422^{G@%7=3Qs9*s=+PUvxJXG+F4#eQ4Du7w*vO1Ez z$R9v>Zs*KyyV5;wxqy7yS!mS+_6O3PHe*!dyLP4N@`hru3L!HDPALvv=fYWetF$(+`+OW$LCX{KPOYp=CPiJR5OPb+S5IVdeJw)y?Gz_70`#kFnw7xjYJwPN>Ws zH3Q~8)*e4(*v{vYwu7f^Q;&Zh4g25KdGlWCdmL}6iDk+a!E|trwk9%wxJ~Z1~9K=OVUwww#6njYl>o9ZoNzCBG`(x1K+l`YMAg(>7Re>17;#g^lTiHo)R(|gKu2hG|iYU z>xN#LdyDaT=_9TXeO7V?>>u0U?(Z5;L)N(TLmQ318e9ihjIO@Ep{bK3BH&N4aq#pd zK^R2uMK?!btB^vh2VG;IxgXcpmYZ#$_K)(j`B*r5vsQHGelv@^NsH*x(TtCFf#)Zv z;PkVOSU=3+So=uY{YHFZ-ErH{!oK@f@FK;IwgZ;8QHR`wAXmcMwdDEIu3jlO4kz8$ zV&glw2>iSNV6K3X4{wiDfm{z6Nr=Vwz@E9l5<-CO`jSv=Wx}Bp!;*4sUqMC4kM_wE z#PSo!gb3{vfeiN_l_qAZ0Jo_-oI9!U+~=wfy}b_ohmoZH7gN+=QfB~}{sTF(wV;fc zxV8S&-RClx#rebO|5QTX4{AgVzOd4XT;y75+Z4lyZ{FqixzeC z1*bI&MsKC1kGmjPE`P97;~8!o)p5F7iLZYo#a|EEkB^tYop(GZ|6S&E5)%iuTzi=> zejRUgBWNWy_45j_&YDV4J)>b~Iap*5W+K+XbM28{)$A=-nFL%j52Ykj*R6s$F&URp zg?yGMrR|?<%+N$@2Ba{hnRM9xg1i0YN%Y6cN`<`Te;dYsZ<4(4uc<>{X^p*X1G(pi zpO+P?ZjX+JayU2lST7{tpGcjgKxx}-V-9Vkd*@Gu!i~p=g6s7&1RzK8HyJ|%x0Ei# zDmK5X)EKw*7C=n|B=?OEvgFE z<--sZ!)^FY6#=(Nj?6>P1g!d-INjUqGm{&!d;>@ne2F=>q$LZOwFxAwG=VBXFf*yH zSpt69B83=x`9}p_YRL7X61QVVq$^QE+Cf2^(XtIi_V;;hw=nUV^}ayyD!E=FMhh3I z6+6zZBOt7Q7na@Y)TKF{VCl)c3LHe5#K5xmZDj~}GxD*xXI-=OZ-~XmGkul5+1;%8 z{O1eXh1@z{#(Hg?F3O2BF9(N%E=$s%+TgIX_Yby@KrY1} z#@j|x-IQ4fAAQ)08t=K3*y%tHbmd7^_s8`#2AAG$ZX%j4bgfIZX{H^&0a=wh<7rzb z{UuqoOT=9#35_aliBYgi%s`&1sn^g!WUS<-TG;fY3ct8{ud)jF=OcIW5aNChHS%Id z(y>Ngb_HVKGcDfl`CZ33NbXt6Ruc>Pf4Z4kT2(FE1sJ5X{fyLDy!B*!84Ku?x6aTu zIJxzH*L?sByl`RZ*2_W78GlE$|9MnA{F=Hq@7A*(82g`BKX#D$GVI8Vh^E1Rg=6^n z2R%_eriASOUiifA+D}}cFd_#3Jsad13+XNvjBh+?7td4v95(BBpMRlWxQ-9vvrWq;41e{0ddC-vW3 z$KRXl|CR24%a6YW+TV)t-@^KDP5rm)_}iEL+b{g>T>t;jO8ZJ3+R~t;yGz({pn5{~WW3r_fiCy->rPKfS3cz{oOkMDG3XFX_n}1{vr5_gvS`0E{d? zAARRf8Gj#OWcPP%ivM6_mH;EOEN{K>=ei!!-D?o)gZ+LWSXZoFxx^FIhuc#E+@yRlSj&)uJ3~G;U zkTeE$T&&(C)+g&!RO|Bq|;c`uUPUV_G37wrw%WYW1Mz*6!AbF{)syc{91v5|+L32M^x7A^%Dz5Jd*QwSwio9g~up)J7 zt508VjCt#7ntt%oWa;}g1FF4ysrIwOty}9pN(1Hgjkgn}(QOJwhKA4XX!H>}3WS9V z&RIiZ;HPO*ANC=KTrU;mws)E+L=KAHHcR`pK{T`W@u7}f#EK{*`?2hLmPe6g=h~p& zWe39yAHfIn-j!X zta$i}S!b+(KZ=~Ru?(0_j$q?G5U9199 zqB(C=eJEkX(|{yggt^&a!Zm1z^#UnC#I$>6~)2CFd?x&7_nKZ*{9 z9K(4TGqj&BkF`=EL4!%<3(48Oo>>+@dM4-Uk|y4yykr2P6dd;As0Wa8n2S#CNDVps zsDGKuF7fEZ#nMksN}1&JSgC;hcTP+!4EQM8mu<=>b2*fIXZHu*#Lw(HGzQAh2uP(A z0~FEAZl|Ptm+e8oSAnnUad6$pROOll3}GPKNnKB#4vg59cfkmGdv6?VtP-@{ow}!+ zu@wf!X8~R67j3*>LfxXF)D;U4oWp4!aPZ?Gh7>uDI6B9o*$3(dN zF?m7p4gS2nRas#gwat8oQse1Ia!Ns4P26Jge?m~?c`W&Dy*k7XRn!}(ZLn25#(oVq zRz<90vd!3eUsN2x;VC6=Xy7vvw^N{ntFVw+4^bbOx;DLoHo~m7c2qq{`}ipUNM~L@ zE-TsD8w3GD1KfKQh{Vi>kKw>cG~`?%N)KXhzJq*QDoEHd2O+%5w5<-5)4FjWWw5VW z3fL@BQ)cY!>jQqBZSS0d$40gY_CY*2sS4+Qmj%XV8N;algYFULmdHS5vKTd~53AjD1z|9HS6@ zs;05|eB0z5Wp_6f^MaMuY}O%>h2d9&j&Vg`&3g3Il0h7iOZAq3`UYU0Kmkp}q(suO z|FV?ktga%tXD^lsL@DVguT(1l-$0PJ<9WDDddLx@!lYP~EhN7H)Cgb5!+VK0KO%&g zyTO_UIhRjo_<^x1Q{d78i>dI+Lt7|SFry=aIGGL97=;*TWRdo|804h`p_}7Zr+y~6 zpS)rRHo0U-N$z{{AWiYAw}eu{Fi6A&9GWJNHNf2i-eXM zCuIfgXj3tg-ey?nAn|8SwLkee3(bFVlN?%LY&5nsBtKTYtsE<$m7?EW=$7e;RJMsW z@b#Xqm9i2D^4}~`p}KC!>sC^~eX<KW+LyoSm|j&>UdYOn`KyH;26k?JpWu17-@F#S=cdut)L_>%&zTWvzki=_c1z z#i5vraFxg>)CKPvtHboE9W1uZ+j~+#?JH?h!qBbOe`nv34Jo&Gq?@S}-}2ep9375D zVgJLo!Ao^iJqDlF%bRgk>AJzsOdm8aZiQIk8xm!@lEp07#1z*Iw<*WUKZ%i;{I z6Gr6?PY=_iKN%sj%R?KDE)o`erZ)$DC=8p8(D_PAzQcwFCeD^XNOf!an1vzH0vC(* zm$6jWwUL5$nID52C7c7(Nh54?N?Ge1Y|*Jk$PupetafzcPSn}axo`)Dg(u%fpYM3( zJVXg%W&%BSU#N|4%5WgX6wc0shrd^uWc}U7hr9bfr5jb zYfs!c1_HFKq7@P3<6$*qf+?H1$4Q*O*w;*8nbxDd% za9`=?4>oRj`&f3KJ|~YZes_o2gpj-P1ysUC0p+DZHQgk1%iQ2LT=&Tf(J;oJl*S57 zM}YURUpFabC$E>@FUUfdUKNHhF1s00lB$2wQT4>bgey%&p>vw?mLAb3zxs3Rmq<&v zr=r2<$`jD@&6=a}7~L%(I~+H0$h)=j{mbDGdlF!*GJ;S^6pINAB)bQc$mF6`)Kp)o%?D@5a=rIB%d}}8!+HTki^sJvk&c3##XAONgqU_3mD-7K51cq+x;E^$>-eUtzD3{H zYq6_JzX{^SvsOjVE#h$IzM)~uc4KIHV?wOzMnR1~?X>bhfGepYnzMYs*acy9@1xwT zgPpYe!x|loGi4MeC;?&0aKX;h1o|~_wFh~&$r}%9MMt2^k3^Z|S$W=KeTQp3yguW) zWBFArb$w;7EQxE8^>F==+qEaxHR*S;A05?cbnDt>dx?-5TBnsotpTv-=Hmhl){fZ#Z~v4cMlVpMuO|%GMU3R*L3sc_oJOZ}`+>YYhGLSR~y z^Basb_Ex4$e&%8vBK?G7Qlv+_tuE%Skok>?g=A{eg8PajX|8ZT4(~Pg;LyU*{jqy? z2ZDG5()d#_J9pkJ&B^j?47e_GLkFz}*AggC*2Q*P&n6P(T~%u+8ZK_@xph(j(!)Cw zgJqOsoHgd+8EN7k)vw&{*F!7C?eC#h2Oho>ePUq+mwaN;!w*- zu}I$TM|BtYKdHk<>xzv=P8H<#X6lEvY8y_+5jwK-{D|}HB8%9TTE>tTKAP;~2_H`e zb2-BluUS-X&BPW{>JxY0!FUpKbnARENf>&2 z7!e-XGr4(U2qxu)p?IbEH(U3v(p9NQ?Ih7(y*ge?RWzFIORG+s8zl*3bo-1KlAhQBreZYk2Xj2r1@@6Cwgua2nyFM zFElX@2UMg5$PqeFC==)0RBU^#$Z7BF=_SJMK&PvA*c_YX^E5|&(}A>)@*N*D5*3kW zi&6806}869gj@B#0+$08{l+HD8w|KyO4kzT7lqDA7DRE%zOh>%G=&M+2itLfoG*$| z&Kw_|lX|w5V;`JzjWwJ+tyUiYVd=J7T4<4y`Fvp#F+4NwH;3t(X7KkAQtPyljO^H=94a8kL&sy_qil=5xZeItFzwlNuhD8xb7r{lYj2a~L{kt^2wB zMqy{MRd-^P!D)lzF-T-bA}YWO+ShrKtD74m zG$Mb1TQi_}r>HrVXc>o)>$ztvy}eo*h1smo|JcC9UC;FCQ9MGv`z)-o$1#*#at5=wD~4o3Ihx?oi|{2F`oj&AJ? z9tbPw$KrtRfUq*zi*W2~fs5|6+(Y5PaTex4YqPR6u~)F}47&tZVD3rVnf+Q_vak=4 z*^vmb9j@RHW3o)(M;O^aZ%pY~7=LXNp6-q#R_N}0PRm!hWzbZ2)FW-7?qmhL|IOiS z`l_ufi^c6#vP*5-bKzXs@vd*G=zJsyecsbCcyjacS+tQ|TN?~T`SKRMy#;45{^ynF z0~8|qjX+G%a2{OpIJXNpARI4)LMElV0uJ=SD$Lw%=f8{M40soHET(Xk3ahtMvp>f) zJrrNP%Pp>Xl-JCoef~@GIOM+{=7jHR({?7~T^V4ClaO@V3^>C0fuk zRt&fX%)YyvKPp^vGm|q@0}~H9mmruJS57LQx(zd_#;k(@FaY&1^23#mAO=R zauWqT6Cu?2HYffZX*Sc?7MpgnV{jiXe%l_-(;AQ}O(rcN8MjHcEl!uvQ=@?0E; zop(=CyxpYEj7em)SGz=}*0;(QyCcVB9M<2`=ljl;85QhqbQ|Xk@F$bcarK{bsBEx$ z35T&^wFZez(Mqk=XTEUVikGXKJRwFbJu#{DREt95XR4ESc?$^jFJ-C6%}L#wPvUCC zzxECRErISi-BsNP4wted=fu^G8d@@ki#zIMM#d8Uw(~tSXmwV4A1HOpPDDZ;r7j*N zA=5-T{)5DLYw z6NZQLg5!p7z>WFw!}CErSO(~v<};dAchZtIyS5TLB7_dLxH2 z8LM(BS=2xmXtkt#5??O@%|*h2JwZ7THZ(j8?3CzuiItQ^VINd0K`#Zq%8VOU4ZDXI zGm~5?8G7)X;r2{ry^J*AT<@3GFYmr(hZ|W%nE!5==KJQ{cRKo@_O7gIciTrD$)mK* zWnV>kqt&Xy*o`*TgJpcuDrwbD&G$~gP-5uLV!XG#t!Y+ zY&`3C>>aIrc+zD&ez>&DN)%Yp1w$othYqd zbKhqSJq`+3x2vIcSJs)w>9gsi$~qK$2!v$8&g)4kn<0#ab2>_W+B~siDp@K!UKi|i zQ)PEzSb~(Xg%ife;pWzV0(?2qyF#l(DR@YMe39u0r7_cjQ-wbnmJPZa3LY*F^)_7{ zahSzKKU|SRMa9EE_vzOvTZqfg>h`6z-j|o<$XBM4i8(3p4SfOKh^fJAqR31onjtHbwvdSLAHcW%a2~15^yW@H0 z%aCiEa{SV@dj>)52^mL6?+-V=*nlP$-Fs+!bY&N6qRFDUQYCZj0BK7h*1zgE@xL>) zcCL)fl1X6v*?T3`K3R%beNNx5W47-@hIvrl?(X#JqfGa263!<4p;{?QSUaRhJyx%U z*=HJP!zQVO3sMbs#NlAL-Ql^-&s8$wg>PK7`gxx$F_*y=v^9v=vn@3<5|`AK4n$SH z#eVgb%8(>{Q80e>rJ;GZSR4MvU>a*aU?g{B5PUHfQpO~&S64gS~I`*FIH zE!^kRz(R6pE()(Bs4zonhk4b9`e5wf0iV1m`VP^Y_0l^jfm`#5Up{~mB7*LsKF_wM zv6cBo@y4fxD-YT?Gl`YUoy}oSYLXM0CWn^s-BaD z^>Yd4j#i0&wWqe>vERo11LU;QvU0hquQw+i61B@SunEfiTv+W|QC@VVqsY)$PhC!z z#eBuQD_E#i_>2?rzK?te7h5*OCF0FMq_0NwprR_RM#R!>eXh|*%(g7|G1Y8g;tNkf zR;pq;T63{gN3m5{9${o)7n?+K&%0}=XJFnAr=jIvNFaJUoZ_LT%63B1qFJA&Tel;! zvqQI5&l20SQHtsBGc<2$N3R@%iRFBIm)8DN%=o#T{1=e-xBP9$>mP58+GSEFCVi zvQUxYOJR-Z>ysq(A~P4iixyS8hDGOwNW4ptZ2$0SSE^mu$+Q(>r-CwW(_yhdPt6g| zP2U$KNFxm1e9Xy__xJ%4Y|AeQiuYGnmP6Rs5(2){Fl6i5R@e>q5}P#TN2Qh78PBXo z3e~*MQ@OSIM%`rsg(imJ$4w^mo5w^TGr)(#VbrA{VC#T||{m0fr?kJ5N#lsp|iQ0Z{Y{AVe?J?G;#+lqbf`YYyQ zQ_=R{ldX5P%%?6Lw|G++u7_K2&q_IAV^u!+t=u04D<_L^oGYpLoy>-qfO_pJ1L zyzqZA%UA)FpI|ChW{2_fzWm;-v}x=aY0dtcl()^7#G<+F_w3i{={bto)|W2+n!?`K zICM;UnfDZ{o24bAdiNYX0@u0~VTs^H&XE1Xm|xs2$D+%#3#;>U&sDIEqA7IOrb(lB zphrwJhYSsihnppT&u*`I1cRek7qxy;x(9dHvz4#~3Ho{-Di-KDZPFon==!B}9;}&n zT-cZ|w!H5cy;D+#w0KeW((~CZ)A;VuLwV`i>&Z_M4(9*q*F|jh4~K69@46|M>ZLFx z4bEY6*ugV3q_wRN7bp!+bb<;=DON&3W|_uZLzPms6@*g>v4$ z!RR0OI1eVUq+Q+UtW;>9No>9Y^Mlc&69YBdqexStW65RMj_M!1@ttw^lb7sa6q1`Y y#~(4tod;R0mto?)BeN~PkTEb2rEDCeDv!<=-9Amvd~_f9Qop5hGyleeXa5gb6h-O) diff --git a/docs/source/meta/images/kubeflow_pipelines_dag.png b/docs/source/meta/images/kubeflow_pipelines_dag.png deleted file mode 100644 index 88d2dc572dfa36874c96ceb32980f942ecfb5610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60905 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%0A#R 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 O`Nitund+afBK`%URj~&E From 9a8bdf5ef7508b1dde13834d42b2ddb03955f5d0 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Fri, 5 May 2023 11:09:58 +0100 Subject: [PATCH 04/16] another chunk of changes to deployment docs Signed-off-by: Jo Stichbury --- docs/source/deployment/airflow_astronomer.md | 8 +++-- docs/source/deployment/amazon_sagemaker.md | 10 ++---- docs/source/deployment/argo.md | 4 ++- docs/source/deployment/aws_batch.md | 2 ++ docs/source/deployment/aws_step_functions.md | 13 ++++---- docs/source/deployment/azure.md | 7 ++-- docs/source/deployment/distributed.md | 6 ++-- docs/source/deployment/index.md | 35 ++++++++++---------- docs/source/deployment/kubeflow.md | 2 +- docs/source/deployment/prefect.md | 9 ++--- docs/source/deployment/single_machine.md | 14 +++++--- docs/source/deployment/vertexai.md | 2 +- 12 files changed, 58 insertions(+), 54 deletions(-) diff --git a/docs/source/deployment/airflow_astronomer.md b/docs/source/deployment/airflow_astronomer.md index 1fff6c1bb6..082ecfdc52 100644 --- a/docs/source/deployment/airflow_astronomer.md +++ b/docs/source/deployment/airflow_astronomer.md @@ -1,17 +1,19 @@ # Apache Airflow -Apache Airflow is a popular open-source workflow management platform. Workflows in Airflow are modelled and organised as [DAGs](https://en.wikipedia.org/wiki/Directed_acyclic_graph), making it a suitable engine to orchestrate and execute a pipeline authored with Kedro. +Apache Airflow is a popular open-source workflow management platform. It is a suitable engine to orchestrate and execute a pipeline authored with Kedro because workflows in Airflow are modelled and organised as [DAGs](https://en.wikipedia.org/wiki/Directed_acyclic_graph). ## How to run a Kedro pipeline on Apache Airflow using a Kubernetes cluster -The `kedro-airflow-k8s` plugin enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. +The `kedro-airflow-k8s` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. Consult the [GitHub repository for `kedro-airflow-k8s`](https://github.com/getindata/kedro-airflow-k8s) for further details, or take a look at the [documentation](https://kedro-airflow-k8s.readthedocs.io/). ## How to run a Kedro pipeline on Apache Airflow with Astronomer -The following tutorial explains how to deploy a Kedro project on [Apache Airflow](https://airflow.apache.org/) with [Astronomer](https://www.astronomer.io/). [Astronomer](https://docs.astronomer.io/astro/install-cli) is a managed Airflow platform which allows users to spin up and run an Airflow cluster easily in production. Additionally, it also provides a set of tools to help users get started with Airflow locally in the easiest way possible. +The following tutorial uses a different approach and shows how to deploy a Kedro project on [Apache Airflow](https://airflow.apache.org/) with [Astronomer](https://www.astronomer.io/). + +[Astronomer](https://docs.astronomer.io/astro/install-cli) is a managed Airflow platform which allows users to spin up and run an Airflow cluster easily in production. Additionally, it also provides a set of tools to help users get started with Airflow locally in the easiest way possible. The tutorial discusses how to run the [example Iris classification pipeline](../get_started/new_project.md#create-a-new-project-containing-example-code) on a local Airflow cluster with Astronomer. You may also consider using our [`astro-airflow-iris` starter](https://github.com/kedro-org/kedro-starters/tree/main/astro-airflow-iris) which provides a template containing the boilerplate code that the tutorial describes: diff --git a/docs/source/deployment/amazon_sagemaker.md b/docs/source/deployment/amazon_sagemaker.md index e6e80ea8a7..6dc8dba436 100644 --- a/docs/source/deployment/amazon_sagemaker.md +++ b/docs/source/deployment/amazon_sagemaker.md @@ -1,13 +1,9 @@ # Amazon SageMaker -## Why would you use Amazon SageMaker? +Amazon SageMaker provides the components used for machine learning in a single toolset that supports both classical machine learning libraries like [`Scikit-Learn`](https://scikit-learn.org/) or [`XGBoost`](https://xgboost.readthedocs.io/), and Deep Learning frameworks such as [`TensorFlow`](https://www.tensorflow.org/) or [`PyTorch`](https://pytorch.org/). -Machine learning development is a complex, expensive, and labour-intensive process with very specific requirements for the execution environment (ML tools and libraries, hardware requirements for CPU or GPU-optimised algorithms). - -Amazon SageMaker provides the components used for machine learning in a single toolset so models get to production faster with much less effort and at lower cost. Amazon SageMaker supports both classical machine learning libraries like [`Scikit-Learn`](https://scikit-learn.org/) or [`XGBoost`](https://xgboost.readthedocs.io/), and Deep Learning frameworks such as [`TensorFlow`](https://www.tensorflow.org/) or [`PyTorch`](https://pytorch.org/). - -Amazon SageMaker is a fully-managed service and its features are covered by the [official service documentation](https://docs.aws.amazon.com/sagemaker/index.html). +Amazon SageMaker is a fully-managed service and its features are covered by the [official service documentation](https://docs.aws.amazon.com/sagemaker/index.html). ## The `kedro-sagemaker` plugin -The `kedro-sagemaker` plugin enables you to run a Kedro pipeline on Amazon Sagemaker. Consult the [GitHub repository for `kedro-sagemaker`](https://github.com/getindata/kedro-sagemaker) for further details, or take a look at the [documentation](https://kedro-sagemaker.readthedocs.io/). \ No newline at end of file +The `kedro-sagemaker` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Amazon Sagemaker. Consult the [GitHub repository for `kedro-sagemaker`](https://github.com/getindata/kedro-sagemaker) for further details, or take a look at the [documentation](https://kedro-sagemaker.readthedocs.io/). diff --git a/docs/source/deployment/argo.md b/docs/source/deployment/argo.md index 0d9562e94a..36489dfb94 100644 --- a/docs/source/deployment/argo.md +++ b/docs/source/deployment/argo.md @@ -4,7 +4,8 @@ This page contains legacy documentation that has not been tested against recent Kedro releases. ``` -This page explains how to convert your Kedro pipeline to use [Argo Workflows](https://github.com/argoproj/argo-workflows), an open-source container-native workflow engine for orchestrating parallel jobs on [Kubernetes](https://kubernetes.io/). +
    This page explains how to convert your Kedro pipeline to use [Argo Workflows](https://github.com/argoproj/argo-workflows), an open-source container-native workflow engine for orchestrating parallel jobs on [Kubernetes](https://kubernetes.io/). + ## Why would you use Argo Workflows? @@ -244,3 +245,4 @@ As an alternative, you can use [Kedro-Argo plugin](https://pypi.org/project/kedr ```{warning} The plugin is not supported by the Kedro team and we can't guarantee its workability. ``` +
    diff --git a/docs/source/deployment/aws_batch.md b/docs/source/deployment/aws_batch.md index 3d1f8b93c9..02d3b76b2d 100644 --- a/docs/source/deployment/aws_batch.md +++ b/docs/source/deployment/aws_batch.md @@ -3,6 +3,7 @@ ``` {important} This page contains legacy documentation that has not been tested against recent Kedro releases. ``` +
    ## Why would you use AWS Batch? [AWS Batch](https://aws.amazon.com/batch/) is optimised for batch computing and applications that scale with the number of jobs running in parallel. It manages job execution and compute resources, and dynamically provisions the optimal quantity and type. AWS Batch can assist with planning, scheduling, and executing your batch computing workloads, using [Amazon EC2](https://aws.amazon.com/ec2/) On-Demand and [Spot Instances](https://aws.amazon.com/ec2/spot/), and it has native integration with [CloudWatch](https://aws.amazon.com/cloudwatch/) for log collection. @@ -358,3 +359,4 @@ kedro run --env=aws_batch --runner=kedro_tutorial.runner.AWSBatchRunner You should start seeing jobs appearing on your Jobs dashboard, under the `Runnable` tab - meaning they're ready to start as soon as the resources are provisioned in the compute environment. AWS Batch has native integration with CloudWatch, where you can check the logs for a particular job. You can either click on [the Batch job in the Jobs tab](https://console.aws.amazon.com/batch/home/jobs) and click `View logs` in the pop-up panel, or go to [CloudWatch dashboard](https://console.aws.amazon.com/cloudwatch), click `Log groups` in the side bar and find `/aws/batch/job`. +
    diff --git a/docs/source/deployment/aws_step_functions.md b/docs/source/deployment/aws_step_functions.md index f550458adf..c6f8d6974a 100644 --- a/docs/source/deployment/aws_step_functions.md +++ b/docs/source/deployment/aws_step_functions.md @@ -2,14 +2,17 @@ This tutorial explains how to deploy a Kedro project with [AWS Step Functions](https://aws.amazon.com/step-functions/?step-functions.sort-by=item.additionalFields.postDateTime&step-functions.sort-order=desc) in order to run a Kedro pipeline in production on AWS [Serverless Computing](https://aws.amazon.com/serverless/) platform. -## Why would you run a Kedro pipeline with AWS Step Functions +## Why would you run a Kedro pipeline with AWS Step Functions? -A major problem when data pipelines move to production is to build and maintain the underlying compute infrastructure, or [servers](https://en.wikipedia.org/wiki/Server_(computing)). However, [serverless computing](https://en.wikipedia.org/wiki/Serverless_computing) can address some aspects of this problem, whereby cloud providers allocate machine resources on demand, allowing data engineers and data scientists to focus on their business problems. [Azure Functions](https://docs.microsoft.com/en-us/azure/azure-functions/) and [AWS Lambda](https://aws.amazon.com/lambda/) are good examples of this solution, but others are available. +A major problem when data pipelines move to production is to build and maintain the underlying compute infrastructure, or [servers](https://en.wikipedia.org/wiki/Server_(computing)). [Serverless computing](https://en.wikipedia.org/wiki/Serverless_computing) hands the provisioning and management of distributed computing resources to cloud providers, enabling data engineers and data scientists to focus on their business problems. -In addition to on-demand compute, services like [AWS Step Functions](https://aws.amazon.com/step-functions/) offer a managed orchestration capability that makes it easy to sequence serverless functions and multiple cloud-native services into business-critical applications. From a Kedro perspective, this means the ability to run each node and retain the pipeline's correctness and reliability through a managed orchestrator without the concerns of managing underlying infrastructure. +[Azure Functions](https://docs.microsoft.com/en-us/azure/azure-functions/) and [AWS Lambda](https://aws.amazon.com/lambda/) are good examples of this solution, but others are available. Services like [AWS Step Functions](https://aws.amazon.com/step-functions/) offer a managed orchestration capability that makes it easy to sequence serverless functions and multiple cloud-native services into business-critical applications. + +From a Kedro perspective, this means the ability to run each node and retain the pipeline's correctness and reliability through a managed orchestrator without the concerns of managing underlying infrastructure. Another benefit of running a Kedro pipeline in a serverless computing platform is the ability to take advantage of other services from the same provider, such as the use of the [feature store for Amazon SageMaker](https://aws.amazon.com/sagemaker/feature-store/) to store features data. The following discusses how to run the Kedro pipeline from the [spaceflights tutorial](../tutorial/spaceflights_tutorial.md) on [AWS Step Functions](https://aws.amazon.com/step-functions/). + ## Strategy The general strategy to deploy a Kedro pipeline on AWS Step Functions is to run every Kedro node as an [AWS Lambda](https://aws.amazon.com/lambda/) function. The whole pipeline is converted into an [AWS Step Functions State Machine](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html) for orchestration. This approach mirrors the principles of [running Kedro in a distributed environment](distributed). @@ -384,7 +387,3 @@ If you go into the state machine and click on `Start Execution`, you will be abl ## Limitations Generally speaking, the [limitations on AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) have improved dramatically in recent years. However, it's still worth noting that each Lambda function has a 15-minute timeout, 10GB maximum memory limit and 10GB container image code package size limit. This means, for example, if you have a node that takes longer than 15 minutes to run, you should switch to some other AWS services, such as [AWS Batch](aws_batch) or [AWS ECS](https://aws.amazon.com/ecs/), to execute that node. - -## Final thought - -One major benefit of running a Kedro pipeline in a serverless computing platform is the ability to take advantage of other services from the same provider, such as the use of the AWS [feature store for SageMaker](https://aws.amazon.com/sagemaker/feature-store/) to store features data. diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md index f5e5efd702..91843e098b 100644 --- a/docs/source/deployment/azure.md +++ b/docs/source/deployment/azure.md @@ -1,10 +1,7 @@ # Azure ML pipelines -## Why would you use Azue ML Pipelines? +## `kedro-azureml` plugin - -## The `kedro-azureml` plugin - -For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) that enables you to run your code on Azure ML Pipelines in a fully managed fashion. +For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) from Get In Data | Part of Xebia that enables you to run your code on Azure ML Pipelines in a fully managed fashion. diff --git a/docs/source/deployment/distributed.md b/docs/source/deployment/distributed.md index 6aa9d4e915..2b005afe42 100644 --- a/docs/source/deployment/distributed.md +++ b/docs/source/deployment/distributed.md @@ -3,9 +3,9 @@ This topic explains how to deploy Kedro in a distributed system. Distributed applications refer to software that runs on multiple computers within a network at the same time and can be stored on servers or with cloud computing. Unlike traditional applications that run on a single machine, distributed applications run on multiple systems simultaneously for a single task or job. -You may select to use a distributed system if your Kedro pipelines are very compute-intensive because you can benefit from the cloud's elasticity and scalability to manage compute resources. +You may select to use a distributed system if your Kedro pipelines are very compute-intensive to benefit from the cloud's elasticity and scalability to manage compute resources. - As a distributed deployment strategy, we recommend the following series of steps: +As a distributed deployment strategy, we recommend the following series of steps: ## 1. Containerise the pipeline @@ -22,7 +22,7 @@ We then recommend the [`Kedro-Docker`](https://github.com/kedro-org/kedro-plugin After you’ve built the Docker image for your project locally, you would typically have to transfer the image to a container registry, such as DockerHub or AWS Elastic Container Registry, to be able to pull it on your remote servers. You can find instructions on how to do so [in our guide for single-machine deployment](./single_machine.md#how-to-use-container-registry). -## 2. Convert your Kedro pipeline into targeted platform's primitives +## 2. Convert your Kedro pipeline into targeted platform primitives A Kedro pipeline benefits from a structure that's normally easy to translate (at least semantically) into the language that different platforms would understand. A DAG of `nodes` can be converted into a series of tasks where each node maps to an individual task, whether it being a Kubeflow operator, an AWS Batch job, etc, and the dependencies are the same as those mapped in `Pipeline.node_dependencies`. diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index 2006e478cb..c68d2099b9 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -2,17 +2,30 @@ ## Deployment choices -Your choice of deployment method will depend on various factors. In this section we provide guides for different approaches. +In this section we provide guides for different deployment methods; your choice will depend on a range of factors. -If you decide to deploy your Kedro project on a single machine, you should consult our [guide to single-machine deployment](single_machine.md), and decide whether to: +If you decide to deploy your Kedro project onto a single machine, you should consult our [guide to single-machine deployment](single_machine.md), and decide whether to: * [use Docker for container-based deployment](./single_machine.md#container-based) * [use package-based deployment](./single_machine.md#package-based) * [use the CLI to clone and deploy your codebase to a server](./single_machine.md#cli-based) -If your pipeline is sizeable, you will want to run parts of it on separate machines, so will need to consult our [guide to distributed deployment](distributed.md). +If your pipeline is sizeable, you may want to run it across separate machines, so will need to consult our [guide to distributed deployment](distributed.md). -This section provides information for deployment to, or integration with, the following: +```{mermaid} +%%{init: { "flowchart": { "width":600 } } }%% + +flowchart TD + A{Can your Kedro pipeline run on a single machine?} -- YES --> B[Consult the single-machine deployment guide]; + B --> C{Do you have Docker on your machine?}; + C -- YES --> D[Use a container-based approach]; + C -- NO --> E[Use the CLI or package mode]; + A -- NO --> F[Consult the distributed deployment guide]; + F --> G["What distributed platform are you using?

    Check out the guides for:

  • Airflow
  • Amazon SageMaker
  • AWS Step functions
  • Azure
  • Dask
  • Databricks
  • Kubeflow Workflows
  • Prefect
  • Vertex AI
  • "]; + style G text-align:left +``` + +This following pages provide information for deployment to, or integration with, the following: * [Airflow](airflow_astronomer.md) * [Amazon SageMaker](amazon_sagemaker.md) @@ -31,23 +44,11 @@ We also have legacy documentation pages for the following deployment targets, bu * for [AWS Batch](aws_batch.md) ``` -```{mermaid} -flowchart TD - A{Can your Kedro pipeline run on a single machine?} -- YES --> B[Consult the single-machine deployment guide]; - B --> C{Do you have Docker on your machine?}; - C -- YES --> D[Use a container-based approach]; - C -- NO --> E[Use the CLI or package mode]; - A -- NO --> F[Consult the distributed deployment guide]; - F --> G["What distributed platform are you using?

    Check out the guides for:

  • Airflow
  • Amazon SageMaker
  • AWS Step functions
  • Azure
  • Dask
  • Databricks
  • Kubeflow Workflows
  • Prefect
  • Vertex AI
  • "]; - style G text-align:left - H["Does (part of) your pipeline integrate with Amazon SageMaker?

    Read the SageMaker integration guide"]; - style H text-align:left -``` -## Deployment guides ```{toctree} :maxdepth: 1 +:hidden: single_machine distributed diff --git a/docs/source/deployment/kubeflow.md b/docs/source/deployment/kubeflow.md index d65db10592..78e74454f0 100644 --- a/docs/source/deployment/kubeflow.md +++ b/docs/source/deployment/kubeflow.md @@ -12,4 +12,4 @@ Here are the main reasons to use Kubeflow Pipelines: ## The `kedro-kubeflow` plugin -The `kedro-kubeflow` plugin enables you to run a Kedro pipeline on Kubeflow Pipelines. Consult the [GitHub repository for `kedro-kubeflow`](https://github.com/getindata/kedro-kubeflow) for further details, or take a look at the [documentation](https://kedro-kubeflow.readthedocs.io/). +The `kedro-kubeflow` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Kubeflow Pipelines. Consult the [GitHub repository for `kedro-kubeflow`](https://github.com/getindata/kedro-kubeflow) for further details, or take a look at the [documentation](https://kedro-kubeflow.readthedocs.io/). diff --git a/docs/source/deployment/prefect.md b/docs/source/deployment/prefect.md index c32d661ea5..556097faa6 100644 --- a/docs/source/deployment/prefect.md +++ b/docs/source/deployment/prefect.md @@ -2,13 +2,14 @@ This page explains how to run your Kedro pipeline using [Prefect Core](https://www.prefect.io/products/core/), an open-source workflow management system. -In scope of this deployment, we are interested in [Prefect Server](https://docs.prefect.io/orchestration/server/overview.html#what-is-prefect-server), an open-source backend that makes it easy to monitor and execute your Prefect flows and automatically extends the Prefect Core. +In scope of this deployment, we are interested in [Prefect Server](https://docs.prefect.io/orchestration/server/overview.html#what-is-prefect-server), an open-source backend that makes it easy to monitor and execute your Prefect flows and automatically extends the Prefect Core. Prefect Server ships out-of-the-box with a fully featured user interface. ```{note} -Prefect Server ships out-of-the-box with a fully featured user interface. -``` -Please note that this deployment has been tested using kedro 0.17.6, 0.17.7 and 0.18.2 with prefect version 1.1.0. +This deployment has been tested using kedro 0.17.6, 0.17.7 and 0.18.2 with prefect version 1.1.0. + The current implementation has not been tested with prefect 2.0.0. +``` + ## Prerequisites To use Prefect Core and Prefect Server, ensure you have the following prerequisites in place: diff --git a/docs/source/deployment/single_machine.md b/docs/source/deployment/single_machine.md index 67f1bbcf28..f47226bb57 100644 --- a/docs/source/deployment/single_machine.md +++ b/docs/source/deployment/single_machine.md @@ -1,9 +1,9 @@ # Single-machine deployment This topic explains how to deploy Kedro on a production server. You can use three alternative methods to deploy your Kedro pipelines: -- Container-based using [Kedro-Docker](https://github.com/kedro-org/kedro-plugins/tree/main/kedro-docker) -- Package-based using [`kedro package`](../development/commands_reference.md#deploy-the-project) -- CLI-based using the [Kedro CLI](../development/commands_reference.md) +- [Container-based deployment](#container-based) +- [Package-based deployment](#package-based) +- [CLI-based deployment](#cli-based) ## Container-based @@ -39,7 +39,9 @@ Repositories on Docker Hub are set to public visibility by default. You can chan The procedure for using other container registries, like AWS ECR or GitLab Container Registry, will be almost identical to the steps described above. However, authentication will be different for each solution. ## Package-based -If you prefer not to use containerisation, you can instead package your Kedro project by running the following in your project’s root directory: +If you prefer not to use containerisation, you can instead package your Kedro project using [`kedro package`](../development/commands_reference.md#deploy-the-project). + +Run the following in your project’s root directory: ```console kedro package @@ -70,7 +72,9 @@ python -m project_name ``` ## CLI-based -If neither containers nor packages are viable options for your project, you can also run it on a production server by cloning your project codebase to the server. You will need to follow these steps to get your project running: +If neither containers nor packages are viable options for your project, you can also run it on a production server by cloning your project codebase to the server using the [Kedro CLI](../development/commands_reference.md). + +You will need to follow these steps to get your project running: ### Use GitHub workflow to copy your project This workflow posits that development of the Kedro project is done on a local environment under version control by Git. Commits are pushed to a remote server (e.g. GitHub, GitLab, Bitbucket, etc.). diff --git a/docs/source/deployment/vertexai.md b/docs/source/deployment/vertexai.md index 1b9934c1c3..00f84e7c33 100644 --- a/docs/source/deployment/vertexai.md +++ b/docs/source/deployment/vertexai.md @@ -3,4 +3,4 @@ Vertex AI pipelines is a Google Cloud Platform service that aims to deliver Kubeflow Pipelines functionality in a fully managed fashion. ## The `kedro-vertexai` plugin -The `kedro-vertexai` plugin enables you to run a Kedro pipeline on Vertex AI Pipelines. Consult the [GitHub repository for `kedro-vertexai`](https://github.com/getindata/kedro-vertexai) for further details, or take a look at the [documentation](https://kedro-vertexai.readthedocs.io/). +The `kedro-vertexai` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Vertex AI Pipelines. Consult the [GitHub repository for `kedro-vertexai`](https://github.com/getindata/kedro-vertexai) for further details, or take a look at the [documentation](https://kedro-vertexai.readthedocs.io/). From 2833fb65872c9df6e404e93bd64340f3698f2b98 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Fri, 5 May 2023 11:23:57 +0100 Subject: [PATCH 05/16] add pointer page for databricks Signed-off-by: Jo Stichbury --- docs/source/deployment/databricks.md | 4 ++++ docs/source/deployment/index.md | 1 + 2 files changed, 5 insertions(+) create mode 100644 docs/source/deployment/databricks.md diff --git a/docs/source/deployment/databricks.md b/docs/source/deployment/databricks.md new file mode 100644 index 0000000000..d619c3f44f --- /dev/null +++ b/docs/source/deployment/databricks.md @@ -0,0 +1,4 @@ +# Databricks + + +[Please visit the documentation section specifically covering integration of Kedro projects with Databricks](../integrations/index.md#databricks-integration). \ No newline at end of file diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index c68d2099b9..768c6b87ed 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -57,6 +57,7 @@ amazon_sagemaker aws_step_functions azure dask +databricks kubeflow prefect vertexai From 183b796199b0a2e1f347602f83c9fc374d5d6202 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Fri, 5 May 2023 11:30:35 +0100 Subject: [PATCH 06/16] fix linter error Signed-off-by: Jo Stichbury --- docs/source/deployment/databricks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/deployment/databricks.md b/docs/source/deployment/databricks.md index d619c3f44f..5f19f88b70 100644 --- a/docs/source/deployment/databricks.md +++ b/docs/source/deployment/databricks.md @@ -1,4 +1,4 @@ # Databricks -[Please visit the documentation section specifically covering integration of Kedro projects with Databricks](../integrations/index.md#databricks-integration). \ No newline at end of file +[Please visit the documentation section specifically covering integration of Kedro projects with Databricks](../integrations/index.md#databricks-integration). From f352a48b1e6f4e02c883958e867ccd5c83be721b Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Fri, 5 May 2023 11:44:22 +0100 Subject: [PATCH 07/16] remove unnecessary section head Signed-off-by: Jo Stichbury --- docs/source/deployment/index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index 768c6b87ed..626702c394 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -1,7 +1,5 @@ # Deployment -## Deployment choices - In this section we provide guides for different deployment methods; your choice will depend on a range of factors. If you decide to deploy your Kedro project onto a single machine, you should consult our [guide to single-machine deployment](single_machine.md), and decide whether to: From 5e3215aff5cfab2b6fd6830597e8b2171a614525 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Tue, 9 May 2023 10:09:08 +0100 Subject: [PATCH 08/16] Update docs/source/deployment/amazon_sagemaker.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Juan Luis Cano Rodríguez --- docs/source/deployment/amazon_sagemaker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/deployment/amazon_sagemaker.md b/docs/source/deployment/amazon_sagemaker.md index 6dc8dba436..1cb37631a7 100644 --- a/docs/source/deployment/amazon_sagemaker.md +++ b/docs/source/deployment/amazon_sagemaker.md @@ -1,6 +1,6 @@ # Amazon SageMaker -Amazon SageMaker provides the components used for machine learning in a single toolset that supports both classical machine learning libraries like [`Scikit-Learn`](https://scikit-learn.org/) or [`XGBoost`](https://xgboost.readthedocs.io/), and Deep Learning frameworks such as [`TensorFlow`](https://www.tensorflow.org/) or [`PyTorch`](https://pytorch.org/). +Amazon SageMaker provides the components used for machine learning in a single toolset that supports both classical machine learning libraries like [`scikit-learn`](https://scikit-learn.org/) or [`XGBoost`](https://xgboost.readthedocs.io/), and Deep Learning frameworks such as [`TensorFlow`](https://www.tensorflow.org/) or [`PyTorch`](https://pytorch.org/). Amazon SageMaker is a fully-managed service and its features are covered by the [official service documentation](https://docs.aws.amazon.com/sagemaker/index.html). From c9456fece794750ae21afa7cbb4305dbb5c3aa35 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Tue, 9 May 2023 10:11:09 +0100 Subject: [PATCH 09/16] Update docs/source/deployment/azure.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Juan Luis Cano Rodríguez --- docs/source/deployment/azure.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md index 91843e098b..36c31e2832 100644 --- a/docs/source/deployment/azure.md +++ b/docs/source/deployment/azure.md @@ -1,7 +1,5 @@ # Azure ML pipelines - - ## `kedro-azureml` plugin For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) from Get In Data | Part of Xebia that enables you to run your code on Azure ML Pipelines in a fully managed fashion. From 8b978737a15e200436ae78abc3b34182433e6d73 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Tue, 9 May 2023 10:14:19 +0100 Subject: [PATCH 10/16] Change subsection levels Signed-off-by: Jo Stichbury --- docs/source/deployment/airflow_astronomer.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/source/deployment/airflow_astronomer.md b/docs/source/deployment/airflow_astronomer.md index 082ecfdc52..0cd300e297 100644 --- a/docs/source/deployment/airflow_astronomer.md +++ b/docs/source/deployment/airflow_astronomer.md @@ -34,7 +34,7 @@ To follow this tutorial, ensure you have the following: * The [Astro CLI installed](https://docs.astronomer.io/astro/install-cli) * `kedro>=0.17` installed -## Tutorial project setup +### Tutorial project setup 1. [Initialise an Airflow project with Astro](https://docs.astronomer.io/astro/create-project). Let's call it `kedro-airflow-iris` @@ -86,9 +86,9 @@ To follow this tutorial, ensure you have the following: 5. Run `pip install -r src/requirements.txt` to install all dependencies. -## Deployment process +### Deployment process -### Step 1. Create new configuration environment to prepare a compatible `DataCatalog` +#### Step 1. Create new configuration environment to prepare a compatible `DataCatalog` * Create a `conf/airflow` directory in your Kedro project * Create a `catalog.yml` file in this directory with the following content @@ -119,7 +119,7 @@ example_predictions: This ensures that all datasets are persisted so all Airflow tasks can read them without the need to share memory. In the example here we assume that all Airflow tasks share one disk, but for distributed environment you would need to use non-local filepaths. -### Step 2. Package the Kedro pipeline as an Astronomer-compliant Docker image +#### Step 2. Package the Kedro pipeline as an Astronomer-compliant Docker image * **Step 2.1**: Package the Kedro pipeline as a Python package so you can install it into the container later on: @@ -143,13 +143,13 @@ FROM quay.io/astronomer/ap-airflow:2.0.0-buster-onbuild RUN pip install --user dist/new_kedro_project-0.1-py3-none-any.whl ``` -### Step 3. Convert the Kedro pipeline into an Airflow DAG with `kedro airflow` +#### Step 3. Convert the Kedro pipeline into an Airflow DAG with `kedro airflow` ```shell kedro airflow create --target-dir=dags/ --env=airflow ``` -### Step 4. Launch the local Airflow cluster with Astronomer +#### Step 4. Launch the local Airflow cluster with Astronomer ```shell astro dev start From 4aff0ddc6d587ea31bc3a9a2396eb0708be55915 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Tue, 9 May 2023 12:02:14 +0100 Subject: [PATCH 11/16] Revise name of GetInData Signed-off-by: Jo Stichbury --- docs/source/deployment/airflow_astronomer.md | 2 +- docs/source/deployment/amazon_sagemaker.md | 2 +- docs/source/deployment/azure.md | 2 +- docs/source/deployment/kubeflow.md | 2 +- docs/source/deployment/vertexai.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/source/deployment/airflow_astronomer.md b/docs/source/deployment/airflow_astronomer.md index 0cd300e297..79024021b5 100644 --- a/docs/source/deployment/airflow_astronomer.md +++ b/docs/source/deployment/airflow_astronomer.md @@ -4,7 +4,7 @@ Apache Airflow is a popular open-source workflow management platform. It is a su ## How to run a Kedro pipeline on Apache Airflow using a Kubernetes cluster -The `kedro-airflow-k8s` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. +The `kedro-airflow-k8s` plugin from GetInData | Part of Xebia enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. Consult the [GitHub repository for `kedro-airflow-k8s`](https://github.com/getindata/kedro-airflow-k8s) for further details, or take a look at the [documentation](https://kedro-airflow-k8s.readthedocs.io/). diff --git a/docs/source/deployment/amazon_sagemaker.md b/docs/source/deployment/amazon_sagemaker.md index 1cb37631a7..c6134244d7 100644 --- a/docs/source/deployment/amazon_sagemaker.md +++ b/docs/source/deployment/amazon_sagemaker.md @@ -6,4 +6,4 @@ Amazon SageMaker is a fully-managed service and its features are covered by the ## The `kedro-sagemaker` plugin -The `kedro-sagemaker` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Amazon Sagemaker. Consult the [GitHub repository for `kedro-sagemaker`](https://github.com/getindata/kedro-sagemaker) for further details, or take a look at the [documentation](https://kedro-sagemaker.readthedocs.io/). +The `kedro-sagemaker` plugin from GetInData | Part of Xebia enables you to run a Kedro pipeline on Amazon Sagemaker. Consult the [GitHub repository for `kedro-sagemaker`](https://github.com/getindata/kedro-sagemaker) for further details, or take a look at the [documentation](https://kedro-sagemaker.readthedocs.io/). diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md index 36c31e2832..cd5f452e7a 100644 --- a/docs/source/deployment/azure.md +++ b/docs/source/deployment/azure.md @@ -2,4 +2,4 @@ ## `kedro-azureml` plugin -For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) from Get In Data | Part of Xebia that enables you to run your code on Azure ML Pipelines in a fully managed fashion. +For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) from GetInData | Part of Xebia that enables you to run your code on Azure ML Pipelines in a fully managed fashion. diff --git a/docs/source/deployment/kubeflow.md b/docs/source/deployment/kubeflow.md index 78e74454f0..44c426597e 100644 --- a/docs/source/deployment/kubeflow.md +++ b/docs/source/deployment/kubeflow.md @@ -12,4 +12,4 @@ Here are the main reasons to use Kubeflow Pipelines: ## The `kedro-kubeflow` plugin -The `kedro-kubeflow` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Kubeflow Pipelines. Consult the [GitHub repository for `kedro-kubeflow`](https://github.com/getindata/kedro-kubeflow) for further details, or take a look at the [documentation](https://kedro-kubeflow.readthedocs.io/). +The `kedro-kubeflow` plugin from GetInData | Part of Xebia enables you to run a Kedro pipeline on Kubeflow Pipelines. Consult the [GitHub repository for `kedro-kubeflow`](https://github.com/getindata/kedro-kubeflow) for further details, or take a look at the [documentation](https://kedro-kubeflow.readthedocs.io/). diff --git a/docs/source/deployment/vertexai.md b/docs/source/deployment/vertexai.md index 00f84e7c33..97e2f7bfda 100644 --- a/docs/source/deployment/vertexai.md +++ b/docs/source/deployment/vertexai.md @@ -3,4 +3,4 @@ Vertex AI pipelines is a Google Cloud Platform service that aims to deliver Kubeflow Pipelines functionality in a fully managed fashion. ## The `kedro-vertexai` plugin -The `kedro-vertexai` plugin from Get In Data | Part of Xebia enables you to run a Kedro pipeline on Vertex AI Pipelines. Consult the [GitHub repository for `kedro-vertexai`](https://github.com/getindata/kedro-vertexai) for further details, or take a look at the [documentation](https://kedro-vertexai.readthedocs.io/). +The `kedro-vertexai` plugin from GetInData | Part of Xebia enables you to run a Kedro pipeline on Vertex AI Pipelines. Consult the [GitHub repository for `kedro-vertexai`](https://github.com/getindata/kedro-vertexai) for further details, or take a look at the [documentation](https://kedro-vertexai.readthedocs.io/). From a0ece561229ff4d85f3be0b9b18b79a171c531e4 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Wed, 10 May 2023 10:12:49 +0100 Subject: [PATCH 12/16] Add message about version support Signed-off-by: Jo Stichbury --- docs/source/deployment/airflow_astronomer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/deployment/airflow_astronomer.md b/docs/source/deployment/airflow_astronomer.md index 79024021b5..b3e4d7385d 100644 --- a/docs/source/deployment/airflow_astronomer.md +++ b/docs/source/deployment/airflow_astronomer.md @@ -4,7 +4,7 @@ Apache Airflow is a popular open-source workflow management platform. It is a su ## How to run a Kedro pipeline on Apache Airflow using a Kubernetes cluster -The `kedro-airflow-k8s` plugin from GetInData | Part of Xebia enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. +The `kedro-airflow-k8s` plugin from GetInData | Part of Xebia enables you to run a Kedro pipeline on Airflow with a Kubernetes cluster. The plugin can be used together with `kedro-docker` to prepare a docker image for pipeline execution. At present, the plugin is available for versions of Kedro < 0.18 only. Consult the [GitHub repository for `kedro-airflow-k8s`](https://github.com/getindata/kedro-airflow-k8s) for further details, or take a look at the [documentation](https://kedro-airflow-k8s.readthedocs.io/). From a3ba5759e1790af6527c0283c929cbea757acf65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Wed, 10 May 2023 12:39:22 +0200 Subject: [PATCH 13/16] Make deployment Mermaid diagram smaller MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- docs/source/_static/css/theme-overrides.css | 4 ++++ docs/source/deployment/index.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/source/_static/css/theme-overrides.css b/docs/source/_static/css/theme-overrides.css index 34ed878cd1..6ccf29ee68 100644 --- a/docs/source/_static/css/theme-overrides.css +++ b/docs/source/_static/css/theme-overrides.css @@ -15,3 +15,7 @@ html.writer-html5 .rst-content .wy-table-responsive table.docutils td > p { font-size: 1em; line-height: 1em; } + +img[alt^="mermaid-"] { + max-width: 600px; +} diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index 626702c394..daaf643046 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -11,7 +11,7 @@ If you decide to deploy your Kedro project onto a single machine, you should con If your pipeline is sizeable, you may want to run it across separate machines, so will need to consult our [guide to distributed deployment](distributed.md). ```{mermaid} -%%{init: { "flowchart": { "width":600 } } }%% +:alt: mermaid-Decision making diagram for deploying Kedro projects flowchart TD A{Can your Kedro pipeline run on a single machine?} -- YES --> B[Consult the single-machine deployment guide]; From 033f5130643d63c7a2038d0eeafd1ebb2a9f6dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Wed, 10 May 2023 12:39:45 +0200 Subject: [PATCH 14/16] Make "important" admonitions use better color MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- docs/source/_static/css/theme-overrides.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/source/_static/css/theme-overrides.css b/docs/source/_static/css/theme-overrides.css index 6ccf29ee68..8ae384dd9a 100644 --- a/docs/source/_static/css/theme-overrides.css +++ b/docs/source/_static/css/theme-overrides.css @@ -19,3 +19,10 @@ html.writer-html5 .rst-content .wy-table-responsive table.docutils td > p { img[alt^="mermaid-"] { max-width: 600px; } + +.rst-content .important { + background: #ffedcc; +} +.rst-content .important .admonition-title { + background-color: #f0b37e; +} From cabc538a7dacd036a5f8b8311f1766849215b406 Mon Sep 17 00:00:00 2001 From: Jo Stichbury Date: Wed, 10 May 2023 17:39:12 +0100 Subject: [PATCH 15/16] Update links in one section for some unknown reason Signed-off-by: Jo Stichbury --- docs/source/deployment/argo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/deployment/argo.md b/docs/source/deployment/argo.md index 36489dfb94..d4d80998a8 100644 --- a/docs/source/deployment/argo.md +++ b/docs/source/deployment/argo.md @@ -4,7 +4,7 @@ This page contains legacy documentation that has not been tested against recent Kedro releases. ``` -
    This page explains how to convert your Kedro pipeline to use [Argo Workflows](https://github.com/argoproj/argo-workflows), an open-source container-native workflow engine for orchestrating parallel jobs on [Kubernetes](https://kubernetes.io/). +
    This page explains how to convert your Kedro pipeline to use Argo Workflows, an open-source container-native workflow engine for orchestrating parallel jobs on Kubernetes. ## Why would you use Argo Workflows? From 136dd137c77c2d315abaa5b988c9cb9261bfa82e Mon Sep 17 00:00:00 2001 From: marrrcin Date: Thu, 11 May 2023 08:51:00 +0000 Subject: [PATCH 16/16] Update kedro-azureml section Signed-off-by: marrrcin --- docs/source/deployment/azure.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/source/deployment/azure.md b/docs/source/deployment/azure.md index cd5f452e7a..efe0d2c2c1 100644 --- a/docs/source/deployment/azure.md +++ b/docs/source/deployment/azure.md @@ -2,4 +2,7 @@ ## `kedro-azureml` plugin -For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/0.3.6/) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) from GetInData | Part of Xebia that enables you to run your code on Azure ML Pipelines in a fully managed fashion. +For deployment to Azure ML pipelines, you should [consult the documentation](https://kedro-azureml.readthedocs.io/en/stable/source/03_quickstart.html) for the [`kedro-azureml` plugin](https://github.com/getindata/kedro-azureml) from GetInData | Part of Xebia that enables you to run your code on Azure ML Pipelines in a fully managed fashion. + +The plugin supports both: docker-based workflows and code-upload workflows. +Besides that, kedro-azureml also supports distributed training in PyTorch/TensorFlow/MPI and works well with Azure ML native MLflow integration.