From 6b1ce83aba00a39e7c9efd6f70bfc2ec4b2105e5 Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Wed, 11 Mar 2026 21:51:36 +0100 Subject: [PATCH] feat(ada): implement --- ada/Makefile | 6 ++ ada/ada_logo.png | Bin 0 -> 71505 bytes ada/main.adb | 147 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 ada/Makefile create mode 100644 ada/ada_logo.png create mode 100644 ada/main.adb diff --git a/ada/Makefile b/ada/Makefile new file mode 100644 index 0000000..3f7676a --- /dev/null +++ b/ada/Makefile @@ -0,0 +1,6 @@ +raylib_ada: main.adb + gnatmake main.adb -o raylib_ada \ + -I../_raylib-5.5_linux_amd64/include \ + -largs ../_raylib-5.5_linux_amd64/lib/libraylib.a \ + -lm + rm -f main.ali main.o diff --git a/ada/ada_logo.png b/ada/ada_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..47a759e8ce53085f3db582fc05a2afbfb72da9cc GIT binary patch literal 71505 zcmeFZX*`tsA257bLLnSw$#$fpMYa@0!-*3|g(5@NLD>go%S^Vib%;tz3CV7(F*BBi z5z-=C#xi5jsW8KgI?PPXG~B<@x&Qy?xu567^Z7i_i|56C^^VRr(8nsOw6_-q0H|JCnLM>_~Y zX+uy_3IuV%Qqm#>MH@g69RWe6`4FTS@wolmad1P-_q5F)(1zgO6GCM!SP_r1wL2+J zlhBY?&<}kccM^OVvi;-4`K#n*YTV;Xv7U4Mp=vsF`S%w^vTU`B-WO#se~d#XW1aU( z9kPFU`MhesjZOT$fr`a})*&OU?2J9s!m_DuX`vIBb`GDAmH2hrF4?KAx63+~%oC&J zH80Z2Yq&+|*_8>5*98fxXEAzdCX&hdkx&Ux`QO+7rojKE!2b^@Q2*{%A%F()F@>z= zw%kAd!Daml)?qIC(AsFs+Jq$peR*eWE5OrW!8kfoyHKb1l@y^)DoF_X2ABNh-wh0i zi6DOdnWXFkN&WoOKuhq{=H;Iv1T2)`B4!yt0{fO^NS^pZ6xg{zNNMv1gs@hEM8KZ| z9V9V12tpYD{I6g|LIeRm!1ezex?A9GVF;Q{$d>?LBVKb4l?ABy-}qnA05|jH#E9TS za2dV$Uy%We|2J>rSWK~;iWoVDX_5#^RzeG|PhM;R^ zfDo=axWxHkX$BJWFC;?&qzM21!)sESM=#=%#h{Ar;2VG|1}Z@85W0^?V_i&sx!x1e zFi0yp1PBR1A>DwzFy#OD(To4# zwQBuB)DpeKvN5e_>YJy*82z;>2&jCw`_Li8LwoB?h(U%4s+snRr_x%Q|Fm;wNCTh9SjDIpFU7&Z{Q=K1%KGwv%6EG&p z>LP$39#X9<4fB*RzAd?303gZAcXRc$Lyf)Mb?K-sT#N~LVXHO9?hgo>qYJi-m|A~W z>eEyQlnGqoZv~KFu9{Y(?#ileq5K9xs*jJx6c$S z!;$z&fF(bG=tMvxU(f0C*nFG>L?jJ43luyeS`56_6BmtQ8E77*YwKdi6f^~}l9mK} zo8a5GIZ9g^Y_Sh&>VGR(hddNT5Kyb0JcW74*(R(g2O^@>IPHr-tTwHxN5N+%d6I)#tkaHrV=O#;{K0AOV&t8k>|)Jwn7W)QrBtMj1%NDttzt%JgK zIkneFMIi{0U1ux@5XJ~pIK1_FrAxnLci@?J_qWv3z(4?g3QWXYF_08P^>=YIn_F-Z z5U1vIm?O+y!a88|)Da0GNcDqZ>c_4Bx`@WvX3V=o2A23RcbPkz#$%rd0-6kOyroxa z{&e++AUuZ-fTb#Ap%?7Dgmq|0K#T1rIf(#s1$TDQt5?*P_o%E*ZY0Tc2qAoV9>;Tp zAf=N3n&(wyTL+vYcU}2Q)_qg^&9CQ&ixHs#dfmYb?{NTOKx6c=Vt*?e*LR18VQVC(s%6WjT*D9-2+OfE2pVvH#eQ{Er6nr`RyUBAJ)nC9Csc_#lSP^!vZ)1x*`Z@eyF0e!}O$t|6~t&9C-;?6td-}nbt|?Kn95`32>W3 zOKA#d+$L2F5(Tf;Ux>2IE!rb$G!$Pi*egO$84@w@X2-yzugeZ3^IE217X>d!`VMr4 zcul$XuZ#6XEAE>j@pJ8mD^r{FF%^+rd;SIhY!vMMANw}nKkNw1@cb(^@{Gv8U_i`5 z{Eapx2R1*ZOPSUJ zn-btMcOwFtzk!VS`a@i>FrNhY(;WVjn{7wdY6q8;x_~la z^phl0z=9J)-GWa?-Aca*ogtTD2g;KK|Pa=sPov2H6f!nfPz!a_~shAn4Ak|Y@qYw( z%E*-}F%j~w87D3S|1atSp$L5l zxcTEbAk)qG|2T(yHHs;rBz>!pcu-*5s;Z1Y@reh&CTl>=eodEFkP&~{uk^sq|HNF) ze2+LHW^zzr`$FLG(57Mx$cg}x_gsmsV`_=2KD8ZUP8&-KL6KqD|9F&vw33~2bB)tw z4QsAHIUlY9H1V1eR-vD%UNLF|}L-GKGNYMQ+$-n-~*GF+@-cmg_X`rMpKy)DZ zq^o--srjdve+7{S;_)CYh5p)-xT_iLh9R1sFDu?FSw;Df-amQ!+)Wox0a>k<| zYHPCr+y>W2fxWnThO8|d`faFCQeUu!_(QPEbOx-ky;-)gJFSQmX$F^o@-OH9Cz~Gz`gNyCDCf+`OB09qji#BfrR%>Y8z9 zSNpe`E^n;#+ACN|Wcx#4r2rmO0Ulu(xLWpP2W85po?9u2j*WkBVPst3#!%i2=ZI0j z?;=oz@3)eiQk3dK+`e|W-t|f}*x$7hE{6Q{tNEJ`RhHWajebm3s$TM+RR89(+UjJU4V;*CBIG7WHj(xDn%?g1iz7O)v`;b8>m+V+` z+nA8#MzG8uTJu-Ghk`f@FxOOIvg2{l!9dci>FxN$^|Z{CU0B91g1f{hfgEzBkR0_R zZfMGwj?CX(9gWisp}ow>QylOT|5yKpoaP?l;5l5P`d2?r+Te=O1aFqH9A3kbF!sd- z3A{#9b&IVqRPkntT25l>^!`~F^HuZ5grc*IEV3*O7vp6y9#{955M=aq#=OZwlBnuV zZ>9Gd$2wxDjdq2TpNKAn9))L--zzry@$0K)e!EQ9DG5|t?~uj6FoXqVnu%lb~=DOxVn@9j3sTHZM)BEdig}Bs+}C`Aipnmm>YPK1*%;hgpaE&&BEC z+=cM<4NrJo)c52ro+Ya-&3vM4h?Lx=x7MZ|UtwDugmu7@%Nfk2qHV$$fY=ZbU|hN5B{*C8)H>>t&Q$f$G(|nJ~h}m zCsg3e6p}Jf4```&GOKI1i>7E(aV72=-xet6@%7n3-m~UOYTN&gPc&6S&n;<_3Ohd! zS*+Dred-hO)`@Q`NemnfsObt{%q7iwvZ5^$DVf|ydv_RQ3TUrRLH!;bplQAI)M`EP zOgl*VY(hqxP4OBnI~9qhZoy4`_Th_c-Kcaro5U#aU~%?(e++(j>-$;GHxX|<_rA=7 zuCEKN+~A_TPRIDC+zx;-Jz2&_ksHy!R^oLHk!lDv&K{%I+Qx=^#|ABik*MU2w%2vs z`60IFi%4YHaG8qgBAd}~!*fwc#BnL~Qj*Q1DBE1~(N6PGrn$bR0bC5|X3iE&qRsM> z8YN`=_YEwWsle@Hha2>Ln{L(Tq|jr_Ay*L{YNss+xo9p;#oNXPZ5$|i=WG;_IG$UB zKF|4v^I?6qbEB=)$iOuMN4-tflCv2%#Co8C=aKCf&>h|^HEC*jJ34xT?HOGlHa=vx z{TghpX55NrQSM5MB&F{{CFag}$3L+nG(2D*n@S22xSyz_4XNhS@V!U0j?iLdmU^Zn zJ6iJATTu5hw6Gg5q(u-(R+qyHc&B1RN_aRFV$z*c9d`6@q;k&KSt^@2@z5o@^|>1@ zykL!~fU>b#p?{n4>#%O6yN2!-&KkhkBb#_wGQWmr64k}_M4Cuf^xeXwAEEiU@Cyhe zwmG$oV?rb7uFYr@@P+YFdO34R)q*%G>RVt==;C2b>);OtxWx4U#Y@m}e}|>%Y|e?} z#OTQxY4U{DF4RSkzt7Hmt$48B!tl>;m?{ zPRQwVT;bSGSQ+1{SNw2Pmp1in?!wu zh!#N{q6SB99QSEJLH)Fg(>o9W26I?n*B`M`r!f24w$fD z+76qkCQ>eDFTNqZZjGJhMJjuMZSKkyZ#4&oN7Xa;{z;{}p_rg>k7jSALqk~P1C67v zeXc3EGp0xle+p%dI##x{)kzmp%hE6Q*T#V=TBSQ<16htYrp3A~`cm`{kwS%}(^sam zS9Dcf8B=7jF_lnEd0!EB7PXJ&#Gad;|&`Tieh;u@$S+q{izzl`oU%!yZ9 zI@cTCQo7>)-aE3~1@532+cI=B7FW8mLs;onIj*I=(wMePKhwX*<3@u^L*VF2)PtF$ z@7@2P2%~EIy=8)J67@t?%U0bMwP5X}!JtKDlI>FiUtW!gNsvuH>zUWI%O0UlpA*7R z_TN5qNAp0nh7!q%4=#j1C*=y(=HQ?TM;vpfE7YxhL^A#C$kg>Zb+z0GyKD^3WR0sw zy9?)jg`37{cfH?|DVn5=BXrUiWA=Z4rr`3w} zg1*6n4v3eO}wu-vrLma{WOIW`n~UKcw$dzjY8VBkaLq*vdT zz#yA`U_(nB{7wF9;^xJ$dzSvuX^8rooU8CMF6w)COjN99QuWvAY{r`+Pd<)RMe}Qf`Em#p4h9 zDj)0ZP_~uq5jZMg2>W-I^s}L0z4_@WY6E!Y9Y5ZxEBKq_1YO;Z>+LySUbm)$T!G&u zhJwI)F7WXa;1`Q!OQX*%wIPR3w?9YK4QLq$xrZGQ4sFR}zQ5ApzI>M*&I|0<$xfr3 z@0!kwZ)Nb^Zy=JQBfKP$E46TxJBS8}y!D$eh$q^7SXOr2KpjHsXXb&e1KJ`8$atoP zl&qEbL(h#f>-S8kOMHojLoR6^f>eCl(pv}<&MU~p3xkmlf5C^1HpE`i2q{mTXj9YQ zN|ZwZ+c?_hIVxVT_Scm`A)C2;I(irPcS=XqXXbBP2Nd?cgjA))h#y%addt+M^^R*z z6E5EO&|@|a69$u6=8vwP(IGUI;E&L3r{a=mQNgTC&v6?!CfYst+%HL1Eu*jN)^a_k zX5n4us26s)_B3;Bhr$;1-I*lhlF(gZ?T-i%;>)5|>g;QBhO|n{Ar7bGDXM&~6gQ@f z^WHMv%~qd06&|*Di{vNjv&SB}XhNCZK)O5J6`6Z7vl>pi(sdrhOAVxVCzGR%4zGna&lyzDUzAJ)WFh}0T55i!H9{oOgz|e1<(=6(gqW+<5N*6}O~np4=zS-Ys?jaO zOXL}M%D7b}-NCr&uY|Jx1$nvrW2dPtd0vxcr+0BbOwTGBkDi5<+9r}tDaOXc-V=R^ z0wzY~^K*qqEzTJuz{PXcrFm36#w}97MUAGL$S2818prn6t-WBgKhQlEng(8>KUuji z4!P0(hPM-bg-BOSg31+fZC!N<&rR)j91T{eDTnix;M`mHJ8teV=+y9qCY2tnRS9y( zmYA@`74|$E-f%a5tZ3w}3^J*wW$ZqX!vdZw&qCB3zQcdutgf?0aJeGeW9Tx%9#*LW zY>2cAVL?NG+nHPMNNv*bt$7L0%W;1Se-u=wtjXHlRXMx#X1>fu3bMG469r~YVsp12 zPgv@}D&NJIaX-_opBj8LcCnbrBQ$(g*B4K}NE)YRO*-zyjV1<%YczPBrT)Gn->vez ze(34Msb>^ew-WH3jfR8BNY)t;3hTE&kqQ5{f_gCH;dx*qV@hn-(H(E8n4Gmr(#mP>%D3GoKnLpOVzEBEy^Kqv?>UD!yznhHWbsyA)aBFE^RoH#J%2!x z65dM#^p}=d<0BVtqP;LAolhD~C42E>(y37W`!=;i#8SUS_^8zupFvn#s`*t!L0_LV z&vP&QuCNNC+$Pp`C2XV53%^6uI;8p?AjhC?zpR0v3O=bMPqE11j<_G+MzPpfT?qpj zsTuAa%ua01t!^z#Z>fhd%N>FBA-d#i0Lx;rqw&U{VpVJRY#C?q*X`@p-q7tx@mrD~ zMqFX3)UDYRQq?{u(F7$eu34r0qqXxOid^(8obAscuOvR0f%6ICzGFk0l;1@rqOL`B z;5hB{&!jrhRt|pN-weapW0Gd^^CXgnQ2mDPz-FkHd6D21@dnWAp2^s1iS6*Ji(#bodIgJhB%wMS(e~=Et$# zl5DR-q>qo*X6~b(?`ZrgAgH%IX5Bi}yPzU)u^n}9<>bJfUE~R4WyD|t^8s(2u8&!{ zCo(>LlXTjhi3jDsV@aid4`c%!Hl{H?cNP;#XWCC%B~G#vN`6zk@xoe=;qs4HzTbr^ zlPzWS7tRJ$%sWK-B%bs9+eevovsls+QIstN=iW$L4`8w+mqHffkjz5eSQo=2Y3ww? zv@O=z!b^9Xu*cHKo3f3{cLZ!+n7(+Z6fkPzL+hl3nUI&khw^m7>V(ztycTT7YfzVJ z`^;v$kmP%lq*v9X`EhRxb+V8|cLBC5D=2PO{bai45FsMh9aEnD!hcgCk5*=lb(Jb=|(KX5su> zjboSV)(WHvt){lJh+98?uVlZx-(J0=ku6}hKK%QwiO&oM)`?e12~b%aDYzP+^f1D@ zz>St#$F2$eF7CSC?*&kd~C1Llx8e+kvzu)($A@q~`kLLq{!V)3JVjG3gN zV{SqhH9jbK;zGgrEPoyT;1Kk*md9w}ZUj4s-y_MO0Q&(!40_!MnoQ zpbi57mBOC2=Yb06+M~f0jMK)#@va<`H9eWhs^X9#`argvu(fY>ADoNT<~w5dNo0)| zx-T;(TKoR)jbWCy%su^ce3-2cClE@|nL?_+^&bw3rJ##;M3jM{iN^ba)HXO*4q11+ z3Dhiqc2*38hnC84YjnDJFW|^2NkS*1aQ~KwJO-@6HoPWGTP)(9t}$(+Wwa|-czdw` z#eiyEl2NKsoj$hQLiJs7OkgaQ?xVuGQzdDQAR`&uJx9z6*7g`8DjpA)x!|X#9J8it z@+hib<9_(Q<#V+8aO_E0#3?C~K5p8giYppom_8!Ghfjw`6|asEkLCnyom@8arb zJI_Uc)DFSe{swo`fZo6Ix7>QQfVKVj^2#@mQy_Zd=@!cGFFaI*?781@97#~7ikv@2 zZMP#3P>%qNg0&a-d0v`x!vgjJ@KSGasPB>qLf=1-dI8skZA^uRns3DhZ z9f{q7E)VjIn}W|+&TKy35huOYiVO=Mx+j$VtX#pJhTp~YF$8l$x}1D%LR0%qB_Mub zCDgjLKljgZL4h{n6R2LGt^*U9!%+KrfNa}PC0Fk?UjU+oY$os9WhB#?#K{2F)8KNX zG(REwt`adr&4p0W+=1T_At-Dgy;6V%{L2_YUFfj6ra|?L$Ca3%lx!I1V3qGLCY2)4 zCV`P%-mnW&Q2rE$m*~!jnAtv%p@JiafDWl65i2Ns>(>5h;G3(b%I7qa`_y0E(a2>6 zVWb+n*(-Bjx%6|sP!@Y%@NVIWAhgAFnfK5Fkr>(*ElGH4WM;js6$e6-qrXs0v8YzC z4Gy&&e`~$tXoU;hhVcPt?i~Wv5|?3#n5k&kiB3G3p>q$cRl)` zZ=jLT$$(uD`z9y}s&>{<+uFMT;wFqms?jP{l@e0ZfOfSRFdlB~9Aw_NL-|FE|KwnU z3hG>17x9N{;Ar;!4$O`(?<|zSc#DE`h&6KY@8Cm5vqPD@Q!KRlc^bih;Z?8= zvkgo=F=Ez~iIrm1m5Vsm9-YMGHsh!j_L`(6QP2`mEy`nhQvv6>5sGVx0n855rrA2Z z)h}RJ2U)nFv~zsG(Pa6}dR2R|fM^Q~GQlO8HFmyGByv=yW%PXt1YGI%jifgR2$wq| zw7W2hEG#`*ede4QA%|_CjF1jp5kt~sFyaE~qc1aE2{_XeQb}oaJlYP_^yilg7(1TK4$J0Srznhts=t;3f2y4TJxESUsbO?z$L4jag@`0nnxYr8`hu;=7V4E za?X(#o-;)Td3RmX37i*n`qJlhU`_2!Kw#?i7E6sbJc}kZoQqc@a>(!9K~Ho}_8{Ja zuc!&lzp|8mY`>X<&27 z)47+DZnS`D6fPrJ7POtlKw{06)`Ygd9>R?>E+J+Fg}E;R%EAE8A01x%=NLBuSkd)> zT1opk#Bx^yNvFndQ_#nB-58`x4^)$^qOP$D+Fb7+1EW2}Zr&*ejQtMZmYMOv^{}u` z%4u{YOIe1OAze5X*#Y!W4c>0Y8UAsz=^=efBvwJ%h#KK3pziY9`s^jAfduzkkZJtEg~8L$#l z2MH)t2-Y(g=#;Bh8+K5P_~;leHNjqN{v!yq>xV!QXi*NxYLNoEZ#sbkq{V{rdyfSO z)Wy9f6#9UDi3!%PQr8wGKBADX$UI2CAW#sNd+0HZ!#PtbsG#Bk%1VOEO4a)Kd&F30 zb7Xs=)BvH}zSipk^-mz-K5t<)+^qoPzG2G^!mcvJeSvr2Ya``-#`KDK0TJMh{MS=8 z6PiC%TdE(xIk$zAFtyw-sQH7@J;645FT`9ea@D8VMS7ymVCpDoDJCYiR{huBK+lmP zuVb8@a3CrodjoLE{++s<_tJ&Gi9)k4U`YW(^XoQNm0N`x2etWU;6g_4L0l5y38(12 zsN$dK;EhhZv^K`NXskvlVOJIf$`cucb_iVDVhJpoJMA)QH3gcKtCon52hR3sKG5gx)q4Xy6BWeJg2WF!*rNt>z6&_lAyvJsP{A2nM`8 zF_)UY~Mq0lN`%c#>Ogo1!NjOob8 z=`^nirk?!YNuGoTZiuEe!x*{JeaOHB&gFpdNNCQD5iK+KuyNX|W<^nWuBvfc{zE~Y zcSK;higbH3>SCHCX8rM^S_?0B%=h8c&+=U~p;r5XYX}%BAm+>s3Jg*`$w8tW?j>LN zNEA*AVUMU^DAWVEmJ|3zQnN9inop;UPy}&$^1~SWy)DCAND77k0vyVj-Ov9Mbj6@- zFm|Dsd_kauN8GV*!ajMCn4Nk(B#+^A3}>rhu*uTc;O*pxxP}d9>PbQW{WSHd?Zyd- zq*CTqBqQvQ!Rgu}XpT}ynb%u-Xqh#M;4LggoQu|1whrAe9uAki{;*|wigXOHM0IjH zu>o|~otT-VO3VWBDRW8iiPcNX|q;xb^c9!=5c z$EA;qI=$+d$hjpE28{svFi!l+8H<$lw<6xNVeXZ4&41bSf{Qp3Z~0sI1Rf{Ph>-h3nIl~ zqXig?Agsm8X+G%;vnq(IXvMIAfW(;2Jol7rr>pI2z%-U#WSsVU!rHWe6SJ zW5o%yNdywS+_lK{BfaZGc$&*s#ljQegpxu6{?V%|#C7-jqw(<{(|d zf4Sb&42X!Kfbth%;0xzhkIB818A`$0SwrikNjN$`?{~4ziLih~C&D7=-c$K*V1A~S9j+mLWDRt-{S}JdKwqSF z3O(Z6$-7?$!fFcnH>Jc`*Af$0Z!NPx>ejsXHSv{qW|2D|Ckv@6=p^-Ds#XD|z-oKB z8(NJGpe#vNK*cGpowFS$9-}gex+C{%(m$yC7n}U>1YND>i@&_b6Mw(x#&A(v~No%cN2Hq|PxSVUN>Eb%Ov$#=T{vI?M zJ|3tT6U3?nyO>u%-IvPxru@TVRnq{n@$H5;lzx32HeIHnaNTOHn!Z4pC?rq$QARQ; zq<~8o0`wX3jKwX~a(9=UhL{Hw5vkuv0@rc}fb9E4^;zZ~r8e8QyA4jg zg>|6PWFdpS>@`1bcJh zB0rd!b#%NU<^%KCI6G{-B3a7DGw5oERG;>F6=AOSGe01gqLh{L7Gg@%66}Djk$+2l zUZNp;ed%i|-2z|fj>iPFlulqf;-8(lDapIo!F|n+>Y!V=c>i+gC8PPH(#QE52@qQ) zbmRCH#XQFB_Nnjj6xAPS!*BpthnGWomjcaYFrv2`++Ag8)MP7O5BZuyN(?=X z4-c?-&otM4y@NtspiB)#g;u(3l<;q${a3NPhr12@0lmjg#nv$Od#h$gkQ>*&g^Iuu zfXg}#=HW>kNg?8+$+2HwjCFB}&&C(adfbq4nWYqkQ3nT?ev3bMS1#_dcTj-EY!P#E zIQ%^3>A+(i4r}&`2!`53=F}g3w@DQs2iEgPWCqR(`5$_euj1wreWs4+kxXi9~C7LUG3awtO?n_H>mDv8x zlBLCtQoRV*)iGQhZ`%=|jB+3#<2V%7tlA)$FH2mwjV1HBo#yP$^T%$k+^ zK4bSWs}~W$U{Hy%)Fs)SajlN)%4*V%ujLk`t(TMx8Lv$lvvSf2&YwX;vAO^|Y3I(U zursYIF*_X9uT5=g_r&&DLE_!8q)N(s(K)JDMjO78yFq@RXc{4Os5v;6SK}S--Vg#( z1@W7QP%?pNJZS&vZ}9`p%V1?Q8p)aEnRRg_FZWh{6!bA&`u{R?iw!I1;hQ;scAqCx z9F9ckXy(5uy~!=m=AV=#;7RLGZC93F=y~F2FK?vJ7B`qj-P+(eW~x!@C=-Ml@lES% zB%^3>$l^fvG}@Wv$5_^K9JnLNqufXRQNRmlc*`v(Fg_k>A!h8DcwV*<<* z=9Wk&R&3Vi4QzOlW15%`jIAXcy|1=l9h0qhFo8JMi+i{)t#nG%EYMrb;uDM z#rX(=2ZJF!+6NNNGV77h7c%ZzyHu(9ehN8`pN|eQOigGrwHC{MDszN(M0f3_0xD#I zLpqnBsK|Z|+#a(AjAL2l1T6|$#RXTZlB=7@UC-vj_3Uak8vJ-SK_~UolS0DNy7k3~)&ElxL!)Y%j{6btQdXl+I4Ln*Pf`YK=BzWz*#9V&FXe#dd6^P{bGr9MkTn~jLW!(YXB_b*ygpRLrcpV{{E;tAoTW6@y+Z@1E_rq<(-g|jXy zp+iSRZ18%aKJ8xB=?QQ#<6&>O#b}XzNPtYZO_xD)&n$*Q?bKU*$5{T(SjGYO$0gAt zixh}yl+i1C2MhIcy~bylm%hElns(*j$yzmC3VtaHsHYNHD?yUPYuqaiRiOTq;h?`) zj2IGz%{-~ZcX-*n-D6JJW|m##Np+DJpQ?PcX0fZ?#jGRTj8`7Rp|vHNOpX-en-}nv zP6cbV^yo_zb3~6<>Uz0EikeB(Dkv;dgaBwe50(Jt>4e_w<}Ds0)S# zDy~(>#CW;4+gWWqLly5EAYLB&BV~Uxne&%{c-qW(k@|2d!AWZS6qqK%!0Os9vqmPT zFTq^JUPk9j5P!7QR>JpgGjzk$;oQ@reM1-*z8rR$zj9tT+Jp5ToZ0Dg1I0jUg(nPO zNU*u9_2sT!xQ%{T04HqmGRgf9q47l}#A&Q&#zTDR5GOx|#LWNOgjTME3AR!CEBn>5Rp_wFYF!jQ25y z^(sw$VwfT-wEeB+&@Vn|Lk8M>Ud-CY{kn+@R+;hMtT;{U4`!foEA}$dRham^@Y(TZ z^6uV12GT)4*N3Y7EN52Uy@`9h6cK6RMg>;hE zzYd8bH`qfC^1lAF#T(8Y+>`rVBLVy97TXNB?TrqN%}s6sIcdJh4d=^R9N<=ri8l$= z+*;Yvm@_OX<;k<4`8wU7*~8vj$DWH}Kh|5$y`p-_j6%K793OUoKiDel(Vz=6rdSL; zwY8d^7)&_5ZT#I$egpj%O=|>}mq~OL&?pyK=vJuNn;{La2+IH?38+-r(uM1a#^d*k zyunC*`nQ>NS{e@9Y!mIXqHyuA=VfmxBSYBXLd@zGq5AhVjN*VX8GPyNz2s=tQ}*Gt zX3H#M8Smy#*b|s_cmuyQ=8`<8f=axB>S2F1D{by5mkP~Th<40fuai|BHG4N4-qO~A z?LiNo?|9;XZ3fj4Pg4IDpPGa1inQ}b@$bMq_US>RJwpzo%{O#TwY}9 zveiiX&OA|}`hW5UtL)``D}Kb7Q6J<_S?mcwTzI3t8l{^v;@Xt-Ic82@A23|{-3O2x)oq;_Oar9 zFV1`~wO{sr3+&m%N`?W;KClGD8iE$^K+evs){K7?P`9L128QDm)O*A=S|KnFcncLa z74~?E^_qT}vDiyuf3Is+26ko8jNE`3_J~u$A)j3hWcM+MF6x}@LYh`gjbmHR+TvS60yWer( zHZ`752Pdu@z`=Y> zS?eTurYarLIhT{R>Q<+x;49{}#fK0YR^47I>yg=DLW^UBP7x9UCI`JnhU07S8A6eP zCH;9Pewm%4l1&hs#xcO*jqxv3 zRz1ltWv;;E0zWf`Z6war96C;!@;0WOXv@(Uz}dM8y>6y2cf{fiGh=STQn z;rF2Mjkpi$0`v<&H!xg&{p}C?C|#)wzgcFj?;*#0t1T>9d0TU3eM-@7v4cGI-7z8$ zGzefY94b}Gpt=8n4Cq_bS0(%|R`JE7r*2OL6-?9nU40~M(9t<9UsE7q=!;7%(pJy> zijEN+49lK8R(O^#sd;qnBV)LqPCUOT|gJ;A{Y_1>LL%CgJW=knW9c% zqsWs8GKjtho}I){t(nb*V=9;OAKgHU%zf>+P|0>xKI)5huMgWJYKKZhqXHFKCk$KR z3s~}C!Z%`k54B;Zf1hLJ`Pg54TRJE62xrAA#%zB%)0S$lm`qCqNEU2XLp?Ljp-<`u z=SVsEx@c6H|Ju9QW{{?3vc}(imQeYwa0DbATg2lIe$BKq#ZPPP@_$jGevfh@>-$xv zBAL37ia1rcuY0Wd<8CL=5kkPhSm{xO>M?6A@zDDeTVX_6FI=l{yBk ziO@1++pRf8+6Wr$s$$<1(lP;!hhFnp%dP_=PPA!b7ZZ8kH+JpS5@*06;G`*->;(m% z-ZXRS%*^iIds6|>agng$oiISmIX;Q*Ju~Jz3#vhTwxnNjQ9K+}zP$EgmupMiw{w7) zUK<^&yc(%9<@(Vb!MUaTrDn=MSPt$4Psb2NEWyT0N*^(a6 zR&f5b91Ikmi zI0?gG_#;%PYnMEIFP@+x(e3lC=vnGFRdlQ*tWA-1WWTGt8Jd;MctVv|dI`F7N8MYp zNqu14@Q?vk0rf;e%fMA=K*`G<%I~`&3&u$(dnqH7i}{Y3o*p=|N}C_1`Qn_xjCYqy z%CRFfK9YWuvG~@vu_6Y$L>&JoTNiPL9c2Or(eS?^-V|zf?+Xp8R(V4_EZFQ3L2v1v ztd_AM;&CuY*VATx>y>)$_M!ylr|v<$kkPg_qJRctnURi-dNC{&l7obh)-wcj+)*Pu zApCxEHFoSWDR!ITBaSfTccae^=OBMZUVI34UvHI$mAjNf$IbpgG4-DQ=xikKXxYSk z^U3_v#mEvP;IM4F+sRWyE*AQtS@W)=(ABK8!J)qKGtG9ea#QP!k>g$ z{Xhrl(3!RpYMb}$HwO~j{ciG&E7k>XRxfS$oC$VV0%N0FRD1(0&M|gew|a)ikG?l3 zE|t{(y_H}oTJhru|Jd%VS7q`i5$)cNP`+9~Y(HHHX!Xgq-EmyT;>z3jM*(ve-|b(&sG)rgVDC5=T4^=-}W}H(-zW<@PX0Dv?2D)$B zuoD?_%BFD9iYe`_kU#y?tbyNhsP1uXa7^QY&zL%x=nV=;+`DDsqw3aqCjZ-B3aQVs z@k0!Ubsz0!wNe$PBQf!I+uW_#u!4@-#2V=~lOM0IH{2=lY@2)(gd^v`3sRLxe*PU{ z6_3E#h0wy`gJy-wtdE@TnD*UqhuLe-j5%-H7TB$c^k8>p+pFjc^fWuvU$T*`HxVby z&?T~}M>@Fu_t96Z!ZBgLN}PEph*fUOf)adX0k&a9-Zu*OC-HFemczu_$?^DtR+*8i z3w$%Z4qg;XLDPC8GGIZpe&yc!L(*l-fm@tt%MCZN>~_!iCnXF1*j>;-CkgySfIj#U z2oPBadZzvhJL6BL+@S&V&Eh&;PRp$6-qgb$@4y)hREDh4 z3Pv}|UjJF4g%cR}4q8-9nWMCd8xX%erYe&%QR(6t?ApYf1A#b!5L zLPUWd5V7N4)&!>*ak2iaisiq>L%|8kBtu@XLp5lgjji;;vj?v$a`Nb$6eU6cZcIUW z@tL|e5U(@5J0K}KWN@m3%c47^KuLF8nY;op$02H%bPEi_8Tezsv{5k6jdAJFfK<M|Exx&IRzuC(@+W=Z*!r33g_zK{e7My{Gx^}FEam6on?m<8 z7_`s0dZ5wqjzQPBlrOiJ-9d5zRCNZ8G(x!oX75(R=1w>t^N)|TR_wV4hiMBbPvWHk zyb>f8ufttUE86=q>(Nyi|8@asIKO^;NHP@k6#5p=#GUiTcAb}>g2E{OTRWY&i+PS*w&hvSmO^3~tMD(ncATpAcPQoRJ?ale*2 zCyY^w64ruV9&ewf94Y7q+h*J;m=r?|!cJU&$kGCJ@k0hqF>B*#F%m+M%?K`xa!MZz zNy7PqavaG2jbKBoB=n|f_uSVlg|dC%(xBkG)`?k&@>8B4zGAXpV{)Ks0@rMDFZp51 zWMWn40Z}Nl5ggvpAvC6%yTY7g5kR{|vT_;4{fvLuYrB;F?<1e|hex6dpAS{{AGLX8 z>w;_0$V-068eK23?fMmb{WgPI^Esh9p6|)}NNRcty?>dm0{KM>+HZS$1x+-h{PAWm ztWq;1X?O*fTr|;K+Mi*Nn?L~PEyVoEwtNmf7qo6n1yhDAKeYLFVA{G{-=I$*`TnG{ zzGAMLrfHx`?J{X&GpSMytJ?qj@W0NVIbrS%|4_)fCYcG&3Ws|`e)S-b^0!UYFG_41>n5@S5 zuer+k4=Ped_1_YwK~*}<>(}1L7r+4|;;uORO6(}8p$&nvPgWb9?KcfP-Uf)x+;|ua zc>d9}aZ>xmqDD{V$$XIxiVFb*G3eiQ;3GlPofqNkE zP|9pZ{|}n3JD%$A|6kXPD=y+1*<@#v$PCwZvt?a-hHQx&ZgyOhN=mLx_FlJa$tDq5 zWkg6JO22dae1DI6^mz1#^FHUb$Mf|P2I5u_Uk10Gw!&_&Nc{196yymS+y&S2WgvN! zwr#gTJ;QD2^3Rn{Ueeo}Z|*i_FWReU!5}3gpuDk@vem|Z@(RFtV~E{gN#^oz*RPO1 zSia6XoN-{|TevWN(2HnjYpgsCaf;^Yh1qVy;BG^%(|>UQ>9M)a7LiI187?I5%HU&< z(8}bT?lfw$zASl*C>cv1(BErmEPvn7K_|cIhlWT_KD61+`Szic)0z_78GJz69}l?=pnQ%n5c1n>6aia+ zC&Hnqq})S(rdfblx<+)$$$F^m`cE#UDsw5fsj=AWIjoWFC$6k7keO#XKcn$E0g)*R zVCMPnSx2bv##!+6`zV_oGJsn#OKWsYBC6$U^gIWEosISK4sUL%byS>~3TyBDxHi{a zrkahW5D!KNTk^Q|^%9G3Fk|!-bEF*nIEZ2?sYf>Ki^Ue z$f1rsax4N9GOFcW z{7{a)Q@ioQyOl^)(LNYxgCW`q8-sj8{ceTc%8#s%SgLvy+>e!~A@dId6fRn@j0n^O z))cLI`Bvy@T+R)a!*3QRRsap8y<`1s{=oP1wMufyC^Kc zt~h`McvoNQHn@6!GJj0@2hb>4eETG*5do=a%QkxD7cK74R8GMs6O#%Cx+VWmju?Xy zhTtE~&`n>B;XemUFDXcuSi?9T0r9*}m*psUr_kBXpZxtwG;w2sw`1vzxsR3Q^EY?C zhU|R$xrOB=F`xwQZSyc?3jx~68vuS~o^Yk9{OEt;l0t;FG>04o3%m886e|5hds5mb zI-9Eofa2)f@@+X%2r>rU?lkAs)wz%2PlLRIBf2r_yJMA4gXRzEB8-`+9XW`^1cht9 zrn&39Ce!%jau$$lTxw{!WZ71j15XASCQoBD_Um8PU*@ckFJq4{P7W@-oHp{_cu4zf z25&1HWE1>$Yl_t2lI7{{>(k2hT1ZMd;C#JOn{DG9D+rPM+p0qc)yx5m=sM}r__ zJ;`2$RrQ~Pl;f`^@vJ>rWz)jcPV|G}y|4 z{}fTCMg9H2%|)mnW*rupjTXt^@ZJ`Shqpjoym8{REHV*DgZm-qQ|q6+M93_kF$|L( zoyC7Wz;(_BR(Wq&qla_I*V!d+zq&U2EXamtp?%sfc-rB<-?-~Sg*W?WBk48roZGMgvgf*$fgIqYXMMv}Gdg-;6+V*xabP`W zK5fFBRT2FLXj`v_`t@@i`=VV!V>k_xm=22_yWeWucQpbznE6%OKr>%C~m?~sb z$5z#8llxiU6>><0=)ZHvLW)TX+~pWPeS3LrMsIh7oYVOz=V9yhw$pkhzQcxZb4`oq zQl*~M-yl=e1yHPqk=Hdx8A+EUD}w@qPrZM&2ABJ`ZcXM6PM=Xj*av{QVIu-Xemq$2 z<@Fbr7=natGtW<$k1Q6&xl!0&-gOv%PAY{GvVdSg|=8ph#mPktr+nyW}kOz%| z{b6?Fu{JxHDCgOyPM0Cuss?0^5fzPMZw6?=-ZB6T05e?0(*-^M0e?RH>TpQPxYBsF zX|!c*phJRP?#=Rt@khkw*lI6C+m(o<=q|f&d9?eT)5^Dof=*EcK!LLk@+k@Rpw4SI zQx}K$mH!Fd=DNgfmqoI7yyM++BFv+G)C?L*zjvFfSV+<~+&3D)s1<<;U^lK!b=YpC z2&%k{=LBmks7N7{0G8}%bEl!-T;T$`2fMhae;P;6k=1Lz*m-w)e|E#S{OnVO7RS>z zJxQAK&YeKc7Isk97$I6!+&Aiz|yr)5<`4hc@R)1S@(Viid=5KE#eE%}TfxoiSBk|6@mhe=T| z`Bf$lI-HuLex+QVp{G5FR9mDZnudZM!wgFu)$(iWmRv(HLS{G`CHi0EYbqm3aUR~gPebd>Tj4pf!Uq-vsYl?%jpf+i%|nbfFWd}YbgN9i0IrzxyurjotcUqHpAAV zrJd8DBavipfJ>Fs(Mn%)mzhMd#4AHs5xB-34ILCaXwjiwf%OQ7Fdi+K}HH+e_!M4&0=efrvi%&VtHepi+Ap{ zPcV;hJO=sJ>B*VISIRPW8mRx+`a@zmKzw9Gqn>17rUU~*RIc6(y1- z8?akg>6F8983^`gwHE|-`}6j<_j*;O*KYnX3CE zAKs^eNpxdf$k!q2rJ7oDS<9xW#L6K17@?d1I|>#9n7vH<17Ep#2j|RsE`;Q=&FT3P4HiCLAofZYR_T$SIibs2Qq%tU)wP?VRW&^C*vAFam;>oPrMQzX0 z8#bE?WvXSJn&1Ez8jm9478Px<`9OZNR3jxf`>{_P=x5pU^cb|eS&=K-89j8wAF@HZ zTLUx5Q%3dleZO^2x1j%92~}UYPIpU2r zZtxP6PBi|SSkw@Nau+~}jdr?s+K`L{@+y(803tske@=VXmD0lP%}Ja7EzzUZrzA~V z1u7_PX+R2DL47gH(FIn=i+}D~W<8h5@zNIu!!zCuN9GSMkb%94K%Uu`TNX<4cbU;^ z*pNg5_Cs{d>t2oFm_(YGq53V#QzFK z@?Y@3A6o~@hCKJs+0DYxy0LFqOKyG;XH_;DbY2cXT+$TYtD`vZj&uiWH_CMq!RkOU zqVxjxfUO*oN7tPTcD6yY7F4-1=O-9la+2z}fDb!qC#&WGV{A{vf^Ulc(aW?qU9h5u zESZ3+Nkvm#n`&=Qpd8<8{13+W*}O(iWX%^S&V1!XL=qLJw8SmkLUo)fr^Jf%kwTMv3pFs*NUOt zH$SKCkxBR5ePB#a^{(SlDdT6b&2(E59`mz~7&Zexakn-5t_`;IXQ5YcQCBzeQdo}r zO2Ew#asi!F(0%1BR$(Aun^E`RbKa+ekN4V*w!V*4|4ua-J@MWCrj0m|7flZ`fCyC4NUjyDks6<3gFMrs~K$%G8G}OLhdz-y)gv= zh7ko}$(`11H1I*$qS=B0@mye>E4a#|Nt!_r8q$=tTw&rUB13e$pW0* zL1gp&&zu$uU_zqvU61_OzvublAo2u91o>CLLas9V?G9Q;!L(-|N&f|@)z>H?q5$MA z&IzD>xaAT+#)8DkHmBITGii)Yaj*844?M(KOpS2P4#w=JSo1 zYiyv@#i!!kphqna2Ky==?WmOJe;VFnfy`Fl@Py3F{AXbxH}CH-aFBx-NXQV7Iu?*R z!fMmgaLzoW9s-e11Gd2CX}uvCgg2Wu*8r+T`z#oH2X;2wH4+cpHbDUY$@5l+S zTMg$UOJM9;Kp=U7e|hR}1i7n?qh<7iwV@yN!lz16fNk`zRqy3?M0^n>xcffW?(u%LYh6kr> zGzd;}Gntz+ufc04C?(3g#Y3`p0>n2clUiZD!``E1loYdWCbd> zJ6eDrS(hnJlteYgTsr~Cz<7JqGcgK(`d1Yrw;YaqEcNZi{${(>uYU)T#&F;0pAjugUq^s5wApZTH7Bd!n^)~#KJix_A9Ica;_|5MlTU-g)*FdzX9|Pu zlYg7y6j30C`soPJ#Xg#ESs}N2&Yf81zI*`csq?Ne!L@Uq_FT)7K3_>_JJhI_lfv={MJ{@r-9|tDL=x#HUj^` zRsq3k9ulpLM1_1Z$<24!)1m($dC2Hn|EG8cH3ArCaRHsPM^W|@&>ESu%jcz{1^|8R;-nv%>nTaIwehejGS z5-(oV4vOfj5y+@)xiw-S=lJ=b*>8paE!n~|DuLhLVD_{0#;4KXpV|1y;FGCcvuB0h z4nETTCTp)WC|kZgxh_;6c1C{jqk*U$mRHzQ45E(`E{JfF6neCfMQe0-YM6v5_@lvAEs*e#fYI*m8`1fOAt zsbY;Yh#vGQ;`Yzs(Tz%9_1M$)7j{*`oMOJld`&v|)p%*o>f)6d z*^KuO?X5+|0g)!u4Ax{F@2TtJhWrDb_d@-z97MgQFEi_TN~dS`GJhRj9j}f2<3?hIqX=2~Y}bXu2VQhed+}H^XB5>fq~AGux{sWW zNQUdWez-gbwVBH+ZI4ynm8L4)YS-)8A@k$&rzvQ8YF(kgjBFr4tNDLg@^xd5SmXFh zeW(j!y3q8lgNL4)B{r0S@Pd}C25p{R7dFNXv}J61V?pv?|Lv-*uxDfsA))YqOYqR~ z5tPlQG#j#E;NMB4?xfBz4V;;_^^yZY%DRR|`7>p+xv1t<9cU9Go+(rL65GA{g}T~M z#{KiL=?sOWVTiDF0(wb8`}Qp_og*d6YCK6bV9_7d&7p`10i;OXpMiY~o94Gd=%XyS z+0XFVaUzrM7+X)3h4?OtS-8RB4l)#;CMtBwkdJiARLW|U`ksXg9{is3L^+I>mBA8N zDR__~Z5r$zG=zY+)gK=WmCx-HLQ~X}Qpp`RQ(eMY{Oi?qFN~8YQ;U&2WUw;0cqI8C zTf0DODAKjmg(xt8u2y$FPjLEoOahI^8rQQr5x0ZzY!2_30IX^DI=Znudj(L-b5%Ds zeR1#3Hd-?seWZ+W)eX}YUpl0SB&%i^VT?jE8L*&}ydc&auPM z3HDQ_bSa8b%ZmgV!VSU=EwM{`{J&NP7RlQ^v}!o(Vg($Le_VlVos?l{Vw7UR4aZJB z*BI+3{FtPM_Ogz=EE_UoTKc%NhoRN=;;AX**Bt4~oY<4DFBD^n<^P;}drtW}%czoh zD!;%}a!2G=TLoMfC*q^58LqI$UXWm#r_&MJS@z7243#+ID6}UJq{@jZ+SsvPU8pyY z(t_Sfy=RgvPwD ztK|zEIBO{zElEKiWGn~Fg{N4^BQp4>Pds1pd!F*ntLoz@-sxif&yS&*q#k!u2ewnB z$flI3C|tdG+^MchDwzp;tJu$t_Z>)YsCX4;eO_6s$Kjlqz^H@g63>_KPsVj|jlDpV ze2pJ=V>E$@k@bLDi$VIIdN}>quuXaC^=t^HEt&jNo9E|bcY8K06Q;4%>#}w3rXxKY zKRf0$vH3osgAfZ_<&ki$1c#lx{dbtw2t7YCcH8deK-%!KKtaOJ@fp=?sQ(4_5gQ}Q zyRJ+q)#?3fItoR)v9>Z6j8|x9d%4X>o)M%SrK)oXXl&qv+Xr4xEidb>SnMMz{@KuZ z)z?qZFdSZeM(xrrr5o#YgYU}Q{X*u^4-f4DyGWORcX>`MkBfbAPM%aPy=hPS4dN%* zZ8&wisn`Bz?Ef3EMO~Ro^t1DTtLK{6M$sgSMs)1z(^sErZ+R5H6~bS8GNis1o~f?e z;o+j_|4Lm*unO7)RbXs>JpQp;Oey6$&P*8S(q<~z?pZd!fL0Ik=78VuGHZ82F9Tmm z#MN=aRm|5EjjaOZT^TY@cI=)Xw18GaAdIP*y7`HFOFVEe49E$`8ld9y(vKsS?f`KY z(88WCg8cPnlG<2vVzZ)4kxUV>Xto}OR!==YN}-LN?7b4RdMCPlo_@;Mj^Geejw$zW zs>vuZP>#5CyF3hL@zOO#4cF+zTTIf1h~pPlXUPdEO3)Xz(^B@JH~*Wb_+S$zLsd%m zBwQ4(gNUm)EM~`?a6_8l$3hnkUc@_lI2H9elnNeEFn`JRNP|4Y`z8*s-s2Z`N^_#7 ztW9v$hQB30jUv=gm`?YNk31%1YxDTNr%Y9w!@l`F8_6EGNSGu*m)7g|N&<9&Wx$O9 z0r**zu}p{r(v+ph`XnY=Cc)~XJDD(jP7=}ny>le{>LE?#$^O0lE&Wt-su~Sk)%{vi zY%eF$_U3&>s8ymHjR$he@PDQ~OR*7?CZkV7*qlwp@#rWdY%eb3B5 z3{qZf8MA9Tdbi#me$Yaj+{Jd2Ry%#*EBz6To-FX5Q%{%ff5qW@lyU^qq_K$hVN$jG z>Si4g(8(0_2u&7NOg(KXjKoNqio_WDJU?y0V|fy=l+RQHCIkJ?G}%Y*D?Ch)0e&XS zDtNJkDcO6LO4)^8n7*0H=e6KZFOgH{0MQO?+pefJ=_P0Z>}8RPp(EQx4mFxjt`b$O zi41NDaNVuT;4bwI5hLAKzw#rI%pT~X_3u(G@2ODB+(m)4Qo0=*-zm;*(q89qr;__> z&fBR)Nm&;YUO(Z=uUC?<&0X5{drTJxuCiVtf<#U1ymrp@fYopu-BO6l+E}@P<@PPi zFx48COklcwere)!csb8huF=w^sQ}2qFQrN!Nd^I%YJCj;jObrfTtAR2_5v+Pd~}2@ z%n7WAplG0t`a{| zxn`?xQ>dx0USBI15f6iLHp7r4DNuI{x@~av=IO+q5W*GY~a1xqAu{y=(G(x~Ty^YtDV# zaQJb%lC+Z8lk(YuMvNVM@yOd#^?7mdrh~r@eK#n#q$3KL> z7QuQbLxv=skJ80)zg=GBxr{8+Ys5$_h|Q25v1%o0-O1C&BI3M$%za^6+MzJz;~-J? zXOVhBctw%%rq218N&I({sgS^W!zuecJcby<#CPO#<>}+fZuC4haL-lG67uih!4EA? z9q>4t7;;|V?ev79xax1m@Zi7ae&h07rliPc3UCncR0H;tL5qy&OUhl|aHcaCGX`CAc@fC#qsg(X<-ExAAcP!-#GPj{lUbXP>Z06o(ZW z#Jq%bydqDU^*MijH}gLsPv?P zJh+^?BT+xE#%rr0ga&=)Vr*%7U7?TCo!iw*1XETS3D>|4G7h|o1}CRvQXj9SYLw!d z%5~m6;7fy8ytIZqG@BQ^K?mFt;Dn`4Y=0d>VyQ|dZt4Tcaha6R&%l&RD{sLG$>J|2 zd5p28M6YB*?XYl54zK`(A1L3a1D*sjAPR*s7sd51UlnW`>)BtWg8TrvX- z_+ffZ3{tG#L-)8}oFYFfq8P5rCIoKoWtRy;4%CWO(T9^de#$_uy_f2EBNg~3S&G6L zvqQ@DwpZ3WBdUtrsj&X1uge{JZo?W*F{mwGZPHsZRR4W`=gEj9?}!`~5~ZgVbcMQ^ zKR$ewgFM&BePZ}S-wU&Erw6~85N=FzLvRAAOztyUo(pH$`qthsy~5O7m@Fa=kEw-- zm4*cS%S-kFy%t8hC!@$;$;VCk&F{*jW>Dmtd4Ac&+yMGrY(zs4-c#iJ)gmR-yZ&ld znhaS8q^C6G^B~deyDkpPo|nNg1bx5yVv-x>c}wXRi?fNBY^^BfFNg^tAmk`^WWW2= zItUSm@)TrUQjXRAeRtr0V&HXy&pA=C8{DAOnSEoT{=2mQQ+2#qkLuX)Q(BEu$+%tU zDy;@v48aI%GHo$A;@bCODk6?C21$`|?2P=MBzR5IFFrVMLE-tT#g8o(pnIIN1jwRyH%pw>+n`newFG1AXe zOIyLDGK1`~C?70bHz^hbunm`ZfnmX$(QNCf6eG0GwH{~l;1^A0_kzLQ2Ld3kXGT#5 z&uL%^ab>}=aG{1Gf9??REG9;xAnK<@y$**9Ams?`d3tr}S7Sa?WJLT`lW}K{W!Qyb zp){CrEKe`G1a4Le3uU{9Do-1Yz1?P+>d10l;7>Yuc;O(UFcOuj*kmO+rgnLKnWZm1 z0*-k;Iq*t5Uuzz7i{zFRm9V@KiODmiu*CbR>ZL(EZ6uShmu0W`f2UX{f*cX$doB%& zS`^CCwO-U&%B0}w9eTP}Hd%19Tie-0B>4N4BSYMZ z3;5w3k1y}EINX2|KUq#SF0>v{Avgo`%PT08@mHEkz=$!DasT!~R!!e8KfKRCiRouFhS&cug%0{Q9`nA0nD2TLz!S)#}uBlZZJ;Lw@2ari18{Vtq*M zl3IRWutL+zIWxg6$BBegpC*LHfM{YKupe`&cq`LAmPg3k4aYMYT4Tgl3j0{2TbAAN zjO(sG&THD!<-;ICPx?KT*HE79o;RCscd;7RhmrVaihAfEAzM$mAR1SB7GK{ zp#krn0|ig%o%@DJy*6Yn^){Nwf(zSmrnq=z{hnRgmtWeS>-_4JDnU~p7+)saf@zAJ zwwSi@nB^<;(W(o>GnOwAtP0Z2B!EkveiQ$UD*{~JwkJ`x=DvDX(6xY4o~gBvzlv8n zz34^S#3&i}DIM#bbT2rOG%Hy{ER@!c$@Vy7bze{4%W?!K6wU`>;Q_BerNZm1UG*g( zz}V|)f=Fx$Qf6>p%Gu=?YQA~`6DPpSpKLvOtfxX>~i8RvmIdW0JS zH}no#jjwm$ICg3R5rR&}XGdqD&8V%vYUX1B7@*5vIm-e zNL*tO#E`=oCg9-+uO8y|I#W8iu>a`>F09ukb@DV+c@hF&?1atn^Xlm#O^{6pylfADX_28g;Hc>8_W zSkX)on(uPyesdyjAyB*{_r)NVRZ>CzSSg|X+Fa;wYJ?Y}ROKO=rU~xX>j(ItBw~(& z?BL`JU6nGDPGA^b_JnpxQC+apC4DdXEI>Qo-nAu%!0X@hWXQ3S>l&SIAJpHR=FUg@ ztUc$yZHdin2u}o#VmC+!H{r&13h8Hy<44Y?H_-;c?mCifEi=uvWOJOd#mhfNV%<8C zJx6;7EZJ{8=Evv~fWufQb-D5p@z0p`RK+Y~c|0Yj*)jO3P2S|&HHEz@geTH}(@fQ3 zO=%G8odw1rl(x@`2%xBew((R*BC#Q)u31rYpb;WUOwCWl48@in^qH!#TMb{MuFYiTb=W~W|udoH)dCc5tedk%p46so_-)S7Vy3-j%R)mkn z%%cTobY(s{Uu$B;GSpZO?wc=_Yn$G%UEoV(c*m@Tn<#v&z!;FDj$c84^GfbQ@s4s{ zR*0M0cK0Q4;+BZ;IruhA_h&dVYZ?l)6aIOqqLARvu(1sPCGMV}m;WO{AwwmQ>afn>@pD zntF*Pe0`GeNA`BE(^SkRjIaMM{8&nIO3h5Fn+J=RS`XKX}; z@BwR@xqiwSo9#igAv@Jye_!6LerR;p9fpE7Oc*UGP-IZ^dG5s~A;6Rzbvv4V4%%UIUpfoP-llSs^LF+zExOQ`HFHcR+o>MPq_BOaaumoV zTG{cQ{aG(@@w-S-_7ru!k^%WK;a0~6+Mv=e2O@A)d8!T!4_T*Snr+SsWn3x9^#gBe zEZHx;qj;&lOtpj>iOrLaGea0%>%)PcKSjIC4#_H*7$5chd~t%Y52Pz@CFFWd8*cctcD??J@s4hn=V^WH?s z4cxv0=aNcb5(=6CBA?~K^L8*mc+a%kr0aUFanA?YgQ%@zirZm>CKRS=2Qjyxr$A9F zGh5a+#5hOa)B8SQJeF&{rI$3T>ln3vYDXwn86k;?Ho&H?HSOm_*ym>|LoT*ke7zE*I%H^qF%{LNXJ<_{>NrVLVGZe5-io(3Ov(CCLY>T=EK;pjB^Qy7LLC=8oXqwkSCgaD=48KJsq6i<@T@`8)SH+;5ChKJK2>Ms1YDNLhGT4u01bNMo<&6^-> z4X7-o@Qlu)#~b&|g$QXbxA#MC2K?9-q9)IlB3QjNR8<`^;i0J32vh}i@=LyuU;h-gUV5-I*o%Q z7GdDdv7=0}?ST-y-TM-(xGtf6aJXd~4 zpp1!vY1Pz1D&h{_7^CFc2!E`+#3Z4mNuOJCQ^=RH2A~c-MG1vZ-?2UU#fG^BT&9!x7p;xt(?#T-Ijwo{ zzpcWo$GnZ1tUfLe96CNhO*p*7nWciB3uYBO`s@vqQ=X!b;^;j7@kt5J34ZcNE5!BCuS$t(E2$I9&V;oS3Lci9jpjh*?v^&}3ZbeqpZ$ zUpk7r7Lv=GY7mkXKU=>?1IlUX{Kzuuez=G0MdOUsPmkZ+&11jRV<0ViU{U*<=H2hd z3G0|}wetvXwK7FpHPL0UJl!&*E1Zx;AA0l4>Fy59wI7A>Ou3d{!Z>F8g;2{2^?Q-d z2}s6E>B|;XUHnK;GV*e~0Kd!-b}kGamPnu>Bv0)#JZslgxty_l{mULMqc@OKB@uRs z#2vCrA&5v~;7fNV0SP?v^8%Xv43Je;z<1ez3O#>QU zCQdyNzXI0pT3r|Y>ZPhF)gy6`}7^ z8-)huTeagPEKEm5zSMfL>sOp-sb$~cKwj+6T-V}Vq)y>4+j18`COQ$>lt_U3>#Yq= zdcjah!>jgz%G4Z=2=iMo_A4~aZ-mgb>F$I3w+KxzO~CvPgkFyy!LRD{c^+RXANBQB z4igWX=4pTy0xR@OCQI~7{z{M4uo^Y*6H#WVytm9v zYKet0yIPL>2l_?5&#eaP`nU^?ME3-ob$fe#m}v<6Y`vk@{Xx`RcaY$lg=`MLw|4H_ zt&`{O_gV^vmdC6ohNTfiq}$c<)(5JS2sA;}wV!rMils9M_G=#)XOm%(jEV?FSdJsc zvXtqLtLO(1=9fvZ)-Kv+vo%IPoCqhWPZ$7?&b=<|4lNm3ax4In!GZ3wRBVK+~(SKZM>7gT=RmAAS7cp6B%RA!VcgLp&L= zRuv(O(piE6?|**lqPbw<1eEi|DUszASkz;&(@C zB89-eA0Hy7Ut5yToazs*fgh1qI!=|+6>f~VKlt5}_qnWYZ)0K+wNhanY~pZ09P zN90RqXERM3G((}{-vRj7MEwq)9kA9)kpp+VSlNz-p@y#CJkK0+BY%uS=@0o5&4-MT zLw@vS-otx_4w1}Vg2!m^XmI;!&}_$V(Pw}vsLxw+EcbMb1hZ*>7ps;?t{P)xUHWJ9 zKVpF?#YY)!r_j^MK`UuLAL5UpxU`6A7Lc5*JMU6>{EI+PWHa}xQc73O5&m{ypJhq6 zTlclAFIJeKz|e-xEOnU@%ay8L#v`t*p4Ll{!e&6>h6GEB-^VhDp|owoygyXil-v4dzZnlnv=O!c zNQc@a=BtfHMf5FIdhvt{pc_q(de?Du`4TX%3;=7eL_2r0BjD+mj)5DLih}LGwPx&PNw|6s^rb;FFeQLJhbu=IX{r^xrfEuYd3JGFmKm`q%9q zypX}Ch!(p5?Rt?d5u5H6!c|QLZjR#@=uvv%T)x{uQT4Reoph{mI`~8z`t|fU(mtNV zjxyu|m#qXXp@iX)RN78xGb@ctZwLb4t9RR}3kobufEpEm2gQk$Vi@uKs2 zbmcneJOuVWwV#nn0@cNP7no4(kj?nD+QiGL+;yW}P?3UqC(8ePyJ2m%V}G70sp@M| z^rzO@me&4H3M?jkGw`JA^DxYB=B}>DQg4r0FIg02RfLRR(n#6ul*on9gA{?f>F|&q zU8rVKG?(_QnIk7OMXb}}Ya+t#_hT5QMuk)LRX^=7=a|+Na9}l`Ha)`T_uWz6kkOT3 zyZwDg!G4_w5+@S2!i_}Argm?vr~{oV_H?@C!yq!<$k7D7M9lKH?l&+|S1nv0|8~#g zXkbc%M~;_1iG2JW`RtofGNlCh3$|csybMO3S3W&I^LNpT-?F=QO`3HTyMSn^nGE8! z5|#m>(WBca#_)iW8y!@mwqWP-P2%RQvk%{RgO5g;smHn_e)~|!UuftzJ?8kxTaQ21 zl9hUXogyFqJ?4_|W2M3HWIa7HX7s)#$`PIca!DNOWu&b4sH)}B_YQ@#u5VBup)-RX zitqIqPO*HJg;`H}BQ|cc?|%n9X<8WHsK0bCeB!B&-h)eXvM*asNB33E&a^*$J-e+V zlty@%Wj{hv5eJ%l!il`RMF>s3sqjm={4dfR($}xfQrO_|df|muH|<8hK({HVcaj`L z&;FQ0y)m>}6?`Js1Rd@ega$O`SU%c)ld!S2w-3=6+02BbfHWB?Hgwq%c50a`?tU5qAx&%mU)G$#GEcC7g^zJ?o zI=eY~B~Ji!L4fi6?lLf^#wWnb%ytjY$qf83E{pRSQ&N37CYUgXhBxhXjIDlRonc-t ziON>?E_D{Ss}SfGGGxB^}9O?8$}{a1$tkg-*%336oi z!e=d54evEeA*NgJ)1BTGt@!3O5XysUusjuosSUl%FLC_lO`yx{LuN1Gc?ER+jQXlG zq@E@XU}~yFIdppe&fiqz)HM73;SI+Ss$s8=R^SN`B;>s4Gh*Idx(7)P8$j^;NVF6J2VuuY!YMLv zH(sQG!#V~I^m*@6$s(})g?(Rm{mjHxu$+I-w;MRhvDz19J{sJUE(mWq=BWZsO4&v) zhwE2rQa|Qm!Yq6?gOK+0%>KBx57ov&QlWJl9fBOpSXEx4j@9iQ|7`T-cCNbaT;JK5 z&5|AH>m=5(S@nL&P>5ggohqn)dihMH`>oHKtBro{WfM@Kd}0W4kZpsWw4fTk$7m-- z5$0s4b^D~gG!Dc27QA=$uF{PSiL9DTgoP&I`3G6mfi@%V;eC^ub3t_uH&j6@pL)-l zR+*;a<4PoET1#0!FFR=erEfL}3Qj!by<_AE1yOem__|A-l}#U*_Q4r3$RF3J!+9G^ zjb3U)Q)MAnEJ*b+y#xlRKI^-VVRVO-XEne@prnc5vIBx-cS%I}_wCmjd2-aq4w3qq zi1YITNR&e*rM=kQ;0I$-8799O?fKClDxc`pZ-1jtY_nv7d?JxGWog=wFC~;04aGde zJd3eAXTaTUL?#Gn1E>Yxv0&%}2pz*d#7>W2!bB!EKY$%cJ;?5R*$Ig0 zxd-af3A-Q$`<=$D^8+d347X#f~klSmCX$iLK5C%1wZpnL(n1VAhBoXae24#a@B znx@*jCQO-R_9DW%8>vF_k^JNJ9=nvaYi>1*EG9eEOT3=`atGI;e?93-{RPC^KOyjD zI|cpe>wA^jKRIb(G8{+&kAn4$kClI675L1q@EeaoIEBZ_O6OwVrwZj!ZO^anMnZqe zrE9b7QK{JKJosYdHoi_XT%^fLdE7s|uIt+@?q{>{H+grM*Tdg|V*KB=y+i?I3smGg_pS)hO&idt` z%#`>6y+Up63@18i1Aepuv@OGl0iz;RpSKvBU{~^Oyyqg5HsvSn9`PXmtCbajt6-%j z0Y_mhh1YtqUsU_c6AK&DjL; z`n@>zRwaOgl?^+6&hdcs6mgxJY{ZGgk~K~?LGZ??)_IYU_w#>(VUkn+_$SjUfk)>e zya#jL1!%%&a){q4z1O-fC{h3P+lRo`(@&8Q+H-cN*@Q|$@LJ29_s|-EE_nL8T**tA z2Ne;Ex+jUiU=^f`;E&L|jV}?{EFSzD7q0vT%cczcqq#j_uE;ezpA$SaOr_y=7i$$4{kiY2)t{@$)_j1&c* zc>{|OQ>Z1xm~mhB*GdKk89f_n3tgW=19a%iw39YGgE@jy4yu+mifd zYsQiO%6#9OJ==^k^SmNKenzw>_v`nN&gm!hyYn=Pt^EUw&N2Jo6WOVR$)E=x3w4se zz(i*UChKco|6@0@R5Cj;s79eWG=+TSg4QsAK8P!O4SXgRL0mzdeMed6^E#Kw6|%+G zP(L{;Pf=W@XwSl>mH=XE9tM4%%zM*?#{?$$L-cJt0JZH@6 zIS&0EKMFnp6g%7)g=lHZ1yJN()vs0~$`)+En1i#WHm$jf-pfxekgupR?6ZEUn;Kg& zy+wu-5lR0!lR0G-*XuC-QkX;cVm}o8sY&B&R4o2K+O9GxsxR8Z44u;5-7O)Zf^>-> z9nu&uNH-%PNJ)bdBA|lO2uKc{(h3T~(4Ytd2n>So&KUgPdf(rY53V)$o^y7befHV= zxA(oz#z*>s6p?Dk{BFhz$AivbY`{zX_h?2@)b6!5gtKGc&iv?NxDGf+O02qw07$ky zeK?7q$3$Psfj|+TL^j@7E}E7W06@x;t0wm@awc*unn8N8FEPeTyM7j+_RGh~V@EB& z;PhY_%pN5EGj_`DTrQw)v)>^QppclqV7$-Bpab>5ozpKs20?w{;QaH_ zE+$AL84bg357F0F?1N;`M^KiDRcj9Im-xg~T5@>Wr0i_4M6L{_zNh$vru*fOh}ilckg< zv1Morw#6{F2VA^SEwXJ-k;D`!DA?Odt-kL&GXHJ1#ptX#RCx|z6uoQeT+{RSwQ+!$ zF4`rQX1IF0ZiQ3T&>Wy0O#_H2_$YVCkT`Y^+BIkPg;D%)Cq$v6f4pLn)RW$1ySkd-pLW!I zTk#K}5Mc5L$`VVWA5+4gW_L>A6{JwFZijq(@xX)5gU3FmUGwQ(99H~{(HhVKf^g5w z?eBY^Surnuhj3}e#(&S3!5W?y+JC`V7F@uds2^rs~Fs~>+rWWi756A`B%ZjxK; z6(zAwDkB-GkoZZuu^zRSh*!v%j-NqQ6_4P0y1GiLIMA;6UU&E3>-RBY&$$mGH55~0 z1A-Bww2TbbpuJTAk=wBdSj6>&PmNAqx70jX$fYu;;x+zIm5u=o1%Oz9G^3g}@cf8f z?I|hv=rj&mp>iaB^zpat#Rv?r2g4u29}+5Fg(k_#HvSP_3MPoVOW#p~;|oG#)0+5g z($S1*AiJP%zeg}%k34D7K0Yn4A8Te&yejnV-*mr&V!H&6q#QCcyMDF1kFHFHWAZnt zRmj&rEcN_6>GIes(_(m-`|hu;rvKT>Z!y>D&60v@>@! z|F8}hXj1n#OkT_!FPX9~tXwo9Eqhy-9 zwi7toUr4|e`6#kTbn(dAGlol9N1$Om_5zh@isWPcMi%By(tq9^M}YVnb$t#+ks4CF z{8r%=?!IptXjWWD5_Q7*=&RpWixKvAgbW#&5*DuC+n>7|KzobO($!M1(kn%g-}CWp zGjhXI`(cs+b6Q;mavi4q`$QBveKnCWJP1k!v{0F%%iqb2R)D#o&c}PvV5^m20&=`P zhPN;=7kw;!p->uiG@kIWpw?%2Z#WOa2oe`-c9qxw@^3R2wL2B48wGP#hyKWC%=Dtl z?J;ytm>feSd(#C^?U32MYUk%r2-nyU{m}s~R`M|qv$W>^Zs;OMaC!)^${%pTnt!i& zkmq@JXZQ`m9HJbO_=~ip)uKpG2s!3*WGbnMP|qt$7yY}PQ%d77G9z$|y=(N8QfNAV zCZ2=$Mz&^N{SEq+AYS+v(rXc}GErmAaT}~-mLnlUD>8+D3_;2`#&9)AGhDe{`+4py zPQoVQfH!9KNxtjgssTR6Vk8uowkFlxlaLmLH}V`I2TIC*x3#Un$f z16gh5vM)!pzj|j|fZkFeaxQV>uX;Y94p@RInM znB!RgaK%Gx^2+eF1ogkVa)3E4o;WA+RObKYBXQuJZzQB@>V?xSkdySh!axl#u^Kav zzta8P;DR(PVUj|kJG#B3s`5qNcM|o=L@NGxR0uf?d~7M0Cc+mfVduGXhj4$km)Qo? zjQv^U3dZ0F1Up(x%ey9pL(hpWMY!fVf|Nn3^)-2+f43 zSliA#uOrc=yLKs0^=7I9T5Zg(+6fSw*$e-nD`gxMdK8`BS+cTgxKebL&&MjcPv+?W zg|{ajh0AsN70b2N@r#P>tM(oXucJQn{BaBbE*B%V3-SP@{|&e^v1X~5Bs`y?>$hOh zfP>2S4S`hwjvjUrxhL5-Z!*OFT^kKx;iSr6AB4h8`c+#P5x!BcIfCKM61UwerfW)y z`jZaE9!MLFgWp~vx7IilU|&htZx=*EyLO_#Lg*(G6Y!FjV&$H8XwIw7k_g^+1c9XA z)N~^_6N^p>F^58^hLBk1uX^cfC~1y%0rHsDE@x~?F|Oq=)yBMFEA3k+wuDoG%?HWM zy!YvbKNZ8UXyOkgidRyoC;QScS$I$%OqNvG`QjZ=G4yAOflk1!R$|B47$D4#6a6Mt zB4sXj)?&Os)+*-CxDdh?Zb>++&gVBV;PsDLTImizQ|GVMh3O~Hj}A1ZWK@=Y9Bzl* z>9Rm#2iD!UK^WO${~cet0bC2dK6NJJfB|u+*^Py>%0@x^Q8t{z*onO#hu=OY1>4Av z>X9veRXjk?|J|@DDHvC#bpY6)<^jX57bXr7_6oHAG)}3E4 zSF*o$t7sX+TQN?EUe9AjQ^}`w_fEG#Ag`xHtvOR8fV}c`a`9&eL@wgX^1G*^TZQSQ z=LCJgB!;1km_j0Qb#%lU{tlM>G2?904Uj z+UHhG8p45Q{Wk&b;Ln4YAkOiV_{)sOEC{IDtQJxq0`|KGEc&1MG!nauE#fu< ziVc?n$mm_@jk*=dXY~%(=dRBVgQNbRQkRGUOorPG*x(O9{Z)KpxJI}oe1<^S8C%EG z`=4UEg=1*11GE>J$v6HZ&iH0sc*bNC$W$_oKmnA5@q)(TU%gKe#3U>Or+UEMApPeO z4N+kbard0Q`-^nbb6qsn0y=z82NW&LOyUZ2EZ*Fmy^?pytZV69PKPHJYWRzzVQrEM*{`(tc8I@7x`7Rp6V^=O;$~^8((YW zul3pzMbGs?Y^2W@Rt8Gdit>UYogYZ>kAZ@ls&~1202lS>d}3n|cN}*Hl?GP`_XJ^d zFc$cX+3#K8@OKw*m-qoT(nxy>!@{q)J}$#?FK#N{gU|Nr?w<3}XdZJOUI0iwMjRdZ zQ@CZnmlU!2E$)B1L}~>phd@-!=?xYyL-fEVAyNT(k<;ByIZTT3FAGx^mq4hpGX4g@ zkDz_9lMG!qf?429=7_leW;p`0;K1Mf!lI54MT&Wk%+Iv%1B};yw8&=!7g_k>sWOas zA>=v@ReT_a6V@n}4z}#~jOX;Yp+Jne)aMe6w|%kVXHgR}2++K~>}(Ox{ckI3X_Em* z5-9&nB}D^OLo$i%^^yE+y{G3hrC9;Rx&7%{{ELJ&H~_|899giWUwFD;FtlcJK2b>^ zW+JD1IdR?d79XuqB0~!^?QC~9g#T%c53nyEs$+!P>2GVY`qMYiG>|nU(%wAZI$9gI zh+Ru=%2Z2{Dng~{)k~GG_*Km)xJYAH6(+I<8#h` z0E8HQzb*N|*o@4|02zqHqeV3*|I<3-Ca{G+JSYB?s-MwB{z_X6B5Opy5X1zIzw;4F zo^pj3TTE)v#tOsh$sgFVG1aB;22?y{cDP} zFa;we2f7ju9t9CLU^gTxhS_lpCY-;GsRt;@_@kj|UseNxp{8CJ>ZMYf&*fEgAH(Vt z5_47lr|L+>Ny7?c8$J3lXx-^Osh2FAOfX!Lfs zq<;INhrmZ@{e;p$eN+(K?w_CVCn5H>u%F;(F|nC$7h7yYV#2Jx(D!rwO-UJ|9W@eh zbtE8tgX1e6FI)Sr%q#kJR8)5;k3`n2GtE;nH|>MZN2bMhDK#T z1SYSu9nE?K5G2Tu%c=wUJ30tbgpXsxqkuO*uAL893u--#-ewP|?OJL6)Hrr$T_K*@ z5tj9&%5BB^H(E*^09zQ7-gc?oUcKHLQ0~kz(zx>ni~=6{34FFR$F~xn{RCh%FqT3z zRn0oA6O&%}{YMItZ~|^1mXzp6B@q!*6W*An)cFCy7Sj-|I8`0K_GSIwlUh6A806_* z9cyL7J<$JD69j2sY^u!@lid0&LjgUbjp2Z(jlxD5H2HB zd;P7XAfQLbtr|9v3R7kQhr99UK_==pFw55aI& zFDlu5f~gw_rVAeB_ou2^=^^Xitnz}JF4MpBmRlejP~!On80ws>1@HF)E?cK7rxsrp zg3*Y~66460pHsXG+}lM^e^9%Jjl6+qH9?brLPq%Ok~KO|QY>3~{@gyeVx@ETj!~;0 z>*J~$fBM`;UGszKyZ9ZQ{HYtPD!k;A*Y0qw`7aXrws(lt2<xLK*zpx zLdg0e7vdqDg|fA7clVJ)VR#m?4G)e^-jn_bLSn|cSB3TFGpIw8MqNiPA%+R90RDR)VKTWR zw7UC%N$*_tA;2+sTNvw5vNVA+jL%3}=PL&2LkUIiYB*1<;(;{ipGS?tK;2QJjFE9W5+I7FOhUp|^tKP`hgIfX z8FMqwtMlKP$1NZrj3snb-P|JAwjFT!3;P@RHQRIYOmIP+*^6vP|HzscG$m~I|NP1V ze$7x?BHLg6BnF25jYTW~_s;aJGUSb~t$==tt1 znySHi10US=%P>;C00;h7Uk6&`t? zgqM{g&b1~5F9|#|G4zx$IB%S&jVb&!;gA#06pSht@4sQ`6kbCl58|%mkPE92sqwigXp0gf+&&D&;jB=g-i2tlkX+AFU_7`{a zVcta{gyk`s-cs>DaSFI#H+-%$P4t3SKpr0MNF+fsjYga>EinEYU>q|^pC=>A2braO z@`qRvHF^ck?MgeYo03_ABNH$NEH zOf5QJGAW2u|C}ME)?gIg!5y_=Lb+qoP(kup?4euKdmwibac;K(;9X9jnpq#{dV&Y) z#t6h~W6?!;(Np!mCni&Ik?j{T06^RDz4|JpUEoX!=dEPUs=X{YXROxO1n|`O5UA3^ zl7?p6ggzJlOc$yPB8*x8Eg2kdR&Ep14@FzCf-k(9`5MOZ{Xac%Lx37ZZ4e0(!=}UD zxBOL67;?UKxk0xg*gKgje1=mBG=X?+@0r}^b8kY+=#4N|rVdqVABqRriFnLI9gpZ7OB$57hf)+vXU`iTD1YL$My>h^@Cc%9cw?A2xOlI>u-4vr70?y{G zx?NL0_p=auW{4yb1I(O@m=0XVxz(Fjqp1j(ahb1mh2k7Q)bFk(-+`|nmTI`bI@ ztgQwtRDlvQhCAQKStUm%=Pm~@5x*O`fKgfjWe^VOuEw@6KF^mp$T5tg7RAr)L z2e0G_rg_!$r58fzC$Vz$yEddz*7t=Wts2B};IvP(qu48$-m;ykOST4H*Z_BDcO*7l7nWz2NRgSG&E7zd0)K2$GS2ji<<0FJ8-&S~qilbSTRi+||5 zgy)V^Eg}4^kEkL@O^S^(t?Vh1supJ5o%h}wbXT&G;PHwOy9bn78Zc8!iz?ZH5q<{Y zCEIOm&Qx?sSqd|MZ~87e!5wVRqUQq5gjvSB_aS^tFK(;nF~!*PV`(sJ-O|o6EI2&I z#&J%+cLYB!al9VHrE#I#Xo$?QVT`U0;EWj822+d^iDlR5rV!E+vCLE0nG)#kd3RC- zPyCX8HS<^Xlp?jAoILJiHmp2$Zam|wXzt({ugv0~3& z$sh*hTTa7^#*p5$+IYn{v%dSbW&kD>zo_8B)ZyI&nm4MKPCgw>UG}G(e!1-A<4KKj zjQV(jmK1AC)KA1dH7;25a?~AsH%Ipt5X6ZQM0@567fvX_Bu}uO29+nx`{2kUD~q~$ zN`G?HMoLEVEs5V7$BEiLm$mTyWfRqMd}Zp+`-wQ^Z$=f^OyTo87X?kRlsPks<<2U& zN%NSc!gaK*2G-n4rmKugF>PLo+S6AC)q=}P6LaDDW4cUxZk|wWOqT>Rh8tAFnOXO+ z&1ClH-og1ZAgJp!=JV?6*bmcx9jY-~Ca+0F;C<|tY%$uaC&uYeD{mGAEtxW)ME<7 zsRWI&SO+AGoiAuP5h1?GdbMMS|CYP5t{a5|6 z!|gNXyJsLQmxAf)RcMy zB%mrNP9$fWd=y6fRZx-$-Dj4O66?mKoq`w0%Gg~=f^W$G7Tl*(@Rrv1&YnU1N=pnNsemXgoDl334{p3TI~({h!6r#a#Pce z4-!Nv!63&D+z7_2tdawsB3#7mq?O{?Xk5~$oe8~&#X%lYOKfDk?;C4 z&ZvnqJ%|;_d<>xy%+Pt&M}U;GxIEt@BQXRQ1!XFjq>xtngeFTsE6oyR1?OTDGa?~` zUVhg@7oeT2uuiC8uJPX_9*8JcN-3>0AB;ma$thNh|i3Q2vn__~4<60zkb8MjaH;l zHb?}0#t%*ksjLyPm^WU@#REQiQrVP-Y0na+Z$hgLkr72i0*MQ9Z$(sep|m1+4@*O0 z=!~hME$KUPc*#r$noHwhDUW`6WBbv<)#GC)^ZILw`ch|_cD^Lv{FPBR=D|Uy z?d$rOyF0}39cvb#GEsQ2(Z_Q(JSiBi0)0qTHHF0*;%dGs}OuDd%bO?mtFDm_)u~bI^jXD z*6>zQ-r5ri)m^<}FN-5D+RsSk%P*sY_}}U6_k)05jrkH2cirJ9cW;zFCoi3?MiADe zDkr{F4YvivqjJ;45DYF4j%dX>;IO9@htT82V>gCR5xn7hPHLvrbss6PE6lgZnzvFh z`=e3m+D{PjSM|RHlMe9Zvxig)RT7H_GbIH^A%q;!OmG?;Rvgx6sZFlMEw^g`ifEr% zHLsI!Q>!bldkXFUtQ>9ewMaaP7nGv|xVq#U?vcGoP|W5I`t0UL8~boRnU0Hz=m+HH z#%-TTfG-`yOkcJWK~Yj9QS9)u2;TzOuv^zgbPkFl>L1^dwS&M35sBS3^GI2ReBVfkxA zm-CqVP}@ABE8@I2*pB6$q>)EqPzpatFV-3va>vK}J_+ijS^kJ28K3R_5~Mlp&gipT zDfLaAu2zH^L^YQFO4qvH6mumUK|Hy`ohuAd1C2}iF@~yzBuos~lr$)-E>Scc1X{gX z!mpZNE*Mw#b93?gI-RX}iOwV7l~CwgxZFuyDt?S72GfKf@!+11VIDpSOH{p^5Lan=)-Olt3n(z)iYbK8%pyp zX=kFwzQ4?D2n8tE{CSj2O)@Wp?RjcF&tl?m2PxY&4~iA(Z!JSokHBtk*l}r~GIZb-@UK9frA2?Q!9DV-0xPy@6L_Ww> z&#gMwi6(a?d3T;sZ9dcSfkDEv%Z_sUIqF^VIK%Arvb!M)iJP-a+xRp!{EED`vq8%Z zOj#rRr%C2-=6km1)A4+THbDHvanXxb8r?H&AarJS?@YHGNyFI)^D_7=KclcA6%#rFya&H(< z*&C)Juaml_f|+@=^s;N73qM=I>r-qfQw zyLwQR>J>f#cOcLWwx+%HbS<>vEa=kXrCZ1;oYm@Z9+`I)tes!pIEaWh7PZW{Hxv4c zufDw$8lDssNqcjmD+HPsEZSMsWsSA9*q2fvB>3SJQ{|M`-@VjDh^RumvY9t6$UL;n z>$oQ%{}B?#3xiU~!q^YRy(Y3>QfI~p^Q9~>Be@|O6V`syA3X~a1`!a{v#cIvZ_oRl zXZNLH?78vW6H7mL6B1YMT~6c+KMsGov1mbCHDp)33%JR8&a{xP9kW$gY|DOLMd2O976|AZNoDnlEc-u(&&!R57zIOGXu@yd!9t^q z&Ni`F_a55V9$GSWf){j zl_tX|dZBUJt!1LBc8tgSB@O0eRPs=?o^VjZlpKBCb*y0+wDK%GbFN#Rh=tw8Lt$yU zPnxqDXRdJrFUwyS@&xY8h^CM)#|qUX_A^0QZOeA+vlKIX@r@3YVk^}p+~E(7k%vt% zoHdTU!t`>eFl_L2^N)`u#nER-uujvUaphYziRWSXHwqPwXh@r}bor0g zvtCl5SJ{UhsE{uzm zm$0E@G3{XRy>phX&$8o%D94@idqUMaqaaeR9NLePXI5vJS`Lxxz zmK>kxD#6d}?YigvZOi1JnD=t2osb(hqi1eF;ld1C9KB}_U&A%PXHTcl)CHW~^CEi@ z1`|EMq{;nH8^=N29J2~9Oa*q)IGF7M_L)|l+@ix?=y1sOGS}i<#Aa4vQbNQJVNTBB zL^pF4(PQ(jkDt+WoXS`<0;ldR7hSOZl9!rHg2?2vqEXicZ=8JJxWHM?F?jchgM8Rl zoBG$j`x4(3Ettoo>pH;q8&QMyrdgjU3@jJ89IRgk6RsH)Xke=>&S8r>`8~;^p4rR3 z0{!(X{A{1qiOit4aivDLIF~Ox|LUi>Hp_gz)=b62v7zUstsf1YWF%r0!}x9HNt){n zZB@NE$%o&rZ#lk8Aqf-BqqagJNBUpaWy#~&>or9b?4ETPtoQ*NU^+?u-HMb^5)fY(~J9TvUiV~e3!1;wOt800K3uI z9d{MGiElIbo4PHTcv{^P z<9$>z7+|J_Z@mv(>6q}W09upYgI!n`d`YG&eu?SVr6}3tC0@?ep8GjM--nhVyTS~Y ziH%JAcLL2!es}U6kyOSZJVFS= zgukCW+A#60&b<{vq9YGi_bne~45M=u*$^6eHQCCyD-m{CIRX!2%R0F>IfUQmB?hOW z%sJub4AsmKa&vrG8qngsJ5O>NJlq-MDloic6HB~hK#8VW$rWo=;eA{XrT$g%Rc3I3 zZAjru;=SW97ba>{!Y<^sf0DS@ln)a6G$C&hB zuSQDIYty4*7Mtp_1{DNv38uRWbjJ!76aX_J3avgD2|!f7Gug=Qu@*n9|?dp002 zYphUMs_gL!?>E1*YG3Vl?KUSFWTg#ZwMa3SwTLj$S~Z~Pr3S} zL_?g5lk^!kjsn6}g+aU`WzB`gdfT}ghnH_NT|6fy%JEYaZt%Qp&rKU4)+QnrX646^ z-+qn|EiX>49~)?_{*?iuJ8U#b=~}xqPu`^;Nzi;r2}|@-?f-tzBuC_5z3ju#YZ+bu z4Q36SyR8!HL3n4kj-E;x+;P?jd1yC?r&#B?jGw(W5YVXfJ>VI9CyWdrCsRs%mdn%D z`#P-4j>VSUxSbS|KBSQPSmY82Vxm=$+f)tLcqu)p-Z#e`&3-4lR>}KO z{Dw#*w5my(7}_vNb+{yCZ?2Dg4H{>9R8tEKb<4;VhA}bdL)%`JE^a#?W7Us#U5~Zy z1kJ~^W)rA8351^|b2ym?CZ6$Tch7Hytkb>zI$ePF-W5Vd(Pwz;UYog0mw2SnQ(0tN z^VmhGZVt5cK+O||$f&6WXEL+>NErK8^*Rwj&VFSI`1{vK{07m1znG)mX{1i`JSWT2 z;A;BV^-U~qtXQL`_N82Tq=pAbD(F`2jfW>)^7Ijp)gE5OrcE1t5hS@UEiSeI!ic?8 zo>UWANcfef)GrQ>Dz9))N}lFA(uOr9@S!YU{P6r*@d{7lfsPZVuvc=03U+3dSWm%o z&{-9OIDFJyvwUYIAjWC3Lr!w2FnOUBbZ-%1vlIWktnWfkdP3`OOY^dxn8985u23;Y za5Um6WxY)l`S{ZIGeb1iubNnuL-HXWds#na8308=o^^ZU-4DgJt#Y9nne|aAM}<1` zatD^z5TFI#OT3-ZPYqPox5BOUub-YzWkChMnaOYxgnRG=KE?4ZhSR=+yO9v(T5Gp> zUMznKO=3gQ4tkhiiPF0=t&fo`JkH9Spx|kx#kYBu4+^5*&e&Lj>29-62 zDI?_q@Er`KT-g_OBwBlZzDQR1oQ>Zsg)5NAv-ow@vvb2hiKyE#Pb67)3qO=0*` z`Aa)&&pa+-m)@Uj(*Dpr^7C!Q?7`f@1EO*t=I{Azw?c)z*bhZ=o##lbtZ3F6;e)P^ z+*(Ja`znbk&hne;UeLQSfOvGu2&b= z!pS6R;qK0Ub}uRCqoDH_n|9jNax9}vD>Mv8Xmovv+Mk&ElZW)NQ@%=G=pMH8WEo-O zU93lNg4XL*SyO03#?sZ#=GyH%iQFaiaYN3?^-#q{86+#D4QmxzhJhGS`M-_-cJxkg z;7101rY|$;td^7u+CE_)qGF8Nzu=#+LDI86k9SJvAI1>Y$%wo{^nH5^n-%Z#0Q&fV zz0*Y3VD!s0#XOGszQfrOe0$^7xA#Vq)tgfXRimm^wTu zf#VaGPH-?j%dFxvjf;ENubRx#*OpC9I`ZzwkW&Fo!~{hqs`b^{R@7gX(oD0< zDSq*$^H|k;ofjpW8hL(DHtxB)`yRZ#W3`nHMEVKt+>hScwUEQ-lUHOXcMOJ>C~WIY zd`cB@?3sSe_{k4Ll})0l&h8M_QZ^(;wbX9iDM}0^V_%d;1|yfVrWQnM_qGvhIyOd% zUf=I}s2s|{^C7057Y4JmPJL7)Fz_FKPJKRcTzWb$=j{SmjlNqWT7`e`#8oGz;Q>Mf z=XCs=>l1Z#iL}B#DTXYP9OJ6J<7T>MlP6zy8g zqd;6I!9^PG%Aj*=$?UWXo#%98LddqKVj7|ldf*c`BZ8bZ9QO3^TmsPYKnt;vrtmeO zCX90sG<&s}FEa7_V*T@j_44|Bmtg#Gn_To%|4TE(Vg1or6qA;UYDPZA4io>8^C$_5 z1&Jg3+<5DTj+XZ8SMh~akhX%n5%EmE;~x`y{_!37cT}Ebdl8;QqKWXfBLw-e{B|@X zn{hVj_k5KfD!QaDS#Y)v2A^sgZFdo$M8?b?F7Q3&51E`eyV@4FC?tqJRfN)i>dg-! zYp6oEj}@vlYfel5tV)a_?0&F&VDtrwHXj;UCRaOw?$u8$Hm8dcalzT}LJ^>6TU^Bz z-9kfRncjOWaIvxeq(|9zEpMIu6VDE8!Cc}7yTc)`7 zwAnNO+3Ss}sI4x|JhQbvfi$pXL4z~S=I26sKbcG>u$|>JHE}#Pd_GQ593_aep&d&j z0Le(-)I$&`+Fhwq60GA>Ugw%l&wqaXk=B9x;-eUL{uZ@I?CdRca4Zf=0zwYUt)pL_ zbR?Bp2YJ~uD%(?WnNclXt3%mRF2mW`+q$dYi-J?f*>&HXPBam+U=8oN8#Qufj)ias zvt{k=az`%=ZX_3+ozfw>$?Rl4E<`NLaf}O&n6xBKo-G$MDC*}0vAe!K#JP$WPB`t+ zcn|ki=8htwMVNC&d+Ym#$3k7}jgW&{8^!Y?;c+JF#&S@EZsJoqPkpcx#;yg}5 z+vf;!sh6Yg<(d2E8IX*NL(TIqIkd|&m3N2mluh81UI=&*vu56LxO~x%@y;?I6Fem= z#pi8U*+a$=4SHv=k)Pq5JfOYfYgX`ZjF9ZMV8(3MdCgj4auEMC}- zEc+tG8~s%XU#g}lm3dKT539{}(6ryt5L_TcUJh*FQ9Z7rMpLAsq4%sV57bfY))1ze z-{D~^H7!rQ_$XLx5jN&fbYeO>@aWSJw6&k&LJJcOl_(`sr`Oh?Yy>%4)}&=Uu>ABsHth!{>wW;S^EiWhREV zzZ=jSHq-6USYPcR2{~=UK2BZJM4EOH<{o7b9DY3H%ow3WGX2=AG11>-9F7u(28OdX z%Ed?Cfa_VbmgzU7N!ww`d9xw8_fFe%{O{s!+fMMOtkG(ZX%B37*VhokoDlMQ1cIs3 zs;*lJM~ZIdGumb77OoXyt|ym|zDhnM&g#2%x9?C3eb-L;q66VPmVT}3hx_V`rHAT9 z!(1zrACVV_kpXe;UH6RZlns+3B7!d83$7pXVAzv?ph~|SjRcK~M>>h{!kdmrxMJrr z)?Oq0AUd~*a2v~FZmVyd@o23yAGB9_3NfIC6t7Q zE$cH8T7mG4d&GMAh|GGkw~F*_ulehybk3%6RX(Mm1WEKv_pzotztQQ>@J>ncQ_+ft zd;HbJgnrisW-i|Cn^b6i5vLiz7DW=#Hu&^?=Z_tIZ6Wp!+Zz07xxI=@S-Kr$$pdQ^ zM!pHOH$8aw1jJ+0k~)d%`3zq(E>CsErj40bDbDq7MOGM{UaEOlrLX#~xxGs?#J&QJ{Ql)MWna!dlEOIJi#(vi6wPp`p7BMy& z=D6iYw5d*hHh8zZAz2Kgxp6l6_$m*H-)0f8PWZ$N=)Ute%sIp!jp=wa^ zt5ffZ5%;0hRaXK1qFiQ`N9YHB(zv2A8FP18i~CyBI#heb6NWQ8?|g_eP`6B;A55jr z){XDy{(j}yEmXnilhvT>!OMp)pJxV=w{fm;$q~GnQjQageQdOX7w!-lrvJ@(e_N_( zlTJynSNK$I;IxYg$0pYi=e4kf)&L=OgP>8+2^~`C`uJCJe_x(pWuuK*)x?l!Wvt$b zL9h5VL!_*T^`SxoU!J3miTS{}YSUJ*- z=+_4bSg=B)v7M)`XdNcsckQk#TE8Xw_@U;dm12-_`P_U3t05cK@-3-6RK1w^0eiXkZhuq943z0(0;#||~mp~*k%)nb9i9z25$6E#1 zzdtr{r-ID%>~^RaII)Z)V;=~hs*vmQ6?*&r1UcSWFlOuK_FlEYrUcF)^<4V0UFLR1 z#~IU*fKP>~Y0p1Lilqqb&MElIYL^+_zKLOCDQU_Q70ss`Uc7!-1{$vKnfOR1bXQX+ zyY0HZB5b&WGdS1A+uQoRNCR4jsOxG!o0<=N__4RczmR7;lYM4Yl$IAwH0+<>uZr+Y zHahnIV)cpHwoG&2`$^1bdKux3{)-EX)0$3F*>eOV;U)s&ES%)gM=7(@Jup!r5qlCWjao~NsG%+D+bvi6^;{{Nc_k^fs{C)JKezE4o^D}M`6bGmv=LzPV{u5L1TVb%x=!!k>`StdJ?N6)ogdct*8&{Ens)>rBw{c%*+2fR(( z9NpyOJ};_(M3>vJbv+JQv*R+Hd&iE@UpYvQtk|WqSi)w{ZrSkoT z=w9gveheK(dUlxN-|JtNG~La(*~`MXKoZI%QZ%pmV^7{L`Mn;?tB37-8$VKE&XH*f zLWar(ufuNO9htCLZOp7M1)0c?Uv1UTX&K`v9(Cs-HeEgQxWJoqr8U#fiQl8z4q0PnnJC3!!lmW;S!IU%zkSw%^+R=|*f5ay`!` zk9&ddqHMcQV}NrOIf|)66@R;9A(^iriX6+fBWEb0V5i(8nd%|lCBf~h8OggVnk#2E zu1D$A6GBo{@xp)2fm-rQ*W zBhH$J{Qe;hQnIpxP(g<3zz-SKylbWn>1RR$A!*9dF83k^EooAg9us_%9bqLpvbL5F z9cH(MsL%X}kypH&r^A6NG+<)m{pk3v|IM|5Q26%_Hy^`BKdGjHpv8TZ#_sIZb(_pe zj?_=^E#wF0gxeIqXhMBg&{Wq>`6~0a)iw$@G|x^S6O7E-Gzv-I@>pplXTDG}KPopv z_oF&XaS9sb5~`A;8Du^~{}w+oOtjqoZ2s)z%lqv4@fs2=kG_v-b*KG-LxTfv9JZ5S z`!7wKLqSt>0b8Qxe6nz&@17Nb`{H+Q-n!~G_PCWx^2s&f7ng7!Q)gv@FauT%BnWJ>4UXKL;rD*P7h>A*l&346nGHezQL^&9g&;0m;hiwK$5j zzw_w$>cv9)Tj{dSDt2Eq58eFIb>w@Vp+7EvDs|rHUZ{R#puOQtfx2ra_%zd;?jX_d zqSWpCdd`w;=-1?aBBpc>!H$Uxct2Yrb=Sjt{d4xdK08C-dDVXT#v7ButS+WJ1YnU71)Y@dBlpYVKwC4k}~i zFf9-v>%wUegiR#(x~~s=@ZwlUToe`A^T)@x+508{v+e%&@#aZ{BMnEB=@+t=kwoLc zBi0EnwbF6eVdzoFGhi2X)glYGJNR2yu04K|3OxGSUH$2N!O(cta>!QFRW zthyWY8i#)w-Fig_B(~@7>pS)K^0Cy3msalRt~QCZj9$5IgmJgTdcGol5{&qe%Ae?K(cOdwPrrJ>#t1z^nU!=v>h6Z_fjDN5@+q!ygmo#U=;OD}S))R8ekF)+8EQ zTUasG(5#GhG?SQ=bd{ltBMma=$%Cn0|HMT+p^l$tU;3?=c>yfso$Uup&?VhVe{Oi- znRjRON9mt2jwGBZ9&APQD{u#ws~<7v^^N*K7}%z@P5xku((d6n0+Z#uB`eRx(ej`i z^Kv$Q+ddgVh3OodiV1`vjdceDd_y9Ad8`si7@^p50vT`rPnkjCG2z&}+TuDsug)q<9hZ?rN4CZt*WbcaLG+ zvei3xiG7Q;?)%p*F z$HIA-&@DVZvhQy~HAAnHeg}$J%cO$&GNn=vyr$K3`jD=QqR?gvbZZCIo;CdgMdB=B z&d6c*3FX+X75v=mOj!9Z3LH~s!z_BTmKv+u4m**56j5PUwkBuDKNAcoCX11D(vg_; z3zNDgy0Wq(adAeIGTuqAi>54j$!doOaHA}A-FS!L@Q7L0qV;xQp^IWsrc{${t24}Q z7AuDuaes{gIbOebwd^A`FftbK!Jivv?M2$7U%D$4Izc` zu15Tc8$uls*S5V0`gC-zb;D>T-}5iMGi)e87>yl1V6PQi(7BoSdLV(F#D(Ym<*BsS zxnXAavH-%#O`|L3K8cssiJ|w7z^%!13E(EVMQa0kZeTxr%NxEejwe>GphB*qPBx{4 zKhy|lMaj@ekQJ;PApVcJ`d{j!=@;4ZL3PrB9oWyjpyMsHHmJvK4umAe(6^Gjr@3L^+KSu8tq!LJQ6f9+-1)w(X^X_6Qzssy1VU&Vuf~ z%JkP~d&bpCK;533&S4sJR6reZJE?KVIL_%x&@iC*OHpYeIXQ5 z<_o+7?wqj{5duYXkf!Mg9=`AMUx-oFWk&V63a?jK6`zH4ezt*~(0%kS-}eiY?jP*I zuyolt;8dZ&P$2sm&6$*XFFNd2s;}R4NPstbu8bEiW$t}%Z>UtCk(9~KLsYP#W4uUb zy2HNJOKC41%OKD)zF0zp5k$Xveny$(_N(aT7pXUIB7#&60%cuZf{Pt8X{n>cU-{-v z%y0K;3d??H)03J}4g+&l#isv)u!zX}NB+5Zw><{aZHNwYCBS}uKrOm)S%>Uov}bJp zwRFc0599norM>bN2;0G=d7EXxwnzAMG$L$?8*L6!Yh$F3#HxHiX0HGgtEbF;U3AAV42W-(G>`F6YLyYcxZm1m zIhrynwt;Gd|9sTG$|pJNdig8rN?x#MYb@&QpIuDsj?7ORXw-_mr=bo`Nku$o9Yy6D zo#b|~<8tghetp%8e&L!eeh|^XJpE>(klp&5@b5wZZ$ZS}_e6qDWy$U+SSN;tRYBvL z2?G!&t(V`_A~3nw|FpL?nLu5cetFG*WpRi}o)i1=!3ht*TXkpd{Q|7L3( zf0vT0;@*9#wt(fmbMkyohYX)9eGIeQxu}~3 zur!io;u{Lxz~ZT{Z51)Wpc~Fip~q%5&S1QOS57!iKT%uBt(rBA!wGcM6su>zrN_<* zi2+#0ga;*)IlDsAh-)`H^-Q|8dtbV#rq)Y{xL*Ult*&dv@bjG%CHS zo|_9=B;$$zO^;gN`N?9jDXzbwaK?~P!a&ADe!bHp`RpnBGc3qv)N53Sj0yV%q%pgt zEn3QnI5jA~ihoq_?yC@q$c3c4sh5Q{l7KZ_(Dw)}S~Ie}nFF9RgH?eiCo*Kq zJsxg<<8}2IqH$`&U~&Pi#05$-*o*`HDYdwonv!N;c|5 zxegGv$Sdy*xnCaiE7SZwkU(2S1 zu~^5_ERg+ye0v@CFjU(cVALv{A~Fs@ND$7HJptT9^f2sFIB5U$!$~BT>hMpJ;$4`V z6a@V+TgB?|X#a4)uN`C*dTS5rE)HypZHcV9&memyH79!&7e~gX{d)^WT;Xs%*dbmd zR!wufak~o-0(045?6u)=_bO*WE+!S=H7Y2S_>-AcC)eY%q^;&{L)@)V%v@EB_II^7 z(}3_Gs?qsB0E7m&cbNHZJrL{%Pr-crjL389CD{KZ=EhS_sa3%&Tv^8#uY^Y1!@3ZvLs@qXQLq5##X%;PDDwxSdOQzerOYk^TllA-li!e|703ysbbbpi4=F2D z^3g2G7UcP$Zqmq8rF#Qztg+V&qIVVs>b-CyXKL(BnqA!~m1sY-8E-B?ICFI1=)J5> z&4O84VbPRN%fd?tPEuaaDwEY(uXXT~>&1Tiv5!2RP+pLp7^gW*nWj-g9HfyNWvgXl`K&9k|{ zBLQB<{WkIO?#~9i-NnO_o2Xs=TXCiFNQWczvCLH{8$X65W9&-tzE`6HpeTn-hm&ss z7_*WT>$o;=ahd_B#KDtk_zXM^PCKJr5Oi*JGd-&)Mc?v{lMTo2`W z3XbT};jYbt3C{gg+kjJ5CS1TId^18xX*me}Qusqqn}jD?^bEYeF>G>tzG~asnSMml z-zIo(I#3?&T5M8e9s zpwZ}d-A_$3DxW>fuVThx-%8x$ef#J#!anFK@*>!hJXs{TkKTge5W1xo9Tpri;1wcG zGEie)dzu}Z{UImz7&YX%K-B5o>-n&!Bq9yhWp<+P0_zIf zm(h%>oOM%Z&eh)0%|NK!Rbk+Q2Tv+pMb(gvKC-!LTSsxF0z6?Y!3)>}>`e_DDu2WT zr?LkvQt9VMS(Bk|YH%?uEOA z9}VIMuH)70K<#12_NS^p(`=1cTb$aiSN3jTKZ zW25WmV~5a?R~7jT$KzLC_>xE!%m$O=7 zsL=o_z~Bp}i)V!L^yFUEZymdT2D4(0m~}wL>VAR!8s|GS#TJ*LL@Z`3-iyYkY+Cwa z0<+xIP3a3ejeUNb^PfN{>uvtX`xN#|^=cb`OEWqdTrUiaByP%iy3BrJQmIYy)r>h2 zUDuHf!ig<9ZlhHLw-rPPf6bl~i8z$CO*Tz9G{`x@BF#I=Bf2mwCdF~vP#bec@1Cub zD}K&`Ak%kM`My#=+NS|!`AXgbCh{PNaPDQDWOjDGOk=$IQehP&f+3OB&Wytah5aE} z`tUySa+cw&r6xjZP{dDMUHBIO+3F_{qph%eqUF#e*R|s%lOKCA^0$h#Fp8)q&Wna^ zVINn9oFV?O3X`z;V*n%(OFUsal=A3&VX_dmVy+r*=vcdc1gzoQzz{op>Mj+QD?h%E zkxx5V=6Y)Dtlh`zRNJSl-8d#8HupT+A z7wctKR_habmjd;lHnq}__#Wu&53Kz7cK$q1dHGp%L$0C0agQ4FDG6AIW#()#-$6I= zgKx~-Wydcpn5X49t}I&#mP@#jfk&=lfVc9)#)Vurjgy>yD=w78oC?$~^z%80;^g8d zySow)vLYt3eJm{Q;W)Eah`fi^NhZ|~T2Pn*yap588O!8EM7r~y_t%Fz#${GV=;$T) zyDRK{KQpT1Ky_^z1y;&Ve>yl8#pIs`xTo4}fF-tz*WCLcKjJgkV#Si8q)abq2fMMa4EHI~7Xb!%Hnki9Swj^^Ti)2J8dFrr zYiAqd0s3x+!LPQtQl`e}59{gA$S9s=RQ&>Cp%6azGXneqjIAWD%%3b&N0914*m+^} zm-Bs43MB-A{z9q_!Z#!Y@6#K-w7p{9p_!f;6&`Oq6c}m>IYqM^m=UAAENLfIsu4a}6pg;!##EQz%B#zd8$uS4$|q5l{`UP>tkQ}SYlxfQy*tSV z574B6Q0@Fik<6r+rRiJB$Fb7%e(kf_zGbia(1>oiwSuY+6pK+9ma+t z*{Ux0U~U}hr??9NcawMK^VUGE8rA);kQqX~)zp&MOEsnlBh8y4t+z@Cb1ca^D{+@1YJ>dzDWaozHPDHolvd zYE$qWVp#)o(TPOJO!SaShN0-phpaOi-i^A&^O?AAlVEiB1r+!#i7(&TZNyRTPb`%# z>(ezXiWy%B>a~(YwrBWeP^BF<6~0TR=SP?q3+ zM5_vx5O)nj;cqu9KM~}Ari_H@HD=HvR&$5D87WoMP~fx^zm`E9wZf{mrxmpIBw5#w zVdc254t|zz+-bi-h*}0iZSv*WY&e6X%rqmvBy(mBJDCDIG72~OQB?PBT~gvWdu?i; zxOX_6>EJzuC>c!Tia++>r7KIN%YsS}t`bHq9G7K7(U^}sIUoYx)lZ_ImE-f0bbWEc zsH5K<*ME!n$pj?~vFyly$24~u@4^UG7t%w{OH!95Q-IL>oU+haDQyp#56d943NoNp z4x4DHKtRnn#Rx#LFup`Z{Wv6pl6>L4p1RdiLQK+(k>*|`<;MNE-?fTWUIGExV9R%1#>>=hd+q* z-ap=6ARwat#O6`)5b|*Lc|zVYFb^ z_uJh6XklB(BxT_K!v~wBMH7_hCQpu6%Q!wbcQ@+&XUoHfsu}V>2nHYs$~wh&4XXDfL^lxRVI3R)$v7YoMTmTfnG8d?dW+` zKa3QHPK)xCdwcy%0hsuK3=)4~!*!f9Ezp1TTU6a}+y`VT^x}t=o5GF?dR)uT-pJf+ z#y|tz>G%SQr|(D?Fema=th<26R9{sm_0 z(l??N)fww;bI;5@lJK{5JY%tgZ;k<^}rF_n8%dMSSM2WUf504cd% zJW`3GY~YBsfrKL!_D8c5w^Qp+ZzEz!rFkuIZyx=k zm}(R&!$WVCk6F&mvSnh9;E-bSAe71JoY7}qgV}b;u@woFdN9{I2*_egU@ZLA0cXu% zS9gQfg!7>f^3fr)gQt`o+cNTGvIRt(ETwhC;yh>zn6EjvRy9YZV4Ku0f4q8rrh0KH z@y3pNahh}~`UDy;HJIulU005Gf+;l-5BrXLeP=Q(0|=B9G}1w$Kvkj9^>NmcLsPPE zkZ-MEH3FPaqp))7H)M1%c`Y`73c|%<$gH86nkbncQdMbx`Tlkdvuv}!ivJ-5o5Z3! z!u=Q=A>sqPW2#A*5F{ig&QL%8!2oU#RTv*dhEvG#Bt@zt*Ni2t6fO_pQiH_5ZJhE% z>mxWruV0P*el8MKAKH5HGj;DhCp^jgW$Ia*YI!`6hiUSu2kc$X1YSfv{Q_yBn;N%4 zYHHsGe`~A7+{IfbSPsKyroS}PcmUv1k@VxzF<5EMruL%f>CVCcLc9C%|o9? z>P;U@U>MItLi?sMS+w@H6C96F=V$a_rWLvyiu4-xSVGPL8j&mGq+7<=C%eanRBbQ* z$WN{)uZu|}Iz2$y?~}SovYtn9k8gg`dzyH;^iQynbr2xTVI~4ilj-`~f$GEp>7Z|_ zy_)R;N)zN8whPw$A)qU~6Fg?pwU;UfI~4GzFW|1Pj7aZ&r3buoD}hBY0#Ad@fLLKaN^?5%PyuPpBN{Rf|V1&QTMx_im| z5GNC?n%4%AY2Cn*Qc89huE)nZOg;nYe4-!RfI6EftKt5VQ5m_ClFg6LQ2Fsqai=Sw zr0MS{t5dm*97e!Y|Kf7iroFjK0CTng%qJ}HzmA}w_k3#ebrBH>l(e#gWZ*NIFJcUZ z7nN}KzQ|t zeuKVFT7{!C90}8(*3s~zqA{H$!MD?oQtKdgbYSYjm}dRv;DZj-+--sO5c7L%i)Hg9 zK-p~m%YCgp-BXL1Z>Y2EFjk>e5LtSuRZAe?12XSX&*8saQdDubr-BC?voHa=G#TOj8aa$4r1YZz;|sdI<69` z;*t0=N_m1qA1Ov#`F(};lA%^MUzh{4Ae~NUEBdQNUu2dtDGm(H|RG zc;CgelJ6Jj&Ls+6ak@-)F9(M^mR~zK$g3&>U%j$#vwltR>Kk{k&Zom?RD`5u1=-uo zygk1OK$m%Bk=a;PS*7ejk1}&kPiJ5_Pf4n~2>OZ1PHjSQ_+F-JF9|3E4aMr0#bKh? z`8{Um6k=Gc=<{7e%?f$Bk(7MiBuaPn6xA>-^N~C@E+7`HW#Id&C znndtg<-W)?Ji;Q?;hpl|*#@>74ezmkhRXW_L3Z{)bmNPzvl%m!XJ3~Qd^QH$1>!{M zf3C%;(x9VC)%BWR)od4MQy4t27^*eQ*1;Z-j>iWLpOYZS>%Kr7)KveJR#sF-d=MTk z%2x9Fh>7L-RTRZi3oghU7=`~bb&p4f7UgB~6h0E^k#@nK*GhMsUMn~_OXK)Uj%e%m zTNA~gHO$cuviXJKonHjY3n;sYi)mk)czxH8ldl=b-@c+!=gjgTf zP1&=6#WPF2PDbauu#&Z+fycuZxa@sW%2K1u&)n{ABXZ|JF7XN^89lZeD(VK|Ij7fQ zcrX;WL8ryKa^CHWk8Y#in#nws`K(wf9Z7~gaX#uN$Ilg$YCYoSu}!LkjWS6IilPTA z^b!ntQn>@ML{V|r`lWp)Usg*>~KLM`_hwKR_-(w*d{Ed#r7v(5<1xRt9_RDf9YVqU0rzt2b<1x?`9HzJITDSGM0w{fWt{WwAp?Z{p3L-9-^T;h9lE z&8={fHjrV_gl7OR&Mm`lv1y#rF>EP?ylw!7K7u{*3~g@_e&qDm&+VP%Y+NOyB1u@$ zpB*($@7ROi?4 zdq@cGf}>a0Ba;LWHE)Z2BAM|>uGoeV6Panw!$rJywqqRFI^NmCjRg8cGe=9Ed792P zUm3h&g4_dH9jE(AVW$7B2&%V~&A(N`k+v!@z}Lc|aGD1JzjIg6sJAePQiNqBwW{X%T#+RHPU zOkI2I_as!xym0P*_-{6dJ2RL_2Gv{E(3^EV$64uRW2Q>NW2oezQ1qT)tgK(5zI9!% zRorvY84%`3iV^y*#?JrS28urgG@b`ehiBLqgS6bV!8_w66^C|75jF*`Z0LDPh1Q%9 zm6B`?u*>*N22mdFMuIKX6PDC59uwZ=KihM8>CPE`gqL}JQ$`k2lppk+;0bkX*BnkX@ zW(^eBp5Q5#`0u=3;p$%wJsrx&ip1(0?Bpw z*wOesV2|{cE1qtml+c{xS-IClt?fIC$IpxiHIf_D*(xgUa@Y>Za->rggrY5#LqJ=p z`oyaY#tea2h{#L2OJFq~@K|7Nmcj;ug7<~}{j&TzsBTa$1;ybc*ix;gkKXs6Nh>cb zcWJyD%YHd%V?SEty4UtsROdV;Qaoe_Z=ef{eY!m<8rtykOlV0zfCoL=TH4d>yvM?# zD>o(yOD3QE$c)#l^Xv!bv-h-tUPlXdXhXMZ@wh2^qwi;w4ZJ|0Z~bdeKW^~P>EoxVTAdJ=JtR6jzf(<& z*7wIiTU&N;@Y>lVRlfn85MG;ny8Dw|=s(*W((7IGnL#$y*2>psmr_`%`@0&gXFmM{ zO}@*fJplBlZ0ggh@b-H^kyyXFxb-)hx0;n=<<%1R0NF|7wYNproBeS+fP)VW{gwGP z4%3q+(TqB3m)gAdx8zf1Y`3>)>!U8YZwXHIkub+`wy3UZyoKBOKx$u%$S;+jG#vGK z8x->&9fk4#C;MTQ_exEvTHC%8ccyO`dW4o^GAM4QI>FVAANU0PpwI* zb?}fM&4M?aNy- z;sxvNOmkb98e2chuqK_Mm-&lbk+h~nfOGW1u>8P}TDQ&|9)3!PuWDj|uzn6)30Bko z3(AFmNC$Ygni!gIMS{}|&9*Nax{NY!>@+8y(0e*Qi*uuJZd`9`&+Kq)XF0=in+aa zm~RYMsIE-ntUdj2@H@Gx5B^U6Qo0ilRVPq&J%z@mk8h!1Q)70N4pWrgj71ZbGULDD@`#+?IX*$KiucFe>gG9~(ikyO7OtrV$=Zq~bVl zarQHVT}Xv2%#TUwssu)M&;`LZRghgJXy(2oay*rXE0Tys(7x2&@1SEIw1V_%Xi)x7 zuDk1kFC8^{Y9Ng{2UqHCxaoy9rTZhM%@PE4R;)70$~3@8Gb}umxGYF)c|jXa_u@reCdRDw=#ovEnO;{`xyifmfM$e@DFi7Hj=TEqPq+c5aHckibs!uOA#_2}1bk zeEJRpd8L-hU8}QIGRF}}WkZ_%{)^>6T0`nm6*bOcIo`?ni$D&--r8)zP&06KTFn4P zxk?z4#AcU742O*X{9hzjQM83Nyc+7P;b^_`?S&9S13@b=L#bI*X~%Ww*wN+x2xoM&1f`mtm_YBH0b9mWcovQg%I~R0_5OxRj$+%*PxW} zrB(mgjmxTuNgJ8&>%VA}MsSziI9>WNQ;+*zS&A$QP5s=n_P?R#%Y#_F`{`11f}T*A z?*c|d$I!XFGyvYCUi%fPvi!p-V>fXv3c^%SEi6yt5DMq-X5wh#sC{%h*E|AqAoIYH zsy6c_`?DABNJ0~{Bg~Hch!&t5aG?f9NJnqSBhK?ZQFifx>B8Nh6*f5}m-?~9%SD46889`a(ch}7vX9})yu(Y9*%_0V zKkqJr_9Ki}|MKY;%qIaisxJe1A6UW36rW+*Rl_L(WXXuN zsSqCe!SJymsY7W7yKWegOYh<(9*WrtnIPBE$B|<#Jyw^T34jG~1$A_%sia!8n9pbM zBZ-AA7z22pY7;U8N2yNl0OY9jQV+NXYsvg#Ta!c5_gvi;kh+IN!?50IRFDMiYJ(`q zI!@Q6^|}X&ziqRjuuTuMOJvB6_!9k~w-Y2**6ZkN6UCuDV=_`e$RPi9^}`pg2(~9k8mqk2%R7YjSvUH~xzjPF{k* zi=kE=QBhqgL{({zj@V4K5fRL;lGSkxCmBYUahS=9STHAg2&@{Ew$rd0DV-jkB=6^k zQe!yN{>3y%M&R6ul`^jW(XA!8!*u6T@n8f}V`-vn7;hEvpiQt0x-F+vR@~u&bI-Y{ zN6}uMv%nj5ckc`5C73EpCddC|FZ10OmM3j62V+n4O$zYzSdpTxH|vOHaD zH&6#3TXjnUo0Pnj{rSl^E+QVNiqVdZ=o9k}H!O?k<~UI2gxQLR zFI{9;AeBY`m2frKS&QG7^kA9frY^D^bkOKRaP+1ZS)PpE@Eqj_tZDRWk+h{maDrPo zUTdw>t>cM7AYWmwurh&n$f-3+BKE?UXkVF@At?BiP6itw=a(73JRz*V%m_@!q-uuw zrYi*!thLOcIQvkcWM^kNr%_e$L`dUO6i%f~9k<=~zfzpImYq~zMC ze!IOEDk1#sL}KZ=r5yh{Z$z25u}6xf;iokS z1D#cR2cXWHy;+LaW9;hM94}D_Qr$&^)>L^Xn{17|8$@WF@tmbe;+=q&H0t5S;_5hD zcdCXUF6JFaqC7NO+oXWZaT}ptpAyII*4S#t-__fXvU0( zR2kP6f*R$28d6IU(ox}yl3$>k-uzLY(X*pa&x$)^7M?UaI(qJ-F8Hf)^do!YP3kv! z-fUG#s=qJl)S@hSq51KLj6@2@NY4T9`KTSu*8tvlNHg{e8|NL8`?0!L8p&6g0!^m0 zbRepso!;#7Z>fTiWscnmQ=y$$^D1D3SS8t+eo&g?bpB5U3D9}+S0;|^5gmy-c$cRb zMu%Q<7D6J{dEmzzSrMpW$?+KXi%uU6$&%bmg#5#Qg0J&VgT`SeL-8Pd5Vr7eK=1P_ z)g5Dhzm=GR^lz*$a|o)E|6GSZj3_`jHlAdaMt0>Lp>efp8~2&&3Osz@IK{*FsxgsI z>csLd7D93|7iNx?HnF`G0T0eGZ~Dn#9?>xrdsd_QMA-4 z2uF+$ZtihetBZ&1GDEzzhqrQFZUplef!UBvUJt*WoE> zgrGIa?j=;01rk~%yGzjMMPeVec*k7VHC znO96{QP+a@ADjE>=M9nZ$t@b+RD{DdntKMZ7IF>q|7!fm-w%|5swMpPPDmUd3H~vM zvo7j4bBDRwLADHw+xfFUsEU^lPdM?5QZQf1qN_V9l^fRk1F$iCuosa-z}N zX`~+W8z3E=%e;vlDuGOWtKPm#%^CNE$&dYF<*oX6y8d~{NXq((Yzu|HQ*mE{I#JKo zQJf0Zv?K%yw$yuVRqv8?d1L~1%mpEs`6j_f2hPF!Z_LpJ-T&S%eiE^-kV!y4XzbCM z=#!{d38OJCwW?^yhYV`A9)|jNygw<`c{Tp*0f?Svl5XF$=80T+?fjd5cwzj%0_rc^ zIk2J?`i}DNxv*5;6~wx}^g|&X?t{tH45d=a@y1g0F~A)0Acu_Z*fvYinNr(I|Hf9B z|EuO8PeF+*vJ*Rj`JpYr(+KT#X*|-;#pTUne z@nNW*3cah>>#oxmxj8ckB#;&<%sRWD*vpd-i~;bO)1Cl@iNknEkUYj?*VfH-*6u^U zcg%2*L3L_oPdB$|ISQ#*dhid19X2@&vmNf8PeiP<;~P=Gq2rvou`~g!YCUb z2}?pfMP1qq$S`Op4!1R<%(74kkpkF*k6k{hJ!XzD0-2(Zb* zRMc8?A**V)Y&53*xU?-vENavFCRq2V0Vu1$L$neJx>md!Hn0I7Oz+|>C-UF(Mt($g z$07$&kmbf%lN_Q@p&q6-NPsJo>p%eTWGbKB$T^e?u**O6?n2=GmRd@MD-l(49cdjQ z)*;Fvo^(qZ0hKf+7wVm=ZwzD*`6WYJkY39D3Mu&ie*Uip{;vl9|EB?6j3?O!MHpIn zXS@dh0ATS_GW4>w^0Je#@vuYw00j61gt_^|xCQxj`Nbs!1SEt+Ir;b``1qR2E}H&d f3tZf69qs-8zZdjhYGNW60MwLTzp7EN{QUm_PR9Yb literal 0 HcmV?d00001 diff --git a/ada/main.adb b/ada/main.adb new file mode 100644 index 0000000..3cf04ba --- /dev/null +++ b/ada/main.adb @@ -0,0 +1,147 @@ +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Ada.Calendar; +with System; + +procedure Main is + + WINDOW_WIDTH : constant := 800; + WINDOW_HEIGHT : constant := 600; + LOGO_HEIGHT : constant := 64; + LOGO_SPEED : constant float := 300.0; + + type Unsigned_Char is mod 2 ** 8; + for Unsigned_Char'Size use 8; + + type Color is record + R, G, B, A : Unsigned_Char; + end record; + pragma Convention (C_Pass_By_Copy, Color); + + type Vector2 is record + X, Y : float; + end record; + pragma Convention (C_Pass_By_Copy, Vector2); + + type Image is record + Data : System.Address; + Width : int; + Height : int; + Mipmaps : int; + Format : int; + end record; + pragma Convention (C_Pass_By_Copy, Image); + + type Texture2D is record + Id : unsigned; + Width : int; + Height : int; + Mipmaps : int; + Format : int; + end record; + pragma Convention (C_Pass_By_Copy, Texture2D); + + BLACK : constant Color := (R => 0, G => 0, B => 0, A => 255); + WHITE : constant Color := (R => 255, G => 255, B => 255, A => 255); + + procedure Init_Window (Width : int; Height : int; Title : chars_ptr); + pragma Import (C, Init_Window, "InitWindow"); + + procedure Set_Target_FPS (Fps : int); + pragma Import (C, Set_Target_FPS, "SetTargetFPS"); + + procedure Set_Random_Seed (Seed : unsigned); + pragma Import (C, Set_Random_Seed, "SetRandomSeed"); + + function Load_Image (File_Name : chars_ptr) return Image; + pragma Import (C, Load_Image, "LoadImage"); + + procedure Image_Resize (Img : access Image; New_Width : int; New_Height : int); + pragma Import (C, Image_Resize, "ImageResize"); + + function Load_Texture_From_Image (Img : Image) return Texture2D; + pragma Import (C, Load_Texture_From_Image, "LoadTextureFromImage"); + + procedure Unload_Image (Img : Image); + pragma Import (C, Unload_Image, "UnloadImage"); + + function Get_Random_Value (Min : int; Max : int) return int; + pragma Import (C, Get_Random_Value, "GetRandomValue"); + + function Window_Should_Close return int; + pragma Import (C, Window_Should_Close, "WindowShouldClose"); + + function Get_Frame_Time return float; + pragma Import (C, Get_Frame_Time, "GetFrameTime"); + + procedure Begin_Drawing; + pragma Import (C, Begin_Drawing, "BeginDrawing"); + + procedure End_Drawing; + pragma Import (C, End_Drawing, "EndDrawing"); + + procedure Clear_Background (C : Color); + pragma Import (C, Clear_Background, "ClearBackground"); + + procedure Draw_Texture_V (Tex : Texture2D; Pos : Vector2; Tint : Color); + pragma Import (C, Draw_Texture_V, "DrawTextureV"); + + procedure Unload_Texture (Tex : Texture2D); + pragma Import (C, Unload_Texture, "UnloadTexture"); + + procedure Close_Window; + pragma Import (C, Close_Window, "CloseWindow"); + + use type System.Address; + + Logo_Image : aliased Image; + Logo_Texture : Texture2D; + X, Y : float; + Dx, Dy : float; + Delta_Time : float; + Seed : unsigned; + +begin + Init_Window (WINDOW_WIDTH, WINDOW_HEIGHT, New_String ("Raylib in Ada")); + Set_Target_FPS (60); + + Seed := unsigned (Ada.Calendar.Seconds (Ada.Calendar.Clock)); + Set_Random_Seed (Seed); + + Logo_Image := Load_Image (New_String ("./ada_logo.png")); + Image_Resize (Logo_Image'Access, + Logo_Image.Width * LOGO_HEIGHT / Logo_Image.Height, + LOGO_HEIGHT); + Logo_Texture := Load_Texture_From_Image (Logo_Image); + Unload_Image (Logo_Image); + + X := float (Get_Random_Value (0, WINDOW_WIDTH - Logo_Texture.Width)); + Y := float (Get_Random_Value (0, WINDOW_HEIGHT - Logo_Texture.Height)); + + Dx := (if Get_Random_Value (0, 1) = 1 then -LOGO_SPEED else LOGO_SPEED); + Dy := (if Get_Random_Value (0, 1) = 1 then -LOGO_SPEED else LOGO_SPEED); + + while Window_Should_Close = 0 loop + Delta_Time := Get_Frame_Time; + + X := X + Dx * Delta_Time; + Y := Y + Dy * Delta_Time; + + if X < 0.0 or else X + float (Logo_Texture.Width) >= float (WINDOW_WIDTH) - 1.0 then + Dx := -Dx; + X := X + Dx * Delta_Time; + end if; + if Y < 0.0 or else Y + float (Logo_Texture.Height) >= float (WINDOW_HEIGHT) - 1.0 then + Dy := -Dy; + Y := Y + Dy * Delta_Time; + end if; + + Begin_Drawing; + Clear_Background (BLACK); + Draw_Texture_V (Logo_Texture, (X => X, Y => Y), WHITE); + End_Drawing; + end loop; + + Unload_Texture (Logo_Texture); + Close_Window; +end Main;