From 36e20cdfc8d668b56ab60e273a7327ca41c57a04 Mon Sep 17 00:00:00 2001 From: JieguangZhou Date: Tue, 21 Jun 2022 13:13:46 +0800 Subject: [PATCH] [Feature][Task Plugin] Add DVC task plugin for MLops scenario (#10372) (#10407) --- docs/docs/en/guide/task/dvc.md | 125 +++++++++++++ docs/docs/zh/guide/task/dvc.md | 110 +++++++++++ docs/img/tasks/demo/dvc_download.png | Bin 0 -> 24920 bytes docs/img/tasks/demo/dvc_env_config.png | Bin 0 -> 122301 bytes docs/img/tasks/demo/dvc_env_name.png | Bin 0 -> 49877 bytes docs/img/tasks/demo/dvc_init.png | Bin 0 -> 16107 bytes docs/img/tasks/demo/dvc_upload.png | Bin 0 -> 28869 bytes docs/img/tasks/icons/dvc.png | Bin 0 -> 7649 bytes .../dolphinscheduler-task-all/pom.xml | 6 + .../dolphinscheduler-task-dvc/pom.xml | 46 +++++ .../plugin/task/dvc/DvcConstants.java | 56 ++++++ .../plugin/task/dvc/DvcParameters.java | 105 +++++++++++ .../plugin/task/dvc/DvcTask.java | 163 +++++++++++++++++ .../plugin/task/dvc/DvcTaskChannel.java | 51 ++++++ .../task/dvc/DvcTaskChannelFactory.java | 58 ++++++ .../plugin/task/dvc/TaskTypeEnum.java | 30 +++ .../plugin/task/dvc/DvcTaskTest.java | 153 ++++++++++++++++ dolphinscheduler-task-plugin/pom.xml | 3 +- .../public/images/task-icons/dvc.png | Bin 0 -> 7649 bytes .../public/images/task-icons/dvc_hover.png | Bin 0 -> 17007 bytes .../src/locales/en_US/project.ts | 10 + .../src/locales/zh_CN/project.ts | 10 + .../task/components/node/fields/index.ts | 1 + .../task/components/node/fields/use-dvc.ts | 171 ++++++++++++++++++ .../task/components/node/format-data.ts | 11 ++ .../task/components/node/tasks/index.ts | 4 +- .../task/components/node/tasks/use-dvc.ts | 82 +++++++++ .../projects/task/components/node/types.ts | 7 + .../projects/task/constants/task-type.ts | 5 + .../workflow/components/dag/dag.module.scss | 6 + 30 files changed, 1211 insertions(+), 2 deletions(-) create mode 100644 docs/docs/en/guide/task/dvc.md create mode 100644 docs/docs/zh/guide/task/dvc.md create mode 100644 docs/img/tasks/demo/dvc_download.png create mode 100644 docs/img/tasks/demo/dvc_env_config.png create mode 100644 docs/img/tasks/demo/dvc_env_name.png create mode 100644 docs/img/tasks/demo/dvc_init.png create mode 100644 docs/img/tasks/demo/dvc_upload.png create mode 100644 docs/img/tasks/icons/dvc.png create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/pom.xml create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcConstants.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcParameters.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTask.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannel.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannelFactory.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/TaskTypeEnum.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/test/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskTest.java create mode 100644 dolphinscheduler-ui/public/images/task-icons/dvc.png create mode 100644 dolphinscheduler-ui/public/images/task-icons/dvc_hover.png create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-dvc.ts create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-dvc.ts diff --git a/docs/docs/en/guide/task/dvc.md b/docs/docs/en/guide/task/dvc.md new file mode 100644 index 0000000000..102295eb40 --- /dev/null +++ b/docs/docs/en/guide/task/dvc.md @@ -0,0 +1,125 @@ +# DVC Node + +## Overview + +[DVC (Data Version Control)](https://dvc.org) is an excellent open-source version control system for machine learning projects. + +The DVC plugin is used to use the data version management function of DVC on DolphinScheduler, helping users to carry out data version management easily. + +The plugin provides the following three functions: + +- Init DVC: Initialize the Git repository as a DVC repository and bind the address where the data is stored to store the actual data. +- Upload: Add or update specific data to the repository and record the version tag. +- Download: Download a specific version of data from the repository. + +## Create Task + +- Click `Project -> Management-Project -> Name-Workflow Definition`, and click the "Create Workflow" button to enter the + DAG editing page. +- Drag from the toolbar task node to canvas. + +## Task Example + +First, introduce some general parameters of DolphinScheduler: + +- **Node name**: The node name in a workflow definition is unique. +- **Run flag**: Identifies whether this node schedules normally, if it does not need to execute, select + the `prohibition execution`. +- **Descriptive information**: Describe the function of the node. +- **Task priority**: When the number of worker threads is insufficient, execute in the order of priority from high + to low, and tasks with the same priority will execute in a first-in first-out order. +- **Worker grouping**: Assign tasks to the machines of the worker group to execute. If `Default` is selected, + randomly select a worker machine for execution. +- **Environment Name**: Configure the environment name in which run the script. +- **Times of failed retry attempts**: The number of times the task failed to resubmit. +- **Failed retry interval**: The time interval (unit minute) for resubmitting the task after a failed task. +- **Delayed execution time**: The time (unit minute) that a task delays in execution. +- **Timeout alarm**: Check the timeout alarm and timeout failure. When the task runs exceed the "timeout", an alarm + email will send and the task execution will fail. +- **Predecessor task**: Selecting a predecessor task for the current task, will set the selected predecessor task as + upstream of the current task. + +Here are some specific parameters for the DVC plugin: + +- **DVC Task Type** :Upload, Download or Init DVC。 +- **DVC Repository** :The DVC repository address associated with the task execution. + +### Init DVC + +Initialize the Git repository as a DVC repository and add a new data remote to save data. + +After the project is initialized, it is still a Git repository, but with DVC features added. + +The data is not actually stored in a Git repository, but somewhere else, and DVC keeps track of the version and address of the data and handles this relationship. + +![dvc_init](../../../../img/tasks/demo/dvc_init.png) + +**Task Parameter** + +- **Remote Store Url** :The actual data is stored at the address. You can learn about the supported storage types from the [DVC supported storage types](https://dvc.org/doc/command-reference/remote/add#supported-storage-types) . + +The example above shows that: +Initialize repository `git@github.com:/dvc-data-repository-example.git` as a DVC project and bind the remote storage address to `~/dvc` + +### Upload + +Used to upload and update data and record version numbers. + +![dvc_upload](../../../../img/tasks/demo/dvc_upload.png) + +**Task Parameter** + +- **Data Path in DVC Repository** :The data will be uploaded to this path in the repository. +- **Data Path In Worker** :Data path to be uploaded. +- **Version** :After the data is uploaded, the version tag for the data will be saved in `git tag`. +- **Version Message** :Version Message. + +The example above shows that: + +Upload data `/home/data/iris` to the root directory of repository `git@github.com:/dvc-data-repository-example.git`. The file or folder of data is named `iris`. + +Then run `git tag "iris_1.0" -m "init iris data"`. Record the version tag `iris_1.0` and the version message `inir iris data`. + +### Download + +Used to download data for a specific version. + +![dvc_download](../../../../img/tasks/demo/dvc_download.png) + +**Task Parameter** + +- **Data Path in DVC Repository** :The path to the data to download in the DVC repository. +- **Data Path In Worker** :Path for saving data after the file is downloaded to the local. +- **Version** :The version of the data to download. + +The example above shows that: + +Download the data for iris data at version `iris_1.0` in repository `git@github.com:/dvc-data-repository-example.git` to the `~/dvc_test/iris` + +## Environment to prepare + +### Install DVC + +Make sure you have installed DVC, if not, you can run `pip install dvc` command to install it. + +Get the 'dvc' path and configure the environment variables. + +The conda environment is used as an example: + +Install python PIP on Conda and configure conda's environment variables so that the component can correctly find the 'DVC' command + +```shell +which dvc +# >> ~/anaconda3/bin/dvc +``` + +You need to enter the admin account to configure a conda environment variable(Please +install [anaconda](https://docs.continuum.io/anaconda/install/) +or [miniconda](https://docs.conda.io/en/latest/miniconda.html#installing ) in advance). + +![dvc_env_config](../../../../img/tasks/demo/dvc_env_config.png) + +Note During the configuration task, select the conda environment created above. Otherwise, the program cannot find the +Conda environment. + +![dvc_env_name](../../../../img/tasks/demo/dvc_env_name.png) \ No newline at end of file diff --git a/docs/docs/zh/guide/task/dvc.md b/docs/docs/zh/guide/task/dvc.md new file mode 100644 index 0000000000..3f9ff91907 --- /dev/null +++ b/docs/docs/zh/guide/task/dvc.md @@ -0,0 +1,110 @@ +# DVC节点 + +## 综述 + +[DVC(Data Version Control)](https://dvc.org) 是一个MLops领域一个优秀的开机器学习版本管理系统。 + +DVC 组件用于在DS上使用DVC的数据版本管理功能,帮助用户简易地进行数据的版本管理。组件提供如下三个功能: + +- Init DVC: 将git仓库初始化为DVC仓库,并绑定存储数据的地址用于存储实际的数据。 +- Upload: 将特定数据添加或者更新到仓库中,并记录版本号。 +- Download: 从仓库中下载特定版本的数据。 + +## 创建任务 + +- 点击项目管理-项目名称-工作流定义,点击“创建工作流”按钮,进入 DAG 编辑页面; +- 拖动工具栏的 任务节点到画板中。 + +## 任务样例 + +首先介绍一些DS通用参数 + +- **节点名称** :设置任务的名称。一个工作流定义中的节点名称是唯一的。 +- **运行标志** :标识这个节点是否能正常调度,如果不需要执行,可以打开禁止执行开关。 +- **描述** :描述该节点的功能。 +- **任务优先级** :worker 线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。 +- **Worker 分组** :任务分配给 worker 组的机器执行,选择 Default,会随机选择一台 worker 机执行。 +- **环境名称** :配置运行脚本的环境。 +- **失败重试次数** :任务失败重新提交的次数。 +- **失败重试间隔** :任务失败重新提交任务的时间间隔,以分钟为单位。 +- **延迟执行时间** :任务延迟执行的时间,以分钟为单位。 +- **超时告警** :勾选超时告警、超时失败,当任务超过"超时时长"后,会发送告警邮件并且任务执行失败。 +- **前置任务** :选择当前任务的前置任务,会将被选择的前置任务设置为当前任务的上游。 + +以下是一些DVC 组件的常用参数 + +- **DVC任务类型** :可以选择 Upload、Download、Init DVC。 +- **DVC仓库** :任务执行时关联的仓库地址。 + +### Init DVC + + +将git仓库初始化为DVC仓库, 并绑定数据储存的地方。 + +项目初始化后,仍然为git仓库,不过添加了DVC的特性。 + +实际上数据并不保存在git仓库,而是存储在另外的地方,DVC会跟踪数据的版本和地址,并处理好这个关系。 + +![dvc_init](../../../../img/tasks/demo/dvc_init.png) + +**任务参数** + +- **数据存储地址** + :实际的数据保存的地址,支持的类型可见 [DVC supported storage types](https://dvc.org/doc/command-reference/remote/add#supported-storage-types) + 。 + +如上述例子表示: 将仓库 `git@github.com:/dvc-data-repository-example.git` 初始化为DVC项目,并绑定远程储存地址为 `~/dvc` + +### Upload + +用于上传和更新数据,并记录版本号。 + +![dvc_upload](../../../../img/tasks/demo/dvc_upload.png) + +**任务参数** + +- **DVC仓库中的数据路径** :上传的数据保存到仓库的地址。 +- **Worker中数据路径** :需要上传的数据的地址。 +- **数据版本** :上传数据后,为该版本数据打上的版本号,会保存到 git tag 里面。 +- **数据版本信息** :本次上传需要备注的信息。 + +如上述例子表示: 将数据 `/home/data/iris` 上传到仓库 `git@github.com:/dvc-data-repository-example.git` +的根目录下,数据的文件/文件夹名字为`iris`。 然后执行 `git tag "iris_1.0" -m "init iris data"`。 记录版本号 `iris_1.0`和 版本信息 'inir iris data' + +### Download + +用于下载特定版本的数据。 + +![dvc_download](../../../../img/tasks/demo/dvc_download.png) + +**任务参数** + +- **DVC仓库中的数据路径** :需要下载数据在仓库中的路径。 +- **Worker中数据路径** :数据下载到本地后的保存地址。 +- **数据版本** :需要下载的数据的版本。 + +如上述例子表示: 将仓库 `git@github.com:xxxx/dvc-data-repository-example.git` 版本为 `iris_1.0` 的 iris 的数据下载到 `~/dvc_test/iris` + +## 环境准备 + +### dvc 安装 + +确保你已经安装DVC可以使用`pip install dvc`进行安装。 + +获取dvc地址, 并配置环境变量 + +下面以 conda 上的 python pip 安装为例子,配置 conda 的环境变量,使得组件能正确找到`dvc`命令 + +```shell +which dvc +# >> ~/anaconda3/bin/dvc +``` + +你需要进入admin账户配置一个conda环境变量(请提前[安装anaconda](https://docs.continuum.io/anaconda/install/) +或者[安装miniconda](https://docs.conda.io/en/latest/miniconda.html#installing) )。 + +![dvc_env_config](../../../../img/tasks/demo/dvc_env_config.png) + +后续注意配置任务时,环境选择上面创建的conda环境,否则程序会找不到conda环境。 + +![dvc_env_name](../../../../img/tasks/demo/dvc_env_name.png) diff --git a/docs/img/tasks/demo/dvc_download.png b/docs/img/tasks/demo/dvc_download.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ed9edd61b92306ca364f182db03198f2d093d3 GIT binary patch literal 24920 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 literal 0 HcmV?d00001 diff --git a/docs/img/tasks/demo/dvc_env_config.png b/docs/img/tasks/demo/dvc_env_config.png new file mode 100644 index 0000000000000000000000000000000000000000..3bbfe44ceceb3e639fae2bdc884e7c4ef2a51272 GIT binary patch literal 122301 zcmYhibzIZk`#-LNgv1D?VT6E4hvXO_eNzf5C@m!tquEFa=@3CeVk#v{cZ`N1ozgjC zG>jaK!Eg8b{yZMP@BVx3an5<2b6w~4JlFNSo+tX5z9!W@mV38u-J;UgQZu}D>n{A( zEg}Xo62d<@tXR=ow?5p`R#SNawb*SYP3N6?T`<#BRW5tmF!Q}P?4bF)<#!|Ee9?b= zz1hHsFVKE{P-secC7hXwge0Aryn;yKZMj0*hwyY#{?xzk@*nVUDUY?H6_e1fY$pbP z`B#liF%BPtGh|R*(eypn=vXCv#Mzq!Q*ZCnLs9?-TQK(Ud%mFnS2)d6GOqB=!+BrO zBY~>2xJ~Ct^pmQV9}8pnC%7*}xRR%yZwQUJ1xG?g!$vkOEU>m4^XF-_CXp(l!@X{8pYOpWJD$wquOn7v9Mfjz`N+-e;ezB5ypuN%Bo`YT99D9+2{l)r4&~E z&onfsFZ{{at0KX);$O9szkdH#H;p*@U0QK-y-)VP&T90bgsyQ3Sv9xV!_oW(IUxG) z|Mh%|hyfV{=tn$oq4=-macDx;ms|M5mCi&hD8qkCj=IzeaBbBJ`1kQEoKrbhl>Z6( zWaAFF{iQt2!{%pi(%Qv;Ey+e-eZtNMC1HgKE3BsUZahlP+t{t!-rmj!0Kr$0X|Gos z3i#}5o>1<_6VZM>PR88(&lYM<+?WPDH|90L#_yO%zKo`gX6%p;!!IWagZ{8z(YF|; zg9PXoP35@gcvu);&esva)@v``WVp0^RcLZeohcc^4R;CupMy)HyU=H`|8wk*b!AHp z2MvgR>~Kv@jRH_9=t_54mlI_C;-#s(y7#P3Mqs|{QiNcB?Pfr40E14|ofMUd^=3|gJkIn+ z{AqL*tv;|!gLIxRVRT&FcH2rk4w|#>CwqRBH3$^rK7YJF*N*U*^C&5PzT5oT^}_C@ z#ejZ+YE)|8q#pPC_wVsbYvQ9)5AP;8eHUHi@~b!OtZ z`<^{L>Hoi-s8~q{zo=iHGrfl(mEx8}x$zC#Qu4(8K*scBWeQkuz4=T4DwCDHIcaN@ zngVq5Q?MQ& zttc=TByM-XJ8GuQ?X~~kxBMotxC=c>dhiDA^6}M+>#KD!*;g;KD}VHDYdm*vy==fx zjLvhmEVOveMNqPD@GqJ-dex{#0-R6_;mdkK2aAe3i_MXzdvn7P0HAee1XZwzsyQrR z*QRU^v)a=fl^SP+07X$6ms!+QISk7W&16VA?4j~?uG5Kc&H#HG(-k(8O}>^*KKO_o z^gcGyIpfhIq3Z9Y3oi5Z+JTm&VMheG{B*iEwdA_kXm@dO_mv5B&Xs@r)+vvY(h><3 z%iFm+h_T|k!jb*+{WP@>hfgENz)wuUAzuF$OV=>mkW}#v+*e`#vxOv z7BVVp91MLI$26Xs&^g1_%U!4qubRCxKM&2xSn!6 zJa45W`#2+_n4~jZt3{JTO2y%9(-U7eHYPELfW@BQ4`9CC_}#_6pq zwrhtThWlQ87&Tz+rR;~lc=5vTI}2pXnZIMre=JsJsy01Nu%R_~8A$ewui4LZ%5`D< zPS+eTxaU=|$x5Qp&Ca?5d&An6q#X+SU{2Xd*@6drz9ZAt*Vng4@CJmCu*38l)Bc#7+^n;W!JM5yp$Hm)ER=? z2$?9i=J8;FC)=sC{H=YaNOSt#%((Q83lS+*Ej_>fbZ;_$)pAPn!L}MuX2W%+@o!I3 zoD4lxP17@=NgoePh;cS%a6$;>`Is&R<7!_NzrFo#i|T+XKCKFe+f?cMwO_dV)Vhzv zRc9vDX7t+DY?!FxYrevr_&}o?@rO$ZF1=2q55cjuS^CjQw_>xCg<%j?zY<2 zn`zBj&P*rIggd&FfBXYqyN>u{H&1a6B)pbQK1O)XuxoE7tz^7mB)xG!PB;UJJbH?` z2$5tEoi8d+bpBJvlcgjhYZfE!Au$a*C^4)UVQdux!=9Twdvg} zhU^PgwKr*^j#1sQwU8ySLIAdWeSQ4`FDegT&6At=Jc8PA>Z^4Se#NDUGJ-jVy*7Kd zSp;(|99J5Og%+Y@TxRFr-IiaY*eOO@TH4*bG}i1bV_bL947)V53`mflK1@>)cl}V2 zD4i0EWt$~hY&vKnm&t0SDY3?J_N#!D8%4|;ZI3rZ-<6j*5TWgyl&hukC=N6cqf5az z;bm1H9{sIxlF5{T*-p$$xbKL2T)LG%`I$YuLq=U;vUV2{+Fk1rjvp|lFW=okm3Xn3`9D|Ci zMU7ugJX~xP9bB0uslwD})%E9jQ15T&E;R1^0EbDfP?Q_8PL8kp~^`!?9LXF^vSqK5}&Tp9A6`#+|X$bYHKmHAQk zGFpMTwumbmO<^eAzOcGC_RiI}^>W5-Fuu!Sbn@H5nsBETqm9#{hM^5oWk^NFq`^;b z_LX*oLrUWW`P$6(6DPCR>Ud=dT|R`x`i7Ee*5KK)iVwP)LG(WS zHjnjb108O$1~zHu|Gn9_^3SVm;ad8O^=l?J!Jmg6$72+tq<2mdcI>Vjnba_cN_w7XEhv(e)ZAgZU=iwgL#p6HvW#^CL)nl zy%_LR7hw@g-lpZzur<5)VTX%2nWJlM4fBwzrNI+@=>=eypSV0ffGjk6R}nrjFg=(Y zBiX)+&_xE@a1O2ar_D7TwBS0T`K`6lgbYHGn$m^2?=f9YF~W;exG12W>+ z6pZkZ<@oBCkHT}1OId)$WQwiKf{>&))rvL zd)r@rpKcpTIMdC_Bc-O8CA{hfGjOHx>`LvIRBX0A^V4iY{ubtcyx6bNDwG_{OovQI zv1vlyurP7Uz3~`X_U(TvTOO88y*jiRTj`u^&@uKuXuez8YHm-6)ha&5GVq%0ULrnT z>qW6E_}H5R>LHhL`=!B!t@%PER2=VBBjU?>G!y^!7ux1T20BfaR1uK^Cg~L=KYqlT zqz@dp>0f>QUKSPkd+K@zwSu6rY%~~lqiR)B4IX_(hB}rtrq)FzZw(V$r>9f<`shfb zBv&$oytgLD85;cPhYgNMSR2OYvKOF1V&;iYbNKp&tMhg3>PBa*K_)-SR@x^6jDwB- zj>=(Vn+pSf46M5Ijl%^81;AxsdYJ5#!iIB%|GGdXLdgz&&+x3hGi6XdD-$~~zvUIw z*XXJ>Gs6DdEPJZZ8OhaEcDcg2wM!57Ne3ZMckrc|^vE0j0UKX~G}l7s1fBEd%17Y+ zmCeD;pr`e=Uo+n@rD26;=}z>bOnI`{LC{SxRweh(RP5lfODd+dC6o3us6E>e9#s{{ z*R%P1IJ?y!3)kBEv1}^76 zgeHf%t#qh61Pkjd(Tj0Jif71X7*n%@I}|9A0KFBwj8C(A@gpPG&Q@2ZTgX-Y1Fu>g zM$x~5X_xD)GllcGm@mH(>A;SN0NtEeo)I#KGKs1A8mGi&ygnl&wz~(^F_`{j?y~9f zrJ331Avo51bt~{|fx~g-cdv&%i^$352;zxPGQD^`s;M@|w;Ka9*X^W$){HuCwbnTH zB!Q*2sjbN8tQ*$UIzS5_AAK^`1pXbBKaevVCpgjvM+v)$MErF2r=*U`he zm)5v-iJj)-+CbaD7ChuPWF}nIcbub_^yo3d?f>$o#xQ;qlgPiR%Z=U39Q<-4Xs5P$ zMB4nZUZFrR!BZM`WQ)W0DD6*)#~Y`PjG!KT(CzB4 za~RIK?xoFEdvpke2IIeK32{ih`^2v3H<1H^eFhIz{N#CbtReFytzOj(6T`?t)0(l# z^UBhl-kUNQF9 zMp9UVch!HElVi5;i=fNN=IE9z+_wZ8^f0mJVczW(m{rHB97jZT#X%9N*V!GZm2@|r zO5SetjOSuajqB%l>;Pn&0`Pd#`SD}H@p#2n&ZXGOsj{WRx58nx?wGZczAwMG$nBz7 zRo04Gs}B|g`=+g{rSk+tz(&{ANs9hwm-30rRsQE3fTxdOOC}iR(cEw4ZJXu2OBt>s z**lcnsJ5yP0o_FGG}OJOrLaY2h;D)EwR<43$kErpC{K_a()2q5!Ofn~`m%J-!rh&? z%%W61oq*#0?s52;7OGK0wLr^EFf>(YN--d`Z|i@!p1% z=-_2(NQ+E_SOK|eb2s!yOV5t8?o{o&OlvNDD|K^0GFU_>)Y+AWkp=(W*ZZ>8TzB_TZuu?=N)llB zr>DvHpu65ly>v+8daZF+<01H{aC# z_A8$p<(XExfJkrY({nSfN4%*GfQ3G&wcV1~nJm#9LLI-J>Y-wn?&zDxS0(z@y#LFx zGxNI)0tt_v)icjoLcA`Emv9e+wBNZ2-t<&8;ov~daoGI>_iK;OPBB7=+V6QFI}Rgg zX(Afc@M|)5>Xw~Ln^cXNL52*V4m@`CO!B*(nH3xP)N;VK82;{Qv2bnRtg24*aPtDw zLQf6FECiHjKbT_!X~rk8%inKSM2gRnoKf$AEnK0OBckJl8i9Dl;5g_Xo4$gvk4w9k z(YJ|6FOKr5X(FV?_sa!iVz`?!j}N7IEG&VQhqC^(!d&1gM8uLM|MHN0N~I$y4`ijM zrXhB?OWdw?RavU;a#^L?UaH@>yj1F`=qk%%ucoVPQ2xgYUSBxYOkL*Sjg$DasV?D*6KIVshQ`cn0>!I_0O-*Pom9 z;v9wO;OeHK*U{p4`I!->TR^<2nd{9K9 zI}=)NQ*Kb+%*sP&M>M4zkR$8p(Ks9*wVxQ236sW)2FlkO24vX_SzRG}BX5|)bMKgO$X_8$Cc*RcntHv$ZRIUI2Rk2OW5#;09p)<3 z?~OnQARlx50dPnRD4CIABE{33-WsUYYBJGN>?mp-N>{*R=XHDZ*sVDv2firSh(pMl zXSP-sqd5oA*x0@CW(NoaE}lvUJPn13+R+1>RI_>XRt8tF;t)xA^lqISU_!^a<{7Ch zX{K;mqozE7Lw@a8?zPVvBMbBS-%pGIM(s7yuJg{nr;1Pa=&}K(?ne`juh=q;H}0UJ zre~D3yCq(1SG;ASX7!sp!gd2}LhnEWIu(xP-o22cs5527Z-Ip_>^GAhQf1aHPcz%D z^PMw(uNgY1!dmLAzL&|kn{(#*clZ6hCfdN*%zXNSrDP%|8?^gU`g!qp<+1N$JRRF^ z&t^Teu2LHWXUrC?P!&(yHoE(uc5%Sf|g4D>;AA<+kM3Z)`sA_s@Ol{$$;W|MuGAy7-Wd z%&yvd$LByCSxH3oF`mB5A)NMz=(`+f=BuP{4kP>muAjw^%+*Ld&iOXJjrbsN+;A{- zo{S-Y+Dw~@s`J^rZ*Cy;{1mvUbWh`r7Eg{!xQZ59Tb^BCddpe+&v_nJS5ekyx4tZq z={~4B1Yw$#K4pT*xSi9e!4YuSPU_P}^)8oyUUngo4;M3dG!kn6I!*b7gpl3=$#F>f zAe1zE3@*g1yJHi*+XVXrohP#zES}|>@f&3C#|xIWTWMX;@FO4EX|p!0kwD_w7Xxu~ zw#ErAdUO;PeTeY)o42UG4M#CFXFQ63Fe!U-^mtf6^%gM!TeS*PmITqn{T!^t2Fkc z#QpSx2QQf8{&HaNlg%D@fl~_Oh881wcd@GHAX63=(^R)oYlALzI4TovQ|wWMzqSbT z4vwssrn8#)zBTS}S;_w7ah;tE3gt;d*}#W4v79m(J$t94V17L!vNe7<;G6@OSWV*StKCzVxk@HR7n;s5<>NGo@%J#R z6`c<`qvm=M@Ac}-!bo>g7k)M#IDZ{4z45zjlUJ4<%h{=9oxpQ~kHyj|t$?u3^lsJL zDAeh*S(8U|F8eIu>s+Gi+Hy3hm3{Y9Witi{C(%%1cByENgo|Hw^=Ad-T5K)I=St0z zA#>qj4(^9R;mtQuel|RZx6ozV+mQaW??E2oW2aB1Uob75U``ZIM5F4bMdpc4BS^DO zcse!Wj!-J5+fyMPF65YufFA>gZiR?HPDgh#lO&GuTOnbK;GWd1;C3>&R21n^QNlP^_+|r(d{l478yMn%ztv$}4 z{uj%uI$|!MYqlD#7hR_ftn>4(KX-1@(==B{q#&MFv15=3Sl0=&WOkrr`+3^HZP>S- z03J|WCwQUR;XvmUHXJ6!1D0eMHy~vV#e7+EnkqfUWA3K~ZM-B}NbjBgCtacLp#HeP zuL*#&`r5>}Ur`LAOWV3>0C0djhvTfLQ`Wj=9hT^UQ{9tyj;tzUhv!yZL0?;~RE7Yo z+UK_&c+}4<@=VL&{wsrR(a8nS$TYL# zM^r}|q7tw2T&>S<*@&#lVOGsq^KB4yA<`~0sJ-xJ|8ty2!XjtjvWqKf{kn2cv?EFS z=w`XSus_?cX|d+PnGtwUahMyhF&I3&^T-{S7P%EQ(qI8UIi`w-w%j!(Z$32l6~3wc z=|npHWLnpZv?)a*b9;BheJF=r78-RPQJ7$q5N^Yvdwslt{l}NGIZRG+FYKr-Cm&3V zPPCn62`#VQD;l?-5L7)1v(p;+#j>iKR)b}0n{K1gDs7JosYcs3Fn+^WxKd^{Vcr)# zFn-IaiFrFvz99*eM;He!ksQQ>%0w4RbXgzT>eIlJIfiU$xLu}7&6_WQdO^N#&_mhy z&uoM&AJcEfSxYA!HQW^zGS}n_$&~1RaQG+5f_Q(ixry<0k(w>G+`7~G3X54J@|*bi z{90ZoRS4r~6&lL;ghNv0r^cUd1tyg&-X}D^0#Y3Y+46s5d**efNu@fLE7W_M+Pn+$ zGN4++yE9ezX6~O=^JLu8Q>g1kuPxMF(tRowYh)ZV7+w#w$mHMi5?kZ?0u)8-XUkvk z>i%KfkIq;A`6re^_{iN;cpr|fKOp1+*j1GPYM82-8C*6h(X(^*vkk)&?{Zv9t0+lW7k!(yt8#n4W6RD5LLqHsM>LzYhgA@4v$lrTBw;b2 zD%6K>sf(bpw)yIq1SWzLAd8iMeb*+`kLb&k_><>sx{VFu$&=fQ{} zPFdGETJlULv8#e+S^zg&P9kK`0!&r>@Sr&#R{lP4;YoEbrTYHg`Z$mr7<;YC~;dy1|i6zGNou_ z0=Gqsk!G<{E6^N9V zB)lOS+v#=y%WfhMXFNA%qt6Yn{`~Me-zf?63wrYk5cv9VB=W5N;l0d{JNrs*ZE1>l zLF+A}sS?YBGVP{=bgm=&Hms{!O04R3-1r>fpiq!<>sA z?byWFVNjlO0CJ94#j~l&;xPRO#KD7gkwJOc)_FZdd^I-s!{wu|*t?Lb+KJX=2bF*g z89Ub9tO(9HQ5;*h12L3i{_rsK=-U+&5wquO`?yM*JA;tLr*Gd{ZXBibj?y_$7-^ae zMMN`WUcPvR?VY@&O3LnXn%|kfiL22?X#>5nqq#jnp8*?fRKpyT{|IGX}A3aSzKawESvs|LBbb7iS z&LpL|S|nV>;cccK$Em`L+S}Lo_Yk8|Q99~O3fe~lc0)}SbhN3MFW^sgTAAYvT!RDZ zFjmT*M;n#0A@*KZF8hVlLawkX@7y`>J>l4Su=vos=uLtVt`H|MnQmEw>r6KS@HnRh55sWib z@8clb#zAD3OM;&Ig*B;o-941#d0Un&BZgUv0w(TvA`5X!@-3f8>y5dr4U(kY5S$el+K>st%jfO$Y3Q*5zr!0nd?G?Tj^U@HP*L7Rr7;-9z{(_iYBYOi|W^0 zbm+^<2EV^kT(fGWE);|+8|xjw=HoPLs4{R!v`!WFK+bbRKmW@s#RoaboXV@@c>K=M z70X1_*e)8$N~l%C3uVh%uN#Mj9Ycs?=LyM_v~p+767HNV2n<-98bmZ%w9H z`I*#%RNOL{Ry!KL<4GM4mqL~3YWCByQ!t90pxuH!HwG%Slld;H%Y4}v=OC?n2O*wY zKWQUq+X5YGyni#U!?=4MQXDv`g>^hbl)l%9S+>qx@Pt1KE^%NJ)pAe@L~GE}Nc*sg4WC zH6vqHla&|0NtxEm^W9tABfa?|Xxud9Si;zV8FF$0T5<{#m~%h&9DC2Kg!IO{Nl|Gy zQc_xS+Ofm>yyJBNaRX{h?L8oOr-=xy2%QIJU@01&vEE9G?(JYKm=b8(YF*9#Fs7iums=aVmXu-{1FDJGOvmC|12A zB&bo6p@!8#@76Hd2&RE6pc>Pdx;eYpyK;yDmpRiNr}>+#Soav~K}*WDyu;a7%Pll; zTqCG^WNmR87$?uUK=vVyicCR|7d*Z%7URgs)aQS`cfKw^UXu^TU*bICF59(6s2l}E z1kS86T0KsR;Z*Kbi@>MSI|`&2=BF?lXUq!w8Rm9(Jr-oQ?IjB4iFkf~<*k+6I&@3v zf}onJ_Ppd5O#yVPu6Z@Kh<$(48kC#JYQx$tndvh+hV2dAiTz2+bdDJ6>0;m+yD1?G z1Frgfa!Ni)o|z=-+lQefBNVK!40VP`esBz=%k?KFt#B#WZ~#69EbaD{{;Yq*o+>>L zX;ZcgX1)=dhDCLS{WJU6J5DBf(@7v!>}+%q6S0x=(}Cbq@IyK{ZA#>XKW8Eh%Ospy znrGLSe%T`MQeHLq3!L(>yt0WE(rNg-H^5O?O9my07j}uO9*2Vg9c~AN3J`RX^Kg}` zTU8asB<+zGtgP1bG=L8T@OW(@IIS@K<~w5ZMs=q1bAEr|;#jMgJAlA3-e>`*zPWPg zN^*EoUmUb9Nw}4Z8uNXcQ0OZYxZK#d52y8O{$$!O1L0PI?qw8qNS5y+cQpdsK0z^W z!B9oJ<3vJ2f=oFrJN~&C0Jeja#ht~Q7Yf<1YWIr3ozL{!w(OXs9V z4Tk3qYch2g-76u@y!Sl*I@^X(#O!2M%j6Z02-wEhU2!+C^rPqPK!rd>w8S+%_{}kM zWYayRDKZFxcN`BwAfLb5R}b2tNlC7g^wFe#-g_t-iXDMJGS~;ASvS6UW-VyVGAYse zX*QimT)Ts&S)osPz{zRtueuqYuJ!n|JASTMNNf@rW(L+dFYF&@Ev?;lTpr}v_#F`T z5hgyB*J5>kD9!9c8H&Y5Czlk|BAsY(^ELIZS~}3MY)=81vG#c~QD5W_m{IYB*EPvXNT&6#r+KykN_r0Wb>Edc3fu!d7A9 zuSSg=6Wdu^#a(WD(80q-X@hX50jO4^BuvPoc_xb!ckwSWDX9L&`b>lLS^o;PCR>)F|7s>do!)f)O`CQz5Jhn#lT|G}|J{5_* z;J7BlO99IQQKn`xQR7^~S*q!d;{~wcwYo*W{@A7Op6a?m1Tp8;sTReTJG7ZQm0cuT z>%kp&ES8|3Jn+l;@fAb(V@3?4sPq0^gZGHcX15L0Itx^B_4UFhY}}NGSpap;sF^20 zcGJ>HK7|SkCmS)N7$Dv(MdCxJ2|0u-zUPb58H$5|2F#rWVD8KeOq*W zXdXf7QuH+cVGg&GsfPp^4RvWo#``kDR7t(A&8ms-S~ESQ(Txt%X6-m#)f^=X;{?-_ z?uc=POFUcU{Ua_PjF7(Q&lA}fm}cMv5^{p`5Kb`<+coh4t2pCD<*8nqwogDp#2$v0 z{2{8rMkL~$Dv?MT&3tWr3-fU)v(EW+%i7X*nesfW+X&MzLBUIAj5B9W8pfHyL)}#) zcUPy`x@q%y8X3-&UvoxC+tawZK1xodf%h8aOc+ULDJ`t$pQ{D`Iigf|EW4X?xvJf+ z%5>TDjFjnw8H776blpANyIn!n9)|7p-KLDVvqz=EGm-HO>4<^#y;#z~0-?VMT8&G; zC4PmUzwzdcG=)3)zeV6oRZw2HnaT&(iyNXQn`H}=ed+!IOM0#*bwTC*lAv!}H(LjC z31qA=jq^ILq4MD0<30Gx{uvfV0<Qe!-=d)kDM?8Q~eW z&wxLH*Qfr*shIM(Q7%XWiH$wHg$VIn?V^g3)MB738moqT7%+dF;i=6Z$~To?b~-h~ zY#v!-+i*>Qi$2A;g?Zpx8J)K^e`VO(616oGObYcOIKQ^JyD7eWBu(VqrXp;~z0Nzg zFK8`~GbDbnUj+DEbPyNLuTv!#7nLf~$pAg9nLpKI*%t4ith=kMBeCUq(WC;p8_BCt2*i8ns$MV|Nil!~!2mt~PcY2P7bP3ADelsraM;=owS}W@ z!Y2J$eamf|tUBLW!-jFb$%dAl)2St|v+ZRErtPCUtYR&I$a~jEDz9fPn1)$Gaa8@T z<>3@}$njG2Q{>47*h&Xf0#-KzTe~@{U2X)M;}nYQu6&sVOlZ~$;B)N@KgO2cK|k|J zDP)9a?+qv}>%nz>Z5%}~u#T2Lxv~Kh025W_?=k~59jt{mXKQ?5p0mnD2_0w7`#jjn zQpwQc5GR2-4=%fGnLOv7{HTSrTs&EK6iR2O%K@n{)^<7Kj*%n#L-yAl16!EUQg$Wi zn%w2&(^eghctj8A>$nYeI^+|#)|wHN|JEhAr^g7nIG*v0X)z9pqe}qOt&C)(T_6b z8HJo1&ni&#PftXkS5(`omwK9iRY;5$EdJPpn|F|3X16Do@SW^lm`wlOW2dU#{w zP~h@XMt{j&TAG>&0qYLChjb#WzF#Ya1HEUAwAv7x)i6C$)^e3?b<~YD5NOzn-}3_2r7&WeA$3 z`9(IzbQ0C_>yr%}7wBhl1oA(Qlzu=y+->p4o}9w@`EKQ=%Me}bS|34(IKD^Hlqw^J ziRuxd>Mwj&`wp=7v9842LMVoONE?%JQi!hK_alHui06okiSY7*FWMh)Vz#fOt&j4w z-U@`&m#>j%knAX>y;L+;W8=9!ydGMKOI;$1F>&R2X*oiTIbyVK`j*$XIQ_yZR{wzm z0m2`9#)YchiVwb@*r9s(7Dh#E$6{a@K z;Z2%UEG?WiUK=pA!SVv!A=dDgTW6LgD+QkTO!wTZ-Cdk4?p#RM z7)fyhO6?M~I{DoW;g*Os@YSJes~W`)@^g<$z~Zi@b+0S8{_B>_u&@+Cjw(X2^&2vr zG1t2Hv)wgQ*>8ISKlw~DO02w`_|_>!Na>Tw@gRQ6F4mBY6_(gYGj2LO7l z4uanbjtlmajjN+S0j}a>huLg6HQBx|`~^oLQ2a;4^$`F|HI$^m7maI(_-0}Bir}_R zQc?l>a94!nVH^*2+&dDj1k9+61>;(L0;kw>z|T3RO3LN-LuwArY9bOlV&_>3ZZ9ZR z{56v}cM8lfpn#1wd9$fODHR6wy$)Ckswer8W{}pzIHu0}P!Z9gF|TyJs^p4WFbQK? zOg~-z%DRuKmsIv|&?ZL-EfzQ9PB5#<2c*Zx3ru1YsS3FrN)O%6+p#JZ4_EutXyD?Y zBGxr3fOV(*$LqSCWRuAcpaM2R4zi4gO<}|w!HIiO1wCwt7%>L|&JuzChc zPmZI}GmM1_aeskcHA!9?sdXUk^nCq8k0hk$*|l}=y~N++Yj$fFS-478kk+@dT#<5V z$(`ZR$zFdx(3)Jo*(dbe{KLwr5;&%P+7Ej!D47C-aW52WA}MZkowe$a~wwDQ+Ps2I>K&V zA;ThrvNmKOoX;I*8?ggd8`Fb-#xE9f1q91th-d1@0mmYfYWBi*sXyzVrDx0bUqm(Y z_~tubSG?PzMA=hq_)g~U+FG0hr%^r6ifS)zKpefe&v3h8sz9q)17W8f2h+@T;?b=l zCfhXzif?g?iK(-jb-Z?-3AVnF27<7>ns-wn3>z>o_+ZQFVpH-d zW7)#0P`lZEu4wlt@uUiBT!isv7!?~M{IyRQ@27He_Xy=f6pQF~4=V+pu&^zyme=Fo zuppkx)ca?$K5}P1SY*U`z)<ExAs=8)}=* zXy^bCL$|GdX-V)$?Fm-j&Pp$ToxW=25YRD0UwjkmAT*`whHSXq6c>5VxYVKsh+E^I z2iexuc`_ZBhn2e*8RRizm`P=}DSXKLQ^LJ-DvAhPD3EL@Y(6W_V--}|&lV%@onh(W z{HqL-7rg%KB{*INvT(9xRf^SyNFKznsmAPINSx?wHB@r8L{P zOV}?fv7q_NzoK?eXTwB#EK{#yQs4Gp=Y~xyFQ$55Fl?|)^U9i8^H&j*dfITLda|cZ zllQw;-^I)<5pB&P{tky()GGD<6L6;Ue!i@B1-C!lrs%snGU%aT^voLXvrrp2)sJA( zvuT8ujZK<~oC2xMJXW^kheEKkLsz^5bk~y=M}|f0qQ!?u6|q{ecdiV^eo45n$S1X1 zhS7lsvmk}tu{Q6(bkdA&^avTPL749WGM=^h7RzJG49$?rT@sG2j4pIJ)~}x7ju?jx z0fEFfRHr$?MqJ{P7~PHFgpVgiAtpg#Ql1>4!u<~6BwCjl1EUw^Ek*>GH*nei9ei^g z)cmegM?S1hYU;$oK{WzewnHO>Uj5G2bGtuL8rRref?>1Xw z`PT%1uVvu6p@Cy^Y(Je_$hzLjJziKL37Ujbmr1IZ{g4#zE5-QH_EWK}#5QC6A~lcS zi|T@-Enc!qP67~QOT`)Y<+*ZRjgflDXm zA%hA7R11J;La}k>%FKsr$sugHA8v;go_5hEtmyqQvWa^He$^Jp*+rYG5^lVZ?D$?! zivp#cCSu-v7U07%^X#1)DQ(cQv z$6m;b{(h>&@+$8{~NN5;L{UiTLBvl{gNM!UDP%?sN<09z9plXEXaU{2lI-T zx=VESJr>ITg8}&xQz6flew)2R?S_xtRTES&l3%ENAs1j;S~71)puT%q$dI}iE3 z=O=|`qHjFxaubOT$zm)t1MkCR%9fT_+rS;As4z3cN5d^=lLVed8X!t0R9)&~aeL>P z#6o<&T$h8g*#?n+SgpDf?~+iAn%RcxRWnq<4qsQ`d{X*OI{|CRCVB^xmPpJ^eeUf} zImaA00vTFK>2KO((OFCcUq(KPBWuCp-zfokv&yHkch0D$8M@t1?5nd#fV>ZLROXDN zy)@Ufn=ADLkP7~T8HFgxoqv4iuqU~pI{JCLgHHr9gCG9Gvm%|PGo$%R?J3Cp;lZjM z;cgs3+L;}d7ne--d?goxAP?^(A`rRUkk{@YXv@*Eq^vnMUvPVI5-7EznlL}XIb}2$qYQ z{8pM`rJr4iZO?et-X?kmPanqNrU7*evV-+{>GjwFknl8nua^VSMfWLl4@;)+yo@x_ zDwii-tW=`Vp*UCf;*h(RN}3)56HjYv;Y$3G-%8C~E7uQx>j}-A&hD8f!evCB3iZ$- z_XbUCFHdud=%>Y|ZBmGA_>aX<%A6b4;!`Y7>~*tc&X^!h^rW@-&*)coH!EzKCuvT& zIX3(rmpKwCGD<4c$ujR?h0II} zqPiB5)a}w-uCv1H%3$M{p9`xH=KloUIp#m$MD6k($wv)?-u=)gZgOq!=-xWe7mmXx zQX#|O&-h=JnWKT14w)Md=ZV&tXD%H^rAwlv7sGqzCmfbRB-}dS`WlMS_vcUi?_5H`Wuxuo1?kcM1E1fb{$-7yX;ul zKK^Ohd@!MJ!I@9@a4Nt)8^sv|6D`V7#JjURHHsQ$;}-#iy*>+FZ9gn1C*0a}9xpUF zckEte2}wKFR(fzd(GK(r!#(hjpq9H!F9J?ynhd7y;NbWR4Li={l|J02p4wm|c2B*u z`W$K%r>ytpLeHX7h^+rJF^1Xwt5dRl*ZQZPt8PyguI!yUbxa01B}}7}V@qB?VTCFY zEqSxVuN0B^M>~Kzo5?%&Dh{~Xh~QRbI{IG!b6RQCj%plh#0$zOO0%Z1T_#%`2)B7g z!LBg1{H9nk@O1mhlE#}KRYQ08V{u!PB~8BpPFM7hMg4c_sx1jzabvHlwq)^N!%GJ- zG1Md`N3w?};@2@!TPQX}1qMp#jBT+K7aEwP&~Q$UE1DPl=Wf0?$5FyOP7?t zNl)%mur3QWmQ3e$WDt1b_UtXY0b8!c;L%d(H-@e`npDy@OnI+UWUWqCF+SGe4)9N# zasq2}+;EEUDir!|Zp0hm5aV>9%OJ~mK#V*sPa%S+V5=Mbx*$h%;&faR^G*`kF1P!} zV~1TmbQZd*-;s~ zY+$f4I6OZG*=gwWv5vwV20vWtA;YVuP$P#jgIuip9_3MOIx#tH>t|LM{>i|l<_ z4@B8e@(b<3cdBx%A6Z_~&VnIN^M1{_HuPAdx;_gAOrK}_%Ht}&+*I&ZjIwwF7Nv_= zA-UH_IY687i?wS2UbtuLyvQGMN+&8a%L};k^!4b}>c`<5=+;sT{)A~&(0y4zYXLPY z`{J2?)cE(rg1Cy@&yKD_gu9GHKZJH9hGm(^YcwHw2>PMY{-i%mo6t3`tUV7__o&Ex zA?!~eCR;EL^r@3B2KvLYIkU1;hI`my$Xe;R;;8SP9HkmM^z$Q;;CXy=kf=O*c0o%F zEsL&zCsIXV`_0(W_Cd{j=OI1b^^>H4AL~jceqrUkbyk^oqKAK!te{q!4H4;Ri#q-w`91FA=^_vZ)04tc?}GAa@SPNmRKSueifa}74`yL;}>zJIS315F|ivmjwUOSLh--Ush$si?n!BCB9M zrxHysJ(kWa1nWK)#<-yWN(c%yK?*4ZozY(mo80Oua}L=!6I}Mq;<9)4{U9zPhi`q2 zeHRW)Gttc@5C-FXDj>X;bo5O>SvOR+s#Kg?kXtxZ>c{&>W-M)S%#sM2SZKIx{J9A5 zFAvAPd!q07B)k%?5|!iJVi<)mJR@{~WOGFH43OB4k8owq3$vw?vJ%W9W&PTTg;qE` zKjip%3upTA8*uCE1Lg|0m2`jQXZBkFzFGib)oi(=t9+M ztF>#?E~>UPh?W+$ik7O8wpNEdVujeLnHsfX2SKa|5rX_)+V|)4dEEE?z3<+T|RXn4nu%16_PDkrb;i-;=yv z@*;BWkC1^S+aeqpZf?^|zRDwuW7W|%H*DW_S|$qx5(*4Mx^E5!IeF+G2&=fftvlG| zpCD*h68T)drmiNv5CeZA!oKno+q%~Rt0+W=vFU(FNk}*1+5mk@t-r$W3OK!zZ9_wT zgSvd$RwQmnciu7Gp}q}sj;6v>;fnN&pm5-b@4(Ev#Aod)FGG_+JRMb^6)Kdj`*yst zS`|09X$D*Co{|Rm+pQzRL-p4513H?X>?` zZjd_y60}*}U2~bdPorl!`pv4vdFq_sPtlI=pF!;Co2g>)ujHOv4~r3ZuYcr<;ETs` z7dkK97(aMj$X!%Kq~Y+z@osP914HU#QVjI2O#tYWX)7d|_`1>frFW6hCjGmBvEdKV z6jov>Gi1P4+X`?KJI8e-7fu60=wtOAo zm0#A*|L_WmVK2U$FFdr3QwHy#Do(go6DLM?E{*OB_Ftwwi$QYWBY+f#v7D5Q9#A&O znLOISa)x6zq4s-SC2`_%uhp_+a@Lg9(ba2KQ**Fe9%RW@kLAo~h8w$!K2MhNWKvCL z;-PL4lXrolYe&iZWO9v5_o5ZD#^?G>nM-td$YpSk26t{Die=xn#-{66r3CtC?lMj8 z-Xt0NT=>B3bx4|h=-qKxgDq-6%=0Eu`>asTbmk2K;HX*U9Z(Vkj4~@&EW#XikI(?%!M!%rlMBo~y*SO6hnKMb*opLys&@xO3C>&Kl-f4`~Ma`}j`sMbAWt zV8@krrq8OnAA}ISF`Ka5$pYQM8TsP24Jza`x!2$rIhe5F?loT1d4`v1?BEst{F);u zjVlfz5z&cXv8HkJ|Rd=P4M;eK?co)Mto12L_dM=|P&bUOCCd{fhhA zJz4bu?R9hs05(AEQc0ZY#P1TUURPD^_MLhpJ-OPOFH0jsFk*@dtl{%-4GXoZeob*+ zH#4fP;6LIz*M5@YoEhn@AD20lDIUA7>E=n)MDG}ckWNYSrTi4y$WXdIA$qdz!@{D? z8Ia|PCCL?T&oIP%!IfLmcT0@cr+k3B4r z(WB3WuV=1LrB(7|nsPMB)+_Wd#aLXD(IVY6f30hH@;xcq^(m2W?>;}reeyxKOM7(m ztL`#ZEz1`bIUH67BT>lPB8Ebqm&Cv#0z9z8jG+PXAQAC(_a z!YQR?I3wT2$vO%}*E<_zcB|iWFcKOFWLSKz`+fy^@9EH+AIl2`CkQ23zakn5kcLdG ztEX%7(y(7eSKO@T*1Nc}1*<4Qe>7+L{txSizY&|hC8r-gpw4L|8jbb4Mr+94PF((Z zW0*oarw_`coID#ykZ3-F!X0@6(wEyKHN6hDyWcHwRJ7Bt^eeVk4PW~dXl{S^{C9k>_P4=fK#7* z7aDm%+$&M(fO-;z8OM)pWnw&^N*Aw~-r1Ksqbz{l=*?Q0?leJ}Yv{U6t_)4Y#Yvgw#y){y{|Q7^C1)l)R_9;8W%zHu zEq2$wr&ZA%jQYvATI~@g82M{*ZEE|S=(hVr)cLf)g+eLtqp@Y1tN$XgnZNNLvXtiv z7D0@lPh6ipQzo`wlC}$?L2!<-3zdKuqTG<@K3DyiAGT2V&{Pvz|98SS$^p`We@__= z6hDPhf&eE5T$8YsL2}=!PTWKv-3b&CzTgnW{%2tUUX@7loBt5eYy|=ca66CKl{yor zx&WSCRE46VwQpPmKrKWD{b6ANm~UhNGM>W1wh`@e^9!1P_vgoY-;DeXA6>1A_offA zS)(7F3`Zzw5!9em4I9(9~q<{-JC+l$wQ~ zVy(^u!orrttZt`GFThZKa1>-y&uslWHBe?OB7{r6)6 z>4T~Yb4xoyR(@GiV>9?y%4(IO$Q?ZfWP3>Ea!72wxfrl;3d(;5aJcg`$3(z4DWMrI zlT+=65Q)w|j5P*8F8ZG(3#7ju#3LB(pn5pLFRp)?hyD>6;2-V(|Nnp#d|#?R{?Ft7 z?zTa@TTaetiEtOacb2+Q|46{$Ls$5vYR}!`56inTH}}xQ9AfkDH{FQzKOEHPnSYNQ zSdm*g*ADdv>%Roz@Y`QRMTq8+O0WMt1K{z!TtJb)E&iLpmsgVByt#BZ7+=mr9P;qh zXCwagTo++6$!~u)qe^Ur?(j0^&7GBrx|6hR8QO+k$m8z@X+S2t+?7zpZ?9n=GR6q3;frjI!=aZe z-_g7Laqq>GAJG^^MMW~ejHLjSRRl`Ja2B03kOBj7BFw{w5B+He!N3XlRN(NX^rWXG z7<`JY4MtLi!PDVS`g8w0UTv!FgK*t`INRMtkC)jQoVQ0$AFdVjJaRE@Aldr0$!WNo z+mpT66>KGDzAMA+utxr}Y2kA&H9nI_(^t7XaEP~-x}LQTb3!V>sO8Me;KliQhgu1{ zOf>&HeCTPVw!JDg&gGZcb#%J5huh}jIki9buI9lHAf690t)++dj0F@}R<0^J_gL{O zhamk{`+mm>s9xf5A$IhEX3ALY&XtO*M#V&961II_Q7>bh57(tXcje*884@2=l>gIx zU^8w+vKxqjNx7J^v&Qx=ibTG(d4OTfVyJL@dFi(sxiLx7#M06YKo9y*<41r`g3jDp znynsbfUqU7V$+`)VYvJF?-<{tYN2(2rxoaUAK~N8giF^oUamZS5?%qk&maw9>JXhg z9@z%_L!q^>;Cq1x87ZAp^6C?V?omp9XLDK^12qR+X$r1yVuj=ffemy&{q&hLByM(x z?Zq$@zxpUmE%KxRNM6e(cz>gUm#)=(xkvZ4o~^E1N{IvbL7~_maOth=A=G z{*VUs_AcI?0f5z(1+>r?ZI|@})ru@p6BCPLtvoX3Pkxvbm1Jr_NAiKP47$uyo^U3{ zMu4trxhu5{(bp>P^7E>?*GzVXn&0TtxjD$^A!AFzs|ikJSU+0mmQd$)N&)Q3c`KPf zWy$z+-vK^|L8qRND;l*p*VzN346uiAFiy&{)VEsWt0i9Tj$Va9rdoH6?}{BjRdFXz zbZ0x&S7XiWe78}&h5^)S_UQtscMllzm#y1|LU0){ZL+=k+n*EApIgB2G-l_I7DHb0 zJwxRCOq!@W&#&^VxEoH(9IturJPzF~4~t+QVG<6q1*qhRLXAKTRs|57#P4z4IBGnj z>b?0jmQQ_R4Z6ATS;Lz+i{~8%1$0Mo=M9fm5DK!hThJIklL8BS0DeWZMziopBd`Ih zl=8>6Q;He@E-FpVqh6?2blVjFYBNfAh~|+g z*?V~eMVtNBk9fXy7F!O9Hh6~Sk+xXYK=r#$RCh{LD;W8?PM~NF{m1}U^XlgnnoKW( z2!kF6LQVH2YyDTe(GpbX`HaYcb`Vc@*gsNnZ>H>@&%T1=NCuwd48lY)5CLE=p}3S%tFjjzlF% zdUOmdT1QF%1vsk}0X4p)$IDbnLyEZUJgTxG6BP0oD5fk;$kM?!hD9Km$Ma}(>H!DH zhpIUHg>|lwRL)hq=3IlpAD)`EUbtM|cg~pLAr>IDb2ln4mQW_}v!&hGgGv_kBUot` zi|ZwiY^IjEcMTs03pD|3KiKG=>@abyTuk~(^V(<~S}kDZ=?|dj%+<*?;n?Z~=UTHT zd>#k}eZ<&Q*;Xi4D7ldZ_?7Lx2x|CuK~n<=6P*BY%KS0vI8ZzUy>UzDU7OF|Mo#BO z=+kqD_UO5oWIT{6EiIKB(iR81{nd{}9c_Ttk7onSm%5O ziC+1Zs75GbV}a|67mPh$mBoLbiG zM74Jn0Goo&;}VS^tY|*_r5!Jbhxw$Fz9>wV-pfKiFFA`@dl42fyv45^1R#M#U1ZE_ zy7Js&^jKc{0u*xKE9bWW!hqldagv#W25KQ#n)x{Gn_#$N+c&BXWO zQn{E9a~~E{ex1<-?-ox^)KT60X1{@h)2RnhNr0aUoYRnYHslBAuJpN?1y5`MfX8`E z1Xy|c^-M&>M72ei3(aeLoG__`6zc6xX>bQxO)$%bnWLCi12;r4&%d_xjYdcm+ zrGC;zw^`7fIn@%3zoe6octKj^gj*oX6e{o`Xq2=UPCc5(h{}Lj*#~1&ti2W+@QJB=D3)#Vc z%(moc9VKQs>K8W0%@k0q;k@7xv~AA@ukijb0ic}|=9hE$x{as<_=)7b9P}iJsW}&3 zv+}QMygc6Q=Q&n29eWfRNr=L%m2GOzJ_Pv;3do%2KB$jop${Y=JbCMrfhbgYzUftms zITvG?32J3zJ!6|^m_a7UiTa+8F-(>FU1(K3Lo;gII?s8ZLjbhUYF9}7gcy9IcL%8w z^Q(KeT`yT`n*g@ICNg{efRUIge$8y+i`v7LAxrH6@!&xEfW^UPgvaD603E~1JNM+a z;uEsaqxJhtdvXHm{>$Y+{Q#6J-R&s7@@$5C*%k^J& zqI*nC=5k>wz?@AarQ<6bZ$>~EA}NykAJci@J3pt_6S9JUtVztMuM5IVXn_#>#4T6j66V#Vy8!} zh)Sm?tAIiaOYijVId@Q8;HVbq9B?NZ6jg=1qvZeNiYFa%$j&_c(j1AQXLJJv0hAJV zjjYHweo!_1#{z4Ec1mq7ore^<2+Xbk)B_&md_ z0ktP)iQ33ZcjxyE24BV9`X8cYt?{HZoqAHb>%HaK!ZZ&xpXvA9@K=GqU4U|sjIk)o zi~O~cj?MnL?iA_X-p}cI!ulhz&|bQfd~U&4v$Oxjp>UD8D-3Y-lmOf?C(c>FftpxY zkoEcX?&H29;ibRx#*x*pD!AqsE*ohLc|M`H07P9d9U%?ItpouiC^h*;Bk}qABRZxz z%Q{*S5#9$sJ6u997d_c+EGT&U-{fHBm3qLN<<;@Wrbb+`;heEK`T0#JSk^3DU3Yx& z^&D=-hy#5EQ^TImmPZO}mweyFIgDB}0(U##X8^2j51?;ke-y7)tvncM8mlb0Bc8Ag zEq&^HG%-mh3iIb00cC)2Ad$*W-1E09LS)pvEH9jSINcCimzB3q3 zDHS%~S{|zwzZNP~ad<^IuQM7=*=s%tx6z%jxJ<0ph{D+HbeJyJPVPVT4oDlWCs!1W zXzurGiU<7TPIx>8Bxsc3{rdz;`j|}kPr;)u6C$?9<7P`#A~D?CTIZhuWQHf7jmsXY z%0I9?M=`K6in5o3qN-CjokPaKRDN0nPPs3rZH3wdr$OWbpHr7iQBTqk?qzO6o|H-2 zswu4db=(<`--;DcZ`nL2cX|SrHDRljD?^&p%^IO?s^ADW*wOm+SDKaW z{Z6C3ILT$~HEFAk?80%*RM5AwLSFIh;%g|;C>O9YL5M!=~% zHpR_4@zBOcf9|3c7{C#B;W#`~i!RbczV6TcHSc0aGD@}3#)v7i%}3&KirUdY*yC_+ zxM|dn>mvNpS8lm;3Vv4UOV%nv)-hNqFF!zVZ_@83t`99D*W^g-Tnf9#_}*#a)lSRn6koq&@J;kgp3cF2%&Kti12~x z_E9!FZ`cIXng%_`mNh<%9KdB@sw?Ju0kG|W!8#+DW!Y2vz4GV$Go-30WB1u%A~^}Z zySP~an;=Hh$SKSGlN9ZZciNtj)02Dini2s4RVy37g*VHy-UCh@!zV@@-jxk3)kgq| zQt~y#jE{jqx4c+0Gx2-Bz>NGy`j0;keq8Lld}kze?_I{_XEffS;bhW90&?P2`?Cqs zKg*#NG{2Sb!qV7Z2@dscdz)2t-jTm2C%=Dm_lOJ)4c{QbZW`?)1H5Op)0;1*`A?bC zEAlBp+%fOpy{}R@{a)wY!`$VC*xR;Su1`cV9n$wCx?}^MUe^UQK@rTb52xN=_o}!Z z87Ul%<||B%k>r!+(~%1~fJ4O`jpb);B!EC?3?&9nO5)H=06p-eCeg@~%S}0*A>U$= zdpD^2lQaf?HSZW+cr($5S9-*AA5I$q({^NrGxwSDb>Ig|{xc3T?zE1g1B>%*d6}4g zr|uHiQ(KLB8CpEeE~U__450Nk!scm`_|yX_Up*$Pv3c9Vs4Xd!0=gR+RBQRb%F_U^ zNiD-*zscj5onfmsSlaeh5q2xBa#=EDBX6%nbFZ1!33a4J&?v4@psvefqNX`yzYM;G z4%yxgnVdwAvhjP+8k@-^)H(~0j0oTAD?M@fqEzK1HMr?fd91YN>X=li3~Z+p%z9+6 z^|I-TvF5%!`7(;U=7Fha@Spm{1?*-B_F!80pz+e!Ef3s$f&cCpL|7+?Nsf>)F?O_hi3`zSB&F!M_eSzd4-<8_!H^D+B(|%x&d3QozR;9-TqWS6E z>0xEmPB%sTA2AvJBPIZ-cdM+p_}9k9#ub3sm}X;Pu@ryq28jv~XkyZbgqRUfZdeyUN@JxbreaE2g8JV0$xC-el3Ca= zME=9z*_V61M~SI%TR6gf|8~Fc54Vk#wx4w{dKw+_L_?R=S|8?pDQZ0LaPq)|7eQ@X z0Nrv!#xI5g+()_B&#X*0)zy(*@o_1#My%)d*gKs$CB2-_GBf*J!sHMQXG`=WG$A&# z0K(+>BJLyWsfi@0$0iIUUD$YFoo1}$0^KL=VC{`JHSs>kJ&_qnR=?U(Y5R| zade@6o&&8U5FnK4ls!rqM^Z!| zR(PK%jE(HYE!%qrk43kJMZ}jLH_kOL3SsbQo-Y7*q4slZ5W>5?%K2&!-B2WTl$)`0 z7h<)JIud%W*<&}qny+=GiZb?Vw+BvZ;zdSkxX+&9S9L;mr;`e|1XWt{a>|iSGK(c4 z{X9@YMj_dTMi9=yT)re-Ax!zHQ|GduBNN=tQi}Co-9U%TJHvXwOFhD}Px7~Ji3GS_ z6QISz4`NVxJ>x*I2dEjrJT3H@8}(ZokLBzN=5p!^*Hv=d)#sn?+iVtwcKR<*5RT1g zQupu$mTUFkI{P-GjcIki)p?R&Lmj?!9|YUv>NeU89_@Jrml9*!wxXC)E@3X z@w`FsACt3w9w-fWQ7V!mzP3Bt>Z=hDyfhCOnK_%?~g-`{fn;j8I*dRh(-f}Oy&f6!RtX} zLBhdT(M;Ht6P@6eLBW*!{!M z>OaRF(n!3mKmHu-xcwue#82~NE!T4{)A)%PWa{zSKf=;FWkUsSi`j2dn6*)c2+VkXFytYvKVhRSxW)ZS}J>O5D0Lc9^fVeg6?Et#mt1Yo{+j?-Y4`>!;60+$_VkM&lgrJvKols0gG6`>fYoQG2gu zeZXmlbLP4)*d$=Gax7Rzm1||KQqht3B(X@7f3BGveed95)n4sXVSjKx368iE^puad z1MunDlO`-(sAS>I%$m?oJ6PHrigGnjn)Va0aZ6kL6V2P6s7-NfO>kcDW_M-XwiH%| zR%=6i`6P#6JbbVhZBrf+_Ik92Ep0`ZMoc5G0HL5kxfv3ry+41l;T*z#NC;~g5PTqm z^cjjSYzYe;516v0R={Y&fSKFN-OroclOl`+gmzmN|BP;;?c!mLc{$nnW9aC-jh9+_ z9+a;o*2OZIfTA)@OecZ@G(lBFHBhfq&=O#VYRZT+L3MKC~gh2<#b_T0; zWT+XF`;Xw6swCdP7gb{hRrLp3uwvBi4;s8~o4pM8b>mXU%-AqWq26+ugLRPePEUsVeme7~B)KM~#vf{tYgh7uHl$hON@GZ@ zAJTjH8}3xQW1jbPz7<;Us=ue?SCt-gyB6RhW$BO*?t2zP$?PgC4z?WudIQMql%;PC z#P8iyt55R0ATto=HxTdr)or-QVPdwq=2^^6SAB`JIY8GXvwTKxt$;ue_iD4OT5KwB zTx5Ov%VXjdK}NjMSvRrpj`%S!hlRjOXYVk-N<-JPdjKoLnw3?&Q0#S=eO=k%W8v)9 zCz&QR17Uj$$9JU01j2?8@{e6&brgRktA`Q%+s?aa-c8%3e^T4sUDn%)lT+&g)6N@a z@Mu8_Cj}!i=#Fk@3ga8=4J?wJ^Nd=aAxP;Utj`6^{L>iq_WTMCRYlPGROfLjuS=Z9Ho*qY1czJ{_DVQz&b5q!ZECIxYB-IBcgZbprZTPM zTCNoXEXX_CK*ZauZov#m9(7Aq_%WDY2JLw0dwcH(KGWw6$ZlhxYgb1&xNEg4FP|$; zbl4e8Rb}c!8>MgVyH9*CfJ(u3F57HziU3y@QGmW(d;1QiQ*$2cyWBUvr2J%NUG2=d z8><&>+A|NX3&5fKZ3gUc`bjxJrY~noP_CS2dUQO9(eTJ6u66JBMDYm(eQ$$vUmt=P z$Ec4x*9{Am#ID0V%nU>JIPk}?IPCD$fZn_WR9RS=I;bKpykqd9aC0 zkh1h3Go6VbC&8W4D;XSqcks>LH{Kq-mKKf)wd^CQDk~3F>a8)LBj&=dPD4Yx1Z?`~ z!;^~PL1sN`*DMB)4GSzqnz6e(rEL+0uwS&I<+i3&a2Y}&DaDg}akK3;v&1~ZM=@ezbAmt^<3Uf(blTZ? zNIQLV?~=Ve#yyTV-G<{WGFVAu?OTt7H{mhZ# zWDv@A>J`e-;w46z5zL@ceeOl2jNRE^gd)_mP)p!ZZfvz%`~-Q>5^p`cO`Sy90>PEC zge?0D>8~*uOGQgNa}BZ+Sz%2X;;K5)8}{n}X(_w^=6 zjYYFI)gu?!rcSN5Z_ov`i_$qEKF5fiVGHF6J=-G%X0W{}L{IS+DwPSH#G&JDlf>SQ=bRS{1R1l>-7~e7 z-TEw0pOm~Z5)h}pNHL5&)o~(op}{9kb)C<)2S0VpU|i*35g}4nS;!Q$s-W&f7mm?? zJr(|H>J-8awk(otwQYSeC|PXr`-A&aKJZuf@`Q7Wzz1Wk+_oofGu|c%#$#nKZ{U!x z(O1u2IAJAzMQgQiIF0vHjHE09vC>^u0L9hN!Rb2!wX)I}TR+RvRfjqt(ET51s+VQL zr^3h0idEUSuLpA6+H+b`cl6ksH}C7?V|{eC*#%TdRLd<4lrrYA{-w+Y76zATtPA|? zIUrJ4=~Nm5Z(ZQHVfTQae~tfFM(IKf-MpYPIujFU;=^i&);rm*+~S-oMCUW3odA1| zYF67|T1aB@6M@+(pgr3MDJrmqlPK4>Q>551jHD5qp+px-D5xwj?^F`9p>tXb_a^tu!7@zqME%=Injf0ju}U>x-9FE-F($l#|AtQkj`L&6Z`6G-67jzLh2!3 zDxM6TV~CVtgd3%UGTM_;Xj}wHQ?`##=kQJ8{SWAe6SbZw7!%NYfI&sry?I`Wx4{`y z8Fq|<3?a>TmD0h#$xO^Gv!Gwz6%OyGta!rQPzPI{pnSB=!Nx~)8Y7r=qfzTJc_1YLw7$+QVM@$hYo6P z_&ikdll(R7sSAWq%)4$#Ga}z!bt+};T|zj<-AHxd^1DvwYwn?y*QSfv9B~B(!Aa|? zvj7hFk}yI~IExNGl1GPSaIYT*zvY;u|E;^WLD%|C68%AqKKYycT#{+%=rzZV>(|^j zL}aGqv3D5>6n*n)s0yMHpl(n($Yw#?)ObH~qp*sGDu+M&@E(0?J?ggN@uX_0d5-nh z>k~gZ6Q;_+b)0WI+iK-qGs&+6;?25xRdDwsEEr?iWSUZ zdA1p#LKtAW7C47Ev;I1TnltU=4P9y=y2)yg^QD#5*x7FUsyLoB;VjL*N%4_qy{rQ&Q)U$0O8vcx9 z6|h9Ial}WC9avQGd|9djoVv&BZsMEXzCHeRx$^~P;8n^+>!o9fe+=&EUxN!6nkO?- zKz9WXwH7&TSBikh6He>$Y^M4nPV~8fG7OqG1KE0x_t6^=H^hy4`1;mWQ*G2Fd_&u2 zjfBn#PLaK*ik8=&SQwp}JHTMES zm^yO6190!V%%V3QF$A%rxF%mQ2dbB``RNMLHbd^L6}Yj%xs0T7(_PfeDdv7} zl1BE0xBwTZ0_Lfr2Ca1C#6N22DoUhZnklUz{W5%;K-E>XEz3l&Yy+e0P3eH22v_YWaeVGAHGsxz z#4IU3d18rJ+f--?kPtX(cQLdbD3B|uVLOX`w4Gdeu36{#S?j*-qRO$SR2J*qZ8Fx= zveG&j5<|1W?G9@gy}9Mr)DOoI?xPYF=_4gKWKPcaSqDUTt*#rm}En$|v%A zdUzrr*E4DnytDKQ^nK;9sVAWyub}l*Ld`xoGylGB-B`=p&{1=>kg?@{yo2C{l)3CV zD^aOXo~!&DRi}cSCU1DRI23OM+IBnAV%;$+E>~LSrkha`JrbXyw6JKNjRxd$~#1*QkeEKb5^!dBHk4 z{QEma7hQq156?e4VrS&cjXuGUkvsZ3D_I+o`B7xoKr1I~s+R^m?pzGxr<9s;C9#m> zQ(xzfIVPZgsXUbzWaa#5A8D#Q^-<^PFuaBv=j*8L&8rZyW7m99_7p1M0kUwd3B+Fy zD%6A+=h2bY`1qQik)f?*mCfU>fs3L$+=<~Jx~^H_re^~}!bNBnwPvC%~ zNI$cZgKMo~sM`{gKoZ9yDVNk6Y3l(a5K7HO|G9 zBkl1GN?VUn;H^a?=j7mRROSZmeSUL1Y>#^~54_Jb+HkJfy?<~eQ&@Wh0Kt^K|B+QX z8KPd+jRq5S`88eN+cY2*!YM)Hs16IU@}}q+PCT8JNlN4 zZ;m{Ek+a7%QOf?7|3(0v0sXgG-Gg)P+JRoybX}qM`XZhQXS2LjFlXwK`E=2hbCJH_ z)peX$kOXY$r&9Wl#h|+<&)b{;CnfJ4*%P-(mfU{f*dBaMms4P4UK5>wJKgvCsz{^y z$GOISH39W&A!or!!b1WG4m3RYxSjGaewOGQe0E(gC690n&PDR*BMHYfIL|MF1P#sZ z)ADIh>uK0kYMc3`Xh0;fI9%emC=Zr)o@kgf=^7U?*^&RDS)OVUu zOXj^!&FXZJeu&Y0aP^MZ>9~7p@x?G+Yy@5E3)CWk4l5RKqvA9TEfv^cb9@zi=RhK| zJlh_1W1@ZcwO@O1a-seZH`qqMtCRkh>g5d&{6WwUjdQdk)``jg_&!JBVMjO(Wm4Y2 zkHVvcf|3EPma6X`Y_M*AiM>XE5+i*~)I7ynIQh|&ot(i(JsV9A%tkl;UlpLtKKj=9 zLKZ!w$#unhRqRJSXQLr!d6RYQT>Cm%ER(G>t!>N%b1oYzP01g*Mmoq{^&u79@7ZB@ zc%{2;o|ygPzHT_?emmfTO_d#rn?p|bQFzYGr_NWHz6#zU`lh%kuXJn4(?*Ug;4DrA zsjfl(uR#_AF7S@W!7Sj;!;zYd>K~5uWKd7xtgBV&I|E9P`2YF64?Cqiq^#H0OIJht)VB+*1ynMb%b<=OC3&fAQgozW-FpYQ1Ie8pT-?KMa>KHvY zUl{N2jml8*y1{92>HQ`4bv}9#Bf*qANzB#v?>Bq=_o<1^hlEeP6=IxN7^-OyG?w_c`s$zvszb~|M1)W*0wl7JmJ`mAXK^|#?Ln{{FQ=KK&TSMbT1iPy0^~vyYLYj=vcNg zrFw-yX>Fuz=#ojk1CVg=xt%ewdjE)RJkX~P=rEd0OlLfhvt1be7F}RnH(wL@z<5na z18O-LvX2St4sv?i_u1H)U-t2U-$lzys(_4UFJJtBO#cjp^=*zlBRKwy?8Xra5{eP} zarg7g!$#*mj? zAOL;4R(TunHCz0neL0=Te81}Idmn`c^C5bKA=sytv5LzK?vjQdmph5?tgD_S486GC z7WyJ=>_-jI|4#|hF+f^s!EgLM urN^$xHT@2={h6d^HJg zUP~4%FsLOfiGR1G(f5K^#um4R%OPdWfm4)UcFi7Z6T$4o{b<9E`lE31i_rgio&ZV6 z(G@=dX3!4+!rc>?*t5zdK$G6#!_HOpyJ^V6YO;JHg$tB769@t_Im)>YdnOL zi8A)XR2cT+d}zuB0DpGb;#b-LAh`XQo^(}v0D4yHzoLH2&wSpmz__yh5V6T5@3*8_ zEMbs_eff&TqieXt-{$=j#JP?zxv$PNdIkZL%C+I%QNM)+$G1lBpD12&URFut6-4Js zS&RZl?0MJney_+k-LmNp^Ip<4cArf}+cr_p<0p@kz$mkHhKJJ{mNjA4AQMg3vU#gyEY$ zrBVR!Z2=G2uVV$(j67}acyCgmZGbJYkC3uJ4nGmw)W#aXWt+c0D6+$TDeb3< zINJOl2ZH`v;N0N%huBM|-pKXm!F~j#f%GXONWVa|f^_CIPV^N%XXDLWe zS_o55Aeg~5rO0g2x?yWcxtvGJvNk|I>^SmWnu431pt>J|T~K{TZRS4EwS9P+^v0!@ zTT+_!*vxvh)@93L+s{z#O4p&DbMl#e4O6nJ_JUyCBZCXE+6Esj2udqfr&oV0+g&>n zBoQ3RHm>l!^AMv?DxMb2x5G&YS%=LH;2Rnl2CLna`GtNb?0*pobQ}VpsMAW**MadT zj|hVb0myCI@sWfHj*GSbt7c-Ru-?kS6`G>z72Su2>3u?TnHP2&7&wO8V$v-}k&vcrU6VZPV0ANK@>8|Xx1RjCSBCJIC>>$f2@4185#-Uj#Om+bqKF#X;$QiW zmw`Ht8@c*)(%x6cKP5=n)XyZYr>2M2zH(+C{$`C4b+x$nQ-0phOur#%hrl!NT;>;H!WI09zS@o9^z@Sf{X zA22}sF;*4Ypc?C9*XkC@k~Y3*fZ~YmjEuM_edPRVi&_t+>`|>h zS{5F`?qjsTo}mW)zz)jEGfaD0K^Q1&Ps$qxnx_=l;c}IrWP$AGH_F=yTEp1$Saf1RPqYxuJE#bbaFwyIf7NkGXl(C0Y+!0 zMVI&5lHNsjLP@tx=@3#&55_h1wKpp(Ea2y~!Y{v_H>U@4+?1IHZoX!((14O12D{T0 zJDVSr#||2#s&&WR3S(yEYk4_;>?Jzh=1k#BkK@7DDePnxj0Y%#xD5D_`0g^Go|#(X zM;L^BjX|uasmzkk^kWe_Q{vM0Nox##d}={eP<4_Z#{yzSJ+Kad3a`rOI*9nv_9Fy; z6~%N|S9`yQ>f&;_Lw^T0m&{0l& z@bSSi5bsI4$_q58^Nyd5rgv1^=971_*x5Ke#`2N<;7*!(PIraISHUq{|bDCTc@&GhV zI(vF4aSvWt`#|A;^-0Ly3_h2NcZ8Iu^Vq*779?d{0yOVVj{{^OrI02)qA_rB}>s8Gy>@XFgVMsK!w zNioUN4^&J7)g|k4a%K+msQ>SuyukErB|sr4rh$|-9Na_#b`^ zPh&RVvz*xq7>d(7lq;_Oiq{yctK>EH1zrx_MCpQHDtme!ptPOKfqqh0pdaVTa7iak zleV|@3IpVb>#nV#>$msUbo>q;J@+a>L<=TGOQjs{&hnEOu%;@bt^Qj9(QGuwBJmZl zTVkhqiJN;Bo6og@89r$7EtvM<CZ zxLlNNT3ygRZcF01QVKgD!BZWJkQ+?=O5Wv%$xzAr6CzL?TNzqNo;r}%eZUiJIG}eZ zR;@z|q(v$p!&RRDG4k>F6Lxpj4&5Ly7i{$#q1Oh6m0q!m0&~rXl<1pi~IG-OP)G9gi5fUQ*vz6 zuiZhYFAtkBJ*>=I+F{`96eF{2oG#YXFY&P*x3MLjUyBL zOztgTWf4BxLN??@7&RtVKz@*sP0&eaV*>z#P$Fb#KW_?`8Qj}dBn(<)nxXL?2g_bXi(2j@>pq(|{cydaF>blv-J%JSF;)BBr-R0MR zZ$`SNGKZH|Ah-Yb;?SiOG{OCz1mtYc^;;{RR2V1)24p-fD?a+U&n^g1F-5`S-pcOY zMw6($IYo6}O7WJkiVFAZBf~ZBJ9n6}_8D0b{mw$0b9KAqO28K!A#&#}=V?+?_o=)n z2S0uVL{gsNAq^=q4bx0QK|c-C z!S?U7Fu}VVrL@Qm%L=CqMYoYQ!rq{z=g8Y>QIFj&Rq}fCWVx%n)5w&aC^9o!%DC_g zgUgi4wcwTo+4|L9w2%)5Ki(?~fH6b(gww+f(&f7SS4X)$YL!M&*L%I7SnKDDju99P zh`$-I_q@XZG+_lh2@%`X#B66g15#<*v|?!IBz}EwG7Dp1i6HNXEMy5+CiT`oD0(=Q zdC(=aY14kQ%4(P|pcP}d9QL$e+C#T4p}>ax50Ho4^L`s^W8A_0lR7z?_0Rg3?yJP5~hi(`;X6PZF1NXJ}eeeA~`+5J;kHR_U zdCn2*SnK=yt>}z*!_I4c;}LMlMYwx~u|He4BncspM2>#lcd3(ZyHPcmdu#1Zcu?;9 zZt>07lOH@jEjq=v=Af@ipq)ZuDTBCJace@kY100Fx1E>7tEc?{uUm~uF3ufy-bDhe z1Kxv$f_3cN8ssnwb*{=2dy!V*69%IfEE|;`f0qAf@J3D5R@zO5 zXCQuPEET9w9aMW^yG2-P7Qb`Ae9qjhCaQm&9*flN6+Z;NB7k+82KdL@BZS&WeC>(p znuL)(8}#Wd=>s~^5$SfNov;@z=fwb#906I)Yv&PCdxHl#+MUB>rKsF#BPj#p-$f$$ARUKNhWMv}v78-(h4n7Lbu2kFKDz$Qy927096 zJN8o)r)CV|uGqr+L|1{4k=+QoZhNb5hbBf$+D(l|r*cAu!q%kz+ui*Nq)$VnNlVsd zz`bkE2<*|%Eiax|dhH@8mMJr)+x6Hyea{n{1CdM8 zK4^)^3@y_cETrx%+~<6Jdg`Gsa(Zvejfw=i>A+f4+iTP|9(dB)<7Zb1JgI}8ijN665imBP$tu-H0Wir4u{X0Cel zo&BT_;snt11B6Ve$h616U0&FT9hDoi%>Kwcy21RhD|Exk@W9zpsnOiJvvlJE6Uu&7 z_xW@#zOLBtbXAO89TOf@w}N}TOezUKKSrTy^n#|Y%nE4c=$H`4Kg1%_S)uJ0$WJ7} zWVt1=%qI29`GJp*wU5{7-iMbLX)ewFaA|lgoKF_7x1H~?$4L~U;j@cK#-VSoJmdk$ z<;W|eXr&>uBV}8Sj|%Q7Qaup+Oj0j)HIkhTCgHlde~y&#@tPI*E_COi&RanIm6{;b z#`;c77@vQLpPa41Wuv_}Ed7u`>R5tc^l7Z4F#9mlBJ>_rG<^r}6~Gd_3DyT!1kO_8 z&!l$yB3nMn?+=}yBqE?wt~1~2+HRD4oqtZNwH@uy5H{JbRvtU;^Sz9m-W5Oiwn?*y zD-bnov>nWwZjK@X-g-)%V(Gzc97C0WR@Pw$KD*Cm0# zLu-vJu4;cd)(;sP&s`>lr8+jB5ik~!J}!vF9UJ$ZMRd@tIV0o}%liTjqAup?3h(jB z0<|ySBge2PMwxU3)x}o-TJJVC4aZ}o^v|dycNTkg8kBk-#KWQRC7swA^!LU(fd+bE zn|1K2dZ#v`RLJg(^B$CN;gZ<3?|im%@2I9)L9x;Jpj^N5ZEOvugGrLhKBia(H;NP( zM>EJ6OAs4S2j9#yLBVP^k3s=d&qr>;2q>3t~i1< z@&#BJOaD%b7p9v09i`t=4GWlghW(Kp`)}LPe`Y@~qOt&`|8j`AI8(6dfeZfMGJW?h z0*u*z1{nXDn7vrHuW1R-Vm~)o%Z+|{E$+O0!}lnej4^#6+qx#b!A7+1A6yj{U5!Pv*KtM1(-E(vCc#W&KG*)B{`mgP{xSp3zmw}9z=J3{Iy|~@5r%?uUbXu6(U3^D_Z^j(18LLJ z#j2H(f7Cv>5zGI-pKozk&6CJ$2ddD2PIAA(q+@DdUpy%|5ys3w(oGN%6&Ng*=MB5! z4|%;C;G^$L{7-6@Q~K}7m`dws5E68W{QZ%bO6OoxYQ3$G+M2Sp1PY~T+5v9|IefTJt1-q zzk)CEVg%{^pp_;_M1-{$e4^yk9xvU<0hSDX5u0^v_S9{j3(H3{;ie!1?J)W5D)i*g z;k*ulRvoV~kBs*^p*}DDQMOiod;K&8dxUPC_o>ZH{UgRr zmYT`E8>XPOUyn|i4SMe<>f7fM+ku|p9DTanPBLG@O`v?9Jl@@KWeh-L{RoJ1Y(S3u zZF3f#OIZ4w|JNJ8ABbenQ9!~p)6BTQalOoS6=YhA`48eszya=^@6OOwi!q;i=Bg@X zF*;F;XN0Mj;5fD!fg8dxko7lb?xvNlj=#v-saOJSM)Q6b-#s19)y?(j9s_@nj~81O zdFmg~@%BE@%HEtF<#v0_{>VPrwK!)6@&<8^^>t_{{JnYN^+2-uYGn0-zArNo!R}YiKkugashow15f4_%S)Pg-W7uS?R|3 z_#CTJwXJTct#kg&O%?_1`HXIBeOuet2-AxkJe@E!0Fc{*pyp%(dgm4HGl=U%n{iop z3|dkReyk=Wr&)C_KR?5rN{Bly1n+GQpn%=Z8jtom%FcH&jKQ2sw*+tq86!VmWm@;8 zwhZ4DC+pTNE}U&rI5rBhL3bt4#Y&CIK*Hi4YQOg zb>a_RB-=Yy-l?RS@Y)=Qk>DY))sPq}M80RFfw$aU*+uOl^D1_?HDMc@{`7Wr=~Kyj z*Y@6kma-*V)M!M(d>JPfULsf`Av-q_!ZPP?oF+f{Nc?o;lyZNlx_yM3_8IdyU@*E! zvJ7Nj(knmPz&cwoxh?CmI#=T)l~n5)sG1xvJCg@bx}B-$dStBda-RckXAP^ zlofT>yM0=#@k^sDgo0h{A<_Gy$^DIS8@tz$pb#rOcDVTTJ{cDd5!CGUuh5kzE{9{~R zJqXEDhxz0M0RIvNCZ7qI8>ULwqRrkDC|NcXWR96UXFpO2tegSsEwSV?w9NU+w9i?n z;i1dL8C1e^-(O5F zbr~O=Av(swC1oML-7%2@%gJKcPx88)&f7F?puy?Gsy0sIGEs1ZSQD{lCa$(Y z)z%1E^!9GwsC}8QRsY~OMgAf%AgY&&1zNe)ql_k7dQtmcm#wLblBIJS$(!zO{jI4+ zAuH5g6iucYd|#Zv#jk!4Ox}Uv3MCP+r2dxLt|uT2&ef_j{$5XyoWB1m(}OX+DUCLA zTG(d10tJk|f^rRt^JT3guB^0C;f1037V~v##@?fHw~XkSyU#8kb}@gG?;O6e?fz*f zJYv4VpU6w%8$YhV`Upe(O|;i-e_d?2(3$RBii7SANfe>|!R92Y$@YbL$7H3mu9LN6 zu5lWhuqEc51U*+~jyrbV10whRQ85{>nl>(txG7J+${M@GC2Tw4Mzkk;VxWFjlV&1& zIzrZ_SM!u>oKjyFG>0=1vKn%TbS!O3s(!ymOO_FBEb;tTIrD9z!!G$!E0iq|m^+Qr zo%VF6Vn1M)JV?If$7W$?8su``54{H#OwL-19U3`axCrTx^8TI=C(DPMwV7dX9+Jd< z%TK>XwDLSpypvHYUgp!m;nU>~(OB{Q?mp*2gBrp<_sZYT&WE+KcfXZzG@;S(bA6{8 zMqAMHw+J*<8wpkyJ3HMInfmQqL1*neSVkyudtF=ZwG979cb+HIfl~;<$4GbWxxFKOCoqczOCihH6_idYKCcgtZfUZioP^W*0%Vl#h;9Jp(9_Hp?co5c-+w>! zYu;Holjr>djcpp=wvRvF53Q;b4Ws<-^HM$Q_{iRT)Z)1h^W5CKL9T_tJSx3Htrdc? z>&+@C0ToJGLF;!K*+bh^UG)cZ5AnbM6mXiaq1 z`7VPg^9(O+V30iP6JqvJibUb7NSE*hyHg~LzOm!gN~APA~u^;yYFh=M2ZM}m&#Cu zZ{m9JuE;8vlNjmbPk9N zC%Da?g9u(O2cBm9XSpIaj^wKh60UAnBRcx*6vUkF1Yj)&N^7?2X0Wkq9`)wjo5@W; zQ3?{!nol=O!d-VIT$-c!Q);tu*8;dks^nYd_SsOnNvA+NTgOLBX4Vg0bnn zvUwaRg|6?9%UBnoyK3-~qccpLrp`L+p!N9>g~(P@yWqS|*J=G$JGYPaEF2a2sLC^u zm*7~b9*6{SM;RF89%1OR^Rv=igCr~cs)NFdW}1vXbJsv-E$Vb{4>dXN?lu??ot-{! zGVs`8U7IMW^4gQBTVg&&$Q*@$iXF-uJ3gIJ^rr}uGor2j5gBIXvN^F~Ph!L`oY*-V zJDP4O;4>C4W<-5{TR7sOb=d0>>My2YNH%%Mu*7EdK+3(x-Y4c#M_+`c%+M0d(35}= z>AITv2#Jeg5R8iK&ALP{O;GNF_eTe#EHw_67%I$D`m${?udwv>kZGHtUqbue$tPE3 zx!j!iWi0wqe-yvRFV?cA$qg+KAHb#FF1G>U7s_X5Vf&EBCyqLc{ob-aqy> zR=qj4_WAJ`CtlS4r?k6}L~i{`56?wQ=bl%X`I@&1FZYNy1V#;_(VAKLV^)1P>&R8V zh)g?%I&V(2H1%SturU5Hc9gkyQ7>C`9pq47PWnXce2JsD&t4@cIsn=z-oGCe{<=DsUnoz8vS@~N~4Z~d>wHYBuy zBfjOb%96H3Vlz$2+e?S`)oVee_VjRI;C6>y$8@zH82s7|M8iF{Uv6 zi$p)zA1l}nAzHbM8)N;wsr1@-xa_+(R>%gTWr4YyL$=bBUd$VNzYSO zn03=;>y;$t>Q@a%B6GBhCY8qK6%-hhn>fh1Z+(C0E9|^z8sz3j!4`1*1(tN{L~~`j z^4=#G^_W=!D%BqUK=tv{?VzpSOCXPyA1<*~-KkSzYXS;Cbb_~q)bmyQ#D+L3g_A`c z_}`D4r($=CU77WE5s`3e(kSucz3=Z!R?il$h-ePycJ8eaq0N`0#^lkLH{yi5ydjLU ziW9#y=;(OuqlSL!BJJ`%i}-&#RyU}AQ=$-QK(?Y?Ydv~BQb?_9Pp8j0%VRH5cxb*A ztzhZmadPm;KZI(!nVmBLMMJ4VxIMupWBc}F1NDuRjfy6u3KMMkn*eZ+st&4J84#Ib z_ZG3e!%ID{Na`&oNf=1R0Hd)mi_pmIk-mFuFL?A-*efF?EP`hHXv(v56wpjirgC)z z1^vW&Hl03vyYRazaL)-|Q>(@;yS)QN5|Gto3g2;`Y;EMd5+eI zu$8BgjDSp@Zc--$mPqk@5$}?pd~Ku^dM|HMt+Od9e-t(V{14H0Z_$`&L@wp;NFM*@ z(kX7<%zimED_|nSctyq?6C-n{=PLsdZ!+}jK?Y(yMq$#o%d}&{iXv5vecrS+c)cm$ zT67L@`-4Sf>NsHLYUE?nF!nmkBrLPHk9wkO2V;w4THF#AyHk(YA-i;>dg-B|({J}y zOUUdUl$9FMntg7timMyWgIRpTc_s>QtILsxyi6h3Hx%LLx<}Q%rR{ET_p3+vejs~g zGXyp-v6~R`j;|7~wHi52a3rf`XN($M06RG9O^@3HUo9_Nhl2eM@hO(TB8H7v52jB& za&G{nBnC5UZtF9kawCEjEmTCSSWf%pr`Qcdi;Sr%bf=NK%NsOa~?n8us)g%9>Q~O`1sfO+Jcw%V}>GA9UR3~Lkz!$Gg7?r|j z5(rF8hmBcoP#U?<%si@_A))5omi*?)hcB}w10AWc3F##H%IbsnfQpfuyZS|BsOouE z-)|MrK0X%$qBhqvN%AxYWX+=W#>K(_Z)?(|3QrnkH!?DB1)lr@l%W^vkho+^h=&xrQ@ zRLul5l=Sk_#J3GB=!c^4SiyOqyX^4Q6)`cBQ$m`Vn1+`>vaoZK-=a;7_GZbaSNz?F z`)%V0%`g()WDXQKW zGj~jM8v&UawrFgWwdha3?_CtQs}Ql^Ztm$ih)))pC-1unSS6|eO7Rtx>VAk7y@=O# zspYL$#8&f@AU_@873=jPmcDl%&e{6@yq4- z*@|*HlGMxg723namXNBw((xMq{Y<*lM}}!nRV1ebQAFZk7gIQN{&-Bm$V%s5y}M8V zg6eC)F;#)_*ureomC=3BQ1mdq?xdxTDVUI$PS~cj`eeTJeYcL`MHOse4i1i?OkE5T&~`LFP~pU`m|rc%oRGtpkNv*wYgq%&#n@#>ZbPfU6vQpDY1vU06< zqMYf7jWGP5#M=o4UT)%>ZoBX!$j48y^lX^79@RIldDTNBG1NT#FcznAE~d&MIQKi< z$HKQt!wZ2Q;QE%va}QIc(V@k9^D#Z7g*3Jy$+i$U=X#E3y~@m!xPHmU{rYW%TT9%c zEjMflK-2Npqj8zP5~zA3@R4Qm*h^zXSa#dM-l?xiz57=eukx(k>3(Ey)KrmSDj3AE zK9Ne=SDP>}(=3-_IY5+#E!5l)_vW6lzKr^&0uJ2BBhuehk3T;5-sGh^?hUeqL^K_R zP~60kSU0y5QYY+o#M$OpM4kwXOga^H!|Qk^$hvY9 z2EGt={ZbaJ12A40()1eYgB;BfpA4%{vZ7^n0QdXx(i$PVsm5`9V9eMRYs?X-u( z>fES9FKP1|}mGOZJhwpfw9Zyx3I|Wy2p-X#*>Zz>d)hi!}gbZ36bd#PwuQnN;t?4RV z69K~O6%TdpNJ2c=_RFO_VP{q@gBrO&60GW>+oKfi2o$TaSb39NFkU}{1kg4$e!S6> zX6}Ts|Ng_E-hA~5iTPV)0=J5V*a_(;{FL9Ij)2u2=`|?E)!GW9WMsGss z)`$beNgg}m5|2go?TVRKc9?}ca$^aO$iwb{?wPkTCan*7$e$svT_4P}mP|wC>Z0u# z4wdx}W$d?aY!x4qQqQ)>H?TBWlFVaNt7K4aCep_)TcalCJ(4r7cWD;pL;8K{Ww%7zg6u^n6ish6I$!!0 zDkAF7KBwjYi-wbrq(W}`c7KbI*h$WIed3>DGww3-;YuhpRn}T4g2jN@DNb^~l{uoi z+;V@$pJ_*7hB_TTM6r{Zi3h*hV3~U5QnP8IUX#30JyA0>e|LKD}c50u+;51X^g% z{F|∨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

%ngNayL*Tz0C3s&@IkS!hO9I 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 Kc!8*%-~RyEr=`>Y literal 0 HcmV?d00001 diff --git a/docs/img/tasks/demo/dvc_init.png b/docs/img/tasks/demo/dvc_init.png new file mode 100644 index 0000000000000000000000000000000000000000..7da5ada16e81f0b3b647f39816ad4dd7b1ffafc6 GIT binary patch literal 16107 zcmcJ$WmFx(`=ANIgF|rl;O-WjB)Ge~ySuw4xCM824^FtaTX1)Gm?ppf?AbGCc4zj? z+5XUQ@9nOx>Z*G6dBf#oBoII1egp#pL;NZ!ssIKCz6<=n4hs#O=Q{dLz`z7*zlsVe zx#^r_y2>dpHlCh!Rh@Dd{S~az=}>h(Yikx2;PjQp51h^ZgE4l@c6Pk66O6%IJ4vIjK_3}&4?e= zf8Lucg3?I$-nQbn|Gpane1?6v{^IzyIb(=tztaH+w0-%Yb~ibgWyY+ z(`2)nWICS3t%?fV=`K?l?B1P2qEKStT%ysDG*f&+yXtZM;|hymzjbh9V=CYMJH{8+ zN}V>!QH@3pVf>1u!-v+>G39N`lJ5%af04zv6t*Rw_1 zx7S(U;rwC6?WKkznklHrPsu_eA*uBIWTy)YYTS0`IT6&iwoADM`0RuHcKdPU0;7vT zmspHClBt(Jx6kAA2uCvI1#<6SV6+CycQnVfba^}G0z;A0&3K0mHQ(pOFy2x>M2%kk z@wTXe#EReZF8(9srL?SU^3Sq)vridmhmWpf@^FLcogcJE9yi=XcRX8z^j1mtFU_O@ks+2`uUZgzejZ4 z9%%Y0ASyt1bcw~{TJ4F@ujA?N`%6f4!PmN^TASXGH7-bCUA!(lGwAD7+tm!#eotl? z@%4SmTxs*wH83zJkeftv*gaO)c3lxo7yJGr;r`yu{gV7!C!^fw5hoUfMI4-}%t&jG z>q9aKXylr%Sax~$Kyhi~v%fDacIR@`>V+BNlbp8D!?M86E|Mo4yhls~3sNQN-<;do5 zY4r0=SJzKnD%qdTN1SPv4A%Ie@~x`}tftplpvbLHApVxXG&a&6oB@9%p_N#Ez3 zShVx4BuA^&ORUTF7>ziPot=KFN!RyaE-%@q)A6p-#`WY8(Q^&CpBi)l2bXq;1n)@> zgG88M+w~@YBIys- zgM~|uS3zm5>6w7`e7zX$0ougsUzfWqZ=R5>j10P$N8}#^(&-~FPsrrthxKdB#93)QOH5_>7-#LEH?{_g3o6;wLv?_2*s3n z+ZFPkrOL@3h3){j!2ZJJFs=0?x^lZMfSzBF1& z8Yx{Ub{VXdRAq3s@2eyQSS2n*hBBTP!WvDMjO>T-hsK<8O%%Agzz0+=ncMJ$mg8#%o8JR@)b8lR6+vS|#VGkK<`!O0%{ByR2 z(2J0ekV2^y6b`>j#%ZY1?UXUC({Xc>t@cyk`qjXpJ^1YonO99j+YH@8hvmPkd9#AQXc{Oa0ptbqS3IbH=jy%0#$CpV?t8l>RzX z?ZhfN@mK=Jw=KpuMN{22$DXir-LBWRh}qvFp~_mmbV@T}D~yXDm9fY?ynS3=B0l$3 zTJ`^#%5x=(?p%IyO?rFreH(>!s-Dx$byDXSEDz*j(C!qzqgAPm>O_JX{1p)H0?~Q{ z;;^tjTl)%)gmYL!M?s;Si3k$y%1CX6v0ieX_{5|0qS2+FSlG^tN07nguHZwXBx(Z6 zplEYBnPa=X4^KSy1|)kNAoKdLStBnxS#q_cdRpJs{T*2`hB;1NoV8|$!_kYJFgd11 z-4HD%Hz|0aGYH^EIcQZXYP+&|eSdSop0It$?y`%&CgM_4+$%O6o-*cPE|;I)Z9VOe zOvWui!e^1nv#^^Moj!>=*J<-vt(*>*nbWvi{;CleiZp*$EnfvS1~meMfLlKHCrsXu z&&1dezug+f_o8C?%YbxB9}y3rx;BL>gC7hNwCfL}+nI7>FP!oRldIGYYAWRuO;|in z`C^TMMKct-iP7_1fQpG(D9=T@m25M~g3apEe!NgKZHV)(|9;7(I0_9M%_pQi8jC#u zcXT5Bm#z}h2PRXv9rh#Z`@_WKQr;CFV?d7-u(91xKbZjgrY~}+hN;Udm4TTV4hcc;B5AEd^!?x z-#9XTneU#zfM$n1*NLgf&zt7phHbYcQ!Xr3WwZKtu+W7s{rdXIF-(OeUxB9&VSNlv zjeCXzPK=*`zCEA=C*99Le=ezjQ>Prz{cTy`3Ufbrdj^xqudf9g7m>qRN@FHOa%YslQ!`R;!I7!5sYj z+8(!uWV|lNmkU%J3@S^Fcgba{RR?#|reojgFe~!KD|i&@8ndsT-2M2%BQ6(0;~2r; zN0cZ_3G%0s`F4}mKtavD*zzZEZ#?_EQ~i;|cTzI40ZtC^m3%q_>?0)F;YyMfTnH|i=+}=PIx^;2isiE>@y`45+GsL;uVbl3>V8AlCxd^ z(rWV&>F-d#Qt==R^7{JU-<5#<<&T-$3fdCNk4W(Fi5p!}KcL{TzK+bDWVP)s zUjc&%4i2tn-t}zq`+#glezrsuKK-a>W0Go>&f?L=C#SPX&C`_@OGdJ7#eicOVPWB< zUgq_K>7q1#52Allo2``+pWErptM(Ctnn4g5n|yC9GkJqdJi>PMv9MEVvDv<^-fUL9 z{}M1}6lxsU7pv_PMFre9%N2qj_Ff_Qlk_v1OJxxkJ4~x^TUD%=h7%}8oV49UgDQcI z-|Az#P+S6Nux@WxDAe1wfg-qvg?6t8g@C|7ik^DeBCf%{K1n&b3C~bJu=mwBY>K+8 z*<@=;j`w)}s}dd&5hFXT!Fdyl)KGMSn37VZbiUj$cb@lDdC`ahgfioSh&!_6e01{! zm_kxYE8_hwfvDb5RAj=xUAsIGjkXF$37^mtu!u=JtsjHixI})~{%wC4-_-6cTCjq_{FpZAj_Trvh_FLjHqB#H8+QM`b9&{xEaoVi>IHW}Lx$L{q zKyUJUU|$ zknp*ROO88V9>4pdbC0KR^NvVjeGs&H7WLe1;=R|8XEq%CJ~C(B-=&D9UTt;(BVA9@ zx17U-o*?*O)N_2YKHm%bknro@=iYZo#q<9tsem3n2>-hhI9&$+6GFgg8$P&4O7b=6 zUG#l3*kpZ|5OIKH^`RptCDq6hl-;rYj-C+O?v-luXb_d3zx|BW3rq4>IwlB*oT^CD z&8;3Yj13-sWRG!ULp~wyT>mXN0_D;;-cTRBFph`_m?Xvj%EfhV$clamMyUD*j z{pEj0_yeN^F4lnzPJQ=rNdLd+jsK%t_W}U1!HxCqDG>qA$yH2doAD!Pk;VB@DwWsQ z|5(sYPC-GzS=&l0gHE$kcynuu|28}(Jbs5(1$cpqFNB1IHn-U%fJc>Zflf6HxC?xZ zuBJz~nYR}vNt@$g#>1a_Cm))8{5R=XdazvI8ug3fFI`tEShJs3^#!1b1PyhFPw}aZt=Lbjk z^L77EjLPCiINToP^)~ZDoliA6R%?JZCW?$u_L3^0OHW64%v+R_y_BQxUeF^y8JURJ5qlh9$j_d=WBLcBqp91W6oO4B+XjREv`X8$PNkmekQ&&F0fFbt>yC!ETyzVJkk zzoE!P@!21-e)`$)H~2(;Pi7p+rT7jwF5WcT>pLUK4(IFoaGj14NmW`D$yHiESxv`> z0X28>f)Z_*U0=`UnTm!_H&xmYW-k+^N{WWL+mZ#u7CJXv;jRLLBl(jExZEUPU&o2a z0Vx@w@88pJwbAa3w-)(l)$@*gGE4&;{leyN?X00M?9|SPDmnY?Pc+v-YEYP3*UPCy zi#w~N;;!@ap=Csi`pBF@t`j%6??$f8{9jo0-?{w-K6!<$NKaNv?PBv{VqymZ>__+J zeKDWCjv7x|k<4!`*e$-6ahw!bhsG%6yM1kOd1>WtV!LYjk-_V$V=|gWww7{q16as) z;Cin;VhTg}Rhf%L4zq_-?aFvxzkN&S>l39`D$oB>r6z{UW$UsLVIc&k+v;p=5eWxo!b{fb+>3TSA26bq%3aT^X(U{^6_g_UZM4(vsn)_mR) z3wOauHrX+QL*mMfsIuFT~k# zkAA{={qY7*p;-;iJp~7R{RX=tGLj!8zkU^-szqBdBM}15 zJwBh8XcI6owyHo_Tx!nK2+PkCwrdn{m-JjKjM!+?wXBUe|`b-b_ht>1H z!;395;PXdBgoO)&Q0+%hhZ4q_hogWcnswP0IH83ok3QOg0<)e;JYUSebu zBl%Ln-_XoSzxgS#Q^vGJl7_{^sKkpL&ci7zjwDshj6dBH#hpcSt+Alebz|Emn$Yh6 zvc=)>8V5rfbRKd}BF1la&eTRIdL{NfX^zch{*>S7J}my0CycTWeGic(3MGr*Q--RD z1gg{HgeSUwHMm8g;jq?a)#D{Q2HB(GCU8AQ*u@3Yuokl>b&7YhCBRr zS(kTSmAX)I{FwDp?$1I;)B~RPfEGOnJ24ogi8&X3u4>H;vZg%7&~QyGGI`%pEvF+q zr;AZdjX|rG-2UQXiXta{#&SXJNUhB#Fosr_-2ev*i&5M2`UiA$+ECfG6SvE8^Ye;t zPG9;?F*>TC&Vg_m-e7GI&R*~gcO^KISj#tMqk7a$AhtGKv*n+L!)5boKtSqT#6%`M z(Cqk|wBKm0^M&vTaB7|}h8mbSZFkZngFjcx)t~`^5_a`=r&RHhQ$67Y-{%`kZbIz+ z8vOXZu=u>4&=0}vFYx|-qMwi0$*HhqbsCm_vOr@oXvGo1V@|5iqbvf}X^9>tt-3gk z^2Ov3&iZVr2V(j@wlg@Hk1?%EQhI6?o{&-K8;e3j>gT4E#rY~7h!)4a%1Y1c` z8`I>ud*EuXBq1ft*LbMs-*HI-wRG_83@RUrXUgkYSP%^l3yW`VEm?zuhEWiqwNBr$I{QHMn*4JX@DMu9mX}IV*8|#MgaUYGs6Z%-R4?S-Umel_U~)J zi~|fM*8g`eS%((n7D`J`f6{U0@S>yB=|v6LTN#l*qoNSpFIb+akJRIrUtk{;COBR< zgB>qSkDAVSe0(70?+=ydZVzH%k8cLsi4G193dfxGHu(lEgC7nXEH@SN8u`4i3)iyw zJ(G+jq`V%Lkns7)uXY*PjQxQq?k~lB0u7+v-&Op<9j$8B zpXLj6d8=dqw1l3t^`za3-!Ehc?KlLH|wR(z0x%ohh#t~7#>RT#U?_il?V zp0VUqR7ZC*;M%^1QL$-bi}~vCI6zPp2&HQzF=&#kdR`~Id!!wncl?dsSX44u95UU` zFMOV3S`Ws3pFLMY5YzLO%Uo{nkd054Zl(&QVfHo|q4|0nPhMuv)uXR(PxPqeOUrp^ z^+sE76v~avF|udH@1cb5o|1)Ey4Ghxo$e+Y4qMx*_Qd7|v` z4wuXD)K0#BUg6_nrbsCAi0a!-G-&)20T*h)pC8G?iiIUZFFfuM3?nirvROP8Pe90B zR;5av3Y}7#@WfUDYU*LWB8RDQSk4SW?5v2NWhK)F%#L$bPiZO@>a_2=z+%>NxI(k(#JU#3 zV4>8RcT393wKAc(nTuZska32igT_GMd+BZsi$9a;uE2d{4p{q;`<{ak5GQ*dsOqfS z80Ra!5Hy<18IR^{?HI<`u^4m`fPkgT_TQH$g(`hRO~=awKCIor4b)nr0|#~urq_MD z@hplGQ@3t5QEb&Pp`Fs%0>@;VTFZIDRmS}}dPAq9Z+a$ddScUI8HLi>)Ib1x#tgSR z4qw1Q2@&-*i+vL1W4A~P;4G6i&`!0BS(a#a#g{WfBi~p9W~mdTFSqw@xl}5L_V_5v z5a8}4ZrPx!+MN?DcD?2J=-5Jb1p1n`08Yg-k8vrkpy-x5_#&?{!b3d{tMWv)NfxVL z%6q291SfRk&ri$S%cFVQp?I=ErE5yrREGH|Lw`##a!w#f2nXkFX8Q!fKAf3RdU|T} zL*;UP4LDxiL;Kq{P~$(LE^jfq>tWI7Jpzqv8dJ4`ODNck9W{u80d1x_syk92ELwTQ)rKq%#wCF4pDU5w3aL3G)~ z;nMMhmeZy^I+r8|aAhWMnrzlo^w%1mDz2{ntXOh=?DfSd$Zk4YIIt(m6vd;09p@$| z7wrm7yA82|VNv1oC33Vy_0O}-l~(U|52#B|SR@?J;;lkjw3rqo-ams-kNP^m+yhv+ z&0jSdZ7ktgW8ftqT_CNof`Ws;zJUkUS8VEN%JbFQPuEm%>tb&mcQ@Fqbt*DwHGiH4 zwFvk;t0kYYzCfln@(-XkSjj3m)gLq6AvNkfMyaRbWMH>3@Rgxc$)eSMZiAT!A>xCb1nF1(^`1RYZ+9y>F%uUR9Rjw9R9E)dq)Vk%3(a5* zRNB=t6+9MwJmA?{Hjb2H5!dbgm8sp#a2M~wZELaVh5jljHDg@OJEW#Yj2Co_BPl64 zvj^7}DrGWYsVdlM28lBNo>n>8GSl6!vtx^QugQ{5K<(Ea7~3RdP^(wVp7w4k*KE5b zi1uDJ^A&V{tQUZ(4?kuhTd?^vgX0m)sM~3<%x=_IiLHtB6n?B+Qo9p<#eWkB(IzXF z^^uiF#(J%Fs>D(C=J<%+%!o&xLfdC=jG#n*L^VrPY`F1+w_d16&-U+TMA{ROg7}_X z6*p6_6pi$J$oV5i`@=OW0wcn4BLT0|a>=xb) zYSFlyi9ldzR$h`d6Y*fcfa05__7;`Ylw%67ZKpQXZNr!Asn%%P*1xUJZKp72n1ki= z%c_V$tUM6KRT?*GCT+}zi=5Vz3YiHK17PBsHv6fhojRa)9p07-xuv^`ZKNA~B*ErZ9{ay8(jvQn`cQlF- zmGU1Z1450r5?ukk8Tv8)osk0Jjo}DbOQKT8Z70w{IZ^gnJ{;qnYvU045!`~JvS4Ev zl{nVFOsfQz3JG!X&~EqRubI|JKz4sf42mkOC8B1W*)3+7W5kO0ey=n;J=6lx72&5{ z#$7EEVj!y}FJXF}Vn4ubWwNx$)G_cq`L9jnkp&Q|uV)$y+~Mo_9YPlIqLI3D!sAr` zgffP_Jf6iWOE9*Pn#x;03B-T)Z=B%v3ty0OiHwg)@pE~ckG?mZb{H+3>t46IoVY+S z*eS$KS^!C%}`g`WKH&lR_gU?r|4(PBOepS9ITZ%CT&I`V4dPM)-8#g3A{KF)H=JV*zwre za1H8;$4qtpNZu}C%JU~7Z9qV@VN-~Tl?rXO%!SasvLhwaHkfF&=H(6cx9?6Ga5La_ zTd!DdRPE(kb*t|jknG;?2J2xJF|AUlX!WoJE9nFR)_7-T89oxNm^}!EQkjL~YadFk zzA1ZIRbd@0Qx;x*IX3~NS>F=q*|yoNLQjYDEIs{Xn%8&NzB^r2%=3I1K=kwk6Y+P1 z=i7*QB#}Fxn}93A**G%`8jP5jPcxh!kBUIS*{Y*JVG5bMQA1p|P&+@~xZx3MHHi+N z&`k9VMQZvjN(|%-2$#QvY1CVg31WVxOJB)lTUjm~)p(}NjNF605HbO8mrb!v->(2- z5+01nI3m&Z)+@GAa1f%8`%FwapXY9Rm<*%P@8Dv<_#F9EUG+mIlsWg%tWF{NK80MH z$i-EP@S9O#vsM}7i_Ab!zVfI?A6IXX8J%jWF5%pD$i*8Bm|K>{;4N*lIc9;WqugEf zvXeOYq3;kPf*XmiKX-ot=W;%Yn$&LeDxlM;RT3oo(8nJd9|~T7*xvwtjWrX`-KrO8 zO`}ptLp55%e1I}eghX;E{t151^*JcKm0lE_+66vJuopbg%wT^AO+E}4fhX&y?;yj# z`WeSq>4+RLyDhh9*pH1NwQ-Y|$LOU{B0;2ipFj{~h80*|gsCMrGK`can45s2w5}K? zh<)ttHY+!CGh+#-7v2;*=k50|3#$wWE;JOCWB6)s?JYN}KTb@s_}nzk(bF~;-J%aF z7TAmAx?4FUd44>TZ{=G(-G(?U=1g;QTmnlNOU1^rr)izqC8e=QzlalqrDA@572&tb zkK5@r4eLE%twcb~I9uwxnK6fK9uLb0Um9~q|FyM*Qm>bS^u=j%p8lK;NIjXGny8d( zS?eB2k%8C!hm$>tISSr?msAcjOd?WQi(E~>Oz-fbOk=9n>sQr;SnmD>aBP7T>I zGS;|C;KSG@?077#sqtg>gMk-0_+)}zp*-LS86Ph@!zv;o{P?NF63iB5E5z+Stesdd z4F9~F$;28w7B&RF8UBiV+D-48o&$(+ZJVGhSvtb1Un-R|pYD}(jm zOF-g^{uND_@n8gr;8|bl~e~(;5!U5W5nDVLJt@V=yda ze2$o#TTmmosAJ`gw{ea6VEnGnx(7RcQp3><>*VUP z)rUtkQu-BmY~%V+zsl8FhEH@_Ag(k93AA2)?6K+$Nh7FrKQiaoqt9~9#a4@r(#tG; zsFRJdH%l6vOOQc09K#NLOnk~KqPYYhdpQ`=ucC!!SJmv27j3cfq&=Y`{${w&ZFdbq zfuVoY$PmCzW{bq>8_-eUjk5jPn6}hO(x6fD=B#-aWazplJ}eowyPNFurrd2H9jmTF zM_=Q|A*NHNS~& zJ=_9$y*UU148?&K-p^4&&zSqXde7_(Rxb{&yRM7i*kKnesLSz->kESZKwWH1%%ngx z0zwuqOQhLd_0uVFsl;0S64@8u@oy=pT*|EDVAgC^!;1PLSUWc4G5GwYoOsbw)S&am za&g$a7#S#t7Q;Om>+&#}!IWZDWN;lTye)l^;&>miJP{ZOCb?0K`adiNSzHIInI{(D z`r^3LA0~;~GyuNU25--0j>PL_c7cmXv6!I z@jZOX_{7t~{|9xuwq*z-&+;XP?Vt;I3|tWuH2Y8nS(Ln0xuqAXA)j4PIl{*=)ZD;p zlB|ZEmo|9TQ+fpON(dcSI}@jnv85TeXB1f@lGc=%NV5;n*ddVOuv=H5wm(^3+ZpP)2mw>u zY5*JTt^3Vie@a!!|Cei~ni>U+D-m;uWxeGW0U|Dol1AE<=l~cJUB+HR>SDu7;frtz zy(u&japl!^iK4@xRpbV1l&T1w9&PznuB-u05O$9h&ewVzEustyqYrj`qU&~q>oY?5 z#0;22cI#TG7@IB4Ft8|X+>X18Ym-g!l&1zkC^8>TLwQzHz42sfDL^@vO<8G=joo;N zC?YE&M#vWfLA-80(ov54X!j>nhbmzGkg*0SQeB22XwP)p{qx|{V7V9W)v3E4QX+4H+-(!5cG*1aZ#Dh7h=&1oY(5RBROV*e|Fkh$Uf{MR-1lnaK%kUM}L|r~Sz-g{gYedTYNuxJi*9 z=yi~u@K(^*%1@M}f>EPA-TKWC&~A699fv5IcLb@pMqg2=2{__&o>F)+AnIX2zrhx; z#tFtT2MDY`9cUe~ON0q|PjlMIB-x8TnH!IRC&KAVZk+cBwYjW177r4DUTs$p#z~Y2 zG{OpERMR^bhQo+5sJSSx=RT|DH%HKaDJ4WgrS#fpex>XY`xIk6x%M$-A2(*St=aA( zH!IzkoH;7wGnxpR+4PXYdYXP+9K8@;&@{5W_;r}QeHeC3G>4z+sUFPj>2i_vr!o3D zM5enBJ&{rUA=2purKo%vWTYmRIv+9+V6%T-4w5S_MA8-_;S=2!#nzaD$$O|&dB|i6 zC}whT)h+r9L`lJkBFNw`2^Ln6={d>~k&U!n{t`SY`?d>r;el_Lxb0o;P- z0(Y5>5joQ^%9j-8c&wf%GmQB#E6Bs{d|m`sb!uP8Z*$nJmEcSM-s?u!r_-vsi=r>z zlj)nN@<-WjI}89vEkDmTuR_!D`#=ny?f7q@MnrV7_!qmet@{;VS3qE=;E2mHM@K>=Y9}XNxBOkLX57~^-bOj3V{uTFpLPX4hMhbDQfFo*!bOZ|NHy2(k*s!a_m>) zb2D%RZe0ASU~J!>sF73tzaNPyd-S|MY`I~R9ZolO$p~~CQRGuTy&QWixQ#bPqqb(l zAWb1bqgGF~nT}^F`oqG(&7NUH^uH>D8uX>+{(S6S@7^j0ctR-jOd|9RumMBni;)jV z@I0)3HR69h8GyxE)MdmScVFlc(=*O}s9RtL@2AF2kq;M-`6_lUX)g_=r>1dkFqv3T zAl+t}Y?`r{%v7}PKuqDV&gy!Uw3OrRmYBR>9_P_qBVS;UO1O^NA-3d56zpZ}0s=$s zJhel974XjiskLyIxrHfgM}qIsicorVzzeMs_6y($ql>-rX@($!8U&Xqa<}CnImfP0=TX<)G9Ais!aD7wEXglQj|^1M$Idw2H= zOoMj1b_{VP_$}NxY&=;2!brG~_;^}yEC}td)Wu}f0)59F3IRgsFKYwIp>MspzEL<^ zY3qkb$D?PQpxdO~}TNYBhLN#3=XvF1A|YKgBr~ z0kT<9pB2`zIUt%<7uGy((0XF`P|(myv*W4z)3LBa#oGd2YNvMgC6-yU=@r)9LMpGy zD!SnPu6pZ)@w%Ts`d#(aFnNWW5uQw@JqNFY819p6T>Fr+3?oI^{6A8>B0lbSxNT!~sqXK=f??%mg z{6)k5Z#DH??Qx@Xt~FcaZLFgZ2k7PR#w-(;s+nNr(*}1cnx0_!NU01Tr&hM7ujAP= z*i#;nx(E^&$A>|OC0J9U?%Gw)+XFh&d^f>QR+b$!P#M;6HySZ)W8g@TR#|NofzghF zM0A7YK9)pff;~e0M)XF7dZC%DH<@=3Pn*wi9d9bBkwZ7Zi4204}Z;w~2sI`jZh5tYfb{pY| z!eA#p=Dh_Vk#IvHVdir0mFe|C4Wz`|JATY<@>8D*`;sX*vn|~nE>=%~hIXiy=y@){ zSr3I9h=A%7^ylTp!IoS$7^i!%ci|IdqET|^b4Pbwe@fa-wLNv;Rdv z^+{lvfTVytWKtBu*a|t2d35+-k}o2%cDJMr5L~R2TbpPUe0&-PhUhn}@c)kQw@_(t z@&kK!9kV~l^r4HHC@7?}1f)&${~ZtAA5OfoKL_H&zjM370tEjOm3@)_N5s|tznmAq zwa3Ux#%=jiy)(6F1n65@FT>%{(TTb z^7ETN0z*uI+15yr&ETW%|DOC4sP*{z@J;!ho~kw6W6*|~#N+me;zL4qJ-)HWVL8Tn zFFP1y;ezL?0w`P$x~682leAB?>KcUnKF2Mav$XL!nxwQUVRX6-4o@6Pe;x7Ov%Khu zwE8~AqUGWzJSg z`^P5%;nWEC<=a<KuDKvuS7TCT_j!W^h72u~Op0$QQC zAImHcUerpI%4Sfg@(~2AIALs+cn>= zCc)v^El0cz5R7p|A2E}RM^q)Hq{`{E+C_cn)I>?ivWG^~g)ZNs!erC<#QHCRN+}kz zA*OfcT2xGIxMKM?&3QV9tut?HWi#-=&aRQY^z_VxpnOyX#}j7m0F2?eNeD_yPt;3OK=vR}FI zI$b{WJ2c8b!u0l=+yp(fPH8zGGbsYf4#1#EKl8$1du!1|MnlMf%3Wh9AYdHhdxF6Pcye{1wsl(TaX=Rj<|8DsK5Cac%+kn>%MMWuaqt<9YZSrt< z)MaTDQM^C_ns-_yC97_TCv@orSVHwCpFnZY4vos(KDHiytJ31fsb7j%IGp+kQ8=7J zZ$RQ`+R&HDX@PO7)Y>!F_+6Nzo?PzGCZweSncn0?pge5pXpQ#0)J&2vfmUB!RO>$k zUBM9eVFBXb|oJ}dX<;zB{!{s)$w(ISR`@?HdfCDd=TGv{$`?Qtj7n?LQ979mb zVswppq_}k22*6XHocRM=6CjOlT_YQg=0*fN-@Xn;(=!!D*Bq#!KTrz#R`z(EK0|r( zzmuS0oWO1o|K@SMaB-Q5YVanL>6~#F8X#tLUcHg_XF#pewj+dREJ_l04WOBd4f|g+ zKSZe|{qzqEJp>&^irXhRT7!+Z&Hj%PGeRS7^gQ@URaQg$pCw;z;F+23-VJU zkciKBFXOnZKs_uNQQdzm0{EWT;0TX)9_O7yWkucawN3`H_euqDU_nN1`TO&jTlVzn z?sWeWq4|TkK}o9J;t`$EwH~3u?DAgU@(zx^5`Xn*wKP!n@@mKDvXi5-XmJF1MDf5`pA;><%!#q2#D}`1fQLkp8Y5 z>%RmzAf+;$@4@N7%NS+^?uKzXVF2K@iSa5Hone5!+!2xt3knhV0p#K+$jOxwvM9bf zIn{TJ1Hd6UP-vAU=zF>}F1oyc^u$eO3yh~P{oF!dM#_t(Q{1acr;Py+ssI?vR3g_> zI%B(_*6MOb-EcVb^ZeY7+xsz!&0<9gfZPh7f`j?d)>?0NPFLFiM2Qg)w-)?B$<((d z!VYrE+pUcEV${o;VMl$W*s!>`3Atzo`tosrEW-qdeD=%LM(a?eN)7FRfB-vWyUV%LC_wy4KP z#i0f$_Md+B1Yd`TH%&BK07gxUjLuj%j~zC2Ee$R(Q#q@ESa~v zTcMFYB~InH+Dc$mMfJX=-~hBn*>WxdfCC6e3=9p8pKdeXp=bc{`T-AM{8xL_w~s}# z+1~(sBq43rT}U55x_2vpraW+xvt) z$DeEb+qtRi_`U94t3-{f>x@Rizv?r`0 zLQg%8`*{%Jzv|}$zd4{-JG8FP>b?j>@IKF%7ybjU!zEpdq?JQBhGQjJ&hL~ydGZ&< zUll}{)TY6Ui$Ga-*3ElA$wR+<_s--=r|rYwZvyJTnF8LIv%n{_U3q(Rv(vooVqbpJ**5rS_;rH&62v4edTlM$^H)(iM=B5?WO literal 0 HcmV?d00001 diff --git a/docs/img/tasks/demo/dvc_upload.png b/docs/img/tasks/demo/dvc_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..274c1a813ac374b21e4f450ad40f6016a924980e GIT binary patch literal 28869 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 literal 0 HcmV?d00001 diff --git a/docs/img/tasks/icons/dvc.png b/docs/img/tasks/icons/dvc.png new file mode 100644 index 0000000000000000000000000000000000000000..404640c8627eca1d6ec9517f5f31e2e0268e9b53 GIT binary patch literal 7649 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 ${project.version} + + + org.apache.dolphinscheduler + dolphinscheduler-task-dvc + ${project.version} + \ No newline at end of file diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/pom.xml b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/pom.xml new file mode 100644 index 0000000000..a0435647ca --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/pom.xml @@ -0,0 +1,46 @@ + + + + + dolphinscheduler-task-plugin + org.apache.dolphinscheduler + dev-SNAPSHOT + + 4.0.0 + + dolphinscheduler-task-dvc + jar + + + + org.apache.dolphinscheduler + dolphinscheduler-spi + provided + + + org.apache.dolphinscheduler + dolphinscheduler-task-api + + + org.apache.commons + commons-collections4 + + + diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcConstants.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcConstants.java new file mode 100644 index 0000000000..b15d6d450c --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcConstants.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +public class DvcConstants { + private DvcConstants() { + throw new IllegalStateException("Utility class"); + } + + public static final String CHECK_AND_SET_DVC_REPO = "which dvc || { echo \"dvc does not exist\"; exit 1; }; DVC_REPO=%s"; + + public static final String SET_DATA_PATH = "DVC_DATA_PATH=%s"; + + public static final String SET_DATA_LOCATION = "DVC_DATA_LOCATION=%s"; + + public static final String SET_VERSION = "DVC_VERSION=%s"; + + public static final String SET_MESSAGE = "DVC_MESSAGE=\"%s\""; + + public static final String GIT_CLONE_DVC_REPO = "git clone $DVC_REPO dvc-repository; cd dvc-repository; pwd"; + + public static final String DVC_AUTOSTAGE = "dvc config core.autostage true --local || exit 1"; + + public static final String DVC_ADD_DATA = "dvc add $DVC_DATA_PATH -v -o $DVC_DATA_LOCATION --to-remote || exit 1"; + + public static final String GIT_UPDATE_FOR_UPDATE_DATA = "git commit -am \"$DVC_MESSAGE\"\n" + + "git tag \"$DVC_VERSION\" -m \"$DVC_MESSAGE\"\n" + + "git push --all\n" + + "git push --tags"; + + public static final String DVC_DOWNLOAD = "dvc get $DVC_REPO $DVC_DATA_LOCATION -o $DVC_DATA_PATH -v --rev $DVC_VERSION"; + + + public static final String DVC_INIT = "dvc init || exit 1"; + + public static final String DVC_ADD_REMOTE = "dvc remote add origin %s -d"; + + public static final String GIT_UPDATE_FOR_INIT_DVC = "git commit -am \"init dvc project and add remote\"; git push"; + +} + diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcParameters.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcParameters.java new file mode 100644 index 0000000000..97c404cb29 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcParameters.java @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters; + +public class DvcParameters extends AbstractParameters { + + /** + * common parameters + */ + + private TaskTypeEnum dvcTaskType; + + private String dvcRepository; + + private String dvcVersion; + + private String dvcDataLocation; + + private String dvcMessage; + + private String dvcLoadSaveDataPath; + + private String dvcStoreUrl; + + public void setDvcTaskType(TaskTypeEnum dvcTaskType) { + this.dvcTaskType = dvcTaskType; + } + + public TaskTypeEnum getDvcTaskType() { + return dvcTaskType; + } + + public void setDvcRepository(String dvcRepository) { + this.dvcRepository = dvcRepository; + } + + public String getDvcRepository() { + return dvcRepository; + } + + public void setDvcVersion(String dvcVersion) { + this.dvcVersion = dvcVersion; + } + + public String getDvcVersion() { + return dvcVersion; + } + + public void setDvcDataLocation(String dvcDataLocation) { + this.dvcDataLocation = dvcDataLocation; + } + + public String getDvcDataLocation() { + return dvcDataLocation; + } + + public void setDvcMessage(String dvcMessage) { + this.dvcMessage = dvcMessage; + } + + public String getDvcMessage() { + return dvcMessage; + } + + public void setDvcLoadSaveDataPath(String dvcLoadSaveDataPath) { + this.dvcLoadSaveDataPath = dvcLoadSaveDataPath; + } + + public String getDvcLoadSaveDataPath() { + return dvcLoadSaveDataPath; + } + + public void setDvcStoreUrl(String dvcStoreUrl) { + this.dvcStoreUrl = dvcStoreUrl; + } + + public String getDvcStoreUrl() { + return dvcStoreUrl; + } + + @Override + public boolean checkParameters() { + Boolean checkResult = true; + return checkResult; + } + +} + diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTask.java new file mode 100644 index 0000000000..24bd015dc9 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTask.java @@ -0,0 +1,163 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.EXIT_CODE_FAILURE; + +import org.apache.dolphinscheduler.plugin.task.api.AbstractTaskExecutor; +import org.apache.dolphinscheduler.plugin.task.api.ShellCommandExecutor; +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.model.TaskResponse; +import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters; +import org.apache.dolphinscheduler.spi.utils.JSONUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * shell task + */ +public class DvcTask extends AbstractTaskExecutor { + + /** + * dvc parameters + */ + private DvcParameters parameters; + + /** + * shell command executor + */ + private ShellCommandExecutor shellCommandExecutor; + + /** + * taskExecutionContext + */ + private TaskExecutionContext taskExecutionContext; + + /** + * constructor + * + * @param taskExecutionContext taskExecutionContext + */ + public DvcTask(TaskExecutionContext taskExecutionContext) { + super(taskExecutionContext); + + this.taskExecutionContext = taskExecutionContext; + this.shellCommandExecutor = new ShellCommandExecutor(this::logHandle, taskExecutionContext, logger); + } + + @Override + public void init() { + logger.info("dvc task params {}", taskExecutionContext.getTaskParams()); + + parameters = JSONUtils.parseObject(taskExecutionContext.getTaskParams(), DvcParameters.class); + + if (!parameters.checkParameters()) { + throw new RuntimeException("dvc task params is not valid"); + } + } + + @Override + public void handle() throws Exception { + try { + // construct process + String command = buildCommand(); + TaskResponse commandExecuteResult = shellCommandExecutor.run(command); + setExitStatusCode(commandExecuteResult.getExitStatusCode()); + setAppIds(commandExecuteResult.getAppIds()); + setProcessId(commandExecuteResult.getProcessId()); + parameters.dealOutParam(shellCommandExecutor.getVarPool()); + } catch (Exception e) { + logger.error("dvc task error", e); + setExitStatusCode(EXIT_CODE_FAILURE); + throw e; + } + } + + @Override + public void cancelApplication(boolean cancelApplication) throws Exception { + // cancel process + shellCommandExecutor.cancelApplication(); + } + + public String buildCommand() { + String command = ""; + TaskTypeEnum taskType = parameters.getDvcTaskType(); + if (taskType == TaskTypeEnum.UPLOAD) { + command = buildUploadCommond(); + }else if (taskType == TaskTypeEnum.DOWNLOAD){ + command = buildDownCommond(); + }else if (taskType == TaskTypeEnum.INIT){ + command = buildInitDvcCommond(); + } + logger.info("Run DVC task with command: \n{}", command); + return command; + } + + private String buildUploadCommond() { + List args = new ArrayList<>(); + args.add(String.format(DvcConstants.CHECK_AND_SET_DVC_REPO, parameters.getDvcRepository())); + args.add(String.format(DvcConstants.SET_DATA_PATH, parameters.getDvcLoadSaveDataPath())); + args.add(String.format(DvcConstants.SET_DATA_LOCATION, parameters.getDvcDataLocation())); + args.add(String.format(DvcConstants.SET_VERSION, parameters.getDvcVersion())); + args.add(String.format(DvcConstants.SET_MESSAGE, parameters.getDvcMessage())); + args.add(DvcConstants.GIT_CLONE_DVC_REPO); + args.add(DvcConstants.DVC_AUTOSTAGE); + args.add(DvcConstants.DVC_ADD_DATA); + args.add(DvcConstants.GIT_UPDATE_FOR_UPDATE_DATA); + + String command = String.join("\n", args); + return command; + + } + + private String buildDownCommond() { + List args = new ArrayList<>(); + args.add(String.format(DvcConstants.CHECK_AND_SET_DVC_REPO, parameters.getDvcRepository())); + args.add(String.format(DvcConstants.SET_DATA_PATH, parameters.getDvcLoadSaveDataPath())); + args.add(String.format(DvcConstants.SET_DATA_LOCATION, parameters.getDvcDataLocation())); + args.add(String.format(DvcConstants.SET_VERSION, parameters.getDvcVersion())); + args.add(DvcConstants.DVC_DOWNLOAD); + + String command = String.join("\n", args); + return command; + + } + + private String buildInitDvcCommond() { + List args = new ArrayList<>(); + args.add(String.format(DvcConstants.CHECK_AND_SET_DVC_REPO, parameters.getDvcRepository())); + args.add(DvcConstants.GIT_CLONE_DVC_REPO); + args.add(DvcConstants.DVC_INIT); + args.add(String.format(DvcConstants.DVC_ADD_REMOTE, parameters.getDvcStoreUrl())); + args.add(DvcConstants.GIT_UPDATE_FOR_INIT_DVC); + + String command = String.join("\n", args); + return command; + + } + + + @Override + public AbstractParameters getParameters() { + return parameters; + } + + +} + diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannel.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannel.java new file mode 100644 index 0000000000..adccccede7 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannel.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +import org.apache.dolphinscheduler.plugin.task.api.TaskChannel; +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters; +import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode; +import org.apache.dolphinscheduler.plugin.task.api.parameters.resource.ResourceParametersHelper; +import org.apache.dolphinscheduler.spi.utils.JSONUtils; + + +public class DvcTaskChannel implements TaskChannel { + + @Override + public void cancelApplication(boolean status) { + + } + + @Override + public DvcTask createTask(TaskExecutionContext taskRequest) { + return new DvcTask(taskRequest); + } + + @Override + public AbstractParameters parseParameters(ParametersNode parametersNode) { + return JSONUtils.parseObject(parametersNode.getTaskParams(), DvcParameters.class); + } + + @Override + public ResourceParametersHelper getResources(String parameters) { + return null; + } + +} + diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannelFactory.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannelFactory.java new file mode 100644 index 0000000000..f028d4e0d6 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskChannelFactory.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +import org.apache.dolphinscheduler.plugin.task.api.TaskChannel; +import org.apache.dolphinscheduler.plugin.task.api.TaskChannelFactory; +import org.apache.dolphinscheduler.spi.params.base.ParamsOptions; +import org.apache.dolphinscheduler.spi.params.base.PluginParams; +import org.apache.dolphinscheduler.spi.params.base.Validate; +import org.apache.dolphinscheduler.spi.params.input.InputParam; +import org.apache.dolphinscheduler.spi.params.radio.RadioParam; + +import java.util.ArrayList; +import java.util.List; + +import com.google.auto.service.AutoService; + +@AutoService(TaskChannelFactory.class) +public class DvcTaskChannelFactory implements TaskChannelFactory { + @Override + public TaskChannel create() { + return new DvcTaskChannel(); + } + + @Override + public String getName() { + return "DVC"; + } + + @Override + public List getParams() { + List paramsList = new ArrayList<>(); + + InputParam nodeName = InputParam.newBuilder("name", "$t('Node name')").addValidate(Validate.newBuilder().setRequired(true).build()).build(); + + RadioParam runFlag = RadioParam.newBuilder("runFlag", "RUN_FLAG").addParamsOptions(new ParamsOptions("NORMAL", "NORMAL", false)).addParamsOptions(new ParamsOptions("FORBIDDEN", "FORBIDDEN", false)).build(); + + paramsList.add(nodeName); + paramsList.add(runFlag); + return paramsList; + } +} + diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/TaskTypeEnum.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/TaskTypeEnum.java new file mode 100644 index 0000000000..4cdce3eb23 --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/main/java/org/apache/dolphinscheduler/plugin/task/dvc/TaskTypeEnum.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public enum TaskTypeEnum { + + @JsonProperty("Upload") + UPLOAD, + @JsonProperty("Download") + DOWNLOAD, + @JsonProperty("Init DVC") + INIT +} \ No newline at end of file diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/test/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/test/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskTest.java new file mode 100644 index 0000000000..2b42c7f77d --- /dev/null +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-dvc/src/test/java/org/apache/dolphinscheduler/plugin/task/dvc/DvcTaskTest.java @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dolphinscheduler.plugin.task.dvc; + +import java.util.Date; +import java.util.UUID; + +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; +import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContextCacheManager; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.powermock.api.mockito.PowerMockito; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.apache.dolphinscheduler.spi.utils.PropertyUtils; + +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.junit.runner.RunWith; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; +import org.apache.dolphinscheduler.spi.utils.JSONUtils; + + +@RunWith(PowerMockRunner.class) +@PrepareForTest({ + JSONUtils.class, + PropertyUtils.class, +}) +@PowerMockIgnore({"javax.*"}) +@SuppressStaticInitializationFor("org.apache.dolphinscheduler.spi.utils.PropertyUtils") +public class DvcTaskTest { + + @Before + public void before() throws Exception { + PowerMockito.mockStatic(PropertyUtils.class); + } + + public TaskExecutionContext createContext(DvcParameters dvcParameters) { + String parameters = JSONUtils.toJsonString(dvcParameters); + TaskExecutionContext taskExecutionContext = Mockito.mock(TaskExecutionContext.class); + Mockito.when(taskExecutionContext.getTaskParams()).thenReturn(parameters); + Mockito.when(taskExecutionContext.getTaskLogName()).thenReturn("DvcTest"); + Mockito.when(taskExecutionContext.getExecutePath()).thenReturn("/tmp/dolphinscheduler_dvc_test"); + Mockito.when(taskExecutionContext.getTaskAppId()).thenReturn(UUID.randomUUID().toString()); + Mockito.when(taskExecutionContext.getStartTime()).thenReturn(new Date()); + Mockito.when(taskExecutionContext.getTaskTimeout()).thenReturn(10000); + Mockito.when(taskExecutionContext.getLogPath()).thenReturn("/tmp/dolphinscheduler_dvc_test/log"); + Mockito.when(taskExecutionContext.getEnvironmentConfig()).thenReturn("export PATH=$HOME/anaconda3/bin:$PATH"); + + String userName = System.getenv().get("USER"); + Mockito.when(taskExecutionContext.getTenantCode()).thenReturn(userName); + + TaskExecutionContextCacheManager.cacheTaskExecutionContext(taskExecutionContext); + return taskExecutionContext; + } + + private DvcTask initTask(DvcParameters parameters) { + TaskExecutionContext taskExecutionContext = createContext(parameters); + DvcTask dvcTask = new DvcTask(taskExecutionContext); + dvcTask.init(); + dvcTask.getParameters().setVarPool(taskExecutionContext.getVarPool()); + return dvcTask; + + } + + @Test + public void testDvcUpload() throws Exception{ + DvcTask dvcTask = initTask(createUploadParameters()); + Assert.assertEquals(dvcTask.buildCommand(), + "which dvc || { echo \"dvc does not exist\"; exit 1; }; DVC_REPO=git@github.com:/dvc-data-repository-example\n" + + "DVC_DATA_PATH=/home//test\n" + + "DVC_DATA_LOCATION=test\n" + + "DVC_VERSION=iris_v2.3.1\n" + + "DVC_MESSAGE=\"add test iris data\"\n" + + "git clone $DVC_REPO dvc-repository; cd dvc-repository; pwd\n" + + "dvc config core.autostage true --local || exit 1\n" + + "dvc add $DVC_DATA_PATH -v -o $DVC_DATA_LOCATION --to-remote || exit 1\n" + + "git commit -am \"$DVC_MESSAGE\"\n" + + "git tag \"$DVC_VERSION\" -m \"$DVC_MESSAGE\"\n" + + "git push --all\n" + + "git push --tags"); + + } + + @Test + public void testDvcDownload() throws Exception{ + DvcTask dvcTask = initTask(createDownloadParameters()); + Assert.assertEquals(dvcTask.buildCommand(), + "which dvc || { echo \"dvc does not exist\"; exit 1; }; DVC_REPO=git@github.com:/dvc-data-repository-example\n" + + "DVC_DATA_PATH=data\n" + + "DVC_DATA_LOCATION=iris\n" + + "DVC_VERSION=iris_v2.3.1\n" + + "dvc get $DVC_REPO $DVC_DATA_LOCATION -o $DVC_DATA_PATH -v --rev $DVC_VERSION"); + } + + @Test + public void testInitDvc() throws Exception{ + DvcTask dvcTask = initTask(createInitDvcParameters()); + Assert.assertEquals(dvcTask.buildCommand(), + "which dvc || { echo \"dvc does not exist\"; exit 1; }; DVC_REPO=git@github.com:/dvc-data-repository-example\n" + + "git clone $DVC_REPO dvc-repository; cd dvc-repository; pwd\n" + + "dvc init || exit 1\n" + + "dvc remote add origin ~/.dvc_test -d\n" + + "git commit -am \"init dvc project and add remote\"; git push"); + } + + private DvcParameters createUploadParameters() { + DvcParameters parameters = new DvcParameters(); + parameters.setDvcTaskType(TaskTypeEnum.UPLOAD); + parameters.setDvcRepository("git@github.com:/dvc-data-repository-example"); + parameters.setDvcLoadSaveDataPath("/home//test"); + parameters.setDvcDataLocation("test"); + parameters.setDvcVersion("iris_v2.3.1"); + parameters.setDvcMessage("add test iris data"); + return parameters; + } + + private DvcParameters createDownloadParameters() { + DvcParameters parameters = new DvcParameters(); + parameters.setDvcTaskType(TaskTypeEnum.DOWNLOAD); + parameters.setDvcRepository("git@github.com:/dvc-data-repository-example"); + parameters.setDvcLoadSaveDataPath("data"); + parameters.setDvcDataLocation("iris"); + parameters.setDvcVersion("iris_v2.3.1"); + return parameters; + } + + private DvcParameters createInitDvcParameters() { + DvcParameters parameters = new DvcParameters(); + parameters.setDvcTaskType(TaskTypeEnum.INIT); + parameters.setDvcRepository("git@github.com:/dvc-data-repository-example"); + parameters.setDvcStoreUrl("~/.dvc_test"); + return parameters; + } +} \ No newline at end of file diff --git a/dolphinscheduler-task-plugin/pom.xml b/dolphinscheduler-task-plugin/pom.xml index 43f0209e0f..f40e882d47 100644 --- a/dolphinscheduler-task-plugin/pom.xml +++ b/dolphinscheduler-task-plugin/pom.xml @@ -55,5 +55,6 @@ dolphinscheduler-task-jupyter dolphinscheduler-task-mlflow dolphinscheduler-task-openmldb + dolphinscheduler-task-dvc - + \ No newline at end of file diff --git a/dolphinscheduler-ui/public/images/task-icons/dvc.png b/dolphinscheduler-ui/public/images/task-icons/dvc.png new file mode 100644 index 0000000000000000000000000000000000000000..404640c8627eca1d6ec9517f5f31e2e0268e9b53 GIT binary patch literal 7649 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 mC*K2n{^ { + model.isUpload = model.dvcTaskType === 'Upload' + model.isDownload = model.dvcTaskType === 'Download' + model.isInit = model.dvcTaskType === 'Init DVC' + } + + const resetData = () => { + dvcLoadSaveDataPathSpan.value = model.isUpload || model.isDownload ? 24 : 0 + dvcDataLocationSpan.value = model.isUpload || model.isDownload ? 24 : 0 + dvcVersionSpan.value = model.isUpload || model.isDownload ? 24 : 0 + dvcMessageSpan.value = model.isUpload ? 24 : 0 + dvcStoreUrlSpan.value = model.isInit ? 24 : 0 + } + + watch( + () => [model.dvcTaskType], + () => { + setFlag() + resetData() + } + ) + setFlag() + resetData() + + return [ + { + type: 'select', + field: 'dvcTaskType', + name: t('project.node.dvc_task_type'), + span: 12, + options: DVC_TASK_TYPE + }, + { + type: 'input', + field: 'dvcRepository', + name: t('project.node.dvc_repository'), + span: 24, + props: { + placeholder: t('project.node.dvc_repository_tips') + }, + validate: { + trigger: ['input', 'blur'], + required: true, + message: t('project.node.dvc_empty_tips') + } + }, + { + type: 'input', + field: 'dvcDataLocation', + name: t('project.node.dvc_data_location'), + props: { placeholder: 'dvcDataLocation' }, + span: dvcDataLocationSpan, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if ((model.isUpload || model.isDownload) && !value) { + return new Error(t('project.node.dvc_empty_tips')) + } + } + } + }, + { + type: 'input', + field: 'dvcLoadSaveDataPath', + name: t('project.node.dvc_load_save_data_path'), + span: dvcLoadSaveDataPathSpan, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if ((model.isUpload || model.isDownload) && !value) { + return new Error(t('project.node.dvc_empty_tips')) + } + } + } + }, + { + type: 'input', + field: 'dvcVersion', + name: t('project.node.dvc_version'), + span: dvcVersionSpan, + props: { + placeholder: t('project.node.dvc_version_tips') + }, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if ((model.isUpload || model.isDownload) && !value) { + return new Error(t('project.node.dvc_empty_tips')) + } + } + } + }, + { + type: 'input', + field: 'dvcMessage', + name: t('project.node.dvc_message'), + span: dvcMessageSpan, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if (model.isUpload && !value) { + return new Error(t('project.node.dvc_empty_tips')) + } + } + } + }, + { + type: 'input', + field: 'dvcStoreUrl', + name: t('project.node.dvc_store_url'), + span: dvcStoreUrlSpan, + validate: { + trigger: ['input', 'blur'], + required: true, + validator(validate: any, value: string) { + if (!model.isInit && value) { + return new Error(t('project.node.dvc_empty_tips')) + } + } + } + } + ] +} diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts index 5cf480532a..ae5a2efbae 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts @@ -359,6 +359,17 @@ export function formatParams(data: INodeData): { taskParams.memoryLimit = data.memoryLimit } + if (data.taskType === 'DVC') { + + taskParams.dvcTaskType = data.dvcTaskType + taskParams.dvcRepository = data.dvcRepository + taskParams.dvcVersion = data.dvcVersion + taskParams.dvcDataLocation = data.dvcDataLocation + taskParams.dvcMessage = data.dvcMessage + taskParams.dvcLoadSaveDataPath = data.dvcLoadSaveDataPath + taskParams.dvcStoreUrl = data.dvcStoreUrl + } + if (data.taskType === 'OPENMLDB') { taskParams.zk = data.zk taskParams.zkPath = data.zkPath diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts index a151b70d70..d2a5a6dd01 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/index.ts @@ -38,6 +38,7 @@ import { useK8s } from './use-k8s' import { useJupyter } from './use-jupyter' import { useMlflow } from './use-mlflow' import { useOpenmldb } from './use-openmldb' +import { useDvc } from './use-dvc' export default { SHELL: useShell, @@ -62,5 +63,6 @@ export default { K8S: useK8s, JUPYTER: useJupyter, MLFLOW: useMlflow, - OPENMLDB: useOpenmldb + OPENMLDB: useOpenmldb, + DVC: useDvc } diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-dvc.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-dvc.ts new file mode 100644 index 0000000000..5838224e13 --- /dev/null +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/tasks/use-dvc.ts @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { reactive } from 'vue' +import * as Fields from '../fields/index' +import type { IJsonItem, INodeData, ITaskData } from '../types' + +export function useDvc({ + projectCode, + from = 0, + readonly, + data +}: { + projectCode: number + from?: number + readonly?: boolean + data?: ITaskData +}) { + const model = reactive({ + name: '', + taskType: 'MLFLOW', + flag: 'YES', + description: '', + timeoutFlag: false, + localParams: [], + environmentCode: null, + failRetryInterval: 1, + failRetryTimes: 0, + workerGroup: 'default', + delayTime: 0, + timeout: 30, + timeoutNotifyStrategy: ['WARN'], + dvcTaskType: 'Upload', + } as INodeData) + + let extra: IJsonItem[] = [] + if (from === 1) { + extra = [ + Fields.useTaskType(model, readonly), + Fields.useProcessName({ + model, + projectCode, + isCreate: !data?.id, + from, + processName: data?.processName + }) + ] + } + + return { + json: [ + Fields.useName(from), + ...extra, + Fields.useRunFlag(), + Fields.useDescription(), + Fields.useTaskPriority(), + Fields.useWorkerGroup(), + Fields.useEnvironmentName(model, !model.id), + ...Fields.useTaskGroup(model, projectCode), + ...Fields.useFailed(), + Fields.useDelayTime(model), + ...Fields.useTimeoutAlarm(model), + ...Fields.useDvc(model), + Fields.usePreTasks() + ] as IJsonItem[], + model + } +} diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts index 9535c76d37..7ceca70723 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts @@ -341,6 +341,13 @@ interface ITaskParams { zk?: string zkPath?: string executeMode?: string + dvcTaskType?: string + dvcRepository?: string + dvcVersion?: string + dvcDataLocation?: string + dvcMessage?: string + dvcLoadSaveDataPath?: string + dvcStoreUrl?: string } interface INodeData diff --git a/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts b/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts index 26cd32f544..ebd3f741e1 100644 --- a/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts +++ b/dolphinscheduler-ui/src/views/projects/task/constants/task-type.ts @@ -38,6 +38,7 @@ export type TaskType = | 'JUPYTER' | 'MLFLOW' | 'OPENMLDB' + | 'DVC' export const TASK_TYPES_MAP = { SHELL: { @@ -118,5 +119,9 @@ export const TASK_TYPES_MAP = { OPENMLDB: { alias: 'OPENMLDB', helperLinkDisable: true + }, + DVC: { + alias: 'DVC', + helperLinkDisable: true } } as { [key in TaskType]: { alias: string; helperLinkDisable?: boolean } } diff --git a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss index bbe539d813..656e5ae890 100644 --- a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss +++ b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag.module.scss @@ -170,6 +170,9 @@ $bgLight: #ffffff; &.icon-openmldb { background-image: url('/images/task-icons/openmldb.png'); } + &.icon-dvc { + background-image: url('/images/task-icons/dvc.png'); + } } &:hover { @@ -243,6 +246,9 @@ $bgLight: #ffffff; &.icon-openmldb { background-image: url('/images/task-icons/openmldb_hover.png'); } + &.icon-dvc { + background-image: url('/images/task-icons/dvc_hover.png'); + } } } }