From f58f8a2b6f9a83e9817748df6649323fdb2d94b8 Mon Sep 17 00:00:00 2001 From: Lusina <12752833+BrianLusina@users.noreply.github.com> Date: Fri, 19 Dec 2025 10:22:09 +0300 Subject: [PATCH 1/2] feat(datastructures, linked-lists): reorder list --- datastructures/linked_lists/__init__.py | 33 +++++ .../linked_lists/singly_linked_list/README.md | 26 ++++ ...gly_linked_list_reorder_list_example_1.png | Bin 0 -> 23548 bytes ...gly_linked_list_reorder_list_example_2.png | Bin 0 -> 25852 bytes ...gly_linked_list_reorder_list_example_3.png | Bin 0 -> 26849 bytes ...gly_linked_list_reorder_list_example_4.png | Bin 0 -> 29844 bytes ...gly_linked_list_reorder_list_example_5.png | Bin 0 -> 32366 bytes .../singly_linked_list/single_linked_list.py | 34 +++++ .../single_linked_list_utils.py | 66 ++++++++++ .../test_singly_linked_list_reorder_list.py | 48 +++++++ .../test_singly_linked_merge_and_weave.py | 53 ++++++++ .../test_singly_linked_revese.py | 123 ++++++++++-------- 12 files changed, 329 insertions(+), 54 deletions(-) create mode 100644 datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_1.png create mode 100644 datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_2.png create mode 100644 datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_3.png create mode 100644 datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_4.png create mode 100644 datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_5.png create mode 100644 datastructures/linked_lists/singly_linked_list/single_linked_list_utils.py create mode 100644 datastructures/linked_lists/singly_linked_list/test_singly_linked_list_reorder_list.py create mode 100644 datastructures/linked_lists/singly_linked_list/test_singly_linked_merge_and_weave.py diff --git a/datastructures/linked_lists/__init__.py b/datastructures/linked_lists/__init__.py index 1262c6bc..677b16a0 100755 --- a/datastructures/linked_lists/__init__.py +++ b/datastructures/linked_lists/__init__.py @@ -715,3 +715,36 @@ def pairs_with_sum(self, target: T) -> List[Tuple[Node, Node]]: List: list of pairs """ raise NotImplementedError("not yet implemented") + + @staticmethod + def reverse_list(head: Node) -> Optional[Node]: + """ + Reverses a linked list given the head node + Args: + head Node: the head node of the linked list + Returns: + Optional[Node]: the new head node of the reversed linked list + """ + if head is None or head.next is None: + return head + + # track previous node, so we can point our next pointer to it + previous = None + # track node to loop through + current_node = head + + while current_node: + # track the next node to not lose it while adjusting pointers + nxt = current_node.next + + # set the next pointer to the node behind it, previous + current_node.next = previous + + # adjust the new previous node to the current node for subsequent loops + previous = current_node + + # move our node pointer up to the next node in front of it + current_node = nxt + + # return the new tail of the k-group which is our head + return previous diff --git a/datastructures/linked_lists/singly_linked_list/README.md b/datastructures/linked_lists/singly_linked_list/README.md index 26f17b84..634f10f0 100755 --- a/datastructures/linked_lists/singly_linked_list/README.md +++ b/datastructures/linked_lists/singly_linked_list/README.md @@ -592,3 +592,29 @@ Here `n` is the number of nodes in the linked list - Stack --- + +## Reorder List + +Given the head of a singly linked list, reorder the list as if it were folded on itself. For example, if the list is +represented as follows: + +L0 -> L1 -> L2 -> L3 -> L4 -> L5 + +The reordered list should be: + +L0 -> L5 -> L1 -> L4 -> L2 -> L3 + +You don’t need to modify the values in the list’s nodes; only the links between nodes need to be changed. + +### Constraints + +- The range of number of nodes in the list is [1, 500] +- -5000 <= `node.value` <= 5000 + +### Examples + +![Example 1](./images/examples/singly_linked_list_reorder_list_example_1.png) +![Example 2](./images/examples/singly_linked_list_reorder_list_example_2.png) +![Example 3](./images/examples/singly_linked_list_reorder_list_example_3.png) +![Example 4](./images/examples/singly_linked_list_reorder_list_example_4.png) +![Example 5](./images/examples/singly_linked_list_reorder_list_example_5.png) diff --git a/datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_1.png b/datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f55a659e84c0fd1c9c79af50d00737e04368f220 GIT binary patch literal 23548 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 literal 0 HcmV?d00001 diff --git a/datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_2.png b/datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_2.png new file mode 100644 index 0000000000000000000000000000000000000000..099bf27d904f9dde4a3d1af4a83db0a7429932bc GIT binary patch literal 25852 zcmeFZbySsI`z;KJ0#YJKcS?7sbc%p<=orI7O;X7L^LlbiY2#D9=?qS?gPu`&UG#Qh={0yt6mMQms`LnQGFXlVw zz!$Fw<_yau+IW2X0@P;I)B}B*1it$Cs7%50d3wuW69xO8h4_>6Suff)a@y6{RS&MS zM)f#*yS0>{!rQf+1^0bBh=*vfXZpIpAVq~8N-qJQdVTla>d3eOYpl$p>B04uGG9NS zQ6f05=VLQ7Dei(p)H?4HpSmC%focEfm5N`5=t9za@ zWv99R;MNl*9S7BN^}JL}o$PpuRvPBg#3ok?oCXoJn@RIH(jBmH ze(_-m!`$~Zb=gMAy_-+2w$rvOloywUmlYG{o2zG27pV#nW-h05zHifJkt}gJMyIWG zIcSeJvm;b+Pq@?8S?-}t6D*ZpBXP2;|0Km{Tm}QHWS}BpC?f+w1)jq~K>C?LK!azH z;13)8K|nl-@P&W@|Gxx(!r!3&Jqnfh?a9B-A&nkC_(nlULIV7+pl54fU}8xyx=ovXVIq4ag=$V*k!6#_#oGtBjoM?{d8} zaWXJh6*jQ|!voI2$IQyf^ZWDvzaxLn_*YAnKP}nV*#B<%*OC8kOGP^aTOlh8a7uf= zKX>Mz#(y9Dry&phRBLDj#2)K9VrHFqTLBLf9L9}Q04l?Qe`FcXg0GZ0a zPDcnCi}G#K9!t$o8j4ilzmJk`wm&bRNEex)&=To{dV?hX+W{|d{;6kwI^+ed0XjKi zU>wi*SH~gR$!GrRV3=1g>^t*X1X^bDzxwcPQXl7k3;`DCWNey2$6p-+=Qn@y_iH*5 zfs!qz@?UZPj>u!rbR#YP>Y(`l8>Ig?NdH&OBmu#ELZ{0^qW)xVzkKClV&~&k@mM;% z;Y^9oU*Kq0(tF>{HF*;3O;?ny9UL5lZjF4O;bZ=w38j!N-I6X6XpZ!8e-_JOXS~Aw zqXQue3))1nc4wAUZ23cSn?EXvYzoixLr8wF;r%}g@dYZBrK0VdH*XShu-VKp@2@rp z{O*+s)n1)#j|uIJ7l!k>yZD*#@G_B-LZ565AS)vV^jUMz+$p|ruMB|B`mFfTh;w~IMPmAa3Gc1(J7|6Jc8F7)hh+11TKli5jc z(EZyK9;`yOichJj1j0c*hpX3TJ4aJSsY~+>t{s_bmtfGt=7-ECicE@Oknssc0?@>h zxmW|xC_f=!F$r^QOqCf`J00m(J8dyW>+C*(LHcko-_Vu7N-Y^n7n~^(IX%qlevNi> zanQLxSBHX$`89$}N;D1?Lv=osfPeh>9(1F^F5ne)_L@#FPYh)I0_7Rs$K5zKS$e4$ znyzSSjAJmw+S&^$>*w0G@zm7LJ@(IZ;z`7iXcy|8Pwr#Iedx3sgD7NECYM)Tx@Xlg z=4u_JdVgZZQYw(Q1!5q#O1RARr|<^iuv;3_$H!7n$V|q(mV<(ONy?Ct=d*Vb<=g-X z37NoO_i?YaFOgj?TNht%iAQ5G{zXNUI*0F%=rPcyX&(N-@P@i?z6}=hj=m5 z@?aeHbjfI{j@Q2bY&p$5P}}6jweE*4Fll+dOInhP9H&BX-h*#GKl8Dis~!7zJE84~ z=vd^gbzI|dcbz7=IMpBS^^z2&U%k>?HRoj#$}$GMRzWhi>-p|GGSgPP*a6SmBe8Pl zfjCBz)|%y+SZxoiJmJ_qH!+VXq6Yo|-=3?-;q8~LI06V@cUs{~IOUXgfIwa7>ck+nvgF-N!A3jQaY7J z4T0ya&E||%6CT~$<6Mmz+nno?mw9b=#wY82B)Aw4W1$$l>U(p1Rwk(-{jWMYYJ0lR zH#~0ks+Nvpko}PGo-5jgl3b=w)Hxo^r)_sCd^t%EP^q;y+4Ok0)a_P7iOKx`^7H$|zwrf4F z)RjVnlNlS_t3U2dhsThx+jq-WO|Dy@k%jb+okTk>5xMQ&*_}G~#?W>sWFX|vx5Ku! z$)&W)2{*-E=Aoy4IT1NK^?e2d}rcT*_Bg z$f{pcQEB?FGxg5Qwf0--h>F*jm*2p>pAP$m;3;azlr&dnBpZaq{EWc;6y-g#T6HE9 zOM#15YkT|p=k2r62x@PXB^IpdP;;^$j3wJ9Bk1f{E2K0dPxNaAq<0go8odvPWRx}s z5?H136YtVP|Im6guWP!|3>uS=4N{&~^`iAeG(G45L$1s;9VuS4(YdG%G)w~dlgX)L;{eIkyM zCcnrgbG_0rf)P9WDw85D^$%8~7bYA(9)+XG;q*)!#>vJFJ$7o;qsevhvzE~k}N3q{HFysqcGqD=M0i5d0nvW(r@{y$+I z6kFeN?{8}Cd0l5z`UP00BuM2DAVqJ%oa5pl7EiyuWCv5;*LowD(|^ggDEb4uqlU}t z;PaCKem`!@gU@a;Tr-IY82KfYp~|f^f*u`OCO13N)i!!F45g>*)3Nkh(F~&j;rMnp zE2eaXeNS)dZ_fA3^oaHf4Eqw6`eQ4>9jNI@k%_0%p;7kT2qxzZ=~!V(UJ{Ys&irCf z&0{eAsoVm@?BBSuI?ziU9kv_l#Z;w;%kXHDxIgV zpMl6NsXj>p|5ks=zhR44y}(z4kev)cPSN+Rqnh=cnOeNwVLEb?f{*Fhk4&^)oSK`+l~ElZcgz z@D00~TFIT=_ISj&;2G$I?NXc6-%AosqdVtb#j2?@uX|qX&%wecp01QuOQSRUcSF(S z2A*DSlk;`9Wp+*&gRNdPLp0c2ZW!LAJZ{~LrxR02_Z8THnMF++vY6xrNd7_FjwsfF zlTkfArn*?qV{i%z-eL?H<5E?^q`P>V>ngNG!SbsT?MtJ+!HO1fC72V;g##GZ0Sh4}uc*3{tXJg78yA?mK zMY0eHF1AJ}T1zm3!^U<+OH6(Z485y8a%~5b@5RQi_|E{4@X5yT`27R$lSG>>bQOxd&8LV@FxJRq(IOH{czDIub+BbH z#BBAVadO;4vv`Q#Rc50cVJ90it(zf;T^LJ?sUKqwgwoM8l!%t4_8RkK`{7v_k=n6k zFp16ZO?{804Gbbbf$`DSCwGYLG{%-Gip}7xAifrko4z5kBir*a1d;O{*g*=7jw5CH z7!3*Xe~`R&dFDc&bjy=WKJE@nSt;3PjL~YVuYBW&P(77IZOVCyS z?&j*}g69Ko0*lGZ#Dch(e=bKuu$fl3Oe7F}+QX+*rPb;4D@GDmjUK5!J9`dc>Yq)b zX_UkgDG}-LI2Ch)c7ZanFYehDazou^V|Pn1le_QZMI*0!!YrlRLXLQDe(d6ylw-4+ z8pD4MvXS#KI2fw5nBm%$LGvbq63>>zyn9bw_S1k8{>v!3Xk~SYUMJV==0Z%fjCV4( zqc63pizSFf9u~>FTPC{}iYMF^BC1PFuHML{3wfu9GqM#g`VIL~@1Ev0EBt3OuJ;l+ zb(F>s2*YPoJ)-&9WBVkgQ*K+RiD{IoA@QXVO9Q*?!P01GH?DxDv1F1OZU#Z=ue#F? zBuoavPhkOh6mpJQE!bEpOS+;Xp7>)w_+(q(L+|}SAX|!& zs0wt#SALYPbBFDPCQpuV+<5-uHtdQ7u30FIEl4z**P*x4(NwRH@Og50=fnqupk3{i ziZnROE$6VC?#>fwO}@WPW|5=e?PW5j<8^TvNIK2gCg(L`+G{apa(J^nnJt5(UT!`` z+TeAaj=3en+OHa|#VJ8AbOccI*XFL6@NUS8?%MUxui9dEGzKm2q@~e!b9i+u5PU)p z!z{9dUrXMXeibJ$#kgl=j4z|Hm=Dhl-p3OWO3A{cZBE~H zsy7@+!fwK-Iz*e^{u(M>eW++d@4SxZT2AYn{2s?IbT4$q)8nL%y&`(1;||Y9@jY+g zxiiN#4U{l+ZTQ;N$p*=3Gxk8V7;%6&YXZ&N@D$FHwcc1WK^1;F>RBJ}g587hLUoQ3 zN@D8l8+ayHY=k_QrRgSBGTSZ9g9`k4%3o*bTb!cDgSUe+rBnInKvlu+eq~+I?ER2*d!G6 zRbQ)FX3A>usGg70$Y$u;wngC_mNG$mOPrJiqrhHMbe>228$deyD*9lF<+4GFS)DbO7mAF zKkFqTNQc(ZI`kc?GU}61zO%Vc_?8Dd`-fIpEsU?f3m6P*AWXIy!5I3^_Hm-RTXL)1 zWW-eH`1qcf+|I-&R|8qKfb5f0C0BqXDX*+Elex#`p-z`pY(x_RWz%NB(Z-PwzgRX4 z0v^}<2iOWm?s?A#_h6sP*9z?EW}%gl8F1p<;hYu2`PAwra4XXBOeXN_>73Di|Dtsg zxN3JyO&1uEFWuB^qPDF&;0) zA5y6o)%u2^b`7q5@J&2B6?LeCUB|36FMVTOOf!yEy|;Xp^-iK==*uULOxR|6$R7umOh3Oq;+(?7xf|6uu1TMFu@V@?X6$L;W^c zetwqb_@}#zLx4E@KjrJhH<2#*t~W_$0jw4rI$G)MoGj5JX{)1N2G1w!oy(Nm0Cyml z_ny+Rrq%Y(s5FznwZSVIR&J=4>bHOukB7eV%n|pRC>(=MLty<^e8mdL?OPk&Z-`}j z{|9S_0#}`7bOL}=3rO%7blYGP#jKj{*di!oEpK*TAD(V0e8rTBV{oY=OU?|HP!ls? z4Ebljd}JCI+aFW+b&%u-Sv6jfCtW;dG`71RM3^hFKm^jbk+J)5)+b#}ra zVzV>@`oi4A^LmRyeVS3P5JjA^@gKQUt+r01P5CpeUJ`nD!3i&jU|!YG@!GC-q3q5#s8b8IWeo|tU0+}8 z_9ts{+UdqFL)uVPR&IRlrGT#AJYy9lA$aqj2Ukb3`{=_q90j(1Bsdn$VhyV z@B+NNAZX9G$MWO&JsaJJU-S3k%IF~*g1(eE>?rLiHhJ8=9$0(xXZjL)GeE`cO|fWw z1MqV>D^^Po>$P(=b}*FknS=bM2Ym^wpAkHJcff?GJcU8Rg^i`FMJ9f4FsZ?= z8mt8p&pVQZKNG?WT34W%#D(q5r3?3${nqdnL5BN4EPX0%a7JN_ISkhSpm*UQLtiEe z3ap!UjGl7FMDT$G9p!Cgirl}L{&7Ki?Z8$WU}~bz^SE6yXcX#KTvV7%ysNfevOX%g zv%c8ZoUL<22AklZ*7eo3?{3F@KO8E#0ADXu2CaJKri8`8{r!FAVXne=>$_`*E^8NS zYX*=I7;<;~4>np4$`U1!)oeWIM{XU>E{f}r%p9Nx;GD5!j*HYP^3ciDUvE|Fbs|O4 zYim7VF7bkCGyS81hT$b7AUxD)`v7Y*2+je!h4pWQdR*u)QoO_vGCBh>=<6pQJZ#bE z^E-mc)2+d}sLTP8QshNODZP@DNOpFN6R9sJ<(D)*r7$n5;$mRU!o`#1YLMc z{)8I=s3BDAUIv#_%LbJIQi%v-Vx~L|eQ^x}^iZl~4;luBcgV-de=RXWUuYg(OkQ6H z9j3qL3uGY5SJa=IrGD86fq@3U;=-xhX~(-Zk^W`+y)IsUMb#Z~r6(|Z`)3l5lQ-+w z|DPNsLtWUe0Z(YNHB9#9%a`ilyrw4pRn9FC)NB%w4Kdun)X}JSLOISPcT@$uRv5Vq zcCdR-6y@BS@77uhpSzkK0WPk&%an_^|4XvrYNOs5nb3ffgW+*{jcPAIqg7WFf!QIN zEgc_5rASqE-O~EFVirYURn*LTFz!cl6&S7h?agQFQB|Q7h@?974<#@UM7D1QH~5g8 zeMdH|R*uKGa}@Ha)XGgm!Fq3am!ibu3<#sR;}c;TjcN!$3@Xhk5XwmMv)5uH#}@N9 z*92CD(^*i}&u3yyJ8lLE`aG{0qS(N2-{{A?z1}IlH0XER)o6O=KVtOBO7!e!N9V+q zPdiIz*av8Bu0TI!x^#^*waw9VO0^189}sjpSztoNtH277zBQmS9MJZy>OD{>7;&G~1L52WKqmrJ}K_S`P%QxFycDHxA;S~e$3G8}GQ-^%K@tv2x8{V?29 zgPyQJ9yNbjuW`z0XE$Ubb^$?c*nAO6nWI)g)e(XjvO85)m&0KAn|J9a`@mV^e73DP zny-M!UYy*yO5giU*Z;J?ums*VvGx%98et~5M=?)#yIl3~#LftL@kH7Bx}0)zG#8$W zy)T%E08OkklW!n39?nRs5&z3Y)4cauBAwp;taFZ1LpEF%SJPMZD$6waJr@q!bzDI{ zY?!FrrCY(In=#WzWeSm}hW*9v2E?(gio%_ag$j(l?y$eLP<3HG=&rSVDV@sXIAG`BMvLN zRk_Iu+$0fv@pCkK|HO(JlFX3@o>n8Vx8&FNLi)3n&^I5=g-Z3iamh+FX1j*;4!Z|Y zV6Q#MUc}AW-nVz91%40DbaikWs>0yg9O4!I&Vce5^Qu34k+rRVhCz-Rr1|8s7O87| zK)k=WSk9En3op`e!AAUMIQEC}5mOhHDfP^3joo0Do$GFbCJZN&>$~EFCpj|@jUf|U zg{`U76W`3IN|EGMC?wG}U(qW=c9x-c=wWePSf3CaK6}nr|EX!bNc0o*c)a=^><*xi zy~zvb1rFO}1VWT?$&Qk$QDK&5Dv0mn*kQ)X4o3Wm8e^lDJIDMR4z!7}tcPw_PA4D6>dY;|Vb>BW%V4}z4a@sY# z%YSogmxSO?K=CEp3+Y;)7)hhv7oY{TgqyiK$DvwHSLoiTr?MCcf?UcT(4IW_GHR8d zMuUGt7$wrh^OQb7DP&luL0!7O;a&ap@`H%zz}m=mVeDY-15y%?1G+?nim^yZ8XI6B zguD9o;;t1bg$g!csLRy@r-N%3Q3Lx8B6+3kRz2Wansy;do%f@{VQCE(v=0w72{vR? zOLrT?2u`e{Zf;Xq38aeEono874s7Cf8qu~U!6 z<^)zVT)dC2v#TZ}DDSI2&)ix2Jh@P8$o>_#6;PnfF#wn%BDrx5Q)HQe6pZ~BZPe{c zsBwru`LS_|3x8bFi*KPUUnQ3ANlm}Mf1S@}85%fV`W9(-vIagaEiER0eqF|Fs6@xG z_i7EnPhUnU*06?1_DyL*H_y~fi>%kMjXk4SbO*=%fE++vgQlA$A4d#l^CzZkJve*Q zU=Zg=w>JxJrNI~}jI?P3_?`QtyZ*{ZFI+hTjpo> z>F&@}X0TkB(@>DT4%fNi!-FRz^xq-qjO(IEsdTQQj1CeZa@?O+z9C8|gV~HY+hBB9 zviZW}oQ?i@O?U)*N^fcFgiK~NQNX6@%8jD#kjCVs6D!jBi6mY0Z9l=V2m2v;@; z(<4|U%O|x;P;BjmPf26UPAHHe`;MP9g+emvL((NfHaekRF0Ejg=<>uq!bF|~FXgX& z#pJsabi?sueTSWsrYfgD%_coh(X(kd)`u_#=C6DaafpFdjLBvmXRz+?!J>=NgZ4Ji zp=q=uA=NC+GV9kSw>eA-PsMyXrE3b~o!jB!n@sU=C;;5sj@NpRcH=o4&g8Dy?`D4d zY%+&&L4wIXfP4v)<7j48i*Jw&5Z6p4ZK*-8FOiV1z&X7`-CR8ssSJ|z)bp;$wCsat z0q-HQb9Yee7xwmterImhFp$MB5^q9gh0kog#p9(BO(^qKi6YM%t@}9lc#CesdC&EI z9*k1meSgI>X8?qLd9{&h^U&yOY3nCD-;#z}b!0fgBc9{C`%}q(qeYQ5T4#rE=d86+ zoI6a6rRSr(OajXg8w*f#xj*i{ORTKxElPrs&wdhddsAS`+7>`lh#|oh~<#tNUp2E14UESX_oR{(J5W zNyXFAdN?oG{^ng5n%`Mrb3QETsqgeh<0zbl#wqV{_wfvyiULgDy&ooH9_i@q=F{cf zQ53Em(=&%HpBY-JfG%F3S*L`W283nh)|=evhmi`*qIrbj=i(`+O+G56cu|wlI7J6K zu9&B=WrlsjJ$7pZTQZdkQi{S2^>iB5-w=-g$%+ZUv4}U+(-+w3=Tr6-V`ebB8t~HC zxaSeaT7@v>dpp|^DA%X{=R%#G8%;a=d4dLw1r1vk9_<0IrXNx?V76?KoC~It@^Ko5 z;*Ct-R{xrC%W>P~8g%-i^9X1Usi3ro*y^gf{p?~1bXVzN7+u>$-|p-`nMD zn77ELn97!NS}%G9N)`2JRLhNol1#kI`Pe$H+t^3u;gxU=P< zPsi<)!(2{jxUI;_1sNYYSIqW)8P-o>Mc=2UVUh)%kk^dq7oEi-n3}K>-_b*$a|s~t zi}XUr?7R#{ypA2-TNyt2a6@Hm6ZjnhksE8y&f`)7md$eZD=NiX4t}dT+zf2GSTkY; z@ytG;bU%SJplVq#r8A(b@ah~RPycv%)0{UYurOrfi0Y|qr~l~eu=(V*b8v~?OnUNE z?3CW0et|w<##H3gTdzv4tT&Yb>7cf!ug!yR^R63WwD{n9sh3zJz?j$M+(9CNCAU&d zZQc6g?xft#T6YXF0@MoaS_40(Xh*^0NIV zxxOPt?gzFdSh9O%Q{UAI3L8j9G^cHGoH}I2as?|+NT7}Rc*~XG7*s(5{#49H@9-1DV9$rX!g*MFu z8?u&>Flf%|0%cK?R5k?{sH4ML#f{f_G9PMvJZsdNM|E^gSgG0H-&j~8;7G<=ge`}) zKU|cg4u76%ba(A?TLq?;>SEvFL`p%0%6Q3ak69Ulw2u();G;Sa-%aRoAKJ=YTy;b| zCcMoukK+omHk1)`zdiz~*dAo~F}_5^yc}mcn_v3HEz9kJb>G=3Ud9OBpeYZSH3m<( z77WRYhpt}^^om4GGiMki<^p&t`#DBcW z(^EQ;4bj^>Z({KI$L)7<7^Sa`%dsWd)sCx260Hi*e?H#i7kH1Gf%XMew#%fJXi)*A zcxi{^1##<%EG5X}Z*zT6H}*{ejctwY92Yv{3>P7{gw1<;<;e#i z2ySr>y|=sT3(g~DBIRVF`b;S?l9z(krrij}@+s;6Lu7dcKfSJTlP3q!~;dY2zTCLtHpQHIoF&kFExb!P35?{aSTND4<@h@44VSM?JG zwl$q@4KEH?{BUO=kysuY!YF=5q$g@8q9pAlk$BPI%t+_CzfVveI#27`Srpw z2*6+MvEC!I{hnhqqRoZ6%)l5{ZB1rQjT>lV6Tm%e;(FdHvx8WYH*L@p#rd`@mIBS7 zKjJ6l#87;^c%tV=R&$X?=93C}tJZr2^*T&6Ks z3IZ3v_K1=Je)a#^S-f=rGi>s5m(ipOr1ra0Osb|WAxOp2HIkFn8!`8c{S8)=cE|?3 zia#_Oo&(`4498TR*f~mHqkKec=^*k2r>%lv`2gyoLlDsH-9HX7i z008@(=pd^C`T$G%K35)Y1TbI z;HP4JiJ^f}m?C~=J*HtXLp$-RHR(6ua|J-Bc|dQ2%SGp4_rs#i5C1^&lu*TjelEu= z@0WHIhx>I09osx*FE<8K39e2snycf*`lyD>Z5weNA(FYueQx7Q($5a&;2W98NDv6x zODIXJib?KU{WmA-s$P|ln2i_YDCK{g5%-^TjO2wZFaPA8 zrg|{;=$j+liKDFN4k*v?~m)C95%PclPET=%p%{e-R1TDnR63dQm3rUVGi&@e8k9urEpAV!n-CI`N%jU;ggTudZe+ znRqD&SE`S*4ymrBQsdt?TV*g3etf8eaC4m>m%8E`1^j27Va3l#Y#t_7I;?B4`7V?l zuvpDs`()!xqXv=!f(i>#>eM_SAHX(&WVK?QwKl5P5fkpADnVG4T?&0yCoJ;>$Lt^X zI6rjnY2!N2m)5u>EqxZcbgw=`ALTfnkkc5<`0iAALiIjx=(#rX)wtZt-gZ15rx#?@ zN}_{dH3CbvF(>pLNR%x}mnY{O)vgr6znni+Y|lPD3Ds;}S%T+jnG<(E-BTox(e4h| z;tvjGLHun~^s0kXNjFj;?CLpXQZ|L@ z$%Yk~&}U1W)r`(5ys-?`iV@Q@ucTId5|*c>zY>!<4Vc_+UY9gE=XTmm;A(Lr``=Gs zd;Ut^1I=$!7`G_Uju5@ILleBV@lH7uLVup_Xgz7aO_4KpnQhPbNxJ9`O+&)=)E)S~ zqTi_ptT$AB_;vad-;Q;k7xv8q%FWSQ8}nqNUKM!~Z-?`m@p7Ag$yTwZcziAzRk=ER z{KY0^rNaVil(QbIR{jY32|CRQT9t)IPtU1L{=M+A)x7Tj%bBr+Y)R)Eah5IkO#Bg; z8TNcy$GrDPXag1=mYNk%c#;@`rH<53D3B(XX$d%LF(40=-uN;3l!%OZ|7Utre4s3$ z{6VFd_hpa!LU+%5wCi}<&F$vojYfk>U!i13YC~YC=)P#BDZDj>ha9W@J^S%$x89i< zey(Sebh7ukCckJq(#~MP1o>^vR4vYj0c{8LvAP109pnq$OUKB=wMC-v@!oBiOy!3# z>`z4wCdjwjxgyj}IU+(6v_1F7SZ#@yPj9i;g(DYFI7%JapTDBgcW4X0X8$-U9`sPo zFMn19^Wb5M|2^6@j-A%qb3s&mtOWJ;%`x28*dhkJ z>iU`#A4zC-{bf6TVt=G7bnO1*J3U{=Qlz8x_N)bqa|7e`=?&)9@tWQHr=dZvhl`M+ zA-Mk99w}bHLi+7}8bVhDAIfm1^+8z&{esgcfLQfLicY$cskx^e-EeqaP7lR9!a47N zYjP=YiR6c2yY1y#f9UskyOlS!1p%?T?^t1EPeir)iv`S{t~rFXtMcEtqW_8XsuGzL&jo zDc0k*-x){r@UYRlfGsPc?f4xcJSUor>F1(KN zdGQEI_H~oo`RzAftU3U_14xx47H2^i^eN}0+0D%YXw*swQ>6xWiS&kOG|OVsw_w$? zp0~8L7^3a`KtN%`Vm2I&Q!dh&(n+XBbH2T_*C2?se9sZj-!jO>OX~%va@U={;m5fC??akUpu_}9AN?;4XkHSC z!Rp04J2HRd5b_t_CRrev0{_y&tjItSL!olY*j7$x5?9S z>H(KO#U5U8Kt`7F`bGTTUWhlVg8~qjooJ(mKb>oa289#k0){A$(C0so#X``s;jE`@ z{?B_Kpn#r@N?7)f9p3sZ&uw`U-VQ-hXP4aWuSf8L7| zAWSRknJhJc2YE=2fpU$lK@^puBz&<(%}XG!4YdMAQ{?{ks^aj|Q~1LH{s-eFV5B4g zht!;|Pq%=`_X&M}vV>$fTPEL!LORZCrpn4}37C9|Y?j;9oL0NSVd3E306}K3%1WD- zj)Mbp!Tll`{cQv(+`Q`nFRk0oIPLA}h^!iiX083^VA^MNKF@m|;H71!O#*gk;1`#M z5Ap1@x`+6wqg(e2UPioCKKFrE}na$O7*@nmR}&qr?Lzut>$j zAV7LQzKqZ7@?|JP%xp=&J7Q_CYGJ&U-Ey`WD4pfj9YI*YSf)zav|Lx%u zd>*H7J~wAO-y3>U(}es?b##c$+eni$F_@XEUCyY0BA5>DbP|`t^D?7>@#T}%?$4sZ z*d{t8PinGlE!u++G9PcOdfi7_kV~ieWc7*9pxl4~u-+UbqNTBro=%9f#<M1Eb9b3*^LZe#xO)+0d zO=UWxT&e_=1*8KHwc6!D(?bVf)XIO{TJ=6uPlB6JqVw|^EzQEy<77he1(ah=BJu^i zV?5$Y;~`>PPFrF4UdLd!jjzD6^#u4DMp}>ONEhUE0p-vJ2%L%^Zn52t330ccy$>~U zB+riVC>Nr2kLM^C2y~B=sTK-#!98sShS5BqHExwgzqSwp{t&?2fU41}<1}FRQ&VZ| zT)mMl05dR0J}Us7ZT`tx3gN}G63}%WV1-pv*(b84M`3<^o8$tY5saExcZ1}wE`fa$ zTPxH^*W}rgHeALq*Q{CQ_WjwK&tSos>C{y9@G42~v)eA9M7oyDMz*islU`6Vl6(f! zei_`x(dA$SHmi9AXMa@*7*d%8G+^{ET8}-#H-3so_|4{ZTmM3vc3dQE)RX%dd^Vtufh2m%@m$E&7VyfQNY(MQ?NEO=egS zd-+)8zzNXkqd=9}7o(VV)Da8cItXl?|P6kJdYG%In0z>beNW zC%}5L;usU|eN-#ye#%BG_?BJgn`fmFVe8vpDn$%~PowXf$V^sYETpk8i>t!DSHDk; zU22jD3WrY2ltxkRDThvQLy>B=rF*!aKG^xk5{z?EH|$B(!&+TEpfInKB%|35ykH(z z6t2I&EB5S^#73!;V`T7nz}d-L_(q1TQ#jGxB~TQMZ)G0&cwHF>tpX4H6-M8_GtXlX z*TG<8VeXjfe=sk$MULu!<~rie!W3qf*|{?z)gNhA(23I<6y#m5&D)^G-Yo_l&_Af6 z?6~9AweKzZ%r^Lp3k$1S4W^6tUA6z#0>;Y_e2lC)9L%5n8^8`s079@oFo^#P8Xol}4FCxG z*Scr_APz5R1b`(F88AUE^k)`RKKuOlDf%C=lt#+0-|WRdeQX9uglKns zF+(hr!DN_p7wk!(H0w)oF+Hf23I!1_9c;AXafer$pcaZ6pU*94tXQ`_fIdoDnn<(8 zRwUmq6O@Ed+XDB*h(i2dRO}LSItipYBeLJhSc$!80C8f11MMtQ%-&AkgD{z8g;+_~9=QxA+QrmX0l} z^8h%(uy+C5@rZO6+)fZ5^8!!ac#BGuEG+sZ!!p(F7;gBx zY_VrsFMU%G=$sx%Ce&sD4kB7U1Y`8#i1N`by{CDvQTMSA-4p1Gv|27Ap!7gVdi`^N z|F^LdP!1T4PT>jK!k`o|O(^)bwV&_LneBMH-(Hr01NzurnHZ6(aPsHCrdTm>EEck5 z0R8mo)bd}JH1F!SkLnunFZ&~kZ}1p&xZaN8#3JT49p#l>uc01Yk&p6<&`E8fN(ofy z2jgZhNSCO+22hBlQe#Wza=NJ#2ux(?z;CB_gBvLTs#%VJfHV`)Gb=->paqhXvUcYG z!f(K@Cwr;8vH_CBbO!}(5S0A{H>>-OJJh*e6yXOQ)gf3&HD14KpkWIz_a0QYYVe8G za)BGmQ~U{bYx9Okka7h_iz6T)jJg;&P?YI+e;Uq`+9A05%Xg(E^msX?$#P(_nEwEf z(*l0S8|V*PZ_sE|2GPf#6sdKQ*fBdqzS{k}_S}0C)jEF?%~2}qwa$r4>le7nAJBq= zf(#zFPU;$u;a7*3@Pu7Yk8x^CVi;^0?JkH&c}XAlH&o#Eu=M!BUtdaL7Hv4np`~eb!nMW~2eBd1CTn?IwJp zT-YvfP1O`|@HsJD3U4V3k60F|d^1VcJ zpTEa>pY+?8*cllM2U46~v8(H|3GJU(0RHvA9`OW_wel2?%l>N^xU-ehN6OmntgVb0 z^rmKH>U^eVnXgBBobxagq&xw}_cIyWc2xI3Xk^;ggn%F-di*VbKe-v0&%o>;gEC#} zUw3MX4qz>xFY^?J9Y`0ZNvMNio+0C#-+pB>==o;1(O(JbKbNOkOPMr6aA@Crg6;@a zo8<6(k529m>ioi9ZP$(!Y2pB{`~>h{YP+8)Ru5dmIP6c&>{Y*j-zBfp-?x?|6w^P?tW zCmhyOHY~Ck(7nQBkeJEsxNl4>SNXP-{cPt+DPvs}?ecpzuh1U-#%vn5i2BDAEE-SI z1^?d)BA`WA3pd;9j+j@U>nc?8{Z`fg%~U!31lo$YH&%N!{@x?RA+#3CC_|%1fw>+X zPlTJMpY30x`(ylmVF#r}&!!g=K>26>06VFa*U!xovX0ZgLp&q7Kna%Kd+EQor5Ea8 zYx&>t!7zpn%DFge0H##x49WUaxPqi&i-~|RTIIZQu;JGnv=z3JMVzCUk1iSYdWlV2 zL-P=57K}#yxaPB-uo!e&ZFB1Enwt8VSG{(-k>B5bE{KPct5MMb&=DHs4WTRz-w9Nj zJb0Cg)zT`i0%MDaIY`?q6eU-8@++=(Yo32IEaZBvkR3GRX5-MpZZ$tTee2r*V}0KG zbhg3y=a`6Syl3hA+;Cbu@_Myuhy*r^0Kj&O#Hai=vo{Ao)70hOfMUcWunt!I4#bFL zdW4O&NM3N3K@&>(k{(KIHX==Rw#eFCFT3M%IuJ0&q9Auv8#h-N3b!!;8XiOLmh1V21UK2;V7x91h>oc^#1 zTfhE{eo#c{)sn)>2` zL3%A3K0WRC>C>md5-H_Eqm8Y^CtijJ5R%gB!=wqI^ei{mc};S+HEW*Ft6{R1C_M>biptURsWGO3tvsv{FeiUY)(Q*^0wayuTlJRbaw_ggPwXf#8B{;xVQ^qMC>J^QISw=3Km z?YzoJP9ro*TKmmgiA&F6T!T`h)&v77npI3qz}68$c0$vTv4QBRZ0}i2jqah16)kCK zy<6g=N72XYn`uH1MCvrOPWOi6=nH`u4$l4x;kS)gh)LZ>PD9 zpQ_w+3d$Z%uCIW>A8gd5{)MRo=|Gj2`yAhpIW}2vL$*ry{!@F7Rzq#46Me(wn%QWF zci0zLti0)ZZQal#O}o=2-pf<7PoF%}CT};GE^}*EfA3{Ks33d40_J`rKhe^x;34Z- zK;v>v867}ZLl&Z3q>14<=lm(`fTzxA zaN~|ECu|zo>|RA5uE_q=BdWtiv0lh~@|hh#H-(ciHN9!}HC`ZFL??{>3c$RJYY)W8Fxy~192kBE zE558J7~My?+||wfdU_QZm&d-XH2wRB?qQC1>G*?3BzE88-b;QeUJw;}5R1E+VTqIs z(qsfoo#0(9tF^hRP(`8gY`mG{{_&I5!nzlA9}k4)>z(yr+A~K>VJ(HOp#-XmWvGTS zbww|P#?(81xOD4AKG$dbXaBLpNUShb5{ZU#9D0x$m}7d)G+TIc=TmTnqtg{;MJ%;k zdD--Ek0T-#(>kI!0kKd`;>7Yzd4NPKW4791#g~lT!)mA=&NhoDO(_+_Vdl(HvBk=> z5${Mos&mq2d}oLs{NRCYLln$Fj5aiseD!m0*JH&Q;`aP_l#PKDkq;lfxw?JG{oNNh z$g2LSs8?zE6XuVWXJVUyvW%JW0pF)51vPjByUr&s4l1&3WQ`>wC1SBWe0l|yT-5tM zef|u%x0m)N*AZhHb^-hrJ4T)9J}1c$v1QEh-_eP#-{;_602}9XakvHB3I=uFqriWJ z!9}H#8er~T?TUEmy~Sfb6OO6X-eY=`?HQ8l!-LpuTDe|q;Uxcy`9d@ZuJ>Dd^beh# z$~aP1);>V@p@fZMa57P_R%nzxr&eacE7EH6FU#}mGp+pC%f_R$M_iOJDzh#A8#v^n z0A$Hyw~k=&c~ zJAEaGuCp;>X}ox!{GEE$J@OL%L)nuFlFWnE%uy1U+ax9)6nkb0?rP=Rwt9VsQh(@q z^78S6bESCSvrKrA=85vzu>}V9K;PjIDnuOD_b<0L7|YXi-x#Il;^d z=5qA}Q7_eylp*Z`@vw21+!L=j$GpFKZiBrpNPs%xeSw3*y$>`1kEa2qBNYG&a_q|0 z^gF>xqYLG#Z&e&)FBs{Zt8Ml|=RTw+|As1Z=n~okcM8!H15n*SkScN%_yQouRG3CF zAzJI2laXSQWH7V`F38{C2!wm$$e}soS?g&AtB(NyLBD^;)cyNsQh-aV+S%prn%4V3 z6nQMUR%h}Wp_2aHz9)7fPMpdQlJ_e*B>P3pasD6a;N+#>(!r-DJPaRoygaSecY*0f zA8VtVt(VTm?z_cFjKLu|5cPa37o&u`{j6CovNG4Z?>AJ*(rKs2il^msb`a|t=h6Ce zn}tS2YQ7|`%;q-uMW(!GBC+iD4d=doy}_c5@u@Z(t5m+3v=nxuoxxH7aR5+xAX`2+ zKTsM8yqsBJ{W;j6yr`9XgSD)CFAi4;>DbZ`QQYHkTE7%x^xThFPIGt>uYhFs`hXWY zP2rz~A5r|Np{(*q880=qB(=wpp{`{??qh7}r;eC8+}|910jg14Z!OWSH}WV)A*lQz{71V?<3@ku@;{9&qW&$U zDouWVc8MP9`4D3iL|SDRuV9a8F;iGZhxRsweLV`Qk~(SiJtaHAM-E zj}^2Z#04n&?iphgJr>Up%~I=b!EJ0(y9dYY-?+F0Q)i_WY`>B)CyXm*EU2(B(uud@ zp`~_@xF=4}ei&}>Q#L$}UP&t~eJy8?T>>SOo%-9?WPu&2I!S{ct0T@lkoTMBgtx_Y z(2-?pr=6TV+|OiM_K#6k@L_yJN_IkJ=2i`E>f>|n-dUG61(U>y)ww)-<2%e0OL&^8 zj@j>wvn{;(<^`jrBuPcpZQuG8bieTx9ZEq(>3Z5H!4Hk2k4f;UD(OzLNik;;_ zonDftM2ORopwE&ppbbS$W%W)*^XNr5*BdD6h*SW;Y5YZ`QrH_tWo6};d6K|(hfC?Q zMQzsHwhQC_6umVz{$f=y##+_XKMYmQyLLS^PB{4mFani`P=Q)5WYKKC^{2FGttv32 z(_`XF8_l4V=%MNH$v8{JM1&WqeUPk8zFcy8IYq8h-k6(P<{99QrJJSn3>wr);9$G@ zM@xtbbR8Q+^ewLOQ_WnTTcb`>_2TIi2PdPu@si8o6L3J zkY(iu%h@IaZHq4b<^onF@{w)SrKWOfl_V8pi<6bFoH*R;vsJx?Pq}kJLqh|f1ik`+ zkw)M$-0p97^a`3^W<3!;6j)?$4uf6fsY`ji4vmy{E$XE979ST;Ojv8a>9u7I4W25r z#k$^lxb0-E<17BZw03J%~ZkDbcHJ^U}ZQA(ykWFFfh%& zzGEzRDjKsB%?jjdh$`I>&;wH45$_AjN=uaJp75MRCSkfD_-*0XkR z;g(eKGE1fJ@P|yBmO?ObRS8ErcyFd=d0}&+j4)TBM08IISy%SC9sB$#gBb2sI|BD@^5G1eIF5kG`v&Nd853o{}{xSyo)U`$^3Lh zw@^?nQbZO>e1TpgdOAKu^ETIol#HUpkUKn4@$!qyf&9yf^31x{`()9a-z|sHVS10} zm8vi#sE#4b*tM$RnAFS?vNZf&zBNS-J8hq!^ui>Ao7#P% z&`d6J5mx-s%z*%XG;zuOC45$7w9+b>Wy7_$GabvbDf?{@CI@h$GsL3rd4EssDbw5B zx-CZX5EF4CV4hBpr?~<@30|NdR0sO-O{S&|!qAWbSJ z1z=fX5JyAg&O}Bh%=Ls+AvB=0v~=2@e;2V+oOn;JA!S-$%}53k~cHp4;`FPhUNA~BB6A{+Y&CwZ^Xx-WFjbqz((H^~N>=$?d+G zAa?Jm#+(kO_1+9VOz_q3MwDlSbk9W>V$utH50&;lN58n(4HHZQO9;AnN}w2hGEd1b|Fx=w1N#6jd-lmdS5x#hvh&i9>h?Jx zLAeAe3HDkk3Dl`xwW>W7({LbkCRJ(x;eoIj6WV5fO_O>|#^G|AZ)VQJr_Yc@vm8I( zrI$I5`v5fs#~-s`f-VO^8tPAjl-< zj?-!1Et0PSL5P=~zMbG~?(eL0kyFHBM+SubyJuO;ted?UMd8Eud`b^+MJKPhkP@yM zt({4K8qs#o;=IS5$n5)T_YU4!19Rpn=fN`4{sk$ORcHfQP9Y38a4i*IPo>0O-iVvN zVNn0p*4Or`i3}Tf;zMtd3w^-~XzcIrzk0BK)wDjHO{%s;{WCW~y58dhQ=O0EN$XML zC-KyfrtXHlnQ$T9_7^~kldy?*+uHPF{n4jJriXou$>Xr_lyQVtetq#c*9BhXc|2{q zE}RMhRrM|QjQ%98HH|OU*m2AeM^@Ob(}TM4v>>ynMszoh^FX_M+cLj0a?5@i9UXx9 zG0Tp*c-j4;4@l7{69QO{E+>y3^mJ2Vsi)c79*eVl9j^~At>f*}=4_P@o^t6z#!}hH z#L#V*BQJCn=2h6?>MdC%!smi`(%+EWJlHiwwo98$57sx(t@;X2!LG1{c&z+vjjaON z4<8kz9^%m>kG8N1$Q zu0XT#CO?%`x6t-#R|jcpB5$Ko!CZP|T1{Xx|BA)T8o{`1{&`X!gtj?2QY}shrnC8; z>3GB$@nh*e8*=nhBK{Qp{cRJ+asqzN-&YXmsmiKKm_@5EeJo6)d7SF-%&Jp}r^=Ud z^dUjY>foNK*!_hSl;3$gYEcE7H1y@oRpzO#a~beY!*E5|Pmje8vkqe~W@<=!lY>!_ zMGI<_8;IkaHapLr3TIP1$4+}28IPTM7icdWz{T_q=hNoa)q1c^sB)Jo?pzu1Zz=NC zdW*>ucU)!hoJ~cgDeI+OCvwDm3}wZGeR84SQ)Hak;zUy;Q)_AGzc@YIyfKC8$qCDF z+RwH7T6`AdVl6}bObxcc`lrlo&QK>!oI1H*q19Waq&h3XcsB7067o_e?_LqJee+(; zE2U9}o3fs(8~_dtw7xN8iI3QibFKCnx?3R))Phd!Thl^XK(3TszHM&P*>qJZkMNb( zL7_{^`h$+A(LcK=Lqt9Bm8=p7NJwnrk##Xat#R#cZ`wN|p@(@gY`sRF0Aj{!iaaZ0 zy$|-#7nFU65z`>nk^MLoqY9`Zhi3w7sYWuru4wMnwp)2&6l{9&i-2F11*sIn<-vv< z$2;Ri*#S$kfcOqGCmQvxHcqzKT$t>h2Svi~k4g%kMZs}3*QCpW|C1L32XV!{)S_34 z{$x*qX|w@Z%$G5jiPFeFe7YzPptXZoQjPvcB8VkQ1T~YU|9*u(3sEBY4%2n%FTL*% z1LS-sSLcJjWK1J9Q6f05X&d{OYiSe$1d7cw8#!VP`|C3nM3e}wW?|d@ZUc_-FkS35 z?1lf1jDA%O90~XQ0<-?R4Wv%K&xK{f{u>PeYD`XWr0Co4#S(uegoH9d6P&zIkIhD=)lmy~UkB zqsXb^PZFT5;t1*SI7!C=8l=ZUj@>1!&fVlYYLK72ee5naxPzkAZB4DHm$o%%h%F?|(BHl=T${`B1!>Gak8-QVj=HO4c?FK3ZMS%=9`txhZ<%de$r@uHa|pJiU(sn{Nwwc<|I`m{fI-qMsB zhqXyYejIS=U?qRG>>R(vx5}^m7Lmwec=Afav1Ztmh>tGxL?9FsE6bN{)yz%+gE2h7!O_Kvms%9_ZUYRXba<3i>NZ8`G%cmvQV_(GXfO!dvhpQ z@Ch2c@xU7j3g$yF6g>Eg4&EYJPyRjnBt8q~-_Ov5k0%N#3rk9Zzsg1q5QvSVnXS`n z%+Y>O)wH>ahLeV@47ZW3HKT#Cts#Wb&D!qq5-46bZt&3>;$%SVW^HBT$nC~Q`u7>! z;PYcK6DjfEr#M;ik!r{)5DVKnK!`aQUo*ZYoqX6b#~$-C4Icne}DedPKcZN?>pHz{?jecL8iweOw5e0nf_ZhxRm#?lv}~v z4PvD!Vr~tF2i$|7g^Ppt@ALm}M}FV&k1I8PU&+Do`p+x>IP$+qGAR)#;{eE@F3f^*U8F8Q!L;rp$AdY4k zi~m_t6$*tSmHLaB_4k!Apyd3Ii-@695k|A>5Q$jh{-_^RMD%|u`aMklXN>;;yN(3k zraFknUCq{-A|NAor}MbRkcuMZ$!8LpPZWrD20kxk!Lv^Dq~+qmA>eUgQ{CO$3wJ-+ zN{+&P&FG)ZYHB!DqDuL+*?BJ*4h8RH6afJO3QAA8c7xr?mMpK=<%_Q$D1<**%}&bS zUf$kqo88lA!b|B9-JyyP)8` zX?IqH9Qn}2vTro#>bst>mlA1Q_D)~jqyBEPA8eXb2cx4IORMf@2S|8to{Y0H=*qtE zyY=44?^Ol?-bh9?6 zK}_$s(Vv}|%B0^Wv18o2G?>IBYwyr%TwbbY%#azMokXu$L#)^0Mq3Dutk2b3Hu^ra zUB^1tI4lNQgBgz{7JA~X#%`roP*$68_E*kGw($F3D_>yZ8MLw7k2gZ&FP2(8zkhb5 z3Y>2~Yzs%HkP_i$f>%sn@ZRi?C9}|H&}n>)ghd}B5{llMAi#kJeh?54I`XBHRC>ov zKHKEP)$uTX;I!2{{ke!guAfi86Tp(P3=T^?u-=>>2-lhnttmY{`De@UGeV$76-(U= zXKD*ks0%+;M1B#zNsD?D0#=#G{$lftlh1J4o7m%&B#ORBJoYe!2rgwpL~5} zZR~8E1lt}k##%$oU=R^{>_VONqGrl8F^p!PVbQzMRsJ}ikQWf8M)g(pk@iTIyZ04j z_8{|lxVw<>_%UCOgN+u(Y>>gwYt&N|ez_4RpF^)c`wrdyXiZf4jcf{=J6*Y9NXjr> zs_>FUtf+UL_U37mhfbmh`M8y49qg`8cMu>9zqFgo4t`D) z$_F09?38;cib~A+KHPD>y~;LXmOR-SBAcSPi+ua{>J@wy{FB(2B=rHdo%M{f^u=rNpmd0*puz#M0^(u3<@fS zi+aN3JHmj!}KG)gl}N3(aDs{LUK4AZdc&*(U0bcY85(&Uvsfn zXA5NUkqNjl+i#DB9Xs5$T8XhhJduWwvvX`s0iFGYy?YQcTn$Y9zKHd5TP|Cf`Dw^z;+45;;=C zYvfc3hS;LjBPtsPCZZWr_0=J=S;grrw53zU-qIdDRZ69?v9=6)H)_+LQdC|uHQO$? zQDTjc>`oSA(6pcG%6>c96{m)jXqL*iL1=ZEx`I){o%9k3yG2i(e{==Fqej`+2{4{9 zqyFO}eg`H#)xmfoXrDg;jTsV|bBr9JWn3pJR{McU{yBtORhIgm8d4h`v1>I~C%Gs? zmda~f`~LF}am#NbU#ry$0`m!R6(>YE-1@1DLaZ*`4_hxtKU>BQy&4PM;#B5%*DsO7 z@)F-X?`U_bbPS?CLbG?cBz1DsN7VkZFghlZh}rry21U#xc8K9R68}1q^Ml-XTCoQ6 zb@}b#bdpp)O1ZQmrd~|72$pc0j4(`^92=R~F)oNM{cr|fsZCj|qJm?n4XpYtpM`b& z5Leh2{GDq$u`F|=gc?Gn1Iz2-i>AnX*AkpHz|tmg^!VM)BNLd+u=bsS%JgR9$QUk&Zcfhf+FC{Tm_^7Lauez5y`kbMJhP5(NbM%C zxmnOT6|1~@^9F1EHDxTpfd^UuV}S#tug;`fa;e&=&+y{sqOC4G^Dm$KD^u?y3ymvw znB?7;rt{}mvlKQv@IjMC=5zBY*F%Nto8njfr-;FOkbUxqeLS;QO5I$sXmE(JtKwF&+6GalM|Q=+E}FJ8WMw_?ofm zc6nTXE)<-uVeO3NitiScV0{Ko4MV@}KNIsB_Hkl>52ki^^%d^vov;cr)=@DP5o9sD zXGbNuWJ=yBoFs4GkR6vPtTclQKR$|_{(zaN8l5PRIrK7VGQ3W`K;Ot{^v6l^`yoz? z$qHTV#R#Je#u6i3w7t>nfF4C5<{V?zFnY_;z2behD3vs;0mX%fk86}NAK#75w$k{A zKY>Rjj8LhK=;+Ae65tmIkOWYMJk_hTq6--3xk4Bq~Fp}&Zoe95f@24#L{-bQ9 z@AW^AAXk{6mnSAYD(|c$y>iEK%uCa6b8O`@;RDq9-8-WA2@_(p^^P@^@&f1uRuW@! zxLev{s+;U?Tb0QXHX;hjdSdmbq`h;dncnA#>vo#9)VWPHYQtXE8T{>7ST-KXJg$uK zksQE2@aq+9LXf5w++uYX#||9S7iL!GZQG}?pF+qK^44ipOFl;RD7Jbu7hqMwF_%Y99fw}P;LaxT*64_&Z4IUrs#MCu=+iMSH@%f1iZ%5{xAAI5mC$-*MS zc4uM+xHTl1Cbo{-%pJuF{z`kL@G7$OI>g`7d??pyJT#KJ`BV0#3_ElDIU=h4S8}-Q zcqV+;I&=F~+eqr+3zE!_dCG-y%oMBc|Jnsw=w|$QkAqwmYGbNK-Vjma!a5wvYj|%N zo}M#jE>`+V=J@E(A@|qCdM77aeMDZr{F}(M4j&XWL^_MnAFcP5iZy2BN93eL z=k1;hz`bA=IU`NwH?ETrncfSnE)Cs(g$-9@)Mh%85sNIvoM*Uat3)@Vxy<9TU!{={ zv1T$5|8?!niNuwEo$*)neu=U++wh~x2k3VhBN=_2Ex zP`Fc|5z_8k}U@_a77!X)I0ZrD_Ze^V-WbUqp}iisU@ooyXq>?$;$%#a||bfmFK-k3`b&(m*mDsE!#yG?U>g)gQx z_uWfeJtKm6SKK(C*V;+-`lH^rLFP=YL=QEU7)$3`ifWKX*= zpQyk7gL7A>3Ws3mvdq;(>;vL|L%amPMHH!Aj!CW792V+whW9(^@*N+9Xz*jH|B1*1 zpG1+oOQNyuE9zB}1Oe#3uLXaA2)Q;&O~(E%Lzd~tZf-$Y_=%$$$8K4ZtB&DWmM}T6 z)?kF#Pnk5HFP%yo8tJQ`YzX(?YRV`(*yGj6jNtxx2>wQo_@L$7_sn0*{Nq&r9T>7h z4H2zYPW-PC?o3|8Db$v!~wB8~<2t7a-(y`!$_>d9-fS8Hi}x z(@eY86OR48-ZDwcdpu84vB}9?y|~lk_n3DWA#{f;bWcxTUR|wTpY36VR|_9u4Ms|D z0G}|1-BOL+adagL1l`M%~W zelHC^Cb&Gk?vB&*^WF~>(vxP)jP-SM4T(PUpRB2YS+CG*MIs_1f`x-i8Rz%9RFDn^ z5qIiZKtRA$>?jE4Qir7l>9obv{{+6AhJ>l{8+P11}ev zT~S%i2(Yk%!3n9u%>My){`32V=MxuZ>b=S0lSCuOSs60JQlk@qXbAIr#MXdCR3R36 zLn8b96_+200TANwR!~c?Hr*an1ps6=c$I5?P8 zwL~Q*R{CFC`Z$<^3kcsK13WgWef;Vl$R$;TnVVj*c$do>h$qSMB)xGo`R#4~-2r@r zM&p5bIPc_yKkQY~8~^0Ls2eyR`O)&NGNHXB|BXo-JzBo~J>i4j^>zFL77gznT~X+_6@JYD4DSD@ z)g`qJ-W+cZHoBisc6N2?ihZ4#!9Lcr1z=jz&dPq+;bQaqtSsVw{7@Z=qqQF4xjJ*z za}ex1B;d(aauO2@LWr=iwoaSskuWHv@*FNME@pCg@3pT%yvJz=>{`+%c7O`?f1r4# zR48|##FwUdHC3uU#s9F@^UPEYznIb1*0z4+akVP(qJqBfi+2>m~hfg4Oh9^ zVH2r8a*;_{Do=KE{cX?s>U8T1SUA47*G|PpdMAlLCO_jNVKeT(P2bl)TknfzHXVLN zug^`S{pmm`F`_tz!O_9Z^RtZuvCPhix-GBR=z(~Vb~BPz-L4}(SiISp9;?@AF_}~%{f<)lzOK8O z8THmkW;D$Sw&8MOq(mACYYQs`rlsXTS9O2T6E~_V%hJu|22M)7G*pfuW%cf2dE3(4 zNIr%}l347CoafovVf#ar&@!sXRnE?6ezE|b+EIXf4lFb6k1|-)%s_)30qBo)mn=W| zpZMUiK4;LXvr{{JUb?+MTYFh^QOM=>1FESl35Eb~yR-R?GFMq!BWBCtrS3OvZ`@k7 zr&;#vVmQnWW!xz*l4>I2O$Xv>a7Npi!rJ1V=%zx%*LP=Qx@U^pS95xf*vMZEa_IHM z=R-Go@nH(Tk9?cNsGBpi{+tT3wLVeV)|*(ajW(Typ-{;1OODy7*ykrgl>v0i%r}v< z-6>{+Z%n@e$7(feO;%5Q?v6+;ZFp@*af|K=S5har_JxK02ufE=?d0u_xO$QCA1yw< zxPZmmCpI!2t8kmZz>ik>$nrLN5={8gh7VA%;tFQ(|i{I5w?Y|+}x~BIL!(pijJ8a}VLC1A^LzUAG%Ve2qA7cGnd)Rwa zq7rZZU%R3*xH@pov?kTQ6fTVRN5N1*cO;n98nA=v6~g0ra4b*C%=U6#(v9iiT1OVm zB31I^L+42tiP~V3dwUTf`aIwraWZ|;fv8lfPEax`be_|KEl#o3p7j-vGoC@KI1Ky3 zO5f#@?+W`q8RoZij8t`oK40^l$OH8>ikOah*jE+`8NBZ3&K5I*i^s*x2YofRGd3$9 zc~CQQH?et+*mz$~moJAP<3`vb?Af0m+`KfA%M1+4rOWb2mbq3AMrG1*eYyyL&^OX0 zmII!o;2HJGm7r(Xll=Phm7FGbI#`kz`12t%dyKiK);B+U>znny{~9rA&{pSl>yN&? zN*Y7BF~Cx&_HQ%qMLpDjIV9pCHU51B8+{}K@0Ruvzw_49))?E3INKL8^1q!LPW`oKi!rLFxwrA0G&Nl+ zf&MSXNY?e6=x0p<16a=cJlE9I`(9z*H>k}+c(v8-(On&}MlY`W#E2bT!Vg%yj1{0h zoR$O;-S~tu@$W(0oJGG-$!BCK6tgty7C`HrzWRy9t*tcf*{hIu?@1{~EgfK7OAK(t z4v#0#nW=@}zKw^sRAeiQ!6duEtkt<(eu5&f=npG-@@{I^IcD*zSRz2`vpgH* zxau1D9gLkv%%vj_?=dbEa`z~2Ywe#6B+wO#;vZ{saI2Onz==8r(@iYoqZH?|OVwXl zaN0aA?Ac;?AQgJDUgrF1GML?RI?H|j93iy{qyMNPpZq6=>kej%r%G=ML|OsFV#0e2 zOK)hWih|bpcV1jiJQ3c*!{0=|`;PKCKyH2XXZj0y1Wd49>>+R&mzuZxc*jyWH_qe7 z{l(&Q>!!ih^h%CE-6cXU-GV@ust^lXhJd>znxb9J!P7`-G=VW5%jo8%xHLq33-~PQ zG80X^aH#jth2u4a;{Og4*jh-i@y-@^~1PD}xiD)%01Uw}BH#7kIH881YC=Ezt(Kt_=*r!0ENKfB|If1G`gE`$4|0&Y$iRC z*v_Z+hN8k7r_x)@X`F|xp)PmNSB?`bB|eaclFUy5&LU9Yd-SY8^8-RMpB=UIhLcHWO2>!zHXARxEJe{l&miw{9)&Ztch}`6{c^fg zvP?Doar(8*A_8>~tGg(c45hfxig$1=lOTKj9(swvK!RXBZ?XqNVzL#TFXB5RK3I9Hr#iGoG2Ih!#^mS}AB8*Tq=xmLMwgHJW_0*LD`& zUXx*_3x42o-yO7hE*fO5J5)kJW7cd(vNz9fSQp`FaH=;D5hEfbojcYq8}a*8Ry_Q@ z{wqTboQXow=JZ-vYl9Y}yPHKu?!*Cx=WJr{2 z=9P0E$-7iL6WN(#OEtK;Em19vq1I;X>C5x1ocQ$J7E^eLu2x{WLf7)Bu9VD_Q6psK zI$gIsSa=sz_11Lw+A>ynz$BY|9^a+bG&Y!)F7F6Fh67L5c=EL57)epZ+JbFrKUe;9Q{%-iwC?vT;1MN0e{2LC zHD@x5DBsB!S_x&!6R}|{bNjvN^6wZfN&|j$*osY6+fB{Xy02e8Va#+yANsCN=G~^U zO24~R{(ajaGya&P)bMHT8bF(Zm9O_Vp|S*NK%+T>j*~iZ&2ztqEQ!R^w;yk12kOC1 ze3RSlj*d1Ck`}sec#Kb~souE;uv9lN&wTD7lsu)uxS@Q#5lKl*{36sl;zX+c}Nv2V^3Eg->t;BInAJ{bqO3ml_;>wB?CWS6^QQ7Lu z26^JgdF#w~d6BOmKXIuSB;@l5ggw&d5w_K7#{G+7V0e$=#wN$z+LujnDQ+KGa^ofH zTF0E(@ug(d8q??zKa1^>D#u%Tu5cKt!!Pr6{3%o4g5_i#c)S7`V_lyF-N57;yr0`% ze^WS8x$F*u?+U-#ef7Smv}L&3x%HKty-uctX1fRQ+`6h!eQqU=_BKU`k}LI|EW3Ic zbw5v|=kIwn*v*5M!TXx<0?^d!s=V+Gy8VR9Fw~Xeuujqu=+wD6<(^L@3HD@3zR|^! z9G*lS*wLrMT9Lg|4;bfAHO%zv%bqVx@S z!%V#8jY*te8P%feEo0O3g&@`>LZc0J3f+p#R?NqUr=_I@`Rw_Hxir&Cz@ZC?Z$&)y zwT;CouDjr!j>ZF_gQ>JlWkGYxtK73I2|+a(7!C#>jHyG^j(Nx60!U<88472-bR9z& zUD4Ba=+L;kLzWN{&D_sjC<70w{VzbgV1>xFYHDJo8tUCtBRam?JwWMZFN4eQ>m6XI z5s$Zq!U4;VYq+>|aFZ>OT}H-NRYXFG${1}ln3|;&ij2d4NB&o4kmt7qF6UiLCBQUt zSkJw?yFPQfn|nhRGX{;>pn8MF(Oosmu)-E1PqE}vm*hwlV5wg08j!v zKRPtWanJiEbvs5>G&%a3c2*fJxmPZon>~foHVSyr>zmRLwrK>VJl-nRzI-ABq^tb+kXsxt6M@wGgy^T1RYAE7gKGYw?>7FFQZuS~Nx$7;6bBeN0QUjYHS z<8t=Pj^@HA68Bg=jo6=WR)VCR98~g;n}qCp$Wb-iN6&Ysp20tVWvAlIoS4cdt#mdd zq}7?Gxg0S^F1xRZPqy(gu?E@ACTY#vL^ zUJhX1gJ5IqleP94ylONdAM%do7e!=O+bAO*8a?8Db6y-A ziNnR>LF03|;oUThsmWRVwRW3{*?#p+h~m!ALzJ1hJZ~zQj|v3InCFJyLKKzrrCv@| zVZ%HOyoBU+KSjs7#~b9-6)t7^M52k##8$Gk{e}9jim@U`$Ty^OJXc_o1=`~(dcBXC5zS~UX?9E%bzmFsBPg^=_PSbDmD8K(0 z>zp5jrP*%5sFk@4^c>giR5L1XG=z| zt4U)=hqy_mZk5?LRc78$_m`jOE!6w1Bt@J1f&v3+E0fY77Y;+u;?w81P}RNha7p6E zUhTkuO;z+$#1aCccPM#V)Pt*qCKb>62Un~eIN z>oje+HOP+1S`V_vZW4}fW7BK+1r9KprG0<4LHq84BNb_(37P8?J`T$~W2b>Fh3z(M_9|ffY?kkBIlaT9{Va<8 zlgZ2!#C}Hdl0pl=u)D<=eKAy*i5}|RGHSYVVK!M5dxsR6lb0hJUcza6G9ej9*#jJ` zDfR^2CMQL4%iCIrVqwP6#N3TW#Mid=R~>=v!#T_FLBGs-wi#mNlQm^^+}lG{ngq2JZ%tp3VI;hL6T zu>JayuD&(pdDL}69;&^d6l22;;;`Yxg&NFI+#F>vb#mFm1a{v&76YMwZTV`;YLy81#jgsFn8X@s{ z$5PC=M5Q=wSaM-1BHdYv-7xrEZJLe7Vf~!dd3Q?r=V7O=Q6+Ayp~NF4OG>9w^p2Ye zE}ymg_KL=m#+HU(NSX4&MeK~RSeTV`^S$a!h3;4lL^@BlRK}lM8PDa31GVKP+Z*o} z8l2ddhHMITe_`#NFKhWG1^_d!S zH9}*)ko&{fv;Nbc;Sc)Flu;Rw+_#Cyp=1Yv>{z>vmH-CAJ@cpKbe)Y^r;SyVWTu3$ zN|azOT|#;#H}P6}8`=qavne7KczyBIi%l*(0Dkxvz;}yy^dK{q`BDioVtI>n;n{+- zxAE2EZ>N&oyGnc{%BwOzuaW-bb&JwFY{wV2x!^9xWne*{Emo%LzkWB1xyC}16*2c! zT;!Ft{>?)q4Q~990^!DcC1fd0!#FN`!znv#vKp;=i{1W>)Lx#e!-@ADzvTT%!^Se? zuU2XM*5FT*YkJRHh2+$NrvPcx9qgx#7oU0#n=PApP;h>CcJZ=bJdHm*lV2X~sE6v= zN;*F+#?y|8Fc?R)*^mj>cowDHxVmC5C-I*InAoy_We=8Vw}6YH(kKcSsR*=!L zh5}8g+V(>QYT3zk|5{QRB8POkH-id9Yoc4mX`2Bir*;DLwMGldj&49zD78-G)M_Sd7Y**vgPT&OBOaB^uai-ukJ*paF_?P4JqjErk{k|Crw z3n}DC#>Q~kPPUwJN~Sw~=))Z^?2(1U1s6(fYIoS- z?xp@wAe{-_=*k*aOZdW@6Jdvywjvana(sJzxgGMle7`j6;*NOJ$B6g*+?qm~4EhEg zbT64g8q2w_(p!~H&Yb1aLbX9_(xs}>4t@h13u8&QAywqGI>wYmIq_4J*4eii3j4K`};P=PxFbTeK& zSm&L|;jU=6-&n=1&I#JX_wO~4YbC{&;Rh2d{~{2NPmdv_eIRrXbJ(QAt8flNdf9p4 zNwOPd*+pXtA2h7z6A`Ev8bkK}DB`MQbC9$rG~LB4pE+E@#|yqh)vhXYh>ML6NIWDi zwUR@d>?xjqUL+oDC2sL@llOj>h;JtSQnKUqW2itWohW0^uK4t1T8Bdh=AgKLf6Cu% zu^@miyiQwl&B^V{+~7bd4xcT-W^SQ@M#Ejs?r^tF$G%F;Wg#Zj1*^JFjdEx&t;yB^ zRGr0QFN85JCzpgV=q)EBbZ5N!YmXG_RK*Nyt&*m47Ojcy9)+7v)-h&7$bW}A=w;~v z1+uAl4vST~c>QlBI)q@?XewE2OP`V+Cf#Q_N~h_m>U%S!1)REgRQor)RcM@D=5oGn zVb)Ed7Aa9L_uER)<2gHEA8vf1AITlD5=imd{@BS>#nhPqAXZ{s9#i)A-ee)+MDl2} zviEWU>|9=_&8f{b=X#88##Iz zs?2OZ2HEHJ(hhgnJA4ci2CQw76_!@5jcGKhh_BCX;D-2@Lz4(!pD`#e%6c4h#22$7 zTgymgzR0!Q+2YY?pJ3&n`=;xS=qVStvTZ;Xxv&|_=jnp{;7*Nx;W@%u(3Vhaqo2>v z9*JjeW~6j*(&Z~Qr`+r}G*AO0A45}l;JgvvXzP^2F z;WQseTR(63-EOn>s|_(AVBSs*Y*wvZNEIpYw&I&vX^Jw3EkBqrJtyR@z_UtJ#-;mY z-SAVxXO&X#wx&}fOtU!hA}MloZPDr@C*(uI8{N2D;D=MIlptr^y~d|j9%PsLo~yQ5 zpJLcgv{0R{ya>o8misu^S1fO7$RT|fjRI7;THCVUKP~flCl2ZOpb>fbLeZ&}JK`HD zeV5Pt3^hYUDZZZZFpxd})d*r-<1sVT|FJw|9w+X}XF>lbNH^|gmpdF~i$047jp3c) z)9_i&ndurW#`)lkoQuEAl@%s=Uh!v6xu3Ya40WQ4t@muT$ZZ_4Y+$B*YWv9FnS3R6 zLp6i3(%hBnekk0lXeSB2U7KY!m${Ed5+;Ag4*ecCK1VW@!y40Q-?nbI7Jhvzy;|#y zIwZzb^#b4Vm4Iw(*d6@y(%$M)r%>tEPztjhCR2L z^BaaBkzG-#`b$$SidwHMD3agg;c+K1{KY4QzaX1e`RaQ;jQRbKa1rJAP)u(Za}mQ_ zp(-`IV!bp__ZM2wQ1IC7P+N;B5OL!Dgi)l-AC((b4=ajRe93S=?1@IF5z4`5v#v*T z7^g&@IQQ)8EB3dB18f(F8$+oxSxJm0^(I4lesX+pSq|IQW>=eXx3zC^4eCX7*a4Gh=+I+({SzG3gF`vODK z)Lbf&`NnbMMM|Jvko<&B2$7U zxefzMY6kyBAYk`-aE@pBtM+NnGn2Q&Ws)%r!f!Xzi=Q`GG8E_bwkmj4!Naz8;P&{R zBy@l)}-Oq<6|gKmN+5 zHFK*nX;)W_$|~W*wJ2}98`9L?bXQiJx56hY%|ewCDG8wGe`LkrRFGe}kHW#ht!)jZ zBA~i1raF6hdrvLK*J#%%q3u1CV3NAq-Q7Hri#)X;aQ$>GwY?u_3Y36DEtHcG3 zbfX5`Eun|OEdB3}*v_KaC5nJ&azeFKO%#M&Q@?s6@$EPI z(byNVgkUhK6$DW#HL9O%k7TNM0TAKs`Tp$GuNL^wltqsV9Q;sTgO zsf*9^Tm<0CQ@_Bof<{Of1+@R!KwNC0qoIN0b9biBo<=T-?sdIWXmPpP_5LFZBn(e3 zlb?^<^=DZy(CtNmWna4b>WxDdWH8Y};}nBW^f99W=v_(;%%kh1^JJ1)ij?xh@RmRt z1bDQ{gMn}$3P?aoR#EUdR=`ay8UbeJcCqL>^$YAg_N$#w*%yE++;}ii7G)%z2U|!; z$f8lZ!A2sEG7>L?%bpYvU^&5_XS+{9oXO7Xacb7$aYlLsf{?Vk&JLcb)Q<*SaOoyl!ZbP{6^0EH&2GQI%%6yVAX z?Dqkv{DMGjIR(nLGkv1~Hd1_q7XXWh{)i-5EP$~7=;pA!bQP#9)^nrzmAWntm;36> zCnoI*WRgJ(;Mu(n=Gbq~X7nw%fb7)`D5@uafi$2hk24E)ojeINpo0`gA>ws=q5a89 zv1@ZMNgQPEO#K3B3DvgC{OmflCbF1JdO9c|A!C^fU@V~f8a2j~09gO)__z~W-z&QptPf=0 z+oSh*a>*D)oUn3Svn zWFrUYge=@1?(e>TvQEXTP{@9=K}KrtASW^|MTkZtJb)fslm9$cG#rZrhz3x?8FS+L zf#wM`P?!C7^*s@gv|w6XjtD%6NJxa>-CyrjPT5|u0!ZcSF5;_mQ}f=sF} zpf6KZr_4K+q@B8#;S!ngZ8W4ak`+lIrv^KNq#)@@*vza5?^CznJ?Dn6h{$#LDL&ej z{)Yz|v>pBN5s};5+fe{pveVxwUgt}+d0mY*+8eQZt#u=oX*bBB3_g6ijSdItH`ovN zHD(`Y z!B*&UV2blh3AyzheE1wf0p}1M@0lO6z_WQzLVBU{xgl(!#T~ziVi18U+;Oh2&d z)mF1C>;Q-KVYB+KfHLSU^V5_R#9MEHsB5z79+!Fq)}12+X!{XCn4s2mj2vqk8uD2D z%Kbd#2W~&BRE8=T*JGJD)6@{&y^Ull!%%--y3J&o0OLxc4A!bVDh3R z^)bc-V2q65z0PM%e;pkuo>+_swlWxp6U5M|GqTw(=`hS|@dyrKh6^C(O2yHcGRDO| zDsq%rb^_-F0{Qg_U(X3BfK5zxXERg5Q^AZAh<1CrK*usl<0;* z4&NyTMw5i- zAKEmk4GZv#+q?{jgZ)Bo$;?POX%2d`XWBt3QV9tOfh30eM>Fm)|Lo8V|BT!W|MQLy zyg3bOQF`LOzP`#WcH<(*ung@cnEh`Ivg&n>NI?D5ghkiKg9&t|hFObT6s;NlCNfej z6mZAU1v?eEx*ya&S{!-6DYau&;xc~FJDpx*U)Nj9H6#`b!C`!yi`P?8XUH30%5c?E z#;DzUUXNY->&bss9E_$$^KKRqXQl>5sxl)^;CiooJKr>Go9g&7dhr|A8rUUWdMEUV>{}No;YknqV07=tGl7<%K-d2r@ z%oX-nHVwSF(w|xb_x8!_5$_T79T{gG)mJx)S%^cEcE(p+jcNmAqO0 zz;>L={t5YXMtekX05qX}CZsyM$I@GKH~zk~$5P;&LJ#@v!L`}LHae3)2D_Tpa*`W! z#pZ*!h<+5ZNI$Ev$g&#qWc^LMOLPL8;iy=jpzp&>gQ_QjG;XJsWn6~84nBk4GF85S z<&no?kpH=_#jv1sp)aGz8S*6SXoKpA;IjTEE;S6&R?bclc=#p4XDX65;w;O0_Vyye z{7>~6TBkW^#3NorX1A4Be1ggGfZN6GXP=(SGhH#`5zO%Kloe^#m*C=X@oOW}_JA9B zXqql4!ZGt!+XeMMJZM_NOK4Wdx(&e4k#Zm=2mf{-z+O#{cDX$IKEL*VNHU52aX|KU z1oR8}KLvpzKR!6qXJ?$;JX+>bx-_uHUyuH0SOo`A5jLyZ{Gzy1n7AOaG;LZ zemg2Lf{#j9v61(tf9lK(i3I~#-~@SPf4d;$FZh6SF?O=5`P<+4f7L`pBQB!tiIGf! z#|_Nx*NRXYw=>ex(h{{o78Fo5ya%bJMAz60+S*^iu5z?L%gV03IgnsYOZUlnxy@VK z`hDI=A_Km|_AtSGnT+`Fh7rmV>jjdY+pK~-%Fzm4o<|7EU9zNIS?wZnw z1vtW&U=tZ@cD2RG0|_Zv&U@2tSI7A@!?DoC+h=<-QDuKYeos?}Z{nlm8uxRv<8~Ah z8_nRx9unID3HJUN$nRNyOyaNB_#U>j5Vp;I$Qa0aTl{hxHH9=7Z=H7ky!x-fT+H zIT2vx>V#WPhIxKWm0|-wv9Q;AvFW8D6u-wQg5kTccqVxk!zK2fq$u+v3(FoM|MtB*d}IA|#i@HP$B}vcHS;858$JSRVG^@Y-ZCtL@`Zqp z7nnFymdJ{)!6^8|sZMPV_nr&`r;CO1L{P!lR=~^JGAEeZ$v%3GPmS&vCPtMiILaCE zy>jN_PagdX;0YIL)>48LX%jpMuj|h=)!=tq-;$@sRAnWB*fE|)S&V0c^Y>$RTZs7G zIZ#OldJ{z0ux!M{9hlQk0L(b{7qv=J3{Bb7SM}~<(^3|sJYD}ot$a=bcy1*XTFsg~ z$yy-LP3=TSKt=7#lZ=zG2NEofpnAWu!a6a-^)rcau$KB%$}VHsur0-;2_UB_d)-FA zpH(~fCoY`SAScn*;^Hw9NS_jqdiCZ0?q&?ow-P*c_4Sc8n&NSQ2sT=5a*i3|s~MdC z@S|`%--;OrIByqfO3dg1fBp5^xc|ij=4bMOOo8?kwe}2Um+ZmoZ-^L_A}OC{kYv-i zsCTuB7%+_DrL;GWVyQkLN4($^ zkeWVp*6*JaOr8M5!ecK@54(pUw)j;~xk8;eMJ5YgaY4J?>R&x|0~HR+?*GejSp>`F z9hUeO3-=>w{3e2Yjq?~p3cGvQXH>z@2}%S+W@{j0<=ULeASgYOF_^Vy*gpFJlCkfy z@un-cRHse_y1K{TGmH1CL}RHmV-ReQGV!_dXPil!fAML%s(Y#R~NA z$#vs`e&6DuI6_ZPFO$BNh{6LjDADJw^T&wyp?ks=Ep^q)YJp@lIq7;Xjx|bkeHHMlhe**Q?B%g z<8S-EvI7g)IBxu`&q6dd0l)J&z!_0wzs_UQ*LMxS{ytss386&Cx)}B5%h0)-ri4g- zW;p}T6?RD6AAw>qEbnlZ6D^;b*l*iP4khPai}CxhghKo-0>Ww8%a6%_>_2{R6gPi- zK}d|BEZ9=!0;7}v+)~UGYEb_-Dng%&=ZQ+@v|WlQ*XCH8OJHqu-(&35Zvz=}pG;5A zj)b;kc4Eoo6(@nP3kbpMS``8k?Z6%Z!VFlRsLbBTEMi{w%MM7&fai>Io@BU{CQGix z5vkcy%NwOUiB%TwSGq@!(UAKDT>S|AVoN~PFFSE{T*y^uOY0PWCZD>{WU)382vZ|j z%9}IYey#Y=Z9njNpwHMWbi~15=+5PB6i;*rSYoNrD!l-q;$t|cTM|u1x7_N<$#Gvx z2%RMN_WCxw>b1BUw)O0io}NYKNaDKgWQi{7V?GrJpZo_XL=E{4^QfUrKF?r-uHe-X z0UzNxmC(@=7ZV_3gKLkFTuB&phRJ8@)FUCL#xbpgHTtrwzPg@@xqSNYoXGn$_KXcB zWgUF;!DXGi{{C`3MraA!TZwxX!Qe8%fx3#R%X@~Eb7ykC8k8?QGr4*b7r*BFSAXSQ zRH8m+QQvXneT^d*4A)AI;n8L>9*oCa(tCuhRx9mQcTTn|;npjiXZ$Whe?c;RF4w}D zbmocnHExQP3rF`#E31w6u*hlEpOFN;gn4`IwR`GPM)6#fuQB)h%DB&!*l9#er9uy; zJsQvd$y226?AJynxIp^`6m9;nN1bC$6-39z(nt^ADh^IonU+tl!e=rJSFiCA+zI`c z^u28uNb5vQ!I!$4(N)^*N#SI z_8u?>Vj;gznJ|(l+{bsPBvmV}@8;xx934@8WV@H=EO-vgF+9PNEzIHN$gk~=4@GK} zxd!vKd%p-y3GHz%GRQm1W=|Bsmt}PAO7%!|=pt|}Wa%{8kunffUQe0haUZbLy)%Sek<`v2A5S$DP7_FulG#fv)>r+A^byB2o}1cw5_ z-3gSU#T|;YxI>ZR(juiug1Z$9?ouqw;r>1MGc#{t*8FqU;;eAxoGcQ)*WRDK<0nY@ zGH#R_&Q`z^G|yrQVH=_exNVXi!4LZeK9RQEBM}HB z`Aq|=9zv5ySBdOu2CS3rHb0KJEp~@H?L7MtNPfts4!fNE`0<0;ph%eG)ktJ|K^mD_ z7b%h74VsB5uWXnDS*_>DAZaoM%MYN?WVFoEh@Dgy?}Cj@yV8jfbH-Sz>FCm8?o_wb zxb6FbEoZ?AQA(pLQx5@MK;bw%5Wg+e*6%N0D8BJC%x#heP6Xq>qjwNR>F12N!{v@PIy4;`PRKe_?~_`_X=g zKDnbIU+5j@V<$}IqkT0vUKIT`0O4Z2RCrq@7K34a!9kH&^DZzZ?+g2-Kq-))S|3?E zB_at?L7+^HD>bSeptkBgcAO;el(^3HPE~0?%S<-WFTNi%nv+~-bRKu7NP5p4=6gm$ zruX}i!~zt_Zqr{+`(DK;M6SI@J&67T%mU1y+2%bwqb6|Nv4TSFeiJKIh%x!tw+9YU zG+1>dJ>r+;d~bL{aQ&k_3F`3U^YgHeKZ6L!*D;tt!4W-sLjKoW(R`+%+9fdZ=~@=R z?@~*1K=ar+a-o7&()_56AML#oN`vO@4TCL>XP`MEW2I7#pm#H}u2Gxf_A3@(v(+lx z4f|UB2yAK@K=iRtI!rpNJK0}(fgF4)*I*x~N1{2lBp=534HZ>=9~0mkfl%MRAOQIV0|`ErVXdN{5{GjjuyH zP=Ssp57`s`)D};ec)P|;SV?q)>bxy)3!pShOXo`6gfl52KrD%Gp3*!l09bvQ8z@7a|WIG%&*TS)y$j*DUb zvmO=LNvDIJ8>i}__JflZV;gSWy4}gQ?Q0qLr@HH|>Hex550mnH*j`gi`ald||IEvg z0h9iz2tlMX?9^$w9sNP2^OAks#d`BtIf_ESiBzrTw#ms43UyNU;DNtk@OI5v%M*%v z6)VQbp)gGtZUuo$jKZCf$&O6uudeqElKfR3zE38+G)N|`gBgvdx-ys%BB28i1R$U# zc2_fkC+CeH@nU~xi=ocXwk8YIs^vDHguhY3d|t)GA0NAjq}k@>n{@f1_jS= zNZPts6=9|!r(Bp|r+zf?v6DQkgR)8mSd+rg>j0YdUA-7?dbOC`*Y>hw-SiJ?ncyoW zQdmNuxOB@3O((a&4tpZvA@G-g^B*$7xswNHr98;JR@sEvsn!@vXY$S6O^!gVt2eG% zHYBo@sQwE8Cl4h3I8iQ-nTKOd6P044%hIiyVKQhLdx^}tZu8&Sv&*N4h;Z3Vy~=L= zJK$tZQT7FhggzE}_4{T>_@do?ZDue$_TPXVddmNNU(ZqJwF`vgdjXHYfn&%7`JA+Y z;JprWnbs#3ppJK66dAhscC&q7aA4j2>K93qGPbE1G{^SA}x3_w|`54X8CeHKzs&`pq=ymG7Kdb49Gu7g5 z19)`EbrrLlr`yY)skKwdTR}t$%rq2O5TKD{1C~b(RO(>M$5UY$K>sL}Y4Q_XzIKSz zuJ~-RJTN#bS`b$r7c=?z?;u9u5iQR2;>b{Nt@yKoCI+=^K`txs5nyd>FErH*b^t~pF1_iZrI1l?@XPr&L965##WC*{ zhv;VC86PUtWn0pwE(=lM4+3!~v<1!i1V|>d04ljXQGydkEkV^JeUNB>iX%zY*W{GL zf5|+OU=4VzrS-IK&WU46z-C^j@*N&vfk?a5&T*44HPHB{6*3z$SCtiK8zh(gDU9k+ zaeds1l12o>jja039g`U?79-7lflWvZr3f)Fjk+x<{)|))0Y^*G=TQqkyD}C@GAEdQ zXGMJY69NE_e~)``9&MEdrzLU34DYx4pV61(}i`s)Wq+W* zpf@pxSd;cRgc{2j1RINzo<@d{5 z2~HB%fAHpyT@Qtkzix!mE;SXqbAWQphSS|^A12xQ=^V{!kPw@@VcuP`x_C(Qb}hpR z;WKWa^r8F@P~<=|tXXVfI^bll5M8rIWm8gzF3a=MD4ihlseRWF@LRyR=vYcR41P@Y=*PcM=S)OZ-JUt3o>Js7gwYWbqY9TQvDxyE0J7vPVtB`-Y?e7^N0`k0Q#lzxvQqH56>w7D8K3U*Q2q zNzmikYNR$ugv}o?C)S<+Bnvdj7*e#-NdlPO3lsX95MVFNaEN^98O_CV(@>dADYal^ zx%RW3lp8^c@5`hyL!eN^whrvoK{CMJK6Md55)-XjTL9)$Z>vGPWwCeU6`)`OGh3_Y zUOwQ2Jx1h#$iy4x#JXD@BQu-a-?_iCxXMxu47lj}zO;KueR7>`(x;;?aUlsE1ATM_ zD91!$PjJBT57cd-dCF~LAOz5h%w}!~wtiE(1zet5>g+X8bw=TvEfpFnCZ8T4{zOI- zFhrI(O}ohFr8ib=(Me^8ThYsM@*?Hl2C0 zxhosjbf$^a=b6CM3|JiQi3pB+aiCN$fx7B6F%}H?slPth4aR&Vc%?0D`r^>w#ec|V zz=Tf}tDp;+1ss1eBP|X^rUEm%(}Yx1FyNH~JTy*&?HCdOT6>1b6PJs&o~c^NZ~i%? zrK2~m3*zito0*uI(dT0j@z@T2RI#lGQ(WJ&!HhMF#f@sDFs!3p_lAWBcG6XH-b1cg zf7;Q@L2a9BN$?K2@mVC6tqM)rDGN2^OLI7|M4k$HXz!K~$$*zYtDnXOp`{pV`oA=Z zluXk-lYg4>>;kw%1;QmMR;U_xZn5SemK}hWm$2jpH{$Z%d&~J7Frhb#JZ<7-K9cYY z>G*ZHCO6BL+9lYLDz~t9tk=ahy2Ke5BOi^4Ll#A7$*9d}9X*m-2S#y0Fl%U$<&30I z&Nks?aJ^70YM*HGP}K*&ziRFKLfB(GJ2a3X>SFw=PQ1RDd*rp#hk1eFvbga`4*Mok z1&mFxH8w=)A?wt>NllFCU_XUx@>FM_zh}v}CAM$H-AF~Ljmd)w8-J;+84wR0Yy*bY zM@XZ&w=d5^X69VZZk z;C&AA{uL=-mZ9c2PwvnPz{Ez#wD}1|-Vz0;_NK(cCF(k}YL1gP^X9{*de5FgV@RWPOK? z7zjwaI#!C;l-yf3J-j~n`yaU2DDS6Z4$`hAjyE_#m8)YayelW{TT}yrMUBV68(85K{n1%ez6L| zS)6OzYG#5~Jz<#0e%r#f_p|uJ`yII#Z5T`Z?of}!cSd`MbUk&2X5PW$Z9$8Ytw>_Ny4LmiPGETT}7x-5zY(0 z7(g>6SA)OEXWeMkExC7m>tncw(WTz$H{8lV(!`t#y7If!1 z&x5aPfj3Xe*&KPZ25t|Yg;JGIjLJ`pP~ChKhlJIW9DM=&+)L&->x6Ddc(5_x=x_}j z=3y=1_-$4EC9dlFfP%GKQOy@KEt4exjwEc;BU62SyIt@X$G5|?<;KM3me96Kt2b4( zEJ?1`+$P~3gHPkFGCxS}z;J5yz)@8H^;-P6{Sf}MvAP;o^wjUa+lFHq$4S65<OC#dSAd zlZ@87Vpg09(}%WKu?Cgag=;P9`)2KfK0SxYXq4-)$b45hJhOc7zZ_^{_8_i)6QC^P zR-(mVX7#w`l(;|Fc9`>~5W!jDcWbMfcKm4y$K^D~=e3_6-ff2t&=jC__(QN)R&E3f zgyB;s+%Kd0ak^JS?sN1@Qu%%_7^#`~dn;pVZEFfdCU) zz^_28&5q#kNiH=d7RM9K`E#HbjMR-^cAg=~^+?<=_S&A~S6P(&2m>MphWzmhAbQE` zCi*1?o1+7p_+bF$3BMC0%t6`jSuZgUcWma1&cX5d5Yk22cTVOG+T9mm%!znG{?W?2 z`srDJf6AmIl!^5Am75K;w3BwAR0-&}!ME&3gdc`pu2--5%n@u1UYG?4oxVZ*bDw{3#xAay$w4_9^He>pxr^J%lJul z*N}Qw_DUoubr9*0h&%OvBoTUCPHDWoy58)Y##78T%^qQ&lkJy?Of6&Ip-9X7^S(;W zMQzal{BZo&5B;|}5iK6cxtsLG`j@bF&nkz7 z3udiy;`h)jk_h~a$GAH!N|6~B7M9%9pmm~vJM-3yn$@(zOyqC>*!`S7BQkDYe*O$Wq0a z+_t_!NJfsW7uh7yT-p9SV(7H4MUSm%lFwe%CVE5<;$vWfhsQ}t19T^&GlP+R%(G&~ z6QM>bZdDhef(t+G@~MJgXJ>)@{j1q$0g#oMBO#kSci&vomClEj!667kC$HkzpDtD# z%@64jzDwU)6e{AgPCN32d+pYX+xM2C_WCI)Da>5fg&dH&>8_#RG@_kloN?W3YMp>~ zNG^{81J1-IW<=`e%+&=AA-`R0V=#e+lzG&Qmt%iuu=8{2OaAEFM8!YfbA&Gxm|m&6 zQB^|ANbfv^Ja3Xv+Vx7QIwHVx(NjU>t?mqdb#8h!_`4K2;>|jIx1@+5AmJe%8gyj>-_l-^+XBNE*=|4hIE6j!%<)A^v z=3xlm6Yo^PVWE5xw`tkHCeQkspM@d_EQ+SxuWB%`Vn2V55WMCLx6O3O?}u-${z5Jk zv-GZF;)nBd+-BsE1Y{*|_QPllr_z{%&y^(#TRVH~N7O_U3|6g zCIGkFK1SaaqAPu6k6m`6?%b6DZaz=n;=DEJkcZpf_1YP>_;oO;6L`>jU$xSrqYKyC zG$E}F>rVO?6!oAYjySezBy_$Gkg-I&_6O8DsB7bFp-$D|HKRU%Zw&{l+$`*hF`DMp zl%C&FpdDJeos@(7;s)K9=Yk4$xc2%snT+@e7RjI1BhlUtwD}qV9_h@aH)C0O`Jh3B zhlMUGM0}q9#kVuVbkmZ>{B?3ZR=Kk+PAwYT=KENGGfbfO zcyxHqop8A$og6=h-pl{OdwSJNFUPkzbZ#ui6{^2m8C=lO7rmHUbUeY-cwDcZnwV(r z1@bO!ZL3kwyGa`y97;_iEO6~X+FgD%f9-pWt=oJt(u|r#Dds9=|Dkbk$xE8ELr@2k zIOr?TU9@x~FXjOo9##nyw2vd)E)Gxsr5uQ2G6!D}1AC>|?A7d_5xoK%HRw48-2xXH zRQYHlQ_fJ92c2(gc8FMJeJ3HYcd&>Vk3ik1mODaZbWTp1Xs8~@!F@aRgu<96R}3O8 z&9~BXMeVxm*mmh%*pRA-nQO42SZTmlMhxOOO)f_dRy^?Eh^!%QvzgMxm8iJX?Ck8K zqoTNkb2SK^ZEZE)kWP;C8O(16aGtDXuE=N>_bmhzx~CU=TXUPJI^UFb_E8-Fpk!rZ zOU=otYIk#D$iI|WZGl|*O1ykBuGQS%-(MUUB&YY?OL*m*sQ);Ha`JcoJ9I2J z@qEa{96UKGi4YHOYx!_?GNS#fc3V@6FG0WmS7H+mCb51P8?96T_4 zFMsoR)>-!HR+rHG_dwf$mZ@pY?k+fNwU<~xZYNiOho4^$C`WHETUhWY02s%eH90uL zc{qorrsnPp%zx+|`PvtDBwD;TRLnBtL=EAWpFiL*m zl~*_a&$CE&V?RYIqC8V1`RCVxLogR`g3Aws{@*3N&~TX#G89_>ea`1G=(xQ;cL(g>C!Lem{RX9O9_po9HkKe)|o_b}pwMPEC`0Y>C4j{@z{H zXmCzlH&J8RXQ?1<&dj0fj4~f^Vi=_0vL2sR?JmsQu;*%hJ6^q>s7sB*+ohsXhFv>Z z$ne%(68HEv`L%^%2rb8FA2gk6#?1)%Xu?v?>+NGw*_6BQx^s*pvMe^eZ3nE4ClA5Z z4O~9fX@AecGAK-??51U@N$>EY#BCEp|Gj7(M;sv%Tg(}bmvm0@PPQK!CL}dBZJOuh zM@ymEw~+(zhohWB8;y-E(Ji&Kwa%uWSsNe9;aBdLi;Irv3P?A(-M;2*54z~hcXGhj z^DOw#wb=ebUnbnFc|_#m(C#54VA=wPRNX{V%2ZAc-8U!@N0tDjEKm#uv-~|E# z9v=(>1-zpIFVSqUzh}Xsvcdm;2Ic)zP)J2YN(y*aF>*99v2`-HbN(v+EC5_;-a=K= zSyN7y+sMv_-oV(-(1hOI#{N$g5MFm~;G>O+vjLI2jkT>4w>uxnKP9+<&wmaxkP!V- z#Mz3EL{mEC{*TB%u z#hH(U@00m=<+msQ zU6GgJ&z-*+iGL0AKSzOa=7;5F_|G%rhuszUt_K1l2qGmar0NcO^6i~B`T*vDpCtU3 zmcR|gpR22@IFd`{p;J`Q)Hm*I6sL0 zTM9UiMcyf%rzD#3wzBN!C~;fxzm@*Eo;Xa^lsP&IrT+hDCNFN~Ph2cr*p&aHdFNI-i1uBq>dkKeeMnpxNcPkY=&3?;VYL z*(AP`U<(8WgKlKGcHe9NjSESL~eB-@`&D2HomCCYu4;@deQA&Rx8 zW0GYDEo{yQladbJf0s%p4#buX>sqr5oXgRye@u)*q$eS#J;-%3pO5=s-07=E(^>^M{g^v-8cK`PcKsuEI`*Jlj-rL6RG@1Q&~!DlQ)qF`8yXDIFxxk7)!kFf$KH7UywNN z4EkU0j`YmUsU_3%^5P{k==DEb?Z>fMsVCBDt4BA^k|X;cTp}VOCVA-na1_&3`L0Tx z8uGZ@6ln28I`@108;|?bJ=4#hKVvBs2+-+2VMRwrI}CkL*20mI_Lyb_HB6<^pii~y z`tpvn!0U1crn|e_*}=KP{G>!nx6PCMN^!tsBncr5l{`M>%)-Z}t52WPh^Agxtu`eh*e4 zlN{}wiI_W*zC0WRhiR-$r(T8?j!q3mNm)d-FhD^&}1=Fh|;Y%qay-ppeg#pc7OaEO1FI^Y6mbGJbnR_mn6^u^^g}IXk^uVtyH}{ z+>!3^_V-zb1T?9NTN`nkGvzBGa6p|PzS7TkxDF>$ z$6Xc%94}N#gjWAha#lLxGaihEz96Ltg#gY=Muw-SYzm>8v-6gOuga{4>hA?`--a2_W!-dwI-hL{_EA6jY3@DxY> zRy@aUDLeN~rP{j2be8X@-uzO>=*X)k*yjzUilPa?0!dt-tqUk;`08wHK^B?)+t%xU z0K34Mk<_VsbbPvZxIUbba0TV&|U3s za+%Ql=@odmk`4}B$P6Z_pRiz+=<_a&cwA3HQ7Z|FdG#DoV|;mCT2wf^t&O*O!-)99 zCnGQGtrmux4;2s}k4h^CV>RN%e@m?%*6~Jq;^AGaw|Q{{Qeqx?iQ)xa5MN0rP$00| z{=}lzLqbA=J}YTOf@LA^N}|&iTqq85cRiQ{-R_U-$?|)lKI1_^QyiHsQJD*w3PxDP zH7uANnS9`K+7nIBa{O|g<5k3vc=qKT+;tuT!OSEKj$;nSCfmSNo`leiO3ZpeL%wda zgilmX)%lCCyNFBC%i}SFV#|LZP4-8yi)#M9lqTp)`7mkhXEcUqXeLNzWhO&BZ3vGc z_^|eU39PTp#=*Rv-NlKSyqAfGZf)@)zW{@D>3LbFbeFGXcEqmHtGJd=3F8496o+}J zH7tQ;e%YF1wF`5hKr4g3%gr<|&xJ3v`e^x$>giyLboJo?Od=XD%=sHuEoO;~CYEm8 zc*1}pT?7VQxU;Sv6n7!_aRe5}hqm~~i|)?w_^f4_GCw`-2J4biN)L^jk)rGF&V;^L zDDBr)EUWJ-LIP(7J;8^Xiae!y9lrU;CBHu8`js!wNcJGl?kYDnYW2qu5+3p*poK;$ zYBV&{xt^`*xM6$YxKMHadpp1(MXn5EWSufNTWg!{A?t?^zq7m+&cwfzE|5({%{^A3 z$iKm{_yXf$cKd6ElCo;D7dA~lhar4GNTvI_N=SdWkeZU^I!*qRl$!xE-L&Zcu?-c$u|oUEa{YF@74a4HWU)lG`=xt|MS77AKlk|QxyYs|Be$DDV(zTi?5^8dvP z*Vh1yYRbMgb$n2Yo z*EC17{$5I%EVK1d!fklmKS+TWG!ka%n-dmKulBZ}s4*;_s-G#8>j^`n%>4<)y!CRw zjpTC6OzV3-X#3HLmR+v465-iA`wN1Ll7td{F!XbU(<5;%dv;!ns=FZRx7=GCmGpw8 zx&FXNpBv%xO1+L~<51mZXKG~(R%a3SuS%7=e7ZY4sMvq+LIy3gajKX~TBdpOp8qiq z-|(P7x+Q0FM4m1@PK2N;o?Parzl_?#{Fq$}H7HWis6WOr>ZPcf4i16tU0#-i?7$Ab zTEvT{zzr9xduw~9~F`1U)go)}cMGVJeuOnnnak^|68cP_l~0+;nm>!xEBcg_ zva*XuJaRuXmh%*2T#8OXq%6Xg>nznw0V?bK;5Cs{8<*)K3WBoW8F4gMDfWx;@M+sT6y4T^|C z!n!O>M12t?%P>X zNu)eW)EXrEecE!COPeXT{W{1avrTm~FkDip(cLRYH-jSK&dB@A0 zp=<$ElatitgyQ_?%@9K4Slu*BVmk~u=WGWv)|Z&*dJ<#vI24KC3g2(ykyt20i&64s z%l@LHFHx*<0RV%rGo>C0z>q#*8`-gClO`~B$4!v_`XNW9NM7@YV*$NIrEXikgG{FG zQ8Wco`W7`QQW41xQ~oA|Wezc@>Hxh?^Fgjf3DM;+b%MZPO9{b@)V4A;pNoUtS}PYU zsg5`XVrXAO0l#rC4o-k1nvo%?ad8-%mpw6YhQWFL`CW<-ICCY3*s2TptGg8_&=`p_^9RbF}sMdJM z@IW<@^AV-a_t`U6LT$CdA~fjb|jm()O!neH++Cx@2!D&|5C6``W%Q83#S(%L8b4qxB zM+kMLmpWPOAzzBzs6R4pZH$T%L39${b-6J$81}#|pfq7-5+n^lZuMk`O%+$r7$iYL z3FU}nA8`%mzcYXkJ%%SxC#noi~+e zVz0YLtUqX;KO{i=7ow(oK7{Tq^;&lBbCUnhu|JMugCIbyXgA4}k^X)BfZZvR?aZ$& zD*u!W@m^v3gGFH(Ng-BC@lIdX9{J=CC$mHv4S5Yo>-mXU@;A;WG7T7SA(MIvC(4^E z@!Ns@<_2ORg6bG-Vjn7wWNPM%G-U)+|q>Ub-}}1oPRf!e+GUAC3GRBUnx)A00850b@vbZSxg4q z5IUa#pHQjU+2WxQ@Z(r5rbTf+1Aegid>J-@fNz-$kKG!t&T=Y?S+3PW#WYAk9h=pB zZ=2Vhv&HMvm4eQ)&+psAEx-FsD4nO>k>mo6YQW!ZzCtfLs5KeE(BXypA5>f<8sq6D zOJ+zHI)~j_FW`aiaxtR<7$-k3k959Lk0Ed9v+DGREa^v)5X2ni0_pS1%P+OHEUj&A zE*5%io&{t*fD_|#@$&LAo#*lV=(6eoOXZP}oEY?GeE)C^Te}vKKDUG_f7}PaiIK?S z_i;|PU91wqacvHLg~DOC4qa_=Gn&qql8hq>0*ansv)e4^XR-Dh;q(;WQtgd@!!45k z7VjsQ&K`B4#Xt0x$3#y3yu=%IWLPMd9_;;anWNokn_Xcpw$|zq0JtDDA(yo_D-GGU zCXX#n`_c5zbEO)j1uU+Dkd!VGG{Ut-zz$rAcS-qXfusoHL2LHT6d#Bfp|hBd7USVO z)2bH7(nsZx`#Mu{{Uv1np-A=B!7$ixN+?*9m>O~;h4QaYPfwNTNfpT9-d^zY0}QbK z(*`Hcaf_#VJ(-OX}rt6^+h{>|xj`e~9$E}zTe zGCyAR?r>`>7f!(a9K_exH{13oHWoQwHdWaz`hSwLOlYCWQ<{M9O%>ra1A!4ANPo&_ zzaco8rA2iHkUm3HTFnwDfbXVS@#!O1nc!fNZUP7ufaD9F4SR z^k3-w&#f}bc9N{l09*;PW^;~v+HM&J^XYuq$GnJP!1qJXi=TIi9Cy#R8cCunZOH^{ z)psYu`wwaLXN>Y7w(6s@r#@|`=$|ZB-|r^t?Wq0XlUiJVo$m~xO}Yk6MfvAf*z4)( z?F=PIxN_mr#7{#)LXya(u@WJX{f~hZJoz(_+_y^u3?=}2DPY2ynVX#}bLJRGl;=tY z=p*vMtT$#&AIyPFKkoF9^QdM}qNCe2^KtRasmW_nWGd zfm4Hx{%_~8;0i>Om)6Q%NWIa2SlN`%6wp;u#bGO*(r-)yP;$|H_V(G}*PGRr4Fizj zmRsyqsBc?g2PpV@A3sf=H@3n23&4k`H6fJ!2NVD&>*Ro~!e*UtKKf0c(ue@Ip28NK zrt8guutBRjSev;!TOZgSh(W=@v1I!|PfwriQ@r}~XIWuD0o?7?RX}AWgZVzbl~k^1 zSS-Jf=MXJ6$MerN&45u_-w@+4`!ht1F3?UHKzG#np`M1KzfBD<5I2=Z&;u(Y}wUXyDv; zX`63r)z__N)dFCqY&eHqZO(_v)}K1SBx16HwCC&WN8(WtrO-Y`8QUK~xj(k{Cz#ny z77NkUoh{<8HoMfO@$Y@OzrWblY&GX^uwH`qbZ;?{in_MQ7*qR1dnp%4=?i*(>k}1; zJ)Ns|+;Fg##}WRX1|!1ChH@yK!>-DDiP?I&3Ka_Rn`pzRMJ%b6G$*&_LSf(--W=PlCxTSbDdlugGEi z9`J+|S~t@^ur1eHhB36biKH@{jA~@RcSMAT?;ZY1!(_LMlfhqwImB!dWR!&WIUw(S z-Gg78K@RkVPw1TjVa}&9?t`^L@@D5lLpSYN!2g4}!er<=LcqP)3nI*5F_DPBPAwbI zNqpM8frEg#rLU+kU(J2z>2~}D0NEeaDCvJXLyR^=Z2%13`N#pGQi&+!we?{%#oX$~ zNn)>a8YN?qhMh>2K@8H6UP38N47@kr-Nl$ zr1rsY!;j%5teid%T>G345RxMUUC3|6@pW;OEap^a9LD@My5#zd-E*fy;_(ONC8 z*q?o69V1)4hdP2(?58)~Pf?jo`}m;_+mv}`6PXUfA`xLFP}?gxJq{ZiLV>KOh_h$V z=u{{1@krX>1WvkObTM6-;fP;U| zTiGCKqWs~7tuhcJ0_-1kd3wBT7Z(?CKO5~m;bJ-dz~g*3;X!xC=6k+K>O6-VCSk> zsTL!NUJuU9%*u1eFt2)(l_rTnyi(U^vPDi;7E2X}S_dDVa#r#LtwYdTU=6$_ny(A; zLgt73>Lbn+t*xbEBXYfmU1duOMCpMoMZYXtJ^aa7f=Mr4ZZzpzoqlPtE;O`HneU&S#b}LbZB5r7 zLt}HkE4Bd_Xj1s)-*fLv70GDU?@M@e3VtwVj3&5c))~jU4QI(E(*P#{~!>``5w=_ajhwlu3 zCOo6RU(q(0DD}I)0%yL;K&0Az6R#{)8M}ViOet&H+kI>t>fmYw`-#aH_3`ek(!*yC zcI}6gM8iY;1Ag^R46MCep^b=6IgiH*4JfkR5;Ze60`FHuc_T04 zfc^J)i)}M|ym~WYNNeXx0>nG}4}x-=bM@pGoFD^P+=luc?J1nTt#lUS&EKI@M$Pk~ zq?VY;FI3jS4%VqVzC*9T-r{;;nAw62C}e=jrB%OsusNyJtaiq@ov8G;PPKN*SgvoW zRLUFRe`52&;Et%4Xdq(UXthq=I#{Bm5%<&S#ZYB0-map?tbShP$>4WdGwt`5OJ_n8 zkWUNm?6?E_=!8?2yhrN87w0Xg^Tck=2b#90?y~gJxN()I z9i}+*pY50`LJfEum<@~$YjzKQKNCSraD(hTb}QD`5#Bwae1e)C*wEEs+M`@~tj_mo zN}8G^6E_kR{Os4-|nVw;uyi8jItM}-7np1*3!`A&bw zRI^&>GuelSe)9QB;Sw34EZ=b>uDgEB>9&Ps9t27^ve^@&ROx^gI2n^K%+4QoGzHG- z%n+d#fsqaH`&#|u&Dccx@zmc)#oT=la7*Vr&!_W+VC5AV-ejM%1U}y$mrLFT; zTBy*eda3;Wr@)@0*o@I~sIobYDL3T1cNQtUjHaWNlBh2~>EXq}+79k6-CyqM0eDzw zak_JOG+WLiEY48p6A&l4PaPSnkJ-SdJU1nr{6A`SG{3^XW1IE7X_1257Ry8FwH=g3h20p~21}WZQ_| zp!OT9Zq@IIi971N^BD>$j@RQ7OIhno^=yp~BZo8COuoaIa<%gs{C$(A z_uqw4WHVW%UK1&zEowB_?=qk>en8#l)=@Y!hoQPvc9tlp{cQ1(sVK6D=atJCN?|f$ zG`X^EO?T?;<EKyO!VAbn;m- z)9TSfdRi$S5Vwn#N!@9`3ggVu8+?d*C?qPBPmMf3KMyo9E-VE&zp#F`pTCCn$yC3} zn20XrVzV9_6y1Qleq+Nu^L()`N^kL02ypWBV9?Yq4H1SyG^&g(HKVu|wNbdO3k%8{+6 zcWbJalc*~+;5f=Y){im=^;IVVb1BF15U;zc{+B~!@OQb|j&FUp{sn1GrpUBA1DRB}Xu0(q0P@FxEp6U!mGYG_6AfzeI{_*^-H9VXC6T zxv%6onk3&~im}YTZ zvIyc^scYrvjn4D8-1Yd*qd&qAW~FTu>>+!wpS@ z)@{m%=DdU{y=<>?Z5s*9V_N2y{gbYxs-{v#mD0DzW#4h7%Am^e%kuKI#f^UC(Vk5W zZ;VHp8=JYxbSzF)@T?}Q9YY8(9AivXF^p>PQ0V0PSaxjS1S7Uu>|-G(S;R=WqFKw{ zejAInW%L8#;Tf6aSO?GUsO9&=g0F0X|5l&MS?L& z9(ld#%-uu8DCQ_;FNS=4Bjv={7zF;~J&2^Ki!vTvc3;O%Eu0)>Nt!xlaa;%4 zvj(4RbW7az6*-e^+u)F@gLlWE>_i*g*&|;Hn;e&Ev*ZnV4QdhquN!Mx7zpir(Vm@nW@?l^ss=0kKE!Ao-Zm`3j@C zv2WD<@y;ThkiaT^W9@YQ^6a!?-Z3nzf9}MJMDl8HEKb1BS2mOPqslhbv+g^C-b5#J ztr@ya4wV3|Pc5zpfGHCXLBy}JTA;rWS#iwlJ+KeG<61`IhsdG?ZK^5YQh)x4Pufl! zE=^wlkVn$&i4}3STu%e2ul`UmlaI-1u~TrL@pU^p1=w<;xe~MK_vp)@uzX_~SiOLZ1#+^#27eylgYRx}c5Ff_~YQ%dxgqc4CkEtY^U@8#ZDM6OuG z)>+4E|46brPW08$!$6v;Qk%k8d(GlhD*J{8=}wABai1odhINS?-V!CoMvs9X2gz2a zMkZNSN8Gt=j0#!&bWxbhhJ$cY$Fo!51M$K-d9~{6y|XC0y%GKK76+Z zJ1rGMKeH?SyAv&o6WDYfg;6Qb ztmA;*!|f~753qztr#@0aoucjDm%4Xw7@~0`V#oxj6=WW;;mv$9K9$ z!?{+R9XZ(2zH#%`yUP6rn}j<^7&!YDwoG-nfzx|#XKQpFUe1Jr;CMKAWP6g{-kWLK z3|6~@7^sGE>?xLuPR@@EW{?F=k0`$3`JnapgJePf56AB8OwtJ842VNNP6yObzr!NYhSC zF352_099bnlwex1272Onds!kg5l1THC^966+GtRTX)dt!KHB>1T`EMA@$59+Qj63|~$%b^U`{sXB2< ziVp37<}L~Y2hUeUgN%>4V>IH@&R8OW7t*T>J2qtCEM)aqGRF+QgDFnJ(v?brXIZ`Z zd9QAt>kpx3(FI~L;E+;MqxwV788f(DVC&pFe(XM6y}Ch3sKj1o06Kv-O&bZ`bqjTm zi{Yt!cA>gr9&wlZgO4Z7_uHNsrKX|PQQi7_AJkFo9oU43GlJTX8P~NZWCI6BQUuJT z(Z|!5WywXy*;8x5gP%BYZ^~1uImGmFQWbGkiY8j6F<otbptzf~(>9MQ*>!3L;PbPO?lNs!bMJblf2Bzh)@05!){L##|Uj zuK_RSSw$0Un8s?cmFo0FpSK$cTN3G{MPt7-@0D^Z!lg=WB2eod*3zxZgg&I1zcg!1 zr4BH&ZkdtdGLl0K)Be0eNQA#h?GUHbD0eouL5zns48yj{m4gkbrelf#T7M|n^zk~k zCBAP5BJoxpyA(l;d3;DQ|DqLLp~kV`YybP;V349aFs{p~QT&n!z9*GhN|CtMW@9Sl z^r9RI487?6vDXDD=jZ#3xX78O*N2zWuY5%N+$pi2<*=iUT|I`sH1pMysd; z!GvTaWY5ntWLQ>G4~E!+eq@yNygfD(jm)w-TjTQVbI$o|OwV4wZ|Q(Q0l8WHwDt6N zwbCQ_zLW}6DTCnK>4LOkZWn7mqZXCbWolYnv061t#1Pbs&7ktCqgDG9BtCTbo#Ym} z;Os{~U{NSAz@aIkRF!bNrhP*)UT~gzy1m#?UxmWXhrwh$_!P1BHB*3K20N;}Lm+g8 zN1HgSG((4_)GP8f4nmfD(f1Xy5B2K7CE8Dvf&A<;o=prW8iYExl7Hgx(i2J8Bcls zoF@9lYUaNLmr?qo1Dm@na+RX-a2$N|(cq#KRv@1iVeTuYB&JzeH_WDVY$mj^mX*?L zjMc1%&GVCsMW$bo;v2}w;l7%ffBF^_&aO3D{(5qUNr@e${#-za@Z50YL~<^yF*$lz zSCX-jIX9Q-d1zeDwzS8w7QGj}sK82Rp$h0veyN7K;uH6fE6RdgHQy*P93`orA?D%R zpyf-IYt^GVw|%6qATyOayM1q@e=0~j1=_T47BEGdZ6h!PfgR;&!vja}AIH_UJKz)) zu_{DceJ%MZT^R`R?8I|Aw2iAzqq%+0n-5&(Jv61x`Gq6%UfQf=%b07^Fw23i;i30S z+fp)NHI+qMcdu(uO|<9KJbykr0|9%IQjeHBUWwQ8GzmQUM+KQ=tNd27_%_BZTH;x{ zZ;i#|(vPaa=2uej+}_-Kv3oFNgEq<3Dipl8XfrpzG`+Lh8lO6MG|xv9nc9BF@L)*U zFo&Jh3K|dP=FpG4s^qi3_A<;;r1q;@=v7a&^g(S82>*b`?rUH1B{aJpAo=l&+~YJN zGPTxR-p=wWOpkXeL$^?M@FJ+vea$?^$Fz&!cJ$@JD1U^kdEldUFyIOHTQAjYPR-o0 zt1LBrkd~hfiP5#JIcC;wIB^|Y(;h`1KTV>kXdFE`6ln0M-l)KjXgtFOkoBjf+Ax?8 zxo~5;yCq1MO&=YEMOi%gi7mjc-dX84H}F|39_#{(&_mF zLk~z>`=VMVHec8H`55X3T;%Vp(=t+&bCg~1+Vnd{i1B`$Bfh6mtA66>mJDOvz9`WH zF@K=+LSO#QSQ3EdxI3NMrJJYxF2C7vl%RTqyP(w@osGuI4u2S6F^CSKrt1GUruU!uTT^ z-E(z*BdY7zQZPN>fAuTw8(}gLGtE01V*-qD`|3u{@}Lnz9tgl8R%U}j!uFSfvm;#u z`+cE>TH3f6Wi%J0SLkDLt6WqdAZW!!S9IHMqAr zv}r}Esk~_Qt^C4hw~7ysax;@ViAwH*!wR7;w~*@zGh?xI2-_qk2bVm} ztnVftDv8Z^?-6M*7-p@>Gx@xNGalfG?Bf=pxYKWgqk7?fS_yF0KZ9vZcmRrbhR^dY zR9%_k%FpXdS4>{NeDHYeUVI$r{4KkJdEC!uQSy2-XS9+?#KQG^LkTA@e;Yy92H092 zCE4AEkj_dy_t(uydu7lMsC@Uh(Pm_>&et3P5c?fGV3GO&0YXk%Y=Cj%Cx8s#zsPAT$ ziNa$(RIYD_ol$=3`T?iG_Twa!xC(!n4GOHn=q779ozqZKPsG7rXtQ|Li}3rxap(nF zA(nLRk0v05pCeu$zQ~*R;ls+g?oZ=;*N08?@yr%@=3#3g?%UG;tRl(Hzx;`77`f_=}NB5D=49&SJi z7voN3{#_Gdb?DLxBRxE%rx>v~YYk>ay^>KaDI?|`OiJ&Jm;cxJ8Cft+4!+%DEq3NuAA|F2&uktZtTLM!CXQBD*AGEj}G~ z_t8x5tcWZ+EDr27C3NH7y5~H{8fiBAMvP%a=HGpPccs|Pgg(AL_u3QzEw&sF9TRu; z*^_Gbsml~zygQx8&DL7410#B?F9safI_#cOC*~E3d47RT$C?E|kgpSoL&foQ_!*B2 zwPV!IbEhU<*W4i1t@oAaL^JdC_DulE@`~K^| z@0di{TLq2p1NwlJ5|lQYB@Mwq49V(x&jza>Ei#@tt{SpJh@V!|H%u6>&W^`<0~eo-^B+YrdlYbW>hdk%S2!^K0zAmDv8zvkGYK(geg_) zXbtr#xE_ElbXEGJF+{62YQ@v-hV`X`@=e+ zAv;|IHzCS`HGj_^9Ex$fa;O{438Wz0Sm^X*D2`M`xq6^z$VN@14>uAH<2csq5pp|N zv-jTr&Z^FK4pk&1rl!OeHsHOA7$gLQ{&Jm#W{o-h)AM@vr|MDrk)6QnlJb`1s{~Ag zb6?a*qkZpK4h4DVvn8Z;pSy3;PAf>6oDN_ruXr&!Eq6JR{_umxd$4z-h=vH9$Mp}$ z)y&BC4?MbOy@pS|=1aNMkVyDp@#MeE_S_T|k^e~c{V?eIjMgRW>6KuJv40{bE;qBB zf725P*>*_Rf%#hm9;I zsErNtHio(s>&*{Ml(#=3vRf7uWoYNFN2-X66?4AaI5Ue30s58B(RUFS=P!Jm$=|+19ekK_HZsFBgP2a_^qu6huQBEq0z zXJ^Oj`-GK~GruC#-`6KLuAC403i!Kfs&y+9K+Z0AN^G@$!#Gu8vr zb(&gQwB;~m&}GHp>mPswn}1XVNmTRt*v8qD?ajTd;!!w|Gm9!afbz%T;nIZH^BS5# zx3$W0Zn{7QYB{*l{bDQoo7#yEu&^N*7#NoJ0s;cc)pfK21+3=Fvg`S*=DwS-@zJU= z(uuijcE1~1otQwP(3E0W`#!TA-<#Pw)$r2^(+Rl-Uxz5#Q`x#ZO(4w8&QhB03aHv%kmmxdy~8QdFfA&*y}Qw z-qbz`0rVlaP7FUN-Y7{Jae*F<1t+nXz7eN9BLiLcJtbcVd?Ok$B?Wr4H0jv?rgjw} z(Dmhsww<&$GL}wjphv8@TH}9(!+!?pR)nZT`D+5D!q&l5-enc=5UDgOGT_fvTQD){ zKgDhWRxQtdvzr+Z3Yh+E_t6esskaKr;Bp#12MotKkV=7lx>QTaY&=NR1El8k0rSVC z$?x?=GKn@7ULl;&-}MAb zK7*6Er`~c-7*J{$13|mhCg;O=cn+IobUp8jAb7jwIvBUppK+VOoFfAAJ(yd)9~|!= zABXJ$fmR&74mUOcZ`jw`eQ0{XA>ltqL`1+Vq%yw)w0?0|5KvG?kJpEn-ayvZIglGS zQk5pOH<~(CuFZj6X&MV`aR7BJ-oFkc@BzF-+$KPt<^o9|%-*LzxlYzQ^nz(ri$7b= zeIH`12epJF0~FPNm^Kr4Akf+5{ZIoBDD?2&!J@}*BH*%bthISDmzh=p`WXO|i}w3H z>?TX5vzNn{Vtc9n$J03&0I3*x4~Ol~PJjt92D0_GiuF3$;j{R>FrX0eVmJTD zyMY(8_x-s+2EUJ1@bPR(0O0Zuo%_8$hX4;~xGJsd@#gpsLcv}yQK2-R$kYi=rv3P( zNFi(39*}OtQpn+8zuc|+ZJwPm^ngPl2Il4E!7BhclPD-C_V)IjK=PaMPr$pr0LqNm z1Io&&Mms%hK(^G=9Rz2>2@K!C&mXn$ULGC>V`*&684P;-b=FJD!Ie5K!T3C`gZ6+} zO%d>5vH6|$;DJX;*7KD{1M)de5$_vmPMtFX%&w3}oZ^})<297uQErF>2Y64Bt%&~lg@T1e)f0?0=@!sVN;a!oyc#>{ z7S^spHrrnOEw1Uuj~t_cXlB`8am(aVK$at*(qX}Fcie?_J^e}DbG=%4#yJE8KkRn~ zQLqcmK>5%l53q$MU{O6?Cs_iGkLSyqJgy4iXKI5pxyXRbz%PxBjlj3COeHcvo;d(W zB27{YuRX$7uo?cpk!H8T}$Fxv3)%hZPO8D@wD>q-`Nc`gZT%$r`;VZn!?q-p~xk4KV z2;+}GzXi|=P2~d+k}gOxE-$^Gb#KXL7vJYV#a-Gf9_uyQ>R8Y!8YuN^af~x!i?Ju+ zRJhbxvXd(fd8vbmb!7TOrV(d7r+ZR-sp5){#kk|AQaBw9J)&Pq&KlE_)BMvI<`haw z(?ILZ$aTj)xA#c5AGrz&z$P|Ri8CImlxZ@3Q!0BookXJD4GDC_FQ6nzYKfo%^`e+Gx^jrEyX_*z~u_yVI zx4!-sTbSZg-5y3&-%7(Cnd1$`xGA$1u_BvI`Tk!rrtmaeXuN`{(acHkT=k%6CxMDK}M|loM~^nwSflI z7pUGqe%mQQRseQHLc&Y@O%(e_jqFX*DZWjKfoJ$%cmskK8Z0<%zO{{qkB%M)guym| zm}`^kFC094e5EFP1JyE36hNu!?>TeRWa@h~OAW{=bajEGntF)c_bWBPPW0he=+Fts zMF&hw|E;q8z?*w(A&sRHmK3&f0k&u7qgj|gLBbTZr5clJAcw#mR~HCUbOGXblQjmt zc2R)ihfgvZ9t5=b*??4@c?8(l4FIaMa5VGkO@}|rp-9@_)d4>(0HBk67A#;>4h8g3 zMjM^}+{k}8h4ps6e=^ng;1#(D`MnvZ1?$nRPnLRlg)CW0s#sNDqsE^4xiVpC=eu-m3SSrR~z=Z*b1U=Hyul3&KxHB zSZ9tBjEMi8N5JdWdesHU?w{>*di!G`S#bUkF&1RtigAQ~PbdJ)QbttD76gUIVgz9^ z8&7nALLz{`_5czdA+h7gzJ5@P&$>PX#PH4cfDmQS{ZjdRP^2;{4uh0%a7nxd@RI{3 zc+XyUr}%^C`PH$rbFz*=VCkC#D<`LB|CGRyZqYT_thR#5@B8~fqeqGTL}oB>aF+|b zH~RI?ePJS@OmXHabkgY0?-_J?VH<&%*TL4Tg-aY01S+L`ZN>$n`5=Xjom9P|_U6-a0W9$bMijKo;yGv&ry*bQX_W1--2Qw*U!wYf%=4oo zS0Eb7W%K~dIZgm;X*F15TkO>`&&N^>Qq}yg_O9|Ps<&NBgNP_dOG!$1r*xO3gfess z(v8wXcXyX`gVNpIC0)ai0}N;TzU!RzJO9A>a^Cr{KTPa3YtQWaxv%?*2k@^PuQcOw zeiY`9U5zM zC;@-~Cmz?-f+!0Zdg$6LQW$Lh^LO>bM@L6u`u#3(AqS-k^Z@jPy7`Wddt;;^7|@y= zP2B)cLw@ORa|;EqYJ{V5MYztCOj49iEL~sSw~TX!p-Z6CXHV7|nVb95|35)FKq2#D zLB=_@r0!0_htjfwO4JMX*w&SQ1{tVy=D(14hF%{B6NEASK z2)R4DV-Y3R5pWZgQ`bdMGLHkA7!u3l$yj07J0C1R{Qbh3!GZk1UmzUfaamk1`l=U1 z90N5V`SHDf6z9)T$clDcdc?6Eld=k@KmUOM{Vx|EN_=%D;9aq{DHy5&wa4&xvq0P7lV<3!M`F@$4&YU=`|1 zApD;M1i*Ik%Ul*%Z~l+oDYxw*?lpC`-bs#zecaoP#(RD{==38fu$PV`PJesr7+kK) z@lLw~$6_KI0m!NV#d_5z5B}}`0UPJrb}!N>FK@{8tU_6d-2IOt`6M#_8dIqV_1?)A zXKMgQ3|YaFTQ>lN1$ydOtr@)+@d=8aP<0|8vV|-E+bW@fd_}?qxUBJVm8_5G00-Oq z<%gJXZOHi~Rh#!+SE;6a3J>W@t+~YPmefR{5=p*N+FU6tx%M2FPWkg$ronleE8fiR zcZm-py82*uK>r807IuIO}Tk~dDTCP2G_aDB1kvThjb5QO;#C+PEXgXM*^<6o<@nF%@GL5p>*vH zLf{ZmN)1xU^e4HzCxZJejPn_^N`jZapB7lSY$l&i(<%80pAd-Ht?(&6SwB~&RSDp6 zuBEV#d@~T!ix>HF&KgRYL%uCTfTPpO7{52Zwcwo6WQW(w%D{xj{uY-Wc$V! zNhb8HD9rh_sv;rA%G!w&Vnn{0ioN6sMCxXc4y>5 zEY{GWg1;xuzU_$X$Q{j+v5<6RGO9-XGaOEi$HUZq?-LjZ-9v4Gf^HzQa(W5(c*IOtiR_BG9G2BTHBTokw9ocCi?UOi7qpEeVJOP z<{J&b^5aWbon#RUxv~BA;N`CdQI;R6QWQuFFPyC-Si@1xqNJ0^gsW{PKb&-%Vu7du z7sgir7Vgj13c_JIT(G)Pa?qxp0KXMX>Y?@U<@KpxNR8>Rm0Z2f!H0W$?W*-x^N$j* zZGd==In}xAq)W}7vV}`x^V*(>zK>1tbN<@RUt^?+ z@27hTCZh8Sm54Wse5BY)?b&hn>^hF&dLE=yMFu@V5or^}YE)1>lfHD4Mw^K5+IH_8 zR;)ymp>ue9*6Zj!G zY!fsRfaS{O(8Yhe)Q%1GW|1r@yIYTsk7|V;%qvc#;Gcse+(lVxfottS-PyFo=~TEc z?beOCniFws*4l_xTb+AK2Q?>(Q}u}o|Ev}O0|1j*+_d{lxpLHW-Ehe zrS_>OcQfJ^!KdnKoBm%3*NCMus2se;mHEP}=NjGtE0K6v;^@!wn=p%cilU0*ifN~N zO8albK5rG0Dn0<3!*7s=SH+XX@0D*m#P(-wm#&Is&^Y*B$@w0Kc=`MAIXRH)8*ndS z;%C6$vSR#oT=+KuU#@GD=1TPfGoob(^mTgv=B<|K$*ZdzEBj96-EfuTYo;8DYeki1ZUN%@gGBw zBVeSz=4_vGTuzpF)WXe91U}y|v;KH!M{{tj#>l{WpK=-8Ku-q4F^?kS`IfrPrTmLJ z4|)a!{`5IHcU^=g*aFO<=WK(Ive!I6t6rl;2+-46JzOIg+++997>WLf&@FX00DV+- z3;Xb+-y)bzzfU=X45ZGSehGny7rm@tzfW@Hv1P+ixQK>dL?o{+m$E-R^ia4&47-Xx z27t8fD88*QL|9wt3zv4sD9p1tT_RaWAj^qI%^CV zi?xAIh7g`$RA%(J>?a<=P|o%;77-tRGNfJ|Mf^0X&p0Ze<{BEc64heDehW_!LS8GV z-s4p2cWlJ@858?2!#u~!{mCe#7T$G~nkMUy!+fRACod+-I8IkvgIAjC1*I#*AD0FW z52;%A8G5S&mXy}oo+zoub)=Qir%MxoX|EX29Qn;A*_sO_u_qgc5`SX|1vFSWI_xKr z*f#5x+#igLe)S#9M$8VFjk%Jzzh#wh3j5mL`VJZM6PKUa?+Av18qY(t1Poq1o}zrHb`da!WyDU;(nvtu`(!SrMZ;OzhwY ztvPMUM2tC34QQ27udH*-Vj2k{1t%<;xTJ^5-6|9^oA}9WUyQ%WmE-&V8N!Qa`t)-1 zJ`*YO8q_44J?<4^NdpFm{Y46S$oFuEofR+Q${~>A^&_UGDkz zYmKq)J#U0^oo21jsgXTQ$cqsQ{Qk%VS|O){`gs-{WQGZHImxt6w>c!Kun_V9CLVDL zaS*X3>NXrnW};q~EUnl^KjC<3hBS@0GW5t4U#`<`TbjCbwGaM6IyZ@3Fg;uwc~o&O z^+$*S3ou6Z7qPvtRN{`?pRTu5w!sTWu~y>=8+3W8NxYQxTlS|$zCWk{Rfo>SVJdav z^c}#8i|_Tha3D)#JKW$mSA+U}(Xp}T1woJ9%%2*56@1jZ=Oo0a(2-ck(NeHk$Zy|k zyEBB#OVlnBG z$|z^dMK!=60QQRRntk0|)2e4c;6$%lVj?XB^$ZQ}+AiScce~&UkZS#@oztR5T2E_e zXo!yPhHXW1O&@rXFFi&5%)7CkR;HKpyq&c1E*od|tJrs2L+cYU1sF9D0TC>h`IdOq z`!{mDL3$j8Q&7C4dJskprzQT{+L~Cy3hk(dMoMVQDr6>e^P+mRXz~q%1_MSU!?YrEC9<2kLL0NxVMdk6x>OrzBl&`F+WZ#w$5C!otoQL0 zc@O~jIE-)Q<{Ty)Cg|IhKmZ6dZJz$?t&xzsjVNa!R`o!tLfnew;_I98>jPbFJBiBU zl8qzAJ}fK6Om9?McxcsiCii9fc#4u@&ri@`f^ai!7H?E9w9ihfk8Q@M#|hqyy4*&o z$$v`apO1k6+3ZH6mWy5_YMrwDeZtt-+fm^WE9m+B(jrBhb*?TL@bXe|an01Fq*63u zZ+;Oo#{5N4b_;rB`s;vLv5zlC{6_d0E?f~OK%w}3#d1X>wx^5KTs-G-(!8?C|Ev|i zW&q{}oW!zbR7Uk)feH3{^!;VK-W>r2>VZt`JG^J?yA$Q_mL7uH)H?d875C#80&GRt z=-(=K2ODD3X3J@*`k*m_KhD7XrRXpxuzkddBvp>li@Z~@$bKw~1z!*xrQoot2 z0Dhm%c1hxdBVx>-9@fjL(_>Lb?FS@JQUMcgi^Uq6x1`(?nQLL>MZV!Q<*@}J;GF6Z z-o{D7X31KzNw#pHU}Xb_rGd2hHqo|i^%yh}xCQ4q#h8(=|H}x+97`?G?EIFc1jbx$l5P$NlLdYztwrvZ1(Oa;!d9UsSjb%0mk}ArDd$1L~0x zzp3V|qV6qVv1W5Q*4Y`)GGci=2W$abfMm3g>D`*UlA!~hr3U{y&)pr!n8Yx_)C+eG zeSk3vBop=kMqfzTi!EA7gCu_6bFt`sCF(mB)bx`lcREDjw@3gcip7-q%dv4?cBOu3 zY=7L4xImjqU>>bL96xk?&+D1yS8Km6vN%^V>UzBJx-NUj^F@xoLvc&y@gh$b_3g~zTqKgU&$|-01d>{AT6-Lsd$)Kg( zmi7_h5`_RzEFj<~z#MV`ydn{Y$uD4-^ zWYR_S^=&_OueF4{-^TJ3-uya?O?8hi5#x0&xCmYn!g9}b>2x{Ki|%I!{z&`louWV( z^{mP|YCkWZ21#_%QXGk;lR4y2g7c)E7ii058%F5Ra;L7HY$u z$QJ}j*0jchk{csF8xOBP!|lmiPs0)$d3Rc1uUxl$&o{*XPNiglq`##``zU~!|1?9z z_N@kuSbIDY@B;3CtKEARK|pg|mkn9>ePVXq&#s`RQ%wGR7s`*@iDDH-)O~qljlB`* z-0ra3aVDQuWV<@xMoCpD6^?JLG-ZqbsncOEMkUVA11x}Q^;E~1B#h}!h=hoE4!g1* z$q>{gJ~3(27)QhU8(^$Q6`f7`W&g{mw`t%4O*Xjq5D#!ufHk#-?ZU}B8O*L7hg}xJ zdHn}XlB%0Ap%4hd=tr>J02Th*w_x;Yo}plN1wVlkWBJT;C&RAp#Y%@AFZ|4B&(qw^ z(I+1>9NiS&41nP5K|7i`rc%ZimDKogk^1`jCiCwr2p!CnkeX;Y*PEt=`@PjV$I0}U z=RUy2hBSPUT0*5ReeW71cRarYERBnc*oCTs zq<0+}A1sHBh~!6HA{x2Ltclg+@MfX$bX#P8cr4ZR?b&w{hXV~1spt4?mH-nZooTSN zo&oONr;c&!n}7y^??w*N9ln4-`O059z7}b=JOpp=Wyv`Yymxq9vnCSxm#u>m?8+&> z{F`p$D-|J8?lVAlBIPD)ys?2{`lO91 zJ&`YTly{Oi;_?~5*EU~%yE`dz;Atl+HKs)^EH;EYu-Li@ zn4p`nMv%?Ga)rc*xh(tu4qqZgx81nn+-E|5WH;WL?AI#eFBPa?p|D6|d@TiA8V%E(Jx>z822jJv4X3D^9GA5nkODJIJVe-x)m)TLG%S%|`wVXn}T$Rl-cu-X| z@qf)7_Pdx~ONlVdgi8dxD40*JGGLAa=^nvZIS7vJQ1vWw$>K1TpTO3D;o&nr(C^Z-Ixw46Ncu*yDiD z%uV6^+u_brdzw;ZIUR0hv!-&EnnvV${$y48O~Y5u3xY!l>VVjW`H~BqI(R^#`N|ao zBJ4n&aViL#v2?O0tBk~_PB+Tg+fwgd8}$?>XZZL>7L6rGme*iiRs?>T{pLg%c4Ff( zxyE6+)MQ9sid)B#mz&!L(vEb0M85y|rMvCE@G9ve4k8cc56y{NcmS)=aEGh(*kJ47 z#zbux&;wkUy}3&D2Zl4Z2q8S{D~-2vn0QG5VM)|1Dy$80a_lVC#JT}y}C9PfXBmux)F&( zGo+91hnHpS5FA6b2HoCub3Nw__k!&jrnDC%i00i+Mh;`NH3{R`T)=9xRF< zYE3xwMSL+4Q0{SQ4Pwt9FxT|J}O3A5M0(8wVJ0B6kM)k zU;kOHS9MAnD7@LqQ~$BH6_!)W=W7>wSGlqAI0MKn?3vZQ8U2{$L?1Z3^|xoWC!THJJN`g`K=VpV zJWnKNUzgB#dcFg1uRqRny_MaA037JaaJr{n`*rG}CFD6_eQ@SxJ$J#41&fhAJf&i` z>}z{D3AC~7UMh(UXA*OnT-ASAb3SaJ`}hMNR3EeheVcs|d+BcY{6G|IKZX8J)(c2x zddF6c!mP+ywRorV@)_z8X>_>)Kcx=Zf&emu$vf4&Y_)YZ1CQf!Ievse+%N?v8q=ba z=El-6TdzrY(dsAwf2s`KC_O(zQ2P`?nKvQEZ+IV5Z^T#U^FM z>S*g2S7$XgYL50kS16|!kGM-lO{$OzV(`xfxi0f0RZADAV0XN=F z_JUTm*sS>zi=1Kz_RJ)r%Uk=AGgj;ch>g(1n72&DTj)DWWo!E@!ld|=yYZ)Dk zivMKAbwvK&Z2pkFs`66ON*x4GwLTFXmtkerC4DZ_B|5^C@WM=q4J%PP;EU3E0 z+`MhxOlwNxdPw2Si{^Vk5Z8iCrLsC|ou6ivXIlcqMb)V!z)~{{4Y`p(-|OiiuULdol*ztRPqb=~Sz0 zSR+&5S)ft=ugkiR%{H2AQjUQK!&c5mwRfED-XXTu{)VW#i7!Pz@*c|UHa-zycE*#f z#z~28T7H^3;-1qL=x(q=DHlm9Za8Rfv{mq6y4=sCc1k>{sjxyQQ8Dz1Sy?J+Zxk^V zdrA1~`#!s`i>30jD2w@=Ev=FGOOfjc_tyC1Ql*Fh>DBnUR#e%!oq^WS>zRYvi=`P~ zS*z3xh2d{Ub4o*vWhfquNwPn!^=Hd@FpK0RoLN->6_T|}Iz_wSNu?(>r>8=6Bw0&$ zrl#Onn}BIr{`CQQi@bieNjsy)iKDYho*^pT)Kst&&7oV$isLZvu)gk`hLR=+%TYNiR)J24W<0`YD(j+DEo`m8 zWV-<;rB$fL%&^Aki86RN*90IRW>qoZpDsVlsDO!St_-~uXUJTCvrbgueEgKFnbs!+ z`H`T_&Gp?-<$Pnamcw*x&!^;8eQcyxs^(8PNAp?7z1RCHfk2_B5yDWdJxP8NUF;1h za}nx1GE$m^@C@z#pqpD()$MFGR`T<*J)`(65lspic@@}t07ZOpqXUVs&-XTANJccP zn`h4Mqt&rasGutK#c30!DQ4MxZl9^_uyv{%=K7KzWSF&6pQAq_$p~z~j5f<66%*}p zEWkk2`H9un?IcR8Qd`&ZLG(~!mw}(gs(NV1_xV%j(`{YPd=+CJ2U&Fkv&T*BJZ&2# zHrylQc!hunyZ2aFhlR>er_3j*R`N-CIrY+xow>@2T5WqasX$gP&W8~ziZrnr)F&w) zo^B}<@m-pk+i^$MaDiAP3HDwZx`KIM)&v<2X*qTE*jXg;vqE-Pt;iW~ zg_Efovyxe7?o$2JWpz>CpplF_f3<5>v#I+F7r7P<^)n+{m{yR3G9bvm=zH+xlJnTfafVNqONv=2%huT-g5d^Ylz*C^WU_gzZ?EE>cN0BG z?5}53_9kR0J}F5-9Y~ySu^#%9ktBe&72QFeSEuOfwyO|+WFL1tIPJyS*@6OKHEq~S zSZKP3u6M|xZB`e1iEY`T&<*FEMXzHs;708(L|Hv+GT6#>Q5d_e{Gzc}iYM%|1?#NJwdhmUWn1jRU(-M4y&;@9b2qW3Hb(YOy8?sJx7SK!N5v?VaM3=en#r7(RPA z-6@};=52C)Kb;Rmb`cDZ9^pTqdHFHp@=v&wg4R$+p0>icQP4W?q_=D2?O3gImRPnSBndT3}q^aqduIDq!doJ-qWO=^#M?U+(zq zG)ckniI?e6zdp8JYsWoHjbEea6`NKdMr{@nKG&hkQ3letjfLIaHAnBPyNjZOPZfK7 z<;w5Im2X>Dk~>s`qP(Qn;82qzR@@A1ZcS#aI*(os%L}WZ9xxgGMYBiE(sh1^bD!{x zLS@=bkd0yI+!CD(Yfo__C@q24DAw~)Qm<$<4nso}SJ>0siGfj+nN?+l{^Zn<;t@@l zBCe>-{tu2I0jJ{Ok|vMWgSMR8o>Zu};%J-ABH&H?0lylbQ&5yHr7jilZGnL%ZP6R^ z$-B}-K#7;6Zk;O=uKwV(xAF*4Wcy$WAZtxmOA~TM%VakhU;P}O-ox>_7^J({2r(K0^h2f_ zzSQy_H*R<0Ug-}Ml&34@9Zye*q%!&EP$~}F-z+KhZow^4jG8`A7jAO0vghqAzv-NMy3vMu4WD0|1@^K z_V)cuO)We}?%|MJZdfaQN!Ie{Ni92U_VqAo={Zx6oajpZ$uLfeK$WZ+^PT$XJ|G6E zdJxwG#7A4HD22D>f8If3!3?o|U3jhf)QAZ?UFzeBQuTe03`qs|Y9tUfAM zCwCuwp0=QW#ma|dlchI6^QS~MO88y@3N0|YktAAR6o*&1Bb})fGq$uBOEwTBltR5? zc9>x50wtsLhJzlfLxD$SpesO0I+T}}mB^{hlTaf#BPkxd6V^UO!d)`9iFlK__1$XS z#W{1mN$-#~oypww%}_WfD+UY(|4R5B^MUqNU3PVilz`jF;9v|2)NE+!DvjZZKi^lT z%()84g;4V-x=KPoLX|Z(HkLiY1$PY(4VeJxr5C_DS|h(or{f{}`0i6QaW5~_Oxp*Z zg*4lB(9T?}wo&%ea+)@U9TYT@l}3eP4adJlEOqZ06SaCeNwx=+YTQxAXUmb~qNfpe za?|Dm^3LNR$l9vb$A&M{)_+`_`5#5NcdxwlCnqPhW*DOr7FwLkcz5?k@5Hpc>qMf1 zD<`W3Rxi$CV^diU4i0kXg}^;P#iLua8e#p^q5txPp(Z!Cx;iy2 zZC{v&T4*XJvap3vV;BkwN-lXShUS!@$3m0A$DhIg_eKN6`eVDWKV94csw(_;(nUON zeF!U5@(|N{W+dVaxydQx);DeEnv3TBW@Kkk12q?mV=wlbqU5 zVB5wgmIf|J#2bS^1rliY4JI#m`hneZOn^-&C`qBPLn*JemKv!rS%mfPeIXz7)zB&Y zo*@DUu^*Vom*UCjjk)gs{ghuVB67r-i!heVGX&&UV!&Yp1)X@bVj%Qip8yVgjA9e} zHuKXC|9<(E*e`v*?8%j|^#7dVKiA?v|BHX!TK~C6{-4&1C+v=cR%nI>)aDuRkdsoD Kto-mf;J*MZX{rtY literal 0 HcmV?d00001 diff --git a/datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_5.png b/datastructures/linked_lists/singly_linked_list/images/examples/singly_linked_list_reorder_list_example_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe1af9ee036dffc3e875a66d617a6f349e48180 GIT binary patch literal 32366 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Ģ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 SingleNode: def remove_tail(self): pass + def reorder_list(self) -> Optional[SingleNode]: + """ + Reorders the linked list in place. + Returns: + head node of reversed linked list + """ + # return early if there is no head node + if self.head is None: + return None + + # first split the linked list into two halves. To do this without knowing the length of the linked list beforehand + # we must first find the middle node. This uses the slow & fast pointer approach + middle_node = self.middle_node() + + # Store the second half head node + second_half_head = middle_node.next + # cut the connection between the first half and the second half + middle_node.next = None + + # Now, we need to reverse the second half of the linked list in place + # The reversal step involves taking the second half of the linked list and reversing it in place + # for example, if the linked list is 1 -> 2 -> 3 -> 4 -> 5, the second half is 3 -> 4 -> 5 + # after reversing, it becomes 5 -> 4 -> 3 + reversed_second_half = self.reverse_list(second_half_head) + + # now we can merge and weave the first half and the reversed second half + reordered_list = merge_and_weave(self.head, reversed_second_half) + + return reordered_list + def kth_to_last_node(self, k: int) -> Optional[SingleNode]: """ Gets the Kth to the last node. diff --git a/datastructures/linked_lists/singly_linked_list/single_linked_list_utils.py b/datastructures/linked_lists/singly_linked_list/single_linked_list_utils.py new file mode 100644 index 00000000..d0170e05 --- /dev/null +++ b/datastructures/linked_lists/singly_linked_list/single_linked_list_utils.py @@ -0,0 +1,66 @@ +from typing import Optional +from datastructures.linked_lists.singly_linked_list.node import SingleNode + + +def merge_and_weave( + first_half_head: SingleNode, second_half_head: SingleNode +) -> Optional[SingleNode]: + """ + Merges and weaves the first half and the reversed second half of the linked list in place. + Args: + first_half_head: head node of the first half of the linked list + second_half_head: head node of the reversed second half of the linked list + Returns: + head node of the merged and weaved linked list + """ + if first_half_head is None or second_half_head is None: + return None + + p1 = first_half_head + p2 = second_half_head + + while p2: + # save the pointer 1 next node to not loose it + p1_next = p1.next + p2_next = p2.next + + # now we can move the pointers + p1.next = p2 + p2.next = p1_next + + p1, p2 = p1_next, p2_next + + return first_half_head + + +def reverse_list(head: SingleNode) -> Optional[SingleNode]: + """ + Reverses a linked list given the head node + Args: + head Node: the head node of the linked list + Returns: + Optional[Node]: the new head node of the reversed linked list + """ + if head is None or head.next is None: + return head + + # track previous node, so we can point our next pointer to it + previous = None + # track node to loop through + current_node = head + + while current_node: + # track the next node to not lose it while adjusting pointers + nxt = current_node.next + + # set the next pointer to the node behind it, previous + current_node.next = previous + + # adjust the new previous node to the current node for subsequent loops + previous = current_node + + # move our node pointer up to the next node in front of it + current_node = nxt + + # return the new tail of the k-group which is our head + return previous diff --git a/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_reorder_list.py b/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_reorder_list.py new file mode 100644 index 00000000..7dc5deb7 --- /dev/null +++ b/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_reorder_list.py @@ -0,0 +1,48 @@ +import unittest +from typing import List +from parameterized import parameterized +from datastructures.linked_lists.singly_linked_list.single_linked_list import ( + SinglyLinkedList, +) + +TEST_CASES = [ + ([1, 2, 3, 4, 5], [1, 5, 2, 4, 3]), + ([1, 2, 3, 4], [1, 4, 2, 3]), + ([1, 1, 2, 2, 3, -1, 10, 12], [1, 12, 1, 10, 2, -1, 2, 3]), + ([10, 20, -22, 21, -12], [10, -12, 20, 21, -22]), + ([1, 3, 5, 7, 9, 10, 8, 6, 4, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), + ([1, 2, 3, 4, 5, 6], [1, 6, 2, 5, 3, 4]), + ( + [7, 0, 10, 13, 12, 19, 1, 3, 6, 7, 4, 2, 11], + [7, 11, 0, 2, 10, 4, 13, 7, 12, 6, 19, 3, 1], + ), + ([0, 8, 3, 1, 2, 7], [0, 7, 8, 2, 3, 1]), + ([7, 4, 6, 1, 5, 8], [7, 8, 4, 5, 6, 1]), + ([9, 0, 8, 2], [9, 2, 0, 8]), + ([6, 8, 7], [6, 7, 8]), +] + + +class ReorderListTestCase(unittest.TestCase): + @parameterized.expand(TEST_CASES) + def test_reorder_list(self, input_list: List[int], expected_output: List[int]): + linked_list = SinglyLinkedList() + for data in input_list: + linked_list.append(data) + + actual = linked_list.reorder_list() + self.assertIsNotNone(actual) + + # since the head node is returned, we want the values of the linked list and not just the head node + # to check that the actual reordering worked + actual_list: List[int] = [] + curr = actual + while curr: + actual_list.append(curr.data) + curr = curr.next + + self.assertEqual(expected_output, actual_list) + + +if __name__ == "__main__": + unittest.main() diff --git a/datastructures/linked_lists/singly_linked_list/test_singly_linked_merge_and_weave.py b/datastructures/linked_lists/singly_linked_list/test_singly_linked_merge_and_weave.py new file mode 100644 index 00000000..3cd5fdc0 --- /dev/null +++ b/datastructures/linked_lists/singly_linked_list/test_singly_linked_merge_and_weave.py @@ -0,0 +1,53 @@ +from typing import List +import unittest +from parameterized import parameterized +from datastructures.linked_lists.singly_linked_list.single_linked_list import ( + SinglyLinkedList, +) +from datastructures.linked_lists.singly_linked_list.single_linked_list_utils import ( + merge_and_weave, +) + +TEST_CASES = [ + ([1, 2, 3], [6, 5, 4], [1, 6, 2, 5, 3, 4]), + ([1, 2, 3], [4, 5], [1, 4, 2, 5, 3]), +] + + +class MergeAndWeaveSinglyLinkedListTestCase(unittest.TestCase): + def test_return_none_for_empty_linked_list(self): + """should return none for an empty linked list when attempting to reverse""" + linked_list_one = SinglyLinkedList() + linked_list_two = SinglyLinkedList() + + actual = merge_and_weave(linked_list_one.head, linked_list_two.head) + self.assertIsNone(actual) + + @parameterized.expand(TEST_CASES) + def test_merge_and_weave( + self, list_one_data: List[int], list_two_data: List[int], expected: List[int] + ): + linked_list_one = SinglyLinkedList() + # add the data to the linked list + for d in list_one_data: + linked_list_one.append(d) + + linked_list_two = SinglyLinkedList() + # add the data to the linked list + for d in list_two_data: + linked_list_two.append(d) + + actual = merge_and_weave(linked_list_one.head, linked_list_two.head) + + actual_list: List[int] = [] + curr = actual + while curr: + actual_list.append(curr.data) + curr = curr.next + + # perform assertion + self.assertEqual(expected, actual_list) + + +if __name__ == "__main__": + unittest.main() diff --git a/datastructures/linked_lists/singly_linked_list/test_singly_linked_revese.py b/datastructures/linked_lists/singly_linked_list/test_singly_linked_revese.py index 814c8cf6..43ff4a59 100644 --- a/datastructures/linked_lists/singly_linked_list/test_singly_linked_revese.py +++ b/datastructures/linked_lists/singly_linked_list/test_singly_linked_revese.py @@ -4,6 +4,34 @@ from datastructures.linked_lists.singly_linked_list.single_linked_list import ( SinglyLinkedList, ) +from datastructures.linked_lists.singly_linked_list.single_linked_list_utils import ( + reverse_list, +) + +TEST_CASES = [ + ([1, 2, 3, 4, 5, 4, 3, 2, 1], 1, 9, [1, 2, 3, 4, 5, 4, 3, 2, 1]), + ([1, 2, 3, 4, 5], 2, 4, [1, 4, 3, 2, 5]), + ([1, 2, 3, 4, 5], 1, 5, [5, 4, 3, 2, 1]), + ( + [103, 7, 10, -9, 105, 67, 31, 63], + 1, + 8, + [63, 31, 67, 105, -9, 10, 7, 103], + ), + ( + [103, 7, 10, -9, 105, 67, 31, 63], + 1, + 8, + [63, 31, 67, 105, -9, 10, 7, 103], + ), + ([-499, 399, -299, 199, -99, 9], 3, 5, [-499, 399, -99, 199, -299, 9]), + ([7, -9, 2, -10, 1, -8, 6], 2, 5, [7, 1, -10, 2, -9, -8, 6]), + ([6, 8, 7], 1, 2, [8, 6, 7]), + ([9, 0, 8, 2], 2, 4, [9, 2, 8, 0]), + ([7, 4, 6, 1, 5, 8], 2, 5, [7, 5, 1, 6, 4, 8]), + ([3, 7, 12, 2, 5, 1], 3, 6, [3, 7, 1, 5, 2, 12]), + ([3, 6, 7, 4, 2], 2, 4, [3, 4, 7, 6, 2]), +] class ReverseBetweenSinglyLinkedListTestCase(unittest.TestCase): @@ -11,8 +39,9 @@ def test_return_none_for_empty_linked_list(self): """should return none for an empty linked list when attempting to reverse""" linked_list = SinglyLinkedList() - actual = linked_list.reverse_between(0, 1) - self.assertIsNone(actual) + with self.assertRaises(ValueError): + actual = linked_list.reverse_between(0, 1) + self.assertIsNone(actual) def test_raises_exception_for_invalid_arguments(self): """should raise an exception for invalid left and right arguments""" @@ -21,32 +50,7 @@ def test_raises_exception_for_invalid_arguments(self): with self.assertRaises(ValueError): linked_list.reverse_between(10, 9) - @parameterized.expand( - [ - ([1, 2, 3, 4, 5, 4, 3, 2, 1], 1, 9, [1, 2, 3, 4, 5, 4, 3, 2, 1]), - ([1, 2, 3, 4, 5], 2, 4, [1, 4, 3, 2, 5]), - ([1, 2, 3, 4, 5], 1, 5, [5, 4, 3, 2, 1]), - ( - [103, 7, 10, -9, 105, 67, 31, 63], - 1, - 8, - [63, 31, 67, 105, -9, 10, 7, 103], - ), - ( - [103, 7, 10, -9, 105, 67, 31, 63], - 1, - 8, - [63, 31, 67, 105, -9, 10, 7, 103], - ), - ([-499, 399, -299, 199, -99, 9], 3, 5, [-499, 399, -99, 199, -299, 9]), - ([7, -9, 2, -10, 1, -8, 6], 2, 5, [7, 1, -10, 2, -9, -8, 6]), - ([6, 8, 7], 1, 2, [8, 6, 7]), - ([9, 0, 8, 2], 2, 4, [9, 2, 8, 0]), - ([7, 4, 6, 1, 5, 8], 2, 5, [7, 5, 1, 6, 4, 8]), - ([3, 7, 12, 2, 5, 1], 3, 6, [3, 7, 1, 5, 2, 12]), - ([3, 6, 7, 4, 2], 2, 4, [3, 4, 7, 6, 2]), - ] - ) + @parameterized.expand(TEST_CASES) def test_reverse_between( self, data: List[int], left: int, right: int, expected: List[int] ): @@ -70,32 +74,7 @@ def test_reverse_between( # perform assertion self.assertEqual(expected, actual_list) - @parameterized.expand( - [ - ([1, 2, 3, 4, 5, 4, 3, 2, 1], 1, 9, [1, 2, 3, 4, 5, 4, 3, 2, 1]), - ([1, 2, 3, 4, 5], 2, 4, [1, 4, 3, 2, 5]), - ([1, 2, 3, 4, 5], 1, 5, [5, 4, 3, 2, 1]), - ( - [103, 7, 10, -9, 105, 67, 31, 63], - 1, - 8, - [63, 31, 67, 105, -9, 10, 7, 103], - ), - ( - [103, 7, 10, -9, 105, 67, 31, 63], - 1, - 8, - [63, 31, 67, 105, -9, 10, 7, 103], - ), - ([-499, 399, -299, 199, -99, 9], 3, 5, [-499, 399, -99, 199, -299, 9]), - ([7, -9, 2, -10, 1, -8, 6], 2, 5, [7, 1, -10, 2, -9, -8, 6]), - ([6, 8, 7], 1, 2, [8, 6, 7]), - ([9, 0, 8, 2], 2, 4, [9, 2, 8, 0]), - ([7, 4, 6, 1, 5, 8], 2, 5, [7, 5, 1, 6, 4, 8]), - ([3, 7, 12, 2, 5, 1], 3, 6, [3, 7, 1, 5, 2, 12]), - ([3, 6, 7, 4, 2], 2, 4, [3, 4, 7, 6, 2]), - ] - ) + @parameterized.expand(TEST_CASES) def test_reverse_between_with_dummy( self, data: List[int], left: int, right: int, expected: List[int] ): @@ -119,6 +98,42 @@ def test_reverse_between_with_dummy( # perform assertion self.assertEqual(expected, actual_list) + def test_reverse_linked_list(self): + data = [1, 2, 3] + expected = [3, 2, 1] + linked_list = SinglyLinkedList() + # add the data to the linked list + for d in data: + linked_list.append(d) + + actual = linked_list.reverse() + + actual_list: List[int] = [] + curr = actual + while curr: + actual_list.append(curr.data) + curr = curr.next + + self.assertEqual(expected, actual_list) + + def test_reverse_linked_list_static(self): + data = [1, 2, 3] + expected = [3, 2, 1] + linked_list = SinglyLinkedList() + # add the data to the linked list + for d in data: + linked_list.append(d) + + actual = reverse_list(linked_list.head) + + actual_list: List[int] = [] + curr = actual + while curr: + actual_list.append(curr.data) + curr = curr.next + + self.assertEqual(expected, actual_list) + if __name__ == "__main__": unittest.main() From fadd8c247286cba250156f400c94ca48502a98d7 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Fri, 19 Dec 2025 07:22:43 +0000 Subject: [PATCH 2/2] updating DIRECTORY.md --- DIRECTORY.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 797ce5f7..7ef5db18 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -255,13 +255,16 @@ * Singly Linked List * [Node](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/node.py) * [Single Linked List](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/single_linked_list.py) + * [Single Linked List Utils](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/single_linked_list_utils.py) * [Test Singly Linked Delete](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_delete.py) * [Test Singly Linked List](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list.py) * [Test Singly Linked List Nth To Last](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_nth_to_last.py) * [Test Singly Linked List Pairwise Swap](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_pairwise_swap.py) * [Test Singly Linked List Remove Duplicates](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_remove_duplicates.py) * [Test Singly Linked List Remove Nth Last Node](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_remove_nth_last_node.py) + * [Test Singly Linked List Reorder List](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_reorder_list.py) * [Test Singly Linked List Rotate](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_list_rotate.py) + * [Test Singly Linked Merge And Weave](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_merge_and_weave.py) * [Test Singly Linked Move Tail To Head](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_move_tail_to_head.py) * [Test Singly Linked Palindrome](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_palindrome.py) * [Test Singly Linked Revese](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/linked_lists/singly_linked_list/test_singly_linked_revese.py)