From: marios <[email protected]>
Signed-off-by: marios <[email protected]> --- site/content/_drivers.mdown | 3 +- site/content/_navigation.haml | 5 +- site/content/_providers.haml | 4 +- site/content/contact.mdown | 30 ++++ site/content/documentation.haml | 2 +- site/content/download.mdown | 257 ++++++++++++++++++++++++++-- site/content/index.haml | 19 ++- site/content/styles/deltacloud_concept.gif | Bin 0 -> 19082 bytes 8 files changed, 288 insertions(+), 32 deletions(-) create mode 100644 site/content/contact.mdown create mode 100644 site/content/styles/deltacloud_concept.gif diff --git a/site/content/_drivers.mdown b/site/content/_drivers.mdown index 56254fe..811cbbc 100644 --- a/site/content/_drivers.mdown +++ b/site/content/_drivers.mdown @@ -53,9 +53,8 @@ The driver and provider can be selected in one of two ways: effect as using the two request headers mentioned above. ## Notes on specific drivers - <table providers></table> - +<a name=providers>. ### EC2 Driver For the Amazon EC2 you need to install the diff --git a/site/content/_navigation.haml b/site/content/_navigation.haml index 8a2e002..6586267 100644 --- a/site/content/_navigation.haml +++ b/site/content/_navigation.haml @@ -3,8 +3,9 @@ filter: haml --- - menu = [ { :href => "index.html", :title => "Deltacloud Home", :text => "Home" }, | { :href => "download.html", :title => "Get the latest releases", :text => "Download" }, | - { :href => "contribute.html", :title => "Information about design/development process", :text => "Contribute" }, | - { :href => "documentation.html", :title => "Project documentation", :text => "Documentation" } ] | + { :href => "contribute.html", :title => "Information about design/development process", :text => "Developers" }, | + { :href => "documentation.html", :title => "Project documentation", :text => "Documentation" }, | + { :href => "contact.html", :title => "Contact us!", :text => "Contact"} ] | #navigation #menu.container diff --git a/site/content/_providers.haml b/site/content/_providers.haml index d713858..bae2432 100644 --- a/site/content/_providers.haml +++ b/site/content/_providers.haml @@ -55,10 +55,10 @@ filter: %th.emptycell %th %strong Create - new containers + new buckets %th %strong Update/delete - containers + buckets %th %strong Create new blobs diff --git a/site/content/contact.mdown b/site/content/contact.mdown new file mode 100644 index 0000000..17a97ec --- /dev/null +++ b/site/content/contact.mdown @@ -0,0 +1,30 @@ +--- +title: Deltacloud - Contact +extension: html +filter: markdown +--- + +Contact us! +======== + +We'd love to hear about your experiences with Deltacloud: + +* [[email protected]](http://mail-archives.apache.org/mod_mbox/incubator-deltacloud-dev/) + is our mailing list where you can ask questions or see all the latest patches and development activity + at the bleeding edge of the project, +* The [#deltacloud](http://webchat.freenode.net/) irc channel on Freenode is where + the developers hang out and where you can usually get the fastest answers to your questions, +* Our [Teambox](http://teambox.com/projects/deltacloud) page is where we keep the latest + task lists and where you can comment on or suggest new features for the project, +* We have a [github](https://github.com/apache/deltacloud) page which is a mirror of the + apache git repo, if you prefer to get the code or contribute that way. +* We track bugs in [Apache JIRA](https://issues.apache.org/jira/browse/DTACLOUD). If you are + have found a problem with Deltacloud you can check if it is already known to the Deltacloud + developers or [report it here](https://issues.apache.org/jira/secure/CreateIssue!default.jspa). + +Please don't hesitate to get in touch if you have any questions about the project, +if you've had any issues with installing or using Deltacloud or even just to tell us +how great you think Deltacloud is! You might want to contribute a translation of +the Deltacloud documentation (or even this webpage), you may want to contribute +to the code and need some help getting started. + diff --git a/site/content/documentation.haml b/site/content/documentation.haml index 8019d08..d5d8c32 100644 --- a/site/content/documentation.haml +++ b/site/content/documentation.haml @@ -46,7 +46,7 @@ filter: stored on the server. The exact credentials for logging into the server, and where you find them, depends on the backend cloud that the server is talking to. - +%a(name="credentials") %p The following table gives details about how to set up the server and what credentials to provide for each of the supported clouds. The entry from diff --git a/site/content/download.mdown b/site/content/download.mdown index dee8181..b531579 100644 --- a/site/content/download.mdown +++ b/site/content/download.mdown @@ -4,25 +4,200 @@ extension: html filter: markdown --- -Download +Download Deltacloud ======== -Official releases can be downloaded from the -[Apache website](http://www.apache.org/dist/incubator/deltacloud/) +<img src="styles/deltacloud_concept.gif" alt="Deltacloud conceptual overview" width=850 /> -### Deltacloud Core ### +Deltacloud provides the API server and drivers necessary for connecting +to the [cloud providers](./drivers.html#providers "Deltacloud drivers"). +Install Deltacloud and start the ***deltacloudd*** daemon server. You can use your +favourite HTTP client to talk to the server using the +[Deltacloud REST API](api.html "Deltacloud REST API"). Deltacloud even comes with a +HTML interface so you can simply use your web browser to control your cloud +infrastructure straight out of the box. As of Deltacloud 0.4.0, the HTML interface +is written with the [jQuery mobile](http://jquerymobile.com "jquery mobile") +framework so it plays especially well with your mobile or tablet devices. -Deltacloud Core provides the API server and drivers necessary for connecting -to the cloud providers. +### "Hello Deltacloud!" - Quick start ### -We also make Ruby gems of each release available. You can install it by -typing the following command: +This guide assumes a linux environment. Some of the Deltacloud developers +are running recent versions of [Fedora](http://fedoraproject.org "Fedora Project"). +However, as Deltacloud is written in Ruby you should be able to install it on +any OS that supports Ruby. If you have succesfully installed Deltacloud or are +having any problems doing so, please [let us know](contact.html) - +we'd love to hear from you. + +The two main pre-requisites to a fast Deltacloud installation are **Ruby** +and **RubyGems**. Deltacloud will run trouble-free on Ruby versions +1.8.6 and 1.8.7 though you should also be fine with version 1.9. You can contribute +to this project by [letting us know](contact.html) of any issues you may come across +with particular Ruby or RubyGem versions; your input is highly appreciated! + +#### Get Deltacloud #### + +First you need to [install ruby](http://www.ruby-lang.org/en/downloads/ "Install Ruby"). +You can check to see if you already have a ruby installation by typing: + + $ ruby -v + +If you see something that looks like the following: + + $ ruby 1.8.6 (2010-09-02 patchlevel 420) [i386-linux] + +then you can skip the ruby installation (you need ruby that is at *least* version 1.8.6). + +Deltacloud relies on a number of ruby gems so you also need to +[install RubyGems](http://docs.rubygems.org/read/chapter/3 "Install RubyGems"). As above, you can +check if you already have the ***gem*** executable installed by typing: + + $ gem -v + +Once you have Ruby and RubyGems, installing Deltacloud is as easy as typing: $ sudo gem install deltacloud-core +**And thats it!** Yes, really. The **gem install** command will automatically fetch and install +all other gems that the Deltacloud server needs if you don't already have these. As an alternative +you can get the latest releases of Deltacloud from the +[Apache website](http://www.apache.org/dist/incubator/deltacloud/). + + + +#### Run Deltacloud #### + +After you succesfully install Deltacloud, you can start the server by typing +***deltacloudd -i \<provider_id\>***. The ***\<provider_id\>*** is the name of the cloud +provider that you have an account with, for example 'ec2'. If you don't yet have an account +with a cloud provider, you can still try the Deltacloud mock driver: + + $ deltacloudd -i mock + +This will start the Deltacloud server on your local machine with the mock driver, accepting +connections on port 3001 (the default). From version 0.4.0 of Deltacloud, you can use the '-l' + flag to see [all available](./drivers.html#providers "Deltacloud drivers") + ***\<provider_id\>***s that can be used with the **deltacloudd** executable. + + $ deltacloudd -l + Available drivers: + + * condor + * vsphere + * opennebula + * eucalyptus + * rhevm + * sbc + * azure + * gogrid + * mock + * rackspace + * rimuhosting + * terremark + * ec2 + +**After you start the server, the Deltacloud HTML interface is available at** *http://localhost:3001/api* ** open this address in your web browser**. + +Your browser will prompt you for [credentials](documentation.html#credentials) +when you invoke an operation that requires [authentication](api.html#authentication). +The '-h' flag will list all available options for **deltacloudd**. For example, + to start the Deltacloud server with the Rackspace driver on port 10000 you can use: + + $ deltacloudd -i rackspace -P 10000 + +You may want to install the server on another machine and make Deltacloud available on +your local network. To do this you need to bind the Deltacloud server to an address other +than 'localhost' (default). For instance, if you install and start Deltacloud on a machine +with the IP address 192.168.10.200 you should start the server with: + + $ deltacloudd -i ec2 -P 5000 -r 192.168.10.200 + +This will make the Deltacloud server available at the address **http://192.168.10.200:5000/api**. + + Additional Tools ---------------- -These are complementary to the essential Core components. +The following are complementary to the Deltacloud server. + +### Deltacloud Client ### + +The Deltacloud project also maintains a ruby client, which you need to install +separately to the Deltacloud API server. The Deltacloud client consists of a + ruby library (packaged as a ruby gem) which you can use to programmatically +interact with the Deltacloud server and control your cloud infrastructure +across cloud providers. For example, assuming the Deltacloud server is +running at **192.168.10.244:5000** + + require 'deltacloud' + + api_url = 'http://192.168.10.244:5000/api' + api_name = 'TK2PJCAN9R1HKG2FK24Z' + api_password = 'aLe27rZlRhlBcVoQbL4JsVtaNga12vEL9d9kS5CA' + + client = DeltaCloud.new( api_name, api_password, api_url ) + + # get a list of currently running instances (virtual machines) + client.instances.each do |instance| + puts instance.name + end + + #do other work with client here + +More comprehensive information on using the Deltacloud ruby client in this way +can be found in [the documentation](client-ruby.html). + +Assuming you already have Ruby and RubyGems setup, you can install the Deltacloud +client by simply typing: + + $ sudo gem install deltacloud-client + +Installing the Deltacloud client also gives you the **deltacloudc** command line +tool. This executable makes use of the Deltacloud client library to speak to the +Deltacloud server using the [REST API](api.html). This allows you to to control +your IAAS cloud infrastructure form the command line; even better if you are +familiar with linux scripting, you can knock up a bash script in no time +to automate your cloud infrastructure tasks. + +The general usage pattern for deltacloudc is: + + $ deltacloudc collection operation [options] + + * <em><b>collection</b></em> refers to the Deltacloud object collections, such as Instances, + Images, Buckets, Realms etc, as described in greater detail in the + [REST API](api.html#h1) + * <em><b>operation</b></em> is collection dependant. All collections respond to 'index' + and 'show' operations (retrieve details on all objects in a given collection + or on a specific object, respectively); some collections respond to 'create' and 'destroy' + operations. The instances collection (realised virtual servers) responds to operations + for managing the instance lifecycle, such as 'stop', 'reboot' etc. + * <em><b>options</b></em> are listed by invoking <b>deltacloudc -h</b>. One important + option is <b>-u</b>, with which you specify the API\_URL at which the Deltacloud server + is running. The API\_URL takes the form <b>http://[user]:[password]@[api_url]:[port]/[api]</b> + (examples follow). Alternatively, rather than having to supply the API\_URL for every + invocation of <b>deltacloudc</b> you have the choice of setting the API\_URL environment + variable (e.g., export API\_URL=http://mockuser:mockpassword@localhost:3001/api). A listing of the credentials you need to provide for each back-end cloud provider +is available [here](documentation.html#credentials). + + +The following examples assume that the Deltacloud server is running on your local machine +port 3001 (the **deltacloudd** server daemon defaults to 'localhost:3001') and was started +with the 'mock' provider (i.e. **deltacloudd -i mock**). + +To list all collections available in the current driver: + + $ deltacloudc -l -u http://mockuser:mockpassword@localhost:3001/api + +To get a list of all **images**: + + $ deltacloudc images index -u http://mockuser:mockpassword@localhost:3001/api + +To list all operations for the **buckets** collection: + + $ deltacloudc buckets -l -u http://mockuser:mockpassword@localhost:3001/api + +To create a new blob in the bucket called 'bucket1': + + $ deltacloudc blob create -i 'my_new_blob' -b 'bucket1' -f /home/marios/file.txt + ### libdeltacloud ### @@ -38,19 +213,67 @@ Or you can download the RPMs for Fedora 12 and 13: Contributed by Chris Lalancette. +### Other HTTP clients - cURL -### Deltacloud Client ### +As interaction with the Deltacloud server is via HTTP calls, you can use any +HTTP client to talk to it using the Deltacloud +[REST API](api.html "Deltacloud REST API"). One popular command line tool available +on most modern linux distributions is [cURL](http://curl.haxx.se/ "cURL"). We +give some examples here of how you can use cURL to interact with Deltacloud, +demonstrating the flexibility and power of the Deltacloud REST API. + +The following examples assume the Deltacloud server is running on locahost:3001, +and was started with the 'ec2' driver (i.e., **deltacloudd -i ec2**) + +To get a [listing of all images](api.html#list_images) available in the +back-end cloud: + + curl --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" + "http://localhost:3001/api/images?format=xml" + +The cURL **--user** option is used to specify the **username:password** +[credentials](documentation.html#credentials) +for access to the back-end cloud provider (Amazon EC2 in this case). + +To [create a new instance](api.html#create_instance) from the +[image](api.html#h3_3) with id 'ami-f51aff9c', in [realm](api.html#h3_1) + 'us-east-1c', with the [hardware profile](api.html#h3_2) 'c1.medium', +in [firewall](api.html#h3_7) 'default': + + curl -X POST -F "keyname=eftah" -F "image_id=ami-f51aff9c" + -F "realm_id=us-east-1c" -F "hwp_id=c1.medium" -F "firewalls1=default" + --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" + "http://localhost:3001/api/instances?format=xml" + +To [delete a firewall](api.html#delete_firewall) called 'develgroup': + + curl -X DELETE + --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" + http://localhost:3001/api/firewalls/develgroup?format=xml + +To [create a blob](api.html#create_blob) called 'my_new_blob' within the +[bucket](api.html#h4_3) 'mybucket' from a local file with ***HTTP PUT***, +specifying its content type and setting some some metadata ***key:value*** +pairs: + + curl -H 'content-type: text/html' -H 'X-Deltacloud-Blobmeta-Name:mariosblob' + -H 'X-Deltacloud-Blobmeta-Version:2.1' --upload-file + "/home/marios/Desktop/somefile.html" + --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" + http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml -Deltacloud Client is a command line tool that communicates with the -Deltacloud API. +To [retrieve blob metadata](api.html#h4_3_10) for the blob called 'my_new_blob': -Type the following command to install it: + curl -iv -X HEAD + --user "pGbAJ1TsVg5PKs3BK27O:dPs47ralgBlldqYNbLg3scthsg4g8v0L9d6Mb5DK" + http://localhost:3001/api/buckets/mybucket/my_new_blob?format=xml - $ gem install deltacloud-client +Note the use of the '-iv' flags here which will ensure that cURL displays the +request and response headers (blob metadata is reported in the response headers, +with an empty response body). ### Your name here ### -Do you have a tool to make Deltacloud more useful? Let us know on our -[deltacloud-devel mailing list][deltacloud-devel] and we'll post it here! +Do you have a tool to make Deltacloud more useful? [Let us know](contact.html) +and we'll add your contributions to this page! -[deltacloud-devel]: mailto:[email protected] diff --git a/site/content/index.haml b/site/content/index.haml index 70284d8..32737ae 100644 --- a/site/content/index.haml +++ b/site/content/index.haml @@ -12,14 +12,17 @@ filter: haml .colleft %p %em - Deltacloud Core + Deltacloud gives you: %ul %li - REST API (simple, any-platform access) + A + %a{ :href => "api.html" } + RESTful API + for simple, any-platform access %li - %a.providers{ :href => "#providers", :title => "Supported providers" } - Support for all major cloud service providers + Support for all + %a.providers{ :href => "#providers", :title => "Supported providers" } major cloud service providers %li Backward compatibility across versions, providing long-term stability for scripts, tools and applications %li @@ -30,11 +33,11 @@ filter: haml .right %img{ :src => "styles/diagram-soa.png", :height => "265", :alt => "diagram-soa", :width => "620", :style => "margin-bottom:1em;" } %p.foot - The + %em Deltacloud + makes it easy for cloud providers to %a{ :href => "documentation.html" } - Deltacloud Core - makes it easy for cloud - providers to add their cloud to the Deltacloud common API. + add their cloud + to the Deltacloud API. #news .recent %h2 diff --git a/site/content/styles/deltacloud_concept.gif b/site/content/styles/deltacloud_concept.gif new file mode 100644 index 0000000000000000000000000000000000000000..54e2eb57b7b950ced3b540a6e1c46f3b5d7ba50e GIT binary patch literal 19082 zcmeF2<yREk_x5Lo0fwHT8)oQ~ZiImuy1S)Ix&%cWx;vyBX{4p4yF-u?X%LZ85o3P$ z_kVa^KKtc4FV0$L@4fc5KIb~B>MBywb`Ln*z$?Iifdyc(@Lymc0FVga|KGy@b|$E) zsp;tG*x1<k`T0dfMP+4WK|C&s3JS`~%4({r8X6jghK6P)CRSEfwpLaS4i2u4j_&U6 z0RaIafq~DTKZht}Fk5%RJnsy%e`5fE7!r~=7%YW}DTNiDjzDDd^XG_)<%x<G$;y^0 zC?tp@3mz*bpbU!?k%=ZxOBEHXG&QUB^lA+a8!arFpFC-CaA<dTZ}koA_V@1#2}$uy ziHwX)iit@|O3F@2$;`|w$jZvk&(BDDTTxK(9)qc@tgNl9Y-ng`udnZZ`?jsEt*5iI zudgpNe=w_JHoImyyLmgN?MF_>eooi%>)!L%L)W>ZKXNC2<<0&pS;STk9+xg)E0+G% zuVI_lv8@}}-W}{vWaL<4;$&*-RA%N}e*REr=WtioQf1{@ef@fK^T+n~ot~b(_wPqW zMrLMamM11wr=~XN=T}!(cUQN!wzdX8VTbpyQ-|2q!-v%~?ABN8=aG@4+1b6_-LsXI zuUlK^JA3>4`-cZ#zV7c|TwLsZ!ya5?FTVe~J~;UP<;(rIZ+CZhS3j|Lzp%e<Z~y)K z_Xp?q|B{Er{x4<!KmK3e00ax5Az)N%E**-5Q1Dt!HkXaWLfJG5)mqBO5@|)<w<lXF zCQ@0I6ByN7E2lEK4eM5GjuNPNOd71F5cm~^{DM`3?HL^N(<O?LgiIRkHA@w0nY`B1 z?X@e_IDr~3c{=LW>dY&xcxsO7OlmDC$HU#k>rHFT-|=Rxtks)$=p9TKX})XP=?%U; z-<hE)`&e(<6kN35Rytp3+-O@VV|;G^mgVSlcGyhg(@d`D)7{zbwv&ZCj*@H(GsMBP zG14$edb9O>z1d-=Si86LD>aWn++@*<s012Om6T5HpWeo=M>F}J%=dNQo`3^yb;`>3 z?!K%@gXTdyO{QHjmWfyv-GRPex2G%hPu>pnzDT$@m?_bHKk)L7m+I`(!u$9C6&@b< z9tKQZqlSng7MXk%&wW}-^D@MkUIPNK{S3m#wS@ynJh;P^=q)zNqFJch%K(KT#)iQr z+V{*xY5m*|%DnTmrb*m%HEb->Vi*7rB6l^yk^n{m(qx!V_cFlrzU)ACLaAl14P)~v zVzEx@91W@jwM76!3=by&H(dHSmxQX>jwHAPcSUOt9hjYn6u)u=<LO^jf^c^BPDsS% z)CX~1J@Dw2g+EqzEdzZFVUGcw@to>Q34X6c>Kd>vrsEzqPm;bS4PXa>j;`1X!18J5 zHQ=uyBM5RzEGutXBXfK;xGY~o5vOBX=1ZxxoDh$p_~yM)6(>3m5<$vY{wWpAUmC|k zO5W;`UUB|&Jk#~!^?0TycX@sL16@2ji!OcH69h``%;Ob_VC`P-Uuo`fHMXk{N@!Q} zs@#^~WS6uk6=@AXF)oJ&pah?!H*Ex$j=0uvl9PiwjVLQP4Xi+2iWx6hmVx3fk_+jP z67pZT)qs7i6oEv2^dhym=qrb`kb#DCL<6}I4hZ*Z`Ziq~M(nd>8W>ds!9%O7MQAS1 zlrZ0rBEE;s*f1S^uwoN1w#9BzA@Y#XA#7UUDR{22UuSUpdaZbt5?;W%=d(a>W%0<J zP!}vTLU~NYQD_*P?ID8fv5|8{j_lV3FC@}7NKN8UU3I;IQ)n-eq&`aGnaN{$ya=M1 zA-q;H<!BkgV+@5xK-gHLn0Cp1J%4|dkqJ2r$9M0)Z2drQ0Kw?Kx*jGHx_F`I%_dd? zQkqjOd7HiZ#05m6hC=2Wz&vOHaSWY(p8=c}_x*~_6j_fO4iZ_yY--eDIZJxT&<77H z8cL;4e^!d08NN7R`6LG|i~@VXBl*;(iz|hrziPpu2ixg-Xy}aFrD?fg?px@-Q1lXU zWJizfq0D_HnV?bx0%dJnJ{U!wwI|d1lsQ{R5r&hO2tX~8F&DSvc)&^l|IBT{*dGT{ z;46F!A|uo8)+z}6a>DkvIV<kNZH(Cc6#$2RipcLEBEE~qOTBw&V;I%dLWcsmfH0>h z4o=EOT~>F(m7lwlu<-^6yKwmvJ+PA!q26LxY2*fIU8<dnz%z}(DykBK=`KHf8%8ri zcOc`Eh9BSogl&W?694Rq=NOGh`cqgMaa;@CJ;Go`r`f1l$4;0kaoIMKZ}MY$0q|3| zxd+{~hBulaXF$b)`YME)!C+$CxRgwYIxiZL-(eiB1Cu5~-a#lSd7IKPlx5<tAQ~W7 z@+dg_;ejJ{ma$B9xHzjdA@W@sW0qDHY5Klm>Gz3cfzqt^GDpUjU05wuP5}<}%_=zf zu!cveK6dxH0qvawggfkunuZa$-4BDucEJiFhjL<AK{zz`sjNo(BqY9u@)t?AIk<E) z#+^}GZI}fmQ2HPMqzIT67*1-=ujR5c1^~gf09o{>XyORNLh3_2-21cnQ`*|%e@3pj zL$z8sdsDcxchwNqLc&IJuBaL#P7hg#_-`Ic|BP(u8aY0_*#}ti0~biu0Q0Idu#%N~ zzYGioVFs_*;l#rhsM0|YKTSIm@oM8=I)WULVUrlzK-OJ`Ne8}nWh#V@t>Tap&@Pwx zykNN|pmh6TU#&A*iyE$w=%HNrk^TeoG5lwIqsNTM)+Tn`r14Q}qt{vF?9RgvxnIZz zpV-6>>xX%Z-|?E>)`saT`_yookIVkmnmgwfKYNh121ql-{!|H6mDv(OkfaFJbg5_G zsrK9F>oYd-S*sd+039(d9IN(!w}>f}wyAtXILE9VspjAyF0UStNQ^&Axq|MD(;4aN zsb>%q>5gRO=PuKivM6)-m@c&5hU+cTv{<)YBPHGnbLi^l7MvviLu3oI90bwqmF{cI zY7=dWIeyRjcz}oCU;3UqzDQVCDFo^9N=Wf%Rz@Vl3{XhvCKojmOa@wxU!A1&jiw2E zwM`Ivnt1LgPs*b28xisY+M`6TZjC?Vp@l-dzp!&9>hQu74~9B^$-E~kAO#{stdwgw z*HeE1T5UxBm0#?9oKAZ=&7A96;aHxT*<1zFO5vzoQUnRzjbhN1cA{$!Tgt&?wL<xs zzGc)(a#Lch;oP|i-{Hb1IubD_e;|?3AmE(@pozo-YOTF&%HZ4ziS4g9KkM3{7}!f^ zhOCc>zhEUIru)no4K-A-WL-+3Y-y3MVc|SfBcJ!HiFN*%W9_pI_ZQa_9K5ukFkA1_ z`SJO2@+A%tU-}I5WXIe7IFGmV9oD4g-S`IHo-~RPZS=ufM_N$B6HC_huzN&PvX{?- z#t!X5*SO^Tb;^rB2dre>ld3v58K#y0jW?1j3{eu4jp%UV(fhq<;XCilt!+4;PIsbR zAv6U@;Hdm&aK<ZC36^mg`B)V&X*&RULndva#F@WHq$r(11pp>rTsI5mwvuzyIZ5Kk zER~Yh6YX9cyXy9CuIpSiOa9p=erv3k>1BvJ*l;G2+S`dX^(Lq!cFw(g#+ohQ((}G3 zt;B?Di)P_|T=w5}TI!!AJ*F&!FY<`2*L}y53%@>gF|7COet*~7kBt9T@Fj%nkbQ*2 zceVbpK0TX6o4Bd3Bbn!2!+OA1Dx07Iih)~Rw|Bk%Ox_V<zwPhkLK~su0lBH0CKl91 zZz6Z*DV=-ML{t8aC1bm?VXRj#CVa6u1-kbtH<r7fpWM^;{u-iWexg@Z`R<sLd-?(g z`|p0?{lA|J*nhwO(*d*?x^#a5lc#bnP<;ufrJo`aoMCWfoy-8?<cyal$BstFwu(Qv z@jv^WNxDBd_Ixpc0dh(EsYKjTn^Kzvs8gF#aEF8LBZO!p6?{WP%pxU%Bc*a9Wx68e z;)2BSVFM<7Vk7DitpL<LJFUH&!aJJ0^+=ujD0&y)dKZtg^%ujOG6umf;5f#rH@q3k z4ms$TYg{@A2MzojwM1wX@n;{%4{5T>V2YFH1n;2D?_T2T$Li(AKJSVR-G~j_aP2>` zs2(zwL2~_#U~c*zo6r@PlnZUZb~wkD;rg=TzjU@q7G`#{gFP{#Yr}&*qn1dfO(>rX zYR{&1YH?1>rDa+&Q`dKmlt^f%O+2Tzc{>T)<FNUbjw=PE{f9^#xKC`mwlNt7QTrx# zbonmdxj(tKoZU#8r)9~TjB~qAS~W}lkn8;W$X(MAwvx$!7)oFQS~SoY+Al+0M~%b} zj6hJaJyV*9ajO+EE>8RunOqZA)l_<<)q@%9Y%BZ70Ske>z|b8F+mdx+2TV9UP57Fk zl*))<SSYd70`EF4&FL|o9j8MC;zhcNLtyGpC!V6n7!siLMHVcLjhsWB=f=$MJ{RWo z-O(gUeBEA9r4kaghyM*bq4--^@b{9SS~&}QaHv-YR20MX$OnqfW8hr`jj<;|;jXpZ zxJ9(&B<ATtfw5mH(u<Eo&EwNu?3DsrDD1?A_|z#mH>9C-;dRe!eP1i$z@>Smb6C~Y zxU;0m3}Y_t*bgi1o~vejL5Y>_OILxMqbb9E*r;Am`w7IuB)T<;Bdh@BQP1|3#Y0$i zj~)Nm3E?OLpo2WW%XAWM*p)w0HU%fSNxHdHr+OJudYy^BKsboe%0QO#W8)KFxu)X# z=0ubmQvihtS5laL6?ou<i{H}|uRz>r=uR$ZijJu-{SiJ7^Z_WYsRa2QT(n`HX0mUM zw`5sbLn&Sgc#Q2xVLh;tJ2F%Zga(WnsZ|*%1!e<pb(wzo3X4dB0!scwX1#0!;sbGB z-U9K<Krcs%SQaIPe4zA;l1tLiUm;KucPN<!6s7_F{jucb2oRW1LT@4Ystt1M25pZ= z=Hle%vIA+W0?i;Y??3uSb~u25`F&gkkLq5#)9HwBMt}j~8~BzcOJG4UCJuo7Lf#_? z%%FQn4BR4^(#;~dibGhACwHhExzB2p3FuTpRVWF_UvYnM6C^2RQSf2MzcMAd1N<%v z)OCQEXaE$NS;#4Y@c^(c2pEe_LzIDrCyT~i3sjL7eRRgfXp19fqc2nDr5qNP<}}x$ z3QpKxl%sCse03V*JTTTY;I_Ko3uQ&>@B&r~83;zbC<iLJ2#AVS{~n78QmuHIA!7dB zj(DA|D#2|yPbY^>y=JVg#!o@oCxGLo#?hQgwG^asu7RhoMIwwdHByKxTx9G}q{aIt zQc+;(!E`XH=)*aSZa8fnB(AX~;pg`<E}+IUbr0utX+iFaJ$7jNxvrlyP2@Wjp4ujI zd}PZ<zG%0Y*x}bt3D|y%rDkf7C!33VRmm0_R6m59CR6}IeN4|pSO+6D32#_dr`Q3t ztRiWk#b2-)9wsiIQu6DRyR}D#1XRb;>GAZG-?*)z=}C3JwEk^2`K7;BHPARt;LX71 zWn8=G;-*UlslWaGod55123CfAG@8}Uwn;Gq5+ejrCDI2(n8K=9T$^zsa0MS~iiXvg z#x0=Vf?*B^>IF`4sI<h%!DE2p<8y~}95|r31MYNaeiGd2Y-!<}SOd61IzELG`LvSi z(_vzuhC=k8e$@-|wF~ve7H;|`hQQW0yMTO;;sPaN8DP$b*?`jYBHR*}EENS=m4;^) zl}_maS>|p=7LtLjlzKg`ThLeI^o_<aUfkC8F3V>Uy**CUu|Hy4p7t(q_x8zJKF#cn z{{ZR@hYDd@c=lSh)hfsCnHbkQ25I}33m9qmlDHP-=G+w9<6L6(>3yO2)7ViPR~5I{ z*O8}^{eN8sXv+rR*O3?Xv1wh5sXtowg<Bb~L%KPi<HzvT?F%z=`mA+&;$MfBjmETb z$>fZ@PuzRYl_NC78H20ubE-)`?DBNf#rxrn^v%yUWq<EBzrjW>nRS<em3LC`zG(dM zXlaXRm{u@v(l8lhWV$-cymQFECidV3V|;h*o(B00Zo*!@vyB}tuk4UY=qSP^sg<a8 zs5dF6>`5FQc|_u<k=0nmBt^}XbENQSOSm7dn(f##kq^(1Ecdqg4iUWEPW)<4WlDo5 z8eu#ZO1_f*!6y#2G<Kv?Vlva?wWiTdS`LUfC$@m5U#b}1pZ3BzT=dvJCz4=WX%$Br z@WcxmN4yqA_r5Sr=W)gIaBC^PnwyEthVUDesg0jaq$`fZqpBu-)4}?08<H{@|4g^a z&9qz1bjmS&dok0~H<J|mzHGv;WaRlDiD90snLc6$sy|+M(D4wDkb$3Vl_Pvns>poK zDgK7Zg+e=0HW!qrnVd2ZvOb%b6wDJmdmK7{S~!2+H-E7`|Mv43FaCInR&*8P)DQlb zoYY1{f5v|%d9ntLe>^GgcaeHckb^rEK5vE0Bc8O1adPd8i|O-^w^C=S01Vc?Y%u`j zIL#sP#ggybDpY_$rU0_`wpZ~nCb5CjKNq!4m%_Q0Wip+FkAmc|9~QvEX0(1`qKpB` zG()fN;QXHI3XV(Dl7YsO%N#|^!sqh^pQp7NO~`x#^F`Wl_yZq_`UJ(o=eYuz1y<mH zpB?1Jgth|)-2yROD-kqP2J&L}?8^#Z;|k|s!hmO5v7XPWSHy{*sUEX=H!AW|tnq5E zZK{s2;d~&$7jyZ$n$W+Iw6meK6cw3FPEZ6(^Ms~(&f@BSOzHpFSvX6>ID6+Y!a^KD z8#;U@F=C?TWvce}pytKVyUnP^=!$0pwMEfIp__$8TRr_-eLGtNf42siwi$-P3A)CK zHWpE_)7EdMfAvH})VjGm3y*SJ_RO^{VatF=#<&N+t>B+7#TMGZO(w*XrwWK8au|2X zUhe7$Y+vl`=7+CeGJU#{|8%!AAI>@YMA@168r|{b5!&h#fO(I;CGoy-gy^%DzB+ZR zU4mH)<l2GpuK@0|oMe#AXX?wc8LH0~Nx8rJ8+Fe{U4*+ZZF}`0pE(6TX@%O5rH>?T zwMN&&u16@i9v}2HB$_T6e2de%W}_WWd?MfleRrRXK^~xV#?s;ro~uB^oLvs!`%HH4 zHG%PzHit${alU%JI*(yhZdBMt#(gA}q0NzfQ{+<>I!<7!gx^ue)`7$BG4tz={xWNe zFlyNg_iz(Bui_JL(i5T{dYQ+5{Piahk8PSMW$|GK(^yUDS|XG6Ds0ix4?G}`2Rwdn zd6whF@~R~+E9|Ur_v|$NEG~vA{vS+0G07>2%CMQ-xVG4ye8z%~^Qn4IRc|`>{H!zV z%Y9i~*T9!P=F_SDu0cW8Ys4d*JS(^`&P%~DWli$^ns?un0inH+7ca6Go4UUd061RK znUyAP>rh1Tow5Hs5Z)M>?7D!%E`|d%vHFlX`ffx^%Qp@Xf7%5x{F18WJkPT8TVBrV zs!o%sZ@4W0kHi%JbcMqv-yh6vPPF7)Q&(Ra$>V2y30PopPTIMSqWH>r??qb%3<cJg z*~@G7>BFmq+94A}C!;;kCmcdnt#AqoAl!cOE!M_D$Qv&5{_$}IAXgb^lSi|}VUo;C z38#M<5#prwR754UU20SMm4(T%4rOVilC7Jl>CbBRnDV^xrqHj#Q}W9s&95sPy%inm z?RN&1BV!~1VoI59DA@JU<8H)f6JoIz((>zv&!`7|)I%8`@nUB2N7PIw3n}zwIE9sX zpH);yzEzn?OB!}n40=Nf<Nrq``T0{!LH;M3I9z|OjlL_1Y3L|jc|_~P)9-i6`We(w zTxwfkl|>o)p0A`eb48wt93Y~8MZMMVy`q!6hUz!|YtfufFoi%f@e6PsgHg|3RfQ~| z?4Gl~(u0IHznOf5THVLTJ81ZRV+u0A7{MM=T3(Xdk)BPhe&WB`S1v0^V7rwie7H{d z=kcDrkBt1qGC+kz=@|cQr6-c3k-I4Y%Uhua2)A8Q1c3>O+0BH85d^pdtN}Hc2v96O zoH{h^AbcbiA|D2(GdNVsV5urZ@t}3oa|EmhqUa2dwelYsmN!h1t0YjeQgP5zigA~r z5|WtF`9`%%s3-`*TANrpOPNv?wT4l^nMsp%_c8d(&9pX;$#5~cz~t*@vx%28UGRzq zwE$#FBYvdQ87G!V;X@pEhQrJd{1@-)%nvX7@nj~27_HmO=}8VE(|^HqZK`t|G`)_( zi0D&FQPecI+p3$MJhFqckvA(1YxK6m^V9g(wd+$#0q3yYLJ0t1e@KD+kr(6F9X{Ww zV`I`AA>eyvAdM002K@8anBOX~1ai&^#7CkvfD)UR2Xx1xQE7j+j{<Ndz0}MG(=m$q z`EMy|fUWZp3_k3wY0%H$;$V7YC2okp;t+nw1Ggm6qdVTX2<YB4Bvxp(v4ud@N>7aT zvEP@*?@Dz*X`1+YudYLA#@-kW?$zYjLE3E%kO2r)oS-`Bo$4+qWe`#4FehJNyV;Hu z(YVX0Y@JTuOca^9*&}jm{WX9SU%?>AJIR(X&E8fK&g~NiqDD>+!T*tOF0v7VDh=n* zQqKWpAjS+#+vPGPWkoo4pI?u?wVWFXR%LQR3ef4@#?>N=>j-&BNbD8gGbe3QhC>+1 z?V$=PYpDQ&2!j#0gtH-dje+v4tQ5zrKnEThb>k3WL@)`ju^`#3VP#7r)QBPH2yGrp zQ=vrSl2^aHibmJ4)^~G67V5Lp0k7gLeH6%P;PAPl^wI!-tM%!O_DMt{-~JrpZEsqD z<R_{EFjDi?+?Fj)I*2nEhg2z}Y!8Em)Z#`<#!<4vnBUx0kTNsV9;7i-2RkGq_oWUZ z$nbdVq7@+V(IjH`>rcqE+7kJv&GMUil-5vt>qZ3VQw2GBrS?)hch(18F&bfug*3sL zU#?O4AKKbxu=7UG7m#^<XYr(ueT<^1t$Z#zwTTo7*C3R1vbB<oN(VJ!jP4^fF_4YV zWU<7+KxOp3ᷗRFlZN1z1cYsBQ`bPM&H#$5IgLpg#^aBIfF3W&YOGZ+nx;^`J1 zt5VYqnld=udcW1Oa?Jm`vC%R5(n)@yfbCX#iqrhubb9026PPCV6Viq6Ieu#&5vg8_ zZ!wi;$I{xd<5u91l$>W44^MWo`dx-e9=KhH1wQS%EqFzgN2xGr4{f@rItG2zc-6DY zQ*I+#X!bX3^2PhAP;FyS$JlDtZkSS^Jq*BuU0NVLe};jYp9y$<wgxYVP`94q`f&@- zd^v1GV9%+*FHHO`T>2)eg*@@yH_Bk2k130`)EA>4u^VVO<0;eERYfD<B)a8jirPi* z@RsgX1B_Ih62zDL7Du1ld!&a*BRqnx!HyESjN&Q=C)i3)QE{8)<T9zt|GH*X7xSkR zBDV#?(g5^Cv>o-~db%A9%Ou~A((o&NlW@%yahOXd7Sh#?$faf#5zQ0$S-!w1VoG(r zH5KRweUM%~DVxIy2akyemtQ48eCQ1Y3oi_XK4brb;m(F<h=i&Anf9U<tIBu$EXbq2 zM73WkpgC}r-JUhYr`?LY`ZE!%*}LiVZ-pyI?W_BT-yfd~oi*({skktkvk``ycccek zPh@H;3~|`6)P%wpbB61kq&y9V=7h$0j0nmNgaT{zIFHCwa1L-XZX_I-s*(~)xq!nM zO1K=W3$7Uk9CtO<2ywzAa{mOOOc>c61UM&dfI2i*GjlwIExkV@NO+o;$Z{M5zr>HI zw*tEPT1U%y&d49FXGY@vAt;^dtGLJWi_D=vOj<G8#CVlrDv@OWX-Wejq8m|l#Avl6 zFI*fs%sCuCUtphg#y-TOQ<nj*@%ZIvsO1(pg61gk71elb7!7#5*XFI7HxJ@&#%X@; z$5)qCgF-9nvq@hQ`cF;08#qG9zkCWPU{FgALoqVK9f5hW7fA!(VJsijtgr_bnTa4) zjJKUXEDX2dIE?}W<j>)NbDXHP`_Pzb%(FGuySrPOvafaK1ZD*^K7HFm{mu)wn4%N| z_S<TQfN_Z{Bi7^=+_Oag4MJQu!k0Epwkih$m24BIJk<BiSCBb9pQpDG(@rw0Q<Jr? zJ!ycgFPbJuKlFTLQVSv2TDootVy%$p;kS&~+~_pv`99|DWLxm0ZkI-27Pr|TpPWHK zZH(vZo#RDAvn}510L~X2$2ca>cFz60Sc`E8&NP0)2zw!cbx&U>dUVD?AcNJEHWb40 z5%%dxKe8Qt6C+!W(f>@=-iwc4Tl^?E(AbsY2jYpuv_{nGjgRwmrek@NpAOqID{v0* z2!GY0|6|W<`f=KH+%Ly)Uqj&8$C)QTL?R31jwgkJ32jyU^Vj&7#ov9LGo$vGj+Aqe z;RAVV(2X+PHMr18@janstfjb3un`d*pLi4>Nxh$Tiss8-N(~CAWRQ1LGqhOF9>1#+ z_jJ=yupmvu3#>uQyBoaTT&-3KtW$n@#!a)imSopn?!@%eVqx<`$N2Zgz@n!%-!|71 z|Fzde%X`?<yjXn~76>jgrigx{h~$x4(&}Q|bTmC%TpJJS?CAIOde*BUYC9BBo}AVt z@w@ESNmOGT;oz;T^7?Dcv%VvF@8|0U0=~)hn$vzmZl=;7Zw>B<u?si$FKD*+@Ku9{ z-_21_^_BXjoIT67ocqLeGCJ0*rSFu30TO%s0kL=!8(Jg$qF-BWF=M6hEHrOMn?pqf zB}0ZDg=O|!-A^^Q@Ar`lJffut6{Xpe!h38JPDnclf+LO2jn>jD>`we(LYw(YYJeXa zMaf<f()QqZ&NH5VI6-$DD8o%0S5E#s5fd`IR-8k`KlD}U9R`=z=Z@S2-`GUA%%D*s z?GM!O3%iP83ltIDml}2W>V5Cp18oMwVW*iix18E>P`b47!ZmJq-~Q|8?V}Y;+L>e? zD?c56)HD^<`8E&FeZRT9oBbnb#IKpH*~{F`fH|dNRbNcAz;c7d1k$yt=z-K&*qh?! z)YA7K*8+68kW?7=u)CLs+6sT0S9byHlF!ATQHLC|^(VjI??<NO1j)wRC@`1pt`LIM zDv+svh+%*CmkxjDlMhy(#lFu^)Ah@F_C#l?df)*hP#9Si|013U!E@x380YW~5HN@@ zCT|};NFXM)q4_Rxm^I6X<J|^=$U~9IL7tFu2*y4{E;i)o-=EdhT`<UTqSxQ9hjf=6 zqN^ODZy#c4=p=gHO4$;DVTjWuY9|hDp&lJVhz+x$hS?j~*I%?!HI!%8bklEjrBKME z-9D}(>R;ZHlORm|iIaHwMM*%8=+P{Ju#wWFqI9Y32v*#21OS#vVdyEZ=)HuoEc*A% zNXx#?tR2t9OlZb^PLvxZ>Z^duDSz%=j+7p@1fy4#`L}z~r?OuGqr<X&OC!o+XYXsD zj+FSzrY81w6A}EAr5B>iQZ^DsUO>?7aw6MlEo`#OU*g)8GygO<%SOp)QI0fJkVdJ= z8O<t9_r_^cs+iXIZ!yHfo-^;_462C1qif#(mVN(6bD(yM?AkDMWGc07Yq;{E`g#kR zLOXE8K=9|b&rIz7uBF0dK@U)9#7>Ur%gBH<`(vwB1z}3nld^FyG1dMy`V)$}zh>h# z&mTK!P57}Bm~Rir(NP{!<l6>J#70e8WDLd;4`SmhClf~}lU65_4<}RZCR4#vX_Qmx z>{A(HQ<<o#tcy+_E#*m8<?PW(F{5tJrxWeL>bav+J0T;y>^&EJW$H#~Z=?Kz*(p1Z z-gmti-7MAby(%C@rZ<Q;Z(#BIEpe5W;94!nDuISL@bQQ!s$rJS;~`VcfPO%+=#sWB zd{CpcO=gC?yP1EwE34F=T_%H7Rk}qb3L{;fH6sx<@x@Z(4RP-icCB<weu=rJn|(JD zKB9FI_v!&s!W&m%fr`cSp>JwO1Ez;ZWsQ8t2EcQRlyea{Y%}z8E2z0uqq#N5xeozz z>rrzXS#uvN=Qi8tG90FO`!El6Q)yr3u(|hhTX&E=qtu@c(gP@nW8v&;Gp#Vk`MuEp zrjF{#A?fG7$)Y6X5`MU$7NnN}C2ofj_E1aPn2u7!EELLoyMV-Olf{DHs8f!;;qTSl zp6K(}{o)v3afj+A(n>q+(c@Rk;al)a5_;agu;iv%e>hfA7AH+Nqj)%hwVJtkp|!N4 zp(IB?XH<8eq_MO@nsKiSGM@RB$&&z`u^wHBs?gk?>Hnsw23=O|7gP3&TI#!)2scuT zW*ock)lC~zSaeVcFro_dm@e1QkGj|V8o()M$2;BL^O%qwvNHi{To`_uKPx*fG_4>X zK6?<pSfMfF$CxQPWI)%b_bbZ)`(3oSJYfOnyFR7$e4_2LRNyQOHz)PfphCuguzgZq zTl?^CMUiS1$+4;=zN(B~MH#Q6omN!>jk?)&oar@A8I?5}b!zhG|CP?G9<AyKi2aR{ z{l`e~_)a;Jf7YBGK;_T*{X#$I3tF>pj5iwv$Tqf|9bxj+n8`H~PuDRR>tp`DYD;Az zqPhI9Ps7DS0f9@;wx%y}o+4940sq@im#kt)vW#h%KnV1^Mw#qBS2>~k;6t?z;RhHq zt^1?b1B}-Loz{Z_*PlhN2WPK`RINYHW>usjz!hJpTqdnTQpzE-)eo68JJut_&5*E- z)9yZ5abq`Pf*%cXRo81+S*JP$VQtG~-Xpm}@`oy=GUclZW0(8|Gi?YJPDMEFqG_dW zy|k{a-<uryjoj>yse=mM+8<&##tf+*|EzrP$kA;Otq=HP=5oFfwwjW%wjP;Pi{(?3 ztQ$up>z`^)j11{lYeQbKZ{)3QHp(N<4maQ8ZZ%VFwNyz4pGlKsfx0jR(zHZevxwH{ zt*)1fcv(cCSp)(V$7=MBuRsDPYwJDkcHMG>fW^D#;RH0YJU#t`?Z!iW9b5c$A{)0` zgH_wpYc#8tR&aKK^ti71z;d<TdV!G|)8(P|Z1LhYk&u?{H79GnA<*%n$fW)j8nV-q zJWS`X&D(38X+MM=_uTn}ySta$dGEJHTiN=#DjpbGwUbOBKsdA)y?d&ic%LBker!AL zMaxI+-Ja}-vzJv<*}GTSmePx$$=aO-j`$%C>+l!xlt!)j!SZ8J>ptkGhrgDbp{%?W z97!vR?XKmk4o~t1ZTjSi`o{=<qxas9?e-fFarTK^F>z6u6G24UpK9(Ak*?pDBf{8r z`81RAesj`|?!mlFc@L0~peMY`5<iV4$%8)o8}H8H5)sMmxocV<zx>Q-VkA9j#qF5L z6>0m=-fpr3!6dPd;z)FRkwpKabJKH}EoMK}qsxDUn7TMZ+-ff~ZeQR(ufh}@PoF#5 zKAfi1KEGKJYZo9dxMCydd|>y-KC~dscc!X$Fe0{)i1z7$9Q8O2=74}8(Ufpc!fKCf z^+1Vw$VW3g_QiqQbuvL~IqRqzGba(F#GyveAo?G~tt_V_&Q4%{^7D~MPFkcs=aGTL zk)g_wk;##<^N~r=k!j44S<aF9V<*+BBg^q4s}D!k$4=HUYTDD41a=(Iti2@1l(e+N z{g-V{&d1I{&O(L`%G$>+Z;stNkDta^^OPP^cmQJv;%O$~(mC<n5uM|whnFOz;4~N! z4#Biv`U3mw{)iKZ(4)!caP^=^sf&n{vE#5GC$DtcR#y<pJ1$Omr;#eBVbrc5uOu1& z(^!)ztQ<FvXzr;9CfqIt&TDZnsR%fPnh~_6X8_Jf4w@H-is{WT00@TLy(}u|>~)MA zC-rLXo3s4OlReCTxHj2<98oSrsM)$#c<Q=u>#_oa9CGugE2dO%@~0`LXa~X{&Jo-z zlciqTwQtnwa|nu#&r5<65I6|1Y{HJK1XZw<y$a6(tvi7GoJf-fs%f?m@l@_*IzSPF z%0M)HDE&F-4*Rjfl&IF265kYb3a1AH{FBg}u(p2=?_-iW@J2zdG*g$<3V9xP8G!Ey zQvdAI9Fy9C`IEe2-bJ0KvwP=yEop0$lt6|A6n6w!ZR6<Wfiv(xgfzZ@$Z^8#3$`4u z<@vwF=bY_KwH^ffE_qFSS&)5EN{_YGr*T%7uOULo@(iog&3h3fAd07G03%L<r@AkY z&>V~^_AGAx$}_!>J5w{a@%6m!<O#^@P^h>(@XP1pA`%^*0aA|%=8Q8ScOTyT566Ly zn#>7XlkWhJlMmkGwoRc*7%{~JvB~fUBx4yAgg;3K#$du_2vO#k3TVWLG@)`A5X_Ci zQ;huT+?10RK1N5fg?B;_p7$|~AaUCMAj~6GCGP8u{^1}qQ?)rWOWYiNL+3HmPiuiX zoAi8OJXW!2kB9|KQgX@4?9m|Oq;d7#Cr*x+?UeDV+8|NTI|-zlit}m`dlE!&?4D2R zoe(JFan1>5@_|4$!n?~DDipKuq!QZoqnJwBlJ_7S^v%fJaM(uK_Yi23Gr^d1*D;3x zg^tT%bMrU|Lq+c8lOCY)wkdUzY?=^b)K~`WD`iu?gzMkDPs<GVx%nD?!~HFe=Nrpb zx8HYHwl7P?Mm#Gr@tguLIllnRbE@?Is<D&OWKkiC(SEOw1#itJ>e!!?1Q}74(sIbZ zD~MS1K`Y|K2IHW+ZsqWOm3`t^_kIitmv0DhAi0u9Y18B4<I|p7UvnpVhE4jb5d1&~ z9dHNQyna);xr*xkdGV3P37<?wB>%B==E1LCL7H2nGzH?5sS&mp+YO78^?n>BMM1?^ z>cH~#52@$m##wU?L#!H3i4Ng;aS#X^QPK4yVlwElWCh8$AKo+xc5py*3Q0>?(xM)V zsDurYVQRI)?m@nB0gvoqGMs_?q5KisiU)HIZ-3Y`HZCVPCY4mhouXQs*_PO+;-R?V zQCZwvtw{QPqM6|}?6zb&82sseLh8Tz1Z%ZiR@nNdOA>+!Yao+(XVk3d`|yEW|5!cN zw&4^4HGs=Wn*1{eeismbFYX;a>}5AcM$+fo{&>2&pL;&vpXfh-<?_6$Cp2X+piTET zyYw5w*c;x7=Z{XFM^CVQ&CL|8C5?M;k?_eZR&@!TOPVy{jctGQbsEayHvxTITC0G> z;NOQUq+NBeM1}SE;MW9I+(#1VG2;Uw?d(`9grewKukpA+l;6Dg!uz+6)ix@upV2&= z`aJk;YZdONy!liNYr9$e<Xu!2@aFlFVD&38B<p!s{vVots&fAn0E8eBPlDBU(H0zu zi$`kZv$z)-Nz7%?;ChW1Pok>wx!^{pjHe+~Gx*(Z*r&7D<%5hu^w9~FZ1yQNHEJ-p zQoPsA#aY|Qd`UbWOhD$ey1YyUAEtDE$Fo|aXKg@Li%!VqH?c7JnjiweG}{=*P|5z_ zA8TZ66ta48M7WOTmmWucX=NQwpd>|f-Rm7bNem{yqMDxuH&KrKXBhRm*x<8IOXV_b z>hlwvrr{B6jiYOeMpwqGuvu$})htv=SG9V5eF!|D5rjQ$38ii@-y)s?Ef!@6php9b z=9w-F_V<P<f6`w(6>e5Joh0K`cud~%{bKW-0`+6RW+gBY;^LI|<x<LB=E9b9Dy(;s zjtv#8GlV$OUeVH|nTvlA#{dbrjUB{7-hkA72PbyayS_U!c@vjs;fC(|zAm&0{l%fL zb}0~17DXeFYd}cHN{dL~i4jxAgX>X!d`31^Q>L-J=A%cF8lv_wg`p)2MJ!ab_fhlF zq)-~Ms)bRB)=%vK3OMT5&rcX*87h>&E}d^0Hd}{kvNF7w#~fzGZ(X*pNP1&Z6#4v` zn%WFUkMc7rKqP9g0LX98l}~SMW>pd%BUP@(;q1d*&PCW$6UC26s7d4);wFzHmJWd8 zQtvbaKwxfGJ#@Ib5L+_N+7$+b3)LG0<=JPA;1p3WDy9&3n~s2RDKUzHltmLZq}_-; z_tc@5Q80uhbPtHn;Nt_!Eik_uCZ-DvX?&_8wx|fU@Qe4<eWF5i3^_^xY$7acJF<P@ zH=KhgGE9$JL10c5K$%pc+0xwq$Behxy`aHJLDB$zO*9^#2VEHz-2?Y%EN_p{SdKKk z@Mt>otU)iGu}pe^<bO?$B*V<wVU;S$_qJn0(`Vtz(luI``os;X+v$N}xwHVDnVR$Y zFlNi)w7a>0rCg(qn4{^K?NR`c1PY^Efk+hrfas(g2n@#B`~?Taj*gqur!bh*Mmc^| z_DBEn9a$$SZK*<P(tZBk1S>6r=zCE3V3;Ls`+sU{%qbdbYfd{hwUZXe8WQp@N(vqc zr(-~5x&cNE3AkBnPto5=4@1nv$sD;#Ui|BY6x+?ccsQr3mNlgw_2rknOoTlMjrY5h zhT}6^QOaF2huSU?kKro_D?j4?7Vbe+dllM26@B&RYQyrb?`rGm6WGs>G_OL@Q+$tx z+nHVWWPj6>iMgq<h>8KQZ{F<J_^)<ehE^au62M|W+F^xAN3aZzBi%yK55C<0ELtG` z52)kiC{k`daAxnMR#H$qhrCxLF;8LG^Wk=5?Lj<zsYw<};bCK8R-h7X6lqOcq&^)O zA7zI@1}tVNFdmX5Tx|jIKI1cH5u1?lXb_uL;jmrou`1I>eWF~(fN8_IViMyCbJyi) z+12qLa}#LsPOx*4L@DtDb>hHK*~B<6nENb=^6owB+E99mKjR?%*WBKZEtL`kTWqZL zpb}{F+q6_An^7@a7%eI(lu{o#+TImMh9btJHfI^FQ-vj2M`co9JE9f4)#G?t5lK-S zZIv!+%FjzJuCOa{f5=_a7>Ey@q*hpfEE@`msKcBJB8wW^AFT<1E646pCjdUE!vS$C z!tAR=Fc^h&<4sYg1lqm&F_H;8u7pMpCW4JNl+m>IVxdxT8(tAHzBh}kp?Y92@l9lb zQF0+Z0Z2FOsxhdJ7`QJMM^>_&J8z`pYBn`Ywa5)8$U^JVy0IybAh=!}#ppK9Xrq8a zOW}H~ft0uNEI2#{Sz;cnQC3x>Ds{_slYpvN_bRkfLb}=JvcX{J{J%@pbWIp0hnUA% z`8*bOdbL_TC&z1mf1qH_X~^y$qC`+mm+30u?DnZg{n3c|Lh+SoQG!`D@~TuPQV8Sr zxw0CIB(>Fz+@om3>sB}Y#k$@-;9n1NB1XzPsJlEzl@Xtx7Ce6aR@_;v8Gv~WAgO;7 zFQ(YS%#=v!zMiYFlcK*IzGt><$V`yEieR-ZVK?R7yl*CZ15ZCg<5gf7w=p0&Ptt#` zorR!7Ky53kRD?|At&_+t98!tF3R<?7oChKL0(Bly1*g3fC=Z_%b5+f1ZXh!g;#@3u zM$=Y<*sL?f`5J)RdiT1o9#AEaywAv>MT(P*^+tDN6b0OVv_Ai}vx?9#8M%mV@AG(J zb+$7rsn_N7tcrmD-i&}Y>*Mii|8*>65I~KA5$yQ_rms(vNj*g5na9~&M3N$eunw}R z0S&tFUSI;3=wOw5bsPMbN4W~$L53AS&Kq$8cic$PVJnogsHn3cfe2g0jR|6;P%YGj za=TReCmd9vmhK-^yxuhJEJ?MLTFy&Rn}W)u%-as{Vc>w%qod}oBS}g*J3M(ud7gct z1P#YfGSXL)IR9hNB}VR<@BFNj6pjEpey?SvweQm>$YPW#r%IirO^f>+XYG3XSWy^a z(ppZHCTg9o9e8fYFnzQl=Oja)LHMr6*SEq@o?D~dV$DB(7$rur`Or1Up-1ok>XH$) zb~V8r#Vytq@s%DKy`jb8)iKm`<4Tx}CUUpCtK=(SV#%y?9(Hoh^z637I@Zk^R~Dz& zdPcfCW^PGJ3%*mE*pU<Z`kmdx+T1|ppu~nDTH}{+a=))ZTq8lRc+yRC`_c}VlYgZa z?puu(s+YJ^NnLClopXRl#@XFrkFk3PK|>A?%S2JN9p3zposC+&c=ZiAvSBxRWUc>U z6UdP%^=dcnfNJV%b_<C!Nz9#tcNITc47H@(^!6w>7q!4)A;dPgj<{8%E94MV4_0Mo z@FahVU&B*<FYNitVJksylJSIePQP-S^?l(h+DCi-;-GfTXsg4d=#MivRJT<#f)|`i zNrAmzzJ!_*U?}g^>7B*u83D3acuN*K`8O2GQCD1Df^B*M_Oas_EM20?D=`x}C3wt? z*AQ(;gE!>zjsQOX*8df;uC}Ca>qt^Hn>nlK`vIn2&A4y}(?J~iwBKngD4@z;G4-nq zo{Z1mzD^{)DACdV8ND>XC*{_s2RIb%d>Fj~`(VI*Dokjz_X!*Ja&KQ5WQ|OX&Jeo| z?IU6ZGmMJW*;o$(g|HWsDnY5m?;)qDBN^zD!=(u?qI&aKZ*8#8#}6G-)WGGOH@?=j zv&C`xT2n2IFEFvln&PeasMN-7T#>a&TEiXOy&LIG9D^9Ww3z$6n0@PbB@7j?k3u(q zMOO^UV#e}$kft_(Xr4n!ZKH61aRPS;L%TLX@aJ_Z|JFYw)}s69lP~|~X*^hIjztw> z1`glzWzS3Er~9DJ*pa*q5?KqFocxxz1>q&0-HXQa+WS()bmMD@KWz|Dx$|D%4zjOv zYdrRpT}fw^!2qyB&p5h!l?u9x`aY#u>d8X98>LjKSNwTfJ1LsDPtj&AijY_x8WB&; zwED*w#mKt4q|U_fort-g2;HvE4I0b@QhSfazXxEH^|Qu9cF{uwu^c&eZrir;XdXf> ze(G7bT835l&bZzVBc1`1*Tj5f65fy9PJV}3F;%eIpl$9Zz2NYsJ^)v3P&|XUhV_%! zo46Yiw%O#*4u_>sI})JQpguQfYITr^a2EvK)n>$&BifN!Fo3Lxy@R3-hse|`BoldE zR6h3v&Q*LqKoLhz5$r+hEtfaYg+O=gM+j8bUfJi5k^)C{kj#!sVQS1D5dml>6~!`D zH9Hs~o7Az6u)FGFE*$^ysKJ^dPK^eT8-v?Zrcy~f{W(M1W(OZ{TirxUqYli*3-X^$ zf}sd#8Ka<;rL4?RKhraHtu!pZ7j)^7{&51^2k)C6>MQRc0DbePS<&a$>fnYHkgel| z6{XoG!5Lt%f&ajK+8*7LVza06-=9XageXR{Au1s|d%dXB+AYa{l?h-DJLcn6X-0cc zm6Qw~TU|1;GF(@$fQ49zmYbvb*QgUccGU2L!z!_paVG;t9IohhbiQ4}XpC}?NV3Wq zGw9IgF^MXo&9&1%{7W*5L&<I}V~i01Evq9}0;8VbR@e)2-ip8R<>c~Rj`pKZvMV3e z!`sp`a&{s|2kaV4WjJd{L8iwz0L`<1|6_(jI!sIYmiyGG?6KhTeMToEoiO_ldz6O^ z{Fuqkcf3Sbf-7IHI!y4B?T_kza4rX{>gK6}K$+q#AzZ^Cbw>9SlbA7vTJ^LYXFFVK z`zdGMn0b0}6I%gl<x+$h1j7i#V7FP~NCzW#X4L*Tzf_@C->+5&x!MudBypa+`oKN1 zSYr?6PQ4jDP$w{$W$@si_Wyt-ibk5*>~boLZA7ATRfrv#mo&4Sa{=6rSq6&X@*54V zuA!t+>$J2{{naYX-1dJyxz0yZ)g<QIkLADNDHy0N7<Vg}=P6vSE&RY!yz7=Pm|whE zTXK9>@`I<8w5~MaP+{No)nkiNLEbVE_cEEfq8pw{3Ery5?o~496(3bnz1*LkGKNFX zta9BVQ9R`-C?63n$Bvr1Cf@qay7~`Xc>{F~^Sq69?zJG-#^buC%ewOGy0`y$>)m;) zN%@RuPs1O;3&LnRevR@x0%Pv8M*FIi@+gZ!-ew!Vw-$VzUVM!phjs~<4!`=YbN7an z`tG{AcVSPB2QiOxG?#d=c+d3FCgAEGix`D}92R<UoyC0bot@tQdzv^r=JVl;-SF4| z=;D12-!Lb?4>`Y6*OUEH)JrRll%1N9VjeY{hH)?ciJ*pwO|*^OqE_57Dvc$`nEz|& zg;^hNe_g}O0RQZG!>k~POeBgnS+OyD^v~bp+5FMk1os8J#zj(rr5`7cRZ=R!Cv8qc zBP5Mw1FlOdjsIcfwYq%5Q-`AfD9oPDhtoRoKbG>Ce$_<aV@~78V$V{>uU&c#=(yst zgs<v1)!sVc+vSZry8^q%p6Yu$T^_H0b&uK%c)lS$=qJqZaW3EGY}ywTJm8(>By6G- z6X?mV)#wv=Vlhr`iyg%E5X2M1^G_N*k!U&vxt{W>oLP*Y3F0%R2-bXPyok!}^xH*q zGf=NqAJUJL^A9o3B9Cn_xMqX6dz8wGBsEuLz_7VyC@av;4Y<m#D)4Q6b@oIeSAZG; z>YEpaz5Od@3~!zOBIJD&#tqbe^kv`m*k19QmzRp!x1WM<n+}f@v*u7z;F)IcK1Rbw z@!o*+x950ye+5<RC>1Birt7!|4XQ3PQod<zu6~4FX|--3^b`T!8z-0Mzd2V<3<iIn z<KD=4|I&$3Gk|PtqWAnvUjDlv=oM7AQoQ_e`OO4_dzw4wGbtzlT5V3M<Hq;*F#BgQ zN_yZdD2zW1!#)8KXd!2P1lNQZcZGb<nvrp5_<URsmtNmY0K}GHm}TDJAE7S|UP=vx zsd-k0^1@I_V=`4Cx+kbpXJ2|3VU@{mw;EQUlhnzz4|KX<#%C>zD{14vImU_W7$@Iq zabL<ryY(O0_Hpcs#hdFf?rbb|o*tLS78oi93~;ph>NsIePm$T1iKK}5bX1tTqGfbV zi08`!!c}DMP*|MQc6}<2o2E6%27tGEb8I5Q`6US(<#iTzgO(Z{U@Vb8_ofparDJQp z;mqWTZQ{`#y<<Xo7PX@9TeIz~1m)Y1D1Xt38-$+dBNhsA?;`#!zJ_vin@+uhqdTJq zx`7$nKs9;ktJli0;4f&3@>|PUpv`X3i_#Uw_uugqx%Gi6&@jA65LUiL9NwZ2o0)G# zB~$(VAG~mB2T_(cRHi5-5wW<TDD@X3Wg2105n>UFTh*s6w5qpLtAze{x92gUOqS-L z+B^OuYGA3D<O_d6&wvlcbj-@_USQ`{o+8sU9xJohGW$_ZgppEzH1+o7@Sydk@T2;R z*54A3R2+ToGQ`k--r`>#4vGy{2~4bOb(s7P@Skp@GR3I)bcj8>JwH!XB?VjZQPlGf z3%?Jvd?s3WR0V#kf%8`DjpMCy<~A+GU?-EI7PVr^>|LzVTu!IBj)Rbt!fUY950E0Z z+1xND@BWDf_vAo|fCJP@X$<ZBI>_w_A!R|Qdqq@Rl~3Mt0jtxeLv}V!K0n+)NqC)f zdZmu`_x!K`2OcwdtV@hbS6_IsNcwTT^Qw;?c7K{D_ii=h>rff`t9!lQ6UiW#XKpj$ zPncVMns8T~M+Xo_#@vmO?vl@|-#zDghnTV3B9v@vd>6VP`SO#*5FM|+L-BA#(956i zUSTB<K;r)$;UgoCVUdd9>iS4+DT~i9S7G_Ed{bYeMQbBIW;~{5h@LJ)$2=R8oblDz z`yT$RE8=xmpzDz9i)SWR?*@+qsh(bb!}CT*T~8Il@AGv|IcZ|0nt@-&z+@7ZCD?1G zlY}VGE;7F6D1u+Yb{)o&G@?u2jIqJ|C6~!u{$Ot(I)@yu67Q(`YeoDtJgyCNvq;vX zGn-Fu>0X6Mt_Pw69@!*(Z`zZ}X!Aq5+GbOTVl6_77dmX-&VC8?i<GAmDv-jo`CJZ5 zajg4`Y80l6UO$o+{?dP~^X<CwOX?tZhzONfT&BphUC%$l0Fjs1ii=VzBX*|`H>?UW ztcllCvp*?sn~p77%5|kt%{}P22SnO)6&lgEM84D3Q5Ek*Dl4pz&02!EvdaEF(F}J* zkTyY?UMmK$KU_?aq9;_d6=izYaPr_UV5sRgc_u<3u^yo1qGo3pC=$|>y@pLnFOWso zys$Yz^PVhNdW$yl`GbGlL_c{U@bvOOWtpxi@pIsNsUc&}ZI5+*hzcMLr{B+(^-7RH zlqM+nT+pAK%%8uvUEI5;qxzlP!Y#*7GhCJ5Iwf}g@?s8_dH)v$3HtU-_Y_UrbX)Iw zTXV=hd$pC<{04II9ls1_x4gSc^UN~@OAkEjRd{wwG)2$zMfdMb<F(FD1k9H%xQqBi zB>T_D?_e`kbyWSy=XK9FdtpEO*OR>dY<$O;{h~L=W&7}0r~P2_7D4RFVv~Dg`!$fC zIh57)9j8i>uP!p{eZn^tlUtxc#I+AQHpZPgGhykfusvjVdpGJfT3hk5FFnU6{}AE# z`Sn(W-}i8b!(>>)Iayylw>SKUuKmGJew*7pgQ>n-7xrOSzS+mV!=kqAix%zIKJMqf z?(aVD_rCA{KJW*>@DD%n7r*fzKk_HP@-IL0H^1{gKlDex^iMzaSHJZicZ7HDW03gu zcf5K`2KRUWZo4?F`!4WCxvqfvK?6RLx4!uICzt!Xj3cJhk45;uKW-bk3nzL<%Q3wB zIzTKENPz$Wfd>&LRJf2~Lx&F`MwB>_VnvG=F=o`bkz+@X5HT#7GiM2g3l%C@U|5i4 z!Gi<|6p&d^!b$=)4i>y2uqDfb4_pcaYH(md1O*o;gekKC&4Wz|9E~Zk|3Ocp1u5{1 zDsTaTq*{BvG>UW)Oo2@id{n!ZZCkf*;l`Camu}sO7w}%NfYN{gl?n^uOgQvs(6WY$ z61BUSabw4iAxDOI0YhcHeE%ja7~x=qpk@V1K&+W)*9TfT3-nBsuu#LG8NwEQHEIOg zP;)94n8Rfa0;09%PQ7S#;)F{HD3H9Id2{E_p+}Fqw{P{#2^AE~aon&^;|O6(7eAhS zdGieQRxqHxZ_0%QPpkfHc(z0MQ?<q?9<;c??25xvioT$*YG|}YXd>XW0u<=#D+Cqn zY(Cu%Q?S7EFw9WH4LR&Ew(JUM03ihmNUF68xuej-6<KW2MTDqB|EU7|tP)GH`WoVG zG^=!D=_uU3i)}!~e3Ystung0Y$Q^48^1G@C*zUzCsjSk<E3wQ{%PqNd>%cC-3{%W8 z$t=^%Gto@bqL}nk)6F;Gj8o1z>8#VvJMqj@&pr9<)6YKv4OGxU2`$vnLlI3>(M1_; z)X_&Fja1S}DXrAfOEJw<(@i<;)YDHv4OLX;O3Dj^Fu$}5v;Z?obyP=L4Kh}Tl#FTt z!6t%jhaEbabt4=FRMDbcUoG~^B}5|0BnvFKK%pBD>ng3#jzZu_*AzR^ED1{dP$vCO zJW+xl7dUdLmJS*>s%saik6Y!qB0$84C?K(b_*NZ_0t5;`{~#+H%aY05CXIcuq>xO) zE3#RAl}N{bXA@S)C3|&MBVfIhxZsU7ya3r!nRQPg&kEQrD5-LTH{90>f_EX56<V1# z19gKLLU?DJm!<7aRLJIZg90|YX%}fKHJIYF*<y}03~8iNQM&FRXc?5s<rMpsYTiX; zPE4wT=7kM5sJv51N9+)TN~)5LgA(0Es8+!0r@{)7$HKBjtf!yBn~*7|{A(Fyx4nyd z?!^B7jqbN0Os*idnT|Z8ywYP&>VvuxvAdf9=GriAEe>p<uFq<TXb2G!{X1a6&W&bV zJBN+O34x|qauzAG>?HLrpPB**hLSSH)Cu^P^zaH4|C>O0Avzl&)|0a>0w84<_J-es zhj8n@X&bIT(jnBZD~a>HadQM<5AIp)wF?r*)=5J^dLVDFe<JFt^UI;HaaB4wyIH2O zMf^v2oon1ejFy|72*iIl+uYV%MZn>qh=HS7plmj`K>KYdJ?p8C$VdZ00%(wX#QRr& z21vWyWJP(jX%j=7mmA1kNFmS*p#rtH5YWI!LPSB~e}r=oC{4_LU-C`y)R!9(UT{cS z*`8MZwLvMug)9kCm$ei^A`=A=BK3;N6Se3$qST-PKYC&c=~FFsK~FzR^J0irr!Rh$ z2v-=?&3^<q#puKcB@K~E1R4Mp650rl%*#zw|6($suNe|pW2>9lW;e(p0j_!k7ywcJ z7)YIzj&YS_T;qPEx0rN=eiO8#3`w*(?_^StMN|ygREYp1>5-Ni8Q;}vnaeCSOqad% z<u8HhDP9JXn8h^aF_D=}WiFGM&2;87p&3nSPLrC|wB|LjnN4kOlbhZ2<~P9^PH~Qt zoaLN|zLwUO@_A%w=*%O{%o$I4Li1pyQW!%X@FNAl&MXuVm_VSV8)-G<iq|@qcg#`) zezB`8{PI@`x%Hsq*h@d_1dl_bh$4R$U|^5L+uIVlP=w?&Cj0zo+2)y2mHN_Y%GzD; z5)x1wC5=D$iD5z-=sNCw1xQD6SpqAB|4W4MEslyA8r_b@!$tV-A@1bqmt?Bbl}?qa zw9H+?Ftd==^h8RhjF;v#raB6uu7sgk-rdIf9?k^|fN1q9S>ajMcGc7>!b@jW@tW6A zb&x&l>7D9e!bJ1cj3wzC>gHUwNdw~OM=^C$7Tae^!|+Y8wZkFJNa$6-Di%V6)az$K z3o1U&s38yNS5_kXR;@^sAq9o33g@aD34rKU25iV1w+0%FHB=_Gb>)aqiZ<8+E0E}e zPyz86TIDYHn73r^bD<ku=}wor)wS+*v724(ZkM~=_3n4U8(#5_m%QaQ?|IRiUiGe* zz3p``tnT`dn?h(>i|ok)?Awy0|J3S}9E$II0UTg@QS>MJ<fltE%FySz<XxCEWPwXs z$H{KxB^b>SlOQKUn`C$qHw~_FB3j|oDkO9JVa?~{IO24XtD}rlSBVrXU>O6Ls4)#7 zO(m8yu<$HZQ8kNCflD-?CWODH15BzOM`XpWhP8>g+EGiF8vmU*Z$_nX(Fnj9S21bE zUG_4B47=5qbhU{Kfu0C^$khq~?vMmS$b5}*WDaZi&3lXSV`oR3D1HycOF}CwPj?_d zf0@wil_2p16WHIH`GHd1><Cdb8x1xVA)f6plTN3VIfF&X?|dw!r&d8fxAh>P2B<=Y z%vn@txzMdnFK&g{FPx;dNX#|dTpM)*l!vwtSmV2BZw+fQ3dNZ;5=(NOJ)Kq&(=j0q ziY;(O)HB{P8*XL%;%mofZ8*A`+uiQeZoM6DagUqa<<@0D001HX3sY1<Qbb8sAT=&9 P2>};r004^~0000x*v(fv literal 0 HcmV?d00001 -- 1.7.3.4
