From cd8de5f15645dc53ee651900ccb63e5df541f305 Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Mon, 4 Feb 2019 19:05:44 -0500 Subject: [PATCH] Add tests! =] --- test/fixtures/variable_characters.sb2 | Bin 0 -> 59703 bytes test/fixtures/variable_characters.sb3 | Bin 0 -> 46355 bytes .../integration/variable_special_chars_sb2.js | 135 ++++++++++++++++++ .../integration/variable_special_chars_sb3.js | 135 ++++++++++++++++++ test/unit/util_string.js | 25 ++++ test/unit/util_variable.js | 83 +++++++++++ 6 files changed, 378 insertions(+) create mode 100644 test/fixtures/variable_characters.sb2 create mode 100644 test/fixtures/variable_characters.sb3 create mode 100644 test/integration/variable_special_chars_sb2.js create mode 100644 test/integration/variable_special_chars_sb3.js create mode 100644 test/unit/util_variable.js diff --git a/test/fixtures/variable_characters.sb2 b/test/fixtures/variable_characters.sb2 new file mode 100644 index 0000000000000000000000000000000000000000..301860488be31dc2f0d89aefed8d157783aebb12 GIT binary patch literal 59703 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/variable_characters.sb3 b/test/fixtures/variable_characters.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..10720e5eee055793f25b797a35c9ca07ea74dcb7 GIT binary patch literal 46355 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
N44F=!paZSV7UX5jz8uTyb-V& z7W$fOVI@-kBt`J1=GncB>JPb5DeY;4#kySuEEf%tX|83TxvzN$#FcP5pm5XlCTwts z{RNA+>bqo%ya#i+U0vmmGe3QkrQiGeq(5!NO4r^J0J1ROV0H_VV{aZ3zeN`1=?}pV z8B(xdKM}ZYEe`pE(iq!>klIXi7o@yecCDqSAsM+jp4Y%-C4Rj8nNuBC zOIv;{rJT&a)Kb96Q(H3~wD@ZB#Sm?B2zkYm6FC>P5Ja^1F^f=%k*EpiOX(xe8*+co zr{ObB{p%Uj6JInySza|i28=fhva}$U1siUbMU;9bBSy47OPBci?AY1Y-4m5cxzB#! ze%CdR(AQK$%y5>8CL)6_pcS&lGiBrU&1u1M;z<*^f-Bg;&1Kk)_%)IKKr;ShDOGw5 ze-x+bXPFfkJL@0O=UM(Edq$LPH;U5m#8^A1pA%i>nX>w(kJIk|qh%`6vVMPP3um@! z>X~maH!_s!j2Vug?gY5*$c%Aa|JI&p{6&6urG>MBv32MP<=XGjbVL@aYHjq_>Ioy1 zIm+mccC_|qi#%u3Erol6qWyi6tf6XjA)cScnw;uy|5E%lU6|ruK<~K03DnLp76oYQ-Aw zm=4^6`J`jMiW8p^Y+`O5QmvcM`}6Zc;cQ10=Zh}K0$`e|DN`I%zG0E)rm-2hU1@!@ zeWo!_ksuio8E~1C;MVEFJwMmy8aKw!y){l-95OG}$pA>!2KBK-R5&&Ib)>Fq4=6(= zRbnn_6X-C~dheCr$@Keqv&?$zfV{VkP+{ThXQy(YL~SiGjek@)yEpfhRk4 zBCq*-fkrwb>k!3=@kQ%Dt1(cm-cx}6+E%?Qgn@{$nB}OuZjUTF6o!IOK|TK<{aAN+ zS-_8<>1zKjkJqZWSRtVnMypDGQm#rWyd>z&j@R3s`+?x^Rl@{^D+gC3%*VrXwVpX& zQy>0r>1+_p7~8>2EnaJAuP(0MHL4^tHy+=qi2O`mGQKQd<6qZxX z%4uVL_#ew;4S{%GqNhi)uiQ|yt9MJG`?AHwwKi@i=N)H+p3u*!^v?eL<3nl2&|k$@ zPz$Wm+jh?%AkVdL96IX?>*O4;yQ6%4_C)4<`KAf3vO4G)q|Q(o zfRvn8vV$)9sl>e6@iKT1c10^oG{f7+H)P+LT5jzx+>?GWE2aK6BVTU`9tQiU-@dv_ z*rx1_coqD1CwNCzz+N&jxc&n=kNY3a;0`pW;=-cZkU*FO&#F}GK35$qQHpHln2t)N5l zT|K^DARk#Sb1NrA@=08}pwfCa=k15wl;3rG*?GnyL_R1+EtMa}8_~=nakig5(iFGi zlVr{n-DSFSH;AQz#JRcV;p~QwinJUGpQUVk6ftP&q1wSWU3s8W;dCpu=~!5tyO#j? zZ{^ZrJ@=lBwmQPv+y%(r@pkJ+W|_hKNyC23aYT;JR?!#UOLZ5bAiC*jz@7kKw7FPx zjd_jxQwCa{Tcox+XEeOj`q)|#&2%))L??rr)T4z;B0v2`m)h9ABX44xJ=M(6l13Jk ze@PM{A}&O>T+W<+z4h}#MfT!zVN`cIJKqW#N5cW|}%eg>cPa)Sb2a!twD~E%)=lGeRfU-<7}8X~Etp zN{#8atY?oudDmU!W38UxTA%?MRzeqXGEm+7)ZV}o8)Mn7GQ+u*y5$_fI(eh8c!FJl z`-pl%|G1&?r_>hVLU;q2P*UQo@Dq(E{BjSfpZd0gN)Fam;uG1L|$tW}?y!Ggpqpq7YY>65`K8v?^RU#kefO44r*- z7^%A%_u3}O=(}i|=_8%DhHbcd!sNuWO(fi`@_JSndrs=BK=3d1{g>DCtmH{&*7mUz zhMjgxxDN)Y{P&ByWjByno4=kGp3vJkgRWL8Vx8txNzceHvD&DzpKDL-lDvQ2oZV(d zCI(^X+EA{+(ocZGjdudvej+F^MY{I{ zZ#e2|y~GExiUj%*NSG9oB~@SiZ+WNKUzW2ROM9B#_ssoSVqU;xq~RdG1(UB|ETVA- zl^ty3w;P>-9EGeu3%8apEm^Q&5~bB0>?hs*d6CawCe3Hf59{cLG7J|n0Q__3wb@h6v_svy)b3#K+rBVItli*klWW3D zBdbpMpB&!2#dbz@aaqo+7XDc6;2#=UF5B^*_ay0SWLvF*f)?51p{dH>xiO+sW;+9^ zhcBGgjva9F(Xn9r((iCSh))RSr_<{2-;qfTZ>Q6y zc(tGIt7aO(*IX!E9urqdfJ@fYU6}>XN|FN#6Bc$^`Z(^i^ESk-uoi>mz1ZaFD`y6d zJq<6l=1aWk0ZR#@DVZj>x6kl*>P0l(2i7 z0M`MiXY5`y7HZ3b1;Zm>OSZp?e(3n+UZ;)bOZ(r>vC!@EdklBB9`I_Q+HuYEf8ydC z9W`Q>r1QnRt*d+yd1|bp_ub@u$2XyrJ!|o{*6w`tCe?{0&e9*v&F&Qk`p)Yd*yG({ zn8(puh+}6;nnlvtD-D0YZ+U#=#pAy}xv7ZVZh3ZZb-Or{MHi(F#GzQFa}SQ(4k-d@ zh(9wPv24W{@tK7aEjNDHJ$;?@=U2vDhvgF&FH*0`oN#baMQVq9x#eTR^eM|tA?Q8w z^Ypz80iPjSSSq1q`iPUJJ``xkaNO?v#wta6kCDk&2fc`xJpJUHV*7yIK4mJS zd!d~7L}JGY9%%p5`SRz3qE8jn{pvV-nyWt&r)<3J$~j|r)sJ%I*!ef{pWTk?ssE3m#w*J{%s;@q4y^5wmf1*L=P;G(-&o(4qqO?mc>9^>D)zhhBm;>&>Ov-) zDB%l@X5sanUz;ACd$H$VAm0qR)3p}&MLUYq#5}1skmMJMWyrKm~Uk!%6C`DJ>pFD#HRae8FyxGK^8q8 zIT1|G^V;WPMC(u$+u&z=PQb$#Ag@G(g%l=CHV@drFYbPlwV3$nL4T&xtQ73wDRzu8 z#&Vgn>qRe6dC|(}qK@wmD+L`CVCVgpdt^cYhzIC8oVhE}^Px`m=o}21=m~RjHV)yM z&z%x&Mm203Na#Eo8JY&VFSsx-U=GRvfN`!t*YV8y#QsP7b9d2$VAs7~IK~3)xu52a zie1q9(LQHFk8}llSxQ!_=C`mK&35O~UJpGn^0d3BXwntwSe6lDPY^?XTFSW!NPTd(vj3MUKrvr8Eqa zyA^OM;9z^e4vSWS58a);xC&J|$wkw&GV`CPKIQygzeI$eb^p(PN*~2>T3C>kVtcmk zIbIaM&!^n9PxyA(F_Pjrag!hu@Xp|CbFKA?1ag=-fT-1M;1hX;8gq8vqW;APM0dOUnhRE= zd7p(x*4*VRrhO+hSLMy8w`!#q7ehgNNvCjydY@NP*=b6z(e(ADyMuN_`Gi>SRV@}o ztxSq*|L<|1C*qs_WI4Pw|C&^9BZ^0syG9ZKhIXQHo~1^G?WT>=J$s`i?t|u)^25BR zd}~n|S30q)ftPveUH;dIIt~|Um13)lu+nZ6Y6|1EHrVz>$ah6>oF!*py0wN3~FxrG8_u{wu1 z;#leb{nN{yl<#dD6ms-$QWY#$^%i&6N{ZfYCv-GmU*8rxmnS9Kgf8RHl7pNTxfg6XWOR=-?nnp?9j{@za)|>I7K{7Ydxr0q zkA6MzYEQZ|O-Txjmj z{`fZaBc!}&Dctgn1JKsj=(pILw_Q07`6euUH+1KJeks=Hl?Qp|Tn&+p_`>qX{^-)~ zPv2hc%1r26(m>m)lg6wf6i^OaqG6uqwKwKj+@bYNwv~D#5;&hC9Fg4QcTItt$8!4L zKm0sWUclUF8D>9fBQV?{+a}ts`ObzP*06)Usm&t-8lm1VlJV69wcJ_ylYx_!l+>;7 zvVUx9w~z;;-#D%!FKGT1D#Y~$zsVh&uEvf>Op&TgZzzg+>YNl#+0w4bTb(z`Qqr2f zz9?i3m#AMyUnk64YiN7Q5y}e7B6n_-_0}Ije{h5PhB6CY0jG*}U@o@TvvTAo?aQ%j zRjQlx1@xSq7h+U5Ts|*_(aE5a^bY2Jb!#!8x;hW)|3E^-qwB_%c(# z9&ywTv|T1&LbPeIB&apGxwD7n_NiUd;aCDh_shyIW(5Z<=w;s@^QnvdIryHP?%u|d z%^>Va0cd4C6B$XmP7h?qUw<@)w~6Or0#Q~Hvg#MT*fSh4qhN5XDkS~)2XwAvU{E`c z$ackHa<$e86UEbpjZV9_^zG`{U`whu7!*VQ`%w*xL;RO%4+trkAqH- zZV~@lWGNX*_NyU~$w9#}5282wwOcm;uCcZ(fw>XY(ahvnN-G(XJbrVZuj#M+m* zYM|3KYF1FUuIhZgU3I~HYqO8kf{n_;9`aoxh) zyrG)_ZoE6I(N^yQ1aU8R?+UpB&sxJW_RX=E?F15z(o}V0RCeWu)wCO}!EyxF!JSG> z0j5aD1go0ycIg}M?}^`P>a1+|f$vDCFb@bJBKt+_F8e>9KM#GPl@>3gngx=-JJ?tR z$qD=p#WU-Ipu%04oo#-Pp;r_dtOv}Z6%$DxcY5MPt%tZAo|BZ8$8j=x_U|Sa$#M&{%@tP+9``wZOnSJmv)gh6vO*c z4dHbS3KqA%BCdG*XRj4dgQA?Lx01OkUnBFMjxyP!<^!|MP5tqTHPRL&)l}HIFxpt5Eko2Ab z!M-HCI{IArClbVDVf76cz&$B=&Hp<8jn-EZn@azdT>4@r!N3GxjelXb3!o+0t9BpO z>-~OXZiJJ2m-RKx$CAhuKLMS8mEkq`wvLsToO&|%Ih84D15xpzC_ke!$~cut<8-^Y zz$+0OgC0BBSe{WsN$`S6zBy~-h>{gxE$a5H|MWgy9C9v)r1j0ia z8W;?8Znjp})m3bljEb80<_k$ZK2@^p$<(4>&%3)<_d<9!F4q6FnR0^iycx*xZWuj6 z?Bi;)6S%0%S%t15q-q?GvFlAw{?z~6lZC5QqMy=xj4VenO*g7t2L$W3qVPUXBKCzv zyI`zQ+B@X2;)fzBpGyxLNU1f;pG@QBzHN^aX@SS_uMzL{-mMm{ni_W6M~4%(I)$nc zl#RBm{^HLGnk6rVR&+#HLWy~b*4LV1)>NZm0#R z)*kV<@XoEca@%LOcm4j``ok&ZT5-=fOb3U1L};*juku0U4VVH=cw#pvZ*um24eM7| z2nqaY;Rn%mw)$8og_rIA1(Q+LIwOgN?;?$0Z1moU!D5E)4@|tOM+J>SEhLH z7=)p4%I^G{)Z4j_JJ7NcYqWg?_LY%3z->+6z{V~mq%bNu^cl(DoC9bT*sbhZImK?6 z`QClBq9b!C{lVYhsUDqS8&x6`qNZsnZ&k?x9duibXpbE5%0qtCmWe4mV?KwAS^Ped z+O)agaN4OX*JhU$xz)1$U;J*aQ}_^{u%$Ko;v$0W#&&W>=j0!e2*K`uSnmI;xVB{93`NpkkRehH5b?`t|cb z&SV2>`3f-E=Dp2k3k%IA7OC=%IXdlI_3nH ztm`oo%gxSXp2K~C5REcTiMhHxHZVD?#rr%i$`qg$yh@S82vQdJj)b*MmLK`G<=5F7 z#H6dTuaz!R7nGrQKoe%jfE&2Z1Z4+yJIUawMhw*-Ye%K~c>iV?J?|Ql$}9?i#iK2A z^dp*oz%O8Qvt=Cvoo%K<>^9Hppmg6Hq6ZkM*QA^xH<##g>ZY(g@r~{OOpByt`#UU{ z7_Ck#2yBNrQ~$I9#qv0w;9(cg76* zjFXX8@H57G+B3Q*tV9lRfjuD<_uc4w#_{TdYjx67E8FQ=Lj&!BHJ6J5f6rFz7`!cg zVpK_^!WW!G{?B}?9llr_8~JE71HMY5*m)D!uK0%3e?^7+iYy!JXE3UC zt6by=SYbrhzhgRrKIwKbpxyft@g=mu&{+NC8bG+jI5cvrGpWg~%CO{7$)Tpy*{7;~ zkR)shoNx9Bc*~57GHjv8_+ z4vR#BBxc6o^EMEdSg!}JDTE4GjL{1Kl$$WKegH}9rdG9-R+khPls;(VEDCkW=zF%; zkTI5>rkky_ZF-#}ydvFp5}B|?gBx=1Ws^xzKf0SoJKBz~cKFj+Bx?aP+YGhv{}FE? zFPhaGZL^rc^4)}f0bV)|->f(4nn+w0lgFw3+j<^$YqS?vo+{`pde`R2&NpeWvvH6i zHO%~ssw@g|Z#~rmw|Ogw2(XQ2w@`g?U{X3*->cl^*_2e~`|De2LHB0yb}-5TL40P7 z1x^{LSs4*u`$B`7JiPE#rk9m@yjyhgBxb0;SCv*wVHK~>KU4O)&t|pK8bs>0`vv)8 z=x*o?IZtZ#JK*o?T!Fl8cvW$Wud{e~^3_0G_kJqBuDaw%VRDsp*a^@Hzet+4tAPlO zju?4Cf#e0hD}LJ@Q{j*FPp`%Ee=J5$ISo2=FXf>@C7NLt(8kgs4wLvzI$zynB$ZO-{ zrT|p7v%X)WrRW_QCJ#7wU7}uZL{@s2>Q#N})fP}pBk{M0=9pHiALeUd zq-~j7zL&ze9f!B%s7VCJ7)K}e_Um?)QkxnU%5}?B>vxPst{Q=Gwwr7Lh$zr*%k}U! z;x>;%o(IVoG|ALarFrEgJ$U?JAEk4pO}XJ;1;5<51vNug(uEA*-SMsPtyWD|$53GM zOV4T#2hv?+lF=Q-FYev>y`xh-YMm~vbG3?pW>wQ23ygVDdT!`Wj)i!^bYyrG~9QJzYCWL@Zce3^V>sDlY z4zi$|CfDFi&@tmNJ=>@@&G|LVe?!%XZYEPp+YNpN=ZrRn)LXhh%W*GVyS$@Z1-L>G zR(pf&2uE$ca@eg)*3M~;tFx$bq3rFq=fvoe5&Lm0R3LQRsu%X&Ho`65tHZGwjW*ZU z)RP%-C+53{i)oMAjy9RrqN`*L--cHC3tg~$YxLx)9LgpaDO>)$h zBnr;4g<~VDwAR+Yl=D@wmCu^rjFY9!CVgn84FxU&^?}S0TJ}&6iMyBm1sEJSsB&Ap zoqc1LH$d#T+;W71t17L;xA;svl(v}^qAP3$;Q>}$s~*HfqPOc|m!o!@tvi4{Y8a^j z``+}s-fitan=dq+ta)E^sU0+hk!hN$pnqV+upn?bqyn|WKF-zAS%!0h&w+7~$GIOJo`gPjbf6k)uoxzZu4 z&Tp+NO#yWWDrGgwU4e@yG#*)-;w^FO5F&_=wKIAH;WG(C>_i7yMd|A+E^|aPp@VNa zvf5l)-q+VvLFzQR0ZU<;pJ8Wh#rVCbo7TFpE$Ews9ul88hj9W6^e5Ix|Gy!u2K{Jn zsg7+|DaWf2wO47KjAYGS@EkjW-B+{{Y|`2iy^oMY0u!guPpqVRHEVx3Nwc$q!L$QZ zgSJS@$EyBX=PtX&a7`*KiV#CMiv=M9;C5)TU7dZJ-4g0A$Wx!PR>5J-l7^1aIPKIH zdENfXz}mfC)r$u-0q_F^E25!I8R8I}fKITzX&*(XL2H5c=p)t=*x@tH1BYlrsz%#r z{h7+TnhP{8f#Dcy?4B`%nN-nWIiju-Oh&r1e1e9$ZavGGUS1$j{c|W^;=uQ`wR!P0oP*EkR zK1BUD-=a=IJR*lV#S^U2Tv!xh8hg-g8plRxff%|Fxi`mrZe)nrZPsxJTDNuWFfV4|_Q=Ve9NN?N|0ux9^OXs$ z+h=d8K87ceUpvRxbFdc?YKSTHf=w%$3H7l^)+8#3qeU5&G_>P*xD3C}f(IU-YO1V%ZV46+sAMor}?Qm{`WxK&s;iOE|Q}0El6cVGQt+7YIW2cYUHMVN7l&InLjeTqX*KtzU6YQTIG{EkKRcZ zQJ-Qn?SgSPbSkzxf(9bU2ya-I)lGAABNa{9+P;-WhRQ^1|Jg1=+mpJK^3tmKj*AO% z8aq%O&SZ}lF2C$Mv3&>4;4pj=| zCMd$B+lm|5ajz{36#&}}%Yj;15=?>(Piv;E`H4uZ^;1v#&1ksh;Oc>Y)iqnY#ujU} zR4`v%Dm|V%#}KsCTavlt)rt4vcU= z8|dMVyIyo>IYJ0r^eNagXfL?d{5kNu!2z8b)s1Tx1m72UgB{ek2IZ<-|KQaL)TP-( zB?cs%RP82qX>e%7ts&Z=3t$z?RO3j)WIecMqS90823E;<6|Jc0Om*qMgo+=`n}Z;(_Em3(Hq^XYPZ*NxPFrsUDHjzwR07ltCE_I3}V=` zT89zWNoKAHm(wJf%~g03qy&^^dJQNs8aH^PHKlx0tXNp-zuJbPfH(J%1RHexpm+y=Qc7`{_)vi>k*B)q{AM)jB z=_Dgiq-U;mF2N3HY>_p`D$ByvbiHvIaJRu3&1%5U72s@0uVGse}xS0nRW zhR!V9k@U{(m}`wgEd~e`SlFBGG)@8lH$ce0z62T=T+_5v+9)ubllQZ!=bFTI-Su%T z@ZRG2+lo%}`}n`kM7N_(Q?@+#2hf}u*!ZPkykUw#qIQDnCz*g5KjzYH-`3JVtygZ` zM!ht0je9|7Ga`%(caL%_BN4E<5D$ybCXWp_8z}VWbyU;|iW~f)nauvs4pH-`hOCBT ztwX(!<}23F7L&HeTzx&qTy^ZjQCZ;E=IOw721NbGx~DWgD0PXMi^oU*b|tlSG#;nq zHq^B@4%M?xYuUm*NL2S<9??#bRBy>gdDgSH2QGA$wQOn_ zt$*Jnqh(J0l)_E9II)Yb_hrwYj4r|s?LF0Is|%b@K$%*LQFxnfle4-)%&RJre&#q8E{>O;Wf;C8II`jZr{+@ zSPyEP=)g}j33nK7L904F@?>}dovm%P;OQ18jM8+vG~cTKR${C!ij-J?rWb~ec89ly zHIOM&&3}8_=)Fo3OOD;JTakB|XN+UMjh1zb*$w?A&0zI3Wj}e4^xMkFqWYBcP$JE= z*^^R7(P?)YVR0$i32k7uwC#lw|!6q65rV(g;5LG8IRRjwkvE&j~|Gk#2}4Jvm; zH@4JIHNK&hPs640KrQTmv!S=CkDL1v5r9&++Gwb(@kcp9u|wJ=&Jk5`&Mn*@x9^*3 z&8Ngtpe=+xE`0>hXzpSQaJ%6x^>%l=L2ySNwUp~pRSpBbuQrLfVmpz5l{yzb*4A^S zRi|;f@mKr$VSDxgbpn`9V7O&?-}C{yVF}jAEb~DvymE*lTBZ>7iodU1So$|@I`X0` zx+T2PqS?MvIv%`IqRp@laH#XJ^(*uH?)Jn^2-h-6Rlfuf$vNUD!tX*1cWq&2(qZU! z=R(uFhBr-@X<<``gerP7@LsZkcU>Skz|`%Vt;iZ`#8yQCjO5LtlR{r1hpk1wHPt>; z)%m5_vaz|zvrBs#Ad1%)A}gKV`DzB|`y08~o0_Bk7RIqbOKen(}@Uej2Wa`DJY3O9~>L-1ZO z!A@mdoYL$QHH+(N>!MqK4=1q)G|pIWcYN!Y8#WU5#5bLE1zBx$0gxnWT501Z@*0IP z0#`PS@qDth$GXLz;@j|mIzQIT8`e4k4{|d0PYl~1y5J=yzJgWix35)*%mmiF2Yj}0 z)5^dyfex71-o34b(y+g2KkdX+pfE}AE-KIEe88iyufbLBEw*joZ0(n;ETQQNoNLQ( z5zKL`mrl>GjcRn=ZGkquZmI3Dm|rLR2kfy)bq5D6h4lv}x-xMRkhhkqTrRR)G35I5 zf2~#1Md=iPKkXrbVzu$LdGX3tkgD zl;_T4Gd1aVXFd=8>s)U2YaQ><9=*o8s1js(!%pHp6>vA`l6L@k9cH)LceU`<0iiiJ zke$H|%PQvOP1YVNB(*aC(ZF>>yj)9(1t(eXI z!GtdlFW*}%oDZ5=94+b%>ZDL_(nf~r=#jE{14rZzvbzr?NY6jiO^MJBxvqOy;Ux;^ z1T({zHI^STp3iH|%#K{?9qwG|_}hJSjKZ8(6q^vR-Y&NOkYF#rNtbB69%xK+X|;A` zXnFI}f6QY`3G|qGziFkBSG{wzowS5L!DKB5q8e|(!0}yE{9gvPd)qiEWBI0|YSq%c zyvZf^Mdzif4Eu$;Ig2Ucuyx2yvb+7OEAk$t^1-y*PBtP+<@W1Ty)uq|?iPd}U zWO*LHa#4fs$GAx!o9EAOn^_pWI8fX3y4!S+F+IV}R@q{vj!}2K?X}4lB-WhIuhicSD zV_#L2NIqr0p7k|&y(;qv_kJnKF?WjC?+h?l-AmADah zT7MkypJ4A&?}8`8k)AyNeLi)%d8DX6uxDGh-(bZ|6ZfO?ev@#dyZvc*UGHR%H%?ev zHLH8tEOHUVD7u*(Z&K@1B9Wd&>-d)-MWh#*+mkafgP;LB#Q;CPzo#8Y? zu!Hp&98mcw=CYnI1v1qZwdlJ4W4SA%t5~|G&v^I9aY=9uP6!YPT-@E=-5oCO5CRvs z;O_43?jGE7+-;8gJKwXuHEVwM>fW_?)vhvQI_-~ZpZkA2@p0w%-bO3m8H*_1mwsDq za^3WQs^?Uy^|F#R-AGSOP4a(rthCRz53uwyw=kCYYy5V;;Nr(ApHKXW+L}iUFq}qa z49gl;Z*+ZU9dnJl`d?$Lf8^E?(VPa-;MX{yehNQ{Gj=N!rZjzNT}9rG8jGt3J&y`1)&tTn~n z96QFi(w*g(Wi8BM>y4??r^dswBbD7jdg433#wB&Wvl>nPO-r;Nem4E8DHv4X{ZYb1 z`u3u&#8~B%Qqd~^*8Wr{FZ)E+go^n^>qxf|Q=`Rvx7=6l9W3q4S%!;$ zY~RT*r3>JTxD!K%*{+{ zUEtTFZ{`8@8&c>Or{u*4IlYx}{kr}2aDn_wjbAC_HeWt^Kz6s}@G6~Z_09g3b*;*wQsb28VHP5Zo(QfDl=olZ z$9P&hRHj{jYyX)3b?}eT+6j*4(L9i+dRB6O#+!;q%ik}_rO%R1gL!y9QaN=qDNa6% zJr6hX*K=(!H_~SQ%KvfacieE)MZ`Y=xpHo?XQjuL8ByY1dLv~iaebIe?#F+iZP09F zXEGzUDfq%u#P(6I{?qT5`_B=>RafcQ0BVJ-S~_2BPqBGv&y~5-olHYOkd^Vls1d1+ z%u0=nYa&g3-yBcbpRmMQYL=-DDlO@SgN`N4#!@x(x^4%!&C zAgR=g_}Op<-^uPZT=?7m&wlL-%Qc@NHJN#!pwdSd9b9CsW{dK!^c^#fdXDFzLy%S| zhISG4Oyopv^Y85^jp4tq|HQSIEPH&ZR64U+F*1Ed(V0bxXi((=$q4#1c?}Ps|Dga+ z!)}QNCa#9d@J4%vDXFcdWsN?2eo%?7WEINd=_87S(>V24c}+Nne~}aHLFM=KT17L9yjMR~oRfs;snlX(BK8QKhjPg7 z#Mo#&@WP$2);H8F-0=5+zNx)+upDY&4=CHDCyM-+{ziR5K*LI(q`DKsu?1+ZaLSr^ z8&w8-dd^#W8KQqP3v&%893{doteg0%szi|iMI}WVXf7-Bq!`P>x1}ChSaMmR_uDQokhB8E-Ffjak?Ybnn+-8uqGHUdX%^k zDeb@R9AQq^75?p~t!OUmc@%3-O_UzebSk>MXtVUD>MHW4oE1zZ>*4jVy4Y{@zUXQq z8ky+t;_{m>>FO4Swe8HUJieHkY9?)@Ia(xGWM0|<)ks-7I~Lp{w%}th1fPl3K*(f9 zw4%SZ>#Mo5F1zrHHq8t@tzue&mAq7)Pj{y~H7TW2x{O&*EhLU$rLkUE61^*+(Kx!t zpYOV1X`=6={i{1*-sJfioj|bSUrJNj-t;A!Z_4q~mP{9_m4L-3bSPGcMn#R1i=&19 zG++2Q7BO=hF~ux4PoLvvd7N%orU3YHPq&_l=?qyVWdLXv}{>jED= zcKZiYT>nRZ+7xi)1W{2A+%09*SXvzor#d71mu(6<60^{9$bO`kz)4G@bo6UL>dkgc zH}m?-`fjEYj`e|7sa2qnw5mFsRy=Kzx|Jf#9f1T{7dwbtMaCo3MU4fuc@pf!|LdG+ zxoEhf7n|nU`}!Ltn^8w3w^c;?{GCi$VT83t>@~Pw}-JSY|nGijqMDvm1LdP~mO9tiMeEVrr zLqovu!m`tIC(;p1GI@%BHDl8nYn~{-N$N5=lnj@k zLvQn2=a3MCl%_YzzNvp|#%V&zrm`GX4bI??(UoW%U5Wv$w4jLBB2)akTq7+8gWNF8 z^xB~eeorlirDdJeL({fv;woG|hf9ZUVk0&ci(^yp8u(H)BQ-m^-Cx3`H}BS0&@VO4 zvgZU=qzb`d=~GoeLuopw4$Jy;h2R|V4XcjfcmRKlcf~4+mdEsgT5iAPyP=1Ew-MU6 z`p+k2fRip)oz#@j>{fM=>$nSW7@36+!faRuF@R`-FGF6$-vyg`23fBfn(HHmnzp*W zoe2%qNs?4<*UZ#>RY?>l#l7iaf(Dqe*0`A1K~%&KBDE5WLkm1Nt%nUybcmsd^_RD7 zd_EE5f{LT+hw7WEa*Axp4cbDrAWRsE-^FJV|KPWgor(FOEN`|AF`m>J^m&$d9zNO! zPv_(crFx3GgUTmgAvwof1bfMs_%XZ)v6k3}???M27lsSH|Jmvrvvrt$jd_Z@XQVnd zlo>3)rkbUmtLmpXDtXCF0DVX=o`dW0*~E1GFIqKKKH}#8v!6Du(BME*YiZzn0%m5%IJK%k>XIL2f2P=-gNcN88^H=SRaiF%9mNvF=5J6{ZFW4?o zDL1LUDF-QVsfYzoN4~=!U|sRv_-SkqIx{7SuJr8_?z*dOs2ygI*-!cpB#%&~Bw5O{ zs<85z;-)mno`vNo9qz|E;*;=u*j_Z8qN0dj?|5N+rfsVA=~vlOzHq`#juu~4Tu?n$ zK3DjpFW3jLCsmbLh(E{Q;3$3#otqjIE#sf-Y-{?a&D56Eud)8-55#*CF?NmoukwoW zhN7B`;G*y$)rHuPf5PwJ1=w@+O6o+^<JC%QXEdZ7sdRa?e9V>tJgcv+R{JsH~*C zCbMu1^M=|*w7@S4Gap55NY~VmSh3(p&p2xX1E#YH3T$z=j9fy8FmGg)R9jRTs$98L zm<}mCOv;EZ#5H^i=0YZ8Tc7g3V)V${(m+s#*#&)m2iP z-3+HuH;Bzd1fPNpMvtY|#ySUUd+J*=46SwJ_3bRPJkiJ)>@X9M6)2~vb|^2&+e_r^ zL0F6$PQ>xn_;a)?@;SLL`XKPf?Y5wXO1g%6%;Iz}jpU-|X++jj*+_L=8Iu2%^ksuk zL(L#k_-wp~px&KQGJ%)0M`c2h5^6 z5*3K8_*rZd+E!E$J0INSIc6;|{Lw+fbW3f|?#N!$NI#NwRc%)1s2Sxx=@<4P%%%Pk zHevyB0q=zU74?ai4o&jTv+Xke)!Pkm%K*>4$S$-tb6IvswO6fBpI5Au0xpYoQSHd8 zw^U^-vZVpm3x`v=#A&<@ z?nBF=Wa??`bnt{{j;*_CgF$CJYHQAyjSay6V`s|ms&1*LtG6hZ$!dsi&@`ApSaAlg zigiO{scZ4$p|9S0_MWDvdX1rhrGmR+cq1~Mej}ZyGO7dWdMYSiC9cWH!Dk|k7=drV za?xL+nTg-wmcA>F$!64$tKVQ6OsaaWZmGVboFaS6b)c(I-H0)G0(*y+WPXvc_J#{R0 zGRV6-S+fiiwFa%!RLVJ2@Hx4_CYh!jsQ#v&uliTMLCi8AsO7|ZJb?AVKA;;#B@(vK z3GWu0&+t@RUwg-}&A!P$FnNXQCHbW6uX(Gfs-cyc(psSvonrt0y z?bkZ)nda)sX&dQtty=H>mCO_L7NA2SAbuTuy}X9=HY_lRO%h@M~>9 z3?sCCw13sz*_x^#%IHPZ4q^?FNgTx$m_}rYmJQr=noJ#Z z^9r5XgJz%G6FGquW3BQzYO`jjW~2&{w-eAG32KrP38kPr$FQg<8drq6d7fBC>GKQ4 z+QY_tr#Ms&`3@t}3##>+pPJ$7*NQ^PHg+{EN?j1#Ks90(ej9zB%!~ZsOWN-l25L_i zW*IPhn%|N*ORg8+R-9C?(fm;FPLknO*K?gR?|h5lJyib3;`;VtBDfAT@dRpni5+RSl}vcKB((ZI7qv~ zRLiwCGz*D9n{%U2P;rGd5-8!sPHGqqC_I3^-Qxm^Km(?a^|%9ezS$5EI;}tSbqaUV*succzyKek_S+;fF9ano1sx9QB#(?Tsb1_x`fFuI89~ zMx+sTgefNPq%NLTG)<-cEDwo$F&HRAP7`*Fh**l1L5wjx*u_=NTt-)=kkeK(MVzV7 zBjg|*lJ!v!Nb8rjL%m$FR+13>SVwX(!4hu#HFg{MH}N#I)&s4(^v?>@wO`s;^j^Tswsn~nOp4bz9U$J^{(DS!#k!6E z9A8Mz5>HW<)l^PvqM4y2WfArR+)IY>5qJcce;wSNc@d|i76i*fnm-XgZU+TXXO0^S=R!7TV ze^EXhFUwVbNjoGY$F0i!(m8CJP+4bTTa*$MvNqNu<&3oQZL^Oyp4EOS)EJK2T!J54 zK%J5-Rdr9Rlg?|tD!)n(v2xgq+<>>lN8{~q1FBEWjJERMa3H29+IfYib;m4u-d?fd z#BXk*(xUm9RwHe;YNAZV^@5woad^7mP}PEqt10j-=0E7{VmheJ|JzP`$W+cxY{_Q>=X^Y9&L-NJy z%4u^nzm?Nv#RMHbNp`_EVkfYoSPZ$GdK1M0UZ>nVMwpKd+ANdCbt`lWxliAgWvO3j zUTf~FI?K0<_tCqkHiTH1jVLC;d?I_iR;ZUpEO6RZ*jW3^(9E$SFf^41k`h*RNpnH7 zN8L;@Pg0HHsfmOITaPWn4x>eoQHgTl-`@Q;sd1XNw6>?Agq`)*Ngkp$NQ$U-YnrAt z&>T=+mTqIsAW96!-(fziFJ?g;$*R$lK8ItC>6NaBc7%S2wJiTTHjB8yy;VR#y|-$L zsusyga1-Hbaz5S<8-|6@vB-zy(C9$_PUmA&1zr2XyV}y`Zf;p*C%T%6$z*D+rn_dd zsKyE%5RpRsw5^MpAriMR2m)YH{duwCTFtrr|DY=qnPTbL2jD*dG@)a*=4*R)Z( zB_Spg;KV7cvC!#sA@wg!645!nLyo%U3i>uWXdGex?0cU`r&3~*^1CLMHa6|G>Y?mE zu0DKD9LIQ}(?u{VvN;utssbfl8o_&;1Qe~-dVKx(1%ePaRZh`-O`DsRp}r-bEuKez zA@lI2f|sZ+%+&(XzWBFbrsuTvw_%5Fu>P{8zb6q{hqYm+$aktsq?J$Wpe~`%iwo#l zR85@1KBFhmw&+SxxkSn|XSC|}=!%+4xF&|02q{n|+p6Ny+Nbr>j91Q))@PT1 zQp6IB6|nz>jzIP$S4Z@|e8*_>HN93h({#--Eif`w5s0Nhr6}!QT1rz{HCA?u{RZ|D zQ!#)Qq94(H2$5<@l%;VNFpa2& z)j{{8{|b};Z>oK4bYPLIhvkYM6S8zQYp%CuY!R+yWr_ppDQRTdKk6!qI>M&tK_0;t zqU+EpD1nAjt>R~cDR*ycBZFIeTQ|TA-J8R1WIJ6=c2u=M^GDM{U0ktDoKLSIlS0;< zh2B6L3Mf8~-w!Fhb8Tgfm2_KlgH4~Ee6Wqk05YXcWkX>apR4OAyGuPxV^E&hfmOkB z1WdXibdrp$;vA$G!vq5nnMmHVezd zej^3Rv}oA(%^@+@()+YohH19%{Py@Zq7i472UJ;_#p;<#t@I%40~d+Q7=o3?tSE=V zlqyy^u+CM_(niRETl7~g=R6-GwXrXB9hqHuR((_LSALQ`=B~q=i< zE-@&y&hx}t+qhm=R)5C~+?B(RkVo)8={Ds{wNJfVbyU7bJc*u8{ld3m$FS>IJM1w+ zC9@-K`0Ms}rcwIF`k5xu84Zk0K@bvq6}!}hLeA=-*d`gl=qVQ-L*?zj zvl*Z0KIpoe#yaZ-Z=||`A(BPPXX-r7RP{rJL2`#-!4G^GRv){9t-#8n|D;+)qdwlz z*4$4&Rp$}B)d}C1xS3ePndD{EH8l^_`;|aeh07FnU>`vlkK&Ke z3FvRsf3z4qRiaI>yUb6STXj@(Omj?iSKdkdl+L1R61DJCxDmHtACc99`*wRO+BzEd z>oWDr&BtA5Lw`g)VJ+!vFLG6|)HG1~ zImW^E%|2P;jleUh!l+8qY*LR_mX?v+M|hWPN8G?Oh@wPWyc%MPM}ok!-`dw$QQz5+ zu)Ohnk8BrmxK!3t^-zs#{!ulSKNK&Zmr|t#xAPtEEToH>=+>k%0{H>Y?hMs;}|}l3|QV*cDZTHy*?X<8#ppspiqWzL$>a=AZg({XOF| zdwqYS#CxJ7H&Q-Sm8*WG+N-E8Ez9PES43Bw6L4IJ*TBk%n#HCE8oG8_dKr%E8XEdq zEuOcLy=XCdo>Z^6sCuEw6gEtpZ3XKIJ*$CV!Jpzq@gWG6m>+uTX=A%-9HQT>|6@Mm zDjG7Tyi{-T2l*Z45Y9}H=pzp8iFX;CJ z-`IG0q6=F>=2lcvbyilBKNjDo4^ab%BKR=;4sOR~SRz#+X7uB(6_)yje!5zQ%GQ^j zO_6l;DZDB1%Ev16lsDz0CGVKQ;1AIPABlVLW(0-5MuPF9p&OnBw)e)UZo0mrxuolE zuwrT}RZ*NJFRomxY^|6gT`e%C0XY>fho8aA5hw8Js4e+3Qrox2QOtZqzf?Ea*vr1m zwtrCrh6Tyz|+E&E)Tvwo*B-bm-DTm2VOFl7czzlL1UWT|z0J16Z0==5djCAKW+Vf45^=e$XrYp>*`jJyfHT4fQf*gd+Ozn*P1j?QW|iP zyDU4S&?yS#N2RT}Wprimnam^alC`L{WDJ`t%8&i_Pj|hv6gQSMv@w0P@ANrir}5E@ zMRHa?T5&?ImHy^d(`|uB$hlVtgbWjItSrJME{0lp&Gv8R=Ej!BR~FVC2<}eRpkA?K zr8)8g^82zY5(oPW-k~az7UDkHojOLg!M}@Cu|fX3&i9t>Mv?KId7-m$ph@Bk5n<{` zx5<<8G4fZ^jhvs(1%Mh)Qd9x;mr{_sP&P@1@;nAxQ}bbCU2~>G?3)+sg>9zGNJ`89 z%6G{d$qeFS%t*L`no8av&r##3A!H^7Q{Tdmz31$$&A$x2jg0lG`*0{t)RwBiWl58= z8?q15x8fhnVR)SSMXn>4QB6Tf>LdO@^dTDZ)pk~~cnuc}rOgeT!~Eg+DO}BTl+2R- zkgb>Pml)Z<5Csj%Br%8FPYt7n5{*!pkcH}aUfaH!Fk@TOJ=+#DP~OwgJ-iMJK?h_?0parCk*H=Z@Vv@q^gp_Zw)K$qinu-|b8~xT(p5tMi=oPh{YbL!W%a=Wr zo)mXvPs66*C;2ax23CSi6hXWa<-}U~F_+mg-{obO)Pb&pN5!P9jJ%>eLv~VJ zioFIEpf9zbdJU35N7-;78W3&mtKvLr`DwguykL3hS{fXld_nYP-ia4U4buM7&%zrk z(F$-yU}q;vM^&S|cv7T^*9eSrWm@kVmlztGdfE5!$tZ_D1P|E;k}^_8T1|40Jx>n? z6{*?eCo+%fPhBF`qYB}TUQdR-m$|et)5O{Ip8W7|k%F4VW=L4+80k5QLVS_g4QqiW z)M=_EI09x<7w|k$VHEn0IC1ND<9_2POK(?J@OdJGxJS1Zhb6bA?WG0cTo%wzL0zgi zb%-heS)dg;5}lcN99-(TYRfX`8IPJ4+gtJR$a_QzJ`1;1mkyF{k?6QJ!bH{u#e`Gi z!E%sGHN(ZCTajwMZ0B=JGgH*q!CK5+C-^MU8?Q$H!}XOkl~k8JL(!|0meNy~4KBwBML%uID(!pN+mjWMDFTS!|NLmDt3e*xhsn+(C7qHd6z@ zARwcRm_6AzvXH;*IA^(Md}_L3J?t(L8k0Ou459P6qLKnhYl&2Rlz9PrfDB4bt)uQ! zKJq+%MwE<&154avZTC$lj04R>9d7y9W{!2OvR`J z)NmXkhS<}<3-@CiYrbRLYW{0q%^!$-6tUz@x(hc{TvMVGC)f;T2~1JPsV!7}u!t&4 z_D3y=x#6VuqNBg1rD>Vzz4eUyW$;^~8twrO#=?~o{}j*SIJP}~L%_Y4pdu@&`{YLq z6E%n>{Fr;3(6=h4ka@o23J;=lMM|rJ*`Is#p+U*BxC5+UFL9ZYzLJCD*4!E9UwQ~ED%|*qqRCU}>Ew|}MSm@~!S>ob z#yrHTbT#(lu@cBgavFV>Z704asUz7W&fp#}`{*ZdB76=0rL_1@(E!2gHuC;-L@c|^ zxt2`FGH^osgHucpp0UTjS=jR*PdEUpdk^ z^$7O^FSDI1CfOjlDn82fWVLi-p|)?Z3tUa+VAqpHB5iz=T>se`SXNjj*@t-=hV~_T zU>(6@<{7tA(q5{S+!IT=o6KxFjaJh$;Xx`JFCyY%MFK&0q5Y+$v89S_ylaoYf2=pM zmRv+z*t_Do(gxBhl0{r2b~268JlrK{%4fojv`lOY)#TSYA6XOT&z9+qOWxctlWKtf z0VG>ed{S~&Dv}Nq|7B6e4VS{z@Ell6Rui`UuSh+AL$}PHZ|P*YWt-*(!IkkbXl?2! zU7!0R9xI%>C$7THWJb~tVP!fACxHXRAmmVdVQ``Mi({qrq@}bCxDvj-(M6(t#8fzf z1>)P1?Lx1cb4Qt0^lSnBudp^;M;<}@C3lC7d~H{ATZW~$RpaRC1>qIR<5+u8n?blw z;*}Cka*E4hXVZo71$4mo@G4aYuP3?_?eEWU7qu%bNpsR##yunOJ9Y;-M1Fy*SuJIO1u#HVg-Rto)PvEmJcSUxw~Tk|1CT;Tb5^gx0NH{lyPBbMK$;pSVm7M{Do0SOH@o9am)XRC^zi&611 zb_?AJRs+MqOCW{CsU)TmosFLLS8)6P$F*(NFRsh}$+1i%om>cCFoU_y;z!&-_A0G` zXQ}ssXX*s1QN8h8ks4!A?VW94E*{8`}H68K%v zV=eWEYC*|~Jj5689?JEeaO7G>oBEscZS6gLuw>!|+K?(mZ)RiMesL4-2{V~K4xECs zr~rBh$+LXPZ zbO1a#4!`TF$w`w>UB^)d$}O5_D~DxEP9^EXzEEk z_~hU)?@`A>>i`R78|4c7#8G?dCO#cxGa1|vp=T|)Ey6S|hkno(t`v5Fn|Or|NnQ!Z z`R~q#wuzRK)_ab*eA95LWJzowRhgb4YzOAeajVfcZcoc;&Ig2DEbWez=LRf~$`0 zn#CdLqs+G_JUa=of2bk!e72B7#b)*})0aLas7_@;4a|V0hT<(n9b<{W5l_sXYi(l9 zb|gK8!9MX1$RlDQ{J~7*nu|wpE!my)aQH~5tP=bN?o)bvnvk@Ig);d8&Ii`|)=#!h z?qB{s(MPFlJV6=~12)hEs$eeFo&Z9wycE{*HC!WXo2--Vquj6kW1|~W zwS_mHrC+c?F2V)b^UPHGAZ!IQVO7DGM~LBA;6D>-k$i?uC+ETK zjF{^soa@2ZV0XyDV#41JWRZ2ScBwwmC;s>DWA+2q?Y4B+e!f9?U7`;9o=6G4f)q|o zX4^8ug-!7jWWYU8P&;ZA-bVBzb}%^Bo8!D_TVdPeSmbRQd=x`OnRo{(23xTuxVP*! zW*MCYkAQigs=%BsR3>p587nxgroLXTcJ^=9EB4XuOn;L|`D8ZAknQ0B<~bW=2eNe; zHQgG}^Dp~^$zeFU z0c3@9J>eBV2yYCCX2*MlV%|ch((bisoDIC*K;_ue)Jcq>mccd5J$8q1?iYO=&VoAx z-Jb~wu#cFG%92$CSCQ#P9S3cUqrkn%zdh10xfd-U?t**tcy>DbkkQk2;jXqY2bO~w zpg7qE>zFzjJrua@Y2ch>Z|ErFzUJE$&P*IdzT=;%Z}2ixolR#6W*)sl;L9xdOyKo* zvKRhQWRCp~zW4TYitP>TJDqR5Z-UKZk(3LIlMmrVrWf0R9m&k0y~6ugx-Pu{rh)y$ zM6`HP5!vml;LdRf&f58(XHH;vRGdPwM&xzyokrQ>Y(Hi_{S)qmCFn+iXZkE;u)EmV z)Su}7z$Z_hQ*Vzs>Ue(o2SrLGeaJ~-Ab3O%WQVgqm}7J&`W!qCThlIKMx<01e4XfN z%o05BC0*a`jT}~2DIXdh9e*I2h0mr=LmM-Rt<3(*?54X5C+gGP=o)Y{6~b>KS&4CB z=qv7S;wa`&xRm^=VA)ts>I<4fjsWZFGt3A^%ygu6@Ro4f4wwy>3QU_RRMsQX&wtI$ zI~qCiop#Txz_UnNG7bHQa8qJ>CNqlpLYJZM!%6TQJOq2d2$e}*z~U)Q+!fS$Tf6St zdpK&i^L*DrviQ@~IIJD{4fyC4Oj#z4?gy`ew}LtvfLA#611pVGOEiwu^7r=ib&hwG zbFKGo3e<|yNgKitJE?Ls$82N{(HCJ*(1O1}*rT8x6~l+3FvFu@88DfQVx>j3<9$Lec%{3cvxT#nyM*t1 za9qrutcT4aMgbSRMvtT^x+MGsE`rNo19(YQBO};PQOU%~u;1r$_jZOIb6rO7kpLb2 zlsJs+!8=iVU?=(t-He_Di@?9&4zPmu;0E~|ua4eK4vSt4Ec0f$emYt>OM5Q+-h~Qd z&r&}01OY%zsDtgH2dn`tK_5^O6jBzl3-Jf7D{38gh5GsixsN-`IcK_;^Etsck@<bOMkp{owJ`P}IFVoK9_-3;H}z)v=Y@_&izQ8> z^7uk>J17ee!qG5SaDnq759h&az(5|va|H*vFxM) zexT~YHZUqoRcTrxxZ^2M3Y273Y#nJJn*rh{OGSlJtTpxC!2yI za5!uM8wxw72W$XKLJ>GiLVTyFbG(13pYN3$bxm}2_O$Zt33?*u6RSlFu>qtAl!TvP zZQ&k3$6-x6AKnLTsbBbgWO%|8PWVoFy1Ht)7P__-hs8Sg7Cu0bZ@#p zok{N#(reRYFq^jHE#{MZ$8GN9>KbVH^Y!!a2GQ(p`F z_Z>BoIDvLco`|##bn$v!eOyc35pUGrIQ%EpIMoOB;B~3{;2a!Gucc4Y$LV}}DE%JR z2VKc=*xS_f*qPuN{=WN(Yqxv5cZ}Z@B4WLhzmT=~HgXl%0ZY;MX@m*VB^WzBiH?I5 zIURo>dKLc@I_*2*F}Mb~+j&d*dxX|R>m+9*`|w}naqt9=q+ilsXs7T+=mGRnIF>3y zkm$!m*T_?U8*fE-QForl%V!6NM4rd(sk+!@qJWwKyU=mE6w`&7#Hg8FG)>n4W62uW znN&T&9o*$VxqC3~`%rs-T`%p~ zN07}6Z$P|2<{Re(HqH5Q7$-v@8&t}HhOgY z>wqiF#k;1;qxW$;*$ec8*I`q7kAR7l&ZA>68?+$1V<%HhVvR#}ea$=>?%D34La$qf z7DP8B4vYF@xkM|fGbjT$2pO#*ZG=teFx&@BWDMIO8Wk@aF6rOvDd7&e-gs!=>%h85 zoA{m7W^@(4io8gj1xe5qUV&$!hCT~704dcUKaQ+Uw2V{;ob~Q^&voZ}%>3=Z#qh5f zo7#&k!H<((Dh;lKuc4amA*fG7dajTPuM@pdB(*l$Avl>=cxd-vPdz>_&^cTt{w+BK zU4y?Q=YuZL4JmrIz_GJ}V&w{1zBJhgdy|UBW(Ym|=Gp7^yRQj2&Iz55R!=%bPOKW4 zq>93#bhf~ko%BAT3tHF)Y$c_*RzxRUVW)q$x6u999rWb+ngnM=tnr_zJXA)c$Vs3V zY(WpBzYFtEFso=B&ZiFGbC9Qr>XD8CCI8ZWSa{xX!$a+TeLU&zJ#MR~w{KW*O++s2i!JC@q9oM;EQLFv0XhYh)WgT!K*Nh{#U@T6CHpiaEdBTj6>HX zbE7qbWB5v*sRH`teX zJ@ec_*DTK-zIotG_+zX^Dg*r&UrxTF3}88Y48OnvcpKJ&b-@~P8$KMlnb;JW9H_z< z_ndRD^6cdc{Jp}O*oS0&q%$5QP7BK4A8v&g;9-FQVLU-7; z&b{CJ#P>VcBl<8A6#21+HPduUm;3tehpTL)mg3AhnEz~litT4llm@Opnm-jw*zj2rKF7Sb1 zlgOL+qtppBg%^R)O6Aq4*xo6}mkgE&(EH8GZ-h6K^6b0#*62d#}5ur!Ifee=Afqb}3m5 z-H+2$4!8m4{}~ebmv~!yCU`!Ly;W=-L7N16%*@Qp%*@P; zF*Ezbj4?B_W2TrL+c7gUGqaD`F*Dt)_F=WZ?!DS>jWj))DYaDdP^#+w+UxB(AKF>^ zi831A_ZpWECensuD{@Ut}Fvwdh_!7CFQ zN^@2u(gmXzZqs7G)qV^AdD z&+q1~FF#?6^a0v%o_)Ve6?ufAOIEwhgdo? zukVAlrM4Q_w1;s`@(|h@epHG*VickLa(pXx1^kS?%HPca*0&0Kqap2W(2_btH{DzA z(VUKehhK{EYsK-#rmKL4rz4J@SMK~f6FT*}U4oKLW!yAxL+b<(#$ZpFFVf&AVZhK3 z9LQOH08QUU*&@^}4Df#AW)3?)9r@5)BY#z);$-Iz&WU&8F5ylWX0s_|zAEYh1wF{@ z@hU)vTn@G6tkcrNkoqsg-dDZ>w<#YW@u6aK3Qno7y_GGxrG zt2}`#*XGXz!q%e1ZTQZ#^Sem2;YNeQt!!qR4kn&#fxnTnl80CoHJOpgy{;3km_*Wa zuFw6#KA#HD>g~rsCmQ?cCqsj)L1q=LA~+VybG3a&>QTmMOp2sxsQkMt&u4d7&-I;i z5ikqn=le{OGIdIan9sVr5Aojya;<#XRCbjrq17-9^WF(HLOr3kpRw=Ko-5yVwh!_N z_|dm=Dd&PI_Gm_+s&`V;n5uH}2!GZ9H5 zb+D#}iIbUj$*qXXK>ShPfKzKJ_cGVftoFONsv6$bL>#m{*cz7H*0 zwA5MZ!WBou`k~41-pZW-SCf|l3?kd9&F%Z4db(6X!av>B^`n3xaZXI`__1Kx{a6IsH z@du$8Gd zuQzu)?frB>V*Vx5ed?prA<1)os0X}L8}xd}2_p7_^=ka4XEO#t!Ni<~81oB^0QK$A zo75+C_KU{5lo(a|wb9Ol2~$uTofHcF#yT}b6nepJr2Vw6`P^M7GpNLbiIX7{r z)J2>-TQn$k0|E!N>Q{5TYJhk)^}n!BDK&l2wgi(F#}OI~Ji>$FUky`#=1zP&x3wleDgPiiDz==QK~uNI~ZQTQ49#o}JI$ zVBigJ5`PFcMTA(+)_`TSYn$T*ZYi!1SSm%nxl0oJUV;JqB?{(E!nNZ;h~LteeMkGi zAKvCChupO*iN#3#ZvfP^!`KK$H_=!f zk+gOWgWJWom($bBFS#SfPsdyS&3>R<&uQQ396p(^xaNA~cCA^2lQm>}={n_l{2}NF zcO-3ucWLH|H;ZpxAQV@ZH9C5H>2e9$s*|c&S)qjAjlwtLv{KWXA(4 z#B>OtUTBq#7-Jt`_&ryJ`ByS4^AUeVq=#1GF-^{Ul&)xcAtZ5nYiEOs1v#rN!s6?)cBbm;DB9}a}W&I%-b=6&X;4f>HgD)dmnC_g59J0T!d zU5F>qi7j%~X&jmF>`{P@bX z1bou?aVDpaPPGlQn$v13$p&#y&5%cs*mjO`S+7m=8vGOnAcU?gR5gvswEN%Rw{=Ze zi&NLeeD(-I-v&YQG=6Uq89Gcr-3?{R$y9e2C_3%kAEnuLUz5;3zkVH@qOZqzus;2v zE$azTJ|RcZ;!+21FJr6`eM>Xw=U9>-r>;nUj?KT_&sksAzC#z1#F?eg8{O(^Q^3gy~G4W=J>BE1<9?tPx!}fog~q8tUqgh@1g=xnt%* zKg6RNTPRqlq$Re1O)j8lL~X^w@n5k~F#pTe3g2u75#tiQ0+Na4A$35|P%7;yhDuY5kyn&)#tz z+2GO@>?+Hc4M5~8{4tE#P;%Lx@q%8Cq+qVKQKjaXwT$(gmDtxBvo4E_BXiB{=09 zq4aKq&G}D`5Mzv#GzUSsY^-wpY79nf2N?3TZ6;`D#m$ zz`4KSGlox<1v|jcOGTh~Dtx>R?|03zn*1ov(0bjzPAkGi9OKZY=$qPHEYDkg(=wEG zBnd-x(nh(!&A;U?7>&aEWG}d9$3kaNpfEr6Gg5fkmF%m=mcQA*Cf!~I;&_M_%xZFV zocIZOUbQ7%EKu)Ht$ACnj~~PqY*=Hi$k?%^pC*D3cjT2;+OlTpQG&6 zugak-(KHB_CA56%6;+RYIHaDOlrT4}qlDRMLARXW`SnjdJ!Llh_3Sy)xrZz$LQFG2vDJUWSjeX6;gl1nV-f_y)HjpX`1?n9iQu0G4;5uK4eP5u&( zYwYrHzBE0^DpqT3`a8bQrg4HWb^|5MdnY6hnWvoVC217p(v6noPeM8+H0C>}&zZks zzE~Sbb~^=3q_sGI;FcNRnp~%|r$-Rp2J>#2KpNGFlB3e@asoMJm1mYeM|&c3!=!B* z^N*SvoHH#aAyCQieFsW)4KFr!Pm}yI14}AzcjR#&Z`9aBN|KUGs19eusT8J@+GB)$ zPOG*lubUjU3y~(XkIcE}@Xf4w8#yt7czT`lEmVq+wTKVurn?15Si^ikuq zFIl`|UZXH?OPk{!_S%GxWu9&wYZ3m={#GQO+TKiac4SKYR8@9-21$fe2cu6G!jEL~ z2&uT1-HY;@aq@RaMj~ari#Ys3G8sSJR|T3k;9Wm~EpH!T7-k}EwYOlX&?nXb4cWH&Ccab7iXl#{Dp~Gpl*@3-QG3i`?k?J~DGUs3 zm5~}iPd_7~vLjjy)1553uo&pdK4)(@Cl-NxA+F*{8`p5}rHf(4#~Q%fTXb|h{z;x!HKV+S5ufStKP+o>=_Z#A{HsE_JDa-3 z5KBzSl0$S-;epwnyr{DJ%2hdHPf%F zT0D5E zqlUwuo)B>yb63U`yrr6l&MxG(l3G!s@7-lN)gg> zqZJQoh{vO{q+&4_&7FX;#7tiwzvGKcW!!x4ge?0s`eG4TX?Y*%-pl?(>f!A^22t8@%8JQqIWJ~6#)Y9Kt~C^o7m@ zy=`N14l6h(4mRn@haYSg0@cPkQ`H$LazOJ8)}6qzm;K_@o%J=Ya=U+`anE%YOkLR4 zn+3Ll+z5vxv8Bo>Sul`rM|$gpfLlS675o~w#YP*6S_$5oRW9_-0G$RFM_nAmy3lO{ z@S_NF*#iblT;0<2;)B62N4zjx`%?!@I)BHxuYtx-mFA`?N3siVFHScx$BflNkd752 zfe=Pltp{>J{&p$nEGn2YuX}{u83;J$=*{5h%R|IX=wr<8`x-8YFUQGQm@}CzCb2`7 z#o7Y#cv0(i68^RK#->f2db-Q*Lp1KQr9Y#P&Q z_Zt9R>0i)jsSx_YyTT|1J_QDzqSS?aKxG+>z_dj?2?%kq0` znPo_jq0naO08gwXK}WdCp@i222mGvE$IxY)Z`W&3gbrRgUn1CKv~zoy!kq{tdEl?c zBVS;u3J{R+0000MfY>alEIe_b>eUc@bQ?ja+q0|@tRw4o10sibFiAT za`UlUaB*;0@bU371D&id*M$@YR577S%^e+$L|RmM+*W$vj7~cToj64H3lh!F=gd3x3c8oVK-;xq& z)S**+FYybB4o8ck%2ZE^r9C}g@W(E~KGZKI9A*v)8TxzC=JABr)B5>r^>Etq0eU!n zy_}kgIHsX#X=(XK+g0s$j*a{&q-S;6x4eLLV}tH*?P@+(G&koy58plA{ck>R-I$82 zb#Qv}ezzR+tnRtx3j68T3X^D7J-ThVJ2=tTc;cuGEmyU4#PB#fU;D|MGk2|Q zyEJTX*1rt>eZ0DATUi~nPf6FGpx*XR8#%253F5o?zdAd7 z9M4b5nFDxxygOc>hJFOJ|9HHc$k6+&H!|EY=n9C4%lq|g-PIrRrB2j!qWYFu?acE` z?VTb$^JlD>Y6n*Mtu%hg-P~OHamCs!U_ho{CgE%Pwfq+nSDe(F>PWREEx*-7NZhY8 zRl=SV?3oq=Xd*QJYWoGTTUsg<$3};cd$o3Ff6PyIeH@2n-xzm1$>C6iXY$wCNG1#l zRw3JAb1nL1syEVB&9~v3({DsIu-ljXl$!$+`e`cP^|oddWiD6A5~kJ*o;3&tH0+4t zgCG8_iQ|cgPJS43c|XXf+w{uC8ZKUHmvZnuXDx~BE7iQ)y~oj$Z6c-JCUjy0uWO|M z4*7{TRqTs1aAQK2G7X9+LWDEvg*XFI!^z(ur;>gq(?iK8Sv!Wv-~EPoOAPPM@;Kk5!n~}*aLL!}jjrt`kXchLF)L{ruw~wYfDaSvjf19H#F270{Y3p0%P`@uu`@Y~t5m zvxxQywxeeMlx1pES%>3taw-wbF*BRf`P(??lf)N2uFiM)1+-=Fg=f82pY}Br6Bj@- z92Qd8P32MVm*$f3$eid-5zrNT2}kqZCKp{2068Nl)KQ(rkSKo}*t*A-+3iM$Vqa?#2 zu8mHnfb%B7rre;@Dt4`XZa$G#&<`6$k1IxaY@|tKYdFg^E;T(Cp}Cm#1Y@uCda$#S zXo#JP<670Kba9uYTZLBolMON?%H-TJH$Ml3`khbiGw zPvpn?fKJUl7TTmqT?dvo`Y6i3B6hYsG6r{K{P0C13l^n0auDlOnGG;f-0udf0}nr% zHbFIa74wkU%O-!SqctV4`XITA2g~PmJ$EtQ0iobf2n{fffuGYuMe<@{Hn!J>pr@OaLjm-tG{4CYa->W-p?v+K%@XQniSSbqo1Byvgoy`T5( z2TMy7!y#?^&8J{p!ota%G^2A;1qv0e5poNP@0=475owjBltdF-y(OWwdev#e9#r|o zT>w<}^9)glh`k;=A0btL#ApCD_qKTt^T`=cjiMZ`6D6r~rNIE&T z57R5+>v@Il=qKI#50<>_@6Q|Np}p08>svEl3a+*?$p~-w{e+IHLe~&JV7$vG!KI{^ zimNi1SAFP&TKt9ri&M1y;daxbrQ?w}ER=P#lSrWuWP~O<>UBEl(^*GKw7rwZUN~CZ z8yF2>c!sSlrM_Ck^s}(T{rt{>G_yqqVh#p{WMfqBG3;96HTwA%l2Qtqrcr+;-0^zy zpgRLov0}*AADy$d+N*kbIf2DE@{5hh|Pt6|rWKFDAK-d(<1VU8m~| zp70HZhm}pVjsmY2Q$NyNd%?W8*3rP%+ot+`$p|P?mD3S&;3>(Kf6X?EF9XPnGuYpV z2swI@mwFKC0bFd!Nrxr$k-{JjB>0Mt0F>d1J%+`v*=QJvk@@CwUEV7wi(+<{Eie2 zmr5t`^EUfu-=s4ZeComkr7Jxjb=@|j3*K@8XNDarhvXE#;UQzVB9E%ei6ZEt4Q*ak zSefl;QQiYn^~&MHj(Gel;f%UTD~9#Zk5m~}{@F2YyyJkQ-Ua)YI72M_6%6x8UGm1< zE1jZ4uPCr%L7gu%6T;7)RdIrB)h}wj0^7#SGp?+BvElgTRn7|MgaI>K1M;C<*uX~e zHtI9#vAmwD3#&oLq+9JlbozG9;_e|uQq2|$W2zxl4n}h~4M;9E?t-YioE|Q}ITo#& z*or~1hQlJp5htVL@+D%yozQU0@bhxt%Co7bmxQ=viw!~y|D?mqWnh3^ z857etE*4IW!#JSU*=Fcz>VvY(e!!`#Mkl`>JDyyXG#_&%sJ3mFe_5PxiA0n7#k2e_ zuoT6G;F|tkN9_FK1wjbLC^Vj1-G%v00H?rPeFn5x zK`HJ0j7k-NC1ETwnn@Ei5LAxkQx z#+#Jrj_IOY5v@~jfa({9GpY|rRMLeIQh##@@SBoQ!H&~ED{>$T&|}u<0#NueWZR`G z%c{p4^X7lc*g7{fvYdo^ua|YM=xv|>v<@AhXz_lwLsaoQ2U@IC%nN(6eJvRO2#N45 zJHbma?+euYsW)%;7zJW)Qy>uNbQ1?M7vMyjt>+&=a(`!@IQt7*f8qvTty(YY+{a%ES5>5fp&Y(t7S8AXJg4^UMu zR}sv9;>D!kXR*wR*i1S(g)OkuM(TY#nc#xbQ4~G#{$Y7?Aqg**^8S=M75PzuF|t9TO;?&p&#v7@N)L?5CvgsdpT&zJA2DxkX|t zsmtk0*wK4aNytK>!5B>}yBG;&`!{i(KA!Doe0Y3J3>_VSE*}DFQE!(Xe_&mgt;tLJ zeK@1=;ACIgdb)N9IXH_rcI1El(eLUwOv>+`zl&kn*a%p0>WrM=!SN)~{#v_yD%;A= z-|69bk!j)I+%gInlyoi{pJ5X;&?Vs@m$=Z*JU3Q@kz8Bh)g8@tC$vjyG7C$l(p zpRMjf8r9DaCp2dPaI8_2LJ!ntHyec;G|os=VU1wQ?*OToBmIms59|)_u4^T*a*V(DX8$jl{DBz-qv#&t+xV(W63oN#PT_oSGaYnBlj|^_i)Vz z>xZI?=`onv`yx_Xo5`@L%cxBM{wpVN`rui~O#bTDc+A zxnTK?KT_*ji=jfD4P*HnwW!3Gl$A|aElHtkwu}K z_5#~TIAhXJB~)jL7j4S(HGVV)sYy|=0q{KO>(~nwvNv2f$*e|IELA64*`#t!`-K~@ zG*u*>O3D4fLV3SiPHm19JF+57{fgNtbT@us)xFpvX!kK%gmm%9ank5k;#O|Sc`?z` zvFAX#0#PU!(l}+(LpbF;W_~`}RxtW?)s9cWYWy9r!EqN~Nz2O97k5q}snOsEDvH{r zIq_|FR|0lZ^jI>S?`l$5Q~>ejNM0>Nnc(KNF|hNTZM4`J5pI z()ITXQC@sV2CV+oab0eeh38CpOh9HL{uMqbE-Vt4Jvm0X0S~RrX78pTl~w_s&_omq z1-_I(EUGwJR9M@h9Ftpf&F%gD1%|dk{acc3D8BtSo%=+{=18?}8F*D<+Ws&oway_M z4#7WgSXyaJbOKa%bQd1|(&0rnnVNT@Y(>2F5YnK+$t8@hGp$xltp><1HugKKt9Pv2)#Pk%X)Zno+ z`!eS8s1JmGX?1NALqZW{iSK2ml2YVZ!<|~r1^ql(X_!5>{yOHysF2>?gLMRYvYRQ_ zx8xZHDpPr3gwYG5LAn3F{tZ4HiS-E_MhLs7o1D&!=&Sp=sf zDJw5mbHq#zPVy@P|4bu9dO0(hPE}DDP6f+dJ6IN0zqPcp5AtVxq&>M5Lo4$*8$T9O zRGQRMbZxPII5cini}nPuE51L%ty=k6-Oecd6z!k#Kh@Y&e_qS^u8XGCvTDYj1%q`e z*a);A(Krej&u4dkkP+?j(YMAQ;ZTEjLpuc~8?2|I3m*t1>W*I=zN|mV%2$lhF#fKj{qwzOlndMW zsc;;RLZN8{zn<+BgEF3(zHmuG*@hRWUD>bL*!w4aQZtbHZw^BJJy3KCiXOI~^-=kj zKHg0J4Lhn1oTv|4+A*G$z^pIn(TQC+zx4LW@t!cI>b&Z5BIftYCw#crWW2H%ctfd^ z^SAF~;|QN5TQ%)#`yUQCbDkItH};acYH8`dQV>ioh;yB2SUv_>5-ZWosN|K?Pex2q zU)WJLW2FZxut}rAxbP?9u7B&r7921|;m&D?Jnbf;sm2AWTwHT)68&d*@OtF2!_-hu z1hbHLo-GzTAi*6|8TBtfjLB&Avtr`Jx)|(u-L&1iA_+H_o;n*-LsPcLwc^AqU(FpG z+kZWuce8(vbQg?4(F$|Dk6hEsjSCylHPz)i@_!m_vBqAFyy+T)F&?lFtKKB;BQTCOeqX=hoG#839#~%D0=8KgOsAI1woD&E27n>fiwz8CD-9Z# zQR?~W4LC`5+LyFQt+?3UmCB?{8m8a=KB^_{%!a&}ZGF4Tz#S8UqZXOi0WU#M_Qzzgf|AEbvM6wy3(f1xdz^rOr-?w@~=Z~)#@ ziyMCli32Fl;j*#caJw%}q~5r(!;n(VfnQ@zr->SL=sdccq}C4k{(oJdmvy>@ z4}@WJLuyY^<#2QNIp;+}`PRRa{%k8|keM73(~0nr)Ed5l_08!sqN!u)V$bds-Z!Fd zHE#)$EI3B{cAn5D*&3qzs%In8x>grZ`m}RsO3uOz1k$i>%V#96Y1dcXF^~h@sqQtQ zc~}5o2;;v+8>^`q+dtvPW68l|X7$gB<>IpBW9Q`JG~=^mWwYYq{4de=OIOL+U<|4A zs`f;2+Q%+=%fi+4rA{6ZGBd|z!m&Y{(zL7Dl!4)Rr!3mpfs_IP7Sm9=HljA0WXSBH z^Y#7B@$Gh_<0-!u*%JkYB%rg?&(Cj@*zxW9^ikdSDx;3~f?DKf3&GPNMJo5D^pec+5f~;^))q zz43W-_1I!8{PBK0Vc20)RwsOgu;KiKvN5$0VAvcJ<8#xz)ziiQ4pQ--xG?4LdtB17 zxh(MkLS(%>CetLiX-CEj9z~^@-#z*{Gm+l`+r0#CBX|(^1c)Dic zgif&`*$P_(TISHs{^KsWHJomGxmxOM{(H^st}y<|x=Unzvva~`yCrInQ;jjZiLWJz zBdZ!ouh8FNp`E)AjBFaG-P6AE8}57W53?u;zi&eSoItZUEA#A$kZ+I7RY+@`{>^R8 zc&kZCjC}~qyxHN%1HYy)zMbzbhYL32dgaX%ikZH&*L2q;&5Ji@F6fPmvfJ>oTOqvi zrp)|KYqH&74TNB@rm}gQL~>`@ zV6L5`%wi~ub2i37bKOdF{{;UY5xSuoKfBU&U;vDZ9E$|x+!(3ns2CtLga z+XV!8`-Q!E%!k_`B(Na1CcOB|l*cND&Iz=k`{<#?}OTFlAmW z^<}bJRQ6yeLk z+a<2BnZY}H%HX*@ZanAj+!ulh4#^NYN*E>%K;6h9pzN}`1~<;g^{A22W|bnl0f@tb!@E0FLQwldqc^S(UbzX&Viw;^%oKBmHzENm9bXUUp{ymQkdFg; zwg7?ZP<#6XN_pynz8B6Y!5wc(#j`cHanKO@6qu*<7QZ2%T1r71VEsCk}+QauHzClXOAh}HzNviEStZ?SQgu+nE zTH;u19Pn1fU}8;6V?pI=S`KwkhW6?yzLmqF`-N|Rlj8GV+?ADOns!y}3A33y?Wg;7 z0yT@%B{jk`1f!Q{UYHCysvM0z2_wt7>Pqjz4B(ftN?GXERUzYtC5lMZA9`azD>K!F z>y#-<^dd8lHEabtbsb@cw8a=F5QieRq^q|Oafzk8MaU7|PWMlow1Wa9-Sy`Q5zpWl zA#>he2UDx9W=%d2egRN(dFlK!Xd>RqW8Ka;IR)00yY+V8PP9{4HM&ddR(rWT2XU+5 z1XXdtX`;-qp{`P-_~b^H1C4%F-;<0$X5+q5R5GSVoC|Crt_3w(^-;pP#3snClR&}< zzN~+&3_>`eX;Z+gM{xy9gW~slR|+EZ{TBETYGYu<6&&d_4NlFBAE+tqg~#S^#>OYk zLt`fKTaf~X7D}>(G-#7K@mcpwZ4IHLmWL9TjCjSFv5&x=Xs|{t?!dYzhM8A#=V93? zIeMZ5dpBo8HW5uBK)K0(b!Y64J5rzF5foRzg(Dsd7R^vR@-!jm6io554Ls(c^^KSO zj+DP6OVY1-%%Xl)rT5}?VrV^iM3DW7Khknae)m_mwtipw6z8O?pB7-E2f+D`a^%EvFNp zPTG;Xu#94Iw;O)=Tl`=#v>9c%$PavYz0nbI)t(?pWdjQRZB?kHEkHk_ZQmvEZ)}c* zyItHWp7%{Szae$LAjX`C8>IE$S?f$TtgPU z%6|F4eGE@uBTYeVLl(E{1vhQ|KvF9cgI!=Ee`T}~#S>mEudY^8)>r7R@XnrMT_h$i zX^B*9NZt`#ICE^)P4V92DUTP} zt(;VFx-Eu6yvh|U!OKMFZmaK&ri^YQ-i~Qvz5Lv6Xx}XtT90Q7^r9D(aE$N;(_0{) zq#X%%sQmFWW{?#9loc3<^puT72ae#<-m3Q?!%vA9z{IO0v)Jx~A8J1Opu?uuj)}46 zHGzU}M-D1@K4c+S(YiDgD!C;-?;OSIVTwzUPD2;0_;a8juXz-XluDQm@y_w{%P2>> z3*-GJ=m>CfYK`Ewq-;H*^3E3{UTt0BG)c?ByU7YPK&E1&oT%Dc% z^UM63u-{zZ008U1>%S82|7qmV001wCDIX6nj|Hc>8MhUO84ouHyBVj2g_Wh56%Qu| zHxIL?smFgJirs*6v||7O#^nD*{P|C}@p71Ra9i-Qa$A`5v2(EV{L^VXtekwNT-;pd z+-6o*|8I!@nZp0i9NAL;Z<+jm&hbCv;r~HAO9KG@FJbY2BL1hD_& { + const vm = new VirtualMachine(); + vm.attachStorage(makeTestStorage()); + + // Evaluate playground data and exit + vm.on('playgroundData', e => { + const threads = JSON.parse(e.threads); + // All monitors should create threads that finish during the step and + // are revoved from runtime.threads. + t.equal(threads.length, 0); + + // we care that the last step updated the right number of monitors + // we don't care whether the last step ran other threads or not + const lastStepUpdatedMonitorThreads = vm.runtime._lastStepDoneThreads.filter(thread => thread.updateMonitor); + t.equal(lastStepUpdatedMonitorThreads.length, 3); + + t.equal(vm.runtime.targets.length, 3); + + const stage = vm.runtime.targets[0]; + const cat = vm.runtime.targets[1]; + const bananas = vm.runtime.targets[2]; + + const allVarListFields = VariableUtil.getAllVarRefsForTargets(vm.runtime.targets); + + const abVarId = Object.keys(stage.variables).filter(k => stage.variables[k].name === 'a&b')[0]; + const abVar = stage.variables[abVarId]; + const abMonitor = vm.runtime._monitorState.get(abVarId); + // Check for unsafe characters, replaceUnsafeChars should just result in the original string + // (e.g. there was nothing to replace) + // Check that the variable ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(abVarId), abVarId); + // Check that the monitor record ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(abMonitor.id), abMonitor.id); + + // Check that the variable still has the correct info + t.equal(StringUtil.replaceUnsafeChars(abVar.id), abVar.id); + t.equal(abVar.id, abVarId); + t.equal(abVar.type, Variable.LIST_TYPE); + t.equal(abVar.value[0], 'thing'); + t.equal(abVar.value[1], 'thing\'1'); + + // Find all the references for this list, and verify they have the correct ID + // There should be 3 fields, 2 on the stage, and one on the cat + t.equal(allVarListFields[abVarId].length, 3); + const stageBlocks = Object.keys(stage.blocks._blocks).map(blockId => stage.blocks._blocks[blockId]); + const stageListBlocks = stageBlocks.filter(block => block.fields.hasOwnProperty('LIST')); + t.equal(stageListBlocks.length, 2); + t.equal(stageListBlocks[0].fields.LIST.id, abVarId); + t.equal(stageListBlocks[1].fields.LIST.id, abVarId); + const catBlocks = Object.keys(cat.blocks._blocks).map(blockId => cat.blocks._blocks[blockId]); + const catListBlocks = catBlocks.filter(block => block.fields.hasOwnProperty('LIST')); + t.equal(catListBlocks.length, 1); + t.equal(catListBlocks[0].fields.LIST.id, abVarId); + + const fooVarId = Object.keys(stage.variables).filter(k => stage.variables[k].name === '"foo')[0]; + const fooVar = stage.variables[fooVarId]; + const fooMonitor = vm.runtime._monitorState.get(fooVarId); + // Check for unsafe characters, replaceUnsafeChars should just result in the original string + // (e.g. there was nothing to replace) + // Check that the variable ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(fooVarId), fooVarId); + // Check that the monitor record ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(fooMonitor.id), fooMonitor.id); + + // Check that the variable still has the correct info + t.equal(StringUtil.replaceUnsafeChars(fooVar.id), fooVar.id); + t.equal(fooVar.id, fooVarId); + t.equal(fooVar.type, Variable.SCALAR_TYPE); + t.equal(fooVar.value, 'foo'); + + // Find all the references for this variable, and verify they have the correct ID + // There should be only two, one on the stage and one on bananas + t.equal(allVarListFields[fooVarId].length, 2); + const stageVarBlocks = stageBlocks.filter(block => block.fields.hasOwnProperty('VARIABLE')); + t.equal(stageVarBlocks.length, 1); + t.equal(stageVarBlocks[0].fields.VARIABLE.id, fooVarId); + const catVarBlocks = catBlocks.filter(block => block.fields.hasOwnProperty('VARIABLE')); + t.equal(catVarBlocks.length, 1); + t.equal(catVarBlocks[0].fields.VARIABLE.id, fooVarId); + + const ltPerfectVarId = Object.keys(bananas.variables).filter(k => bananas.variables[k].name === '< Perfect')[0]; + const ltPerfectVar = bananas.variables[ltPerfectVarId]; + const ltPerfectMonitor = vm.runtime._monitorState.get(ltPerfectVarId); + // Check for unsafe characters, replaceUnsafeChars should just result in the original string + // (e.g. there was nothing to replace) + // Check that the variable ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(ltPerfectVarId), ltPerfectVarId); + // Check that the monitor record ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(ltPerfectMonitor.id), ltPerfectMonitor.id); + + // Check that the variable still has the correct info + t.equal(StringUtil.replaceUnsafeChars(ltPerfectVar.id), ltPerfectVar.id); + t.equal(ltPerfectVar.id, ltPerfectVarId); + t.equal(ltPerfectVar.type, Variable.SCALAR_TYPE); + t.equal(ltPerfectVar.value, '> perfect'); + + // Find all the references for this variable, and verify they have the correct ID + // There should be one + t.equal(allVarListFields[ltPerfectVarId].length, 1); + const bananasBlocks = Object.keys(bananas.blocks._blocks).map(blockId => bananas.blocks._blocks[blockId]); + const bananasVarBlocks = bananasBlocks.filter(block => block.fields.hasOwnProperty('VARIABLE')); + t.equal(bananasVarBlocks.length, 1); + t.equal(bananasVarBlocks[0].fields.VARIABLE.id, ltPerfectVarId); + + t.end(); + process.nextTick(process.exit); + }); + + // Start VM, load project, and run + t.doesNotThrow(() => { + vm.start(); + vm.clear(); + vm.setCompatibilityMode(false); + vm.setTurboMode(false); + vm.loadProject(project).then(() => { + vm.greenFlag(); + setTimeout(() => { + vm.getPlaygroundData(); + vm.stopAll(); + }, 100); + }); + }); +}); diff --git a/test/integration/variable_special_chars_sb3.js b/test/integration/variable_special_chars_sb3.js new file mode 100644 index 000000000..1c506406d --- /dev/null +++ b/test/integration/variable_special_chars_sb3.js @@ -0,0 +1,135 @@ +const path = require('path'); +const test = require('tap').test; +const makeTestStorage = require('../fixtures/make-test-storage'); +const readFileToBuffer = require('../fixtures/readProjectFile').readFileToBuffer; +const VirtualMachine = require('../../src/index'); +const Variable = require('../../src/engine/variable'); +const StringUtil = require('../../src/util/string-util'); +const VariableUtil = require('../../src/util/variable-util'); + +const projectUri = path.resolve(__dirname, '../fixtures/variable_characters.sb3'); +const project = readFileToBuffer(projectUri); + +test('importing sb2 project with special chars in variable names', t => { + const vm = new VirtualMachine(); + vm.attachStorage(makeTestStorage()); + + // Evaluate playground data and exit + vm.on('playgroundData', e => { + const threads = JSON.parse(e.threads); + // All monitors should create threads that finish during the step and + // are revoved from runtime.threads. + t.equal(threads.length, 0); + + // we care that the last step updated the right number of monitors + // we don't care whether the last step ran other threads or not + const lastStepUpdatedMonitorThreads = vm.runtime._lastStepDoneThreads.filter(thread => thread.updateMonitor); + t.equal(lastStepUpdatedMonitorThreads.length, 3); + + t.equal(vm.runtime.targets.length, 3); + + const stage = vm.runtime.targets[0]; + const cat = vm.runtime.targets[1]; + const bananas = vm.runtime.targets[2]; + + const allVarListFields = VariableUtil.getAllVarRefsForTargets(vm.runtime.targets); + + const abVarId = Object.keys(stage.variables).filter(k => stage.variables[k].name === 'a&b')[0]; + const abVar = stage.variables[abVarId]; + const abMonitor = vm.runtime._monitorState.get(abVarId); + // Check for unsafe characters, replaceUnsafeChars should just result in the original string + // (e.g. there was nothing to replace) + // Check that the variable ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(abVarId), abVarId); + // Check that the monitor record ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(abMonitor.id), abMonitor.id); + + // Check that the variable still has the correct info + t.equal(StringUtil.replaceUnsafeChars(abVar.id), abVar.id); + t.equal(abVar.id, abVarId); + t.equal(abVar.type, Variable.LIST_TYPE); + t.equal(abVar.value[0], 'thing'); + t.equal(abVar.value[1], 'thing\'1'); + + // Find all the references for this list, and verify they have the correct ID + // There should be 3 fields, 2 on the stage, and one on the cat + t.equal(allVarListFields[abVarId].length, 3); + const stageBlocks = Object.keys(stage.blocks._blocks).map(blockId => stage.blocks._blocks[blockId]); + const stageListBlocks = stageBlocks.filter(block => block.fields.hasOwnProperty('LIST')); + t.equal(stageListBlocks.length, 2); + t.equal(stageListBlocks[0].fields.LIST.id, abVarId); + t.equal(stageListBlocks[1].fields.LIST.id, abVarId); + const catBlocks = Object.keys(cat.blocks._blocks).map(blockId => cat.blocks._blocks[blockId]); + const catListBlocks = catBlocks.filter(block => block.fields.hasOwnProperty('LIST')); + t.equal(catListBlocks.length, 1); + t.equal(catListBlocks[0].fields.LIST.id, abVarId); + + const fooVarId = Object.keys(stage.variables).filter(k => stage.variables[k].name === '"foo')[0]; + const fooVar = stage.variables[fooVarId]; + const fooMonitor = vm.runtime._monitorState.get(fooVarId); + // Check for unsafe characters, replaceUnsafeChars should just result in the original string + // (e.g. there was nothing to replace) + // Check that the variable ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(fooVarId), fooVarId); + // Check that the monitor record ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(fooMonitor.id), fooMonitor.id); + + // Check that the variable still has the correct info + t.equal(StringUtil.replaceUnsafeChars(fooVar.id), fooVar.id); + t.equal(fooVar.id, fooVarId); + t.equal(fooVar.type, Variable.SCALAR_TYPE); + t.equal(fooVar.value, 'foo'); + + // Find all the references for this variable, and verify they have the correct ID + // There should be only two, one on the stage and one on bananas + t.equal(allVarListFields[fooVarId].length, 2); + const stageVarBlocks = stageBlocks.filter(block => block.fields.hasOwnProperty('VARIABLE')); + t.equal(stageVarBlocks.length, 1); + t.equal(stageVarBlocks[0].fields.VARIABLE.id, fooVarId); + const catVarBlocks = catBlocks.filter(block => block.fields.hasOwnProperty('VARIABLE')); + t.equal(catVarBlocks.length, 1); + t.equal(catVarBlocks[0].fields.VARIABLE.id, fooVarId); + + const ltPerfectVarId = Object.keys(bananas.variables).filter(k => bananas.variables[k].name === '< Perfect')[0]; + const ltPerfectVar = bananas.variables[ltPerfectVarId]; + const ltPerfectMonitor = vm.runtime._monitorState.get(ltPerfectVarId); + // Check for unsafe characters, replaceUnsafeChars should just result in the original string + // (e.g. there was nothing to replace) + // Check that the variable ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(ltPerfectVarId), ltPerfectVarId); + // Check that the monitor record ID does not have any unsafe characters + t.equal(StringUtil.replaceUnsafeChars(ltPerfectMonitor.id), ltPerfectMonitor.id); + + // Check that the variable still has the correct info + t.equal(StringUtil.replaceUnsafeChars(ltPerfectVar.id), ltPerfectVar.id); + t.equal(ltPerfectVar.id, ltPerfectVarId); + t.equal(ltPerfectVar.type, Variable.SCALAR_TYPE); + t.equal(ltPerfectVar.value, '> perfect'); + + // Find all the references for this variable, and verify they have the correct ID + // There should be one + t.equal(allVarListFields[ltPerfectVarId].length, 1); + const bananasBlocks = Object.keys(bananas.blocks._blocks).map(blockId => bananas.blocks._blocks[blockId]); + const bananasVarBlocks = bananasBlocks.filter(block => block.fields.hasOwnProperty('VARIABLE')); + t.equal(bananasVarBlocks.length, 1); + t.equal(bananasVarBlocks[0].fields.VARIABLE.id, ltPerfectVarId); + + t.end(); + process.nextTick(process.exit); + }); + + // Start VM, load project, and run + t.doesNotThrow(() => { + vm.start(); + vm.clear(); + vm.setCompatibilityMode(false); + vm.setTurboMode(false); + vm.loadProject(project).then(() => { + vm.greenFlag(); + setTimeout(() => { + vm.getPlaygroundData(); + vm.stopAll(); + }, 100); + }); + }); +}); diff --git a/test/unit/util_string.js b/test/unit/util_string.js index 0b21e24f3..7fc88332a 100644 --- a/test/unit/util_string.js +++ b/test/unit/util_string.js @@ -84,3 +84,28 @@ test('stringify', t => { t.equal(parsed.f.nested, 0); t.end(); }); + +test('replaceUnsafeChars', t => { + const empty = ''; + t.equal(StringUtil.replaceUnsafeChars(empty), empty); + + const safe = 'hello'; + t.equal(StringUtil.replaceUnsafeChars(safe), safe); + + const unsafe = '< > & \' "'; + t.equal(StringUtil.replaceUnsafeChars(unsafe), 'lt gt amp apos quot'); + + const single = '&'; + t.equal(StringUtil.replaceUnsafeChars(single), 'amp'); + + const mix = 'b& c\'def_-"'; + t.equal(StringUtil.replaceUnsafeChars(mix), 'ltagtbamp caposdef_-quot'); + + const dupes = '<<&_"_"_&>>'; + t.equal(StringUtil.replaceUnsafeChars(dupes), 'ltltamp_quot_quot_ampgtgt'); + + const emoji = '(>^_^)>'; + t.equal(StringUtil.replaceUnsafeChars(emoji), '(gt^_^)gt'); + + t.end(); +}); diff --git a/test/unit/util_variable.js b/test/unit/util_variable.js new file mode 100644 index 000000000..18b0e768c --- /dev/null +++ b/test/unit/util_variable.js @@ -0,0 +1,83 @@ +const tap = require('tap'); +const Target = require('../../src/engine/target'); +const Runtime = require('../../src/engine/runtime'); +const VariableUtil = require('../../src/util/variable-util'); + +let target1; +let target2; + +tap.beforeEach(() => { + const runtime = new Runtime(); + target1 = new Target(runtime); + target1.blocks.createBlock({ + id: 'a block', + fields: { + VARIABLE: { + id: 'id1', + value: 'foo' + } + } + }); + target1.blocks.createBlock({ + id: 'another block', + fields: { + TEXT: { + value: 'not a variable' + } + } + }); + + target2 = new Target(runtime); + target2.blocks.createBlock({ + id: 'a different block', + fields: { + VARIABLE: { + id: 'id2', + value: 'bar' + } + } + }); + target2.blocks.createBlock({ + id: 'another var block', + fields: { + VARIABLE: { + id: 'id1', + value: 'foo' + } + } + }); + + return Promise.resolve(null); +}); + +const test = tap.test; + +test('get all var refs', t => { + const allVarRefs = VariableUtil.getAllVarRefsForTargets([target1, target2]); + t.equal(Object.keys(allVarRefs).length, 2); + t.equal(allVarRefs.id1.length, 2); + t.equal(allVarRefs.id2.length, 1); + t.equal(allVarRefs['not a variable'], undefined); + + t.end(); +}); + +test('merge variable ids', t => { + // Redo the id for the variable with 'id1' + VariableUtil.updateVariableIdentifiers(target1.blocks.getAllVariableAndListReferences().id1, 'renamed id'); + const varField = target1.blocks.getBlock('a block').fields.VARIABLE; + t.equals(varField.id, 'renamed id'); + t.equals(varField.value, 'foo'); + + t.end(); +}); + +test('merge variable ids but with new name too', t => { + // Redo the id for the variable with 'id1' + VariableUtil.updateVariableIdentifiers(target1.blocks.getAllVariableAndListReferences().id1, 'renamed id', 'baz'); + const varField = target1.blocks.getBlock('a block').fields.VARIABLE; + t.equals(varField.id, 'renamed id'); + t.equals(varField.value, 'baz'); + + t.end(); +});