From 17ffcab5f621400bd8bb47dc8fb29365f6e24ebd Mon Sep 17 00:00:00 2001 From: Ayush Saxena Date: Sun, 21 Jun 2020 17:27:28 +0530 Subject: [PATCH] HDFS-14546. Document block placement policies. Contributed by Amithsha. --- .../markdown/HdfsBlockPlacementPolicies.md | 165 ++++++++++++++++++ .../src/site/markdown/HdfsDesign.md | 3 + .../resources/images/RackFaultTolerant.jpg | Bin 0 -> 55017 bytes 3 files changed, 168 insertions(+) create mode 100644 hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsBlockPlacementPolicies.md create mode 100644 hadoop-hdfs-project/hadoop-hdfs/src/site/resources/images/RackFaultTolerant.jpg diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsBlockPlacementPolicies.md b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsBlockPlacementPolicies.md new file mode 100644 index 00000000000..4550f0441b6 --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsBlockPlacementPolicies.md @@ -0,0 +1,165 @@ + + +BlockPlacementPolicies +====================== + + +##Introduction +By default HDFS supports BlockPlacementPolicyDefault. Where one block on local and copy on 2 different nodes of same remote rack. Additional to this HDFS supports several different pluggable block placement policies. Users can choose the policy based on their infrastructure and use case. This document describes the detailed information about the type of policies with its use cases and configuration. + + +## BlockPlacementPolicyRackFaultTolerant + +BlockPlacementPolicyRackFaultTolerant can be used to split the placement of blocks across multiple rack.By default with replication of 3 BlockPlacementPolicyDefault will put one replica on the local machine if the writer is on a datanode, otherwise on a random datanode in the same rack as that of the writer, another replica on a node in a different (remote) rack, and the last on a different node in the same remote rack. So totally 2 racks will be used, in sceneraio like 2 racks going down at the same time will cause data inavailability where using BlockPlacementPolicyRackFaultTolerant will helop in placing 3 blocks on 3 different racks. + +For more details check [HDFS-7891](https://issues.apache.org/jira/browse/HDFS-7891) + +![Rack Fault Tolerant Policy](images/RackFaultTolerant.jpg) + + **Configurations :** + +- hdfs-site.xml + +```xml + + dfs.block.replicator.classname + org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyRackFaultTolerant + +``` + + +## BlockPlacementPolicyWithNodeGroup + +With new 3 layer hierarchical topology, a node group level got introduced, which maps well onto a infrastructure that is based on a virtulized environment. In Virtualized environment multiple vm's will be hosted on same physical machine. Vm's on the same physical host are affected by the same hardware failure. So mapping the physical host a node groups this block placement gurantees that it will never place more than one replica on the same node group (physical host), in case of node group failure, only one replica will be lost at the maximum. + + **Configurations :** + +- core-site.xml + +```xml + + net.topology.impl + org.apache.hadoop.net.NetworkTopologyWithNodeGroup + + + net.topology.nodegroup.aware + true + +``` + +- hdfs-site.xml + +```xml + + dfs.block.replicator.classname + + org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyWithNodeGroup + + +``` + +- Topology script + +Topology script is the same as the examples above, the only difference is, +instead of returning only **/{rack}**, the script should return +**/{rack}/{nodegroup}**. Following is an example topology mapping table: + +``` +192.168.0.1 /rack1/nodegroup1 +192.168.0.2 /rack1/nodegroup1 +192.168.0.3 /rack1/nodegroup2 +192.168.0.4 /rack1/nodegroup2 +192.168.0.5 /rack2/nodegroup3 +192.168.0.6 /rack2/nodegroup3 +``` + +For more details check [HDFS-8468](https://issues.apache.org/jira/browse/HADOOP-8468) + +## BlockPlacementPolicyWithUpgradeDomain + +To address the limitation of block placement policy on rolling upgrade, the concept of upgrade domain has been added to HDFS via a new block placement policy. The idea is to group datanodes in a new dimension called upgrade domain, in addition to the existing rack-based grouping. For example, we can assign all datanodes in the first position of any rack to upgrade domain ud_01, nodes in the second position to upgrade domain ud_02 and so on. +It will make sure replicas of any given block are distributed across machines from different upgrade domains. By default, 3 replicas of any given block are placed on 3 different upgrade domains. This means all datanodes belonging to a specific upgrade domain collectively won’t store more than one replica of any block. + +For more details check [HDFS-9006](https://issues.apache.org/jira/browse/HDFS-9006) + +Detailed info about configuration [Upgrade Domain Policy](HdfsUpgradeDomain.html) + +## AvailableSpaceBlockPlacementPolicy + +The AvailableSpaceBlockPlacementPolicy is a space balanced block placement policy. It is similar to BlockPlacementPolicyDefault but will choose low used percent datanodes for new blocks with a little high possibility. + + **Configurations :** + +- hdfs-site.xml + +```xml + + dfs.block.replicator.classname + org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy + + + + dfs.namenode.available-space-block-placement-policy.balanced-space-preference-fraction + 0.6 + + Special value between 0 and 1, noninclusive. Increases chance of + placing blocks on Datanodes with less disk space used. + + + + + + dfs.namenode.available-space-block-placement-policy.balance-local-node + + false + + If true, balances the local node too. + + +``` + +For more details check [HDFS-8131](https://issues.apache.org/jira/browse/HDFS-8131) + +## AvailableSpaceRackFaultTolerantBlockPlacementPolicy + +The AvailableSpaceRackFaultTolerantBlockPlacementPolicy is a space balanced block placement policy similar to AvailableSpaceBlockPlacementPolicy. It extends BlockPlacementPolicyRackFaultTolerant and distributes the blocks +amongst maximum number of racks possible and at the same time will try to choose datanodes with low used percent with high probability. + + **Configurations :** + +- hdfs-site.xml + +```xml + + dfs.block.replicator.classname + org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceRackFaultTolerantBlockPlacementPolicy + + + + dfs.namenode.available-space-rack-fault-tolerant-block-placement-policy.balanced-space-preference-fraction + 0.6 + + Only used when the dfs.block.replicator.classname is set to + org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceRackFaultTolerantBlockPlacementPolicy. + Special value between 0 and 1, noninclusive. Increases chance of + placing blocks on Datanodes with less disk space used. More the value near 1 + more are the chances of choosing the datanode with less percentage of data. + Similarly as the value moves near 0, the chances of choosing datanode with + high load increases as the value reaches near 0. + + +``` + +For more details check [HDFS-15288](https://issues.apache.org/jira/browse/HDFS-15288) \ No newline at end of file diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsDesign.md b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsDesign.md index ff43e451918..894ff7e78e8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsDesign.md +++ b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HdfsDesign.md @@ -139,6 +139,9 @@ then that replica is preferred to satisfy the read request. If HDFS cluster spans multiple data centers, then a replica that is resident in the local data center is preferred over any remote replica. +### Block Placement Policies +As mentioned above when the replication factor is three, HDFS’s placement policy is to put one replica on the local machine if the writer is on a datanode, otherwise on a random datanode in the same rack as that of the writer, another replica on a node in a different (remote) rack, and the last on a different node in the same remote rack. If the replication factor is greater than 3, the placement of the 4th and following replicas are determined randomly while keeping the number of replicas per rack below the upper limit (which is basically (replicas - 1) / racks + 2). Additional to this HDFS supports 4 different pluggable [Block Placement Policies](HdfsBlockPlacementPolicies.html). Users can choose the policy based on their infrastructre and use case. By default HDFS supports BlockPlacementPolicyDefault. + ### Safemode On startup, the NameNode enters a special state called Safemode. Replication of data blocks does not occur when the NameNode is in the Safemode state. The NameNode receives Heartbeat and Blockreport messages from the DataNodes. A Blockreport contains the list of data blocks that a DataNode is hosting. Each block has a specified minimum number of replicas. A block is considered safely replicated when the minimum number of replicas of that data block has checked in with the NameNode. After a configurable percentage of safely replicated data blocks checks in with the NameNode (plus an additional 30 seconds), the NameNode exits the Safemode state. It then determines the list of data blocks (if any) that still have fewer than the specified number of replicas. The NameNode then replicates these blocks to other DataNodes. diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/site/resources/images/RackFaultTolerant.jpg b/hadoop-hdfs-project/hadoop-hdfs/src/site/resources/images/RackFaultTolerant.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c05930389235bc3b3c409b6d9769ed3a27c3f70 GIT binary patch literal 55017 zcmeFZ2Urwc)-GD)43cvY5JZw9K}n4wNd!c4Rx&iuC?HW9QG(+ysZ|0lP`Olei&-w3jp65QUCx506IK^(@Q`1OL+Le8St|NxI2Xr{ycXb{Cv9U zIl?@>?Oa@VE{a{gC?*5o1Ng7VezveB0Q>p#v(;%=;C6x}+jI2vbe9zuck>XtXA85o z6SIN2iu>Gi7r!KSQ5=wm__*J*f!cZUSlc-`xhe4OG`8~cIN2)j8cAtg)N)t0b97So zdtj&Mr>$?}2er9s%L`HDk@u1HadmgK^SsC7gzUz8A+kPro1hJjjpZ{}U zb|9Po-tRxL;PlE*9{jDTr<47E(e(7npG{BilD+NZW9MRg!^zdo%>#U{0`C>+E4(~^ zT{8KHOP8fC@$#H@Agkee&%w^f$=1{H&l~m_T4*Z7$|KY&@|2XiM2WRI7x^3Q|e|9nrC<6re z_@}?%MhN~AkrELR5)zSRuxJOc0@LLxFEA~FUl3Mz*GKZro^bHJ+ zj7>~!Z0+nF9G#p!JiQ)z`}q1jc^VQL7XB|R;v^Uu~xq0~og+&#WRn;}M zb@dJH9i3g>J?}sC4v&nEjZb`@oI)-xeOX>v{kpb}-u<@seg6RSU2vcSK8 zQ1%O5v>;vhgoFfyB&T%Y;d`GFPD@C1_7XAOHC>W>_vv{h9+NU$kAGd>M#gvf4vNwG z!4NqUza;V;`joVvl>K{z1^>UI?C*sAMb{KSNq`3mkAN0{0Ea#McE_oKG#m4k-tEyk z`WW4XXtg`dsLVtU4_|L&-&OleqsnKQY7e85?fDZr6EyfI@=kyb!GJR-z#AFV32*|C z`E%o>G>!yLfDa`B>?c6^Wz`d4m<2jkK+p?ECgMnKaO(3x5L8O}39zIO?-0b&{`0+- zg)u7Dn3OI*_|uZ5hEaQ46WcRg9J-PfH^0y^>Rz+ILimyz;9tOZl1>=CADMXb!q!W1 ztb}(P%^@G0<^=ew<6j453P&|~#vT%FWMM=SvFA^KkdYktpt$)7&}N&3G&xfDmTf5v z$En(bgZlMewcnm#kbeSD-E29CjB-J7P!8WNwH zh59g02>BX~g`5EGmOUpxwC)K&nSoNqh0k}K0N8VzaLkw!cx`PM@|C#^zEGos%EmEk z$DaU7%^oKJQ35=KYnZcR{YC5-dxzh~amvD9NBcjfRIMt^{V^u8YoA6I>bbsRN!%K=NhBPDoGEhxDojy=RN+bGcb8_)iQfc;7t@RqIq)AE13 z4E_r)8D(Mb9%td0F?1d6Yy+V!>=?CQ4V^O|QEZYHV+bG)PF| z)TQ=HeRZ~2PXONhkP~3j1GR(8a4jGhEBI5~r(#FNMq1HeMbU!$(HPe}pT-V9wFuAm zP2!7kFE+mylOoP)sEkJyA^8pQf*XV0*%IHInNazC!3aKsfBA~zgn!On)HxOz5RtSgA?H3 z1@;6GaL`p@Y=3mcDBVYM|0xO<pL-h-7RK`S`gs68#P_|;mz`P_1 zZdUTo>Ae^tZXYUoYe3n1(JVo8@cBB_6Z#d-j8#}9Kr+<$=hUGU8fQ$*`rUfbPotV5 zFC7)ERX;DhIz!sl##d7&*fCEgsYB6{Ciw$qQ!`R6TzY4Ga@k1zOP!I4(K&BMQOOuQ z>**KR&U?_BoUOrO`SF9`i1Rrng8@wZ7!N)3jN)R85YA9L{v|a3u?FIr)GBC=L+5Fn z>j@nU8|6=ciJN-_mLZT3ZoVj-{IMD+ufq4fI-A9y@Rm@kxOX)tz#)JzLKx&ky6}zj{{29!XPA(xOdF7(D_x(WkbCrP`$bPvAE$^0$E z_(9;5M5fDw3*y=UH~6t*qV|{PpV;pe;*knaQzMmb1jyayHqu-ig><1{|gC3yU zf^q-8gVRD7AcQeT`IrHNVXP2r;nB_2n`5oDe5tF^tgkNhxZdaO@(Q{S<1b`z^Fwx% zy5{FFH_&Ri36-K23pKd~n_*jzny9A2{inxpjU!IZp>rT z)v%WxLR!CGT>|~ED}D!{+$NH+w?`HE%mZvH>net^%K4HHO*xWLYqfq+<9MO@zWaN; z=c8Z7>=%>TJTSUzdqHgu0mYcmgl{dQqZH4!G>w`n1nSz{_jWr=<$UjPyv=Rke95O* zQC|xA6VrhA|AKPJZ#-`{1dS7d%}1I$*fcP5QHRFoNtc>iYwp^Cp=?h$tlCEm+1yfF zVQ1Hvc0D8jwf6HA< z&;f5E&J(bA9qwRxaSY?t@uV-;#`R{ypLL%AViHFl({lGMwHC61lPx7s_K(Xj>0N=+ zV^aOv?G)3E=@6!MKU-0e_~N%QQ^Si_-Y6Ld71a{}$?{n$nA#J7zqlK|Pt<$@4AJOd zKyQk_vF!xdC$0ofkSTHG|0cB|&@fLTVTaT{ry&S67kKA~>h-GIBuVfNX&*D(lS~L0 zri3BjyRN@a0!wc+ZfP+&e#wf(d5)HCCHuAD(~?bQjgch}T#Ecukj%pn)mx~FDc^{E zMg7L`bGJF==A*3WY!ZH`g-*@QSdv=q;Al&)+vEu``zX`3Y%KN@Rs4ACs&b@mO&+5p z$NlRP0-b?hRs{4327;DZY#y6Se6^0FNi!~$6gEuO(xxbeJ`-Tt&&^HP>bUW-pMRk% zXx-*2e=(jv^0=(I0F$E2?3WcIInQEl?p!{vFxE8eIQ}+uelwc99~X69^(?9DZhx{w zu(vC)@oy~cQqXb#wqe9g(nKL1jvJT1en|Di*$Sqr8C%WndD*u}>FmMw3@IVU7b90C zE`xu?@l=~PA5bZa15YJgh0Q0vb5eB1St%=Km95vZ*XI1t-K^i~uLES5HF z<5@m>(^R|&!KQFOg?yg?yBxl(#8s@q0Lsm08mBFcgdGQ0&mUKSO6LN)7W>kueg23D z+InPXS*%3Fp!7%z+;;wlRO}P@zJTNWp)!?UH6T-0=HG>*u0ltbHW|^I zo0^;Ut(whFy`}5KTu^_1;hN!HWqfKsTYOm&$~%CQWLo8g%kBx!Ez;yCa13Ju$J7lw z$3MzJo#zKZYJsum;6~XAFrUtiQ$uL>vz9!1F2@PCKwx{);O%K(VEKB&;sj`whG1jW zutLRIhn!yXN8i8@>izdM-)u?$^ABmtCU7?WzxI{=%d_^HhSC(C%aKe#Pk>7+S*W}+ z_*bt9_)b5l3i-g*L+-qa3$yUXVL{(?SHaKHv7f7#^T|f_3Gm{Z4o1%ivM0OIdaweT zf%vc7B!UC|OA21kQEExH5M5Z8pXH;1fog~yb=&tDwQnpqHq=&Dh@_9_G$Wjs_oJzr z*!E`E?B~pqj~_b^6HQkOv(v70IhRzaaik}@-ST44y`}bhWVV|%X@t}2K@J>0c0B?1 z@GMLJlJ;-r@uy1r#fk!c)ql@(dzY#`|x)Hgh)~3ie?#e$=t!3DuKj@m>7`iAt zJ-KtU;u%3Vy1Ijp#DK){f-!yc4#ukWyS5?^d?E4#s6-gN36d|yG4CAf#fEcZctNxL z6@(9tP5}L-MG_oo>yhlA?tI`0Fm?s=7+gu>xKFYFO`TlsI^0K~%O+G%E9nbabdKZM z79&z}TY8o?F~jVRE{MBL?S*koF70l^{9}bZB>tmT^*tT{qZK+g?^F_94`jCxHn$aNGej6u2CMbKWxGmt(y~U zye#*|I;RYUsEU4Hn#8rF0{9wX#pe(6xz9jQVCXdo&Qpp5TwzZq4VD(Z@AZd%Z$CZ( ziteKcP5?ry;|y+8D}4QBfD(x5FrNSpASCeL(#d#W>iuG@9;O(n1;^1^Ks!un!bEp+ zprw9SUL|j@c*gL@oHtZ;FABA{_tK3&WAVc}vrh$J&^;YZbnBPJ7SIj(EDWyf=?mZg zuL@Z3j01(y$sr30Y+7cWrd`Qld3+`I>o}zK^-cEz3fg3AC2|SlIDmh#R=8Il4laOL zE3(pDe0A$Elja+4&ty9&HF*xmx0ngpQZB}+cg5{n& zc!|bin|o9O2l}IKHkBirul&=~pJ~&bAJV*hX%isK$_0FTekF(-_0P0;RYTFW?tCew}1IUcmacCG><+|ASfig=j_GPs?TWs%I1$==E4 zfrhP3H^9P`)797s>U{;M6^7>2+>L$O=u$}CP!laYU+8h}*pF*A*7?$wCEq`{8g)ZM zj%iFMa0I7zOiHIVHWfbU1xXEreDQy%P|#ED6SG4P+T8D@@CAia)2I8({r)~b!uBn6 zR;*%w{98}pnp1cIw;RRTVL;2c^?5&=Yiv=jN#_Jm9tUk_&^`nkt@_Iox0WXV{)ibr zaw4DV+GkD5$l_Vq#nnzD)2^J_x28Ho*fZkvH{*qcA|%fyz2tg8`d%S?KV;d%?7A~l z`3Y@kGH0$p#t{t|S!P4N=%ZSXV*7SrXM2Htls z*V{zB^aQx3ReW`@La_{>EAM`4D1)YGPJj!i=Je8H)}h#`u4lh?0xVmA2Apvjg36QE zI{{QWKr>6=2*DPEj!jPl{A=B*iht)yasniI;;oMwJqPjg7igVhW*X2wQ@sL(Ulxne z;}QZ>3&>O3fLFzhGZ+M;XiKm+a+@y5p82V9mws{r^fo|{w|w$(kzt@+As&SPFjC?w z{g;DWFH4kp7RVlO3pEkuWyP}2B{_suBU*U&z1YlnM^x;te*DAck~7&i-rG^KQV^4c zw%r93KtSOY&9Ba@rNI*H#}!0K>puAee80EZ@b9Aen~45*|I7a?I0}sWKD6#axrssl z<@?Q1)*w zV!Xoqt{idwWOm>9?0Aw44JpIhLg$p^OohSJ4hLo)6ch~-jPuWU&tvPeakK*<4z_n2 z#|?rGB#%yjzBJ&w^N&34&*PjDtG5!h(efHF*Ec=+7HcVf#%bM$Yi=U^{;9llh0`K_ z0lFGYi!83L??UIla-(7bV4x(!ekPbm<#ur9pesPS3I>{o=YQsWp0t27rXTR#&OhSl zFX*?4WxfX6H+EwbKRZl5Z^r65UCb>oeh;!Os<&n7+)*8F+l{+s8LM@iN|fIL9U#+K zblNJdCPVvEr&1`}x|%NArLmNzsTqF^FJ+h3p}R^ha~FJm`&D!+E`qxQG$}kgtv@`} zuzXqUC&1U&KQlYjpfOC5#QWp}-*+1exVlIs(}(sddyN!TJlGoiIu#Q);6AWl@0RlD zqcjR!FVr(w{T-zJ-b@63>uRc{WoS+zn)K6U-30Hu|2Cq zPH~kyJLGoJ6#L(?|EL<` zCse8@Bm5~)3KQ9-$TiX=1x}c-c!6T?k{m7QgQ7dT47HiwL6?p~uaVvcMQcnSN2*|i z74WkHLZh>C<>qpNZ;&Mm1&1{NwsR$ce=ou-=fHdKd)wPcLcYSax!v}_nIzj&^5Sz#&e zsrdQ6M)I5^1XjS*&?CJm=JGxnNJWGW=9c73JX})9Rqn6!DELl9nPaN|g=EuAb~N*n zTDT-4BDsc%xi;+v?}%!KBztwaVV%i$_5!iVY->0Edz9qw-^vi;zuRux1f5`T{WipQ zs#o_##?r1S3XCjXlxm(!5KC0|)ochGoISpi(Rj=w6RO%mY0ivrdxo=dy@ z!1k9pmSux+xZ}VNMtSj5yfO^Fx8Z783MS%I;qMEP@FNba+zF6x=DaSi_fHv~-7Go~ z2O7f4f>~&_&a6X|H>ZIjCIzP*i<~%)Pz2MN!~JxpAQ@;FuZl;)cW*X<+`4Nve|%;S zG)UaLnoXeYx(kIIpGksur*UKopaL7SyLdaqUfU?VQC~n(##e-1*(B@t6$}c5V2s)W ziBQ|oi^ks(R2zqZ88D|ud6r*OO7_30(G?eXJrf%z(F=RYlUB#fH6zu8ra!v5m1JTf@;+rqE86 zBz|`G)^jFd6G;*>g+`Yei|mL7!77e?J4`0@?$5|B=MR6M#+*r*n+i zXTa;gavc|n2iSP!eD$8=tRM9{H@F3JD|1;5pY6YFHYNAol|1kLiZ4(~%}?FLF+3zpIqAv&_oOk?F|lL-!~0nJ6dH2EMv zr;U}FF*~w8xDU`DhrwUM=VLuIL5?V(X6RJQ{WDjOKzV{(x=lRLCQk2cDGuiCoEu7y zGYh>XYtO<&aze(94Hs2HUbgSBr1TnNyHqc5`>+rYv>-q~AoMlnK8S#)?_lYy!1)>h zK^6pZzz6L?wN01;s&s1*1N{|@0>RIJ76)T2bTJ(g#m&-0U+CjDtyeb`a1~ZyKIc5) z=h~Iqnl5s`gMqecC_inJOHEFOkoHWMX2D$=w^N|Bw+X~C1Q}7axHi)r+@w*_#IG3F z-|^SK;jsU^|7nDd6X9RR6{)~rGc_B&Mkxh4dcS3^z}a6kkrL;$KRjdJ&sjw)de^cJmt$U?%b_RnL$^{Xj) z^SkrEQiDGOzSE%ZzuNzAMqnA2=9#J*#hI|?7%ODI{VSsgWTijvlNqHwic|3SWa*LIXEWpi&Z?;{jL4iL#BIxR_d)?`tTO z*VNP`4#Y_7$B#J5C7BG;N#NO$5Jqelf0?HY>}`=kF-$Q8a*yv}s*1I!)y1m5BDP)m znZM1h4bO#(@m(KMmNilDdQM_uXAk^%`if-G8$yGnf-02gVPGAoK992zgbCe55_PH% zipa73)vRx?wwHgUQd~j~1ee}T@NE)*)kW!S@#T>sqds6;e$E}>SZTU!hM_^*7&H&% z=`c>0uB3_CSB)-@BRD=+r5P;exR*BGxPwf9zW8#a|MX^W4&xHkQxoN}NL`4^GDMYS zFAlXDJ5<&OZ*OZ|bKT6%2sloWP_0y7p^-8$56V-Lxu*j75h`+EoZJu1?>lAECw*6M z8M^xn=F+__PdtBy;2^U4@k~7n&p{~+W2gx7^R=Ebh{t(Cuv$L$PmZK9**C`Igd6fb19P>np}n~KtH9+OCD{?5)g`~E9e++lXkI@@nvsoBO^*;-Pe#f9e zpW_1PQq*Cug4G40t+*ht-s4n{{M^A{{1s$r8VrDrWBiP8(axt!Z;Ak?&;m}h&#Src zuj8+13{P9<$dj9@9_6noaj867+M$OU9X=iwlkAt%scB3bhEz={d`ytk9(vzdQosPa zgTL^STIb3c&`H%%&SM0@m7M_PZl6c*6v02k48Xwu>Gw)Y=*u1dEDK5nMuvK$ z89^*R4)l9ot$-m|urK6?KrBWB3r6?X`oWNea2LL-CF;)2f_+pHpfFq|*UYSL@zB52 zKs3Li&$ra=ZNFsq8O6QVXI+bY?Ay^VAK%m|78=TC^kzKZJouk>?9&Pw3a42T-9h`Y z?ZsqQG2!&)!8y|T@uCy~5$~8jOp&&^9%-7GLQTsuN*vj$Gd{}3 zR|gNDw@z>@9UpHuOmnTMh+{kUx!zyPEw=3Jo%K*njO)WLqHg~;dbm-Em<`;MG#MP( z7cjk&h8kcC@E!Ba;t*kzG&~68tgRV#sQb28oXrqxEXI5~0W3$p_X)Gh%__K-*&Gq54>esbmT+|-=qJ}r`E;v$+05yOI$8ZW|JEjk z^D=gf2V7u=fD94?W|6bu3z<4NjcgnpoD?|x5~heOC_Q&1l|8M&nlvtX*VKqA^j^|CelBWNnzE<`|A}BsK2Cmb{)o~k z>(GM8zc(skJzHR;QQo}!xlmnQ4&w8p->aPdut@*xEL#Z1{XHA0D%A&SY7g?J0klYl?MP_RLOfhrpS-1Uf#4DG; z+{G77ER^q7bVul1i_!5#!*Ci#Q6T(4;Sa|1Tv=eDqlWhr@R-U0Jf;h}s)Mz{ z#^Pyz>4Z*m$%`8NLe*(X`ZMQ=p5rsV?Qtq72^7UF>5XhlH7X;yH)n5tyFKD*A+hh| zT9%zmkyjhN9M?#8;NswD6U|AcPc$tMBnv+Jf5NKTKx)kT#-dt~$oIw#gUS{enPiXl zaP;GI%^zzvAF31d)O9u5ME5m9A5eM!tWJD}1!L|vNl0!iFDQ@Y41vdsFgA?lB5^b_ zmd%+>FkIAY8d@kKrNFJ7qMg9HK-y3Fwz(78k=-Z~(O26yrJqa%#$^U*Zk%RpJNMy6 z5m;Qn`ijN?)OiFS0{mso0texg_HkP=3VfFKE)L{G@q!VtZLQTh9XgzIPSOpQm4!E^ zx{BwV9yq5FXXmRFbjGu0l;+geMhkQ*weZ=?UE{Gyi(CwF73>iY3y-jvzK$j@D)_)( znhY@RI<#dGVS=?TFWg{~hA?7Q zjB6q6E8& zSp!IxMAepvx?-dFMytPyh=tU=hDumOl8zhdh;6aSR2$!YTB-Wp$D)LVU<(pH&nPd0 zLa2>=*P)%YREENRIYZtUJ59)Z8*pF$RGuS^Zi>2@&Be^&VWP-!{Hlp$vCxHQV`IQt=2x>=usi z^SWtRr>LN&IOp<{Df1U%XX*Lhb|xcRJ`JAfW4+yJf46@vQyjzXk2>h$0w$_HG%2GA zI=urWWy`9I=Su{^*&Ib=GEX*4fme;DGbzSdipRvA8kBDoI?aU%JoB8bH zr$gi;Zh=~D`!cbeH|m+;(QcZY?IhCOP894l^d^BKw`T5~`Nhdqnv1U~S%LzCb*)~? zrfeQB!p{WAqqXL$b1;>LXzE1NhBg;lQ$p|h_&P;-;d+JY+fIQOr5`V{tB?=N7nQtz zYw>sv(}?mgLur>HzACZ|in}N>s4dP)AL*9Mp4+dqlcdUNXv+IEXT01Hxur>Qv;680 z)OHEuW8fGlR4d6ztbeJ|yc*UOegq0uHu$wuRZS%@__%gjxCYO)0O}X$|KjGRY z86rNAI{>c%y@avSL6=3AK?7NywBrPld*}6rx2wLo&S~A8EP1obwdfF4qN*A!lq11= zA*1L+$g&wy@L4s4e0JbI5=Lu`Iq2kK#K0t{MomR3EXWo{@8X6W;ume{+wYL^$LQ9H zn5B{zpTRp2>;NNcOGZqFccIBwnUt(4S?BHpzlZsG7EZP9{OO%;gXTRPkBzf~rrjUD zjEdH76I>2ndZ8|SM?4F!=xhjA`krYocM2CA3pEy5hwg{r-chz z>DbUYM}w*j7inS^9RQ(MHa#cr+aK(pf?>mq6oe5KN{N=D9V+w}5}O~!z90vVJ`Jyl zm)@%jZ%w*DM(-yfP5Qn!j`WHGDWP`>cQ~9@k~<`jDXY`+TtnJ`MyRpql&1gHvM){o zsb`-to!9;H(1~9KPygjxL_z=sYP`<~y)~Dz6iet+dk5XWpU-B72^Q9TQOYwouXW>M z^`zCgdj{XE{axFp3`J`N-52+^__{5HF!vA}Q!7a&8>V4F-(#sTT%=V;S7C1AHp5 zG+D)Cmyc0v<0i62pQ|qBrZIPJq1R#m$}DaAz(?#rxuR-!+@Ps0ba;Ekcg&c@(1g|I z`g>!yb7?`4Yr-^LisHioj7|<-C9}s76n#e)5+u8`2QxFb-nPHEtv<{5=F0-*mpDAB z9|uq*f(;sYWx~xR;9QAgLsobdjB(8`sfmki6nWoUUVHzUZ{f!+&Pn@NPZ*tuE`Cwz zxASft`stkzMl2M$aSUm*6n~;x{^Z^Gh$7|~-m+gdWpC0Xj+y{KZjC4l(ql!TIE z$Eczp#!3@KUAp8{?f3=Nl1Me%wVmzC{;B+2rR)r6dGTcz#~i}*f){)W-e9VcLM=R> zF=wUfth!{Tu1#$1p<+`-ZUjTFD9*l^c}FB#w-85qM=d$94??-u%)KDcxKNx$HSkJB zth#J+U7DFKAo-1L@~(SS`Y4$V)ZwYfvwC%aAc-fS!xc5Xxcv-u{h((J>3U~%F+Xg3 z0Tq*Fo1F0I&CabST8TGJYPM#Eq{c>T>j~KPr5^^5;vHCZSVaY%!L&L_4LtRNZ#kX~ zokM;(k{pZ`yW3AebBXzEa51CB{bn*BRv9YRI2o5v9MMz(D0gNN)gYKpZaiz(03 z9Av7g5Y*ol{?=%QIa`cTLmsrH`}Y&vv7*sg=?ColULzE^S_-U2JPTALKf0Bzd z&Cn^}$^GWr@72ZdT)qT7qDQteuPI)vX-!veI5L08Ji+GL;p>(z#`7Q{|0D6kw|sm& zOFZ%Yt`i*y)MewL?*i!jQ2DEclL1N%nADON)iR;(Lu(Jxq82k*65G%bS|>e^O-+&-MkhrO#|Wry6# z3?nfn=#&WR33(@)f9MVB=<1+*Nq61f(Pk=1fqcbM zJaSliWGT*uG3pBB#nd0?woG&-OM6q;9j70sMLzbfdUtl_oN5hKbMB+I2g=mN`K)%-S4Ja<`-F!pQg}AMV42Ni*NlTqBWG!<3J7v~g`pirGWo z8!hgOWeyJ1Os$w{$R9cJDB8Lh)Pxy`)N{x#8$Za2foiwPwMh6do7bh>$pqQau%GXq zwi;nSBAGrMt_kmo@|t-o1bZB!p& z!jEY7B=+a6=ra$iL#!vc3)>FzDWMoTDbMJ)a=M(34Tmw34-12Eg(Rh&49iZe#eb5 znuqU}{SgIi{Y7*^5(4OSS; zTNqg+qd5F_|ss;D-&-~_16bX*;U>;li zM;Y92V~Z@ox_VSMaWAkuCiH#MTQ-Cmh6Le)Dq=l>=B^YX7Gb+wI z>g9iQRBCj)p*FmWe#ZRPa7Fji1X=gVc8zd_?7Oh z2-h15Te-B*Ve{)tr(7a@s)dzV+4*8gWxVScdzQyG*7QicS+AIeN_5< zX#WcLZiEC|X9k}K(O>c}p4=XDp$?1;FTK9Y8{z0V2|!2!h9l|$VRL76g{5Y!a$+kFfS@Zh;?11zfD3FzQo>ujXWNT&4s`9oIfNn1&dKn>45yxQDD2p z2i#CTHY*lOuo``nCM@k!J#jUhITTi%?sX$fx8BTGj8EU*&LF;`mofDP;3LxcK+Aa0 zO`ZyATc^clMYBfcj&td=9=y&E+mW7eQ(S2V-=8DV0s$&7#PJU+RQ3_UKOB74tb;r0 zHUEHcV@M+4?KZDKGzC<@@9MzRXb}W?X%O=DD#)V+b2!$(-(jCP9ek(a$m(df6{)sQ z{nvr!XT@c>(+Extoa680d5?@on$*0r*QQ**x4iZjD|C?PfL`crSK8@>Fe33AL`6k)?RuQOEt>|q>O&Ms)> z_I4|bd^MPLeE!>+q#<}aGjit;Sj)nYfN&a3 zjev%%NO_`y(!EP&vlPv$y}I`qvSLBwz3oVNn5{2rlr(11;Rb5s)-MheW2MqW zRTnHQb5czGML+hMJWar#m&4!mme#h2^~llzT@>+-`8~W52#Okl17XbTSOrkroFF;` zES&(0js&0f;G9@;6d24F=VBs}+ZlzAQeAM94saWWmg_|qx|)qSAKOF`eF9WC8LX>X zE*xjAw2UFFOfatJR!X9|vfU?4eG|SL2OHWnO5p3;N_$lKk?+m__MBe^5_DyjeTli9 zn|dwIY04-@o-uC?g@3lXYOItu;-ZG2b8(P_hCFpn8kkE6`GM-eMaVpDMfpNcfF9vD zzjXC4Xv+BguE<7oept)-0524|kEZ!s^o6g|he_M{_j6`)N12@Xg(x*e;>-2pr*0L| zC+o)twI^DZf;A6TVXa>Y^56>`aIBV9`N)=M<9(uxD#JJ-eieK|B^|vW;1z}EXshLjYDwg)p(1M(HFW!Z{LgIdqT|R%g@%nkh%7t5oOg9_NK<>d4}(by*{VwM-87cR!iL&G9N#ur^M7-nRRpP)|CDMd4>vnUfDC}^@iHH*uF z=b3FBc73efT69(VAeIGp^>r&I&iZnkJgm;wXr3f8B0)DSw$!i_4grC(2unGP*&82k zOGWyT9eF;kxP~i3UhMDL??8o;GIASZ&aYIM(4M)_vBEOHIy0>g&^R_6=i%5)Fxn%X z378jD((A{2@3WbV1a`L6b2FK$X@9J*zp51Gxlm^lbgdXdt$4*TQx+pi)7e)qx(B1K zGV;D-F4dDxXVxZJxC)!9C$gCz!ITf^EoL$vzii?0p}0MSb$z|o!kyBEc0LT59e-Bj zlds?Wcx$`VwX{Pq`$1x#XgkG~K$wt`jl_j0H@EqYd7^;(NW`R23zrF$%^)R)sJdO? zwY{a>CH@qhOQhWrL%}in7q8!b88oe`B-@H{Y7Jd#pI|%k30B`+Xw?$k${BGR#>_TZ z-w1K}cpaIMEjMO(x&GR{I5H}$sW7C?x~XdzR^Z|F)!W0LYVltzlZzM)%)4*uxj5!c z*;y|?tO#*ox*Y%}GAdR(2S_nrF^la39mCGaezPsr4ms;BqNCMkB{F0e+ZS1P%0%ZZ zkaik(Zs!m*C`4p?Jd|zS>;d7)wN_faPMJd@aI!}RP|<`1%nFdGmm*Z=a^1JyzS(}t z{vMBiJ1#rffZvv2s0u#y1ew{0?AJ4|LbJ1TN|h!rUadMRaDxxC+m&m2KeKy&YerR< zX@D_fbVA~m_)_rI(maQklDERU#f2W2 z`P*cnNjAICdbd$EA#Afw-gD<_BK1S3P2r5|Obs#Nwe-U8vfN^3YI5m{3KHbPQ~WO^ zfI0a?)CdS~GP%I^et*22M_ zAuDQRST$}_Q(K*&v$-X+6)mR>rC^xjd3rOPdIqUMPRszfthH9d+oR2tC!``_EN#ab z*=jJU(P7gWRa3c8VK-EEP&bCeE|a?B{6IESjP^w515AorhF1WXb7W`F zs(Dn%Pzge+R+(i*6cQEq#i3US*}lQU=PMl|su6TP@J>I5DZX_@j$u#r5*Ng3@)a?$ zO}8&e397~~O0+mi7~feVs%rw8#%eLlXmK@k37kPh1bfM2DZTW;A?{m83R`ohpNruH zlXS9k;RDe~$%2|QM=|#5AZRXW*9RSIa6F;Aj-`v=5DX?= z@^Mn5u?+CWry-Pf?gfqIjZqUCNSbF>6anmu>@=ZV9L-fDZrMq%YTi~>JvU9Ay6lOj z2+Gvce!pUWeMObh_(=kECHeSS3y+hZeFCcg&4z47PiQV`JD-s2{Meq{d6s!g^PJwA zds?F^Fjmt!tsq7`V`3Z2c%;>2N4FvkW(cf`xj5`8PGxF&O=@;OwPX&lpIh>fclKVE zX1pcA6+0!dr?2;US3PWRlfaj_&!7A#5uUc7Y76zsf;}H0B#OG$7epr9hIm;mKFPjF6B0mH5&%JY z^@MssXrK*>VRqid(1Ti9^U41FHcG1H_P6R~2_mFMt5%|^(^T(dWd%2%ASMI!8~wr8 zhAc6%FeWRX0%y_1EjxQX_ubyJS`spv#>*!5d|P-gl2|9}pMeF@N6G;XSqrd^La8He z8qLM62mS?{Rr55{GvWNLsTCiKmW{gsH{qjvEnz*t6J%%EFAR) zq%ydO?@58}aSy@!!r68(n2R6F3scP&X#o_}B}^{A8zzPbLy9DCEmrvb}HC zBYA1lvG)u2yzQ6Zl8}c9KCrG^U*uevXQETI&KCIct(wA@TKB0s6S07TMG4giR?TFK z@@>2q_Vt`*3l5#l@Gb=U`btL!Q>J{)xaah=6}4LNjAp(T)XB-$<&IglOUXId7JHcC znT%Xs!ncGIG~%0&(HG{;K&Pub{YDF#YVUA$+Oz+1S3^w*6n}m$choIK`hHF#;oV-e zY(XOV^bF3-f zn$Ni2)dlH7B#h?6vQODkyStB@cr{cud?+a9d^WqQrAdO+@nDCG(?xBQXV$(e$61OO zOrU{0Xrrf|u+VvmfSWk3tQ#Yx^5T;HM5C2DZeXoI(~C)-k7Nv)H^aH9gxy?og7LQI zDHKI5FgsRgnJ_N|wI(u_-pA8a;rok5&G$FWv*phTDB)dErOXAtEoRxoxMF@k2IJ*b z3{89B6R+|q66WjmaKOnu-q$e9by`IziXW%vz9{e@KNzn}9I5uS=|0N8BYthjhq=SB za(?5X{r-kFnrge$J0PLltZ%yU+16S6R9b`QjTi5d2RG`PeaJsf47{*D^>M;4V>{B{ zbIKuHGF3{rm45wl>HF4Tl~Bi$DH`7X+dpm&wv*lc*!8)98gGv{_DCNqJiaG>2FjEv zUMp)K0wbFJ-Z}oQy_oPz30*fQUMl}x12&$vbUY1y@>&#hDK8e?a?suS`O;;lOwKWz z;iabgyb68na{ghWl;N@TeA+_{ceQQ!m#%O*pvCu{(K_MZDL9R8G!8Ab4DD&*vkOD( zbB)EsJ!jP|eLY;G7D;s9UL<;+F&(Izd9WZ8)MSNpwOW*JUAp3_si4`_@Wrp{p)BKQ z?IqLh8tL(N=>+vRB0p;R-`=M7=ynGb{QlvEaQwf&82)b-6#n_H2~w;@5_7Y!I~Hm3 zo#I8cZDXX)Ls#jI%|Z_m4H0*#iIgv7to+fz%ro8v-Rg|96VX12`<`KzXn}e}*P`%- z0vPjm8p`eg^8HXCcxs%0e(Fa%t3~o;s-11`<=4QA=W#SP_T*&pz||r)u45pKXvsDX>bT`&n%?R=F3`yc>N&~(vKqiR~+G@uy&-i3%jAhq0GZ(|e!y?oO zo>!XxhyzpgM0ySDS`*U@fyyCl40lk5%dwycG))mD%dVL!t49Uu;_bDmy%V zhvdHv4*T1SK_Agft@#+eYopbrhF?sb(p;-*Q@kll+RxkE+5U2#A9?Kxka>kM-@K_quR-^Q zw#9Hmci-0G> zG(G?EhU)`;f(dyqw0CDSc?_SjZQLh)wK66hs zLQ?f%{ByvfJo(@XV0%Okr2TD)fdyz_QB1sE`)OGz#`^@&t{FQm)%~UX^UvzBKkLm1 z{snSm`7g>p|Nb3Ur(b&X4xJLUmjyUVKxIcqI;<0wVd+qfvRtQgN!HKk&d29Gbnv{* zsL`hjdKYX?Tnb>JZ?&gpN_`c*28<_dPSe*qS^5I{149vly%?XoB3R*S5jTAk0dpsU zvLjo|Uonf$*^uptmdg&uQ!|UM`{kB0s@LZXXM5k3ZGMa5<{pLHrstuVQXl1EK9sub z9ow$&Z+KfDc$X(P#;n|6hC$N0_9b0D8M|C)bbk}1u&ed|u=k!}O>XPDa1a!wgLI@w zm5x-U1woofm)?{PAtKUiPz0nm0Yw3k-lcbtjvyjkItd~IA_-Cggm?yX&AHavbDr<) zbDh2R{`OaXcu6kEn>X(m<0<$3Joj^dko@7adh&zj)XCb02c5O6sHj{smTT|2wW&I< zA2xoZxV}vtWR9*3Z#9G=w{#7XSq%_eU*bRd+eVHg_7Z1{Uyf%NSGCu@n(jd)qEX2+ z)?uGEF51c$Ag}4-4voy5x%_sFjDC7GW5_GrgXy#ORSRjm%Um?A4?~&h7Ut)098+Gp z7j3MavxLRg14?Jx^XW_N_K#=Ch#{&Eb|BFMXA&{*<8N)*fySm=f1D%mzkC?#<}h)8 zb|g)oPqTCLF@N6!rD~4pk)`tpSIVc%4P70Pvc55O8tMJBX@$tr8L9K-m*b@37z{Jy z2a4YcRHr4M2KDyFEJ3}MIYEds3n8DNWXtX?A_)7x8g~5d$6R*d7{`-j~KKY*U!tUg~L$`h)!Q~lhD0V zZMAKnp(Xp+(sF}y?1IRdw));3bHAJ<)Zvnx68y;{Q`xmG1S%n7Q5*xB>!{_gvWJ(K zdBGtr0ADbzgZYb!R*KsG%sNaW(noRAFbuwKNGx)Dj1Ob@?u|4nuh`ABu%6!ACV8o# z)~}6T{ho#z*NomX+*DO!U zD?T-(x}|6o%ekN5c{^C4LJ$qG~x}4)j+I!S0`)F$SL=BHRU+Y^tzQrsZ zRgQey;%(@Ml0ism*h;6#NpHa`Qdb+}SBxy8?0Jw>{4wFM2HK62jPCmj-3>E7+OVjM$;1n6cD`tzv^LbGhnDg&QAk z#16zsXjbWb64QZUH}^HiTD^;5z7MfWy#c1v!fy8_xvG*!PQ)$56o=(n(>@?mLv5pn zE>i!zd^QZ?;IdR#H}02ASnkKBP1$LPjWI`mu;vLiziztV(uJ9so#zm|m>-LU&lnrz z`ygjU!x8NA?ij9>!f>wzldc*+nXcyk$L_7_E-775z0`&Ml5j3phj@zb zOX1KOwwLJ2K3Vst{jouYC|J3ma(cHpyuCr8rrV{k_N@k|KJEDrgYZwpK8_rTy>DBT zB)r{cA8zYnLf%wi#m#VM^Re;MUA~J~WTW$<5b{aNB<5~BNVCFd-o)laEvhowj07ZN z>w2jlAa$&nY9{1~MI(1bFJ`I<^BKX7<)U~phCgdmD^cHe9gH8Cd!E=@^2N#Lc;9Wz zy*1dQQs(L2=UrI2>r#)eB5fSNt!f-6UQ-{M5Iw)$O-^P&Yo`2y+O$&78+RSeqJ(Zl z>&}Qu@k5c+8ApNavZf=?r5Bl@mwb_KUQMY%`sooG3> zx_<0=6hYz#oK1)82u;w{Px4YIQFiP@n}`5Tm~nZLrSO<*;-aaxLoi=r1*fsul*VPU z=%%xYg4I=0W9y)Q!YKmI{Bd@zmyLH~m*twboLum^_3!wBw2a5H3-9LOX_|x#E|SH2zaVtj?7jwb_*VJEMcB_d4fz&75srv+@z-d?U*2DJy!%ES zo}XF&2xt;TL1D++q#NzzU?wszHZ$SY$fFk zr^vC|xiE238o~*)KHHA9b1A^4Sfkq_nkq*eimk9tY6->@%yi=wg{sl#>KpkEs?;0H zZYxJ{hhCs|wW*4K6pUoCIbRqjZ$F!$TJ1nGrXYrWJrX10Q& zX(eUf_059ad!ZD&+w|D%&gQKz2ObMpV?12Bm&5x4ce1&zYnR@g?SrkBY2J%E2=>yW)fA4E{~|GoSFajNwpB` z+cR|(E1r34Ys)t7hY^v-FiYV!)#@Fw?xbXe+*?>mWE(qjDK?1mQo}H^^5RJGu!r+l zNsLju$bHTRfzs82b#4b@4}-N=cPZF4P5>#X5YlZjArD8j`D_eJHl~V_$9m9?SDu~B zcoH!smc#PF;NpFxMA{JC0aEOAYzUi8{b0>fi}evv*0F4M8l|e;Ah9IMfyN9+YIk0bFm2V zfufQd1{bV7lXZPj>@zW%lTuqMHe*x!S8ZAKY7nW`qhsdC7&FKbN5Pa{Csio5#jqSJu`AziB z^Q5-WcabWUiW_Q{Md-@L~RY-vmxdY_h9!gIu*C**{>KIl;w#(eke|v z&G+3YuXW670ejqg(ER4J>E}6D3OCL`(JD*-eS>#Z=A2wNhXqz#Ow95q$}~6#UtrR= zU==~~*d(NtM6V)y_RUE^XdmcSp&v9wt4`EC3U(ncj=&@#yhew(-0!~ThYyT>Y{{rjv2HC6}Z-!ZWSm|>S^HnoWqiEAF^-p?NOWqJ!@ghIX%e6^_& z?HRe~_Ywu|fs$<=bv*S}fNF&4G>^^onG4ApR}6{0y8ZRqy>RY^1!jS3O1>B9YQm*< zz5N@y5s%ZdDOd zK>P3X{U0>`Z&bdJO?71FXHJbbSU7TEMU~`f+Ic!9MhN8EnLN;KYJ|P<3vzRmQJ0D@BLl zqedb-&=;Klo8H7Zr$`*M0Bd-&YIHY{QF2(IkFKGvrcNoTn>kjXBpyN-DyZ{&L)B@b zTSm#`#}1AKwWMJlkQb?$maO6Y02j@nQE$^RdK(xvAl32znn&}m-z257Cf_H~r7Dv` zb;8hhvgBDg4ziXOmc90mkg1H~vacQtDsk*{wn_g@1p5y$>=m3ZI=wUdV&2=7-Vmno zAm#ltMs;xI1$(gz((WX>N{i-BtUd|1z9Rm=x`+S$g?fjDF57f3MIJ3r$;&Knv8zrR z^M+cR&6eEavdw=c_T`MxL%C&>;D4C{6Rjc3C;h@?`~&*r7e z<|V5;!SbA^oAZ7$PJ1TNm5Dc!oaas?Zu87Wk1bMz0wpL=^^sw_3_1dtLH*yUeoB5T z7bqY?0HL7!@+v@DN)pkn<)@AZK`YQ6n)i$R1p#s-lSRLY2Be`AP6+TE2xKFM@)v{y z;9=y#NcJN_oD#6-9w>JFjZ;vrwGhv2(FNTlJ{2^ISm}Y{!qjn+4Nnl?C{M+Q$oron z4$qyoh3{lzUEI%u>OOX$XT*{KnmTvL+5hjjQ4CP&Vafg%eZCa>V2c3BPJ?}U8;!f_ zm##Z0C7t9pZgEPx^~~C0R>yXt+j{IdLC@b4! zCQ9;qsXwtBW%u~dOZU9%(JSMf)~g?j#x2a>v#rpMN`LAJUEwft|Lb%7T`%e{s}B9^ zg8!}<_19$wtM{iB|3fqC&&!_smlgkAHR{jHp78(lJM9lr#1?|JiRw1OcL!@bj;&e1 zhTsb);X6RMP$tU#NNo3#NZRFUi==&!jt4gkhlOlQQpah<{hS)tp?<5q1IU;m# z?xnB2ZF#ln_ZOGW8HneF#gjtAv%hYS&7lY=O6>R{ z3Iy^?Pc?in40x@MF41Ga|E~)G#eASg5&1~zLiF`Y;Z|&Jg^i81NL0RQ3=1qu_{qV6 zNTq~YFYDtHsuCvCGp1>T*9e&+@${5{Jo(0+0}6s~FX2@0ZgjH6KA`(j>E5%K<@~kv z<)8n69sM>4w6`jq0E>PG)bXMC1D)wkGM{c?bEo`sGj`muri!4t^mPdE1dk*T7+OSE zCno!Za2JZZ0E&yB=FTZWYpPf~XahzhJ*`36GAVH%VwVyWdZKyV@tg^NetV!Z@xBjN z11iDnD`1{Fkaw{o_(w(#5(`xK1Cr`|T<% zt(GTs$EtBdRnh8lh7YUBO0SY8-XMxU&z+$AF(kFjzMvvrU_wC8Rf_89%A2yDo$P4D zj!8Qy;P;_1Q=F#=s<>zeygHE?BADgGu#%sOog5sZG`rJbOn^-0V3TLdc!* z(;wj~8YXsYbO_`5u1cejECFS~@$QJq9u=yf9KExIbxnBOv1=-S7Sy>)rT>Dk0(+Xf zTzNuINq|6VJAf)#XTpi1N?~A-i?D*AHaYB_4c5>MftiIOOB6|fc;H<$15h2e!TE$L z-1;xMV5Rb?_kv7MvsHV3o-2KGMdpJRWNUS%V}#Lqsy8?F4|0ezh`T@@M+#z%s?$#D zw*_Fk6buEN>OcV2a>o?(YkxKb8)n?04G2m9ag2cRt6sw;E>R+;f%244)^EckfHHJ4 z3n;kW1leGI%BdInEmm}dEpm>v3KnP}8S$ zLX$f|bRgC2To%Rgmvvyb*wK^hXA$4t`hj~Rfr;Yfl-TlB{oQd=>YX-6LTqOMpPMoC z3le`C-{_-F@G-=p9q0m3)wfbhuyNhe$!c91^XE(q6W{He=PD|8h5*%#7tk*$l_!yP+b431zez!V$llSM z#&^#i;4`p4c2P07)^UQ|Zj4 z_Vpu!F_{JEEeP5M?AQMAgOhM?_7kCudO`MX(|84g&u@P&Pl~n<0MANlIk=hhqb!f@ z36+|vn@Mu;h*AaN3VT9bLS(aXr0<(`(uxu9lKk3zGk2--DW-zwUBrvexP|L<$v#_4 zBrQ!aNYhVOTPXC_8n)GDc?k=gyQ*22@-XGV0w(^&GveN-4CjcK#yb7+SWpM_$(!{Y z-1-N<;~1)`WvSFHmVemfemL7NwB%SPkVp7a$HK!SH0k=T)Et(uw>cp? z;pw=+_?vOwaVZzC-3b2Hh0!vPW;todeAn$nV%F<@I;%^OUgauV9j@a-KSJi1d%f2z zN>6eaNI;PwZU?r>U4557!^n~!c+!%3T-9uL>uvHuxP_%`3$ zcEUb$j_*x0KQkkq_c%l5Bw}~uL@1(d)sJx9nzFK}vFQ_BFU&)v$`;d))8T52SLX;6 zkYHC5TqItgn^Y-Y{)(U_2J=Fu{0g7p0C1DshPJ?W%SPfeDmH(|b!#XA5I?$qjYKEB8dHof}MwJ-&)tt*057-PZ4_yx1>X z7Dv76Gt8OXe$U|@#{C_83>y#DqZAvWOMT1jwV06v}-DShEvPv>8HZ|k>;duDpn}HJuW#zkD}xP?+@U!)ObZDC?$ndhFM^+vu~qM{Vgb z-j(FKtV1rdlSAsH18xQNz7})UC~sx=$`T14Rr$REkrs%eX1lQ*U(p_1KdrMwcIM zYvGrTiTs@}zoM7Z6v?|nW)y52%K688_2ymn8y;v9O<}ajqV-pj#Rdn}ND|e~b3GPV zIE{*G?831w9xlv6(i!egaW@Lgm7i=y%r2R>K0ZIqjWoD6s`TwlsMt9{VEsBAI}WL& zMu4uT5zzJAJlZn{D#Zv#-9zq8U=X)JM5J?Ys#y)K;lm|+gE(s+bQ2Z^4*uTX`A>y7 zzjcQG2VTqn*|CFYI0i(+OGt(jVEcAce-DNUUrpiJu}(b==T?l+_!q@GN^J0jyoXl_ zU-LYY_t`B&qMhDl@A5e#up;2?Q57GeReIHhtiMef71KHJ#>?Porvd!*P3JU+umUjz zXs_e1Bmg*3=4n>bEQ;rCkq;bA2)J(dIb^Z&C$x114E*q;#6Q^rIn3En1V$1}3qiA= zT$p9YlLA%?1*_?AV?4-BQwW=z#5*0la{BZ2fI7A{fTnWffP3lmvcYNl_#Nc3?LO>( z8yL{>0sj-ERN+#~(4&jBKyghKBq|^@B!Rs{{L_~hVcWG^j5pnK7Ui6%$3=NV& z#)K)Ryk2j%|3W8jZmxcjDj>Fq_!8w{GhxzLdO4p>K)$^L|1Iiqo8ZP7XTDIJ5UE;ya&jJ-fuwv@#EimtpD-)U;e9EEPPo(x0@k^ zW2#l9#C!wKJN?5p>j#X~xW4`|kj{PcnAXW>HpeVRf@Xv}F5IA~ZQ-|RcmJuWhzTKv z_+3VO4KQ)NY>X3Il1ntsRr9lNHjIZA$`{HzqYA>iWW|%G(BjQ0wS@xjlC1VlC8jXo z@NQ&-&}EPPA3y$W48%WP|I2^Hp&M6C6DJc2@3!~v5}fg&xdwlk;zKFtD-v*@RUL3= zmkPUeiA1|ch-beo!Gmvo(f08759T~SJUrR6qw68^NkeaJ@H+#aGl%_()a2-I(wu*? zJ*PR|ObT8TXzqOuv<9(P+v>kn<~-G1`;Y!(`!if(@(c&gX7V;V29E;rh_?XMcna1N ztQz9(O-q%Y7(mZqiS;mQFAJ@Q3$;o#i!8vfJP*=Z&%Dd?El03rv_$~d!{4Vv z0QvC0xLBdHO|8ijDM5cWJl4f6-FND%aq^0GEH< zb}pVC+B0&*ErCF)JE_MaoP~+IvaX?_ktphodOYuom0+Ez4GHq6i*LIum=+zHk}m5} zJOq#G0$nb;1=ZR?U0F9LSV?Jx4fv@grtxWB`%;g(m?!i5w@I`}J&AWq;>5A9wrL4K zJMaJ1hyF(GI;8iWxZj@KeW}Zc1sca)_08q8pUpR52za1d0|jOJrFM%*LId_}p46 zjd)jfQz0)O4zJoJp5^)l$pT(6m_%`u9k*+9{LN$pxWS56u-%kDCII^T>Tmw78C`fn zDhtI!faC3%vR?QF;h#QvL3wzHMRY2L9^XX#97SyBsQ=?~hk)atn+}J5GXuU0eGWL$ z1gwcQEpU2H>VQFK?7(IywBT)epf#6&L7-4dEZ-+~=LCF!=*jMtKQ3njtbNzN`Q%eS zxY?DxEA$PB5fJ|7s~ZqQ*vNf*=-L{Hy@`$px2S(XM!>mj5C7wOf@|Q9|Mb~Vq?Ml` zK0K2h(EYZjjqLl|hbqV7>_2~^fn+DJli5uD+YI<4TJ*zfQa`tGf|VqQPc^w99w0k) z*9cKKc3gchfM}Mz6>SaoXRyo?>39nRA?9Ks90E9nvWE8 zQ)V(TCf%_fRBm7*(cmV71WeC@SSJfS-X-OPIuMm8fUnvf?q7%#AL&FKaVrvnm2e#T zeSCHe+6Es*31TMni&K>94#7IYH4+~P))j1{NlM&)0{(~&%sCr^o&|ALA{K;67ha0u zrPTj&H9g||lM?pBE%wt@zXSa_3k4f61JNyn18e(6Wf_X&b?d-Rvj62$N^I%-MToUp z#KEWBEr73%fQpOl9BUU)h4JUR`^(iJ0XF~mwvRk7QV|ttej}uSfjMqzA*3K}yNqVX zUzE1Nxjs2b523iJ8H0pAhUW^q-C54M0a!(~=%4H}D|#6R$eOt! zh2Ft+^RIQeH-zU4%x=>M z@}>K*r=94r4F(Qv_NX9bZl!n6_{>_}E_q$M`@o+G%mI|eP`*Q)$0iuJO)N;Y@$Mg~ zX8ZsXG86R2&h|u0M<&5VI4S1*=HI0}N`4?Hhi57Tv@GK(EgQ)WXxU7_pqK@8M0%Y( z3>JrN-t*vn>AgQ>U=|v0!;e}BRdP=@VRTD)d2N8me;X&E3kck+rvxqq6cD(w30TMM zQ|{IdaJQEbQ~=QRhCnq>Uf@}rjm2E{*_bVYMJ@}(Nx6%V=awapT&28_m>V8gJQ!hc zF@(X{h@>iHc#$9)C6`iQqwCk;xL5H*>g7yfnsOQ@i96w{lXAV!pq=fVr;(Rl^@BY$ z4rpew(_Fy0=l!4el2$ah{qIqWC)x^f z$1nHS{%}jyAvebcqPx3+6RK?(mzSeEsf)RL$dHjgxlw#JN^ou9Sc~4a_kroFdL8nI z;7AQC0t5E?bj;c{JTQ%4HlWCiATFRCd^-Hj1E&I(a^epPRT8U?4`T`Q0&YVy041QFf33nMeVCa$o{2M%p6k^F+<-)Z^Tzo#hhvGrrK3G=; z^vJvI3s@7A+R4k>PDT?#Gg(szDr}_QqSzhJZ+HF{&UP=x{VVKD3*u=zV5Q0&6JA(4?E3Y2iI!|BBY2xg?4@)ER1!KsJ&j8tzyDTmj2LOIvUC3CoY&wAn>Rr$e|#}1w+{#?0yRtZ0xc}E`plKgXassZw<7{ z@ocAvNy6O0t7tY2VqI!6vVR{epzu0G`(97zjz(E-)Y# zc@UERzF`)qS6Nb1pr1s$)tsZ*y{7zwUai{FNQzV9=(QA&$f1R`Gcv*RWYOpmVjL}| z{?YOri(tYTOR;p_v2sz#A*~p#YwgoShKCJ?+$Jse@h-GAOq{-6kfL5zc^@caS&l%5KAbC}?K zi-17QtwA%bS59e6GFKKEl1myRR1hTo_)8vrIGtjL^%OD>&ATl~K5 ze$(U!Mp*>$o*aE};tkM^vG=F2Fv4Nv@NzpS|Ep-|I5JcCJ;CtTecJJ59S_vYU!ZJG zL_U>HmJWj%ixxe6eIZN$_bM-wQZQ7nYa72WIjpu?Zv1s@eQQxy(uih;@YExN^1wrn?kEU6kixvY9|L=Uhf5Ow+j(7uX`?gtKU7L(g z{XxBpaE;57qXy3e+#LEgw|+lywmVHmDRcuFP^3T^EziD^O^-Ev*Wb^^R*$I*Pwg?0 z9f=e+Sm0~1a}sd$O4EmnywAMUSH|!#!m5{+tpR^=DY|3#mJkA60*?LZM3xKNy*5WY z^iZr3a9@2_2*c1$-Bvy$sDlV8dUSjfazRkD?vBOO^yQA&-hG!*Av5i+YUKzc#~y?9 zRJ{mNnwDTLYXD^Z=`x_F`v6sWLKDM|699+}nDnwy`kR` zzRmf&Qzgb1y?wofC%VM^KUd0?q&!w4icPV~KOHmi-#M3s=vzCL;=IO%_Ttoa#^j+W zcY4i29k@I1r`m$FMW%N{>TB0;`dG(O)sOGgGg2FMAcFzJdUFIgX%gVGR)DAa?YSPk z#7AWVmqx1&$T;Ap!uMoOE<%Ary8=>-gj1CKbdg9m+>dw>z@6!Xu$(Oy&oHsHdmGe$ zEx&={6;5XppN=Fg?)diNv;eI0CIS}#hP)agMkP)|jK@zwl)ncFD5qPsLAMux@X_fs zdN>QbDF*n^|H*y5bVji34r`f@?+zQ@!0?5Ocr(Sd#ca;nsgU>NXdT)b2}Q3OMVD5m zb&^~lGRgaNY8iuH zDF3RxK<1!|;DdJ$t`N4pX<86OF@)DG(QL4>j>~K1Zph*@Bm(ozZF+?#i#|#S-RezA zCjLNd-ZP1p@{`dG>n(ObDe#$3$zQ#vm|OHM!zYKV;Vt(qv#=h$#jzolD{a7}@9V@4n|cC-Cml<12)pzg0*dpq8HO zQl4{Oyn^BF$j9p5n&gNub(|J`Q>#73;hhi^`?{V|DUi7ZMfr4*7M&h}#85P$;#kx^ z@twDw^d?tk6t*W5&v$Sn@ddLBxbh)hwI+h4IDNExBx*E&Qr;rRrE1dxQN8%nFoLIJ zp1_8qhEnG8v$&>@$W5a<-B@daQK>^O1@%7srK%~U-%85u=E?GvCbfq-bh#po^dg~W zu8TBoTp_G^)AYXmvY$DS_QD$2(0s%A6*zwwb#_NkwfVh!@9?C4r*VzLj*j9bMxyiR zW1VN7DYizXZL&N!+3dS;9ix3?6qirjOyYG1BX0*=H9~%3B5Ea8ZMrY*tS3cy7QgP> z81JuPs6g_Ex@0`_(`n|xUoKi|(KQRcm%LK>v(NV|Wmnp@fueR6{8%$_!nXOxUl29W z`0wXsgrU9amkEDk5hoQL=9R1>U$td0z$hUovNwMYOiMYT>vCnMt1VrMG*5_?XHiH` zC=;fhN8H=c)4Y^(JyEDL+Cfc|X@qgZB>@wrT8F(+h*NG$W|h$C7|WR`U!HL1s1q6M z;*O^jH!#bi*PsYcW$V^_172lT0%ACjNhhoFU zYo74U(@a zoIi#jcEbHi-Pc}ID!plqM7nQL68BP)&-rE8ob^lTY^Q7jG9E=)xId9GhHn`YYxwEM|IrJ!$XvnZ%JIUwB?}yd!>XK=r!3 z9&xU|wFHKJKeYx;=qw{0LW1Fo^V0SSw6K!1LVuXGpE8k{zi#@*IBj2=J5dqdBBnk( z&6<#iz#Mh z@GR+V@es(Pfec*A5~zs6#JscSsh$$`La<;xjcZ1q)#rQIm0Aq5K7}MZIXvWq@N-wO zQszT^yi7<-g51#bNy`hcUQyHuO)#mtQ~dtUl79F~gu~{AyI7i(@benniC0rh@Rx$L z(IdUtWEL<`0OnTLCTp*3{qgJdSc-wlRn4mB+@Z3ongau`DJr5dER?fzoig6I3y&*GXP|*+|boTES zAf0N4Tse7hh_!jpU+S0MCD(fv79Cyg&Yxly! z%B_=*OiDfxSlaZAM9)%oDM)Be1gY}$NXy0-Qao><>TTojClpJz4l#YkMIWMEB=mrQ ztG2?k7k_pP=Ox*==RAvA(rt$2xGC2frZr?NXk*IX#8-fleTrtAh zI3+Apcj5ka8FGC4K3DWt$J(ZhMIVi!`}UMXPsG^0>{k-`zuB;~lA|uTr;Ya<>88L- zL=sqsmby4wnw>eGbCX?)q7bn&AeO7X`Y8*vBqri`a=&Tk6jY*E%IWn57R(l`)%lwj zJbfR8f4zFxq~7+N--IaiWeins8e&GYd-^EFRW{*i-IlI?2BxCozKCk}(Je`7y;_l& z`$bd*nQr1Gm5KenToBgNq2q$zfG5p<5+qtI)wPkum*)5VgNJ)Ol>biJi<%uliGJoR zU-@Wa%O^m`-$DcXN))uT3fHly*IZ4DF|398`sEpX`cN|e{lNvxWz1mon)mihX=ldC zvGsepz5E`1bM?DZ4RYsRO&w@^UrH<{x-TL2(DE7&l^w}h_aHf}ZXxdagjCBh9F%ex zc1)2$VND%7Djm<5^cqr`iG!|_3q~Y`>V4>>g-~q#ZNYQ#z!G}*Q?yH%{pxA>50B)jGigqM`41#|0pyL75PghT>i~%+x)ES1 zhvEQZv>^gmGJ*k^V2^TuF*-Q;F`#UE6axDfImY(biTmAiXBOqD-g8UL%In3v;4%wZ zCsg%p=h0M(xxX-{^N>8~WLYjDY8bt972&aRa=ma=vLX8eb1NtkgPp&B8|BnkANbVh z3+&;LYjRHkM~6TQ4Z&{u|IUs0;LkNpY|AqskK-Jf%J=-ej(yvry^WIiuJR{Y-AO!e zdxJ!SIES<08zE@2c@cCGK=?R-Z-n{=~(*sH?=WE`p43cIHi^Zb?-fsE03a0KOJXx|ah;&q^(#OArJs(AjA`#Wn)F z<$$xsPeL!Wx=Kp;H81V+9DJt8Vw{h{MecmC2!S8hZ}rPn#l!k@G18>qliTF4r)r4XV?6u}XFNHZ_=u^s^GZcC-T4fy(8Q-m%>&jwF?7~$) zTs{1%&>3C3wjo4p6J7J@3l z^bKyKZ_G(G&H33~88g(<9lyHJ-|f89AK}RM(_k_twyBwM2^~F$7}*E3Z&=F`UhY;q zL&NQASLQKA$`4YdT{rfa(wWMm`5ElqVok~xU?HUSX*)j6jS;Ag;lc-mnqTHMsqEs# zmCxvUru6#oHiF~2!wKLzZ|I3=R?F<}@<|UaA-*S{c|6)!vr7HePUWA90Dc=N`u-P$ zI}`C;p%Ssa2-H~=1AvO7ykBXL4NH)J86b=(MJO7I{A$#vf}kriQd;)4uDV>4&iGg$VVy;Ee^RtPA zRhQbSR5)wsY!_|rcGUHUZ%e{y*0j*u(RFPW2Jv_od4fzR{oW3@*a7W+|A~!B-%5J3#(}xWBbk%j9g?-28TFiS>k%^ zz3GOQ@Sg*u>VBm7dOCR{<2XOA8P{X93!lPCY}VmUcSX9w<7P~&CEZAv2nCA_Q$Y8$ z`|(vULVc~%h88Ciquo6H3(~-Y##d+Y1S`)fsPabt7}`qneBY+UNJH$$N}$jFqmPLe zI*JJ*8kLtrZ}*#1MlNFNbm`44h4;(LmPUd-y*+pu5)*`~Tdo@EMN?6gFp#`?Yj;xK zD&=0d0iDIO02*O$Q{NVjlPF%tROAa3ybWdVE?_?0p^5OhB7(I{#dpEY5 zz~GYTYHppAyFM+e{Zl$7*d9@zZ4|LHwJ3PyjV2Sf)5R*i@G$bSOIPfa81dZWc>WCp zc?hf7jpamouUEx^lorI6cw@V zNcKnO^;OIKL1v!IoA8H22I$_*t(1B5wuQmAwh3~fq|VD4DE_#OPA55~%i+O1D@#$N z%Po}zqy^0O=J=8+8EUIJ|Bunl!3*OeU!DoMbvV99EEbat(*B^R#Z%zC$J(Xl6c$r+ zHfN1eW-T`8O)~1RRHuD^o>Fp@n`B@k#D*b!SiVY2-t2bL0 z-LN12BZt0GvgKvVoKs^`0UDp~;?}3;5dn)aoA!iv8uU9m@Ga~v&9-zO{iuGT>K zJtjTjEle|RF(G6mIkU%d`Fh%drG{y;aJ~aP$CO{Mvr|7CximZYkunkwnZoJ5c17+j zkg848Y1`bYVxI|cn|=J|jf5uej(i_f;DXtmVz)CFAU`uD_Cuy?m*O){J~kmo=wZeI z3Gtj5oop02`<-#S@tjzH)w6?xLq5z@anu@!n_*f7=!McmRR^s>VH z&r5?#)qQ1>+@^}E#cX$ww`v4=Z+I)+cukfG1&=>!H&|vRA)E{CwapO4erLifIDj-p zs;==^wahuKtUzD#VH6=*ZHP64#{&)XRqv%4>hcaJ{w>KC!4oHxLSIzg%mQy)xu%yx z#29K31(%jdR*Pn|7i+cWo#c6Bt2D4z8OqKqswkfD)Wjs?&Jk-zWUDrB6x=D$4gO;# zPN?jw#{<&0B0O35nkdF{&W|i!*9)1#Q^k*1G*9kkQ)6AcwuGe`IVa1`Xcw8wmy)>? z-THp$Vl7EMP;{82sQ>EIIrmP$2%GPnto5-v>7!eM6ss|>64meJ%xk%Ge>(ILyni4; z>g$)9**II)?{>?A2vx&79t5OHt0oqSo3VCfme>kWifj^*Z1>;-SuKvYJE|KR2O1qt zOQAA!&z%&FuUEt)X8TpD8^^phN6ul#MtU-`3XX0ovZZLnRR*m#SUlEwZ!WJVp zs@6|-rx-Hc;YLZcs4agWExVukTB<(ByU;KGs7E-WoHbcKop%O^-^^WlD7$@gv8Y!D z;!K!~5se74E8**OXBa{c8BM4^?wzd9T|RDUySA8?Jb5{O|BQ(F!mM~aow*Ub<|;(& zOw-7$-OUN9I2&YUWW?*pE^7hIaM>csBu;Mssp>*S!ov>d#zxW$4#KYWKhN6p+{g^I zHFcUW+^_n?(1me5V57qrJv&IBY7Ti(U^%N)YBE2CxsiYg8C`VP z)Pi5dK@XI|qA!aI9n{b+m@(1oPykCJS6pWwo*mU0859t6yqgzs{??EAywIQ%jNrcB zH1N*!LE0FKC>L+Cv}!P7p5fES($#h5&hcesxJbFop@Z2Q>WI`E21coGn@W~0hOpqw zF$cYwB3n5AQgYe3z9WhjcOiz1+syESmxSh$`1>qdhSvO=lkK+Qv_!VjrGe_-S211N zE9^Mlv{&qBsBr1x63Tw^Ofn2W{F7a5bxnY~qo7+`ggqEsMX%UMy7F~a&v z*PQD>y(|w|>Zj7RM|0B@UCl#j8YAtW5S%HwIaJF}cJBLwrJ93xqO3Spj8tEKaQ^#> z8>rG?gE6et!kj$*66gL#p#J^N2)L8xomOYFG^Z&YFH-6@>2 z7~hU}ZB&;rd*^@H5`QoDlyT9;lXow+@)>Q_T~k6Xq|PQ0Vd<8isRXruQBndxlJBQ8WirOUCi_gm47kdgq$bTj0|9 zbsQe@X@85SM`(!Gz&T&dG)>Krg{HAn=%i3l4jZ!^JRSOVRPu_{F}apOBlB>RI_%l_ z)|P!^me$=ef>avm2YJ%V`ATOWK`w2FD>C|x^evGF2UfqoMdL!`U~hIrXGVhK;B)dHpUJJqD(Le32h@uh7E zRl-+a+_)DtaAYLTuz1r^;l{S4oRyHKe?BSiohDc<%~>OL zFG9QP!SDKj@D+;(sF%TT2XLJDsVx3C(t2daFMA&tFd2Dtyf*2 zr5+LK?N7PIhqeGS2r&u0L}T(~SzMpaNcWu8sR;Rfw0w!^7hVV|*YOx+UMofR=s(dxfyJuipKS?8A zz=T$`+hnI}zcLdfjfJB+F80|?6pq4K$NCt^ep+UyF^W;BX!75LtfalBut4cXw5s33 z*dQxoYvX9Pdwq_0;tN6VWW6svdOo~G+TlKNHn;O&xwG#T_~)P^Td^QmXGhI`TMo`` zqHwxZ4mE6kJ;>7=RZ2u4$|oQ@D@3PtU|`lwXnZzBTO~Ft zSY4;R*>u(AHGMti-G@Offk;h7!^h(Ngg&|-$kC)L>@jXZHX?;c1#5*{$4Iquq(6&c z`zR`U%_Mcp>~d}NXsT^J5AV+GZ7Rb1vl_zR7YR-p~8OJCJp_N;K(GF_}2m^}BQnI%b-z(%HvOew>?H=|=72@|rp85-x_Y0EPYh zf+yNOANk^#wWLg(Z2SDA^P*$B?C<8$C=u>%Klb&pmccf_>~d$<+2}FE;a+i~x33=B zUi7AMrT!39cikY0=k@#`0f7>qOTWW0RHbZviByu6-5Q-a{bWy@?cVGtM-ce0-YuiTw=|y@GkS0i#-a$p0h$tNbL^>e^ zRHR84=^X_Gq)3%sL+BAguhONH03tmRiIMia<0;=d&pBtU_pEQdUtz7xUm-J@$)4H! zx_{SoQ(@$zvm&w$OU4jh+dny+KUR<~!>1*TENm36wmeia8Um8XyTY#XNZMQscPhZV z)?d^?ut8a$)ecdwJotYd3UzSw{QA{Ee)_^}K!FqpT{pji2<8qRY3+F5Nt^+sGuBU+ zBCrw&mP!vRidint$L&omS#qR_dJZo-?Khv2FA)<3Hy4CzC@1Ze;gt5oUgUu8;{>N$ zS0hxViuL7Ff<9DoxZ}<0`k!&l^p40_>uiqHD65sMjcl=bX0_F@UW{Cb)?tftD~kPI z?r_=C#d561!a*?NQ>kO|yJG=y$BoVLE24{fd^)PMb)&B;+Bh9e`xjq4B1^d#&Lx`e zycQ^cn3B_1IhV(8Jw{IF_CIcc=LUo{+UUv8%GYUKmRfD@r`*$arnI0=?RXBfzW!%! z?%#M%e=C7f)4>!D#?#ejO6ws^eu8qGCGD*Z6ON6k%UkvjQblY)5BMc|8r&DyW9+5% zfRTgN_sh751L9Rqj{zFtdsBzi?|l)BRs?}E_B@XG;@lN^R#kYxgop|G*7Tc8Ls|hc zj3{7$`70PMjsc&D=h15%&H`%I5Ma~(zwv=b20Ux^sLJiusOUf!j3?({$vD13QLaUt z{}n}3nx$$R$d7sc4y+gj6XGYitS0f-U?~7cya~uffA&`bcA|enll>_?`FmbCaB7Uz zl>o+n5m>gDaNYRr{api8#6MZ){}S9yr%ISY2Z4HQuT56}5WP2j45PEGpXHs}czaJG zon0rJp^d(LpHZ*2j;j5-eYqaH%X(yayGFMmPvK8+gN6Lml9R`P;xS41mz2?$9ls4! z*!E+M69FW^CNKavPU<&cS+G?GprV4m(Sy)*jkAourG!bU8D7Ll0;mH?9e~HRYM}jh zLVoB40}z8?5};T8Ju8fA98gya^nViym&8JTNhA?$U*?@NfB__e!T~rvfaUZrqH6aM zAZ~q2{S7>P(g!+w15iY6DImvX0EES50EPc<^SAi2KOf&te|G|_RWnW@{>-7;wZZSX zO>lt4zHD|`LF!jd*Xxv3N--;PDMgUPX`f3Z{wi^#KX!zFv!%er`ByCuxHwe6cljq* z{r|c+K=uF6WYk|&7l4ToP(ZC7&;I;_NMGo$RO_Y4_Ct(s6kN2!<=*U%Mb_zrx90K< zpu0o$dubnFyDe|IN|=YX1h}QO=?W%RN*)`TIXAiuMQ9nR6!xf|dtOA)cwYPhbjiet zt=*6x!qAYPBN}Hu9Y~)0Qa`Fgp0qX0TukSE=l^ftTlhs{PXjJ=7LB9R009V~Ca~$W z`>p=@pRAr!a;%;o(f!umJo_i(gM{%^ZFKv30OzBsIS$Cg-yQ**!*_r-$Q_ITAo)mO z69_Ee`=N`tAB8;k)m|N-PK`nalIV|)kta-Y$kVSpfbw-?&LRy=4%JFpCb^xTi@NcM zY&uy@x5fk51)ba9|0mH9T^;6)t|13m+Lr713(T>4=`ebjKuZ1Zhp%$ta$kohidOc^ zK6(6k?yjCF|G@iYJ*8oven4XVN7KFNZ&>Z0414$3CWFW3o(F>S`p9~c6K)Zz=~zlK z&fh<%Q2tgAk-q10RQvcXN+eH=S$M~nj5P454_sT^i7eBq0PO^`PalJucHbxy+Pa_Z zvOsAIKX!ckj`q)R$I7Hx`qF=D+PGA!id;7<#a*#+!H3VOs?a5RNT|wGY2mp79^l?L z&2k7_-S$yn*m?ksNJJY4*1!FpJ+fl1w7t`chhq%9*0oaoMEk7{W4wo}zz;gJ4Qp>_ z(MIGmN0jKp`Jsl&6w6l*6*C<~SY!o4UwS44lUPH+Qhwn#LKZffw;@R=tnuCr#u$5pE;;huG*`A=5*q?@+}BRLDx# zMT4@PZbxM1SfbR~!@WFlZ!kQGo&15KGbukh_|ad>*3S*Knh>?Q-qRlZ4e*)ky>lb{ zejBOto8R$CV*M<>3ZjyIdC}aG1m9C*YeJ#nj5igMgy7P360{W^D4Tdll5V^T7VO=7 z=E5C#naxq`%GX#W)>M;6WKD!cwD-@%e$;NV{B)Uw_f$$-mAElhdI8^y;pNy zYsk$fI}RpuYKa0|~l&$XM&{(P$TR(XG>qpIv8? zNR*hF@Wic3%CHz59sUC$3}?JH7u~M2mTjPbQofQ`;F@6-Zewk&Q!aM$`j+)os0g#E zMM18r6wOzLPt3hUK49wKt&ljNb@x;)F^Y|=)R0bD99?wdA#KT9vv0#{`zMR-2z7t+ zD5vqgr67r$W9Wka3m7jZ6#*1FWKarq1qYf;{WS~iRpF{!VU zbHjPTg@|9{3c*-!Do}_lUREFG5%e6tS?y4l>0aGA%CH~|!!;JAi|uubw?{5DUfRhb z>&j!+UzemI)bw5`#`SP?z6tR4-LQmckBvHHjl$B|_#s8E-N}>b&d*2o)E_rW3Zlp7 z&21+6CSPPHU0dX#@w1&X3h#bu>H11#RId7iAAc&uF-v#rmX=s_=)JIThQ(H6RY{yn z&kE;xN+*?D`en6%zF?urc9oJl{?(%bDV!A*eu$-IMRkWzg_f?R{jg*Zzl3BGlIfU^ z6%?r6P=|eoi&y9E_*?_ev};v{STuf-Bj1X>D)f%6c&PB6qrfepVByQ18K*2e%HT-3 zQ#N?b72cVHy#pbjdmS|~%1ewwSs}9&K73W6#M>wJCO>a}6fxyuhbAh7*xQgYcpMj~ zGI{3WU%G?u+GxblREp&}y zL|GkFu-7%uR5cAU=X`2CmHEXDd7R+l zwC^feI@vfowa=j9H_vAhQJfZMx75&(I!_#0PR3q-F)+*V6L|7d6ZB2yvbG*hR>9l! zBNNAm13n(Jxx~~R<%#9LPY#Cl>MW063qtIR;~2nEFEyei?XXQL-WV>ooqpX0#FV$V z?ZzTVu3P0ibvpA#%7XBKiAY_cj11%V=}rbfd*KVTn38R2=lwwNeAr%(O{1+H zU;sfUJ9jG%BsJE8g{2EqmJu;QPcw;UeM%8$eUG<{nlnzXIZ&H`>(&1UL$V%Dz1t4-M@*c((Ko`8pu=pMZG2fy^CaklI%|D z)|3^QKQFFI&)w^y?0X<85D|NiTaHpcHMi6iy0vh%y3wMikQ`B|8RNS(^*k9*~1giS!e(RrX`CyuRsO~vmbM5IaDr6(@@=yY62++O=t$yo7xLLQ_-A*tG31Fh78bIjo8K>(Ax*OB^9 zc?=a&85!=92nG)o^7DqG=9>I6@ZB?KH*p>?d8i5vxEoTr>N+WrRswFHJ%l+ud#Vqv zkJA$rcOQTmOJoYviF_imnLyfSs#1hhy4h0WUO^Ds7+qCO^Z=ae)-q_DGJR@MEyXmG z!-7MlZ05G3a52$xE#q^^dBa|1@pWh`T@MwPLZ5QG)q8G%nH!&}YgdXlcIChEvWh%$ zm46-GFeLReoMXK`2sejuj>ER0Y$b38@K;~lSTDF{tK82hk2(vUWZ`)f3|;lpTf`DS za$PP=cM_JC*gerTFAZ(>x@32Usmv4MOGOR_|KX|%qOCnWNUI@+j z-naHim{@>#knD_c${-R(EA^28G6|D4;MAFslsmk#xT7%g;?#BjZ1JXZaup)ynr>zF z8&dw~N25Ry1z7ty)sPV83lQOVCu9voAI+j?fwnPDMfZ|0n)I2N*soe57F022_G8yl zUq5Tl!XoEa@p0`q-+f76Z|@pt#tIuDT5?Kz%CkzMuy!gT95b@eo>FOmZ_~;}x0krT zEi3@wc*lrdg4z)uSH~z1@Fxj z2FfD|;bgBjn*h&e#2Ltm8vKPN{f=FIyG2nfsEGHIy1gv#8`rP&zJWay9>L6n#9{PS zg!;AZg%J&GB8XtMjykD2YjU$S1L^LsrLm3-5Um_onD56w zBk4cY>EVg}kHf?pSlUQ@8bIBGHtP;L_?V$4i!j-^@MImu5C;ROHMS`es3b8GP8NZ4 z)EW5#OkoHuV7pN#Dpy%+W5d$y-JB)k;8Exrqszb`{Rfex5YY523AfrE5_7@Uh@&=R zwc5YP3@ZFMrYpq*7{Px{G-S88}+e~Mcr)*F#gGLiPgq?uA zjgyR(l(SJVMj!BT+6TN?cY z#~tAeR9DKrt?=L!qB(6dc^#fz`+3u6a;VGpp6RWIoRV9pOE?qnq=kO)&e+lYGTDcGvO1jzWMka17IV2Kv02>CAl zw_w+)+{=JJc!d`LtPITnF#w2AFa4b#sMf9t+#z$TfFxgFPBU%(7O+e{^rN~6_?_fS zp$06hQvmcP@;#RI43DF`V0a1KQ2BsBJ##r6XYV@t5VgukDBd^t?)uVZwq&;al)9TO z%OI@QXUjt-JpPAVf5<<78dRnyk6WGH4~c564zH+*_V`g{Gz;Qv3n6I1Umw|}Q7RvR zo}xs0oOJnB>0K|E0?z@r8oJIrjA#wBUh#JNf>^DNd@*|TuEF!J_JLe$_JS~Wb{2UF zcA`fEzFggicCAw#KLylDVm5U~y&8P1dOtM7^Zn2d#aQ_o?P>p6z`Zd?1u1Mg*pp<4`sF@qfd>Ji4E(8iz zG=CTD&mxjv6;+>ETBlt!7xRhto?UG$4HbWqNd6UfV_@d7F9Brk6?#j0)Ll<~BQ@YN zS@mOEK$fCWT9f>>kKs8JIQG2I0E6W{|&F zfSld`?Vk-%Ah6FrN3d-z8)KXka4PFO-O*)cSM9%MtS8DjU*%@F8{u^GLi%|RTc8Q`=kLW_E7%zZICe;G zUbScc)aMlsR3;O_RB(gmQx>gpJ&bPhP3FphMtM|FHVYwFD@PIWrkqhvib0Zu_w*Fw zxt8<6V<+Cz3i7RnapDKpBNgq^#U*>(CPc_DODAX2st(%uRa;RtQW zL&%Lu zh%RZ)M!j4bRgTV&_itOXyGaG5rSiC5_C!;K^WO)3J!JbEZb_YT-yH z@8Dwsx6j^f#-v_9Af^wy^NEXy>Cz8Vz>tUipT61sC!>n28z4}{LfDaeH%ovt-ue|l z+y<}NwvffC2I0WAb%<$xKz>r;sUHt1wYFq`1;O$&>rJqQ4h_F|xIWkTJG%F;uYY4* z{fZ1ja;nO#Nk+c(2&?YJaB^Ao1@z=zLMJ?YRJ8m6MV-EBL4Su-k4^T{kK+GVCxE-k zmNn?~flkSpT`Si5BsdwiHfyZ4%+ktf;sPaUmpKm~Bq-g_9zG)TpN|XDtZx!+F!UtT-JZPAAn;h9 zifo@$^)Ah^O1fQ7deC~rmvT?AeM8D4LTBOn@Bp(;7E*z)t`WIl-hDFHO|I%?$7kD) z*OTQiVNCeRs%0!+JJ4ljX6a~QnITfm4x+9s9G9g!4DDpiW&hE}!)i6k)xYo{TpxE8 z!s$-cbk{*;ilu3N*uC_ie|S!rLnl_9_?sr&n%enOfbg&(ta?-?3rf8!b)jOpc-A&F{fpZ9Zd3K5%x5K`E|;DhlFU-So(=F z>L{WzGc`3o!`H!5XJS|___P&>P}#9m0FBGuC${Nm$>|m;^Dhb8a2F8?1rbpbiRS;i z$Mb*kiv_4%peu^(fBPKpH{2WiM+EaCJ&)<#z4raJFyzUhaak{J?Z z-U99u1LealTozY|))Iw@$1Vg38hED+j6$^d85A>0+26BJH7&Et&4a`(;Zv3$*u^-= zY_CEs-ZkoxqwZ-68{N6m!LW*VC4`X0d7PO#z^W~Fd=Z1?W3qn`F}bDV8f4DcC6vYKg3Yw)I>`CLytjt}8To-MPXo*yECLbPbiYrR7epIP?j=o_xhDwolQ*O>`q& z?`uxFVvl1&vBhVy*%QFyvyDAiM1^?ZB1WgIw)M&ly~~%N8D>|{V|O+W4#W>^gdPi) zr)v1hNR!4B_j!HZ4r%B|or`u`MMa7KfH+OSMMVwNcWxeYW?F#)Ocy7tcf%) z-)0wL#%(2@d6C5gGo9I8%n%Z)ZO*jb+{fhrgkf)+%$NCjP3DCKMp#bMM0EPhdXBcU z^mEX&#eE*qKq$`am#U4Ow`Y-C2$Q?_$2pq`c#a!pQNMP|RvK>vDNun>Y2&b#X_m!$ z;R*xg`J5+7uQgo8i32@r+osz!iy%DotB>E9)=kv3n~DY7><=mHsmjwl zhW^Zfx46X6&P_QQW(<59#-H3aKlHh%g7eMvyA5r!<|n|UCo6BB5$&kX`Z-X=E`PPi9m&}?-fyJ(s0*C&V*7jjUQE<1*l<=!IOiEozgYaWC+WW7v@put zLz{YIb1n3XU3_?$4bZq~V-5^N@SrO4s9hJBUK-%@U_~~gK@k6vU4vz0o;}30t^%$=b0)roy4uUDK8&yq%PmNR;Q(!AUoR8KXQA)m?$^IfZt%F1TRBs55a6pmf`RaUgn%0Dm=N?pwW-H3=ZIVn>P5!R?#rsE zUxk^Du!(D>%e;3?`8CnVu2t$lQRuH1iry3whm&m8o^Y7i?&B6e3^i}uXmiSvcG#-h zWum2ic6&oFEuyDy&X}>Ve$?V0M8uuRtJt_z>v4azRGYC%=dA7Ojc3Bo_}-|R+?&HfH3J8JkATl(ZP6hg)79XUCR!pP@^vR9g{dbC<*_g#( z5h!&|>`GfcW9UQ^UOo)5tpb*^{F=IQl@O_Lq z6~e5V{qX_o)%pse9b8V)EyYj#B*fOT8udIVrr2MOlg9yrp5naqxnFy`l-s4RyXNS+e($;;`6Q?WpgMNJ^EK$+&V*;h$SCzW7q60)Z3VDLM{{%P*Odd) z^l$nCsWQ5Ue4^|YnU@|%GIwBr<@E|XZYy*R8{FpN>;K_4%t~?2s3jK7y*#OV&AKQ~ z{@8BCQ4P!SOd%Edt1_HHzs=8-lcE3xq7vYUceWk5R|a^RSH zx1y!CtybY0Ei|X&Jne!LP(olnHbRe1J@JLRQvKX5f$5)ZbuC6^ABlAfkF>qlgWpb8 zxkAmhHRqa7r`Q49LoStlI|+W{jo!>f8DjTxncxuzrF?2qBcvb5g7ro#Np$s+*}AAH zl;GI@wbIuYR}Ctb{5&R)CB1!O;8gqiCau#F9t(1!oT>;06^8O&9kt7ev4GwFPkq-f z12E117q0?WBkiSuN}serqW9c|-=6-Ch?e50V4)