From b2f66d70f7d5305e9ad7fe1d611657deaf4dd329 Mon Sep 17 00:00:00 2001 From: itsvse <10000@qq.com> Date: Thu, 1 Aug 2019 09:29:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91=E5=9B=BE=E7=89=87=E6=8C=81=E4=B9=85=E5=8C=96=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-CN.md | 125 ------------ README.md | 180 ++++++++---------- doc/demo.jpg | Bin 0 -> 107152 bytes doc/success.jpg | Bin 0 -> 18018 bytes samples/Program.cs | 8 +- samples/Samples/ProcessObjectSample.cs | 30 +++ .../aliyun-oss-sdk-samples-dotnetcore.csproj | 1 + sdk/Commands/OssCommand.cs | 8 +- sdk/Commands/ProcessObjectCommand.cs | 99 ++++++++++ sdk/Model/ProcessObjectResult.cs | 10 + sdk/OssClient.cs | 9 + sdk/Util/HttpHeaders.cs | 2 +- sdk/aliyun-oss-sdk-dotnetcore.csproj | 2 + 13 files changed, 244 insertions(+), 230 deletions(-) delete mode 100644 README-CN.md create mode 100644 doc/demo.jpg create mode 100644 doc/success.jpg create mode 100644 samples/Samples/ProcessObjectSample.cs create mode 100644 sdk/Commands/ProcessObjectCommand.cs create mode 100644 sdk/Model/ProcessObjectResult.cs diff --git a/README-CN.md b/README-CN.md deleted file mode 100644 index 70eeed8..0000000 --- a/README-CN.md +++ /dev/null @@ -1,125 +0,0 @@ -# Aliyun OSS SDK for C# - -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE) -[![GitHub version](https://badge.fury.io/gh/aliyun%2Faliyun-oss-csharp-sdk.svg)](https://badge.fury.io/gh/aliyun%2Faliyun-oss-csharp-sdk) -[![Build Status](https://travis-ci.org/aliyun/aliyun-oss-csharp-sdk.svg?branch=master)](https://travis-ci.org/aliyun/aliyun-oss-csharp-sdk) - -## [README of English](https://github.com/aliyun/aliyun-oss-csharp-sdk/blob/master/README.md) - -## 关于 - - 阿里云对象存储(Object Storage Service,OSS),是[阿里云](https://www.aliyun.com)对外提供的海量,安全,低成本,高可靠的云存储服务。 - - OSS C# SDK基于[OSS REST API](https://help.aliyun.com/document_detail/31948.html)构建。 - - OSS C# SDK[在线文档](http://gosspublic.alicdn.com/AliyunNetSDK/apidocs/latest/index.html)。 - -## 版本 - - 当前版本:2.9.1 - -## 运行环境 - -### Windows - - 适用于`.NET 2.0` 及以上版本 - - 适用于`Visual Studio 2010`及以上版本 - -### Linux/Mac - - 适用于`Mono 3.12` 及以上版本 - -## 安装方法 -### Windows环境安装 -#### NuGet安装 - - 如果您的Visual Studio没有安装NuGet,请先安装 [NuGet](http://docs.nuget.org/docs/start-here/installing-nuget). - - 安装好NuGet后,先在`Visual Studio`中新建或者打开已有的项目,然后选择`<工具>`-``-`<管理解决方案的NuGet程序包>`, - - 搜索`aliyun.oss.sdk`,在结果中找到`Aliyun.OSS.SDK`或`Aliyun.OSS.SDK.NetCore`,选择最新版本,点击安装,成功后添加到项目应用中。 - -#### GitHub安装 - - 如果没有安装git,请先安装 [git](https://git-scm.com/downloads) - - git clone https://github.com/aliyun/aliyun-oss-csharp-sdk.git - - 下载好源码后,按照`项目引入方式安装`即可 - -#### DLL引用方式安装 - - 从阿里云OSS官网下载SDK包,解压后bin目录包括了Aliyun.OSS.dll文件。 - - 在Visual Studio的`<解决方案资源管理器>`中选择您的项目,然后右键`<项目名称>`-`<引用>`,在弹出的菜单中选择`<添加引用>`, -在弹出`<添加引用>`对话框后,选择`<浏览>`,找到SDK包解压的目录,在bin目录下选中``文件,点击确定即可 - -#### 项目引入方式安装 - - 如果是下载了SDK包或者从GitHub上下载了源码,希望源码安装,可以右键`<解决方案>`,在弹出的菜单中点击`<添加>`->`<现有项目>`。 - - 在弹出的对话框中选择`aliyun-oss-sdk.csproj`文件,点击打开。 - - 接下来右键`<您的项目>`-`<引用>`,选择`<添加引用>`,在弹出的对话框选择`<项目>`选项卡后选中`aliyun-oss-sdk`项目,点击确定即可。 - -### Unix/Mac环境安装 -#### NuGet安装 - - 先在`Xamarin`中新建或者打开已有的项目,然后选择`<工具>`-``。 - - 搜索`aliyun.oss.sdk`,在结果中找到`Aliyun.OSS.SDK`,选择最新版本,点击``,成功后添加到项目应用中。 - -#### GitHub安装 - - 如果没有安装git,请先安装 [git](https://git-scm.com/downloads) - - git clone https://github.com/aliyun/aliyun-oss-csharp-sdk.git - - 下载好源码后,使用Xamarin打开,在Release模式下编译aliyun-oss-sdk项目,生成Aliyun.OSS.dll,然后通过DLL引用方式安装 - -#### DLL引用方式安装 - - 从阿里云OSS官网下载SDK包,解压后bin目录包括了Aliyun.OSS.dll文件。 - - 在Xamarin的`<解决方案>`中选择您的项目,然后右键`<项目名称>`-`<引用>`,在弹出的菜单中选择``, -在弹出``对话框后,选择`<.Net Assembly>-<浏览>`,找到SDK包解压的目录,在bin目录下选中``文件,点击``即可 - -## 快速使用 -#### 获取存储空间列表(List Bucket) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - var buckets = client.ListBuckets(); - - foreach (var bucket in buckets) - { - Console.WriteLine(bucket.Name + ", " + bucket.Location + ", " + bucket.Owner); - } -``` - -#### 创建存储空间(Create Bucket) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - client.CreateBucket(bucketName); -``` - -#### 删除存储空间(Delete Bucket) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - client.DeleteBucket(bucketName); -``` - -#### 上传文件(Put Object) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - client.PutObject(bucketName, key, filePathToUpload); -``` - -#### 下载文件 (Get Object) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - var object = ossClient.GetObject(bucketName, key); -``` - -#### 获取文件列表(List Objects) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - var listResult = client.ListObjects(bucketName); - foreach (var summary in listResult.ObjectSummaries) - { - Console.WriteLine(summary.Key); - } -``` - -#### 删除文件(Delete Object) -```csharp - OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); - client.DeleteObject(bucketName, key) -``` - -#### 其它 - - 上面的例子中,如果没有抛出异常则说明执行成功,否则失败,更详细的例子可以在aliyun-oss-sample项目中查看并运行。 - -## 注意事项 - - 如果要运行sample,需要将aliyun-oss-sdk-sample项目设为`启动项目`,并添加您自己的AccessKeyId,AccessKeySecret,bucket,key等后即可运行。 - -## 联系我们 -- [阿里云OSS官方网站](http://oss.aliyun.com) -- [阿里云OSS官方论坛](http://bbs.aliyun.com) -- [阿里云OSS官方文档中心](http://www.aliyun.com/product/oss#Docs) -- 阿里云官方技术支持:[提交工单](https://workorder.console.aliyun.com/#/ticket/createIndex) diff --git a/README.md b/README.md index 1f4ea2f..59b4f97 100644 --- a/README.md +++ b/README.md @@ -1,95 +1,79 @@ -# Alibaba Cloud OSS SDK for C# + +# Aliyun OSS SDK for C# [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE) -[![GitHub Version](https://badge.fury.io/gh/aliyun%2Faliyun-oss-csharp-sdk.svg)](https://badge.fury.io/gh/aliyun%2Faliyun-oss-csharp-sdk) +[![GitHub version](https://badge.fury.io/gh/aliyun%2Faliyun-oss-csharp-sdk.svg)](https://badge.fury.io/gh/aliyun%2Faliyun-oss-csharp-sdk) [![Build Status](https://travis-ci.org/aliyun/aliyun-oss-csharp-sdk.svg?branch=master)](https://travis-ci.org/aliyun/aliyun-oss-csharp-sdk) -## [README of Chinese](https://github.com/aliyun/aliyun-oss-csharp-sdk/blob/master/README-CN.md) +## 补充功能 + - 增加阿里云OSS图片处理持久化功能 + - ![success](/doc/success.jpg) + - ![demo](/doc/demo.jpg) + - 原图:[https://itsvse.oss-cn-hangzhou.aliyuncs.com/test/itsvse.jpg](https://itsvse.oss-cn-hangzhou.aliyuncs.com/test/itsvse.jpg) + - 处理后:[https://itsvse.oss-cn-hangzhou.aliyuncs.com/test/itsvse_demo.jpg](https://itsvse.oss-cn-hangzhou.aliyuncs.com/test/itsvse_demo.jpg) + - [OSS图片处理6.0工具](https://gosspublic.alicdn.com/image/index.html) +#### 代码(Process Object) +```csharp + ProcessObjectSample.ProcessObject(bucketName, "test/itsvse.jpg", "image/watermark,type_d3F5LXplbmhlaQ,size_30,text_aHR0cHM6Ly93d3cuaXRzdnNlLmNvbS8,color_FF0000,t_90,g_se,x_10,y_10", "test/itsvse_demo.jpg"); +``` + -## About - Alibaba Cloud Object Storage Service (OSS) is a cloud storage service provided by [Alibaba Cloud](https://www.aliyun.com), featuring massive capacity, security, a low cost, and high reliability. - - The OSS C# SDK is built based on [OSS REST API](https://help.aliyun.com/document_detail/31948.html). - - OSS C# SDK[Online Documentation](http://gosspublic.alicdn.com/AliyunNetSDK/international/apidocs/latest/index.html). +## 关于 + - 阿里云对象存储(Object Storage Service,OSS),是[阿里云](https://www.aliyun.com)对外提供的海量,安全,低成本,高可靠的云存储服务。 + - OSS C# SDK基于[OSS REST API](https://help.aliyun.com/document_detail/31948.html)构建。 + - OSS C# SDK[在线文档](http://gosspublic.alicdn.com/AliyunNetSDK/apidocs/latest/index.html)。 -## Version - - Current version: 2.9.1. +## 版本 + - 当前版本:2.9.1 -## Run environment +## 运行环境 ### Windows - - Applicable to `.NET 2.0` or above. - - Applicable to `Visual Studio 2010` or above. + - 适用于`.NET 2.0` 及以上版本 + - 适用于`Visual Studio 2010`及以上版本 + ### Linux/Mac - - Applicable to `Mono 3.12` or above. -### .Net Core - - Applicable to `.net core 2.0` or above -## Install OSS C# SDK -### Install in Windows -#### Install the SDK through NuGet - - If NuGet hasn't been installed for Visual Studio, install [NuGet](http://docs.nuget.org/docs/start-here/installing-nuget) first. - - After NuGet is installed, access Visual Studio to create a project or open an existing project, and then select `TOOLS` > `NuGet Package Manager` > `Manage NuGet Packages for Solution`. - - Type `aliyun.oss.sdk` in the search box and click *Search*, find `Aliyun.OSS.SDK` or `Aliyun.OSS.SDK.NetCore` in the search results, select the latest version, and click *Install*. After installation, the SDK is added to the project. - -#### Install the SDK through GitHub - - If Git hasn't been installed, install [Git](https://git-scm.com/downloads) first. - - Clone project via `git clone https://github.com/aliyun/aliyun-oss-csharp-sdk.git`. - - After the source code is downloaded, install the SDK by entering `Install via Project Introduction`. - -#### Install the SDK through DLL reference - - Download the SDK packagefrom the Alibaba Cloud OSS official website. Unzip the package and you will find the ***Aliyun.OSS.dll*** file in the *bin* directory. - - In the Visual Studio, access `Solution Explorer`, select your project, right click *Project Name*, select `Add Reference` from the pop-up menu. -In the `Reference Manager` dialog box, click *Browse*, find the directory that the SDK is unzipped to, select the ***Aliyun.OSS.dll*** file in the *bin* directory, and click *OK*. - -#### Install the SDK through project introduction - - If you have downloaded the SDK package or the source code from GitHub and you want to install the SDK package using the source code, you can right click `Solution Explorer` and select `Add` > `Existing Projects` from the pop-up menu. - - In the pop-up dialog box, select the `aliyun-oss-sdk.csproj` file, and click *Open*. - - Right click *Your Projects* and select `Add Reference`. In the `Reference Manager` dialog box, click the `Projects` tab, select the ***aliyun-oss-sdk*** project, and click *OK*. - -### Install in Unix/Mac -#### Install the SDK through NuGet - - In `Xamarin`, create a project or open an existing project, and select `Tools` > `Add NuGet Packages`. - - Type `aliyun.oss.sdk` in the search box and click *Search*, find 'Aliyun.OSS.SDK' in the search results, select the latest version, and click `Add Package`. After installation, the SDK is added to the project. - -#### Install the SDK through GitHub - - If Git hasn't been installed, install [Git](https://git-scm.com/downloads) first. - - Clone project via `git clone https://github.com/aliyun/aliyun-oss-csharp-sdk.git`. - - After the source code is downloaded, open it in *Xamarin*. Compile the *aliyun-oss-sdk* project in ***Release*** mode to generate the `Aliyun.OSS.dll` file. Then install the SDK through *DLL reference*. - -#### Install the SDK through DLL reference - - Download the SDK package from Alibaba Cloud OSS official website. Unzip the package and you will find the ***Aliyun.OSS.dll*** file in the *bin* directory. - - In the Xamarin, access `Solution`, select your project, right click *Project Name*, select `Reference`' > `Edit References` from the pop-up menu. -In the `Edit References` dialog box, click `.Net Assembly` > `Browse`. Find the directory that the SDK is unzipped to, select the `Aliyun.OSS.dll` file in the *bin* directory, and click *Open*. -### Running with .Net core runtime -Starting with version 2.9, OSS SDK supports the .net core 2.0 platform. -#### Installing .Net core SDK & runtime -##### .Net Core SDK 2.0 (or above) -To build apps for .Net core 2.0, you need to install the .Net core 2.0 SDK. -Windows:https://www.microsoft.com/net/download/windows/build - -MacOS: https://www.microsoft.com/net/download/macos - -Linux: https://www.microsoft.com/net/download/linux/build - -##### .Net core runtime 2.0 (or above) -If you just want to run apps of .Net core 2.0, then you need to install the runtime: -Windows:https://www.microsoft.com/net/download/windows/run - -MacOS: https://www.microsoft.com/net/download/macos/run - -Linux: https://www.microsoft.com/net/download/linux/run - -#### Compile OSS SDK with .net core 2.0 - - cd to the root folder of OSS SDK. - - dotnet restore aliyun-oss-sdk-dotnetcore.sln - - dotnet build aliyun-oss-sdk-dotnetcore.sln - -#### To run Samples - - Update the samples\Config.cs to update the config properties with your actual OSS AKs and endpoint. - - use the step above to build the whole solution - - cd to the folder where Aliyun.OSS.Samples.dll exists and then run: `dotnet Aliyun.OSS.Samples.dll` - -## Quick use -#### Get the bucket list (List Bucket) + - 适用于`Mono 3.12` 及以上版本 + +## 安装方法 +### Windows环境安装 +#### NuGet安装 + - 如果您的Visual Studio没有安装NuGet,请先安装 [NuGet](http://docs.nuget.org/docs/start-here/installing-nuget). + - 安装好NuGet后,先在`Visual Studio`中新建或者打开已有的项目,然后选择`<工具>`-``-`<管理解决方案的NuGet程序包>`, + - 搜索`aliyun.oss.sdk`,在结果中找到`Aliyun.OSS.SDK`或`Aliyun.OSS.SDK.NetCore`,选择最新版本,点击安装,成功后添加到项目应用中。 + +#### GitHub安装 + - 如果没有安装git,请先安装 [git](https://git-scm.com/downloads) + - git clone https://github.com/aliyun/aliyun-oss-csharp-sdk.git + - 下载好源码后,按照`项目引入方式安装`即可 + +#### DLL引用方式安装 + - 从阿里云OSS官网下载SDK包,解压后bin目录包括了Aliyun.OSS.dll文件。 + - 在Visual Studio的`<解决方案资源管理器>`中选择您的项目,然后右键`<项目名称>`-`<引用>`,在弹出的菜单中选择`<添加引用>`, +在弹出`<添加引用>`对话框后,选择`<浏览>`,找到SDK包解压的目录,在bin目录下选中``文件,点击确定即可 + +#### 项目引入方式安装 + - 如果是下载了SDK包或者从GitHub上下载了源码,希望源码安装,可以右键`<解决方案>`,在弹出的菜单中点击`<添加>`->`<现有项目>`。 + - 在弹出的对话框中选择`aliyun-oss-sdk.csproj`文件,点击打开。 + - 接下来右键`<您的项目>`-`<引用>`,选择`<添加引用>`,在弹出的对话框选择`<项目>`选项卡后选中`aliyun-oss-sdk`项目,点击确定即可。 + +### Unix/Mac环境安装 +#### NuGet安装 + - 先在`Xamarin`中新建或者打开已有的项目,然后选择`<工具>`-``。 + - 搜索`aliyun.oss.sdk`,在结果中找到`Aliyun.OSS.SDK`,选择最新版本,点击``,成功后添加到项目应用中。 + +#### GitHub安装 + - 如果没有安装git,请先安装 [git](https://git-scm.com/downloads) + - git clone https://github.com/aliyun/aliyun-oss-csharp-sdk.git + - 下载好源码后,使用Xamarin打开,在Release模式下编译aliyun-oss-sdk项目,生成Aliyun.OSS.dll,然后通过DLL引用方式安装 + +#### DLL引用方式安装 + - 从阿里云OSS官网下载SDK包,解压后bin目录包括了Aliyun.OSS.dll文件。 + - 在Xamarin的`<解决方案>`中选择您的项目,然后右键`<项目名称>`-`<引用>`,在弹出的菜单中选择``, +在弹出``对话框后,选择`<.Net Assembly>-<浏览>`,找到SDK包解压的目录,在bin目录下选中``文件,点击``即可 + +## 快速使用 +#### 获取存储空间列表(List Bucket) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); var buckets = client.ListBuckets(); @@ -100,31 +84,31 @@ Linux: https://www.microsoft.com/net/download/linux/run } ``` -#### Create a bucket (Create Bucket) +#### 创建存储空间(Create Bucket) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); client.CreateBucket(bucketName); ``` -#### Delete a bucket (Delete Bucket) +#### 删除存储空间(Delete Bucket) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); client.DeleteBucket(bucketName); ``` -#### Upload a file (Put Object) +#### 上传文件(Put Object) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); client.PutObject(bucketName, key, filePathToUpload); ``` -#### Download an object (Get Object) +#### 下载文件 (Get Object) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); var object = ossClient.GetObject(bucketName, key); ``` -#### Get the object list (List Objects) +#### 获取文件列表(List Objects) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); var listResult = client.ListObjects(bucketName); @@ -134,20 +118,20 @@ Linux: https://www.microsoft.com/net/download/linux/run } ``` -#### Delete an object (Delete Object) +#### 删除文件(Delete Object) ```csharp OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret); client.DeleteObject(bucketName, key) ``` -#### Others - - In the example above, if no exception was thrown, it indicates the execution was successful. Otherwise, it indicates the execution failed. More detailed examples can be found and run in the aliyun-oss-sample project. +#### 其它 + - 上面的例子中,如果没有抛出异常则说明执行成功,否则失败,更详细的例子可以在aliyun-oss-sample项目中查看并运行。 -## Notes - - If you want to run a sample project, you must set the aliyun-oss-sdk-sample project as the 'Startup Project' and add your own AccessKeyId, AccessKeySecret, buckets and keys, and then run the project. - -## Contact us -- [Alibaba Cloud OSS official website](http://oss.aliyun.com). -- [Alibaba Cloud OSS official forum](http://bbs.aliyun.com). -- [Alibaba Cloud OSS official documentation center](http://www.aliyun.com/product/oss#Docs). -- Alibaba Cloud official technical support: [Submit a ticket](https://workorder.console.aliyun.com/#/ticket/createIndex). +## 注意事项 + - 如果要运行sample,需要将aliyun-oss-sdk-sample项目设为`启动项目`,并添加您自己的AccessKeyId,AccessKeySecret,bucket,key等后即可运行。 + +## 联系我们 +- [阿里云OSS官方网站](http://oss.aliyun.com) +- [阿里云OSS官方论坛](http://bbs.aliyun.com) +- [阿里云OSS官方文档中心](http://www.aliyun.com/product/oss#Docs) +- 阿里云官方技术支持:[提交工单](https://workorder.console.aliyun.com/#/ticket/createIndex) diff --git a/doc/demo.jpg b/doc/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f3b84a29ff342874b62377d2b17d2d55da0edd0 GIT binary patch literal 107152 zcmdSB1zc3y*Ec>YqJSukq;z)-0|H7jLrF^a&>d1DN_Pz13JeWOhlF(3&@EkJ5F#P` z2aMbIxzF#p&-?!0Gat_GwZ41pb=F>I?|nF%IC~4gf=GfT0hcaa0_Y=ufU{|U7~nc8 z>NV7>*RNf>hK6<>{RST94GfGML^!y&@W_bokdqOUl2XvH(Nj>dP?M4}@G-J*aPsi* z+@a?e0&xklar1DU6S;(jhIRwv#%)Z@+gy~SlwAMq>#P}oef@GB>isL1r~sF-FI~aD zbk+(W0bBxHzJf&i%XRtcr7I|?*N}xo$Znipzmx$kUA}^H^=t}o;|j7J))g!O;L>N$ z6whaRBQ}?Ma9>@eD?JGcTztVsO4hEbsO5r((^L@oO7SxR`a4$GO9vNbU}`@rG{gsN zQS{8BFi}5aQ;XMB(}~%w2k!bx)rqW_h%EREsYi`f&2i0anEjHAIsfe4#rjE~sQD{l z^OgDI*K@SdpWFj0q#dvbeBpZ2bA{!`D`Y@=)i=+&ud~f<@32TWU7_xw`r*lvw|uup zuwhGCNV#BN)6A7PdVO>`=pin4o2WMEZfJf+<$DHNpNEwCneSNeC$wmFm*1;d-%Zi% zAw-3ZYF!@H;A)Z>skG=XUsv0WhkVk{U%#u(br=65e@>U_z;ypR%XpI4;Qozy{P(@2 zAy3fPoK5)2%JL74GySH=RknPUi?80}dyz9>8AtY*UmyA`4upZGG@Tq3yt}chSudRK zT3oVw*l{CuMyF2F19W`z$?BXDV0O)wU{sIkZ@|1Rl600GZ(tM&W0UUKXSea zatY_tf9n@nw7HHYE5eEHQLF84J#5>D(u#YYM)@ceQKzP^Kxa?&rQg=&=GQ&v6cE2a zD`T;F_~{%QqO=zfUjGI?wURP4jF(Rxayt2TG3=Qoy*>!Ik5ffp*eF-xN@)y9t)xy) zYjvpgQz>i{4*8^6if<_**U+i5IHT76=AmS-+PnAUHuJ$-3qtMYNkZoMB+aZzYi}}scjTdE&t3$$)x7^ z+45)ZpF~jYqd8;l|4G3`7D@Ss^P^3lui%Y<*w#IRgxA#Z!zee{^pr&m6iuThVgmFSco9%ui{w^eHmu*-4%LH zZb7Yy2-5xJTjZa~t_65JTbO(6>QYTk_Wpk%;U?@S?-o8FWzs;q$$AU*;PG0hN67+t zbor-=gQSR?dzI!3b7dGS<%^f$slCcKxW+i=;dtXPG2T>a9 zyH~Djg%hp^uhs?c&fL0raHXaG&BqUR|1?4K6~9sl*-4V!FaM;o`yO-LayhAGWiHl+ zg?si$Q!!wQRXW<{yIix-R4dRuS(qva>mrbx<;NWrB%#LHwxF9dZ%UowvN0#2eQvwH zK-P~v^KaZp$zr~$%9vWNu~OSQe~0qu69%icy1YypDM{uHW|LB<9T_^#lw_VYnhFKf z&Q@y+5@;5mSyxS#Rot`2OkWp}l;c0SIcgnlvABE8upYinp{{AZ`{%dU;er8ylP^tQ zuaS9lk46@0ZZgkm*LICEy3VF#$&W0$nCV=3K*2!q?RoeS0xo+40LaAir^x)v-kh0F zLf?BhTZ_H4*Dh_+E+1$0D2P`VfU}dlOv-qagZo;%7WM6S65j}YyW_Ugx6Bs0e0=&n z^SV6I7|?Q(-OHL-Yeo^iH{+DiT|UP`uO8RmfI%2zZtczh>!$noYZ8Bm8%cg8n)$pr zmHIU%$QIAslbx1{r9eL6!=!p&>02K~H_5o+jId;eRE|Hi1OPB=D?c7skeyI`FT0HE zTa`LSFvsqd=ni#@&nAa%1SGl}tm-EGdBU6=x~aI5mgQ!eN3O9c73UuHexZ2GZYC8lt+OQ(d=7~6h4=G zNi*0~@>2g##tfNt!`L#XCWqEu!QR9;rbJqbAGKC=7gpRFpv~X^f#c)auyq6Phg%Or zr7xkq3C(1tFR;mzeG{!6MD1;6#nIV9eIu0XF9Tv1IJ{=}G(b3%Yd-l86*)Vm+a0u2 zrZoiHvvq^n@pF$b8@rBfJ=c;d?7`3Rgt~yk1Ux$Rc-;O0DKEnI+&H?;{+W47+JwoUcMtX)M7Ax+ER2|+E*~2i~Pc$t5 zP*}Xd*)=O^mQxECj-Ott5AwG&!F@&~sivSdtF+d06qqJS{#ryaLc}+>dVKKtZ+Kiw z-P3g$+}&Sx+WDS;C88{JxiYV^>>lrtLg&hmm+HP_=SPnxR7?Cz{7&s3`;D%c*k1|g z^w@OBocO|SRa_w*d5;TlvnY%b9FmB)buh}&_%x|dQgY*$}OyklO?nNaRg7N zY;kR?!rE!)FB%r#C8tKJ?Nskc$Huya^6`E;qpg;?x?8c%7%kj+ zo-%v4MZ1mxA{LSs=oYKAU)A_-$hGN#Z))sZ z{A)8-+FErOKgU^kw!t!xudoPhrbn!>N=5ymRF}HhNkmqc(@rItQ|9Ymd?`O2xJL1R z2&ucPT`^9I6Ok8W2k&yotGuC12=SEI%w)7$TF`=vW57M1TIR8(2ue&P+nZ$1X)vy8 z7VyL~CAKA%N(7fW>+e1cfP_m7cdOG*1%J}D9CovLGN2^j`sSM=U22cHK3 z6HR$rX@*@F@0<{Xf#4ZHqMNZow*Uz)G`8+QJ-%np9X}0;?j`G{8UN9Tvaaz)jvu3o zd<_Lz=UW%XEb!Z}dh%kswdI?V&3nHVy2;3w#5qru7X}?Saj@8V6zjL27Pd;w5EWw_ z9hy-(Ue?)B5JoSQmMDk+dLXro1ut1?oTsfu*|^$nmta!}UR&@?h+2N-r$l~6{CN8~ zLy&fc79_9jmM$l*Yj2U*;qtb4KrC2pHPodu-$=uGG9{@l6>i{Zn&}qUO#>y;0CjWq zXrIKmS0fxJH)2ZI$=$oGkQ}FZGS+z7s_h-(4l`!777Kj$!bsly;B?hGuJC>FTCe-# zgPUm&zU7kY)Jb7h$W_4NXqkz~ZJLLDRqfpzCvA5gUd!Hqm(myL@lS%q-ssGJa#zl} z9hxDj2$Sau?g=Tkzbi#kE1B5q@F4+deoXa4fnivi#9B{(F#9FM%C5=gM9vY$@E}OL zRPw9x1$=E??ax{#u}vGb=2k(Qo%#wCNcf1 zZ#;m3EoMVEU%;!4D1H*Z7PUVoHSTb5P4D`*yqj!u7uKSyn=1yzQN>l$x?bu!t&ke( z89;S+t4zWf&Oe?u<+DD11|a&}QR;8^y+gVKH0~AT6V>D3QMG&=JumX<=@7Q7%gc6O`Oo!#TH4XqZw zb-Y>AN9I-^gck1qg!*Hc=^45oVD~95m{;zTQpD`5lYD(RP~3+<7PF@7VR0){@5FSP zyql;AX;J05Lcgh1AHm`ro~No6d`Sq%STi6IOh%veU^{L_Cbo7UZf_hrJ)$xsSJ`1a z$L+3LfdpIShnQ4}XrJKSdS7#lu0u=XSMlj{Rgiw7MzLU(Ai^tV{eYPSw$@7oy@NDd#(8tX?M+-X+X{Koo&$_j= zo0q&5TFW^k9PNW$*bmLh!?Hn>5`w6_)v_Vx8iEh1E-Lk!{F%JdLo!v`+eUYI8q!p2 zGrFB7OBYGO!&TNch8_5+aZb#IHtM^xD={Gcki?PC?O%4bY#UTPgAgxEYJz`}9)MEL zQPyxVZSj0y+od08uIsUJJ8BJ@uO7?>^a*%+p{-QS8V{uGspZ6#AL!bBO0sgj<+gDu zvF~V%^gM_pHOyyMBSec@HQRII1|*ACwCYvs6~{B! z`0>qF7AsBUAG5jRe~*4D9pDjWdtE0xnWB@%2LXh`1Wz&u@Q?mZeyXWqUk_xhvj zF*$k0ZqM;eqh&^M&%3K$Y62@4)}_0&_u>0Z(j+S>f@DsevU0ng65ghetNpdp1|4Z7 z>Sgr6;^omtrx`l~Zu~A*8d}1ix~d$QYY&*?AG%vc*zBjwQX!ED>Xq-L)Xx?5j1IRF zd_(ptJyZ0)!+LbhpD}fYj*C!F_V6X5og25yS;5?c$WmCLXQL+Mo+%49(!Tok;Q1&qsVP3rC-QS{=3TX^nKzeqi%As&0s?4={ z^&RMZSZ0IZvS-+{j&~qns;2XJ!d6y+(5bM;1CONiyZeUr7ryEeEz(1NON8{08CsZH zKu8}rlsovZ9p>Nr$cAF7ytCgYmTomJCSlM02s)iFQ+Jp8r6wjwpS1XxkLKvOh1WvL z=9ktguGQr2HmcDRT{!BY$QJ}gLymq6M*U{#U`Vh!N56DdAUwDkDG<01+8>1yUfW^p_NPzs^ixAeCpjtLQfjRa;99{!1;OIE(+uXw?-A%T!kU`n zHNiA}^xiXJ&QS=qIoXx8K0bg*^nb6MrKJ?7ocwOyO%O*Mv)xzmnYJ~Zcz3VZr1 zg-1q3lU5Vj+JxGWj~~M=l6Q}vExZ8`P3Lj|+#5X|Md@U7<{&?lc_RX z)5$reOtrkbd)WrBW8HGfOg;^i=^{uDk7zCX(ZtHcYl|#dxeG(zeP<@XnJM!@JRAj^4bQGuoW_btG8#c8!*(-&*ynXf3i>>geEE8%VtOP z2GEbHPSkW`K?Av&kOCmmhd%8`Rm72^Q%6Rh#Uac7Dj>FWH{wI;G(>Z#q|hq2?Ah+) zuhiH2cK1Tlfu5wUNoRme{llL1r8Sa{n7MMZ#+vu>Q!L$rGy}4 zVwIZ0gi1Pyil!ZniY5@o|8xH(Z=rVQL^!_8V19MwH&9GN$^sXWD*Xxovh;A4l1i(2 zTbxS5P5N>3ZE1&|jbC>8_=xJHy)(HlfR;$Sxg;q$*_4#Iz75VY1G+oIuRCMD5F#P_ zu1slfG&md0VWlYUlU#vDV+Z?9XNT3+amZ_(zWhwp_+W-jz1$=20tpqR*`_W+$l~OU zAL2*K{KtIo<}!%cqk@dwea*X;=UuO(RDMGbtIiZb(y*S&If#cZ07zN47Mf(QPIeR* za&|l~w=-ZN#nGKHTL{rs>F<%C2OH=5#mhq`ZB=UD+oq)Oj}FK3B8tWfry2J(++T#H zJ(Czp)yy|~i2h#vwOU4BXx~$$VY}7viS$W)mE)fCVUzxa4*XC74z4$*015^G(YK8( zZia3;LSg~5uIx5b77x_Gz4&A@G5K(W!&0GxX|BD^9CgoxE}=co)+QSfG((7Ksl!sK zQ3$z@5{}$Zi53zI*SSxJWcdBMj5p5H&c^tj1<9rL)#b}iFQov^M~o{pD9AqZd5XJL zoP$)kS%8wRwsV2PJ-g)&1JLdm$i?aU&Lj9jhkGCK5u$@%GSHbhgsg|TOuv}k0=egN zQ*b|=(K*!kT$$bUR3!$+8>ah?WFqGiF4)>X`a}vG1&-YyLMDwUL!aItGNM3}R1`F> zZhd7?Y#v7?hvv^Ajlu;Ex*=U+ghp2vZA3|mYeb3p47L#EFG+OU*x;`MPRjhG_ZLsB z59)mY;C81G#T8Wb&dZ8Xf>0KvCjY#ws3smd>?R-?Bd{)7icT@8gf!7| z%7Civcas7+#%;MTX8@zOPoDM6;-xk?{d(dc7k*Fe-(Nb_583L&)=TRfeV9FNpoPIN zVKP@=vG%Zb(Wi2bp6n%Xs(7tt6z}VC)u_a3y|-eFEVJ4~to!Sg@z^K*T^)1+RYk@u zkMNI*xa@4ED|J~tn;X5f4GVO#4$>JNC#%$p`qJzXWx)r!Wje`LGHaeF?uKIN-#zXN zi6R&8&Igj!qL^j5xNZpl@ZGGcyY(XpE0!I#?X5{&7rqN9*JzPYiiRBX8IKQa^F#VP zP%^0u)rv|W^*V@+{zg-)aP@uLxKaXT5YLqH+u16oI)P)qC#QAzn%lI6hcan>Q+*Z# zpjlhY_w^>PffMolN7wgpNROU=!*I>#bA#qqz-T4e={IcW8jRevj7}G?-GZ8W(HJU5 z6+Grk8QZVtMVvRm3C(cr`sdT)pUj+?D&tP=cdM;%zq25vB_gicnsd}v+Z&fYX93}& zznFZGQ%u|qnm?iN$GKewb=>CS#9j0GT*AawX*e%w|*7^Vd*2NMJQeinV8dh6W zCHvN@Y%jC$K75oaP-)*|gdPX)&z~UFw5-iEnPS!w$N^Va8z_&nRE}DXu~w)2$gY9qlPBLg6vqo03#FtGo`zo_)X?&alku0I^hr{@Xe zbs4Fa!9BNsJ40YidPBWe`LWZkw~I%yMB#{ov1!ErCXi$-+6bLdo>Bis6M(eXxYR5q z=k^|eoRPjwK$r=1>P%cn(wtE=GJitO;^W*=S^R6cdEnQ>tPt(2K-k5Ef(*2E9!rrS zUoW42Cx4Ea0g;?CT-0wrxQ0NU8{jorm6AzkuJ7UYNRm82u_}4k#M1ug2b!PZk7@lE zLQ$L-g!uT&bZ&a0%`J>*)X0pi#@IT@t~;94;(sY^;XOhOn(F@~@jY@Sr0T*Ud-bCL z!WHD#2F+MaF007XBcX8^n?r}^7r^J@a;$@x)(n}eoP(>i@{0-Ha{g@cqv=m;{38SB z+zdaosDZzGuYugR@6vH)QfsbML$d%*vgD^m7R^p**1MqOht>L!Tr@#1n%tVpnW=tC!ESu&ftwLaq*#fGABd2Exfcf!u5{RULHRC*_s-&pH&YR!yhHM!%o5 zmzy5#Esby?M;>yx6(_p3IS><3Agm-@cqn~TwnF_k$?^ty;qpVqClx(AJDz+lJp`U& zdcC9jY`4;G!G$dp3U^MLQa$PK@mk)KnBG;~%juIEcHG7J%6^CUj@0C?s3-6q&mEbF zz5s+Hvh+!MeEgOItn6ixFa$}J;b?d{6Pb?qkCOGa{Q*N(PgH&Xiyr){e?{!k=e+ca z93H<(mz&*bOIHZ!?HF+tc7K_*wwiS`K;Nq|jzp@KGxX^3L^`CSFJM@YOXj>+LzRz5 zO@}#mMfM6GPk2(_1F{d*KG7F0OaGU8GtSqOWrF+khi3d;h-&|jHu2FUB@IA-N9Sjm zDbh*)2Um=-7xHiuCl&yJ3b=atD$11~hn&t2H(_7J!NtSJq9mZ;;k{2q&85%5`G8x5 zhE^1L=;=E0DAc8^mxI>N0C8u4PS~VSpnY#Re^dt-XjO`|b19M3kviP?FR~(+our~p z4n{ZRI7m`j0+ug9h_&zOD1F~RPnObAaw5^qy2 ztJd$1ga9Ha$Lfe@NKS^OQ~Z_JU@R@`UF>ZWF?M#@Sr0MQ-s2FKc5a3Q`wkLTXUq3b zVj#W#bhK+KJNtZYG4Xv4HbJK<_h6vkMaeTcHR7g^lgM?e zc*iC}E6=>W#bA+`Y|%d-XPSHZ(3qGYfbh->FBvt-kvStVGYwIV;(OBml0!iaad$Fq z%9tN$CA1W*=V&VOY^O^mG3G%NugBdw!pVZ?7z!13LRU7DUz%Ceq}xLi+M&2NK}*o$ zBF_OtkVa%{Yu#p=ZuSQ**kQ3qw=t}0#=2bk{ZhNFjl%tGQ_1xmWREi=H-~GvAX#~( zBgZ>XYo8DRYD$BeoI-+l&=Z zp2WK9$)Jf%*UFVzP~wb?Ee?-1Z4E9rbGW73Sl3uzJV8vA0%Ki&3e-g0>e-kBj)wE{ zI!kk=Mv9SLIoXH<)fgcO2i-nhKGO&!EU^q~yz$B+>iGu4ga&IRTE#{(SJ%r^PhJx( z$?_r$O8DMJZiLu2YhfpXC)qcX%i07_0}tWAyOOwhFHX$TE*aV?jdG(5cPeUZDzw$4 zTw~)7KhV$?9k zWM|2Q-Y9QzI&OW@)Sk6YddMzrS+=*Bzi3U1UJIzLsWdB?y(?fJn}}U{O`{VG9gluq zh8|{OAJ#nRqSzUtu5I-uc_b;fK#>V((ia<@-IOosla*;;Tsc8Ewrlc+uJLehG|`$E zQO@EYKb)N*bgR6wj9MDuUNrY?g>EF41n9>jqn1=;3@3<605i($^1n}W!z^mHj>o3J z;_6kfkkYc?#!ebC&3e2%k+`1WesAT4s2@5W!-KyI>>9sn{;mogA#zjUH|=T@ae^2i zg4uLO>Q6!r&Hk3)1+(9ip!&%Iq<32MgZ8E|gysdquI!$6O6yHcyOo^(+c(Bil@3;r z!*IYqy!kj9*M>)2dP6tR(Zf0)??%_F;mI+ z_YwUSdipMfWv}@4kdp@UCy9s7*|ES zQ72g~a|Te-#DJ`Nha~tOvCKzkA`_evS=^K!$cZjY8(6&j`UjFo3YVZ zCU6*Pj;D-#ja;m@l%-tA-=w-VzQ#MquC}08I0A(2zZX~mH2Do|# z$Z+Y7Uw?HN%6HA{w(Sz;i9us1-zWc5j`?7)6dQv1h9r*|<|RnhGd=NaGs5=% z-_0Uj&rr$Tj0li5sQ%f(-}ia(|7RUcq>RV@AB}-{VpJ^loq%^TCt7EK^!1I?f#XA_ z6YMXjL}R+s8w~yioN@*ny@(lQJ5W=lNVYS$9WyH$taP&w7ezmlVWvBMB>qd)8Gxfj zpl8~X7OQs{Zw&WFAFBl4l~596V#^1hrt+BbSc=Ui4oP&bu-?2gfPvS1*Tc6FZ^RWT zmq9}>Y~plOlxTq@_5wK@- z??bmM-OPw$d^H_}fSD_z-eLqTRAX%h^XHD}kNLBu)h*WdVld67U)^)&A&<5Ed`K*7CLT%>|4S~|4${zv1klxty)?t z7XKkiMuTAf@_0~;By1^WE$azj=#)Jg%0bMJmrwt zW?^iFvl+?3?LVO!yA8Z>{yU%lS7kRd?}E&ye|qP?_Uv)K5)f^_t!vK!vl-6tG}*U^ z1F?X;3EBiIG$N64DzQLgCs*UI3Y>fFbcWmzL`g!K3Ckn`no5&?&?~oBtyk&2OB_T~ z6Jj@fwF47t;{G(3ft|*KC{$4mC6&pjp@ryu!H&VY#K1l_S|d)AUX8NsvaIM+LG~*4 zWu*N#t@2(!sm#P)Dw=j3#vrLI56j6$osyAWHx=oXkAVYJfRuQob>i8*VR zTx?wz9CWmh!-y*vX@Bn#x6>lb6qClB{UG!knE!}cc3_f~Ptb8mat>ZJ$ebGN75cI& z_$25_$c@h*MISc@4~H|3I+?e}Q~;a;Hg-E@tDKcr=@+@nOZZmKgk0~7qjaNkAS9U^&FFWT0 z_LY;b!sNQE;c|2}Ej^~cWjw;T2t_<7@&uMaCCbx|HKpm&>4{MkLcpS4V%YW{1+NTE z;mu#Gvgtk-Hr=|R4Rb-sT6opxa3mZ1JTQvu4opQ{S~8)TL`MGb)(fx9z}Sx9x}gTa zMhSlp*L!VCRZE#lqPS5wxyNgMq|$DYkig zY<@@lK~Vcw12)&b)IBC%aK?uL$lTgS5GOJ5JEj6BnLz>t_2pnJpRum8;}CX0ZiP4_2!& z1D5h>eB5wC$ClM*k;BsESCQ@ydLp*2gR$p`L>cFzG`I2rVX~{3^$>p7jm4lw}_|@(Op~^;gJy0Gn2ks_Wx-FUq z5EO?9=BfD6B9y}FdqVSWNy`Mf4ae9D=E>IMA_Hl#9O1{;n@it1EeAuF)dJPL=PSjimoqZKc5w& z?_ySQP(qbO5LpN;Dy6DDuxVJxIzUXzd(#32YYC-vcu_Ygg~6JcQO}`$lyRBGA|OrgVj1x*h~}v5 z+K4BSAuCF}wrc*}qRQQT`7By$jU4dE9lN^xSc;KpnhW5o%JVX!I!crF3LF6_fiQVS@xtpW z;SM%7;gKXAx%z}@)#WYR&6ryyqQ?UPWw&Y)4;c+G^ID|nrc@je8||^VRRo0_6}(t^ zSoQSh5Ahd<#>l|H23>~q45qTSFT+CT^IC0b(G6J{HT7zZsHR>?mcn)6`MJ3j^vL07 zHC8l(zKp5{dJr59YSFz^3p0gL_@!Gth$gFo(I<*5)r#ih7#e-aLrMWAczGOGNwynVY9;84 zj|2Gzmt1r}B4#F)z#Y+b9pn-ckb{bgH!&$VD0?WeGml1$nIl?T)+XmX8!CGtG1#J4bMR;vP7GC2RgI3huQ~=e(Tq6eOW{} zIMNKg*v8UygRvxLN)4T47xn_1^-X(uv&M%Ab!^EKg%e(EeHb-v8-XSzecD@;}d@=KU zhg;kR{X};|x@%4_a*ko=ihM^5vAi{&7R2+};A0VGYQ z(tn88E29-o@?pO>17#}9e67gs zm>5(jsJbkXr_RqmC3yU4<<<~gIM1v z7}J!oZ+9fm@!Xxkj*9Wsu55^O>%QwA|G8frp32(7hkyY`R?6jGC~(9?Lqr&c#c<>e z$Y`d)^q8BPo$rrhL{SRtW9aV&^%5~zuHH`G;AphIx)RHo+qw`{LsYl1`5+avz=ftr zPEFTp5s8S7>0JLf18KT~9L22mT^W6DoRQ!VLMD6iL5bfuQgUW&@yb;5H-X^RpzjkTBE!9W+f@1NhaNf zIg&cTNWdUlr7kWm2HE_id>lJ z3PwI;!{FDQ$(@nrkY_;e2hWWqAyBxts1iPbKr?me(6|^x)>z()^7{w5$;z1!3SC}jD=Sbf4tvU@Zi;t3>QPll0!4k78tvB17{pP)Gb8br=%0{9mDt zJV!kmh4TaTl!uOHu%|h3x;0Y0@A)3ba1W>c6nGXrf@El4CM@FdLksOwRcV_YT7}zBK~!h)GwI zD%t?t8`DISBift*nVIrr6_b$x7D0)wn88r`*k!gi2t-Z1mBn*?tGaz+&!QM{3-Zb1#v7@r4qWo;48GQ|`I6G4KK`NY|1ZQhCr3T_h~;Y@sE zoMv(J+C1+8=T@J)PO&r$hv$X&eHHOMrifgdHs!pC+Y@LJG1kGAD~S_%Zf3!9e)L?* zD6muvbp5#1;SCF7O^pgmhFlU+3R%RSc|FxIof$0;Bq((!Ox)^gsm-roO_B#7vfl+2 z=A0-A_nrYlzWD%M!Mp{x3e5W#L%iCWA3;%|e zMqCflE7b*;0((U)J*Z?=+x4{R>)!iwELKraGrxEkd)w$`!xlqGAad3@U%9zZqkmNU zG;4V^$gg1YOY}FZoZ#yig~PlVK))?xqK31jKbVzB)B7<&#$1Q=U8s0|{HZ6#OZyoYvW|cMM)u=TKz=S8gugEq{TW`yjOP5xOi31I;wnp9UL5{Nk~|d@ z1xY5LGqje%qT;8zFYGs7{r+zF(tmoh3$t!g)A0PO?%;fYB3B96+1Q4~TNG-$qr>W8 z@@(BLj&BoWt2asFP*Ck}XYiNa?GYFLbzU0{$z{YV>6ix-|sl?^>mC6y}5p#dby1+LMgO!Mg7s5grvB za|_c9oUc-_vw^&%QZe(IRF|8Gs%r0u?l6g#;l4MwtQJvHgUH4*#4Kfzx-eKT@(O&a zT&-Z41!Fo5HO?M5Arx4eS3m*iVoCIrgEe#kL@>B-1Dv2{*tQnV*zsWN189hHKTmJv zyJ27HxV66fq5{NJmp~0XKrUcONUIro_OY5?&MJ&aWKv}8kOsYfFg=!&222@)C+A6z z%aMGYcafvn>19(6bku1!UKSvv8QkJhc@;mBF)m zuqJ0p`gHb((N0Y$rO>4esX!S`n!`po7Oy93FibfzEAGuGv92ZZ0_CdZz2bg2hNKFU zyJrAhZ6TNm`+0{-;h4Ccl{Xmu7~3b5Ze;qF@>4B+h}jGw6& zg=`uEFe>I9LRjrM0EM> z<*+dE$XK|!5+Z{CJHM*lSX%R5jWF?OUL54s7*2+!V~((KQkXd{aS$al1ObPWJDdU3 zL>=3o7M7lpp0AO4#jB6g-OV>4sh?9e-b~~MA+Co#=#evVnj$Xi-5hf-po3Wi*R{Sg znQ`gW%lf8CJ6pud9nP{XF0VI51hQrOdAzArM29s}f&PWN0u^cbT^YO*x`vOqZSJnJ z`#jP5^6;eVm`nIuUt$I9rh+H={WX)__^(qoTi{MQPj$UkimrfFuL~$Liw{!qz@;o@ zhlwgjsk?Qh?(|S=eW2WDWOf!`=%GNw*cR>6?DxhNnpobe+Mfhfg=N_FYz>%*#H-kl zv|B(;%8M+hXcMavRd(`9?LsYS{42cs<%@Rd(K;Bb)X1E6qPxdv8G5)%SM8aU;>xkv znYfkW%s>U)QvDZC^Yn^*3NWKm-XJb}PG0o71~1yX+HK?6Jn&SP*7b9E)7V5xnHAaQ zq0<&oE9}$}(5Rw=$fGbOHzYhvR>`AzB?av+&32QrV=tZP5Z6ii8x3`zjftHl7ivwi z)hr=n88n4^yJUj-Rw>lPU6e)oWzhwX_y35F4$f*urK@6+squWVuFF*8E;ipr) z3w?;`j3~m&K(3-^;N1v31Nhb@nIjhmdx*5?z!V8oDBkp#SqVVciwqSrTI&0-EZ#^& z7p;Jbk4+y-lI)NL$)jd_3lX?aWroVX)3!Zu#Y(t zF|DMx5)T@an8uAnnjA=^wFW#IoW!aE-1dDXj_J*j!HZp?UyEbj8<3DBSbNnXBJr+6 zZ(JC)2#>6i+-s3iA4oDUapEgqV$~DZB=dLt8W|^y=Ptwk^3BfR^cx)=`wkw(es>s$6JQ|6uI1R zV%1(IOhlut0m8)n`X2K)k~Vom$p`z${JEVG9AOSa6|9j z8hD|Fqgk=YXVokUu1KG^7B|zpk@hH5f~7d9sK^}3vlR#~%XYV)eyFs=e+B>|=DLXK zD)5VZs;IGXOP?%!m8aS#b*53g3!msZw(l&Z3TrF6KWi5h3$n1MEzlDox`vZ+?NQ7c z`a?u=PV~V&f*aupXMl)9)C(_C#Uy64P)5zEor>PX(?BvOvaq=B*kS@_^duv(yQ`O49$oJQ#bVtpmA8X?GS<4$=Y4r)uBLWx z=~EUxO&oq|gwOeuH9yq8e9*Wv(gry8$=xP3V?19yV9R zzY6s8u|^ln!ts3`=9>u5qOgvNlA|;N^F>ih5J9+&c{E1+96$uf!7y8qX2u73_45-br z2*d+mXJ__6%$J( z7$V(^D~m13)52asI7VP83^?MK=hdt8zv;nWyctlKh?>U@V|<>xNurqGI#$%(I|iqP z-=n?&V|f8)>t6?B=*v+N@)xfsEIm+v50C9Fj!GSlMNDbBFwV+;oG?FMp7Pq^8z?Js&B%u2-%G+BgV(^nlgR0Q%R0DB-MmbE@s|N zw#xr}BeTS?>6`y_cy;W*w-qWIQ9R8!Z1USi8fSn{NUOE;b5^8igj{U=A>}$E@96}U z2~r;uDbOHFa#1aHv*3;thsE6=D{TD)<%@)k${RVACU??WW^%xev}!I-3?|YqV8-ZGi%n{5H&fP6xx@HE!_}X5tj_( zdi)iHDhX5fA|?dku-CBge9YV0?F=yZ%?$2fbXv2_*jN0H2$&@q41(xp3@|bl;m-xZ z_Eh7+Dpm!|fxOJ%Cinp+YB{dOz-j2WA!A2;TO2&`M*g=Og^iw>=hGItX1(BnJFY|5 z?ueO8cRKOxkTYWNWCe#j+*0nmZ@&efv(XKAUj6 zk)rm$`s&YB=sERbhSmY3xnM8VPql_R;GGS;mYDbOl0tI8q9B4Dxza880r8adU9 znOiejGopz;fSIF#fiPQ)NZm z(VjVJ6uI4N5Nt~n5euq&JktwEaiAng=(S5R;mnCO;!YTG0Dj6{H4W)NZ#SHFZ8cOX zacu{;Womx%=i0^Iiy$_P4K2w{G2y2vN%*|VM@mf+u3r)-YM)S3lW--mrGq;l-1OFW z<{;NqyHC9fOaBYmp~4VDpFF~|Cx|3WP3IA&95W{(d8u{4{hnLGhuUDQhZm^ z8Mn&O#~0est^Qj{@qd?;vgOq0E z8%-xnU%EYwia}&dPZW}z`1E{e{uib5TiQXl%L%D3jz^cBo*%HjI7j_8{Q!At`P+%> zcV~b`l}bIe|*Uy-MwFV0;b-}`_(G~I~&c8U)haOujGODL#l=O0g9d~$W^G7dJb z;uRD;N+k*^&ifDaIk-d&>|c~De7uUqJw*L1%I?#}7gWgl_bz>KPnrs~#4dQpS8rqF zF}C`GmKe)gbB#&9EB*<@Dd%N4l~S_yOeHDSLBD!!$D3AVHn z5aT0{qk7)yrhaQ|`I&p+>k(P}q1T7uA>D-urtwCk6G3usejH)-wfGCW{K3s8wfbYd zlJr|22H!RIoB^Js;TD|8B9Hy)Cha|XGX9vbsp6REaRx1#gIZep?xU1ZKXCOP;L9T{wCfWvEMKcYv?gB0+Uu3{+zfXZ>ruKQzXt8X{$mH z_En3e%B4~X{vvZ%>ZqFfM2tt%CAr|>-y~$DpoTndh5{0be-!>Re z)=s&H9(W3Nm9X+gaq*Wp#l#J4vZdaYfUt`c=A(Bz>5NTc+tnZ9z^k0B^Q z(70Q02pZf&aEAaP1cKytzI>UPbLX2mGiT<%|2@w={nS%kwbx!--c_~N+N*Z0`T|>- zbzkP~;r~+Scy7z3KpWRJhCbCpsWtgJ*F<$r54EPH*YLT?0^b);*k`Z zq1*?pu*57ZIgMoG;xHE>==LbJjp_n5iLpqk-^eVpufTieuBtZcKuJW1$4M2LLJX*i zSfIQTrV@?$j#wZ;87^##DF&4Mah}T*HN7BiXYY}_Zu`0^(C4ah zlq;a74p(`jR-BmSrTFKQWG}H284NL4#6&SfNkj_R^KiLD@-P`patH<(Vx-~j zM*O0uZ)|RG>w`w=}&g8fs%Wpx{ohyi^)TdxQ?18q#4sI*MKTob5UXfGMJPSQDoj^-lT%X zepumf4l<9^TM|)X)G~MP?%rKsc7OW>QI0@N05miV000N~}1|O-L>X*)9QD zqF7dvMY%@9nd@c3dcxQ9_p=v{msdpZKe1@v(tSDm?NIve#_I5tVg6C}jx(@3A|P*e zFEi75yw%cxgZb$z)UgPQe)i3u2_&x@RBi-#Tt7&iehifVNikujC)0mW#*dbm3%}b-a<>=rX6!;i+o-?J^uhcNpvscm zvX9J@XWXbK>b1B_7#n*2t()PB>QNf?HfzEhYtfAoaZZ zH`lYJq!tgit@s`A_sadcO-goqOD(8(OIQ3TE3EM-yA_z^7Y8ot4|Ez45I(www>oe_ zp;dU`I+(o2%8)`$gerbSD{XU(8n7ZvCE%`o-Iw z3h-Rtr}XWg^pnk=2#u3UCtFgQ0yTRxUK=0Y3#}oyNnG4t>ui7XFI(~^)n&uR6dOVv zxI+*>?Ws(aCwo6a_N?hr)>~0{Io4G()q>PnGs@h#S6m;5$cw8^n)a!bon@(=^@2)G zdZ0gJn#EJ?gC7}swp62ee`ZjNof~Bjm%Ft(y6CvmveZqth-$P*hy2HI2!E!@^v1Ku zOt-j$gX}VY5Hl_1IfSpr8yF$m*tbr}>pY^n0IB=wjc%4D$#h+hSoG(fs_xHjja^5~ zc^Q51b!fIq$6^L_xUqB71(VR_8S94-SUP~MWxK&+w9+&QVviD?5@XSJa3k-9Q~EEn zpHl}I(VfsFM^@0+Q-{MPiQ>v)g~-z&gR`b3RLz#PGc`7^ZV5-$ z=6=1Y`>>-|Cm`DoM4n;&FbC5QH@Y*~-#@G`Ys1Tw15g}szH(N8KAb<|itomxJ<4%r zOMuJW+t|i0!?iuhwBfr?n`AWV5CCIS6n-v4Adr#((3iTtmUJ2%VRDmFZ^x)>U;XMt z+>KV5^lHfEh1H|&pq?HETsCd|Fj|4Zoq$A4Lf1;p7z68Z&Kq|IHp}UB77IRX@XErD zHUsIv78BuJ6B@hb{!$b(0KVO}3a-{6_ubGna?euY`SF}5VrNqv#iHVV4~gx&`pJt% znocmQZg*3+>*=XK{dA7H_%azO!nKxi8@3(v@vRQd#<6fCdYe08>LdF&LZbqL3h;IfGxB!6Uy0Q=cDUnh-c@RIUP_S9dR{3p_i`VU z=g9dg7$RR~umr>D;X^@9YfMQqk=nL|2j!o>Z7FYPQR>(EkzSzbwcrefd{*gBPJ{eMc76M1=dDvLZdyd2atM3(R@v9qFsjJ739Y3 zp=sYFzk9O(<>c+_PfIQi4K%~a9<)nc)!uW`D7m$AZ@+FqUK^O@$D@^3T*t;6TBI)v z`FQnV11zlgmKZ;CK~RCdcx$^REQS_Ep4}WN1fRqK8kQ?myPRyuun!o+Vl-saYq`1> zNosrP_>*v!>j& z8w-&G5~ z6Fn-ctto?YqqiA*>CE##cnHwNHrSy~cS7`b=_k0~6!6LquJ_XcHOFfkQMybp`92HX zqFQ97AD?t};U7JA)m?i&SN?ix{5$P8MwjLtu2w+fOHa6B{#quA55YF*Cnz#6jP=Aj zpl3*y@Dk5@{u>aLTDZ&NY=U>zF_o)!b_lEr9E-X0qIj?6U~CDp65S#;oy7+B%b|45c93A5?8b`VT2)o@^`S^HLRDsugh> zwndtRe?Flk3i%J`MXEMvp=ZIQue)N>^>E_Pf5`tNEJ}^v0hEqW zF?lx4A9oD9D)#>-@_!(h|5uO~K0U)T&xuO=KXJv)o(7I&hg=za)-ntLb`1k!s+hn7 z(=8Fi9A20`vU9EH2e_!Hnc7uE9;+a)j{Y=Hs-Tc3^e2_V4ZM;{P*v3ht_c(rz51?I6j8^aWGv)qeD+oroLMM+RQ* z$Pw@gl?!q0r#S+Ko1-0=J)#I{o|>iE(dgXm?!|VzHeFZ6&zo#f>pAcoOJ+n(3ZamI$mj8Y9Y<`qQW=DSgKryDnZkjnwT;(G{4V>;p0<<8 zRONXeXfC8isqO9>VlNNZ4C1xQ0Gl?eVUo>ANgWXl^ifbGk;+Bum3cR}o$@pf;*syQ zQ(W6M>*hsY! z!30f4cp1?qm8QJj%2oHN@~WRQ|;l18VsHd#i$Z9%ZAY;JXoZp*xuKe`p)%x4d;T z_y_x5mBqxy$o82+e2-(g{{`tFZ{Vqj5wGdtiRGPOwfIb$qlladV4# zD$PW$>3J{jnkCwv&eM(TsdocOlJ2II;vs_rqzS3f#Fz=DIo;RgowU_NI8BS$@#N2# z6RvQ_Fc`3klctqm(icvW!`d3aMg(+xkB}lrk-AW0WswgCBwoVBL<*8UBaO${_Jpsm zUbi^hH4L81^_)-fsKZrEo^l<5DL_l()d-UzJTQQKa3J#0CLU$7%{f3tR%-f{_uw>z zo?J1fo_u8bjtkE*La}Np4r*YWJ3^ zZnoEZ(Gjf*Hr3(jiyV=}D%x3W%;;pR&{SfteDYjt-cQ7N@?xmlMS0g8Uwgh5P5*}8 zRJP5~z)^d{U8V5SN4FI$YP$_n%+koi_#J@U+WQinQ&%fk@(cdp=Q`p51j~Dr z`j>r%Zv?CBQe1Nk7}nIQ6%V)Ge?e^F9!qtG=Sxg7A160#7{&VlkNLC^Zkv=~m)}^|D!O5*&fzTW zUARy0*!^<_dlDrPfpzF`zVSPbprP^)_KKRT8GkP51D;m2|JLt7dnxa3be^QwGz177 zEp%6T_MvVW|N+REH|Fog{+5v4P1Gkfm|Wyug7}5mzkbh-h0p1#1gn{ zMr?gGhTdj!X%qs3OcM%LzXJ+JXOs+uZV*hgtg_c3k;D|&k;iI=gDREZuw}~uY?XZ8 zo~d7Ku(%2(*^Rw8?bXB&J2%zTQf5?jd3|fIfU_7E2-J(KqW>p(d{@wIBs-pT>i;xq z5>TR^QkQm{h@KAMT3FrW1TFUteg|yV4_uu~CJibR*0c?PH8^q81fcqp>_Ssc49|&$ zR0757k1sY|sHjsHPk@50Az<)#0Cpk~2-JP=sgsw7SPy!$t@#y{799~%Uls&%WpZ}) zk9iC8a(#zEp5xO`&ydC9cE7ts;jpIkvuxa4@ywpDZ(cAhg$pIK%dytz zif9{+I6?8PM%THU*uFOx^-7(&6ZI-Hir`UgmowvaEKcXG&zl(rC=R9I#-}o_>|wBZ zckK7+4(SHLR`U9y#(Iu68b{jfJsMOI97F_p1X>6zzhm;U{}OJ^2A9_BpPg-eP>yn1 zulPZf6xcl7+XN+9j9|a93;#LIa$RWPr9wv8S+48M#HYC`eJ78_rvWlxUT&9s;oAIlHG}JUso|ap-Sf7${LB_eH5G@D?0Lp_xl{ zm)}k#&&Yadk>joVhRTNRe>4fc5tywa&<`p=p6E1V@21PzZD!teb1MYG(+mwxqtKkf z92ywLWNh(T?x8)*mk&hL612x-u%NwO=|CIkS@2P*M~H2N(U+lH|2PG1zxQ&COw~Cm z-{mlED0c&qeqrA2!0u&gV4;`HohqA=l9j?e1|lCXGi}i6yJ#`TGU=W~vS4LBw`QUH zhalYm@1C%;taP&kxC(%`$com$;Or8D!(wo1AbmSj{^!5)i6-eMbmf~$i#-#rvP?7bngRiQY z2ghBA8{FU@kLFCpbx;kZ5%DA5pBnaK!{{E0y(49xLUW+>l3DTl(+J=%f91-Am*2Nd zY_W!C6#tAT_ej1(8lL_<4@Go5(+0H63(a+hZDkR2pj2ATv|JOu%BLQ)&OFmSS-dKZ zZN09rz}vU;u{I@&aK6AIH_0AV1aY~y$64^B?R_Ha$S@9E@jFkM8*$Cb?4ba0XN!O_ z6RH+>3S*l0owG_FkCF!wiJMJ2MEb=SmghVkL-UUJiR+96_}5% zYa&5ZH=-K^{9cTXEh!u!F7@Ue84UWECicUEt#4;_wJ5Hc8@4W7_};TWiOplCs}hX8 z5+BOa>$y<$zcvpcZ_?Yg8WTpyYH@D1iy5ZfKh-?AmRxq=S=*RfAaXYJZ{s@(dQp(= z$KXz26gg(XW=*Ya+t^_~brFp}jQ0d93nrJ@nHm0?tbHrz{#CPK$^&ivjOy)i0g#n#aw)X_TV{L^W6Sd%-=x2W6B4~4BRY=M?vw#q7 z_o;yz6Yj0;A`!Fhjlg_Ic!PlvFORTojdVTpn9bXL_|n?dkmHGwMa{H>h>xgfQzkxC zOksohNrrE}+Gmjv_-AdMaV^9z;vf&7*dGOuT6p9G7}t2iiqLD>-}RlUa8Owf@*{Vq zS;L_qL@7c|cJ4!OIGNm4Grb@2wOAIOv12?%d@|6l{JC#TsoU$9F{C}i=jG5vrP|vG zeZ)X)Sm%;JB6pl|F;~4@_g-o|k^vdk$<8R_{YwHZVda*x#vpS4Lt9VIN{AWtPjmY2 zW;YW+)ZPb(+We{Z<{M3JE;bqkMv@jP`-imfG-JMnq*xvtXzN;v9vC<*3BXorXMu<{ zU(KEvx5CVnN-*pDYKm3#gcLs|BiH}Uy8G4~D@-bY_cD{6Z{Evmv~RR7P({uD0}1jm z<2yl=xDJG%G~3V8Fwynj{A2Nv4%NNHcH`$&Dr)IPlfH_#)j^bE$L}-!gbF6`t%Ldn za@ZZKsXF8-oi6{Da+5>T`IkrOr!O}}g9qkz?$rW(p@Ex-uJuibc5Is(|C! z$|&0MiK*!`^1#d2%*;^)!7T-NB5z%5T$mN{s}UWzOsi0;kappV&^y=YVrbgi((>q% z>9x=UalQg*hBV`KV|Lu9En|e?%?>6#3`*_KRTU4WmLRI}mnSJaCc4SYR#Qp$(;xHO#<|rv)-SguQi%6)v zxnZ|Sd4L}Kq&G^*BEQT0Qr&A-wPDzx@PR)ad^AlCfs|;C68C&)oo^F*FGQ01nf6)CstG}Zbqc5SiTy>j z+&eSxDas(?b7BEy3f~f}4jYggOvw~S|D6_oY6)Z`{S%UJ z^`WGuTH`Xn+0s&dO}O4Yx+@MSAW}XJV=eg@RV#ws!R6_SySSUVAYaEfX2G{&t3O;( z!;53az!iMV2HX_ugC(uP8W0MI=bHgRhQAJ=o2ZogqiCdR3(9yE9kdYMhM)qm#zp+8L7QTu8x*sFWnr*-lRR;C2f`fzGfb7S zm$$>|b!)397{uy)t&@m{ju46ubqfA42Y%1f@yjBv7N4Y3qgF|C!bSap)?AIk&*;pF zg2EH==!l@hpLSk2t5Qs1Vec}3g0^M@YOfd~g>&(ow@F`DttR}oz`Tc_Tlr9KVj+HB zNj_{*Z_@&c)Q&*l-1tpBXQA1vP!wrMap85uQbxZmey+7FcCII!uBh+O8p&4PiS##- zbEWKR%rtnb5<@`DvJ|vE(txp+L!rlqOEuu@7sQ_JZ;>a!jnKMbrDMThTd9ZD55!|w zhn#n84-B;j;Gis%D^?27b93`N^R-u8MaKI|JQC=(h3Dk_q{Zy7Wmqqn<4ZivgTO^; zk+Ff{)`!EiR#vvudXeoyxK3fwi*t!oY2fTZ{eMrSVWuBDwfO(Dxa<1uZ? zT}wof^&0_39!ovDGP|RA)^x2~8Brkum#P;ANrKu_mdi%+g?!mX3|b%uC~hn;7wqsh+pIO zzJ?z;q0fKi*M!|vJ-0sR$rF%(p%Sby$kAwI122CF2+Gm(A{vadw(X<_gFt0D1oVb{;xt1t z0|N#s<;E1Ttyu)3u9kx!g?S@-c$$f&@=WRENF2YomkX3pJDqJ%XlwJkMPzZY{NCT& zWo;(HSF{)e-2{ z(Zb=cJU?;x&B>dZp1n;qklDi|yUw^ZUZE^+qRg{CERn0vXNbs=bWQNtIU zS4T<|@vLVSRiS8Rx1zlR@3#^*Ek1ONf8=sc9~k`L4{U99n8e}aIzhv`*p0-tPI(Q8leKJIwM)36 zae7T#H&u^xuYA_ba_5oq_1XzN;oP@ajC34QZKxOUS3pVSs1)$+Qv}5=WJ?t-ggwG5 z!nXH5_)I;=p7Z31!ssO|9B=rx3r!=V!c1sFS9ElqG>qhxWA!X8tmf~aJDhbWJ4hv z*BLmMe_{M4=*TvC6gI_Vh{g}yZsT*=Z(k%!Tl;o;AWp;tk!vAnkf!x<&^0^GnCz6S zDL@b$pg{gGt4UZI2nv>U)_~D_SRuO?*dMj2txHtAL{YK!#U{mP6a7- z3j@wbb-Ek}iP#)2TWzmlx6cLel#zyl0*@2JW;MRQEvbdL%f3y<>3j=rAU>v<trMx#wGVejRg;U(IA2%I zn>AB(<3FZUy$u2T-1}Sc8x=otJVhpE{etku@u5a*->wze_q1N0egr)1^zq5wpdLq- z|H3b&WyPtjmNKQ$Ltc0+P6vG8j(n11*AJ-k4a==Q`O=wlrZd!9rG;$p;Kc&zkSBJo0$23?BNJes|Lb^x_wG4P5<`Q6T=_FdKQj{I-e zX0Mk_j@svruBq7yro+{9bfBO;%Pde49?R&_C(TciS?__n?9A&sw*}YD_QILcWaej< z-vKL*Ps#AvojGBl79tlV?1Cc|+L2P=5O)bFk||BgzA3@h+9N#9UtXgnuRIhCZv#|N6c ztT!I^iaB) za^Xe?BO>8Z$Tdy4VT#Qh^`m7t>=FtZ-vP2c>F8#V(e~CCe#9Zr-Sm*i@wS}V*hx@z zhggX0P7x~8VAm)i!o;u@o-37Le|d|+Z34AfcJH%Tn48L7FTX@3kDG7FFZ51c2sb&- zo*2Nb8Gg^}YeVu*MG-Ju*iU36NgN+bC-!~(Qx_2**N_CmdI z_D#kTvm~d)OQZ$BP)>R-!zAHE0t{g%+L4E4S2gZ_GN(-OYKaI=?9fE`CNk#aX0#_j z%W97R>e;i^pQ_I=e*d~^#XlyfBc_Zr+?lOvMa<8LT^Os(;4|H3Wv1!S#LDM<6pt+$ z)3x|4@>5l$TfJUe7Pl<44fS~9Hl$)hSUwHyr#gtoN}%o9BCBwZ%IR6>q3-gN#;5VM<rmv^C(mkGeX zih?jZ95ZI#i$XPgdUH>s$5Hd)PtOS!J7*~jlYC79SsOU5K_Hk2@-5tv(Wo$eP;_Zy zj-dqgLiA@Ds!Wt2>f!o-&p21n{0+J8_~Oea&Uf18MoU4ot#Hib=ztA#VzD+}Rn{0Q zOpS$U`^oEmFe4RBP?V@%BeAYAbk^ddx|+@mw3n$quRH$=yaro;b~)1F-=%oVDMRIb~om??7@#;P+5%hT$v^ua86uf#6vA4rR-D%jF2DYtU%jp~_4@I(a0ui34 z6&{Mdbl`~C)EK}$wkVbF@t!Pg{qPqCb=wXAw-M@G3+{)RZ!Sa%(i-E!c{%_Zi2Fp8=PuYirD zu|2b)Iiruqz~*B}FoepXg#nUy^Y4IXeR>;Hh;2;Q2H^A!sX5)Cxc2$%7?CIYN@jYf z+}AY5aCBHzP&=DQ=RM-y^NZYJ0Y@;l&JqyDS26_0JWaIG^0xTQ3*0+p*$btIQTXbH z%pmO%er#;WH*_jFhL&SJy~|8d33>_gVy3I?b|0A?DrO0Zg{HOmHaVMCz5}l5g&)F= z7gMehb8Jsd2#W0s$@N$_IqLXNtw;)Z7{?txOUaU@zUIO|W$tld!-!43FDK}u)yH71 z@Xcll1x}O{`8eip9h(HOjVKMoSH43~6ow*m{@sokj%$Q^Po3OC!O&Ml2E3? zNt_o8B=fH<;d6-hw7=>~wiw1sG#PO>lb^WJ-6~-%!Usu?IMwf(w?K0jjw2{F4&wpH zCUb@w2^@~VfZ{F9;!EeS8)J&jBjOdzyK+cCP3-$pL$>$^Z%#FRl{U{V-e-GX-n5%a z&MnHv<6bHa^a_6)ZMf5Ci+|5~A{t6Sg+1*`VQ~Wo^ZcFn_{M z)#op;Bb|PD6TkPBKXCR%2;>3ampanE9D)Q}{U%h|4v|d1OvkEd^AyiBpdmAXv>eMy z?rp_uVSDDviTLk`6B4Rx2^s`lETPlL$Y3UCxtjy-#dJd=bePc}C|+PLw{kz4e#gJ+Dx^i9*TJ??^zJVV~x#{LZvmRrnuT#;NEIN0_?VZv8VhxR#Y)W z)B#c3kTuE?j)zp<5lqg1A=bJmqDBILf^I(RxA}(kkrctiK#Sip@`Tp9&;*Kgx&mZy zTAp~~gK6UzIv$mVA4j3M)eyEx5S~Vd3)p;iny1#zF4ejap(VqC5wEF`gGsaVzR|8Z zoGfg(?U!G9{HG^Yn67RWxzXzRU#E9xy|qaOdCFM#M|0B zkCH83W@f6digj@PTO;#zx_TFWW+I~viXG+-g!Z*W*o^C2O7gPELlgT<#qUAU`G#gz zu-dv0DUsIjcVWYPEri8>l(?0dDdeabgtyT>t53$|53)9f1*;lzM1*Jr@bF~dgS?zk zN>hMG3ONs5EVPb=@B+6pGCFQ}n=s&H^u@tX%_P{!s3s~%U4U0@>=UP{F~yJHl5 zJtL~*tu0~qRSW|m#$0{ev>N;&PSi@y)n=*b(lMwy?uj$%oyIgX%g^aERymR?%ykW+ zHUAadSi9~S;(Uvd`Mv`#)nytQL9wfwP0K(i6W^@m&ku!x!?nHpL~{>aFWeafSfg~B z8t;*kMjRE^Io`OIQZx8Ac7|ub9f{UDv>AgW8kkzjN^J`_E9|L6%LnoCc>~* z*?e}cq*Wj41mctcM84gg%y<8`!w|<~K2}&zPOTpvg}XN8Hp*o>~uz8YZ@_*TY>aF9U)Ld^4uiv$&XLmhw@GvO_#h zCF_F0X~gfr!2N&_c{TcKhG`+$FHfkxTbBorva&R_G zjNMhaucQ?%k`w5hdPB#cE83DnNC}X5?y|4K=kn#9HlZO2LrVMyTX`scxh{eMx!>9z zj&3G%prO-9E;GQ;8;4-eh^J0?mKe-rLm7cf|HCy%N9`5^h7V;bs-nwi0WW7w^;Dm=bNy6VWb4t-=|-=Hr7k&QG){bY#Zq6>ag{b_vx=- z4FJ@z%(|OYaD;bTc_y(@cjLcUhjWL2dbu z{+q1LpLdm>9yd*)i!$7}7fkA0FJnVDO-V0400{~uxbsH&5;v7pC37pL+c-x4C9PGo zo1bP;>nd@=yTGOZi0L9<1l#K~v1AG}aF_N67Uh4Ml--_I%}hb^vy0?#8gM||O@ z0)G#@sET#IHT~I1p-I#8FeR)_H#AWLs8^mK3Ujja!L9#T6l>elvDuX>p@~-?%4s8N z@nC){Do_ROMs-`CVDs{saM&o!1>#qR-?j7CyY?+jk_7fH(aD!WC6O;o3rHxWxT4}w zy@-XMKv^T8+4K`9QJ<(FgNQ*+IB*xy!3lf<@6gK8D$WF7d;T<%?jAn4&_jZw80GJa zzg8RIuTzOnEFv5Pv28ft3&7>8>p63zMDgQ5$0MLW1)^-@!jQUqC+>?lXuF(z&6fI1 z%Wv}M<}Ao7PAR-ogf)kDX37hlH57U7NOyi)y3W+Ic^=m5T|A+0#|j?a)0Kh@ z%6=IJDPv>%Sh2c0Mi|W3l?tJO8*Ivl`bG^jL(CbA$a8qDuP{Zb3_W=__1llViTG5b zc8)QsykE0c*m<@> zluC62EXovRnrN#?GD*wX*w4wOzj@;a*zvF_DG@s8Wi9h49wp5=xa(cA{=ICk7MPcP z*l>F(Tn^yA2C__xr&3pgmnN>tEDSkvY*tBLA{{GL>}cNsLBsdq4nE_r2-?ju^+Fc0 zwt%>m)zShCFAS~UWw{q&k1SB=eHJo32@Sc^ry9YaG$CbcxEAYB>AtbxW&%fOWX`{o z>++~6Rgsvouv6fP(Qg{QQ*?uh`O(<+u*B21pW`qgD-B_aQT>O0A43Dq`sWAWyf~HC zQ8k55ewqV!9Z$3|ihoNI+^JicHmkr4+!EUUHJA7*`8ST7@5kcH zyAQbkl^;&TZZs`B@UK|klHEYw@@>BlF#Flf+xTD8^6RrkLlBzvP>H8YhH6cLQKZ__ zl=w!Z;8@e$xX~jo2`FV)0~@xPu;V>dV0vCX?y|Pk)39DDT+4+Vq(S1Gpe#pBU+WBA z#VVo8pGALNZJ&1E;3^_aTOKlzKCh8@X2Q6d4bsR9Y7x%)#*4)k1fycxvjAm zOB9BrWQk$Op2Ir$HHAw13S17u6(44B%rBiJZKTkNil73f{T%SC8&gVUiXL>2#N-Oc zlIL8AX_dU*ra((4hB7r?yfnVd`~0b&RkCH^Yb@`4PIKLaL{s^PYLo|`l1h?zv!An) zh}C9K-2Kw&e-aK-@4(1&Fs}6hH z{O_aq{qRp`+a)$+!USfKJ+O6}>HZGjQuW+n05-KbG7e$9wy<$M$M!B?b5j=cs4m@U zxz!aY3iZ*(ub?ov0qft5HU*TS6yW*-Ua;B8T zeKn=Z?YZdSxJ9MbT-Ve=S<*hA7F?AydQ{l>qG&aGmov`RnESMt511V|!%8hB*XCuk zR258l?%mn-bfRyJo=>}I7^rZ?@O;jda|dTJS5a5hf2r-)BkN!D3X12k6>`il*c$Ts zu$7{gOUy{&!BRAN};KH*(Z!n;mojn4pMldMNWdg1PPuzq66I2;w zexl`2lI^nb!-}BQUD4|gd)Mv>e%#c3=xewOxB80w{tWl^8iR1FR-p5LJ$WWZDxbjR zAziXOKJEmk?6(3Cuf#9D1>c5xIx z-D69f!Fyhe_|5QvJaE*RAI9d6LMY?W?=?-*A^LZKQ}PVWEST(&pxHqfrcUZpG505a z;@3WF*yZpzLW@w1ILw`&H*!d9h|uQaY6fcyd{$vp-8cS?aQs7Y(w z-ZNg!jyFQPbxZ7Wp^l=fZjV3Y@qq*)8lXW_7g_37uFt|*pPnWpRo~YNZ%1g|jF?bt z>?)W{_A&K4Aa%nNe)d|-pY8ruNS z>i;g2>aK8~OBgYCf z>5{YkUp{s2g_FfkU>7ROBvT(xc(W%x_nGR*JL!wSyKi~s{>p!!pt`HIN=fy1>UOp| z5_J@Z9~evuFwzDp0h-D^+AT|o$*pe zJNI78(H+N1_RYJK-lM0*8!28ODX7)UMgt{(jKP$=Z$EGXr^)_|a0YC$+4M zHu)OC>xDC#VS({hf#R;HEr;~E9hmVHFxn7QU}YWAtHW21!+40{96VFIB(HTwaA8;9 z;{??pTV4lE9^+C`I+#d~NoyKGEtl$S6s#je5i%kw(qu&WDkO3}ayn|-LSM2}B5tTF zQ?%UL5~_8o=uwV39xVi(KAa)-Nf4C=@0 zN&Yb}H8Ka)C^XE~#NdLOW>g}W5P}LUJo_}v!&44gz-ZhJ1Kr-d`cwKiYw9@h zV>>j&Xum1vz9ndAN8f>$M3(LOUm6<^w_S5Qm0s@Ssvx~C3B$Lq)gD$O6fX#}$<9?q z^e_N0pqe5!!l$8r2OvJqw?~cEbVBcBeYH7hN74Y-Xg_%f1_Ofo;V_w$;M|^LB|?dX zAr_!XU{|L(F*jW3uC5SIs z7hwl)0CiU=YPHb8;V66(#N_T^Zmju^2m!s5TB08N8Cyn?NXj+aH+ANSu(BBiQCKC! z`1x8-B8}@+RG73QOEwC53OP;Pb+x8#lBis2ELCg?p9VQ{0>1;2qo_iSgQE-Nc40OU z=b_ul-f0uin~U5Ai_BVf9B8iysFCOhU?lcnj8i{1-JGX&(TLQ1ijx>@%;cU*5hDs| zmSJt$QwsBMOvf;a-~)%?D)cF?UN?z(xU?1E;2{0zP;GrpW^~~;+ISCp+RzRpmY#7` zeaH*d;HMzzDNExG5&G2?s*+7f*!+x4rjn*$6kH9~plbLgV;>_5W=7(xNr0ItK?FDi zu;^DGqF_BcMRU?@ctAl7ViX;`G@b6EVP~T7+Ij;J*9Wl>6!d@m{59|q%Gk015Pv?R zVJAv$OQx@5Eup>_8iCh?f$g?V4O-=zhpH+mQ{v#5%kE2(kerjf&wSLbO6;+>e!!a;q$2@~$g2XlRk3fp1mTHnKJ}t0cF8IE!ryS}yEGV`i&PwXMNvi- z3c}nCnnKailyb_BQ9hv{J1AZ;0wjEJ0)ONDY% z#HeGi$R;0ZN`k_k5>6FhPS8UbDK>=<=1@l^d^gpe$Wn*URmoXj=MqDgG&vythcXPHjmo#DYs^}yJ!n$6j?j_eP~p-bEMzSP*FJ+;0_f*^@KLsN z=UZpK0Rf-B19~JdNF)k@Oe&(@S|n(CS~+!5t-rQqo;?-nWj=N^KxR9fF1jw#l$#{gl`){x3P?wSY!N_Rky=q9eG; zG23!Ui2BD46EMQyG{61pUBP@U@-0ST1xghPod16%Kwe?w^fgoe2sBIzw2l6MPqP12 ztRae56i^`{i{G?V;fCgCqCL?|>%J6YuU%DeHftbxq}cerzEUhpZH; zAAj;!lqO0(Vz19%1^yRx-vQQCv$eZZNkV`G0)!?BO_~^*Mgd7eZxWgYY@v$SKvA)P zNeB>%5D)|rH58F10%AuE9Ra0^=w|^D#R>?Bg5?HKkEfUW-~Tz63_FuGYu2pw&dlD^ z_RRj-Q|4bg7Dc^GvE1E!`sz@}qw$yT{~{oiZ2Hl1*ZWcheNUww_j zJjg?@!;FW-Lq%}#B;JbLi<=%$gc&! zO4W!bmiy-6u^U}n^Bs_Q9n>>>^H&Vtn~{j`K*!_hqfc&i&E6ihtlzh@a?@`=*T@yW zQOS~>owINukpRiXIWBc zg|qrJG78q?t6SDqZrenXV*zSSBNS+WiCTf-WKtaB09y38xkh`V*xGsiEk5gn6?zmZ zcrS-@!-(f9L24T8JM#uM9!Srt$D{vHR7tvI|3Leh4xLMHkY#NMIv6cCn?VrYL|*d% zdJ!$DI3S__4(wnAy0U5dP`Ss0!}jU!(sjcUOntIF+)+_TXr!33nANh?=(>v-FMh31 zbgq)Gwxfzg8+`WRSB1j@Fn@`7Od}3N3f2I}Y*cgVB{G1mDg@Jb%`Nh9gXemTOG~rF zDFD`QDFR4}<$A`hO63nqQBQscrtLTQd;7?4Vi=VLqK#{$qpvXBJb`Q23bS_WBPavd zu)M2z@NF?VOFK&6*{N)F{1cm{gCl4Kch?4Rw|g z8E*nGjNJ`MD1l3-FG?1@6^D?Djw#hiz@8UG8-CkAEl%B8QM)T+`<5{IvdU4s0B>vA zDkOLS{4)3zs`;WZ{VYy-w8w)T^hbSu$0Jy9^JA7Vw`tQo$T~HprSCf!y*$=Jo8;RM)(_9Qo5Zeg~{B#ks%SviLe;(HiT_}pRIb7d$p|5XdFPjIeKN&*cI1|Iq<=X0-wUu z{w9AY6!za)*0kl4u}fw4_N1O|K_^5+yhEJ7$w7tu{yU4BfFS@L1+VauZwK6+0X~Cvhg|q#4=7^-Dl1;&T zjjiS|=zJR_0>(@sxBt$650N=;;uGeg^?$D{93!&jZ;g) zb-AVzs_2K%vAZfLfyNf2_}dPW>|U$%B0#K1k6guL-OH?Qn6lQ0M5rvqkbF-L3g51f zx+b}I=}iQ~*eMrP8yII>s8A_DW4RmP2BNnjQjPof#CXQ$<`13#WUkyrBDqkB#j`p& z)%+0^YTRN^K=o5=vOd!qUUs8!u`W@4gfeoH$*ec4V`uGB4M)7&bO^YjaHcbcSygA! zTW7`-hx*D>6O$}I>Z?ASF5W8GQdE>7QOd9mxd4E!ZGHt@1~_2Z*3T@^;y|X!G&hj~ z)Im9Is`eGYQ^u6H|MU7nBz-9u<`ce~eDG40y7{I&kUK4Z1^Nu9(IL6JYKpG6}q z!+1`|9Mi#-+4(w)6);!7zx5pbQ6*Rh=tITcE7S4}q9_$crOmPs1e2?qNPtFr8T`~( zYA~gKE-8m>oW|0%(Nke|H%HS}he>d1|MOOxfT|^8UMvcE{!XTOM?T z=!|u#74>&RCvwbR{xo+<7Mrn+FxLm7KB-nYi@Z`?&fs#W%FwNY z5ZPeji8mmu9x4%3;|WP)p11k5q5FO2PI4@b$ma#9DIoqEJscy9%`Nmt)gFPQB&RX) z+#|7w(I>)2A4JfM(Au#sPq$2ym7Z z2wx`NdeMEBh=j8Vds$HJJ|3e^v>cc{e%00Y>q`GGNsbW48oGqz?Wd#k)B5&NX-8Um zJq(jibiQQ=5o0~^ywIxt+E0(W-$yTcDUi;Ib+4%1A6Fd7=S5TaW)w<{VyCaa(pHgT z5$8o6v|ATigK}Ip7}l$TC28Y)g&flLUXx}(yz#7#covyu(`jIjAXwFFS8N=En`3GN zUa4*Owiq#@1$`I4;kBYa3-+uhJ*HimqBbJ00mTpp z(-})6Ad3*pDsZDQ)2g5`bnW={GmqgG9gY>gZ$WDy-Ezl7fVIUhUW@&*q6`(piM|ep z1o<{laA*AkvY*i1%bZHOHhZ|TEQjt@xQ5>PVW-WhG?^^tv6E+KFDgxVA}<`Enuyofm>M=kpHIs;kg>kQ7lYHvXh~u zVk^{vn8)%|gZ+p%O7{`hbQ@)3t&nJDG1HCe+cvSGQ)${zbfAy4hJEUP_GO6n`&fOd zc_til&qUyi4%K9=xQ&Mzj9f$RZn0xLxnk3`M!U=iZ|@It0w;(|ZaVVVU<7e~H+~=~ z)RwHSj7>%~L;X31wg2M;{E2pz3m5lO&BsfoET4|6hJ9PTx;&nrnN46KA41t;%KAMKK(c+W6~oGpwRP1rjSvmEDeO1BYwKPg zz9E_!!<+}o4wem>R_mUn3*k#lL^YVom4ujJ9zrxg>%r@^PIaC-xvv%m z26WPu(I28?(9vGc(Zmid9(0}DxRG<2(|W1|qebJuu;jTzt?$CvDS6PW>%*_a&xwN` z_fH~`x4k*>$s9?@aU{j8w>Hoii))Ea!Y~A|wBYOYGHji4FIKoejQtW^cB$EFwwfe9 z_31?>wL<);bnPP+B4?75luPj&-mD-eO+I3~>%0W2vLX~xew2bNy>~03SJEoPO$ei? zpQzk}6zb0O$86{|Ks7C$fJwC$SU4r~Bg)uXEvA3q5xSr?de@MBXlgzs8VY9aKS89< zZko@RJdD6p5@CY5I|y;8b<__E0<9iXwV2uR9(u^qSA}I`uc1`m#3@K+>`LB|E{l~u z4)sGF;C%;V=Q8(6Y%~Pn!I4eglM`+%peGe1UPE)Az21Wc{Ca3~Dilu{Fs26YV7CBQ zq#u}kj4j->xE7{1kLAEi8Zll3Wm^+pt^aa-TA-iLGeoHZVrE#Xcpgd46}Fnw&5iuD z&I*;sDO7$=Mi!EH06~@v&;&+3U_57Q4>e>Bu73eat2rp6!{(p_EkKD`dVlEQ2Ds3` z*$J`>P>Uku6X^J>^p=X$h7jY7;1Ss)(X5lz!640pmut3(5ie>FfCX~pjlD}^BDc}X zU&|vBx~Us|+7P(^6?0hH2@pN@_;6-Cd5w~tnys;i zTMWVGEaF&+1DUTfWHc;&)H`j9h6el{i@dSwj02*?^XS(^C-SRD;0%dDJZZM zOJaR-G>IM>HkgZ9ec6hnowP|Czyh@rl&WX^8?RW<(FmD_qlIZh!{-HVPyRCByi6RMQdKXi!>4g#OL*%h-DgW^3e6}x1#MfMD>KAN#e zop4b!Ce60adC65^gBwgs5U^r`TApMb>M^3rYwIXTFo)OfcXx(;V;h4>i<;%;y@!`&%mJ6jbM~Zd2cwMWf2wd!*$pvt|yy73g*}3v> z32h$IkWG`+FI)6g4u8NHLmlcW9_h>uR{d0f@jZ47Mm~th#SvHvH@J>zwlz=$7gUdXQze%Tfl8Hrf z$|#!XrDj0p#z2R$^8qftMWw}l%|^x7B7E5k_{z`W`;E8XCAgX+8#9OR>p$U3NAU_4 zRlZBgw%I}#oe&cAk-D`S6ci)9JH8H0A~0evQlS?$pq|uzs!y(>?zzZ8DM#&l)!IZt zaf}^MRh;id@m$kc@;aJg7_v<(is;z|VnhyPwI8P&M<6y#N<)aR;a~vkKl3GMOT)cS zF1eZ`9LkF6+0Vw7YIH7aab8z@#!)+rv(cBI%gN$#cb9|S)`;1S&RurE&Y zcU5_>UPKz`M9z$M-bh}8b{R4WbpCSIpw;VVavy`7RDBueAk5pHwODpCFy>>_D5`?cSg~&6JOd$8Xq=U~&EfcMfJj*=Dm7LsM zgOh@>T9Z>}mFZA&T80Z#0UR1eYgrC-ZxG+G%=i@ql(a_+9YghfgG<<|d?D;e22)}m z=3?x+^)v~zX=3G-rn)$C2%eASj7Wb*G}>+~1cCrBCDWDX(qxlZewt4zGvrcB-K;NA zKO6Ch{%XMofbCmW54!I94xD|y%lP48*Ty2d8XNamx8$9Q_;(fhTHrDx_F2+39O$T@ z+^P87mEaSO6(CIX~B7tSqmne=}j>LNVBC~JVSiGXI#Og36xNOPhDlGz?V6X1{_}Qk(FUhtC zU0;3T`K>ztm4mQq6y#&cE7o>YnA$Z08M=Mqj^vNc2^hY^^3k;7hiHF1BL`ay8z_#w zZHoNS&^w@vdJ^CN2F0t;jlTD|)5UNxOjeG`f9KB9=yu9A9<#b+dRr!$TW4-bC&8YNn467ni#TtQts7E^hPp5+pCg~Ue8QJVe@UTB-<9@GO(nY`wqh`L)e~tUKr1?#?MeW3~JTM2BorD>RKl0 zflW{4U%*QZ&^gU&0}7c_$5ou`(rbwM``*G@K7PO!O^85Bm(Md zC%v+X(4^^ShvzNDOd3!Em`ud&Bbr(bP_?_U>Wn&TKhfP$GiSF-d+VuYxQ1GMNTAlM z9KTg@qV?)yqkPA`eNtyE*NK+oWnc6EB5`J=CPC?}o~hx%DMNelPL9~FS8+QOW_&pc zcqg_k#@gB+^0a#Kz4>CEcfy#E0ifJ#)Rv<4LODy;-)NUBkfuu&r94AJ(-8;nf-M@z zvnSiP0;ZDpY;Y>r>6o)Lf`BYlhNDOtwp$YuAgH#=kGw5_*ltQ^Bn=ePGIL()e8Hts z!owj3VC}BSJ19u!BVAo|ws;X`5%;?l9gszY4IijgMwOYNkj^!7q{?S%{T$|PyBmS+ zgHUxF{~Qx2uH@}~0fuG27Oi^VGv}c;?{04luhSdvyt(r_yV(P+$1?4j^i9ftY)5)L zfk(*sUU;b7BF~fwxli`x;QI`Bv12%=tLRV$I@JqdD*oyr7J8j^x8el5NVrSED!7TW z)7jz5w>ny;nA`gvvZt2aspmRhr`X#iX;5DXTCs4`EHsmy7UM;)=><5j{qnC5A8dKP zx%%5l!*B5JlhS;No{a3Q8#7r2un{WcYIyx+^jA_XI!RNQk5E%HWRE_S$(-*A&UQ&0 zFIvFYfK*y0!greF!*`&p%CqE=jo4EAg?3ls#r=V`B0A5~Dq!a%}EW*!ih z>_Y8~8;Z#yU{*$T~p&V>p^wm#-r*I007KF0FYfy zlH(XjrgfQ~dslI`;DDK9Z3_$VQ?S9b61!kX5QHV8-bhuw2i7%E%8&8Ox7!S`K;o$G z3!wySJRnnn!5Z-bJ2Aix!bTWPTwu9Sd`_pbnaYM%G&c@U2jA*#b=nGJ-A_F*guzmh zzf~TKTg$(T3cXICXv8ZNA+qwC_GL+0tex-8A0XYg=92uvWVYfRv2U|p%B@9{x{j%~ zxxM$p8pW{YEPM7?hM~`b&Re$F-N0Q;gB_3IS~(daDG5Yq5eooN009rXtxx8Ok<{e3 zIN552ut(nMLDT>cFA(RP7l`3$^C$z*mP)$a6eS^Pc?YU4(Joj3S|fYr#Q>Db0-1q8 zCTf8=7y`3HcT5+v@$~8Nmmv+q5~mK&-+XQ%Vmo!U`T70@MY=^ZYUchM>U5>FH(#TQ z>u!C|C8|I;#^v@t@;y8f;UY6_38sO&%zE&WBUIk_%>0d+SE!wgQK`Sq(KK!_E%b65 zG~ua{Gzf}S6i8rEg>sk+IbHkW-B3^WzLo5V)^jQ!>D#S^aj%(R=h&U+e8+1vg4y|g zW8r|JLazm+T3uPmvIu}AZdIYuAbvO8Q{)i%HyQkA&4tiw`n{XJT`Ya0SuGfIlkUT_pE7ymya%WTBL-sg^^N>5mz;?4l)4Z{))6-LM1}J6 zONyI2;|;CN8e72>Z>2c>lHB%{7}lyWYZsp0Q^$T9B-2QnjA^OM9#DVG-7wWw^pD)%B9Cgi_ z!N;wQ=zC4ottI9fsZd*SfOW45P+DTc8e%s*qvv0}i%9Tk_KoO$CI5hOw3aQ^TT3-k zxp^_VaUMx#ZK%4{$~eJZmLLDYR|-XW9pkkme)Ce#{6-G=-c@f&zzUo&orwE@I&vhRNCf64s)f*Pj6~{^*@X zo6gM-e;H1yNFIwMx36FMq2wXLU3s-}?_zCt+W4qJBDA77>5RQK1!b}S%uL3km2-oE z-zH0r*s}0a#|8mP8U`r_v3JInK{uYWu9e9<6Uym4BkgjSvC^TCQ}j2cqY@39GYaB;%Y`C>?yJ2^jUuZ#wNI9h9VT?+A(%O&>=k3{Pv*K=XdrKfzpI8| z)QX(XDQO~%jv?zjflasLfI1l$N}y2Zayjex|VP7cb zfYI=#A6>I3qUYQD6Bv&CfqOW@di%LsUnw&3--+}ID zY1soyry}P1tA&<>Wkcm^nvZmhMTm9i?FG%v3m4fD7Wcn)| zD!hV)0@8db(v1}{-S1goB)D+@?U##lPVM@i{c2f^3GUg1eF3De-TyC$-+nz?G&nM> zfQFkRd8hmo?;e-z>6y8~${TGQqJ;ArV%i~Vu@ zor|b7BD0<=HUAsl`U@&|JmO0~C^#__pp;P$yNnmlw%&+U37BFmYrExb|2AAV>;yr3 zgd%5fpp%$)h^y|PDaR9hk^fono*Nyj#Ua>F3RCp%G~7RkUU~a<#rDjos?`1w&!J@$ zw@#M+`YC~x^=E`_nxiI`Dq1vf_`~53ultHez5{E2bT3z{}4X53UvW%C}HtR zQ*~N$xu43vz?Bl!1jey>I1s;hbHU2o%?Il$5VGvoHM_KgX%@LOIbgfMu~|Ng70?H^ z>{Tr$IQS_Db;_w?_AMCJ`Ydtk>$-A}hx=iz^|WgmEs0Dd%+?X$j;4+}G8JX%0YSP$wACct~x9-}8Pl#o5Hk8d0*4ko3_YQlz zk_$IpA%sv_w(|XC&wgn;MOqfp1j%@I{y7DmCA6DiU2B(Syp9G1aFx{wG(C~}Z}06o zwWg6rX=rVYL9TOT1uPCdfMEgGG*dQ5NCusetOunTf(Y7r-vRd)EJt-IZ@q&y6R{l3 z60W3mh#@@T31??Y5iL~|nWgqJy0!e}OR5k1Rq-hyk#{V83+3yd1?9@mU3+6GGaRb~U80-cbWeMEh(* zDCQw`99JTJVimIur4=N{w9j0r2S^VoyQ*x_hTA@vxCz$;mzdD=02FjfzJyH}s{nE` zN7++Wn$&A&SaQaxOP0DLaXLXw=E{vN!6&_0tlhR^;x<62n|J`VPZ#gqSeFxY^gTgX zMlddrBf9rJeDWvo$CjPU_$=JZ%0BmLF?BaQJ8pc#rzOXv(J0tu7F5VyEvVihno?IF@<+i5>(H|7xK2n$8fk0Gi_|OD4MC)(h(}Mm80gwd>$Y3?K{vT zsIw)$+BcADBW(~PEt(>@A(HzErJa|U8+B{v;-MG&grJ3D@i_^+4r^lnx+IbBdL`%* zAp;53s#Bb-HI@Mma9FD~n6Y#T$WhaXU|gG9_U)?lY0Ca@`@-$WN$Q9?(*OJg%yj8M zp6Z#2@~0eYaFJeFB6tpttT(NM7TH5xxHd14Sy^JeIB=Lc)QAzr>fZN0lBwyPYSk|>=#rsS~9tz{Sy<}9;g zN*e#pnn zDJfm{h)+(Sr8EhAc~J`!^X%pexu~^=KZZ3cACCU=D6IKjbJt|pcc6Bm9q?Rnc(Z(c za39>RG2Si$U2sDC`K}mJA>#6ZMBX1B>sC>_p>m1Ax5f97rdt#ng(KFoVRhRm^1<)7 z+JanU3;cEc931?{c%{nk5BXUBoy4Q0z5_>-Y}M?P!zRfytIEj@{`sP*mXzF-Z(P!m zT$4RtrCx{4P45hI$huZ*Vy=odv{=FtDsO1>UAq+No2cWBIOYdFF&PVC!R!Ol&s(fi z17`q_Acck-S&N2~GM%@WHGht?w#p7zyiAf#)vkDu@PfJDP(ySS&a2NGKH;GV@=m!` z=_yu4YpdiG2wA-BfR>KegjY}wG6LZZrnjc1Arul*giL8ktV=sP8G>grONx-A3MrcW z^1jXMbDm{$D39RCFQG;?LNoe4Z1zJ=u|?gtRF+@c;5+15WD;(9>=8wiX!~$AQ)|IG zIprHvmK_?wduNIgJn>c2*wj~M4tVS)KMxH3W9AvCM{E{aUIIQRC(d}N@hGKqDPs@g z)}*->zX;mvZ!ZBPaPl_V`{O*zq3+O$xGZ}`BhgIZ zVy`upAZh2LfV&G+Ep1V#cW$t&_}VMWMJt3BCR*A6Qh4k+@m@q``1SX(qR- zF};lIWC(JZv5^F1iD~XNlOsHFPw+j$KxM)tFrtSy$m-sgGJ)pBnY6f^5YyJrtGCrV z&VJs&hn96a_RI&#;I*Zk@v(8pO>4WlJFh8CXiQ z_@N0q0??uOdI-#m;u_KJ+eT!(F-ETrbLIgkUHsy4Ve16q9rY2-u~JYHN&A*6+?Eno zZIJl`Q36{K=dPxxDI;DnxGV`4TBNRC-K!hDpNmL6>{C%8z9T3_T`%_OeVksE>Rah6 zMc{|}auv&^ci7#_EL&OD{2j2}ZW4nv#do7%%kC*Yk5vTk5$tVyg?{L}vJ7AJ1S(&= zVTlD(yvVS8#gz*FJf?*rOtI1~Ss2tEsL=wZn-(w~In7@6>O5`s+v)kH@EXdr3T8V} zpv8*k$MbnXX5@ zGlcNISLu!b{YY3sch>1Z01PMdJ(WK>I||tpPOBCNIJmi&j(>I@4Z`sQqR+Thz#b~n z3BYYw$sf3l04gBO9!gT>VezS*Fn{AZcRa5*8iOdVMtE|r#7?r#&|Qowj`t4B!Lx1l z+Nl6y8ibOQVFisXJgC`W;g4=ZfK(K38Mjl0V%;M8IKYsJgjs8*pizJWn@abw01U!f z$?Hq`7odcfbbC_ zvyTk9BPeQxtx#R6QfeeY$5UEvjm#=^p0LNhyro_MJm<=Kl$&H-!B8ciel^?vPVPn2 zCd;$)V>hai`J>g5A5(62O+Q>UYxgvG_T4`rEf#aS)wo|d>Er31e>du?S?hsU`@Zhz zy#DC~)6#XW?RzWeeY{NUV)SZ!jv?7Ev|%v5{%`&iEyMeJLH{`7zYtm*de@3Q_ej0- zSo)u9@-GPdyH?~Fd&X7io3~I2Nr);n+5X07Y5YoW-E4(DUDWsJZRDo5adWjMTM2Qm|t{Wp* zw}H(V-GsI)%ge65Z;}-(I?M*GH!D5}pL$gnC{=bbKBTeTIqgov(9DuFbtk4$Wb>2b1#}}8yeQiHi@GuFn5cRnoJ#^Uw(fXF zwsPa_%B{T`59&`tgRG-d3%%t_B7I#X-D5Yh&bw(6JBcm~{WLl_gi~mt{jF|xCUCmV z+e^*#aO?bitsr7q;BTV*vky>|co#hA5`k{;ZG6*=`)jcu)6LcwTM%wj{Pm0j`0BUN3inR>G&%;w-839< z78aIIu!eu()-S>>VF5S7pK!Y*!fo$Q+~VhOW9dYm?GpiqkzMP)A^_%|^d#{G*u$Atyxv_ISZ;3~hSgz@!79v!`FCYDf0%@CLToUZHX4VFk4VU5*qS3fb z9~JMKpka*uEPw^r+R5sj5ywM_{BE=`Bfd$8wJmseHza6E-K;J~0$l7w^R!iWTcqZ# z;d0wz#~0|X2JIVlj6`cf->ugln!W=H`gu#?^oSwbJqZXP=mnAht)}z=AY1SO8kFxM zj>&>?YznhH2|^BFX2m)#M|FR70M7&LA=ep)VA6LGJ2yg;ByOlTAaivK_a3Zzf{Psc z=mW6jxLeJ9+|}aIvQ2IPSsZXDMO!~psO-2wP%xE29y$C0)e=VC6{|m{8cd3Z0pEd) zg>h^F^LAVpH4E+cAax4BdqBe%`I44Hk2#$WUZnsl*-M$!%6|YQaFaZJPaF^-6Wb1* zi4T&uTf05aUr-N|{~CJ%1_7;Ert#;kE?4-@b88=wMt=eZM6ulP&2Dhql=At|x6HYwlw-d(liloBZMMGM#|=U3 zT<`hB5Qf#JHHjmtn*#r!xZNjAH>%yzmR@|1F(I+Fdr=_!;y&GrI?+L*mBt6Jsbfu! zI{fcAquUWuUz|Ul?p{-C1zlt&oBQyEUpJ2`$$3^d&eM*k;YbYRmZY{z?EG@y(FB`~ zbPd;%$`^|F3zXZUL*B#A>9CdSz5}ECto^jow)_t|g5w^8oq*yl$?bm^hqPJMnZ+`m zaG%^()Hiky(;v6r@bZ%mRi;9;kWRsang z@CPWMLWAjOPjmET%dh34^~3We+dfoiguC{2c9R;3DfJH+m2hHB7dF@jL5z&w&05q-Rg z++eN?#>&24g4duaG6F$7AD-s;(PqP_ik*NXxTpDIRlMYwTP2tFBF@G4NeGC315Lj3 z%w`R-Dd|=NCRnRB&`rgCYR_7*V31+MjpYZ6HF#>+Gty%~T(8sgRj0lr&m-!C7Be9OAw9wtQ_zfrTClVvq)U%2?b&T za3*D7W+5UTq5Qh{>~m>AIS5SbFI=IjhL~3%EF7o zn!AWkP|HX~ZvC&y%X6V+dRwgb*j;Nq*DV-a&y?Z9=hcSJ zsSV+pDzYc1*<^6ym5awK^{av@3EP^FnA^shtAm*12U|r=I584o*&m>^t-?M9@1>{T zdVL~@uc_dAHu6bavDmxyIFSA3v85`3rzmR%fj3SGLTb>qu<6u+Mh4?fAd&>3FBqsAO5a6Zil6v+Qti(2(dzanah> zuP3e9d;oWsagkkoZN_?mO_KLp55jutM8yDxSC$L$G26K0>I^g6{|GJRi17k0_}ag%X!Q z@tkvV5}ca@b(x0{i>nkTYQflyL@bHoNjgb{=31n_YD)k65+RbE6iQFGbtp8Cv zkevxt`zzvS0tuv11qsm8Cq5hAUY10$SdTU?s_;~&FOTD_l-qp`AY4qPgvVwz4J?}C z01j|Ok4l~#kFD1W1*w(YOLS_mhJpH`VG|OsbQ#dirR$1Hxk$Rz1o zib(ckr9Yw!x0LU+L+k?9S36zYA^&yhuZm`(R(86I7#xAY?@dY-n9a61-H08mrDK#5 z>-uZG2AEHj5xp044ho#ay>Vi)$gpILSs#L;fme6l%Uh%iJx|9V5-zM+vQ!3x6QhGT zpR=kwD-iXMxA%J0L5qkFQi}Fj2hQ+W1ulVUg}K;nzVr#6@>SV8psu-;6Lv8VhEe-M~yLgNj_G5WtA|xs{XngG8!dbJ5bRIXYXN&PF&kZ{VI!?ONgWSo*!x0 z^($!twd=&Awqbz@?G`QKXhxmB@I`J#&ZYUgUAT8_SCEoT)^<7H>i=K8Vx))ukPEpB z;|>3dcG!84I2T!K5O0J1aj8*QUY>lnCrsAV{rF9d_N~}%r1*3+9b{ve`H8%7WDj-a zF`YxvbgzjR*j^Z^>#fCrnFD#t$Doa!W-gJrgIl{;xM|i+heEZA0q{0k6e850`u<3$ zr`pNfx;kJj9E9ZoMV*}--#j?i;f64dL|ZM~`A|GADb7=VZJ=EF2_HsW?tQ9fIdcPn2Q`BH|L;w^g*k!dG ztF|oOHl0=Ey9JEsuD0o4UVt%tjm@phd4^HTOT{KC=YnYkU8bor7wl~j>bv9FRGMb7 zp+U?BzP*?4aXE}=OTZ?}x{{XFn+kV*HO_pMbIW;nX7kdX6;a3AChz{sL}AC$>Va5wO4JA)TYkNj#0>x$t)ZssY?MAVWT?}f^757}jBoTIj zUWeUK%>6^J$Dpb5$ysRuzvlonA1Mh@tp2tWAQs7oNilWa8NQRY8QHBOIcR*W6Ga@S>MLl-&31ZB^ z!+g5qM#Qwr^mjnCC$oq&_Yr+rj(i!jBTu**jbEJ+P1b(uxHU0qaiQbT?0wa+r-u%U z*hS5pxzDYMZz*@pCpwhJ+w?YQMB71!+DU^c z<*JL__9mgL&Fdxc6GQmX8$rJ@m(BUx zL_FJm5JeXM)t~MHh4C{0MEU9a?HfEamr_AJ+K}}d^)J2B3tF}Oq=SBX{`wpG*QEcH zLjO-A{&hSw|F3EPAq7nO4ZbHxqO7n`p=VOK+b11E$&0 zTR96gt{%<&t=i93)!&?CVmql`g4E+;(gzZ~p#NtMJM{A>#obBSn5IpMMwhlhe~bOQ zB=l}qjmmlxH7>&aH^hJD(2buSZMQ@csnsM;!lbm-@}BF@{P^=IVj7(icxf?QPlv|u^m+e^pA>DkHoP$kEnSN* z?JysbBsC+Hg;X3)aT%YA-ThPen3Qs5G)Yjak4?di)nY!R95QSdy^xGn8bW~jBz}rA zr@P`(t;{Knh|;@Y+tuJ`gxiodosD*v7Lc8?#4WND-p;p4cFZj}Gn94t-LG`Gq#~-9LkV6J@dsi5_n>-zCzj!@RQDT*Ub+)as|- z%~iR_8ne6AytGvgfKRNkuD}NfDJRU9G$43xwxBg!7^u2dBjTlI$79rpCwwR(f9QGJo-qQ&h$Ql(oVJmU0^iklQC{k_sos_lS^_HWsBn{>ey z|7TTdzEY&*{D|l-1$=NOQ4-8c>YxOGg#ow#@RwC+w-jMaN~0c%$nVgf*kRHpL2h#< ziHiOLnwNj7r7r^hLp{{}j(KTg{nGCM<6Y+9p3<5Hu3y(Vg5NZrU@kem`{Mp*cYv=Avpo@6nezPu{`3HvS#( zEbXZIwus0EU0dczNStR{U=>}*#C6@&-|_-28(q!6+}ZSaCR?y~k%8n7btdNZ6|uRl zzIl5-V#yqg<`YTg6KIoPLKZyZlAZXJ1){#F^;dtFRKJ>3FVb}(#nvwi9*++5*?CIo zZFuF0Vr`(s)$onmXHWhV)$;Y1s0B}Hvw5hfD0Wzm zHAnuXDA%8{Iz)MIURjSe`op~X{!e1-#lIAF=TJ8p+a-?sRZ)Kl6qScx{^oM^_|>QQ z$V0yp97 zR{j$97f8vjc-{+nKZ7TT(Q)dk3D){FGs^XBs5U-43)6QZfpChc*GiHF3W*X=sn zp908Z&iJtyf{YD0I#zkE(nKQ&KZ+rO@T-CI4?G~pe-QZZ1^tVnL`SaZW9N@t0mC6b zk6ZyjSfVe+keWJ1awAaaVY!v;+Hq!A=-~XBDa%t+HphceVngGkYS!TayjNUTne zdJw)r-lj`*X&lRY;}UriSIFsDuAcSSzS+T)y|%IA*5{NJm)RSKb-pI%ja)NGFjo6? zZE0fOr<;p2&fk0H7_2|BYsHa!z0pQjtUJ3&dtRDlcUZ01+0P+G=R8Wc(%y|cm6`4eI2d{A zDB*~~+dm?^4y|omaLe|PdvEGJ6S=@E+p7|cH;#5?+$-|_Kh(ViKvZ3~Fg$b)(lLNE z(mj+)=g=^~(A_Jyy3!-$2B48olKlffi^?cUDz40$ki@w)IhR+I)Ki{N2ook1FMQ$!nkV80?@EuT6-=T6uHx_hw zKYaBvsQu>gYJz0T%`$T7Y&;vz-Jp`>3;WiD+U_A3LU|~FlNWzm0`gSuv+ma?&AJSo z7Jm^OIvtSEAJ;$PzsmDpgmn}YIu@&q1OFl*p@S=~uwTLGZ+E{T|2CE;e@b&L&=3F1 z;PHSuse?7`4iyDRmgFv)4D3~Ce<(Knzkdp7WHF}Qv9>mLz*m2Z&5|&}R`OSwNuCE1 z(Y<8+O(}$3!hMceXq$;qizlQCr6SX!Q_1Th@9{pcgaqP|lEO9`21V22=@&>a^d0En ze~*57wDT>VrM@}$(lbci?Qrs1>_xfA#okTcoB6+iL`$|F$Evgc-$s-WSsbUgdq@%v zVkLWzbN&`_=goO4Pu>ywPb0>$)`Y`vApC?{uYacSGbLBf9tm4_I*)Sw+u60u~g}uN6*C87&VsVHKS(gh=etm>Uh~wXsuL?SKRy&t zW==((>Y%UB#x8@(mwa=ueFYpHBfB{beAIZT@+=_H#3DGvstB-D8qjwf$DUE1BRw56 zW&r25k{)3x`g2WW3BQi>90DV1;gzCVxu;12-nVSm&MvWGM^2l|SSjd;a2B*G%}lsH8=QT{ zLxz~9P1vOoO+(vcI9oibrG4Qk)W7Pgt}d^!zT$9pc`DHMOP~d@R$&Tyqo}=o1+{`g z47_BOxl?OT)sWsQ2dEqeOT8UcN60*<6bs7}0<)9E$Fdn$^j*wrv!-oY!1-DJLi3L7LOMF=n zNTnS)kU!Y#P{pD0DJ<}Jq#b$4P&ivqG7htp+ZkcN;l?J+i4nyyfHz0aAE{?w`g%pYW-Pqs{=_TV%jvn!7f?P4UenWn7Z}PG z_q9g@O#@F7^Yt9c10Jd+;%YyO(Rx=gj6mo&YJtDXMT~SYa|(SPNo$*j(2^LmKb~IA z--#8XkMs<3XTlSiE<14>6&WsI$FDv5woHO)sV?UYKcF#YcUWX1K{ z$3gqGuiPJw)DIu$l#rjEPfA)#vvJlVrD)R}>E^iq^l?ys_&9rRjjNs<;vRPGQ=KPg zNmyZmZ)FKCF*dl!@j!U;2>Z;WK#2B+(cX?{ZaX^s^U8@>I<08)+P?9puZm&4*`G); zQVLB`d(A6B!R>`Dh736mjg?hG+;UT3@U@=tb7%Isc!x*2#}lB$$1 zl>dOYYFkCN!bRG$4Ef(QYVnOsw~PLJj_i`l{_cC*I?Gwisg4BXDHrQf|sbuQRRfP|FN zovGCZF+;ttQfAH0AjE-mXL6acQkNBT*i1@HbK5ZFwdk!+xtMUJz-c!xUf-AJKfOF2 zJm=>;c=#Q>aiMFxaa%v2|KTP25kHc`-?Ab7#2*y61P+iC@c*(fQSi6F=l_HDxG*N+ zOaJw{0d`rPDulu&&MTj6?UJTaNID0!^6xjLkkqks4iye)1`_%sk)+ka7ilWO!Oa3R zmFDjw>Bx2YS&#owoBzJ1?Ds`Yt1E&(*b4D5Q)0^NbSgBCrbm2xQ(^3+*pnpwAVC-G3Uz3| z4_`(ztfix~UnDAq7bfT#d;w_(h;O`%J{jn09XDM0anm`Eo$cp+aGcTAWfpO93>6oh z1RK6zhV0{Z+~t-!W7 zgL_X1s1ziX7z1CXuEdKZLIp#FB8Hw`0Xh6^esI)DMSMrKV?WeyaNO9l_dc4A^rj@% zJhx*b*e;~J!(j`!4GnoVyNh{&yXdL~H7TjBBv%h%31V6ZvXP(9^S1+ zKI4vP=zyKZYO_`|l_-)OmF-pC!$%|8SQTI4lzS+PCtPZ| zipSR9i?eX%q3C7|kEzn;4APjszPrlG+y;KgDTQ1zR@pw+J^V0|wGwnUX6=>wd?gP9 zTQ~ZyhGwo2>6Xf_L+S@PRo8diqnt`@_|*ceMh;AYPZP0IyGLK8p1vwBP1JUA){NmL zV^trBAyw_><=2)Qx9ViHX+&>^Kh5vtaD7!$M91v~eh3xN6 zzNkm^L+vZ(p_UnLjV2b!W62ku;|4_9ok@yXDY9*`QLdPgS^Jz?;RVN!2p>QjoUViF$E*@qghg3y`krChq6kzwu>C?v{yKF{^s>i3en*eSOR@3pU34!PSX z*ojfxijlWcERkH@$i0ynT5O7gllmIRhoyx)e2{aFPLx{o-r5FYCSUj}A;(eV4h~Ph zYt$p*1hzC@r3bT5!zQ0&F3dbJI#aI_VIhn>;rXO19kr9D$ik-{{Z2cZ_*ht=%oHH+JnOu_X9mzqGK>{1(z$9w{F}W={!=8hh!b_%zM` zXqi9(AivtkPH`X;x4GKBZ})qV{Jrz;*AH{2&V66I-JSfGfowA1sI_so&E{(jTOAjx z^?pZ2p#_g&-qMr*=>s=jQuy>6keC%Z_ga|0+B_yJ)GT}^FYz5PEX)5jyAMxZa?F9s z3H4ve^Pg#*^+U*|fI+tZB)~6m3{uEpZBc;TztA7%$kQRvNX|8yEgl}`{w-K7Y6Qj+ zJF@#5FBm81ZD{*}c^Hp4X`n`R-i+h+3363xxw_B8M_B9Rg=}%X6N^kTJwmLt^WY$P z6OEa2O$v76P7rT11~n{lwKT`1 zvUL!ZQ1xt6&sHBtqG_6!_SmNSZ60;i(qw0*iVvji2?}qAP^-JXD6r*7X-(PmN9@KV zIzq^)b!0j@S@K)~A4^gPdQykjmr8Gc2S{_$9JR%x;-3bT7S@qAz3iG31VIxq4rKUG6Grqc2#Ve5wwhD z3HnfwZfXjH+Gd7PQ&a`J{WdYYD@tvA^(D2uI#Dm?LuPy_mkce1rk0;L)$CJ`CsE5M zx0DT1i*EC0yNkyZa&vOFJqV`8wd=JJGRZid(;llQh^21Rw-}G-*6Fe4i4d-f%#OtK zX_p?#v%5nn9gK)Z(K2uf&G$urCmP?-+t!>TVC#-|Zesc!us~I1WcRTv(eQ+h>Ag+5 zRB)v$e~r*C*#(~=SINH2P3i8N#E*`Sdi+aYh+>2ujECGOAOED{7ZKGIpd&=W*f`v? zjGVeyRDd)6(VQDlDL9k>E_+c$zBtC#&L$*L=P6yC)MBGPOZ@Z=T?L(&VK9OhOAwlX z2bjreS6#d&^Ols!mog?##B5mgRqcY(hqNqH8$HTndC|gMi&2)KyW3Lc^DI>y6X^cz zL1@4U*9fQncFl7LLNQqHb+GjmE88jJHK|sqe$7O~T-kfHben_WPs$J;bevS= z*NE&X{3I_zxahstC6mYW#6V z(jp_eDGEkRjcWSUjNp8cf|xiCcHPNr`Yk zQ54H0pvYhqt7L<@sNwF^WO#I-Ev2fEpsG-o8>T(FMz8U#TIItQ?ERDx+UP~vE*&_o z)M%b3ttOb^ktX9JFgWL1&e~E5wX>BA9nz6D$U|*hQ61_4V!ek*qo4}1#U(U*O z^Rlj-J^QtbdLFVU(17o&H`*0fSVS}1_eYzk47Xmw&wE*kgiX9Sf! za&*_}@kj4-hv>S^)T$fy1BZ+wY!9kWZEZp#chYh^2=U-Ij>%JTC%gmME#(T z0!0&@LQ}J~XCsXRk}gxRO_s;j=tK`Wgi*TYt8>g}Qsu>0q6rgE_*IqXh-Zs))k&~; zB~!#9yPa7n%Z5<7-R{=%PZ#m$ExvX;&3{T1D#&f`Ic-9k=;2=804^fMml% zEsT2U=WxO}`9y*m?TG+0FH!;%hYmG``(R=c%*%wT(#4deO6P8BgLw7?tH4^T3N2m? zQ#34cYW?ksY+_dVa*)SMzZ^#TR_CRd2LW#$*ck48YberwiK)7&x@Jc!{y#RtJ|e#h8w8L_4FR zX~Mu2)fPF1jB(DNGO98V8+8;EOQwl2`|<7L#4UYB@G1IypN1|ej+YZnFL%D>vKWVO zVZ>HHqh<1{cPfN@JEnEKgCnJg$2L#koiP8ZfdY?DH{IV7lasSL)Vkzj_yo{G9;GSg z$OV6uEfyGKP+Du%n%p3T=b>kL7!gnSfH7U@C=p0CiHMuDy9|@~vJA;7j&oSWl!bXk zERi7VR>%{-9>j_f3xDX%1;5(8p>kkZlqn~XlPcK8A1JHTLDAED_>r%@RBuCfaQenU zNN`i^riRPkLaLJjW&b;%{UgwO$KGICz^%7^(WYWdx3I(Im>YmAb(E*?R+@A_FeFDM zey;8iV5@xSj9VR;;HcI5n&U$a9N%p!yNjYPu@Nvg^k`etvAbBlp_r|Kt85WW082~Q z0~`^QO3i7VjN74<4StTR#a?B%*|gcLbz_T&uF7-Qn)uQgb*@e+r8;=j1 zCBfaWuqRr4gTj17PQL37i2*qAdv)hQ;m6PP2$w$Sa%&!&&uP_ckmyszw`Ii|`qT{FB4Y}OCEiAPa) zgf1B@7nqhb&6~alnkTzh;c|=Ohhc)7&B2i?)|JiDspD$JPDP_^y2cn{G>}iyP+4gotx#CU zM6EcK+9st`_ZTS`L zz@#K%1BH`sa?6dxCwJgA>j#mTZngj8MD*a+o58#PQE?`q>g2yi7{@5{XjVk)jxBje zSA^@EVOa^1f~&VU29f_Qo?^NcK-sx}DO3fX(Z}g`f2JO9%6+Bt&pgWL?OwL1EhxW? zD0D3{YCm_Ulg{a;KR~-~`1u3tzkCr9cS%gwHO-_u4F2abC@OhUOEtw$%6Z@Z3G+uj z=7|Q87+EXja-z`pVG_~e$T73d|4iXOOR;-KgBH^~7j|#V|DF{k9(_$8!ymcGJ>_p8 z=Du3vTvhel_O;Y+(C?TxUc8(6h}?f)a@LfLpG^|mlr)BH`@*< zKEGB(?!YCuFZSZ(`79D)SgKvXitGqD{|>-W-b$~|g#`3p1=%B84zxbKnD{#7_RXy& zFledri>v4Rpn^|pMhuSi5cQzFujl*I1rq*0qP&3Y>ME{tH@W36zaRx{xa28)_e@?? z{-WW;Dnn^+nX>CSJ^Y^s-X6IH6)6+5PtU3IzP;JMp^$Xnb>;=FYEPVjV%<-^})q3c5*pE1CWI z*7OzoDXBLoa3a87zu0X3PdK(>D`f(n=nIN>FaC@YzBE{Tp?v+O^~P?>Gw9%^|7(Fe zQe*uf!=hQ0Gs&laNPSJW5+wMJuHcJ>#V{85$@_QL_2&|vxyaGopXesOMeW~EVpYlJ zlYFMo6}WKvR^W6sowxTLFnb+!F0qNUOr!~nX|{s~a7Wzi{lCRV-6ehPq_O`Oh&>E( z&W9Z%Gjgq zcXpjm_WtK1OWXwz#_r;L{9(=ik$&#>yc*X&(bx5wZg`SE&t}*S*yq%bUe}8~YxPC0 zSCesva;LYdg265VlrX|Rz@^UbQ^wj0f8O;qK3v3AXwFQExyZ$0DrI$OZJ)#d>voG7 zlYGD?8fp_)M3`&kp?}fgAusvFzQ)vCqsUoASi(%FAglwtG!j8(h{%2(P};UGJ=fMb zh4GPvvY`xtXs#_2VQlEr3n}!BoDiKK6aRpo%;xLxB@>95icXCY#=`&%#@GZq3OF3d zs`s^^u!PEtltTr(&ct_EY+sHwB5NIeG9uegOtep>(sr*7`emoHeG^qPAFPNXUwjC5 zGWS4v6s>F8*AjY+=We?CP#V%KZdRAv3@wz0SX>N_XJZ;8zJR|jU++cw?@P|K(+SBe zZeWS&cPkvV=%+94V)rq^@~j?XRux7NkUEOc-ywzNS$i1-TPe2+~@mSW9C?X97*OGh)l8E5NRzV86b{VLNtbYPraV+=aB zmWi#^Qhg&ax8_=MXk@&PdYKvx)6vp0SemC!feGXn+S6<{69}CpwiV`(-Qo%?XR~L< z7RJLgmZ1v9n_a9JEiVGzwJ5|9?_?0mrll=_A=ZHY{D~6qaYiOmq!Iepblw=IK>VORNQk} ze2d-|$0v|0uB@IS9RaN}xu|`n2|0`Cp^&0}lgo#CPv)p`(Q{sj#hk2C-nt9dIEfME z6+M$-oFk{(J$RgcFBXhwX5CS*olad91sAvJ4EB14iT~UZPZUd-wrWG3&3UouNkRBC z@Prej^7YIG`|>rKRDus#`i8e<%MThDVF zfQyS9-&7+*&FrJ2H~N=$u+E@-F*{T8>}nk5R>`YavTp zqoctL(t4&U)T{UobSt4#D3ei+9sCgLg_jx{eWp2k+ka@Ph#gyTg zn8ajtxZ2pTLxJZ8^~f?FebS(3rk@A+zJg&06Q{Kr?c}Qq=3< z53&(BmWAX(3fI)<8LP_`v66C^>JUA})yJ2T_n^q>NQd)J zQOfF08bOJqSevOxxkQ=PSD4YcWELmvn5p_moA96x=~gLx=f;HLg&06%Y?|k3SySnq zqaSCo+`7=FsIchY++VG2$DUv+)I5YMbi^Uq+#Mb_8!Kh0iMmvWPGAOcHq)GP zf8Iqw`@GF=nhJ~A?a7xIo9Z9D$%bM4;Ee{1)x{$9i#L{exp=i&435>#F2knM0a46G z;M`(3g$?ezH=nNQlJZ})p5|p2=${3?;Qu&(I81kLc;`)7;EUbMtnYy7T8*rH$^Ii` z&z;BO_|0-3+>Wq$gRQlkw`k5!L;3Ljosx?uDSy9x{I}ZzobLeQKjymr_pb+vb0jp8 z^$2$o9^5!Xc-l?BprBy$UF07!zIW#v*1NwxE{iG_wa-oCJ66KRz5{IkA=CT0qneC* z^@59_OR96@?|@fH>&Q`HRd^cjHD1~VwQ$zo(7p1w37m`TNUMAXu(6>jr74UR-pHb; zmHFWHmMHwB0a$Fi%QOpf6lh+sja9csw6G$yM$+IcG)0$^bTjC|ZFdESHE8d7eVG6M zAY#9%fGElaEeZc2L3dBKL88uoMS?M{F|AvtQp^~QFDp08BcFhL9R5X75$wPYVF=;}q!9aeQ~j5fFP$wC17?CA-W08jrq z>09e6Aw8Tpfy{%6BgLYJvQ7#ujGajU6*n;lLxD ztkQm?ayMl}v$$p<(1RhDEi8pR@zcZafZ$nVTih|V;s^K0G{-8IAZ)r$US?0vA{1v@ z%|Ok!>l2@f4_K3;>_<}`+&(C`V$ni0s2ZfbP_Wa!kJoW{t1eSx)4%pj>5{_{9=$yW zTI#UkJ^Cb6GqSYj8BhXnF2~Qut`LTmR$Oh#3KL;5a?`$j50spLj%l_s-ToO@au!Ei z-GEadeXs-6!F?Q;3Oi?Sq?Hld!)H!|jcc?gLkP@{4ohbpEh!6tC1Z}MJlBpCb?hDKk|;`G8Xos%Z@aU0eG_w< zhn#h`%5X<{oW)kVqa95jTS`<<;RHyDwhskHxy&*m+sprPdliJ9-ArWOLH9UxaR5T z!R&|Xpfyl?Hj4XbWO$q6Q!pdq(sA=$6~LU1aE%h0kIHi`P#)MlgD0uNO6lv|x(xxW z!0qB#QX@+89ct2hHOOqU)RK5^_fys+^pU(xUdxvhB?ud~P4;fXLm}&zt%(fD`)ZrH zRb$+J7+Ql+Z9NM|FPlc0LxW8>2X|PbfBXV{nEj*UP_0DIk;w#;$jYzBmOj$l)TeXl@$o|CP)L zbp_$=x?WST5b3qbG*2P>q2&F_*)}rfs*O5hl54YtOr23zNb4|IpHXyk`Ad@ub3WJs zTioQ4^~!c)L!AL{zXMzpPcVeGQO^hS==DkBpWfhR`>9x3$(+QH9VE!cXriHv8Skeg z#tp7=if_SrbLgFbrmd(k18u@vALHs6JrwgsnyyiHjAtby^hA@_CpIrwn-9O-glau2 z+M6o3^}Z`u`7&R9;^={$PP2G^_QKo$9{|}s-VTO_iMviw9Q>sVM{GU@!4 zqq+FSl5YU0I>Cr5!vQ|WL3KY!9&YP^8Y)w}Sj{HJnEks%P4PzJw+@vY8*$qH8JO66 zg0yhLZJ+Qb9Jk_7hsk;++_6}NEa~UXl2o5v|aL(||P|5JT zG$Fs{F_`{hz_owz@#c2Z6nqN)Ig<-)lee3YhYHuczSH*;yqx;dL`9~t)4EJIvz?8J~kz+lR_IS(1Kd3_&UJO9M0@M@c$eU1ec z{m4wZkG`iOHZGQmWIHkDXYqYrUv=xUjGxeVHb9kPzLvV&#cx3_!+S%va)aLiI%jOe zIdat|z+%6WZZhP0KuoOX?oFcRi-wrzx+Z#6hnUeh+X(OJG6w5yQ54mCAIHg31rkHC za=}axP2HKn@cN|e-L?0KV@g+^!m(8=g+stO)? zLd2mM!D?M(!x+@)VL1-s1dT?92nPc*ZL3KauRYj7=`FIeSn6e2rkXI(af~5a-6VO6@{o;(6`AUiX6<1c%3tvzhy1#w#Y8-E>=kfI~5v0$)&NXdOeGw6Nty@ElmmF z%sT-=jw5I7#q(g(3S4#Vai3Zz*JU-;S(++dpmV#|a^nfCg(j4Glkd2rZcrBrs!+0! z3Lbl3LArJvcaH91)k;aBlht73A9OhxTj~tM0qk{54>$r4)|e`fbt_Cl^h%`C4R=WC zm+w0f8C>V%f4y<5v;Cj3wM17^%^~>4AOP$m4wt)nup#0GsBj^X?}`A2xh8s)S+%B6 za*=Y8ALm3;RNR)38JoKhat;%W<8k6xyo=dg7VZxjP~#L+T1ZRtIi~T5T{#bi8S8QS z+KY%$Pc&C;Y8H?<8**>+ZAsdcT@}ZNO++kSLomrw$ zk8{1)6f!Baik7uNE{2?^2Pt}Ril5FiF87oib5f|wq4}V7tQKX{m$w_ZwJEs#O-Q62aW>JD~=Za*e$sm4T_YNr=n><9UPAw|Yp`y|4WHlfjH& zTc4Lg{c#|2Ehpk8JJrDqnm1K8lpCJf9IXcq(Ktw3J1rq??TWOu)K6Pe*^UqWu(c_F zT|A|U8~Ke>u6X40Q-2l#Hl($6VHpwGF1-pf4sxAwQpOZsm=0E4%n}7$C|51;^i*qO7wJ92zy?nn4p@RO#&9{F$-XOC z^SFsti9K9f$>N0<@t~=2lgV}LYqmt8dd-9a0A$*IdysZ3Xjt4dH^)9dbS)?SLVMD@iiJ<-Qs<2@8mg9sK%^^{>8P1ZaXQejUv-S>@4x60$sjf|0 z9)fccwtW~FLOh^m>nKdPO2)OpE6g(Oys{K*GAbxGDTuptlc=Ff0x`Iy1;ykrV`Ezx zwNlYro!KXL3hSX?Hk^<{(9yE^F+nEvDeVv$M~g;&J_Ce>9L7i2bi!0s(ncL+4T0miBp|ly)nL!G1gUoJ<$6o z9mgGHU|+>DEFMuPN>UbH2mn-NPzdNg1ub!Cy1@w3#Thkq>Sp2%EW%BVmqIN(-7M}6B;`RrXPAV>W<$MQlJr9|+Ehn$_YH(g?Ey{|2f};JYI?{!ly^cx@7&j#( z)!na9i+iN?EKLUmen8}8S!SLc>0?Ls>lJW>hGnC3e5rOwnD-qhoO~??k9_G?QuBc2 zsEI^r%5ch!@JLr3L|TPO%AiOIu)t;vms>_rL7YMQq_{a3(sXy)^xC%5g=ON`xP*G- zgOBWRNj%E4lNJ^1v4D+_?nOb{Q!-1S$yGgp5?EqAzd%dIbz4*hhM;fcqomYx%H7fm)eFr%YHVH>%PA9FL z_r%^jlwnwfnkqr-`X1Jy;lzKJb4S#K&yfXczhC3*79@u_Ey$zYmYN-{ zyCzmxC={Baa7q(|a^+SS`{)y&_J3utrwL1|C@U#vZ%{*Cl%=W$P>R@g*$q`<5uHeZ zNEM<4BZ9R@wAJL-!GkTT44V&-+R1>7OGFnPh_}@AK^ubaJ zOb#2B5hTbpO>=rZaKaKGN5CO0G9T%tk^Qjf9u%cEcV)QMlVg3%YL^l(2FQVpS! z+bl$rstjP|XqWrsTn8!DOMh-v%GqkT8BxBIV{0obPwyN`($E-niw@WVN-|uR!RPp9T=wcd>s)`lS14v)WsiGk zN3Rn)n&M~_#>}k$7KV2c16x~wz32v5_h`A0<4FzGA=t5oL zD{~M1aB8kZAJKU91~ZMi;$v~OpbV`gz1OYblo%W2>zT^QC=R0bfEf-m<=Af7yWG{O zmAa*FSzR)_3LWMSUvVCrB{vO4a1glDh$z;`^;9{wB~!1*Cd3Nj(2~!#g|lUFOfWfD z;2=WW!O%A4Z2T62r<05rij#9S3GzqLwoAnre)2i!Q{aw4jIfirjD;<#V0FwT^-Bc~ zqK#2<(xJH(r}Yr!4eQXCeQk#9^15=T!TjvfxtL+8c|vmywUNd4?GrqdlpCaFt8DQr z1oCyR&FXMMX|@l*z5xck;8AGAcKxSQo1%|$ELR6nxpW#2ir&|%RXEbF>No_2?`Jz}EzKf=XMDBxAUIAIw_;g{&ogkL zXZt~$zx^jjY;><(wvK#Wb9c*j=!3BbJfd?6P}ap>ZIhmtxr9!( zMVTT$vlZ_0P>!f&n_TZ>Fe%xu7v>tr-SaPm5BW#oH939?&mAkiDx?Xz#c^*`n%kM- zgB-#X-Vb?V{QlOj7eyPv$cM8Boweh7&n0@GzS>2TP2JWkafOE5P@Bw4CQX+swOz+m zd*x6B@mqGoU$WzkEc}%HJK(4Aju`U>xZW`LzN|z{mz2HGH?UsY6#@tTa_rlvS$L0C zY$&4#Jk^twL~+u>*vEEz#frl7I;u!ucSBby#yIoMAr6QfVN=1>%@9+D7*Z27DAREl zU+gkvQ+o}G%!`f=v?JuMD=nhP(Q>Es(czC=rYc#Oxjnh;A18gpFvJ8b-InTw+JHkf zLlLf&SW4ThgWP`bV{8wurgtq;Mb35ml!k_7h6LIvxQ*qA`(>zg58te=eq7sv${fCWZ3m8z+87sY3VsIUylmmW7s z8y3ZdZ8m#7$0!bgGNQ5sT^u{96dg5`Q}-w+f~+E4j@{-#Dp=qYVybI zinf5wz9W19&lJOpGGt5TcFE#bn+qwdsu_Hk2oG0M)LeQ?7|J$hn!HU>uZ<#cR%panw~I2c;bx$X-Gxy( zATTKh#rT**hnPCWFGoE(0**Z~ty|ws#3^gjL}ZZfhYwM9F?<_aqi+?xZ^ObupSOh~ z)J5p_t&48+Q21XUTKO-JHb%~y@Onj3HOA_g!&%Gn_2Wca>zd(l1MkSmQi)&`bgyz) z2ceOCtFx4fbkzif&pwBfM-^CzW`!TUv80*Mb&Kps>W*=Lh;yPoe?vy($Hd^cBEx;r zJ^6*w8lIxp`mzQFI!hQVE=|>Sd<3b@8P)ARM_QUo%MK}A4KI|V`Ms=68-+&jT*8)Y zw>hVDd@$0HuCp}VzVxKYZ1dSfyW=p@eF$pWzNYJqU7lm&OmiGG4c=*E!1$<-b;>vM z0s&NAe4Kd09=)=pGR#)y_0+Tk71%WR0w$z0kWnL!I%#}MM_?P2m?cI}8ijkjr1PAH zXvyis8>a^B7NBy>zgE>Vy(co$N zLyir9y6ifI6*iPf`Fmnz=2u!hq1kB0qP<^GV!^5&qW9?aBfE1{82oC;kEyHHlV`1$ z9|pJI%M><34H<{;M!p?tFhr5Y9J7b_+b^ntgXLI2jZbF#xA=C1R=jR=4{B0DHAr!n zTGexeWOUB*wMYxCD7`k0QN*}}lyS+s>O2SK4_TYq^=LQ6J0FMPK;XO8(Q2Em9ODNX=EpmGh&kVnutaac8JKwAV`1_XV^NXF`Z3fkKYO z7r+X^ss{E(Z_2XpDt;K2imr+Ek*qxGAd$l+&X7tv$8pho>dG45#T0Nvgzd?DV0FdeY<_KR3cVQ}h)G4_0( zH*KH9=W$53$@ff5EoU)RU9_fhEHKig=Rk^j0l%Ha<9!wEWHRks^qsuye4|iA)dGSgeny6#13(ABOKa z_`~pgoN-H#xe?Q9jIM#POlBeJu6L*8`>CJC&CTJjIxW^gLu`21!gpjds1>RmYPcBK z7UM68V&O=;*P#`Da0Ns7f}gOF)w=r$N$EHJ&F=Vgd_uOZEmbcY=tDfvc(gT5vJS#G zm-fNE3N#D&z9TN9hD-vsvX*!qsCxM8HEONqlPub+eG%r}E?Qo?HTh8q((sfPL(?XAS&Gz`sQMndh1&=;7N-o$9^bZdJEAoYk50N12huY zpY6&A=zm>^G=AWArtH>9__F-$1+qfVFv8-WL(9=Vke`GPhc9wdWtKg^Ikhy@moiqT zQkjdyXmlgE)?;y8=DQ0==4(_?}^!_WzAV$ zxqYFoMOs1Lno7-aiUkSex^{R(3+kE;qBS+8rfT+htM_9F!xx=&_o+Op7P{K?-9*3o zEi$D>G%)n$KTIDbR;`v=Rv)&Ho(K)A5TD1u)6_)%xDwyNN8tuFojiXqp!7+LrfvV> zeRD?5xAVcIHy&nbylw9E08Knfg#9Pq495!U2X)N_&+_A{b;W>fYF zWlarj?a({kSzC;CX!avHi3LA@8C|lKa>ExvjXn)tsVyn?6#fTzE4x_Cq%lJQFFosQ zLo&J|WBl$;O0+7fjvsSC1qQuul|b*I4*1+*!@jMpH&@Tvf^k9_IU?iOT6LaeNPJ{s zRNbEEyz7`UDzgIIz%twx#x5Ld#B7;wT!|}DViOOm<xXhh{mZ^&mI+MzmCP{?PiO zh#uK*t(%h`g?$G8o&y+8}Xi;46ni-VOy2~kiwrBVSUfl zybvma?{ups6C|7+;)8;^;cF1us!3lTVvM^iQk|~Dgu6DLr$&eGY>F4oi=8`8AN^EC z{`PxuvTji5&Q+w7*bEJ1?t+K}^#4@%9biqYTe}I6Py$E`C4e+hdJT1hgeDM*)IdT9 zsSylK1Z7L_y;r4|kkFALU79rMAWe!$6BR|bqOfn=d!KvGfA4?)d(MCFeg5a>ndh6C zm2YOgwcbo-&06bQYurFW370r*QN>agk=qvC&^ru4TM0wmSdWLV>eyA(RM5=~(ax4G z*3n{N?-RB{)AZEph) z*CFN!{j;nBBSNjx!E3Clyv>Umoub`V-Msm}DV4P=z>*v+`UN>tyjhf{)0jJsJ}y6% z+*s7m-T+M>@wCCySYu1wIej_!1H7piG^%W;5g%?cD5xs29#;Tjn*@a|VLL2_)4V=c z@l9LI6%GIbe+6;?l=7=+h0tfO%|TOhwvMmE128mroLrCm99*rp_ zh);Oc%R~!0hMe$dnu~1Yyr%no8KppSMUozKihVL~SIab4HC4eSwwT60ASQ1z*P5g= z0EI_yCAkFh?%bG@k_7PD9a|0Fl?VeppxH!q^gh7n8HnDI@F~$mEdB}c@L=QJ?D*>) z)5J~0rL>P6ggxZkqUEQu>fA+?P(>+X6x8?3F+KZvl8!XSc;g#(C767)G1>l4kfQ?z#TD0WpE5XEh7AMB>y~`m z%K2A5Q}WFu5dA`j@4lvBMfk~KWD;DCgpKKr7YMwW2DR!IM&P#L6)S?;7K0e0ywf$y zo|c$3HIg#RFljQ&SA3QGn8#t)@WjUyRA)q9C+35D> z>JsipmgNIdEaR3zg^7&@y|Y|U2Ef4SH0ytC)>)- zRwBi)PNvdiFW3me_i*jH?np%;R;42A~~kEWg&aU zB5;ZuU3*nEVfgt2Z}e6fAzl&d{f5?0(?E<;!NmQ8frrfp<=Q&OfM+VsLvL}>t46-w zzlD&+UtGj|4K^(0z$1FX1H_{$aQlyKWA|sLym)7`&vdFAb zPZn|pzvD^AzYisU(CHhjuWv@C0ksUmfU_H*|E7oPjk5Q1&jqqooGyVfz)={K# zQeEDGiA1Qir>W4>@hF1>unIu(Q{7CFf5bBCKy2==-vP)pzsR%r@92jAfv!V)v+-Z( zuHO6;-38Z=FQd@JY1`a2NA~fuI^_F;ugKH=PVKT$#r@!BL$nvv^1;?nekb&;oxJ`I z?(Sr5Y9+1wJBJZ?XF0gd#9i$}<}I5KsuCUHOSC5`S&ajnUP{lOuAj0{ekIV<)Fv&x z>u1o?(Ykn+a;hn(qYDc!X2R!Mhg>gBh3}^?4vJ!Sz9eU*!$@^0)59CME>+TkGz14e z_cU@)RS8IoTr!n%IuvygT|MnU2`!dp7Tf>zG``^Zsc+5DE^zaD(u5-Mj$Wr{@rb!n zeQO3HHf2Q_rR!mNfu!lfUC)(*QsqDv&jxSt7bXr?tLpYAR1-7n@67I6m0@B{!yf*j zTKx`iL9qi5AJ6JWQIt*NUM+-_B?7_{skbS=t1Jsz-#xdJYOq|nSl z!H*Fy6%ECzJeOfnCiFf&bUEn`KA8hZ8uCOSq0U4465)V}!$sW3E&e9UBViTOd*vs3 z+ZjXG{%`JTOUO2C+6YSlQLrD`|I`Hp5CPSc^S=XtIf^=rIajkLI>is|N1hjQsML`uIBY|A*vEo{Sds zD{7C=h7~b975#MTbhO)|QLDmrxGn2_H27qdoT`u9gu3KrAuR%A#w#-`>sLjqZvHUI#pAmCBfVpljFq5kEg%1o(R0qm3{6PYB@e~(N$$^Qu%O1&2Dn;hI{jWvDI{!fhJe{s19k#96-7r19U#%4Tt+RsN^ zQn=A$suS^9shFa&-!k*s^M6qnuaZHG{qpdhfcE+IPqe@pjm^}@%(OE3o2@On1b8leGD+Vk`7yHJq4C&`gVnh~AtGT(6|8RWZc(@Pw3e0T&WnZ%u=+0Vjr z&yC&ct+pbfb=-C0ywf68j(NJuCkJO%sJ)cZ!6vKU`(cs?zvVj6$FosHe$92vTmm!# zM^ShC`)z^+sVnZaFK&WDK~Q@`iN^zgxg*~VoShW<;gIic(-GQl(eC4JgUh)jgHwam zL%TgkyAH9C;#dLa^FW^c3rbz*(wycWVvP?y%3&|_x>P^GRi}gGB3Q$TH|=X{^5Ws# ztR!D1DYE%ETR8{+9r<<18|@1gi++-2o~_ta zm_^7p7X|Hbxu=#GWrJo!`26y3l@b0{w!I)^I&z<(a$wH`u|sa|bZ&YrFOR{B>x98w z7Qf8Pgn`b**Nj!7F+#XG^K21bW)%lV<VbomPjj@r0JyLd=B=r_K& zG_X}vfDL__DVx}qx9lAWW1~!8<8?Daoy23ki`qY)#6Rd$N3I+0CaJltGf% z2qW4Up`o*K{c5)>V&uvEbYSc+6y(XAxd~=y6UtT3LrBuiAA9_E?0$`6zs26AV~ zi4y84fmJ7>Di%*_%`M!ws)PnRm;kr$*+;X8?}fHSDPvG?Pj5ZPkL|>^kBeeQ1)9W3 zq7h-AbqlM>kLyq+C3Ati)2A(^cuI5Fg9|>%v}u@KbFn2^h_1w?gAa>bd_0@mnCaAr zW-K9{Y?_YZ1CL4hA#6v^)FMo68{g05{75ryOJhKOu$rTpgnnkGnWon08+tRvW2i%# zU4ZV_ZUAj*2HF(L!ZkSDz1+e3??&RnuG6_p1qg5=_rp@wW43VcL{r1vh-wg7#=scERuRcms zF%AY(*tHT>Iqo5@YGl=U7u}6h@8JdNZ*ggnGa{FKxg<(2n}8fRpk01hPX^P>u?XuP zTUQnBP&6T1E?ML~71uxmSxr>uu*QH1s7e=@uZ)af3gNxQwLa)Y@w%f`td6~B<~D=8 zyPz}MudPLjkuP*c>nQeRzJ49|YU8nV$2eLRWs8~^h$gK>oTGle4wQYB6I{J~&hhX$ z6cWTpQ4dOzBFxyEND%><1X{b>q(BC>#JtS-;l33X*Q1PRx2q*te+q}1O#TUH*PiJW z@U9k98||A3?I*7KOs>l9BcqY4YoDsKa6Ny@hijaSPlkoK;IY`QRcy_m&-4|U;V@|0 zx)uW==*N^$?#uYv?9$bVT%&D)1dbE>a~mr1pF3M^*Gy4S@(qAYql&gPO-(?RZvn2! zX$ces>U0qWUD_eEuMb7gHqs%bD{*&!iYNp&o-7#oYzB%nijb5{gm>3p9bYkzw&)== zV&WZbycY``t3FqARKLr7oQ}A)_roJHU60Mh zh1{F>bM?&F3%&OxnaxK_}7SLM0hc^~?4Mr!uvw!xKj-KU~LoIaGq z8_B33$kvZ5>4t7wPfNeCh7-uDGfxU;5>j@|$sY&lq35$QH&E?;`&q(FpTfus1d%d{ z)aB)+rnNFz=&TKjSyKx?-==~-o~6z@uP=8_k>>k#NopD2z157Nh^uAdcjb~?RHat3 z0*LnP3^gOEEy1)%t#Aj?8@6*@xKMFB3MPjXhQ`lDD?Q@2zU=|A5}FmCYYJ*qJv#&2 zoi5)`ZC$>vF;2qjP63Dl@dCO%XfIc@b*y?WHBU>n!@)^N$m`zdq4azWkT`rZF5 zahv*t;y-`%zjEMUjLcl#*sYK)EcQ;1pda^?X{&j#Rd2}z_ zHW4abl8ANpHZHvoosw!xTNHV+%<&As;|?-~wroXqBP5@zBI{0K&(8F`Xk9IEg#GP)D7>vaCfekf`-S=_s9zdhO4z}f)6Y{3Y3t{W z4}-&{T%9J}qDNppk(EO%01*#iZEDvBcm3*_Tej3Gj>3pszwl@S+f@5&!EZ7B5@QRy zGVS*$#Hd!Y>B%;zzD8+zc8Z8?Pq05K<;p5`@8OT{i~(!Oh~GA8Wa;uyIwVziqu6j@ zJM!_QdiB9LYsoGze^sNl%ka6OssqU*&su4(y=|6oso1-D<;os7SK>tMRZBUc!sl4% z)3Fd%7;q9{=khxskzJf6ZB5=j?JFr@Yj(Ibl9X>vk!`eCK3U635MJ^<5&Q0eM$fkp z3AbUUCZS<4v##BcEV${-v0Riay{WTz)uQc{^yuOP|Jdu!^9otV)J1$0R%Qi8ruE_K z4sv0VT^e00a=9p5FON9=`sf=`H&WeUOdG_oLDSt?R-!E^v~lKHqSQm4ksr*i0GdTr z{Vv7@G7ODvemVR!zyE-b#lIZ;PCHB}0V7I&n23lv7n~WY?#VBCYK`0(wl@Aw6fm&7 zEKTM?gaGIAOp8z}!;Mzm=Gj|pI(5-5NC@ZjjTMjaax$!Ou|9b)z1(<YiDbPJkf1YTPfFeY? zNFcj4Z5~#-{fTfbb{h92qUOCwZDEsDvVmPHQ>=(y#6&zJV`cwZ{s@)L<#O(=QC?+x z|DN!|&ecjGv9KB!??mb~_C={c29p<#D5AkkE^0DdhiqSzXuIei{biq31K&S#m7BST zE?bNMd!AXH3$e(mO_fX^Fh$B7#0XQ!^cdH%Q1wNBLU$%YpShETMc+ZqK6%VHL~`{k z%6?N!6f`|iv=gLZG|ly_aQ7b!ZZP9MvMja3eqZ6)JCH5I449dt3n8zKIkox4nDUL! zhvnL?3ts<6bbtLDx&rj3fh2T)3D?s!_V3i z7ah?7t(Ah5JsdC*cm!fP;+;GjqkfJqrp=#~Y($5iR9x@}GaC{>Gj!ARJw;P_uC~Oa zDeg47fx?zi2YI9CwI@?NU1`Jh>JN$vqdNLJuY? zEhSbq7ex{l>brWVI+X)T@=WuGPdQrYmHZ3c=Y^QUx+!71D>Oc2BS>nra{3ZK?=4J1 zv!?nj;GY%O$c6L3@T^t+F>9twl3wzc)F z+3`)wEUWB(E)ySAYqmiS(MSju#tQ&}0b3v{MKG@}kfk;M!an6I-|;Hiw|Bzyae})K zO}C=0o9?AsbE3CRn@(ymUFL&YAjsH>?}R%;@N2l^mjAEQ&=1KAWfe(xWaUVeAMwM3 zK}3-Xz^tzyVNs@h-t4Zx{WQ^P5X_QOb46@(bY`k{Y{q-g*pu0;Fk2{AjK-Q^RX5O) zWNmBhH|0_p%Y`30+&mUXz}S;~TTWWT0m7oz_AQLX;!hgI1UgwwtX~N~o>7#$eb8@B zxq-4wZZj9UcfTUPP&Tc3fbXM|Egz&inb|NHb1-{n1L;cNrQPN_ANLQ7&HsC%=x zSho^uslySnX7PIEHFmahJbEXpUwzX4vY6-mbm$#~Us6MpMnxK(po!rDSWfeHsn8UF z%&Fh`0U70?vXrhlmtOvXD1@DMfAS#cG%WrG8K9&vUis|V+#4WWzB8A%&&8LRAD1)0 zzy~uqXYdnjJg7-vQ>XZ)O)+a*H+o%~U+qbw}m==~b zJ;uzS`%T*yl6^nf%K=cHV_UD#g`l8_cWw3ei3z+>w2DouM;=K)yCi5}OA4&F(x#{H z0HRl{N-S<^>J1e1gH?TC=HNg%*}2PDS`wRV!M%+R*!{EO3O#r1$9AU#U;Gd@lMr>*Ie! zFnQ5Qmwj{OcK~zA*_lC$T?q9*cidlRR{Bl7>BX1N?wE7lkn}9&=mY0(YKx@T(vx$R zJE|`i-xYZukQ$?d`M;QB|L2Xc@^1)E zRk!cy9+)?X0?~90ES~^j!ASqJgSJ1bsl+RqPN&JkDV#Wo`1I++P>4bAx%;$mJG-&hH;GM+U?U+>iiFQ9v zGMp^AbwC(gun%M|ID3^VFLu(pZWz}r^=n(5Y1ERqQ;!>ps9Xu!KS?Bu;@TkYwN%84 zDXMo@f?)We4}M2Df3z5I{`QkKN8YMPDq(BS73)QynCFCbiRxOBQ1%K9A;x}gyQ{X)41@>Ax2X5aU66?4MK94{F30jd(*=8f`XhtMALhgZDrI+A-MTz zxt#yZEC$3oZb&=`e5O3OaX6n=paZI|lOt%3CRr<$hKiiNbAb!Ug)bg&y&im}yI@Wv zOWg{(cjux?^Ydw5Uk1U_{rfquNCpMXMowsjBPyQ4B7{ze4-@8(4SjOmzhqG~g6%${ zqc2PXm}-#K?4z;7zf@f#8ufBTDt(+0x9~!F#CFBQX{bApi9bQBRh*zE^u>k3*rfv) z;XbWBEhNv(ePeBYaLYOtBuTZ9BsI)uo>++pyKUpzzP!zLC2Ee*B=inSxf)!o9hMWI z9E=r8jj}?ihte_bI&5x;p}DWVxJ4Rjc2Q(InsSujcjxa+^u|SEwNWqi#9g(k) z=Xc)Nus;c7zUqMWZV>p83q(czL^to(ecsSJxVCAhZ&6_vrVI1*0p}3 z%c4_bsk<P>3uYAoO1lOfP4(7x)5vfm9c!v2LTNZlnFB#1{d_$83Z3N zmC^#h?RIvYzXR+eojO@xG|P0?9um&qpVg@?D)Q(;Jd;wu%+d&i9*$#}ne3pWDcP#+ zUVsFDg=M-_@nR16T1%fiIdU+>^{syE$p;s} zWjm`UjABgjs;)zKmV_v*!Q(dNYYO&NL!3?^h^KhoTUgUwq~7xAD=Dq+Q$2sjGcH*p zAr)$j2m{Ky$E(!Bniu2oSi?kjfB56&^xpv-1qNi*p|q_PO=qf!K~2~$h9WA6lCrvE zDNXURDo22MwKeu8)q&A_MQmz&p$L&?yjDg9HKLt6>%o@3Z{9?WaRqIm_k`&I;h(UH zT5lbl01iu(RCFw*fGv+~4{^n8DLet5i}b@-1p00iJJ6OG@y;Hzg&0N0XitpC3Vys| ztY5~KyQMtN1t8A?yBM^rM6lh|-fqrirKqLCkJXmHHSrhuDp4{nL=Pn0Yb1BQEc;CY z*-Dvnf8>;LDnmQ%4ls7k=B199b=P7nKFdybAOd4U-7^PRrxQ^wyDNzQ`c*c}_x8MG za{3`S^;R+lamr_|1^&pavf%Qxwqg7Bk>_}KySZ^!K(PKVwpvJghrL(Oh}3*XK(;| zdED+yc4jNO`t+IBKB76p324Y*0q)-)Kit(=#oW8`T)|CrNzNzK!d+B?Fg9&nid$M=!-Hgs$flMI2>w9?_tosN4bt#mRZZ zJ3aUXS>o;S>-3umTlX;BaAwvgi#RR3er^2Vw@b1JvEdgqM-b6sc_&rn_w*%VtcgI0 z2fmTex~-keR@loYqNF_2Df><7fo_?POoQ}xul*OSOdeh_q5ag8?u@35YVau^Ax#2* z6)cK+4Qbpd0g;*E!n+3ZTZW{?xGRj?;JxmAu5~Slc4s6q4X;&dA-FK)v__fNaO+P- zt652m4#Yt~WdQxh+!`XIVS937`6NEiWXAN?ANdA7-@8`$|6&!^Wx9E)YyQDg(j-Mm z<@KkGshj`)ik)1NbN^S$c;q;2{_fTnM>h+i6*$|VL4F{KDRbOz%|3Gv z(f39=xwtZ@F(Q5TquM0tFDj${TgsPCp8E1Wl6Bu1lel($hrAYx0#>9=W0y_J2=}Op z@-4*CMfZNoN(BCSQBcCqi*9;Ya3D2VFM)fxHf>R+7zFPo$FMj56ROWnp>X_S{AKuL zua+3`8BCIjooiTnp5=wSlrP3k=Tt;3eD1>e{4#ahyXj^a^YP8zvu7zJUHF40%B&Ds zOTk5@bePsa&@*^Wbap?r#z+zK9@rJY501!>3f^F(M;*5}ME%T>{tKDiwNi5Pz6KUtH)-D0Xpx8N))JF@KlNneup}7)MYYQtCRsjlc?L1w~6^xH%%|kz1Wo? zjd#9E&O3)<6!syINVCKsAS|qfT-bGwt;}U!-bhMR<>=BJmJTrSg{?386SrnOfO$qX zNq-GEc)W@NEd5k|>j3PoUtoYtt_!%&Hq2H!*aV0d?{q&*FGBPvn7G{^)J3v$$TXdH z+1iW_&%D&$>oSOkgkkW$?uP@j-edwL)gI@GjHJqbZfjS4OWrI!ZaW*{xlr4L3B`GF zz;z<0>0E|BYog6k2YCl)aI35>&m`+yrj%R9jur2nwFwDHOTdx}Dug?ICM=th6j#JS zQe3uCjSYUYS+gI^^bdgGC90h1Hu#aOx4X(Bo+u+XXy^NxCNN&#%)gLaDZFH22k8V8 zcS>E|2PM+dR8~&PC$Sg+%pA2vF9``MP%%Wk;5zD(dCDys04#m|X+M+<)S*O0VB?LO z@SJ=_(H@VC9%2`oucMgRwU1RZ1Xv+6q-xjEj>`Zb(AAJE)YfY zB(*p@bX=2nYeb~&-VU1tge}#g(7(nc!*iUs5-OQAX5Fad={P7`vvtt@@UTT~<21iL z--NE^7G5W^n!)OB@D`zF)Ja^j#YTRJDAoFTqAMEJVOvGXgWA0n#OGeeb-!m98DXaamnGNIg$7C0Jn&9(QV1<gX~7e)C(@U%&62%u#|R`#%61=06=});MSGgms&VL{ ztvhrQ$b4K}f|{D1HqtbqtvoNA-_RS9p*G@3+@lQ59EwRmKZN7f^!piTdleTx#{HX!9oc9tot!DN@QsBhZ9pJ zO}2u>_T=!b9@(HrfZnxXVi=oV92CX0~vdvKqx`{$gjajI?? zrKa8>gwxr>LA-|z9t1rPcVh*2@pTBhXFZ^#c$uqPsq%p*@ElDt$fO)#a^79*`uONz zS9NaeepTjgH-+ClGFw-v>I}N+{~wdT|LiUL&-VV;&i$Y5E!3N{&H_Ej{PAkd5LNL# z?!8KVXOO-B$DV`Tkh!t%Rat+G*mC{9oLpvHhFuW*@`_N>dAseh%DaDUkZ|E0=Z_Du zq!N%9qSqsQKiLmFJG#|e*j_^D{i4is+LM7|+DvRZ`pWBhfoCe*O;oQXO`uKm`5mxx zwr0S4*D6(<#&ij?IYeC*1wjexb;LOV&=vdBunk3DW*_=?kuM#wt+c#RC3y9|CwBBE zOr1jZ<=~PQ!D2V?_0b6%jderf^}?Ncu(-A22&)r%h8{CGo7S^B{@hR8WR&bPQ^G83 z5C9=(EJiPCF${4Tu%geVk&Nny*e}KmvdTsDi_Kc4X%2{kGnJ$t=;FU_n|N)I3N9W{_yT*|N3!`5-{swv#JT%@+|y5{ZqKDUR(+?t z^jr7UI{tDwaU5%uFg9w4roJ|sV4C5_h-jexgC*%;=xGto;@GEnHdkF^dO;w~dz#NP zKK>os0adXV#+zOGix&Sj*`b%m=^FzAEuDu?ve;0Cx%{kfg+NGKVvV0jSt@9k#1a|_ zbb!^MD53Zri6%!u^7Qb8EpLZI5!R=mB!@TYlY&GR6_IHV%?!4|xRwL&9FUyGhi*rB zd>H21jbz1-E+%>qDq`{ z0xJb8@w+TD=9?r3p2EC-Yrm^rddY zkae4~ze`{!4L7Nt^RZ;%NM%h#zotN6c_P%1)ee~oh)fD#`qIV~m9Kg83ykM|u;Epw z*GJ|i03vMhGtH6dU#u{o{$%AnaMtYpC%hHs-HPADViiH9LlW-|^u5eV2^L25KIbg_ z1uTt{Fy~pNoEVoI_}6cO5fAh996?3;Bu2#iVvSHO4U&uB((^#U2t9W=d?%7zhN0gg zEhh~7LwkeA%N;N55S?DgnH4Gz#T;_%a;oPlGG{mBfmew@yBex_P%NLi(7Z?c>LJA_ zMEgb%kVQ|4#R}?8_NmB)b6u;OXsC_GP5%x^_<8eOKq-oi^h6I#ds;;-7kjc!YwX{i zs;!^qKRq+~`Hj#niGmbFW(l2{j2~##nD%6y(=ihD8My(IGu&tMHd%+&23|$mopraU z#)AzopMtfrzY5>_;27yoe3rze5WY~Mcs{I9zF~|dlrt-3zY1k*nM;L;2anaa+uC8b zVZk!xv{&C|8+^P5$4`2v9~fblCHK(IdM+RcQC6g_vbA(=$RTu2-Sb76Xp4%|y6C+x z+)rsDt8&Nltg(wW&-*eBky;AZEIGVT8X~$hbl%$!k;R`c4c@fWb0DXC--5NZnoI3% zCk3v>AtF))bhTIN%#{IS6U(6^Zz#>mRpF9~{2y7RiVbukD%w3YTLB%lZC7^0!C!?^Sv?{sa0?=Kq!c|9Jkvo3DP0UsTNZdc|EC zlGH!=Zmd~Iv_NqYZp=}|c!_;{1K=CKWL?;fXe+k6#Kcz`n1v&cU@E$Uqq|Y$;0N@g zQDnzQIyK`a_ga$RHb*nU&6#M&t=o#3_?E+5wThV3vlh>1uA5>@N@mH%zS=jQ*OPuC`H-5luX#Yo`uZZyR%wdNw~P{HYPrUdQ_;{KUgCgS<^vtbwOSz!F}%?c z8jhZJ4L(uV3`DBfHwy(7zD2S@JmX(p^}eT^tVwVxU50hNM6uLj4t&lS(OSM(bkTOX z<5)4L+>H>ns`4Oj|2*e+6St*MEQ)djAq_wjw8A$#L{)a)=Gi-H<(NgG&VU0iUA2nG zg~$%r8N5 zR!UPSK+x~@pxYwl{4{jQM*lCDyx3sE1CkNUpeaJ-RupaVmLh2)4Sde<-!37Ch*~RSe8SgxsUG})7&kF)wmF4r72sq*i~#yML(nD)2v)#MNql} z>h6ge{UQtWyyLGy`@DS z!?+=m#P7_2tDl+f2(fS`h<^DL+Iq7}$#AR|qg4?@Z*RxA1U2>OxzYkpnnmLzhM;;* z;|gj$&X+&YE|F_H%!i~EdPabc;}_F6GC+spVNO|DTUEBj!gP-D5jvjl_qD3}UaDwF zBr8rj0Y0v@7DjjEFVTLos#p<;T4TfGxl2>hrD_J02cIsc*2%__lC=COb|OLf`V%x3 zdn$8u(fB_gk@M&x+K%aVfRMGBFo9GC@0@3)SN7fG$7gDPEBdzZ?Xf?}7&r6xs&4fY n->dd6QvOzXuJu>9bv3oqzn4|3{dE0+RM@SIRGIDJ?=Sxw%(WMv literal 0 HcmV?d00001 diff --git a/doc/success.jpg b/doc/success.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c04c50ae7036826a39bee6e5561901c46457561 GIT binary patch literal 18018 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 + diff --git a/sdk/Commands/OssCommand.cs b/sdk/Commands/OssCommand.cs index aac1503..7937ba2 100644 --- a/sdk/Commands/OssCommand.cs +++ b/sdk/Commands/OssCommand.cs @@ -122,14 +122,16 @@ private ServiceRequest BuildRequest() if (!Headers.ContainsKey(HttpHeaders.ContentType)) request.Headers[HttpHeaders.ContentType] = string.Empty; - - foreach(var h in Headers) + + if (Headers.ContainsKey("itsvse")) + request.Headers[HttpHeaders.ContentType] = Headers["itsvse"]; + + foreach (var h in Headers) request.Headers.Add(h.Key, h.Value); if (Context.Credentials.UseToken) request.Headers[HttpHeaders.SecurityToken] = Context.Credentials.SecurityToken; request.Content = Content; - return request; } } diff --git a/sdk/Commands/ProcessObjectCommand.cs b/sdk/Commands/ProcessObjectCommand.cs new file mode 100644 index 0000000..1cde485 --- /dev/null +++ b/sdk/Commands/ProcessObjectCommand.cs @@ -0,0 +1,99 @@ +using Aliyun.OSS.Common.Communication; +using Aliyun.OSS.Model; +using Aliyun.OSS.Transform; +using Aliyun.OSS.Util; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace Aliyun.OSS.Commands +{ + internal class ProcessObjectCommand : OssCommand + { + private readonly string _bucketName; + private readonly string _key; + private readonly string _style; + private readonly string _o; + private readonly string _b; + + protected override string Bucket + { + get { return _bucketName; } + } + + protected override string Key + { + get { return _key; } + } + + protected override HttpMethod Method + { + get { return HttpMethod.Post; } + } + + protected override IDictionary Parameters + { + get + { + var parameters = new Dictionary(); + parameters[RequestParameters.OSS_PROCESS] = null; + return parameters; + } + } + + protected override Stream Content + { + get + { + byte[] array = Encoding.ASCII.GetBytes("x-oss-process=" + string.Format("{0}|sys/saveas,o_{1}", _style, Encode(_o)) + _b ?? ("b_" + Encode(_b))); + MemoryStream stream = new MemoryStream(array); + return stream; + } + } + + protected override IDictionary Headers + { + get + { + var headers = new Dictionary(); + headers[HttpHeaders.ContentLength] = Content.Length.ToString(); + headers["itsvse"] = "application/x-www-form-urlencoded"; + return headers; + } + } + + /// + /// 字符串编码 + /// + /// 待编码的文本字符串 + /// 编码的文本字符串. + private static string Encode(string text) + { + var plainTextBytes = Encoding.UTF8.GetBytes(text); + var base64 = Convert.ToBase64String(plainTextBytes).Replace('+', '-').Replace('/', '_').TrimEnd('='); + return base64; + } + + private ProcessObjectCommand(IServiceClient client, Uri endpoint, ExecutionContext context, + string bucketName, string key, string style, string o, string b=null) + : base(client, endpoint, context) + { + OssUtils.CheckBucketName(bucketName); + OssUtils.CheckObjectKey(key); + + _bucketName = bucketName; + _key = key; + _style = style; + _o = o; + _b = b; + this.ParametersInUri = true; + } + + public static ProcessObjectCommand Create(IServiceClient client, Uri endpoint, ExecutionContext context, + string bucketName, string key, string style, string o, string b = null) + { + return new ProcessObjectCommand(client, endpoint, context, bucketName, key, style, o, b); + } + } +} diff --git a/sdk/Model/ProcessObjectResult.cs b/sdk/Model/ProcessObjectResult.cs new file mode 100644 index 0000000..59616ff --- /dev/null +++ b/sdk/Model/ProcessObjectResult.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Aliyun.OSS.Model +{ + public class ProcessObjectResult : GenericResult + { + } +} diff --git a/sdk/OssClient.cs b/sdk/OssClient.cs index ecf4859..5ab8d3d 100644 --- a/sdk/OssClient.cs +++ b/sdk/OssClient.cs @@ -1152,6 +1152,15 @@ public void DeleteObject(string bucketName, string key) } + public void ProcessObject(string bucketName, string key, string style, string o, string b = null) + { + var cmd = ProcessObjectCommand.Create(_serviceClient, _endpoint, + CreateContext(HttpMethod.Post, bucketName, key), + bucketName, key, style, o, b); + cmd.Execute(); + + } + /// public DeleteObjectsResult DeleteObjects(DeleteObjectsRequest deleteObjectsRequest) { diff --git a/sdk/Util/HttpHeaders.cs b/sdk/Util/HttpHeaders.cs index 2f721c4..28d3722 100644 --- a/sdk/Util/HttpHeaders.cs +++ b/sdk/Util/HttpHeaders.cs @@ -17,7 +17,7 @@ public static class HttpHeaders public const string ContentEncoding = "Content-Encoding"; public const string ContentLength = "Content-Length"; - + public const string ContentMd5 = "Content-MD5"; public const string ContentType = "Content-Type"; diff --git a/sdk/aliyun-oss-sdk-dotnetcore.csproj b/sdk/aliyun-oss-sdk-dotnetcore.csproj index d481cbb..88bc5a9 100644 --- a/sdk/aliyun-oss-sdk-dotnetcore.csproj +++ b/sdk/aliyun-oss-sdk-dotnetcore.csproj @@ -32,6 +32,7 @@ + @@ -81,6 +82,7 @@ + From b7185876c1ba17f3ad21e357b7191f8fee5e0dd5 Mon Sep 17 00:00:00 2001 From: itsvse <10000@qq.com> Date: Thu, 1 Aug 2019 09:49:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0.NET=20Framework=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk/aliyun-oss-sdk.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/aliyun-oss-sdk.csproj b/sdk/aliyun-oss-sdk.csproj index 74e3d77..77ce414 100644 --- a/sdk/aliyun-oss-sdk.csproj +++ b/sdk/aliyun-oss-sdk.csproj @@ -146,6 +146,7 @@ + @@ -193,6 +194,7 @@ +