From e8d5ba4351af45911964bae35ca8add9eaaf3081 Mon Sep 17 00:00:00 2001 From: Kaushika Date: Mon, 2 Oct 2017 01:12:44 -0400 Subject: [PATCH 1/2] reflection for mp2 --- MiniProject II Reflection.docx | Bin 0 -> 63312 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 MiniProject II Reflection.docx diff --git a/MiniProject II Reflection.docx b/MiniProject II Reflection.docx new file mode 100644 index 0000000000000000000000000000000000000000..a58738370d2c77e1300c2bf6f3088d51555b1830 GIT binary patch literal 63312 zcmeFZcT`i|zBU>xfG8p&NJr^KdJiQc(gmc24$?_Nhaeq&k=~?hXd)m|LNC%qKzfJJ zd+)sogu8IRd!KX9cmDYHz2CTF+;Lotm8`5a*P8Qre$TID&J12EUBB@FgbTt4fk2Nz zyvkK&mN+1g#!V221cZN0U)tWz#lp_TSkv9X!r73^&DQ48=Ns2pKY^|R?f-25gBd8* zY=bxQ+^c=~i%53Zlw&n5_C8CXU9U8i^)H+d0oOsew0e2{Hft!`U~AD{;YNF&(f+Mrui7bD+wNbZI4CIaNYC_p|9Jde^b1oL zqF7u>oUUgkG~`K|7zEiaW_XYn+X(+uk=#wQh!%T;HmnuC_7|y{~BFEjN8k% z=8=e3d+fKIRTR4EyH`7dXcD~UUp{j7zeTe8gYX*uQ9BtCF}UZLEs9bmnNs04A~-EHCZS$dt2Hpi{LV6;JqDwn3e!ZSH>t*@&iLt z=3frj2Z%{m&miJk3HXI-cHumMyUWe$=fw7e>S^0S;iO3rS%yhU`nfd!!!l2&h`3H( zrRR5RkvIu&F6A~i*;F^EZ;S1y(O#}o%Ed}n(q+gzdb+XuB{y#55^%uF%j=+*|2Oxf zjiRjB1~jJvc;9WnJ&m0#Y@E5du3rDR<^Nz`{7=yHq8k9Wyz_M1@4~OIR&A_-JY9v` ztaqGz6c1lt;RVU~2z(fOAwDv4&2ZI3uA_e-rq{zcNftR1Yq&!huSFPAdkb@F)Tn<} z;|7ZJugT{NnARzyl7`oU~Bga)g=w-p~Q_k3Hs3Won(>y`O#w5Z5TaU&!8D& zNqUN-*6{HMAO24td517?d3{g390{4a0Gg_93LgSXNKpbm=ljSXQ^kf&nrkuN_`>0A zhfgSNc(|F8qD=D$D0gc5);!YdvzmkbpWI5j70i9+Wod9<54#+)L;(@neym$+JZn#t zWGJ-{B&q+^Kf>&{dkBClW!FIi&{RZ^ddpWT!Ej${s&v5`C4X`MFHlhP;)(J>btMma}5 zEYb7*81MawXiOJJH~N}%u0ggf=S)6gXfl?H7Oc1+#-Lcz<3S9&6ldqn51*gY(_AeK`>Y$@?fOP z>@bvVoo#C_&0Bb@(WZ0OQZcYymwlm}#_e3j?EbKZqBY6(?4wtOgHCjoZSw<-k=G&M z@^h;HPD}oSB1@WhAW#Kxl^Br7Z!P_26>aG1+f!AN`f&GNKJ7%9t>15ZXtL?gX`Eww zA7A09@{|*dmI5~iOCl5%;-4at+uCPT7u^nCy9lpaTH zrLa{?fds286fbNQYW{#{@%ys6jP~h%dAE^Qsw{S4S3srr6aF~auZFiEeu9Zm%&~&5 zVsMX?jHFRYZeha1y<)M?lQ+g>xzu^@z1pc8Vyu-Q=3_b2@yeKc)`F{A;`JTDiQJFu zvBrKD$6qbdd!omn=>g3RvZQ)^Avpr6uKts9b_PyE)N=1fii+Rdt#Yd5qk7R%uo%!* zV^Qn{C+R4*UWI-Uc1xBrXx13zn~=L$V(p-ZV+C4_UPqEVCQBqe`|4n9nXAyIRYrQQ z)w}U#oT@HN>XO)xfyMZz=}6(qH)JI;Jnm!tR;)cbzbih`gQh~EY-H!N+u=2%@UjiP zLeFHrR42Qc_Dpi+rMPl0=u?IyiN@U`hihRqjG}S^$*V5P#*I*h=ko{iy8Zr&wY$5p z{=0^4VZ;8u;{1~o1TVhCOV;Cea=Sam>j?IE_oqowEl(6|8u;F0nJ6%O?VC67^0g54 zd{2jHo-Fp9UPgRjgRVyQrJe(7KZ;(_t@NxSK~A_av1=>q2qwQ3gC~zl<9GnZX1K2z(oBwKkY}SMp|(AA-DR8Co49EYgp^obl*E_i-kK6 z-<#*T^mAD_bu*J3saf6}l*aYICaJ0h)~4Hgb>}Eby=PlL7n6BA^KJTq?C3HObRw!9 z;rQ;oJ1IdP>1)k&v~CXT3KZy_6;~^EaehLzfL5ZRfKqqvnPY>5&>DAi#O@N?qsNb z--MkO#8ow}g?M(u&%RN6q{IaWy`|D)C{eqO)^^T~7ali7lMPl1hx!QsJCgN zA|pKKcb$n(#ah=|t=kug?kA@6@h*%_K6t2Z5>U#u`Pj1{*$QmN)L#qlXZ`E`Gd51# zk+7B0LaYzt%`(2wDmse4Qe$p!qzDy6R66Hs2xj|{3BpkQy zYPG$mQDW-VC}9<3<ri*{7R;VOPIX?rjKV*6sYW;+B z6Ujbm5E2* zoPva3za;jyhljam=o}hhoQ-iE0T-LH!B5u^myRYn@og)@-`c>IJb;Zw(k(%1cx=At}F%RVxr53>ENzQA9*n*6x~K5t_G-Db1J+ISF2 z)gx=vg}o7h!%%Hm2*EXiMGgOP5c^5GPHn~6-L4aXiBW9i_^CaRVEq zMo=bAAkfuL`p*<>YheyE;fC3oSXuCLDZZ4u9J!nU-BXlRkOkr3;DFu(f1u0RdsrDa zm?a3LtPElY?!*V(z!CdBX91*ge8oT*=mu~WsQvH_l9GSdfb<~Hy}>nV5Rmcl?*P{% zfgMD>2E1I&jQrXDFz|ky82t`VRwt82H1$9|ry~ z@Gl1VczA`uygXnYzDGPfU;!a84?pO?I|l+OflNS1kTb{{1Op*}<0qg;ASsYJ@W}<_ z4t&0v|G3Ry?c(A9=H|9@<}xw2H?`n0v$y4TGjZVN<>KK6i9_5ROw14#E{{wttYCH$ zEZf!fERSI35-i$+$~?*r(iYY*c@HNG4G$GfGY^EBs5uKnl8`{$4eVy?U~A!G@(5T) zvvUT!Nzng(Iv6;r?E_){{ZeCGQQEnbS zZazLvparM1yPb=P8>gK!!`}~hZsBa^1aokK+1ow3dZ3A^J<>&j9*KmRgDp)g1x?M( z1vyPk_{}+adCg5YP0aauInDX`&4mSdMffavP3iyc-rVe8y*nVCY<~A`ZpLk4V{x?@ z=nSyI%T3Syk3s*R>Jy;oU!DH9^aB`yHehKd3lkTM=fEy`WoS-b9!?%U&3_u7OIT1u zocq7D6X(7n<3A1b|Ln;Bx7d;tH#Y;DU5(w|=^x!|SUCQ_v$hRP^1qhX|3C^{_{Raz z1)#rMw{D4Z|L5NSS2}*50pthV_b;&mcRu?6VEfa_zeVyNy8h7hZ!z$1HU6WnKXm(_2vzj^Zpu%3zI4O|D^AijD3F|QOZiJA!>z2gJEw^3>M49|)h zNY(px82L?|{<=j#_K=){l8Kpxm5p6MP)Jxr6fFH*MpjN_!2bGwgzR6y{sY$-=+1Q%Jd#>;U%cx!zJk8u~8|azp*b|zJfu>{rLP5D)s!h^b%AzehCWBxCFhU z(zpbr9HkzQ`|b)(qikgq9U~e=cxRMfT!K10RnIo-Pf#h`fs{2ZiUZmU z<=2-;8=xv2(v&3*+H!bA4VylWu{8s77+uIo2+IkiU_9SwUm2ocehHf67<1V@D^i08 z5~KFw`ASmR=JLE>YsBsZ*U`cYlO&p>eu-Uzb_MayAB`oPAD8_-v;w7io5~z^KE$Y> zov>B4as^e%JKF0*L<*ab?Q-C$aG4YDoC<}FOVIC+h+g^^LnEeL&$CQfG-CHHPVDo9 zl|s4CHZMUZs8}yLnI5Li?Rg1d=;;KT z6K1wAK}|#UCsKkE<6dU~4Rrveo)U`%t#0{ti{h2_l&k3)V|GZBbx*DA=JE3VcNCe#j+=SiNf}!Qky{i6xX=X|eAv=?coQd+53#9J|hwf}l{zNo5yZgcfJFmy5sg zf(+@|KQYkV>N&nL2HN68Y!272>&z1MkfI?T=y-*61h%@gc75HjxnZw#Mk3o3p_r6T ze#k-*oUN!922QyRX-w9e4Dw85h*Y2h9+9*BeeC@uDE@DAuD;&0i@kuqT{n!~ns@aO z7>~8t@P#rjK@xwnim1)JR$44@Wq;)=RoErSyW$c=0^P(? ztP3;ZZ#|L2$N>Z*sw;v@2v!e5Ro;ax6liH^%aO4VZ=}1pTc7aH(Q*5Z3w)PYjJX5_ znfjgbGxA%>ISnA=L$R~uPWQY7FVq2yO~FVmTUI01 zo}s7bEt2;V#Q8S^)__Yq{7)`1)u+G5@M)%g7I*Lx^iKz4-J$(D$?{Jx%0Ja+Mvs5j z4J5s<7DBJCCYLI+Gp+OCykyje>k@RXY~8r?x``wVJ%y4iZUacy{<@0MeH3MQ?d=W8 zB<(n3Qr7CHyG7)u4P$uzhF%QAHp6^Vu&j&G-_G;o z&4^J8-iVyAjMe=Y2Rw)DV1vWE;DK4%TDR)-s)0e@G6uk<9wb0+362{dCZGUAx?Xwa z(K`M+q4ZT9RM$_Pu;DwrT2>lyHtq+zaXDIx`n19-Nhb6UU7hcku8&suI!vTERTJ2)CpFPta2aeeDSqqQe5@ri6I&` zy}ng?bO~~jgLJV|sRoQSuQq9uNnb1j5vW$KX~6#5_%`%h%s%#x4DFO-TK6$go{ETt zx_*kK57EgRE}!8n-|0~Ra(Cs4WA0dzf}^?b~?n1KRGMVKj*>ZJ1$O)L>_1OV(F{N<+=>HqD4u2 zjPlZ`(i2Fan)7Zc4w84=-hJ6FhXJuZ|0>|9`1i(D#ujdFVym(bX$RB zgizk1rMnC7P>xFHZr~2?*TBS3NW)d=`FbVq!1IcKD!M@a+u6??L65!|>*L2cgMj++ z2J4q=3w~!8x*fkY&z}ez5X731+2Xw`}?qv7SLqVtxM3`kfQ-BAS6j>@8?fQ z$l#ZDqeOIvm0QvxWcbRJ<0{S%jk^<%IP6c?>XR*?r7D^6LtAzGe7s$V)%AS>ojluP zU$oxXKpy8Y(G=QUB&4sXEx03R4``#<>`0?AG>(tREG?=a_C*`T#pI3a--Of|ch`Wm zOxIGyvubi(Hl(Txrb5l@o6pR-nXU_L(XGFOmUPs3r!DKtWK zn5%ISGU(f(b-vz_!Y1T4#G{pQZ0z1Ssc%6<+6u=kGP01a*_*)IeLc!L5h&&ITl>&z z2e;BJ%h#`Xkg*$MXWjJu>fsubFLZgKH2LvMU(r@0XLbhw`Tc{z-De7`dVR2?PG1ZfHU=XDcp)pv z4hd6BHXxNp4^M@y-{$KS$YA!N1FFlu|Z3+?*4=DAzUT zfXwNM6Fg3`tasmw!>t@=4Lg=z*GJ{(ck$9X9UkV6;YQi)U9-?Tn1u>h8yvwF<9JRG z0J8pp**#9F7I^E>mWq6rt1wx4?>GP`rK}b1FwUPk&An_ut{0W8V(Bg-o`Y75uq~*i zE^CZ8)2c)#l$5hvIAL9Siu8SZ01HfqTW5F+IJIZn)$OyOoU#S;%E^|odT2dAr3zDs zM`>no$g_B3bq?flI`eI(CP)2vA;zd?xUO~iLgW;uix5gChqW`;2+BZ5`Wax7Hm6VU zIGqnO@%&AcR+(4<7avZ3$lPt6^ec^3D(i1-$nPiY=TnksS-HBO*nBR7C)j!~Gx>_f zn;oJ#35H$XM7_}GaA&>*>D40gdk?BDUV04`XpjbngQ0Sjp&e`e>Fubqmaem015a(b z9C_U?kGtszyTbWy0R2zn(eVUGEgo(nJOCf5;<*mp#xhc3(o}1=vc{9%8It zy1TxaFEizgtNE4iYv^pMY)Vf@U)r?3R;}5^4DnN7{)Ve11yV;nTwr)AM5=fsFWiZ+ zk0fM;A!MX0Qq&jhnwd4O09QrTa&%|uKKpDHr^Ja?`TW}0ePMu2K^2n`-pyfo2~sWB zjogOja%KW$Zag5?e)hgtwZjh1T-Ge)ajb6F^PgqPnHA?p#@#5J&HCjWtP6V)W&7H( zu?L^BFbX3Co!%ev1xq$xMI30s`13xCGS7mVo;O}Us%#mZ*u!h%%4g4p@)H$`%Udtj zhH<%S+*SE$60{ZoAy!6C_>lIj`NbI4k8IYY9_9{UDkoLC$61a6Nl=!$_mJF*A6lOD zUM6&qG}FS*518v7cf42|lKvgv67~x|`CE_tLb==O1M*{d0Ie87{~n=t$T-#mjoAE* zxJcBlI_nYL-9G>3JFa>W|LxZnmZ^~%GMb_h(36$*dY;R|#eFEdN{gEA8P>l7 zd!JLxck)bA_m@5C#`uN=)qVka@33!>%VM{%;dA~=&~?&{`q9*bQ3!a9Bn+D00wohP zFlHnpKlQ*3eiIqOC1%B;|BJlWNCgQW_I zKyl$^L%JiQao@u>fGk40#$`yIYIjX1yd|GW(00bx(_nfgw&6C zuVPu(VO1ZfP7P9%T~L<6?;#$k$sQ*m@56kUJx8*F-$DH8Dk-7wbzXU)Pcaz^S#OW^ z_rK_`G-&!9LcoPCz3CTDKFAr(YzjzlDmPRo8!{`m_0(8Z4S?}>%Vozycv;Or_igGl z%d&3q*!lE&%zlZKW6B$^Z6b_OI3iDuKRvu-;G`atFYKlWf|*z5oky~ zYy*V)?4_gX$5cZVk%R{qu|5kfQ&iZVeLTWb45s+W9YebPJXIptjQmw6E_xBMv~*XD z)rdd;RP=Dks>jqUNGD^G6^lpcNE5K%=!2w`ex)jRzOFtmL)Ejbv7a@*^0e?`%?G)1 z=Ei#d;^@IT>m}$evj`>_^WmZLh< z%*;+pF6qbgU)Cw|!J^BUYEE222?jib53(IL2KmS%2|ql{UsvhB;W~euJ%Fj=9eS1C zp3z;?t`pQ4r5-sWlcV~oC@SE5J+e0XdnHgXfLD=*5YdZ0A7sbGs=L|Q!ujf})B7hM zMZKRq3%?>w!^|Wl{Is|Jl|x1?reRw%2d@5X_YjGegnbfS#UH#$5#56~-bvCMR^{ zTLRD5CO7lvd;#-W2qjk553?*AEzv%hsj%vwzMk;6X`|! z?n)YA1*#UneEB`9{oliUP9fmAmO;OPk4Y2>7^9SSh!ex$Lg9#;Z+9gXrf>pyuey*{ zn8>mn)mzfayVOIV&Cbe=sI#W? z^#LR-bCt{iEfV~*_-#4qlp z!tk&kAYTpn;{bHZW^whRJZK(5m_MT$beOO3Lm?9(5UK7ifY z%VJy-CPMV&Mwkb2#wNWHWL)HdBLC8>agQb03)h~<=f=Kp!-BYh06ju*e{*};2zblI#S*zT=J!REv z5>Kx=3^?!O-(fRj(gd(N%aPTEkZO12M$c6ww0HC62aEDT_JN@A5P20Z?FxHj&sQNO zc;`o|-EY764w#>>)IdH)CXif$BmrOOsw|ukvG1<(X3OIP-YXNmxtHjGkXPl+p|lDJ zdcCK)ow}YxJkP~Zy#7bzM8uo2z?i-&k70@IvH(@W)8S`h*7pFWB4YS(ZC`1r&O1ro?GV3!t^=Ri2|H1&kM0DeXa zWL-$ITT1vP=<)g;-=0q2U-t_1xv*sh#hzkRCb|6?s3b1y3n15d(sjq#0I9F&eEmr) zw)8Jcnl(cJ8Sn66Com(FAirX}fvzB$rt7XUhTVCoA34#6utEzcQUOx^$S? z$MO4q%4w2iR=d7g?Y zd>*Z$@>x-ijNxG*Qe88u3m)$}ZEZi5QdcIuAvC=|f<>zD&1P1LNUV%9ckUZ)JZ5cX zVOV_}*7)NV*m_k!o-^9yW8|{or^2$737?aL!ve;NYESn71?pk5%yqHPIH`vP{4@dC zJ}x~E`OweKcQe9+U8qbiLF=l^8sjU_T#Ux)ka2l7#pKJboIFK`X|($hnv+C4b(3A) zASYVbr@@K<5GN$r$|&*qjaxm-23^}hM2{frI>O+lXp((khU`r)i#vZc;Rf?IyZm&$ zP`3&TB-xyb!<`XG=hMmNi60s5zU1q+Fnn7#D$ZDyo0C|XD~vTeXGBs8McIC%6Tl*e znf!~Tu-^cS>MI3DNeO04G|2Cwb{xeIS$65fLOXd5;kxQT_)RWiId0j{qbNNyZ2>fr z&7H4c)@32ysgHi$`)<&OVX)D3XE$;u3MtTG>WfM3F0~a1HI>^|UDheAWI@~L#&&D8)1;O3b3Uc3g(O>F1PndAa6Dh9$9q)^V@dvzf@q1g67`aMD~`O?ablga z$MNbeGbGu0xNtn$*K0bNX<^H`El=qqbxd1<5|OM@_J)Zgxy2=jD~jW;oTBT_&|%kVGDE}I2jJ~;&r1~5p_)-ngzTfB zi`DZrX9PU-O71b7D`DPios~oKcuRR^vS_)=Sh#F1_P*dYw)3kmFwA)*x$R;ituylQ zi!t2h6epLRj?eS$;J#7!Lqc}M$CBwEis9t@VEL^Y{>_Ok_c zY!3RH=0g?)LyzJY3n$l8!bOLgL=9%rL(=p~+0K~KTyJ~Yi};)X#lwJHd0F%{t>fyt z5wzlN-d$y69nIjaAMyENcC>a6Urh5B1iEZxGe{fuZ&t)CrFK^a3!J^W5<`BXj%*Yk zM^vSpwuE)VzKH$@9*TI1fr^snsU}xnb6fT^&j^19te0Xdrx%F&c;ilwdZR|)o>JrA z7wmx$#aX|c>w}bD&b}uqu`1GW`fhi`{`4q3)DS#U2++0uwf|t<4&vbpUa(1bYD6O` zJ&GSO4#$Nql~qPQr1>z5wzmvF%|pl29k%S}8*7x6OB8 zmj1f3<4w~`J8av1Wh)yU>U&QCGJ00OnuYB!us~`k z%NXqEb_=qL%IH#35^V1>qw1%sgM8=bYBLXxXmVS`*{f?TK4-7k&(NI`BUZHs<|X_s z^y-UYv_kx(8_ZFS5;1p&ph~VrLz7CGY%3g+%W^X_(A!jGZRsCmww%}%1#MxkJq^r< zJiA2GyKlafvt~R;=!#$>0yDW3cX|)3sa0)TGM!MHMcQT|^`GHVg?R{Rt&)d4WNKqI zAx>@{7^@zQIpZ0$w}%_JL_vSk5AR^g+KrM=AL3jas(s`x3N6s4X;nYow1|01p3{+c>+n_Hl&9 zk@q+!@7Ib1q4P5izjX~c6Y;>bJPcVZ(q=5>HW8sdS5GegfuN#NMRb1SXT=LCG`_g_ zWV3c@+KY9q!qTW7{EUxPl+%5se;M$j5&G6q&3~O_=Wjn6*lc~qAF`Aiij-)#N)2xD z)Y@33kEr!1FRxRlbu=)2eyl+WNGH1H`w^8JWD)wPmrQ10^-xX2R+v-dVAc&|Z z5%mlg?H8YmQK}ZIcq&XiY%lnZUslshux0I++1Lw1JPI`HoSCkO{ErAOk$0=D8);G8 zoN}T77YBJokDw}%dF1kPf`g5|cRJcg8$~o5dz2%ET-IhSH;cNx?Bw=)jayt2LT4sV~M>obk#Yr`$NmcFT$UByJ(sn+40d(LkTC#IE0h z$(dN|d!7X&?OFr(#XMHNm#$u#->gccP0Z1n3LV^&$E|ELhZ%?XFjmD>b|FTr^G}{| z3`dqUwrGqhrjSv7drBulp{N_$1lJw)?`i&4ARS;Abn8dqX+-{QMHM0N%?v z+9^4T)vQPNI1_4&^=n`&1kQ!9#vum@*v$=KA&HLk;JHVg=Ww?N-FX<;6|%g>eQ`&- z{26T)F@A^h9YgX#SnE3dpw`(?Toe;&xBiolGzg<1y0GCuJ>rO#Kxmjr;d%#S+})c_ zdYO^&O>YgW3w5yYCBcsxDRDZAG3rGFZ_t8b1jGbk52Ezy9)A-$GSYKwc9>%q?NSR~GR>)q z(R}=wrz{+*)Dc7de1=-FnSGJp4+V=|Ep5f=5e3-qT zb;EsK&e{Bwf*h?+bgzy4_G5IdhD!K6BaVUXWPQxzW|)f0F7I)a%c2qml``%t=we(Q~Ac)n@t_ zr@3M~ZGNY?_VBxGA32~#GJ@Cd!RN*&zLg&{Myw{(>P4y}w{^cHtSStIRoqe!tC0P% zwk0-DU!LSkYP!&i3zv8&M&YfOYG!t3r@F0?U>HkRgP>-HO&M~Vs20{0$QAWU&#~OF z$W<9{!apH0P%}`^$P4t->A_P`k|y{-prOamr@l2d;~e5xS{9Q;FlTFT=-7p5@HwGI z&7_dM^jQ~g{~$Wxvo0KvY9mGvXIdUwm?!OXvaa=|E`~yLQJD1V} zFZs2{u(!B4Yrc7;Y%;qGLuXX)3Z>5Vu2|2ZT5TxVC8#=Vp404$(yL6Rpvgb+R|8okFAF<-$^;F6jxh=>V9V-{rE;9zP~hILQZAH@8iu#;Pbsji!7vzm zv9SFYZ>3C7D+ga==s%-XE$EOG!(YEPPRfMy%WC0#fHv^zWs%Q)c}hl?&|g%>Mu*yU z&ouJcm$ch!(mejKo@~JNR4|pfbaY);n`<#rFQYkkAj{uB(kLDmCA))3gm`2sTht;F zZ|2BM>WK>wPTfs4OF1cXKPt*FU$#&Fb&6a%96y)s7MQpM4H#cUe+$`6BPD>du4UfD zXH8daR9HGGk&iqZ?k!lFtBZ(K2$wwKSh@reDJ`5ND#ap|S`+sijV6VIEbXgN^FK9m zMY*ISA3iICaa$D)JrUYDr2m|tUh&q=#J~oXJTWP(`HX5jrY|@6Rn=frdvT?`y6hpa zu>SDI<9rW9Z~^0wg{4xoxUi$xHDCqjOQ5}Z_0mrn#HO{$P49Qk3Pgt_NEp)V43-6a zd;d=G14F!766N&3xxk)DCS9_<^k*r8@bAzbQrVEjw>3qY4(ss*%Xh21vQCuQ1{Uak zAnM4-<_kZq7FImv;NB!+pxb0KHtV4s8ZMIw2(Qe?dJ~g7Z~&8z((D=j`6!(c<=G6A|gS)xba2h=_i<=cqGxKTBN@+9JdilL-}^ zFX}q+aU}hTIm{nrgg%ujkW67I8oVpARQ_qGH85r@Op6XaI6tT}!I&$kPNVFtzRB<| zY?#DdIFWa}M-cI{E_ycPFSs(lT=b$JUlOzw)icdO zVgFg~KH-d3WU*e$FlkuHOC!?onTc)93I6AXKVyCOz4jr}FAxMhpQFKJy z9h5%p(C4uvv;J5(udo3Wj?|WZuzOpd{QfHUsup9vG0+2pGe&h9-@FFdSDuD?0 zn%BV%Jz4UpKj5V*n1O3bv2YW(ryhLQiUE-+ zzmHQ%|8Dk#g}AZlU`H}x@=L6> zKSw|JpsY8`CfBjc&!2DHZO^hMed|5DO5Y|U*hj5J+1?LM3&}KeYMmZ9)cNw1B4+{9 zH<7PR`u(k=^~FyP^&Z1`aXjYAoL6IBgQIQQoG7n@aIxfj(GKh}E2^p0dM{7j>JSdS zLcF9??9yzKR-#}tV_P*Nc6o^1)D4xgn=7R<@b|#c%GkZnJ(+X#;iFApS6E7)`1ssm z;7Ee(CCI+#LcD&rK%hYOq$Hb0rZf-ubs0qLa1=|rEVyA38^_dBe@=pF{OOnxr`*L& z*t~p_s}P9wF#1uS_|{lv{6vN-pJTZIKiike8eXffR&gDR<@8qPi_vl7Z#&OhImw2ox zAuJvf05+uR5sA~jK+x_fKa+*&H-U;&c?{@5tha;CJpP!3I$V>f;VPCGD|@u#bBL=t zXGqWV?FoJ!j`b%q2XqgKw1>eSBJNCZYwJrDPl8L_0`e97rzYtNzm-Z~|J;nZU)O6W z>IIo=S_DqBV;x;_Ei6!PMG#pVFb;|W3dxBqHH~HQ2_#ZIC*v!hgzV@m`f z_*Bxn)q71UZ*7i26~+J_^(Rp5`_ySI&bEZi&7B!+flujke25QEkgj##`w5NdmrHnp zaq`*3b?!eAeL7E?3<(G`By=^M+LF?;E3K~3&{m~T6H}Dw@6vOP!*#S$wFcHMKbd2} z^}d-#Y!ZmOo>W6DXb+c#98Pmjfn5PO+F@fzK^_Y(qMqKwmUSi~dOc7c4c=?;N&Na! zgX})v{ky$cp30BMrzc2ZeZj-HEDKV#SX>T_o8yXA82%v z3OHnm)7JiE0aGeeF|vke%T?)7pk=bRdYFl8Efja#L(_Mp*Q!jGbK6^)&Z_oMFvQ8& zW?8Erm=V8|ED-dtKiJkZ*p2=Z!gB&CnCxlq^5ru+F!Gt>!%JwUB=koQu`P3?;PLuNcjxMZwhA%DagS^D<-U$v_Mw^}SZ%&74 z8-CR@>M)5`Rh+Tsp>;VcN#VC%^dfcbF%k|)KZ~L z?LN=Ku>NfI?S_D*@`5vzYP_5ZJz89XY+fpvXJB)KQDpX5eR)NdisJCc zarCdk({L9(GvfuXpEVP*BndjLdqp}Pjs|_7x{{?E@5yK6b9|`YnQLkx9cdxlDB4rD zGFnXtPbrJL^L*yipp$1bu*54rRFole1L6_0!E!c~Eg9opUHeoZbmF)`4XW%VS6noR zs{Yh2t;~6@#cpkJh6w`;&PuGSOv_f2uj{Ikc9e#}Ej8!MaNU-h(fntkF2G17#J2~m zPKJ}T^SxY3mVH$0< z3P^0IvC71HF{}7+#}xS`D5_en#kfNH5|n<^^Ke|D2lw0VpqYAxdjutRI@yyW-tJtA zTO7lLspPOi{WT-++>m$r`2CT<%51h=+RE&5XvkztIhsRQuioTqs{xcBwZKOeKXaJpU;e)ER2gZqI-nUf?%!m_AOr92Y4nKw zA_c8cK+9)`4RI6d%0F}+(DZsyOc63OoV>Bx^T1t+I4nDSa>b%0TZyqg+#a^yJ~CG% zPzzQt$Ajg!wnT6>K~Tb;@W)N5|HS zi>NWdL*~}&(S;Gu8vP7!K=;V&R`UrCU@|F|^yPf_Cu0RA6s1s$TZg*Bl#@egjwu{5 z)dA0zLk@XdR!coa?x+a1xUvmdFlR=p#iBmP7xQ}$=#h+C>c$CZM9>#C~*sX zpW1}kZLfLW^4J1{VWe42*NwpxGZLi)eE9s#Ln}{0%*Hy$%(hxM0s20o47#oMK09Ye zc5^HPg^`us8)Vf83&U_wP}p_bs|_;Uz&xl*O3Qt%Q5?gvDA;YF*Ghg~wmlmsOtQxF zq0=m4!+28x=38c-lWG|Qap^mPL8=fH(H~d55fqd0m!L9>^fRbl_K`cJ%KA(^byC1d zg9vRVRy?*Ay;Sa!3^f+SP8L^h8@{MU-Pd;Cqs7f zZ@(O3Jd^fD6sJt7ZfsY1XybhyS2zkd^&C!3_>nxixagK=B~bPXl~LX7nnE+gxVQc` zVoZ5{QE<%7bxM_c3$@bnEVTse`~=EBYS(sn0X0HIC2A!&=0_TrU*T#~vS*&(L-D-K zY89_12|GeSl`nER>BfqOR7=_}2INK;u&eo4MXRjCJS$gy>`;6RfGYP0Mzqswn}JSkM?|nk43uw98K^I6&Au?JO;i55%S4T$|<(}yl;8`r)1gnPXWyzKz}Y1xyE1z=kocrp-nq{{jRlJ(I9?BjlBCAh z-2Sn9I>poX8GCVl`?R&}Kpac8Zg4WH5jNlL@l97d^rGLGpUhC@`Z=j?87rhxFZ#rO zEEf`pzo{#md3U*l;KNpH4l23MX9ay**=SP!R7TwvQ~rCEy^w*CFdy}%e<`KCC#}8B7KW=q7u_9whI0tPGYE8 z_|k4qjMZW^@ij^|b315rT;y6&7Uoq{-6sDT&7#Dbn-^bqW5~hm9SNq&jb|xBA)~jm zrk?E+#nirr{_?K@`?7+eLNT*X^KKIi4sMv1m$Kup8d0nnrA@apr+bvmb+CvsmD+xpA5GdIxSo~=>A#LHZ;T_bgcWvYBBG2t?7N$4*g*d+zpIi zOCX=Ji^&uX5?ok7S;auFtbX5T^NC*U&ALTBNy-kFTxcCx$6bypEr(S*4|Q~Sn5zt$ z@7Mjth5R5mbhn{BA`aTqSoD7pb>8u8_wT>g-D**-w5V0H#Hf83_J|~?AV#(JRw0Sq8ntKbQTNIB`}>`9{)^LwTG%!q}YnaAnD{7o1{ z=+$?9$Bc%Z)}<%iH!Yw~=ihJCu3>o8e2z^|)UIhTemn%cJ9#ud^?r+>SRvW0Pm_^$9&VdF$l6rKKM{0F2@HhR^>A!MJ zyvLnm+$T|`WU1#d8UF`Of$2|cpDp1TDd!*dLS7VK&1A4>T+`%arSO1(*U~#p*(8g- z&RvFKHweaR5U*a@G7hSKbM^}d zZxmNwHXRHzDD>~C;l>SmgSK(bXtnW&L2ibB3$GkpvZDJ3oQ{qDWoVHN6l=os*8Qzf zsuIQLUVi`EW%+JJI%K|V>k#^d8JJIQd{}9n5e*R*Zn|_GI@3NY-NR&lmjF`o-90n$ z#9ux!sfAB4D$>knuL_`Vv%6BdgroK&UvN=<*^Q#1>9Lju($QS=@wZl9UFPM(ceY}P zB&Z9ZS8ryHa}iMZd7@nIoEhCe)vg(%qu;mEq4f}}@u$FLmGz)>MO(F&a=I%b0dBhnj-s2ypwD}aP`06!4s_^-X(+K+v82D z{w$?yWoe5;H~;&N`Uvh{hI+AQxi*O>%sC+D-zeLY``A+ToI0_;*@c&9{+Rmi-oQ|* zwidK!E3k^!Tv620Si`YI#ML!Up3YiIV&M2&rD}X-zF1 z{CpXJlT%mGD^>RQFYqOFG_=(R-h0#WQ%&uNxe?#=dhUJJ{*|Gi<>H)Uzo0oQ!`Jq~ z?!LZ%)(Hz<-TlqeuFk$HAARSZ+75Z$^9b6UrBNI+2L7^=0@azxtGw@JH=W--9|yNQdUoQ& zeOhSd8ToV5q5AVs%bZ{NQGgEiz}>`tTQ)r3o*h4B_?7i1KZcf{kRAb zWhb!R2fj#4X{ew6=pewcZA@f9|CGkpNA*t|cklOp9<~19&irgy(*rV=6YBtv=qno{ zaBlm{u;|k`r(fPiudJQwl;=xW`2}52SLnn&1FXfV;O_?LkW<758Ow5%6|ms&Rv znW;OIT&^JZo{7VBH?zn94<#4f4lY2%ndztf37n?uBlR->_sJ3?AHKT7Ozu#R?e3-B z2)5{vb?Z%GTpKs9YLT??@A6JBx;pa0&3z9i>eZ{K^02@TB2ac1(=B@K+kUx*oLrU1 zi+(!Xnb2%L#>%BB+}vyh*0T1S(-e&8x9go%DjmEy;_ZLo#m7D3>v7S1= zm8WBQwO6eF;{Vv5nu@!@bZK6mx^IzJmmVN{o$AlM+P-_p?{FB~K*mVV4vV;wu=9Z6fRD^Nvu>G9}Dp! zWw_fboAYrNfv!hsE(!oBg_CjunWnny!lFNt00ltopApTGLp1RSk-Yma!(C;&D~KhD z(-%xFF>R2X*YLOtw}=|94#D-9aWh6xs;pkIxy@Z!j+KQ!<5nJ`ArslNjpGss`!j(f zN-&}K?;Lbc95a^bYF4){@FU25f^nMmw7zkoI7*Kg{A^+Al$jzdG@#Y7C1!=hVUlB9|4r~CT~oIf zVt6@quN=qn(u{w{o@W<>C(T!C4>0WJmF*|&o1{dTe(~S4UvpAnB}3KOhW;sVAaQFr z3~$KcpY%T(Y-3qu>hC~$&j^gH`2^h&yMJw_5WbQwy8{K^@-Ep(o4VKj`avxCbk%d( za!S$z*t>Z@q373n*Fw1k(x~%;88z8sY4B%}i$&p!vp-3-Domdv>uqw8vZ~2F?Sy7; ztotfmLIv<>lyJ&?%Mlws{@CgpPcrYQLRtK(`3l0l?9+5{LYcq`9E zBUN=memu!Mo&;eZiP^-QCWE+k<-aSxYDpVTJ5V2d+}etkaTay4NPRX`#RA_+==f^} zNs^e1nxsVRDbT|QH7NFJbiS0MIW+03Dy)#Uf9_dUGkoyuDS;cmISZSE#mM*#49fAw z4sPLZHAM?a**<-^9@Lk%V>vxZDhTRw?L7M`@L!8mHnP{#bc$g1U=u}ez&k_zdnX?4 z;~dETDFrFfA5aEnJ9-ZwLw*D5`m%;QnwO-u%Y zq>^iszBs`2LVUB~tPl6{%gt3i?eqqdRi{Ow@NCE=_%}*`XLm9Yq7f2)2=6WG`q=`1 zr+xpOnPlM&4D`0ewo_H@7N&tWd@>eXl_H$!pVoU|ms#^0Uhcf9zu~cdtY3vugzfkerrNE{l3){!%%6U=fv>th+XzsV%ymt z!+hqjy4rOS&YMfN2r~BNXt{&(wt-K=!c)J60!xmoOUR)RQ~9wkl%hEu(Z`T}4yyebI21;opgFt1!@)J8=tTcl_VPT?&O}&nh_` zqqnjBCdqle?2%2_< zj980>_TQM7vdb*Cuz>=IF?j(!mE@OKt@g!^-W8raHh88x-dTrgC1qa$;R^ZFQ&ovZ zx*WHOLXEh$4+ptM27kunX=tBlgYNhY{#pK)L8Q=aJVUz9`Iu&1FfBAiNa@T3>k|s( z(#*90zh~@9P2A&We$AJdx@RwfuBpCh_ffoN>$2n7j!Lo6t!@QQ*Jl=GSa*MKN5+(L z6kgqcr-5Uh=W_S4+`PDB2^e5$YPTAZ9N(A^UBsje>Lft9iDUXBaJ=o0JPP9ry`;G* za30I1;CRUF(9=CUBCX8ncWG=vw7ijle|>y+>>iOPi!IRIDB`o#Y+Yfbft}w@ zhw!eJir^#LCI{H_(=BARv}LWk>B2C7Qb1iQXNhrW@cPX5@SFL@4tw?xH8hv#=? zH`k6-9_+_&K#1X}kK2p?>j5G$uD|DhLYH7Wy0Q;u{L4@U0a&&d-^-m+F)W=)+EKPF zxPJy*(mHz%*k$VYr%oR5i-%2qI|UuIe8%#Zowz%F0sRNXm=H2&+tG*U$(*x|t{;B9 zi0)1Kk-H3|Q0o8jEeAGO4+3PRB{txp?Ic%}1|u0|@#y=YPPBRoe$UWsFZub9p^XE` zd%^&Ibrx?iwqf1wdFL@BgCIo0+34esUu|=2cfwqXVlwT(1s00ux^U->E|s6)Ol=34 z{IaPyNbYPs1*_&+QSW)3# z(k8#RZ-^eaL*GpfO0U3;$bNyy!Z+~FIY+3+xI5K(HGi8+a@5(h(R@XEE*dk-+2PdT zS3L1r56;&ut9#|1RpN+8?=Q+ylU~D5rhv9K`I7R}#~p?X%s^uUD%I@UKMUnBL}fdx zX!LBw{%FKW^n7vvG|0P43ZF|BZ>+1h2k5$#VO%db{}Fy1I`MOAPJsiT`fM2d;8`7> zE(=w4+?Ihj10?+dUdDDlGkF39M-1~{_*@LN5{ELDgKlIKzx@Um6~~Aruc#suzNT_4 ziDiyIoeQ>*hHYSVo}uI5MmHj8IK7nt#Z4VxCSym6aOmm}yi4-PHngME;jSR#ZpCP} z3&+Nr?b!EgVN2tYu}`kyt2A^cURwbNW^HfGt-^}JeZKM)P|e1{@5%g~KYk<1^?ks@ zeUB0@8P(J~@#4HOO=$^qr?boN%GhV8aPSng9+tHraH~+G@7>ORf4;qN_IeMM zSbnkZYfy+nVtFls_DOps$HeE3dpg+CAAS#|3Yo-NnJN8W@uRCIco5k6l;Yl^Z;8>m zU}OOHl*9BqFA&AkoqS-wv=4|7nw03OvH4i_pBw01(V5aAXy2aGjOY(2nS-gi)}TuS z)NK7Z;heRFqC-k$i8#=_Aa+U~uXxxk*Lxw3H8wFIspr+wP~M+Q=A3o{6=h!#xdxZ9 zS+>(8Kcuel)nS5)D}w1Uuey%sXy7ILAm?{KKym(7J+&y)aKdD>Wc=;YZ*)UnJ%@() z$C~?;@79SH=jIy1uUtWwm|!)gK4L9dfK9QCEq`>ce`fzj29`{ml&fGG9ROy~syBs= zmc&A1^S0dd{6V5xte1?GvV763?dqmsi_RU>6kT^{N^Kc&WE$!in`tcN<(Qy+!O&@6 z!q1x{Ow%bp+$6E|)naa#$!#noH|Y7$%en-^Bbv5qzeCy_e_nlEoPPCq-4#IhYXn*M zek+&}B<;~Kx)?1s=h(NenC?|)ds0^>;~RZr9n`}i^v|B`E-}TxVmX#E>AgU`LLhs9 zX4^D>d_8B;@#LDXaD=DN`#eJD=UWPZ*K51|YGd&9Rh&MHG5FUu8~VL1_+INGw^(RL z^l~PnRCxBsg_aR=$9io<{1#93tuw0o05CY=nzhQZZBvTO2-V|Ti^ccMy+`97)C`pi zbe9h~aSgm!1dI!ZxJOrFw~;sA(PS%#wqNA!KjOI4hpt~$xpYM@V)uMi9_7U*r1U5uSH7j?TT zvJu|?q#4nPrq&7un@CtIgUeZeL2@j#|7^2Dcv^vGid9U-=p{jUi$yQEsDyHerA&%;{?Ed_q-(hu=qVJ-^FYS&9^SYwKrSwmSzLqmhB#QXWIt?puu1pyb42NN%ZD%JH@mPcW z{NWiOw8Sbi8)7T>FY+5gN716+=GwpO+*sL* zxVRr$IbNrf)@RI%^XCaznfiElLn+ z>$mmpo&IZwHRM58;7c#v!b>CNJ^65Bm_D-YZu^25lbz*6dWLY0@4~y*pO{Hlb0KK5hCMLo4{l7dI%F;8h;e5PXq>D%povobx+Ute0M8^Cw6!Qqn%Mvvn zX&;gO{wWwbMJeh~hJ2oS&Lab@DZF}d8+NF(zBH(NDI#$wbLf(uE?0ek$HnbsHs=E5ZSJ$m!mu-iH z>C}px(*Ov`YI;5!nZco(U7+u5&kF|&ymkF!0E!nsiMc&sMgcohN0uMt?&o#Qsl zt{cw;J69o|6EXtKV$oL}a<=i!FRI2r$6M9#=M`S(*$}JB*Y6_P+Oewh6TXP+YWGzN z*-cN+$%AHv#Hv)?MZy29_O3Zzt}JR2s;9ieR<-SzuS-i<;kXpF_m`|q44dseUw*kwKRy{4Xo%abn}1NAi`_0u?~IVs+v4Emk%%U^^5jHh_ct-IeMQ|VTmGF z|Nd}i*#Lb5tU56zecV|u)W{BSX23rEke7>jlSi`jaAeEK;IGeMM5a&8$NZq~pS69+@GIN~GUvEm?RET0m~`(i-kES_a{RMxbxE$)?-OpZ-B?1CDJ}bW z=f!ymhbh>cysQ<>mcB5jP*MG;q1-@yWmWE8u63?2!tBlqlTf?`fpf zp#M>u9ENJZy+k8lLCcq{ z;m$u0G+nUfq)Xhf8C9ybw_yWdt)u{tZ)YtR&a&0^v-~9dQ#;Zd$7F-v(&3)-#HZ zDGzfb3<4%L@2wgYa6}dQ8wUKNMY!9o$KRBHgkr(@aO!m|J?VFg{x3yL7Fqs)1Mh6F z>Ivhi#U5I)KQsc&nXhf zC@0WRH-Nk~a{#ieOI0XeR6y)IwI=hN@#Kh!kK*kB6U#3m+TD*44(hO)%(@WBWmOo9 zj7&-jM@h|1noz(`X?(u%+a#K(|9e~A%he+1xNj`38e-n<6+tTE0xz){zO>e0dvzY2 zB1ybinzw2!5s}i-kuw4@w?8X~h!pPusOCXfUY%{}j2wlyN$md(J=#i+8;#fhJ<9S; zjpC!d-0YEY_s@*`ES@ioKNMa!5;LiJ#t(e1<@~W&dixbCu|)qD5v-(g9$Eq@_G3On zX8sUq4aTf$?+9G}8gz>!HhB~Pg()5Y&D$$(LkA-lrydW%kndOSs8U*xkB(@E2e=B| zY=ZPxE7B_IYZxI6w-d%+e|;>(eYRxj=8<=BQ<;Rt;>G9@lfUcUj*x@V6h|uaj%j!FfLE^S+@gBIqv z^ZXP-aOc-okGvO`p{k{im-W2-M^5ews9+<~qie6M8h$7)mU+}Gy4=@Y{$@uIK!c~K zo7@6QX;w{r)bNu29Htm;kNj$4AJ_Ky=+*4=7v_-Kx&bD|~Z0*?2C2FXGdX4Y>pppfq9{oj@joj;@i`^Jo zfBfo;YDf5ny_W2KOY}|tsp55eu~KT>#`bp1h5kl0i)l3NfLjTynR++FE61O{tZq|L zf`G+}1+-T?sQWI@XE$f0yAUpq0;3hM!$m*gx zEjnvSM_RH+B6B#uv(9Pd+VJY|NqU%31IP=J_WdUDJFukX(Opraitg8-*I47sg?I(T znoidSx(ZZHJZks$es(ji&_mJUw58#?VT6Wn+G6PrDXKC0@2f3ja^p!yeawGeG@NwQ zeqZzab+_KowYuk>F_5BF^AY`^=pjAVozu{}YY}2HnU;yl9(Js0-**HWeL)<2JvXHUU-lZ(L~CQ%v>dPqzF0hAcex@R;U~ zlswcTH?B}lNu6|rhvMqPSY#r%{&9ZzqkNyfsPX7&SOaRj4x;+LaCHZwi=BEuA5Bv# zEY2$Vv}yV&Tu4q>`G!iCs9qK^FG6-^0=?j68QtZF$E-JIFsNW7n^Qf*s=jw(Ts7sd zqWb%j1p_b!U zcBZ{4cfFn7{O#x_^UB4R4uUSC-t*P>0xnmI-B?^}+V15O!T40#67j9_yU=2U} zBSr%he!x@m9;gctCI0@1(Y{>XGkaBf9okXom!eEd)nP8*7`zoDXH_f%w3rLUDl zZFOZEBFp9%nvP9I40o&H4+P@2w+Bbn*8gLg_3~C#rR)EK{?bWlW5`$>&q8~@z}Yiz zwY_cLvk)M~6lGIX)}5Pm)>hiW{MPf2?18{6nv|~?lk>{mr}U&%htrww6te!<|cnjygGk$eKrqug$w2Q-BNxz2=OA3gD?M(#@ zc6m@JA>rcslT4~+tV0^~v@=I$kOAXnCtLDkl`$igwY{-G&crH(RTIO=ro8Xf7tn>X zk%tqODbh#aqkX(?n~YzoW#DRe>)8$~s+3hMZQ{n-= zFt575gEP?V6jf`Oee*G9OFD;jN1kqt>82>s`|`7Ge7?yNGPRx_ep?ybb-W>YQ}Cqy z)t3ZQ9x}be3=U;8e8MQ^RF4iZ+1dj<;5JI$xnbV_e_|X3;3~<4jd(Q9d!liGXl7w%iO4VQE#GN`zP_%cL9f+*A5N8uu*q9W5Q#jCqr~%C{_FaD#7?58 zZ5gaYp!gBiyEI?Pw0`{RWfG9oE4@GjS!NCRm2+4M*SjSp*?9dbDQUA-D9DQ?E(?s% zzeC=j-thm8Fnn+4+=c(7y&QVlBeHnt9S%s`u^wY)LFu>5n+c-quP<{*J z(AR$%OydySKwV7f&S>NgO@aGG)k5VY%JS}N3Mgf{|D6deFOZqL@YYQkqfQ>Ukus*? z?b`%-oQQ0E`HJAj>7Rn`mg9j00dyF7xEMe}UjD`m>}~^-J0sC;a647+o8!ENZjjAI z1WzN)wtTQ^>Vpb4x|YW~Pie>Ejja>u%gdU_(Pc8kp}9Zh=k^QU#r^c!G?vvsu?ow|I7;~$isD=|`-fU5*K3$xEESLp z)%SISAI+v|a;7x3E{k8rz@3Vem`ZIDsXw_4rgTx)UmXXgzmpa;`MT*@TH)*7C3JLwajM;O@o>sQE<5 zZEvX=@avE5(Ba9n4}CPFSQB<@IsGArBX z_iOLM z!KCs`1S}J`reJFxLGz*^gAR!Qb*Y2aY1%67U?*QCSD2`Ko5tF z@-3T#+q@qVqQ16)_b0S;s@pV^3X?B6T1{Uv?spdwOHiIK1Z!$GcqQ|3b`SCIybV4m zT1iz!#$$%J`fKc%tSC(>+&SvKYY)q(N9I}0gV&+8IVT%UtMtL#IfxUe$M0w3DUwS_ zX_ypyK4y6;Yam|o(0$z;vl}E05)O9HyfJb-Z~0F=bm&0(ieQizT0Z?UXNECUmfe8=zrQ5p@;#BwE53Q1n~icjYaQ zc&@l=uuFf33|R6t168FjT(~;_I_6cbHxp{d3wQ5YEvwn3NCaj05fox-CUgN$y!WI5 zTeNBuhz+S{PouL~D8645cJY_j7EpV*s)LOzbJHX9TY=lKxbWA%&(}@9p*{ONb?Kk; z$YKs2grkEZ*GN|ECzEjhd5Drwt`xccz);!r<>>h-V0ZrOc(d(?hdGY-WO&GJ^n1A1 z@(KEpn3)S$x?d5Q6zM-=f)k7F>cRP$dOw?wx3Ty>vUz57uAq6Olirz0ZuEuhz|5Rw zT-VlH-b@6L@7JgG3c;7CCj}SL-Jv%UAdq}Zm+$-y+cGB0V?5cCh%BIhzx3~k|3D&R zQb0fYyj#%=dlyJCe)2B%sMhbRN@>QDW+O-*J#(+_;`TchO++PuC6&T|Qua^cbS5jm zEVpYox+DPosSIWE1U1%(B|rIcgXeybj=IKzA0IaN|1%mjwIXhJ{mamG{cQTbgBhRy z8Id~Xe{h+}`qr*{CK{b&FEgP3FmF`=!MZXxV)9M+NXxCRI^JkV|iYnwrF`483?o zQG6FQq&_Q9#bQC27P*8}burRfq9YM5 zh>)6;Yh0$aw7kk<-6)ZMC8>j;wBcS6oS0=VkeSJ!ZELF-tDV2r^Qd;W3xQc(gIqMng4c!Z zb(+evb?!;yhynuv>7qFyiz^C&2=KFZM_EChP0>=O6lD)}{JaW;}Gy-MuCZ z$wewVD%T7I8kjTBx9q7$xcj%_vFa3 zAiMzkcwb5cabT0LqnM+oFP+b=gAN(_D6nk#aQUUy6c$)edw>+Rv578>`uHyMASqC^ zNC3t`HaI{$CQqDHrw9v{LwSv}r7>_Qcy2jb$rLV2Cj*($q8`Wcvy`SVGeL=oH^dZN z(%+egy>#h!S{HO)2jz}0-};0mkKFYl9YZ7vrq|uB;VW3(k)6trPZ3eYMvHy3bZ)6h z>;*%p{(GXMj(~3|5o?r?h|aZ@OXchLU)~}AIKFze9~S=3Hcs5M7K*c7u6}yn0Iuc~kBP=1ES=Ii!1S*r z^G?`syHQbjbieAi6b=B@Y~sieEm3~w<|8q9v9?hodT$D1=PRH248ImZuxBiQDELU4 zQLralFTR(HZd4h7C}9O;#jR?=Hd zdMUYU4m0ubRWG#>aX|VtD*#;aGw8gqc=kvp9iL~-lclNVZdJ9Y!A+L60r@pO* z#|`eNMx8rb=cQjn1~*g(?>cP+g&kj@+sG~j3Sy!iO94BN(Gy;ORl<>JgJ;UXQO&$L zQh8k2`Q$nX=D19__1N!CG@^OU=u zlZ3-A{w5+JZWbi#KT`I7yKwIsE^QiS81P6jDu$Uus~g=_zcq1VjV)!G&pn#xY`N;* z!{BT}Kk3kp%)bnD37bci)0cd%3-rCQJ=C9bBjuf+7N2p=#4#g*U}BkD-b1(Rv+_jB zWUFI;___~H14cM-b4!<=2^Zh;Y}ak4rnW@-u020vb7-AuXYayY^^CaxyVA6fc77L> zg~C@}VKVNGC?#>Fl{I{ET{*kXuKm)X?qrqZ1;k+!WM09nx;+oOaf2*y>$Deq2MhHx z`toK9y{LM&+)tlMCCuMxl5bsoo)8^~H2ItLRUas4HWFIp=bmXpny1X)T6AB9_QY76 zoydcEYJ~Uhfk0F2k2v^wlTrIV31)-U^KWSIVi<0(rgIU!=+!UPlT?2LqRE5bMclJ4 zo8AR-?)#IqKS*O|kMGd6qzUHt<@?QHPt~V0w?rG-Odplh`eqGI@a?fRJAWFl3tHz; zaXK5KTda;hZP-<%POcB+GREeWL07fW-kAA&ujoXQ3j=?6hy@R?spzBqpvH|c$iMc5 zf}-W^v6iJunIkDRE;7+H)52xO4>FA7UZOK|xiq6fad8RmzA2?=j^FL^VLx@zLiavk znYSmjz5x<_ustnA86@w>{ArnpFdXJp7nH67)yD}^2&D;oyWB|*g3YW}!43kMES z=L|On1_MOMF%`9i?yF_Z2W5T!*dYJJ@BLoFW}H!_=EtX3 zQzKN#EHieUWJI8jkA*znFYu-Pw4ufG4I#;PTomL4h%TM67;4vNCO^)N$rOU~1l=Px ze$Ax4rnAaM1USD@BrZB@11@KH{1~|Wj#g~JO3+{YVwLGGONt*w?DPBTKEO*ZT&_*p zo^Dtb)#xu_8U%bQAB|}XhRW*<+}ih$f5@JyZ`Grzm-5+0K)80@D>yh28XaNlDrz*7 z+T=6R+EG+oY0Sb{w)nXndw&J-Z6r@co1mh5V6`W*pAk&0vrqkLi#GTF8tx;BWt6%I zQNXSiJu#9oGkV=E!U1}mV|S1kGbR8cDsw$JAab z=>F&)|9-SDql!iz5iCN#50nTxc*2C^zQ408%fnI*u!iw8O zqx1EBW_J0s2=gY(txBoo`Yfmh?`CI!@ov7IJ<3XKU@@b zsAq(|=Gq$1D#jb#W2l;-uZ7 z4teoo4pJ(Z^GG5Qs6)ec#o^Kd8^!56hW!#FyIqy!A?V6cmOVw~Ul* zwCkR;C?^QLp=_9@1)JAM%YONI#XtM{^^7r1lO33TdY(|G&5H`@RjU}Cid<&P6@QA@ zGbV#XZ|Jbi!-?~g?&kIFJsvVf2uz>b{aAq`2+-XfG#SpJfPblSP2Y-a!6gsnela*c z_!JmMKI`0}JjK_C*h2s4kp_r^475MO}0XOFo#z zL7oy_WAFP!QU(_GiSYxo0$#1xHzOV<7f!gm6^+bb&nOy~-`>hBmAfUyHqfD$KASVs zVETp~o!WlKt|VDg1G2ULBRUlEU1>&TI7K?C!fJ-DCSwC{*ht_S_)(`3Oy6&=^!aR` z#PZ7rz2gl(54G|-5oiM@&DP)TPy0mE%Ug1cBOw#iBHa(b{EQadDSt`#Oerl7L$Prh zEUj;Qm18VBdBeou0VvP&dhn@m;t6BW28IYuMQMoXmL^%s_Kb6~{hX3*9`%Tu0lhXW zo+P*!kQTlw(`gSZCvdvTmv$ev*w!oj<*aX7x}m>wriw1!EEak&1?Vd*d#uctd-^sv zcWFGPPVHbDx#B&F1b)4wBl>)EjR!o0WdZ584_z8*8r(olx`6xf>d(=3PG*$nv>Z zGM8~5fbEzSciyhE3~&Gt!p{Fn#<7v}YOS7NAFWFBZ=>6qw>hJKQQ@;dm6!QklKd8Z zB-zNj7XXHvACw^~s9AuGUzr5HbQ89_Wn5FTC;HnjkQh&sI4n)sX0e!UuDv9W{N{u8 zpMU3~V_cwak>gQ|MVv=TzBWYD3Wn z3tGt9Ad~$${ z&~T)nF`7_pB}Dl#Dbw#Gjd*A_7R|sch8!sk|5&Vt5Px35ZYE|@hy}Lhsv|zRag;JO z)$ao$OMFXx{$a9Li>&geDZAC7(SH=IKeUWM$?2nh-e(`;T7_880!%8tASINYJ~aqLpYfD}8^ER}HnoJsD7Z ztvad<-D5Uw5GH)P!`^fElNRfh(2ZgNH&CtpuWxDa@I}~#Rd7o0H!I-1SKA?otIx~= zZ8^-x#X8k$^CJQ(lH=j)IN8y&SC4?%BYUEF_5zqnSqv>AW+ZI@v5{QmcR{}2^Jz#4 z-XHS?&#qkaaX;D7+qin`Z~ty^CKu8}TFU9EvfPw=wl-S)nk(*52% z_o%mYg^h;+gR8YeLK8QySUemkN9ZJ4TxOPMH_f^$aV4Ypk9#&HRj9f)(KZnicVf;0 zAmtjceL1h;)vXf(E%(t$frUloNIPn8Rf=(H;D!nhI_oWM5U9`>KZ zf86_R#kuWJ2IAi(iroHX;K7ku)-JGjY*stc>GY5|T4{jeNZ99kVYN?#e*>Dg2oi+c zZ<>a!8oGf&k5TeZa~iIA!Vm402k*eI2BDAXnkIVxDgnhGR7y8YMW@as(iH$An(c3mw#8{r3%#ApB0*V-6ni|{b#MxtDv*`bgv(wXk>S~ zSF6$%$^sfd7{3@4Zg8tC4II?E6#Z={=tg&jPMpurlAx;mv%l)@C_dXA)3?O#oJQo& zXfaFF@(lXB<)K5|{>z}B1!p~RCwn>j-6~Ee(41)yH2GcfUgq7?6IuEx&JGJXp|*#s zO6wl}7*(3cK@3;2QaIJ^_0HO|=aj<5{KZXJfd$k9eoC(}U5cl=7YO~Z_QJ`WH)?W- z?aGlA;jF=&zDjn0;NSGVm19|5k5Oytm*)SRN*4#~-Va-BvWp_g9AHQCIq}zx$69AA z^f7I20B+o-aArTPA(1`Xo*`ikI z15?Xgc4{gniqN2+Wi&Ytzwian>;D{iKUcr7Ry8bJ;C%k6jMjfXTf@Jpya(9-|NlUQ z^nd?#yhMLYLqG3Y9sSvDM(xF#_co~pspt;Yc@ON?53^hsz3s#jHl<2gb zc3`iUa(vx;=UK7yaq^fG^zi2E7CCWG`Dwb>XHe%yuJ-pyV8pPi;G_b+rDH|?<|5Ir zZWCE6J-;Boc5iqrmB^$BivFMEpf3RR?nxOjxpa|vE5>g+v>NJU}9E9{3H(9nsWGeSMRXh zz|Gx%KqD`!Kam&saZJH~I=UQrDC!IQ}GvN;3XG z| zx%Zy`;LZKr+ibNr$gR|Y4Ho1~Dd)vv>P^t%RxbIF~3R#k^*ecu=P_Ow^BRFyBoi+TyZt275_A7RB>K3&xDv#@xZ?pu5r zp%~dGvE5Z3r%4GbXc>WFsMl&RNuZ^ovYJ|HU3&6R11oH-m>(UY8Pd|CznF2=KSz+9 z6*Gxj*3(n?GIIS{=t*>3Y#sWTwNAicF(kq3ps7xh)zR!(X3Lex<8yK~iEpl!zrX4+ zRQRJ{e=AjT`pw`X0mD{gm+)aRGna)7&}1SfEr-!)opam3vR!XYB@P1v**8%?^u~nF zzS#C2^ub^1%HOuz?M=jix&Unc6UT{KjjGo9I?taKd+&*J(~mQPA`yKI&F3l}H)mM= zyU7v#s{UiyX9(Z-g*Jn^0gR}2OGy?vl6OaHOCv7z#s$c*_irv!M^*|hTF4=qfmaG7 zo)}%2^G9-Rh3W^S`ECD^HN}x8jYGc#V0v43rYkWQadTOD_T+lLXCwIN#6)o{IMB$C zKrT#*MiCsjWu2opF0HL;S=rI(GDsjQ>$;f+ZIuhNqk?_0x65u?`K%?A2DQbcm$%%A z*Qp1zyJBL$8k=ETsVH7dx<-&hTV|gJJDHJAx^3(Tea){w#Ql%^3VV+nZ;A3*`@)xbqnkD z@VINeQtVgm;(ITYb3y2Q$8N{zuuvbO%Wm++eNQJY*}>g}^382wnf6Xi#R+t8OOKmh zl`MMb>b8TI=xucToCC>3GV2U!_*pdPboof7i;eW&zBcCKNI7!W9sC2Sx~=G z5JDz2bATi|s=GAIil${S@Z&oY>**~epQeXj9$z2a{8D zr;>0CJ(9$kXfjz6Xpp=&37NlRY;`P17h9hf#PgEbX9%Ox-yidnfqJPd+SViYxDF1$ zbr1%fGyN~Ce}toNe!eY*N=osuI@A^2!o6f~$q@mgv^NP{ru$6QKVH)9CzqN)bt%uQC7)W}~@4-QH1}`H>Vm z1i1cMIYyx#9Z-TggxWlIr#z}n&IQS}Z}K~Xb{91*?|O8C&Kb)|X~|w)nt*DjZ|&}v zH4~nj?!3F)SUVOz9ng*#4#a$s$0>aXWn6WPa&45S!Xy#%EjY*HuuzRWf+hLS=*Y-T zxF;)4pZ0#zSk+LDj)~=FZH-*vwKB~FU67}$bfw2;k;>W+Sf;sJ!q5<*)K9> zR&Pm{uE!;|m9w36e!3doLZt_Eedq;7y#i9>8SVpJ>cXf0SIdl#~NB#tEjO5tII zG98I>tyk)WbV{i_rF#QukHhEygUch)Dc$lBP{+*Q8YK-_X>^;M@t@Q30R(LJ!$MFSPv=eeu%Y_0x&~*)QaHc{x+fx4t zQ%l8%hO{#gFg&ASt!cK)k|MzYEXazAei<&4ubXM#oMX7K?bZMY89|X$$frAXXrb^& z1v&$Ww;{mRidNeqXiI5snUOJN7)|wopzWB%zb>T0KmgK(UcT7=o+) zcpi|X`(!60UAZp0J1`0MP1E&Y_QL6`PhRA7;CEScF0GMU8f1JFn8d04RmFJ^(u8#yhuT%=BT3@OO{i_f zErh@SaL~NaqxkYn+R~XWi_ASbRhC3zB6V3q&G?v!Lx}bOE8V?~6VSiK_y^V`i zi29?TqV2Vc?P5#oo+`Ro7E3iDmgA>1PYQzDYRW#yz3^2P?QP5WifyIHrR@>;R-GzK zEj)Bdvx5VBciD`qzz>Ny&Aws32MvNpDt(8o=i6CRZMGTiit0)3K}Ay$YwW&#%_oDW zFvAL^MW<6ZCI9T05^1mbRae$b|CWI;O`8zDOr1*u+l#)hN;{tOm5sGw4k>C_KprCA ztFF*VX0Ea8)B&_lv<2Z9s%Co()~e54JV(zfRinAo)>t;)vUn6ae#m6ny<_m9lhSq< z>;H2B=Qy``^f`DU#~h|bN^RL7%iA*){&SW?Pd@fHJT?v7DzQ7vGb zttND=-DY)D+(|+?FFUFmo2pIe!sO+nERkEvoR5Fd4}GD-q@T2N8MsF?Z4=;eR6=t8 z?aJHX5J!m9DU5nbevT4qO-_#^?P-zUXqiSuNPi?#)$YX`8Fh@YSrqqH5lWC!h>ub! z;!yaO;R9E@qI7wMyl}CPUVVk33)S%g*Cu^ffp&OH4QcudvJ@@_AD8Z%u_b7aR#}E# zL#6rY_&D>Rfs#+%e4vP)Ueb==MZqe?YeAFzICYv5xki^Vfh}YIP7Fr=C2HHBjM(HJ z+J&lZ~F+X>>1__BCI?*>P512tcysa2)RSHx!! zDB0n((#;uY6^xl=N0lwR_eymhQra!&kLDA&ck=9g9gB^X(8(_ z@*`E$BYOrnZ7MxgQ5X2B?g)Qe7KZ4N7q=MPRhE4mlv}#o$@qjl#IYFNJQKs%PmAWo z+8$9elBx@CjTP^POKl_+DX%GVSKc|!D`YO$qBVxA)0r35?yohb!}z#hCOP#T&j>b0 zTa{Zy`_mek#+T@4)M_>nhQVK?!z<@4E)I1pP(KjQ>bb!*1X1h>@|MCruC{C-2*Me0 zNGfVqhB`@;1}Z5no>buNZ@+UvfubaBpX#d3b!0uRIl!GR`)n*1m^3hY##8;}8Rteo zI90HDL1N00hVydNj-AW%klzH!&eYaR;!dtfn+!Z$=DCG0!#^Pyx688!U*5>P6u+f5 z^M7{ZcU-VMjp;KuQhZm8wk^(uu!%_tp5}uyId}eac%~hjG%)g7|ohcFg`cH!#lm^v;8 zK_jo#NLp$pZHr&+(Ux38ErCanE$Vd`>T`}qZ8^Dr?|JcIRx@6hshW5;_+)oMhjJN~ zHB!8`O;Q=IElPcbh3Ph9i%I1gT0TJ<3^Ey`?Fcr(q|vHzH665K zhWFEOZ33TGxYI}XFhUh#2 zT8|2b0jP|4%JUMz=MK{G(RoKCjlSIt%Vl%ltrq+?!t<{^?Peqw#K*_hDBCO+XQJ;x z?h`i5>ScijHzYn`ID1l%28)RN9sp1)M;s$X088=v=4Zj)p!ZUI#pNO+(VTcS7sZzC zvC{0^)Gn_e^=>&CT!UONgQA>UpCUqk+zSnmn>Hbr74s+^=!QddBWQZOAj<~ zwQKj(Gb){?Ch@nF1g~T1Ni7OqE<~NNqif}nC$D7W3B{}cA#3H@_FWjQhzqOf&V{Q5`2*9)PqaGH!xAD!LsBxAch>z}>YtXGvAE zJ0OwYEbUd6UH?ZPh$1!Y?Dx0!~Nvsr$J1cq>|*&qNMwn z&xK}aG)6nI`R5p&3UC}J4~UhJx13kXts}?8lyzom%3y@x7VJ^?%q8j5l#WEwi**%B zGa9Z)vrWwm7m0N}BbXL>-1!QmPMNJ&Wc!F~QpAO{1KX;t1$Bnp@i{p^R_Rx4#;B%oy82juqu|ow&;9gI#<7G@`glAi zraakx@GTTAVv6E#-AGyX5^8;pXTn@vuVVz`bOd7tSLc5G&h|}x&9JcDLA_liwpMY& z(4mr!MWdczVqoUcg*cXr9nlAdurWlx@to9~L9GFNowFE@Jdv@9&nvzE=)8gkonxiQma?gD%Mu3xMg(-6H^)L`X9>0oA2huYn zbL@R=Gg?Z=y~s{U=)1b$R=RA4e+-lxcNN3gG~?@LGE;N&k}7qdtm!rV98KG1)adF0 z3gb=ilww%=pTpkn+RLg{S46LMI9fFY5OPj(4oc#D52G1W2uj_sOk#XSSy~(@KNRrD zK-&ue#aP- zM9+Cs6dFphqa46M)+jfwl*XOTs$4wo++L@96uMq&Fih6R-ngUuX@XEgR2m2>sRN60 z3v4>VBbAi%X_jz(oSV$2BSP$5ald(s!OD$Zvzaf`EcdGmx!MAFfzl}4{#nF7c6KQ*v>Ynqk8PyqaP;A*E%GZmukwWjY-+&NRYG zp)Y+jUlB4I?AqzrC3NNmc;-re7qZUW*Qbt;>Iod|;A=a<`WkJ@!&%^>Wne+fA$@8j zVu>?LGUldo)~?!4+Wr&HXXWctpc;vEo{9tIG&VRO;o1mcx!>?p`xky^X;>ggq4Xes z!i;g-9#50~yrBOjvzt16;eqUI3dU|uh?2nON|w-oH=kZ5`(SXim1y>nYN)Zg z$;w-|JmO3zhxU&nW;vX1xCFV2HgZ^9Y2J14M-~uqnKE+wj>AoIh^QHLv2sIyJr7=n zhlW09FkHgImg20o146dqQO$v;#mhp%_+;Odu3U%D+C7f@Xog=g8K-qEQy<=j-O?h& zmg0oe>f9PCf4UYp?UYJj_o>`j;e!217GEkaNqAlw8%3!WH?SS2e$P#A3lt>zbPDrRo?)Tzu?9 z|B06%$S239`*9u2a7BoCUXq-6vu{uMqBqib(!$8Gn)`Cl^5iPh{4E^*Qt{n(_SkYh zeP_~Jqmu1xzGaQcqE9qmiyfbRe(AKM=kJ8KptS*Oci_(n3Q+ox<5!eJAw~Sf0mI?k ziRZLY%Jr+PZ8nVk48c=f=dKO6)!bhDfLbUhfwge-zWqz;Ri+F33=>pZm%~luv!D7C zVBt6^m`8~*VEl`Hj#lC-ga|I&Gb2gqHSn;9w!d)Pm-}-$#L#+g13;O1GYM56`m(wv z%KT6>T+%N#N0deT9`uKGlexUj(+c9cPkj%H2tGd>n{q>74>zw07~F&O+3rD`qK(G3 zr(CMA4jY{XX98Von=r*j3wQy~MIq&Swm{=f`t~7*2F+A6cXoezQu$hHwrxdAk)=6v zVuFKKe#_I%FalY<*4@451MH0OQOFU31h&E~yIa5LKv%=m#>0KjIBqn6*+@wUxRG|F z_$=VtR?*{KJBSs}MS(`8QF^1!!umxXb&b%bySauu2wpm`xyZCr8KKobdAjD_n_qOt zzSQOicVYi%Ywbb2+_1%3I4(=^aZ4UkQ<^TdonxjybOo(g239W_HkOo=ENMSQzWu#r z_qSnVY=$B|$0h-dB7KG4$ez~mA>l^So@o^4>RBL z&Pa>%2UED5buS5N`aLc+h9J)T%DHOG#+Lu!y=gIuU2ny2{(Q$@%MABJ)Ng-Lk zZdZr>VN#>gN@<_){|Y#e4LSFq--wUzX!M}TKDql!qCkYiIHn@Zd}W)?f(-kL$~L!1 zJfHu9%M-v4de^yD6!hA}7P`}+kRM@4uclrKC(H*5l@*p+T0??s+tdggLANeNc@pSC zpGkI|hxB6>Dt^^025&Gcc9W6Jmj_)gHxvwo%9G*-u5FrsVW04sd+pb5QDjY&qgek0 zrQLDV_dF2mUB8T2O8pPxBTdB9ersL77|q=u)zaq{Qd8F?46clwX!6pNrRAuB1X>Gt z8V>9+2?MMnf$AD0>A*jP1ZnSlMHOcz#7E0c#C(0$mndQj1_$JeG z{U<7`dAZ`bEB1y92{l(;4`lG!KY5azW%%czy85VM;BPTj=z3k5Y|2u#Gj%pJP4dZHdXrT3e6Yfk8TSuF9oZs*&&FTA}u*$&#!k*Kne@mHecn#^sghuXyuWxSn%A zDvbY=6$o-Iw*6b{G|^D^UX?U9f)pnZs$P}iG6;R7aEH)fEJev&dRCI45c0@8f?&1#hJS_v z^^B)`EvOQJTI zNg>FG@|H^mG>au(COg`q#mA&J{Zq)&RsRJ$xcmf|qk+%0R;)Z76oWtE^AXWQMBjLe z=MmjxZd3Utw|hy>>;iz&5QZZg-0$vw@`mh$+f0miB33aWchy31`L!?2^3*u?LN zFy4yQ_<~ySOi?q?UU=LD2t}w+&fr1@QL~XlAxNKzl5@NAn?bQ1d!+k4=r2=QHMi!& z@-8OdZU_#r@)?`-Llf|Yz%8YFkj$-jVIiRfw?HiPx8|Uw`h-^m`f(AT z9aGRvE@GQMRy$&!urzzjaPZa(v8K0A5wkXZw=rVi@Lut95ZNR{S)zf7u^`=l?p-dR!(Qr@D*+!gc!&9e4f^?~Sw$Xx~y@FeFJMXx7MYgdldXiLL`Xt##`pxTmkfhdLg^&_q2!-e=f{{}E zcwz8BP-hSqTl?QXx>lX*SqR{)X%Ze7o1z%(Z0TZGx;!)V9cYFcPtUcPQEu)`jueEZ zmrdWT8JxT-0Fyxu30<_j&lN1zs?vaxQI;3yPI^%lXQ#zw8_EG#OhAp5{FRX!iLtCC zU{xRsp)Wm%DqAaU18(SLZT~aiLiWIj@{Hk;?yodBYr3+{Q;L#Z5QfeXmdsDzZupU^ zd9(;T)@%RU!iblHeA9FnX}+u+KejpZ0FK0y?6;!>yilweXNoT^x^ zGq_I}%*!X^j6BRxOG%yk=OJ1)dV@k(5=oV5`#^3kR~y}(=tw(Uvi?qVGUJRpZty@z zRVg^49k_97Wm=x;)ZYoexoJT_K&m|!Gi@e;`-FAx&fbNBkMDD+%y`P{@UMV_o%t>dN?J+LW87GfB3A-|>( zUzZavNMdtd{}fl2yBLNd!BO6O9`J zj6$k}z}nN#F!joQjQ~1aO)?bx4+Z6}1N&Vi50Nb4bfLK6g z+d@HADP}x~M>r3E7E#Xw@p16X(l7}Hq$*Q&6&ouEshaMv{B%Y6Ctk^c;OAOif2;4W zETOtH5RbLd_E9)vE#ek6xorE~ppGPMQn@_xub+;9dyotSrZqaswQ7M5@XPXx$t%6V z0|5q=%nX-z5B_3qA}r?jL*xk4K`2_VD{cr}{_zQm-ijvIUk>LRRY(t((3K~BSw8B%ES7|v_EqyQeCJkHUq9==;{GkpQE z1)4K=Iv78gmZXE1@r&Esq?uTT=53=coaCDoBOcpzMe^YaJ&zfN<;+>KD= zA-*};SYLMBw6(RRsl~NQ#rB~4+GAYrKAHh`L!-f`1}NRYM0{_#<~^P2y-+JAg#K6VDqgY%R; z|Dk`f-wbu};sNe&Hj#CE^x(P2}ofTB*KP#437+5m9 z&KDS`Z*Ra?tBm~BP4WCCY!$I!Vm zr1moO)4z9A>cJ#$z34nHkP=FRjAM+IrVZNP4Ha7ssBJq==1Ioy`qIhd{xPcXy+o=q zpK=Rp-W}b-oVRw*Bjz!ZkY21z$W8UZ?%o*}VLg@28@tlW6tyg@@RggDD>Z>XM(Jmr z$MAUxFQLv0(K3qVUhuZR4=Or~Uf!6&*6`X5Wsvs&*jxG*uLrs^k5Bj;Qz`d--#*5q zyxN5@JSPO7Od(aj$eP`Q1pRq?|2eT(c!WepT!8T!6s7_xo4`<4lE+hjad-hQ>v3+- zJdUw>iaGn{HHAj8pkXZRjF;{7T~Ev<_@$Y0d8x}_5`=ttTN26Yfy-uA-A3f$!)$;J#wD7VaP51qOpes)|& z!-n?jZM*tM?6=zwg>C?Q$7;NpG0N7x(}R>YHOY{-NY!{wHA$p)QkvC`sQiAridU}~ zupI91rLy$4E?rFKSwJwrMBMMaNU!vs>|jjh#hr*X*&Ers+hYPwbwU$>`srG2*f7H@ zFQ16E>5)BP%Cbn=Q<(yicS7F zo%Em{D;dLQfXoXM&6(2VAH>;jc-@~(-Af?a52uOr-Bd>euKNqrr|lDlkvJD$f$;{? zbEo+z8^KT)Zho8Z`LxPcDxNyrA|mgDXLtzNB$4^*&>#e#bk9aeC`{UMO^z}MMce=g zC>Gx_(w5kWmr3S<@>uzQbVjo} zy07GJs4ym4SC&RDSl{S~i?d#U)&WpkbtUFqL!dyRj;E&@kP;~9w+iglJSfVjr0ykW z{M{z44C^WO?qI;TR8<7n)3K9o;PL5YdJk-?&L(yw0(eBKn}-G0@ZHdkE}=g``f~$< ztpUd@N!YGR03}W!Ag!FdEpFTnoYZTTNj43M8el3bUCq1}%VyL=@C{O^WxUL$CrBV& z)|59m+NyvMXp(O$^g5?bKlRga!~K_VjhZp|tMvKc?2D=&_n-oTJ;glU;=G}u-%C_Y zoy+3qR=^|)0ft&_sh#UtJ}6Nv3!DR)uhtReWNxZIk6o#Hbw#nB5GqWp3_)LZz95_c zPj6gw<^iZ0hZ=Vo&EB5Z>KS@E)5XbvLI9zq<^Fx`3o*EZ$-Y*jJeV;{Y{4q#h~9&c z8mUd$Q&k~fQk3=JL7ty`0Ujh>zM(wa;ihz=5u;($Pb&>>$!R8wa5@s0S}uvky;&I@ z`DI0lx40v}CO?WOO2fS=RlnV#eo$)f(by&0N?{3=t}c3b)V5Fhe(5gFV@xE){EQz=39=MiRkFOME(ghs#PrB4D;uD8=H}64CN4%6jw;n@G?@}+!`Uk6lv7){? z$Watnv`G`)>r76+b*z!z&hu4uYHJ6oIg@Jl+Wa4=X9cDWh)?&R$hC+&Z^?U52F986 z&>u8eVopV+o?0pjE2XZ~ma-VQ<<#AhPG!@}xcUpZaydG47#GS-x#HHMy>jKtn{s^s z*D2V$9tl8(VV#h4J3483e!J>7sn)tCVVnns-$PK|^O1KjRV%grly4$1ZZegqPUWBO zTN*vCd}~S_)?fX!JO$TG^(=GxH1K=r1pyGPl#x_!V5g~vY}W8E2>YYcyt{VVe2bX< zA5LnvxtPy{$4?ynl-GnM6r$7VyDq~WFG!shDsI`(sOGHF#Aj#0U*)hCp&{CF#Jo38_BV!wp2C4`G zmDNh;DmK+xHr(=9nfcE~qt)hwNdg`t#SDi~CxUBsi~Bn-P~}QcRa`EeLCD(1&O{zc zv?TIeH67wr{hFlI$B|m;QL*0jVX5F`a$x4RKzUcounSFJhn^lGT~cqHVJ94~M`P^C zdgF{U0I%f?%YV%TNJ@bZ9{x@J?L_JiniN%Ds=1arA%;;V-eMg9t|&#LU@nTgV$-{( z%!iS>jVA$B1U{{yJ(D)4j#H$QnD?6EY|X%6kKu%)(JJ07~TPOd(!E zH&UDWc+~sb&*Fl05!5E3g3@umysj_~l42*7;Z)dy(QA@*mSP#Ub@(=qc*=>!h%iv0 z5x^tbZ!x$sr0$Z+KL%L&D?*kLBQI%gSS2y8^o2=b&X8f>*GU!zwcG(g<64VyD|HB~ zTxX?y7Q0S5+?9el-lTZZa;@UBq5I@OXNuJ|B&sw1CYCHH4P{Lg)rf2{%=y6L21vI{ zZ4Bv6m=q@oc9Ybjs1_O?wcvrgCWepK^qdtley*7fxAGN0#KS$Nf`yOP3^#?nl3waK zOq8?O1`Tpf7rXChmJg1i&sD<{Xck2XH)JMNS%L?(R>tf91eR9<;jN0 z%Ow89uJFDFijv&Ycuw9T??J0?fyj1eW&$bYA#_Lo1gO6n8FLG~2mC;2-GkB>Z-1mO zX`CvcbsgDO@$3CZbEu%r@>Aq`M#PN~GCt}hUbGfxZG%qv{-jzOF&+iOzsk9E6 zqr6@P=o?dBlQHIup4u|F3|#(+Mm5eIaeeU<*gRTsCH&UCSap`RFzOzpcLX`&>K#_x zwOF_<+~+vwoNZ>f2`dLW)ZMV?z0f2L{Olo2<6g$wP%&r${%I{ zEHV2pmdJIP{ys9T_%Bf;v68xff0=Oh95Va#fq{QAV}iXhIMX)NnqLa)gjBj%<6NHu z9r;<{M!|bTFx+ndU zY&Cd+0G?p23=m($PoFO#@TTKML`xAslO~+<%I9A(0tCV#|I%0F$$DT#s)tii0;{Xzb>{g02=obsvTJ5F-g1(hC9R6t00>&s=k$Z8e8XmW} zOcb<-#(XA}etv+9w33fsmJHr_6|Xu6-dT9_u)&X2TqaAlz6MbfFOlp$z<>-`x$M=8 zTs!zr0`u=dK*u9)0fqbzJF1Xk4kJwd$C$t;SO43XfJM6W!GDcO(U`;7y;@uEUlQT7 zw;ztU5Z7Vyc6aq{kfcc-@y{8=j9iW;ue!CQH>6ySP}(N5i1^d)K{p1kkTMElE3&?G z>!f#i$eIqwxmHW2zuYrT<|i5WwMs)y(6g-pljb?dPAD+S zn*ah~un+IX;9R2ge`}K$$~A>tI|uIt1DeZwbPxnuQ3Aw+dk;F|8W@%ZV(iMHdYhZ_ z;kTdWT_|tAJ=m9GI?3g?x^2oUG%%93BtI*f@mDNWmBjQ>K%M6zWECG!5{tn0q~RT) z)+gXd7%74asU8g2!t+0!M=4H(pcMKwT+;5YBowf*%0We`4pwJ+aT$qX7r$kxZ7CoYRZO?^1Nyy zx~2@M6`+{qKx!;wt(2x#Ov{S8#zbccQV+hH2n~IEQ2gv$bc!cE{>X?JO5>S=Gzu2y z=?Gwq>mskzHDM#!=7M)K1IOp zpSVf-GU+i(0cWuUehNl2eenc&o~G=h9&1Jvn7x;mpv0Ss@EjShW_#h^%laLO)=$}l zqKh+3GfIZDX`81~P!qK1KyEf{av$X)mWZpFpT8m^*PT^_xVqe1x>)?UBAkt$SGZ%| zB}5y}F5Wd4)FP=X-r&B=fuR2Oe#v8wmE^ZRlK%MXdwh=m+SpP(#ORI}ruDN}BCMtx zxNlbOk_?iR)O|6A5)1LcV|e~IPT(Jg02&3o)8}j!<0$H_j0$?zwtuz57u~c;^uFPR zmUW}e93_SQO4!3=r@aioT{xOEC~W$QP#7QC?%CsLvVrIPeUl;fNTC~*%!Dvqe(BYZ z$3&n|34BfTcXDkl$=^fY5ATkpW{keLU+Yw*A;2v`7wP7=!mt$G-;t_)C$|!8adk z1kHNiYk2b4S*>Fp^=})eYf0SNA8UpQA@Y-_HnJB!Pb!`D8>$bU5wo+t znC8gJWquUYM7iPq{FkGi?&ul52~qHEQiIol{DS|_Cggstrjy(2Ez`dyZF6~DHOUh+ z-lVp=H7KIgr%OAolzn9a3f2TDr;ur+e%1X+S)&d3K(9#sx`^et-9@)ns(N9*^XUq; zaOdGydJ{84&tV15f?#$nVTR8y6?LBHEg52{OlSUp1h_lKeucft&6W5$-Qv<$L~pQc ztAF(;zK9n?;Sj~h*mG#0dPJJh~@ZL{eA(c*pT z$JP&-s+@WsMEkAjnE25MZMJ+FG0!Tyf~O#akzi|g+ksC-JYNmop2W@)P0xGeR--DX zyUxFF3}3BF{%rMDx>uG?Q7hot&%d50;ZF0KIVxFnVx>}9X8aqVS9cR7pJOvx+WLe82_XfBk|dYq?EH|*kR}bDwTp> zAuYl^{n3tNN3irfuizqHNgvuZ}bf-M|{FmS>|`NCh03|XXzcTP%=K+a3x5{vU4kF zS8k8Fy1#jcRjrdWJMdFC9c`yjjp9XnqtZCHo_yr6Sn2W2aveXgK3Q=1S&;fkJ5Fyc zUjBrr?m!J!R=yS3QE(A!TTj7ZX5rT|w@%*3`K?6zMT3OR-|-Y*1XAOPKb=K?Zzo0Y z2C<-igOB1Ksoj^6uO*E@;7+~|AK<%CZNs<%E}@5$w?P3$zy9?zmoLK=Qn zCU_j_{!l-fxhDmI?(b1R|L3qm)8@yxj{*WkV}L-o|2eEUnK(OJ*qS*#3@H_Av$nIm zFMRaB-2WLmVTdE^4fp5wXFcNZt@P8Ew(Qp@n;$=)o?l-qE|58i z6`^u*fQVXF8$a>j%#s&(LXym~`pYtyk zl$x2}W<RYbYBGeUCAaVPF!&`~TU`m8BCeH( z&);f1ZCetSzqV#%b4cV$YHB(h_$?`4eiFHe7X4m~vwd}7ytIT)f;-Y%q&eFEHzkP? zz5D6>`AcGN)<;x2tMZ4(Zgk?@Po~j&PD8$5#ZSF2s8X?l**!tCy)FAvQ5+Ni!mp`9 zy;fk3Xc{Y6vV;{-!^RD-siM-<2wG<4k1|1$u%!=5%b#Ql=f-P zrus|sZAoMxDw7`NRVVWoUPEgXa#GM@hhXPeJ{RmR(I#r)%vS*GE)zeuHBeIDcIL%h zUR;>vaF#>?jh2E`=gL4dhL?;-WO6Rkcj#9KH#Dxt5Poz0ye7fUxyJ_HtqWB0f(V(9 zw>kDI^z^Q)nMeJd;d!5l!i|hWVl81>`y(E0o3?h!W`;|ctpyj9Yqnzs)DdA?eUM*0 zy7(3KVyvX7(}@cvk-Fz)4v}GAnuNxhtjSNN+q%!+zvcYA>s6z{%kRNV93%OC@#2z0 zQTs``WN^{!H*D(|_^;$cQ~R!Nlp@UUFn@?buwgjG-1#fn6py_AAt~NK!2~+CkIpxeo zRcFI3*41MhQ3e)U>mjsfc*NfYm=a9kTZ`pxJB8D{Qp<&ID@+uKyb$-qVo8TO4IPs$ zL+F4+A*3!13qp&yNBy6iLyYT$)T>7z(1*t$5dMEU2R9Q#<^Sd%Vu$}oqp-a|`&<84 z;K$sobqI5rv-S&^JFbY&SI$%$zr@d7*|s~Q0>!Ghtb5Ec#=`4nrXfOTXK0B+?Gh0I zP_-B2aGyEO>opI)nu*|$Fe}n`qFFeX1!TJ75&bbV}79aUu?<70Y^O1PW7jBVfxnMFJHC%E*- z6LiRlI^~M+V}29I-%K9wy*V?_Zy?yj0c>z+2~4l$W~6-osK_a)_f z6W)jfvS+R6KN{6Gw{K*#t<^=|24x#FjJJBSFy^QTUb|^1HFb}%8J~FAi2d3>T9U&! zF*`WH0r>R)y4g)CrF<8FlV<=YaY0WX8QU2tINI4eu^QPqnmoAK*O^Zqz54|Mn*9I$ z35_0<_j`~3^?(+MlkH}1z>oEa5MoTk#pWQf0$p5%exG10;O>Pu*qNN1 zq%HS}@)8)5h-DWy_z;O64b|yV4PGE}x+nDLQ0lhOlm4WLh1Orz8}b8|0433Lfql?^ z)Zs*HVVJ8_QKi=YinJ==d(v;*5rX&}mV6hOo`LvuKru-2$7hE}agLVswm+IkLN|Y{ zS}PR52ecoVy>fi_LCdf8b(`eGcb2|sESohP&8OOoydmf9-xf&OzN)ICj%SPO-oHV5 zd-z%*wlSysf*zd=vfiwkUP|BO=VUHVaj9V{D4(qDJP?ZIiIjHok?c#Z=Hb#8^@0xrO5^ z*GT}53yXeVVn$t<7AGQvuZIe6;quLqRK;ucBV&@6$K%etGZ1{jKs2O9LwKvb^)Bjs zWCtbJ&Hrfi>Fcq0445F0vONg&pw0ihX*xN3SeyJaA!ta|b(*ci4LA@Oz5hL|>J`;> zY_`ldKs*~{CBH(J-epnz2Cq!P??+F>)INe0q=dIh^NywF49cu{18NH)`u#ooboO8n z7V3M{@Pa{rRCeJYj4G|20e8A}db9IxydEbj|D9&sdl8MOi**3VO=~!o*&A^YC@%L zL>mZ-4dzw%Pl`V{>*nMtdq*xjU4EbAh{D_Q=={;&n!mhlihi$%Sm_}Y;uhYXCy}s} z{%qPU+?6(M(0_K(jPwGX4)TjE;RX(q{C92?AjDZSF)rS#Eh zywpo1G*yKqi8B2{)^~)9gzO*-y-q5)p~5{I`l`2GF%~eKlrU?}>wZcew_1f-?t$se zEN10qzBO14p;QaUhTpX4+uM!rW?+mo>xKK19#`agn1*U1^8T-}q1QL2Xx2eCeGXw@NydUrP_laMJ)_eWNS=pyp zY^|veJOM5Z3jmi&I-GWL)SR;8{|34|Oso^Cj$v{>nbGBE?KRsBLH6Mkw=!C=KhdP_@*^KWvgqEj=#1ta_5nVjOV+*T}oTI;0%R@|Z_PtW&v@qdl0?OWwtF(qBf;-d-t z5A{T`))iCtgC%{MT4S06^0Iq2pxIWx2_lP7)jyQcs+38We?JaojyU|m9C7XatUh!N z*ScGC0qhtR8DwCfBCYWX`kYWA=bL{N#`{}ra&+!n?uUb3Dv3nJ6Z z$emxa{9o-|2Uk-`8;+raEKLMK5-Ga`L8gzH*y^1sm zy+~11q%B2crS~czMXEG$Dc=P_FuULP3%5N883A2yj2 z?Q@3OHGjGXrLk@bCWo1{6v94UE#!Zbj`-c)#YtkUw{hOP$DPSutmf39^wt&vizoWe(VHoD>1#7cn;5A4 z)2*UX{zU9rGA?*(=C0uNSN1%E=8mT7=IUj*>WKUsCFrPWx!{&AFiB70-RJSY;~JnL zZehuUqKM@70aIVqnCi-vn>BCeVwF0g%PYOXfq%QR4BejCdTO**x!p~bxx<7TnkE_} zmq<}}T6b%@x?$rk4a2oT&^GVEWqvOvMPJo|utx4+uJEnMVe1GWJMM74>jbaazZ>*o#VQgUVu#>_ z0th0F;OXt#*>HA3sS>_5DPGWUElU=;gK8yXZHQ zoz>~FVd%_(YlW6(M+TzN^Zy>-{EOW0^Fp53-_2csxFf*SNj4Q;5WdfL>l49wtt{DjV7 zaq16T-wR@K+N3Vb#en+h^YO{8rdJeF3Ict>TKZztV!2QvvNwc2f~)`JdE7I@ZOYuv zP-X$Cs{7iEhSf$Yh}cfoTXkBDbl0+KY3vkuH8B2kF1^qyk3H z-eW7~U=x*6r2=p$quM`tkQj}seH`!iAf@QQ=mQW&gEpM&Rt>;)D~mT<8}s6i;vc27 zP=aU6Y43pD*oxU6awjHL`8ziK_QTugv&y&1C`-*9f}5i)+qUjk&Ti8ApjX)pyu8Hm zsBKtDjW1y9Gsi65S=Y2LfVpmc;ieeNvQ8l>QH$9~u9yp(8TDvwC!_J=4C%wZ{I_Da zKBI(A3PBsOpDYh4K4}LvNB5^6QT$K-eS&9>P3I3A$7#(sMc3u5YxgK4^~l zQD&riUJf47Iil2WNm&AYsoAX%X+zM}P5mI46<_W|OkfDW{U*(Pnq3TQ=C(4g`6xBs zMd`Xiz4dE~HC*+h0 z?3Da>I^DoLzWcn1l@X8eEzHh$`1BSNDev2q@e;k3+10*l*ffRq!4}&=<``VxyJrOWho|awcg^vD=nrM(#wVR-bcc|;?8!Sc|F#9xc`?b) z0&M@#KoE!Z@MpEHi!&C1vU1$t1HO!Cb{>E;U)`Yk!UWzZf^CM?Jv^K4eDak2Q&>CG zV+Sq1ng>-Wd7l?$(`^KUc%L@;3J(nk>A^li@C14;*(nM)T zPE<5s1N3FkA<)RN|VkuN);Zr=4ack$JoL7NaDvBy?VvkK&mj5V=Y3-UXKGC_-={2 z4TTSvbexd7a}Jz7pdtI*#yopokB9_g@2Pp+SX^bi^K*JPQ4z^`tv3Ah#H06bI2hW6 z%#_q%gDo3ckcHpRe~cQtk)kvf)-nGqI1@iHw=tUJFjaMr?R9Kc?C)yuNvOd9TCV)I zAW<8lI?%IHPbyT-F6eekE4Eg`nor$TSN=G$QD9*g{ARMt9zWW+){xiXrst6kO`XWh#q2J? zh$p_}8dfj}rSa|t8|jI?-d2BbS59l2;q4AEO#Z1M7Q&&Zkol#(loovT&rqvrlm$hd)4O;b!5SOQ(B8*=Jt4&$`hD*4 z`XM2!9c-Gvy(k|>sy}SPm)owGwFtZRm)Fnt%w=t2OKnV)C(Y5XewC6{vhw(}En5^M zuc%6q#YY#@J?GDfOceC-zmah!g9m*X>PF~yS?V9lCQPl5oO|68b5Ns&(v`2f`lhB z$b*-G_n9w;XRE=aY1pIGFe!;WGIbpHKXVeK%z1I9zT%g^OvvU!Xqrt(=n~Q%r>-=ZiK&6D|^(Yj`>3 zm@Ba|iJ=hL3htfSxtEf%c+R}j?pk(J5<3P%pXFid+mmdm)PDN9eTtG@C87NJdBEq>sFN70zP33C>d-=L*U@fLIs#!(azYL2v1k^o$Gr} zVxav!0VIs8d=aRw2e=%dc^pg0fScX?1?_l8Omy#?92n@b_>LZExfG~&_81HVdJRnQ z`!h=Agqae^f^j2~>x#)F75IBBl|2GMY98A8n vAA!dg4#3|n^yK*OXZ9mB2qdt4%=UwM-awlQ7-1mLN#LRcMxXTR-qU{o>N=H6 literal 0 HcmV?d00001 From 9c08599096d080115312f8c22e1e9e49ae1f4b1b Mon Sep 17 00:00:00 2001 From: Kaushika Date: Mon, 2 Oct 2017 01:13:41 -0400 Subject: [PATCH 2/2] mp2 Handin --- recursive_art.py | 94 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 80 insertions(+), 14 deletions(-) diff --git a/recursive_art.py b/recursive_art.py index 6292170..bb62521 100644 --- a/recursive_art.py +++ b/recursive_art.py @@ -2,6 +2,7 @@ import random from PIL import Image +import math def build_random_function(min_depth, max_depth): @@ -20,9 +21,16 @@ def build_random_function(min_depth, max_depth): (See the assignment writ-eup for details on the representation of these functions) """ - # TODO: implement this - pass - + one = ['x','y'] + function = ['x','y','cos_pi','sin_pi','prod','square','average','square_root'] + if max_depth == 1: + return one[random.randint(0,1)] + else: + block = function[random.randint(2,6)] + if block == 'prod' or 'average': #accouts for when a block requires two inputs + return [block, build_random_function(min_depth-1, max_depth-1), build_random_function(min_depth-1, max_depth-1)] + elif block != 'prod' or 'average': + return [block, build_random_function(min_depth-1, max_depth-1)] def evaluate_random_function(f, x, y): """Evaluate the random function f with inputs x,y. @@ -43,8 +51,30 @@ def evaluate_random_function(f, x, y): >>> evaluate_random_function(["y"],0.1,0.02) 0.02 """ - # TODO: implement this - pass + if f[0] == 'x': #If the first index is x or y, we've already reached the innermost layer and can stop our recursion + return x + elif f[0] == 'y': + return y + elif f[0] == 'square': + return evaluate_random_function(f[1],x,y)**2 + elif f[0] == 'square_root': + return math.sqrt(evaluate_random_function(f[1],x,y)) + elif f[0] == 'average': + return (evaluate_random_function(f[1],x,y)+evaluate_random_function(f[2],x,y))/2 + elif f[0] == 'cos_pi': + return math.cos(math.pi*evaluate_random_function(f[1],x,y)) + elif f[0] == 'sin_pi': + return math.sin(math.pi*evaluate_random_function(f[1],x,y)) + elif f[0] == 'prod': + return evaluate_random_function(f[1],x,y)*evaluate_random_function(f[2],x,y) +# if f == "x": +# return x +# if f == "y": +# return y +# else: +# return none +# +# print (evaluate_random_function(["x"],2,3)) def remap_interval(val, @@ -80,8 +110,44 @@ def remap_interval(val, >>> remap_interval(5, 4, 6, 1, 2) 1.5 """ - # TODO: implement this - pass + + # range check + if input_interval_start == input_interval_end: + print ("Warning: Zero input range") + return None + + if output_interval_start == output_interval_end: + print ("Warning: Zero output range") + return None + + #check reversed input range + reverseInput = False + oldMin = min( input_interval_start, input_interval_end ) + # print(oldMin) + oldMax = max( input_interval_start, input_interval_end ) + # print(oldMax) + if not oldMin == input_interval_start: + reverseInput = True + + #check reversed output range + reverseOutput = False + newMin = min( output_interval_start, output_interval_end ) + # print(newMin) + newMax = max( output_interval_start, output_interval_end ) + # print(newMax) + if not newMin == output_interval_start : + reverseOutput = True + + portion = (val-oldMin)*(newMax-newMin)/(oldMax-oldMin) + if reverseInput: + portion = (oldMax-val)*(newMax-newMin)/(oldMax-oldMin) + + result = portion + newMin + if reverseOutput: + result = newMax - portion + + return result + def color_map(val): @@ -137,9 +203,9 @@ def generate_art(filename, x_size=350, y_size=350): x_size, y_size: optional args to set image dimensions (default: 350) """ # Functions for red, green, and blue channels - where the magic happens! - red_function = ["x"] - green_function = ["y"] - blue_function = ["x"] + red_function = build_random_function(7, 9) + green_function = build_random_function(7, 9) + blue_function = build_random_function(7, 9) # Create image and loop over all pixels im = Image.new("RGB", (x_size, y_size)) @@ -156,16 +222,16 @@ def generate_art(filename, x_size=350, y_size=350): im.save(filename) - +import doctest if __name__ == '__main__': - import doctest + # import doctest doctest.testmod() # Create some computational art! # TODO: Un-comment the generate_art function call after you # implement remap_interval and evaluate_random_function - # generate_art("myart.png") + generate_art("myart.png") # Test that PIL is installed correctly # TODO: Comment or remove this function call after testing PIL install - test_image("noise.png") + #test_image("noise.png")