From b51fdddf709b7f286d5b13265786e4b46afe3cc4 Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Fri, 2 Mar 2007 20:29:27 +0000 Subject: [PATCH] added: the program shows some kind of errors itself added: checking whether an user inserts a correct value of a variable or a function added: a last column in the variables' and functions' list is resized into the whole space fixed: some small artefacts on the bitmap in the about dialog git-svn-id: svn://ttmath.org/publicrep/ttcalc/trunk@20 e52654a7-88a9-db11-a3e9-0013d4bc506e --- TODO | 4 ++-- res/abacus_01.bmp | Bin 145976 -> 145976 bytes src/functions.cpp | 42 +++++++++++++++++++++++++++++++----------- src/languages.cpp | 10 ++++++++-- src/languages.h | 4 +++- src/mainwindow.cpp | 7 +++++++ src/tabs.cpp | 16 ++++++++++++---- src/variables.cpp | 45 ++++++++++++++++++++++++++++++++++----------- 8 files changed, 97 insertions(+), 31 deletions(-) diff --git a/TODO b/TODO index 33bdbd4..8b81704 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,6 @@ TODO TTCalc new computer) * To add some physical constants * To make the help -* To resize the last column in lists (variabies and functions) to the main window -* To block the possibility of putting digits as names of variables and funtions +* To add navigation from the keyboard (in the two lists - funtions and variables) + diff --git a/res/abacus_01.bmp b/res/abacus_01.bmp index b750c4d616b298c8fbf2bb1fad82391ee6862119..4e7bcc13101f701940cfbc66cc04c9599e7af5f8 100644 GIT binary patch delta 33872 zcmZv_2YeO9`uKe(Aksq%1OlOVLa)*UL_w|;3n+>O6t7oBuz-pXng~i?Wfc*S-dlhJ z3F*Bz5>iO-q!B{sf%p5&2E4!j=N*#6o;|zs^g6RA7jM7Zny2UoXzjH}p%abQX$3#DP@Zk3CJJ+sV%g)Zp$^0&3N*%DlY%@UXBy|NL{| z7YkmQHg&=am|QuA_ijlR#^8wCsQ+?Cm^>2Fou0# zIj``8^ZFx!Ra{b>lyddl`ExsV?AWqp%P0T&*qB#mMeCO?Uc3m^Wu;{W`T2Q(*RMIb zIY$4f4o1^wvqr&dFa%XzZw+_2}{Al9JMbynJCzZZ1rMO*uIhlxua9UMegqEGaF$d+)A>P+BfTl-;Pf z!R!?kun2MhBQNmk-aRCL7wDXT0S|%nuo?`?D~t#Az8TT-=bwLuZiG@;RFs#S16kGp zpa9Luv9OTWJOm{~7Z!4@aio62RH5_n#x2kvrA#RV1jQr*sBcj3A-LkXt^7F1=zn)hBf1a>d(BMauMI(`C z%x`$(`RYfH_+hRJ&Fs>$veMGhvK!?{5W)cj=WpH=;IQMyjdG-b#)4*CT>RHxef@&5 zz0soQ;D1I&22>RnUx(%LqX%^7JRz7*H7fZ91wuU76*G)+jWfq#O%GscHNOv-yuAEI zNl9^ONipDnuQ5T}@7%a?v$(jFn-CTFWM*dmx^3IU7bf%@V9d4ueB||_qRfnpwDh#> zoUFovLJOQmLqG$vprF8d<-j@yiK3$GMc0k`P1>t6qgRu_@xaGqA5~XllNiAD>xIyS zUWi`bxr59(S;T$Ui(nO!C@C%T@%H{=;TI#Hdv56Pp%W&&U<_#bnKRm!o}QkWo({Kx zD&X=3I*2jcJeoFE15kkSvhqr}i?A!j_Df5UIP)U$8=TC}&OUYO)EA#Gm@r{N_ntkw z8TXql>YkmIm7a#(XBQO}7MI|mK!ut3(P+tgh$?d1*4$3@M^2){dZ0xzdub_vIF|D_ zE3+~)FMD{bUbA}EtXU&RjxYjReBBi`re|knf~R%8$VrA4m_7oMF=L{G@l5Mx#^hG^ zhT#zHB2EBJsi-JJX|;?10%>P}^AQuq$hJwN(abS63P>ek7V)F9@6E67wAEn0ewi(ZX6P~85 ztQ>~~+iq6egf?arH4(+BB<$U}U8QZH<;kbxHu2nd*E1h!k$1$y&D>5HHhz`6N^ zq+GFV2_U?PVHum-Iv8I#*L@Zdpp6w<$2l2)ID3x3c9AnP15O;uO?+z^41qN_#r=u} za!1kiVs5(s;6AqR>+AdBhx3ii?Pt&G*0t-K1Ut0Q6nj(G>C#Cjk{07`XKN z@5hWC+qG*~7Z;b2BS${3$AEzYhYT4qc+lW3-MUON#&v$H7s{Kb*#cDv0Y3<*5S*5$ z#tOBTkWgX-biVUiQ4wrHEeHcZ;s9V=$`zWAyp*EQIGg<3`~ZLdO`A5o`PS@VLx=S0 z)vI^!UVZxX?%uU)zrKB^Pn-VfXP<93&CIM!qjA?sla?)89vT`-!iEshM+^kTL3@}O zOMyg*R{6Q85;$3C@rvSD90C_Xr=ntergAXcx+c8Fr|2Q(sPPiT1W5$PHR5D%RA515 zE1(_`5rJhb{bA|bZ@>NeYp>6KYxeu^y|;YXvg5~&MMg$4!-I$9bhoj^)NT_d!n>Jo z&Lnk0vn>~e1|USRLy~Y1)8V7syqvs(JWLeHf&qfjimgGTVe`6QpM_>}I)^K>v+*J5 zB1jUBkiVse=pu7VI(Yjw`jVQOidc`IIC1#!;o~QcU%GTLIywq{z?Xv_%9)jwnVykh z?C>82SiAN$UMa+2{sZxnOzLRxZUga^CUyKXT(Q96_e3U z4a3ANAzr(2{J11x;zuPXAl1DI2T51BIN#{g=dBUFd-Zz%{rAtEJICjio?*u*e{K%> z5d@Zs;1GybJD_t8%K0(8`rI3f??K>9&U|D_Fba)hCRl;S-n&aJqBBuolat}Uh<;@f zbFpu6fxBlr8jbtDFu2Wx@#C?JMbSV&q3r;v=!qKv3F zyBMRU)-z5FnAzl}c=l4Fba58ROM1Fn^MNf@OR03wH&T6QW56MNvvGf>i}Bf@saPdVc!pXMTQu*1Q&m*Nwp=-l#oPqRPe*5re2E$o%slE;C(=2($TTW@3NM zoN^j1Ch!#)zD*sB{$uJGho0N(fY4J?Qrtb$^YbiQ6pjfa{_Jg{c^zjz9gizal}MAv=(_a0IVkk?U%$y5&>+`CT-RzDf5PoNHF!Y|7^)HCY8`q?5NQtB@`RgUVo!e*XSsbO8YYRE>Z!LM9(<@aQqT%g)jUY)$EC9DMoQ zP>c+#g%X7;*Le4pz4fq%ENvOaqSpo* zBc}#;l_EMXmuN}PNN&}4qaKphSKZ3Y%KGugwZo0>)Bd){r0{<<9bonoeoy~*7o*8^ z&+fQXc#J-9I~I6@Vx>aTIN}QKZr{Frlc!7`HENV`Yx=H6*;GO>8sa6Q2tmT`(a+Q~ zvSys=NmhRE-hG+P%Aj$wQn^W{#$-t2{JC>qe)-juDTc?Zd+bRUkUsNRp8M%+qoy`A zPQ7-r7uG^RA&lVSVXve%B3uOON6*LoVW%lQhw0OyYK${>8JBQ`sj-9Hs$py)rT*K$hTf;i<+_{tVoI6P`2?7$P2xC&h_SJ-c@A+G7;IwWltEk&$Z{vrC433k5KX3D8T)SY)zd(kW)4S!U&%2%<2*2qjNR zO+_;#;#_!ps~Wb56o{L7PplV)h<;0&h|svxVh{#sH9ED|K$dshme1LsrZjBW00OyK zz?VoW!@Ve<6mEJ341zOE!U1=Y1ya9>mf^#snRJ6-gPiv7Kj8Mpd&|_M`gQAnvv~3S zyALF@AW18_URqX+XvDIl5&}UBBT&SD)?|Xr#;_nhxc>n4cWd*(a`jsCW{xdd9Y22j z{@r`rjZJ|I*`64xPS!a_de{%QqV~|sd4}#+pn0X_F1*FM2&Vh??O(TUy<73z#p;dr z0|yQW2@QtZFyzj?JLDi_AT@dl?`2RNl)wh7#{#;1T1M4^kPENl^dJqK3EV+JLB#Vv z{@CGm;loAheONkn{P=)CKQxXz;6qt)8J-@I@{6WmExK=9(`Etz<|!*DB*;Z*07(#& z6Tdi*you;Xj~+8k^M@aPnDg$tZa>ZcNV&Fa+qTZLwZHv#2`L8ifi8>{thMs+N(v~o zDj!h*>FgXv&_IEM00I@s);0go6`T#PARH4DLvY`_cki0jYZ$9mt)iW>=EpVUd(4Tf zac8@C@BY>8)Bn7z-f`(O@x=*vUQpE?j6#w*A>kh!B%{LuI4OdcLBp5Kt(=qCApQU| z6vl`$Nhc01MV4^Mt?7RksW~Yr$(RuzBdPy8gtWpUqMg)0S{W)V=v+pJP{S3gL|#Z1 z2nd4MOY9aMzJDJ;M#iVDRE%-w)1l9VhY^|F27YF*Tw6Oj&U|AQ1WRIky9yp!<$}i8 z!U5C~qZE(e%DiNvn&V`U#GQQlflvov=ma@*9_7azkTWVwrvx`^4Xh3!GYOXgg^@Zg zHTCF`qbpXdT!d@<=IfE-S1rWVwNjMlAIuUdsiq3XfeOEON#6t33{^g;xswI0;~2_z>>EtCc; zsR!6_DWXGV@E_7_4c5itcP5mV$Hm3bR#~%p^*4*ZUGnXc z@0Wi6`R5C0MoxN(f0N#Qch0I+t1%qP7-pn!BiF!6Q&LhQA|ic!d_BF~!oR4aTxZXI zD?UCRe&JV1E??%}p$Q9aeTw2XN{f%Fw28)v@k>?(*^t$GVN=m2jp zU=plA@&G+J;0$KU1<I+`HV!v(i#gW%?Gfgp^HXy z0YKXz#~M)<TR8cK*CAGRkepH+57C6p!8>L|WoP4NFRmX^UG6;^1uQFd!}N zO2ijatmHqE5zyg0w`i=MDnEK7=@B?tH$s>t6Yj)&@xv`#M4iam2s$feUfMMaX?QB5 zHMK51Fztci9~T7p1zb3PKEQw55~ERHRl8QLTB>=orp=o*H}))f-xaq+hXOD<-y-{z zf!hKDOPj?eu}UosNVDF;8cQH>5!Ht_`K>W#G7;^lo_J%f6tTb(hVFncIg|jXV!C9% zlKSdv&<*J&aG{5X2bzO*H0isf* zQ6K1GX`x^*QKiPiV$ovuHKPKGP&uRh_pRstkF$eJ2J{vc6u~=LyTT*V2BCe(Qch+% zlv%`GOG`(VdZb=Uzs5&JjF1U&S-!}X?k$1M)}f~Eg^#UVj-5V%BQ-`$uiWJ zErtPAa7eZAkpIy!xXyXo-(<|JV|HBGL)*-GJ7G1r1H7qL@S zy*+*W{ft4&mp3Di!!&`*KpAk(hX3-9YCDV@H^J!RI^I=6zaF5>99otjlnwNM<}Q%) z_zYysE5p)ft-hdwGG}no(gS1;!uljU7A5~@WD3^Yjk!ZNrcv0u5U2%QhnMvW@b~og zjEdg2;yZ`pLaGYfqSSBraC#57@7y&utr+#}H{X1-Y4hgeM(m2YGm(YGSCF^xw@9G; z0U3^;k|y|PW&>7de$4nI2gfJ^eDHNz@8;So`a zz(*$K>+k1&@uH{aVELY>^ zXyl-qQs&$!C#A(#Mny+?dwU-`d}z<#d(NCWLxPPXg3n0g^5x5`SFbVty>@PEov-Si zgfNU%V2OjNRI*0!+O8_oC|%pOkD#mdK-4iybP=Sn1K5Yciou74dAMJ;*=(U<#*m-p zx+Y!4uhLT1%U*Y2BCZm4N^7l3@>&A__TPS+^~TKZ-MaSd*>n8(2~(y_nK*Icm@#Ae z_wV1bWy=;VTDbD@bv#*c^-FFk9AWD$rCQo;rDI-`>4PjvV&&^W!p9ANqoV zf_^oOmg_!finW6ul0hvrNyfT$ed^YjRJIZOgF`LaeC!}ecL~SMR=`;drqoSfN z*e;wpb?WlvZR_82z3c&H3<(;tcY&xUtKKLvIUR3cl#j2^wr$(y%$_}B*zl1fMzXTj zt$U9F0|q!cI*u4If>H_`NguIM*uu&SEgS$+LSVjd2r3h=Cer&ldEx}Rbm`)ygoFeN zO$;U}$w*)S!2sL|U?2<4$J?R7SeP}Coc7-GYFULChOzMHmT$7cpO&5>jvSu+@6b#T zHi)Ouo>Zi(2Pq=K7R990I(_QonNz0%0|Ehz77?@q0|Qsmn@IopRkrnzXd)gWBFqrW z5n^tW^OkW8OV<}|1?(QC^&z!Z{E)rQtOert$(8%Y^nc8PIZ{A|K{W8B9n)`o7Y6`~Z zI18#RG7&TR1O8T=g?KR`*&3F%;LGK$TrL0UBY6j2WV{*a86e_z&h5a#1K?up*f7VH zwVEmCJ9(j%N&Xm~gt)bsLXyeZ7O|KJ{(dY-X(;{vTl?tSycH&dx)1@;ZA5sJr54tavNEqGUPWUgBcl=$ zuW}`TP#G?cjg9p(9JX$Al*pj7dk9FAPCqvq5O33Vb za4d@PWH8GUViA=nWmZOwGiD+Nv^~8+n4@pxGC6qSwsG~mkBEpkaq85LKmI_2K?~IB zxj?!5Gw$x6(2q?wrn;h}5C9ptFc_l^wF-8Szl-1sp&Ek(4qIg;Q{VtDTa4xc)E9oB z$tVB`jC+$KmQTun&2dNt{465=&J+rGfH#%w_w zjG@z_O;ax~z~GD==^@D-Ycbl2L88W0YW8qaJMw?RnsuWvq^6#Noi%X}Y%TL|1Sig( zJ@dQy``>@>^)%+2GhOM8VT%|AVMh`!2HOEjN`z>!Z+0k1s!oOkTtVXLuyEIH0|0PZ zuGe!hcMw;>_H^kCWD za_lfZ@sC-QXrv}IxY#_zR>Cs$05POr%U~ue^}s=agEm8Jx+kytlvMy(T+!Yu4Q#E% z7d8+pbPOp*c|aE;gjTN0$lw+jR$|oK@rvu!#6;W)wOS2#lF4{db*T&)av)A#{*wdY zPL1V2y9{OnLu6ptR}Ilm&;)hKi}XdBnWBo^B{xY|=vqo2k%U;Rb;_CxMo^MN19;KI z+O_MiJ-hc@ym-k_f6nNF@*@KsEGy|VVf+Z2BmpE)Ye6G3(-^nVX`IGS05Tm2Y2rn_ zm;jboPM8BaS!84u7ePYkl$b`0H{$;MK--eYRB&Xl>cbnLh|yRL2Js)1qoRjt@EA?j zkww@g9EX0bUz%z;XEE{#Q!Kif8NQ>T|L7$ExUo|f=76)zhar#>7#Mi)@S#6fjM?0l(#tPo4uTV4Ig==Rr`(KS9^B$Sp0hRgu11R{~WMY|3`yk%O^3tgL_ zx!h^|{nxDjL%66-dRnsJmkh$V2<#Rwt!HKThd4FdG+eM)q;)CP(jLeamRfm*mbPUg zoD~vv0m1boa{O{o!vTrMdH@ggm0UhQA2)aL(#5^Fm3@1uEcu*;P1*>1cfDI1FF=!a zK`X;)w{w3?8p^Cf1Cr%4Z88@17SY_T#UWxfKH2@ex@sKV-B#%4geXsXdU8TyQc4ow zvEj0kGHc__9lZyg(DtbMF+qpoDf3!7jNvZPpET+Q8CVRjHC9!_5Sf`@`Pd@)sZWAg zdZc!ckMLaAKp2S;@yJ3*;*K9XzGKH9d-nWoe6;7|XW(>3mJz$Bi{ZWZnHNRDERTd_ zL|1f2v4KU9)CQ0Ly1LZ$5gYH~ld8HF1H&B#U;7d|q+8 zat3*)N_U)*Hcl+@iRNha;4|w?GP;W`N(uu5g67ZruxGdK_6-`eY}K+(ow~Ja*J^BUPf^~)-u{(WUO9H` z82QShhmS}AaIMfov`J37Dzxj7WaTdcsm6@7`K70gdcqA2UXT!Xio~9{6A@BMDj5jk z2ZlJro0X`#m#61pBjCVC_34g-E7N5e>3dokFCTPr;0*(c3C^Mhx|}k;KiIJzjvwbp zt!?Z-*w;mCJwmellGaQlk%m7(tC-aNlKa%@Ga5H-R?Dt-E#vV)2Uoj)K`o1nq&Ii( z-bKy0O2nHi0)~;Oa$;fvFPwn`vL^C`oSI1cRP?DS&|y7IqVSSoh!l-a4)<~) z%rXT;!4o*cXBN8Tah!phtPj&MVVU}w`p+0Xhn-y=99poynrMWUqe-BOAm9-9kxy`6 zeEb!%3c$!e`mhoNGyz(fdCQe>7DjLnZvhLX*0AELrICa!PJ-IQhYzc(A09h)w0rmN z4t5SLjrWesX$VLZogWEWAxDNki$4<)8P6Vd{@|&5M}1*E*rE9(421mf@Njf;?b@{; zd@%RrmtS^qacSMUbe6aQ5VpE=bbsA+`YTe?by5ZxQA{MKgPympU*_S2wPXL!Z+-V91~pJ z-QDS%eg669R3$@)4sF-2UEO+hot&IldFEL!dLC9+3WBjC(km+R=;)X^@4iP@twr*ue0nWx)R=bS^Vc*O3<}p5 zA0HQgC7uvNjzfSz{Rv2W_Uu{ix{Qszx6e;ro7l`x*8pC(R}pKoPS-9gJmwwh*L^SnIIJ%pylqBr1)4iciU*JP`+rHuF3P zK7a(_z<~n;2M%h|q^WV{SYMPMoadA+A=$M7Z4bnt+So9^p zv7R<{>Qorfs#U9J>O9l9QKOL~N3j@%^&u}};@^M&Jq_c(a%#p55zrMdm-r=$r7;(A zFf6eMR750}$~D*s0L97Zl9%)qN5I2!p&_BKzW!>HrcI5-r$Yx>wkz}DvXicIfL!4d z2Vi_9@e15eymAHM;yqC~%+>hv%+l$&Y3D*wQSYK$ryb${v}AH)P(}B5YMJlE@(v8%o$)I23qJpzb6Y1=1WiO&pa7>LGJi5MjTbIVeMx6uOsVq`(H;?n4zl8u(j+_4 zH%M!o%dik+&eAZ^3}%!5Gl(lj@`Z24f*%Va7H<&-Z$-IL5%C)m->o4yr>1HrmyO|r z*|KHJTD59zY_uhf!eR3vz${dulec7v2vqO@f7$zR4Yf|Vk`NOc&HNxr4T4o0e_#A; z;-ZBM0gN_d2Qe|RqHH?;a#EBeE|vq%Knnv@aLmk09z+W9@cu&>He~P+*0G&I_Ho^Yb4(ct9P|uYZ4Izt_UXG(ofmijyHn>Eu0Hr5f*h5ATLn5KKk>qKI51zC-hZ zlT6P^IB9r!Z|OiI#NrC{gB2e>dh`f(yz#~x_yBg!FYsC3UNU0K^+B>$MahIM5+z;o zEpjkA_`cXLB?&w%vN-@QP%O%=f+7X+R#2dG! zJ*)+W!l-64a+P?$**$QC7Me^%>;M4^j5x^T6svUe_V(Upyy3rFbvLT~zwImQ7|h1S z5P;vseQ4CVSx90$Ap_I7X8aj2&k45!>K6N$AO6E%OoVIQS_gJk-M~uws%x-<*n(WL zSg6+BK@by^#0Cu4;+Dp@K{FhPy^zm*67#Pn5xOfYE8WtAdZ~WwVZhT-#b!$t%O~Il z0|9Rlh6Z!1H8^Pu3z<(h+iiEqFx4|Jm;4m1;uexSsNe#igMnNx_9}xz<8kPGmFPA< zY_w_z>XuAEhwJgc99T{wIn|hPtG97Fa;#ggh(4;X`q#fYcI-HN_UwZP4>CJy!637u zpdk@sW@g8l2{8yG-RNK4$L)0F2GzlGgIGZlA&7($@&u4LdwEGQe8XD{6eB#bo||X% zIMw6sU3qYgk}uqW-gt0zWE<*Hd^2rA=@h2blrNg4Zqt+IsP>%YT7n5EpuSc=iV27i zAt50VMnv++mQ*U-0nwJyaRBtI=8E>Jjj=Gq*?1$xv6&F7ALJ7op#0-$1=o~Y-FfC9 zjb@BQ4p7%gDJ;pOP$oS_N~F51V_Y$Iq;^w-4d2w}D$7VnozsO(6hdGg+KTdXFRI5* zEfo6h-Mj4WWZ}%1dCjMuJZk>v5sWh0r?u>ZlMxn4)y$B)^aE?sXvocxB?}fT3R$wq z!r2=iq>ZhM{h$R&$;RQdw|nR)CY1p|S)(R|Qc$Ca0Htib|3IE^^6~LmZ1hgQFoUl& zAnTB|!t!#E;TkBnK=aB}I06fEIexN&A*-xB$0jR-vbqAxNpd2>B0@q!je!|`oafNP zA!ZSOfd!+{e*81n=p5LL>7v>j(|zrYqZ!Rc!Dh&1YF3colN2=Ki1kx`(8_uRdv)M7 zaP$MP$mHb7Q}gD{oAU2hjJp{pXVY{by5exiZxKCf0MLTrG9~k96PI2kRPYw3h15X_ zG8qC^;ZgkMTbGzZwLPOp&AKdnh5 zW7jDSBtQthAFF|nB1+*RCpgNW=?GoYM=vg>M|AGo`A`4*`KXbj#yoHMWgUN?RaadT z7DG9G1g?h5C>@hZLP4&QmX3m01fhMF1BMi92o5xIP#k%7LsXALTuXFZOk`99DsMz( z4{NQ1p*Rg{EuBH(Lr8*!Do53JhR&fStAbV55UauUQHUT7M6cImMZIZ!@gpm#nfkQU z&QP3uHQC+W{fA}CMn5;QopXERmz-ns*uc$VEqg*>G60g{pI7$ZNkKCTUhb~#NgveQ?2e{xfEEkCsp_v+m z;!<9HOP(VsIPWhj)@#N%uD0XrJG+6Euh?L4+tFltC!ipmY2o0|wyn{*V4rhdt~@o1zUrk_*>@~WRhcbx^Qo~=N5FzCxpc%sphqz`?O5u;e8f+Pulcjv(8n7&#u|g&k zS+oEIiEHE08{5Pa;&yUy^EeB(ZIhMDBXauTHl7C11o3Q-toWlLJiNT<%P&Wbe2(s6 z!}|5@{-unv!ac2toA?UWXHY;K5BLfl$i_HSG{zaz0w%_WouY7{0B2!)T!Li0My>0^ zT$2gopq!xbl)RLGSdOMZK6pw3RA4?#g8)z%$s0s%0gBk=Nl=_))txE?1Rof2aWQ<1 z_B?p-;BoaM{4#fWdS0f-^3nW{#*7^UEj;-*oc0RtZkPcI!RwO7FU!x2L74(p*+=wmi?Am?KoH-=X z=rS2S8pCy@GDrzX0Ag^Ui*8+Uz!m)wC#gZv3Rad;4hbYUdc8f?stmY{D8W-x@4fdP zAm)A`9d5EwFhoAYL&6b$-5#m}gMu&GF1ovW__K|6Rmo0!Z8YfJkSqT{A)Fik< zj5b+p!e~&|zUPeT$R;u}5`=lwiSUgIf-~F15v@Ev^01m1SWW5nTG_7+vWO*8aEf)` zESu8?MWF@62|OP!=oj6wi0}xU*eB(~269exDXFHmiR7cA> zibPYdp~ultQ6b^MP-hIO7~ztdoQje^l{vhD*J2*p;h;gd8Ub2X2G5N@D|+=}dje~q z*pWt~gk>`c;U#>zLN2b5-X%M@q2kN0zB0-yeiAw32Sjb44h}WF?P5M|q3ReHZ@M^( zkE3WwO%m5nHI|$b8ymycYPKaJU!zv#P#2JvdPhnd8B9U;EOiVzC<|FU;J`yqCG1dq zapH@{{7RSZsHJS^XHN|~e+VUPs@BdJ^Jn)SITo4xxbfo*_sTU5@jZ06fFZ(bdV7$C z+Ui?_9FZM*Cv^!TOh{y#MnqUR$%7GfYeW|*V8ES%J|P}_zyuW~hM}fB&E)0j$(OAd zy{laMV(hXz`rv9EgSCaI&#Ox%UNTnM?8XOrFWqf>h zls)l}4-p9gsHCjKID2=hlrbJu|k4^V~j!fhqBcgg(pkFBLUOh-5uusaDVV1To#Ec zW`^E~0C5^g5-fFm7J8Wr`D3`4Ezb1+ZIhxGW7arEI@3j6`pD;>pwi#SNeaT~g-4h@I3Mp*Swb=y#nUhMaJB`55{krkGDCZ0@w<#)DncY#ebMHCT56L$&KvGk-MSSJ;NPcr zZ!@Zvnq-d<&~`sRzjZ(Tv~1}QX4l%vrJ>l%lVJ|{f$wyQ3GZe8Ra;GNO%TyRQWTuF zb5atU=fcB7W1`K+wbjq{OYhyg50E!rf88{mQ4<}BTD--9f*d5`%h|4I7>0S{8Fi^g zO*qEE@fnc-0-ylnOu%l!F`G!RfFv`vj*94rD9IvO&Z8B{d6^W2Pv-d%8ygjN{`HsX z^{n!7f*j%;A0a#DV`gTHWOrY5r1?i(wZ_iL$!uRwO>R$mNgN~t!%1-!WbsN-A4C}+8^?kNx9Y-5>Z@43&><=Y2yj{= zP;@j2!Ku@xb0g*34C=_sMUC(hGIGs|Mk=%yDALc?u}rL#J|r!03OE+h*|y1yG%y7S zrA=;Q7224HAVrb2?Jd*vuvY=Y$;)ZtF(8PUm`2nyDiRE0m?4_!U} zkrDVYet3h4n%_55KK2s62wbwFF1e#Qxw-Nm1;=9rCD4=3H%m%%iNTNgWG4AQ1|Y)2 z!oos=Lqmhvx(vEh66T~9%KsU(B`3#h;-I`H(wBg9+!7OwUQ6$qG?q5DNI?(g<5uPa zLIgO5kvfG22Zw|O1>@-X2v(TQTPn9E5^rTNyTqUjGqI)e8BZS{Imn2KCI_Qi4EdID zEC4khYRtpK!-?n2%Yg=j!wWN$S}FI&(%yK|AjdxTID&j+xR?xgf;*UFBo?05#Q*yW z5T+zq5S9z8xHUX9EP~yh=Dya-#}0vg)JAzZh9ZIRFvJ}NzA>T;kQfscWBT@0PL7(N zf?pJ~i0q=kAS^uGT;QZG)Fv!lGkdgE{*EDGp(3G}m`IVk7z@YTqGvIk+o@;UgajiU zCJ@GG_44xea$`@L+c|S=J9VrsmWlOcW|%kIffk^^Stf+w=x8Kq-DJ+_q#VsmXVuJ+ zJP5vV8i3p!6clvstQ%RoS--tHTnC54bmqnO%BvM7rXhwye?)}7L!>KnIho$wRWoOi zacC&hfgo0fOrhM<)9b?d3nxyVFq1l{eGSBa>AXMjs=2nK@~aP1v@DouKyT%2F6^XQ zw+Rgi3=X0KCiy}qa23Jeb?)4;6UWVcozxz?)D&}KXBDlY%-!8p2Xjal)zK0A!9b~6 z@wX@oCAO!R=Xoq`K^L{tiQHLIeCgweN)Y`BNr;5KYi8H3>Rv~3bx6hQpo{1PMo%pR zIp;5&-?w-FzJ2@5vE9`6juDwV}6czhJwpB=b0GB)~mjNo+5dF9R&*t(T|Q z&Ye4#d}sRfP+RNCDpy>bFup+-)yw>MZzS2Io2oNNcpr*5Wr*k3%PU-s_W)()q=o`TVJ#rHglLrqTkb_h|lrE<^r;qxfSyD2j08LyKo)C9v?(D8Q3o0+Q z67SE1!uI$p=oQdCE_=F}pSh@|W3MLR%eWKhq}B{PZxY>+t5+=Er=}#4T_RIybnvZS z@>IHHEDXwz3bR{ZwX|+to(>U_=8?W?u~T9KGQ%}9gd}P9T?q&XJay*OA@jL@>Z=Kq z`boG9pvuY)O}VU0>TUwG4&TCFI0myxyodos^bz%bbb1VwJm@HGDDy@?wX{WCY`l08 zo-GLrBbJ&POf-stB+-B54VhePvt2N24^WGyh-`?!^aJnR zl`ki_rJrcJr@zS#3L)9b-arZJOXZnhS<44o@-`47H>Ipx@Wn!>cBan&wYV9MB}8Kc zeXyEg{@oq>)%biiP)%_lIG|dn0%Ar3Aru#4MhsMcbO%KMSw_e!)M7?@UJQzsnc1$C$XD3M19vRLX;>1uZ(M!=o%4eW(`rF*Vo+ChH1Vz zRPE_S+e%Ur-3w+J26HCcWm*g?Feq^ImMs%soaF4>p{;W}v(qs3tuy>#Sn<$0*018Z z@y6!GVQQ|5Go6O31AVbpP$uK4X(`eAksMxnNo+a9!*ANS>6K~I+P81tpkYHhvuwCp z)RCkIZfcIyu%GGCj3*E{|S89zT? zHVu8MH{^^NJ(`72)8jeyWhWXsWJGYE$;IBDz|d3xFCyHWHc|~~hLicH&={OOWTn(MCzOgQAn(zcp-Wr z8;S3x<7m~nRZt+_9plCpNIw9K)?3~K^*w_coUhzBEs-a@Q(o_EfPsCY?sEXA<7;m96NS= zyZM{3b=#gjd(7$yYCw~O1fo9_1u_wvEdxz;Lp2}d>njlSi@@~r_w)Al#LYkev6ASf z{Ug9?_((QtTk`@yngs?1xVgCm8`uEMbsyCsAt3OEKwaq+e(FREdxMRYVQ^7QgLd-g0( z4*k9B@8ic#n%iGeE>lTw5SV2_NGvEMNC*@vg8-oArMVdp08XJ4b1^XI7_JSs9~>Hn zJ#t_{gq60YlhjD%KthNLfb+$R7mpn|Od@e${{i!Z$!f${vPP&A2?-!QIAV6`3NU*N z)hT=AkSEqkz~c-6H2;uOye)Y$0G#lNI4~3#p_5zisO-W0hxhK=f8xXmv)>dobUX@y zsv&=n5ca_+e}RETq1;G#{P^)Un~hk5Cyk3ICzjbQP1gtUwnI~pQ-?6DMVlj*i7Na0 z_?|z1{@Agj`wr|oc}iHfRf9%Am#3#E-{&F%3kr=0jRXRFmj(bO5(xq@ z=?`d_@61pkBgL097t+H+X~!$k4=*T&E{Yk%0odSV&=73llDo$RH@EZW+)XcEi_@n)CTRKzIlHZ-@zA@caCL|X<^i)HyEMycE+ z7KcZms@`6nJS$DDaPgwe?DM*sS_j4=B6G#->ix!~fBew0Mx(NG&9c{3@I-M+!NJ0v z@CXuBj+q93#j%hX94yW$Ffb%E7$p-*BO^fs3#T0iRcFt+d3$-A_uo)2HocaH)=DY$ zWSBE%s@e8dYI!w9mgy>PRG98Fm2V?~5(pJg6dGo(o2A-2qf&s-(MP_{UBT9p3!JFXAB#TWUiOdvGtKL*TjnQ^s3I8N9 zGN-?#I`xG*YEs<+AnrprlJa%8U8H6^ckVoDi#?acIzcF=Xc|oe@+4uVp&Cqil{iA()N7fN@U;KG@8CM|JO| zqor05sqDj$qOYH?`(@8dmoB<{c=+-Kn@}7XdFJdHbI2TJG$-{WUE&p%q2%PCiDv2? z<=p`=XaO`Z0Q1zzi$fRsO!s$H`|bh`fx%ZOMI8eJ>Fr$daKCiP=H=tfNs>3B&Gz?{ z;YjxhP^5!+Ocoz$?(t0xOBOFNkG-cZ*AEee)6vmf^u8L}5wM~h0-Pg>ksj{uJamp5 zg|D~?Gvs|`wBdVPn3tp)gDK_vkMj$`Vcjq5|MQ9Y%?HY>u>@VM&7x|7=D4|PfHMd| zfy^$N9_-`ogKAy8bcwHYVVGOys!bgd5-<~jl`x0JkPLaCgj5)DP%f`pv)UXpPr28@ zX%p_uC7+O7xBXDHX&)$tf(z#dg`=ku##gWe;ordlQ#arEP;KsmpJ7K|g6JqUC5tYp zsk*%4i#OS7bA`HqnsVvVr8uS!%_bkI(~aS{x38ZdE3}xdpQx5*?nlb8Bg8TYffnmR zLPEtGg@;AQM$_{njGOJ|tL?o>!2l%yWxH=0iFbZJ{)|=ZObnHl!j2s~Hg4Fs+;#bP zX8L?}tX1Mw?A>wznsE|f8RnjkRo6~PN)Pl4@iTx4aZJxTDEkKN+>kFhs;atmOaAT$3waOCul}nJ&gMH# z$>cpfQ8hG~1VY2I1Su#z9sdsw7J48LG7K&w#()Wleqny~sXE$$nuiW2YEL;u z%0(6o3M4}$!W^GFZ;t*A8W7bMo@?B$2b4Lgui~ z)u|48-2{2+@`t?>dQVoKd|eOm>9xv7Ul6D~H`-Df*E) zF5A3mlljLYwR1Xo3i*#ED$Sr8{jlbQE)7LP(nmf5_aC5KW>E@I@&!D@k6)@wUDJ6| zNw&oyC+H;a$j;7TVGlLR%#`onVE2LR3Ul69>Mwi$0N((=8g?<2Y5%oy?kMQ%%vbYO z(`-?R%R#4ug3YO4tDtsiY}sSm59*(eGh_=&KEaabR)1K!^vkcz0pBRo;j*U(sQrVZ zrt7zkcI{1{C8~C7i!h0{b0QM;A@Z|&_mnm4{t^_+Zsyu5sbH9*6R@L5D}0uV}L7A#Rd-En$&53(Q(nr<2H zisX#m+m7vjtXjEh-UoAe@?+qjfo9aVD#%IejW<+dmy#VyogGcSFS*mH@03qRYc>{g zq}P;u6_=35F3$9H{0O)nJ#y6C^1X^^hgU`cVF78sG@9}Fc+G@(Zeoq#yQM0kEnjCR zy9z4htKf@sh+cY8^Je8uvQ_hgAJj@a^gQf?_TUAx}<*}(!v)gjDrVhmos$`yCuAb}mM2Dc1EJTtX zJ-}9`rMnl;cKmB*6IW)1TsR=>(Rl?FUQBu9$dP8vnwu4_YE3-?2FM{qbNLE2c7$Xp z5?95&QrDA?qU#iaWQVM3ffTn_R#rkWbK*ttEO@j>kE+evE0nEnb#*mG@yL`%qeq1(BNytJfOd$+n z6FE6qpkVV_r6#DhUg)9Lo+nm_7Y`)DO5`)!tx?^_<8v%95-)VbKr=WXfM#$E zwTMRAvvILpK|h6EfVQ=30M#)T2rC1oVOs(`IG9(w$Mql8bG^t$fG59vsfq4M zXt=^v-A{^+ilp@?Uy*2=x>ik6t-``U8R^QLdRWt&Cw@}>YjLlc`IB;V)>)Bo%$f~c zL6IL6xu785)^Z(vosJZzxCYPyFg##3VYzm!yb4R!tXD2B*qVIAg%a}Q0_zn*hybLD z$N&M5n&Iqh>Fd=DH6t_(6~>QqhJ$qpl?G z6mT?r$eU~nHmbK&8;A^`^Ppu^GmCU4$RW(EO{&u%?iEguNkNw$B4KR}z?7NESasEb z$&v-*G;BjRt2ye^uu!O!PJ_R{WF*YP)mrXQ3$2{{N5i!yJbmFKr~xTaBt0yKaUQJ^ zCDDEh_LGoNklG$?p(p5y7GwP&$#uFA6EM^w3=5b9GQmU?Pd?F#BA@<0vJMb+wJt;D zEx&=spt45{*t_*=9q=i7CZ=I#Y*Sb5`PLXR7p9;4;oQ+X{wnsg#&n<5Lpwe!Gj~|Th{QCDS0m+i`TJu4uJ4rNDo6CBm=~KA`~8w zjs(g_JJWRjUELT0Gr1A`sPcWhylEZ%xc0{{7A}1M{r6|hn)UkYuk*~n#~**ZapOjM zB2r!@C(~J;@Q0c{JUmQ#N?Is@Bx=AU3PKAB5gzaGz^s`AGnVziNU(v8w(vhxT{Qxc zz&+`YU=Cv*DlW_5KJLv!L)r z$+UiHi^ETA$Bk`xgp;rxT<6Q}q+jpsXUC=Xp13Y6Yu~hJuiDRsVd76yH*RR{!?N*&t+n5;H>nW|K zbXn}9^AZ-qQhKnChVSfA|82|Gv(ShrSpa7eQ3gp9V%T9p)V5{sQQedykoc!PejKhe z$Ugw`g|!{_s=jt)fz$V@@s8-Y6#3F$4o6yaazzs9>9(VL)j-vd%pL-84oKQ8+^1aX z02nk(r~PU|)2ml`hvl*$22Xj2&GyB9HC#2s!mw0Hleu!`Axv`PCDpJgz!{eAaNy}_ z79LQ~H-r=P!l3p#3>bV+jZk%iq=4}8^)a76A~zpWP7NhviH=4i_{4VZkXofwpgHV_ zdd@*RH_JsK5E8L7XU^=gtv#a7s@8}oKmu+cHUMC(hhsXZ$89r?DL2(dYDI~Ad@P|B zbqx>4YqAh-b3Q?@vOfI}VB&QH%{eF45~rGL^;$C%f(*)g zCH1odwrzpN2v|!ep5qv7XD+FZs%dzbbmas5tcEt1nK|z2r)Go<)LoK$SzEsX&bA*s zU|u~Cvf`t8?6O+dG?Y#;rpmsIIGi!{zU>81)l)T;JVy#s+CARpcV6nJ#*|rvM09WW z?%l(N+ZubTUaA3_EA^x&b+$RdM}5)@f*C?L0|i2U{ECY65)^>ZaE7lBZrRF~=%ZXz z7lJA3D^p0h;v?##a}o|n2RXxcHJaW1)F9<=zU`;lnV(mwXIn|8Awxu?eHd>Gdpz6|A)6Rqp3!(*%>q!tF1*(=!EwrHP}Oz1=VgjJ3n1)#I>>dQlk+GeGx0yNuz*OuD8dz7M6xWN1c%@Z z%gV~B{%jXQ)pX^GKri#%FqdU^Yd{ya%&H@U^UTf}(Q_>jrbBy~4f`M{iC>T`hI5j3 z@hS6hwZyq6qvkj;C?YhB`ja9CgiqTT&#Kr4gvsj@OZ4@Urm%J zDG~oiAKIEnleKq|)+-R`_6j9{@PMUS0Mzz!BPMKaicv0Ie7q?nXp75)_#K@MNIgu_ z!!8lr@grpd_ zO-Yn!OC%=IXwT1;hbxXAJIbFFnD@~~ti!$go^9C`=x>IL#36A#`-F%|vgs#3K@D=j z^)bJu)LK9Z$C*)2r}1crtUhH>WC9(vU}oEki3qHzG`)kN7hS{rNNCN&SJexh#I*y! z^64zeVf=`?sEBX2l0PC-S$WgeIEiY3oiB@$)ui^UWQWnPMqGf5!cTBDEGgn4+^p>D z#kQnmby7K!S5V)RTd_F^q_Vk)zEEMIZC9%5qSOY{|C-v|DmseA0XhNf5@4H3E??_Y zc)h%&)b>dlp{U-$0|z#4+PGoECUbMT`q_yUatdi!k87t@!Y&^6OOgdlcz&F1aE5B7 znt>Hoa^~#W9XodX{PVg^o41&AGS!CWJRc(s8q|S}sf)i^+@M}P+rv!NMmaz@`hsTt zz4!0+>({SbwUT&i_Rc1fkb+^<(8`&vJ$orTWedpWo>qvE5K8@lD$*V{wryLna^+9! z%&HurG6aQ_6z!^e)=u9qls zF$@Xlk|ab&*-n*l%3hb3l2pk4jHpQ4k{jx>vd6^HdE7kJAzZeNzscEp+Syztow7Z9 zOZll&k9+<0b?mg~qjMHLa7k9{&fBj|a^FSSj zg%Tl%i*&c;h@Bjq5nGRq#b?-VK2*n5C(Gs5y!v|kAYPI-tN?$+lL^BJ;XaSlQRT=q zOoB6pYLYKfBE(Jm^86}0vO;mr47kb!u#XJ1q@?8Ty*sv7?Cj2{4&0=}1IC2o)LorK z{BTiWArEg189LN-u5EX&F5VoSWN{~@wq0?5aZZE{Bu4ON=xm5qsHTeE#5yWg83G@juj9pwpETnrVW8QRG1erNsFOKfQse=DVY zIG&hwBUqV~kjP)1<r!dLYlnowD+BbCbQ@j5@+s)?oAO?asABMyMngSS1qA zU=s(uI1Tup}l&ESJ4RY$m|P5&RGV)pNIQ zU6r|_nO$*n@gc-|K!`>V{lmk|<<0Gm^uU_w#)PmDL5eeGAnd?YoE`xKCUx!B?O*@0 ztNn~Qt%Y5ogJ_XBBb}#9kAlKB+WfbJ-GN@rf%)+~t!(Ti9#W7*%0469F_-`R^Uvd+ zpU~E+E#D4gI<>URb;1YW+L%qE0n4qpDdr9jrvx?Iw6fdTA3NfQj1x8@KfVnK*1&uA zzMuqnZ|dmNr_Z3sufH*~7rWl_TiF$`?N@4Axl;-o8aDtTrHC-|9PR$>e-+8)<*^-t zeT4i;JXU$+@8%FyWL+`EPxkQMj@Cv-$Iy8u{VE^ljh ztW7q5xh*&MN&+-e>avVN*{=U8S(!PZon0B5qiedR7V~k$+|4T`@DyjeBMuL%t0^l8 zf20(wGgR=mn(yB?>$SJ5wAd`^9p*2!F=!VcJM??B%-ogiR z9KhL%d)duXb=erfP8xc>GyB**-$6<Ysp1y7y8&8vnqd)jGh?M z1GzLLklk2ewxxaTj;bz1G6IAQKKy4O6gUdAa0B7C$^Gs2sUAAe=(?-sh9{+jD2}dO zeEj7aTZ@5qCzO*Y6VXDa$4o3&Q25Xj_4Bt~8)SD{If`5$Sgw&_p#TN8{X^_7C&OaA^<+rNL+_MFGYefZ&r z-+lMpPe1+i%{SkC{q@)1e*5kB-+!+~{j0COa{JCZ@3{TphaVO#T6EM=M@^hKam0ub z=l*hL*Wts5Uvb41gns$um-pX)|3Clv&%5vDtI`(}KK=C5FTVJ~Abp>I{`vp@_rK7j z^5vIbY9ThooCJ@N6WkKzWd^fFTVHQdwJz$zMB|?glAx=Q1!_tpTJEvyb1?? z{P9P&?!5EPi!Z+ToO90EYp=cX9&Kjz*x>Jf|2qLgsH8itn9QSq@4W0=6ZM8p_5tQ& zSm6cC41M&`N4n?_{JbZlxXmlKJ*L-QI8m>${;poi^=e#VL5{=rcmK>y&?@h`z-&^?vM#xPdn{2cSd~h!3T`6$up&Hc1eU5|CiGwKlmWu zwA}MkK4UCYL!Oj6OWv#f=aZ>aA|f$@NbtZVY|{ZQ23W=zNwnZW+Wh&?e_k(N*x|r6UU}t} zH{N)I7y;^05TmH7*XvlqdA10Dl-KF_<~sbK5DZrY;NK_(2b^YCBZfE~N{l6}e(t&F z%Gi}x&bxQ|Q#oCM_}9PwCDOQMCZquhllau`>Ne^W6J$n^C~wBhIkJt(WKjOT%Yj4QeDh73=_dn% zA=D~v)uXs=J#WQI8ihS`M~*18=@r?iaK|M|c z;c}&>rut*`u)qkF+=>$R^Rqoy%u~C+xGG%4B1fV^jB!|aWy@;(hsOEH>z_IP8pFTMap zJFmlKX<|rZECltUR~Pq8`;k3&T5tRF&O7gkC!S!6h)!zYeEs#;rHrJ|&Zatp!3lQx zqESnf#cV9I6qxz;UITOcraQ;b#tssKRg;x};R<&_qZv8cjiQr@{NJWsCJ&o5X_7_y zh8u2(<&z#!8N*p}-k~An;W? zr_CTk)$0*^=%I(E=ZAYAIFN397|1LXjIhjmEl^;Bs=R%3?`1zFKd z39Vt1pUe``9<;*cmU@Fg5GhmOcfb2xKD*EMGX@PBWE$h))?06-g9D185(FA14Fy+) zqZ3oxGAK_kCxL?=5fO;9t>*5yn*_eZavKwIM^{g%@79=9+8v=+PtZ z)NkiaHrwp<(@%fqnP&o1#19P|VTo(5kwDa`D=G>e;ub8#lgw-N?Ux7le`?By9~u#D z^ufa@*R-G*<0{&b^!VeCn>4@-7%*Vu$dM|OYi0E4(PPJs9W!Q(iM3%~XTWyD88p_F zUrga7mMdhk?@GT$jOB+0{BNt;B4ftsz;ZanBe&=v2M|TN&t5v&}ZF4jw$% zk~nne(0={;4I4IW^UXK^!yo>DFQ9YBK^tv!^wCE@_Sj=F3tbVwE?^Wx#kxg~?{Ee; zOhsL2SgwVrJda)YW@^Z-gPz~Yz{t5Wx}SVP8(wJ!nY@-*OK|11G<)`JbWNQ)b(2jt z*=nn;EUrf!afG$}AOH9VbCFS|-K&GwTOW7Rr%%7+l1q3RDzKprtE&Kj!kDyRK0>LH zJwCt}nUwb!^3e^F!Q_--%TRUJE1W`TZ9SiT3Az|RWV3QC>Fj*SL*YX+c)NpEB|)29*#if z#mg_h98M8pg=u;tVO-4%sKAKv`J|P9oJ6@1JO+@sik1imkHaWtfkBC02*F^QFlO_D zRd!$LclLI@^blj21uT;c(rI=!WSRG^Q${V5#zY*0A;Ki3B4MM*&_I8z^-_sg$<`ek zHRp*_+T~kDPhX*&YJoz0pMU=O))iOnmim{o#Bd%P&Rr#j(_m2rn38^Z-!W4Lnr#xE zieL-uu+Ad|4Axs;AJZib{^S##L67_h^*SK}Jou$v9GdeF+qTPVjoqyGp@%;C-A%MrXegC1utuaxd5OR?JDFKvwO$(4f)4$+w^K`lI)%)i3DOpISIl? zAGQ8zeE-z*=bwRmm<@z|$u7%ll7klP9lz zY5(%6LSY~(zrH^D=%d!W{L|WV`+xkg4nRYR^$WGGG;68p&j+kGv_?bQ$rlYRPuM0< zC@WX6+Vd5sMNT8Q8*aE^w{G3?!pZYHxuXglkp;O}=eeOKg_%eNCsoWZz;Pu-sKyJY z?Hg_Kx$EBFm!pOfP{84Ic)a8a+Jf?wP7#)53KXuoX*6LB;6E)Vo_OM_tFBt&+WEJ0 zJHP)vOsJ-ngp%*D-WP+;bG!k3*N#8b3ad-r%-Q zgkE~-rTaZK~O>fMzMi0zWH*3iIZPP9vx!IiI*kynhG@w%8 zA_%;T`Nv1I;P=1(ecpNVtJ?(_2J?Yit(w=I^5`IS$zkOojwgjd&;p2Pqk4QEvc+Gz z5L3uUMwam^m9(F_U zmT8yYns&!9xT!%e9XwHZXar@t;A(AcJ>Y-?HrXW4-SVnVoMwm#1AeV-;*|FJwyka* z9z$r*PXn0hLKEzWrZ+|2O8x0if66CseMwKg)x4vMPNG06{H@_UXOm8NZyh(`FMs(< zL|>17n%%+{JB`RGbXZZ3Jn~3yFzDZBpFCswEL*kOkqdu(25+q2u$mY{d?{B6G)-~Y19 zF2gz2;Fq;BLPgNoMQ9ucfYT^bDfL$F^2;yJA8&V6TexZ^=k5P9{xIH12(*Dlnl~J! zf}`phWoaavUI0Ocz4h)L&Q0SFAgYgXqB!A~f+b_z;#hmkK;G5Z`bp4RXYO=H+I0El zm)~>GJqgpm1K2^4R%}xkN+K($in+lp`kAMe44nX6d+oKY+w5{o+Nf>Ywuc;Y2yLJn z9?4(`-!M#`9_{q=%9SK@T0*S~get%@mjiH^f zpw#-K4!L$qklgc9wDs=a9hi1qZn@>wSYwTa3m4KrAq`+5mL!JhbZe|$Eqnk@bfQrU zftVKT>Jn@Zvp3&-b5Ru5&7F4IsrBT&_Dn6kdiDCvZ+;^!>4}U1Oobjs!-cS-g5O?HGWQDo>+cQeS=b)yE%y{0S$VaNKdndF)YfD5O)Yt!`IddFA=7fBgL> zX~z*GoKziBgh!y|gGhvruH-e+shv~cY2+Y7>LIUU2uV=MfESrVvbFOc4oo`<8xnLy z303OhDW_CIC$%c!xKPF{bW1qu1SpqXyigIl{Kg-FD({y1(KPCWKl>#F;9N-d3z zjh;w3EGmQ`qb^vkg9yX4<1P$Crtm6ASBFOGAv)Z4%UjM^F(8N%-cmx0PUY2gUVYUT z=>^__2Oekz^1a~HQ%@BQ3+IkI?&#Zrj}o5L?Z+2fa6zm-_6g?~E_j%mH*a2R+OKVD z>E6A&=rPF>2M`(D1bOwVMz#S3A{s&Gtpbf+=%qg{6t21@K$s`8#x)v4k6!UCr~Z0h ze(B)goy)Pu9&166s1|1{^NblYoRv1%U;~*9pXJcLU;yTX2}+x*o!!~+zWZ9A*uPC` zapH73;Du1znpkH-T>+R~1-XiLMMW1e_<1275fZl=p%v8dh1V>HBkI6MR#L0DEtwfz z>wv)K1+C{Yv2pMg4^zW-EmKSiUQoown{Vc04_vX0Nqf&d_q1MeV7t_@mV{KB%dYv3 zg9fye{06MJLdFdy0fG;+uBL;E7VR~EORu7Y^YE!yE}X-xLZ11rzy5kpukbkj@jpC z(zpyq?RZcVFE11_M+RK5{KHY}XbmK}=@& z11q@d5YPZh$z*MHp-qX~aE};&q&{AainKO_Sol`g6CN66xVm0lWn`w-zV^i!9pOVn zBs`NqiVWto3V$L=f}|K|!rxmfCUAcG@Kby2>jjhdi1w=SPj%ZobT8rjnuJjoueb3!qkPh@hRBYW&#+jp?1 zP^aiKm|Jm#GA~qWj+LG%eBy4D2&xuj7!|{*(rd<8Y6Uc3a^wjO6j*gF+Bs(nb@^39 z8FSQ(cFQcYOy9nJt=TyrHEsEDrshNb?5J+LxmSSYO;lI{!WBd%q7aR>BrCH_31krh zy~ai$=>gXk4w*PSp7%O>RwHUHBJvl_29k7(y!`XgJGJq?%QJo6?U?TAy*zd2hJ4mB zJz8qJYmkp~2I|Z+pwzqYr`I(qpa+*gsB4VaxizKXj$XKxsB@B7P(ZWFJMVOO$7<%a z2M?@CdCbh2UBuVCN8p%(Xwt!fC^l61Zuif>bhZJDqs$snjmp3Nl}|mkY1m@;q_hEx zgD_>Zka%$unes?}>ezz^>N0=8HT`UmCM3|V7#9xPus8F0&*O%4*=3hqoXHKf!`*Ph z4W7^P702x&gML1)pRcZckMG*63~{YQoL%eiUdvOD?>iizfTaRWFc}O$i8D~O`2@{rLApdeg-}GAUdt&oY80tk1004=gA>6^rR&LJ`)hF{_C+;^Sk`YtF z6tG3rR&Dvginki3yoE0RaANbAv(G+TCo*-)S{{4o@H)*l?G$a-HCegCFC0jC%SYbq zq}_WgJ~KlB7ak)Yg)BdM(xCK4{^X=yBkG7%>I_Ph$Py1I4usC~=y>e0Joe<>TV8xo zBqI-F2>=Q-b?iz`oOnR>fum>7o)~qs-*nSW*I$4Awbx#I)TmKjBY76{67c-<&&Lsm zQ3Dquct9<%EPBel>Z+^whc&>oTR5FftccxC*{w6e;B!RL=pE^FAmz_I( zWb!?5t+m$TqR&oF`x7Qi@MHy}fs~Nv8M6{Vk~y(N{AjSuOC-+82k$Lo!+GhY{Q9Z8 zq&v!r6WyJ`U>*5LEKly;ux@}vAQQ;T-zb>4udAaz)Sxm+>m0{$edFY{sIO{a6 zf;s+3tA`(c*x@?Ae%h8TwWkLoV|9nxNV6j-VZcb!#HrQWjLkON%)03j$MY~3$%G&3 zA|ktiW5YEv9RVhUwSv*;&t^%iz9uNr57T}H9y8f8I; z%CFsrH)NQK3JRj)8k3Mb%MP}{nlAa0Gj=LZc4mUeikHy10xH((F!2XsObe*VW{_2i z4tc6edO!>a0p2obU1C4*qJSO=fL&d_H=00()1ymvG4XCb^vwM#68F6`$8XB7a4p7D z1YEt;oeFy_aVjE9#?s{w;Za+$xa8lTwMUDy44gVmDTPr;1d?B@D_n@8k(*RHbb&xI z2oC*B87_ld!BL^XaE?n3Iqd9Wpn{v%=1tC?Hn_~v@^Gh6rcjS>g_Kfy zY=2pB_Mqi!G`cY$e{pux5LIG^(9OOijDkxPTFx)K>@w?d9&^qfEe!Ke_s;ywxqG&70(KqG3&sk>990&jWdY;k( zI(aC~9I=iNhcmPpLKQ2DIPzH|&5BVx)QApsEqa3sEpGMJ=1BQ;E1=%D$!SrcO1q>g z^D56ifA5y^=*iFUA&3ZSqF%oS7lfmLq8O#9{F+U5R+YMdu||bt5EKzM)!NzVZ9S;U zms~Jo71P&r$3QOpB)goD3)k~*q#lR4ts-8;V z=>!!RMKsDayG_n0xHs=rOmE@6SwX^7F+(`5B1uA>*ii?)%{7c^FO%a}TO?$LYYAj3 zZUe3sb#zcDN!(gG%neuQ%Y?~mUbMpwFX2his=%)3W|%R>FfDF1a!5;%7wutKdp$2h zz!2`{FD_~r8H|)_Yd`)8@OS}$zsAW`FN~d|YHQ)eGg|b>15Ch9ge-j2!G{bhyeso8 zQTFQ+EpZK2*ff?fB>~Yj)QX5k&V;wF!Q6jxyGu52VFFc*mfY0XaV6s#jRvaFAH#Wx zg?iD;C|j-s0wnzb!!13A=v9n@*)?vpzcQk>z0@Ui7$dBxF(C|g2Jnjg^2;wT9|_W> z(}splD~f2xN&tW03ALf)t$fGDE9P_dTY8=7W0+clORGzM<;sdi#jI6Vf=w!j@u%iq ze(uuUT54JIvXPk3XM@2C)#{20(YUff*liHz8XRcRrO+OYL24a!SPet2(HkJ%>|a}z zBc|{=1A4l#27CSBkb?(LnE$+NLoXWy-5zVg<-wP)y;ixFlZT8t258``=-`8|ZlkDc z3B&={ZT`#UGfKy!L50f%BV{Nf!l`=3u`HdXTX+{U&=3O+u|x#~bWs@XTHI2isD}w% z1QcDbt+eEw0ST6bh#7rOrA`$V7~8QfF8dw9)mQACpZ#-FZo0C0ltx&|0~FqYt6+o6 z(LyF%W;^e5<>d52zWK^tEz|={#I9y{vHh}4jax}+raFbmJ`)$s)^J7);csMux`m7{ zbWW;dbr$Ti!FBFeRto^JhR~e8zu!khA=}uRE0KIndYhx zDB}pkI<;-7WTD1`J{34fpiH4cOT<*58IU0wueYp-8p&vy1nUk+G{!YuQTI*V@qOSa>8%E)(?Y3VU=m#PL1`OzuPrA8Z z%W})DxZ;XF)&r^p5gapuO~nM^DsE#|LV<fO7yA8s_&ewpY` zy96uXhr>+$@WT%gd&Amuct3HAJ&)cR=3o78|9elq| zLv|F6aRoODgZvQ&(DhnF#lS0+Y15{ah!4H}u`!e>#OYI1gpYSBkq_unj21y_QkjPb z-Eq`ZA^;h|K!~dolrP$&OAA0Wg$yx8{%Mg=py2X|BaUcjXz1B9ul2WoY{;U*mI1KG zYT=eTs*x!7H1fkt2iu!A3GTNQTW-0fA2iyNEMc8Glyi=H zvu4f8UGLiew?^v+C)f#eS`5XSUe?%*Ubol)S^8tmp|KXg{ODb~bZlypB2KH~g46t6 zwJC3L_j(&HL1&OcS&&a3Ms&J`SW$7yY-DK=Y#~zklV863kV$w0KE?q`q#kFDK}!I2 zE7M@Lot=MFf8&$ zAU9IWRihEXoYCQTM2lh|tdcfSB$a=ryX8G6rML3S_v|y08s-(U%o8N;Hu5ays}>p0 zm%RU+z1H_N$|oVSo-C6J+xSon3IuTr2Td%Hq}y_!{h;_+jGvjr@M|XZ9&wft|yO@e09kk@39X!-m{8X2O7RH06Ihuzk@oG_~m;sv@G{Ip_*{ z4D-}=ZrE7Rco^@E46T!PfLySD0%$Cy}Z3{y>j9BG@y2}(GHX~iUxJY6{F}>^0RXr^P^96$+tf>A@BHj zyYzhPUXQPpn#f28^5M3+;h`Zv{dr@4=7|PFCbbTKazq+u<@ZT@`|Y>)MURZ*q=F1} z-ms;ZD|ID{d0gIB#T@)3&bx0HPn-6tqUGzft)Qy-R%Rm)Yna9p^`G*(R?5Q!LVHCi+ zBFSEUxpnGGJEcC__=Go#4Gq}plGB8GB0u@^nhk~qy-<*kAw^4{)RYfc*qpa{rLhaW zCIj=Xq+D~$D_;$%{q`!-9`+!T32Qu2IxUor&;Q7mygE3I$qQaxF}<0ee|4vUHCM|& z&LxH&w=|j&b{E^dM6pKa>HnJFPE}AXpSjO#-A2T)8vg(ph&}iCcAk0izfqdmZq+l+LTZF{0OwUgT)E7_$|$V~>oD_LVXar7d*kFl0XjDK~A2{SjCjYe*}_vpBt4W^GlPA0 zb$s^f&HI>Mz4CzfuW1IKC|#`9simDgO7p+pAJdPwr08T$T{B3?bc{q4!MyqhV_RMa zK(t^kvDS7*rfclK$Y+&$RA>laXrmKg#wkP@zJdo8xGbL1E0)msM2vm663*kUU#s{l zM^98U`t*aVdQfK7LkXLv7n`hs^J>1~!?l~4Ws@stV>!5FkSnfvsgK6D)RqK; zBQ7cm@NtdwiY|Kbgc<9LY@vdTTZJQR;~$jpi1vCQtetiQMXk?_<(!p#}oTNQ7&^zB%B@~fstxPd02+r`25&sh zL!bv%N`qbUv`3&Lpz8Iaiw3u@>JlIlS;X@4pY|Cxbt?X)F~G=?V~#a}JhHA{&s%+Z z{_?d?cA%Arzx;Hko)A;5fnll0G^4s+1 zK3i!Z6uM&)Yn9S6MI$-V0?7B=@AI=dzV@0)%>u^^$ekZ=$j^PgX(PTg5`{`dj(Ph7 zSRVVugpq7VCIu$&g_LaY6Kl2E!3wSU(l3UWf49dnaa&jHSP}vvnZZ>Gz#)6kK?mi} zzBsv)2GOE%394^K7Qb{&ZSvp09NDasb)Y~q9%^BQ&JRRnUta3J zOzKJ4aD{Q5Vx-?IORrnM{AT4&4ZzpzQh9^!lyrMS$?c1?qHv&>d8l*yi{s>{@1;AV&%p8iW)m}j! zoO^xuZ6Bthu)~_nLMCi7nTADq%=hC~tevB@F$+7(_&xgj)y4n_L#(AdN3IalrV+(4 zfZA}=$|EcCJKvv@Px^91F{?4P&)590#sFfq+yWeY5X4i$yER2DPdGd8$5mHY{5KP_ zinzb#$?N_&X&3-7nFL&xNeb{d*9et5_a%Xk>No#*k{{xZ{^{7pavjqHAS+k_9Jx4*5KX0%~?eE>ekgW(aov2p~Mab@eRFE}HOY|j}fK{?~aITep_ zeIIXAES=Iu-9kCHDd!Uz%AYEBPwAY_wI|m|%-G?Ir7CI4@)uon(af1Mk3II-^Up7K ztfZBeqPrN`)00`>ZwBUb9%)y+*p#{y|E{DlJ*ihB4XIa$MN}3oDn>7r&g#Ssz5#7= z`rCwJ(NbxnPF8M$0%!9%^2j5LK}+)i^je(DOELQB)HT2Hzh10$DlT6-ZQP^wNQo?_ zD1=DD3JN>FES*kUu6(?an10P%4Zwpo<*N_Y2!YcO&v+g1yb}WDjxU!=;M;&Os1>Tzt_XJvQ8EE@^~Gp{AAz<dYHNmNI}8b!aFC!c`r6t}N&!<}2-8cNNtY(%jBg7D`PM zm~_7OT5){mG;e|hjqCIp=1LK|fr&6MfB=o$C17upnrWbY`>k8%Oq!`a-mEwhNX?}UY;H<$4bv!bLrDC_+QbU92 z=na0tebcpgse78!k)B8&444pCHKuu8cte(gaH!;I^h&9*iEb@4u>dOdu+gNYxTZ&% zUlETzd!~5}8Wai$8X=OzYdVUlO{rajF~M!11y3pVYf5)7T{>0_?Uf$vLI@?4=!;6J zp}A=4otEqQ=%Y*r4AfC$&-a5fU+#-Zz0>Tr=t2*NzU&PTL0~CiRY8^!#b1V`rsB=! z)TI$vFvAE+`R^OCxmqmOC*9ZvnPpb|y-%9gm9d&Rm;g{WsCf2juZ zTqStVJ@@$A2O5i)`lf4^uf0{^rRh_g)Gs}->=T4(3N`SwFOKM+R_M8Kp-{yhWl{?g zLOe5+u&(K!uBzAy)*q0bF7_Cf`W0gbrhbh)X3^BOQqxX;?%cVSiekTk>9Qs!>4`mp zHezNbHat-mg9fGV`WZrleFO#ELZKmeL8?!&eluK58k{aH-&L|ADew|IAwB5z0|uYo zeV#798Js>JfMf!S&?^`uOh1cI`Al}*bw#_O>5P>K)*i(e11r`Q()L!qbAizmPIT`KNa?gQNm#Gp^Insxmb}^pis)=M=^NibX42--ZLrCQ{1$2 zI<)Ee=VM&>tS*w4O;4BC6>F@L{=8lpU8|G)sL@$o&=_YV;@o5s1E5G^MJ3!<7bcDu zpRbaR>VhbWEuWYKy_}g>43W}SiZ;cyqteFRpMILd{J{&g44G6oFP0vi4&1c-pg{%O z2vr0Uh}w~_{52a#C2WjzF45wO1M*IFFp(D_$H}IqV*coKXcr#EgE1IbpLXiH&?|OW6~iF$mY3O zuEGqj*e<%QmJaCjkAFnGBcER>E?6yHJhT=|0n>;CrWBqzqdJ9JWjuZP;g(a_^s(uP zF0n+xs-V`=RJ=7d{b{)+Y+7fx9ha^e&JScjjYu&Kw#3M@0(v~uc`oses#mXGMgQ^X z@N$iV*My=MMQ))s|J}M4e;=QAPtO)jtEcN$))d+?pdd{;$x03YjTt|Wm^g8wKdJV< zC>5Wso(?QmA>pJIexzWQwZKn(X<^ocw0ZhRv1me?Glu)9fR=8_Wih1yub4G49o3r|OmT}bSA{VqOJk20jccU=-5-9~7zsf_ zADglO(qhZC()0b~t~%{3(ayG2MC1i3o|A6Ig0^n5CbY)DKq!4 zlT&jOs|rgFl$2sv2rZ!UHOoT;ObtaGqiTzJqi@JF(5oCc3WWt1EmtVqY9eeJ% z>ZTi{@u};QOuqNtdrjf9&pz7@Rb04X8aV|MkrTLvi8o*76HGV@cZsoCRl}*#QNwkA+3~vNR9a9RtcwuJU zb=UPoXR=s**bpa;h^DZdVxMo9nyU|NntGzcSd?P_&C_<3$L}j1-#ooCkOlt10vChK zlBL)w$qI={>WhU_(wH%D@m?`R-4N^%^ZPWvJn?U7F(_2JXrRiq=(BBVDAwB|{dT!B zKaotJICqQm+$fy0ONL!!ppZhEVKf%mdb#e%X|9wzZk`GQ>wMCsSSF-}HQdiLmRoMQ zefQnhdSTb2nKpW`NOSSs)U~u2Sp5vn!0!y<4Q&34M1!l zg*q+H(f~P#++XanW!k*_w+1M~P~BiLZ_6~JQxItwr$wR|xK(;`A{pvp8D>v~rMfYJ z#2mbq4JHZjl_hhh^nS$FX-b=*rM+O?xKG_2IzDn8vhJ-U97$Rk=QARac=HM-?O ztix_4UL=O(;TJpBK!Gp5-zII)`L);JgC+`AifPl+_N8M6849IyMKNc3TF{}kBBIO) z8~rIWQlDmbjG{EWVU9Nfi9K_#cz8xycLhp`fvTcBRdnArZPh3vsK0tqf1!pAi)I%gDDZI@O_j~35tmv(Oi zFjfyFD(nfE3@J9*KHb-;o&sE9r0BLo8ruAL`S7JcOs~-lnA@I?7@J${xI?+7PGOh|gihu8zh74ywBPSV9DCD^%-1CsD*&kiyGw0Zy zQeIK2(T_5YN^(=<#p2bS(*5On5;+hy)T3xu9(=HvvvcY*ggFWWwuq}^%hMaLBsWHd zk)Idtl5%5AVxFnkd{`6LLk~T)n7vE7ceyg-7CUm_u4!Dqnvn;CFZzQlxn}LuNNurj z*OYsjB-F`iYnWi0S0wF_zyE!4$Zly~M=Ck61bVT~?rC&078F6E7et-4C%fxFM^Gn=Ep_M}lf{Lg2 zOe0ICXmzdoDu>ivo#yE+dheAkT!~r1<_zv!(QnD)63UPuV2+$;oN^)M>ynKT(x%^)W5dmLJ`rA1aReu=M)r8om#xVce<*40jb#bx#j7}DL@?# zQ=qu|_vzLl)^+KuKpZiTD@!G(HOCNK{JckM?nXxN-G+PE0)197d!KYeKT0tvUQ$AO z@ys_k#aY+M)?u^w^B>anUEhA&g2G$ua4f783+_q{qr+CPS+~nYbr!V?r3#NxDGd7+ zfBs{-xi2nxh|YL`atvkEY1fmQglugs*4j5+(*@UtGfkWebQWLkn^tysrqW$RmIx9{ zZpQy9-PU)>AB*x+K3HLxuvgkSJp7c4dz<~z)m`{2a~1vs`eM$0scATsO2jQVb!AP9 zz;b|D*@400m;FQndlH`VSP;x9b~UPKG*EW<{Y3H4{nM50J;#TJ(vy}0Qo~|%k?yYb zlu;oQ(T(0>-T~>sMuBI@0VKc~yvi46{ED31L)H5SJ#Q)%BX zOi|CQYZUwi3Un4z4o;8s798+JM#VZ|5oN%s%iKNapknkPsc0~nBQ`vVU{F&Wctq;g z6h?%E`KVJ*MurwW4oy$>s=bA>1)$5>&|c&(LH6Ez@69*ge5I9&%3mCJemT5a3uDEZjb@`7rJ?yk8PHpB0M^ zPmeU2o#G8!%s;AN<04{<+m1-{`-L{Dn2^2lM!pN7We<$i#>B-(u(St>+O00dZ zVsAxy_ub-%qtcVT$`{0@u7_X~i4qTU)(mrrWU<@P>DY>V`}fgld@*mHS1kt|mumj< z(FR73D@jH6m=7Qo>mQRIYviDWv#`=8MCK2J-U(hlX#K=DOOI-wn{N*U*wv(lsq^k5EBMOgTaD$L=` zg2GoT6+~3g$z$x|pj^1VnU$*k)!|=AuCYdO*RiRkK`??xRMNND&c?^3G3&aO#jJ%v zHo2ma2f+@rT!CHE2E`U<(UJ{Pj33o`$EEdBulr~amHi$$pS%I_Q;+)ss$Os$Y3ZiS(xudZYxUPwva@yW5lxn6Lq&ja{!O|Z%S3iot<_{f2_SbiBuy-COA-!K!-I~PXB*JM}gs(674 zbIwXZVfE*8y!UG%A+k&o(yi#z=&FT-;iFsj0yHQg!^66hjFon31!a<*DpOlAil2hv z8kK-T?8)Md^U{l*%zQK4tsi1|G%X&^X`h|yut+PkgfS+V4-guEU2&@y`Y0jE0qu3i z;E;dC>F1|!I+*&FYnzI{nw?UdbwTQ#_AmZ=L7KWfQ*=PYvMU{0LXE2y*Lnq$=IRV57zwAgzx1$?689^$lo?^xZ#F=&*mNR z5l0jU6>0kPT0H1wgKCa*&=n5e)l8QcEz!uB1&1WVKnRI7&mw0pU{$X~P>SY@(&uA? zThoOAZP(TQyxCqWA~R;p*m~=&{fOVb>x^Pki>=d}zx6IoQ&+F8>uj)!Ssnw#UAF-% zDq3_A&`6j}^@)p9+cW_{H-PA~0b(XN@hM1TyqobZ3>-&3GSFF`c!`Fh{iSK^QFJMx zJ=~>@fGdxKe|XgqPON&)rKwX|we~FP)}Cxi5O577v_XO-Tbpf&QMNP|&t8^x99nYj z9(%Eq7{eIEDjG5DmP~b<%Tr?-_Q)g757g0a7lz&$%xUJM+Ml`d7Cr(N>EgmG(jEh8 zh6!PmGfb`dBYU8C>uPMZ_myct>P1K&jSB5X3L#Ot9x8UcD*d5X`LZ7itTT;uod!`- zZar^bl?JCq_w2zP^aw2_8jHSHrwdeTklZ>fi7sS%DtNeN(H7|gCto1I!y&n0^qy+B2dvFkNLwfPn= zikAzerH*2!Thn1pR53yoFtpijB(KM8Pqfv~ZcRf|hw@(mM4*Y<~1nDI^nc7zyO60H!=zoN-q=ru-1bvYAMM zW4VW;6HYjx+I)BFo4NpFC=L{qF;q;grek`Sx#&KcWGr%s$_#I5PpN)XP0eY!$F#8S zT6DQ5omT$t04J;?)02hl!DRK0ds4sD`SHgEfh04iqqcZwPCB`ZTjWYLQ;`(|t4Gg8 zUOVxDODSgGn@;Im`?&*f209bVuj+5_OT$uoV)XLAoRmk*ODA_!2f{Oxr<(EOs~zu8 z!_)FwOk5H2v1q;dX`kU`0!11HAOcZwrBK>%#;?b_b*sKGKaETS8J35X)1zXnAv{sx zl_467ArGW6>49R02U7259SU{i6csA?CkEE9>V*$@?cSb$^wC<5e(k}u{=^ujomN-3 zaSe0~Muow{-&nf0ToCfw3t+P*I4`|a9rQ?AKb0qXY7`Y(i77?PqiNtqTIyvJuOA4a_00JIZbA z?#I&9)PjCXrQ|Ry3SDkBDtc+rqRV)I>6PPgMZc_E0;b$+_!99{k9IBUtQxM%JoK>S zBr|K)EFXSXsGj&l+BA(XUzdeN*WlJwack15fWaswZo@kL#j;POf!^4bPfiLtnA2{; z+Y$NcEpc_@r<~nat>qeqJ<;$^VG(h(F+ptvS|b_5&B)@(MXBFlc3BU{DaV64ixwCw zi$`Eaci+9b;?qv;18EBrDooH!9v(7A8E(24XFZcf4h%h7aI04qGpYi%DQ@;UT~*(B z#u2``Tt=$Z;Dr`|phSU1$*x*Ve=dz2&H?Rw2+~b6s{}?6?WLOaz^6ffd3px@cvs#P@oGmTk=30<`5<)^93XKI}WoPbTY*|TRKe)!=|fJ+y3P#QZZhUfCj+iRi0D1Qa%-Te96;7>R%lAa@wd*?bLu<9-!Bi zO&c?wIq}g))t6pQx28sr&2UiwQ;LedMFnluD_%_lQ#!qP@L%cd?zPnh=Tv~IBE#6M z?(>?>sGWnK%|$8Bem$Mmq#Ht7NxR~XD4UZfPp+=^M(Uor2oX>0%|2?LeDcX>opn~R z)0^px70aK2>+?v9nL`daq)nSP)gRyV@v!`Hh!JwfZ>CN<=_GT=j$5qsw!K9B(1eHU zufM)`@8151srt~{#&qX39P~*UuhE=Py*fVme7qi6>Uicptyb zwST>vF<^)(@K}tz#p3w!)onjaccdPRKZ*xhk+E2Ynn}?Uzl$1}i>wc-Ve5)AmI;zWl zl^#e-k*YrVb$U20uNIkl+G*9x{+H&a<>$_o=Q3GHtGj<^bVox?p|F3&71a?xq#J7# z%6qoBqGCodVwjU5UaMdJnEsmj&(j|wuI3|9)XEnk#~*+Ec$@hApVQ5$krEOCJ|ZJS zKm72+yN;_k7nZ?NVv%7+ASAgLRn^Tal{-@3CCdXQ$gra#xg61bP4_o%Mf1{?JKJJj zyPq4qvUKI+QEVwzP?G~DbtwRuaR`wJ8*H$Fp^WmUZ!$OyYk=1AnmbrcALsO zBWhc|wE{f?LpSq$G{K~|nP$?6v843(B*mO%E3?akF-a;)AP2Usyg$lIK11v zUTn2|<+3g@-}uig8S|t_?JFOx2CU%toJv@i`AU*!aJj|?WE3mxoBuE#R`lsmxu^>* znj(KZu?b-DScl5@18Sy0HpDcMB~Vk&1DXx@5~_HwW97tHvfKlq)G*GNPng8ZD#oa4ZzG_D|fF@4S+PQMmz$L$q!v!;NOH#N2L#F5F zfddErrkK^G^6`r0TNxs*#>+)Gix!)}^S(Aq_m8Cp&pxBaYR$)lSbpAF_;z*5fq1jVrH+(?4H=>QV7Tz z69X#4Kl`j$uXp8Bzi2LtexoslXKBGN+;7@kxv9aVF^6<2f+yJwF52~}{I{f8KzLwu z#7&5p=S0!HZ{^kwK+6{z$gEyG*SE5;SfRPnP~6t9($qvsNa~|$;yF$!E8gu_xv`ze zVCt6HePRE~W3^YkMmH8m4yg1hUtZPdZlv15-P$7(iL^?cmCU^3AEDMNZUpt5i20Qu$-@E6MUlLU^LG9P{AN%EZB# zive0#pq?{G6Mm$tIR2b}es$2W%J!+9;g(_o#VNxp>y|I3108#y;4qXkWDODi>c_(? zd!)9tM^A=|=_4wWecxw?ID@WqScDDbp{%pCRPP>9nO#2kvqL@n07i&NQd2!@<;u-z zpr+E@B@ce#hymIIBm>orM^&y#L(5%8f5?Wa2)LGT+6d`a?Ye5^mQ=n%(Ctb?L>ExD z&8_Oc##C-kjg+CrP&+yaR$WV`uN_;tJ2e=MstAE`_%M&E`;V`*rUqUaXWqD?%bHg9 Kjh|3S>Hh(bFmTWS diff --git a/src/functions.cpp b/src/functions.cpp index 6af4bd8..485ec32 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -177,6 +177,33 @@ char buffer[20]; } + +void WmTabCommand_AddFunctionShowError(HWND hWnd, ttmath::ErrorCode error) +{ +const char * message; + + switch( error ) + { + case ttmath::err_object_exists: + message = GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_function_function_exists); + break; + + case ttmath::err_incorrect_name: + message = GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_function_incorrect_name); + break; + + default: + message = GetPrgRes()->GetLanguages()->GuiMessage(Languages::unknown_error); + break; + } + + + MessageBox( hWnd, message, + GetPrgRes()->GetLanguages()->GuiMessage(Languages::message_box_caption), + MB_ICONERROR); +} + + BOOL WmTabCommand_AddFunction(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { caption = GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_function_caption); @@ -194,17 +221,10 @@ BOOL WmTabCommand_AddFunction(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa code = GetPrgRes()->GetFunctions()->Add(name, value, parameters); GetPrgRes()->GetThreadController()->StartCalculating(); - if( code == ttmath::err_object_exists ) - { - MessageBox( hWnd, - GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_function_function_exists), - GetPrgRes()->GetLanguages()->GuiMessage(Languages::message_box_caption), - MB_ICONERROR); - - return true; - } - - AddNewItemToFunctionList(list, name, value, parameters); + if( code != ttmath::err_ok ) + WmTabCommand_AddFunctionShowError(hWnd, code); + else + AddNewItemToFunctionList(list, name, value, parameters); } return true; diff --git a/src/languages.cpp b/src/languages.cpp index c6a6db1..1f4d13f 100644 --- a/src/languages.cpp +++ b/src/languages.cpp @@ -195,8 +195,8 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(dialog_box_add_variable_caption,"Add a new variable"); InsertGuiPair(dialog_box_edit_variable_caption,"Edit a variable"); - InsertGuiPair(dialog_box_add_variable_incorrect_name,"Incorrect name of variable"); - InsertGuiPair(dialog_box_add_variable_incorrect_value,"Incorrect value of variable"); + InsertGuiPair(dialog_box_add_variable_incorrect_name,"An incorrect name of the variable"); + InsertGuiPair(dialog_box_add_variable_incorrect_value,"An incorrect value of the variable"); InsertGuiPair(dialog_box_add_variable_variable_exists,"This variable already exists"); InsertGuiPair(dialog_box_edit_variable_unknown_variable,"There isn't this variable in my table. There's probably an internal error!"); InsertGuiPair(dialog_box_delete_variable_confirm,"Are you sure that you want to delete those variables?"); @@ -207,6 +207,7 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(dialog_box_edit_function_unknown_function,"There isn't this function in my table. There's probably an internal error!"); InsertGuiPair(dialog_box_delete_function_confirm,"Are you sure that you want to delete those functions?"); InsertGuiPair(dialog_box_function_not_all_deleted,"There are some functions which I was not able to delete. Probably an internal error!"); + InsertGuiPair(dialog_box_add_function_incorrect_name,"An incorrect name of the function"); InsertGuiPair(list_variables_header_1,"Name"); InsertGuiPair(list_variables_header_2,"Value"); @@ -285,6 +286,7 @@ void Languages::InitGuiMessagesTab() " the developer or programmer just contact with me." ); InsertGuiPair(about_box_title, "About"); + InsertGuiPair(unknown_error, "An unknown error has occurred"); @@ -309,6 +311,8 @@ void Languages::InitGuiMessagesTab() InsertGuiPair(dialog_box_edit_function_unknown_function,"Podanej funkcji nie ma w tablicy. Prawdopodobnie błąd wewnętrzny programu."); InsertGuiPair(dialog_box_delete_function_confirm,"Czy napewno usunąć zaznaczone funkcje?"); InsertGuiPair(dialog_box_function_not_all_deleted,"Zostało kilka funkcji których nie można było skasować. Prawdopodobnie błąd wewnętrzny programu."); + InsertGuiPair(dialog_box_add_function_incorrect_name,"Nieprawidłowa nazwa funkcji"); + InsertGuiPair(list_variables_header_1,"Nazwa"); InsertGuiPair(list_variables_header_2,"Wartość"); @@ -388,6 +392,8 @@ void Languages::InitGuiMessagesTab() " poprostu skontaktuj się ze mną." ); InsertGuiPair(about_box_title, "O programie"); + InsertGuiPair(unknown_error, "Nieznany kod błędu"); + } diff --git a/src/languages.h b/src/languages.h index cc2fa9b..13eb70d 100644 --- a/src/languages.h +++ b/src/languages.h @@ -68,6 +68,7 @@ public: dialog_box_edit_function_unknown_function, dialog_box_delete_function_confirm, dialog_box_function_not_all_deleted, + dialog_box_add_function_incorrect_name, list_variables_header_1, list_variables_header_2, list_functions_header_1, @@ -122,7 +123,8 @@ public: about_text, about_box_title, display_digit, - display_group_scientific + display_group_scientific, + unknown_error }; // the first item must be with zero index diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 9a97253..40dc5a9 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -673,6 +673,13 @@ using TabWindowFunctions::last_code; EnableWindow(button_err, true); + if( last_code == ttmath::err_unknown_variable || + last_code == ttmath::err_division_by_zero || + last_code == ttmath::err_overflow || + last_code == ttmath::err_unknown_function || + last_code == ttmath::err_improper_argument ) + TabWindowFunctions::PrintErrorCode(); + return true; } diff --git a/src/tabs.cpp b/src/tabs.cpp index a3738e1..4d7a4cc 100644 --- a/src/tabs.cpp +++ b/src/tabs.cpp @@ -983,7 +983,7 @@ return messages.Call(message, hWnd, message, wParam, lParam); -void SetSizeOfFunctionVariableList(int tab_id, int list_id) +void SetSizeOfFunctionVariableList(int tab_id, int list_id, int last_column) { HWND main = GetPrgRes()->GetMainWindow(); HWND tab = GetDlgItem(main, IDC_TAB); @@ -1016,18 +1016,26 @@ RECT r_main, r; p2.x -= r_main.left; p2.y -= r_main.top; ScreenToClient(dialog, &p); - MoveWindow(list, p.x, p.y, cx-p2.x-border_x-2, cy-p2.y-border_y-2, true); + int list_cx = cx-p2.x-border_x-2; + MoveWindow(list, p.x, p.y, list_cx, cy-p2.y-border_y-2, true); + + int sum = 0; + for(int i=0 ; iGetLanguages()->GuiMessage(Languages::dialog_box_add_variable_variable_exists); + break; + + case ttmath::err_incorrect_name: + message = GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_variable_incorrect_name); + break; + + default: + message = GetPrgRes()->GetLanguages()->GuiMessage(Languages::unknown_error); + break; + } + + + MessageBox( hWnd, message, + GetPrgRes()->GetLanguages()->GuiMessage(Languages::message_box_caption), + MB_ICONERROR); +} + + + + BOOL WmTabCommand_AddVariable(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { caption = GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_variable_caption); @@ -190,17 +220,10 @@ BOOL WmTabCommand_AddVariable(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa code = GetPrgRes()->GetVariables()->Add(name, value); GetPrgRes()->GetThreadController()->StartCalculating(); - if( code == ttmath::err_object_exists ) - { - MessageBox( hWnd, - GetPrgRes()->GetLanguages()->GuiMessage(Languages::dialog_box_add_variable_variable_exists), - GetPrgRes()->GetLanguages()->GuiMessage(Languages::message_box_caption), - MB_ICONERROR); - - return true; - } - - AddNewItemToVariableList(list, name, value); + if( code != ttmath::err_ok ) + WmTabCommand_AddVariableShowError(hWnd, code); + else + AddNewItemToVariableList(list, name, value); } return true;