U-1x}u_>v6abc^ezD zRhsIjweWmyd~POY_X_T7r8x@l4Pf9<>6$kHoNo?jNHT5Ce-|9s4KM6$Z@+d!p91oj z;67G2RqU@YGBXg9UAV+(iLos`ETi-@ma%QVl_f-y#^YC77U^&gAUj!(dpp0BN^%v65`h9vPL4jEsRE>qFnGmW?FdHIxhLW4;Ctwap@SeE{sHQ zkX!6P=LV<%LK?0*^B4lCXppyU#+CSwSP7$i^SFeJA1ty(^}j2PPHDJEp2L7mi%7E} zN-lHyRhH^?K-|@5sWuWpYr?1mDpIBDk2QPPshmK1Y5m$hY5`QFFyD7-zyYj>M+>Tm z@F&;xlEMMcpU-@caUGWqW VJu>aMw=XwO=^sF%)jrWflV8BB?QUE@gO32IoGQ|Smc2t0G zmi2rJW22_Ae7+U1@>d !)YH;J(k&vB;=p_dXKN|01Inn}D2&jM^iYnTfFOLeLFX{|y-O8&i7q zg$nHRSqQ)k;vgU;oGDD=qAXnb`3AF*8~`#q7^)1u_V@zc)Nt_jkZ=aPcK$aI1%7NN z?i!jA1D-Pk0r|CwvSUBx|9?>Hqp?6KP>SHrO(EUSz$Uty1Br0`e72)PK>4$;xrCuy z06g~qv6}>L(R^Mq# q!`w(8C0cpiMJI z|JC K}Y`~M4NWY7OV$L{JP#so0OganK{`=fo_u!o$A4a9}` z*Y>~vsFk@;1Zo8Z04kWD=ntTQps^Tp1GqNBGpCFiU{2wAY%o0tJP_)ZEA*KdGw>6b zANAECASfWOHD4Gi^_+EuKgpge$7YmS;s4PW^L-r)WK?gS74UfdnJfgK@1B9#^u`Z# zW#b2Icx$2C0+3}4qyNt~U^yCq! Q4_#O!bXEbqEfMxFgrp&R5HJ7Eqt>D}NH{J gNBikQTS29(by1M`<{w$KqeQBD}G|?ry r~+^}%0d!Fi2v-CkB2JLG;Nfz+_yRETXk6u zidh6D4JpS1z7@%_iF2rKMLuU{#)=bF@YTo@8vQSMeSZm#*BigB+wa%4C_!cFTnIMG z*m9t|P)ypFlz%j7_q$GtJ-%8B$ 0+O1+tF!NNqUmh zsnL`4)v-a8A@Z9RBw&ikG0?A=)#7gcz>YPdl&+hCadXJuUVUMboi!i)F9-t+_?akn zBhZS?Xv9{MpN;q)q7@Ii_x@&MvK%7<2o~2z47)UpQ_bt^PP;Qf)S^GL_R(bazpINX z_bX2;5aX#3VwfH1km#d*-Y{T$c)zh#^8RX;+Y&N~L-*%3R_UX7NTaR920A*bvHULi z?BKrt?tnCz+4V6~Lp9IP1UV#C%TX@Rn>IY&@B{x!Nqw?EQvRp9$<>z^>x)J|um8@H z;d*|+#i)gEe>odmMsgHG*%mR)eEKQ!ZuvDP&r|laz1Gzd*#=Xh#BDwjzbovRHxfSN zL?Ih6Mx^2ElA@^1o}~-oE8d;2*va}s^(8v3pxLlv^{MjOYJ~*9whD aQXu($PQc@)IY#rS|@9xGy0*mPiL-ok1EXRLeXW$|azo znMMe2|NEoqeMqBySLAO@FlX=(_Gnl9-1JKGftq#so`Pa`xv$}j+4pUEgr{kqiTKr^ z30>!R+WA>aOG?G6J=e8IS{~O0+yBr}A%4W&SX5u#k1REo8c4$C$1ax0XK+QkFAw7< zsKCUhU(oKGo8I_+zxYwKCJZq;i8SL7Qx~S}d}Piqq3@Ys`u%D%F+cS0_jav(VLw+s z&)! mRup($0M7M)72&S`V}f-OxePk# zM>{y*YRgPFzv=3 veJGM%^MFq+)eypGv~7wOm-l8^Ygj@--9i` zgn?3&Y0Xk|M9R=KOVAQ^aN@0Wz2CvWBt0XDoI?KnR-es%OFX&M-khuGz66Ks7i-D3 z0@$Ub_s)dTRjHOHPM w0X}S8!ryn3A`26r zG}U>00}HiW{1kRAWg8v>-j(onzVAG!B(eXyXs5-~a@l)tT@@xnz%wZ#QgZx;{GQIt z{S3iQ=v{Ge=nmfA`_9PQNqPI5>whn|FAl#zcL{zWUWq#l>WGIJF`>IQRLN%~N2pm5 zmt}Bw(O-S5DwM&9jX4;ndLq_(M2#t}Dtr;aeys7X&xFJhJJd2^Y7OJ4H{aY%5~C3G zt4ipfSEU?x&EKPm55ov$xe${(X_$mQcGc%sqJDq1ZI#BLv~$-z7B46D4K*$8K5SM! zqu=XhAhww!JdF2>xhI83VQ15Cz!f=X$0J42{9Z!rb{ks~rF$+tFYk_H4q~*s L;z@)W<>XeKMUdD^~$?l1AGdu(b!KyS}R@oKT^bgegA38`2ab@s$K8ospnx6M?&f zl1$aSSTHt^bK2smh_ZUA{Z@uo*{(Sn8(F}IXv7JMe>^*lvy2^QH@BZRA?!hPu&svr z(If-jwZ!~i9nsZ%HfHx<@a%$2J0rzbh&kdVYEQXc*IVM3?o8I}U)7m)1rz;jQw}jy zYTVE4m_ltA;%?m{$>?3 1Ap7X7 z4)efaCEMo?_9xG>k3*iaY_nR|=<^NLoTM< W-O6tD0HAV-2*C}CJe@&z<{h4W6J$h CW?D#@_QyA40q n=uDzG>bt6eK`aa~oe>b_-*-c8=Qc3Hx>%K_5E`F-k!hre2bVL{(uQ znJMOG6SsMH2liT&`PV4XYi1Msi=A%TQy;J2W>ZkFvA7Xexy$a)3MsUxOXlryf@;i6 zD>po-b7Ehi reA-(hI!Fi4~LPH4=U99E){tuoJn!S8`Yz*_j5z?il z+mr2iY8jj5j7%Bmk6%+9u$^Z%e|G%__Dc^X&?{D`)lI2^mT$j4gESINfKv9YN(_3S z*V0W3pV5|`_S 3y$G*3)x77WV~ktH~luqp6Xl(>f+5XgacCIFvCL`Ez;82p?-e$tmz!kwsDsTa*5G zB%kjEq8^WJ6r(}LZ%(M?YvdJw(j8m~L)UE!Z|Z`$+LL7Ozn5`HgS$#e)8H;RQG% zt59Mv^6_%URX3w`d@AmmxNa*U07*v-%_TAgTb3^Y7QK)Bz2ho<@=VMsQn`J^Wfv92 zrBzLCPINEO=e%n4OK~AzNiAFfljPog;HCwydHf~C%WI5ERHb)a2 Ae?y6PYeMAK zg=R1iRRWIkkh6uDruq_QDE`SJ>l)iSbr4iq|0G&)EUuLEyUvv2g&PD|oou9qSA{9R z@Rc2CVLB@aA3{*}pb2lKFMmUxYCJSg w&m$0UJo5v~)icN1c9NZaoUNTgp%UdqT{$8gDZ+_3W4$B9KtQ~s zw>a0=fYB5ga%b{~vGJ+h 5A=nY=%BJve0!&k@y{ir% z^_#Q+u=5AiA1O}ih3}E46yV=vn9{dBvXPQ1Uaqms1bWpM@v}J2*Hgsdt~;$$zK0Bb z6&3iFbDuL+TNUO+77trPGQ5;+b)y3TyW0-KxKj8xHzd`cf*zRbCd7FBiIXLm{@L9h z3Qo+ys}uavcJBkaCznjVDo_kxKzxYTI^nN%ZF_%IM1+d$T)eVG2{3S{Da1If&ttfl zQi8YPO8sR^#lIh7SJV1e|Izywf1F=#yo$*#NcP>{vUAs!7t>u^!rEn+ce-jgDP4H5 zQa<`H+5<1RHQ}W`<}h9m Pi;>z66RL3$cvsJRVC}uV?olBDyr7jyt= o&Y)E8vJ-28U@5jdorme=-SXu73Y^Pt9N{`WfJoYtk|~(9&kA z#Yu4|g06aW>%%679c+(DZzA;gmGJcG6f1fbtW@2$Dd<{c6ut7|#ODq!(2GXbV0iR) zqwZ9#HDKzHl!T5w4{4aJ)mJr!b)xuFto%_7jp!L?M0J;
HPZPf=78V z_O621P@ot;M(CO9oyo@Z(p&4Rm>9g&ga~Baew!Vk79o7>0egXA&u_~y1<<{DYK{>> zm$bzt$F;fNJ!k66emeJ<4DLgyw|LL*9&p30Jypob%dtMZs=dV<@S9@PH&OjA#l6*! zny(5i{{(Z!j9AaFEOQ28yT1SM)FMceNSjB@z(^bDw>Ss25mNn?LwC9{RrzNk%)nyC zEFa=VQ>gDSYxMZk|BLD*i!AwrWd8NHG!5PO6`XMszQ#|N1lhEd#BBOwx`*3?(ZWvy z!e0AS>H(TV6Vl()X8nyWQ5PT`5$B14Yw<1PlGQh3DmE3rKFyEG4_osJ2k7}&%5iB9 zv}<;0K5nVzmDI})M9Ps$cT9MmQ_oOEP)Q%dx@2$11zmsj{B}XZibeN6S7dXdNSlY| z@xvN@?vSOcJk;+?XT^Q4tmEs2eG ivpNm$8*St$NJ z!#5vN#x#95O)k*`jkD3_$hy0jb&A{Q9lIK_`%2kG^@U=ZcQNBz?e4i^ZS51=3fF@% zD=u{)#BF)=4XBgy)-AdTD7C}%p5pm)6$8hbYKr?hb^Qy2l^TXu75y$^Ql_{}^~DSG z8^z?cn-io@)85-cPk+fsvWzkM9ZSSx3JL~!+ph%%ZwIPBmHqm6b l@G2MZT)0_BpFo^&nmj3wd0NU9uNoR;yBT?EdmvCr4&rPKM> z25yl;gveR$IfWF1`M%xv^ki-CqAV0q?sDAqcc{#1`PyM?f0AxM+!zPmGJX~yWyc~0 z0}q<76cb`4eQKgK)fQkE!NmMdb0Q1qH=fYJkTd>`?CZwcB66a$OyG@P WPYHj0T;rL LuP46yI&dR(?i4 ii9>YzNNo9TER_F2+a}hgpn9;XRp)@AErnY6b4$ zDa%&@yc&ioOsE`-veC466>GAMix*z=4&F;E9Xa08Y{hlqmEASDzhboQ$1D~&RdBT0 z;)ZLx-mnw3E$JG!I^xJx%6&_56^pD5BSrR^0Mn6bjt-CNP+AC>YLVZ#Odm1C#QZhG z4-h7uB`LXDN-Qwog8gM=u>;cv_F^}W*K$mkSo{tRI50D6wZZQQS?qGS aMU+lOkpd=%Fu0z5sK-(GE9i3oRr`aoeJFMW!5($F$fQn>;m{J|G4 2g8w?_yoIGE;Nt1Y=v&p!m_L9$#j@LJJsd)gs z$?zVu&c)F^R#Pqi{A*J9{>leN82pt3Z)0u YGBPPV8VVMegKo$l1(z7HwV*Bsz=vCljfuiT>-%IaT21Z`Flm{-pfwHBuNwJZGI} z_8u5?EIudKHPDRp?Jaq{oK4t+u*7qU-jYRXPUe-@p4|m_&-Q8uwllT@#q={L> zJTZ&sg{hCI>YS-in_Q4eoDTE#B4{YWrXdIjp+MEHTUi$FFQJ*?lTnS_rFD!D1zwF3 z^6-MQSJYh<7l>{6{fqtx{%E}vrttE4gts_1{>G>XcoRqKo-gnaKp8#6BV$~skaN1U zYkPTK_dQO_pZnu$nG+^ZF>+Y7Q{kc2&d%+{>gkj&IM`OOnc^!itnuc~4*J;XIeZM^ zy#UwVE{Jy6T*(fg35|zlp%gGP#xSkiex4l8=OLHQFmz+5FQ0?Wk9o+=-fn$e&tFJW zrTR4~jr;S1X)cF5{9CD6*T55h;P# >DU4XI_llzO8gnYKup#^+ufdVqLzR2drJCy z4FZ)HmHMN0MK8^U7~s%LtI)P1Nj0^3qq|fJ`N*U9$mll8v$bJYcvE2yX4%d#3^0Gt zt`~dB!S0clu@>@meZmXIcgbI9y5r<1AA}Qdxg|U9Xm@sgP2h>M d|5iYbANAR()NBG!h(*+#QT-;oC=FVu_Cd zeYsuvtpI=XWNj^E=)k-AN{A2}&;0x+Qsq9MVPyZmpU9Auy4X(RfC-tP+Ss H*&mT#7!6P`GyP zB8H#d!P-gWmzf?;nGPn$yHAZ0eKWic4(JA^5Or=Q-O?BvzK;4)5j!w@+NGR|rdUk9 zjX_W|9Yu`@FGOMefaqa|N}he3gBqjxpi(XMb*GA@K_T5VB`F0BO3~M4BFA6v)C78c z9m4DnRyZusZh3uwB2rN|bYFI8sN+NQWbVe>o%UCAp049%W%Kj)-_gTN)_csr aNbbm-F?-%cFbKV( #4&;4;d;{PZBe=h1qwC1)zL#Nv^`H9Z#~Zwget_v>2wrBERPXhMh?J$ZkF z94_B(cRm+`vpjvZz^~S$Kn!aE#Tn7tb4MjR*?yaP@S&)t5*km E(xjtTla4^-KS5ENKw=*;WO+ zEU?U$_6Z9@70wp0{qvD kCXR! NW 0fP zosH_3Iwqcj>vCG8raHH11UJfenNjfRifuQJiHQ}={nr|k@b*L@R2eq{YJmk^ZV^LF zP*vc@ljqJF$?wg@FB#IzLRg@R%0nzr?ul(wBbz`m?ff7MXt>+2)5Sm5$;Yz8r930| zb$jPU&<`q%(Y9`LO_<&>@fK*l6dt_qJ_qy_DHnM5nM|I?d#dkGlWG!|_ $1$80T=e|9c`bFT8p|IU2 z3Xx?fDWgM@FP5=9dWyDR)PGvo0%>04QC^>cxvCk)Nqs=0B676Rq|^)+V!5keu=@=u z#E9AH>qoH7v#v@AQzT`u7plz5^a{~eG7--m^j~1!35l1}P<%!Q{k%PpxrSX`%nKMT zBYPjJ!mndCh#CRV*+EZ1eDmD3mxYC)f+DG+*WQ`GPiHBv!AHpWMl_IqNd geOPzyZY>%A -0JCkd*I1#z**cR5&jv#gyCpcE7tfdpa0)d-E1p5aB|#F{ z1%@0N8Ga`3p_{`w*q^x|f{Y3SI+tss-m-H9z4Yw=X&O_VZ)_C(XB8O*SY5qY{`{-~ zl|Ud^518J8( XHLxQoYAp(`8_mcYj0()GL8vNJ zWFQQUJ&^yH#g2~6N%^1UhTJHT`+^p7V1NU7kc1*3 J}0V ze6||{wTsZlyo|L@{yZsHtKkJm8(3M-fLaHDF%Ad)S!gh?zU0C)IpfI}obqi7|HBAb zMoQBIdV& fuVB&jG9xohsd0!Zvpiv=A-UuK@ @0=|uz=q(`K47`;{%e^#H{>@S*kj26s5FI?)#AQQ)DbAW5b8)U_Y>x18c$FOQA zr)zgeLGRXQVB%x3JCRv`Y)^(WIOcg0f^!MfZlE>K`o)F;wyF54?Jv7k{c`}QwF9Vu zq$NKKp5~XCd7CD4`I%sq?b(nw?8^^8)*`xB{@|6FK~$rI(i9LOuVUiEnlbh-fFo PBoC!- zvKZ1&Ss>={1hx<5a3`p_xUI+pn$zgG#JItroJbge1Vg@ypecjk(`JT-A5k%;BKw zpchgy5UX>}`wy$SB9D{jU$bp899yoa(!3-;6i8e)b?5JUpRJnE1H-fjsPMNovaa73 zM|hh2J#P2XhjLFV7hm%BI9Ev#PFh792TK0(yYQ;MYx9VmkbtgK*)qadz%^fk>{f?Q zWNVfw94_n#M$xQ(LhE$c)X9=;3AT~g^-SO!L7pQ$vz6)>m-jA=?y@0UI!2%T8eO~} zXyQh2g1L8m*%=p^*a{Avo0unHSz^VnV^%lvzA@HCddcO1*x=m3J%|X)zw@{Qx2m#F zEP`kkI=1|73e1a)ZC}7JI$TQ5a$;f@6B)#Sq5-bKbR}j!ORmfgJx9ty g9t&k=h?5A6AB%CV%iTQT#qt%VsqFv^}i7#|YP7Mru76 z)B`13H}T@iTJ0^`LwHkTSP WsE5)YkwXBmi#);sl@0Rb~(d@ z8fJnlA&?=jq+ZrG!YKHV0t(KPzTu~rG=%gk`+v|E)O;P_;sV+lv%OZPT=4YCtNC42 zT0 tw5T*$YL&|4v|$NK1MJ0(n}?SeK2m}*MsuY23jU5-LRE~T7Y zjgv;N!=6f5b8ANj?zBEJDea- 8C)-luT2nzqX?jCJ~t>W81i^t9wEt8B54s|2=TG$ zOzr4{ A6qq1!3D5a9=SidxW7^vdW zAR66$0iyx0b`%w6-i1Y6wbOh&Fd||J%C-NnJMZ=>i-G1YsXDm*I2CvK__y5g`r_c{ z(*pEK7Xca1H?kI2(t%2YL&29e <`R$sZX;>2m&Vt<)| ^gO-}%|v2W$?T*(AsRaD{f*VFz}ta`Nl zLuS86clJ&K1A5qN3>nSD#mVzR!2@`Hu#o1Uo_hNrRq9K!twz!vv?IIoC8%^j>H` RLA^KhijNH7rGB{rWGIAdc(Mm)vyj}vU7 z=1-m?peo1Fq*=Zk<|XKUwLG 8A{qv&HWdFr6FXA$G7EV(fXA*`J_6-0qFA+nj5xz6BYM(kZ{p?ej$So_e*NpUxb+ z|0Kg6UbFdNpL?VPID3#mxOu)JC$Wc~8~m2QZ&4gJk`u=Gismd`pt{wuKk5yqgTic2 zA0j-=!2~iVqfoNVP1VbbvC6Ba%X$@7;C+iP=A8qSo`4frljEP2Jtlq{uM !z|=MDfdNbXiRf&!@iYhbUo`#p=Qa+4`m9CeBz81(Imj&K16_j6)7hw38%4clJ<# z7|R$@QL&%#0$vdbRqkYgh%4N+{)>&Io3+Zc8mmE@Hy7Jmocz+=@ZnMk{)hMKNv(1g zZ`MA>A@59!R)=eJd9kVcf_*(WJX7BlxR0)Bv8375D%4J$gHe8t08b^z@lQ)rcTv=z zP@Oh=@@aQM5rcz*iS^a_6+uCQjJ53_ba$avt}VsO@Kk~v5)K)^sb1jBal%#)tVF5W znvE+WXvmD&G#(o1FK4e&(N}gwD+hP&8O|#9P<72%1tBax#vTz;igPz>blEQ;HDfPH zmq3mq=ZDT=rJ&CN9N>{6nB?tW2_{o@&@tXiYf|D$rK1Dc&hoF?7l%e9!`tYLd1=0x zQk7RdIx9=QkduGs2fWQ~&zJo~+?eh=kI4xO(%n`Z8|6c)vh2?kCwZ_a+7%wkh4=pP zuoM-j)8_zoL{(%Mgt(tRv~J)o9*Fjgr9FuUPhhYa6y?v(FbOgr1a`Ld2Wft6l^)cy z33Q6^U0*h&TF5X#pZ^icC<`*A8VStLv25^~?C>8%CBNBfN{}RG Q-205wcd z5#mq^6`V@B@O%+moOpU?yrq!5@9&Bq^}~s$N7@VZ#@U}(ih%yp)Jb+do$J+W25h`o zl=Z|#aa_n=Q5^k+LZ7^m92n$%XGy)|{T3FDb;3}pPq+}F=UU{x;v7FZ|C&*p?qjlw ztazJKCjX+SsyEpx9tqvYZGr-tM7!jo82Szt2~HO4PN}!0#j01YPS`@$zBaRf3q$7L z>JS!QZWCz=iqj{VmdZqbxB@Eh5&A!gze~(0X)9=~&Kent(oI(dQ7V!Mpyf$9J@pT& zE}eAcbmI;K00_YjX>;nktr0eLLHNIVdO6qwUmobAr$>0cg^6OwOyi;8fHkTL`TLYJ z2>4_z_^y}|lvOpCgZmw-GPEyT+p1`1_G*CdqmFn{pKJ%@tu6J2u%1kI{+u+bzj=NB zkMKYt ; >7AzP W eg)?al)n?gS>$qJk%%j=MA!a^)M>MS5A T))jlK!A*}@yj;efiTz+0pt*VN@}*Qnc3?vzbcD@}%GDtPu~gnk zK=AkHu6KWF{>>(7ju%GJpP0L2wUe8~Y8`gI1e!-E0`in^oT>dDUhRyyG%sbJU!HZg z -h`F2Rx z^!2sEH`Rru%yaRH2Q0J4vhuAWy=21O IX@X z**_1@ktUVJv^Le4H$CD;!01=ZVeVA8N35>2K!fol*t~+#qpNbrxscaNU76?dZtb$B zc#dQaRkpukqwS>~^^?oWS-{_tc$VT@(;qyeT_wLup!J(iF`aw`-t*sE*iJR}pf6ld z!oA_eq&GgK#3w1H;D9v-9k0h RvI5yOL{>v zGZqy;XNiXgeX i&hGEgoKn8vpsY#Q?%85XPrHlrqC-5x{E-#Z6pZ e_DDB+C7VmRN z2T6oX=JSXg-HN*l=?))+AG5RNS0CZi2O1xO{U2k6Ny|f}%pSaa%p{Yr*UG=sSYgxG z>bor3*=>Gr{4 &c+S7}vK-WWlHw!6LYbd CT=Fu@Ru};r?7M& z{i`@il+uQYi6v5jI9%I5g?+j$2(H^bWGH17;GU>)-fh-eQckPbqo46H$t$YEihrkk ziJ>3hYG%RLB*pLvhTJG5Tbd7o=>YbV^zAV`pn>MsfXSrXZ`w+=b_34%*Q~zmeIxR; zqWwRjGDL@?&>6dubbtOFJ)1yoXV^nPTu8rog=Tz}SpWs*r#O9OQ9wovJOztFc%Qa_ zVaV~*yr#*#Z98?fyi`P1>r0jt(iD+?zBPu^0M1{cR`t{s3c@}G%NhE|*=i$aRVm6Z zvSd+?Pu-`tPSK?JHKav|X^)r 6J(xoi$KMdwr!K@(6y%p^qM{R5TLe-7fw78x1@+YvJP;OM%` zjl(&z*N_jqZrs!p*nhdc>*TqgXNf`N&^7vGxDPxN^sid7l8Wz%AjNb=x|{K^-Ny@) zZiMz`voY<+ieX{;(wtzQqWL{M&TI?r*OxsKIYp&Wm*KD8xq-pKdc-8v*FH~M2>zg` z$B%4_NGR<%g0MCzb}#>9J`jiu@%jG(+=p5H@rx9qj&ytL&IH^bQWxfk5u(>~#_QD< zd*ql%%gybt5HI%StJ>(VFy l` z_XAD1!9VA?Rl+IYJ~Pnyna#;THpR9sYn;vr+h3;YWaexSN}t>ZZji@(D{SpyGk%dr z0en)gRKF(L-BxrR0HQc{P D{P7 80D#$__1E)}bLpN+!3K9iN2JG{$XWD(I>$xjeJl6d+Q zM+=2bO!&Qs*4} `32TJ5y`S z<{&hvtoo$fg &FJ=PvdnQPO0EyBa^)nlYqagOjY$C*?eRNJh#$2F&j-~ z2x(7V1V1& JN^;`D%Xo^2L*s ze6@Ve __ME^xXTI-j2}#NgC49!#ur_(n95TsLXXsBBese+BocL zi WDzVf627wf<{* zCN}o9Ie(;R)cC_^58V{6bivGraE4&%M_Ml;Y%l0Hz0ec=UU20R_wD2)Pz*(@>|uFE z#&ULc#`3!6;h6{AS#-*q<*Gj$+v{#JDF?`+KcAIX{_6|5@l2H2W9RWqW&g^|q=~wO zyJVvA+sQ$;daLaSTiNaBiiCzLG4vao$0C#-wv{;G16fmu;nEKeM=1I~MyjJweBK>w z@0Q}F$*=}~$1BK~4U64M&&%$G-c_1dcf0$2*9>iA*7d>Z8eF!Nc7d{}!%zju_g;tY zeKLmIi+#_gC5@kkdIo<>6>!=dth_*dFLH0?ZAjC;E+@Vr)m?}2`oRN=Cf7*fZ4!KG zZ4f(@09J*=rJq-pR36DL7X3W9ak{rJEUc4PsIEJVzre26Q=xWC1yR*%H2?m~fqz}` z<{e6dQ$arbJ- l1%;L(=Fo6s06mM)#&QmwH_NW_wBj#DRbNap%aCI zH{a!rN|K`ubkS`HR*AU@#)YeKe%();f}44Qcqf!R6+qoW+O2_go`)5t^Eh~Qhw-nm zwG`nu)^DU`an2>vul=#c;FpEvlWFSPn3q&k*yGMkG3bL;RED=vn5UxdrfhyGho9UI z?AExx5X5E6NLOR9PIta;LOK*Oy>0j4F%jQBidx%w{*bwKc3|PKe{SN#OSj!y6!eeI z&SpfF-&=+&Wj7S-gjy0JuEf)o?pI%jV!2X#)7(~Gdr)b#kC#)j$}uy(iwJ{~0e1q~ zjX7V&V|QVps#(u^Vt?EHN%Mui8&xfGN%2$%-Q8y6hP;g!+T~|2a#Ew$U$&YJ8!Dvi zYv^9|qgu*aAUnpN o|s~%<}+ncWVDz5F69l@$hY@| zkB{&)aoZ(!lqo*M`iSb8y|Xbe@TI+MEifodiv$fTRXW^Sbn?(AdtjIZmg09PBW5X4 zPN~@0`@I|i?5`%y{L*KC;>Es{9__5|E-v-n4x6ts^7DGGNtw$EdMnD(+Po*!i%8HB z&fmS{mU8ptqUh&}g#m$?`PQ8J(lrHg2<9K{R@b`P1HCB572WqS$?8W|GqMjym7pyV zFj8l~f$=q|`PHH|-4m)GsB=Wz!Ne)UoT1C475AcHkx*oY_K!njs{$e3uOjyA1*<%5 z3FlqyyVjK!CFo pT- ztFpU&)V%(Ay=#<4yT8J>m>HdQ=dCO$^izvSM=^U}L!vNgp>C}#YPLfUGIOYHdeplu za$^2qLYjWipa0IXEXA2PhK8%BUc@VE`f44y$Yuv@N4o|#buVasO#AW93>%efbe^E2 z?=W!Cw3IWD3*8&aYCn`mo1F2DS&8P_7bI+QQlQ3VQk^Omw4?Q9dKVM*gZ<`Jh$g{? zP#SIqll~99(i=i_9N3>X)=NMWa*0Lqo#$q1nv#DDtm9*3M?FVF?0+MIqKsud>g|zz zDWhmgrEcBL)T(xS61#I)tj2C!*J#dsSLcV}Kou(&%Y;kpQ%QFaq)g2}2la+TeFeQc z!ALMv?3M76HU;`w9XsiTRKtk>@t4TjnVWQa6iX)F1NxM^GaCBMJo8DU21I9V&;?!m zbfK&^ah?t;&z&;Nn3R>6Oqyql>UG z36Na2Jn)s&Tw`SCdg z??9p3Ya_`i1%0a9%G2sSJ&DSrL!#V5k|kXm5wes)ex%Y@sMP@3_;6`)$&UQ3(L`~_ z@h9J7|2~r%6y}|jUKrM1rwgl_VKt*F`QP2;`5L1`e?JLSr?T!P$^~qn{+QI)I!-jT zYhG>0;o#|^|59|F!7{Rr?vPgeXN4p8Xnad`%jk3Qrc?ODpZ#ilZ 7}lOnnKC$6eL-;gZ?_BSS;$SpGUQ41J)<-WKB2kku5wW>(o1Z_{_OB z7@|-*Gi?QG rDso~ZrO|!-%u<~$PYBnF0rL~C%G%abpL#F)$ z8tGiJA@iAB I%+ntc}z#~@S+s!7Mu85W;q1!srs%Cm?3m>1$Qn-*gyA=yENUH zq<3d8j`oi<8-{bbS-bKUnkC|&uI8Tzsa!!I6jvZl5I}EBUu1`?{m-I&NdU00;eT|> zO+U?JzNwoK;{bv^3*rz(HJd~}sfPYojA!CjRW@uzYAFJ>3S_@fmWjALLwd|$<7d%k zUHdN6ZUicQ(7P=_0g{(D&_k$!Xwv00*1tJCkL3l|zFAQ~HJL=d@p-_E87uw@mxApm zn#0!7d(Mm#pe*HK`zf-i=LKz6Rj T1J9 z*dS0wv?&7w%KC{v8zu}J+&TSluy|4S?^Of1NA1YQ--yD-0*Snj7lFcliMxc|Z2Sel z4VrrRDKcZmQ3KyY;tY>nENTXe%|Y7o^CvKzf8m!7#adcV3Ze)u3_@eUaf-+R)8iD) zNdDHoEq^VfGK)?PG+RXcx1%hbrC55z_jZ#=`)Z9?ItcdZsq -~U6B7V55!Eel%$aD_J;sT@l&)z3^$9r# zgVD?{BlDPdeg3!tSqS~S9oX{!O=#MO!huWDTlNe7zu9p8`}M~Kvqdd$0$Sq+; zSWz!OjbI}l;; rwe`BY z$ZKfOOME@C;@V&;?GorzA0FvPvQ3~z{(#|`clG?efpR<$1A%}Dt%2}W!1q@mSjm1R zAewW4aJ%FV{sr(olJDol(IemhA}N#4PIF Xr4VLlkX+?s5pAHN+26z`T4$qxkpr(zXL}KYoab?ljd+D?*=c~lOC>NXO^6b|D zJ=+&KFWv9KeRhs=ZTK6Ia6akvyM}XArq=c)o{hU+1r?L;#1Mg?{7!)jekv2K&$1DC z=Fo?(A_;U*+_h~YFsj$V=D7+NhF7a7L-7DgZhzrdbbCVMBVgFWKaZ8^=Dfr)#R(rh zb@kFjv)%*Lv?uvsHXhsF3%aM5BoFlOOVd5W4U5pgMOR8CK<&M!qf7C(_!47rkzbnh zSogZio#JqyxVY0nar~jJfPqv`+`N>L@RH8NFO>M|?U6M>>&RxUlE$I+B`Vh`5eNvh z 3#Q9kVTwU9u9 zGN n_WbrfF$7VhBgx$V!8#XvE6%+G$v z*ahgzC*YX4g_7mJgm@~V*+t0@_*e=w2WxZ(+<_eP8i_rMFl$1i7QuOGUEBpQHM!l! zFZ&^^K$Ed~%q%mJ-3fcCx+`&XCT@+dF7bheVRC4;-*wdok&)(;bsL5hs4AKroMf=A zvSluE7QzyA!%_yEG*G&R_@R2z2P`}uu7N(`1Li&}cz-=4v3k&c1?U6!g}^^`Blb%~ z0PorNEp|3rufTOSKgca0)alROUJL^60uV~P*c_ItB2WYsC!D9Uyy&xB7+&CMCxK2y z0mUtG+UX@vv!d2%SG6?cd1|J DiE@?qC_DQXjF%BS!3Sb-2&VPUlsu`aJ)Ehb^Y_%CjJJV {#>3rR_NaPn^Y+JWT_ 1-m?wKda&Vap8H2Rw0%QPMDaW40vck zxg<**caF-^5p}HUpHlkg;O{{~O-nr775BX0(VfTid1lVn-wW91;N}-}1t{97Ym-_? z)(^a|E{WzWJtG<7LsmVs?zxa?fG7lH_B}94PNghn39Haz#H5;QLHL;6s1 suD45Hy!hP$jQ=n5&=n z!7rMGmLsq({Z|f~!%J8-coitI1z*`kAGBK`g-W2glB850zfG#_*-`Y8qyHEfp~*FV z`iM>GO^Dhy2v cAR*Ew=G |-9{A4x+9|r&9hl0wYIq#)Rj#w9K+E@u1OXc+gEGjK1 z>x;bF2h zYP#N;GS2Z^CjF5W3h@ZP2stq)h2e~Qx1ey{*jR6`*x8J1XL6&5#2EkE=V;JDn@QxC zfO@M1sgI;r3?0P#Tv3Cn>qUIVUyD@`??J%*4Q$%5_oJ)Bp2cctBPN5oLG7W$!~zOY z^gY8W9^ZEjXJfka+If>ECnzspF_@$g{(WH815pJcE1H8QRTe9P%R_O~ZY@SlK0ez* zS(^)^wUrlxPHMCM25&l)SamYCB|fwun_wuy;<7;1*2q>Hl8KE&o7D#_usae=IN&h) z-m Yvcuq_*J%M64r%pfib_m0{(7S;{1O4gTQ~cg$>m;dO41E$@C@2&0>Bg^~ z`Vt4EQ;%cpmziZX%QnmG@F}%~T0jHf4!}Vrv*yumZIW~NmB9yOyMBfGspSukmrIUZ z7`!k+usLY)I)xaZ3wHRdI2m=$c~1+tHC~k9A|oOmHkmMaHdda8x^|`=j?MI4|LI|V zQQl^4Ms8+=YxD(2v51v6jBlagV^C2Io@e#-{WCka2=5helaRw*nnYtMyby#c-7F!x z1=OzJ2KIhrQ}FIBUCX`QsO~mWi~}<_@YXD {?jpt`N47S`FkLGQ zNL)BQ%;V1+WU7OtJ9~&cTioc9(&X?CZlN6*vAds!PtE1+Dad6P83hyGt&8KyA@@?V zsLfW-7_(_xmLC#vEc|D+S^IeaVr>bb6iUPW0c*yaSKn=Y%M-0s>is6)&_y8Z(&`w_ z+`ff|>YZdxeC*kMgY%P3`x)K-Iwm`xMzR+!&KiIYKC%7-Jm1ZDq _Sl|#+(m#REyd`$dY+N@xi z-tDf9Rl1vh_b9r%nS ^c_OtTV{Gfk~vR-9M-w18!4G=x(odE++f+%6+1rk>Rn64 zkG0h9Qym9P8Cw}x2>pO$nmMinRouGUGlq(5P>ML*^A^u^UwxfF$_+e97o>aF=wH$u H*wg<5IEy6b literal 0 HcmV?d00001 diff --git a/Projects/Foundations/Schemas/App-Schema/crypto-exchange.json b/Projects/Foundations/Schemas/App-Schema/crypto-exchange.json index 80df69e6a..0d105de52 100644 --- a/Projects/Foundations/Schemas/App-Schema/crypto-exchange.json +++ b/Projects/Foundations/Schemas/App-Schema/crypto-exchange.json @@ -119,6 +119,10 @@ { "codeName": "luno", "iconName": "luno" + }, + { + "codeName": "okex", + "iconName": "okex" } ] } \ No newline at end of file From b3849826e319a6bd4d379b03063478df308b100d Mon Sep 17 00:00:00 2001 From: Smidy13 <77650800+Smidy13@users.noreply.github.com> Date: Sat, 19 Jun 2021 12:28:22 +1200 Subject: [PATCH 02/10] Bug Fix: Status Label Offset --- Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js | 6 +++--- UI/Canvas.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js index 9edb76d67..b301e8300 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js @@ -28,11 +28,11 @@ function newUiObject() { hasError: undefined, hasWarning: undefined, hasInfo: undefined, - valueAtAngle: true, + valueAtAngle: false, valueAngleOffset: 0, - percentageAtAngle: true, + percentageAtAngle: false, percentageAngleOffset: 0, - statusAtAngle: true, + statusAtAngle: false, statusAngleOffset: 0, run: run, stop: stop, diff --git a/UI/Canvas.js b/UI/Canvas.js index e305512d1..1849c1bbd 100644 --- a/UI/Canvas.js +++ b/UI/Canvas.js @@ -393,7 +393,7 @@ function newCanvas() { UI.projects.foundations.spaces.chartingSpace.onKeyPressed(event) - /* Shourcuts to Menu Items */ + /* Shortcuts to Menu Items */ if ((event.keyCode >= 48 && event.keyCode <= 57)) { let number = event.key if (MENU_ITEM_ON_FOCUS !== undefined) { From faee98e2abbf6e52c24158803c0c7c3307602195 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 19 Jun 2021 11:08:03 +0200 Subject: [PATCH 03/10] Status at angle default fixed --- Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js index 9edb76d67..6f3a62f90 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js @@ -32,7 +32,7 @@ function newUiObject() { valueAngleOffset: 0, percentageAtAngle: true, percentageAngleOffset: 0, - statusAtAngle: true, + statusAtAngle: false, statusAngleOffset: 0, run: run, stop: stop, From 1e27fd1de07c2b019279210e0ff6ca679798fee4 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 19 Jun 2021 11:14:53 +0200 Subject: [PATCH 04/10] Bug Fixed with snapwhot feature replacing code --- .../Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js index 10d8ecc65..35f3bf21b 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js +++ b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js @@ -197,7 +197,8 @@ exports.newFoundationsBotModulesSnapshots = function (processIndex) { if (nodeWithCode.code === undefined) { return } try { - let instructionsArray = nodeWithCode.code.split(' ') + const code = nodeWithCode.code + let instructionsArray = code.split(' ') for (let i = 0; i < instructionsArray.length; i++) { let instruction = instructionsArray[i] instruction = instruction.replace('(', '') From d5a521c2fdaae1f9f411906926b01eef4346bc34 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 19 Jun 2021 12:57:44 +0200 Subject: [PATCH 05/10] Splash Text implementation --- Client/WebServer/index.html | 61 ++++++++++++++++--- .../Foundations/UI/Utilities/StatusBar.js | 2 +- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/Client/WebServer/index.html b/Client/WebServer/index.html index b5114be9a..5967446ff 100644 --- a/Client/WebServer/index.html +++ b/Client/WebServer/index.html @@ -32,7 +32,8 @@ } catch (e) { console.error('CJ protection', e) } try { - loadSuperalgos(); + drawSplashText() + loadSuperalgos() } catch (err) { console.log("[ERROR] UI can not be started. Please check that WebServer is running.", err); } @@ -48,21 +49,65 @@ console.log('Error Resizing. ' + err.stack) } } + + function drawSplashText() { + const splashTextArray = [ + { + "splashTextLine1Html": 'Superalgos is open source, forever free for everyone, and is constantly improving thanks to the involvement of contributors:' + , + "splashTextLine2Html": 'Luis Fernando Molina, Julian Molina, Andreja Cobeljic, Ira Miller, matbenitez, bearcanrun, nikolabjelo, 9808us, pmmax, suttridge, Basalt09, Mhnramin, 0xperez, infin1t3, benitezme, whtv, cozed-gh, Eduardo678-dotcom, Smidy13, teehanming, 64bittuning, joenij, apronotti, Noeljarillo, ssplatt, rico4dev, DougJCook, mane, Cordo-van-Saviour, CarnivalBen, Sil3ntLight, pisukesoramame, Edodi, harrellbm, CaptainJeff, Jeff Braun, Francisco J. Santillán, Norman, Viktoria B., Guillermo V., Daniel J., Javier A., Gustavo J., Romina GS, Pedro P., Thais M., Andrey M., Loui M., Natalia, M., Bashar A., Carlos V., Diego M., Sebastian E., Bogdan P., Marko V., Igor S., Niksa K., Rodrigo M., Nicanor M., Mateo H., Lan T., Leon A., Uroš R., Filip M., Vladimir J. and Pavle B.' + , + "splashTextLine3Html": 'Please, give a star to the Superalgos repo at GitHub.com... It helps other devs find the project!' + }, + { + "splashTextLine1Html": 'Superalgos is a Community of Algo-Traders, sharing knoleadge, experience and tools between each other.' + , + "splashTextLine2Html": 'The Superalgos Community is capable of collective bargaining with Crypto Exchanges to get better trading fees for all members.' + , + "splashTextLine3Html": 'Become part of the Superalgos Community by making a small contribution to the open source project!' + }, + { + "splashTextLine1Html": 'Superalgos is built on Core Values that we are never going to change.' + , + "splashTextLine2Html": 'Superalgos software does not include Ads of any kind, and it will never do it. Superalgos software does not collect user information of any kind, and it will never do it. Superalgos software is Free of Charge for all community members, and it will allways be. We value Education that is why we build into the software educational tools and content.' + , + "splashTextLine3Html": 'We build this together and it belongs to us. Become part of the Superalgos Community by making a small contribution to the open source project!' + }, + { + "splashTextLine1Html": 'Superalgos is Permissionless. Don\'t like the UI? Don\'t like the icons used? Don\'t like the Charting System? Don\'t like the Visual Designer? Don\'t like the Visual Debugger? Don\'t like the Docs? Don\'t like the Trading Bot? Don\'t like the Indicators? Don\'t like the Plotters? Don\'t like any other part of the system?' + , + "splashTextLine2Html": 'No problem, code or integrate libraries with your own version of any component and we promise we will merge your work and provide it as an alternative to users. We believe in Permissionless Innovation and that users, not team members, are the final judges and the ones who decide what they prefer to use. You are free to create an alternative for any part of the system that you believe that should work or should have been done in a different way. We will help you integrate your vision into the next release and enable a way for users to choose between different implementations of the same functionality. You will also be granted the title of maintainer of the functionality you provide and have decision power on how it evolves in the future.' + , + "splashTextLine3Html": 'We are strong belieavers in Permissionless Innovation. You don\'t need to ask for permission to become one of us. Make a small contribution to the open source project and you will become a member of the Superalgos Community' + } + ] + + let arrayIndex = Math.trunc(Math.random() * splashTextArray.length) + let splashTextElement + splashTextElement = document.getElementById('splash-text-line-1') + splashTextElement.innerHTML = splashTextArray[arrayIndex].splashTextLine1Html + splashTextElement = document.getElementById('splash-text-line-2') + splashTextElement.innerHTML = splashTextArray[arrayIndex].splashTextLine2Html + splashTextElement = document.getElementById('splash-text-line-3') + splashTextElement.innerHTML = splashTextArray[arrayIndex].splashTextLine3Html + } - -Superalgos is open source, forever free for everyone, and is constantly improving thanks to the involvement of contributors:
-Luis Fernando Molina, Julian Molina, Andreja Cobeljic, Ira Miller, matbenitez, bearcanrun, nikolabjelo, 9808us, pmmax, suttridge, Basalt09, Mhnramin, 0xperez, infin1t3, benitezme, whtv, cozed-gh, Eduardo678-dotcom, Smidy13, teehanming, 64bittuning, joenij, apronotti, Noeljarillo, ssplatt, rico4dev, DougJCook, mane, Cordo-van-Saviour, CarnivalBen, Sil3ntLight, pisukesoramame, Edodi, harrellbm, CaptainJeff, Jeff Braun, Francisco J. Santillán, Norman, Viktoria B., Guillermo V., Daniel J., Javier A., Gustavo J., Romina GS, Pedro P., Thais M., Andrey M., Loui M., Natalia M., Bashar A., Carlos V., Diego M., Sebastian E., Bogdan P., Marko V., Igor S., Niksa K., Rodrigo M., Nicanor M., Mateo H., Lan T., Leon A., Uroš R., Filip M., Vladimir J. and Pavle B.
-Please, give a star to the Superalgos repo at GitHub.com... It helps other devs find the project!
-The UI is loading...
++ + + +-The UI is loading...
++ +@@ -196,4 +241,4 @@ -