From 1fee5e06c3a89e5ae39bfe4a34ca58b0ed7107c2 Mon Sep 17 00:00:00 2001
From: Matt Kingshott <51963402+mattkingshott@users.noreply.github.com>
Date: Sun, 16 Jan 2022 10:15:36 +0000
Subject: [PATCH] Initial commit
---
.github/workflows/style.yml | 29 +++++++++
.github/workflows/tests.yml | 43 ++++++++++++
.gitignore | 10 +++
LICENSE.md | 21 ++++++
README.md | 126 ++++++++++++++++++++++++++++++++++++
composer.json | 45 +++++++++++++
config/snowflake.php | 57 ++++++++++++++++
phpunit.xml | 16 +++++
resources/license.svg | 20 ++++++
resources/version.svg | 20 ++++++
resources/wallpaper.jpg | Bin 0 -> 461976 bytes
src/Helpers.php | 10 +++
src/ServiceProvider.php | 49 ++++++++++++++
src/Snowflakes.php | 28 ++++++++
tests/Test.php | 36 +++++++++++
tools/.php-cs-fixer.php | 52 +++++++++++++++
16 files changed, 562 insertions(+)
create mode 100644 .github/workflows/style.yml
create mode 100644 .github/workflows/tests.yml
create mode 100755 .gitignore
create mode 100755 LICENSE.md
create mode 100755 README.md
create mode 100755 composer.json
create mode 100644 config/snowflake.php
create mode 100644 phpunit.xml
create mode 100644 resources/license.svg
create mode 100644 resources/version.svg
create mode 100644 resources/wallpaper.jpg
create mode 100644 src/Helpers.php
create mode 100644 src/ServiceProvider.php
create mode 100644 src/Snowflakes.php
create mode 100644 tests/Test.php
create mode 100644 tools/.php-cs-fixer.php
diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml
new file mode 100644
index 0000000..4a34685
--- /dev/null
+++ b/.github/workflows/style.yml
@@ -0,0 +1,29 @@
+name: styling
+
+on: [push]
+
+jobs:
+ style:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Run PHP CS Fixer
+ uses: docker://oskarstark/php-cs-fixer-ga
+ with:
+ args: --config=tools/.php-cs-fixer.php --allow-risky=yes
+
+ - name: Extract branch name
+ shell: bash
+ run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
+ id: extract_branch
+
+ - name: Commit changes
+ uses: stefanzweifel/git-auto-commit-action@v2.3.0
+ with:
+ commit_message: Fix styling
+ branch: ${{ steps.extract_branch.outputs.branch }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..1e27e4d
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,43 @@
+name: tests
+
+on: [push, pull_request]
+
+jobs:
+ phpunit:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest]
+ php: [8.1]
+ laravel: [8.*]
+ dependency-version: [prefer-stable]
+ include:
+ - laravel: 8.*
+ testbench: 6.*
+
+ name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Install SQLite
+ run: |
+ sudo apt-get update
+ sudo apt-get install sqlite3
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: curl, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, iconv
+ coverage: none
+
+ - name: Install dependencies
+ run: |
+ composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
+ composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction
+
+ - name: Execute tests
+ run: vendor/bin/phpunit
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100755
index 0000000..a68e7e3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+build
+composer.lock
+vendor
+storage
+tests/World/database.sqlite
+.DS_Store
+coverage
+.phpunit.result.cache
+.idea
+.php_cs.cache
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100755
index 0000000..7eaad29
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright © Matt Kingshott and contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100755
index 0000000..a0a49ff
--- /dev/null
+++ b/README.md
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+# Snowflake
+
+This package enables a Laravel application to create Twitter Snowflake identifiers. It is a very thin wrapper around the excellent [Snowflake PHP](https://github.com/godruoyi/php-snowflake) library created by Godruoyi.
+
+## What are Snowflakes?
+
+Snowflakes are a form of unique identifier devised by Twitter. In this respect, they are similar to other unique identifier algorithms such as UUID or ULID.
+
+## Why should I use them?
+
+I've written an [article](https://itnext.io/choosing-the-right-data-type-means-of-generating-unique-primary-keys-d7aac92968c6) exploring the benefits of Snowflakes over other unique identifiers. However, in short:
+
+- They consists entirely of integers.
+- They uses less space (16 characters, so it fits in a `BIGINT`).
+- Indexing of integers is much faster than indexing a string.
+- Keys begin with a timestamp, so are sortable.
+- Keys end with a random number, so guessing table size is not possible.
+- Databases handle integers more efficiently than strings.
+- Generation of new keys is faster (less than 1 ms).
+
+## Installation
+
+Pull in the package using Composer:
+
+```bash
+composer require mattkingshott/snowflake
+```
+
+## Configuration
+
+Snowflake includes a configuration file that allows you to set:
+
+1. The data center number.
+2. The worker node number.
+3. The starting timestamp.
+4. The sequence resolver.
+
+Most developers won't need to alter these values unless they need to set up a distributed architecture for generating Snowflakes.
+
+If you want to change any of the values, publish the configuration file using Artisan:
+
+```bash
+php artisan vendor:publish
+```
+
+## Usage
+
+You can generate a Snowflake by resolving the service out of the container and calling its `id` method:
+
+```php
+resolve('snowflake')->id(); // (string) "5585066784854016"
+```
+
+Since this is a little cumbersome, the package also registers a global `snowflake()` helper method that you can use anywhere. This helper also converts the Snowflake from a `string` into an `integer`, which better reflects its data type:
+
+```php
+snowflake(); // (int) 5585066784854016
+```
+
+### Eloquent models
+
+If you want to use a Snowflake as the primary key for an Eloquent model, then you'll need to perform a couple of steps.
+
+First, modify the model's migration so that it no longer uses auto-incrementing integers e.g.
+
+```php
+// Before
+$table->id();
+
+// After
+$table->unsignedBigInteger('id')->primary();
+```
+
+Here's an example:
+
+```php
+class CreateUsersTable extends Migration
+{
+ public function up()
+ {
+ Schema::create('users', function(Blueprint $table) {
+ $table->unsignedBigInteger('id')->primary();
+ $table->string('name', 100);
+ $table->timestamps();
+ });
+ }
+}
+```
+
+Finally, add the package's `Snowflakes` trait to the model:
+
+```php
+ 1,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Worker Node
+ |--------------------------------------------------------------------------
+ |
+ | This value represents the worker node reference that should be used by
+ | Snowflake when generating unique identifiers. The value must be 1 - 31.
+ |
+ */
+
+ 'worker_node' => 1,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Start Timestamp
+ |--------------------------------------------------------------------------
+ |
+ | This value represents the starting date for generating new timestamps.
+ | Snowflakes can be created for 69 years past this date. In most cases,
+ | you should set this value to the current date when building a new app.
+ |
+ */
+
+ 'start_timestamp' => '2022-01-01',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Sequence Resolver
+ |--------------------------------------------------------------------------
+ |
+ | This value represents the sequencing strategy that should be used to
+ | ensure that multiple Snowflakes generated within the same millisecond
+ | are unique. The default is a good choice, as it has no dependencies.
+ |
+ */
+
+ 'sequence_resolver' => RandomSequenceResolver::class,
+
+];
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000..f4b880c
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ src/
+
+
+
+
+ tests
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/license.svg b/resources/license.svg
new file mode 100644
index 0000000..d43fcb9
--- /dev/null
+++ b/resources/license.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ license
+ license
+ MIT
+ MIT
+
+
\ No newline at end of file
diff --git a/resources/version.svg b/resources/version.svg
new file mode 100644
index 0000000..fafce6e
--- /dev/null
+++ b/resources/version.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stable
+ stable
+ v1.0.0
+ v1.0.0
+
+
diff --git a/resources/wallpaper.jpg b/resources/wallpaper.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c3caa7586b6e7cdc71077593899969e227504f61
GIT binary patch
literal 461976
zcmb@tc{p2Z`!*brltidVLZYEDMMR5)Rt!bVG$JJEpo&nms-`L(Y*JNXCMqGO(3o0P
zooKaHvrw(lS-Z`2+~}y=^Xzx^dEVprz29+s?_b{+G`F=@v(~!r>pIW#I^@BhjdqAMybNb&;|DU<~pKbE$z$KUi
zYf=9{+m1;N+MEFb-F(D79-s8zbAU8~_Yt{a
zc`meA@rcrQReOxj77LwKqe3dyrq~tgbK=0KBe5r;*;mU?Uy8baW}^3<*+2jM^BR-^
z0?W(GL*yY)C}h*`m!hJAf})}_3=VuLqYx?x;2VWRBR2y-+E@$*tF5Pn*U}>!7?5{R
zceuC&%Kd-+fPZ>GNJS_}Ax&OR7X(Ji$s^_d=>yS#8&Uw`_&;IxpPK|u1c7c+04c)Y
za==ypKlXwC_fExsUV#wuz;0D}AihB|i1#nkFGkGZ-MPBsxk?_Yi)N}Db=jCXIYvk@
zeo)OA+pCiw%ve$-^Ww^Kb&dKys&Ix&@^$4`Cye^o^3@qW*4a{W>`w&gGo{3+uU98S
z7Rbgbauw0c5NQoRoRU7oFCf&^T|!>TH56`51z8Og
zi;wG1B5^KGE``jnajU*4A(O}NvS40i>-0H59dKyMoPK^Bq;D41SYxEhQ6(75Tqx`M
zV+lq?u85l6Plby?A=q}|A`TJDfGlRwS$!pxb5N8b$Y?k{jkSrADHL<~z-6H!-92Hb
zd_6fNF8Mt{9LEqhO)xm~GIG2k5ve+0_QYy5qo3)^7*T~2sfr=s1B26Ya|lT)j-d}%!BNu)~#`7`|4HRUoP+v)aLapfg{Zz%I
zD9ZDA;T%>OUd}8q%N;YLGxEjm1X=H+trb1Sha?<@rUa-}3vdYCS=%`5YQKa;bZ@ZS
z$rkn+<;Lq%1YluLnzrBdNfbefN>eP?Nq*lZZa|0(~k$OuUFy`~OmQQxJ5ZAvmK9F$AX8$M4ayHGmaC0s(YoFI$4
z^3!=d9O+~6a|tqE2GFp
zg;ULH7#E8%u2hsyVk}XMJ>#>bTz(h^6s#NU#k7tR4tN<@`ABLzA(UJyFg2q!z>y&r
zWosY}^aS*re%}B?qAN;X3W0EP+^1p*jd}#JE8UXN6^BElGBQzekU=jUc4jdjgc6ud
zEU55S^Kb@(W~x0Q0=@{w6PJfJfQbR=b~GR&NZGPjB3x15Pe#SWI)-yf&&=?*um(ou;$)=6h%S{e?Zh{gQ)A{ROsE|zYZb4erX8ImaB_Sh)#l9xG_
zP2x8@L(?JD8kopO^AN4pJUi1#$R;!!HOOK|2Cc)PP>az9xs+5d^UXvb>$L1i-|d}G
zb*h!HkHIY$LgK^AD?luqheCf&+O&3%BXX4O&T
zyurgU>9j@7)3uYuKoEe>JL)!2%<*jZ!Fhf1ik@uE13dN0_LdHT}?>R%upfnMV_2D2G9qBxX*aDY08SqYF38IbEj5BvZQQ7b4$Wu-C5A%oL81-}8x&}cZV
z00iez$+|pvrlu#pSEp}0424xpSPQqr7pZUuoKYkTjwKNs$2KY$B8Zn6i$LaRS>!hm
zMWew4;X7#pKT14hW+tNIH>giOPX#Ji7t6%0wwe)jqxRrNlvBH-lfw3wCEeFhC$Qd#TypsL6DSS
zNGBa)6$6nAfmk_#L7lFJCeFpsp{=%Zso(E`tbCA&gzHXtXD3n|FtPFi8j+g?68Gwi
z1?!A9BQYEZhcdwkKohxS3zb?R7#*5F&t7tTFg5?6G^F}?c&1BKzk
zz*CC+dYqgOgwBLKh|x6QIHv~|*;g*I?_NnGwe)!=i0bnbItm%hiXk?@0_cZlD5m;Q
zadZd#03(ytEy}N%uv&*uc^A96;LzG^RDP@>?6DIpvs`>Ai;MHXAa_G2`?>2}US^wYw-tAJpa=2w%}psI(X}^wMjQIa7Hm0J2gR>k8A-O`N
z+wXL0+;a~@3!fvw;9d1W>=ILQFk{go49_(phC_Av=e_jsEMc>el)QpQ1E--C(H6n0
zxx6)rMQ#GIm={uZVL?AXTs0d=!)=k*e=ag=5)d`D1J(E;0y&Hb2NrZ?C}9mIQ=C9m
zdZ3zy7)vwK1iTt_9mb#X(8IF<&=0a#)@vqt=SzS&EkDGOGv{Y{m!bj4FSl(=r)^N<
zr!sOIlqnq7Y7)ti^!rlu!{s0t5KI;i`;Gf6Pbfbl_ByPY9Ynq96dDfijK+t%))KD&MiDO3=Ku@>OsarWNrFoCM*V8)vc5?
z1Xp}ay$DGOfyntd5<1K`Eo|
znUqX6)|Cw_AvMbD^mVgw&QB7%(a{e+~#rsWxbr%kbX?Ml?!TjshabG3ls&gda5sp6jGKeQKRJl#%ok_
zNFl~zpQ}}-4~ESc@PWZb>xBSGFeF6)t_#JiAa*7pjv=L#FgVu8-;7Fmpl94I5}=1=
z@UR64oCwU#yONAv6`Irume$osbP}Vp!XawbX%+%XCY_@i#F9l}fpD9xcVG<}ZZoP+
z5Js)>M2J){KTVVj?3m)Mj%BPn@d6vAu*P~vj1!N@&II6wMM;y?5Sc6oF_5f)jBO-&
zmm(WviiU$!fO#MbauD){1)>pVvOirrAf3Q*F7lrrU!d2o(|;4dIhL0^2~=ppa#xqD
zldU{iaIi}t!%tnQ!qDe8Yb6!3dYtpwr@Y1;URDKN7A&$)pwHX8I&++ZbsL8aG5SyE
zb~*`NHzDcCOZq;P2j*f{IUfv9z*&p}f;b%IoiQh8PgI~37LA5T$=EQAoEd6GmQbY^
z&OsLXp;eh-GA<4R%?Lv^sb>oo2q?uN?pm*yr|J
zv_C}Z2?6#KSujIzE^MNxZ@dV~CKfglM307y1dyTQL*<89EYT>z3C}6A=0Twd7V?0Mf}1*B=d`LxVIA0eJvG7B_2%jI+q)0`liK=0vTDMGQb$veSV(5jHD=0k+E}
z0SQwk04^4xVl|sRNYMp%@v_fRVfnDtNiQ81T~A1-um$`$Dr$iiMp=g}fWiQ@MDfGO
z=fPmH89CEY_ZB#~sW3Y*R!;^foiu`RY$4{SDv%%i`xKQxNZKXBl*ar{3{W0SSwMpz
zR>5v#OlsAaC5P#oQ@>)q_~-uB^Dm{XsLPlGi=+O&Gphk6a9gR?VYEgOJb@qqD4tTHV%5zH
z0jP&<3ed54FNn1Y8;Or>4$-Hx#={m6fY>LBa+BNFctF+w^H@R>vVsCKnXGR5Z%V}e
zC!OfN49+yEQO|ugY>3N`60sOk8iIF)kjX(Yn86HLd>ADchFx+rWc3oT(<~sTmZo(^
zjYq$raa@IQz}3qE+4fKn(Ti-2zo-f3n&_8VZ{10bT&)KjZ=M4G=P0
zSp}d5^=St`$mwa0Y3iTdFLsuP{{vdI-*aN=PkM@a)1ud<$$vm8vnNIpjqUBHPSFo_ank>VA2iLiEMxp@{gaceQCG`35;=D%g0ySDx1h=*hxGIUz!##!(R=
zh}a)EiZ(L6&!GY3B2CbuiXB2XAy@l`j53A=E_A6RT^&&Sa%NJeip)(c-JfVQx+h#0
z5a$3aho)`?XF4eIX&f?8KHz}akN`^+f{n|s7mZSi7)_kBf|rUQos2qtI{Bdu1*WU=V>Mt~<^C{sk`N4Cd{E&82wC@i*%lOmD4rf6t31m}m%
z(14{#!-uLe38H*GQ#>HD&ZbS9p?LE7A%)JXQ9=exIDoTaGHPnllQ*F9B1L`|pp0Ov
zeLzN`7OY^fb^XpDfJwlFE6OGuI%vO8q&`0m?XWv?QUmg*#jd{%UNrp!vi{*$Z4)&4
z&5pY@^Ua}Ov=2pPO`o?$SSRnzIa1?Jz3{r6Y!IQvWSknfdN;_q*|uT-*#XPQk%751
z>|hRXRq_}XsakM8ulKXngcp4#tr;0^uXWB+iz;&N6(AW94&%Hwb~O)`F;$J7GNa}0
zO`&fErwL(WqU4@xtP6eS@+2?G#Vl_0RR?8
zG(;9Mf(c@}oz-tILjx#@1ggMbhzQhxB?PfUCZJXuFJ-nmJdpD`^U1zI!^iurjU4<=1@l(4D%Tn~)
zj&}r~AiWlL)yRyRWJLDX5;NEUTW(g?nAQ!HvGyb?32sD8h=+5t&^=+Y7}kL)N%7(M
zG|>YWlLc#?6nZqmR^&hD>Vl*OhggSEI_-c;t$>t|w2sOiGn)etEti-5vv4&{A(u1<
z<~svLpYtMvXUKp|Rm1Ys+1OPz&Xf>fb#_tM1dSguKs_@kx3ZR9k{eE#!vTSGYTJx=dhyw~DRVR{RCJ7fxE_eo`o3YZ(;upqe(p89FJDk~{7uX~r8(^&>r})Cv2X@-l!7)_%+;Cmkdb^M*+C0E$
zn2DBJ6$a6yo8%SZa(P>FFHUjgoS8ycCx}Q5-ej#bfD|mw|D8(!#I8|>E0{~@`fbng
zgp7>QxM)dij;bXAGEL1M1vmo&5HI$+5AIfOxJF66F^a}JQ7
zvx)AEasJSA@o4-vJi}F{MZJxb+zU6Kf?CjMZd8~sZ
z6^vg5a=lj$@S7-UkVWsb0XkFnrAk77eS%{5Ml55N97seK(JdUs$-%l|-93r1`0?-=
znp~dD;Wx72AV^LTZGb@=#Ci4NVha%6HBu&K6Bt+x$UA}a@@JH*i#-pP!
z2BG4I0{+{UT+!wpye`Qo!)GdlAtB-zM1~}0>t>v8#W|{Q8bpNrbe_}cVBtd;pjlvX
zPU`}G>~=taF@TIBCpyOEL*}w%@L06-5Mxm;t)ei9!u(Upn4LTB7}eG}ySNkED}-?BYjfJl(Zf
z;c1n_cek94KN{C+Xn!?sh>)l@UV|K>fzVac@J3c^Zq%zY8YVNeRwT02?6u6Gpx`*<
zO14Bsq{(8cnKE-^l3AGZwoM8~6{GRzr7&-=fwZge}BtoV@$A4}W9ieOnYZ
z^Ss}`OWGgY_)^*O`N87ui}BBQo@V~A>^MFA
z;b{m-lyEUeh0-nI_Dc=rvhc39T%r#Wi{B8&jap11K^SW)p#F5v0}#%KbK}EVKx{Ka
z7;Sor4-R3-;MEXlQ|7UifD=P!0KbNB66J;s%U1r*C5N$?B8F`}8$dee>7s(+^jrc^
zqY}hDi~;q(3x)t_)8z%50{&yhGC>Gf9n(O86hupR0WyZjp!LWN&i7`pbT?rEII_f1
z#Zy#aPkDr;9D_^zJ)NUwP%E=JJ_up-BQ6cd*-W$a->;6ESPV;y{CAlRzAF3iZCuT#xbLq%Kcyada{BI2-Kh}0-H4k_q?0P0
zJMK;#-8`7O_GOpCg$v@Z_Se@^Px&&h+{z|%lf<_1+w5liAPWdy0nk`rRBy%x8_uk(
z)FclwATCf#a=jCtZM5#9yY-w_PjeLiyyhWG!#4wRGuC1D_%I~;?~a-fqY^X0JCP$k
zl&cA-D}+?rJAadRN6IzqW`!x;7g#TiDL6u6sOg#gxEkN>W0uYc0gGL?Nr+&QEhr9%
zV;ZO;4dNVZD^cXe4#fdfwr)nA;>C-pYdjuY4A=u6=6EN5IEpc#N&*~+-|mbe&>7Mw
z7?QI@K&H}A+4`fY?z{v9&ybEF;+#`J+*lbGu1Ln1nF$q%X2cjDi~JZ|@*t8nfJ^S-
z{db+59i-Y=ST|rg!+`2?H6wgZs5D3hIRhA$PG`~q!dgq?t^QObP7{RPg<=pd&dY?I
zu7^eaoMF0LY5!8Z`N*~q$^1UqM(e%wL(LB+4!t?tm$>o$Z+L`qZS2YC#u?D>KNQ^F
zzMtG}_oV9Es^D(lK=6}%k5ds>?2d2`|F}B#{M)uN`j>y5ddrpsm>=|)oiVO>z!CCV1kH_V;#JrX3#DVgm}*QqB&lC@?NZwm)@ZY7DQC~aeoOFF
zpBUGib$m#BdxHKpjsu$_BX9-NAu}qdwKD_8km)dxup3OoL7fO)WCCbFGr|(Fxu^Uv
zAg=)y2?4`?g1m*UA;YR)pGOZ%5D-JXV51)g(Sdv}=o`J9$&>87~OhBde=95gfrb$x&
zbFRK{c|IUB%7DJs0C1M>AX-gLDmc3Xu1hk+JBVY!t3P2fFsNZsrhryO=>0sPZT$Cr
zvo=}bxg>dd{g>O{FI#STzVbO*6^jQ>Roou^0`9nV`{{g9Z?ogD
zU)KxWDA1#Dl_2Ygq@;bR9!E!FuK(M$Vf0mGwnAI-Q>Wd{N$V*cp7)n$AL)Jicx$Z|
z|JtHtrwyik)nxftm=H+!o1O7G^j{@elcWcvq7ufm}%g@imx#*
z#(fwKXumHGHjTQ`{7^3NXWNCLv2$U~gWmH)7Zpeq{+CKmp?9ed9@+E6OJ~a!i`@2<
zy%#hibC-@DZK}FfWz(AYbIa^5l^}}?ouywp-LFjSUmYH=*L|8jyuH59%yok5bTd75p8ly}Y&7Sn*lE=jqZX
zjw861U22n_FLi8uOWEzShi@1ApM8dA$__v7NeaNYMZL_t`N;-WBY^!dQ<;jmkQuL*
zudB5~caak3VT^Cm;63hM{=_`*xzi>F!K;yEi~8BpM4TfjpM|K#JHtcFh+J%lEEY%*
zl5m;P69>31Y8VJi1{j!`UKAR@P!J3)3|KmHEYLxcaTQUe^Kwj}14&hc$Eq@7y#beW
zfTqvQ0vfmHv8*7#4`ru`8vq}{L7Z?CaP%2WV8Q9;SO;+f5d^ep?ByUp>cRmiHI%^>
z4QHfWEa38&pt4XvCM3{0v{x3fw&1A4#g-vb?cMA{W%AxUSo>1of6cUD%fwX`cH
z7ajT;7thx`)PJ&&r1de`=3bS(m)GJQOY?m@UubmPh`D+C_@Cyl@E*Con6DKe=JPUa#U7|3Xn7TBF{*@On94
zeD13rrSX$Xf9Y&&>bZ+Ym)7r5Puh>ia>o;tZKdyDo&I!zJ;^lQ+bm}gyThT?Qf;z(
z`>@|*=8H-nj4|(eFZI>o*oJ7=`fTGOqal~qJ>??f?(ub-`@T$@;vLkUq_M`YhA}&A
z`6t3jGK14WS>>DP_!Z<&=B!XJ*zad**oA
zh0cIn%$0=Tyr=Tbgs?$s7$rkV23NDng=McptulZv&Jd9X7!CqPFoOfQ-%3C)nHt{(
zTg!BGWvB7Da&mxSS98^lGqhVk8wWgvY{19pp~n4G0{S%M6(E$gMVD>KN29WTqD?_Ik6%riyvwq?Vu!z(ATW0n&>
z2;(OhHN)ulQGu;zydZ%}yS;2AiD}IF%3X?M)92{a0IrXV&8)z0Fn+sp+X=ab_|op{
zZ!=oYdivQ^@IxlZds4fcj(gG}$&4N|+4zVoC*$&!s7Lst
z-cg^YV&G4odrmI4FIS#B`RhTL|Gk-#&o$bfs4;?A*4cnGfiH+%ZO~^kRnmta`Dnwz46A@`+eg18%KfQkU8ii4~tX8~@M;*VYpi03QPuKc%=f1p`7UzRMy#
zW^>_~B=GyHZU2qaRKIR77mwp>)=`$5b2!|uTmDq=)|+D7dt;v9V;_ESWB;xAlR<4J
zJ8I*si&vh+jq5)79LGjWKZO}AeX-dXx!iN6%<@nQw&ib$%zSr_
zc+2Z|7sStAT^8(>Ep4r|^Nefq-SMlzNhM_I&jY?czHFSla`%GZ-;sX*&ewi%dOq`)
zH}mFJJH0czgG#kegC{J;lYMh97T#4a);Xpb&sXY@D8BHj+mgXTV1*g+xNy_t7SX$0~Iqix^_p0
z-FEM?dtW=Pwe#|$+pS;2qZ52nG@=uH;?&-*3BLveBravYe%^B1rRikPm+b}3$1WbI
zd>H<*HX>zDaizcIjhBw7eBDX|Qj+o6YddFd&oh)nP}E*$KWG5mnG}x?Brwbdmd6xlI
zgV}Ev5)Q1>YzEK()NSMu0}89jEK^djyT7V~Y(?K#kzfK+rS>SoXMyjXvmHEeXS&M4
zbnUnyCvmJLbweK-ceJBp#uC#PDPOf|dY*pEYC6UwS@TQL7N3L%tCWX6$J|EBdlLf}
zJ888r5q<9z&UwU*u_GVldINKzC2%Qf{3hbpn}=^sPe!r>Q?o=5_Z-U8f4I8k
zxaT;hX~#p)lH5i(eGT)xBO2cFA-(bNS4hj_w?(Uo+_^yCTk`K{S&p^HiC(kAs|^S0S|Y*=TDojt
z#&>ahlmnNG=MIn)=D-|gvAp1tiSe<0)rGCHreW<}qY;E_0Y2r;*p-U-R&kgChZX*s
zmV05Z=$w(B+IRCZ!C7I(Lg2L^bx#k+A&$rG0^cS(uRHr<1p8FSwY4<&0E@^)^HA$Ox}j+CXo8dk5&L`PK(SLGqEw)Nji
zKazj8J)?qpSFxeR?xy*@?LVGZ%%0vmlv=&<;jfjotT)iIBNe+1{;Y4ROZ2gJ50XRg
zhW7jqrV51`S!^uJ^Bd-SGB<1Q*w>`{=I};@&54od+acGEzKwjo^6q70q0Z2sF{LfG
z%_nvfy|~hKjjKx1WsNF!?f3BnxAK5*p{0A5?rxg@oKw}EgSYH??QI%;M9!~7*|D?y
zZq5_W?Sv287lIA9Xi2qh#NWJr32$=D=+~IgDd5=kUkBtD|9BdGg?X$X@_qgp(=EDN
zlh(DV7nRrdzk8(M{PnuYm-`L>di%WW?q>CazY^E4$+X|CU2Dy_F+R9^mqQsBo_lxb
zi=W%G^JklPweQMpIe()??dELHM`O9ez9ucto*4T24<&xsbPexUD!ssjyLxoLPLveI
zeYk5aIF*vQ5~qBz!jUyY5E$S~zM>8_UOH8idz>}CbrC`pa(!Np*`-TzgfHCief~WtW#S$gyTXReQtI3uQ
z-|L!f?c3$|qc8FO{S3l)9CiK(59n8y4-hCJKMXSaE}n_(TnNT!rSE}`TPN=*5iM82
z^tt2s0>^UwM^0<;(sSnQBi*;do)o@^@3~qJi^)+HEZ>7M`M_IGyPtarL?r1{dxO;>
zM%F=UT*O<8cj+?_9zFXd57juK`C`dc&j$U-IgcStTSsRuV_2s^-5rvwu=w&C?NM!t
z-uvWd_gh8%6UPf23TI&Edq>asH+Px8DP2DKZ1XZA;DY)7x-Uug{w5Ct=k*V^oZl_l
z0&zV+Nm?E`d+cLkWA3fUI@kHXKF^wzzH~VG^V1&EXaleH?vp!e1$xi(c3f1539lNz
zaQT(7Zu102x)7n;GqmqY;pV{Wh<6r;i)l0~5$Bl}Prw7VUq_*x?tmngmYY0LT>PuZ2~u63^*uhz0DtGK
z{0Rl$ZT=Y76H!)2=cHFuXGTuIsmASbF!y2l{hU(UD2c}fTK9ZW)@xX3?@Ikijf=3i
zyqVn>Rn>fJ5f!=bbU64X2`#=3-RN0`|0wcDypw6`UnPR|*%cP3tm46JYW&E9PG-~;
zye*-%Ww+Y3j?0%d4*Ooet|jt(H)l+E-mk9roa0jX?Z!k~Rae;3z`d}K{AYrk_A7gW
zsO?5U*b8NtI>QM6_Uqx{n(HMZrjA*vfa|{(+*-eTtG|DE?bE1NNjmBCm*fskx8?o8
z>&DE%Pao+T(Fn-cb|wh&(X~}++ui*ZyOAF}C4aPZtD|*F&|mnH$E77LT{+~^(uwxV
z`)m)CwH(r_Xvr)J-gQiL=>3a}-1mQ4uJ@naTQ<>UlUIV9FvJ`k9~YKNBP9T##jFi$$xzzLbvj9LB~K*c^B0BUHSZWbn=Ma;fu?d7q^cmy$+n%
z?REQd`wLIkfhF6^>=hO1v9rcn#k$-3nOi*XX;hn^%xu_O{m^UlmOFF3jEOKHL~A@}
z1oc-~zq^U`|(N>_4{!v9CMpH=p=;I1dq$`PMPX9to;kJ-o!c
zq9Y9bBx;bVp)u9x^rcl;Fm8MDmDEQ%yc}3DW_f@kdt0%|+9m7d-Tb1713CL2ez!fj
zOHVR>{I9Lck$y+-5BYh&QL#-qO*wpc0%|1`c8Azgp;h&m-fk%oE@qQ{-{q-EBeJ
ze-$03x*s;N+LDl*U=1ZQMJzaE4+qHkV4?&+4vScLjuCzYxRYud1?|k+o`Y8%A^3Y+W=o<
z=aZfJFV_R=U-!n^Tci{bA}3TFM&;Bzo$>m=EZ9ZM6I8~kA=Agbm3efJxg*;(1I5wf6W+inL|6QB+45CXsk+dn17Y;8{ot!R6C
z`M7uJ*JA>$wUc%gBbQgOmz4}$pl8T
zZqTXu7W262{RUALxz}4G4D@zqOM(Q_&8W*^_r~_DZ~Ojg-wl~jsdQh#tHYhUQzn`#
z|2nbu=jG#1?b5~vnn+|O`cH2$4lIK+?UBsNE5lEbLx54Pypp)G9YYSZ6}c4nRodztWg
z3o?}z{-}e||Dp>WC{xkJNN88JgVD=^bFfoJ44O;(7UYE3xZ)ua$9n*@trfb{#&=|Nt4WQsFo
z%wnuI-2g%M!1+L|hUB>>FvAgnr#s=!Qfum4
zxRhaCIOKLiE1ehj_{1p;(Y4~b`>(v}9W5;fa+EUQurc#jZx3Eym;k$nwNwo}lURNF
zTAlKJ%dT7Ui<;m0**j&1THkhBe*bl3{PW9ifA6~H_fqdEEoVbVq@Md^TeyMt+gDSr
zTILxB2slpo!^w(Z8ZvOZYpMcP$Y!s!nEj&X4nKh91!=-MN#lUFZssg>;3Fn
zJz=j)w^)tx%nO47Y6sS`J5$d=UDY|?!F_Ft8lNUN0z3=0qWT`Omk|g2eGBmLty0IV
zJ8h96)u!jN2VBj*I*Nd2ze3akf#-rdiCJ7M3bPp`zU5MHjLQ~#;Z)Vlbh*Mv{%jvK
zCadtusPl)!eTO)%qNjd42Lq?mS}BpGf9g-+v6_5YnqADVJn(UJi<3#Rud@3$bvMhx
zBWDoqKW|Q~-q>sK=Gx7gH?S){u$3*>T1Fdwd!9Ud3xv^
zO8xI$?WQlwsU3Sh?94q0v-duZi}IuGxAU@)o;;^6JA{$S+@HO-2oSvbB)&VGXYnz|
zd04vN;Od0#P3+5|J$v_xZF6Vzn!;{>*NXRl?|QWAO@g`qpJ9o#EzDQuE-!ujyH@lcOx2syqvN32D5;LlgiH%ZbekgYs!$e71OLbqmDd}`{
zp?BES<%ue_cDg0S9yY}|>DjQNM}LOC${E|jzD+%fSau!#+@HsZ4SUr*y&P?#vU7TQ
z`H(4JnSFBGA(KvJ`kxk4S}Tv294lgyeFzZ>UX2|yH_fY@xF&@2rbD|6x??bs35`uT
z-WSkM7Dg@Px@#LR`4?d_R5dnjdT(+mY%;KNXJ1P1(Xm|O)L-fMtwGTy&PP3$_c@8-
zk(FHO)Q6P`sx(bhN;8m=$_dk~sS(8@=ucE~aoY{Q!hIEaZ+bVqm(0G=$hdt${K?8~
zp8jnA(Z+;!dce@_eX}!iDK2^L-%VBe=fL;x*q(L0duvy#e=V)SFv1I8Cey0A0rPcw
z75($BJ>}KD@o$H^y6q}k6C3i%CIXqY&!>La%RYYlST<2{vcRt4!h4ELbbkrsQ=XK
zRAPdzI+~}r*XrKwH}CEc+F!IQBh@I#GWf-kUzES=-@pCi+37nZQ_fM(ueR34SG+Pe
zgr`q5wCwOq581mPBh5K-Drfi0+a{OG{5=-V1Sr2-^GCZ~ksWYGsNi?{c#M~rS^3=_
z*RWP19#6*JJ{PEQ1NtB+A
zk4J+oC_2K`tNaRL=j;sURZg9})9v}!N^P44Fv(C*O^7GJQypG)Rdpt(m96=dLb&8ylIt5z{moc%UaPJmliT
zfuuVI+7ZO;;eF?LDrdIj2w(N}?z7prLVtApt+FewwPN43GX^KCF215p
zm5}<%uTGjKp})L=JZivfx#xSwxLtW>YTJdw{#Pj(i5a`h*QOpyUP~KokDadj)622*
z;?o_A5gPV8-As?xI376Q^QT8t?UaAr`H0(B7wwPC{fZBMABk&V7ZJAk#nAm#SnEl~
zMz*oTKD+#y(-!<2P<7Y$ssuzfdutq$FfT+m<13-*2{qRaTSebtqILUJBuq`~{#ZS1
zpgvo~nZRH)6*xn5KSX_TjuuSIsn~f0uL}GPD=s7y+{W9)nVx#zXpwtWLNvxHYK3Sz
zUY&idl#fcVqV3Qd-;{ZLC^|y7g55E5YspsMYB=+GWvsdJ+f5e}>-YP_hg`F%-8B30
zqr;=k>fMi+JIOXav?s%8pGtxUU*(n9p~VLa?v5;5iwu6GZ*xfBK1-lM6Sf
zBiZ;luU!!>n$*XpBKyXaU#mR{kB{yVXNbf8`ev-9ZdY=2dkNzU<9*bwyie*UOme^e(`Ycyy6JWK^%KYaPc7`5Gu+I&{@AD_+0y41x%6Cl
zPW!dGt-(2?`wxFp-uvNcj;^{(eMJSFY;~dOtY-_PR9aBC%WbTxW$<=j*PcZ!Oyi8f
zfi-j#j9PrnOq*)tOw9{d@Sc+;&m{KdynV&SRhy<4|cl~(=wadFL~DrrdLZ?yC%
z?ry-7>oNoXM~CXJbGGfoog=q4(QAATm9j^--8P!iUNC=orQLJK+2)6~1mc(1v`Y-U
zrao6ka%W@lk3Xa%XI|+Hx%&4oRjR(-p2)7K`IKu=v+ye2>zn^C(X;46&Bp5SDF2OH
zepUN)iyMM}{YyT^dRJ1=*2l3F*I$+VrWyEOBCJ#E@#BY}D$U_mPmwCeLoMS*%82`VeE5LZ4j
zHs|&&pFZTcc|CjJ;}+0cB{Qcv3hUTd-`wdsl=SOfzBakHUUHfo{>`-S*5
zH*5CiC6|V!yy@cQxs0?yMUQf`;o;nnlH%phFg@3-`aHbRP-0ZS-nbNB;HqTcNb@lm
z?^fe(d7zJ+GNR;7ms;%UE5+W!*9_qGmDPibv2S5PIrE;72#AR5VCS%n|F)oNntzDxQXOvL6>b%|eGFFlFf_Uc>Pi_0%tvvL0mRY0o0*qWNH
zi$(e60@$UjJ;u+AMw>mA%#PxAO`$u*hMyNiy$sJakgCg^rhQ}r6^nZ!@yj*>myXV1
zcILL%8QFJch@PoxnQpfuE?hdIS=-^`C`>Oxg5Qe~l($+sJlw*=Ww7ScsQA0ox$iS~
zhD~>>`>zz;RZV7a6R0H4bp)B#I!UOai6*I(Xs6`{BfNC)LQK)8
zgrvqe2}zbbsmmH6TCI>;9Y{`Lcw>%aBY~-2iaR8Y70F4AUoupYyws;f7*eH*GbGOv
zBxOb?g)R|X$wS0*jK4(kCI%p(JJ7~XW1+>VbmEH1az%iq1|-2GF@O@I6h=-AGLa>E
zEJrWV0usiG*U~Em6h}yF|T^;N}f%Nj~1%|2Saor&C&NO
zH1!(v%XP|rOO4Q?pF+Ckw=1n$iDHFuUY6NUro6p+N13K3w_%mnRsk_)k?3Z1p=TP_
zYj0G0E>F$fUuj~6>EU~4m%ZZGk=FGPi^uJjmKrJ0ZFxnL4xPgJRfVHW{0&mGQk>7O
zcsAVjDr$%5~~@nJ(U6Dn_DO`^e8z&m1wP
zdM)b!xJ1)fXW)wj3#7DElxP=rW>ykNHAT_r)0N9&Ngn0yaafXqX`O{v_CkjhZ=GUP
zds!hk+*8s1Xw{B2j?cX6%i*je=^xIH&jqoHx1jTY{^IWsMvB?fJ(ye>5tVKgY@?F=
zfFaqN3mh*VaXm9J2gYJ?Jv$En!v0c2$-z{`_-W*jLqMvP@3b{w1jj|QKNd6@qIqr^|f
zJV`$^XDG=UKY~bOML9D^jAbSbLL;NHGaU?gwEP$tA9DZ+0x~E+<|G%+RZ>@}kmWix
zSx#u7dHuwlw{=F4McXSNqv*MURmdyk3?{qI7W6jFPE1Ek
zrx1C%m}<$=ma2Li9V#Cs%D~;AV><1Ky=*PiY1R{jbhAl~H9I)UX0tn+mx;C(d(JUn
zqT2(i+@&_Zk2=6hm1xnFg9+wRgC8dP@5g-}Uc>5-7kXV=HS=@n7mcMx5xVFZUvG}*
z24G(2ojQeWyPWv!j^gb`2TkCzI&MtNTY6~o1M!a$$sRRecxGHThh|WGEDk4v%*>GH
zCQ0uy=17%*vO}ZHi33NR9-2Hs`PhiwospAv4ft+FuL>7%b
z!!S}ZkWw_lljy}$kQm@`ku-3GhcMuf<^nh7UJ6MGZO>RWypREj)%O=0rxU6
zJmyCSLeLX@>?1ZS=Oe)Gv{i
zKBLjqO>UE;XLr>-f5#6euPK_!rv2=?^*Fhfn|5jHdvzLH%X$oF3H3LZdc613P%3Vw
z#OYGxxbg7P$a`707;D(G^69VN-g@0U`^DUeCn^@gPSH`f%u+T^K@AaOF|#w5ZLPFh
zMvy!eQ*7YehFMTtD;7v_%hucT}D(OI-xAS<=f>DKAD&YoiQ
z{BN=H7;d%bnQZ!epNx9L7V7cyBj1wiacGBXP5j4#(7^1i(@n{mfZmy)MaY?n$0f|c
z4+W`Od(2G7hi0T(wHYc+$RJib1OcZU+(h6|87Dm4$+%Idl6EY`C!o|@cnx??jKy$r
z4Gs>$l7Qoz6{mvNhWHuqJUcK4g3Rc4EsUD{iO{zr!*k8}9T}O1=vo~&Wo|%w%}Ngp
z#Nh0$fE}Hm1I}(nIx|C|*&B%5ou3KvjCl{t(CSWkqJY04z`2?zCk8-MTRFaPDLI~eoui=OPW+r;jRet
zO9~t(K!*)+Na?Bwor>`}H8_AJPTWC5q9a?8;8kQe7ZeUPg+7Z|Q2{s>$3u~Bbk`Jt
z3kp072@?gu9%*$O0vF^&7BV~~#kq#CqrkD7oEGHG7N{mrSWz%7$Q(-@0*$~Uz_|!O
zSP~JaWDcKz4vF_=Sjh!qa1*e+-sct!b&iad;^g^*blW5H#abS5(qErCZ-k_@xhsZw;$W%Y)2fAf8%YN=OhmVC9w7iM_O
z+SgRspLXmU==VQY&R6jFo~|~`q$)JZQ**=a4g2^oYhMScUas1z(v0Sj=eed@AmK);Ch!nEWaTu9#{iHC
zK|`EXJ8om1M}*`NRY=Mr0I|?AYjOt#OppTQK|oMZ<|uSU4tXI$=S1pDasr0{iH5Hv
zAgBQl{ry{
zO4~x6*D|dzp8o)9s9U`M09wZSLB~5~T`LxGI9sCYHd)n`&~|L!p`SZd3U6Bufm4s1
zzL=W0*NeL?~ghs`KPp~PMT>HxR
zHO%^pA)>luZH>n4xeNNKdN_;kU!VT2g{*L|UU_Gqe05t~oZX)-*R9Cn*C!!SaYc>M
zxpayxt$Q$E>T%H+bY0@&`w_iGZU%27Dp3
zxie7*CTeCpQGtf+%)}iPxxryTP`4A9za(WPxfK&vn;1)(sakY)ybjFJz~CFKg+(51
zZbd;Z4bK+nP~|6F*hb)687Dy0!05<0jKRc=#yzm-urkl48HBV}%uV?Y)s4YW2Ay+Y
zL*Zs*JqD^NIw~Yd*--#=L^w_bv6^ybs;05f^o@*~$~P1rh?{;1IwQ8V
zjDW?e&C*=Xv6SxO_u90PXKG?0)mvncu1;mXu)|TWjisU${GH=U!nLX{)O33Fe~HlB
zv%0sCL~$zf+}7nC*2`XPxsnsXeQo7GPgzLVbLV{B*sWL7c+W#63R2RZ
zsu^r}rkh=;xZm=gUes`_ntJnL({PIQv3j4-zFOM+?^;TMaE+$r8dM=Q<+BYiZH~5lwUMvdBJH)wh1Wc90gY18P}fYXMc$VeljfF|K9|j9aJtTQ
z=zQD(Tp`%v36Z{2XkKRT-h0#eLL*9URO*$)cH0O{6+zUZcbI6oWPR+`b
zurrFTK#tKMUQob^&n;EySx<7}_ao#d*5vi-5LYUm>~Jv7A^W~~pxid|oE0E(a4m=r
zMX8f=qe7)2%)}mZLLulj=ADB<2gYb(PWhRT?KA*R0l7iajLgN(fg;y4ZVw6aeW+1X
zLL$Tjd7V|v#zTYXg`?=pBHdKeB{OrNTcas95>PqpYDmGIw*6}b&}){<8@bQ(Fj
zy&cAVE0*c?^EdNMq;0yz7GpM=0?obekWtJR3KSVkcr2XYY-B;3czG4R2@i%7+NcEnF&I&3{QV|TlK7WzEl59tZ+pD)W;=c;oK*B*C%(xANe
ze>1T?ge;(C`t#nuD+hnHI%+${-oVWDWWZD3aBorL(^Uc4ie=PHg&L%aRdeZuPF@#A
zQ9DA)5(3Dnzbg`{NrX#grklhiB`l0mGmN^BE=Mx*A>>J8MwleY7L!up5Sw#`t_&q*
zUb4DYgFx&Ww~MiH!?g<9IKHg&76
z#XK=@;WLqQrj)ZAEgDZb&pCZ`noF~zL_(GsTCJ-~*&Orw5q4Nd88yzfu0d#`$3<^f
z?{FN(q&>a@$(cD;WcbsE3SuP)PGa0qh_OgfIphcqOo#%;Y+*VxL#ZluhZD5h92^+}
z1A`=pobyACeriDR8PF}ZxiSKh#N*)T1IFrk?@P?oV5P~U+95SLUbNRVm4G}Z^>%Kd
zbW`Znrmq&9qRXD$4kd$HESO5aAELW?>kQdA-n5O-o$AYp#?58T-?gvcwkJ@XV#qRg
zRaptZ0kPC(>9N~VswNj$J!*@zeEAwDGh^f*2Hecabh=e$NpY#$B%7V1+UE*p&o8A#
z>(UBRlGVaOR+&2G%9|t+hmy~9&W}ry%X_j(v#Q98Cq}r-jXcT8MiNrkINh?SaD2`P111P6<%~a_R!6x#FkUe)sx#O
z*Zzi0E>AzxvR-HQ+SFZkr!d1sS-r_T?`B=Pa=oDQH$y(M*COfVm2Co2r+tPB1hdN(
zkbQw_wVgD@zI)fx0$Eh&2zPFt$ipYrm)nu&lKpMv{aoyw6=D6iiII}1^*V3zlxfTz
z3All48Ai2f39BuXYaq)aHMFBEBP#o4I~Z3_I_C=twwflLLA!CDds%ZRSVjzyl&TR;
ztGaDC9l
zk>f~&S~5{_u@WNYt5$OAbc_^@nbU(gW4_O!r!Lt`rQ)2|Z2QWz=P#!`{iU;y)ir^|
zlbgN)JET-)K&;+#j;}tgTO~8p`HKn_1$!JDf$OjB&oGMw*&7*m}J;8MnB
z;xk;uRRDJ7VZeamvW=BPgEJ6xR>BH9X6+4=be!Tq;Anu5IIL94--!7WPUi+{suwan
zi)xNiOU(L{MV(8a&7{jYrn9WA)!f!ZlDX#)!TeISl26*(7d8rt>UzutNm^{a)e}AS
zzD1(*QEk_YvJy$er8v(T8N(-T^z90%Hiv$SO(ap0i;7Q3&U0TKaH#AzLdNa>HOk$a
zPNW@NT3FETG*4EDMaDe|iBORst7i&PiAdLFTNg%iILN*whO1rMs>R27MJX9ZCic>1
zn~ynFo1)k7_BxDRY3y8pSIiPTumK$tueKA
zbx^`}n@j4`ty!(x4x8>jM)b`V;(N|3=_X587GaM3o$A>yLoV|(=gVVWx{=K0d79it
z*DdzKlwAUoY$3Nng@p8+i)F^EbUQU32Spn9WH;#9F3$T=t;E8TLvCe)Rk%YovMMU%
zl!ZM$Nd#}ABPqYtHskWWcWcN!FP*6{XIRlziDAX=cy?=2wX4=0wH)Jq&aA64Ep{ub
zir$q}qp^~|&Nd|=9$j4H`s@4i*iQ_yu4TpMV?Ftj74|l(6I#oBx~)mpi5c6LtGaNp
ztx-BJFK7?pEiTcQ+;iKbNz)~=>$JCOj$8U6W>aug>2@|!$=q~=<7SwPl!d2`mOyYv
zkWMX2L|ujr+lKK$CVI4Vqhm(8c|v7q<)JxiMOMYl+jzZDFI--&^3_+gVAlRE`7DNe
zoojjj0ACIfooxA^r}NqCS!(|PPn9_SobK$FhVU(R;YpmZ8q2f0Cuh
zM!Q#6$P-9H1(2Ouyt!QP#4M!s7}l~=hOaFW!699J7c4B7ZE`qLBydWoICDR09v4So
zMvksZ^G%TY7Q9i6#0D;)%0gM`wCr8Bgx=q?%@AtVbofqYyt>BC9kt32vPd
z5Ri$On7u|rM=74_<&lFM3C4%ugJ|`QmGqoZD6v~?9fi54wY75JKQCCBt=%aWIz@K9c)NK)3k`n`oOJuwj(u;YuRQ%Y@mA$U
zniq$zo_mRYQLCN#Wo?wmD9+-ZiJH|reDk$&UNHGYu83(Kr1|gceD_GxBBbb*!_Rtt
zTWXnaLbB}5>&AI4kC(S(W1G+BoB5c1wnaT^J%K$(&fB+_83`WqB573mFG9FzaXeNuqMSW+(Upc~o9}K{
zLrih1P`vMR=OruFv<~+p&+V-A8|s%mZEGvCJFS{Z%$;q!R>u^jskchI;&a(=+$C|f
zskd_+Aw0S^WU{9Nw>6`oWNl05DZy>?I4i0x-HnmEv1s9&rF=G7+zs-3d~Rsn7mB@R
zGU_gmvzb)2DNORihfVg~lvy!p)vVavgPpt4wp>el<8%Sl-CH4!Q>_@!OEURo!#wVD
zD^$x3ccX$as*E<_c$*Zu{FhNqSSg^RCNyZWP3KaCG#MP}Yjf#Ao;Q_RDYHd%Q>Zx4
zB+(mt_N=oB3bK9Y^GM*?y{&32^poZC*i7xoiY&Nlom&8kJ>)sSZ1hOX(S&MDgJ
zU97T8!xv35g>2D`-ZMi@R)fQ-U5iFMXhi+WNgr0nB%=2Ckd5c+S{a0`@v!O?Q)RYl
zi6Cb5xlHxt6R=Lz>=oFel8>peop#$>oMN2DDXN)iCRa+PY~#^5-VJpJXN}*D+ORUR
ziKi+v!+&zD+p^mt^1Syg<0if0yBbvQ*?m^b#WkD0sEW0vw3Y?4(ySdUSA7o!R|c%=
zYBN^ZpB=x%PBDc`W{6VMt*o<-M*TM-j`OC>)3<}sIvIU2ZSmx;OZQzr&zm?%L|@ax
zqZYaBHd?L43%5trEUNDIp%=GS8c)$|ey@_~aCVOt`lH7;R~u!_uf3jp=JlEEJe~Gt
zd99|IF{IsR?XDi&-P|WjEDiGNvN|4(+w!lTX;oOdK2@OqP_c6
zxbZr>b0?^AI>=SQ{*3-w@n_brHg$3Q1QuJP`%ljHpB3hf)4AqWanCi&ri%=Zf8=0wS-5d0VYVt2pR)sB9mSyWI
z&Ng*wtGH=18ASIxW}hLPN^`a7Q`zL_H)o*zGs;&J(+tD^frH0
z*qReHuHGpZFwZWCrOjMq0gIHtO4TC?;ZP=miC$T!z$S+wqkaX
zcEfusO=9&4r3qv;Z$Fccv64#3Oqq+9@rSB>TeCKCt6Z_(mOn>r-ZHx5)wt%D-4h+~
zlOA=x-&Ttg6ucyL*b>NRmMGLZIT0Id7?CnX_*pE<5p)
zICE_b*U;W6G4oHPbE{$G&p&%FI`rHe!s((%*04Rgq3GHzaJ9z4&FU{*xb|x(dXt+h
zCsXrhp|Ja5;6FV5ee*|ujq~k0pQZf=8^lq&o;!6=Wpn~TcTU+DS(scidolykhCeo;i6bS&GE2T~_-ICqd%$
z?K8D$ZWm8V`eXASWb$2qcbg53zTHFTzTM(phB`x4S^7>ZtlMqyp~D@?9Tb>^nGwM9b4@6nWikh@NCY=SHklIUmCs%CB$V{S=iVof<3
zN4{qpSxiPeu5;4$>B}KsDM#zo3pGqrbS+{usHCimMOM|$UKtk(59lA~H~fc_KT>{%|A$LiVSpd~U}NX{?#
z_UvW0(JXyDnh!`)`T9z!gGE71G)<6Xq`MnnN3^XrGtCn98=CC$%&^4SZuN31m&WM1+q{$My%kVlpd&1WzE3^YTB})^LBw7i
zSgT<&_CCF3R&{eb)S^Z@1tUJYRr|~K%52-~Vl~S1ddYNL_cEedoVv4azt=5|FDlY2
z+p}Xj9XxtuvaOZMEq*ARcg(M#dGuxVJhzV;p&6i_T>4ECl|Vy#b#8|p1OsKHBJo)RG{Oz;Z&L$Mf_(1;z7_daVGk3f$7F0Vhf%!
zY7$2jO47^8LMb)PL%dx&u9DKSYZoh}smapp+zzd_dpK#$*SWXD&wf
zqPpx;s{OEf5nX*&Cl&XasF+?Y&GksH7-_;_%mFDPvMqC7J>NoX0!gl2QO){4J%JvZ
zTWWmnInC6~NmkEfEn`*$PoV&v*oZ4o*om*}Kt1-SVAow6$I7_Dq*psuu`+*4N24t<;w~
z(Vk(~<9eT@y!G3{q7GyA*1N`Ki<}sKPGKZmG@z=4WPzj4WE?z)Pk6
z!gn420MFa+J8k$JcLS-Oz{9zLPBoC
z=N@jou7R6N?Wb|-qx_a6!Q>sWd25SQpQ13WlOX2mlbotqbX9O}<`*UR2%MW?vNx+H
zOFffD)b2Jb9kSA`CF3W#YENy1Uz>JZ=UrZMjk!VhIX<7yGd+I}x|Dnc^2pDv4HuT@
zp3U$Fwe#B%aLjf*cj2#fD4D5x{qx4Q)#$4Jdvv-4grB>olD&X{*G{Dm6IV*{CrUhx
zOB7A*cIi5wn7t!{*A6m$J~K2lA|x5eRBTtR9$W;P1s>S(>e41=FT*+Q%M_*enmZIyr^$BRZ%JqfprgpyeD_s?OmFBkRNh8)-
zEm8GSgNOT)a`o!~NM2~90hS0(pXwQCN#9W`{@L?NrQmF%~ol1HViRa@U%
zwHYNu->V$Fg`P*RI_D+hXSL#d=_2&G%A$gDJ+~vQ)qYp>X5@AkRL@4H=o5?V??Vqg
z)cLcCd#l9$pNAY1Z#UCMcCtG&+3nREHj3>!1v^B~IfxxH50kqugS1!sJf*K$%ZN=c
zGHlr8T40iLhfgpjF4H2SEO_Oy;LZ!PO`!;t^%YVS95{~_OF4-ZDW%|^##2kdD4oJ)
zp)Ct0AHl>|D_YeDp>>hYX6v4g;-YFM(jXxAQ28(|sm$~!!B}NNVv8ByGue1g&{t0`
zLGyKLnKPPx$}blThQX?f{nJ0U<^jj~SJ*rb>{`&_bi$+&2$&Sqa
zj@LeWZIxMR$lN)$60#LXTC>e*bU!*|zeGw=-ndV8BO>6=4)2t2$*I!)0gvI*-UDjG
zVD#;?E0xEmrK|EbLqW88ds5GA2F(+pQFD(?w^ICB03>53-
zX=%2Vs>xeZ-hX0@q3hGyLp;TMXDK*Kd4EI9_T|j{Kk9r#yUmQ!cB?NtRuM$?9UQmD
zdlWCIHgjfe3vB!@mI0c2YY^QW8#R*6eFqu_9weQ9Wr^ixOI~S?i6ynms{$yTG*iJY
zlcx~29F_siq6KNvRb(53L(!tf=9Wy?X(XV^*;R$KW6dWI%AuE#J+((kIhfNz
zQcj%h!r8mH*+mpuHO;T-PM2KKeo6FbuReNj&oE1RAI;YNm2b3jRC&8Y!5-Yf^nO`$YL0=)0!M9APKUS$`p{dt;oa{d`^ad|hnzTfM
z8)+-RY}|?6PFE-+O0-TnyR+R~S!W%xs>=Hu%Hz8^;^^yI4%I=_!K9&GJ9jkn$}0)1
z#Z=l8tI?NAM>WbTQIB{8@lrFLK3*8npvDB_{pA(u>bz<>k^6rW~Z{=8G
z>8D4L&oyYRX16OL&)4T#hotg-lvt_*nIq^XIYmA#GZ0x;ouaL~B-|?a^i-HjGU?&A
znYD*Kwc1{k+f6W;R-YqWvMRpuW+ml4Vr(2Yc6iO#o6-zFdWzMTI&HI8@2abz&&cG_
z<)2(vWt4qYi&{MI&E2dr&otOLO{$AbZ)3?O%NJYGl8Z%V;)U`hLFGz*%I0hlj$cqq?kHxfN${9>H#aP!zmHXFmk%ldZ?{qn^d1D;cW%HVWps&~J#CB~pzZ+{_YwL5o
zwU}FJew&2KX76@O8ZPZlwmIUK2wnL|>M3rH33qXBCkdHqMn(8%v
z?E^-Nx^qn{n-xq!%t_Z>POBO%71fytspO{$jAhO)GOcujNU$nOg02hGgNG5y$xMO|
z1l+QY+#sCU-i2A^kn^g%+R|MWR#vn=Ap<=u`gBD&l?$kVVP|X<)NTV^{_oi)aF2-n
zZ)k{)w9zUgPP<;JS$3^O)HKx{ncDMOC*WBvOD^@iDEf7lpV`FbQYL$LYrgx1dOOec
z8dEm<*DG#gX?ZoWg=pGL4h=c(W9X<0Bjl=otf}2hes3nDN9tsAX|LWv2z$f)S74;r
zqqbF>Ig(?xmExtDPB9Inplz;AYT0EQY_$Qv^;yi8daG@4#*>8Nr`^v}I$d*Jp~^Km
z6?;`ua?MbL?NH5R;O3pRSd6;xu0j!629u1kv99Z#G2Eqfuz1?U4b+j)>78=Q5*1k^
zAhYat=Q;MBk!q^o;+Z9)tHkzcaL;z7Ct8x`>t$5DHIs}zdgUbpXOn@Z%kF^*Y2@zD
z=zUn~;dcu*?)stQ_WuAi2>KOzV%WLe8PD+geoT%gquAx<`BtT6)g0P)Vy0xcw^Fi{
zbuAM<)j1su{=aE{*O{vRs?Ig$#p)XtQ+y!gtX9dv=KXf1@%k{7%WFM!qcuj-bmo$c
zvqE6qSLgHkvZqvcVy?{AyX#*fz^QKeM&G8U+C?Vi%iCGLT(I_NH2UL>S*o-!q;xTR
zy9&{2TrSM#qcIEqYh`mSI}Nb35rmxTv)MEG=sTR9VU#BQ6rLe9=7PE3tE`fUETmgV
ztV^pgP1UFzGEYq#J*Kfa3661hqN2HXLq(tp?wxK@`1R)>vEMm*82n``>J3M3FEv^(
zwH|*oWvfrfrK*?Chq78)bBMcSct`Qu^T)P2Tl1*h
z%Y;>{_qwIk#<_iMYNJ0jDGABi&~wk#Gj6qLK1aLee7@(O`tBrZq`q#iCm7_F@2dahTl
zn0fj&pMGlvjz%>ydiJhh(aNE<8{Tb~(J*7HqquvTr7&KdT>6=#EzztJ?z8sV35
zR;E&Lk}#TUrqVR&Tk6K0NZMg0ImV9!h}qvgXq_CEOFnt53S|ouPJYTosy6#LL%xx|
z~#jM=dt#S*v+B
z+&&zfW1M(}*J}^B8~HNP3HwV$@b<6B+vqFjpYCLLhx?YWMeBEXif%E+?$JbHY43me#-X)UV6N
zRW|NQ(%4C<8uC@SYc7N&(b`M5D&d^XQi4X;1`OQ`#Wu@4=r>jh{Ol&_B1FN$Wmb6muod4j?z=C#
zR!w#0ZQQWEzs(r*Ti9mNeH?e0yj=Pz^jwV>RpsuuRT@6WqVXf+3B8%U>b_Ao&DWqS
znp>-#Ru0`Jh^clrIWL%5Z_v8GrQ%{!*LTu%D1|drla23
zTcr{`)h{5~N~b?5KvGe>C0&@Z51y84?97*ydv0iDY>N@6HoG95NzB}98;n~xTVahw
z{S$}_Erw8{D}RHwn!h`BY-3|DOQQ~`?$o+A=BruNjG`YZdgipmWsTJ4MCZ|soHU(l
zOg+uA()G`X{b|&G!IyIN(WlwjZL2??LZ>+B3l4LZ%x}hbywltH=CH0I{U0vVt75uU
zc6y6d^4-VDcQ!}Z&GVn8+tt|`r#eXJY}UP|#Zk1;Y+o=Y`m~7r?X|FX30Py?=L}=G
zz1f|^uzRwHO2fL*2P}@2m7kL74_&Z%39ce&wjl8dtrOC|BiAx$_d9HpP4fMWI*sb;
zKFV@O5|tg)-Q
zmD<~w?Rn**rCV1j>7Kl{DOuoL4tb!f2@(PIL7EMcxnRv^k&IjD^<5wBNl?OIxkv&E-iud%ArEY=#kk$NsZz)MFV->O^&0cu=lLLNVi@E30Ule!wc`Wi?g{-K;`!6tszC}Eg
zFQ?(n%~NJ)4FO8ru@;rvJWiTx%A*aI`|QSB)tdX?5JePmL-k|o(hbwoJd_m}68T(&5Y?h=-_P94xt1NWpUbMO@)W%v)*oX{j{kR4JYH7__X0289TW!w?41{M_1iXz@_QG9u4{eV&NS8tR(|Ve3BE?EwHe87kN4f*c
z#L3BRJ8zUW{(jF+x}|7-SG$$t-lNR*=ku)b>%FdZx>Bt6iOQyov{ycI_PZOeB9tt4
z;gje|7W06L?AerR#-i44e!7KD`<2}azeAg`@<6C33LHRirDMgx(rKt8PgFV%6MPqiZw?EJgqTca(Hb=CJ1vbp&cid-9
z5Se>$?sD`k5;rEze3N5A>!P`2%w#ra^_3Gf()rsim-_wVCHDGZ?Ah*skq1>y(O!RZ
zqIlYjtvf0~jLT>_WUO?GW#)^GI-BVEJGY&EW8}EX8(`0zZpG-=8C}nj(`9x}CYvH(
zv-O=1&g~pSXf*|>`W8!a!s#~oFP`+B0;AjI!_sGIy6SmqL)JO$&;4&ZMe|*0KRYdK
zn!-ESWl-OV9$S_ch5aq^ym5mnzobU^r5Un
z=jpF~xAVri&e1DvWgQE5zbh{Zd@`-3$*EGjC+E+1cr&ww^_L58w=b_U-EQm6+2n0g
z(jI9^l*Kk9RbGYJJeBASy0)J=*zP&3@zwL%hR(cG<-c@f9c+FAg7Y($=C;-I+-y)^W3&PdVFc?
zUvO*uZkL@k3xt0cuVacdLTP!-oM@%3-49m0RQhvh+3Y=|3Ag-b>9?5qH~H>H%}0`uTXjCg30HEDOwlpV
z&e+$uyk)OHi6ZP!e_8Qr*`VyQEP6IyHOJ`dj;QvY2TjdpQkz`MM4P8}u*dRb-<9cO
zBlS~ZEpxO}VQ<~!PzK3F-u48Dc8Bey4+ne3RqR|K7hHn7e*rG}HCVcE!BP{pFO
z;rofeAM@&G09n#VR?|kZ)oNJIg^p^XqSd-RzFfqFTg=mc(1^x!vNcl^w(VIr&^})6
zFEia~K1;Xqsz6)&-!>Xz|lVDSM
z$8VPP-8Fr=u6i~fHBGXy@RZxDdkGPH(?lnzs=D7VZQ8#HfoH!@-n`|cTV2M}Mz!-d
zO3zi{YO_;{Bz01ilBM5VVjNZJ_tvIB+Z*k3{q^HtL*W!z1?cB_*k}h%^~>9kXtxY`
zO8m|ABvd_{Bi3%I9R_}9pQ|CJPv)I0`Me#LccY6cs(LGOqR2gS1H*CZIg5C{pG$cr
zAE}+g(;gal&s+JuX7Z1*eEE@TZd&bs&g>|ktrhaswx{dAE4TAhqp^A)%O1X*H_Ud^
zpW)q->^MHVr$411XEdI6&4uTjBxetJKk-hbO`6x4JvA?!6bpTmJwvX31=+#ADN-X17^Lzbj!MLUTK)
z@$C1g(Xt+GmDQqk<&L-JGnL6H6IoUI1X-lBYO30wV%jr$UdNf+@M^zDL&L&OPZJ<1
zY_jv@ewI%oQryY=uOTO7&+VNaG05^hN>Vwqnby_Y$=j3BAPu@Irp~BBbL%&Czri|kyLhAG^>rS9&
zpUmn;&w_nh#mdgmC3aDx+H;FO4Z4cdR~(Jj+N%om((wjQsfiFwtu%vuUFll^K*hpHSRJQ^Vs@mYp(JLm_o@Yt2HhiL
z^A5X%cdcbJ{Xfk0DGxubGbgsM)CYEj4OemNB{Vw&;1}zIlsH0)u0Q>~reZ
z3M0GWB{5B$6De8NkuxhjdqcXtwoag*FLWH5K9&~wCib7<{U4rZvil#ZX9TD2}EMnKm-B`jsA(CsO&mORXxR8y6UxU
zCz$%XPEIqi&kdpnwyrtcQnW<2rS<$9Ly=GR#CZ(gGCSVj7)O7NerF=@9puw~fq
zwx{Q7PMU9CIrdMAx>+*%*1_n#nf`t)b%yF=d++a^9`o}3Z5jq%gNJsY_sx5ptG!2{
z;x@$RRXQ%5{+XTfwK`S$w-xi{Gq;o0wr>z7WymayEWf$#oqpJ?`;+S;dMq-m+xwF|0zj4WhjI~N$*a8gpWD`aiZ3&PblRcG*;Du{B-w@2Im07gE0
z`&-3&T|PfMgXHXl@K>>^_jz3PK8oGJ6iQf7_GDtVit{k
zK8T_}w&$}klDF8K#jAH5vrQ`AXwnx$Skf||K=QUAMbeLLlh`Z8^fKJBwMt$xc|@w%5QY_%&i+~6CxmbOy~KZ;#@JnX#7#_6YB
zzG-wmKSp0@@=R^?`fDn>MPt#l-F&mO<K~ka_X){jFXzM@AN$vjki42qcpB=*bOqR
zjPtenw@Ue!HcRP#V}mrUYkq?H?NGsb6G*G
zQCswRS5}PVhDE5kG`IDGfdH4WQ+%|6{Y<#``w2;g6&pX#(-bw-l
zoX%i3$7n+?v1hpXjpZnG_uvM_#P0))W^V73;!&Qbk)|dVNVj^dyy0mb{jC2H7?r$AX(x~
zm`YfvQrk^00%&8C1~`M9&i!d)4t2BNB20RUljmzGzngm2e4j-A!&F13bQQ#qTnwvQG^b$YxONj9vJBe;g{d
zFfepN*(_noWXTByj|DVWKxH)ghjv_B6^Df+?7-ad{KI=`){ZqEpW8~WM8-3i2Edao
z~{?5^xrP52CH#53Br_0B;>v`i#mmiM4AgI-Hs_C3|&L$d;&qi3rODQUsKz2GX9dhU6ehBgr+$h|hB8bBhrP{Q-2G*Ah>u1d|YrI*7fXWhwNF`XjRBY6#p0n!T}nTV=)<3oK7kG%7e;rbaJ6
zET#H7DKhSQ03_K^au?S%miKZ4p9XjePePVle-<+wSRL`-MvnYJ(|!Q3WhjO?!~u`Ot0r>M)ytgbZI<=*KF9t
zX`P%VeOZe+)SY#)Mh#*uuD6)yu^;~q`!MU+Im&6GK
zYW2y(x+fmI~Kaz34lqtY~K
zUDB<|{raq_Ep8%e8fD;g{8tpjB9b>xM5-pPg9eg1r3a4&$DJLi?IqNnVcujqhgW4uijl&9f7+%j71tPrjfa7=bRa1E(~C$7#-D^#c1X1BU(8OSiYtK
zPng#49=CwyDsHO>K94+-yeVjKiT9l`a*J|q5xV1mD~?r~X(g82|H91mOK1ubI+hOUVz=x(w($yjb`dZ$
zJFp9PQ1Iea9_$wURQ0UCyd(p2^wfLIm{iwqtT_MhvLF+InIfnTzO(N1zam4giQmjT
z%e*r=6u8=kWkd9<6D{^!U?u`i)z8JN`}R&e!7!t;{g!Z2VCiudNZ|5$TBwd)B#RH7
zD5CB#*W{Pdcop$6NdVQuhQMq_^*f5QE7S7rM(D=Dq>T~$pv=U5-V~g;Kddj@7pYm6
zjS&<7dtjJOU4mhKg?8;bm|Ng7B_X9zmKdE$WLA~^iBWTB9&(mP}6;7%om6`
z-No5a)Bv(9G+x6#AtG%exUwDEbpfVAUf0f=4jYo@KvY#JSW-Ho2uwP;b-UiIJI!Tn
z_je#B-u1Y_UxuvuP1u-8Zr`)OKw!8o^DK|m_q=gqc~`i!k<@(bh3ghI2rIlG*O=m|
zK{?~qv6#wqY>H06W^|a3j}u$_}DP1I)yX;W`E(CaX0zDMw}GoXcx!1~N_f?>
zq@Ab~bP|s$XL}q>9Vms*7i)5htQr0`Xw_j4kIk%{JiA&;d26Kd?aHIoof`Sp0M|f;
z^vAlkFCOe&JZ6vJFo>{`eOaoIg`%G``R*|go98L@LPg!Pt?VW5!Pgtdi~e2PeIfSx+TA(tEL^R43Jt3V>oO6IhaTt8%nVWQLZ}S<+e#)hO;rBZSqbw`C1HVbqWt{%baLniqHaIc`
z8!t<#t<<#g(n!q9@qr0JGH6O-cfiAqs8ciMqJ8Lg8%4#I%=!)*mq}a-$BeH@uzYqt
zZ67fygEudf04V}kXdaAj%MnBa!MN!#EnWYK;&Aj{tzZ5LC5Evq*aryB7+3uIxx<`~
z1CPHGU6HkiymbqzT6toe=6C1_uG5E)**
z{%*u&_MMpu;$mm0w{a!yT&}RNAcy^Nsntv_Pcd6vYMU*D&14Vb`4Q)(p-nPI&ULfl
zd-&mcW2lfl^%@zwT$o#p>=mi;@w(=QgyXuvl{@@Zfc=
zqi9}Lx#;oF^M_B?f%X0n#mm*s&%tkcB@?io9v+n@-V12NASH;_Z>iuH5~X2ntq=W{
zA*Rl8HM+O0S8m{fdw7wM~L1mLa@k3Ns
zXpgGp2##=3pIQ#6c$=qx#VH#-_h5$_iHHikX~Jnym6IpXG|yy<3*s(GGsxH9f>HR5
zB)oc+3^KBc7&NKWyTh0G8XxKdG1hp;@?tJi$gU^}liqJgNFvMZ(<|1&h01K5l!TO|
zRFKGvI*e0g<|vg%q&k%`Oumgf^~4*EOMJ%CTmf%Up0Hx93Wh2GcApBsD%=75
z1yTM+D{YnOWunzW^xn+c*r^eegrPhnd{|k#RHQoIzzZ#Vm{ixa9W=#tB&V)OI}Fn`STT(aKjsv`j-
z0bh-_e14!VfUGAglA-v>Olo=UvJz(UyIg6(bZplcuv9M$I#ZWW+HtCIGH@9O_!kOX
zhsEq)43r4CLaDfAj>_Uq|De4L(6(9uwC(dy}lmm8rF&KxOHRd;;+Hp?{yX+u|>Y_t-j
zQnbMF{Cm!RH0RGA4p3-$M59xFmZ{xO2lkYDaxTM?reN%<1b_=gWzX4|hF$x9(22Cx
zm#cWS%$rufCF+GWnn^PEig8`Sqs>X-KWL)+we?O#;;VjA8VjSyb*E%GlMvW3sFg3q
zx#UejmyiERZg3hZ-GRIXl8!F;S9d_X)ym%O!yLlOuE*^=P0c=C23NI8MGAI9pxdrl
z$@P)LZOw6x(s;$F?LGL_96SKNy1^HmwR0CxfM8b)yw;L%zGaHs>tNKqrWIRh8Nef~
zwoL8JV6u8%Dp}tGUcOWv>QOVpjApcSWPZu3FThqaNIKYRB<0e|yz`aLXzw{OT2_8R#W;m3IXPgeDm%S(=@BINqESHq?mh83Jo
zM5DT#{n->KVwraa#i{Z|&`A>vv7~_+972F#3eb*yHGA`G#UvxRfDS-Ffg5bwzRBDW
z@H4ZQW0raPI?d^_iO2lf=B*k76J=2%M+Tjs3cg{PN*|*>Yo9IN3^cQyAZ4gv_0zFL
zy6WCaL1`%{H-Jz!E1ZJ#UGhOXgb7e%*fQssWgP4PqhkZqtMYosX+op>!wIY^mV%8L
zmOMaq*P%IFk{VNjWw>p~^Gx|!OvsihYX()z>iL>eUa^Y@87JI+S#pRc-K}8cMgL{6
zeg@EcjsspI8Cni+0`fQQ71kpMdYf;$-YxS|C&W#4x<1$kSL6(bj^7h4d&kn=jjmLz
z@Iy}3E}zRN6^g=hWv?}TI}`ARWM3V&1YC}qYB8;EEE`TgZnOraTTg#pUGeVaFyZLp2)l0)G2wbbModb|X
zoJz|98LdS+Vopl?LQ+=m>Gbyw!HaZAE84D4Nc_pr%#H_BNTGj7C~1O=KxN}VNO-0r
z39HukJk8oQZD7P90RJ(FOQV|U;Bn=emX@*Sl3}@9x<2L0Ix}NHA>D|@jQdegYZ`si
zBs41b&|h!9sZ?uOdVe!DBRYNNsX})#b2e(-%>3lttXON7{nwE?V5qSEs`2gE`LdU*
zPqI7%o5H4PzlW=VC_wxPkxtMS=Oom9*P++BmXiD!4B%28Lq03U%J4&&SW^#hW?d~m
zlh#fwWctvm8&qU;s5{atX`OGFMyM~So>kbqSwS$iob=3USim+)KY=7pzaL~USERx@
zG|TK{LqDRC#aP6&FyY-^qq*uHvccE8YI2V#S~~;UxKpYB28n6dgbVL_5VG1A*C%Vr
z>JQ!*@JO`=*+iwaA4GfLhWYH0QAB0_uH>u*?m&J*M?A->g*1B6hxfH&IePiiV&8yC
zg7-n#mPu(EjgZW
z{Y5uEp?WS3!W4oVsx3$ie2@|vpK8?w#Gp=y(()-+lxDkZUc|;gO1sWIM1FG{+L5v{
zN-jAV1zR`$fNfV_p5*bnjuj%wx``S)diH)5@$zU5^laOhi)?0?k8{6;)|ZWd6f$t3IC)b(JA$9VA^W)k~_YKb-QMX6X=R(
zk`w%Uy3>tTdtdw5Mdo{EBvEmz(~WlxMq5tLgfmj~UVl5mtga_?jK|p73kQN256*Hm
z$?4)Lrvn9zZ0wm_-9LwO1a~R^%q#O)+ozM_|5)cHEpicanx>`TuO$?|lGImqiwJIg
zNWq_AGieJc;`kvkf$uhx9m!K7yR2kbPRX{hYuWzm<55>eN9(2Tq{Uh=@G^b@yOXzC
z!TTbUG%y$wA)oD^!Pn6=1TS-wvcvXt1DZIsit
z(U1^FNeXCdxXLFc9SM45*WV0bG7YnTcex#YVM9!igyH&`xuR^hSd(LjpCjTTdVFi$
zkb;3%lgN_^O9aa`KvSdkHg}cOc;690YB`P=00O^&jdvxtHa%LjUA^&}-`LcT8$KLl
z{Sv$FD=16QVku%2SdrmDc}h>$OGg;|Fb9d1$|tGXqh1w9HOs@Bq(`t17uBK8OClGw
z!pa)VGlTH9ni8F21|E4?yVP-?J3RPqu%cc7mgG+Mi9~t|`kvZ!N#lp29nIiYOVZkWa3&3W~ZAtSDIz4_RO_bvX0YXIa%Eh^yj3eRjb
zx8x$Hi(%z_!^?~RHb%R`RZxrF%qnH5W-K6LX7i{bx4?eAslbfjqNZYlyTc8WA`C#+
z^(}k+w2`x^f01Dp?gYE@h38DKgf!h^j$Hax?~Q#8repTDrwAsN1q$Ot3b^Gl1BH
zuj<%Qx_NMl>)C!G)IV9{WoMw&jYh*Xnh)gER$}
z5DhBCbXBRtyaIPZ1@_mu
zpB%F7Tm?B?fJXsmd1pZ(x!<;>)4B^b7<6(=2F6V!3-;1d=-`@mrQs2O{qgr^zy8SKjese8fIBS!!Nj4Eh}9v&)mp#QyFfFWK?E^Uvs{#)IKZR&`_oUd^kq03;^U
zb=FC#@(-_&kUJcK6*b4)0+efNKHuTD-y(>+VW4ip*ioBF#m{&RMCk7PvgtTHcy8!0
z)GTNMLC28)dZB$I>$r5<*Njrb7&v>T8T1vU;067PrEm~Gf-&C7cE=&(=dS`c(z(6W
zZS#5CpzX@wun7hw_`@$m#M*Svc^c#w5qncYsyJ%9-#$Al=x)ob^1=MX>H;734i<47
zxB-^p*e+|kquhFcOtfXiM#Z!+pzV=qIFeU~Cuq%W&~@*dnoa37;qwilvTdn`xCC5I
zG#p$?;)TmyNygw$ZscV(lZ9;Hrzr1re%KdxYq^k$>60$|esOl5R-U*XOh@Iq_S?Pa
z{Fj`L?fuJzk;=#ecwAuiYHFf{53p)g$+k&xL^Bj?*x&~@$?#C={Lt{q72i6r&i~;P
z6BSYT3H&M~4t|24T&<=4?UyoLD%pVV)gQDhdSCQ{kDPdRW;ip8g=xUbj}>7Vy+Br@
zGRZU-xD0${^&@)RoV{&KEr}I70x~dr$$s}XbL`!
z?Gn7XuwhzK0;E>Tdq{~&IbO74joP)yZWb+4`+!QX
zmJg>9H5h$AKdAc2eTyO^>y-fO?pJWUAq-0aD7ek6rKsHz?{0+
z32xs0gQjUdcX0MRPv%<-z0T-NR7d~RS@`ika7NY-rMJ{$^|
zkeK^fLUBSz5#XvQfx|(zvi%9BHv&aBFLK9f;-
zH-7?m{xZ?0nhGj8)}qPrZ@fj^45R=uAlRY_tmLpfwV>|wB^UCYkGA{^W#c{>37c(c
z(TdXHkK;@pazoXHHj2Bm{@ZK?idS6PU&B76s7I9!rZAcIOOt=xVI+**m1i4*R`)s!
zMeTuV486NZ*R-!~ohg|P2=rW*cDE?FYB(j;+k;a{u7bWq&v{enytO%O63K>E3`uz7
zEos0?D}Kv0{%q?U9CJtv!pk9}niar*GY(yCzZa{K?tWwbz4Z|GD^*C+$L*((h-4MQ
z+0AdTP0ZTIgmlD(cG?O)#LfNtzFo?igjIa$RqH&ivKeBu~s_id@B%Ae+dNdw8%~
zR;k*z$}3A#yYXh+ftjBbZ|E--9d~Y2We3PIotE7e91$`7ApZ5LOH?3dR`X)%#A%3U
zMFjdjF2vR051M+=eunl;`4UNt4Hb9Ijzo3fFAcH*3D>~#4L<3z-%Y0;+W`bzi%guU
zY`@z$1sW*WGOJT}ha7my8Gn|{!I8O@Z9jmffSWTxw{*B2X$`)?dPQVHlX9H!t%9X=
zSo0tSQ{ODZk8rA_cT(}4}X(-DH~2_L&qtC1?tQysQQn;$Zob-N{atnH5)Qy2g{9^tmSI(5Z{rs%1y0q_rJ0VqGlD
z|H(|OqRLb9E1M*SC)ov*d|z9hH;DXm!Lt?#)^hJndy}=e!HXwzy
zK^nid@b8qcvIUpH7W?y|o}x9}@@y+B%{PyfpZLEL*`}4>eNJxBYV&H9Q2b?>P7=uh
zMyZK{isHZwFQMQDGoTD;r?!wgE4a{{&>gonlYrxw-T|rQMt%&jgq+taRTY{56H$jg%6E4R}p3SQ|R{IfiV8?SwaUG*C-Iw*xZLv})`b6lyVo{Jj>c
zeHnY|L~Ci37C1Sg8D}I@{^7E;YSoMC6QH>J@D?t$@^id|1CaW~=n!TQUfrv0S19##
zy9?+ZKq(1o5=rdByu>er#-H)$wc4$Wsb;t!b}-3&2rur2BMJGW=LNm}35*^oz=3wyska;80aymzjQ
zLyX|4eE`MRR!z%Q6&wO$%`}wCY`Wn{7(RuIYXk>`d!V#49DI}}S`4^*-Km?s>q@S7
zw#NCzSh8c~!)!C)d94RB#Ei)`a(QoMPr$w*fJgHjca0yBqLtZ*WNGmaoqa1L!?0e=
zA2Kdg9#5W9_*H2p|9W?dbR@U?ENdd7nVa+sm!#|tl~9sMJW1X-pPspu;6+TY>tNKp
zC+mQ47DwzeHNk8`_9#YIx5=bKVRwp(0ven=5f#xPnBDUfv{m<%A4T!B^sbKz-ewhL
zvFKN?_H(Nm&I-gFrJGV;Fsl)|4<|yC6qVz)a*|{qSu+FG*~x>=O+!$0<@Ow|T+wSk?D!q9
zuXbG_taEqaGCsVX)(`n&8u;8@cFk5bjg^<)vxVtOSI`YE!}-cm(VS_yEC@yH
zqB*tu{{4EfC>$K^+41743Nj9rT=NkY#JJmUmhE0WDNjn9tvB{`bFaK?^bfGfi9vw6bA2ul(kS*e2`!(6oKP!HjoWWrxn=!HrN
zoK)jL7#DX9%z(>Ox74*|!x&fGd-i&(md6;Nz3j!qHw0;P+Q{S9n^+A9%@x$5TOVLI
zT&9gl-CqkEru3DtD--0w(%PImP_B$F6rVniED_LB>F+-kW=SPA=&-+O*li8{>QNmo
ziZDIEU)*`q(5?oQobNA8sX5zY76nxvM#8poa1-OLA`2(LQ~ZsP`We%>bDlz!o3Rnt
zpH+Oq|D%ok3>l9#!r0R8#<-j+ll?B;$t#=0x}-v
z(gPFQlL2kUwLi2&(lV=VWfW!|GiuH)41Y~ZqVH~*B&BF49nSgf$T2b+4>wTL??$}U
zi>unUrI6+QJXp+5p0Rw;2-;3xq5T9CV#eZ5IkXR}eK~r>n$Dg%?2y>aQ5Ob0fh0Wv
zDQjfVG;8QnREf50KXv&Kk1oDmJ=a%DkN+5A`CXyfg|#~BvG%HN4#}AMJWG}5uHc&d^3I6$T{XM)EX)j2CP
z$xnI}-YS$Uj%s7UK(w16Fy(BRBTq?l!1S`IL#t3lR`Zfck`*cB`z+?1mR|bTaZjEi
zTca_nVAQcYfc9&DZ5}x*De6heYJ~#ObL*28&ubo|8i3C(XI!#TiJ@y&`@U&l>86ax
zz0~=DE=#KHIsU#sp8x@v{iNgMwrL0+km2K5Xl-2PZ3tlj*!HVhU&4q$n@!w$@NKE(<
zK8JAgTbRj+V6l1yaFCUOpN7P;YQ)-wc3pME>8nGlH+Pi}spfK=#%{{eGO2*jc*V>o
z1@05Q<{w>a>v@+LjX$K6zE*a6b!wMbjjc#iEcPY#fEE+VT&R(#TNMD
zQ@y`7HFt|f94i#cnEWaBsA`WvkD>@_ja`<>|E6%hOre{4n4M>Mh#2Vp3K9-ZSD1Il
zNf%0Y(w}s{)JF6@Rjx|(6?*(I=agPH1cXjj*(e)ZJR|w8qNqu3DfVnAoqhKG*JQnU
zN9rvgS9aV^w$LA1V*31IwJD8CGId#&>p&^!*e@{e+;^+2sHLSL-Lms(3>)v4k&E
zvid8MLLQLTJ>6>eHE#z9rYubJ?Il@ko5xJ^~?n|=-bR*JD2
zyko#v&EoAZs|6~T_!y2CS)f4XSe*`^J_(bgaT{F_doYd1WpPYajYi)N8?wA&(NX1W
zprLav$-5sn)?Zp+{4kY44CDoy<>lm9
zaK*0;17!0@Hg>YJobv-ti73>VdW0G~mcy$(gqe~~(_MhpO&J3;)Iykm+s)gg@I&0A
z(geZGR)a#;0i#drQskuWhe4;vJ;7+HGmJQX=sXN-H^DG~usMCnm2_3S{Z$&WYoc>u
z49-#v}#cZP><3}5kH
zQBgH|j4ESeG)opPmY%m>rj5S}s9>zLEhxuM)b;Kr?ziQepRCb)mvCUIs19O1QGser
z$NsQ5PGl0Azlh}=P8@uK9bFt7y${jk5Ov*>t)YT(gDlJTDn?^V4w630YHaT;cMA%n
zep>Rr$+TmzSACNmh73E6rK_{oxM7@tmuJNz*o5>+rIgurIF**3V4uH8uT&D
zV9?u#ot2bGzfGNqEQ*hwbEYw?3b=fXFBl?Y%vFwz&dChX3oclINiNSi=Y#^hw&?~E
zt>4IMf2p6V8afDcRp`2Xn2|J_YL$K-qOD^|HRpdD6U^^Ox>Q>Jso)-HcPX@zJbhJs
z_GG@b?LJ8~iOJz7=lF>R|$AdGKqE~X}f!sp%c%FX6#fyCh
ziOJDbq76(vpERtaaBq?+`
zM|I8X1VrUW$i0t0hpPnnB4sA3>I2I>S<*(l>JB|9X6B8L-p0CAUth{(m8?PkpnY~Q
z3HgLj9h|B5Kl2;+2jPBr*rZn@p7^C_d_MdTQSIFdMbJ>-ieFY4r57Vkc{5gh
zjNNeUtP*VvRlVkz3mN9A8s(mj`Dn~uifqTMRcFrt5*n4@3QQbS~`
z!T_{vuF!}lJz~JtQjd))5NwVcR>_i+KBF&l);k}3)Ge~LY+7O@%%hEHQ{}Z
zdmrf7zFO~8r2~!)R7`9@#mBl$_~g#R)TVq38t}R77d7NKxVT#u4>g^Z9h(mQFlH2B
zxl$c+{-*<<^u6N(PBF%8zkLZ?!OuA{xy$D;j;SQOS>X8vOoaVD)UD8lWsjI(69DE<
z?p^F~@(-i%hUS3JO_<9(h(VRh?*5z-Zlh)QUcwpbVVZre165Y@ZenwtmPjcgm4vB=
z9hk|6aP6AoJ$Hx$R|piyS+Vxj!B0f@1g6U)GFuL;A~}ucS9#lj>$AsdEU?D!S$I1h
zpcklGlSwz>1+DPfWm$5k<9*Zc!=Y?JUvs#D?{bX?tubUdSyr4IDf6cnjr9fEtUJS
z`cvrfwov1*?W@Hi%C7rN)&j7HFavf|r+Ol5Y(7Qk9Y%GL5sh<1Po^Pb*#NQVq9|_)
z9r8;2oPDA(>BRv3lV|b5LD^|0&xDTtpn=W}y9s$Ur9;KERlawOy!ve3!%K(UQ3B$O
zBx%s9#lw7qwXihh)V*3?8iT)ya@Zos
zjBG~`MUq>Qdh{r?lcR@TZqhnaG2X2CLi&qRT}?gZHw(U-{M>hc&+gZs|csI4Ypj
zyNTKGscDhfTnZcBB$&|yhq_(1+r9DL7*RDlA(XK^l9)*S#}J!%EBX+9jzyD~8ck~#
z!mZG5TFlIrbw}mHj@5)^F+UeMUwI++2W<`)NF0;aN*z;2>QGLkIMtniZTV{A<2Ub}
z%x%BIWXW6wTs}^lE(8{RC1FDgt{aj3vd(cmzukF=yaN6pp^rWVP`Q8Sq{s+r5f1)?
z_O{c$j9rnVf2!@+o4Vup=%tNvmc`7o1a5Q;Ml~uiLa}~2WHjF6tu#ID%F?&}WA*hg
z>hK-5a7|sL!k5apPwx&%gIE{w(9R!fx)7j0Xc`YZf6zz^FpN37aTN$Il$Tlgr2cK8(V+S$iTk;z(4;&Z{i+PE+xK?wpp0x
zq&_MsM^Z99yVPZqUEPGc%?B=t?nS%~Kyf{U{Kh^0OKlE%0~t`kY@-l~N)Z*Yft|qV7i)8@y8P
zzi9pokVlZC>b9fm>N8aN2O%Q#MqZ82=IR|=ccQvLF_>hL(HcTtOb}-Qd3nVrANzF_
zD73x&35~pHjfj)4rzY0$UDjVDHPvm0$bWF5(6x2`t^T{zKn{$`GAIRztwr_%(qK(e{pX7|1byt4}R2r;N053fb9DH=;t=UO^wlAts3V`PP3Qf>z#ZKBsL~d
zE-01H$Ns1@V>X(!pAcT!kI5JaT|=QkECeGqQ1t!>CGaoxz&V7k?;MKUe^IZSn%yI{
z!TLuPao#=vd5a`AGvyb`;UPI+W_m5Zz4|^L