From cfcc2a3ba33475e027d9b47406c7a555a7cd1b24 Mon Sep 17 00:00:00 2001 From: Marcus Mohr <marcus.mohr@lmu.de> Date: Tue, 14 Dec 2021 18:33:05 +0100 Subject: [PATCH] Adds draft of notebooks on basic inheritance and virtual classes --- images/HyTeG_GeometryMap.png | Bin 0 -> 31752 bytes images/OLAS_Solver_Hierarchy.png | Bin 0 -> 58165 bytes notebooks/09_Inheritance.ipynb | 717 +++++++++++++++++++++++++ notebooks/10_Polymorphic_Classes.ipynb | 435 +++++++++++++++ 4 files changed, 1152 insertions(+) create mode 100644 images/HyTeG_GeometryMap.png create mode 100644 images/OLAS_Solver_Hierarchy.png create mode 100644 notebooks/09_Inheritance.ipynb create mode 100644 notebooks/10_Polymorphic_Classes.ipynb diff --git a/images/HyTeG_GeometryMap.png b/images/HyTeG_GeometryMap.png new file mode 100644 index 0000000000000000000000000000000000000000..ad320f5302fab7a9b215372d40da277595ed1a0a GIT binary patch literal 31752 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%0AR5u+g2npar# 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 literal 0 HcmV?d00001 diff --git a/images/OLAS_Solver_Hierarchy.png b/images/OLAS_Solver_Hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..f81f397efc8ecda2089d6f10e6a88bc19a51af96 GIT binary patch literal 58165 zcmbq*1yq$?*X;omkPr|F>5y(Dq?J?<sY3`zqks}hH%J|%L@7Z;N=gKjkS+n~4pB-( zx&-OC>+$`*JO1(A|K4%$xV+;X66c)f*?X_O_FQw$^@MBQRv{*!AwZ!}#5Zp!YNJrt znee|3J}&%5nwaqs{DW(urlN>CMgDtJoAUyGgXeNnT?y|S0RbrmY0jDDa1@FObyM*= z+T+#Agr@=8x*2!FI{-^jON@fbi3=?}pm^mbIpGCkGI}njo6hQNrt#WWvQ0jk@Qn_= z8;WD2I7`ueQLP)TX{@%v<AfzHX8uemX>R{SkUhNRdSLV8)AtYFCrNzsZP?i1?TtOh zd<KJj<(s|>96E=5mwRGyiH!xm+KVGEkdcwaT194^zov+u3JD3hNuS=c`1K>l%Ia!% z^mRqAXPda}EG)L|R>FC#LlVr)%o~6H#7p9m$uKyYv9RQylb4rg3Z5>wV4{ew{`aRD zD2KyUZV2;cD#F+0O9@)Y#hw#&a>B*PZiZUNA$M`PSy)vO-8q!?=w_OTnrG*5)-h{F zejEG}zMh-^mpdG077`L#n5>n$b?a8&2WvH-)8pMLTj7^PDPs2Wv#n8^O9e$NqN2J* zb00o@m|k5azH;S?%gPwp{hn7`uHV!WcpH!Qw+ie=F}cym!1EPaqiDlCw|-sELtAYA zXh{-%pjWcUar@OZRaJsXuVucj6mgBBIoZ8woV|mCrMFRxa&@2GM&I2Ds&-$uXn)S8 zTj8vT=4d~|_)|^sGS|ynq0gR?BCnLGm#weT<)(;?igMlRuo5<|_oKHTFAdbrQ_Q)Y z>NMYz+QvVcugi0poxN#jsC0-I?!O7{<<ZgJqgqE<Zb!!LiTd9ocVpK%$Zm3v+*mrJ zsEGC)7#Jw_JN7cJayd8On<gMM(bIDtW#-@z9T`bfo1mty&R2$^l<?SKf)_rEiwhRB zA4d<oCe`w79Nbn^bp6s0h!dNb7*=B0#v&~I;q!KBsR$}SJ1@Afu+XIQj-g@3n>TN| z>~YVYHE(=!)}YwzI@{`5vSAKn@my~h8`E7RID4?Y7$o{&BrfTs{`8pS?Af#U#Ka+q ziHRni#55xKD$#U-hK0%=9#<t@m(UNZjQPXT(ir(o>mmuM_|e_bWLl{$$WjxwTYb17 zfEuguymEAOG(9~XaGqW=&fvZ4@<?$>$#pdPBBg-IyTh8Axdc9=P~8H(#;z_R_y|Q! zP0jE>G}P47TfK5^hwJsHLx&rmY!%TJ8%S)1>y8qOYj|5~+BecBVeH}!82%MH8xCF& zp)PZ&dPO8E_rq`aBSZS5=$dei@;1u=mBt|X-`Gc@^)lKZH#9xHa!3e?OJv@LZ{Y_H z<`kKazBgF;=1!)b{OKlr_`hO$_-9eQHYtN2Wwl$&k6+!lu1c0SY%dlyPx*@mkZHHE zvOGTnp{_-tdb7Rtwah#jyfTrWEmMh*kcf7KxH-%{EYp$@)lh0Hv9Yz)yf#tIc3Vvm zeT>`)_e)ajwwTlKLL&_p?j>Owk!Q_=TW5W?`$@N#{tyunJtgtZ(&W6XYADWikznlG zH#Pbo%=TvvK{7Jk=ia-IOMDM)&)}ssl|8Us`1(<%HPZ9!>({phMdQ`zV=%ewPv>H_ zSTb^44z_jAoK2Ot`gt}fnZ|r?gJG=HR$9`nG+vU1Oe?C573N8UNuY?--28sAb>}(b z%Ex$jtH#W`sHuqP$BFOVYefc`&u4K5xnm|aHrf<%#<r0{4lT_$p^5t9k(Xwl@ZVj@ zidI%c({75$kj2XWn02&l4$Z`1uHvbwUAdLC!9D3$E&lEujVgT<CRcA3xi4XSW~c3i z)0yR>nCZPux&D$&K6dq`h?(Z<=CP#H1P+$`Gtv-8+m3c+lruB;OB^Ny_Lhq-Zm+Ed z^!2qbe5+u!68<`?e@#)*%MwE1z{otE=39AcYn5yLbWbX;ho@`v!5>SPAXs;;Ie0~e zmw;S7X=7s!Y%j9!)rk=mlS|?5Q@+G*ZhG1(Fu*NXk=)6ScCLm5zIt=G{V&~opL4Zp z1zqjr#>T~Bk=d$kgj@O(t(x5!O00t1l4gM@wN$w{yM|jxlsao(CK=hV6a*f+NKu93 zM-WNVvsXSOI&Zg|vu^sDo13${^0H)jML<Se3W<!Q^ZDIwvhw{>#HgveqGq4s*f%3J z`Up(!ByzWs>ID?|#8Iu!*$(^O1Paw1@7NPjZ#)?)!C)2~kt^K43+uFA&lpNb<uIM< zZqo8fg2862PjSgWQE?j|l5oEBkR4y$!IGffyQ{%eCN@!Ne#ueuuOD#1O|WpEg_s@Y zdi1D5$oU@Ug$vq3j+0Ecl82~paeeGAkZGwSd)V~}40LH&%b@l^u*$8hZKfH^W~wgl z?>z`1vo&&fyql6Fv4v+`|2jHGmgdRk?BRwDYz97Lp2`xGGh32HNs5S9Cu{lqP9#wF z-^Opi2r=9NFa>tmwBo|k>x@s-5}%itHJTw|VkOK#3@O|G?}vY_I~JkjkG!@#qPMr0 z^L1gYUvKFK3@-TZU%zy8G#{?7H^j)9G{Ni&xvyQLrX8I$wX8qhq17ug;d70YEO1|+ z+}PbsL{2c})nmTfihnvbXZ@R|<SvGW3P1cNcDB~r{h8!|j+&~fynzArMS_qat)*AR z#e!ev9_Lw-#xfw6Qr0ObGbs7Nq*wT~>CN@K8}+ALeOcizhf27Iqv@rxqBZCD_V;hn z2g25bQHzdDRIA=ft)fWepZGkV#v^El7RX~IBhz9-mX&64W9I77yqsLazyQ(VZZ8}a zd|A<O1nM?iTS6%+#%Sk>7}Q+7VA<w}CtfkXF{ttJj$$}wNf6Rp2F>h9;jLRQKb+Nn z|GlLn-tl_+0<-I7$a)q?K(Nxuop4P0isP%NB+oVk-tpM^dQV%0g(btT0aDy$F6J|O zMY2SuQ^d&L*;!9(XE6*--VV;==+>TmY^`2!^H5zeK1M}3{D$z?ulq?ttY=hWOd2`T zJj}m;lKtm{T48+8F%i{K=g7ro8*wO_nsb`JRu&G$!ugLat*)Us>;M^*h@pm{(D2T5 zU%CWuMm!TcJMKiadsuk*Im7aY;gHWw#MRkfm=C^HxB31_$i(-LZr0nkOJ&A-dXzP_ zwdVKkg~F`<=z4i2+rb---y}JIKiyRtvf)R_AniqH_+(E!NbYsvH-36lyV*>lV{SQk zW68j^>C>ZGLB~mH&UjT`lN#!e_qw^ojz5Q!-?(|R(a5nj1Q5Vt*>^lfAC#%7=|t(~ zY+K^kTC(T^r`@%?ymvliExAQwmPB5X%HN=Wf?1Ny7KVNMQ0Z2euFw8l3boj~l%d$m zR5UaMa&mGDhYt+cUo46isb)VZDJgL<0Z_0!T9m1tBBse5zc7?XzV^LxYi!Q2%r4~f zXT_xC<b-5v81LApN379|a_@K5mFHF!?hI~EtgBGSoEN!#IZM8iOsgznP85bXcXG7F zKk4VqN<cU~_OXre_U*##X!LwmcDDKP!Jkhqix+y*<V-E9Qd8+s4d1`hUAlD1i!U)b z+0c%R@A1a;b$B5&7uPv}BA!dWg5u&T=H|=@MoF8Sn@iVXWsu>>@AOE1jmaNMSMWFM zdlO%^sc=WJp!NS5Ib^RW#4yN^Qc>xzeEjt3>QyNz{f>k1+<Sn!GPs$88}fCvsO9{~ zYig>@=X-2z#)phyne_g@F^2RX*)zDf7Ojz&FflP<hJ~&1Jo<w7d*~+Vl+bM@kr%YG zd3e#yu*FUN_Q_?BU9KkZ)1RySt_c@^a*Lg36FZ<gMZCGUm*o8U^9z0H3gL5x6%NF- zw6uy!O6C9%t9m<)9KL?AHYl^B=<4b!cAAktbM|b!K~Z2Jmh9<~bIs|=p++r<@4<Fs z9GA}Y%nTMeIr;Yb6r*KZbPKIxP5N$Cc<#;&@hwGk-iHsr1s%RCe{P#<4JCHWbexLT zR>?2n_QDx_;q{z0z)otiK@t4`0XF&4qwllLhjJZH>$DbSTvluj_d)=>o6OpJvE*MA z64DoPnpQP15NS9$J~byR%u$s(d%BS4!II&Rq?MfV2l~7|J|oR7b9Yw8Md`bfH<h!K zvm`b837I>5$jIUm6#hDi6dRe7qhkdj^QMBmUnv#lcHD`QlyGRV)ZBv?+<-Im<9)|A zfHB1nzuwq8sN?;cUqX;H*aU;w*!f2LXs*Nl%vtpx^jnaNKO=vUf4Y{WUm#jz`5J?H zO;ZG?ajlXH$I@C-OysL}7C`tKQAk=5@ZNnLR`1U_>5+LwuV`mBN>$@#X8(^~x%lE@ z4;=O6Z6&vzBA6d%A79_>=xd5zW-zk0@zTYsa0)a?t=BwNiU@6L2(VO^&4V)o0b1TW z#@AGzUZ9t%J42QDYhn07)lmNuowv7l9_zo7_bqvR-n(9?0)58TqkSA9`|)MCLcGKG zFV{Tw?kFn0Qj(YF9xpEoOq=T5*l|-n+)>YtR)K6OoAMf?n%!@+d2(ouPbd{--RUzu zyY+l1)-L{A#m8dz^|JsJvF3X@8po@cLy0`ennNWZ7e)<jVlZ}34dDFco`DSc_SV;@ zvu&rJM@?e_tG(~%u?`csuUVN-)kTa|?_&3)R%1Ck>v(ucntypl)t{q*M}2AYHGm_3 zD2OtC#C1qV(pQuDpLkMTzfL~0@*U1UQA1T#v7OcGfG=MnFj2Lk%2Bua>g&mIiI=eT zM{hstB+ib$p@@C~`=DQLZBn;s)E(!;$1O4%$xHN-P77}bvffU%og7n<UGl`r(J)nN z4rO<8Uyo!~sA?K6Bae*ol#nHheGQAckRBY2-aGIk*3pqDw@-PRzz63PIx{P0-t6=w zVyt2vJ0r8GX$XDZeYb~N`V)_dcQ+Y3JMSA<Y~*kcaGrNC+g@<&f1gVH<OzGzz=w30 zx?ljUr?S{yWI4Cl8a{u<cW~%M2EIA|Ae!z$JZ51LZhP2WCEB?0b9l<;@6O)o6vxTX zmoG~o_r|9f1q9)pBFlDkuzcG1<qIkD_KoTHPR`!viD`z`*Gc|4Wb=DjSbEHVb!igO zAF$LN{qFYi{upIg*ivG78iv7q1S~O?u5CNLG=8o*)U}z`QQCB!P!a$<<gNUoatE34 z{VjKkfvmc{g-qsW?MqWS@jb6=12;B4Vj`tuA|s8jN>zkZR9p!qS|s4%G0BHgn%Kg# zMMg_z`_HJ#=G5sL0>$=v{U@JE-Y)9^n6k5)Lq_LA5FVa~oXOO3btIw0&dMobBY%Ol zyN6X=?(6*@5oyI1EzD<d&$oOIhxpgA?|D@j`sU3GOk@qp(vsD~TWYqj!s|x})jv=> z4WPD`FQi$Hw3Qb3spF@;a*SAV^(GMBkH3B;DTajb<jL(H9r035kL{v_ERCn<hKY%3 zlW#z6fPn>G!i!Rl@Z55<INTXDDC?jyF`0k`&hAOmkk{<Hx$@PSLHLrOi;Z|B!vx{o z>Txwd?wF^LYx0)?R!({goH^VzZ4#e~gp?;O;F`r93+n@OgijzDE_d?jtV&w~waob0 z$;lp@?_=mC52$S=6SOj_-W6*`wZEu9Ab*MHmej&vPS8*+_rzRh1?feX3jp-f^&SX$ zIO!voov5yO0jL|;hfYqdyYXqJm`Af>Gfg41_yozp3^Gf%B|3WrK2O$CA#a`UnP~Xf zE7rWw&#%ep)zH**3%O{P9CA@ksY9&R$bHIl=eYJ}!nj~U_*}D8AN{eT5pz5tHaE}N zoDQUc(h0faS}z$Lfwr4~LUFG4z-3>&d>J7=bwrbw_Z5Rl!omytrLE${EsqaDn6|g` z&GM?(Ho?luyXp1y=vY?MCrA}AOGehOgG7_Uz@YQ=>_-L(2@+B=A)LSPcQJf!j>2NT z$G~TILI_U&40lJohu^O<tgWS*n>A#@266>#u0<c4?8V5c@?PP3AVIa8y2|oM0$i7+ zy?qy{(V*&+hg=P_J61en4;AS%WS(@fV6c)*Y)au|tRvU)A!HYA`kUmJZcw-_p;^T2 zC8N{)4&ZDMZ7sDeYV0kdN+Z)y{Cj2&Kdx}Re?8p*PeI|5+uEz>U){87^fw(tLhK+# zHY3s1ndsQ~wUTe-Jw3682FI7VQ0=yY;=Vr3ztA`6^|PWP0U(F6qOYUZffyRL5O=(1 z@flNQ({~Nf+@#XrTbQ;1fZ1Z@4<!O2s=xH~v`shO-E5(fT^PuAkmm4fi>B9Bc|-6+ zjs=qiWD#0z;!`YEhy`D=h){F6y^fjv-K}+AIe*!6Q@-v*hdXzJLqaaKMm}mBE2-^& zcW0He|3I7bBJv62wcZs&WSAvBm<_{)rD2gsy2|q-BT>cn-!2*$j(lI{7Ny~X6pC4| zlM037uAx0o6fi=#d2?0cSW^8H3}#8{MEx4N6TxNa24R$Z$!6cmxd5#O4#ld*C+cJD zzgcXoR<t>7-D8)QNrk07Bja73h%CV{6QI<xFKPahA@U{X?Z?NMu6kUc5f_V>)IPVk zD6w~PI92Sq<>;|-EhLuJ+pHtb&t|aIaLER?2M&__E^KbP3qJlSDSi0x3LLWXnab?i zD%`&g{<u6GbGrDgyycC#0(m6k6zy#5pP9Z}@HT#AluWWGV#?9RBoLkW=U<<>a>X)_ zb@7#4T5#C||5gpT<MUEdJZEsd%zu7iu<3jA%jz;qMsg=oaG>ilSjN*8oP&dhB3ZbD zuc3#miD=7laq!+ZtbV&=Q13_NcW5u$8togRgw_zg^EE~^zTK+Dq_wpbIK4ja{gsu6 zx6)+k`Haeg0pQco(G`1aTG)sr=k(~spVUsp)M0WRke$%@<HreCMq}fP%L1O<@wjqF zq)~py2|rdV#GAf<zi4hgxG@`Z+6Vz*Zu7;IEB+>ay0`sQ9et*96t~umPGR$=Gh<)B zGV}AF_w@9{L`N&%yT?w+YoOVZm)4VcXgu!ClJC7Ij;BRTLFG;>E4vJALg7y(5h*Fg z2csvEi6#dEzj`LZ-``!`*y_a^t8!&A@tnKU{&<+9Ih0tz$w|=1$7eg)f2z(mNz9&x zmzUSf#s>evg9m5MoG}B&QTNsMW;BBgfxiBz>Yc=b0v`CmkZT!;QV8{%m*wh<yKG5f zFz*%GqRSyQao!=Tb><*EJzh82Uf4W`R9%ki4w&$Ld>;LS44oXx=T`Z>p~SSf@v7OQ zHLKq$+6J=KB2p77%F2}N?DE%qy}Ts9PfVCwSYW%myIWaV#Tmo|1>syEC&xmChle{k zIiXNi_wF?{H{-m0`*vZfUJi&*m(DL%!tV@9uv4Yn`ODvDTmS|Q)6j6OcDGtuY1x8{ zEx#6${$*kJwc9?MEgEdH^*;NQ5HffwZIsU``m?f#0N0+cIr?o89G2GXy<W*G=0+xa zV1xhAJ_YT~kpBsmnCa?OYJ}meua|RMpNxv25}-`sU}8cMgkVcZNC4KC#>U20eb+WP zNFH{c9vcOKx)Hud3A(Qt^BR>C!HYCGFYawLlSJ^{x3vu?=eUjHydz)m;|r%6mlhv8 zCU=}G-ZMif;wADwROyNrDf2@}<&QSo)cY&9!eBG<{QgalFQYFn|I}l>mel;dxZ3to znL%*q>jCS`Ho|k~$SC&93@2->)xEd3+U(Ub`!R444D0~(r|N3LN@M;fPoB68rieaZ zk5kPimB+k#Mb}?yJ9uGP)@eFm<M;0i^7u2Wt9(1_Qv$)HO(P?Exo9Y5Nb~aYGJv>j zN$BqA;NJ1;&rq7X=li{G=>dGFQTnQ=s0fJi!i~p@+e1AYUpQmWG&S`sIP9Dwkt2kH z`;!y%IY{Mg&b?)y6ZpvU|6pu<j_47N!1vHEdTag#9Q;Ome?~n$mJ1V^6KVB~&gUEB z;^I0zdW3M<j~4ov>E!(Aw&r_B)qB5u38<`;Ks9uAy&D?be*gYGvK_8p$GV*=8RB<* zfQ15Lm?^Q7`9*u*yE|9DS32j6JyuUXaz1nXC6=`+GhNqp=y(4gMv2E+s^!-eb%SOh zgw3{oO}!bGt&uVSJifhHfE52Ycy$3Waywr6EMBK4I7b@_L_p6Sj(G~)Rc-Bv*ShMl zL4q)$z_AHBnNd+wJ5i@5bF#2tKdv+`^0a^W5XfoBLsus5PgJ=oxVe?D)yBtDtWDL& z00qt}E>5MVr^hy8X=nG;VWP@>XXUHY<HzzrxFn2n4<ItWRX8rk=j2|dOudcwMk@QH zG~Xgs5nYQQrQ}puUkd%Aw-mJb%Gm=<TwFMKBqxE(qiPJP1N!&w@tgR03Sr~8169%` zJRboFSu3+HFs$uyRu(4!4i818ZY0gzQGAe#!Qe;Ih!ViHMjxCs2H{!m|DL;X<3@mL zwmj^>k#~1+pw^#|W?*0#E4Qabb5pRevbv52oqP+x!YOuJ9k&?7Bccv~$~Sk|?&0@O zWc>X6G2Pqi%ThcFy2fFuio<H`XYd?Z^KTF4;IRt-#zyBq4~n6^bg5x%3_nG@K1kMA z5^Yn<#idHbSVt-D@I6R5vvDZzc%xrM;c2(?4@GRf_tFr)7d8geR)w73N*Ujkk{Lef zlap6an3<o?*-c8aCjQAE%qgVKpJ;iwvq~-YFv+BIs?r(HvNiJh!-u>dK7NGY)`25> zW>7;eBrlH(#Uv_9AuB6;)phBj@!h**baX^e_)b(s?97grJpgh~=Ev-8f8JoToPe#Z zEyOf{=C-~(9gZW|v{lvfjCXfz(IZ~lTIc}<dHH;6Z^bO~PB^Qhpf>Ew?rhSIupz_2 zxm0Qx7|-J?^w^4|b|fV(4$E=9=vjiBX@$d;E9AyCdqOl~B8>v|pDpJ)I6t?VH1iZm zN4&gp=<L(St=TWEDvH<18Ea+X+0CgXN<b*JHI`vvWrb;y7lnF8zJMY|#{Oi~lxt(> zgh16=c4*08)xkWSATY3c^KiYwX;E7kDMh?@4>G-X-Qqt80Jjz&XdRbJV?TLBD?($R zHwa3~n|^$RAg=Mm>96seZF|4|qs0nP0>l1(NXt{sjg8jaXU}Z5*Vluy)hIk>&Q_~_ z4Li79Kyl-y){oXGqRVU(3XdO$t}XNEJ2VZI)((+{W9%s49Jaea?o2USl#{quvrtv< zFfneiY2he+>cdkzLPej7fk?c5J+Nx%3C|g(7g&yU`xhc?&O*kkdh#+ZZgY2eW)$F^ zOQL*I5_RL`B+br_-op1viezzpAj`Zj<Nzgp7jk%hdjcN^Qz9*8waHLJ1B%a31V}of zpq!i+lgkJD^By%@J?y!|G!vv+*|F_bdrJk)3sa~2IUOdW7cb_<zVca*eg4wqoyWcV za;S}sg9%DLUNc9>v)<khwio)(0~u~J_{$v2ezIn7Fc%_ivs?U5w*7MqrlSGYnRsoY zvjxgWS0yyRc(AcUu!OVpMvs&)w@C5PWbM3=y`f;K;pW(~MwwwCAgk$>ue45X4qNEM zHv(mb5mB`MA+@!xAp~yL-0SFrDB4Rm)VoJ~*LnG9mpblE)up<ae*0#W?)re|`~d*d z7G$v34aP3zqLb^>sxD729|~h*OPgB{7t1g2&xF~WIkOT#+P56NnvwnpA!kPl$zKcB zp7<TE3UsB?h8E}#PS1}PsCF*Ac&)m-?J`hX@$sYbZ0lRy1RyLKVyxr1TOcQ9M{8yt z?|f@szSiBn)mK-0Av|14(7Gd<pm27C&)K+oXX7n9PEeQ<8uP<_ywfTmHkMLZ*)S=| zhAHuZnN^mOd=nSv#W2m*;yAC(-CdRS$=c2@3E>S5GGq0pEJQ>MvTC!tQ;xFxt(vYm z1L2t5d*+w2RmmtRaZzv>Uf{^{j8i2~O3v?pt1gx-*6p9+`n~!-LG}Rk+qZTGM)S>M z2G{sUo4zcVe~s%D6%?Zs6yZI-eVju9A0Qx5bRmuEV(uo?ok;CCQC48M+DruOaG-ML z@u7{=P1k+2SN|yq+8e;~<}OvNqJeVWKyYwy!|15~61C{<e~}-tTC2VX4z?Nx;ZLg~ zq57R!yK9~2zC}fu|7h(yF@)oAwa%in&b5EaDej$>kKI6f=e;-8Xshv*dbBcj8h`jn z88&`Rjh+JLz?pkubTsjl2}BhpAVLPzt_R|#`Ia*-j~r)sbE7@QwJy=nG;|kUq2#4T zvub36LemY=r5H0@Y_9LKHzP6O9rgCr%hR{owoc1>?2wrZL)w81D=(;}Dk0N~_XhL~ zm21W$OZ|!a%F4KcVqyc!Jx3WSNdQVann2J(vjc4*d-(8-?5WS?x&u4%Dwju%We*lV z`N_}&&o&E+9-_=ZeS;#==%%HnzLx2^XO#;%=H%$g+30A#%ai25tLGUg-@I^ICsqAu zw$)=UUccCGnEUG0tLSfTbB`s;fz1P%h$2NL4Qr0)2MBw`Wo5&)y*)j^G;NVFFd&jG zh<27MV<k!AjtoS^4*645|Mmhf`rBLUTJfd@WM>O`?XCrY-W`|Zwfp`8a(k^&85zl; zdwbPz95rUEwL?t-LrTzkeoO1+1$ibO9>N0sqEPwth7dxkeCuiyDH&OyR;DuZ)vE^j zHwrR-0?=aS<5S=DYYIN+<mRRfoNHHicWiuo2%B1h83@07D<6BgeGhfJN6OCuz<Z-# zbYJxr4^15?`MDy(TD4*NxzW$ttte>jmzJ`6@9*#1^k<v}l$p<B@$wrG0Rb^FBm{(n z1@_hV?%lhguC4??-6d_J)|*P8W&>MWM~A1TE?=)dO#ti$uPr=r$cOP&voCZe@HK}q z`sE(-{x_NcA7BS4E1q@EEsU4(AT)VO!poQENJvP4KhN+#J&EC~0JI*YnmthKzm2ZD z#oqjsf~T+2dA{wv6wJuv<fP!0D*(aiAN}fjX|e3>Qu{Axo$mRw+{MV~n}w2yj12wS z+M1w{P+)bnl(4X{s+GHw(=`hV78H|^kd}M6f~Ul3tp*$!+EBE#1EQYjY-+*|3=C{} zUqC1BK=-RV1ut7Wyd{Fl67WHlEgYo?P0S$e5pb4}((Gt&v&z<azNh7bb?37eFK|NS zwcbt3o>Nm(dv*2EkCNq+=^&En<>i7-qqxQXPO_&DzkWE|*w|<@_?GzS__)M-*TJ~P zqh!nt2OIm1CMSGC5Xcm)OiXVS#WXZD=p<e6QKS?UXW{$WI=q-QP_$#S&S<frn4t9L z7CFrXObaDjt;bsBylQHFadGjOFbub8a8QR%+C%f_uV0iYqyLF%tsN>#dryyD_4E=< zmVx)q{?gk!`oJGx_y0Y3mikZdTr|2n-S0b~qU2u(lj$Yd{6INR8{I0J37!)~k^sDl zV&dZ?2Gyi3TP@M)<jB*w)=RhImZ2eyawK)&!h#JbaCA~`L_Iw{C=@GerbSLYF)?wv zUP0&gwR$;$<>j_QBmP7xsfp81$Hx_rqBt)STxMfiEYH@?bLo_=TFvN1Rs~?%%)y^! zo6-05P(Ss*xgNxEzz`QU3Qia;iW$*NwDZroxyJEv!(G4WhQKeKoy}t<mSmSM-FZ0q zRz2kh`~ZrMLFHpMTw<E6lzRY8o0{bDnVEw7;)_4P(5~?(F2|SDxEdK6E<N3z9UB{C zf~-9DpP-in^`*NzBtBj@{0|b%MimZ8GTvgZUcKsrJ8JudXm~dvH7kGl@}&V{XL@!v z^N<&+U8t-OodIO3r`-VT?n5fUQC3ziE-&YIbM6Hk3hE19nPF5Et$0&QOLo^PCGl#h z@1a}m<AjQ}>p{3PaK3344C9lKsDLNMWsr!NID&Xp#ACyZ*R+oA+_`g_dFUG&8f|ca zX@Ha|ZBSEwE4PPDCU0exwdU0~AY6F2x_oT=sSgR{*2}sRRJfWG!5p9Nl`gQoXjcSL ztL10=i-^0Ym6mPi`%5fU%z>&*5HK}asp@>ep+TUcqGE1l#`N=XCEUZPI`~&892^|v z`4b5_I5;-j82#g_?xNTd_>yx<ix?}`wzpkoW@eb-<$!!XUiCdFbr^rftN`3X_}VdS z=a7_?6bNflD2_5f(6fL|*z#UN{pL+FD1@3oYXcp|6a=vN<mIK|0_*@#h(-^+HMJ;? z_rdzK7(N=QJvS{H;!2CeC0fa1{|qQEF5oZ_cbshgv%FYbX8+`N>fTjNP{`>)A(x4T zBLT#M2EZzx-1vwA+p#h;Qvj0-P*6V8(__GT>z6y=6in_dM4n`iR}BgdzL=Ek){w4H z;k0Q%eR9BqR4WkdD&mT9B_+(koW~N|;IGhie+a9t1n<qg1?DCpp;0qi2~^nm30$Y@ zp?v~EwFFHR2+=`>_Aj_^f$UvIALa(G2~hi{S1U}ft9IaSuYA1-?+gtM_2T1sfhAC9 zW7={K?xY-1gxUt|w$e3ATQualo3?r@f^V@0-O@V|eq6~ce8ss0zye}CNJ=XB<jO-% z6IJdd4~K9eA{1wdbL5QdZML17wMAbssPPbp>+s1P&Q4T=p*6|#xvfRE6dJwc<mL5x zn9mGnM?+5!L7|b+$+0O<sokHAWe^IO5|`b#%h)5r!~12%<L%f%kAZvDS)x|_gD|<o zZ~JXxU%$rTDF_vP`v$ybdwVr!fK+^E@CYB__Jm(z4K4i`jUvE0gQpQ(XitvM{46;+ z>gP}IPo7t{)<<P7b4)dd5Vqe??Pv(X<3<Gp1`>6roL0Xx%mC;(_Em<rkeyxhRDTpg zfQ*KQ+m(nr?7z^HkNUjxFMeoC{TQE=o-WbVefJIegoxR0)Onm%)a%@@UnGq4dHq%j z1>IrFF9-|87!B?DOULp0?6w&89c4?$k5s36Kj7A$ZuM3tNx5@aSiF~K$0;2TtJmh` z?INYx&6`}-(CF=_7&5B(aKit7*ClQ4=f#Cz0H}owE6NoM^iD6LfsOlno8Ya{sBhND zTj+n!D<w+qFRLhui&vY|0Y%sOJl43yfoyMlV)cNK5FvJTnzKAS<aw;RW3OdKH#-F? z%x%V~LqnsO6Xm3z7;HPD3Muz?>v^J}w$XbqGdE0md{E}IL}Z=Xv(ncH2AV-c@gbyA zW|EP?qluyfQJJUIk2XcQxWqR2{av;C#hZCuP}KaIIx9+k^X4U(Y4Wz{yN%r`FTrRr z*!{qMBG=$LU)9Ao>a-8QsM0)yHc5X7d&m{i7VxeFaJ!nCZ(2c&X#CZ!kC+~Oj!LM& z(R70O`a+X4AXUl|ahjm83U|_2pILKNB{=`O#ptqNW;AyRk7SJi%nrp~f6U(*Qs^$a z4~W}ZgtDu5Z5(YCs;0hvp`*ECW7j{2>hITwsksF1or07KTOH@S*ULVBd{SFWv9em| zns|nqc1xd?Ov`n~(K!DF;%RYR(!0!NJ-uAiX7T0Od*ILQSe0E=K=VoxS@Z^etSv!{ zl~n<}R=3J7_OlSvP|pUD;5M|)vrUM;8P3*XB?pEhAk%VD!`rL$9Xp#flf?ea;wh`j zk4Ia-WUT%cP|si7>!xX*tjo<cY@R$x`(dc>Pz?K;3#O&#YsoB;?2!`{9bGajx7~TT zNf7dF5yqHK`kZ6^F+G}Fy)p!y*>ABl<TsqO#)t?6A0~cFzkf%07grOl?FgBtJ7w2t zx`7R1UctnK8P(9&hbk{ucTv$Xswf|z&__aPTr4o1S*4p5Y;K*L!<Q;6&jQ}$a9fp( zXn%2NF<Eon^*6pAu&HE}JN%PA&Nu`F=<Mikwq{I0QBe{mo-Nm(1eXoY^5ekibN%se znZM=jZ#fmc-q*F!u<JNE_wFy`>lN~*qYdAvQCYjLVMDF}uZwFF$TotWzbQH6_y3Zr z{u5eDH+1u%@E)u6#szjU;?=7r?NHqdH#F*F^i7Y6Ua(jG=oUB4FB|O~xd@azkor5s zdR$yzTW+6*1+P50)!L{ErCHeg^ISc0d7!0csjoV*8J5~S$<38;t;0}yp6u(5RlBpl zd)H-Vg+B7PcHY9>n@c3=D>CKaHK7YfsNMttIfIpG=X_((`ITcBR>310xjX3`7Sw!9 zP?TB2JkXK6voQbl>(?Y;V8D}d4)l9K^=6>`_t}VK^Bcvk>Su>(Y;zwgDY`Pkj2hm# z<LNP<+HLU3N&M(|0(1oQUqhH)nHT7JpoPi-@(+mZZ&teikYCWx2jaSqPAwtw+N~}X z>MN~hr+jyLs@zYhVgF5ogE0Jsj&72mIrhrR3Y_0zH8s+TDk`kNjSy1uK9e-83?{A8 zw_Oj<b+EjYZMfL=@`024DK-`VWoF)$yIsk{^^=n#165^gJF6+-ZmSHFx!E9@xvlV2 zEsBXnk&;e_kBuqqO$T8?5?6z&MMKC^8UM%Z`VESd{DwN;LqYp-5d#AQ2qe;xkr8}+ z{03m;vZF&YRbrZkhs(4_=9ZS8!Vh{KRhS!If3_SQ^UHwH87?5P+}kLcUKqm;Bf*=V zOH7NEO!%2BdIj79>*+UN;DQQFm@MvSY{3BX!>w0iRA6mtpfcT?{yk^p<ZKiwWLc-= z;*xPDFYiN{;}nBhB0ry-;pE5&C6KFCyNip9PVRqQLO^}T#>Q${$bdiN#x0+{`z%62 zWarP5I0koibp?lo;oVYK@2~gwx3acgOaO+%pv2;=Brwbm?<%p02nvz{T95yb_7CSx z3)^tyhI(yG#pD4E;(dUM^9i33dqYQl`cR1-5h3A~&#nATO(6=MsT#m&$oJ#Oozexs zE2dA5@eqnB2(RdKAPx}TN80(7<qy9;nVvQS!Wj4D<OE_|oZqCz;Nk0l02HLapFe*h z6#&dAX9>f9;B|27R63VD{3;ADx|Xgv-Ap3KTmC9Lo9*_it5|QW&J{jo&E(Bibj5*i zBWR00X8b;p$SkqXu(Re%@`C-(TsLtxnETFvt!hcM2+s19Z_c1b27dXn+gEA}v;FB3 zLM1c$VU*3y=VZUV&VT*!<CO~+E)>H_GB!SL0VM1~e<t3Opdi<+qrKS}kF9QT=EP1R zt1qN0-zthed*KpMYrc#0^6)^RcGe~c0k=_Kx?~Ri7}#x&C3A>eK}bl5x>oOZ?7~*^ zL3N>Crs~A+IO~#5BIY%m>ccjGqSO*rg3_jNKYfyp2*SIcsYWH0XE`j<(_>#^JLo|t zBS|GtJH+5TzoyvxI-<mFwHHLdL`ep$e@sf|CB46Y|L)7x%CtzkL`~h$(sC9U@3wS> zFeh+KcY)_gT!xhu=hv@aDAbiJAGI|GtE;M5BqeFUp$vRx-1~*>?Ck6OiKoYL`S(6K z=j@5LA-p%vOf0L4i&9B`w4rR(39Cvpx?K#DyHpaX9pwt-LMX9OP!w&9<>EjrqIPw4 zga1P}M+W3KpZ#o-+i55G&0$iOf0mjTCXX$74NGZ(qRWcbFZ#34kMro!qZZkSh=`z% zA3v_uMnw_-{{56>YPiry-0J@Q<w>JEcV<qG!<ui;{rc6^(UJeT9En``Yu9TT+S|8p zgA#`o5SB9o^XlqeRWNMLC{xs-v#9HN4n?L5x^;f+dAdFNqWU@_$mj?nYZ%?N1_ucb z<Ta?_gUD#B@ju@4gt|q|>Cyhh7aWd_`&&0bmrcaR!4a}-CHmafrckIi+Y!%`bmji- zlFZjZcqFaA=Q?AbJwwH-h5*=pcjqInpPyfqr?j**q%|>6I~0|bm)_$YS771bnyrqP zwY(*v7DT~Fp^QNMYsSXL3@L|G*`>n8!54;wp5)?sZd_yg)jP#ySenFzja?p5Q-hty z8cQmlJ%E|0?hQXVuD{4<*mY4M>^&t|1}@S>=`GoaCj3h>=@Uk&`cj-bf1Yw@XQv7D zDj-ZEz(+@6bh5Mht*N_P9a0rO4i3W8Itx7*;f+m8D@x&DV^jK6RYd@a8_5K*2?=@+ z50&1V)N-RRdwU)e_aUVq?}Zw2=I77LClK)3iM}+$e?|vh9Qj~!RbR!PYt#zKy9fMA z%TS(CY+PI*7<>e+Zs_N+YH<Okvp7Crz3Q_k3}?2`BMVamp<cNn>#(h*q{0f!_vPF2 z*)zRixviKvTd#aFzddFe1_o1kesM+g5FKSd&Aa=(JD~NtJFScvZ?AqMi=a};@ZOEt z+@C*;O*Y(AF@y5+7~GW4J9_*AxOB={n9T4Hi}cRQW>{@)*-*(1l3wXSqBLJI?E5{u zpM%d8S$r#}1~pOWUJudSi&XGiIx1`9y*XH3`MT_}JHZ6hE-83?it5JU1l~RaR%@t@ zPLgDgU022_B8X|D8@uf<nfR9BfKyospnwEBFSx?ORh09_DP#tm$BIRroNS`g{Qc6D zO3wqI)&!QxNLH0e6{n5MHf7j#b+psJ%89;Jr2S$#0My6La4Fl)71*jP_s-0Ay<CPy z0(|z{KJhBuOVnV7^gEVJH?6<@2_!}^E>lnX`{O0>eht&g^fK>C((kMBw9K=F86a+C z%|zRur$4|!g4})m9;@*4nC*8YlI{*6pdUOs*jCxtS`L|>*6~=(*4S99zJAqvClqm5 z<>H!M%I4Mwz!}CEYWe+>y2or(4;Xvy{Iz!Q<|`vx<Z#^^Y@{Iu<z0ACfq_#fo?6iC ztlR3-IW8ZtVMoqJYR4adr5qf!6iEFykj*OOvJj!Il0m~FwnI~QxTa5cbwi4muUpVA zju3IzcPGD8qc7A3L4{dF1kA$nOPuJZP^3XS$m3U9EQ>84;3LnSlL!eRbZ_o2IXhBF z+s&Mki*{e<F8P;h!_7?=yjoA(Cp{@9s>)&|$93-1dWiyMEuLqoDFI9%vA@4RSdWL@ zc{9=bVBHe(-f^S5>U3`KZEbV_N&^gHPf58=!Tdo+HeYNz_~_{5P`zd^Lx%m<Ld5l; zs%!k>agq$+1tEq6Vtl{HxVd^A_j=)oMK_Hcc;}g1FXxBcPOE#Wo)SIV#wgI(k<Y9g z<99YwrF!V4&K?+Mz<Lp{0FZPzpYxruC;st)gvI`EadZ0#FxjFzCn{fLON9U%heLGf zH%n{GdJvUq>0jrA?)d~QFE6l>n72lny^?arA*3W~-P`oNYDKP_{{&mqZCy5Oz3z}A zQD90wk>3rm+9-t8VM2-3v%qkts1a=)_qqp8TFahStHtFGn4)@yh`(<2%lWg&4ZnG# zgE*mdbPy+$<+csgRmtDI3}7_}Agb~9&9$h8hKaEcb7y>fO<Vm>rHBB{gPVRSwyVqd z;glb4V<QLR_o;Gs4C~MIMr>pM>XX21!-y%|=Q`+X4jo7xrh1x?IQS<M$gl@Dgp;4c zKQ9}OgXf174qz=ZgKH!948-Q6wGRNp0<pBj$V~>#r#ZrzqMYgaKn)z<i&@zdZRPet z_~*iv0ae!=J@$@dSbc(pV-iqO68krbFDGaXXz1xN-0PhTRS4sUlr0YUF3mDbJ1Tpa zfKF=1AF)$4hY4ifB)<YVC>VB7y1fzYUx$&Lf%4*JMkcwCua{sjYUJH!P(<fP@M#Yi zfg_TcxgY5sNR?9EUL3^ARM~9;n^te*b~q*rdakSyM|;^4sowj@Cx9dj>W<V648`Ik zDf`L$ZAt-8dqBg;XHe)ep~xa)oTMjEA^}S(kE=9G#=%qTI8}EzIp3-iwzfpvG${Q- zXxUcfw4#}R#bL5b(Z)su#P4Zvs=KUxCxCh@EO9i#X0j$68SxT%f)=+e7zp7&!h2{> zYdKLR<mB=YT<jU#>B9t{KO497q?Ukig8kT;aI=HwJhkliOE|bS4OoA|G5G*9j#;6J zBQVe#aeP6{G6_0yww=%R$^=&#GJ)VeKl-gE4JdqOW>dPRwi>bA)|f*#j9qc$fC6H! zftoNY%W5`4K-prtfgk4U`7Kz1ofV0gyVX5EAe|z?m#$E4zUOq`Wz|jq8FN*zbzH!D zy&SU2QPArG*oCvyuBAjF{OR{kv4}MgpF}R=^Jld5)~zcLp3UFBU9ulH_}hj9Y)oM< za4v9oiP6c@g+V3K*7eeH1ASRb0?c+z@9&m?6;xVS_;G)&w-GYg3ZX7QlfL}xBxOzL zKUf;d3$qOCuxijZjcV!?kYk0}GE^uW0e13K!NY?WK?zXO7uEj4K=;gSl(^)UEpXTe zaA8OA>OuPl2EaS=dl<FPRX5Il9cXO<BXJ_q)x>f8C?u3PO2|f2AGtUfnZg3G!W3Cq zxbZq|d>_L?BRvI){A{d(eX!7VEO2#6IDf<8aJK{-n{k~FA;40Lv0?{ma1h{)a3Iu~ zjc<wLlv3BrkMxK>2_}KQJo2{lZ277nPF?@UdD{#$k_VJ?)UvN|mdVME2|I1>CW6Ng zawqHMpBKT}b=~X@)h+co?KYNt@vFtMWLlL5%F7@2_P!-aisD1jxc6I)@o!U1EHsk< z%G2xcDmA>cHgN@PG&olGl7X0^qZ0-R+%NlGT7C@JRv^Ffxe{emF(u6I4PBSVe+Zf| zE|CEibScrvN{1=MEpUNS#>~sRk~eB;#$;ysB4++|br@7Q8F!`Fy1EH@n3;8RAmano ze3L#Xw`Y2f)wL_rGOXv-KI{Mmg_D$^1>2B+3v6hdFIIHSfw{sZkt56;8ti5V+h)`> zG-hCjhlZ_Mq;CQQs}_ZOt^wdrJw4fF1rPUZ3)Lzag(%z%{L$_#!==JGhe=qr1xEkx zpL5dAw<QT7VGCaaw4FA5l)&p?VM+CU$Uf_Lv?)g?_4jS`3H^qguvHj+F9!DY*+kMG z5@6%hnpre4vOyahSUv8QCWOb-6O+WuA!Q;UJ848NivV_x^+mgj03a?A+krEz%8}Q+ zyu7jt>r0E$&~9#GZ#B}Qp<fTE)-zC^0X--rLZcqCh0al_?>+S+(^_p5HdMoBMh+$- z>SAmt@tyXZP(XQPMJp*<lgeMi$12o|ND+4gLWUX4R)+Bp=WW%K1hL%Q+%ORlKyff+ zWM;;`d>IaU3R=D?UuRo}|A67>P=;*yJa1-ML#=luwYUR0CEs||;@|`+FdByCrO&{_ zzSs`E5OsBRWA*;^Lt3g(V#?l15hJFg1jSS&xU5VRyh+86W|i|YXP^>ta&;|?bFHkZ z`T;-0f8YoIJ#VJy_x2a(kWv-Qj?fBdn<P^$hgZUp9|B4Os?zwqHzPTD5a@i(FnX{< zecqk&FG^v5(GJ=x0VKOisAsQVpBEPwH!w0v<iy0hejW`<SxJe|&&Lu~06S*eVwT@# z=j1d`OwhBlgYVj1MOiu2!4Rw)B`%8t7CCeF_V%&K$@!zdmB2~&EGY>eb>r5pVDNsS zn1CGsBZ{D?sM6`lF(`Suzv?KtxYME7#U~=-J)||l`lsT(GiGPU3C>=Ddg)wRsqKv! z36Dj#XnIvN?L@slqpAO~DCjHchu~Lvgou)Hs%+4P8F}a9Jqn}Nfq@Iq7mGr5rAkr3 z#XdRDpSQ5I?ED@LYM)-AVF(@x10o)R(W}P6@Y*#L^ol-y{8-TM$ODXW3vccJdo`=7 z)2I%Ulfwb+pJz~*r%#{c<mB+5{!fK0kVNjNxXbt0{oggPXyh9jXrAR2^4ZhRu>U4u zG5FRrJ6Zv~jztO$$rQ=;3)Y}00Mo$Fe)|<CIEqY{jv!zD=r?UcDT0c%<{LrD_ZeD_ zK*GAr!I79$fvK*p-q_y02={-nva+(J9Q>kJ($U=T0w~8ZAoNhCyzjSxW+4vPV1C@d zK!h0cgXjLb7oTa|3^c|xb#_8j2Uk>7AmK$Sk8fmTln!0Br1H?a^mL@qD6z5#^%-1i zs>ibN^EXc<jY@6$$@%pA<wz9K@2?0mdt|$-|K94|Op>^AQ9W6tA(Ys%ztWipV8XDs z@XL4dy>AoStzv4!+5a0+tgAjTv2%`-lM{$;ED;*w$jC_5RB?DAvO8T|L?FDtV~czL z{(Tgf6Uflq@eY2Vm_1%khzSo5luy5=tvz6wC~&X>9w$Tydv97F4Z0Y#S(8CSFJ}p# zf`UTs@RIg!*}@k#)I`6U@4}Xh|G2$$RpHYkPo|8=Ex$#4iNP|zfq2`Kgr+h8+h6r? z5`%0(FXl9T4J0&kP^K`Ek-YAcAd$|(9ziis_IwbrAHN8KY>;-|XDC92Z2FicM0j|3 zzC$FUo~5J^!uJy*U_gQopfJ*}aF}?Onpz0a|9`5JsVMpf&~tg)`88((Ft6!4ZHU2X zh9yumJXZDRa)N+Ad4c|6I+$ehEJ5LW3dK20K$@&?@xAWk$Mf`(E}T%27=dHU=VX80 zx@Yu1M70;OKrofte*<r3$d@lSCjPua3I6ZYveDl$G=gTRk@t6v9v=LM7B{yU!*}A& zRY=5}t|%IJkqWO*Zf8wKK+^3Mhl#g+-rlmrO&8^VdjX0r=FO67ac!I#jg;+yrBsAD z3yF$~GN|+Md^s9Oz>I|T#>NII)W|F%BBfoP8n30f=;-M~VEcn$&LS;sEYA18)WmO7 z+zxl_XMX)+2S=;R=%=1!QMI4*^UGyNnV0^LwK9Qk(Y98qf2!_wFAiCJ#Au{yHsEWe z2$o{k<(o*mZ;Tv6D+d?Zux5?&Glmw3@p$fpRTb=W=kk)IJqaBqIzEd})kHxxas#@k zp;o;B$4#>Rlpj(gXI#gTI8UG4jr0X6{-KG9)O+#$J9bxUH9467g{+_Q{OX~{|J$ww ze^-2Naj6g&N`|JN?M83VzgRhKSis%|H7@c;QEZJt{gUpK7|ZE~cyK73%gFduj6t4p zAoD~;x!?xWTK9U6u(Y%ig`9uUCP@s^hlZ}4An%NUkHx;<JJ}G&W%Q=s1{$f+Kw9x2 z%}y*CG~r=O+|!LXx|M@qV?rF%#pVSwz<X+GIU7JTCLGyNxKaoLp!-zi*7PM-M)j7O zMsH)}rN*nC!dP4LB&|Q&eZhcv`NmB}-NxSDqOn;a(B&Q%M=mWk1Wtj@FR?P|dmg$f z(iQNGCQ7IL4hg{{*f=yqUG08|od0aMR2Adx|8d0AyuIK1T3dxF{|e}mGDzpLzUkd3 zU0ptaBpN0s3E-~44Q9UoJIJ6`k^l$Kt?`4k?BAw~PsmWqlz2OH8Q3)@pFjx{W_WzM zGU0A;QU4n}gCa1SO9`DXW6?(XP|H&BELTauQ_eSJWTH=HY<R;zn?>3PKE11{d99=v z6Y}{2#^QR^-5Xe<lpWXu%L!Y@Gi`P60-j(ic>0Z&>3@HD<^I~8FDuP)S1zCeo<C=K z_s)xzm6g$bUADQ(bq5Z5{5Gz0V5F6&q32efn%iFVPP)Q@Pa((7;NmLkw6|fry<*#N zQw*f_;AhHfloRTwlrLZI8`Md^8}O87c$Rt>UrDLzW;kSC=AXV=LI;#QdUOicuiLVz zC}FiyXK9DNyt12_n;RG80@uK2j$)+9)P-^}A~zS0H2kt|Iavgo$AJirsjq7;!wWLx zG9vWoNIh_LGIl1`dvj8qJ<9-};ylj)rGJ{&4P|%*=|E}U)y(*fZ6XCNt+||e3JQt_ zYMhw1=IKU8^A!UfgF7#;>FWmtW&LwWT8d0Z4CYf5d`3G(hN|k*XE!cu>ghpz)NZs; zLHl<<VREt^9XlKHa@!*to1DkNP0~rpet4+qEehrfH{YbE6VTF<kBx1&Y|Kog=XcCs zWkaUy#tW@KS2MdeE0+q5q^{lhimz?U_4MflP2*RXfq_I+R#_eY0d2tFsiALKxS!?= zmRIFrch1}RAs3{5x#j13d`j&L4DK&idTg@5fu2YG_ZF}mYX2l_IXgQirKF7NB>cM0 z63Zkemat6ycR0k@#H)(PB*<S?XyHWu#h)Rf$o%`a;4A1zFiOKOdo+bq|9O$l0}V48 zA&cPe-mb2$Nl8f!;3NS0u%K`lt!ZF@@jcv`0p{^bdwbyP*9`C8y_;THAvzo4K05x- zA?A`g$NKlPbqj{u0uv})BZVMUu}VwRnV6VB3wKfX@RzTpw&Yc=%b~y$<`xvN%E>W; zcLvz@fa+@R)WSq$0)l-$NlK{q&Thh726E}V1-ok*zaF#m>bNNM52RanCcx7r0^Yu5 ze|ziYlaKd%M;5*QM&*~Vf{zcB3E_z?V5_5|qWW4I9DD{^kns`{5|Tu0FZdn*(f?Z0 znJCZ<7zrRHJVb;NkcU7DJQgEtt~1dRypw=16#e|_9=?WCI+{)bJ8#=RW@V_qKkypU zv)bPF_Qp|De`2r#`5gZl1vg0Hvr%BU+uPew0Y86Q-C3(B^!|(?yXv+=eXlEN6D#fF z-=*KuEofQ5kg-}70inwT>V~AG<cED)afe{w_j_JR-~ilQ`Ch3b<_HWw91#uRhe8CN zy}i9Jzg8!zslbh-1kc(4``6s<!y@C#3-DBtu*^(WcqRuaEp0?r*5yiLc+g2Gc*-*} zGR!P3g8(_{f02c=`g@HhIm&5ygpY_uWFd7K7X=2Khf{UOII^PhH*}h3Hy4I6Cc&f* z!|kG(4a>9<{KlW)(F~fA3^Ft*Qfg|>6h~WIE`6uu<m4Y<;S&@VZUS)ibf!71^Vi*4 zFA8WM2+hb~2|Z5_+zu1cvyJKlava==OtP{J(7E5z{(|EX(wz-f6<7yU0Jw!L0e@<0 zYd1mPE)O3A9x+X@PR?y}P+dN`E>qU+{fKaXPm2PvB9xNPaHuIq1>aT`RJQ4#KR>$? z{iaM$PlxP1Es4wAZBj^?IhR*Z&<p|;FyJ3-K@S7~qo}QY;pBMNv~mX=cCB#RC6DJ+ zIk~vZmq!X0Mha6NN&s7b=bQNY^Z8AWg^6l$gs}tUb@}q;2Ed4VkswdVtE&^E-ehDv z0e=sHr@Fd&36vceMHZmrK}Z-LHWa7G2!7T9l4C<-W8gCNPd-H!GT2%oC|A8m>}!u6 z36++XTCMB9HxAd3-9H0H`6LPFx8KVW#>dA&X5~>;Q+ou4sduoL2wdMdK<|M~EIkV? zv<BZi+FsDg&CUJt_7W{^=9@Ryc1(11$d#0oH1+jW;G;!EMR~R}-@PNUw6ui4A%}L6 zgg?9GuH?w>c}AjhUtAF6iXY$`dORB=>w9n!1_Tcb5P)uzx$)j4Asl!(k0u%&44o(6 z)s=&AiJSaSkMY74k=+EZQ4n*4!VY@kI8Ew&&XpKMLW2eV8SKi;mpFLmKST5XdH5Yn zZO3~&-$5iCz=U79?`S0cH^b};mU(?Ddbja&)1z--psCorS<wH)=j#y#k6y#KZ?u5j z!OfUpGy+W}$is9X8NA8Og*L9k+hXelMRiXqD#QVLLhp&>^f$-)_-^R)pcH#J7657{ zJog3#^9Sakh8oYUp9#>!y<P%}2iUPXZa3EFy~C%!>SR_nqW(9X$r8l~wQ{F6&YDBF z9JQz&+V{TQ0BC*qj*gD#%@T6?WE4Y87(585DljjQ5FU>MyKyz<+{_4{mzd0dNtOdB zX|HX3SV2u4ogl#GARua|M_pqI059c3pIf4$qG0&bdav%_zz+%x(scxf3^gq+5J<Ea z!m|t|KGC?pXvJd7+Rw0vgH*h8wC`+SXb3tj#hp8MFyY~iAddkm)4M|(cnt-K3)qW5 zA>3AKuoId)I>vy=+CC0LAO!D}ijR*pcs3s$AGm^aiVV#7p<!9Pz0OyzE%7NB5<j;x zBtuIm&O-qNLx#lG)zyWYu>?!=V-kW#E-s4DDg}><vL1Yunu>T-pitBoTLp#@9?~FN zT2_`0s{zGOGprAA5`QXh#y^D$q_WbpaN8OlVFbs5;bH`76W>1<st0crQo@NB0-yZJ z_pp4W_QvJsJc^y4K7IO9wmgtc2yIzEZ+9*)FDr0f?3lc7Wd%>oxWLWLU0hnK2*%S8 zKLE+rF?zRERpB`dLMX%-3zD{`t}a;ZD4_enx^u%r8ZlYcdhaGI7rev&^ZWOc#6*2p z+2`)u%Mnkt<!R*pxtHEFITa{6d2SW;{CO_TK$4%I|6vyjK>YLPl>vs8z(W84OHEJK zdOz;;@bYSEY{UXrEbL2Y0F>d`egJtBGA$Mg9?d`k1r4e}e99*XbS!2#rGO}*2<><< zoKNxIxDxw~1(_ig=q{XWS(}-E7qxYEGv7BzYu}o?x;@9V-VbX2&;6My=|x2`usbap z0<hpN63QgJcX*LSkxh#MJMs+7I>iCBjK%XP!?T^RP@tIur^FE#7l#z&pyGA#-FI{( z0ZIW?)b^U6=fZ;md|#dYlTJCS5YhpU8rQzV4;(C_y4qY$bE;(H74w-2cx;?Q3bwcX zE6L?2hoI?08n(ZT_fDKT4;L4lVgQzPxbMC_ijr|;xUQ?I*#OQwK@gDN8I}=%KnQ(l z0TB^|f2j%@8X6SJ)%B06#vnNMnju`-*w{X~ttP)qQrFPHOY2Q6^WKumIAVR1nVD&= z!q<6X^sOU0I-xLzbYQQhj2hNe>3>l6-tk=a|KBhrBr_vqWM*ZSWK|+6k`>C{6qOm# zGDAjL5h|mMP?U_2S@u@hTal5yay>ua-}Srh`@XLG{^Nc;&hv3T&N7bAalDWB`}KOR z*Y)eyeXNK5;;$U%<^8^k=<ni<7kTqsyifW(L{!MRKGZ>&yX(QJ9Omsmg#=HfjiE&S z<RTX>xscIuAzJdW;3`C84gJWs#l{z_0VmSaJJs*Q!l=P9zsSgV^zh-Xsi`U5uc?`t z6!=SmJq?%)Uen$48%MpJo!|G#W@)>3zW4rOa8<?Lc<CJZ@Y(3PT@5r@ZBeFs_S^#u zuR(Mw>$305*OLJmIv&G?gB+(sVmg1Iph#`3^xro;JskqJ85<Ni$Rz?ckmtSbYzX<H zIM(;6L$qJhqd8|Y8X++yd?~bxI3i&7t7vJ_oTY2TI+k%BBge@AV;5fu$CAd!k00^1 zfqmY<9tg~?2osdSL}!paFuC&C)5q5FO~~}6y<BYOe*I<JoKi=PDk&+Mq;~t(WE+>H zHMZWAnC`Hp>Malq{_Op%#!XpCjc3<=AeEhV&!D!&+f=*et#}O%pxzJH^!=qF!whYi zlp>-e8eLo$L4%p2;p{A#pO<HbT~r-576>-pLAv`MN4Q}EQpRkYoSJoYb>r~nUC`8w zZ7`X@p+re^K}{_}gPy{_v9j{v!n(JOg+(QYqPM}X_nfcF%HpA0{_SY&7a`Q2{rAUG zQ`6S^7l=MZmATgw$k)78)OfYy5>_i>O{rnjP<Z)9ZPkZPDf4Vg`VF?JA4`5m$(OEg zNM`AWXSgymMyl<~h#C$*`R_}tDJk4>`^w77xsDwR^o{yYU8%8;F=eNv_0qw`$#B0X z+T)zxrp@)4+dCGqbaKU|7AqkFm_E+?pQ4NYOpV=%#fis$F)>~rNaNkz*aIHyF6lf2 z*Ei0{^pM~-=PL!5pvtve_;^M4+&O@kHuEbvYX*w{DT=jG9+!RjVov0>B>rZJA1hx4 zvQ(C<g|d3nQ-c3F9X#dG1-*Dt0U3z;eP!<Ggq+k=qTRcXFdv*w$;<Og`L8a9aLv)o z@@qT>R};QE*=VB|3t<wPUrv0u?*PY_fxB`~p5~vpc#d#lwXe0wr05Y^oaB4|=&LRE zMny-{a?BD-<%g+VYz_!%FtM^dz|Ct#?X_}rNLGj|^}+DM?Y#Va-=|OM(f5?f(-jm% z6@{q`(6X`;&SX~GC|alfR~Ac0F29uxtEdnrr*wt2-p8uL#U(`CW#X>9_u4LEVkc(V z0^vY(c2rd1b-oWDQgn81yif@V=ZYLVB(+G=^G=O%>RJTtMRaV^MMWxWe+mO{-ekUH zZepJSF;oCT&lEp8xjjrwWFgy&AEIILik6r-7Oc63fRIo{+pR-3&1?Y|6Mx=he~i|V zTj=ab5=+YIZWW8Ufs>F6G9$b1$+VguEwy+pE&KL?t!**F3c!y2c6dUX^66n3zkmRt zo&|EQRIZY=YPW~Ap>?C?e||2AOFHZk%Oy`u9jj=#Ca+ME6k&q`0f9#Y)u2Td)^5ov zZZ<MMc;Li*Eb{;ZgWcM3CGrevp|jV%WE&=*(bS~J#iO?%>n$ufrQ)x6MJYbhwng&R z&?ymW&M;p!UgTG7=iL~jT$(z4{OEoqHH|j=jVrF(Ui*!VS5xkI_>hnmpT2rE5tklu z#dX<%n{eS<>#D6C9e!EUwl|$O7~Wp_FeJ;0HubV=lbz${WU{V|+?;=Lv80mH#0%q+ z%SNi)e%?gy41&>k1FN>{E8k(;P3jtu&^wv;;g9gakT_bUuXj=`3Pe-W#w)(ri<x|` z2bq6;Y1XmYjaNyHijgS>Ri4bu0Q=*pD7NoES8Do-c;>$yX8#n1=2v4cV~QJ}ST3`Z z6B!bc?#-`y)J!IOOv>)(N@c}cLrZ&eFBy%A3ZA1*I_1NX&6|i|jGwl{N@UQIxDu<( zy*EZw;o;Y>a^FjTylY=LkEdJJ5Nr6oXwiefg2f!s1AcN7-f_R2ZGOLqVwE#;U3`kB zbiE%>oW}hPIly_=!GW4dByUKTi7WN_Va;}cG;=a{xA*}VEc_`P1(A2?P3GSs!qqnI z!qpNUZBzU^amn^tk3p3~Cr%t37@)Tk(MHuYS8fkd(}e&CP_tjL96d`0eHy2C8Fx<` zmWJU=i-M$2#niq@Nlfzc4}rk@8keMZL>^F*xnv~rFn8|8_x!`8>~bG#KRPxuA8(HO zcZ%1KHmvnn%JR%a(_yes_q>-PMX5QStBlg`*A8z^zUO!BT4m%@9l!AgM{&zq+oe=q zw9ica71jRL%3RMASMRszE89)6xlWz(__bd<7Vj}W(r{3)*ZqajlMiBJ*_W1%;%&s6 z9jrA=?(cc?){osU#Sf6t6ob%Q!Lv{OMi-Jczgq5x*PXGrI3C)Ea|o$A*z*qGvqi(0 zVpQKE_Ml{wxUYDb;m&GvMG&3Br!Zx;r_la9<hwvUI#-V9A_)o(4yH?5FB`^iXgw%W z(Vua7V|{^<O@1m&tZXWTMQV$V$=w&L^r#niB+1o}&wW2Ew-7K5|9wf2Rm4+h0m*n_ zH`geECwKLuI`Bwo!ebvByDnlV89!~{cl3NX$LH#in!v~?-s(&}%b{7t=T4Wn{US)i zg4;;%<B`=+TxDjqLt{jbjS5)>8n0g3kZ15msy%e<ZMN+FxKCVaIw<6T0^stiIhKHK zGDwBa9*p?a5qQeflpcT%xstgkDhp~iH*5TT`wKqaRIn6g@;>no=E@F|>Gzns9!2fU zN+-M2U4d8;vbwOQs^oi${=QYzRyGqZ?2jTyA4vo#+_5mT97Qd!XH@!$&B-ZQhYQfg zW6FMw!BYyJPpA*SRv22iO-_~Q`=9*?-^7C`#1JNSxU2TZ9Lb02i|5ySCftzcfOY~z z6clJWUe7^NElthgT35%}VUX&le0HGb_#oRE^wc=XFZi;g9EZuHB}rjamNa7z>O>>e zL#ZdQ9A63x2p})$5Qx8rKAScbea~yT`I>Z0OeDIq_tq_p7K;09&>}!Y=1s=2=hre5 z6B8kHuXm%=-ZynEGQvw`G*sI4$dxyT1niiuUss<WkNt-?hp8u$Ji}vkR-taHErE`H z@xa4}Hs)0U=cqDikBp9uk<>DOX8k41%j-97%B2*~SDa8r2Vm-*TNeG&QbC@bmOy*E zGx{+B+-2=aW=q2ATb|amoF58@cjO_sJZJV0pjAg+SrkO#RvCQuLWE_(e80yo?6YS5 zvUiGI;*J{r_~CC*yhJW)ber&YAa+n~!{@MH1b<L)+gY25M)TILF26ukalcB)HfDEO zTW?4_Ngr=Hxl`3wbeibCW!;2j>kCn~!`yzf+WJ%RZD;Ko<HBzNKr|{|qDjBl|G2M@ zJBNo(TbSAM`@2zYe)ah?ElH#@9!@N1x@p_1wIqJ3QE_b1adR^beS1pz{l_|?NWc>J zj=*<*DxM7t*JQYy%MtS8g`r(n=AQq&P@NK3a_=}4C~s~oS*WE^TGnnoy!Y?iICjH1 zK1D^A?(VWr_jXQHRw;<zS-ClX+to(^J2#nbsI+rHz)u-ZXX2k9Ivyk@ays?hZp7~E zFt)aEm08YRI5e~X4$GdYo?QB#$lrUy>z>{b6c#>nh*sBb@ujni3#u?;0z32O4NT+A zu($zJ>}vkzfBa<fUoj=M4y779`WI<wVLYl67I+S@tvV^IC=3y<OZSRUZKht`J3Kcd z<C9gxRi?*E%oFOvZ?XIr#8vdLK$_Gv86EP^!W-dG%`q@Bjle1exql_>K#HH{igo|x zXUr&YrT%(hQSj)J-Z&aTmYc3@K|k_$(=oXE<EH5fVw<Hu>{R!N9;u3hjMutD{hw$r z4zT~|?d3sQL|9nZho5u5I$lelkGH#a4L~a0+pC2EpaVh2I=Cs!@xTfQh~YzfED$IQ z3k!!de6DSWfjc|=XSKA54@#?7zPG*%u?mT|_p2#^UG_IeMmVZ|ZrF}Z#vT%K5XAES z6xL}5+29%8{oe*+Px7%tQvGjx^Nfnh9#~_*jz%>>I1Fr!r!`&U;Pw7uJ*Og3<Kl|C zI@Q^N(y}r|Kc$y5KCqFB969px)vH~A=#Z{)`K!(K>!E<hh(Mq1M}8hL5jt)duL3eN zg@9jzsX7vS4~|BFK!rx8)+%peV-J*;mO88n>g8mM37y|-@BN0^@gb8K2bJld;P<la zUDz3Sy)&rC^Cu$u@}&pD`HPgytt_uK#m>fxIu?a>+CkH3F<u`{KuG~*#E2RTB@}us zJII_kF$~Kg%uKOYMFj-N0een;f5*clY6LWkysyMVGv_hxD1kFhP7VhY5654A<px3+ zZqD{0Dq?+c61J?}L`ZzQ0cM^b$Z8cDSimqbS96fO`^kBH`C0t&kk(=u$@40LT#spa zG`juwEzG2Z$4DKBRmgtv!f#q8l|}dnV?LvBnB<u%zM0A7d)C?+QPXN4n!kN}1jDIb ziH}~%;NOlc2c0WdgpMPpA_zc|WG(X@U{(I(y!-c-IFD0YEx)Uf4|L00F&SK(nzSjJ zv+=Pp@ml7FmKIyb-j8o1xP*j)0mezxGABSIFXu8rX&EZv<Kx4>{}Hog=w5#%5N>is z*3jIJ59Gp}*6!$)u)3akrNrIwaV#Q0JagUXloY>e$V&e7d(7Ge8%t9iv?{|xdAmU= z;OuO=WMiYq#_sVghsL<LGk7-WE)AL)gF+{Eehosdl-JiLtbsEPF}XMXNs5cV$;(Ew z7(mJL5VvX=GH%EkB|(StB_zY23QUyfesQr^+Us9UO-%%F1s(VhfJ0`0;UWi;TgXrt z=j4cLYip0ibhNiW*_M-)z2bhfASdif%-l&?+2V_cYRWLiUU4hgyPf#3rf7ARK7nID z_-`|JB$krPZG5;YHt*d6L@m@86R#-u1eW=pIz*J*lIuEfz|{Kz42g)Sj3r2*`%2OC ze$DApzi=T-JU1`zl2iP%XDrx9tmoWZT_a*+$%qIva#+|!|K+UA%t|CKV+H#nxu>(U zlc-dY$`p^Tq{CQ*Nx#U)%~R;Js2K4fzfRya2@gb#e~yfOQ?YAP+A~^rqsEs^4E03( z0}w2E`Mrc19oi{Ah$%+s<o=%A^?(Rz802sWyWR!tgq10N{ku4Hli!*SA|?j$D&Zp| z7T3S$opu`de`$be;QD+o{r{^4{#a%h)lDj-wAa4+Q`x2aoyn!8786sSLRb#wn%&!4 zIM8!TjsD{ukE2qOS1O^1sz-s^bL)4_rjgW@e>IbfhPQ9u_LsIsuupxl$6WKz0{beY z5ROk+TUq4+v6jLn?7lW{o(`lsA@=$6Mlh;zA3sX#T)Jcieav+@wX)y5QR@bM|M*!# zf)r3Z8*A&D_KptWrunr6OVay%yu4r2v3PCF&A*`0mXeS#r{Pr0cKt!4WooMD+9bgB z{L?qf(At0Y7yqx?nb7JzqTfV`a+J&B9mBQm=cjJYAM@V)Bh&cIve_-wOUFGG8Df4N zY|oxO13Y~-t;gp{;s3-VsUE4SZ5N~K*`-~MUiy0P1c`!zhKLb!a6y65e;Ox))V*I@ z#J<e@c!2CwiIqPtY13z>BY}~iEl1=yH76%0<w5CC?DMqRj#!{)0E`iK__8vl(o$}C z@^*`f$q5LwvNw-ymwG?*|JAX|B_+i<Jj?;aSfM8}KAM1Efu*3O@Mi||j_e(*8FH?! zvo&^7($~5tan@H?`g74zxV&>rkcx`_rT?(A5$~$FWxz><az2u>jj8zhh7mt05o8Y1 zvILFl4*5l_DtUAqcNwjHMrdd)EdD*rU*s5@U?SWmZY?buar<^^v^joH4<FDX)NrY_ zZ<zTAjVj5*J;2r=u;xT1gDYWuU|jNQc=j$492TmVBIK@o)E&mr2?jDKSZf#2)Q=8Y zcvv19h#+I^>H?aGIg_BH7w{kky<I4$dy*?X1|QdHo;-2t+#`1ar8Yq0<4gO@{m+%* zv2XsZJw1@W_JTj5&*6zA<wq~ok^ZL!wOiheWMP{Yj%Gp|wwpks6ly8B{<jvOtJ)MS z#fJ^KGagyACw~6?4J=*Qd%5ehdQ#~=?DVMJd_IM#u!1zYuAcDmK&}a6EBm4zA);N4 zH`D!22E*6p%X=z(!!By|@8Rikp7}13!*i4c@+t)EjG)Zi4O?!`vLZ-8Mzl}Eb92Gb z!r@g-e~6GCgAmOxMs?h58-#ZA#GeQ0>8ux%P1KJI=~=+2+$E~K_&17+A(Mya3>A0e zE?2h@oNz>Vxj%)qT7k}JojjNMI9N+t5J&IYntA}%3A|VoXk0GDUb)2{a&xHVWU|H2 z0-vdF4bIc2om$(qCuOyL3jnT)7=6mCUw`ySiJat~(xFd}Uu#OWzD-a}*F0Y3w|5(< z92XTpoJIur2W$PkjGuN|U!PuBpF<UUBH_A04tIVklDYSfZlYNs2tjV<tFymQvAD2j zXn8Jh?|ZE|ScTNVTXO?0Q@`xL4E&>4k89=h*<ilK9*)+4MCj}{xuQ>$0XaFOgdY$Z z>OIqU;&Jd3n?oWqr1A<?;<qgBT_2cHyXU8?gABWiiN%3BuV;r={@Av5>cT~bkS~r9 zglM)uZ3aP2r5pOhfkmO1CXDSFny6ibvP{;vxBAcbTXZM?-6jRJgkH$>eqGA0-;UZk zE~qLMp3Ax&D0EWr2VRl=cGGOZLfHGC=kfXVU?WvtbW0()t&ZUKPb*jNB0L$?k^llK zS}!F`8>BKx)Xs0O9){wQ@3!aTz!EvCe%)xi<j)oE&_qUhz^q7LVE1yDaF*iyJhMME zq8%x2X!zo%N)Kj4I`uEz`rXM5pgi<oA>+>0QxquL7qAC09igasu>0NjvVMPxw(|)7 z<Px8!;Me&1;O=%Qm>CvkRtKI#X8f~*JH%+(tJ>caXsymudbTE?WO-aB8d>lopM$un zln1^FR!_Is2=oCGb;r{8lI#)?7H+7W)YZ|cLS-}l6WIiWJTnw*m$bAV0L(`eG*_fr zW^|$8^CEB`opER_Np{f`Tzid7gzcN7wU&6RXmkw>DD-;}G^SAT#dkKZ@c5lor6y1V ziq!1I6l8(y0QMdhdhq`I*i|v`S?cD_KN_4itl8NcKy4^4DaAhoyj{`MM0IC%_O19_ zbD|tz0#ib1cU%En0@59zfeX7H55fk>c4cKH_<u`ESikZL3kkUeR)3%>@`q7{2aF{& zXrEww0JB5T8Ws0`B@L)!wloSn^jPQIBj&{kc4gNk)9*zttl4ihu=xy}xqO*8U86T} z=U+qh%QLg$$Np5f@ivc7F!2BttE}3o?#g<EUi+cHidZQ7HHv*9Ca$|Vxo&(JU7&@x z_0Q=!2qT1qRWjpEVogeKKY+MvbnxDeKkgj_Uer7(JCD8bwRukcvIP!ZX!JSW{{qp8 zt$2QACB_<@)LA5+gUuQ5CIpP(EGAx9SRkPGZsh(-1t6-r`4JWc;@<y~fVb_$#=qwd z8;frPuDV)9l^$ng<eTZ2+f7ZqduWy;XlUpf>Z)T)BPvX_;e!E7OY+a<i}DN)yh=;6 z*jnj5)0o5_1YC|F+VI5!cb|z1Afvfkk)&X1f$lAXmd|guF{Ud#J)Fy_l^7Qnl%#N{ zeq!Oa{LElEC+Op~t;Lpc3K=kNP+h(NGfZT{`K920mEuBd!%M5Hfj}~K_4J0JE4X)W zhr$r@C}H(g{5cqgzN3+9x-V(>5E!z)GM}p}Wgy1p7ZxJrj=+Z`R>%%lJvb%5;9v?g z0Z^YBzBC0t3Xv}{(UT`n%&uSGYIeN4xHwF~m@?)IXwnQ25)cm7hFH!T^rnPYMgyBy zC}%m9ciDb!o&zs0#C|kV&GgU~M6AF$2<!#aHF_$W98bcdR1tpiV)gdsG$KQTZ;h(I z%*knV(^ZNus870Qk^~Ri3~Te7Hv(|&)i;%+WJaDFur6KDz1mJDS(o459It2m-}xo< z+8?qLmASv5@qyrrl!(Agp~Dg~D)|9U9dF`)k@=&wR6#WsOTTnJtJ*H!mVc9(SwBFw zXAgp7nAzpraTf1`c<KS(hHpnkfBo7^Mn;BS!4i2Y5I1DE=ECBJcZ7@x8?8L(nSr9F z8+R3-oBMS>iHNxNADW><D)dp!{+!W>!rMzzeAB(FSEX$lnPL)+E8L!Yt!}Lgf4ntn z*j>J}+E`&GaqvWYAoj$_{}2*Kl~@&sL=d@o_Rruk<3qIK5C_&WTS`ky&md06`A?Ff zPd&4xh@4!)uj%QAriSL`n9n^uJ+|DDK@zobmjtY!HhJ0<5*liSl$fUtgnE++IUZac zPy@sv?FCH)(iB&=R|oaKZcVroN8E`%9I5sl;o;xW^*)0Y6GX=hbOrC%i;Igz4j&Gb zs5Q8ISMeJ1F#MMhWhfyhCx;87=T|qws2R^m>GJh;T~&>HWnDL)Vt3AhhlhB&@5j@o zxZ#%I;PXXcXM}D|ck6Vg)Co-t<@t_J9&llQJrGp0-+i|44C-_f8><4pXYqII;2wK| z^3a9-aRh&wXmA@S^KQ(&iHVH-^7Er(!};^)$9|sU&84}o#=F0EaxrV>s+N{k&LNO3 zQB9j8A!0%dp+w)~BrJuNVxyv}j~+crxEo;LW^&8_W#*L?vd`V=c~=4PL_T(^hVhv5 zX`vFesoH`lUf;Cpqa*LYZLF!OX{@NYk65WPmxRH|I4fg@6xaBq&dj!y&7rBbTqGL+ z>76<2?#|T{sdhp?mmj8eV`lLe^nkZiK}%q@yJTdXSX-YQ6t`=oL4+VtTH5}ZAB%iW zeQVSx8&$$NNC}5osW0?5P<SrjQ2;#pa_MqRxhp@Cd58#+IX*tyLYwyBN}+PF_9zUg zu^_5|w1AM(&v4*C!-PaFL46?SF*}5=)_EJc={*WwOBFLe^4rob9B>6yU0IC!nq=2$ z|6k}ry#MXwDBM844#mFla^a@NM#xTu@8qVW_`-EfbP72%uCA^^OK67vpDf^=Y3bv< zIL5E^l;5*eRu-uUIgo2+I~h1OHsc|t{JRg`F)-N>WVmu2GP8MFMyD!d9TfI&AJF)^ z`^3|<3=I3^<fM#>-czWCHP)a_Q`c1CPK{(y@H&d<%p)aC?@N){@+viz1l1mRn5_3S z|2wTmJikGjsuIF<T1Dj_jVq{lv?#isJUZZ^{SU_0gX#ZLQ=^h|=*Y=Foo8U<D|>nl zASZ?PkurSz_c4<PB)zp`_S?6&#=g>lTSSGC+1~Qv`lkELcdp~*nT}4E92RASxyI8{ zt@7!3q~GIQpVAemLvhm}>uONTBu4Gn-m^&IUv$0q<Kp$!7o2e~hxbe08gXZ$yOj_f z6$GL{E&qY6j7AHyCHP<Gp1_zJs~Fmo4}-vakbez1Z?m&$US9f&W{Eku#TNYP40<Vb z5vF|b==ptpedk?Zl+8E!>?QHeK%{37&zU*A&JrI&FGoyX{yF%<AA-(`$pm4^_)loL zr69gZfBUwHfq@|oGP0}1u7bisLQg)NyKuo0Ad<R@ia$V_cS}o4=X=)wyX`7<OUSCf z%6@En{c@ECc&*Ni=g*Y@^r<Q-Q9OLuM@X;C;W;K}Zhm}zxyO9%Z^O&AVX{sBg@UlZ z%$A>=`RKlU(WhfvM$q1y3XpohkRIk3yA_40s^#mDjb7SyTVZ7aeeW&k@+qcMwA24} z*2ttReWlfYT~N?TKqea#JZSOi)P}Klm|33j9qow)pN5$#Boi&1kMy!?Z?eC>jPRrT zd3guPsmlUDb->hWi*hsQoux*?5+AwWQB{zLC>;*NsbA;DpiPE`#x3Xi%`MOj5_jAW z-QBvyovv~1eoyvMiQYof>hP0E!2T=&@CQ%JeBc+Im7wM*eTcPrMo(`q{o$3s@^WFX zmDGcg<o20Z|Kes9L=X%(v-@`v3!Odp8E+T_>Q7rgz9mJg9DqvFd;7z&o_F!t$#-RU zpDYi7Q+k(?ao{cXN#E$0U@qFev!^QfzzFV7PiIGIs2s|9<LvHs`gTe@DBTm`7u$~C z#k=J7!8L;sh%k8Y>4!_Nllf0;MUuL`IT9*y+cS~CyA4mvA$x6iQP|RHG-!Yr5ssx# zpiyuihDW7}3{QRpkRQ)VxW)w8Wt{@2{`~|3;MXrtc=2V8NA>qHTN>o^vjtKc*MzZ) zG9RBs@AbJ*&Lio|;111mMIRb8R0J_<x+W(Dn&F%j0-s<FHRHu7s<4xeKNV$UXAyrc zVs|aeg*~gyBGkMl*phr-$%90>*On+%io$d)!Gu6L99X`?xwhD{V`kA#t*H1EVjEIx z>z{gbP{yg;xn21Tl^_?l1+kIQN@a61&C8cAW_E9y+_KNAaz~C#=T^~j{5!ldn@EhB z92;k(el7(qn>W>i2k+E0TL}F`WmVk>GCN0(_CSmdp<aVMX?vc}$`4y)P;m7~klQa| z2|WLeJ}NRYWN54ak)K-+TU$>o-L7SgP)jv<KPJx2GiR}L_jo94*VAdWu9%33P@hfF z(}&jRap>Q4|HmL@;~jur^%gr75g~;F(<^{0KA09rC6+~j*2lyCsFY^gTT(K(E&Z{> z5q@qe7Ah}IR=@wC<fM@3?IF;kM}tV~?j3lfOhFS4)8{HVF>#Lg@wqQ<sUA<%QVIPS zf!X}srR+MLPIJ7_Jnm@5$<9vJZsP^(@DX5j!!mpAgQiwf9OgF7sP^n}dy}zzzt~Gm zK=9Y0BaWP@?XRv}RCU;m-y6@Xp>fPFpt)viJrM1bDB80`{N{b2iPjfshDT~hNcI#B z=eHE!V*mBl*(C(7BQ|QbAoLcw;?7o@Y$qfSAngB|v!)++YEjlV2~m9G;62TXNS<43 z+p8pRG8QD9`VPm*dlGFdZ~Cv$G?6f-q<%p!Qi&pUr1yp?O&F37l+}|j`i_>L<9%Y* z{QQtn*%pnGl8wt<$MIg?!?smeVkBgyyNT43<T09{3ej{|!=N?(<ht|E#m~QA*=mg4 z%9_z^>XIdLAQ(S>^s#r1wgJ-6{sI-{P#x!Cf~EwXTQ(&wsxVUmMV@cNe#)rN5}*6a zed0tcz6^v*&GfCy;n}`$n~pJfUriw@>ihEL>7M&^?MBvCV?6R(ntuK@Fv{#nl>P9f z@mUpMW+G;mW1-h-_8!NYp=y7^mjY?gqw$7tE<QdoMMdhSyEnH+Ea+^S`@&)H9+@95 z0_FDAEtSH;atC(I@=*e%zB;?{z2F<&%8Cs*Ap+?-d`j>2@Np+sBtj%k9hE0ORU=?u zk$!QT!SSb^*=(Qh*T%*h-M*s-4ulN-X1!nHkvuxp=J{W^kX5yXAch+R0)4@*>4GU^ zjHgfMBQr>I;}uuxvsWGSsr>P)FZtVt46m%zwxyU3*FLVhdGq_DnHi-Vo-Vm{rKK!V zoggNr7z;E{%+fQew{MfASk`sR+;QI<#-2cfUa9FLEh9Mz`X|!xI%u|i<KtPO-xKJm zMQ(C^NuIB-FD4D~-!bjh{E>x2mN1ge!NDQgvA(?i|DzXm=$vr;wDC;ecJo|+!`H8M z1E24ibqa7AT-`(n1+kPZ^%<kSLh^l^6!iQ{DN0eg!FaMm%hNr3@rFjk#O#)nJ6U== zvW9@#>FNsU2gSz~jLPnpl>CcW;#@e>*}HR3Qn@U01U)wPSGZGleWfMz067UVpiiSu zW41I4{W3Vn2?q!!06od>2eLNbAXa`zPVTDHdUm!51iu)2Cg<GIuwfAjN{bP~pf4je zAz9aT{^{8uC+&ZR`)WaqjZ%;Y?d`Sh><q1hfT^ZGZ?EGsK_~woeTEwq9;wOv^7iu1 z>W_Vx_98^!a&yS|=9EW6pPc1^?4h~&PDHfccM;M$F(ILv#%G%ZV8ze>mT8b8Sl9lN z6wt=I3Fl>(8#Bl!fKmG{x^zXavZ!hs8nR#z8v5thguDN@w$p_38$$8eF)?Wm5+4oa zki3j8^!A-Q4HSYL;rcJ%)HgJoDRKXU5>dxG;W&i5kOaPhp8LH$vK|NmRX-*3551)t zZqB8-NCUj>>B+^<KjA9{aeGxm!#-38bBV8u!lkbKu)nQZ_rR4ksWkkmncq?F6DRzy zSCX70l<DqJVgM9YH#gtw;@Vf^wPI8=J9w|zKBl*D$I{7Z^I2ru{*_;^Pv%ur7+f|m zsI*VtASjC=^K~eoytFQ=ClpPPLlwD05_^0Tp%ddjm;dy}Dj@AYC%Jw@L`cX24XpR1 zSHm=v!<#F;H=Y@Y{Cgn{_JJUe0`o^Ga8UPaajEv?7#muQOz)gT#)TpNhs84Vv)6Jk z${PuQ%hFy;b}`Y>e1+L)U#GjWV*55=oBT09Tt)cT(A9NGt}tIVSw&+ryK!^t?ooFf zk=I+2n5CV^&f1ve#Zht0G<o~nvlKHa9g$_V?{m_YIM14hO~A$DWQDBTMtq{eo#bhm zxg!Eo6eV|74gG)l`}1A@JC=xG3qAPA4zTgw`O}_O{=;wYT|y_9|6$o0NK>4F$gqf} zPgavfL8dzt!ZWB>&})p0j9B>_=+z)y#9B~Lu(7u{K_gLCFGoW!R}!W#3#?@uq#9m_ zwp;xWZ64(4_2Zcr6Ii5d@_^6ewYO_Cf!#)4wXl_Oo*8j33L(qTcR&o@!6XXmC;?fD zCHHm|=^rUWpYC&gpw!d3fkWozsmm|QZhSH5PyP~^?fY&*Cp0D|_(yKJqM4M<T0S*< z%)8nCa`U7lbEr7#)P<s**~5<#pu5_0A~AUYMd9*}dB2;?q9{zqa{r?!7G@C}Qqqtg zMJ_bf9Ssz1CZ8|6Xk$i@w)?*=9zvH(xUm|E#R)aF|E|uRV14*g;B1x<Wy8PE=2fH< zv$M_2mW}=Wi9S2qtBf0-`825LrLF53R*+IhvHdwjncEzSZ*#nxwh+5RdzXJEkh<&5 zV{k_e-@ciLO2i~5x1b-q%B2cDKiDrcw9=T1;0~k>ZRy6whC1(lkY>=@p%Zs^Zm_Yn zZTM^oR_w#atkQUf6l;P}ZFD@|OJZYnQ1E(JCVjSM^0CIRc6$@#JrB#>8eu{$J&x7j zg=6AzuUPqW%Yc9jap5gL&Mxb3tS^SgJ@{f_WB19Ah2=<O;)eUpp>*14wbYr$XLlOg zo#_dJ!?LaRWQY$<Kik;ZIc$Elv#zlNdD_w1YNqru!rsm<50c-k`j7h``S}M166*eM zi34|gyaqAfVmcd0(=i8lcmy`@X$VD2?%Cr{aUwW4I1UW0u&5|*J!v)=t&i8&E3as2 zy{mV8!IRQ=`!8>z=WP-xo)o@p)01MdRGPp4Q{x|X2w^f*(%0Wjun9RhIHj<#ofH>m z!jA)iZbnI<lV=Bf0w!CeFoRNms=s&2cVlNdH_D-Zh%ZtNQF#Y2O0uqeCw(|XOtDt1 zT;`>|SQX8cdoG}g2olr23SL_Bib?&_j1(YAsQ$@pT9S|qQ2YYeiQdXvh|Ljtn3|eO z02d+Bf1~yBe^aBLK@8^OpOBy;FO&ut*MIYJZW;dvFGmC|m=cV(X~{JS@Nv-5)AN+v z+FL<3=&GA8x^aERq^z+LPfOLnfKAr@x-Uvq%<j|yFEekDI(uyEhNIGe`R`6mI$Cjh zI=Vtw;qEdpVzK{v3)vB5AhCVlABRe?DR|LiZc5<0cLQY0JJ4)|vi<TMvCxWk1Qc9Z z>4a&l_bOkhaA9B%`>Pavvz8>W4BBlX?BzJ22o@I&Vf3NaK;3{K5v!`!IlQ&Rdk88! z@~Wy^D7zdJyx9advl_1wxOUi2tUUbn3m?OnO)$$usu7GFUutX9+n0YJuL_!L=S66j z={PxQ;21!_7A1@1SYlB_u(p_(m?81{%lZvy%k5YE-&~3dyity_s+IHBul7Mgk<!*C zjHzpfb%UO4R4u<VRB~v*fK|g>ldK<c66JZ>*}HN^b?p}?1iH(%wSOE-88`j&^N6Ko zos&=Q7AWnvMxN^3`ZwphC>+n9R~8W$kD&s=;Wm{Qdc@ev4^kkLg9%+@rE~V*=jU$% zkFkFJYTa9L9}P|HHJ!UXn=?P8An3O8NG?B7{=VN8>wg-uZ0LC+K4kpX<3DlYnW2G! zI6fM<#0qq(-!c4SeD-hd#s5P@yE8baxxTD$cPozA3{kD`?eP*3z84KKMk9Z(3ZxM> zUOCg*({si0q(<^nov)>zHQ$9RUTFr@NZ7Xw?d`i#1ZcGbo!VtmQqP@JXQ=#Uf4s9Z zif+Fo85~jBUt(%31REPmBO)X9tq($`THt`WQ?HreDd_I{t<N24(e~;RIZ5FcX5WXq zXbAP>c!Mx7W%P%^fPBAy5N0(r+(S?+g3(C*@@DW=Q8>@Jft+{$?grIpqZY23Xwo7g zqM_N>7$*@`OUh?dtkM(ugg@<?zVUO}59Ajw-a*xU+0U=>bW0MI?ai&JDH1E2%f>;w zpou;0<;4N*=>uP~{z1=7b>1fx{o6#MCh8GXD@URw<vpJ~Fums!R2S|~5a;>(rxDsZ zSVxH!6q>H|@++y0(xPWScsvQH@~@jN2LozCRL|(>JccIiJ_@rj&_JgT&EL<uMl|zh z8}Y>lNooECO&buI41P+*+xtlQ$}exwSZD;zmw&%QV=yGQudT9DTRpjq=GLun;iU|y zcb}g)eMx7us%u&5Qwa@5G#$yBdPLi<tAI|}#Dorkv3o7+;<?3Jsc`Rxp<|T9>B4_b zM~5nqro|s3r{~YzEjQf{U?5A~a~rR9$$b(M_w+a3DB)4e--b_xXBZMa)KR7R<!HN* zQ*@Aqv+Pa5Cm)5!foS$18`3#)otP_C!gD#3=%DoTFT+(m3y^TqvJ@e>$88M1lCiaa zDfOE+G<!M59m8WsnPE><HXCBRxCj|086V#|Pa@`EL#_qYXh@d6zGV$XuLI*N)C&Y! zKaj>$NhD`WK$vKLodSU}n?o~x5w&MTVz|Kt1yCA>6NJbuE&dc}V%j3L+EWFAjc;%4 z1+iQ4yX){Fh6zYfSmjN&sSUZAE)Y6;?zZX5h2;$vuT|-Xg{#%9KIaI`@wun&L*otC zgKC}>eq?;a3$Yq$j98&PZO@~D(sdGfj#dC7&5}`3L2x+)c6J&;w|82g(f3kZ2z;=q z=@W<G<HRN3UU+pRfa=1e$YHKI9-tm&+tO_Jb`mK(R)-DVTe*JtSHb6Z0nfn3yp8+9 z)bzD49a5C`_C?=6wGp2`zwBW#1Pw0w7P9%`Q%)V}d>D2W4n1aumigA$Ia&UTePNA_ z4?UP(Su1l3uKd~D4N%i3cZM@q0yB6=-nmWh=_}i2XoxZFGL*P-*&sdD3JO6os1vb4 zZ|vBgP&@bS^u>!W`y>(ZfE%QoAk9kn&tTb~HXtn*ljL{VcabITwZ8=L1G9zCDJ%Cq zDDw0m%yZ=QNo{ZwQOX4Usm%ku;29&MQTabvFNk13K69y6LmtyuY?^1NRcba)C>2|M zJ4TeNnGnv=Pt9|dS&8?2<-+K>uG!J`Mepka-lk6Rc$+D9Om!}#<<7mj=TfFy51r5v z*XhflKNS!4!IKQb-<x(%03A3lV3OLy%a_)mI2{_gwQ2%|h-i{RLv_CGv$eT$b@_Y$ z&aaq);pJ}Ip>REN#0__~vf|W1FRyqIT0{y8NAL%T<)y;=_R8@p)tfiEWd}n;<mLxX z?9C9vZ`fSfesJV!^GkHI&=|w@e(vp3f86S7>ag?8n{UJkbTSWStU7C2+J~-r`&iky zL(VkV)v&?9c<g1C9KFSYaB5oO{qlRnTie&V$&zmnv9m*y@aB{d<7uI$2g=$+83nZ3 z_H8@m^*beNJA<)AMB3W-8)C2B>qXrz6q=8Gx!~5;X$Z6|iWYQPc%St6J3BZuU)@yK zY^gH6mo@~Y?81_LK=#nqTsb9{AaQ9K$0sPTA;CIU?9meles1d5XHog(<qu|NFZLWe zHhyK$M2Ypu)Kob^`-tVehbCMLVH;L&!w&ppSiwijSmHOKc8=h`pA>z`r+g=g$k<q8 z>6azRp{dW29+x!#TMMv(wHR1j?CdL)H?Z}@3-34?wNdTB=U6yuwa4f6T9V6m5si&A zjwavJCg^$r4s0!IQjCo1pgSWXLaaO=qSXE)c?NdXR`!`1^}%B(pwF0^W|?s4!9b3W z-YRQKV~>0BT*h#&<2B3tU)e|4BPwfaNdR5H?I1H~{g>1kfUgtU`Sj8vDneG;*{X$R zHiavkW&?!Z%FLtFH|O=#c-spH`e}$XldLdPmeWcl14Li3TZbx8|GbaVr&ni5r@9(o zUp?}h=WaBlYviC)E=olNyhWM2TwI3zZR>Bt2@(>cvy;t^Ffqz|uROc;+2&BHD8Xaw zDYm|T{`QjEK1?Rtot!J+@p+;b&thmql3Brv`GqRY?t&Y+I(6p;TM($8S;`R;vB8TC zXTLL5g7oLRev_+%y;U{VH$M;fol`R=c<Hn)4`1x7+}`{tAn3VmZSb_DIZYcro|7ub zj9Il4<Dw$Aqy)@YSNqs@VesCwC34MnD=l0|#ybddc;vnJ1qU+>Pfb0z*7Jn+;HDT# zDIDj%PoC^Le<4dzJ3c0c;F`Wchrg1(F7p`hhh?7(QuwDXhR^eAFv0B^u?iaGLCWYU z8ChzQ`HhR~pFY)LJjLEv(QShIfmj@_)6=||nQ-AkgUZ~%S++F()Zt>6NfvMK<`Ez= z0Y#oP;8x%7l&?n;JSkdAYH!<mdMeizl957+HH4!XvYx#NcUHbWQ@*x2$DqbbiQTB~ z++KSFjP9uX=y-q@Dqz&!K?GUtRBH~jAE_p-T`j52AYY4OV`7-DJ32!6veUip)qtdv z?r*XKGplDfq~a0Yfj%7zNC}4|#x{Uc4p7$qe9-szCf)0<woJW!28PQ7A-ky2ys}ay zDIhGu5-?KbNj;58X!}-H?jiwKE;vMmpr}U8alBrsAk*iP&s;+0V&bArI@ZmX`g#gr zG6dr=7zLpvVOsJRKsu)N;jcX)W)gKxCvp3>Mp^j4%8z4dbCd*B*en$8#|+)z*P6)$ z#Y(iI|I3`XxXxz!a|2y-fuVKBksw)s@L4e30wN;SKxYU;F^*m9_O@#zO@Z{CU^hCP z+&LE^<9C!-``7frr`d0PhJmj-IMmaUGaZueLjWn1^gX<#({iu3%Fq{05}0EQg#+<V zi+ms~XM$Pyz4ZUmz&&05gW06$2aJkc&voa>ZZ7=XP;}59WC@L6CEvT({Mhz~jBMls za6ulJ`PN|0=!WrjW{*udKD&sRn5GjZzETia$j`PJ)JV;r7#q{go#suIX!s^*QR1PR zkLhL)(36?x<Pgsce6}^J%hc9bUDf;WcFspfqud4W+Sl$}Q?cWJ5Y5uq*{Qpdgys@n zaf$}y8bvH4nSG^<a8YaOStU8Ee@aA4$5(&xv$OCmiyl5qMljl<MYZlg7ms839zlzY z=wKv|y!W(zeHL6BxV&3MeJ)4x-@i9=bfiLGYhY-|B_~%>xlw;nCF&&K!pHI3@*ITl zT<|{S$F5p$$87gP&wTD&Zn9i5=7d>Vj(X%2{x>II^C~wNw2{D_<j6=Qb6p_(M)*D< zabx_r>eIbFAx*F3&@x*0i@>35tgcpqfe!`~H{6~Ujd&jZjTOfhw^FYz_}Jt<|B?_P zNC}F9oz+XUP!McyuA&U2hi#&$uWYW#N7rp-+gfO|S+IQY-*S(s#H|tKBI}LSIY6N| z8V1mnLs_gp)k|R7`b$<uqkV3a{@J7<njQEYf)8Uk_B9go6LMFI@1I>t)XKG%uwNQj z{W_H(#t~je%^@#vts~!7(;fM>mvwckLC70`z_(h&O(TF9^dU8f&9ThB)|2zz6Xci8 z>f9js?5UmaC3ATKVaKV52D2Doq|Fd|qos5-nAP$)opN4C5HbD1nD2M4uM3h|=2piT zq|inyhgKW3npNFr)}n7y)>2lM`Q0{Lzqz^l#0h({U8>Jo7W;S#<>VG;DGKNQG&i;* zap{zlP2(kp!h&SIAG6@Rqhew%n_s`tb9L!1MzIxO5D7Q;&wN{&rX+=uO7|OsWf~A; zTA7=l##N>xf1&u!YL50csPGr)+O@!<u5WI3AU`Q9?N8yVA>&NFKvfi`l63$@`P$*a zX=u>+ny_W9%u;c^lhN;gnUO7|f40Gk@fi}h*Ecry)3pJ+v<LokzE?B;=p!_{cB`}f zNFd`)bE`R-BD5i&HT7Ia9`ec~^~h7XIjH-xesZnXP0uxK;qTv9eSJnqfPUUCk#S=( z^lwh+d#k97sNbJ7#F#?tQ7tXO>m7Tg3}$%yg9tWuc6U$TcR=(KhSF&p>geb^QR7us z=H373YkT|qPWQpEm#_XnxTzQXHrr|ma^IsC)#TjVtj8P}0E&IAbbl0NCCLJvRy#z# z-`d(DNp=ylD|qR?8>p`KtG1A!qqDZQj`o^<E#w$m*kWz|4Yxw~(xJ5b_sM?`-cxw? ztcmA%p)umZe4cz8`%V3}-C;!92Z2_QP-C16eB^t`$b_RYJAsS)6%u+Sj~&yyqQ50| zzN_W#tM--?H4Tu_>mWTiZ3Wkt@MffC;cu9|{bU?=L|Qs6<flE0i_^_~TkP6w_Dw*? zF*B>h4k`vHPiyW(swu-lF!uZRd8jJR_kt7t4d4`i<<OqGw;#HgcVTs-f<A}lZ<lKK z`pA*$6=n&1eE*~kw-=X@2F6@cN=nDOHM+;i9%3js1<ngP6_o<5k8OC=Fn;+$uU^r) z$|qU@o;-&SC&P7hzQ5S>X>`}F_+!(|+uI(`i>tg2ABzkPuCZuuYkP^<3rT6|%f;M# z@8gcrG4dPkdhnvLSa{QOW#z={+s_cMmW)h_sQStA@ixK;$Kf))g0MGZleeu~Bvk5@ zMPun9g4Vt2_UrkVjZjH9+!Sg!7t(K^L}Jr_hjCL-XbW9~k{@DsB@w3ojLDO<3bIH< zNCyQ41w+cgG;Kj$t!IDgL*9x2h9L;Mpn_>b5o~8~ulGF%rhTl&sNe4j3suk7CY(3{ z!8Zg#dx?-;9q`ip+hnnRnqz?d%&Qa?oVMlXZ>(;4Qk1PvP!_uz``##5*r!@YL(5u> z1l^?T?>Drke*Jn0paaJxlIax=F;GNzA6S0G5K@C=w<GyU^>>p#`!owSL!FNe_Iv{& zQUg)8!UOwA9`3ikUnxNa%kzRsbjv~^mj1bm7fDh7jen`GPStkoigh8qaQ4}i*e6dO z!g>Cszu)*BAZH2yO#p3ZAZL!Q@BQ%u+SI2*i|cmX+0V4eu0s$7Y0GJ$=n<rx!9Q-B z;rREqd|KFGrjx!FVMBNh;Tyuj_8{XT`X?bi>!VYD@L|oQQ%H+Bae@V)4x~Z4Q7lL8 zXfd;i8bJ_{NT(GK5^hRkWmWPk&1AQ@lRKZzk6TNgc<9S%*7s?yEvx6s*2Xp7bdBlo ztA%BV*+?<7*8A(%Qi>t>r)FTN=xoWQIw*Yz=6Q(iprluR=B7Kbm|fs<@fMVYU!Zip zg*_ES4f2|H5e6<j;k&?KjV$#Cu*M7WrPjQ@BlL=}LrgyY+bltpcX!(hLZ(shA?NE- zPbW$V`6Nc$cMiA_(Fay>LFpAQ?HI4U(*kL%Hb@5OCxY-XGdpW>@4t0-$9yt!di3iU zyx1pXWFk%-dVzq6){{G1DV<J{Fi=GX1e{GHyefs$N6Kblb|JYBi}M@p5>y#uLqn$k z%~p>)XJB4Uf!UW`^-VrfL&#o>#37>zl@1oF^0{;8y4v0K6e+$tdZlw=5~!S&^@oVY z#)-&hKjeeMn4%5wGL70T|L*9_=n#@To~$`LduM8OaPFzDP*zRQHBAkTKMWikIh`j9 zZWn=Kh=7Khic`_3t>;~V?0;>Zi|#%k1+8w}(A@RlKKv_o*cbU$Mq%>@lF8r}E8YK8 zD0%co^6`4PI-(bNhVKgsptv}kb~k?c&vUH-N3Z7T^DJli@I3Iqy<dOpe-`i(yi0Pj zY1+r94SNj@*Wq5xew4?2*1E*qxVCUGNoBZ><@BK;a|}7g1SJ8Y`$6+Vr{zUWw#aOo z`)cm(@V(Fz=0OAdAnTfbfrE8w_u9298a@Mud3nu{X%0hGS-UfJU{&)GDuWZ{nuR~| zf3XB)XzhPQxjI*lG4MKm0g7kUzVc)nPX|Auzmp|*G(8eqs=>z@+qHFn!9-@h{VZEs z|ElMQSKy>46*avZRIMz5+(3#0v0>leTZ<IC+Go^$oi5+n@<!cs5VA2H4*_*{!UkrZ zsb`Wza&LQ?4Y5t+R6e0!zfOK_iB&o@gjZ!ZQT*{99hWF|%jm?!a6uhvOqi-mGx3MZ z2)(#55<e(Rz1!%+!rb%nrE+yz7IIoJcZm@E4ms@E{+Hrz<QLAe1b7~1Vet$Kx*ae- zZ)a5gkC}#}8bADuz!-v<gfFh`|CaFD@92#IUE^WN#|9P_r1J7BBMYO-U#<R1HUMO& zEZ>&SW#YLekDQAJqdKRy<0c|3*39YcN=h8V3zqEFHTEe!o7O}`FC)SqK0K~-kAdN9 z{ZBTKGW7yFCI7aM6I<5Jo<4v6;|PV1{g|^7ZYV61BnJ<UUJ1Rl&AXpvWJG&m#!xcp zq$XnJ-_eq@_DGm@`tqevR_Xo><h=5rMeHu4Z%S0qW!_`Q4w8~;ym)&g`;&N8Y0AOl z9F~=SyMcH{B?K`IFBZ+O(&$iHIjAAcdI7tmg~by(dYw2|#XB*f-@h}UK~Dc<aowzy zq_~(Uwt<vY@>uwPeoOpIb9#fTwkawhY%((Hm~n4>*4cTuy58Ayz3}InH^=kmABl+6 z)m_`(r_p7<eT)QDx+@<fl^SB2S~H{RD5(-U*Y1i_nVvdDGSR$D7Tb_9?~#u)uWGjc z-cVMq(IMJ--JcWV4M%5sJ@&Y}GhxWal(Ev?!}j(+Zm&zSFD%$2E{jpjG<|ry!L`)e za7|G#V}35GYPg~?``2{&am%II{>uxiwvLYQRlMy<Nj81sXc|{bxI;RRVe|`~?RSj2 zXr`GIM7W%_t$@|gy&T~~<6Q?v>sBj&b$H}is){EmYJi{?%-1vtVG2M1&3@eOv+C*; z_)l%V?Kk+lP8%6zzPgc-loT^kZD-v@dHHexA|&poSr2EOqksIfuWLUNNFd|S?PiYq z`)kTIFvp38Xx!%<_t$Z4qW!ezPV;&ybUh_WQPr$Oq_$w;<9j<A6*<PSbj-KOB%iV6 z+fcn}Hon9iT^|{7=rRHnP1Cs)%f#D4LoNVh5^{E?U>JWK>S|_gPPA{|ZpiHr>HJ-| zZ03Vq8zn2N$R4xbq$>$ub-zJ>*vYPx$iO*B^6lHty!;Eq;remVg0kM;GT=ON)u!UR zOriEN9kGOj*VkqyCDF+j_8s2jB+mF}eqEB>-?`=v^=o&z9WoLULUb4rp3cxjH&u$N zM@`xVEx6s7J!a(*9OA2++2_$&SxNNg=d)MFB~QXPo}M2M3fH{jvu{D;73==Lw6|{A zfBkyfWs8zBzM@iT$L*oR8#V2ai)FR7#mDXtU0MsOsBg}%?+hy_@ZMTYW|rq5la<{y zziwn_ck^Y&x4=`E*77fX-5svKA>fH29#d1Fq7CmUS4+)&rwfgUP#sz<iug7*v>+2K z9Il5#KwqRyq_lXQzfIj&E$Zdklf$(0W==V|Yd&+G8U7=4U;0YtZ=BZAxpX=t(>!@q z-Hk9E#DyK_^m%)XRP5`k|99VMrr?A1*RQlAD}N@Y`V2{4UJ6LpSd5IV0|CW~;U_fG z(iXs>yUU+c5nn0zs%#L)5+sAKf7rlBdux8BLPs>#<ZwFfA&H_X#e@482%<<ywV3H+ z+TYjLisYNZk@1SQHfrogd>6a1ec}^OOl(+pf17l{_-ZL6l~Vd_#u%AyS+O68UD;r= zVx8^3^I-6930b7T83}IvGrlzNq^i7fFgKsy@EI=W=l2>~82IDxAtB-5<{i5i7n2o@ zEm-KH*WRlr2WPEIvT!LXer}Xa(>{SMgzjL%U$2PP1Tka6%HkPq8q6pw`^fzRQ>pg* zlDY}3j5iSB2Od-GXV@&Y&D8NMzkqE_C=Dv_ss03w%O){VQ6jEW^T&Aii;j%^93A_{ zlJ`!cw#-L==+CyWq|}F7b4g6KkEbz{F;Q>!fMDcT$b+~b&B<%*9dtfHw!SVuHhI9E zZs_LG)5`M;&-NXDO_S-!sn_*3;TWVMS4N~KN{rrh0*BpPv9TK*$nIR;|46+}74|i~ zTho7k<nv;0<{TOAV0?6DLHL5oIftyvn7=0-@c6OB((;Eaw!<BHYP|3F_g^B4`t+NI zVTB#CR+1XM?N`-O{ORJuA_G)udAY7qGBV%4wEt~lY$|T0+GB>5@W(uSw{@I@&9xFX zi(8`D&VVA!uO^dTyT;=>TY6rQZa?{&L4h4DzvgU8`=Pzh)WeEgw(-)crme5ZuvPT+ z5e*NU`Znn8`1QM)-w!mpsHV;U%)6<p>(eLQny&8279EBiRe#@t(AMG)d$B*7J35AT zzkS?>%_#n8+nc|mm!549#<NSZygt8sDfo#lJ-soG;n2%(<3Dq->B^|(>Sfu8i<|9U zVxIWWi-!{DAnnlULB219l;~!W5#AW@o$cGt71<x<+s+AU{A(U}Hn-`9NiEbb-zAV@ znx8w{U}0YvTalr;QvIaMJFjJO_4v-oe)l(Yk>AFGLM~M0+n&3<BC=OAiC6G$SjZiz zKaVr)b;c$SzqC}9xV!NyE<VL3^Qwb`bO7bE@VK~Fev!LRE$fW?@7vdgPn1v`YOY(A zq|qYY^~aY+<mTi>N(u@qq@hNrkw4{UuZ|Mjj^3|Dgg?OUfDC#r*J&Fn&Sb5%q1_>p z(-Svk)>eAk?0)JVl=CnVI?lyNvF?y)k*+wh@X7ASdlrm^3i!9(EByAUnpM!FbG03> z&mmj|krx~|NXi<HE3eLezOQ>_%V}5i?KfvUDXD(26;tZ4ly;%dxa>ho*%5(bE$l+< zt0<>QI$~^Hfn{aVe;4`EoMPhyY7rw}9daOJs;`L8)wO<Bs=LJFs-6Abo7)?s+C2xT z8@a|N&d(3rNpJ14rq?eQ<_Hh5X>x5%f4sNYEx)!atB#lm;|?9dLNlDYyU)VCE0g^; zACYhuA%A8~PxnHl0%;e$^NG_aCQJ}a0O^~k#|w@s@$(}G2dV=pQ*1tdv`JGO_YXS6 zG#Pbb*JYt2-eH?Kl3I%vg=YFZGy4A7Lmn86VFtbp<1ehD{eE?vtjR4u`%0CDvoU#x z{@<q9F#Aey2DSC}V9(N<srH}3{~Uf62x2<S{MxNwrcRj`K=Q%{vj_Q-c6N3z;OvFp z;(_|*l@!atu#%6ze%V`85M329RV0~gZmPSt^H%j#g?eMspCFu?3@&aIB=RcWj~<O& z34dz-TPh}0QvDcElBLLjQ^Sny!K9}csP2j%bG$NKk%FL#M}(XQ(by~*y1(m2GIAc( z?P;RqG&`&ZkB6PMvJz2Tx8mVfm$@GlWE<Vblg`D>O-qN&WSGqfyCZ9IZ5;$c@WUXR zS_v&AI$OxK0$>d2wkzoZTX)~&^G~y3rNhr<kL}ypF620U+GU|jUvz4)oSiT>_DqwO zr22LxsknqX)l{cFqw=fz<cKwIQ9mWPkm5rXeFk(qONNHX0IZW_=#p|Hl!1d#dK!qu z(u*2<-A8=g?!p@<&lEa!$DLTzk&*qGG47yq=2CRq5*zjF&bwvSM{)(zKEwiYg^?=t zb*zHsL`i#hcYqr2L-^}043(62L9s~=i_7rJ2hZo3vR5A(T|{#pn8Y#7S|u)2+?0d+ zM}=ZkY`oiZon#jWjz(OCNgCddo2~`E<vXsl#H6G@&p#5to6Sbawnp6i{F!gZYg-Tn zu=jIRA5Ojwbf@q<Wwu4<Yc!X)SF-1SFQZ*DyLK(hpl<l)O_cV8-WE{N`Mqp`RbL=m zHM6xPBT~C?p$d>ZBDeM)KK$DGsXEwv`~c``8H246Z$KFK3(ErRreOp^yL%5QsgeML z(jnRxXp`ZmDz-58{PXkscQXt{K3_PFG{xu@9yFf#<e(((BgqoZ>hslrN3SZY9%we8 zV`qPi-+lS}N^jlkbbOkaAW3z;cUDp64i%eoSEEjN2!z)iSs3Gda6gdgNc@+YG@dJk z(mC1*aL|1Dk-zxPw&lQh%;pr&LADbk{t*#;Q=Q)^F2p>quH)P^n;Q_uea+SG4gEbZ zo4dXeZ4WpJE;}Y7g3%taUIK4vsHjvhPgrqthL9<yZchLjl+K(XCIY%ygQW3@=;%Gj z>`YT${3Elpyo_DZAuhhmQ+XQqmoOg;_8dt02r=uyZkXK*c#sT<WqC-URF6M;?p;o) zdpO&PhY;%$!b~wmgBqvrV~9=!Yd+jwu=rF|#06#FQ+|y~^tu<=&Y*2a!XO<HEgKsp zp@m;5T3aw@PM<X^{Kb+E6~>}tW5Q%^=Skf|Lk}9pEe7OO?d;|ue7cdFY}-^*$5~kW z-r9F~_}u{vA0R!sC4M^X(R|h!Z*SSMoqrTt+f^0g&JyNIVz)h)5pQ_0=HPLQV{Qrm zkWKf!#6ye_h6jK_#2}9d*(Slxh>pbG$_J2)5ILcrYa-Z<IQ$g*j&#CAFR9Yo3%k4( zInfLgP#DC6o`1}PfnS7<b9ottbDHzjaO?mxVeF-3lcB|zE>1L^f#c)l+wBQ^z3~tG z7%ti(oHamLKS#g>TXi)M86qO|@O6mZfBE`#;LOZ*Wb+H>JZGx$K`H?zpV0tj!7Kp6 z5Zhr?E5nKhPAW2*(;PF4yHdsf*)}d729*mkvQDIzzSBenwWg>Z?E8E$<m8UgUaX&$ zKe4-s`ud8^7i~PqN#y&A7TM63LruT={lm3Bxs!6ACEGh(ZjPx5P_umsXl#`KRC157 zlb%Ki@qy`#kG9S?J3{V+hzN*--30$fP0eWm2BCV)M8ye<=~Z?P4#=f?(OJCiUDp2R zCPz3~hVB&`HcUJNbF6ar?r_%vA}U~hAp>-*YGuU>msI9=enG*#h`c2D`v6WN>N^<9 zB;D@-?W(Ha4h#7H-JoV=|088O%Y}{LnDPG%KxW0mLAu3R<jEs_ROoZdI03nYRNEGB zj#7ej6XVI%KfTnkVqy>(nAo)|@9r%mLlV|LC#U{Avj_C<GxL{>_IxP3fpImTY1y`j zLYNZYbe%r3vGFrbt_PZ+EaY{O8<nhZdaeFrGBF9fxhZ|{f$3E!U|JD12&E^km?K!Z zKn;qS`;~W-YHnneH&s*+;j;#7Espc~5$r*}I8p=$XgK7V0hb~pK^~U!sCrg3t)M7q zLu$U4`N$!u;g$CPXzWeExm@3NVImZn=OI&u%!JGeMKTYOF+`a{LXk9>$Apk#mCTvS ztO#M1q~S**B1se(QX+ik)BEoI?Qj2&eSCWzYaPq6T6liXb3gZeUFUTU&EOM)dt_eP zGdjAHi_4E{4UzLgdmhZc%7M285+S6R$}oR}{E@JBL|h}eot>Ta(1~c587ktm+41t_ z7~&3JK+cq{66_-}8rH`;G^8VCI~K_wLD#u7wHq1;MRsX!E7xJCN8A10<f$!l9I2qQ zI{c03?v}syRAD1QN#-_Kb&FHsxccSGa}qn_o|0}}0y76|HooO*r!O>@aFK+)aW~va zp55z!Auyy}R}BkP{Kv>be||ga@h&}`)n}+?8@7UYcl?=uV4yDC?1>O@tI-!P=z+vh z=Jn}6@aRpa;>vhSVEG^-93kc&%yH<%p5oQ9c8H?9NQ6Pd9TxOAn(f;qmN{8#A9%l& zDOk>UM|@^RSI)u#gIx+UBWw1ni#`03Qei*8Y2L4K*axY5A-j;Iv)&WS8ydd_{s)qO zVP#yx-Q#nKx>W7r{Ja1ILyDoV<$(U&a8E}^$2PLgCr{GF>)m_U37i+2pEO%3nFsX1 zpRo@BZz{%+><6Yc;u+GR0V=#efeWz-m;;c%^BktXCEzc@2~iJ>VC&LNOs$T4dmna? z$;4v5r50pZ5Iiw4@f2DG?4N+0EwBp^ql5IEoHFsWtSkeJc*KCx0=9*|>aNAFh5rf3 zEo#{uwBCpy5Pa3R&PFzl<D7*ClwbEeldJs(G|lZ<dWTBH1#-1BRZ{ieWLw{NJv^uF z(zZnm;e%DdTcq@jj1&OGMNf2hv`sC||DMv6_q6cK%2sO8=N~wp*ACBUVq?OqXk+Iz zyp*c!QM$2dxJv=vY+J_1O_{h?IRyn%s)Ea5d-~0h$3?+N*FUFnj)t?aIv{wCENt!i z{KB^OI2LDE-1gT>o)$N{KJ!1g0D&SaGi79oo_8*lSg!S3q!)PiKcmso%C9>4N`T<* zQ8SD_{`JARt;*#V0-+)X-yJPhYKbNgRM2T*VBbOF+in^EP-EN1>Q~kF_B+JIq^9<z z=E+9wdu*ve)o?CQQ%V1++%he&slw}cD)$^zS%vji;oThZs@|{pbWaM;TTGO;A{CPj zuR<cv+x+W7(mAMWJ^F$l|Cr7bkejFfIZKO~wg;dQcFUrlkiyk{dun2R{N%~lQzK2| zaMYfmk0J-(EC$6G4MR%T^4FAwvHiSvEmR|QcJ5+s{Ad`oK&`LnS26U%oUVh_6?;%I z2FJ=onUZ442y3;<_7g8nZw)cLd-vP6Ns(*|Im6r>f4{}uNfw&3oO=p+x)P_OzrNk< z$ki0Y2B8hcZ1Qf)Ro5S1PJxEXzb7O0)-A`+YQYID!I6;~?GxQ<u?cSuLgdWA&ba-z zxcJ#UYOVkL^R4K5_Ko|JKytWz6g4}FpDs@7&d-laLPDfpun33$C*R)D+tz%cys+^* zc!$2tx$xD8)DfGW4QD*%QQJkaNt)cY-|Ocy5=vfD;x1-OXZiO0%5AolKOf_?^>;Is zW0PY?;!~NnT(svugJhy`Y~M<oJOMYkhG5^_kvjbq0u_#HJeZfYy||UjsrtGlTKJw? zsyGXjP2I2Z_u@mOyvlEOd3|@Zs#eJ+<YfP4<M`34bD^O+q7#qXTqF=)r*JKec1lZn z!>ac6{BI3|f+!o*UH#D+8RT$(es$k{kL^*e_Sdf&5zwRy@ag4i=Iizx9g57~wi(go zn=C9$f5B!TWv>j`XR(&bbdKMPv9<4&u5T;)<b7<5xD)3`pj8(T7*ob8fr)_Lm;SOH zSl1M2u)UVIS@tK1<nORw*mRE5i-r*z(!>c%HoBcDmY>fzD=T-YoFAl>b-If(#p+2{ zq4<Rh0NZx&J{o@?I87(Bl`dW@DC)_LjC0yaR{Wx(O||zc(YXA59BGY>TIh=t_|z}U z2m6G4nei&E8F}l>aK%Uz*;@K-<78kkjzn4=J{(K52YuS#FA+;(WBo0Z)Gjy{!H{s8 z|M7>@ILFJzfvKZ7Zr|f8Ire+u4#$=$bHD}Hio@JtTH+)VKraNW!rjcsupEkHeq6GU zOog0zQj+way}Ld!F*83gd|GPuZwy*j;*xP?&!7Kb+vdIWIjRTXq_=O?7?hq>7*g1I zCX{T#FFZ*#@N==%b>M{g9+<IS%=?fxSo>Asx(wgF#bCIZUUV?Y!oaM-fgYU1DysbR zA-wd|ut(MfQ;d-%Em1e-6cVJ4`Mf(#UQyvF=V`%T<L6g6CnqT)An?!oA_4gs7+6wS zST6lj@>KUtq0X0??f>KpUyP<Qom9gJdhGM(!kR?DnE!<d5ePKyBNOu?&3P@3{{at8 z_BEE}=abvp?-?ArzR{eUCwt)hd2VKAh51Ey{OiftWeGk2IuonQn^&{MqYcta#AO-h zUp{QyiBIoxs)E7t&0ZUuUVQCxo59U(#H*2(iHFC2Ccq`Dek&y<>~D)5a{u0e&``Uq zJ>5(>%C|aJ79L3`U3yp_;-aJG)@A-}q$dhU0(WA~DsTx(zwb=84+pu($(dBnd{Im0 zTO;_&op%p~k9|35BYSH6@Gj;=u001wT;%-5{UhZRdFgMPog1|m;)>lakU6zav?tmj zm!eVQ*K*lPUn85=+ZOx1-n{C{Y?~W77af~rgt2?!SV&CzFgwr`O~pSj&;^)B=7G`v zORSYnaevX#dw45=Cg=kze;ArUpDJ!CzqTc>FDf-vMoM~zi&yC{wL{Y1dc54N2V<;F zO>3JK$ov;SJq;PsFC3TLh;_EE(!!QP&B|)<s&$iUaJc>n9AwH!b$XF(k{2%JIdfiE zaoIve|L33RJNH!eBFk(x;lS~h5swB9DW`S|hlWPe1N#-Dj89XC$EO<^_WEh<en1z~ zL7vw~5krA`vGeXSJk7iN%MMHSkM?AGBAa^qw{KE2Pe|T)vT<=-XO~Om4uvlpCa$d1 zyglTj_VMFuL1uSx=7BqHN2Kk!cT+jmo-|(xOknT*r)2j<B&Gpee#h!&6eaPlD0jy( z*Q}<Ge}1>hpIa2Xsk(>5v8m=BarFg<Bf1tQ#*qo6Kt)$oep}po6xfc+*?F)UA8ySy zqPKZl0qGyZQ0*S;kdsE5!a(W5>iD6UKNXcfmN48hLgChRrmXGXndr+~cDuS+9_I5| z#-!l&>rtbp9<Fz2rKNR_e`5MH*;y*@Rj7r*b_WT9oaU=JlKahGzBgnr6cCcKJHw3Z z=1aOUq7!dSzxwHHXQlr^L(>oi#@NKW2giTR^s~beXtcfZiy%3jrJiV-+waA^@hOf% z3mq??dkMq!Hv0w49z}TSS}P8giXYlR-xBxuak;oSV+kfp$z?tYcE8l!<&A{zd-NK- zZ~k@1Fl{JMh1X|P<MVRHlPfgz7tAP_26poC?SQu^_1j9>j#v4X0<4SB-|heLt&zPs zWb@LePxs;_UAQ#?=q!I7frq15@s~Bel<rQPo>h83YVi<EO!y!7l*vXj_>sr$IyB-U zzk`uDkm;*ym11JLyKU>|q%cO2d=&1YGef_({uEG!NZ@b%`_gL@I>yJ|nED2M8?<t0 zuA>9q3%6C~rr_nSOy`Z*oV|HfT0TaND!lYZDtO~X4m&)1G$D}5A|y;G^K#DqQK@DZ zKAzQuZJW-rTk7aXSod%FHoC5#Q8#s36%^SWc@d*5Z;Cc!AMfkmxz~;#1fGc;zk?s= z9Q}L-$D%o8E#yOg$o%+Pzf=2<Kil-Q>I{8qNyq0GK~IKiD?nbuN&WLDlq0uN{9076 zTv#8N=wR54Ir<=Z{M)-Q1QMF*K3R4?`ZU6~H_6TcgosETL0l{TMnB^Jd(pi>0pd6J zQ9CU}WPF?bps`$0oO{OxtuCTO65%hS(8C(R_VnL>AKyFrfN-xu30UJh%nlQmt51(- zNLcO+;{E>Y@6wU)y)k`k^x>t!M{5j#>5der;kTSWf6!&9W&?W>Lw8DyO<?*=0p5V- zHGPQU&e702MdoS_AA3_6_~rdMw$INObTJYLiusph4z*u<GT+Xz)2d_a>J)|rr&m@( z+xz^u@7!tW{NCEvjYm7yUv|bQZ$nsXWz75RIX;Lr-lILqT@Aiiat&mfM4r9$M34j1 zrP!*7%?pXVs>~34S*F9w;t3oZQgd@FYQpX8xRp=6k3}X`!Q_D;CY(FWFF`GWk5}b$ zg-+)KupT_-?j8mC3<k;qQc~bGdt&P9Uhs@`!iS8dgR~zT00ouLld$jEP)){tw|e`z zcM9a*1LxPuB@yImZOk;FiJ}Vr+w=$$6y4ZRr=K0p8DHuPYX_C8;Ir9r?wG)-jjkF` zeSyrLw#m~l3!a6yK)OXwVWGzawuObY@4w)H7csWb08s!LW;eQ<8?!T=HyiqIOIWH0 zsNA&Z$*g@?2xZ?*m4Gco7Ps96#8uq0uct?E6W;)tB7z4go+GHr`~~a`gi=xBYQ;Ak z9*%kb+z7!3pm1a!{p<@1a@ZWaeD%s)3jX5zAQlm1j<b@n%pKAi&ER`XiEhTE>GUKM z$Ts<KiFy?1s2)O<*7*DUQ1jkTBNS!SSoCi$Z|yD#`YJ+dT4uJZ8dEuNP|GI7)`$;T zF|Efvlv6N$H$VBsEd$X(flvD|s#krT`Mh@us8rd>-W$%-ukvk_c*|GOzcHCL*4)0g z*qI3}+YL0}2)0V$*Dl1Plgv;@BR4%WV}YJcTwdPXa|G0dX-o*jgzkWehZaQ$%amKi zUjV)@)|@d8GDRTU6r4sng>3lBc#PpBkUay)3F|F13;MHjat<T^g{{sW)((8($dTEV zVfdlM2puy)OfVDQ1;Z9Y6B8LGeX#bvpp(+m`|;^1ix>Pan5@r#i|0Q<m`GfWiHRxg z6z1-Js~TMrv%2gZ({@E00c}Od#@TptOhO^7jskvG$x7ZYkT`Ckbig(wXoj@KzOG^7 z1)twNTX|MA4&xv1?=Ug3ADjAhB7-VMeurtE)_2tRszenS`qL->wK6E+^Ybg5MJByE zC%>FN8+sv;SUo@zA6L0RZT3X^)8rv9mBrP9ha1<(#=d-s1-EPq8R0Jj%&1@)z8FLh z0ug5fq-%Hi9yz&vCr^r#9fQ~2Ad-MUw?riqjcAZ!)||q^#an5=M#C6TDFJIByNK42 zAhld!cy{3*nnx|ht>{JR_|$6J*JUrzL2&e+2wFOIUa5u0!pBac#XfR`o$!K$d^|Ju z&AWG8AXib6QBqTP;Ol*z-4!bV6-*LEjdUHPCQMuILu1s^l37~N(h=i#l~`s~<G;L0 zDzzGezV7bL4NtVIwbT3ls6PF=%nk^|T>JUhEvYdy3K?<&M{fD+=4-rD#qK=^NEIU% zb}fIVs6uLM3M&#JdAkNzBPJ$Qb#+UB|0;_{C|iYu3{6eNKwB#af^IY(EaJjlsRjsH z+r^w(P~e^&KxP*D$PwLEkRsHDLP9qb+_#?#3(G8?npH#iizgU|={IiJjc>FXi>8_5 zj+Q$%Ux#e#kO1RLq)td$cl|Fsw$$qCfH)OA6Me)q2?*Umu+%G%gsjzqJ5wG=NQAkk z|2-`b?Up)J^E)16G6|V`m(d?TeSMlde5p4ZccJCb;hw@rVY<a3-~FCG_u08T+nfxz zy0D>v6u;LaYx^#-6R**%k@9002z23T8pCVt%_k-5_q@z4pBCFniSqIBVNr{MrUUMu zjf7Yl+l8ap(t#s9yO#sPnn;Ys&dPR`Q74-pfq<{@x`ELr<ml)aioGS<-CcnTs6qT_ z#AbNG@Gx7geJ<wbSUsgyTsu?rPdDC--QFqy0xL7YC%RTrvKxRH2D@CaB^9qLe^xC? z+l(R8j^~-q7q+mlXx?*L_pT*P&22CR&;39IsB>F9TdQJ|sv7wJ^1gNv4u~?xgy2>4 zuP`LQORjv$_mjieY<_8t#Z^8>D8A$dW;t?b(IcZ}x;NHYFd)5riK6}(7!$FH$5UQO zCBfN5Eog=kQ8P%DqR_c*<{55bF|N1fTFqHl=&sE^_}{45s~L;woH=9gi~(Yb)NP}q zi`*w5Uj4qSiwbcs-Jtfs_4NwKTN&?UGJBAqAPnuF5!?wH+t<T${u0~LwF3cxK~!U2 zq5$tT=nW{zV9C<)@@18t{eRHm$i+7Y`~SjYd}6GN)u@9gw~lloIH9cIMXK;@b;$R# z$gCD)m(d{4Hgb|)9@vWlu^sF#My~0kju^3yCwd&t5qz->+758v*M&XA_mH{D9z_$p zwU`Az#$+$xQ!Iytg@XLqdF8XAa~-q8K49MM0H{LfDu1|0odQee-@ZN=m}n!%)ZBv) zb6O%()Jg)CGBt4`b~dqynSf;$00-WM>0HB!xw+&wMWzT{bu0)6OM&W%Ye2~%zjH+H z6s(9pVwVIcW?*6x4J$BLy{1xkDx^vQFxCab4MGx<+cwsnML?u>m&<-1?2k8e4s+)` zC@pHDu`hh}{Nb%z-BSt?XEsKC-0eXm@n6rKyXI9^uf>uOIK8sqe>!mZ06Y8A(}7@B z>7%Ew0eNAof6Q4Z0hZ3|SSEGig-F`D&NtGuY&9ZiZD>4FC?>R>fx%{m-|pdi(B2L7 z^<$zL_$$7!9JS+v*A?6r4Fnj?ka6?{9A<O7h#AsuW*W+P`&Zy~Au7b$!vS)cC*%IC z`F$UpoQGNt=<BDImrJ{!I3f8geOZE;pWhT9+}+AbQy^+!Lz&RBOPO&`RvKm_f@J1H zt2T7HKw4SgIFrHs6?bkM8T4#s1#UJOR@L|Gr{8IyJ~V}sK|DA_$L1XLpJz{)`7UoP z+t6uk{-GWmx-tGzP*z#&gnXq_0nt=l_&uo%KHOGt2tfAgEH-z<Br~q5!)>MnHR-XQ z>r3!aIf=2C%k=9upc$4Swrr)(H1bOg4GbQGl?aQ7@Pf%&O>I$2O$qfrapG-Uj?Bmq zWS2S9{&SXti6za!cR3i$6dX0}AkFv(t<wvcd(`$je#p+AcI!$s4fwst?9lR%Q#U3U zQmFAS!y$Y(Z`Gp=@-{GZ?M^7UiP~-~)7fLZD6ddha6g@Xw{e!{FhgHnQL(yWE!JB% zVx{EaC>9jcUc9YY;hEerK_vQTzx^w8ynoh<ti4A-JDHy!qy^fMci~3zk@CdS+Kp%( z8L{^de{;6}S>(8|xvm8^&C5z>by%`&#d^P3S6B7Xkn^*W5G-djeFo>%F@caj<zV{! z)>j$~<AY+3=omY4`GTBF#NO>W@nRncDV}`I3U=DoKc9&ceL-$x_!`&2#QDw&$2<bB z?zamuG-M|p#FOr#Hk6_0{)h_^l{LMbz_HmT+xjO86%hu*uu-S?51PG<`J}gEO5E|$ zTUHWqmLErq>K27POE7xhXO#V#VGFtG$nD*vPar0`5EB8#EzaR=7il>*x@x_9{wXT5 zE)P0!V#@9H-75`Yd)Z?c!fxxQ4D{PY=w@8I7PaSu5WFRwSH4zGog8&w=!gl42G{S* zmt!S!^I4%nxF*doow2WB+X@Sf7na|4jD35*f5e3xMS8v(F?is<#3mVikp`3c52cUh zM2!`Z3}SVDF;1G`!o6>7Eqjy{U3_#8AJK8`-@oL)^m#jANeT{Gt&3@I*ojsI!~J&j z!87z}B@>EDTai;GP~q$hyJEY?Jzp8S65n0f+&F9&a+1!{&6aqqNN{F<_(*?juv&Wo zYJh&H)_spb7|ZMEm~b<?70S7>;nF{PP<H?%3U(RZ$eg`44|8o>rE_faN>~9Ep<hzP z=rrNS4<8j3pZ3K`ZP;blkKC3ws&ykKZade$J$S?zrw}mSt~38zX=&v2*8$qW`;%L) zO9gbjZ%kHteb5m^&g8+tnK0L6ql0IEh(k{;1XUMzESb7Gg^G&pKL==Ud3nc_goD?s zWY_9oqH=B#A!jRmjg8Dwj%u6}UCYJQt-tSA4gW|il?cnpb<Te!M`xKoP|lNNsyz}r z(!5zb(5RnaU-ft!(FaXFvotX7?V9QDXdCzUx?A3K964A-;$mu(D({Yyp0)e+^ui(| z&!_zP!=dz=-csF5O?Be5DyMp#dNloPr0=kdYk%oJUaj*KWk+^&i{;f+zN+IYRK~BT zvrMV=a*sr(iG;GP8s~&ctAo*K5auTE-MO8mJWI2<#M3RTpsAt3+UHgABGVxkBf5yI zH~;KeTy*umyW?l+@633c@KWP6QEq}lTH)k~u;nBI`T)h_-oUvSYh3hT!lP&5);|+8 z{_YGnfdQhxd_1uLTU8(bMx~H`1&u$uu`^!;$#-IY{HdIxkA<6WiM@#59{HrJO@8*y zVED9bs4@2Cij4QjYQqqj9s{oYuAv0PP@!N>>hDvOlD4ba2Tg+Y?q`L;u36Dz;~h4f ziYI9|ezm$}X*BvJ)v@tOw@>A5l9A0X<!tx%p5XR1b;O#o(i?dyZl<C=ohrN+=IiIc z^T0IMjMxKsO*+0Cb|`ZCc!@=O()jrH%AH6S9;n>ptFBgBGXTrk*#Gl$2Sx7zO5Nyh z`}CeX;Py>%$-2Mr+rcRJJ;z?Z3aoN!OxO5Ph-2-u1jTg8Nw^U&DP!Pg6)Y58siVwh z6E<FniDww0{?`nx>B^FC4*2|h<nK>f<l<ItTU|aypw@{=K}7ow2g|%((`O`Fg6~5G zzN^d9=W2og3zPr;vtc)GYys(q66U!)&KG_Q2hTmcJ20F<*FlC(k=Si6ta_?BJu-~B z(jhA4$bIpNUUieMTb2Sbe&@dW;+8!uoLlC9YFSE(@yldhu`Y{t8)<rl^{?U4_tRTZ zc$TYB1_l^>FY=sY;dC~(I2rThm76r~@xEOm?xpIA(Yr69;C%BK@Wd7h3STM5)xh%F z-<=$q<5PRtVDrtGumAnB0cpkLEP)l!2cvr;EKb?JCoss2`>Vi9`DC2$sEp;G{=0`* zRMgdl1qE;aZJ!ks6p%+F1-BSDeN%v~5{1n3;|fO$o~7$MQk<}Qx7k&A^1|zvFDHq0 zh+*FNL<*59U5U^Vi;%N)`H#UG_B@6y213$34o$34X=1`&<s+kyK6HRpfNkYU+m-t9 zwkw&n1Hq1rTwHM|(S$WM9X-$e&(8i|h5C_)=l0xx&=c|8ZQ-{x%m00gf57j%pXb^K z+ig+j!Lg!-xM@qz^&MR$mJzqX*tv&M!ePT~wM)jcPvmxxZYZ_3f6%7G?P7c0yX;-= zSgk_+rf@yBbtC>#Wu+L^ju|s=Uz?(5CbK9b@EN%|IXRD^HIJVJ+aG;5h&<-I4)W6L zPfwvN0y{R-wmG=mBD^3&_8OECP;A9^epKjrXl!rKgAQIz&2OjnjjLBLBH3DJ7jub2 z;hhOH%Odb=Dvluz6Z9oe&Ix7NJ*P+9nB7&L)(CR(Dk=pegl%Fk(vsaF_eQ|@T$XaV zHW<DZfDk91{Cx{&$||Wko*VHmO>J70iS-m3*AnPgLt{`B2wz}qI(#=7u%1K(h@UGd zJ=_|hjcoUxkyG$@N2VSawxy<NB8)V^GbGva;BE?trT9$G2wL;qPpt}!ka&j92%RVl zE%fi+O}}Y!4@)C9Ihl$~PhUSDUz2UGWM$x1q(Q9=e{GAVYtM1Z0Kp<{c6WaeoLUbo zHiRzE7|sSBjh{hv6%qB+S2w>v<jIfeb*7ygO6apM0p^9k^8@@eJK#KR9dg#lO^>ca z(H3(%iv)Js>6f>8ygWDmO*Qj+<tk{Ld;aSE`->!IUF&oI)yhAcOwck>51P>f{DAao zm{NqoVkToCb9o7m=4pR_?Ry11J@h&7TR8wY<;S}ddAl=qf3^MugyOibuQ4bSieW!} zw$stw#jH?bHb%l-)F^A;+Rxd11RpH^`c)LiB6dAC=zmv+<;2Don%pwPxKk`nPe=RD zJVkGoysqakhP&oi)J#lBmotNFS}`&WSz%c`<RWYBZsKe0dnFbnRV5TF))pm+FK))| zIx$sFKrRQ977I{F@5=1y=i`2(qDR_n6^eFwR(ozq)oUbln`YScyVrmEjf5KBQd>`1 zUA8wh&5I{)gq0GPBg~_WvlXInNk-W^P&pZX?O8iVDmMSo%^#6&SGaQ6(lQMWjECVC zRWM+=Gu!AO9%~K!?@pgNv+L5neIOr{TXDf`i8-NDPY>y72cT*d`KS^y$D70{uT$-e z5N;76q5rR3%))aR60L$?5cOGjw#JtkUT*N}FE#XgYj*9`M^M0xCc0*Y1DAf2YRmTi zUUj+?8TliA@A0hCzkBqVty?WlpB~cbh@KTFu`0aIiH);JP`A#!Ik@M`>jLrGCuT>j zjSs@U_z*%eAU;83`x+#P^nuJ@OQ_4I^Ha2hKnL;S!iOm`xpfD6Dd&LYs+v#<VJWFZ zXgnmWqtPB$+;}>9`s3+Fk&plO_KM&Gz)DLPbem_ONBG!lRKsZ5eU748p;U{3zw6E7 zWb4)P+0(@69~YmG3U0Ty^PRbuS<zybmx(jM1ZP4wJp&N%Eo(m=%@5NNwOfzu10+Gl zaB6SFP>rOJ{-Xmec~}mk7b-f=ix3mHkd_@}IDq~=!8{nFginUu9><SI!uGbn9osh4 zH^o+5*oKdLu$z2<#A1i8ZU?ikr<YedxEv7f>7n`gr=VafnH(S?BoVsaZML%e`LO1| zx~lh`h^gUqvxLz-QA726JJ5Ri|Eky<{C$I$3^`opXJ%@)OCGri*|#i-SMbf%D&kza z6g+E0@c9NC7I+c<QE;6T%spkl;O_bl$z22G902eIk01Y3Dsue>T%3qr(niI<L=j=o z-GooI^d7e^I<U4Vsi=;W&cQmx73$x!i=Vb3@dW4%vK`B^RQL5O5K*}>MTMz3%wZ`} zGg}M?1_ZQKI5wvbG&eK|K&fR>!b(lgyAR47$;7qUyEST6yR4LS1o?@!C9B69Rw@Ey zhxGPaVXzRe_Hz?4d_`c$In#01uo1{Eun6}zy7J#mdNVzslo7$p70vMBP~L?m^V#|# zA)#E0sTXC%VZZ#oKukp9K76z^G$%J!9GTyMzctS--X$%&uRB1|D$I60E;(5ggrsLL zUK~lsR<TP<E0^dzot^U<9AuRIMsKo9+3rIgZ-&HwFfR74r!E|+ry%<=Kd#%U@E@Fy z^yWNkbNiyY=<_)(Lf}2-cP5ycH3uIqIgk*g=+b^cEn>q@Li{QY`@)U5V@u%T2s3kJ zQc=ekL!d!3Ix37SM~maps|Fp!$@5FS;wbrb%NHJ&-^c%)WEy_!M2*_y<e_;2j0VaG zl@N4#EJVFEH#g$q?Oll8WA#!mNFPaY1qI~FKK{gD7(+IL@@hrzLin3{qWL2~oJoa4 z&kZs^8*d|MUXlw7$?^{dwSk@?r18g_XgSblJibWIBY*tg;FYzQ>Q?VU9inVH=z&Je zKk#e(@1^zB^t+=c{tay81#^fJKN*LCGu_UIe5Scpf71EEyxEDa0rV2a+qZiH7C&VY z+~e!An=o%IZ@(sj_-mOQv%KBV3vd-OEiME^)zwk4ORJfSos$3g^(}o{TLLU6c3}Hd zxuD@NA}CL1c>q`nMAq<D)I#dbC>$cWn3(#;fYv4_=fLQF2bOY)x=|th-)2rnO^thH zt~mgQFcUq0%k4RTGFFpKR@91!#Av&7Knz*psZ{Dixh~wa;o-hSLntWdOyInrQPZxh zP~HxlvbJrQr^K|tWJFLQh>W<>)cc@;MbT0tj&F}w&fK&w2FpY_vM}K+B=nJsif%B{ zzCO29T?#s@{ckG<2J2?`=p785_*xk={^Ay=imGqhRl#8<M#f8*FW;ZK>CUZ8P_l%T zvEHljle71v2x+&@-J}Wqbt<7JlVbw(@3EOCTIAEkz*sTF7Eg-;?yjg(X^E?y$~!^u z96(6B_-Ne=7cHo)d;k|)n@H4>u?uG%zP+E0TRDqtHP!q%|8!1HMZ_wn!EttbbMQL3 z&D-yc9GQi4Rh-f0mk_h0!fO&$2}-c*hn9udgyDp#KH0Xnzv$FLa!X&=eJg0mY;BFG z-DsIFt5wGH<-_y!dG`?<6ngC41Dpz<bc15<9tZzmWo2R@OMXJ1j<brX%!Z*GNVkKe z@7mfLfG3inz0o=gBjZ1Fj5CUt_L)te3w2k}IdYxSI48OMc5zmS5<=p=D%0=*Iv#fx zOnkkh+x_bH6%o+Z3+Jw;*La_Z51eAhxN6Dv{w}iC%?tcF%8ebQ8qcKKcaOqCz=@qa z9T;dCLK6fh2Ojl<iH3tLS)9@2WZ;0&@wc!*7z7MckaeK<duhZv+ZENoKZr#HeLfYC zLFwF8&ggTrVV93~bdLLvO-)gQ{xws2P4iNmOO_7Cd}}|G^nH9J;NDa|=l_gUa9Glz zsfLE&Dx65xe)y1HP*wFXCYy8}a@J1>u^lT2DKM};v9i#eqY@};F*2SGM`s$4^;H5s z9wyjR*u%(?;bBfZTR9^(V&CQzp`gBS(eur!%fiPraPtr0yUP5x7mN4@Ovhr0v_W^C z!yXN?Yc8?W<wQVbq5S^nM7-ylWC7XAQw$$pA$<nj4-MVTs7%>63)4kBKrq>qWq0FO zXtog-X2?i$cCh&uEwGe{h)r6n5EY5vU<OlC%eFtyrU0qxXhVZf=c6!L5+6H=)?@xE z8Fo%-0j!U(NkUQ@4?G=Q<)bC<L0*MZBqikQu$wssva-kw%B@H<aVt_$K|vJG63LAJ z)96y7dzg{<z*!bYL0rMn3w0wzyfi^E`OF}p{$8T~_`0AIe9$K^Zx2^{^?UwI42yQL zI;bZA3D{{+N?iu4T#yG)=(-M0Eiq_8IVU77y#scGZMZ@r$ooL{|2u~?Bh~+}Q^+Mm zW+T%VLTrM63F!Q8L4gZG%4(bXX1Y*>a~3)P#=}u4NZiO|zH$;@^0QbPxT{<SVGAUd z>$3cp<=wQlWDd(!?2<EbJo2vO77iT4!}`zcoGcB!O(imPoSpfP9*uesj6iV?g0H(c z*~8|3>O)HsVt)h_?)#4wnTdlSEhcyRlR-ffQko!57(h_icCvrU%Xg$2P+~@KARGKU zq>wTRr4}153@9qsvUJGRo&s?nqkpP2F@7CG!}V;PxQ_8-=q12++Y0<5QRJ`*oI<1t zh-!vD$t6nyt~on!u2Yc_XE^Ln*uLUoVdX%hsj2y6cGzZj>V&__V4W||w{PFb$S`FE z3c!fL%J`>Gks!049`5bwK|Yt+Lv4g4z_T*r*_qiPwvf4p*{|?oryJ;z{{^Qfk)Kc% zFmbS8co7pE!v#ofJ6^p)iX*o_a@GwEpYFeb_Tm8M8Ds+3r15pRzw-wznVG+D%rm@r zFc->$TGVazhw#;>GjAUYz-;NBqx$wt8R_Vj3oLXzbrgF%cn`SVu?7A_XKCcww@>y3 zegz8Itz<XVL+AmW8-7Kdl?s21KCLw(3e3{(#Ia)+U%oUWdkkB;YGlPBD!vUKhLT6_ ziSH@I5Ekle4s2vcq{0?HZiTu0;UwpbaHNM>J=8{AHCnuAfYwCj6XwW@KuwEkdO`6b zSjVt#0fl`V)}V}eC43HG$4f(oE-V^emWFF~e;SI}uq70ap^7yhu5*Tm%%vIn$y<Lm z*1~6Ab;J<!B{<|BhCFkIKF)=k7ydJ#o|-kDKRRu&Fo_Wep`_N+Lv$D`FYi4o8Bx*b z*jN}jJjKO%I);WeeSC!B&Y@k*LPFp^ANTYuv8wyh`Cr0pVpR6*`E#rER|5luutGAN zHC+h(;3SszR9sOp9mbi5p*O(5=?knL<CkG%zl%K~E*2R!35iKbhid}C{^yo=g<Vz> zw^ICzT+OoAE$rGdrCatPaV2B4f|u!DAGRO~^{}5i3r#dHL$4Bpfk{7~Nd_tv4E>b= z98%x4-~v3B1b%1Rpe;-?<c+SFv4kJoqo4rw<t2>%5D6lLyiiPp%uPhoz}MH2$t287 zK#?vO=$%^1IF*1<4}*f&rzga58|WcXe_*lq67<a|PF*qhV;itE=Yi;g7;*ae+!Jz& z)4MZRarV!F9%u~U-I9b~0)o6S798l%-yc@GclN<qfi7S93Ux%RY9KGzrrY2(h8@}} z8}$&xqmRq&iD=Gb0)=b}*`$)R$<;Z3{`Yz}PD=*7GG}H;+t7~TzQqVJNncC1TDeMJ z4L+ph8-=g(|6RYQhnb%)l)&tol1jq#T*!F)R#><mU2qa$Oc$qMO};NXx=H%?Um8%p zH~qekc9cpiX<m$I^l23T*P6VO_L;bZ*zi!6MldDCJ2?TbE%C{pL^^mRyn6Gqc%uw? z+JyY54frmZF&oK=23~%3bKeguk3r9iCU#B@G(sFM6yJa64_0qwWwdo@$(wo?@vU}r zx#D}X$V%;KNM*smL7B|_d-sf%VeUZ*+Bq2+Qa2vMZsAZXLPDS|8*B&=2EYVy!COJM zSqZ6wamB{Uz81%3Najd6rFh?LBN%kENa5H;`XiMWn2sJDX5{@A*SfiGZ*+@09*NU` z<~#UGCYW9cd!P@-DN#D0r(6eOwv~+yktu|c_^E0J<d$G<|5I1T4wAmVzyC?gXl&P! zF)@Iz$YHmG8np`(g83ou%90^o?F+mK?9vvJ20S0;N{E65tp8MqhYBp>U``C5|I!L6 zii<k8_dz$5ZYToz%niP<js}1MMRl8=-9zqbr(fsAu0{hf=_HlhZh!mhVsUwSnwm)r zdS|wU1!tU~qpU}c@F3RLTxic8(-~VmO_LM%xY%@J@s8In-%c8yefI!$jod!iFqaJ2 zD!<i7o8}LVwL-QL{B#l^<<gYz&d19cg-#Iv5sNN?f|_2@Gc7%R*KvhxuUo}NqAXB? zc==+IEdsg&ICiOCNnU1VR}orcQQHUu8f=uTphL9x_gf>oR5@p_wze}F<J(H-?=P#h zwma-G)Ents{#q}8;zbyQGR&i)-lJ&@U-r*@-TLCz8a*}rU6^3=_i3rqk&~OCw_rHw z8K4vQ<<L-*M@{YA`^GB>()<Wnf!A<B!v_!NPNjT3k}r7GLJFsuT-{oqyviRL8xY_# zu(YJubHZfb=|#Jnst?GI9O<%cT=WCDZLFuC*NsP7kZeGj!t-?7+*r?2^1e<oFTPUE zDRL(`Fn}xNDx)kVwV0shdRWQCnfMcVe9^_lnG2m9_G6zE*_(sIFCR+Nsq(c~xbUai zZ04+9cr>yaA*-pZQ%(z|X3y9AVRc=4%~Z-xkquKF;?ou+zwtbnDAxhHZbydXFca(D z$0#ggIGoPXZfv~5$TdRsfC1^LgoFfG*vOXc5M5jO;M~{cnjV{Lck+va#?o^+pvG_V zcXAEwjE)Yaq49sxnPAVzR!ccK$$%Kw{m-+id8(_O@06AvoQc)b)7+k5E)?ozXLlnu z-fm0y`i1#lDF=;>e?81})JJqtWKNEzNv^|{z$s<7k560%>!i1(iLP_NNfV%fh=u+x zp&2IIL}v3CIYm+@HNRA+sWzLixcF^T<D4X(6Tow}Hk?1Fe&k+Oa*9?{Vu_{h!c3Wd z>aF#B(n4%(lag-<1*7?QL~U}>^E<_7It^i8?X3>TFC(Se{TL1V4*%YkFX=7%Nm~*V zf25`cY}>ut8FldX;NV|slMbYCP@<8#aLJ-uVCLuF%ebL&ZWpqF1?1%Dh4pW^%)LKk zq3;E8AUiV)%lPc<$auK7*Ot$pGvxMG>K#3*O&U1OTv~a^$jB<}o11fbR@Ta(m>`qV zF?mBhzEk+-hM+Q59_90~<P>Mnu2Yr>D<S8!vcvD0G3CD5faLHDi;~EcloXPDF*Wf$ zw_JN~a1b{JYlxGX#b&<@zf2Hrkr47#{_tyhDZSuhGB4V;;}&dX<cS-7>eMAtKx}L= zk1O%r2M-^H5MZ_A#S7+^7Ha>s;1W_Q{xHXd_(Ma{H#%p2Sa5PpyS%!ydGIJ#-d7Vn zy;e8k&tAMV;|K_-yi;lj9d-UnI&4)eh;MRiZ+8{=IN^N2$%*_(g+_E!Q)r2BZ8oR^ zLuC=08#qTgVBSp{s;R4d@oX^r*|TQ^UJU!M{rdXUb#--!B|HEkM*Y9P8kXvQ2nl%- z3twgr9#`^C$7EWL3y-}kMSlKUq_|DcsuH0-k70a+0f5c$ha73=7G9W6LBzA)-CYF6 zL*^D1m&eAAmE>z4nTV+WJj#-KhInF`*Lq?=V4MWe!UwO?@)y^~;78zx=wnHe%$tn7 zyd;iPI_-dz430i+Bob@RUO!kYB$8ecZvdQ%>8E>87IATL@xA6?(%gyVJahU@;X5I< z&~13n^$h;)w&*@5p^#0tyxc0QdQxN7-p($*F>s2gS}|ST58294H9u0EkZp(Yt~P8_ z%IZ$IySsq;3y#_)RL@`>-5H3`)1&N4;b$O2+{0xQK=4h=VU2`F2R^R+a6l3@xfu(1 ztN14j-VyDy6?+@u{vQxfJ)}yoSLpb)9v)KW;o*T>iM_AgXnXq>oc!f8&6hCW#{o`8 zcJAD{s@mGEWQd^MciU{AjSUBM!s62F>-2Of$&dEyGJ(2%`RdiHqElWe(Ji*=%t7S) z^>(F_NR?5wL04&Z7*8(-uKoVKO<TKFneWYtjYoL+qXsa~@fg`a6F6Dd8_y=G=jwW= zxTJ&$lto53fSGy!TK!s?fatW;|K7Xv5J!%uk)mg9oe>)s#{?kNtD8^jye%#Z>GZaB zKG|odZiVOt1=Ye0!A!jsTm9Ov?;N$YwQxHyPu!_#SNk0~eC)van3a^2gtWArq>kR# zo8{$E_F)7&$N0Wu%lV_=Nm{@ZS`TjLM{vs%kalG^8yITwL5BtcM!RY>F@lkd0Mr<9 z+*pTuKySzfw|3YaA#~?Rt;$b8xANhufByl;a`btt?b6U<QRSnllYM<0=KLAG*b{dx zFLZATN7L_Mj#&4$%gn8R)Om6u6L%Gp<d%kz@40q4RM;J`8J2do#3v-=XjW7sYN9rr zOb-R-%p=hHhzLPO9q@1cN^64x0+=wjC8AyMklDP}>A4jR-nT|L(+KLFJJ%?;cdw1Q z{$V#}o!F)(wSa|>2bkE|MIow=#4Q5L(K`qqF7^6#QMipuM>4wNl==t^Rfk3p8p24x zhdMOoW@ZAQwhVn7B#*_2Y42L2rb$>u2Ym4#8F%CD^Q!eRdBc)=*P}O-J?!UmeZ40~ z^$zBysl8y?CTM1369YNn;NT$qcPQkPl~2|A5(!yBLH6HzQ1rZ;g(8Dcq(YJvgSJum zoi_ZMYU>cLKt_hKPi-)^DY*4rMA1QzXfWZyV&>rJzza$CPi5tY;}VYw<jF5Wcn2`C z3Y0uTJIf*C@EARV-N@eguQ%`t8R4v)K(s|<T3VWy23|Y#L`08;c5vk5;2SuzS^l`C zlrh?{iFV6GmD=37n|M%D6HC0o-+#6Z`$b&VjZwIpyrhSr455(4+n)pqVeQ}xP?r1q z`+es&O(RxWBqSwao05V>*<Ht{akgq^zycr7YYi6b3w;qAESPH`<0A~^^6jA$uCA9M zC?zAqxoIbr$nWmq5e@gVTHn)+ys&%oow3KehOc?{o{D_*ND~)E_GdM_pF}EdnRc?b zA9lSSEmXZ{AVjN)zE-%E_ki9Ev31phJ*lCiI|Vhzo0YLEw5D4B@YvRRvCVyGt^Bz) zuS-Ki1B1ilp&>gY5h{gcJU|7k3hS^gTG@ve0h4#vEiW$WAPvCF+j{|N5@oYQxH4R@ z$YC#@1(#vR+g9SN1_lNfElSW*Zb#ylT}Ce~AMlwl3y8vhMf#hNurM@`?aIGqfo{Xj zuVfbWrapx5_^I%kr=X^e5%UPG5uc@z(ur%j`s6ERY%GaaEnV>5J>}SZec9ldbGbih zjdoxMio~1mW$ZDbeBi(VbSX61Mxxm8WT8GKxjH9($WsZ>AtV}E+1YXMpA_{z$RjB& z&9*&C2QkA&PrAFyW;frqZit|>jzm)oj-Sx(-G^$wqm66_*B55_G&VLiNH7^J^}(=< z89h!r2+<J9#<yLePJn4uZEbb=EW$(ns}8jBh3z^c{x2QTv~BR;3_wI6dtj}N&7bLs z8|HV8^b9cGq5kkGB{sBReN7ww`4V-fmLHc|?@^oN-C?r`!%MY-h?(J)r2{0d%-RBz zeR@BN;fVnjPW0H=ajPQ($KHrW{XJpRs&KBI@_c%Y1IzphK)Q*xD={?N7Cr_(iHi*t zM4?9V{k^)ugw#jOJl#;jw%PmjUb)WR8gfXFl=Jtydpjn$zRWzUa_wYF&$O8s30W6N z^E||t5F4vTBP-8nUO)9sgTA_25>oS!vy&OZ#U-A<N7MB5NDqi_-`UpYqR7mAL<lu) z#6}>igrxV~WVFM47dyq7mN`%V_D3Wq_lJlG9xbgkb1N&NtPlz{BpMcduDvh7ohk>A z#Ww%reZs?sTS|nPm|j^D6^Z7He^Wmj7&|iT*+X$Qv;}_K4}+Ik;K~o)a?8rhyv_OZ z=czYIEXz*kx3DlR+cNM=FmZCmJUGz`hWwW2*}{Hs;6Hj4O6-GTh50R~2rNp$J)R^V z+tl3i_qUf-a?sEoZfm>3b#^@{gpx|_Fkf73tX)b9g~**;V^r6}b-kBsYj@ZA9&X3B zIWb#5wcvCYg(qbt-l58XIR^+D{_u#J?nD^52$~N483XX1&)zH)yE8h8?Vt;Nik$p( z3WJty^mvDH0dZTTo1go=VKJ|C_0wi8DfxQ4pkP~+5bx$nchKLD?nc~FrxX7&y4}=z zM8D@ma!hLk>(6h$S(le@QVI#pB&!&k>OC4t73Qc84^u#z*cA+4D0Ou;|9<!P29NaE z&{j#C4Tj2xr(tWQpr<d})(~*SLLUQK=YU>3kqc>}Nso*2PDK_>?j!DNnwae0&wZf- zo7pO5U?2srcFXnz4)tTRLn^3i_LtmCQ)6c`&+GOK6`Bb&$=lctpRMk}YIc>gFZp$& zIf?HsuKcK|$+WEbz(X_PP0`!&jdh9VHyf#^UQ8Mgf7(YBiQ(67-4c2I`ZCdApd$cX zfpw>rl_Azyao;%c-RHzioeui@D?EQr1;c}_S&E*K#2R1Sj&p<Q(T~^1?-sR2yL1?h zO)l?riqM4JrL{#j?g`6T_w?8=dv$1bi8w;FSY+-jTjicWeg6Cgjj{2Ll6)qn<s%QL zHJM)JKYLbM<!!^A%-2j~Z%<1}9fn+jd!*{v*id1-DSFbs$79r?h-0~15S}oV#}9vA zr^vK7ws0nZEsi-gQJDVNl_@hRtgy%ns#_SEGNNvVSw7RykVCMk-j8%_uS~T^OkPNT z8~(*`_wM;5LES_q#<9qAOQQJ^5qy8I#tO?Xc4($3FFxRlnVQxgIa=(r^Ydq^T3RAt zAESJ;T};S}hq$6yYdgERPoE?)W#O@@9DNeY<T3yA0&?H_7MSqI<-{|iA%oFwEW8_n z`76tPslwL-UcTX>Ex6D4YfdEOnA*%XL|!0gO)QA+PVVRXb);=*Uud(9ev&%%9B)0o zLaijHVE1x=NwF9b-fokaVnd~f-`u(YW99n#dZIx9DLDP_AB<*3!Wb-e7x8QV|NdQk z>;F)c-zx1zZxp*U)mO$B0y6}#Vai5(CKuWLcC+#D&^9`ZR@9k>a+BcO8k^}9x(#G> z$mY?kFq|5F`0lg3R<f1pT@YeUE*#Jsp+(VrC)lp#yec5URN%xo9FKc=5c!q}l`B<7 zOb8tJ5{3f6%RgXin>Dj;;~X9Z_mw*}HCE-0hYoE+DrQn;%WA2kFMm-(11I8&QDJEj z5HJcS*RDh^!leP<Fr?TuXFzj1ROwf4Y!k!ZhXXo$JbZUL01*MTf{|t?>Jyw?`Cdy1 z4(`CAkGxiLGT_#2_}a42$owm!ua3qhC0P%%<D<&TR*Fvf9v;3<_$a_`mpEZBl2gc` zwxOh?L?_4yNr5kSz7<G9fX@d7!&TMPaBAl3t_t0$BUU5H1cs`JAgmusuZ@b@3S&{y z(Cqt07QcrJR5M?{E_Ctu;f%j!yt=r&3`n<TsP4;`lPjyMTGqqY&;MEI#$kB!zT<7P zF&Jl*{wn8k!?BF2@1Oj93TPo%IXL!Cza1E0M|n?n5iYF20k^Cy$5-gwzKC=nV9fm$ zD_$p03cw2!yk(oOWw&W|Y}>XU2Y*@jAC(>9)#4&Ep???qG;lb4?oNb6VV91Dm}NZ2 zuf_BAsgF<MV5F|dF6)#Cj{kV}iCoXupBW-nDB#V4JnS80NF8HFK_Kta9$Dlyd<`lU zLQe5C7@Al(Yu0-v;xS>N?ghD^`pmQi0KCRSttfR>!hTATjXmhox`IIy*_dp^Z`#pw zQ+(-}nH|H!JcPnuohZu)fyK)jn%P9jd?~}YCZY+u6MRF_lNn<wOmVjnV-w&fXXhHH zZW!IBcnqMK2rWctam`>JGO#e7Ak+A5c*1_DE{bsr%KYUPCAUAH(oDf)J^$}<1xSi$ z0bd!f28D#!NFHR{zLku)*+^c!Qdg%8@f4}z*_OxfXFPWNI3*cD<zb8CvyRj%4cLUO z?5)%ELZOkkzvEL=Vt9{poAOYn!cc4ETg&welgd7QJv}UVLEzP~4`iuWg5>ZtVAgZ^ zChSP#@Y6+yH`l*MB;eL+o{BZ@Dn{Bc)<qPf4$@m_jg5OnxzIo$(KYJq%KUBkiL+*8 zWR$v*7dv4=OMeFImjkqezyCn<k&-`LJWNKm<qE+C=pD4R-yqfg;^kXj(j`&5dmpwW z&f)VO9v(PzsbG;{Jq)uWYyw051j7j&m;`8M9)qHR-gWwFU2ithvj74TLE&VN;dcxg z;7LfWh<C0uxST5=h!cFm$uKDRZ|w8wZ*&BLnLX7w(}Cu}1cc#n<(qj_WS5OZ!(2Z{ zmtEiSW}3{(a>lf5&+4u_1H`dnt`2d!kcI{?NCRdP8EAoZU{``Ib8t>8JUkpU;gTc9 z&GiMd`3OpigcXpmygU<HB*G~dG%Uh(7FbQmP_0Me_NXn0!@&<RICRLooH{%m>CS)A z%MT+Xe5jCtRvs`iqC<<3o3;LG`4->pJp;Fy%_R?o`(BSNRzKON_!Y$eNQ@oi6cm`z zB)G!lMMzxS0P*2U!z~5QjY;(%8Ul3TTNR6v+2dDzt#4o@6@jJ`T_0E{jA&_HF~$4X zyY~ZYZf>qG_ryqZNEE0#==Yh>9p0&`s(PmZZP=EJgolxr{eR-03rk*Q6)ToF&hG@H z5WO5iCMx9B@cQlRH%Y74Fi`RETho)C=wmQ%cKnR{$5i4X2s|bZ)g1mh6#akuZ&Xo2 ztHy97B3i~Ex|vJ=g=68%J3EOV_R0?!FlxBF$@}$4Mf2N?P#o#)V$-^W8Z0*U?*D$o n<nI{cDbXc1MDx5Kzc(p76!MeXqKECs@YkUOCVCY*$1eXrVd1Cy literal 0 HcmV?d00001 diff --git a/notebooks/09_Inheritance.ipynb b/notebooks/09_Inheritance.ipynb new file mode 100644 index 0000000..1e185f3 --- /dev/null +++ b/notebooks/09_Inheritance.ipynb @@ -0,0 +1,717 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "243fd0f3", + "metadata": {}, + "source": [ + "# Inheritance" + ] + }, + { + "cell_type": "markdown", + "id": "e4c244b8", + "metadata": {}, + "source": [ + "### Intro\n", + "\n", + "Following <a href=\"https://www.hanser-kundencenter.de/fachbuch/artikel/9783446458468\">[Go19]</a> the essential principles of object-oriented programming in C++ are:\n", + "\n", + " 1. **Abstraction** Classes define the methods and attributes of objects. They can also specify invariants of attributes, like e.g. that numerator and denominator of a rational number should be coprime.\n", + " 1. **Encapsulation** denotes the hiding of implementation details and that direct access to attributes can be prohibited, e.g. to ensure preservation of invariants.\n", + " 1. **Inheritance** New classes can be derived from existing ones. They retain attributes and members of their base class(es) and can extend those by adding additional ones.\n", + " 1. **Polymorphism** The ability of an identifier to represent different entities depending on context and/or parameters. We have seen this in the form of *static polymorphism* with overloading or templates (in the STL).\n", + " 1. **Late Binding** The selection of which function to invoke at run-time instead of compile-time." + ] + }, + { + "cell_type": "markdown", + "id": "e3b94e7f", + "metadata": {}, + "source": [ + "In this notebook we will introduce the basic concepts of inheritance in C++. " + ] + }, + { + "cell_type": "markdown", + "id": "3bbe27c9", + "metadata": {}, + "source": [ + "Example of a class hierarchy from the *Object-oriented Linear Algebra Subsystem (OLAS)*\n", + "<img src=\"../images/OLAS_Solver_Hierarchy.png\" width=\"500\"/>" + ] + }, + { + "cell_type": "markdown", + "id": "7dec0ace", + "metadata": {}, + "source": [ + "While one can be tempted to design elaborate and deep class hierarchies, this is not necessarily considered optimal design today. Especially in Scientific Programming class hierarchies tend to be relatively flat.\n", + "\n", + "The example below shows the children of the `GeometryMap` base class in <a href=\"https://i10git.cs.fau.de/hyteg/hyteg\">HyTeG</a>:\n", + "<img src=\"../images/HyTeG_GeometryMap.png\" width=\"250\"/>\n", + "\n", + "Below we will learn, why it can be sensible to have a single base class for multiple different, but related, classes." + ] + }, + { + "cell_type": "markdown", + "id": "82b7f24f", + "metadata": {}, + "source": [ + "Let us start with a (slightly modified) example from <a href=\"https://www.hanser-kundencenter.de/fachbuch/artikel/9783446458468\">[Go19]</a>. It is loosely motivated by designing entry types for a database of diffent types of persons." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2d5d1305", + "metadata": {}, + "outputs": [], + "source": [ + "#include <iostream>\n", + "#include <string>" + ] + }, + { + "cell_type": "markdown", + "id": "1f3df848", + "metadata": {}, + "source": [ + "We start with a simple base type for a generic human being. This will provide a classical setter and getter method for its private `name` attribute." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "686fb768", + "metadata": {}, + "outputs": [], + "source": [ + "class person {\n", + "\n", + "public:\n", + " person() = default;\n", + " person( const std::string& name ) : name(name) {};\n", + "\n", + " void set_name( const std::string& n ) { name = n; }\n", + " std::string get_name() const { return name; }\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[person] My name is \" << name << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string name;\n", + "};" + ] + }, + { + "cell_type": "markdown", + "id": "cdc267d6", + "metadata": {}, + "source": [ + "Now let's introduce a special kind of persons: students. A student of course also has a name, but additionally a program in which they study.\n", + "\n", + "In this sense a student `class` is a specialisation of the `person` class.\n", + "\n", + "We can express this by inheritance and also reuse methods and attributes from the base class. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9c807fff", + "metadata": {}, + "outputs": [], + "source": [ + "class student : public person {\n", + "\n", + "public:\n", + " student( const std::string& name, const std::string program ) :\n", + " person(name), program(program) {}\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[student] My name is \" << get_name()\n", + " << \", I study \" << program << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string program;\n", + "};" + ] + }, + { + "cell_type": "markdown", + "id": "264f432a", + "metadata": {}, + "source": [ + "- Line 1 expresses that `student` is derived from `person`; in our example we perform *public* inheritance; there are also *protected* and *private* inheritance, but we will not consider those.\n", + "- Line 5 is also interesting; `student` is a `person` and we can select the constructor for its `person` parts.\n", + "- Line 8: Why do we use the getter method `get_name()` here?" + ] + }, + { + "cell_type": "markdown", + "id": "6c7ce817", + "metadata": {}, + "source": [ + "Answer to the question is that `student` has no access to `person::name` because the latter is marked `private`. However, it inherits `name`, that's also why the constructor delegation worked.\n", + "\n", + "**Note:** A child inherits **all** methods and attributes from its parent, but necessarily access to these." + ] + }, + { + "cell_type": "markdown", + "id": "5701c347", + "metadata": {}, + "source": [ + "Now let's play a little bit with our two classes:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "bd768c68", + "metadata": {}, + "outputs": [], + "source": [ + "int main() {\n", + "\n", + " person jane( \"Jane Doe\" );\n", + " jane.all_info();\n", + "\n", + " student joe( \"Joe Smith\", \"Geophysics\" );\n", + " joe.all_info();\n", + "\n", + " person pv(joe);\n", + " person& pr(joe); // or pr = joe\n", + " person* pp(&joe); // or pp = &joe\n", + "\n", + " pv.all_info();\n", + " pr.all_info();\n", + " pp->all_info();\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "780348e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[person] My name is Jane Doe\n", + "[student] My name is Joe Smith, I study Geophysics\n", + "[person] My name is Joe Smith\n", + "[person] My name is Joe Smith\n", + "[person] My name is Joe Smith\n" + ] + } + ], + "source": [ + "main();" + ] + }, + { + "cell_type": "markdown", + "id": "fb1056d7", + "metadata": {}, + "source": [ + "- The first two lines are what we could expect.\n", + "- The last three lines are maybe a little surprising. Although `joe` is an object of class `student` all calls to `all_info()` used `person::all_info()`.\n", + "\n", + "A `student` is also a `person`. However, in line 9, when we instantiate `pv` only the `person` part of joe will be copied in the initialisation, as `pv` is of type `person`.\n", + "\n", + "Similarly because we use a `person reference` and a `person pointer` we can associated them with joe, but invoking `all_info()` will use the method from the `person` class." + ] + }, + { + "cell_type": "markdown", + "id": "1ef26e9c", + "metadata": {}, + "source": [ + "### Some details on Inheritance" + ] + }, + { + "cell_type": "markdown", + "id": "f4cbc44d", + "metadata": {}, + "source": [ + "#### Protected\n", + "We had seen that we do not inherit access to private data members of a base class.\n", + "\n", + "Making the base class members public would, of course, provide access. But that is not an attrative solution. The way out is to make the members `protected`. This still disallows external access, like with `private`, but opens it up for children." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "fd4597ea", + "metadata": {}, + "outputs": [], + "source": [ + "class person {\n", + "\n", + "public:\n", + " person() = default;\n", + " person( const std::string& name ) : name(name) {};\n", + "\n", + " void set_name( const std::string& n ) { name = n; }\n", + " std::string get_name() const { return name; }\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[person] My name is \" << name << std::endl;\n", + " }\n", + "\n", + "protected:\n", + " std::string name;\n", + "};\n", + "\n", + "class student : public person {\n", + "\n", + "public:\n", + " student( const std::string& name, const std::string program ) :\n", + " person(name), program(program) {}\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[student] My name is \" << name\n", + " << \", I study \" << program << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string program;\n", + "};" + ] + }, + { + "cell_type": "markdown", + "id": "459b408f", + "metadata": {}, + "source": [ + "Having changed `name` from `private` to `protected` in line 14, allows us to directly use it in line 25." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5c2921f9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[person] My name is Jane Doe\n", + "[student] My name is Joe Smith, I study Geophysics\n", + "[person] My name is Joe Smith\n", + "[person] My name is Joe Smith\n", + "[person] My name is Joe Smith\n" + ] + } + ], + "source": [ + "main();" + ] + }, + { + "cell_type": "markdown", + "id": "0339f35f", + "metadata": {}, + "source": [ + "#### Shadowing\n", + "\n", + "What happens, when a member with the same name exists in a base class and one of its children?\n", + "\n", + "In that case the base class member is *shadowed*. However, it is still inherited and accessible with special syntax for correct resolution, see line 8 below." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4d0cddfe", + "metadata": {}, + "outputs": [], + "source": [ + "struct A {\n", + " A( int iVal ) : value(iVal) {};\n", + " int value;\n", + "};\n", + "\n", + "struct B : public A {\n", + " B( int iVal, double dVal ) : A(iVal), value(dVal) {\n", + " std::cout << \"A::value = \" << A::value << \"\\n\"\n", + " << \"B::value = \" << value << std::endl;\n", + " };\n", + " double value;\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9e8483cd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A::value = 2\n", + "B::value = 3.5\n" + ] + } + ], + "source": [ + "int main() {\n", + " B obj( 2, 3.5 );\n", + "}\n", + "\n", + "main();" + ] + }, + { + "cell_type": "markdown", + "id": "4510c881", + "metadata": {}, + "source": [ + "Note that this (unfortunately) also applies to overloaded methods:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a1919205", + "metadata": {}, + "outputs": [], + "source": [ + "class Parent {\n", + "public:\n", + " void func() { std::cout << \"Parent::func() was called!\" << std::endl; }\n", + "};\n", + "\n", + "class Child : public Parent {\n", + "public:\n", + " void func( int arg ) {\n", + " std::cout << \"Child::func() was called with argument '\"\n", + " << arg << \"'\" << std::endl;\n", + " }\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "742d12ee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Child::func() was called with argument '7'\n", + "Parent::func() was called!\n" + ] + } + ], + "source": [ + "Child son;\n", + "\n", + "son.func( 7 );\n", + "\n", + "// son.func(); // fails, as it is shadowed, although it has a differens signature!\n", + "\n", + "son.Parent::func(); // but it is still available" + ] + }, + { + "cell_type": "markdown", + "id": "537d3f13", + "metadata": {}, + "source": [ + "We can make that syntactically nicer with the help of a `using` directive." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "7976790d", + "metadata": {}, + "outputs": [], + "source": [ + "class AnotherChild : public Parent {\n", + "\n", + "public:\n", + " void func( int arg ) {\n", + " std::cout << \"Child::func() was called with argument '\"\n", + " << arg << \"'\" << std::endl;\n", + " }\n", + "\n", + "// private: // note that also the using directive has a visibility!\n", + " using Parent::func; // \"import\"\n", + " \n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "869bae76", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Child::func() was called with argument '2'\n", + "Parent::func() was called!\n" + ] + } + ], + "source": [ + "AnotherChild daughter;\n", + "\n", + "daughter.func( 2 );\n", + "daughter.func();" + ] + }, + { + "cell_type": "markdown", + "id": "796c4abb", + "metadata": {}, + "source": [ + "#### Constructors\n", + "Constructors are special as the are **not implicitely inherited**, as we can see from the following example:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "d1ea8b46", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[1minput_line_20:3:13: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mno matching constructor for initialization of '__cling_N514::researcher'\u001b[0m\n", + " researcher smart( \"Smartie Clever\");\n", + "\u001b[0;1;32m ^ ~~~~~~~~~~~~~~~~\n", + "\u001b[0m\u001b[1minput_line_20:1:7: \u001b[0m\u001b[0;1;30mnote: \u001b[0mcandidate constructor (the implicit copy constructor) not viable: no known\n", + " conversion from 'const char [15]' to 'const __cling_N514::researcher' for\n", + " 1st argument\u001b[0m\n", + "class researcher : public person {};\n", + "\u001b[0;1;32m ^\n", + "\u001b[0m\u001b[1minput_line_20:1:7: \u001b[0m\u001b[0;1;30mnote: \u001b[0mcandidate constructor (the implicit move constructor) not viable: no known\n", + " conversion from 'const char [15]' to '__cling_N514::researcher' for 1st\n", + " argument\u001b[0m\n", + "class researcher : public person {};\n", + "\u001b[0;1;32m ^\n", + "\u001b[0m\u001b[1minput_line_20:1:7: \u001b[0m\u001b[0;1;30mnote: \u001b[0mcandidate constructor (the implicit default constructor) not viable: requires 0\n", + " arguments, but 1 was provided\u001b[0m\n" + ] + }, + { + "ename": "Interpreter Error", + "evalue": "", + "output_type": "error", + "traceback": [ + "Interpreter Error: " + ] + } + ], + "source": [ + "class researcher : public person {};\n", + "researcher smart( \"Smartie Clever\");" + ] + }, + { + "cell_type": "markdown", + "id": "1fbaa676", + "metadata": {}, + "source": [ + "We can solve this be explicitely requesting inheritance of the constructor again with a `using` directive. Note that this will inherit all constructors, it cannot be done selectively." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "481fc3f5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Smartie Clever\n" + ] + } + ], + "source": [ + "class researcher : public person {\n", + " using person::person;\n", + "};\n", + "researcher smart( \"Smartie Clever\");\n", + "std::cout << smart.get_name() << std::endl;" + ] + }, + { + "cell_type": "markdown", + "id": "56e3203f", + "metadata": {}, + "source": [ + "When we implement a constructor in the derived class with the same signature, that one is prefered over the inherited one." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "ed941226", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Smartie Clever\n" + ] + } + ], + "source": [ + "class researcher : public person {\n", + " using person::person; \n", + "public:\n", + " researcher( const std::string& n ) {\n", + " name = n;\n", + " std::cout << \"Hello \" << name << std::endl;\n", + " }\n", + "};\n", + "researcher smart( \"Smartie Clever\");" + ] + }, + { + "cell_type": "markdown", + "id": "fefc9ca9", + "metadata": {}, + "source": [ + "***\n", + "Note: \n", + "* When a child object is instantiated the constructors of its base classes are called first.\n", + "* Similarly when the child object is destroyed the destructors of its base classes are executed recursively." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "1493af7c", + "metadata": {}, + "outputs": [], + "source": [ + "class GrandParent {\n", + "public:\n", + " GrandParent() { std::cout << \"GrandParent's c'tor invoked\" << std::endl; }\n", + " ~GrandParent() { std::cout << \"GrandParent's d'tor invoked\" << std::endl; }\n", + "};\n", + "\n", + "class Parent : public GrandParent {\n", + "public:\n", + " Parent() { std::cout << \"Parent's c'tor invoked\" << std::endl; }\n", + " ~Parent() { std::cout << \"Parent's d'tor invoked\" << std::endl; }\n", + "};\n", + "\n", + "class Child : public Parent {\n", + "public:\n", + " Child() { std::cout << \"Child's c'tor invoked\" << std::endl; }\n", + " ~Child() { std::cout << \"Child's d'tor invoked\" << std::endl; }\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "7802babb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GrandParent's c'tor invoked\n", + "Parent's c'tor invoked\n" + ] + } + ], + "source": [ + "Parent walton;" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "57215968", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GrandParent's c'tor invoked\n", + "Parent's c'tor invoked\n", + "Child's c'tor invoked\n" + ] + } + ], + "source": [ + "auto jim_bob = new Child;" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "be7a63fe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Child's d'tor invoked\n", + "Parent's d'tor invoked\n", + "GrandParent's d'tor invoked\n" + ] + } + ], + "source": [ + "delete jim_bob;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aaaf7260", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "C++14", + "language": "C++14", + "name": "xcpp14" + }, + "language_info": { + "codemirror_mode": "text/x-c++src", + "file_extension": ".cpp", + "mimetype": "text/x-c++src", + "name": "c++", + "version": "14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/10_Polymorphic_Classes.ipynb b/notebooks/10_Polymorphic_Classes.ipynb new file mode 100644 index 0000000..df655b1 --- /dev/null +++ b/notebooks/10_Polymorphic_Classes.ipynb @@ -0,0 +1,435 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1a6233be", + "metadata": {}, + "source": [ + "# Polymorphic or Virtual Classes" + ] + }, + { + "cell_type": "markdown", + "id": "7ec80016", + "metadata": {}, + "source": [ + "We return to our example from [Go19] and extend it a little." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7942848b", + "metadata": {}, + "outputs": [], + "source": [ + "#include <iostream>\n", + "\n", + "class person {\n", + "\n", + "public:\n", + " person( const std::string& name ) : name(name) {};\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[person] My name is \" << name << std::endl;\n", + " }\n", + "\n", + "protected:\n", + " std::string name;\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f40024e2", + "metadata": {}, + "outputs": [], + "source": [ + "class student : public person {\n", + "\n", + "public:\n", + " student( const std::string& name, const std::string program ) :\n", + " person(name), program(program) {}\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[student] My name is \" << name\n", + " << \", I study \" << program << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string program;\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "459a1ce0", + "metadata": {}, + "outputs": [], + "source": [ + "class researcher : public person {\n", + "\n", + "public:\n", + " researcher( const std::string& name, const std::string& field ) :\n", + " person(name), field(field) {}\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[researcher] My name is \" << name\n", + " << \", I work on problems in \" << field << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string field;\n", + "};" + ] + }, + { + "cell_type": "markdown", + "id": "c5c9fb7a", + "metadata": {}, + "source": [ + "As `student`s and `researcher`s are `person`s we can e.g. generated a vector of person pointers, where each pointer targets a different university member." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5ff4684f", + "metadata": {}, + "outputs": [], + "source": [ + "#include <vector>\n", + "\n", + "student joe( \"Joe\", \"Geophysics\" );\n", + "student jane( \"Jane\", \"Geology\" );\n", + "\n", + "researcher erika( \"Erika\", \"Seismology\" );\n", + "person franz( \"Franz\" );\n", + "\n", + "std::vector<person*> uniMembers;\n", + "\n", + "uniMembers.push_back( &joe );\n", + "uniMembers.push_back( &jane );\n", + "uniMembers.push_back( &erika );\n", + "uniMembers.push_back( &franz );" + ] + }, + { + "cell_type": "markdown", + "id": "56cad921", + "metadata": {}, + "source": [ + "* Because of inheritance, we can now have all pointers to our different people in the same vector, although the targeted objects are of different type.\n", + "* Problem is, when we work with the vectors and ask for info we only get the minimal stuff from the base class" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "aebeaf35", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[person] My name is Joe\n", + "[person] My name is Jane\n", + "[person] My name is Erika\n", + "[person] My name is Franz\n" + ] + } + ], + "source": [ + "for( auto memb: uniMembers ) memb->all_info();" + ] + }, + { + "cell_type": "markdown", + "id": "3f7ae736", + "metadata": {}, + "source": [ + "Instead of the full records, such as" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "445c4d28", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[student] My name is Jane, I study Geology\n", + "[researcher] My name is Erika, I work on problems in Seismology\n" + ] + } + ], + "source": [ + "jane.all_info();\n", + "erika.all_info();" + ] + }, + { + "cell_type": "markdown", + "id": "977efc72", + "metadata": {}, + "source": [ + "The solution to this is to make our classes **polymorphic**.\n", + "\n", + "*Definition:* \n", + "A class that contains at least one **virtual function** is called **polymorphic** or **virtual**." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4b596bd2", + "metadata": {}, + "outputs": [], + "source": [ + "#include <iostream>\n", + "\n", + "class person {\n", + "\n", + "public:\n", + " person( const std::string& name ) : name(name) {};\n", + "\n", + " virtual void all_info() const {\n", + " std::cout << \"[person] My name is \" << name << std::endl;\n", + " }\n", + "\n", + "protected:\n", + " std::string name;\n", + "};\n", + "\n", + "class student : public person {\n", + "\n", + "public:\n", + " student( const std::string& name, const std::string program ) :\n", + " person(name), program(program) {}\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[student] My name is \" << name\n", + " << \", I study \" << program << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string program;\n", + "};\n", + "\n", + "class researcher : public person {\n", + "\n", + "public:\n", + " researcher( const std::string& name, const std::string& field ) :\n", + " person(name), field(field) {}\n", + "\n", + " void all_info() const {\n", + " std::cout << \"[researcher] My name is \" << name\n", + " << \", I work on problems in \" << field << std::endl;\n", + " }\n", + "\n", + "private:\n", + " std::string field;\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "12bebbf9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[student] My name is Joe, I study Geophysics\n", + "[student] My name is Jane, I study Geology\n", + "[researcher] My name is Erika, I work on problems in Seismology\n", + "[person] My name is Franz\n" + ] + } + ], + "source": [ + "#include <vector>\n", + "\n", + "student joe( \"Joe\", \"Geophysics\" );\n", + "student jane( \"Jane\", \"Geology\" );\n", + "\n", + "researcher erika( \"Erika\", \"Seismology\" );\n", + "person franz( \"Franz\" );\n", + "\n", + "std::vector<person*> uniMembers;\n", + "\n", + "uniMembers.push_back( &joe );\n", + "uniMembers.push_back( &jane );\n", + "uniMembers.push_back( &erika );\n", + "uniMembers.push_back( &franz );\n", + "\n", + "for( auto memb: uniMembers ) memb->all_info();" + ] + }, + { + "cell_type": "markdown", + "id": "ef04a619", + "metadata": {}, + "source": [ + "**Explanation** \n", + "So what is the difference here? Whenever we work with a **pointer** `pVar` or a **reference** `rVar` to a class and invoke a function `myFunc()` via that on the target the compiler will check the following:\n", + "\n", + "1. What is the **static type** of `pVal` and or `pVar`, i.e. how were they declared?\n", + "1. Does that class have a method `myFunc()`?\n", + "1. Is `myFunc()` accessible, i.e. public, or not, i.e. private?\n", + "1. Is it a **virtual function**?\n", + " * No: Then invoke it.\n", + " * Yes: Check what the **dynamic type** is of `pVal` and or `pVar`, i.e. the type of the object they target.\n", + " Then invoke `myFunc()` for that type." + ] + }, + { + "cell_type": "markdown", + "id": "ae46b4e3", + "metadata": {}, + "source": [ + "**Remark #1:** \n", + "This only works for pointers and references, but not for variables, even if they are initialised or copy constructed from a child object." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ccb162c8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[person] My name is Joe\n" + ] + } + ], + "source": [ + "person alias{joe};\n", + "alias.all_info();" + ] + }, + { + "cell_type": "markdown", + "id": "2d6da352", + "metadata": {}, + "source": [ + "Only the parts of `joe` that belong to its `person` base class are used for the initialisation. This is sometimes refered to as **slicing**." + ] + }, + { + "cell_type": "markdown", + "id": "ad22ac97", + "metadata": {}, + "source": [ + "**Remark #2:** \n", + "The decision which version of `all_info()` must be invoked **cannot** be made by the compiler, as it may not have the necessary information on the type of the target of a pointer or reference. It can only be made at **runtime**." + ] + }, + { + "cell_type": "markdown", + "id": "bcb61161", + "metadata": {}, + "source": [ + "#### Terminology\n", + "Since the decision which virtual method is invoked on a pointer or reference to a polymorphic object is performed at runtime, one calls this **late** or **dynamic binding**.\n", + "\n", + "It constitutes a form of **dynamic polymorphism**, as opposed to the static polymorphism of overloading or templates, which get's resolved at compile-time." + ] + }, + { + "cell_type": "markdown", + "id": "370a4417", + "metadata": {}, + "source": [ + "#### Costs\n", + "In order to be able to correctly dispatch the virtual function call at runtime, the compiler generates a **virtual function table** (also **virtual method table**, **vtable**, **dispatch table**). The necessary table lookup constitutes an indirection and increases the costs for the function invokation.\n", + "\n", + "If your function is short (i.e. does not perform a lot of work) then this extra overhead can be critically significant. If you function is long is will be negligible." + ] + }, + { + "cell_type": "markdown", + "id": "e27f36b9", + "metadata": {}, + "source": [ + "### Overriding" + ] + }, + { + "cell_type": "markdown", + "id": "960b3f74", + "metadata": {}, + "source": [ + "In our example all child classes (`student` and `researcher`) have implemented their own version of `all_info()` and, thus, **overridden** the one from the base class. This is, however, not required. If the base class method is not overridden in a child, the base class method will simply be used." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "99352379", + "metadata": {}, + "outputs": [], + "source": [ + "class staff : public person{\n", + " using person::person;\n", + "};" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "454ccaaf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[person] My name is Linda\n" + ] + } + ], + "source": [ + "person* secretary = new staff( \"Linda\" );\n", + "secretary->all_info();" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f63ea43", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "C++14", + "language": "C++14", + "name": "xcpp14" + }, + "language_info": { + "codemirror_mode": "text/x-c++src", + "file_extension": ".cpp", + "mimetype": "text/x-c++src", + "name": "c++", + "version": "14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} -- GitLab