From c23a8831cf6a4bafffe45d01e515167f4fe8e271 Mon Sep 17 00:00:00 2001 From: Egorka Date: Thu, 5 Jul 2018 22:45:07 +0300 Subject: [PATCH] User Profile Dashboard fix Blog post published date compare --- README.md | 5 +- backend/controllers/UserController.php | 34 +++- backend/messages/ru/main.php | 1 + backend/messages/ru/user.php | 5 + backend/views/layouts/header.php | 31 ++-- backend/views/layouts/left.php | 2 +- backend/views/user/profile.php | 59 +++++++ common/config/main.php | 2 + .../blog/entities/queries/BlogPostQuery.php | 5 + common/modules/blog/forms/BlogPostForm.php | 8 +- common/modules/blog/messages/ru/blog.php | 2 + .../repositories/read/BlogPostReadRepository.php | 12 +- common/modules/blog/views/manage/post/_form.php | 42 +++-- .../avatar_generator/AvatarGenerator.php | 171 --------------------- core/components/avatar_generator/Play-Bold.ttf | Bin 210704 -> 0 bytes core/entities/user/User.php | 13 +- core/forms/user/ProfileEditForm.php | 8 + core/services/user/ProfileService.php | 2 +- docs/develope/Modules.md | 81 ++++++++++ docs/develope/README.md | 18 +++ 20 files changed, 276 insertions(+), 225 deletions(-) create mode 100644 backend/views/user/profile.php delete mode 100644 core/components/avatar_generator/AvatarGenerator.php delete mode 100644 core/components/avatar_generator/Play-Bold.ttf create mode 100644 docs/develope/Modules.md create mode 100644 docs/develope/README.md diff --git a/README.md b/README.md index 9e364e6..b116917 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,4 @@ -

-

ZxCMS - Yii2 site management system

-
-

