From bce97c3480474457b9583061a97b2868a473a901 Mon Sep 17 00:00:00 2001 From: Marc-Eric Martel <1205697@etu.cegepsth.qc.ca> Date: Fri, 1 Oct 2021 08:00:37 -0400 Subject: [PATCH] =?UTF-8?q?=C3=89ventuellement!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim2021/engine.cpp | 112 +++++++++++++--------- SQCSim2021/media/textures/blue - Copy.png | Bin 0 -> 2274 bytes SQCSim2021/media/textures/blue.png | Bin 0 -> 13999 bytes 3 files changed, 65 insertions(+), 47 deletions(-) create mode 100644 SQCSim2021/media/textures/blue - Copy.png create mode 100644 SQCSim2021/media/textures/blue.png diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 9218ab4..d1a991f 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -68,49 +68,67 @@ void Engine::Render(float elapsedTime) m_player.Move(m_keyW, m_keyS, m_keyA, m_keyD, elapsedTime); m_player.ApplyTransformation(all); - m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation (donc l'objet bouge relativement au joueur). + m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!). - // Skybox - Pas de normals pour avoir un éclairage flat. + // Skybox - Pas de normals pour avoir un éclairage flat? skybox.Use(); m_textureSkybox.Bind(); - glDisable(GL_DEPTH_TEST); + glDisable(GL_DEPTH_TEST); // Pour que tout ce qui est dessiné après soit dessiné par-dessus la skybox. glBegin(GL_QUADS); glTexCoord2f(0, 1); - glVertex3f(10.f, 10.f, 10.f); + glVertex3f(5.f, 5.f, 5.f); glTexCoord2f(1, 1); - glVertex3f(-10.f, 10.f, 10.f); + glVertex3f(-5.f, 5.f, 5.f); glTexCoord2f(1, 0); - glVertex3f(-10.f, -1.f, 10.f); + glVertex3f(-5.f, -5.f, 5.f); glTexCoord2f(0, 0); - glVertex3f(10.f, -1.f, 10.f); + glVertex3f(5.f, -5.f, 5.f); glTexCoord2f(1, 0); - glVertex3f(10.f, -1.f, -10.f); + glVertex3f(5.f, -5.f, -5.f); glTexCoord2f(0, 0); - glVertex3f(-10.f, -1.f, -10.f); + glVertex3f(-5.f, -5.f, -5.f); glTexCoord2f(0, 1); - glVertex3f(-10.f, 10.f, -10.f); + glVertex3f(-5.f, 5.f, -5.f); glTexCoord2f(1, 1); - glVertex3f(10.f, 10.f, -10.f); + glVertex3f(5.f, 5.f, -5.f); glTexCoord2f(0, 1); - glVertex3f(-10.f, 10.f, 10.f); + glVertex3f(-5.f, 5.f, 5.f); glTexCoord2f(1, 1); - glVertex3f(-10.f, 10.f, -10.f); + glVertex3f(-5.f, 5.f, -5.f); glTexCoord2f(1, 0); - glVertex3f(-10.f, -1.f, -10.f); + glVertex3f(-5.f, -5.f, -5.f); glTexCoord2f(0, 0); - glVertex3f(-10.f, -1.f, 10.f); + glVertex3f(-5.f, -5.f, 5.f); glTexCoord2f(0, 1); - glVertex3f(10.f, 10.f, -10.f); + glVertex3f(5.f, 5.f, -5.f); glTexCoord2f(1, 1); - glVertex3f(10.f, 10.f, 10.f); + glVertex3f(5.f, 5.f, 5.f); glTexCoord2f(1, 0); - glVertex3f(10.f, -1.f, 10.f); + glVertex3f(5.f, -5.f, 5.f); glTexCoord2f(0, 0); - glVertex3f(10.f, -1.f, -10.f); + glVertex3f(5.f, -5.f, -5.f); + + //glTexCoord2f(0, 0); // Pas besoin de cette face pour cette version de la skybox. + //glVertex3f(-5.f, 5.f, -5.f); + //glTexCoord2f(0, 1); + //glVertex3f(-5.f, 5.f, 5.f); + //glTexCoord2f(1, 1); + //glVertex3f(5.f, 5.f, 5.f); + //glTexCoord2f(1, 0); + //glVertex3f(5.f, 5.f, -5.f); + + //glTexCoord2f(0, 0); // Pas besoin de cette face pour cette version de la skybox. + //glVertex3f(-5.f, -5.f, -5.f); + //glTexCoord2f(0, 1); + //glVertex3f(-5.f, -5.f, 5.f); + //glTexCoord2f(1, 1); + //glVertex3f(5.f, -5.f, 5.f); + //glTexCoord2f(1, 0); + //glVertex3f(5.f, -5.f, -5.f); glEnd(); glEnable(GL_DEPTH_TEST); @@ -140,65 +158,65 @@ void Engine::Render(float elapsedTime) all.Use(); m_textureCube.Bind(); glBegin(GL_QUADS); - - glNormal3f(0, 0, -1); - glTexCoord2f(1, 0); - glVertex3f(-0.5f, -0.5f, -0.5f); - glTexCoord2f(0, 0); - glVertex3f(0.5f, -0.5f, -0.5f); - glTexCoord2f(0, 1); - glVertex3f(0.5f, 0.5f, -0.5f); - glTexCoord2f(1, 1); - glVertex3f(-0.5f, 0.5f, -0.5f); glNormal3f(0, 0, 1); - glTexCoord2f(0, 0); - glVertex3f(-0.5f, -0.5f, 0.5f); - glTexCoord2f(1, 0); - glVertex3f(0.5f, -0.5f, 0.5f); - glTexCoord2f(1, 1); - glVertex3f(0.5f, 0.5f, 0.5f); glTexCoord2f(0, 1); + glVertex3f(0.5f, 0.5f, 0.5f); + glTexCoord2f(1, 1); glVertex3f(-0.5f, 0.5f, 0.5f); + glTexCoord2f(1, 0); + glVertex3f(-0.5f, -0.5f, 0.5f); + glTexCoord2f(0, 0); + glVertex3f(0.5f, -0.5f, 0.5f); - glNormal3f(-1, 0, 0); + glNormal3f(0, 0, -1); + glTexCoord2f(1, 0); + glVertex3f(0.5f, -0.5f, -0.5f); glTexCoord2f(0, 0); glVertex3f(-0.5f, -0.5f, -0.5f); glTexCoord2f(0, 1); glVertex3f(-0.5f, 0.5f, -0.5f); glTexCoord2f(1, 1); + glVertex3f(0.5f, 0.5f, -0.5f); + + glNormal3f(-1, 0, 0); + glTexCoord2f(0, 1); glVertex3f(-0.5f, 0.5f, 0.5f); + glTexCoord2f(1, 1); + glVertex3f(-0.5f, 0.5f, -0.5f); glTexCoord2f(1, 0); + glVertex3f(-0.5f, -0.5f, -0.5f); + glTexCoord2f(0, 0); glVertex3f(-0.5f, -0.5f, 0.5f); glNormal3f(1, 0, 0); - glTexCoord2f(1, 0); - glVertex3f(0.5f, -0.5f, -0.5f); - glTexCoord2f(1, 1); - glVertex3f(0.5f, 0.5f, -0.5f); glTexCoord2f(0, 1); + glVertex3f(0.5f, 0.5f, -0.5f); + glTexCoord2f(1, 1); glVertex3f(0.5f, 0.5f, 0.5f); - glTexCoord2f(0, 0); + glTexCoord2f(1, 0); glVertex3f(0.5f, -0.5f, 0.5f); + glTexCoord2f(0, 0); + glVertex3f(0.5f, -0.5f, -0.5f); glNormal3f(0, 1, 0); - glTexCoord2f(0, 0); + glTexCoord2f(0, 0); glVertex3f(-0.5f, 0.5f, -0.5f); - glTexCoord2f(1, 0); + glTexCoord2f(0, 1); glVertex3f(-0.5f, 0.5f, 0.5f); glTexCoord2f(1, 1); glVertex3f(0.5f, 0.5f, 0.5f); - glTexCoord2f(0, 1); + glTexCoord2f(1, 0); glVertex3f(0.5f, 0.5f, -0.5f); glNormal3f(0, -1, 0); - glTexCoord2f(0, 0); + glTexCoord2f(0, 0); glVertex3f(-0.5f, -0.5f, -0.5f); - glTexCoord2f(1, 0); + glTexCoord2f(0, 1); glVertex3f(-0.5f, -0.5f, 0.5f); glTexCoord2f(1, 1); glVertex3f(0.5f, -0.5f, 0.5f); - glTexCoord2f(0, 1); + glTexCoord2f(1, 0); glVertex3f(0.5f, -0.5f, -0.5f); glEnd(); diff --git a/SQCSim2021/media/textures/blue - Copy.png b/SQCSim2021/media/textures/blue - Copy.png new file mode 100644 index 0000000000000000000000000000000000000000..32894b3c87e53c77eca73c1b5f52247bd98135b2 GIT binary patch literal 2274 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGFct^7J29*~C-ahlfq^C6 z(btiIVPik{pF~y$1_sUokH}&M2EHR8%s5q>Pnv;&qukTQF{C2y?TtoWW-`ZI3xNBlp;QdTK4FfcH9y85}Sb4q9e07k|2%K!iX literal 0 HcmV?d00001 diff --git a/SQCSim2021/media/textures/blue.png b/SQCSim2021/media/textures/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..d5296a18f7d77a45a2a0ca3b558c8538e45393ad GIT binary patch literal 13999 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelaje@2U!kC<#g|S12gTPs_|n zRVb+}NL5I!$V_8ksJQiZcI2el)I{BY3ZI`uq0})K_~4d1l3aZI;(* z?Gib8Xv)lV28Yf6pYQMgssC?^*yhfaSMC&T`_rjwcE2*{?dRq9=btOa+Vr{-4l->Ip9S@uW5qmL^c!>_GooYt{UxVf;AL%>vg(&=+z@4Jh2QdAx0F8nR< zSAj`Sb-%=te#Mle;Jv$^g?H_i|9bNCriY~mdOVg)a8@+CB6YCKaH73xSka2*6Oz0% zmru&dTKRlJvY+MiNvvIaTZDW)Ri_7KWiGuQknC%EJt#YOtNDGV1v8`amR`LU_5RDv z%$=Wa&*lGO_lHBdFU3tR^~y!J`Ag3C7@xH{y=L>-eSf&P|3p+y4GoX3-R-OOcE{y& zyWi}({jNR4`rw?3ODC7lsk-%2KCrs=Yy19s0n_hYv-VHC#D3cSO2yVG<-&dilSGV} zp81xz?9pIR*%E#xr_`{@)z5JA*Lqr{KmHbaWm-nYy$;*Z6|P$wUp@XCyL)|X%J;*IE9do0JTfI`yyl#JA1wA&+|lZp z#U?F1|JUDEuurl&)g1Y$<%^f{GsDi1v%fu0J-#Axu8-Bk-Y1p0aGSy0nZMT5PED@1 z-29H=(x-o`4EVAizUsI(GbT;*`Hz&7Cl>OjOm7oA{dMZINY!1k6^jjz`ab*6nfN>E zRnpUStnCl>UMzZfvX)1?HCK7UUbfRBL3ZcXnQo4?4gYsE@Xe=O@ntgGg5E9Qk&;L~ zcPg3bRb~3To{PVhnLN))Jh!)I&FqFr4tokb7EOM&Q9~yLZvYgJ>oXjO|9&EyGD>T}62FY0V zhWdIL+&fcKx6V{b<(burfHKZmCCW#W6pJqKtUFOA(OD;a{FCI0+fO<_Z_H2Ftngha_2{fE6I8a;iT}F4?AY6DGhN+v z`naWB9{!#9UE$Ok_Ee_5^R`Zz$+Ko-gz;}ik^T#(Z*Bg1Mq~4&GbIsaPeg0xh_3l= zyOkrleb;r?t_o|#xN5&g7q_X)yyi)AYQLSgssE?gX8(fFzp*nG-Fwl$hRJ|?=CK87 zF$p2x74~YoPj#7gY?V&I)IU)=*4^1F4nMG4{LCZ$7uyDd6;UEN(alY=o8vU+I-EZ{I?EItkc1MZE=@U9pX$fnCH7DP^pFC2iv$a&VHfWry;U zx16{6H@o}fZY?VnUp=L7Mcs~li)}A%HC=gD?qtt`s?W7OJCbJ1{G`BmB1_HYvf*SQ zi5E}p3PRQiRUU9j_^(?1_s_*YkC@#x%*xN){Ti`KxtQznsoVoRuelf(7IxXC=&*D) zykR|YsZH+TeOZpET-i_A8pnO4#4FaF7Zh^rRe8)&_f3G|ldIHHBR|6impM0{1Oq&{r$`QCh&* zbFYoWH_N@Pni9v&61F*nev^z|s=>bH*rO?I3WCumYyxLQKk(N-Bjh8v;-XoEn1b1X z4NT4|LD2%Lon5;gShj|37WOw?X6_w7i6L=jxzqn&7k{#@TH<-C(JXoGi$5&_cX>Ac z;QM1}`ouId_;-Ycw}MRWq#wF0>@ylQm6O9S{xUok=G5jM9dK|FmzrGu`^n#pIOj&F zPZo5RHUCy{``N|t6F#%NA`{aOti68JBBCNhZ_)~d>u#L#x6}fal0+qD7p%*%4mhxA zF7Mo*K6mv@VooksRTGh^@%$*#@ANW>Ghweji@ww8{<%rgOx0f`oMsC=Ejh*(KUw^S z@^tqp!CHBF8|5wiXZ zqZbwS{X^!KA2%*d;3)_wKOlOtMXc%UiF>V6GSoY=*Us>housbK;I4jGB;)RX?^Cm$ zpY(X4-p0|t?nP}*rP92WGkX)gvV&)>UN|>Kd&*4J6P(?b&b1hyJSMCCNy2o-MA<2` zcd*`PW1VPwVv}G;`-8VBZ4OT}4z4QK8d* zVUvOC4Kem}X_M#o)der!ndQ6imFBh2P7Pg7&X?x1Gb&|zB^bR{V_}eUWZ1R5%Iavb z-~q*niek)<7dyO|?6PzLck5;uOA7_bY1${nm^ePGh)oYT>ULv-skp@DUkB_zGdz%3 zAYt<4(W=FtPfG-TV%~ds!=*D^DGKe;#kp2my$_cuK9k%2C3^ZOk^W zx{`iV?{U1W^#df=1+rM8!nTfG~ zZq-e(eiOz#16?J%1nZ@OQ%;|9I2biy){oqO)mEFHgD(^elk0*!*j?v#NOkVH*dBB);YP=U#KXJ}Q97dUcqgc@PY_)r=~pp1 zBg|DPzN6xix@N=2Wy?lmvoPkOI*FwiXW>QWKuZM{n_-IHkC-_sP= zkfrc=&ZhDrz61mB0E5FXSoUmbzFBbCpsBgiV8@B%Nvq$sdp}%0%V2lklAuXvS^QMK zo=z`TZghC#!P53AImu(n+nz z<%Ixd&lyro`!XlqHT+?#;;viFog^V+<+WRced40eQnQ#6X1hHNu=vvXK|EX0=|n=) z4UM(;cs#vRlM<$fO|)CLj5UFyZt{9&f7bqt{SPy_*E!^EW9Qf8ti83=pm(uNo9YQs z{yr5Z8;28;AwoX-7y185zC4j6GViiM>J6^_%J7kB{02&AjTA zvfY}|wSj9>lFYQbWlNb&txoWA`6w`*{af$6Khs0a>kFfj&!4#$8Dn%fdpiyCmS`G9 zMW^2S)9!66wkmwOnu3NU&nX{OzOu|k3CjxjzO4z`x??7v%C%jA0RdMYO5xX|S{>Mx=ImI;1%q5#dA_U)E3bIL2?-P2%8<*6y=KPhX zb~hYs)UQrjz&1OO-C`HZhQK}BSI901kbBJJaB5zVu_wbh?-QS+H}UEFv^LFssApUt zdP%p8dA{4#&?&o)Z2EIb^y_bJ`L}zbclzF0v~+6EqN80FxvafPM?)f;OP60^{>Gro z>#Xm4^4q${0aG}qYNU7N6h7O&jBDP}WeO%+Y+1AptgftXT3$PSXTW<|7x}cLnci*7 zPwJHf*G}u>(OOt~?WM-;yiJ@}=9OGly4Rwt?68t)e_n9?+=~Bk&IM0nmCx|*ihjP+ z%Cd{wLa2E0r5Q3wjBj>HXRo;6V{}EW&*Rp~*~V2myZVkA7#!KJI(I=%#*OK+?+z{B zY_yhnp75*pw+uBLu4fq@I_iAx&SlM0%qt(QE!3Dl+kLBZy2t&`r4{iP|7Omc+3&KM zukYt`-3?JAmomM^}T zaHc-VM7;l>@Zvz>XNBxD7B6=0+gZxUyd;G8!D0VRi~E9__{yHt8Wu}F`7Xk;jisqw zW|@4hRFA0=Z>ib__bM}Sp=WiL?VdUb5_LSS&$f6j>TF1fsQw^ZuYKQodiIUINf!?3 zipNyG@2zujS@$yJg8SQsJ)IoN8xK3Xoc8NH_++V-`lYUI>`va*jR$T_wR%2XTd+=) zZ${aV)epjc`o@%$lokkv?%UZrbBW~S`zIp)rGL`ouKT*?%$mUIlO%TX-zvRZaX|jt z+Woh;U7LAS>df^8zuNm!m+|pC$4f^vb+9JOspZ*3JeXv8H=5l-FU9a}rnIMdWya=m zIo_C?Tde=zZjO(eAbNS;!u^v(RX53>kBL$MW=B&uUlv z-43A&T_5awdan3P%hTelYuk>0*t$lN=j9ZE#)DT|rzt=D9lRyEZ*L4AgK@=-ZF{Hs z{e3b+@XC|_cfb7jx^n){N4@Kmm84u+*~FCFd#*Dd(~c4eeUZ=*`Rf`VWAO32$&yxA z{cp;dPuR+muxW~mnxTx&o^3vR_FmWa%3jei_fp3WzBFFwOq+-9%J<(pg*G ztxFo6m*4F;HtVPE$p}F){X4QcQxf<-zB{I@e!XxF_sz&_Cem{y8l$53Xcw8Ry;+u4 zA2aFdNuF-+w5baCnkA~T;XU8$b2}Gx+HQTeCD%ny#K8XPv5s%gCdxOjEA?kC%du*jZ)JP_ zlIOb=o}0F=$xMvX%$n5}Sl!y;^N$Ep2xQp@8(<2 zdoA~n-JfZ_Q}pKrIM&H7>`BjGuY7HC{^XlWWA46gkYS(Fr6Ddh@txz(`Rv8d4w~3~ zEPCyzc30N!gK8n)gaudH`nJ@(^JF>@em79sVXX+mtk~;M0^U_-WoK8-og>iWQ=2ID z_TARtGu$?ud}r(5pAG8~lQ_6(`Mi?Jtyj0(n%$9jB)WU$-4a=c2`fBzA6`=D%02a> zM4R8wCk<(mQQxYROpI?Cx&D6mc}m*yW0o7XZ7_M=mdxC>;LnDtt4puVT+grbWJ>eL z?CX7|FB_%b71XQ5Pdm51=F7T=d(=1Uw48c8UuC_b`>FLgQ3tbLYlR%z`g@m>vgGQ^ z#a<2jd6u4&J-(^v3;Peo0|_yAXU+2Bi+M6}TC}s(hO}#W3l9BQ&z!!dtkOe*d5_rK zr{Np6dohM3tPt7cFi$u7mB)0~4LN2!v9GTlV_IC7^mF|egAUu3JqKjwu`s0RSt(`Z z{rG&f`|%4M{?+2|1^-&`Yk2Kboy7%X$z$FQ)PDtOcB|>Evw&}IpN$Xdy(ba zF3jzF^Ek#LY$10;+|&7Q53FBnHc>qB#^tn(5XIEmDy=g=R_s$+$vx}NWBz`=%NIFT z&OBLd6&+h{>c+ZxqCv&wzN>L6Za2zj-?%8U+I;$iki6L?cc$IsnI6rU|GT3uPxHeI zu6K7QT-~zpE|cuF7iC-Zu3x=to$YLWE_3?@v+a^z84JEER-UgpclB`9XTD?aS(`-6 z6(r8H9(-!}g7K5(e1{EB6?jyZNt7}2;#aJFsS)?SwH zR?qC-zKrAX%i|L;($Jo^*6Pt`g&?DIY7shLx2|Gd`|YGJ(ZdGXD%UM~~3O`d4p zuVJ`;Zqa(#pB|YzIO}!#mcR*Z(pW=k5NYp_=>rTJAJa#$yRTYE{mB zY*b;McXDn+_^S^xM(jM&3tS~QpPpJU(>~KP`&Q-K^A}m4F}!f?3Ht4;&a}odYXM{H zuH_~MO`EN5ET6C>`n$q~gWDQTXot+ypKBW&=eoUFLMU5=U2OMjyNT(wiZA@`JiYa@ z>`tEfS+93GH%e5wE5qhmzm96r%kpS(NzMRHl?S=g2pZ{H7n*MEa!Jm`0OIFLA z4KMGsi&d@iJ|2H_{ceS4sxsn#7BQtpO|T5DR8f1U71*eeP~zHS`l{{zL9K~7%TE}; z6$$x&cY@vW53gt3bMctat=$;OW1ach&bB~sfA|Ya|3b!)8G`etOkP-apzcDwg5j3# z4yC(K~;WQO=8^K2=>^ds#PyecF$cwN1S@ zWj~e5o#MY@X>t2~>XM+mBVBo0gcSo0c|5M@OikfkDOQrkcTD8CLSo;FwT{w(!4F=2 zxcl(q`?bbP-|sE|{bg6r<)iOT7-xojYRk}Ft^9n+`hyqhOLpx)u<3P?471zbU|wM{ zw3+i{xczSW#?!})syj%J*$y_0D^7G9bUoAOl8v5e*o;U5vTA#a(SFcJ| zxO2xbC|T*iD%0m$CqFlDY&-j+fir<~W2)CT%Um((PS%-R(>{ijUZ(Ut4my{hTaL|e?oa459^6e=a>2%Tak6KZKvK2 zi(2#4MrTiT0oj1=TS1e~II&j-eT!SS{s@Gg{!@nO|pVPk^?5}!Le0iJarJb@*7n`OEg&dyq>r-#Wwr6kFMzH7j>4c;o z@%Xps$lk93zh;R%mpU2}tCM%d@5)-n+Ra(Y4;95KLeyofc3jW3o3eTtuhJQhiPdS` zuTx^Dua;h$t8n*dlo0#UT)yu`#;!gIno+x0BYv~#T$@yTc{|tf)!}QHPw_A?Z@D;O z`h*#2>H4Lavrg z2VG}f2v1(Lq2ubu2{Y!3N?m)Fb@P`~+q=UhEPt{uZ@*XFt+K%{r{TRrNLDM$@2iik z{<|4h+>P3^Dr{49`IJ(vppW|=o|@d#b|uwa_UOd`_TAg^rrokx^?UIf6Z^`?e~-4x zIa_@1=H487)aV7S zRt}fr3T1oF&obTgERSc#Lsheew3LSp92(LgcJrkp7^SvVruXzOF@75VOI-a+Irp`i zo$S9KOa7g%{zc{K?`6LX;^$xZ|L5Ju@ZU*?(wz6H8)@crU5$+CG`kQuxux{Wq>`WK zH+x*%nR#+T$$qQLyS7b8n7ZuB=7QzsAIg#|0}m)J_)^gIGVY&pbur6*DXl}n!J-T- z9HqzKoVK<8tUkMXSI&m%Gj4eGo>bWx@wHa|LkG(-o9GR!$0Z6)f25iCUO2fq=dFO@ z>!eSA&xQ7${{GxLoKv%NN5YBk*5NBA7A3Bhuo|{_23-@tJdip9%t9rbI;zVfY~uC1H4 zFLC#sHCrXP9OEq(PT0C@>wh+VzR$VO>KV284xCD`TylyA$G}iA zr*@*P$6*JVqw&E<*LO9ux{4TusBI*um6rqvZ8Yb(b_qR!n*R!j8@q?&>56K%} zJ$STcb@OTkj=F{&J1sSLd365w=F&~Fv3PfUcXj{n@`eCy!>c*78A8q)30>@%ac)hQ z?D`jnIM@Un`j7b7PK)t5SX^`W@bT-r4bFeE`~Lhz=q5Gh8l{gimwCG@nk&*SU$T5J z%pU0&)N#J^IPWfnkIL6mr{A}DE-O}%cELmSS!eT+q2xc# z^|M&|){w;B>QCZqn{IhcdTr7!cvL8|Rb%w45}5*@V-K@6*5dN-p>>_9CvhI{VGzFN_|6 z;it_H98@%zw){-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RPsv@@_H?<^Dp&~aYuh^=>RtapbRbH_bNLXJ<0j#7X+g2&UH$cHT zzbI9~M9)OeK-aY*v&=}zj!VI&C?(A*$i)q6L{Unbtx`rwNr9EVetCJhUb(Seeo?x< zp{1pzzJZaxk&$juN}6tQWnM{Qg>GK4GRO#s87`^C$wiq3C7Jno3LrBRlk!VTY?YL_ z6ciMohF9bk`1-<)&nt$8LUMktennz|zM-Cher~QlvX0^s*Rm4)I*LOo3sUuiQj7CT zi;`1a%Tn`7l#z`{Nrvk$C@snXdnYAXKQ$*cH#M)MSl>|35XDM&Pu~Ez4p0!JXXX}w zbyegRpr|a#OhW_~if=$NVDBJ1q$0NfZZ3*ynBT#Q!C_?OlAl}(a-OG)trEz7tCalY z%oHmy)6m=^$s#Q|RX5EvDNWZT(ZpESBF!RI*Dxi?ATin0Al1;)63HmfyyB9?yyR4n zQ5CrbdYPFiRwk**1}SOg#=5BniH5o+NolFNmWGK*x<+QENh!ughNwvxQnC@mH7Utf zZuv#Ii6yp5nYoGSsrm(Z>0moR0dD0O;AyL5q-TH-3CKw-Ny{(FwN(nw%uC5HFGfg( zWag#@mn4G1)6mS=$kNo@#KPFb#L&nL;%cyoVW~yMnfZAjQw@&?Dmf!DFFiHIRtcJmKYijw6sD&Vbl_m!gn;dMuUr_5FknM zXzCgbE|NlkB*mkti)z8eh3M|2=B3ywl`GlXm4_ToWnf@nOY(MiVfYV%3-&Ib%)r3F zS>O>_%)r2R1cVu21sKjoAa7h=AyDGC@?TEFf!biuKi>2YlhGdY5D)kU=aom1_lQPgYMT12kM*{0_Jc}Jh0Chyl9p| zfPtZbVF4dMOH+0Qg8&l)M1X;Tg<*ApEW-_Z4u-DcM4=n$U=tWXOKk-ht~_&6+mJ87 zAo83^b;EwJ2_Ov&3JfdGvic_MS76XM*XorJuZU!Mz-;c>2kaa{mQMpY0%{b~|4DCQ*3 zH(q4NGbk`<9GiMRK_285(X${oK@DVZ0C~LOh?}_CPNrFNd#~-sFqeUWgW=jUKZZ5c zAU}$!Z?H%9Bh(zDkKTccX!~DJ-I`4 zLM%>M1_g!_hc+{;IA@HAD`?C^;+cVgsUgRPyJ3|LGXr+(A<7-3RJU^ ze&$77{ESYZP=ksgVgTW}1{)jR32$sLy>uY8@A&G_*ri+yrMBn(JYM}@fs0|mu?_Nd zOdsCGD{wF<+&@rn%@FsKX%Pd%HQ8^=SsFAR@U1oV|G)T3Rol$NbrKBy+@H_rD{<{e z5{__wQ?=>XFH38;{`YKOZtA;;FdV4e_~UMm?Y+P9u8a&%q`u{|AJC3}(3S5c!jN!d zzV(OyG7QFcsz2Vn7hz)vk^2&UcGu%|;#F50h1eKEB)^oOTc7;QyyU6l*JKt3p5LrY z30E})*csYtz9#OEVc1jLu&(a#9}UI>3)Wk_xXf}uYrfczD+~uFtT%cS%znUYzE}ry zLv35l)#9q|jy%CgkD2$3kH7zu{CY;z`g7-h?~On1$DQ*{oo#)ctvb(v2J;uJ2cEPV zBwyrWInZGKgtfuq$JOgwKQx{?e0QfGLkIIj1`*kJ=R%nrWPI-ZFq4;f)3%4r$oizi z0d0G0ELb+g=hVo3YqLi#9T*zWvha^d?N<`+HZe4GeCV#+Am@mllJIJVW*sG^sBHiG zXXP6$flId&}9|GTmP1Z}G!$Af#A@XD)2X zA7l=O$I)EG!mx7dwR!*6e1CVKVE4sc(rf)AzSZ2CYs+{*9a64wWeGlXXISzmef@KJ z_v7cSjzGl!ziJXJUxMKXJVC(10LkH~{>0(F2Hh|B=Kou>_1OV~vl)MTuW1sD5A+De z@F&9dZI`R-e{H@ti}`TL;!=yK^@M$aR*Hj4+j5D&d}W}76X5awuH%7Stk~ifEVf|D zz2BE@U%iWL|0~1CxW;fwc@^)xIqXafJekLXVj372nCI+#zq!GIp&_wvD{Jc3jt#d8 z7v0Ug{QtlByT>2%*H+rA?U#Qb%)nFXyx>pv2EV#;og++449<7=Uy(V@dwq3;1H%KC z%!=ZN)v<~Bdw$v8kY-{yeAl4ee%;2N-|wbg&pFS@!1MjK|E9V>4qr>>CH8i+Fg7s0 zXJMH9{p_me?epWNe{N<_c-XMLQ1O0U%v&2}0hR{E{0+=b57%CQ7^BL-Q+Zf+M!~un zwd;i0nGQ_Y{(y0!0w0URUBOjnf>k5z`ra5Ow++uO>{(X#XT^Y#1g`8|I=iE+cB z1?Eo}&snD5tMt3C$rJS7?7+?DdlUBm|66)yz2&~X)uq{dZ_L^G@;52+KbYM7w<&)o zgTV{N9iR5peVudiQ*z5n#)9t~%%3pM_`337)_k!$VhnAz43du*WQoX>*E+M=GEB8I z+>v$dt|;qqQT;0m*c~L+$g&=n)IYR=yh5)yMeBPl7CqSfxJR5Ry_jj~t*WwjDO)ux z>OQ+NG;Ce`V7Ym9IM_haw%g5|sGWOXpo zEjURa66c5Vc}yOn^VmAj$|r;hh6V-&S$@VvQvA$#>$?eU?F@la+ZmA?IEV%f$dNZI z*ch%>ib2{-*fQRP)^vsq+~=9Vtr3jU!@($zF~vNO)djt*1m_67H>{y)}DLtp96z~%MMn7*K(M}M8nq~stzAM|0>s3K+A^_ecZDT)H#B*GBdnk zM$@{%CfuaCwwa-!qu{CW4SuwkNT^(_Ju~(L%g0Om3e?eqWX3U8p9FbD1_h-%j11q{ zk*&SCqk!{`ItznK3-=sQ+Yu4O3ew^_jkT>H`x1q3=p);g^4JO7C>0RY%V7G=hLi>x za$**+e3N8iP&(A=lkguLl+Y4#!r2#xRP6V+?3aG4EY75a)NU;hweM&7&Bw?f_>jqA r!+hjI_rx*gh6i$T9MBfvhkf;DUiMGCWWB==G$Z2a>gTe~DWM4fRPslW literal 0 HcmV?d00001