+# ZxCMS - Yii2 site management system Yii 2 Advanced Project Template is a skeleton [Yii 2](http://www.yiiframework.com/) application best for developing complex Web applications with multiple tiers. diff --git a/backend/controllers/UserController.php b/backend/controllers/UserController.php index ea4c4d4..b47b564 100644 --- a/backend/controllers/UserController.php +++ b/backend/controllers/UserController.php @@ -2,7 +2,9 @@ namespace backend\controllers; +use core\forms\user\ProfileEditForm; use core\forms\user\UserForm; +use core\services\user\ProfileService; use core\services\user\UserManageService; use Yii; use core\entities\user\User; @@ -11,6 +13,7 @@ use yii\web\Controller; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; use yii\filters\AccessControl; +use yii\web\UploadedFile; /** * UserController implements the CRUD actions for User model. @@ -18,11 +21,13 @@ use yii\filters\AccessControl; class UserController extends Controller { private $service; + private $profile_service; - public function __construct($id, $module, UserManageService $service, $config = []) + public function __construct($id, $module, UserManageService $service, ProfileService $profile_service, $config = []) { parent::__construct($id, $module, $config); $this->service = $service; + $this->profile_service = $profile_service; } /** @@ -39,6 +44,11 @@ class UserController extends Controller 'allow' => true, 'roles' => ['UserManagement'], ], + [ + 'actions' => ['profile'], + 'allow' => true, + 'roles' => ['@'], + ], [ // all the action are accessible to admin 'allow' => true, 'roles' => ['admin'], @@ -142,6 +152,28 @@ class UserController extends Controller return $this->redirect(['index']); } + public function actionProfile() + { + $user = $this->findModel(Yii::$app->user->id); + $form = new ProfileEditForm($user); + + if ($form->load(Yii::$app->request->post()) && $form->validate()) { + try { + $form->user_pic = UploadedFile::getInstance($form, 'user_pic'); + $this->profile_service->edit(Yii::$app->user->id, $form); + Yii::$app->session->setFlash('success', Yii::t('user', 'Profile is saved.')); + } catch (\DomainException $e) { + Yii::$app->errorHandler->logException($e); + Yii::$app->session->setFlash('error', $e->getMessage()); + } + } + + return $this->render('profile', [ + 'model' => $form, + 'user' => $user, + ]); + } + /** * Finds the User model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. diff --git a/backend/messages/ru/main.php b/backend/messages/ru/main.php index cfe0f46..27ec374 100644 --- a/backend/messages/ru/main.php +++ b/backend/messages/ru/main.php @@ -26,4 +26,5 @@ return [ 'Change at your own risk' => 'Редактируйте на свой страх и риск', 'Online' => 'В сети', 'Search results' => 'Поиск', + 'Search...' => 'Поиск...', ]; \ No newline at end of file diff --git a/backend/messages/ru/user.php b/backend/messages/ru/user.php index 68241ed..08d9a29 100644 --- a/backend/messages/ru/user.php +++ b/backend/messages/ru/user.php @@ -32,4 +32,9 @@ return [ 'Update Permission: {permission}' => 'Редактирование разрешения: {permission}', 'Administrator has full access rules' => 'Администратор обладает всеми правами доступа', 'Children roles and permissions for "{role}" is updated.' => 'Дочерние роли и разрешения для роли "{role}" обновлены.', + 'Profile' => 'Профиль', + 'Profile is saved.' => 'Профиль обновлен.', + 'Profile: {username}' => 'Профиль: {username}', + 'User Picture' => 'Аватар', + 'Registered: {date}' => 'Дата регистрации: {date}', ]; \ No newline at end of file diff --git a/backend/views/layouts/header.php b/backend/views/layouts/header.php index 50bc064..e0cf4e0 100644 --- a/backend/views/layouts/header.php +++ b/backend/views/layouts/header.php @@ -232,36 +232,28 @@ use core\components\avatar_generator\AvatarGenerator; - - -
  • - -
  • diff --git a/backend/views/layouts/left.php b/backend/views/layouts/left.php index 2a11b15..a257c95 100644 --- a/backend/views/layouts/left.php +++ b/backend/views/layouts/left.php @@ -46,7 +46,7 @@ $model = new SearchForm(); ] ], 'template' => "{input}", - ])->textInput(['placeholder' => 'Search...'])->label(false)->hint(false); ?> + ])->textInput(['placeholder' => Yii::t('main', 'Search...')])->label(false)->hint(false); ?> diff --git a/backend/views/user/profile.php b/backend/views/user/profile.php new file mode 100644 index 0000000..e74deaf --- /dev/null +++ b/backend/views/user/profile.php @@ -0,0 +1,59 @@ +title = Yii::t('user', 'Profile: {username}', ['username' => $user->username]); +$this->params['breadcrumbs'][] = ['label' => $user->username, 'url' => ['view', 'id' => $user->id]]; +$this->params['breadcrumbs'][] = Yii::t('user', 'Profile'); +?> +
    + + + +
    +
    +
    +
    +
    + <?= Yii::$app->user->identity->user->username ?> +
    + + field($model, 'user_pic')->widget(\kartik\widgets\FileInput::class, [ + 'options' => [ + 'accept' => 'image/*' + ], + 'pluginOptions' => [ + 'showPreview' => false, + 'showCaption' => true, + 'showRemove' => true, + 'showUpload' => false + ], + ]); ?> +
    +
    +
    +
    +
    +
    + field($model, 'username')->textInput(['maxLength' => true]) ?> + field($model, 'email')->textInput(['maxLength' => true]) ?> + field($model, 'password')->passwordInput(['maxLength' => true]) ?> +
    +
    +
    +
    + + + +
    + 'btn btn-primary']) ?> +
    + + + +
    diff --git a/common/config/main.php b/common/config/main.php index 2fee663..70a843d 100644 --- a/common/config/main.php +++ b/common/config/main.php @@ -32,6 +32,8 @@ return [ 'font_size' => 200, // default: 200 'salt' => 'my_cms_salt', // salt for image file names 'texture' => ['sun', 'rain'], // texture name + 'texture_over_image' => false, + 'text_over_image' => false, ], ], ]; diff --git a/common/modules/blog/entities/queries/BlogPostQuery.php b/common/modules/blog/entities/queries/BlogPostQuery.php index 6b414c6..2876180 100644 --- a/common/modules/blog/entities/queries/BlogPostQuery.php +++ b/common/modules/blog/entities/queries/BlogPostQuery.php @@ -18,6 +18,11 @@ class BlogPostQuery extends ActiveQuery ]); } + public function pubDate() + { + return $this->andWhere(['<', 'published_at', time()]); + } + public function byType($type) { return $this->andWhere(['type_id' => $type]); diff --git a/common/modules/blog/forms/BlogPostForm.php b/common/modules/blog/forms/BlogPostForm.php index cf148c3..eb03dbe 100644 --- a/common/modules/blog/forms/BlogPostForm.php +++ b/common/modules/blog/forms/BlogPostForm.php @@ -89,7 +89,13 @@ class BlogPostForm extends CompositeForm ]; } - public function categoriesList(): array + public function attributeHints() { + return [ + 'published_at' => Yii::t('blog', 'The article will be published after the specified date if its status is not a draft'), + ]; + } + + public function categoriesList(): array { return ArrayHelper::map(BlogCategory::find()->orderBy('sort')->asArray()->all(), 'id', 'name'); } diff --git a/common/modules/blog/messages/ru/blog.php b/common/modules/blog/messages/ru/blog.php index efd455b..f40d671 100644 --- a/common/modules/blog/messages/ru/blog.php +++ b/common/modules/blog/messages/ru/blog.php @@ -61,4 +61,6 @@ return [ 'Set tags...' => 'Укажите теги...', 'Publish' => 'Публикация', 'Preview on site' => 'Просмотр на сайте', + 'Publish Date' => 'Дата публикации', + 'The article will be published after the specified date if its status is not a draft' => 'Статья будет опубликована после наступления указанной даты, если ее статус не черновик.', ]; \ No newline at end of file diff --git a/common/modules/blog/repositories/read/BlogPostReadRepository.php b/common/modules/blog/repositories/read/BlogPostReadRepository.php index a39d3bc..7a8bc40 100644 --- a/common/modules/blog/repositories/read/BlogPostReadRepository.php +++ b/common/modules/blog/repositories/read/BlogPostReadRepository.php @@ -13,34 +13,34 @@ class BlogPostReadRepository { public function count(): int { - return BlogPost::find()->active()->count(); + return BlogPost::find()->active()->pubDate()->count(); } public function getAllByRange($offset, $limit): array { - return BlogPost::find()->active()->orderBy(['id' => SORT_ASC])->limit($limit)->offset($offset)->all(); + return BlogPost::find()->active()->pubDate()->orderBy(['id' => SORT_ASC])->limit($limit)->offset($offset)->all(); } public function getAll(): DataProviderInterface { - $query = BlogPost::find()->active()->with('category'); + $query = BlogPost::find()->active()->pubDate()->with('category'); return $this->getProvider($query); } public function getAllByCategory(BlogCategory $category): DataProviderInterface { - $query = BlogPost::find()->active()->andWhere(['category_id' => $category->id])->with('category'); + $query = BlogPost::find()->active()->pubDate()->andWhere(['category_id' => $category->id])->with('category'); return $this->getProvider($query); } public function findNext(int $id): ?BlogPost { - return BlogPost::find()->active()->andWhere(['>', 'id', $id])->one(); + return BlogPost::find()->active()->pubDate()->andWhere(['>', 'id', $id])->one(); } public function findPrev(int $id): ?BlogPost { - return BlogPost::find()->active()->andWhere(['<', 'id', $id])->orderBy(['id' => SORT_DESC])->one(); + return BlogPost::find()->active()->pubDate()->andWhere(['<', 'id', $id])->orderBy(['id' => SORT_DESC])->one(); } diff --git a/common/modules/blog/views/manage/post/_form.php b/common/modules/blog/views/manage/post/_form.php index 27274a8..d7b3a61 100644 --- a/common/modules/blog/views/manage/post/_form.php +++ b/common/modules/blog/views/manage/post/_form.php @@ -3,7 +3,7 @@ use kartik\file\FileInput; use mihaildev\ckeditor\CKEditor; use yii\helpers\Html; -use yii\bootstrap\ActiveForm; +use kartik\form\ActiveForm; use yii\web\JsExpression; use yii\helpers\Url; use yii\helpers\Json; @@ -30,6 +30,22 @@ if (isset($model->_post)) { JS; $this->registerJs( $js, $this::POS_READY ); } + +$js2 = ' +$(".hint-block").each(function () { + var $hint = $(this); + var label = $hint.parent().find("label"); + label.html(label.html() + \' \'); + label.addClass("help").popover({ + html: true, + trigger: "hover", + placement: "bottom", + content: $hint.html() + }); + $(this).hide(); +}); +'; +$this->registerJs($js2); ?>
    @@ -46,24 +62,15 @@ JS;
    -
    field($model, 'category_id')->dropDownList($model->categoriesList(), ['prompt' => '']) ?> - field($model, 'published_at')->widget(DateTimePicker::classname(), [ - 'options' => [], - 'pluginOptions' => [ - 'autoclose' => true, - 'format' => 'dd.mm.yyyy hh:ii:ss', - ] - ]); ?>
    -
    - field($model->tags, 'new_tags')->widget(Select2::classname(), [ + field($model->tags, 'new_tags')->widget(Select2::class, [ 'options' => [ 'placeholder' => Yii::t('blog','Set tags...'), 'multiple' => true, @@ -81,7 +88,7 @@ JS; 'templateResult' => new JsExpression('function(tag) { return tag.text; }'), 'templateSelection' => new JsExpression('function (tag) { return tag.text; }'), ], - ])->label(false); ?> + ])->label(Yii::t('blog', 'Tags')); ?>
    @@ -92,7 +99,7 @@ JS; field($model, 'title')->textInput(['maxlength' => true]) ?> field($model, 'slug')->textInput(['maxlength' => true]) ?> field($model, 'description')->textarea(['rows' => 5]) ?> - field($model, 'content')->widget(CKEditor::className()) ?> + field($model, 'content')->widget(CKEditor::class) ?>
    @@ -154,6 +161,15 @@ JS;
    field($model, 'status')->radioList(BlogPostHelper::statusList()) ?> +
    + field($model, 'published_at')->widget(DateTimePicker::class, [ + 'options' => [], + 'removeButton' => false, + 'pluginOptions' => [ + 'autoclose' => true, + 'format' => 'dd.mm.yyyy hh:ii:ss', + ] + ])->label(Yii::t('blog', 'Publish Date')); ?> diff --git a/core/components/avatar_generator/AvatarGenerator.php b/core/components/avatar_generator/AvatarGenerator.php deleted file mode 100644 index 3e59f39..0000000 --- a/core/components/avatar_generator/AvatarGenerator.php +++ /dev/null @@ -1,171 +0,0 @@ -originPath = Yii::getAlias('@staticRoot') . '/origin'; - $this->cachePath = Yii::getAlias('@staticRoot') . '/cache'; - } - - /** - * @param string $type - * @param string $name - * @param array|null $options - * - * @return string - * @throws NotFoundHttpException - * @throws \yii\base\Exception - */ - public function image(string $type, string $name, array $options = null): string - { - $originPath = $this->originPath . '/' . $type; - $origin = $originPath . '/' . $name; - - if (!file_exists($origin)) - { - return ''; - } - - $cachePath = $this->cachePath . '/' . $type; - $cache = $cachePath . '/' . (isset($options['newName']) ? $options['newName'] : $name); - - $cacheUrl = Yii::getAlias('@static') . '/cache/' . $type . '/' . $name; - - if (isset($options['size'])) - { - $size = $options['size']; - } - - if (!isset($options['regenerate'])) - { - $options['regenerate'] = false; - } - - if (!file_exists($origin)) - { - throw new NotFoundHttpException('Image "' . $name . '" does not exists.'); - } - - if (!file_exists($cache) || $options['regenerate'] == true) - { - FileHelper::createDirectory($cachePath, 0755, true); - if (empty($size)) { - //$size = isset(Yii::$app->params['imageSizes'][$type]) ? Yii::$app->params['imageSizes'][$type] : Yii::$app->params['imageSizes']['default']; - $size = [300, 300]; - } - Image::thumbnail($origin, $size[0], $size[1])->save($cache); - } - return $cacheUrl; - } - - public function avatar(int $id): string - { - if (!$user = User::findOne($id)) - { - throw new NotFoundHttpException('User does not exists.'); - } - if (empty($user->user_pic) || !file_exists($this->originPath . '/avatar/' . $user->user_pic)) - { - $user->user_pic = $this->generateAvatarByName($user->username); - $user->save(); - } - return $this->image('avatar', $user->user_pic); - } - - public function generateAvatarFromFile($file) - { - $fileName = md5('avatar-' . md5($file) . time()) . '.png'; - $originPath = $this->originPath . '/avatar'; - $origin = $originPath . '/' . $fileName; - FileHelper::createDirectory($originPath, 0755, true); - copy($file, $origin); - return $fileName; - } - - public function generateAvatarByName(string $name): string - { - $width = 300; - $height = 300; - $fontSize = 100; - $font = Yii::getAlias('@core') . '/components/avatar_generator/Play-Bold.ttf'; - - $parts = explode(' ', $name); - $text = is_array($parts) && count($parts)>1 ? mb_substr($parts[0],0,1,"UTF-8") . mb_substr($parts[1],0,1,"UTF-8") : mb_substr($name,0,1,"UTF-8"); - - $fileName = md5('avatar-' . $name . time()) . '.png'; - - $originPath = $this->originPath . '/avatar'; - $origin = $originPath . '/' . $fileName; - - FileHelper::createDirectory($originPath, 0755, true); - - $img = imagecreatetruecolor($width, $height); - - $bgcolor = substr(md5($name), 0, 6); - - $rgb = []; - list($rgb['r'], $rgb['g'], $rgb['b']) = sscanf($bgcolor, "%02x%02x%02x"); - $rgb['rgb'] = $rgb['b'] + ($rgb['g'] << 0x8) + ($rgb['r'] << 0x10); - - $contrast = $this->RgbContrast($rgb['r'], $rgb['g'], $rgb['b']); - - $fillColor = imagecolorallocate($img, $rgb['r'], $rgb['g'], $rgb['b']); - imagefill($img, 0,0, $fillColor); - - $cor = imagecolorallocate($img, $contrast['r'], $contrast['g'], $contrast['b']); - - $box = imageftbbox( $fontSize, 0, $font, $text ); - $x = ($width - ($box[2] - $box[0])) / 2; - $y = ($height - ($box[1] - $box[7])) / 2; - $y -= $box[7]; - - imagettftext($img, $fontSize, 0, $x, $y, $cor, $font, $text); - imagepng($img, $origin); - imagedestroy($img); - return $fileName; - } - - public function getPath(string $type): string - { - if (!file_exists($this->originPath . '/' . $type)) - { - mkdir($this->originPath . '/' . $type, 0777, true); - } - return $this->originPath . '/' . $type; - } - - public function remove(string $type, string $fileName = null): void - { - if ($fileName && file_exists($this->originPath . '/' . $type . '/' . $fileName)) { - unlink($this->originPath . '/' . $type . '/' . $fileName); - } - - if ($fileName && file_exists($this->cachePath . '/' . $type . '/' . $fileName)) { - unlink($this->cachePath . '/' . $type . '/' . $fileName); - } - } - - public function RgbContrast($r, $g, $b) { - return array( - 'r' => ($r < 128) ? 255 : 0, - 'g' => ($g < 128) ? 255 : 0, - 'b' => ($b < 128) ? 255 : 0 - ); - } -} \ No newline at end of file diff --git a/core/components/avatar_generator/Play-Bold.ttf b/core/components/avatar_generator/Play-Bold.ttf deleted file mode 100644 index f60bdd1e970191f8e53e394eab79769dd62535e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210704 zcmeEv2b@*awf8RP)~R=TpIfF648sh=03uxa(2IcdB2`5ofY`Acv7kX?C1?_3>_KA- z8e@#ls8M5#F~nz#f>EEbJ)_3Po$tTa+2@vNj(OjE-+SNhF`T{c*=L_~_Fj9fwO8Bw z2q}cfL1KyE_@gFI!kHAh-HY5iY5atV2dZ9v5=8@qQ0GmWHS?&9@!xL|Lhloz(mm;@ zd1FI&t-nx+@Pk6+UpMopK`rw?xbbcwhRwzOD^{Jba&xBp-1RuWR|x-wtF~_o7X5zs zL7{8!z%%`8H?KQkcFnHSgs#K=87Hh;xpgz{%f|Ja=>6+9oU-<}x8Jx|h;bu@+EucC z&C1p3`oj@I{cZuS4_%J}_Y0o)aDF+?tJa^e?c~4xW!*lU<9&h8Hf&n8(skh9uM_GJ z-WT}lgq0_6cD39$VXa?KPhTNEz$-t2x*HLg0vlfQjEc$ z6yxwGMTeMzbUOZ|ST0r|Jw~iUdaU>s(i8C~#ZGY%(p};zq}St5iXV!bkp5WQhV&ls z3#7jkze4(J{7LaV{-pT5_yf`d;?GE569%X{taKAT3p8 zNGnw((i&BRbf6lDv`w`k9ic`bJzC*uYLQxmbg80eu28Fxu2sh(JzgD;bhFxwbgSBi z^dz+d=~?P*r01*ikzS-OM!HMwLi%0xU8L75KuO)C03~&+x)tdY3XoAxsi%-Wqn<_j zTlE6cKd1vpUsf+8{fqhw(nIPH(l^yxNZ(WMA^k{wg!CT@5K~_$KupC{r;r+dNL?Cz z*BeD`?SsHNA`8pqIv91!*YPaSJZLPLeBVBKuA~Y~24W&m2WsS5(qVz~>41SNb z#^U!lYaH&GXiY>(hcy-HbZZvUxp<1=rzn1k!U%$t#A;a~tnm}4%@rl9PT8_SG_2dQ z=6Eq;!^&+Nfn65iXlEzhNp$T^I+wyFd`ag@xbd_^eJwm9O{5>cW(%If=`2p?bGqb& zm0OM%$8frV)9sv|b;9u{94{{7^eRq&!0BChKee}~RO5=`7WVziLhD>;r3X*>`rlrW zBf_A+7BNDM1tjL+9bVkuAr?umtWZ~RU!{K2&V2=Tp6(WIG*sp<5pG5KcHsu_WT81P zJXOeI8%`1&KmsGa5V9!7cc-HqonhoP`GjsCE$wq^*Da*!?gp#g}XjQ$<4UyW|ZEH(wp%_Jd5u+fHL4Q zpC?M6L+NvT{awCJPp4nFr-<>Qw4-zyAWxX_B)E$znooT|=`P?!9=YIY>hK@m=$GptBp~6VOfkO0+Y%49_^2bfsUvq1 z$9_g?n%rj8>jQg$TLTopSz-+EZ;E3Xwhy!$_=a^#w za?E3THICzO&@-LqVjk1ZLGPpM+k3q}QN5<#v`(f!^{&Z3;Pq* z6F#t0zWO@<{voGVQQDaZG@f=JZiY#g$Y?T**(KVLzYKB2G8z zdeq;@zc+9?noCCW@1=S+u0G1YOZZ*c)Fbf;_iLHD1y_r>Jj~?}b4gg;j`C}`bKNxg?)|*Ymsl{QCk*@f5r_`=-D#3BD=sLL2VIu^-2yIGzw%O+o$)ju&u10+Fxc zcmw6LaQiJnsqr{}2gipvKE*-OGvrp~#gU044@ZePg2+in7=WV%b?KSrxoQ~7%t7y? z>(IM;yIv`8k$0(KYM8uN?&thb`HXx*z90|CS5wa407g;0uJwDXcR+r~_1}=6QjR;n zvU8=noO}5^Q6~0CU>smDR@qz{!QlkZ6@Dmt~>9$-;_UW^2a!T()FClUo`p4CV!3dH(k#8yQcgj zlYeHeJNL)za<^r2KjrRhcY(>vI1k6q>r8o*$%k-0!adO)bx(7TaL+OM0+TP}e6`y- zKhBhIHu-jQ-MRmCQ+|%gopSrRtK;wKTJJ(r-_CcruS74dbMJEB$ob9j^E*uWJtpsO zy$4NwJAcIeIQRPz_tTs|A3uM|l)qx~gPgzZe&6IDoBRtq_Xx^8ZntxuZpw2^US#L- z>lIztC`|5c`ZkI8?)`7M;9pSO7KGWoqG-_QA@l=Af_O#Y0?U*PWV#dCV8=dCgKaqb=9Z9%(+As@y0 z`1tu0Q$EY&{jE3O)VK2`-eYjS*So~Kp7V{~Z6-g}RzPH-16tuRQfF;S*vN38i~G$f1k~F6;Y~2@so?V zwde8kf5Xo&()9d$Oig-z5k23Q)5WFq9Pue#6_?s6x4hPrpgzi}J;@SGvL5gqesUe9 zY6iEVj@xi0x8Yy84Rzdx$4pIXLmfY}f&0kvkSgRJUBPu4xDAinzZoVCT>pBme?8TN z#UF2!wic4c_ip2oG?t~V;V1mal+YW~xYu}qknRq52l|x`>n!ORkfi9a_14a_=}z|m z_X@6Yo2W$%*m=Z@I9|r_8V=H%V0D5{B;dsmB8G>;ekT1mAb-gM9A!AdH~=@@pNL}`jydKz=2`G;29f?;K8t>zh#XA4IdA0n(nu`}7>~C8wXz)2y4UJ9xAUV4oLc z|Ag(CaU$7L01FJ{Uto=m6OW?S6F8p1@dAzmI9|o^299@de29ZAiCXNw2LBjR!KG`w&xiC5rx zdr-Wca{k{G3p&RU?~MJJxMpV#am~(r;+maL5nt)dB978IpEwFe7+fvZNHt-*{2h%8 zEP$`8x7CO0-{CL&Sbe2BwOgm@Ok4}Vvqo1B!mIXg@Tq-ZYW-b(07;xvtQaI;g|&ttsJwA8j1mK@;FF%V2+5 z7W>O`*Wrph9(C483fSHfFa121J8yp!-u z!Y>J*Bs`KU)iG)ne3I+bdUY(klAFmJ318&N>J)XVI!&Ff&cF-@uOxhu@JGTM`CWJ+ zZ-Vy`o=5l{;d6w?@p<(-^#Xj3FR4GO1LSiQm4MA5@-_l4ACZp{9!7!)JdA*ci(!$4 z{ug)YdkDRcaR2L}sRn?J3ihD7*lX%%EJ$N4$YLzWWh}^JEPz*56yly?)^KZtbp-AkWsSC? z))?H|VNJHCSW|K53~Qz}3->Ot7F(-u2l;8o@;k@kozglEUR<~aaF7qdO;@NEmq~aG zf*2JS&g_3Q&n5oR8TnSd^d$UtCoY+1(39bhh9A+x*X$JU>fww$y7qI(kLT2M9!V|o z;Yb%*m}Le0xo(kxlzycn%>tg}BF#c;vyldnW}*iDW%FMa&V9Hy4V13o-BfrV-EH@R zp6*7O?GL3Z)B+dkkf)XUNq;W>qpS3fc!m^Js6oH!UV5Gf?McJa>?bR}Tj8o3_tQHy zT9nRz_A?dEz1%JvE`B-JwK>HPK85|@r?MaXHf}Zf!E^C8YF#>dmnVuunWz&3L^G&l zm>4OdVmv5g8vM81TCQ*V$uj_(e9%|9s22mpV9_Rqiz7i%6U1at(d?x9wjVtckSze^ zRe%ngK!ro$g&qYz^h9`~XTTRdM0m$6nh+E##*LX96zj*$LArVBm_ zGp7f|g>&iZ<#Xpu4T@{v<)Zf6e)%l?Dio!n5V(Z|3a4{8UBu}zt2Z3GPHo_H3#TV@x?}amO(&@HIK7C|%Q?Mj?Ut3R z)E-W6=5!yY`|+5S>Tyn==Ja_^UqZys2K5T32RVJ4)Au?3nA0yP)q+#^#uHE2qSHCe z;k1a;icQFL6{iiHHgh_3)0Wj6^+-;~b2^RFxtpo}5>AidbUmjVw*r!S8>gpodKRY_ zY&~}4T73zpyE(mv)4f|yShZQ-#OZCE?&I|Sty`N1>xVggjMFDMeQxWC$86Ova{4l- zuW|b3))O~x)$elp5vQMV8rz0;S{A2%PO~|M^bC5lX{xuJBAlp3_q3GDyQW0P#GSh4 zMA@1tM}iLNiQQ93^eFF|YEUC_F5)nK{gR+Ry1#o$+>a=mQsRfw@FU`1l6kUZ&PkFe zm6Z3A7IAskRDrkT<4SM21aF|Hc26t0yn9M=v1I8uHH9>b^6qJn%e$u;T;4s+;_~ik zA(yA7RUA#TNURrIIL74?*ctX9#^nxiuXq@;?laKWUV;4luJ{zp-Yc_Zkqp9r)eJ2t zDm&yXxj?Rv>*Z#&9Ibc5lSH|1Jj30R6{tC0&gV0Q`F?|qBXXN5`AE@>i#t@d$>Fc( zbJ$uqhfj&~qAu4-v!MHI-7|4N$*EMHZgSE}>D+6-QMpx-`4xokiRK2xubDa|1=IO> zlaDod)Xw!;c5Xds-)DVjpSzaW=dMNO{6drOv2))t`?}AR`}P_rJqSoW%5_4f14=J%9@E5 z+E=#nl`VYbL~{jHgq z=t{!H$d z56Oq+&*dZX7xGd0OZhALxcnFRO@A$)luya0uBZ}J`aH~Fr7PrffdkRQr_mmkT$ z%a7$J@>BT_`I-D&ej&es$1#`Zj&LzC+)s@6tcff6=e$zv?&jzv*}M z2l{n=P#@B7=(qIS`fvJO{hof`8fZ0HgAirWVzpY$)?lmA8UQ%17C-t=f#a^Pl-s(4#>ZAp(m~oYcT_8*z=x}-{SmDxrOt0!Re{|uso4+%pu@5s0F?u-jydK z{Xl|m;5y>BarHE$TAq${7<{7(K(ErXp5N@kyYnDbASzRC!pHi_#rjWe?o7y>&CoPQLeK2LJT_k}fmLU{ z*eK2tyCI+5FP?-I{aq1*LcFHpmqa)<6K?CQ?S4@e9_4E^p-oYG!*&DU*#qS3p zg_*jTVP6qmy#P^r+tJGnfXK~yJW3YoBlJn=^$CE`kM#tUEYc(O$$-K}K>JzAdzsC^3%zFkj7$udLoNKaKy@od;7&aiB`fq;y#r9*h7q|75t&}SQjgPT0_rDXgnmLatS{0Z2<6Iy z9P^=w^&hgX9KgX(@&TlZ`FPGf^hJ)1gtq34V zQzHs+oHYU0-SO*D;j+eC*sj)N&A@SxxYALNB8D%3RB@rWTbv7<<|c8c z`U`}VGJeKHtQruoVok^MW?HjhBVB8)#WRkzj>R*!fHRYvYq9MM)-L>(;C@KCUlQ^j z_491;ZP_Z1pmMYx-P1LC5KA&rKgzW);?fQJM3mC?WAyQSo!UnbQewFb@cj$<`V4)v zsoAWD^DnZKkpxAS9Sw~x2j_YCb76!UaHScRmQq+ZTA_cn0kbP$rI{pxu(?dewW+}F z!NBkJI6Dr1Q=pGrfYJ-$Ut1wA!{1tQwYV88YHq>bN#b^KmpGYwak}28?-m#62lRvD zLj90_SX`tZMXxT=kL#zzrTQiPCvk=TyZ*blT7RPdA+FJ1=r6?e`mjDM_E?2hk@%if zVwH*;(62E1dN2C0AAedria$#{hCdfHp#$i{tKu){!|V7f7l)t~RbXcO1bz4i{+h+- zz>C466P}5o@E4VcX|fEXI9*oBp<)K~r4eGK94W_OmB%Z1AF7+s(4&AkE_Mw>f&)N;c+eF zaV_U@t>keXgb`eZ8Y?im<9T!^@#uD7bk9PKb1=FKcyw3u=&s?>J&{LuyZ9-_;#3}s z(|Ih;;IY`jV{s;r#g#l3SMgX}jj?!NTnldSvG@Ux$d551U*UiMyEwQCWl~*eups{BVOdud6h@!FFZOQ@aTMqnPIs27##9w_}@V((n}*H zb7-Vw9*vYNpfQp~G)A(5#z=-~jNr2d&dC}YBUwvhBN;Jo8+4-{pa<$EJ&38ffH)MM+|@2V z9?xEnXC7~DuuiZxTAQrR;6XITbC_pj@>}kKCbI#2eXFIZ}(dKlOs z;1^i{Dw%5M@T#`RFwP+!+W&$=eH*_>m*Ri3rj1!BZWQ86OW)dA1$-u76<<$@%?&C0a=me2C) z!&ZTnZ{=D!Sapy^v!D7@JPC|_SU+fGSb6#%R+<&iztb=1`}Iel|6=%+w#z#G8~rq} z{g3*9{*$GxVsNyZF*ARvf3IJZXUH8^wZ2Ectp5Nmn~qt4xJ4^0+Y=zyPZq=#1o**4 z;u7$H56M4+nD_^ zoL}*IFfUjVtO$mKHNocKh~W6(=HMy8oxwYTcLnbaJ{bIYs2~&$)r6WtvqN)3i$cr7 zD(nttg>%CB;gWDgxG~%jUJ+hX{q&a>tnTzL1329*ZbVCOls{2L+|noDKRf`Z2l-PI zE!~Eeo`;t1(%;cP1m^q^B0)CBqZHcjQ24cu0nKi)E^?K)sw&Q^xG|U;EDDwdgWS^L z+|q5qvwCRhtk6-Rd7;Ior2(|GINs9LXes*#I>GDdpIT$*v0uw;L6sDJj(@<+S{Z~D zFIxtIcU$38*o0#SU9(gA)!V;AkJ6Pxmmhlj&~=9<9&#UYA3Shq%ApyD#vdAYXyl>5 z!Pvof4uY-^4nKIr!7&GO52hUiRloiYjt^gdJZN{7_!_@ z$Z+-IkMOts8+>|i!wdK~Xk70==6N3;xcA@<{0b7x7m!^(f+z7y$g3ZUv5+ceicT?G zO2}46Azo>obc?ytCFVO#X$SAyRyXFvIo>?0oq z>7X5+@-@~v^$-0aq7^=;718RjE{n%>e2l1$PdR>pBNRY)m55|e9NXdI=ngM6e*4kw}`pmMS9A|Ejwh2WyaSbb5d%2kC5BEBP}!m1ik9#yJQHLJmh<@lD`f_RSY zi05!(InGk&sB_hMh~~IJeOq0qc0y{oL|v*bLuAM0>O1O6#CKewu2VOt8#xB#`-ld) zR$YUbk3H&p>MC`$+KX6_9f$T_Y;~sEsQ#=rsaN4wI1xPl zW~}x2u^O&!LDb2u>Iik48mVqqN2)szS9qryt?p7$^%FHl-L1x{d(?RKQ#C=|t0t=Z z)FgGk>QE1;$?8EhMg2@oRr}R6^^ls58E%I9Ib^R{>KAIZdQ{C(zf?!5$JAW)D>Y9& zuI8(MQI8?4ra8u z@YekjGU=}{$328dgP+5j@CbZ&zko;JVR--VgPisNwBZNgjr$pd!u#Pfe+^#pgYazs z6+Z4i!R!97@T9+jx%|)Y*uM;I?=x6AJ{8BxQfNfwVwKDnYh)p;ibY}_b~9Kl3&aVs zQf!hTu^F=Fw`4?YltHmejun?9ifcEb0I!rC;=6LPxJphDSI9}?7U)$!mW#!$a;dlt zQK^ok@(0L7)%vIUDt#m59jRkh9!WsfsVuLYX2JG|KLL!`iN2(XY4`a+<8sQ>eJ!&V zMDtxZQPNUt!R+Tv)nEei<+Rc$JcMvr#4noih0zSJ*PG@|3j_k$?zE!D+}7MkZNw9i zNIrVxoxLO88-AVKJIBIux5Fphe!I;5_+y%t`Tek;gz-?!Db{3l3VZXrmQPnBah;+@ z&|dv4Wa4aa-ZJsjeI?TGrZyL$%}o{*2Cda*)CJ3uYlKddF1L2APnUk-_4vJOh1)%E zs!w`6^F7l_?Vb+eyQI=P`gvQlC2@z_<#)OLecWl@wQymythm^+ipz@2iV6$z^Kx?n zkbSZO;oLxWMp|*BZ1qG6YHC{x3R+v*Tix!6CkcXb(8Xid%PD%cySSvqJ;$0da!E2w z^|LE(m@uNExP8Qg332G!aO|7`cscNmSmWfg4ChpMKJ)(}JabzMBktbd`O0Nw8~nY4 z^O+TUyMoifRcLfJuGU(kfRjIx9&3y`9W!0vZYB5qXkTmN-5PesI{ZlB_siYx8Lg&* znp5u?pK^~gX4;ynI+AezOpKKuaz}wUE$a7TX3mp7moh|KLl_KAat+*&2*p!+jbHkN z$L;g16)xAjsb1-J&v%20>#;wBPrH1KxIN!s>Mo4tFjCz^ ze}4)@iXHB$!#h`0C3o1tAFMra@aIU3E8`FBPw$EBB>dU;9-%@4fBx9*p3!P7EI6t7 zGlp++c;pzs&4W2BSFF1)Aib8u*DK+C0@DVgU*m%a=XQDBYhhNMH`OCuuK6zD2HJ=C z2g|#ohnl9+!e}5nJ3BW!myiPgvi)ggVEOrxb{xr!>nA&QJhEfQX(^~MX8ZQ-V;wf- z-~r|!XAWQ<6^B=X4my-82`1Ot^=nUlLl5(;=tyKc*plcT_ z!_-h1zUNPc{$(w9OAGb`XC5m{RMWVk5d`W~r->V8c9%N0dmWzFF+JtxV`|SY$}fU) zlUo%C{Lj*hI$R&JM^g63e)02jj=h8k-fxDJ6| ztu=y0ZEay;Z9{ECVNGFmZ6Huo>%&}`ThoSS4ISFrQh=#6KhI;!8e%AlYic54w;P28 zt+{CDOEs;<18Qpr6t{+d3n660wQ_rzA2tOf4RhwW=BOhI+k=yGeJ+bxAcJ14KYC@c0L^&yUrW8!!^Q`w#Y>fl4bU!t{*wn%|+2%&w3{kkomdkr|X z#Ex4eN`cy3OVM$g+Q71ji!;yea!+zauwk3xhy~L>n+*f)oWC}bwgM3?r>J$YM`S4W z7db6f`ufb9DjgvCnx-CSpwHqun{s8tcSbNPn(4jZ}gF;LK4j zh)~+J+XHNah-u_Nq9To6u8G%7zP>P;AFRyFt*x%C3)YpF=2qlYGzGnB1t64`0va;6 zC*RH^A=xt23|u5Xw}pR3BKZ@gXX%=T#`2ocJI;%JBt6wt8R^w^>o*N=t{!xr+F5!; z+pN-NpUWB^Sv_;CJUhL#Bv@GJzc%)MN%@efiaTLR8P@qJ^pq`|;ky2`(=8%md~^&sR&v2kf_chig{0eMO#$%WMI=j_W$ER>5FoY70aWV=J9wUo-j2wC!3jLYhgR2+ddooFo_Jq9vat6laD^SuSU~YSMgXkie1sdJhV2H zkJg4ISROeFG10joB2_>~sK=}*g-5PSX}bcTl>%D@H7>`z=w0Cj%N*ECT?`MZqOU3S zF)8BqM$r(+t%*eP!V#Jjt=e`7^ld{Tk@lhO?NvQulg9&6$a6b-D z`!WT$HcT!b&^EEW7bMGvk-E0Ju^DYpHtqx0%oti2u`XkXTI@jm zx-rZNIAch{UY}$5u`LIk(aRV@9O?t{5^es!LLd2kH&yy}?{4m;om&r=^-dmuE%D7= z;G1cf%_i9Vz97LRp&F_Lm(0UxFqcd&hO(TIo}ZgukWo+@bj6usAP-t!sG7K8UNluw>@lG+)WKP~pzl-Z$8X~D2eYpRaTqwz+(FSjWRynMOc zrl4D5LkY-oVhxB>EoGhpxz5r{(OQ;tDsZO@Gy)#(R86h`nIMo|URGLCT$o)EsHhDE zvVEl5N7`Bg%*MO6I3Lnq{=|_ZySMw)Q)Ss2>FwJ1YuDTf0D&ViOc`HuV9#86A2A(A zUaL&78@HPqZwspyHn6njL;Q)BCu(R&wAu~P&gF8hFN|jA<(8G?mgkkD3&fHjLD($G z(_=RR&)Cf9(eC}w)4_=*bnOPl0P=w|1`2!=%$)l~JNKlCnf8d31KiqzR6w&&k}QDX zVZob2&>cyD>ye~jUtJjW+0(w;NSn^IKT&=VyHmEro|8*s9y873^=J>ll-4+gA#(x7 zu&pdXZsYH0z&agr=RLNBIgq&|Vs7B7)0hm`gK>DgZVzD&gAokg>-8-aKHq$wBX16% zn-IO)zk8w$U8`fY5k$W=@mD2Y0BICKtB#o@J1dix(WC{!Icb=eMY2-wiiJeWIaNVNG_ zI4>nE19MZlX)FV#qts8>1rm5mHmiNqPuM{c{T-uiyMWza=nBRF^8cd0amzqTf3Hfi z45W70SO)A4$H$fI0z{{^){*F^Z5PO4yMQ!yCD@nZb^)8V$u5w3&uCT6c7en_4@%oE zVDs3~dKNIo15IVU&68?DmBt(pC&V6UK3bhrvk%gZX2P;*{=qCj=x&<@l1cRnHVec) zNkN2JunWv~@I8r7Y0}{B)>adCGKX|p0Bf&3vjLwyOF^7u*Nrj*PUWNyvx(PQ7$svh z{lko4TQ8Ca@T=Xs?@wvo^sP?g92^C2cX%t~XnZUaJhwx>oy3dDW`Xfyo5garS(tG` zw;aAqHjDp~{(?A@`+GB4ELNoS7#0hAI53yNRzY)FsrYf!52-?d$q2GKlGz=`#2&b$ zTI%z{%f&LaT#hMk5v&mQFxJFxpm|cRB2hffU7h!-oKt35QS_W6eE=lxxP*rv|tQIv5EyJ9dG(M)J z_YPap6t01&g>^8&@9D+G_XZJ_`JQ8{jY!@vnR{r*~V`5)6*JWM3HujSo%-%}0pv^P&C`{eM#j@z) zN~pO(>2Ab0>L`rg{9hS%N)yr5}29XZr}1W>BF*_X&G4ll`%YH*wD5i zt%C(;fg>oN2RShx`>Fh6<}>0`yvQcJ)J2Eao#7;tgH1mLJ-9!Rks zTk43b*S21|#7pXRtEZ)TP}9K1`ijz`0%&M{zyKm`s)p8&-hXB^wtjS5k0Sl8-(5zZ zhjlg^oUIo#qtp70wO%rL(AYCSU*v&VroOJWCXT~o0qh?R15RIq#}m&#YQ@*#a@7w& zKuKe$5$7>0I=uk)n?mW<_0n=RVH`n);0jFRZkW#8Y&uJray-ku@H#H>kSV9x8Z>Y~ zV?$j{X;D5@EFV-riCHqCT=!$>WX0~?mHisGt%n=?iKsSD+s!)57@Mcj)&qz?vDScC zVY`eQ$y3Vp(zs$!q^Y22S?v;mMUX#>(G zTTc?OWQI+ampMR#$qv4=B)}1-Q5yyAa;rt14Y@QFfN2^7EuA@rh=unCvK1K`(Eo{h zFbIcF!d2=gc=Y%A8QJ1|dp3tV9Y{RICFP{jXj=S4PF`qV&((|xFek_run^mCvl~!o zE};yc08rKngb5(D3KKbBv0IaJ1#@=>2m+4qoGK@9AP})?+rXmRfIP5@p}lh0xJg51 z?%DV)YPjFOC1aBObF6MHEFVVCm5W)=9fJbsx$+m>H|XPtO(s1zTWq)6UP@DrBt6${ z^jw~1Z2jBrLy0ph^-v?)!^OCQ4rK`6{z&Mm9`IyPbh1M~5IH(oMV*0>i0h>^BC0cn zHa9Zf`NjAYyn`jlnH^XSHKvc0;<&{FVg=BP#R|u18HfzEv8rRw9vh!*9MH6Txok0d zL7H&r9$;|vf+QG4^Ha*>olmw-Xe00gr6Yb8^f%&_EZyUkOk3h0`bc`n2pj0MDBfnB z?6ETDspL|}XtnTu64)({FdulkeD%h?zq?f5bjGdLWe{nb<@2D%*J43B z%sUYkyAu>Y^nMSX9)D$q{Yqe`{YE}lKq)>4$>V)C$xD)*;n1JBSB|)NZ|sSS@tz6t zA-w0Y*eHi4Ze^Ot5R>mub0eJCVJwK`uo0i0OH#WbjFfT2HL42Tg;B8k=rKIr(D=%-w+ISmtDo=VxKpam@oS}3Q{h(mYNF- zqke8m4md7}?CdyBH0Nd8PX1iHL8IV~8JgTA!fViy4f_l+Jr(+eNzhMbc3^|t9(x>; zuh?u5gJQEm2QDt6DW?_E&2*J$2FQ!>u5%i%Qxmf@ z(+3n6MDBGhbX7Hb2zv}B9bGdlJ1d7qhk5p`dLit><>J_Ao*&RCEx?xWYDzA|i^)Fe za9tu!X*@O8}d7~Y(4RXEHxR|?@_YfK?5PT|^`NEo&a z2gYxCT0@1kHQ8ku_1>0HVMA?tS>{s?%(bViH7hGrRNfZI4y{dq9(^HO*^M0c(JThQ zI0>NJHZfAvBw{@z7CTNWM@!3_%Lmm~Q_ROecUrz}RDkc*(Y|3Q!hhJs2&QByvmLWx z3Im~Qt+H+L;I@&C;fe({k=my54b7wS3x>BW+8h~JR8%}=#*8T?#YF={{>(tm>=Cl8 zd0GJ(i9BhUbyd|vVs8wckyo|J@188* zjtV6FWGngu8g2W}zA0cBE;H1PaU3H*+us=1QsHC!+2ZhlY|3`7l$c?-UA`H7;x4mq z3?KQsB)?k!0A%~yzA1nJia74P4xNYSkbHA%jc;yxuQ9te?UHXU^`6mch3qY6*S^R0 z%~fIj?TBbQNYzom-3~d^VgeToiA>Jb)n0G)u^v%jZ~E zKe}H?N80@1vVVpafpg%^Hf*$wb8$G6-^}KB9SSbIcsc3jC@0-qUB|k)iM7X=IQ*W* zXsGxObHw|C@Q%nSrIbS^GKQ;Cz*C#-DS1Ro)Y=oeCV5_Os zqG3}5FHqJFepuH^(6xPab-96oH6$|#Gk=81E0M$r3P-87Ld+}$g&qX^B<7SBo@dmJ zG>;5T8jHz;LKSJ>$}P|FUl5;JLNw1PW#*F9(eTU6NR1pZAwMs$AZd2t`6d~+3FaG6 zVCEQyFDQbiUCw+VJ{F1k-Ny*^dm5woy<_6foT*O4I~^Wu+k*ascu#^Wg&BThyqEba zCa(Asj)6(w?sYcT)6Y8Vti$!G!2bFNk3+E{NP_OprH)bR2^+xf;!^K~*e&Fxq3nid`o{j+^znJXd&QoLJZC()q>)~iF1kX9)Tt1JYkS$`+tmRZA~7G)XiyU!b1V-f=46U1H0TyL zev&=Ug|Hrbys4672TdBxKw*#v6LFioh=3M;I4EahT-7<-W{-RL-rG9%$Z&gIM^2!2%LJprb2A1C1FB@TRStz@8 zf-EmRb|a}DZmd+U6r0HguSAw~c^o551pLW1!a#lmj6HBod$D5~$1`F`>>%1uycVA6 z^=L2Fhnd=@4%VO)7F3iKR2EipcXA+aCX6(_b?E`yW^+nUouXjc9=e6GfemNB!J#s- zF$IgN5TgtOZ+9$8ju|NBA!K}tS7&@mu7m*R>@1FNwpj(Rivyf{>k8R#Pww82Og8^? z??-F{+kvXVH->?4)KctDE}{l#eFCfO(j_={hoZD;p^XzQ077sUegF?^MNM0zYDk29 z5CyjL0n3~skuW$I*-vO~3T6hZ&H{r&1{+Z1p`EvlI;XmM+Dp5xn|0dN!)KP3&!4er z^-*;z$NO_mDjC-h4Byr~Z&t>(oQ%whrq(%g8@JWx2SB^rR;GzYF*Vvzh?t!sEct*J zSi2-9H`e{wRf0Y4l^YR92o^NKI!YzSI5b)f)M|Kj$@xygSx!IOF4I8+zFs>3QaD`K zM<)QWL_geEeLp)ogD9c|{V0`K3(GztuXfqXSX{J>#RME6n!xC>7>wk2n%0UYr zL+zfDhNbQvw;yp-cI3u7#P@oagW#dbxZPs83(NrSd4p{$6vAt;CCISW!9cOxaHJ|w zkdCkfVPlfBG$kBg#)4HWHGL1Hd~x+rN6f3Bf)-g>viO|t7%4Ae%&TxW@X8fl z+oA{7sO;`2+I>vP-`9OiG58W>1#;@|n8L+n#+1XS`tDntz@E1qe~~`Ml-IlTIi`fC zBMon86lY_lbvN!XbzcLfqdKTcJu!)Hp;D#M>UdRz@Vh-Loq@*a6I(I11F&)|RcffO zi*px>s_HLyAtzw(9HtoTun#U%g&n-H#1v~2z~4P$h%M~}z!2?l6*Sb$uUVLa$q0f4 zEL@W0`{yX0K;)GtRpYPssFF>a4!?=+C7zolrrXagMI4Kp)_aLHv;@aYdQO~hF(i1r zLn{cmPBr^l*XUrZd7;QitZ#u>g%@w$Ot0RsVUH|cwRh8|y{lqx5#Ql{fq%Lo{mf2T zQ&7UwD<&?E7jhO=7^`_v{360#CBzLdR%0;tlS%;pLy|wF(DeQao3CUs5O}%3y*3~K zht5F^-!ic^>i2^$_#k~c@<25}MT?Twk-F(#iZ@|P3@LQBTjT#)uW^U+S z%Z|M*6A*9$%sn{v)+}gC;TnJ%!7m^um8G(V;u`8eZ88g}jt?opv~#qlpN6Ul00W`+5wJ$$M&}8BgPB zu8qgMjs;mz+eX>AmP79X`eI$(3UYU0MQLf23T; z;$*J?NpWbM%jH=?c0`0C8c>CtCK|6m4;73L96ia1WUETgm- zp^e#D#%VzDsUkTRN_6S63?};oVsAMRNHYAV!Xl~9Zmh#gjnTtGD$D|8q9#Ecea04t zE64?f#i^yy3KYV8r(wQxswG#z>V5=%6nOG;BUs76iyuvlp6b$Q(P>Wt=Q^#0XhLfo zyR?*a4SU>d`);9tL6Ve=GQbovDTz}_AU9#6rO`?hO1RftNgFZn=$RS_IK!Shh28=* zl(5zWIr1J1UE%u+d%?x8<1MufxT!5={F=cy9mXz?gkR(2pVODt zv+eJaF0oTKoxBBmVv*>$4}Q-0S{(#aNb6h@$}vJP6Rp4-$rKCvG#8XSH|YYr@sUVQ zHF@K~vOFM^VDf;_y2(QIR@UI=*qa7{ju=>-`7L$(*n$4oSq~@mH7(KrN_El0@D7!R_eC-qQRlA*{LYy1*mqGw6gS1cc9j#9( zPr@<8=#cd5tX5wHhTwF=1rFhIuj*QvFcKg71LB@5Och2-ev+65o|gp(REY8_bR#E^ z7QFMW88G&Pna8<0G&CpDPEHtH@$Pp=PntCHyKfi81MUX3X5IldU)>N1H_CsF)!&v~ zQ*FoI#c|{&EOKdtr}9+0$<-t^XhajN^GnNzb-b41DIJ60c6(Q(!B>gp0;SP9%;MO! z4ZCdga6@v{h0)3Z1Io&T7;waZ5yRStvOUsiqE1Rp3>u5YN7dxT-X60iFENAdkeE6%Bc5-xd zw|4%gk8@#{ao&8xqSIrgDJ`RrudeX3WBIU*0BhUZ9{}jP_ zPvrBz-h1&y_x|<6`>y=%y>hA?b>KkkvDkfYl1gXO7rs@x6Js{y0XMc1N(9sOO}Tgx z2b9_`3Pk??x4U;17_UzePC;gx$jnr*FHxW!{y8zVyk0BUY2G0lfjdkqS(c0q zjW?BX7VWWRNT&KUFEm95XA2TIYlmckvGZ1M@bOq6E6bgPu=X_ywqtZP%B791+G)^D zjHsKO_7IB38l3hJ+^|lY#wCoMzzJ^Sw^=@!39~i)t7Em=6-Aupxjz2?5(>2>Pgm zhpkS|i9M*ivAg7g!*4H_4{cf&o3I(r1P<_fna^g3#Zf;dSr`n!sLY!w+Ku%L=M6xD z#GVbMQQpyk^bkzpSf2??W8x}ln-uF9kGj#9NkV7sXv36Xj_o z9U2WuFivb?1x;&;3=R;<9D9S&_ZczD5)~jrU=JcP=CU~emw_AHx)j4hqJ`JnriVLI z+elW-L@WO*;YW+i6RrEV-MfF8+On;O&yPco+C?$yPOLm)o9$3}pb9i~lK-|5ky@GL zHFN^s6G88o`;#K?yT;u&MH{<3&4S=)!Aw5S48G->4ucL2d?q%Ii@zW>vi?_gsCN8C z6jF+IC;K1~BZM-Dp%zJfFwkSc2i!bT@$M(=Idtinp-@++Vdj53r=i07mrwC!wfEs& zZxSa(GqWM{WnnamAq@~dlN29BXI)rX$r1LnL)J3h&QdS;kRZVXkD!9CRmil%^(^d8 z#f#CfHCaUk1oozifr$Mq7iCy5UPEr50>tMGK}2e+y@{NsjpSQ|e@5Ck{*xu%wl=uo zNs=#UJ%3zj`IzB11qKcrwPEIQOVvA zr!VoBjUN;H>45U|jKx}E3y#cXzS3~01hWtL9`_&Lm#6Qt5HB5}qCJ+6Qm7Bh7T3q# z@3aqYlNc>ei)MzT#~Xwe(8Z-!Vg*9mOpi#qy2ATo`>+7n*mF2~S@tu3KNoR$)oU(JT`eumq zB_cjk_V)em*JGBhi|_b*_}Tto8ROUt`EeY_BABo7{R7}yDo)`GkN=BPAc*cL@n4Hm zU3M@2hB$Rg*A0&QgHyHfZI8bJPJwUhlMLUA*to>9T?bTXFZM#-cdoOSt-pSj-|}>OXN=Nl8*xg$leT^K&<B1ynHPKJWyyHbpx#Ku6D|K2 zPyTc8Bq^T%o8ifsNzwfML6kRmSM7cxiY-^EVm&g>a~MCEKYfYsFfh;QNZ~p7mX0lh zMQomfx}#MlzIerT_i$ZD{!+ICzdWKEapzA*GmF4~3gNAR9Oidq)&Z#M!*{1Rluay! zf+4^L$oLGxTs9S7CGdNer+Jn0IRe_Cw7Ktlz_sS{jb7}GV+_1aw(jpHMbo@6@sjR0 zK(Z;WsquPihSs!U@j$h=ipZXL5AC$k?==C4}#EJQmH&gT{>IZMvL9W20p>K*{o8 zKuF7Q0%B>aZRl>xc=ZofQ^AzZ;k~vMzNxP}$nKN6Xvl1_$1zmStKu){UL9jq7!F%j zxFtLof#4x4$YX`wpY2V@zu_odM!pn(KL%;%!oyGWYluj9n}})WebPh3CDFn%K(rKd zGWG};o2TZhJ&>$gfAsvkvSPy-!fnuoH4TE50Qs2V8$mB^IAgHbyp1io(l$=V(^O~|gRNhb}jJLHP05$TP+#bjC+<h7Wu8VzNMZ zJ>*xZmeT^@Wm7ZLz*^kP(>?HbQLMt$eYvRJh|ib`|2(<}hNQ2#g?I3z`fDYh@|8Y=f^ zR+Rm;qJq9>j6L$?^T3&)Xpat|rPk$n*r1>SaUs|d9?m+ur8pBsCvv{&!TUK6P zc+U674#+O`y1g=IMbY?srWdTB?Phq-I{7?wFfFRYqtPtLHab*fc2y^)LmcW zRppA1Pm}gnOKe`w-;N+?bpw?jcK7+cflJ+T=HX}i0$CEw+=#1uDw=D@9lNZmQV@SN z1@;-ZVeyc{2lFtbEDsv_0zx6onNU+Ha?A!?q9Pz?Vyyw;)QSYTM8#g87`1oOW|u&Z zk0RLRcs&tpu2@{)srA+%?vNLq+40W2?yN6VJID44Oz9nh6S4J0C^Kwm%!v#4!Z z59`!YuY-$qU8jZ*86g0rpthiwtLMG_!ksBuK& z@Yca31{IC6B>@MUoxrEUnp*5YL?Nw(*n@~=15Z+y;3cxfgD*#fss?0bRTSk<2-Q?J z2a6*s+cF02%F0~Xvbnr4Z$hY|p}rx|Fk%FfdcWJ}uMUR>UDn)@7bw)qYHBVYmz^~z zGpl@D*2R0TA2>cYkgxUPjIz=P>Vm<#2TIFmPZ-S5wAbz-9@k<-h@DO&3)e91IAavA z2qq7?6g-B;mzIHW$0-h2E%!QW7NfO2*5Xm7sv61}Pfm#QEkWF0Nn=SvBvg!z`prmF zoNvz~P4lnn5+GL4+I6_)stckk{@(YPt0#UK8`j&n;~S!I=?xNhME&{rY(4txb0AQQ zZXbr3E~SOjP5lQ8z%n*z}GJ5%@3eA?Job>868=i~KSyro?|1tJ;eEOIuf>dC$dD#daO!NFDxzfcuK3VpuWOW z;wg^gRznhIlbc!j*C&|Iw#DF`JplL?7Jz#JZVz~Wq{2Ea*mQ}%cNo7HzSbtQqM5ee z%i}JSSgdQXA0L9ZbtC%Tt=r>wr#QWQK3?4jN+!R(V?DNI$3E`FDD-wGjY1!HVl;Zb z6Gm=Fi6f5{eW*0v;+}7zQ7NvhOiQb*tArCits<=)qr$E#GFsF0Vq8^ylYsnr!ZS6q zhXHatQN0Wi*_T^7XC(0^@}pl(bOC=sVyxS?eXZ%{9TWz&-?Wd9G%BjnS;7_tB7^KSkho^#m$lUjGQO7G_XvF9h-|5FMZ(*;pK zt&=V`GZFc58u8%*djg_}vbggnmDAJyY%~o;>unbf>09ypy37iuE@ZE=GOxF+x~w`> z=`Hn^5O;#_20}1GQS2B_(IUOiF1jd8#M`sDDVf)>00Ke(&2I4o}ZvdO=`3A_d7;TDwO0=rS zn#5fSii#|&C{z?GFSQD-0)i@}GYap4FRV{^9@xG6<{n^q3zV_mAQ|T)kiEjfmT{Pm z^e_hum;2eTW#b(Awe0$16rvd8V?ur{8k4h9$As3Ib%$85AnrfJdWRPxYWs%QCFF!! z)C0uG>C_v#Xab=qTB?ov-+MdTt{ z_p4PJ)5f8@$mp~tY8$x4C&#o6K8W=V-Z05krkV!M4 zNJ;Zu)O>qQ^qR$sYiEzI?uZstmz{t9Zh6t7$w!PU^)B)j24^pdZAbfP469U-?cFWn zI(xWs5V%916LQLJs8b8gE^c9nj*h#8KB>S1%pc;kBRp5o_Q*BpDLO_q zA%5C{qCHeZC}=1I;kqR>xS>v9Pn~>hTg0KDybAzahwy0_os4=5+XcQL0WUyKH%)fe z@MW{7M03LJ&6DQVMCQ#JQdU})bLpj*&1ei{Hw~_<$;hZ{dc|{0M)R;4C8cSlqlf)` zTt|i5T~yv4Q|lJXf$62izbY;Drup*rvu!0Vh4tyUi&0e25wfJ-n7_L7H z-lI%>*PEe*LQiTTphfD?U?J0BcE%U|09~>*`+W9iS}F3$?`L_CX#z1&h$f(~p4#$Y z>WwS{e*KL^eW^G0^NqyU+qyQ@YO}+ZYc=7jSmFoxnK$5r)_SKi)1YMHwh3v`0CB6bm z!%;wHV0~ho}QVm zS-NN67>8M4=ow}QVL%XM6$H)0CfaO5Cay7pN6-8NzUSOqx2mg`NyO**e}ceNox1m&cRTO?R(~Ps1_L20*SFIt+Ra z4w*?$N+}B`39<$(PSMH-&B95_;zL{Yhf>ORo3uBF!-^=Wp8vuIJkYOc!hk|YAHAHC|;m(Ky+(4k5Y6e0ML!%91~y{MBpK%HbTFCd%?Wn}Sg zfSqpW!>&7P1KHAy|E_~uW<05ESBHN_d$#+JRN5n~Ls5`Qlbgw< zj4n2H_S@4lbN~HSdoIFfy!Vzl+s2%tpV7W8Cs0iir_2SqWY82FRv-&mPDQp@up`;I zSVWT05|g*XkwWgGMUg_x!O%(fDGLmJ6@ zng#;p`XGXW7_C5Ed;;0^Gx(o&-!)@pRJ;Qh{0xD86{ssOG{TZLfSZ8Zg-X&D97Gv0yRKcuPJXy~mqkC0QEw=f{sQ7V9A&YoR6ET|$|e9s_XAHdXn^lu<6JqM%MJ_Uc4ICTNjB7-Rx}0H zxbcD5vmJ@|o-+Knc149a0^apo``3g7fER zw=;ca6zmH0vQCA)hM81f$DhpW$5f~(cuonQ|D#5>zIe_W^;7u7ie4c(^{0}~Js1W7 z-m4slis^O2Al7rD&kyVLn1$EuZ3+*NAke#=p#>`BfDL>QqhV_>XsBI#M~!v1W_kz z(JCxy>gWZp0Zqoz$TzSSP`zXSR>_w|%*OgI__7hvT(1ws=BnaHoJx=DQL+-Sg(SK| zltf3fu}Xe;!D-1+`i{(ZvZxxBhJ2XEOUc<+M($cMIa88-ICie=B^FN)$krRc(W}^Z zQX^Yi;9^3(6;IR7zIZmLe4TL-P`XMTreiZH>+|nmkfO;+z}g7-qt=%@(Pk}GFfYx_ z95=yw)>Q*%RlEx@@JZ>017iz(V9~)36Vk)W=x~mzCl~a`R-umfu99tO$1V4PDt<;& zq6$AVHR%mq4q;rB;Ofd6U07AGA>OX6(Z!W{4Gl2Di&%xIeF+IIn!Ocvgu(-0chl^x zYOr+)#&6co$n5{>Y&GzZ3y4>B<36YPTj^3Os&lC?HCw|(iNrq$`*OuEV+R$#=p!D& z1wQkx_k8HlXFjMsJG)+O{N^{x%)7`f>^Gk0Q+i6Bb)U$Nrh}04@H5GBUrN~qiHoOG zxv%kt4^p+S@fKO@%lqd0$fYDpEk;!_sD1H06A`QSfBs$>wfFkn#xM|f8*noBZlfK5 zqv>wjXt{)W8to{>7+57|g~6L&ge48P_;G&Qe1U;$+HI~{UNJjX3z z$uq9#Ec!m^EW*P@oumy2n4UnID0cEJ##RwB-f<_^37=Xc_Tf=drDWCID$`>kVVh}z2!VRBV#N&pR+mMOMb*O3@y{~FiBzITOE-LA1!V_KCjt*h$7O^vQWXp*fK=T_ z4W(sSb2EOnkJD8}k^;0T`5gpXI7feFxG@U$PpVXmGghf`*`$t|{u7$%t?Q?}-pQ$n z_3;^JJYCFs^na-@jZbFtg-mkg0Cd$Iskqx6PnADb`7i86oIwlW3}H;Ego zh5*5arIySy3GqjKBb~AGi~XN4DbV#4(su;zBn3L1AqAQ?#`^QlM8fMyB+E|{jR2O= z)hS1{NqPQhbhF_uIHZ>tIv^0Odkh5-X&|?hVh;7JClKx|IGLyo)b4>f(>{ zip(M&0A9&jt-FAo4Q`>VvyYVmn&{v?S2I=}V7AMuKm)lqIR`j8Y>0oFlnV^lEPkfN zj{|qGX{*G)b+>vN9383N>9Zdgp0iUk9?72gw&-9DdxAaJgv=zsYNX3j?km-Df<@53 zlKSimY*rTGR;ss%j$T;=T-94d_^isM<;%R*jzM=mB62VU9R(5^L7*qIn6s`k66B$I&_@ zNP@OhwbM^S=FVkMzQ-W%;K!!DW|fmAe}v)@s_?|=l`X_#I!b|P2zcsLORcF$<-nF1 zz|afB!Qq+?oSD100v`H<>n?>l#clu|yGA3YLmaw+(m!e*yH*F$5Ay`J ze84<`?ba&9YZsfxu+?F0z>0ELT7mzxvP?0}W4nmwc^mWCG8sk5EX(vG5R+C?t7#q^ znkvW~Vm<3JN+Fn~CR_H7rgJ@w4U1-3+T5N(HaBo@-Rw#cYePOMY&w-p4a!B^PX89? z!slM4S6QumQ&{^bT9aK=rHN@s4)T>(MzINzRlSub7Uj+ zg-VXpB}+q_o;Gz(NMqjGZsIMl|xLYoBsdU`I`1yYwcSeF#r5s?1B2c}@ zlryzNv#{s75{KP1E-=o|SV#Epne)XdT2(koHG&2#kdm{J>XfKhvF z>c}~Iwaf4Vw8yKO$XC5&(T9-ya~05}do`xFV$h!5VO9-z-d;^vGL77m)AqP_lauLp zCwlF=l2Cm~wfDzUt?ny7FRL?9r=k9OYsgno6>5-(@j*0m?`6F-17#ZI%O%?1&G!-+ zfl_~vvX5|)QN`zGoSN60ak`s)!g4+1)ObGplk#)oDgE9fy@mWI#7BQ4F1#i2kx)-e zOU=4T6+3}e=!!Ef{hx6skUBqqnkM|!pmssM@N0)egX`?lIP}q5FyZgZHOO5=|1k7H z@`dM>VdY}s4NvQ?0RT{r`4hn~qm%-sB+vz)57$~~B4LRvTVn-Ae-#Q=bTcRnAy}Tb z<|b-p0iFvi{)8Ot7cC7Cl#h2VU=TWShIRc8rJv>i_V#oj>8vsbutw`IqMdQEzu1@0 zo`cpeh5<&Rl!WDo4$iK~pv0=NjZ3UjeXR92w#LF!sI6KRE{=D-qbu;fpe(LR_3On| zjL__$uJ)_%cBG1*+UiNf|N6H!lME%k5_-SjD?X!T3(i7XINczc4~Css!Hk2b>kzKRZ7m(cZo`z8Z_tgMp;fSS5|ppI`Tz^6Cp=1i8>@mUcB7s!0h-s{fn?7!b#v|ze7A-(!nh&kEP-VojZ!UP zN2r*Ufq;m)9-kU}vfR&VC1g3(Bo*LfzsrDo#Rg(9IQ352f&kYnq&t2$MB8H+MD{JDS^h zntZ-0)lnGQ z17!yXMzn&I9qDs5ANxuUfAx}1ay7CuzrzY>0BeGMQ{XAMCjWqubs_RQtw?Afa7T+Fc6J%9W%hJ~A9 zQPrIoj#V=}`b8C1rwJtFPBjBXQ!;1!CH(~znc0Q1$SMjn2lB*SjV)EtqIm^%bq)|= z3M^Iai2bI*}LNE^?31HAMAYfi+^5PQVeuWSOmc>BNrJ0KYpLjIKJUW5S>(hgn!#IRF zjMRC#4ZY1U!OsdU!8C^vbPo8dfWMr>h=b~L7+Do!P8L}l6AHYrU|*i3*2HrdC5tv_ zXh4MYoT`y(1wCtWUJh4(zzp12JB@ME$-3;WF4H+$tscp!`s?yP-zz%bOIoB{K$^a@ zAT64cOzPslmKKd4ER`0GA1pwNphTGwuCqwpz0}eoa#H3@j9eluJ}OdHMi-++?tQW- zEt1Ubm-j`#vZJ(h$v4KF!I6s6-`CrNdq>*W*IORKF9(Lb|Hu*A%zT zr`yv#IgV}86eI3phD(qp77~9ULv~=4&x{GX_-}E1YH0?=GQWKEiZ@@@nN$lCH{U)o zGSM7s$hB`780u(WzA+M+(Z-gKG&D|byf)tNvRTKnZ`!f;w8xX#-qP&6xH&!D7IV3? zv)|(Lxp7FU(+VoP=hkVp=+`?)7wZn6`mFhi#-rhC;^fHM0hGV&55kXd-26HZ+)vbll2$+GU#^VN+pto*#mdqec+{R zw!wA*3~$=YZ?Ko^5zyUOnoPl%PD8$8FIJ27HY7ngDb-lP#5@}6LG%5vE0@cSdUo#o zj$I)V+?J$m(f?SA@{n}$lF-&F+oMG2$`-xLS`r!BB5(4oZ*`^HX`2q4%h`r)9@@KU z?}HEG9~(MSUPOrTBJ}VB+@9yyQk#NaGYQN{PNE*4c1vPky_v8?(WR>GQu#flW@0)Q z)QUE1D+94vh!yUXqKDcld#&tq3TYK>bHS;-_<`By>VlMET44P4Df>(3V;HKv%?YhC zf*LYvf(pgb>2Shd3)azWCp~VoA9NffHy>b&15g(_TvgI0IbUp3^e^4hC^-f6_1@m;!PK&)lIM@o~p*0Oufh|_H@%bLN&OS)b1&R- zuRh%-D-$RcC!?rTMrKqLQqCI71;-(GrI9hEwO6mCIb`)#(&?*L?ww~PshS9Z*Lyql zM8=KaJVen~o_SXwqe;2VST0{)yO3?k7M@v}_N71q@mM6Fm;cp?fQy-aRbc+9Im-QR zGt5oF>^jh|f-~hk{h;I~-3gM{sHSfTalMkw0!eDKL`W|<*fJVd6n8b8aQ8QPMTK`^X zM$Re#Qa=Ce3w42Kfq#x@RKy7r%FNR(l1k~YZFF7fDW@jF!vJG*ukEU+MJLI#0R2q`$3gwUs7Z#B^Om8I#m8k&?39p!T zi@(1Q63a;a?Byx0_BEK|`Uc7{GRrZZltRo^C=b}KA+GyW+!P-#Mlzb4-Fb5Nx1|XBQe7fN6aW7HD0)7c z)?;vWMBz7Nob7=ssutn2YP|9NgL_-hF2&56lslh}qUfJAeL8Ovlp`Ck8`NeyghpSw zbC%2jQ*=!(!nZ`Wrg6_kbZwp$IA;U2uqJDac^9dgdS~@ICww;kGoSeD+no5=kuCnRMA2yj~OM6 zmc^k0RY-8N^Ex~gFwLEPxWC23S2L5w?AeaBwTx9xbhpbA81R$Clju=iQr`CTY88dV z5>o||5Zss??Iba49{LN9p@saQ8YE-3N~v@Hg*4Ozt6hiWOq2bkw46j+>YiA&a(ubo(zgjuw8Ww2^lq`P>{b-u(t;&rH@qHB>15%O5b5Wo&XxeU1u z9iW8CqvVz+KmmMQWs2-!8e@q8v@{*|k1siX-^cGqbq7-NWqlMX%q%EcB3-T2st=&0 z=im|Kq(`h|o-wlz95{6E(evN_?)wj2M2~!*I?ex2s2j?EgUNs+|YlkLlKp^JC_DUTitn4w(iKSvf8Vg;~GAOi58NEWm zAXMs^NHjCH@>T7aSgJaqw4$hG96K}#meOuo_cKh&|^=e&)B0lQJ^SB}jPcZWt!l9@vB|aOq5Ur@$FMj4dmmPVi{OkLz>i5eZ zR?nZ^%KSjjV1C$(XA(aw!@q$8`MDjD%zK3%@5W`Ocg2DsM}&fK$yTj%G%Qr%OD21{_;Q6KmFxz%Uidrqtn~VU!*3t zJS$cGF7{?Y_2d)PGhA6stFQMny~gTs*M zs{6gf9hEujabCIHHCK?fnMaJ9K<=9*z~cl z^01Y4IPE;^=(Lq}IBwl_rK(`=+!wOAz-jRpi;IwGuvt0tDG|N7p>k}*X-o(I|2uv$ zx7NV#CuU~ut(^0!a&rZ}px%De(dNDg%i}=Zuo7HOjiyU^d$qMSu zb^L@{WaCG_Tbaps`5W3Y=~yH&*yJ1Vk2Z~{{VP39u6)?PBIfI|O$CDC@P_?^$xOiS zw_3Lq&KoZx<*Tc&n!3*JtHGcP5xMP!*{JtXR@WakmxA7ZN+?B+LgN4xvH}z zVsohb(?#csc7GJ_hBDF=M!3h~^LpBv!`bBCxX+{hqq`-Zj5oPl%`M4zi@SWi*PRQu zHaqQ(Xd>L^hY++1JV2g!mGhLN%C*X8N^bPg@ieK>bfFT*z!$5@`=lzDE2{^heyqZyOWx+7j%rMs{GTfg65>OOXC z_iozmv1^ZAbNTCcAKiWA!UOBpj4vM@>F(-m_nqh8CCfa57zaFWna694`Cph_XG6bV zGBBKPum0{eC5Q?=*p;oyMaq@R<)ur>kB5Gs?jW#j!R>`hnlsX^E_80Q+D>3fEwo{$ z+kOHXw#V!AoWT5Di^aQ_#_(FEeX7N4*)cu6ZJX0EedY8OCy#HtXxqW_U$<&}cwkw7 zA)iY-wmP@qif9D#ATg^4E{tHN1zAO}8N*)vM!+>S8x37l21k zmX4u!o~r>k5t;^H&ged9by=(@FhvO}v%`gmq62e89d01cqiLSK_?JgR*F4Rm?YQv5 z&6{o33opO$vSUX!U$FVW?p-UE4dU{G=jy^D)m8n(J26%WD!4HR^F;_Dp zgP=MZk5NX&K`ZP7CC~jua;o09#9{7RLTPW4=#28$AN$gGp7`Rr-jm#E#PPlFmS0g{ zdJvCRr~`=Ji>tOLP?oHsJlP64N&q+a1kyj1J%JpeQO=x3T^5SDTOQ;dx1Ffw{HSmj z`}JnGNirGH+Ylc((EZklk$m`Sv+Qe_hmtJPC*UXpv=2H_@1*8=pfcv}xe!;&QJMU5 z1^N1#!*VmuV{uZph1<=e?mJDbbFpJAHw|Mhy5N{?>FSEbx>k0L4-LdRW5sMlcFy%X z5F)2|KH;mnbFLMV2Hls;iS5}rqj5wAM`oxioKM_v!;Jdkyo2Xt=UsH35uJAzA4Es2 zrI5enD}ZZJ!6cAoH_qSUL1zJNGe+dm06jnf5ncis3f&24)D1M}+FI;rhe|^2fjI%i zTmPJOj*b2#GA~7(>IrlE;3xDf6>*HJR>JC?+)fx23|g>$oATy|8zk0`-^^1MsD@$&d$|4R&U=h*}1B72RfSiNct6A}A*2*6bw9jFiBc{p0F*U!-`ylSXWdrMW5 z$1349hw|#S(IhzlXY6$h*B)h=az@AjuPz6CAh&pl{wQUDrr!r0fGGHQFF{c8shaPY zH5ZFMj)2qIoB^kC z<>e*AX<$A$HApz|U9d&*`x_4hAUE3^^`0h!^MY-GpO(z@D}k-}@nC=BQHh|cU*q1z zsHEQB-tpcQqa&bUmJ(H<51upVtDDU&f&`;~-=es9_4`!~>X>$|-;lIBsC;nF9kvV} zJkn^4J505RkEBkMHQiyg)ax@YuRehX&KxDqZxCPU_m)BL`Y%Alg9H8bAbGAttarRy z1cIX1-eTZ0I`OeAHE8)AHIz&jjEUpvj}lrrDMPF8Ybil}2Dj%c;HqB9VpCs-TID*V zHjkz^zr38I1(_~sh{r|wo0{%b;1R_H!21O}46V4iRx55cYsDE>iT75k#L$#A`$3PP z5_c`43OgK?)fgk&g?VMEHtIdRkXFc-^kNqVX}fFYza%hQqW-lY?gec*cq^*3D6Puv z0xEJa2F4zOM(_t=Cm0lxWsQF?Sqe^7b0Wu$6cd-wdEv$t7DCPdhXczT^_QV;h;j-I zRmD?Z2ni_6753ubwE~{c%OV}J12F;pd>zWymvp|Ky61C?^RY#Pd}mPUCUtxZtZaGQ#C@wtFku=NR#M8{H5}BcqHGQHBJE1mB0i8(1zkm@U0F>nPTim^5;$1+5}!b%kmXo+ zEodgymaITwL7J&2TjlBN$WuPLAwi|gFzDw^Rn#LSsN@cl{G`?%P?*Hl;pc{?E+hq2 zyR+?_(vNChgIsI-LAeA85C)E23*orhJe23Ex*_C=g#C(q(7y)$dX>k;NrKdp4P%0A zU8)sHkbn0a9Sup84+toqH+r8waCalr3``VqK*PQX9`T^w}Uk-h?3AF!DA!Xj4T z8Hr<@#KNnwjDF&QhuGsOdSL!h!bGpq)7g>B3ZaPN1S0WDo;exBa~uS+VY`ufu5A#x z|4+=Yc_K~cI%O5*YpOtHDzac&H}Kx7e7Xwr^T|c(PN!i!Iro8eI`#iF5%E6s7t?cm zC_S%(e*upVqQg$7;~Mlf*$zm`nE(8{1OH;UV^!_C`Kp zeRtr0V}D*$T*Q<|k)`V7dNd03=8ZtFEK8u_qIR3pejLu)HQb{ypgQRVc_0pU%R>o*U)*6k4hmnxB^+yM6jvJL>_DOdFjTvc zlIgJqEZxx15NKcw;TSF#d(_2j2xHrSC(@QSm^Uoj{fo_lJgpK}AHi+zP#REOcjD=Q z#1!z$7@XrJ=4|3LfWF#rbA-$m)xE6p3^ zu>d*%A-9lYO>(OV^)shSVHzce8d#OOCRjH6AV<_qf=&~_9@Kc70`dgiS*%A`kRVpY z(hMCiY#OQyYu8Aj7HUQh?&f%N950F$0)ZIXABc?WkztZ%$Mgc$92CB&cs>pxZ!sKV`2R+q+mqnZO* z))axV*-_Gpf;@!T9G2sxN3G%h+H19~Jw3@}PhU@8vOC$;9tgB7YjQ)#h3aQU3&<+6 zz%|1uIMKmSyW=yXn9bT5_99{(jx@QPV=o9sHYz7ZsA#opOmc^Rym!AC=3a z@uh~-*5%L+#i}_ql8f`LukdLik!VejqnKOYGM{qnh455qeH*LD#{0P8ZK2WJ@V41Z zepT&mjZ1>>PfH$j*npE>E-0>pZgLkU8@u7Zv0Ghs^n(H_DG79q$S;%|rE!HYAz?sJ zPGHS%IOb=ZChjm96`{o~)X!L#Z=|Fh~UAOA|AaiKzzYc}d^E%!@2NURbVaaLG^ZDZ){clQxK4*;y){NJ zW+O522mbF#)w^bUFyQX&8=biLit^9CzakXyM50|=&YNg%jzuT-sxLJJ1G!Y7P;gsa zL&fCU)oQ!Pldv~7*zHGN@Ok6Ggv)g`_Nr13KJ^vk&b86R6!d3M6Cs3h5G#b3fFR(b z0V_B!`r0T6S8P?4cylxyz`zZ))#eIUv~;81fLo~`g-tNM8tBQSdtzPbmgvq*XzX$R;mYg@9VDH5<|Z5d3-aLr9H5p@wY`&{6m57%kWKH>{*fjN7hYny_Z`tZ}WKu}5 z3p)xhV^SN!ucVoT5Y$4Q|M~}8lD%D*}NN$_x z)nTS5i66>CtHBSeVVsP%D1M-eN&M6%nAOA2{}Kw?ZS&%XYdPn|&+nTTYLj{DZTV+2 zGr4)Ui|NhtZWaWfu?*b<8R~;?aZWB!(gmSV~V z{+05P+nA=)qXWpcrS44-jDbm2S-UfnDY)I`|0-L6~Bb< z+XmULFEuaNUkZhS=@e3hmNFGreV3Ex;?{NZ;3sLm``sdMjY{T3G{lA45mFS=A);!7%L0y=wfz&BzJe2!v z(sMv+WCWu^7{Ac999}1@EXbHO=B$zOYEo$?)hEjT`s%A{dwGM@VI=RVWxh8Xl*8if zq(F+N!+mGBvi2e=9JImCr?nVWTgn>i^xf*~E2~gNrmI*^NOvB_V%n41iaYepm5q_d zfYmEJn&krT%?o4U<02m%Lv9Hs$OlI*5)$-JBH_$|q;ldy{gQM#T?gTKU+W^5JJEJG z{fJr^Ea^9;&f4Y1vE-{NFM#KuNl}`>sf+pzOsD>V*>UiXrqdgKgSjxU!v?>!ietH2 zRB)^fEt_rjW2QS64LJ_NQ@9pms7pCB<67a61+e4~D$ArZj8uHcAt=K-?^bl;+Xb^; zXWB3`sN8G?Ut+IxW$NB1=;hL9VZ6Gc4^%dRy;c@lkgK=IUfIXNd!>8TVFK}AiaT`N zyjL1&DEG>;5VR%y8zJh9PJ}`ZBk9&yn6B7erLSCoJW77U#31(uZB@EAOnbeZ{Ts8U zt+IP#E)7^<6}|R6N?SC8@@q3QcboS1=vBMK&MNr+L+uM57Zcdt0+-7t%^RzT4nua3 zzvT}CGwjQ}w|mLmve~pbcw2OQLf)U9VtF4|-dJ)s!57iYosI+z7O-VO_zq~!4rtC5 ztBMj!(PKhci!Ksi6_L{l+FHc4txj~!C1-p~2y9S7sMsyKQAb^&J!Oi_VDVdosOe$7{t)yw90l<12 zniAo6nLx0R?RMZzMw|#`SVjgZ3a{7#rLI;1^x0}%-O)K53h(JSvToO{S6`U#i1ysy zGQ9PLOW%mLMDBbh+jrMx#c&{cNy6%E9DVCP+n)X9vvf)^8=wn!sux|?9xeqFuv5UUg!k%uY{B(NMB{cm{XWh; z=_sUHyS6OL_o(f(__b1PcpbUKQJ;vU=z!joK6&NKhXUKY2-iTTeY z`sXZ&csftNq|tU|YiZL0R0^fV?l?@EjEPvOl^_!-nxAMlihf%2 z5^nDOAYBvfT9kHWOKBszaB5-9k4vG!Ssr)+r|HTe9H~~jP!6fpKG1>IM$=TazurOJ z*xIcHMu&()s8uB)^P@slW@hF;h4v_n$px`MvVweaVWgBQ~8ku_Mzq}KFt5^Js`qK1t zIdS~>-yJ?o_~Wy)jTcl78uMsLIHS*wu7g=YepUzfoLa+^)7Da|e*Fa^*#HX+4Y5Y+ zG6Cq{1Rq^0-~?qJ8kYep#*6Z8z{;X@2uOJVLePy29nhb2Lx2BM7#2>3JV1{k3G(ve zTL2dDR=&f}5c5|z(a*P_!lF@gi{(>tIos{3mu(vdbwwv2nCm3)W{zxDS5L6*OH}X- zk${yWuRL2ldl_t%0iKP`ld)mlV?)g>=Npx4gnbe>WID3r*gjz~F6=h3g%(|k*I7|- z1i6i7--;+@WAy~`S|RQLu+B3J>CM=!VN(zUwX?s$o(oJLZcH3C>*!UZ!kL@-;;#Bw z_XgT~1pW~&w*3b@Y) zowtFN=S%QP850ydpnT`|fp;jvcm)v@9qB5bO^)Y-h<-nGMIl5a9zl`a!Z4F`HF@@T z+LcV>LFLMln_~lrYEYz@h8u=3w_7MU>LElI1osHq!ccadqeuY~eGVCo{EgtQs&8Py zqH5Y2v<5=xc`6bO0$F41BTX{5GY3Y-OREaWnXbK%cIAW(P3#hBbzAv!>o&KM+_3^C zEpmSO|Ag0|1k&_!D=E-x02DF3oONd9=YUBBw~{xAVqlf#W2k!c+&rgz4Qa>F#MtDA z^2~K~hmdTgYCFXM^N148H(McI(C!gB;P6m8iiRpW@HNZO=6j~cP<7kU)ey@MIbcc;?bcOz#qYZz$1Z4Lo757y8(-CGk+#v z=U058EW=Lr%;stL_UsOWKIYH{z56MaIT7VZ$xlLuGBKd8y_%AVmgx@N z&-~|7hMz`JpW(;w0dinH$So1==0A&;zLc}`49`C2D?`sGG%Eavd{nOP15Dw6fUc;& z!>3GDy(LU}b5`5onwObBuDp{3BR8mFWkr82X@kbA|AMO*_1DvU1kB#S8Sj&4tXsRd ziBCy4t9ZP-wssL$p~#HTFpRrP-1XW;kW5Ts_=tH_ z)j!(*G_G6=N3zH|ot#13^%x#~%>klA!i)NSmg|^{C!PxLo9+oE4HTuU7lFxG;$i#* zs752IkxMGy(*32Iom_89uX`N#JH}(H7fyhwfN1AIQzunL$N7Iln_dyDn(T;QQy5CKnqy}W98wGZf&%dQ8*lu=AKBh^>04~K0bid~r@%{_%g@mN^>-e`J6*~M z&7rTn(kEVN$W;Eb2GU^$fVjZ>goYV{6wO-jst^79AK`Djqas_)#p}p_?AgxE@~1atQ#>LU4OaS2M)Mb?0{LI?jBwQ z&H0p$QeJMt{Ps=!_AOTGlSi*$p#jhAp#F;MLGmr~4KIFRxA~NnGg9BBT_q$4Yl`26 z@V$ObMG2hj@y30?sd4fut^UFWADPgYxqljYv>hT7PSlp`d-;^`XFs7Im}<&R8^V4d zqXk}l%7$vp>aw^7!RC)EcxDleT?l(pe?9S~MECavV;bO=^S-CfZsqp}ls%&M9-$dQ{*ZUvgea)yIZSRRTjIh>3)|P?j`3q2-OLpmau1IICWh2&X31 z@^6R;AAJhV*>|YtgV0|pe?#pl=bpvy4O%4KC#jq&g-Q2`M>T4;T%!Q#=`BVo644+f zbK31}an}9beo%fdI}m1anGD5_>JQu2q4^o948{FL=Ri8v+3rpFKOiw%tq>Vd=CjaD z$qV6EOrzFE&eRqGH*yk)ncC~st(lCXWV$k)?RhN3Ol_p#SlMA#H#y9Xu1F4hmO{?i z40#n*`-=2HQ>-bMY}%RYZ0%cF=o}7)nxahu>9KV;<9}|qEfx;0YOfus*S;zkj@jH7 zOnq$Y){j91h`E3lvK+`Gw{4^}h*N-1R0{scARUEe#mGaXi4 zExfQYmV0^M=+Hp*SZ)9UjZX)8vce#&9PL~n;x^maYZe2IZiFutKovaOl@91?$YB(w zI@nJn3Bz2LQF_W@v?43WYF%&LS}Zyo#ew3o-fl;Sqa9PMIjKM@#OH$Ye;3;Fp2bck z9HUD_JM>!SH|Yx~BKc=UX%wi`9RUWqE0a-yZk{qc*okV?%9LSN^MxDWT=4c7y9*94 zb}I5E%zkERr>fwJ=9T`pd6IB+E+=^eUW345=QszJG;kw&aQ}~SBfDFl15f?eAu(Kb z`J$(~g~rM*4LcQ?NwL8H34Wk;o(ls#%OSwUjzT@Jmv|6KXSl0exWt>4!BT%L3I!Jp zXP^~`I6~E>6$~m$usPV|^WYaw-1w2MD6XV*3RhB^M!(|UG5Vz4f|NToqDIO;+1%E3 zv*kC=zi%CNfAWUUeeQ-&sx$7bk9%ALQ;!Gz<==R5+vxO8_y4dmq3kSetMPu&BBX>E zw|+&6SF!cTNH{z)F|vAmEIb?@%4g`Jca!m4$KP=-kpDy-zexLHh%oC2vmad|N}vnD zjY2);foula2L5Jr5+)nfugaw5{Dxe%5RJ7sU4zZbicenu zNe)6EP?uTk_GmcLI=w#Vanp zizE}C4+>h)-VXlEpzdHVkAX)-oHC(#Z_tl{ahPEegopxJk)MBsX$9_ZV*&C5v&gW@ zc4xaf3V38XIYF7pDMO$lhDLu^wF>3yFCC=C0o8t^-q#Zr%DQnVyUTcz!{OP0IPGYs1cU*Bzq( zXQ3P{NhXGajQle+MGQ%hqWJBY{0ik{fyP**u_@4m>dh1*0eOOq0_r~vS_u)UBV{u( zsScDjrY6=r`sZ(3IrG2wbPt`cz7!oD;e6<>K9c<{RC@4P*nIeo}s$!u!v13T| zlDZ(EESz6yV-=q1bXc6I(~_&@n*F6--+YinxbqhKtg$w;2>I1dS%`R+OgBJ;V< zk?2gYqjlOLyqKvc4Vr^aOVlHS;&X`z!cq`X?OKDDLV?CayrsE9Pn1eaNx*gKi9K+0 zPSC|h_?#1zzrg-Xn$7rsz}pMYlchorYS~A=NbDH}1~R0N-^qEh5aH29r%hJRlPwMP zXR^Duz3%3l#%?;(Iv8(m$(Ei?#KP;cZJjg+FqR00lb9#FYLw>5I%1)w;MJ=#!&UQS z{}1y;KgIOt&XXmwXSX^k^D$7ClPP5aiar)r#Pm&rTR|*5VC`Ja!s(uv+`7<#*o<84 zP#Vw3r8Cj2OyrIbm&~1&$xL7xkxIGE)O66su3~fUhg zJ04e8EOtP`2+v0)nj2T9OBZG^M-U+&J9@5J{kWCM09IAEVy99I8cTZ&S{?;fa1&yJ zpW;4Jbyy9V8C>jwCyy&DMux*Y-WXLEUZf>fRb3R8h*CM4?n{;Gi@itcqxSH@>iP>B zf?AhoCnv0W2?j(k^IQeTWC72`F@#~&=+VV-T$3NP#M81%=i|aE?pX}ST%oZ99Mc*5 zrCjN!oS}K=jvC^zTEG}NL)Ak^&sE6Cp`#1&r9O1DF5aZD$w5>Kyjgz3vU0z2cPY9y z0%~0sMS5Nzxi5QFjV5q!d2$)9<-A+9Qh?1$g~W6;qS8$$dM4@V^LQ;b+Ya*gWbrx0 z4AJ7Q@{5{P`%A4oJ&Mw^zh~c$tyAmQOsp6k=r;tf-+hjPH+3$Afr+gP0Z;wtm3L1V zQhddY=PJb)BPA7{Sll|$&m78-&=Ud_J!ID}3p>_t8lVD^vjs&ftnrv~Txc=^LLHy~ zu==CNs7(_3fv^nHpWC2p6VHvKryu~2;+JDof+H0VC{tV$&gW2hZO+i6bBGsZzT{lz@jc@AVs>jdhrz8Bzi0QfOh~P}KdXuqZdH%i{hHSwBC_~!+C+@ki7xEkv`_Eg2qy0 z049Jt*bAiQn$RZGRpX^Le2C`FKv-oRQ-EB7`Zn}q$vQJcr3h`xq)g63)03y`;ph=| zIB%(U65(WC;3Q_eSYQpl7QDu8=LJylEZof9^>$CLk6szhO57QPc>6SGRDJ)Fb*8VGGJ zDk)}D2(YxKM3FPn`VyWT-96e?a)ec^m4m^aT(6nrgaCvH%# z7kr(ko1TXzLNSDA0Vm_3i8u;|CZc%4=|p)zywriPDB|Zf`^|NJU|zbv)Fvk;Zs?vW zO^lBX51HpBdf|ja*syNk*MTUa?%&i~f-EE))Zijx6YC50B~DLVfGBi&CLewurq|Zb zUnHMdl_S5N;LPJg6#mmqSF^fCe1^l}zHo0i*Ft`N7N7O}{0p$aqjmiHtLkw?wJ(1G zFn~AkKW#g7EW0vLrCp*i3#(evSxbM^pkxUr_tQ`xDJMxEB{}nUw5LImgg#0V&vgSB z`|w;Z@{sgVl7e9U#`Qql|t+A2TUve$hlY0EiOdMosf4zy9gRPF?cYb6Z@wz zPlBGbRd|n68Ty3XLLy3!MJ&vX{pEc;DA%o>63=0Q&%! zi1ah&5@Rp28QiwYZuagq?T2{+@DMz~)P~f1yAk_|R+MFt+9ix^Xb$)z*w$({F@#}& z({7|x(d(ftI&eg@w^RClhy}{G)`5=&lJ)n8AJT%2Eqn;{zFFTu6?!1oX|CpPL3_wR zF1gWo5`WQLO+n_IaY^GfS&!1=jZ|NR%LJe@CRM^41K$gvz(lX6;e1h{0CuSU@~i4+ z%fC>=<=#!|ngg54&r#|#=#t;dbm>zrsGhw^!U=8?+2N?-lBx8BkR2ls&81>tIN}g( zseH>bPDzXk0&!sSxxS&Ffl@CuZ;Hq@RoPf&UzD?X@!VONw70o~E17C}QYNPXCg`pe zt&Wh{h>1ZIfY84thYe+uRwZ#(c6goey5Cj3N%+{!+x&yV4|6CD`2DY$nRi$3?5c9O z0zM!kua2lG?LJhIWR-U1%}Ix(Ee<nz`2YHmVQmTF9!vQ3%R1YR8tEz9OSz9zUH&|7^FlXVJN z$M6V3;*m&pn3P)TpMyLD(&Q0h&Ti}I=sB-3dij>liJ|jcZG|znYar(HwOsScE9yh3 zp3ZEW*JbUs=6e1t+UO}-EDb~crY6tEwM5IP{==DvaOMb~dAKxymR87yz_1u(8X(eV zJFHt8H)va<&|GM<(QGu6jN>=qqSF^4Cy5x#N4w-sIThubHmdLRorOqmU!;&ov`2b- zBZXvZINX|ygj;WIPnIN@^Mu)VVSlV4 zmPh2-K`-Gv5E11}Q*MO}m`|xMl)rNL!0X4#zx~zA<0C`k=WBPIzArL9di;^o>CCdW z=wplrdN;m7XOULOmsO<|7^;YLB0H2ou?g9=E(?83cCEuXQ*Gf;d%mqB)sc*cTEnfq zDW^kpToS=nqaU4W%Jm4D_U1Tvtg|awn7H|N2s%eT=kw+}PM#j?&-dM~-4P!j-Wl(A z*{oyPqdV5Bw|e6(saVYYaQWvg$)Q~9;}CNMGxgWlw@qn=UTZ)KM3ckxX;hFn&PQ7e{RxDnZL zoZaF?sRA-;sLfl>x)sd{BaIQ(8N(@;Bi@B953(!M@G!Bf8Y$bbx*Pn(!G!vq>ATAp z+^v50$u*}Z9)0BD*&mmG`_Mzs1RmcxdkC)<=hG(eZjXXl(AW!wQA`x3Uj;cEfG6lz zb`B!)!e3MB%jL&mnSWV5SatxI51jtcX_{3{@SI?HV!Az^x>2+9OltA@9>7_AKBevA zeb}(*%h(4d%anSX5ouP{&G0ZF$-<`EPw>RF>=xuf*=*QKPdB<%G>6dOyUC5--jwPx z4EF*QM0l_P2lVtpIzOUvptl&5nqCdQ^Z=}Gha>x@)VhK8-qsr*zqGZOdN@^Vz4Y-L zTYK9F)}^j`{E}E}NABTVM{Deo$Gdgc&OP))P|)hPSR*wf5FqySp3v zCw9N_`b%%Vq9bv^AKm7TUeoAn%S^NdPkUq0!M1Snjj^$*lgTcJrDemZZQCmNe-LnY zDXpcrEKs2^x>CBn(zkzqk>(ysxuT?)+UZvywLCdAU zEfo`3tf#a$8#sTEX+eCxQKQ=n^6l&a?cXiipslqiw>}eY(42g|HG#{x&l36Fow&W6 z(4JjZ*X`V-3HIJevhuQAP6CFAmx=^u7~qSq<(5n>&D4~MdO25GIYTPIaZ}0n4$(nD zNjNerY;}d%oBr3S@{5l?pcWo29lb~U^5lxv=Ft_Cvjgh$U$+*-v!dx(Bdr zQrb&7^uPy6W1qOntS7KzfS8=-kR43RxEZ*Lt}g9Po#`G)UH`=0sbMD6CoYM!_ZI;F zvr4+}$&yRFsCLjB+qWbzbS9v745^=Q&_od%ag5uv>PEmi@F(( z2lVat7=KVV!8cCdqsq)81rZ@_8q%NXg7n79H~5Gs+B!|Dev#Tu6RN`scr=`&J1;6T z2Ut>p8zWRZyf5dBHVlk3tKT{E#JWp2IUVZtmaz{%{+8KmwfKR*`qC8k3wdD~#D4us zy40!{Z3zP9;w(sYQJMw5L4)9`(yV`e@4LTtkL6Eqddzw+5Yw-I6{Pxo=zjP=HpkD_ zP(=*chi6O7a6g6$W-2moFu)QP|0D(og8_a@4DhOI#Z%#b1wAi^9C$C}Kmxs8WW5Nb z_jNFyMZHK--I|0xp6pNdpH*ep*88qILcKZXtT`SZ?|JG=z#ey;B z{*GLJsQl8%_HgdB&EZHltI6K>LSOk`o6`;lB(Q|ZTL2S>5~r3u`XvWZtm1yB8-RrY zpumvOR-P%p3OEqPW`9IH4I0^k-}^xIouziV%ODIP_+*-Bmb}P7T7y3p@i#RzQ6?x~ z$>tPGXa~?%+9|(pO0`a(9vr>)*!gFav#U@jv-YrdN6VTOH+@%{meWuO@N>XI!}Bh|Swc!r zsS{%>aTF@B(7-IJii3bO50Rl=v``nJkP-}qb2c1?a=1u-kB(XfL6d_>sLkFo7%7Gl z?SB97KJWqSt$*^9)W!SV?l;(+@kCPnDwPe+{(9qDoPpoTGL$RCAwzf4dz4}9jpX?qr0sM)q5;V+p?=8`!O zT_73=L>g%zNHWN8lLfV}j=_AJ<_aRULYw?IPH^)tZ<7BuJyFGtc9%SMQgPqQ_x(a(~t!p4UM4 z4rZ)6&V!4H&W<$WnjL}%oQ_17X^-@VtmSR5{tZ9g*r~o-@%()n$q0|a=T~gEOVHB8 zL4-Bur+buTX9S(IzH>&kp81Y`{%aov%2;NQo#TQ23z-3k&>eXUXAy#!%cUVReBN-- z8}UW*X9b*GF3TK3lbBXB^4LB z&vaa>&(i=ymXU$Rrf6ex05N5p*vS`M<;|pw<#in~GIi#>{g>n2FKhd7GrfcCx*ggb zc>jv)VWG}mTRA??4;{ej#vT$%L3w*c3viGYV3AsY_=BMZr13L{f~;q-j|7s-4!*KX zJ8kgFvjIfYmulBQQ4_y6Dntw>O$qX z6~*EF3+dRuBK1LgfX!J$ix7wxn#8pR`mssUDSmXK<0i4Z^*# z5p6}mDSK|hy1E#l)*t#k+d_M#3_T>^sWJFynh*-cUQJe{(0@QQBBe*zIxR|b zCJ@dFTL;2-C@m*7V}E2+%4YAs_@vsi?bfUJ^^A9^-tsTsH+j>gC)``ERFi)jePhCv zD{MWze_!$%3SMDPWP>FEzc$)a5H?uA$b+SfLhNZ_`>Rc9&E^8ZD)_5x`TwY%?v=e$H{G!J==GBwsm|-yz~V~o+kbj%A?Jdv72or^^1t?Oh{O@W zVqH`DA!yE`h~8AVh=fMfsF8;R%sh35^{BIF&;ANO7_h)bR@UHb7VDJyAfGXWJoD@D z3@_bpf;QlUf=wZm5$zC}Y(h;K(Rp`3ODNkTIwRQ9Tp zV)E&U)mOhoZ98+}yFRY|*{wre9iy*0OXIh0o|wJ%KmSwR`?+{-RVU;r;}U%E6}&sC z&(>>*AlcH3n;HF(;F5rNZ>;`=Wjw(?g+MnhBbDm5EbMLqba9?(IH07-m#eo#+J2(H zU(o^Sj_NdQAR*>bX30sVH;qEkyB*{qJXL~f(4=4ePP#MHp4>wUmmr+Ir%s#zmAd-} zj}W;C^11BfDLCcC{rw#1hUE8gp$WsU4*MGY4nR3Jc)@KD=Q{1!F9MD5(7Y`0pxrii zDN&fd3aYR!?Mc?_(wzwv-}@-esj|vHCF!jJ)6Gy zTs|Kt|5$Aap=jC16o8b0jyJ|A^oAY z;98PCQ2rAfU(=9ExTN^={m+E61-2WJ6fqcDt>Hd$kU492ShDZ_sC7CuHaXNW-kkMC z5^d3Yo`b^j8#QzB@%ENej_}IWw=l*#NBJ% z4ATk)Rd$W)Rq^)`DC9b4@X-JwQeOhWTsH5714lu(Z``aInIFzhJ2I8Ajgdk1XIHPe zVtprQeRO!;>fW(4w4=S7)IYu9mgze-fZ8wEy=7Cd{1V)#_cr5g?z5*Xzrx;@DJx53 z#Sjf)+YE;&=ofw8P9P=0o#XeM?(2PxM~WP{Ei$*y#@0~Fqbg}kMt z{a>=)>rdlyem3*Zul<$i`R%<`zy7r;{?HJm+HsRul zsR|XbVEDJHIWP-!z6BPs0B)*IP-6!qlju2$mf_RjA`l;34%4Jo!!;!-vK=8YJ$|OI zC&{QDK_dE`pHZ4y(Rl8hb^KtoDyN3CZ~-81*UK*4a4sJrUR9uN$vT*fRBOqpA)Nyv z95YKJWD-#| zR$zd7Kh=2r3++%w3gG*xGuegDR0K)KOG2Ob%#nGR5TET z?0X;fR#euOCZG=?jRd!Z$E^{N$TZ~&XQC?n@Rdy$#X*IBwOx7cn9AL_%juL)2*N!BnqyaP`rRO zRx;cmkVz~HUoHm%4Ry;uH?pTppbn-`5Yv0x)gMu!WB)4Jyw_) zU?01a<|+sy9x?~sak>Rb=0H5vu7)$w0*lIAF3FXryL{u`~=u*L*A_Ekx zWRnubN6_x>*nQ`YoqsxWcxt`pD(__9`!9aovcj42FV1LF>Xpsgx83%h$GW>VG`D?g z-;r?nw_3~Wk8vacJK%?G5|5ID;w_`=xcX?qOGN@OW+*t3mTx2nk#_zS;$APoVs1{StR7uHn-np=ez=1JEqDllH) z7|$uWa96gFA*YA6ozG6qICZ@Ny(zNM80RAlkc=ISXy{lGj*Sd!+Uug(KR$5aqKh7Q z{RKN$Oq_SPsP=Bo?LYMAZ&*2UTi0N6&CZS5!Rd$IdGMl*J4bJR{qfQo&$bIMfBm=a z+1~tm^_$o2UfwNqpXIox$d}x$Tw03J9INgW(uaw_yrc+0SlJ{YwBerN6X3={eKJ|R z#i|RZgt>>}j+wiVvZY<A> z(}HlDgBH}z?c_S2xQDd#@*WZULUdQV5wzu0lBE_s5l9E00dYn7YW&wp2pGj~RZx*v!B-$02!%2s!WT%N@`>p6xXuyg;!B-mjr#YgWfyv4 z@FjGnFI*0n{A|$shNJ49swVuv4=g_1N;Bs%0#mh*ej${X7 zdk=at-cB(?Ix_kH;Y4QN1z@cEE=JFoPOIHPr!CKN0Dyz5+Sy;iZ_x(X(4`D1x0V`^ z;H%m*s#VECv{Cat%FlxE#yg#8eyk!QL(UB73apcIkvSY;G?7wuDC%D56}*r_H}w|o zFU7mN5xE`e9$MB{$feuR(jx42D_v@r+Y#;x0b)a#v`LNva%Pa8K}U*3W8_PVit-9* zpa5)M95NDl+s?JFOYHGfyepmVF0SwCoh&|JEf1YMeA!Kx-n(YH`wsPa3L~nSwcC@q z#!xsOTaPGW*z0vTy!m^c*giZ8&zr~JebG1~FDQmnB-)12L~ z)OsK_hha#KphTUdCI|QtutHumDJCayX_^G+K_W|X>o}&Nl(%D=lz?cv`4_CJ9;x#~ z(%HKeSa8~2j0B|@P}Tba%b~UhSFT*Se&u?EQnQhcVtyILzO17}iUc#F$i?6bkz4`v za7c%;c42BwA3<~3{NV17h&q>nW$gs<@nI{2bpg1$I=i{kbfHsySpuK+AZ1DZMc@en z&oaw-7u%JGo*8e{yhh#yIV2$GFhdKn13KDC*qeUU>#=*Owi;cEq`BGP(>$J>2f*e@ zB}l$l;t%$hFve;7woMy1OiivYO$-ez>+7HtzH9<5I>>Dq$OHqp7Zh_gh6++scz-!ry-pg_(G*b-XH|j z&7fD(mZ*7)4IM9SHr#Kpd`PQc{Q@IINTsY@P5Fp$QB?nkaxuKHLjr+ZCe+S$sROd1 zN~1)VbHv(N>#j9a)Mxz{kB`6SAzi!NvUlI>jz0WwjhUjpqcJ))HT{t%S<}4Y^uGON zXqn|%lcmD<-vRA^^BwV5Tb^uykaVMA1=K^j&%xvw`H4+_!e8SL>5vbo3J+#6c$uy# zD8X6I%K)uOH_tE>aU=<8tJ{AS4m8A@`|`u+l)6gmrTn0l@>Thz}+1iDm5d3|#vL5sy z%kRUPKs#Arc}hDG$3sGt7#2*X1_!*fnN+f+ySR7de`e1FyGJg_7o>Ierd>A{anVS5vK%*4iQ8 zrvkcF_TW#Lw@Ck?9Dq9d4=W+iK@>y(kVUb}{>45*JbWOCYYRw6{o6rnQ$0jzbQ({9KhDNB}`NpsB@)6%D#MBWmm zFwsF}+7ft*(wHc}jB-VQ%111eZwJj365|wt zMrX6Q5t0Y#2esp{$top>ru>UT6>u6NdVHe%X*FH`7j%nhso0{`v8Jr!&1fcJyRv7b3^YvJ)XFhf+X&Uw0=Ix|Ue9(Qk!C zV7KAPmVggQVIe5M>lJ&vo5d9wO~Rdl5A=*UWxwTO{oBI2@kPo-Kwh*L8RKl}$pQ0Bv!cf?|-G2j@l% zQu`_6j&oi4bFcio1^-r+4B}4hpshGZ)DeG;LD9CrUj`K%(O0qr)SDrJb?-Tp47QZX zp33FhNflSw_C>~926LW~v5Mpdx|W7V5r@^>qw1?LkWs`xiNd&hW1!SPxu2&tRt1~ln0ZxDrREQ9@GHgHYc@*$)o%)7 zKBi3_`Hlzqp7LA)b^eXg?%WO!POlrGhgxQ~pp%(dUpUE#h$3t&So4ilh&cJp}sDe@OxcOTvt5A_L4OK>Ibg>l7p)z6O?EXo$S+fBzq&FSIB!#wBUw_?iqN7i+_%=+pZd}h0Q%Lt_zRC;irdHw;WNU{Ov@d{4= zB9CyR++6ZGoon&=u)M6~^G$`%*Q)1*=hX3Y5mnEH$k&H&m*XrfQX&_{IpK{cpudO& zDqPBC9Hcm%>@1`>9ImkCpEyp=R>~?PPZ7Cr#aY$$@psg!@AxAA7V_YGu(M-0d3TIF z>W7wuiUbJi;M?>F;-e%EjBs&~MGwu0?8;>E0xm7Y*CMZ~cx?{uPVG5#89BL<{Gx(T zfmY;;$0aG=5zjW%V+_%FbrT5|UNC3+Nv8Bj0zbjIzu<)3O>ckM*4rChNY3u3-Wfb@ zFwB*+3n{AmTku}Hggj;qP|g(%@^|n!CBckUe+P1;@gEcponn6I%$axGe*FV4z4!DR zktUX}W&c2bkkI`1`Fboe_JHuTSL4}1FNixxnS zMW9Ezm%-pbo)mSpB{|09<^g!J>0hiB5)KtTm^-5BIPunj`wt$xz8R?yprTNB^7N(BCEJ)~uOa1%=*N5lm#SeJ}g&i9_uA8qn+W92W9dn(|FlaWKa>1AQPZ90 z+500ANs2T_n&37^&IQt{YArn9p4{UCuUB9@U^;NI5s88atFS%tTvTS?vZ5xutoOt2 zrl!FwH(ar2vhi+rIDFZp*J;!14<ME?d^OJRFZk?DpN((9p8{V~t_EW0y`g zTTITqmYPJon)EqY>ILtK%dbjtDJ$KVvjMgUSE|D2Pz5wQHdUS(k0b2B*MyXn zk!H>FPzq`D_>vgFocGRg+YX##FK^M1O|;`2$E8>>V1(POQY72Je}JX%8%<8x@6W1w zB9Gw@$`qo-+8H@wurmAilfAwBR=3yhS9T> z)~c;zf4$?{oZn%sah?uE9LhjjSASRI_R;05HrMZR#bT#Zai=?_oQ%d@;F~$jm1-+{ zuzB<0>{8%PMVwtULO8ofI+_kud&9o)oH#qLin9Yz2SlCGFnEhRaZAxvjxnTWi%@I_ksA2U*JM_uIX`!!K5ckl=1sbBr-=_8`Vx zhO*VBDZ0;`;mufsO$^nF|oG5+}j@@{C=z}eZb z(bI5tc(i&h%5iqu=Os8hVmS2Pf4lx`c<-ri++h2cVC+&eF?N+M z^mW5O(=m4NQNtIX;u)zXU)Wa{Vy8w<<)3>C+j(^)G|_$6$u;@YKfdj@S6G8%a;gq< zeU%hk3j3{s{I+eBLb+FM<;n7d2oF_><=HTLsRBkX9zzm} zk1%>jxTC}+s^0)kgUulyQx;ArAoFm(u%a;0Ov;VP^n+8!tX|jKTwd$3sRz@^>mM3- zMZ<3kM_uC&J=N#^{-0IYzw#A(#h-oO+xOH1A=e8pxIz!mxI&o63s~P4ia3TKo@!up z)Pn0m2v8dREciPtG`QCWECdR^K^Lg?Z#aEDF|lIuI+l&5A|i9WdrC5wKD%%OiY|J zS&=`DJv@yMbowLmijvRi{E5$d+27%NS<2yj+zMI%7LP@XSUh6aytQ;W7EfIqbNHLVcK@B6!27+@l`0wl%L;!EP7u;XVZ!4Va!#(D4hiHj`&l7@ zLK4s+n+6F4BLh=aI3!Rc$>EfdcTpe$a}m2E)f{9uPaW&pzQk<2Qf|KO4QoKyZ?(Vg z9?rjv?=}5#;tr5V&~^Z<4C)m4S8nRbDg4J?{mf?yy`QO2^6nHBY8vvGkKQ zAvi_^P5QAGWjH`$L|lQURVd&9xr~2#>Qlspuu=IN1wUz(TQGk=yw(SahV;~v62yaYAoDl04NDr?i;dIero5y({+ zi@39qJPvL}B8Nhm7MDBcSU0kC)aP|(wvDXLS*BRL(dEpv)EK)SWYsdq3 zIs;mop`lqrRlx10|2P)VkkIsH2=EAWWfcubYBN!xs%K)&S@))+tCwHB^=(_PUcUP1 zrnj-SHm|3x{j=>JZ+olRH@e}@^&6|%OE0nNjqC5+FzS0=KEPbb#J$O6MMW}sZzAbp z`7iKwA=|TspT}t!!JHCmpLrw_bGc)&hj}A% zoE^wg(PLf#C2ROVFeqpwWf>kKi-a5_{9i;GUdkVzde79zDIBF6agNA<;vmkC56n%y1^=GUsgI(^g#^7}d^({EL*5kefjEhHc=-r%&UsQ^VT?3VzaoG0 z{8jw%g^_Bb<>S3@TqfROlZJ)CS4FC$;TRDe7YqfIU=8d!sAn8MSpE$a9-@Ev62X5Y zmI%!Dmyd$ed_r5G&^@HP;HAIC`|JX9jGg5edrVd^ZVf-^bOij4DrZ&gbo`)EDQiBH zo9dZ7kh=ENi_fKN?G>qH5BkRPQn3$X)=Wz$hAe?K@x`}7fg5rFCHuvqCIKiRqTH$`fiz#LR|ZYO3!P7c6;c-=?mC41Fb!5H zo`aMQh$7ikav`=rLmvY5Ls^6~p@=1y^Go<%2-RPM2&q`ax>PtFNn_|WSR9|iv4}D_6AR>|;SqVXs7O(ynE;Sj93@l~b%0M!$rT0C{>*38p}p`z>3%|{P>+Rw zB00xevDl2;izN4I2xDi3h_bP4K?h^j8;w%4w3A> z&tN<;8V|Z7=zXyJK=&BcY?!|pHXnStNyY6=iSZQj@+lV^b{~%$YRhR<-aXpXy(-n) z{M>U*-N|KryY{Wx(Z6brd+PC1pmZe{i z?R5b^S%drte*ZQ9{U0tQrEl=>&-3-g4`4t)2O>oOHZ-*~@DeyhSQDayH~_G_k#f!v zO}-@I@IU~R)&V4*=4z#7g{u!(Hkt;~MU~0P$*Cuwbl$mVWXcvp*C_O|{{7C&FW>p* zl`B@~zs_Qz8k@Byoc|#W0rKlLofqpGgzh#cE>BS8T(~?ia}}3|Rfozr1D98guwiu_ zxM38psRCfd?Gv~>%DAFrM^H2QFAHTM1R<+hZUw|rZ+j5z&`m*(RZyfdR3fBqUwvKXL1>d%EzCAlWub}2G6rcB}y&Ze5 zVy3B{Gk?wwj&?LQ)<0$J>FHS2mk&`7syFy+lyC)J4VslMtVVr|&p{i5Cny4Mx*O*R zo*<*lR>90eeJv9z@S#2^E~bRQqR$Vv$0eM2{NrsROr5|Qnd)E<2y!J;r$__98~w|{ z%6*qdI$9l#gY`|ODNX~{TnGEJlhequ`C z#>x$y56Yttc8&&0T~F*kK0p3csz?6X*K|F}g5!zZeUi?&X6MQBH^ly8plfh;ToN#I zz(q?)b0k-vFnfxaIUJCJKa<-!a8?OhM|{5H39pjWFmo8QmilheDet?YH?*$5so$fx z0#VnsytwdFyN3ef#z-dr0%(lvkuPAK=D^DFvssRn;~h8P*W_GS*}HZve6}~=JoSZ% zFHcNPKp7{UHYNx0%pk3NB{ZxGPPf2A5Z&r=i5}F7v?&Uu;SJnO#ERf>gI*iR-Y0r3 zp;n5!;Ek9X`}ncnMf&@EZN1g?jwv?zO;=wX>$~dUueS~db34}#4OTe53J3CaK8g%r zEC%SWeHcrMaB)%BJh(XM+)!vG#3GSln1}$sFIjx|daux8{fc6(J6kZ=t{4ivn_*bMfi z9`4&J___wM{P1oSd|g;{&??U0G5%iIyGD4ip!*>`buL_)2(6Ie=l1#Fo#F#PUN}k9 zf}fi3WZc!$y!nRvK2@K(_Th1heRDH;*-q{G*gtyvpZbu~bj7LXXx@Y!qZ-7u60l<) z9E>@!V*sj?ouK;nK-{$wa$$*s`l@Edj!}-Q>Ny8+jKUl$!~aI5$I_Cn3hZokr4&~v zSk>D4hKF}Y-QMI>Q`1xf+tz7zkFIdocUA<_DTjCHv9~r^ZC_>Ew)FOHp)rGJ$REX+ zeS{aY&W;xo1`RC~KSexwjpP3dTckSl$$**ejXXP1=8n|p;}G6C7e1^=8MGqm#sH(B z=?B~tW&b|Oy>BC@ULdjmnWD`s{~Mk?J1(p^6Y*ey3&V~R&O-C)QQS&+_28*_fm}UA zTd?gX@Z8xjQ|03o#yuW~e_=j@cz-epAKA+=nc*XY`2^#ho|n{Jh37>HV`gS%eH8MH z#Dz!*M&i0;G@U^p8z6BrOag(#=g=+*j<5la{Zc2uZ zw5Kx5`tRrqMUDskRh4xK`L^q>zoT;~{?O8K`|4FohHpQV^EoeP2Zj)*X~7<}gGZBH z(?szjxbSsNNfqlwpm%`5f%SqS#xV+D%CmvI8j%8(h@yfB6(%AS7a8>h6nLHH(&b@y z-j`JvJ!J5(mo8gYtFhonI#yp-f;DzFH&X}Ij&?DOx+y@~gj`rCiv zv@W6lTprJxf#HID=blLw!Z$i#ap>O1$Pvuj9lRvYjP@KS;hu;elU+kv z0wNtu+6ySZ0DRPO{62ADI*(bfHt}FG4V9-efRzDXLsKDv-kg#SXcRr{P{C+ zTY{66dG$0#RfgMwBC$3<_GWhH$;ZgON1eRBDI9!EYR33UPF9ishVWYOOTytd4X=eo zS2vK%J~eZ=lMbr@Op)k^low3#OOvHu%8^s$Zc1`1VqWlv%3i#e*P-%M5LQXNn(~%; zX38FNS>nYaQQGhK#=R;`k;I|)W)9WjuU1f$w{^2`@20m0!8{DJI2~U_wDP6BLaDBNDKxSUEmOcr^U}I&P4`slgNxiqBv0E?r}pFjhw> zK!0albGGi2e=Q>N@9!Dv<`}E$DuoB?-&0i;2oCdc5A$)iNqy2?xhjsQN&-)ng2&p> zj3oM&Qa}|TPdHDdc&aj9MOn!3DVPXQm8&bc*oaS!rUI6# zRv=}=+2jpH%hqEJUEOCz_Rjn-4SQ?s|l0SET2y6Ru_}uz=ynC3fc%lOZ zR5=WX;@y$;N|2^9!ckD;90ipcDWIT4;?l*yQ?uMgf$vLtA4R_x{l1HV zwWbe{$H9}5G`w;LTeTCJ~XgaL5~Ge zi)VmP3JBX)8a>Z{yS23{7;-5oSL^b&Sfs^TQE?}7Y+E9+w&i7NZk0a}yb}Ye+Wl}L z(4IdxAc!^2IMg0d9|5iVCn&W%}w@%~grF3cW7L^RO}(!DJCw(SR0r z1_RjQMKM`WZAcm7n5>eUN-^piV|hmth()?8e0KDH0nR5WVKOntHMP5NYGuXgXfW^vL#V;IrCBB{=RE0HI z0H{hxF1l2Nc>$^-OqCaDRH_&wr+P6J8dbQUFoPT(u6!_3xhxwG`Rt(pdzOGO=gzN9 zRaO{w7?Q1QkS9=Z9a^sE@^c<6RmpZufLmMyOEt^Y^J1yQ^<`KpMPR9DPu0TG5Rqa> zVOh%c%X6on4c~5RjV`YYe0gf>%Twuh^!B~WTN8~=-VaOWvy{jq?2RihxB0PC<(7x0 zfRtED)YhDRvWmZlkW*wUefG2J`a%ETanWh|$27bYrl{hj3i^kJmzowLg*N3KDb+tF zPfeUCkCWb}&Fu%6n@8IIqz0K10mD!Ua!N8Dqa~3bs^Yf-t~V#P%B09i ztKs^i#|>}#$`#jqo=9qK{t5o)RVu^Fmjr%2p2N%I>A;8ZczT@YPl?YdH%@%sEqmyD zx?UHCj*&sG`bz1AoX-cp6i@q&BREob%b5|U z4b|<9<93s5G}fbkrU;QWNLIaM-AecHIwSMm0_d~Eub%{d1D9LoeFKu5Ai*0NB&l;{ z=g{ClLq|hLYcr-$uK*s8MB)mFdJ5D`Pb3a-MXV$NF;VA~QLm0mRq1g#N+CI=m@=K%s=~lYlMj$iOB1*eFqAdL(QE3e+)3E6{HvYfoxWRsFF!9lH@Mhq zqa2k6%kW~b+8Cs#3L8tIR6fFo!ZpD8YAujreAJ*k0L93h<=|%av!NA7_6{yJU1u3g zH}~Z_m*4nX_Mx}0ZE3C_TG`#Z*V46YU4QTLZMRIUy4%&?vjIcG9C9EM1$Y82H!>%S zGcP`;xrv;~Zn=YB&wc-VZg0T@XwDh>yATr~Y*nX(dKjR+a?F?@Fbx4mc&dg@oV^xc zsp^A+^_1sJ)x(hOh5sm%X||NGBu*NSRC+YJtIWy~HS?=!maMS+4>HeZ`j8X$JQBj# z;X?A)Y^hj*VaasUu zD`pMc82f8={>{>OZg&v={3`hKn{is3m=!T_oL0LIT@=iO8x#KgLvYfW(Jb0*#$xF8 z)^W*dt+xu`SbZc6>?fS>6;5j@bgcBON@8~8=;iTTo`M{pRRD!>0wE2fbArHQ|FXWm z!Sj=!xN2+HAK5)w>+p9~Y#;C|p_+!8eY@0Ihit)M|E`W;&{{R&VHRWL%?}<(I&4tR z+!L54&Vk4!qjPYM=B>}k*tEjubPmMl-EyGhbIK_epZCiE58-;AZ^h5Y+xc_4Wx|Yd zorV#1z#`4Wj-?7-4rnn2>=?y^m5)rqBTETK6Z!A`SUay@#3OO+l1t$!;pKAxQ^SaEQjVh&q>Q z?CtJIwtZ|+phu3~=<;sxR<_K0+rR&eX z&f?aZn!gH$0T79NHWa2M!3YV%)r>WniQytQ84nfCf#G`B&WXDZj=lYXcTVh`t@S6? z!-_?Ta9>MQT@Q9E2o(rc0&+nB0r7~+-Y{&`g7fhN&nr>$3bd>OUWkk*DVz<<{IJR>9+XMK0h(ZgHkQjplBs*P?@JM|u0CERl^{gCippBv3}t^U6e7wWtU-&gPrt zS0Ib5uAWjn$ZM4}1x$6Eo5CZHvOg*-@%zDFgx=x{fR(7wFS(_+y?J$_iBd!hDWg*! z*YKd%m+>XxyJz+*ILvIFPs z71qXcYun3ug_+U)AiIEGVK{5Ucs|vZlA%EmJ<;zC_`M9D(?)*VcF_mRT@wq=z zcn{Uqn32cb#v^U*P$TFcmyw>&OH1$&%^ZDQN-^NA(C!hzVaz!jAk<}$n+`XaFx z__kS(=E-g5URq?c7ZyIIt(8<-HwfFnHy1uLY%8VD z7wVF8ntFt<^G1Fz(KOYu;W^^)JtEGD&)ZpFI7;2R^L-FmFd7 zo6Z+&LGb=Qvb3Gc45HhQ@ptUNvvfe6O7edEPCCb|J<8^xn*cz^Cj4oV8_vJn#r`Uv z%gIa6Kcm*9z~e#hbM)-#F3HnZceG?TjhC{U3){&>ZX@O(&iWZ`ABZNYgjRu{5T)yh zlMu=Re}?6r`!7g1@aWlt!f`6^pq@RlMD`NzV=B{mvP&(5%7JhKd4nh8hYr=$ME60? zOL%fCohPr`OYi9JMu7@{Jm9BgPe1yoT$TUC-S1(0&i`cm$3NbC?6b9BJ&yNLteN=|_!Y&Oh?2Bgfxr6cr|!7@(?2h-6{wSv7rw1?$$y9EhhRm)7vzQj zf#ZsDkIVbxWI2jfq`|jwQ=5tpC2*ZC zedxn)dGFbetb6O&dkv#2SC0N8{wVwR{lnpd074)7hb7yaN91+s_Mf#XEZO?A_H_Ob z=|Uvqv8PzmhxnQf;rE~5_n?GacSLaz?=T_Hoi~EPvYJfoCJN&t(Ete-W)%H_nU5rE z80!K2g_JV-1$Y#Nt-j;t`yEZq_cu2=?!Wnt``@LzVK0m1|1H@V*0J02H|fHSNz~!_ z=e;-R-UZs}!F#EOxFX#sTscuBL1PE>$HCcoNTr+Sd+7EO%LM7b%|T9)VDW2Yq3dw; zQTR$+kh|C;u--PeKZVXkwR|q!*+OzDH=@vX5fxxKm`{LaP#CZ0`mVtT{^U>YALzO^ z|C{DzYezS(S<#&T)nv{1vXAdSe0cxImyOp<-XITVe%Xw=W53J{$~O>yqS|R(jwj?F z;HVh&hu-}q$?_?g{pE!(J(`6lg|5NzrT&nX=< zeZ%`w(0E`M@V*qFJ$`<9{RXn_sdfse50p3zJ&)vt4xBrkOWBa)2oYh0jnCHLf5D<&-|DJQKJM!Pie+1x>?RY-f-v^;b z)1?}wc8&iKn#yRPe)m(`L50m;v%tpW+bQ2tM-$Sq?G=XCs z1vPWV1v_&75FiwxrcfgSf|Sjy_-ZX+d&OktN^}qR!jY2ob43#{q!}>s4{eI>yt1`B z;W50G`C}E~Xl{i)xMFBqv&+-e&{SuK-9SdelbeQZHPv1D55_!O^^sIvbQjEqF9mDt zwwmZuWHtyrdWHNPvLQR9rMUqc^!X|@dw{A2z22zTP4c;7D|$IZlb^mGQUSYAE~BQV zqb8e-*ZGX8{$}$O z%VfftmeKw#8Tb{wu9i+Yuwo=WwCZ5A-D0q|C$Ae?7c~Y$1gkREgl>q1_V;a0R@*}1 z{7uQY9sEOrU#KkS09yjBf=OpdtLR{wEJz_}Bmhw(Q%}9`$dP+1p7}J=4uFEid{x@8 z%U^~ZXqVvYqbysG31x_|IOr{fl{$k5bLB0|VH!X&G8x&|>ryGCW45Q-8Z)?8QI?pX z22m|3tdG{8L(N&|_&cgZi1-#&{U~8D*-zY@>}$z(9XT02me{(hr?aUmzHw6xW^m*2 z?)tXYuJ+bm>-x*D9mrLiT!Rgs4;p@WUvooKB-1ppaql{|e@SC&CVACW%}pI0O>5elHuqbr z26_VZoi1})@wascJbNpBAy=Ssm%pYm8n8OXtzZzeh3yxH*!ShnLN?q?y{xgZBac>d z-Vc7S*CBrt{#VK$%|iRq>$}j~Q*`&Bj`5QIEEq}oWmH)^qJ9U|9CQ?v{ssry29`p5 ztCKcBHc+7_MN)d*fi5Est3l*TE4(ujLTlV7HZD@Vl&)5gv zJ=kgK?5bNnocOFE5v`~SetP}d&FeEaPaHnev3cpTktStX)3Rk^j%3?X?z~T0_c+oT z!0!a#spLZMT%sCGvv^XeBS@)RpB$Gq_Wv#0SalIMUsF#pX>{^bK5ond)uK zWL(d?G8y@~*p4mvXV#C!Vp}(`rJHxgcDm|Pr%$KqT<3pOkxaeg9jPQG%9D@iHMR}@ z5GT*+!MdUBw(!(r{XixYWQpRq;$o-dNJ9JM$5f~=A~)kh2d3-^#aY{uu&&s`w&lO5 zC>4fX&_#$pAu|1SB1@jh4XF(u&kq7Dp&Ufm*4}A3DCq6>h zC+7OQZ{~l2XNlZN1#9e*fb<0}hH7~7u!0&+=p|^f1V%)obxE#7(qn)+8`tR+FFdX4@y4tR91 zyU6RPj$1!LCkIU4XzVhs^Clsok}i{(w=2_7jC_qsBoy4sgke_6NE1oUHBG)s`xN_8 z{!u|s$hT5uQLNTrcnNZ!CQrOtX2KrC`Ie2~x$V-CoD=omfDO{gcJL>vdP4_2hUM17 za)w|+9YzBVyqfu!RR>JSUtY9xuIqT{*w+az*4RnY(u3`i@1G7cbv5a%<8q8+iV%A; zq1{=5nbG+{0y?{e4tM7KWTJ(&9p00=<+5chO*L%Gz4y0dI=eRDlwbY?Kjk04X2Nf< zv`262>GfIm*iDi6fxdmA*kN(pvE-VZnFZ(FS8hK}$9dy0{SU!;M=tzceiQc4Po0!t z1U=?uY*o$UUSv$Owa}T!E(-D_dT#4+?TC#NT!qd^O)gya9X=%W$%tGBqp=5;P>xQs zU-D7oEw_&p4L#}RJS&zb+p4+}`;TRzd#1L^2X^{nN;qq(SvL3|`J35W#>ev)NCDz& z-38v70B?1Jox`t-^CA4YT#VC-t9Wru$3dNT#gj;TYZc=As)i%*mUDo^yV|bWv+s)9 zE3fJ8Ct!G{!T~Ig0EV{=Z?0|Gl6%AWwjwG#7;&qpaEwotZ|vt%Oxg*91oZE*s@RWm zDW?*>7%@q?+;jn_T|wkd;wvV_I+Rqo_(A}LT$lnrXQFlF^sNc6UpU*ZoLIIU38ZqF z?0VqkmFpsIpF%uGli}X{~z8CaEN_)pI1WdG{Hw9UUU=WbBA?`7f@ec#YYUg9i%ImC*q{s zJ~k>}KU6=J%4Snj^@nyTxppwgPo+blH2vM4Q*b+29>pV`N4|i-;9oB6VrtCGWJ)qq z;rM-}aD0%k!O%rn-AV3mxX5L2I3%WF_Tg|?1ZKZ$(-o_iUA^@#f!V*y(3bW2+S~u4 z!{^Vo6)^i}&rZkeE2)Z#lv0Y>_hGJtWwlAQIiP6uP~5nHBEyPH!7eTZZRk(v;Zo30 z?4jUge{$XN4}9&#k6m;8124Yx()Yj5cCcOF|9<|X`Hx^7NhfHNpOp{6@&aujRIJkp z3Y8{k<2dKxDSus*w27-~;vO#=r+F<96by->_rfPT%FfU=9K-goG&JZ+C zXb*-7Fi3+zXx+_HQ*C9^S6fNkPh?Yclj4LED-w1EwUQj;HO~=Y(QL;@wkCavdjei- zthOdxaaTpSrZ#5v2JT7tl3PcHR|Wz@!`7zp4g0Se>K)jzZm84Q+V;b3 zdWWvszhS&7-PV?dtmgU@bd-e7g0(^Y(%;}O_y&GXdKSgd_~(dWv%C1`kKyxM3)dq_ z|H20PT$~sFxgQT8QU1=7&*?eh^KQAZ@Oh$ey{td{@BF>oc8~DSNkSB#LpJ?+{&`US z9C`-c%WZxBIaZm*e?mNm+eQ3yQta^gHR5xwhx5;Yq|~lgZDyhO*(e*G`y^0g2&yGi zK;f3)3MQy&7Po}S3%7(0dLZkD9{AKppZg3~1z&|G_|jKc5YNwI{BHPTsP-M9@r5BG zZRM<#jU&;RvE2+6HY6!gs7MzcG}%af6=D8qMPj+m&Eve}ODJM`NuB#mPdt%vR)i|O z%j2~%7@5gTMMb#Mw=x>4Z%o?l$xK7aZcjDv>Mu&7m321{`%v#iHdt-RM4~PK)#hQZ zyHeKewM7zaBoVRU@BHKVo6g%-{J0PP8>7_rBu*G1tD(rXLnFY~m=aF*80i4?8$WpX zZO31@y)q`lOr722$uWNF#S>HPm-}yiqv)O8hs}`5UqyPo3s0@=p0j=3&HyF6QY4W)0tK&0tyZ*|4_s&=kKY#a z$_aa2B-+ey^Hhs}ZI^0;U+sdy)--UKz$qHj!ctuQ# z09u?<)J0a87pgy%mPIHUNg;wHKoiPW&YfP`-JYy}p1n8!yF-25kz^#`TM!L_=$ANh4^Tc~bt2y$44ohmT-V&n!v|`y z&fU6oO-+*2)Zf&HJbCz7LLJJW1!Oz(JZokNm6M<(mXZ-`ZbG5E{JJNaNIRYJ>dLiB zZM5NzxAwKB9Y?!bBe5t<`%2%kSg5{PvD#DhJJD9cYNXSgY-Y`^BR+RPCtHuYP_T1U zXEuk!k^1e;E4?0^@qN~Ca&ML2{LVxK(E@A;#ZC46eD^#K;Z-0U7kx{GeEDe{gR>Aj z0Je*5rI05+*zq`wW1TI~fV#$UzfNHX@?U1(`~5?5;M#-dze_q#25VW3wT!?wJ4mPt zKM^t`v;{W-$@D9%B}E1(b_&MW+#HQcQuAQ*lJ3rEQ?#)*iARK+EH<*3aGtujm50Ac z+ocRC;jF}-drBN|IDOn9!TAMuWmRS$Jeg}ubR53<=EEI{#@v!6XBriyu~Bimnj7js z@&mnfj=BbGZo~0d4>EaLqkD#zFCX3$ZAHpXPwe<*(I~q;7#ax&gW-{Crz8LO)~f35 zVW%S)-CkWq>nZ5Ri8;!4m;G^Wx@ZM3C38n1UcZ@lelo6?+7 zAQI}W)+0`5ZT%7uNhBOegGhYtN-h{uAf@~_CbzNi`x4b=OHJ$mh=%6J^W9*7{r|P5 z83>ETpt~8Rnp~A8(6DpJEMbgrB3|B$TS%_AAG;HRYv+<{#(-F2$WxTqkNDgnw@_l3 zp|f3y+(K%XDz{MT$K9x8s5)AS+$v-K;82t$3%(T|Xl==4dvV~)ll4~l);olYYOEq38|7d8Up|8wx0!Ce15G7DKg2vwG* zP~vtlDIu_^5X)i&)-7+DPhdTIae;-GBgf>zF^H*Gxy+(&8A515M!?0(%O*i?p$rv7 zmjujSsZ7Fn<0Uew)5N;+-{LaqwnwjGC-ZMU^p4-2Kacg1lna-!f5batlz&;2M+HGt zTo*2okXnkN6=aN9m-%JPC+3ndpPWy|G=VSb79wNPr7{LhE@qK2yv%bQPYo^Vj0=`A z|MuS^V;mQbv1j<1quOO$$bbT59{48_lakhvC_%!jCQ4%YpR>RC?nCTah!XOzE<%>j znrX5G$i2B_39qvFKU|h5INz`1e3L9eua??VhBv{u=6eJ&6s33WC zk%B}~{Hg4~GZ!bQ0OWe^q;*OVkSDuhS35FYP2cE_HR*Z1yT zpT8aV*Wmswm~VvQ10}LUs8rB|pcQXb<%g^rb=M2=5h$8H<>CXf11SwPwc%J*JkcFI zG&*$I`rdS==h^&M`eUsQhuP+J)cW0<98H~>R2OQuyA5#AGpQ0i8%8mXjC4)TQ;isC z61EOJ7>HL$C|oO?yZX@BrnIzD-HMs=;avNPGnG6IIMzJCW{Alr_ z9XZk<0V9cfU=}6O3K1}px289xi9d_`#)H>2D!wWNH00NfQ8~098P^_0ws3_H&=OrJ>>Ku?_2f^5gYG zQ#am7?;_0oVYVLcib%Z5DL9&H_fSu-8Vp95HJZ37mUF7f#S7mSj2?vHw&AhdxReYV zgyjSM7nYBr@G@n*CY`V=$gsM13 zxBoq6Yvt+>Mw=W~CyLK9cA4Gabl1Qu2b6KBp(lhBFRw8;+$~PMZpiHbyhd_?ZnpAs zp3KEdWfcx8zQB1$W)G7_Re{AL$2#S2pJ6K>I6Jj@DE~FcDj(MK5Z1FwQs4o)<_R~J z24;__=K*deSRKR^>>UF;KvCG@nkKdH3sw>?#C6*WV$Hy?sMX125Zk*SB{OXtPO-W?nt_P$z<4V zw$_BK7I*kPnf4wf;E6Uj*Vi{Uhke$lyC+-!v&y91TA8f;kk!>-HzMF;Z*U14s9L3` zBxYYGw=^aBc7`z^Dbwh#w`$rzgb-lc*!miibE86Yo z_e>iymrpNU>eGX|F~g^4`XA`iL$eUp!EOF>8%UYW272i12g!N2;^ZXnuN%X?KY{K# zhwl!3kxFbJ^4*o&Ky&%-VkN%2Lq`|qySs26ey3--KD{8{9j2*ymPFnEOE!gW{lk5C zkdla(3*Q}l#i|`t>X&2GT8A^-X|idWXKr8)&m5EdSf8(RzZ_~|&0+_sQhUa_EXox6 zz+9%#JnlA}tN&%T5ao`tZ}GENw1x1I+A@oGPMKy4b(Xu;{+HT9Nzm~BU65Z5EC>c8 ze2F?8Oy-$>wFQV3^2$=IaGGE3PZw$qU4mb&A3lK~d`orG09Af%q(nAE6}6&RWDu!E z+9k{he%pa`e@D9??IKt$wKC!z$%G#OSumti@e)(yV5Zp=P=fpmt_P^<7KMo7q|J4=9&EsoCVu zf86*k^1;<#vz+_ja^RQdKe`Vt*Ql)6pfqYexYnLzs$Tfunupv`mnq_NbRcd7A6)ZF z_~6V=dxh}9A#QXTdky3H@AbjW8Z^42TMZh0a)Ca$I{4ti*axza{!ky>WttD}PcC1vU z_Fw~CDzmuUh6*k>^0&Rt*5mmR>SZ&xJ%i_KcHWgdN2B0G!&`($e34Ex<6KTO@}a$s z&^7IEFIA)#PPBr*L%5Bk$fSL)Wy^o!Z4XZe4nUkoTe_{EHu;1|Q5Zsq5%C_iYM zL3UVYSv~}WCSo|40IvqDxx`qi;1hct$MlTq6GJY5>J%$@x$q303vjd~egp0^mz#@o zA#C3t(amLCl$#5CTdnRn`MG9|^;7A79_t5-(QFdz`%G6C?K}7C&K>K&bXS*g!LBak z*aa~sk_oa-V6ijUWa7KBZU@i7LuCQZOJ&_o{=3H4WZf?QyLR?v-ERK7c2+5&i*oq1 zbAog;{yP{Irz>>4zi<reCFUATTL|Na*K zyARhN;@_X)zgOdTas3;x#fWRE_ntP<@tUTI>Jhdh#_A<9^W`q6v(G3t$jvHAYVwaQMh1Q{TuS7N*=Cp8klE_l zC7FGBA?`&8;W*I-7?#A>hqLfAC9?Z80fkX_Mg+Zz*B0VlI$SYp;L8!<2OTFsIAZ>b z0$-T(A|qdPmNZ^xlxE0ytb;6{5HcQfD3kGWmnP#?-YDW;!?_izjMqdvm;zPlp?KGs z5-AUUIG2>?eDRMf<(X{}VjePHr4f?x$OkRvU}&NplR|Wk7j^|p(WE@~f2NeD&A%im zzqyG5TD9@{0$R+rU@zXJO&n5!(wzmRUl@?Vd{ z3+FURb*+$8MAtR!D0G5TmVww*FGG-)(T3dT%3)A`>dh9(y;hPWI$ z3Z0wI`o(iFFq3j&bPpFs#E2yy*6R?~OUR?uxs{qc!eZiRfaugb^jR`2=8{O9`~8t6 z(&Qo}6461mN(Us9R^)OeGO3t`gJm>;D4>M#Y$6^HlXM$q3MC?i|2m;Gxp1MxE}-rg z%fi;uN$EKtMvSw20WoqB#E6<9|IK9n)Fc&#p*_DAKd26t5uBo4TKy^G!6BZ7uR{?$ z6d^)w6f~Xz^jwc}8Aq^ksNciObn0}*tpLpPibF=8f7bvAjMr=nHGIk_4S7{46JD2^ zKPB&!HCuB)X~K57}{b=c5svbZMtg+`XBviwSx>Eb>|9sCNkR(FE| zC!|s49(lADBC%Q|TH2%~OlMui%$78Ywbn5#4GII%mwE@A?MqGpOzzP0LX)+0D{ zI*W{AI#^(n#XO1a;pwS_jzRmSJx+%a`!EKhMi6e-+;{5rxQA|s1fOwtt`~%fJWT1# z+z*)JUdZQaMNvkTbx>0W2l_g*VyocKuAt4DpK2Khdl8#BYu>56l@tAZn>x2OPsicn z`>f~Z`>pDk@Po7O;3s@Nh!`h4fQkhUrZ@5vP7Lsj85yoRlnqkPIqJF@^?Ku0`rD{S z`7ymwzaCBGt18i<5Ixq3v~5_e=|{fI94?_?*{EiOmQZWaQ;kYB=zAyW-U_*(t@O9uy4QhsSl8F&hRUBHl6pzaq`Ud^)a+gtGokGG?2p-z zOZN4l(9l5NKyMFf!J_D8YfE!eV*{qFCI5PCHGD}I;Q%3mOqDJBY$?G7m&lj74A6Gt zVjdE9`uxe#Z6djG;dR}qg4}p2hsyn^pCy5s4CsRanITvL@2>{ldk8@egWfFQfEtS> z;}(=9IILg${Fo)PO-dzwDz9q7vsEpz?kc8X-W*H zeu12F%a}5?f+S}fZ}BxfPq>7P*NgBNVx8&z$#7W3sr3 zip$u>!BuU$ZCL1jjnB^ch$5Svem7RW5}bCKlIv)1YZYq`F3UyYLb&X_yD}eVoqd<) z=c#jS9M>-@)x9I$G%ELsniQp6$qugM0MoIxg2jL<2}5)G6|Cfn-1IL?Zr_3Jrrt_R zP*l_**&P5R6N3U-97g>no7HLKanC)(c?=MZs-t%M2#Td!#=*NRmN6U>F^Bw=(WVU5b3mZO$& z)5o&F2Vre#oh!!OtfFFf1svG;Czot#L8<=HmUTIFe(LY*?e1uwg|#n|t?TFa;$EE3 z&%v%1!u97k4rr~Z@_#GH$St)>zsY%Ag!^Vzl!h@|Pz%XS=os3rE=g~LCT&0CG=W6X znuD`Kff`IL4&SAGqB4eMlJ8H~<24P0y7%wnOIQYJW-;LYo5svW+=5XwGfNk{= zQilP)a?t^R-Id>r-HdrW6&0RVPm6-yU83tig}Z{39s>KjAf!wD{v?2PohE7i%~BCD z?9WL4CdcIVSp|t2I3OL5edxv;^V{a~aX`PrK2SYrvfnzTA?fLyog}ed3d74vwFGDf z>Y-Sn(vtzr`XsZ(2!n^*^&~U5j@TeeA%>|k3>i8?3^&bl15D&GewXNtx0`z7HE7p! zIV>zh^-VLb#==&0b=hoPLtQJDE+I>)Be4f7>P3~#G8?Hpy0>7!OR1dx_9DP9Wzu_* z(EvT=Snz$|_LQ`nt;j*!l+2yzgKD8|pb*ah2~UIB0yl$`8LSfa!wSBR0u?;=gFf~$ z&HyZK0u1dPae<0W;}tg9WE#UFi><_Q0D6qdLM-4}GoC;PYH%@6fVDQp2V%paQgwj= z476BzV*atrxShCU?fUf!$~>*#y?)oWtz>~M9q8%mXi4Cd6&!+Yl+qA>mN^wNZi8JS zk<1SIVqfAG*j%XP>bN=L_vqm(34D}MA^X!(ki_>h7sJD?;83g5cxjTjmlxU}z zvbVXPqDuRcpG4HsoK(L;k1uYoxxJ?HbH+&9)hQ*%M)q=eR>^@-(^4QVkfu*_$*U(&=zmbCsobWR{`j7?Z5zF``&Q4%5j8iG7;pfq(Y=gx@#%J_b8#UG zI)LhyTwDp!cIG0%crrDM`$H|fX@3asLwZJ)v^BR$=ouEd61I_UttR2o)>&^nV?}AW zHZ?v01kkJ!1`~vt`T^&0Ao!nF+y)F&l)Z%rH&`xecftR-Z;^ zd!>vo+Akg`DcP3!*qpW@vxobMftBuqcJAq%EP|uO=O)s59v(6i4R@UOcc0J;U~Kwy}r@T*_N<0wScS53QgU ztu0GhAbvD89cWv}qM|*t+M>-7uzCV=tJ2QJk+-85%>meDFNfQ zsDT^<*9q@YWr%|P8kC;T0jp11VF)cs_=b^Mn8C86(}3}ajhS#dOlB%3tw|JcHqr|X zWqM)re0OlgkZv=;L1QqW&R0#YQM-YQBl4OT-$j~X+2vwik^s!KU{|_3lg-JdOxmW{ z5V-XS#zTlAR?qSfW`gXRV@M^Y^|a^Z)?NCez^=ze=y^6+*Iel&t+8?Q=GCj|*lymx zdEc%bt2eE_Z2h{HRV~B)z1rbbYbW@i;4Ie0z64^rxXhcE#uj9LFCx-u;5G=Idy+r> z=sYyWHsmUB@X#>TVC_iDb{n~6$r4!txoS0-5vUmh0u-NVY4G`0%>T|O%b;+ zMJ#2e2z-JCQ{>_goAC&;MV2n=5!@J|=U8Bjs2<=YW%5)tM&=p~StDil6J2Fitr{30 zdt}wvs;wJF2Zje$F3&0bN?%J;ndJ2>)FN3tTbfTy&rd^h3-3kpEf?oo!tM|<;|Dn& zWP!x6m^DX2yCj<+Kg?%fWte1x>4+WLjm64MS|qnq738fW2$xv(M+QWi z-~4qeN+tQib1U>bPIH@T=dO~*Q2poXneiCS+C>VQ#b~ggJqnb0vUkBLctz(F3cVlp5et|Am%Zi z*}|4|e&c%K=n2GB4BU@Q{!3xsbxA9w)43aGdXhCO4;X5_11WxHo7rg79Ljbw@u2nS zt#-&U2RzCS_}FlPc^llp+;e5NZRqYMcW(E}?x7|9o-Pk6M@DJ_{t`pbJ*y!o9J-5J z$V273zr_#|vFROK~c-AuMKWik^QDPKJU zR*$O#Xj@#mjHdEsB#M=!BF!#c($bhl-;+|`-NJ0tOQGI*CFKIicOIF!@D-&Wa?9ZimC3D3V4-DlYhf!U64to{Tf_nxQP+vq=WcjysEeIUwSrh{7qOj3`Ux@ROEh*M`n9xs+l(jTsX6U1mWU~O=;k%0l4M2wHL zW^RnAhg_#oCoBaV@;!TcdeUhsfw$-Ao+}RQ>)GA2Ys;pgWlQ?g-RZ8@X6n(S#6vaJ zL5wPp@y?f?$Sr#)1}OXh*v*UzP?y3O%Bn`O$4GZDmDi49-&z>2m^~|>I|Y6_TcN4^ zpDtqSuqC`EJNtz+ttR`j()vw9v(#_06zew?F&l-V8U)Tl*)J{w)Oz_DF!xyr^_&u@PuPg4C%8Yat2eV2JH`je%i&!^9Os*r+S_a6 z>0Xm%T4~#Es*8dXzzeb$3ZU^)^1MU}uaag|9x0S{3PdWX5ZL626D?7o!oA%IIdP^2VmQ3v$!jo4p!9YA{LANpvB+On##JPx#q6^Dhv+v2NyN_Pqo&@ z{59G!9ld_}Ts7M9#k3mjm?SDep-Zn;rI5AffAU)@(f*NL$5?g#dy~8V>M#G2_L{xYy)r#^eg-JzSc#(ZHPkHvsm5iv)-rpH5R%gE^(BY`@ zvEZTgK6_`fPAkr?)@BD?G)R3?XRbYrg^%#gFkrZdV;~s|w*EMX6+<@~rExN_hNN}L zbXFOR2TYclhNOx&#F<6+pJ{kYt!l1XfY3yJ-qkiTP?uzfT64W=o|?J0snysU73<6O zI<@AyTABThVqtbmSmAZqSEH!*QdD9`QFhv&G=4nKYjn&}iyiZl<>k|BvEu_#i``Nz zpj&r=u@8R!A$D%(x;&gBYW-ZST|~+t3vr%W?8{1!Szw3_4OEN0VW0ukhN78heM+H_ zW|PITkXq~{YK+w6q>}VaTF(R(y(SL%!4p)8ee#xDCJU9=lMPLYWCIGZSETC(JRYjV zzI1&o*2OEaJBF7n8+PzY>|L?g#z>TP1Vh0ToUAjdi#))aIC@G+4}UHy`*Qg5_WH%KLvqG=_w&vwtKWNte{@pH_!G?YxyrDT(U+?DA$#8AGI92wKlO< zkcowtVF#@=qRIF>U}rd`Os>M|u-mK_vkA?0kV3kOdng{qjJ5*Tiq7-W^*bK(GgQy_ zQeXSJtf@O-3Yh9l8%B>OF1KA_os3;IvZK3)UB9*JVB_&)4F{{n`p0QS@E$98@kda1 zYtEc}EGiXp#;YJ^3OV`KZER?peDC=K^o(}o*ngSbgJ)Fb&>05HU0O3&y~nS#-+M2+ z=Nzu@mX5H8*>|K0sdMDfX1LXm0;2BGc9L!AL4{wbNGco0Hxkvuq{@>OlCxHaX?CGU zljw_uW^brS^7*Z8ZCkSIy1Ux9v>$2Pn$2!$>+BlMZh`j)ed;9XZ*bVIb^kBk$ zBI!((d5A(InZrdrNYH>0)mAak`|%HZ_1sJ6a3#j;y>O589qHVB^F!}IW!ZgukDPlQ zSK*!V-|*|HpE+t^@&0LS4{yv2a0BJzpff#uIw*vpq|`rnE0e^ZbNnB?TgF+Iq@RKg zX#4}hHRabPQOu#^p>!_|7EmEAU`+w`9ZwV|r&COL)xakkcEs;T8|i$uozD;NxUft5 zsk%lXbZLecfZ+JrQt<&77ASyL@95bZ-_h_%EKz$ti?@n#%4Ycuh_^?jQzB4MYeF!_ zX@+Fi$%kAO79F!&WyuC}0zn*P$-~QF8>3{+TKull-#X{z>V=4cg+ifd2&qlbhpSNa z41rO;mNZ8<(z;PvB+LI~OXn3p~};5OO2&+__Jlwf77|TvASH{ z*o&3R{LgGSvhhj$v+>A=XP$Y6xsHIX5^dwB*h?=jy22}B&>nKKrv1adouh@6Ie-6G zoFxU;1LRi)DA$P%0Z+n;0+K|gf`$uF`^=zM3s4t`nJNtiz+KdC0^p^^LYi8EHz=aS zT=|q9j|4rTZm)Ns`8}uiW|xK|h(X0`67D6pTkpUBwN$Ui;ZD@Ipe}aRRW2m(go8El ziBOxT(pnpCqFu*WQMc<~`JUHG-MJ10dz2Ki7TX1t4CW0ouyp!^C1jx2>udF?M9k+U z>LqZFUnwnXK)P3!R|(=$fC@oVf3_Fyzu&Vo6r~}CvIDnAfZ>40MPy;2_tn8u}xa;pOV1w3Yk&$ghiP z-KDheS7@tNoH+6HNg!@sfBkjZ+m-BY>9hQ~P2#CGZL(YGnN+%>jFlA`pkG;e;sl<9 z4aN94e^~hWF%ijBfLRcWc^%`p1Rl&|=IgiRKPQ+llU7|AXXh_Gi#3XI#KatYn1Bxf zG^JR@p2)8qpag7;zm&(IqZ^ed5)`0&^YkU)+=Q^RSj`enAm1T40r8U8*m=IDwGwIr z&q7ytBxh1O2xw~J%Nzaa^c%{ki_pFcqpt7IO)MuEbqsxHM`**nqO%RR)@^hN+6(An?u#X*2Lj~Y9-Oslu)V%4nJ*o zdscToT_3UTwnpmDb*}cf?c0>d-GfUj^c90kzZ6kOgktPI%Q(hOlwD~hjV5{dSzPHl#rRqctxhn2{emJVVDO9$`94D9aY(R1n)pFWy&Q~&UT zn9miMk4ai8Hfo0C+er{OvdmO@2)m)A_59dePJ!$F3sI@hA(f6>9{MXpnabBlKyGPc2O^lVrG1lAW zdqYMoV^!}-qXF`6cKb!&!^e6%#)?ywmWJ7n*>gBVHbOvKa0EqT zY7#f45)AD#-CQw+G80g``OoyhGrM=6ImLf6<6nt?@YqXwZe2EDQd0cq+1+Oj9z4T( z#9t*3rhOkqVj+z;lB?mebuG5GOf-7j9Iab2LOwPc*JAE39SIGA?w7&8?qyF%$FRmG z34Oe2wWckUrsU%N(5Fqxa+0oA{5bZ#?|qLyBg{U*zVL_X5aQ7{A8Edi_2GwnhxY6y zJp0RkjA!qnVN3X-JsZ9|_6g~gOVUwH3Jn!c!u*+pF-pI>#OKhkwC7+iq<`RhF{iCZ zn?M_I?0cLh-_5=$S8`g1ZBat&(ygS!UC(KpGzv~Tr8GV%XnbrMjW6_hGif^|XuITr zM4Rsh1cb&H$oUGiEvk-ysEJLK5;fh+*K+~)l@fE|zDDW&>>co1I3=vcG`k)TUM8*c zGx%P*=e6X&Gu@C^bx1t7%#P>257k|aLqm2vUcl8@au*{LklXR>-}7dok-iI4>;$Zp z2B|048RLo&c93+z5)EjYii1Z22@3tj9VD+HFHbgXY?yh?6Tfo70+d zliqwaS8fIp2>@dfiCRs$X;77$WkR{3c~7xnjJaNF&$S5U24kLAZ%MnWNNIr+Xnv)| zFI+xcWwDkFjZ_vfYEoD>2b9P%RbgpR6_#3c*aKW);q-D4KmfK?aky0FPp8ADstQG8&6fEU*em((Xnuu$-1u*QoOcLoW9a_-6XbVz1=hxQ zXdX;jcj04fgWQ621TO zNGp2#n{GUJ?#A^G-1o>s4?g@p+^^dF?3aib#)txubAfp3Y&Jg@Rkiuy;&)RSS_96@ zob3ZOOaF;T&{tg@+E3Q(~O!Niy*VCd_I^y^@NMfH(P2F5+#SHB|j9y2gc%Itb!)qnN= z`?FWKCsVDrN2=_JZazTv<8%4<(rB_ad#J+Ti8fh{HcvGlB-Sd-TG$`W1iAT-S0z{R_I5+wP0wyG7fb7%ys8wzHk^pT5eBx=%}6 zB=e^v_UM*JvkhFY)qD%G?h9B0CdFW1KMfyKEqYN^c!Bna`(%SYfno@hD@lQ#Fi9~z z_VfsXCa5K4AUq2JwFE3H7sl$D&dz=jA`Lm4+gqo&-60p%M(L&)3jPC22N`t3y;G@$ zQDA-u2an0G{JO3q97)+7%VW#hHZ`v}oNGure7?b@lYN7m)-aRBszf7=4_=jYJJ_Zz zI>){$Q!wT2mA(W;6H32lnxqWTF}!th)z&8BuSceaus^s>VX=9 z>M5%Gpk>1JR&t?`B!wD68MKnCk*XVwM!TxJ1_$wD^s=363jaSgFwxyJ-rcvar)OX9j(+-jY>Y1L?=AlSl63DxZ})gl z*F<0Mcn>Hve&Kp~iTt!g$ck2JOYSlsw%5;0##U(iaty_A(T%MIh=etmhXpWto$)XL z7cekQGS7x1|NL%(hw^^Z+sy0g(@7-|_qyG_xZg!ZEDW^>Two8-JQmwi*qk~P0^os8 z?2DTkZutTplE`&_roZehYm!}A?@L#n+Um5c3tPtTmJOp ziO~(F)x!q!Q5SpXrY(`3yR5g#_v?IBJsCOw>vT`BTK6F65Ix!DUipon!#C!fwE)R_ zQE&%y%Mz};6SR7b3^b;*I$n4^epSP7>}{5@w4psltjrcJjR9%IVgehFC9-XXOn({ z4caa9nxH9qVM#Gkmk(Dw70>SPDJtFUxuCaqeX5$W+fIZ z#9zUBHuoNv(|LS6cCMkWWg$)So$c|2`_O|?{z6dxI8Ksrls2>&BWs;Yafc~N8IF!Q zE^x?Yrbu@hmPY*L(uk=DO4(RA(uPAZ2Y!>XJRT3;9iKaO;;bnt#hF15Jn-+K(4Gg^ z&7Iy56&dRA_&bv_SFC%mN0%Kb;~8o$89;NjjN`ps>e9IoupTC&0_fX3u%v`!$g`bi z_(6xLWT;ldq(UY}mJWBAJCbLA{IjD+dG-&mRMmP%YwOTvB@1udG3X^wgs=b<8WQY> z`xK=TB@}U(UN8(+eSP_828UqOjZ;N(Kby|XZ;cBJi$FDc?p>!HZbRbqeQjYC!7`!xF3wOj zE5_sz7qfj)U(5zwCM{t@+=Yf*uOQg?QgqKynyVe~oJ+kjx6Sj(Y?%o2^yc60zu)uq zuX~uo^T;EfM^!%8;mOe=;8jGpk zv*VcgE>+5XYzr>5WbG?MOuEUXiwLg-f&5l zi)L@NQS094r?5s$QAs-8GVMS0wBp1r^sH{A-9-`9HFq#b_P;pdE39rzjL5$SV+`z} zl?4$OaUx+$@xj;`d%yA2Wqd_CaIGtW>c8_7F|nTEv*PN+rf;+2nuH;@lmeO(Kli?c zH&wpOf~PH;CJjUXn6~U1&w5W=oBYvvOBX`cfj9(Uf5a}3Po=4;CAKJA9jhDqwv^s4 zTUvT<>%C1DxjJ854%~>6)F_)RN($iHtd5D^+j@Wvx*Ref=x^TvT_<6dZ5jnXLKY*n za-1nwZ{<6_F|z!aSfw~;vX-Gc<&v0$ms(m@Ue$Y5WYd2`Q*&oiG`|I!Et=-Pd#_pv zvYKWc7}0elgt99#eCr8@>>NEUb{($P<8@VG(1y#wI8K0!R2f;|OtraR)d5v^u1J#Q zwT3Q7$$g%}DOH|7mWh`mvG{QG8giJHfZ?WX4l;ih?r(z7P!dV0crdEr*xHNc6suS` z0bt<-fF6C>>cd^-*U!)ub&+oi#INVOq+v2{UJn&nk^N z!-0JPhR5q@vga}M(~7;s-fQ_9h;DjscKELz?%}Tn8$hEnM%_mRU;+|OpZ_( zm&_)~hFx9sc0Qc3I^Wn$dxrK$>AWFRz7q_g;+P7HYJ*G>0eVMPn48@;^bK}cwqQel zlH5=_-Hb{1RTw6?@pjmpikVsQ;r^BleFJg>`yJ$tVW*$Jz}v*OWy)aVYcb8?HohPw zB@WvOQ*u(WGt=YTamk4Za&PENN&MTH%2lS;kYv0Q2s zuwQgh+qB9l(M91Y3no@h-Bvs&(a)OTNQg+EI6XKzAt8#z$44hl%$;!alo?ZI#D}FV znp|=5!bF=GX9drlI1vx+#!ZYKCr>b%F>ou!z;QIGq6p&;JQ@K(qf^I(3?{Ud?MSxw zGEz*`a2Y8A#?d%;dZ7(`j}B$^)*Um9^%=rq02`MP9)bbv$nce?V(=t;{1J(=kmQpzDJEk{N!4SJSl*8^}x`Tl07b0{bZ%*sPxD$@DWiIkyM%_ z+<*S=+aGs)mqlM|$*VJh+dq1;+L!!b$rX_}zuMf(|pM1@=vvZ3kBxME%$3;g}x)QQ7Qv+6H zrUp9QIZo{SOigl6?8=xN8jJyFdFps)=z6Ek8IYEeUNH2E*&o{MOiVuLh>Gn?8IO@7 zL{>4Jk9PP3@~%VAADy`7m4)Lj0gik0j0FSQIk-?wPA_BRSQevcRJXNK1%lIVW{p1H z_$W7X5f79G$`?axEFVUu=%IB{m`tBk$%o1HXuCT-%3ZN1ASpRJBY4m5(Cef3uoFXv z5)v?%8P66BB}}R1N9B1Z?9~>9C|?4zj|{4!dU`|Oo{(wBWql6Z=I3t{9Y_|&wB|7! zxwFgPpRElqsG2NYHjkgkV8Ki9?b9$NNbY37e-si-SM}sp7MLRX zbfhAlD!1t@oS7nDYLAJFo{%0Li!H(KnNv$k%i+EJqlEU$ z&k+|J>)t%EAfkT!Ey>BZgar=W@=5+u(}(=C?)AyPRk+KnmpOGFPITBqge}k+EJVPW zxfl@?E&>AB+A#l6Kd3uKb29t1V550?)*v!JKXXhKx!znoEi##}XGSCQwz$20^=fba zw)eL8bX~Z5-D*!uQ}wFql@0UHlGl-+PhPvuSqf5=9t1_D$Ted6Z^{Fkbe2Lg^jv9K z8M_}p|C6Hfi3La%GaMh`III6-yfOV8+5ud>@tB_tdcFMYcrGH+{bCZ2{qmQ~maSNU z2k^EG?Hbz7c0BOFA%rP|j_Efjdoysa1T>)0XrQLz2H$B=$A~!r4va<_!x;-X##9@$ z(S*o5JTQz{BRBYuoae2qAeu9)Vo~KnkeZ$WRi?W%L!Qo!E(y~Ya?0_LQoy+79&S5+ zl&VR#_i6`{-kcpdhdb-X#}LR^Es-~t`U)&%vTx?Dvw zoOxy#WVmHQVCbOVT9LQ0=tO+BNHFg`gZXpNM|$ywk9t75AR`|VPfJRTc4zzJ-h^ni z;GrMt!%RnxRZ)p!VxX|V+JV}emz<7rHmNjSDcGZn9=r02#0hPyrgyBYE%$$AXG(;_ znX@WC(r?b@mhn#~#l}`SE33CQWVn*k7L=8TwML;A2>8>jcbBC_Io3w`r8Nb;7#Mf) z_>d4eKERlf-Geb>1l3D@lG=|bS9YLAgU$fDCL~DhL)OZ+3*>>3m=Ql{xG*bHsy6s6 ze>^NKDlOC|@1l{lLJq!@qGTOVW7Z$kR>el-WwFqhsFJ!8))a#Y!;HAlu+XTFzr)vj z{1sIu(}r)v81@#d8PB1`6%7+m{;-l^6{7Z{3x_5Fy8&^Nnwl_ru$F-&*yTPs+&)IO zRxry~OSQ46pFWMKu6o*>>9av=N@?=cQmC)JZ#AluTT)eu)qc60p{uZwzTW$c>SVOZ zTHA`+?2afjN50gd$M0>wcu7`5k|Q8%*$PiaTtxh3m&JVL?u3bP*STJ{Xb>+0F<)umaNfUFjz~+R!AS{c?d9is?d~6$vLC(n7SPq`?9|$P^XfyLL zR#tOQ>_XQ=YBOwB&8Xb@?Pe<)a*Joij7v_OK7V#)-n`u6nwZ$UH22!fl$^9IS4vJ; z*zf;xaz;&J{o+N{?e@r+gh;=L=-3E*d*u?RBOowsf-8p=rB9d5s3RaKJt=wO& z5n;%`MYw`LDl#&GWp;ND{bF51bn(Q2=~IfQ#79Ji*`r)-vC)3Eu&Bs{DaDYoZ@yHZ z+;%7p!s^Mmb%M=7i)0sAs*)S>z1e~_4|%@Xf&6jUaqH6=*-}+0r8;|N<(#THxP}Y& z@YAL?EvN6YWr)aBeM=CrJ2Otbka2!Pr&bf;c~H zk(K3J9!*d!iJAnC4&i01A&a$Al9=ZE@$!Vpf`Z_XlN%b6n3tCr z8j{OqI09m3Z9~KtB9w!i`+!%EXzfX6gO&GHm z3xgZRaBw8P!grVN=#hdjcSm`-K2arQ&^cU12OxVn-dbgPbJ-osZ5tqEmRRH-WW4}$ zxzSfU_CFSLfD}vVQxZF_VU=0cC7tx3% zEtza+D+%*ne}A6#qprp(SP>XeOQ~w%L7%7vLy9H*w6a9W z)zBNQ_sKj+9R7z0=U;{rE0g9`%t;@QdjRB29ow()18ur&KcwcP9V!p>xw6y4_=qn< z_9z7ihXMo_5yof6XS$Q5E-Wl9GEJ%|EYlOK;c1c@TVQgIT}rY)L%~Ehs83QBvBGbz zYyalDb>CR`@g087=4*Dhl$GvpeA^zd`s!<%0{ntk-MMPz?WMKfly zX6tZ}e^YBf;G>o-j}~<3WDW2=xQ{X(XB-OXk5Z@OXOF}>uhi+tkz6XSxkK;cz-0wc zCHY%e1eHf@S3@C5Z32*$tGWa=g{-li+yQfp{W^}sUcx$Y4@{5L*Hb{;iV-T%F81n%gZ)Q zDh*@pL$&Nl+(7xgq3Nv2KR%(`HQwKUysJAQ-hbOFS;iyTbF7jd#M(rLYSG4HMy)iJ z_~?}h*@!Y+F{`x7N^f0+4#Ce||K#MBlHwMA@DEQuDf4seybAjLvGXcm*aV6sS`L3p z__zDcv+RC;>NX!Wv$FdwIQzs3*UJ3=HnAErucBoYOU|59Vb(MQK4XX@|FX{f`fSh6UPL4lt-`S!USB_XPVnpNjMN z*a#hm1&(;By+WF^^cFrX2HZ@m7TX<|^!8xHCU^144pd->DtxXW(BcS%IOOuYbtU@R z^9dl&$Y*#1ICg$&1X5Xmn`~_=0v~*vO;vTJVuJ}Cj@)G^nW{hv&OpbI3&Sp{p7RN2 zS5Jpj1V$GlCn8JTq3GwZO;q2ZAji}gyXYzWnEXJgEkw4+EcyN1_190Dm~9IRN|-%w z$&p31b^9Y%$BnCacyYrbCkt+l3X4q$4z&ACn^Mr>Y*@hUD+3cI1Vs!KRn4$3k$EEb z+@3MjcDd0Z3Lpn;INi)b3f<{gH{g@;$CJiI)h9(v znzO27c2R-#D*hZ7&i1Ta<+L0Qmuo^^bzXILWq1gVD~GqoPH@9IJ-Qns^qXSs{L zkG{sc&hnvNZJUTHT|vN^3K_P%GmouwDXg6<6(g>f0DOcdqJMs;(YQ{ue~Jed@aFn0@sAu z>`r-eSTK_-FsJA2Y3m%Lxm$47z@zzl)_^jP|I1h_iZJZ7WKN$oVp$%~j8f+Jf3YU> zx#Yj=oF(I|OERCmjIbGJDL6w<$rYK0<; zdqQQa{fT=*3wnBbV&mhg%jQf>o02jiaM!Nahg@qfTopL2J|ZI6)?&l<;)qoj${s|v z$>7I>HSJhhUx7tKVTD60#O3r-7Q1uqgjDTu)u-=-1PXRS$_XB{OX`1UfJ}jGqGdac zvvy_+nrxb*-0$3VSHRvCckRFFy03nv;d;j{x9piYFFAPLt4EK%Ixiq~-b}@FA^U)Z z@#oRz`keD9QfERO@_3w|yYH^c*YM|GLi*~k2Rs#eFd@%s%SHJSEzTs_ed0(7q~NnV zNGWze1;=)a-UO8=Us7_?d&!Y+$uzxU%GkZ+KKpr3+bLdY$*wASbZfXAjeBn`l3kQi z>yO>l`>9*Qe>`Sq_(`=foDVhelHvXQ0i+Xa$7-hfN#||lG?hW%@^X!#rtRCG-oBkb zuxZmKoz|(K^&;lH=W!>6+{OCro<00vKeoo*!!yCdd4*$`BM;qk*NScY;AJvTKU-Ko z_t3|8U24Mep;n$@;ywSg`yuThbAMA^(=P%1;Eo+TBp>f_2WUNow4ZbTszAVhe4(O) zKP9)kB214-_h--%$n--;F!VLAlHjssayJ|s+GS`3(n6Vwy3EF^UXm-AhSM_U_$d@&JL_X&3|jO|sI9 z4PD|_loXSm78)O%=_pK!$x06#AH-`Cib6t?V#k++g(e~Ht9d@+mip6Ay$^*!^D}fc ziyrzjzjnFg`zk(lIFY}HO?QhF-%fe6SOAl!`t;x`8oeR$9#!X;nPD^|EZjuF!|W9F zabNz}xRi9cS5Q?KHD2)^kC5wG7!(I{)Sp48Gsux19OVp;tIV-GtuRL=uMG)y_=g82 zS)$S}J8xX9L*O=f@Hia8t{Q#=^AdkbQ#@h=KH=dwXdczYS#ldB@dXhPBibY(7inVT z{*}MwrUqXWzj8G@5#Y{Z)pM}bnGIJA&mVqf_{jOlOAdgKTz+{4p5kUhZx2Jx!>^oQ zI6wE>S1oSJ`wGHsW0wu@XK$WQIF&!!m}}^D_U1aI5N*`&hWCr52>Xfm0rIONq}iWO`vZnQsqOjUNZZ4Q?&U8IzbNj7GT24( z#5H(_j#_F(N!>amXTE|KK!=blcSK@E=d?{DqqA=s zFNlb6tM;IezdSrBGC!$asruZP-#qeW1=0RPk|Gf0W~wPwhYDKsoN}iYETlJzx;LxAA;-@%i<=^2k@)NY|^v zX0p}iH};e9K0Pvg!`|>VsBE{$u-0^TT(V;5-3&K7WvYJi6WcP=MMvoNtW7s({Ge*i zB(32TRtl<7)T_q@zU5D@qPbAfuy3jtjicEZeMSLH(kRSl^Ym#rW6Pj9!w`Mea(K;o z6hk8yDFb0mWB*ce;gD4cJMfvt`4OfsZSxuC%e*e3_s=)KqTFp}jIZ+Qyz@E6-8M4B zhiuz;2D?MWdA{RxSyW^f_4TpCbX7k72W54*j>+~SgjRURiJxN~H@g_Hs5GXY?>$#N zmvYI(IpyL1)qN9c+XPmp^?u2sSF@w@LW2UbA_H;YCNe74-;o=WotBm0OmMmIlf^S_ z{$bUD37G-10Yonw6&aNfSRLkXD@Gp~8E)78C4{KTX%4#z^95neU~kKEirI1o&!kgw zj&8LNJuBTzolaHr_H(yQn0o6qR6qCCceP>?f5+)z&pGasg~ca~kaFe4Dn5Ci>tdPL za|h)fFPzdr6R;HBDbglCIBSB1BUo{$ZqyTN0B9AkA zh1|7Z%^lmfvqhLpKYzy+a>&YtD*1%rJNd(SSRG?2x$^Q~&*ktmdpPEDYAjW%=5grQ zqS2|{wT88eb8@$roXEJmJ^71}WB5`o_sh>3iGuXQ{&Rq%z`5g$HSNX3X8z)_f z8!M3|X5x+0PS8-OgXCsc=`ytgN*;JU(+@jNQ66N5pXn#VVMDFl#iO=gNTQhDh}BSt z;H6(=^5b$Jo7y-l6*W*WN=3_IWb2zo*Yc~TJULs^{64}@jPQ%)!T-zr#-Jrp{GLLV z4Sj4FKGBq-r+3IJDdVq*smOgcn5xzs-D*>}%&er-ad6%6*lLEHlP~{$8ZoJgJr80P=U1^Y z1M;oem;rs(nl1GcQnoHrxBvf?$>}Xa$|to9vLF9nX&Z3jQ8y0ftj4+uBO5=t3ZGVo z6oTEm{DJY1qHD;5>V7!_j z#Sk+3{HzpMuCKrlEO0di29AjCj6fCHT6jV7F2qm6h9V`-JXW4{nnXiClSHNZQtr(? zU9wunms|qL@+?+p2BNgMg{r#7_=C7?CN+{stY-#tyrvN-ujSz3*hu_0F$ud$Lf zh$HU)i5V7Q&3q&B;Dpkinl(ke@2VPZQzCHL^RS9v;V% zKY3k8&L6(lly?<>>MK&_P?tiP@@w&%i!WFkGWB2NC*G3IuN|LzRDDm>Z5j$3cG==A zyiNg)w$vTSKm3aOhf}bfvkLwWTbyxMp7O`q4%L_b`y)O8z8^!F&l7HdwgU9TZ$bMK zs>4vJ?5yxS{O%(s>aYH`;QM*OGl=tYDpcS#9|L^@47U^WH*tH5yrnn;SL|dA4*}jc zcDN0{W6b{erYrk*D1rg_*AZ4i%~`=Iw!-~y=YV72>wgKv%b?wlcqN>Gc|X4UY0C(# zp;Uf0SWJ=J3ym-@1UyMK|0DP=;`Y+OB?;n}2zG6!M z-vBWWbX%x`y@9)r&H}s%<*EVj6hN9Mem;PkcAbizr0ENbsRH>E!50tzmBnG{d=vzW z8~ybA&S+Wn7_>zxdiWEEGR!BKk z9PF~6(&L6i-4CO0M&By}fcGK%_k;EafIq=5d6a$X8yIio!|hto34|;p-#-BEGl1I> zHU+p2#Qh}v8{h^W(1xd}cqFgheh6a{u>$s=fY)yTzCfj7+3?6lArmr87<0`aYUOD=X1D1kUBP;clazegHnaI9e_MJ$BQ}yk# z-&+j-TC{hM8F(0cw1OX>zDVSw?z~3{aF>1>uEe*F;;I|#-A;1>k+zLMbOmT|We^a7t zlO-rVABQX#gI5g|{KnybNlYcj7BSrt5e3n(>6{|Fsv$WQiZvV6!oHy?04c#vg8j&Dr;k>yK`Eq9^L zc*l`fkz19cXW=Kub`sx|S5ZtUvR(=F_X=k}%4W;(YJO~ZHO8#+dlla~oF>0=e5=a1 z97A0JnQw#)rOc)wuYN=0a36Ug=vILKRJI;pIYw|p?q0lD_{((PkMu5~NeUlrA4464 zy@JbfvH*E%A?=Wxq`}r>%(8y?5#=v&B!GtWmpsULRh%-e8Y%)T1xyA^1jGTR0ZIWG zfGlN3c-BM{(2tJieE1aj4CGG8C=GXT|D3R?3wUYdW)~w(7h`+>#S{;S1~>qT#vY1q zBtXVd#BM{HlF`@t4S$SwBNPiXQ9K>=-iJITy>!UAhNb|v0wk}JzjT0?KgqM=4>Zp! z-v8I}Xv=V&c#8TA#G7xlk6oG_#-4Z{RK_!w?R@o}_BnYXK25Ec|CGyfEPHK)Kj~ zvM@kx04H08vBxU3RfQ_fnHZO6Nbt4uVE6$Ta1QP z*)K&KV#2EL(~!-38a(JVm!;KW9lLO>ncgVkUfYJ%o?D!$lOqM#Mu z_W-!~ZfFHZUDuefGMqQ;y)a{Ca|oN3RG1&)`%l2t z^a}FgwRr7ZymKNWFKYa^Ntyy?e?W;{q#0jLCxsx5$*iK-g_@T<8OP2^O- zAmAu&-Fb>=W(UzMgq?*rW>o+{3xhS99Sg_@%mQ=)cH+7%*ykYJ+=E2*NN@c~qIord z!$k8N0H=r+93W~a10b%279arteik9#Mc{i8Xf4_e0FA{i0KzV50wC;C&{{f(D;;(b zEt3FR%izBp@vI2M%Lf$zgkQA}0K7HuTXT%4>2;!J_&1jkwIJRWq^kw|wIEy@XnJ-M zwHE{Gi8_Gaxr69J@Ul=t}$N(HCx)J6ZI{?7DaUWoi=nEBqdx>rWjhm(dz|&2q zh<2YKy15vDcy4}+Xb?OJzao!CYcOL`1OLPyy-LnkeIu!87*nC}PeuY>N_PZB)<_yz%X6MYl-4}qUUzG0Ra8SLF4hahz=hmdZL%;+X(yZSfVF)5Iyx2(RUsMApY+l{_ng;^fd6EejRX% z=)0kS3;<{x0sb?qh`tB=_qzZ)0SNc33s6S%9KO%N{``Ibc>F;=U>4C)#B~(rqte_2 z*aFxMI6?Ho7l?j@Fh2$lKS3H^sv&wAJiG$FUxWQM;QfpMI{>nN``VaX0sFCPn3owX2X%*l-^liHd?~()F!*P0b{IR~_4;=rK#GLi=y$=BB1iVWu@BpzO_y@g!H3<3Ml5m(0JPD+uxP{`13Iw{#KvU+fFJiP zvH1PO650U38xLL+j}V)%ikQm+yiP1>C$Z#N#M}u0*i(R?+Di=m1WN~Glo87eB$l-U z0KT#t0l>?FUk+&I9we4`gxJIzh~>ktAQAxoLeMEfyv2jWN)8j76be9GrHH5WSz={f z#L6vz{2nDX89Yn|{V5%Qw}?$`0-Pc??EtaqWyEIW0N`H%bH$^?DiN;oUcghts$2lX zSM?sT>OepW06f&dtp>De2@nf7MXYWBa09WKQvv$`@SpV{;3ToxhiPa;XddQ|8=6NvB+f8hKAOPP5fCj|d0KbK8#1>hAe84Qg0b+||0q+u9 z(uGrV4a6=$xC;&f5Z5xqvkbg8mJwSH_Z2q~TM7J?Narf>yXq9N)vEx&U9%5xlGs}K zHQft%k61I((hPHp1JDIHL97)#w}O|pw}`E41MDW&5lXBRI2T3|Cb$6Lt_N;cBcKfq)diPQqjofOK6v2sldY5`^0Z9=3t@HqhP%+S@^MJNVmv zfY@dAfP;Ydi0yb3fbZom170U~1@NwD18gI9C3v_JVXj2HJ1YRY0We?H1UN?Q>Q#WZ zi0wj{U55cjiCx>&04+#a+5ZGZv5gT%h!05k!B z_YKhf=6(R^d=vB^LK+{+0f5Jc;64bv!2^InVuwKMkPFa3>|xM*81x=KN$e5u|H!+< z9tE$DmH}1)b^z`LfbOHO1Hj*7;O$$0$3g#bggsnC>=$BF%XKe1mN1R%a+fL{XVS2qAa z_t%K?cr0KWvEShPTL++?*zZ8|br-SU2LfgRjuCrfFW?lhKkO!UVg~^Hym^?|AL0Hd z;Qt9U(0#JE5Xak~@%HP){(OYkU*Pta*NB}24<~_t67ik{y_0VNK<}>(KrA2wPzIO< zXasZswg7ek_5lt84g-z?jse~x_738H=VfAlYb5qA()%vr`8(YHaW4R}{3r0=1Hb>O z0D!;uEn*+Q{K137PSp_mcMf2H*oWZvKPi9?VjmUbX^bYE^P2@Yg?&v2h-3E8t-Zwk zVD`@-?i?f@2*03x#DhDChdKa{5)a!=JYp*G$iu{AiiwZI`G$BLx=GkUeEeI)C*%`% z-Ag>_S>kTErOX0AJDQ3MancB|lX!X!@r)Dz{4)_gs{sIdSsxM423|Je%sx&$ClJsG zc#3!~!sZ?$o@W6DiBDVw06&;(@%*U((8>p10r)Jy7kw-*>H@q>ycm2I-vBs4yd)M- z4*-72ZospEQ^Y6b0Cob76GuPHOIHC706v2989bE1T!!?OBYb%W;4t7_;*&D~pfwqE zrfeZT)dhh6RPZ=05&*Ypz@2uA_;m0vBL&a~0KFM60N`FR70?JkI0=;%#H&I9pkIBQ zcnxUP?jl|Xp6X5#$J~w21Yfi61-wR5$G z*WZAndP@K=6Q3Unc%AqH&|9ztaFlpMECA+)7lvrL{9W=Kij?3}^h~u)ufcJ>+0N&-`>+(hb+%G=}I8OYECIEQ2auxBN2y>MM z$NJ|ccK=w1C905o?Y&TCx&(76`;TziB#`dWV7Q~>B)UqSo^(7o|3;$Kj^fbjIf z7V@JD$Oa`(7EPt=2~)5j`C1Z#DUMB7Ul^5-bR)P}uxT?c^ProISx_Y1V$8Tuk-lck zHcFyFW46Qnr^f7{6ubbf>Gl16%t{z?+QX4m58?*8;ViBi?m)mE5SkY6yRp}unY6zP;J-K4=K z4HtO&`a65NT^h+XFtDz9<3LYGCnCz&RFF3*b0o;QQsJA3u{f@bYRICitFzVR+0qN1 z5Yc28+&s-)nH>WIy^|+S+`M^nUN4xDX^?65arTkKl8(-Po%+Q+>jpMA_jz1!0AWve zKjgBpyUo+*8tCx27SFDCE$H=hYvg*3kmK^EvLLS@&!vc&u#!ykrsmGB=9VsxmUgqN zu5zKPd0?{3@Y3Jf*V#MJpV!~nmDkhPK5;=^{keUp8rs!f+Dd)YN$u1D#gL0KsFgDD zEu?(xO_gtrxNxIz4-RiOQ$NhJ@St2Pt%tb-ratB0Kwa?Nitt-O&jUXh%0sz6E-tF1 z#c<6~xc$KKP{nCDd7#`w8xX$?zZqN&AQl%bQZ!|3n_y~#OP%6K@;e_fZ-A={cba?o zNLS%U?OwjlI2nI#jTX-C?yxtHbCnT??!xkkj_qUpmSgo;>)8+kb{@zXe^&KFV2+{pF~IIQne`; zT}Wpq@V~;I2Ufd;0 zLb3#o=KW&GZ5`ssH!OgN>?!dV1r)!QtRMWIxA zSTu{Fqb!zRj^7{#j05it7Ua;CYwb!(?b{m6wzO)m`ZTye-4|Ay#n=gg8qZ2KIUV+ zb^&W(3)vznqu1DCC_6jY68bq?ihHh?u|~F>tzawhZp>=7hOK2yRF0L>X4b-5SsPl5 zsq_~dxq6bVW9_Vib<#9;A^nl9XI*Rq>!up&WIe2xUBvoWKO3O+Y$MymHnS~kD|JCd zav{5fZDW_B3~!(VREzu`VnjV`JG+c#(x2H5hFfOv(#_@U3hHB5vYqTIb~U?(`q?h5 z&RxW=W7o4AuqSUeTJnFhFR+`~Zko$(W_wU>enA857L?GHuhzj z$8Kl)X+FDy-AN1BUF-n6n|+1;fHr9%yNBJ&?qgqNUqhR)h_@oH&_Bh>5m(n5ByLV7$ma@a_3HEKe0BhWD(nstmtQTL4 zHS%TbyX**i29xtf+RnaDJLq!uEM0~hg`a0XU`N>x*^k(d*$eC^>_zqx){&Rf3iea> z3VRjP=9RRHPO_iTx7p9xFW52mOIpo-MSo(yX2;oY*l*eI*z4@~><#t@yg&XX`y=}k zdkb&J|C#-Ton(Jy@36nIciG?BKiEIndsqoQLeH@GackBo_HXtf`w#mF?=23oVN?f( z^A`fQvD>(v`*8>N=T08L19=b+<{`LAJdB6)2p-9!cr=gUv3wj}w2kKpd^}#3n7~~; zi6?V6PvNONji+;*`o#sC**u5m@;p9~=ko$y$cu0aw}emPrMwJpPfzAk_*A^HJsoe+ zR`5z*#jAM@ujO@oCZEM;^Er42xSr4B^YPAc17FA&@x^=zU&=4QInhSGoUh<3`6|Ae zuiU_&xkyejooT{~ABY@8@6V5AX;1H~2UCLwt}Q z;t%sj_@n$W{w@AEKg^%t-{w#9r}%gH)BL;q2!DoukAI&(%b(-V^B?e|{D=HU{KxzS z{uBNpe~G`$f68CsukzRU&-l;rX2mi7Oa3eVYknMW^!%3pj=#=-&)?vG;3xQ-{Ez%k z{4M@A|1TttXS5hbEUjEEKEM4X5h31YlR6cdC?B#C6< z7AYcCq=|HqAu>gl$QC&wSLBI_B3~5XZjB;QEK0;AQ7XzrxtJ`bh^bT5+AYUfdvV6kiZGiQVF6u}9n@_KI7@7sZ#vK5-lN zene6fUJj0-SQNIWba5s!+;#J9xb;;?u^d|Nyzo)X^?PmAx0BjOqHJ@I|#81SF;wAC2_^EhByeeK3KNCL}zYxd7FU7CKuf=ik8}VE5JMp^sy?8_X zL7Wh8ia&}!iMPbt;?LqQ;-vVict`wAyes}L{vrNJPtkkgJ@GI47rigu7axdI;@{#! z@gMP#_*e{yVT&wgaa?(8;hI^zD{A4j4a;c-SbNpzG<6uR42-ZMttgx^pF!WJ zYjC$=2t9zA>OEw~tu)E>70h>?lt|%JWkp*tw1%2!I!4R^nA1H%4^yZWYmKwwta!Sg zzD`fmcj-BLlpdpR(c|>2m4FA{60HfA%Sy76EjRA7PqoslbSuNkw6d&hE62*U@~nwg zzExlqT1B*zzC(UiF@4o4u_n<~R;g7+U$n}t$rMa~qj%{rMkP04jy!>GrM;Lze+^@q zdub2tx29NA>C1E*-ADUya@Il5(-Y*z40;z`jT!iLbOTOBucf!>3i_Tk9VehGtqQBs zss zx~(3o*Sg5+v-+(8YooQv+H7sHwptfkmss1ZOReqJW!4Vsa_b7~N^7Tem36gsjWvI1 zeZ9T1rO&g;7nlJ?%Z+p7jCMt(|?X8#k=$@@#QdxAhD(w_*Z0V6SOy1{OYjJbNFptGyZ6EJ5qaNt~@SnT!9ts4hC_Ij1h zz?i{RN9yNq^#DYpmvgN=_tpwCY^OA-L>8n7|v^JgO-lrc&W*o zr8;kHOZz$@!lf#Q?8`K-%SL(iU)I*?>GSk=_S=`W_cd?w1S}u*)IzH(wl7y+#%d&7 zS7u+K$T?Sx6e8Q)yymWfP~Xg#4z`8z*WT=t+R8dpI7`j9zS^s-vS_Z3 zt=c5Ix}0}j=+|i?>@>BpQ{}b9%r7h|4Y+WWT;O`2cmvnB_jx?sUCrHXovrpRUBJ6^ z0q^p`v%0{ay<3-@?&jW}{(-)p-VTqwTjO^7;0h1QT8~dQ*BH^&82Qu~5!RS&t?`Q3 zWN&qyt!K3G*O+wHdP5nk8k0e_1wlPy3V)9lg}qOwrcZO&=fk1BUnivBM=Je3{tu`^Ac!^Wu?GXKR|MV^IDfqb;5Z>mwY~TR^8z>UDdnLwBB@;?6NC_AQo(J)meH|rPapEWO}z4Tpq)2pqeb4{qn&zuqny~cC@1???Xz_>ZJ|D0nx?XKYhkl8^NoAH zH@q4b!(Vl^_^OdRzG^T4eAW5q7ni9KJlxGUUybBpSAzt6y>^3NpynoUSA(AX;zAQ| zp^3N9@LlNT+u#=(ehUr1g@&&}!)Kx4uh7e%m%fR=(C}Ai_{#Uh(8$K`%SMgMt@Onm{U#w^H z_?mpvvkBOZ9QAAib|Ys!$cNp?RnL6$i}j2bUlYHc@xpH6*K=IhP5gRpn_paO_}6n^ z*iHCaBS$^cguCIt)`YJ$a?~@>{Ng&3{yG!B&V;Yi@t2r#UE(drWrj|fp;Kh|C^B*= zGW3c}`7QC*JFmZqr^v{u#Dp*L`kVNROnECZawsx#Eb-PmQ~ruf`brF6MP7HW-QX8_ z`8DOV*u-0G;w?6O7kl|O_{E0bV#9B-;j7s2S#0<#_VVYYZ{jaD{1qF%O1yYpzP)nr z#$)&`G4xAJd?hBH5<{oh%b$s_#PDxsHpP<+9`2r1<+s$tQ|`?VuieluH++?waOH-N zaznq;$O$uYUGH@G5^sA{Y3S&gJnEgHQ)%dE4FT$vp;Kk(R2e?1On5!@2A&CDWy0%O zJnE0(M{CevH*(V&HrS1vw0;YAlMmHKUU~|P`efqQQ&-qc{Ca8&yNSQX#IGl*s85D} zJ&A?g@Ly}f>&YVAP54?9zSi)qCy}UkCjL4TzRrZN)A>+h`j3(V6TZy*t+Q2j^>#E{ zRi1%n+stMt|5Sz)p&_m9#ZHr+Zfga+L@m6RbiicIhQ87^x4E~s8LGPtEp5$w-bOxu zBX8`4LabBjIe9~;Sk%#DTin^cp;;_x-srbflM)RbouV4h(BG+}sVsM@_y>Brd-?-S zjLPCbjLP6IBh>zezP1>e%HmwG!P9P#B)WGn5Mq$Lb{#472+bCs< zy-0W~09IR%v^@GOm*XKj)^D?G`w!qYq}qvly5DxQ@|$)$VahCUUCGRQcj z!NehrIu31;aVR_)hr-iwD5H);A*wi}Nz0{Fce?qekJ&EiD$}-G@9}v5p{WiN%35u2QY;N zB|6UvN;Gc;x`T$h=B+??(6Flp9ADMJ)lKULBwqN4 zi`tp16rR!vEmk`)eUOyP2vSgU|A42jvtO%(f?Jxgfp&! zmG<=>&4Y9ZGY+FD0XoG>4k13Nm)OC**yGwgN?ln;g9dq}qXLI{ZAw-uvWqtM40xc= z7@-jEbr~fRtei$LLX>sX+c}z6|K@Ix>+*D(K}x9}h2>Y~TeTbeRNq^eucu!4sv!=( zrk3leT4AA{a^q`io}Tg+7MiJPepQLT%<&D)U|bjMf=PDhOp$>>%^P~LPZ=5-Y4bCR z)ZkH9nPz{vmaF6u(AER3t=8Q5O9qu|AV`d$gu((n)J8>9h7OWh-Q`spJGP=MNoQ5+ zip*@csI(+tT~`lO%RYW)CS8aR2?Shi^KR~i#((&6)~f|TMzx~LS$vRq{5*hTr1 z{FMgB2fsL|qo-$mb4$-A&!}rbRUq_-EuOBP&7+P+aZprLqV!Tl`DIFdZ!D!+mp{Uo zwvKS;i(2JtDfG2e`&uUXS}K(#c!YajzhWOtp>L={&6MV_P_rAX1yY>XsX{5K6`Hwv zp_zLZ6&Ks|SW5jW#31irOgROpWdtdk)~%?27z=5$LJiPSOoH4Ce9ZYi=5il%kuewg z;7hX?Uz)x6(p(hkLtjPc?Tc454i?7`W-M=7=ellb z;~-CM#=%GjwYIuj;**jFY55>kyK5eXJgb|katB$?psQ(J?jX-`wYdh5Gz?m4D;~~Z z0oApwwS)HB#-u@!x_r^f#w2%A{B@14!G;DnRV5)#^xH# zm;U(@^GHLZ3*21S>>6}7G&aG-CHmxRJo*&Ok=#}S^f?>nrd4IMOG3#t6kT*u0sTe@@=UQ z%fiN{hWO@1%NyOxla{*%D;77xFJ216#GgB8%Ng{m&VCp>q?K&#u)3?<$Rl@E^B`|o zH^^GS#h@)KchE1#C0PwbS}bY-3Ye{ES}swVY80!EoQM4ask*i*D`_OR{By?Uo>Nm{ z*>27k>UgvI>IjJN}@iG?%UGZSj%O&#D-CU!i2slUZ!4!l-;E|;H1`3pg&Rz9z zfK#A&#JiK0XC>th2IU;$ymqjyxh8ioI0p%Exdwx(=g4%y;I3Le7%XjzU<-yVcQ6EG zLX}8dkU%Tg9t^2&a$VQt8VrHZatA|m<}PVGWVO{SPZg@#rSvgWG6kZf7XQJSg_1<9Xa{0y>a_u9r72^ z24^L?5zK2wX^{Rh2r7^CU5=E@1phPPIyS4$k%5PB^N$-Mt{$Z64>QJ8X^6$1#bV8j{+7GM4~)OSf2GfJZ#Fg|)sbPQ_qq2z z_uO;NJ?Grr4;%WEH`U~EM-$KFpTfQuVBc}*Wx+nS8Q916McBvIhJ9?OU?1Bo>|>jQ zeQaNXeQZy_KDLfyc`|(p4%~XAW%)SU7GohmD;&nE>xe>L6p)28NPs#bbz~aaLD6On z{Z|IUupnNJjy62_Y?YBFW~RfWo~kxb|9FZg_qb<2&MC*5m72c-X-ZD@$>M;TGg4cQ zYm>jryRfos7sFF}ingAHKVZPfH7z7bP%Ma9$35m1#F_u1BA~ZGpTiMplUd8P>MR6s z?OLZ(x9cc84csv(w5SeebUifz4;N9fCdFaU5-6fsNejodvKaI8+a1@oEUyEZ^Mf?Y zRq{l_E=O!jv{*|@8;x$vid*S!EEj*iS!R7TQL3>&G_Y&PY@GIBnxdxYd36EB{8rl* zaX)CI#Krs|4cuy?E)1^;pc<;aT?>k7WT{_+ooM7PkT+rzD8fRVK=Hs~BoT19H-gOcW8zs@ZjJ%2V{BIcbdYw9qa! zT+74VP3>c95JLM$A&e|~YnbXkCa6PvGV)q>@3f$AK`cePN$>ZLtHo!DVUwdHUPk?J z>BX8j>^IiaxJfOq>4vU8fxKNAnB7dT56qSZW}~%xCB#Z$uxU2&d_6vrAsYOG0~&at=1ljsV061`2H zMDK7Ety+p;HDe5oK;e5D}icOYj`iTqkY624K8guCE+eRj^hW_@fl1CpLiU?M;+#UytIvB%`r@A zrJ;XvDy~(+DSdYXFAlqnFy5|&Irjd*Qaw@H-NMr|D0r{J|8BIS-8Qz3%f?z_HFnal dljgzc$NFD8BJnHk@=7<^Hnd6w79u+|?Qbbp<~0BS diff --git a/core/entities/user/User.php b/core/entities/user/User.php index 1d5a79e..b1a5698 100644 --- a/core/entities/user/User.php +++ b/core/entities/user/User.php @@ -1,7 +1,6 @@ setPassword( $password ); } $this->updated_at = time(); + + /* @var $user_pic \yii\web\UploadedFile */ if ($user_pic) { $fileName = md5('avatar-' . $user_pic->baseName . time()) . '.' . $user_pic->extension; - if ($user_pic->saveAs((new AvatarGenerator())->getPath('avatar') . '/' . $fileName)) - { - (new AvatarGenerator())->remove('avatar', $this->user_pic); - $this->user_pic = $fileName; + $path = Yii::getAlias( '@runtime/' . $fileName); + $user_pic->saveAs($path); + $this->user_pic = basename(Yii::$app->avatar->update($username, null, $path)); + if (file_exists($path)) { + unlink($path); } } } diff --git a/core/forms/user/ProfileEditForm.php b/core/forms/user/ProfileEditForm.php index 9778d02..2b1fb52 100644 --- a/core/forms/user/ProfileEditForm.php +++ b/core/forms/user/ProfileEditForm.php @@ -16,6 +16,7 @@ class ProfileEditForm extends Model public $email; public $username; public $password; + public $user_pic; public $_user; @@ -24,6 +25,7 @@ class ProfileEditForm extends Model $this->email = $user->email; $this->username = $user->username; $this->_user = $user; + $this->user_pic = $user->user_pic; parent::__construct($config); } @@ -36,6 +38,11 @@ class ProfileEditForm extends Model [['email', 'password'], 'string', 'max' => 255], [['username', 'email'], 'unique', 'targetClass' => User::class, 'filter' => ['<>', 'id', $this->_user->id]], ['username', 'string', 'min' => 2, 'max' => 255], + ['user_pic', 'image', 'extensions' => 'png, jpg, jpeg, gif', + 'skipOnEmpty' => true, + 'minWidth' => 100, + 'minHeight' => 100, + ], ]; } @@ -45,6 +52,7 @@ class ProfileEditForm extends Model 'email' => Yii::t('user', 'E-mail'), 'username' => Yii::t('user', 'Username'), 'password' => Yii::t('user', 'Password'), + 'user_pic' => Yii::t('user', 'User Picture'), ]; } } \ No newline at end of file diff --git a/core/services/user/ProfileService.php b/core/services/user/ProfileService.php index 29d84fc..396a368 100644 --- a/core/services/user/ProfileService.php +++ b/core/services/user/ProfileService.php @@ -21,7 +21,7 @@ class ProfileService public function edit($id, ProfileEditForm $form): void { $user = $this->users->get($id); - $user->editProfile($form->email, $form->username, $form->password); + $user->editProfile($form->email, $form->username, $form->password, $form->user_pic); $this->users->save($user); } } \ No newline at end of file diff --git a/docs/develope/Modules.md b/docs/develope/Modules.md new file mode 100644 index 0000000..77d1122 --- /dev/null +++ b/docs/develope/Modules.md @@ -0,0 +1,81 @@ +### Модули + +Модули располагаются в папке `common/modules` + +Папка модуля должна содержать основной файл, например, `BlogModule.php` следующего содержания +```php +params['search_rules'][] = "SELECT title, content, CONCAT('/blog/manage/post/view/', id) AS url FROM {{blog_posts}}"; + + // Добавление правила роутинга + $app->getUrlManager()->addRules([ + 'blog' => 'blog/post/index', + ]); + + // Добавление правил роутинга, в случае использования классов + $app->getUrlManager()->addRules([ + ['class' => 'common\modules\blog\urls\BlogPostUrlRule'], + ['class' => 'common\modules\blog\urls\BlogCategoryUrlRule'], + ]); + + // Добавление локализации + $app->getI18n()->translations = ArrayHelper::merge($app->getI18n()->translations, [ + 'blog' => [ + 'class' => 'yii\i18n\PhpMessageSource', + 'basePath' => '@common/modules/blog/messages', + ], + 'blog_public' => [ + 'class' => 'yii\i18n\PhpMessageSource', + 'basePath' => '@common/modules/blog/messages', + ], + ]); + + // Добавление пунктов в меню администратора + if (basename($app->getBasePath()) === 'backend') { + $app->params['adminMenu'][] = [ + 'label' => \Yii::t( 'blog', 'Blog' ), + 'icon' => 'book', + 'items' => [ + [ + 'label' => \Yii::t( 'blog', 'Categories' ), + 'icon' => 'caret-right', + 'url' => [ '/blog/manage/category/index' ] + ], + [ + 'label' => \Yii::t( 'blog', 'Posts' ), + 'icon' => 'caret-right', + 'url' => [ '/blog/manage/post/index' ] + ], + [ + 'label' => \Yii::t( 'blog', 'Comments' ), + 'icon' => 'caret-right', + 'url' => [ '/blog/manage/comment/index' ] + ], + ], + 'visible' => \Yii::$app->user->can( 'admin' ) || \Yii::$app->user->can( 'BlogManagement' ) + ]; + } + } +} +``` \ No newline at end of file diff --git a/docs/develope/README.md b/docs/develope/README.md new file mode 100644 index 0000000..5d41cbc --- /dev/null +++ b/docs/develope/README.md @@ -0,0 +1,18 @@ +# Zertex CMS +Система управления сайтом на Yii2 + +**Для разработчика** + +* [Модули](Modules.md) + +#### Дополнительные параметры Yii::$app + +1. `$app->params['search_rules']` - Массив правил для поиска. + +Пример: +```php +$app->params['search_rules'][] = "SELECT title, content, CONCAT('/blog/manage/post/view/', id) AS url FROM {{blog_posts}}"; +``` +Поиск осуществляется по полям TITLE и CONTENT. В качестве URL указывается ссылка на конкрутную запись. + +Если название полей отличаются от TITLE и CONTENT, но, сгласно правилам SQL, указывайте ваше поле, затем `as TITLE` или `as CONTENT` \ No newline at end of file