From 90bed51df46c06d50625a0f9861221d9a51159ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=20=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D1=87?= Date: Fri, 4 Jul 2025 22:48:43 +0300 Subject: [PATCH] regard scenario 1 --- README.md | 7 +- img_2.png | Bin 0 -> 10321 bytes img_3.png | Bin 0 -> 82015 bytes .../java/ru/ibs/framework/CucumberRunner.java | 14 --- .../ru/ibs/framework/RegardTestRunner.java | 16 +++ .../java/ru/ibs/framework/pages/BasePage.java | 47 ++++---- .../ru/ibs/framework/pages/CatalogPage.java | 49 ++++++++ .../ru/ibs/framework/pages/ListingPage.java | 48 ++++++++ .../java/ru/ibs/framework/pages/MainPage.java | 19 ++++ src/test/java/ru/ibs/tests/BaseTests.java | 18 --- .../java/ru/ibs/tests/BusinessTripPage.java | 103 ----------------- .../java/ru/ibs/tests/BusinessTripSteps.java | 91 --------------- src/test/java/ru/ibs/tests/DashboardPage.java | 42 ------- src/test/java/ru/ibs/tests/LoginPage.java | 39 ------- src/test/java/ru/ibs/tests/SearchSteps.java | 106 ++++++++++++++++++ .../features/cucumberScenario.feature | 19 ---- .../resources/features/regard_search.feature | 15 +++ 17 files changed, 282 insertions(+), 351 deletions(-) create mode 100644 img_2.png create mode 100644 img_3.png delete mode 100644 src/test/java/ru/ibs/framework/CucumberRunner.java create mode 100644 src/test/java/ru/ibs/framework/RegardTestRunner.java create mode 100644 src/test/java/ru/ibs/framework/pages/CatalogPage.java create mode 100644 src/test/java/ru/ibs/framework/pages/ListingPage.java create mode 100644 src/test/java/ru/ibs/framework/pages/MainPage.java delete mode 100644 src/test/java/ru/ibs/tests/BaseTests.java delete mode 100644 src/test/java/ru/ibs/tests/BusinessTripPage.java delete mode 100644 src/test/java/ru/ibs/tests/BusinessTripSteps.java delete mode 100644 src/test/java/ru/ibs/tests/DashboardPage.java delete mode 100644 src/test/java/ru/ibs/tests/LoginPage.java create mode 100644 src/test/java/ru/ibs/tests/SearchSteps.java delete mode 100644 src/test/resources/features/cucumberScenario.feature create mode 100644 src/test/resources/features/regard_search.feature diff --git a/README.md b/README.md index 74aff3f..4c98b6b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ -Изменён pom файл для поддержки cucumber, добавлен cucumberScenario.feature, класс BusinessTripSteps +Итоговое задание для магазина "Регард" с использованием Cucumber. + +![img_2.png](img_2.png) + +![img_3.png](img_3.png) -![img_1.png](img_1.png) diff --git a/img_2.png b/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5278aaf9e6d2de35bad8422a3a8cbe21f1b0ccbd GIT binary patch literal 10321 zcmd^F`CHQY_HU*;In$&}b1kP_sA+LaZF4CVCYv&sq;SD6rgn6%6VfKyN_Xm8=2a9<@XhTFQX%_eV z^ESU7UvCY)w-tN&?$#lmTibKpop{Lx6nm31er`?b=eEC?xCFgYMs*q9E|te8BXHOT2$Y8mzc&b0y>Fe*sqiU%$Sq8EN>U zBp_+1FJdy{NkjS&)XNa&=%ZMaT~Hln`5k5U-?gDY)Jq``pec=LlsFiqw_Qt1-MKjB zsUg@f`ETuHkxAM|!6eC1O=@`f90#P>PC_iv9d8wnr1<>8KAxQwikuG;ue7o;rP6&6 zB~?!Mk7==`$fsQrd#m6(*W$@n%BB%sDp>=vIt}_w0#^pFpNxFjC)$}Ne~A}{Jg{$Z zBbDPTzz|$uN|9E;oTIcHEvXd+zXBzrO`#ewBO-gd4Z_4LxE4~Jt{T60e8EZPzgcx# z8rhOxki$c^Vl}6DOM;Yg4T`LCxq_%XQ!M&6VzxWNRrvHP0<$jrb`6}Voz-GPrSkgS zg5KW%`%>q5&6`XVv{HLc5HtQ2c)i{%a};DbEER_&CC(+F;^sP8nXcpW{bw>nQSH-{ zC%wGTNb}f?A$1CNgDExmWSfieM2Lag?7V9V1mOsPcWjSu)Cj7c0F zn==n8V~qM4k2X8^fW%3P?MRV06gbqo5I7X%`^TY22{mcBmU!}X*%QnDU0&!LxpnR= zP(q7ne`R4p<1@mrrXU+_YBOlZFP=*{K0dW;ylOYrffjuPB(>SGq z`42rdj-A1`ek7>sECvkOWHqK2i?Hxk3tR2{(rzzw)<<}H-)6U~>}h+q6$Gs$l7P!N z4lUKYWTT^bclGF=ix)B&$`rgRGzbl*jLW4=keF?+w;dTuxVn7uQj}9VPeFt;JG&&N zL@7eJ%9LvN5f;|DvamPg;qrHrkvE{m6HkU{+!xq9?~q5QWv%$>P({39thRj#lis*k zwwh33l1L^kw%ZOS#FJG=Snpbf1U69{>aMIO9qV-99)c%k+ePv7@nss`!ewQWRPDZzEe>2v+1p6fvove! z_CLLwgcWt=`n^B1ZvA57Fx}XxuuU`55q(w>=c%hBdw}w%NybvSn2`&^$kD+!14HUd z^hdCTKv}=P+?LO2m9JtP0w{McENcE>F>v`WUau2=V@f>|*#wW6BoCLJ^L5uUUlD_` z3uWnQO17{ALu}U%aj4A9Us0r^UEGjr@fB`&h4ux38~S-TVRZ4=_Uf*ED;@D^#ly&ax_Wk# zVFue5779QLp?HFyy$Mld-?l+GE}Bu5%+YTG6P=G|{}>-9QcsoRV4|;ajE^tdZIbvisnI!RFk0Sc#MNbI=89rV3OxjheR7+R^(6cl(b4t*l8$0qs<%);CaFTF41`cqDze|J z3J}cl>p?mn1yjBsp57utn_*i{zN3m^B~aV9)W%d4DZ7b-r$U7g$4}d^SPd?XKa@Aw$XcxEy#R)t*)K{)$$wMza#n>^lwgtAHXF|q zEuo>!Qcq2iB7PkZ)?3B4bY6w%2un+;@uBbIV(y|1tM?H_@`#UjHGJcBcPQn+Y<2(K zOZh||ODHR0b!8_@1{hTEAPjb+5G0-7^2i`ObD&1A?uuSJhOSOW;o_4a%~IAXg^dXW zvYJp+sw9f0A)$GZnoWoMTzPwBK)C@&QgA+r?p$%-$6TZ!E$fy8BL!M1>B(RmgdR(U zT7_YGa~3 z#6r5v$6VD4 z0n&K;O$BKx(-v&aqb4FZJp@GP4mxTMelPDY7$bYYMlB+>cX2}F?-e_D%GN3jG?BZLr8a%0#PtC0b0^8Gxg?Jhbyy%a7qPw1p4*W7 zq9&jBmAgu?}GW8=Gc(N6k^V zTb|@FM{%`F5zhAlPWB+{>cniYRKGJ>{Q~1)yb+WGl9<*|2WB$^wzQW0WMjC9tbQb@ zsaVaGF6ORl^*2|^%pKuc0F@&*aE!^yOyemrd)^&Qhfjh@{qPdF-!sUypdM&N&iC&H z`!a~;`;@`ny1ieS|!UH?=sxym^-W0aIj3+jF< zG%%%t%r{1)gt+5&J_qZ1#q6N+zA>%>ujV#(R==;2G~o8Xum4YK9KC5(G0WB=4Vks_^oH;wNvN1Iy?*m$AA@V&hW zvp6@9Vpo_Zx3~W(5YWpT$~)JC(rVv}ZOG*dC#|cVn-(D~N(1GZGrp^{Qk&Yni))pz zBgW5DotvSvh`nFv%ucV@o1Vw|b0c1#UEBJk3rnh~eKC+nrog!V>hTZ`;qHxmSob|i zUT@;xS%45l*r(O-k9Z|69mp@KjrDqqS9Oiu>#Avt9#T)u&=zJO)E#fSHB*_k;-jT} z9>IyFSHB#VMzwz_7{)z<5QM}L$lIU8u083hgC5#qMQ}kw&-j`<D zUTg6Y!(E*xIHA#MC*&1}npf?h zZ69SMHo-XsbHAUx#rH#6>rQ=$w7MfXII=}#cjjCf)+~f$QuDrfEWCRM03q(3`|KOC z0$c+>`?&8uewI1FyM*(u1`nRmlV~8>9Jv?i3u&gD!8QF6`>^w+JfQNr8Uo|moWlTY zD%*j8I&d2+&X!G1gedleRjnfrUwwH*ee7ACv)_jVJ7@(qr4k-i>n|toLyL^V>FSsG zNVJbr#~1`Ws#dGUX|a|d&X2@`E^Ky1Z7*wK%a~CTrC2oNy|;I615*;-1GfyNY`FKo zJb-w;NAm*@x-gW7(xtVtxj-GPz(AUD>X#G32=uGW1E0mOBl9QB9eY`mWJLiP638Cv zs&ibvj)%ZC@36&9-bNMe+W5bGUJl4F?{!zG6zWI3J~BI&1I#3ZSd@bEBa%lb;Yf58 z{5XyJ_%iaItl&?{y+7QB2uB}pQ?H*4;gkRjWBUUR=AW#VX59H73PXw~g0(xDu_v;W zeQ(1hlS36b{rEJ@wnBB+tdL<5$T)Nj`V2CIXssGfgUyqumH*Xb_mMWN@nVt#H_s*mJnCZ^R&C}-M^mLz$nX!8gS8z_-g4K*TOjYX%Ef0n~TVmJ-;nIf04d86HTvcu{IpZ z=18>r0X%YrSuuji%%41GuZB`?kX?8HFN&6xXWMc<V* zeGH5TrDT`cJo2#H2?P@4g}x8)VR;C-dZMafsUrg*y2SuEL!|r*BcA2TDT&BC=M%W9 ziXwaX53qVR8H!svg>K-1hM}V=ZLh{OUKRMcsZ-*(X`TLXJZ(o{r!U6wm7$Gv42zqi zgCS0<6)BhW$)wrb(93ZDg6|~I{YfzB;uHga;tJ4Gnx*lU_$;p*C-}FQCMCfpb>pq2 zF-|*JFWR@_RRzNys_g@wa#;!4Wh$3E?2!lMRa{vv^(O)ONcg6vkRYgnQ9P2W1L`z@ z_JKcY-$PNTO!>lJcIFLz)}5<%AFz2ZP{75z|9*wWCL2U$hcoVhw`!HAgPeUvqfrX{ z6f9XDHn38-)FzL>^UT0a?nQBCIEM$xIFvTE**4|2SY>IyqsV31DbFe3 z?hD9)yonG_;oU7F?^6%o6b`B7+)~>`jY9 zDKK<$PNr%&5t#HHLo<2-0WGR_Uv|PxY%u>_pxGpGldCY>1+D(jC-h^#1b^bZ<%9Xx zB;lOQHGA5!!BeLjjF7^xC%ejd1ogZNURBZxhQSJE6|%S@g3tKI_3^unV;LR1I8_Pr z(DOlkJ#hgEnuOReLJt@g_7Pv!J?d(2^0tGgdZDT2hBX1jqK#E*xTev1QpZ*IuT-q! z{eb-0ynwd~;QZGqtw|1=`A(hsJMrkrf(|uzCKxpA7^lOZdZ0-~(K^%>dG}9f+Qaa3 z@7gsDixF$>rJVLBPsp#839nUd1^K*BZ;Lx0_dRM--8X6kjw9Zm=A#R0_uO76Sqvs z){0VZvBMU}H5RV5f|c*0FGAGGY^em6`4S)BeBn@fOVV{!BZuzUPe=7wJ1(|AKau$U zO6W#vRCw~7Sa@KABo4NZ%Sq~nms)%Uj3dBo)XM0p%O1M#b5f&W#5^^VfAYA0H5YU7 zqeqVLK%jpA4kXA6sPR(z66-Lgp9gAyj&ex>Rlry`sv7n_yEKEvCCJ@(am15CzYPE) zNRe@vY)k`;i-LVR4?aGN~K+$W>V2f(HNaM}@AU?f%oenL@ALz)*JM zTw1l~NC%Iv$plHkoeP`FTeOYZ-wkZ+giOEZ*P3k@V^~4Q8(9gj3!x~@9oNXe->gdY z@+G1dISI|>xs#EEoFIcnM0tY+H|D9u5c}r~`efBtf9Rl_*vBj@5FPNo-gR|*?V|3! zLf`SGXxv#dCYi73aSGrw8MZrKPY%iBotwjD=$;3oKsstfv$Hg#XfMsu%fWXA#iKMg zU`1k8Q5V_bhEE#Tw=ktzM^?B*5S{2WxE8Rs_M^32^N-dpYQHNNBqwKwb7F9b-970j z5^2^X3WeKe?4FHix^^bmcJlm#95&P}vdMT)t*Oyaxa$H5OP4J!2y`U@^;;wwzy*J* zeT)O9Rw5YJphtksN$BN(oC2Ctc23a08@ZiLQO5ms|0`=iUVUuU+s4kTM`uMj z!D{qd#=De47@X!N3pEQT>~u8#4Kof2?oT%!rz;c)(5!4HjvTE0b}lv4QD~TIc&rPn zg^##5GP~+7-6kDNC5q5z1}OIBsTm^d<3GkHc)hQ?WdSd&)_rr;ZpWoDs!Z8;gl{|| z0C(#rqWDE^{`|rP7)qBD@2#DEiAT~GLpUgZ+@1!NZ8QtAR{pd^PdeX0GijLaz{nSh z?Q@Y2xf2NhTQ$mE&%(0R2=(GtUsDy$BVuEXvlrUAKRT}$JmRL-WZh5#Em8JI?l*ZZ zZx65fnr~I8PuVE&;beezQg_VIW$=jh%)+Ljc_B=Z($X4GQY&ezV42a3Mry8c>}m|6 z9DUVO^|FYaK-(sp2?nzWH2$eZNYd1BV`dd;<64hx%f>AROiZaJkxfVoXL=Tj`cU{N z%{KP#bzZ?o`*qtjTl1K)_CUW~Odn#-XW=J&@Km}QmMm1wudD`-(v3w~jHGw0d0EK_ zh^H~QiTaA}SC3pF+@h3?1>-9Ffff33{=csu=?2f8!xjz!qn-;ZuVzDrsOii==ln3u z1&#bjgTe$`Mx5ygy4L;9S|krw%;tZW5WTM~v>br04q-k2(=QDGc2hi3$@a1<;m zot(O}ik$)tH>0~~cFi%AFv~bV7z}?wlCUF>ZTMGa`1i&YR>b@F>5qY#=-8ggNUv>F zwZCx{0Z{TwAC&x^?IHtGz{4(E)dVWQerQ;B>+qw~OZyiO^y9v+k%|__aBaA6WCsg} zW(dh(!LC&b3L}*_4Eu$~nUwzIDNoDq6~OGzPS^mudaK;_K-LCkEHtc8S@jVyRQhTi`5_&J(x+%@=l+HBe$H11K{`aH_UFOJ`^4ev$kP{nt27oN3e!Kv zyqmpmwCO`nzshCSZ3AppYKP7rV`YEJ!6z4YsAWT)If(kvU}7jbBR{XiDexeFVY(}m zv5-<&!z+HvR%v7JK@>Rb8y*y0e+P@&xyTq~5AU~qy}MAPu(U-OF1K_0&5mjUXFORo zA)K#kw#X2hsn8E)LZ1R>fkUB|1wq~bs>fjza0~aVmgBgcFVfG0bmpdgk(cA;U)+h3 zsh`giutHeh7o3--0QLsc!=3fW@2xAbMr^h=u0Co+#XL|735(OwsJl4Hpw@+gOD=L% z-fi&_RsuQd*XF!PsbJ9`?ffuu!hm%PxYWxZF7-)`52z<-;qc7#=NtoIkRG8J4ilkD zN3g>geLYdQs_$*iw?NQKf=nLo0e^^ZZvDSh(hBMW!%65KRL{>Zgkywo3az zCDW)>-T&gy>P&9EGo5O`m@s|HsO}!DG>ofb!?DX|V6NCUYtM&MJ@{XG$1kL!oWNCI@-=UG&3$?= z!Or3N1vVwlj21Dz(@;(xM!;HbPIQ!isjwUxYbWnXX;mi&EfQ%r)xktG(0Z9tF=XG0 zJRzH%Xi5b?tnSAF8u%fu^0Q@1!@Dr6D}nOGizkvi=5ePZSba47?3FBK+q=agHwKU+ z84MBk8b=BXjty$OR;V?oHxg4gSfN2cYbxS^%TTAlV7 zV4<8l!~(yJ`8kJ&zI@olb9}->T?5A#i#~<#)gQXagn;!c;DEUYwsN4mQFhjk_pNE; zm>GpJmS!M^3E>CdbpSI8EqLFprDn3?ZO->`y`rJnxVp&1V63j(eP=l7^F2@wPQ#v; zEp&EjAH|QZOMI;>k=g8KOCYf-+6s+N$&9VLSb)0|_1fh#FZ8ha#xHhdWZTF{?z#!& zFOR%DcGkmMm42-4Y2-@|gQcuYd)=XC%{Zz4)th=uwz3VX3+#g9&_Q}L=N z2NmfvrBdxu|2o|B7Vs!(e>2jqjh=F~=Qk`Gg>y>t46c*pk0sm9xdm-t-_)eqsSejV$BQ{uC7lTz^(<-ET3WIgA(v6ET_dRi! zTISFDd2nd#5M)t*$?fH?ivo<_UwJPqz_r!=n@p)c>g#4Sy&-2)=rTLlcg9zs7& z_crr=+?evSTOaE~+WYAiw$Hk(Hyt{7$Erm%e<0p+;4UyVizbDVha1cccNh)E4U9qJ znyj>L)v(*xoXB#ej_X2eS**+_;-62MHLN)V>_8Is9I^9vsO7hJ(AvRtdS_HxPB{L4 z{DRT8HzCMu^R#c%T4?QWZDJfE9z5)g2L|GoM=qMDr&r;8Bd_NKeRuhSOF#lwfPams zJ_M_0fV})D0ggfwy=h7WN-?d7`$eYOjblvDo_h6W`p!*^b2;#!#4Sbl_XqGPKq`oT zA0W_H95S^GNOAD7^95Wh@8H?<3+xfqCpMTAoXA(QE|%tCjLStwn5G3hc5YVQg&dyW z-*Y^-9B#E=vnfhknFbux1Q0A~5~fgOI#P4^F}8DV)ta`cnWS6Q?#wRj&jW9cD_kOg zWc>%XrU19tQsq5K{DqfM26{~C8kW2dE(nszrB-dcq&OU7={IcpN#|xM%uC`_yfih+ zhSN91?@%c{xHs|(wCDOzIPd(|B%shb{zEdfF7q-UGn1g6IHUdP;QS|}-~qi%mVU;{ z6v3+b88nBc{%o;B{X{uh)?SKL`>Q_DaC!Kyf`H74nSGZ9IQ_my9Ax)yE7C)erhEq? z{huuj0ci)Om@EkwU9pu{lP#X9$QATg-lrdVpB>#-5{8D3Pg#Z!n&=ImJ|2s!7mZ2S zi3-=T3RRQxH*nX{%{7_wl()9uP+gd$T%Od2xbPjYpefPM`sLQ6&H^QZxN0Bwv$C^h z4ciJZ5VIKKNx4)(@R8k+_t|@t?m<26(VJc)!J=?2t+?X1IX(i{VMD`_JyvvJg9>cf z0=>|N{{WB@a9i303UdB#G#o{r6UPmP0`heVH#aFiErRv*j2aIC&s2!9+1vSLC(W%* zsagNv6NY#a-G(MP1p~(@fn!vw6eKC+s`?~K7bJ0Qbq2~3u-u<@;HqGM&-mLBwdk85h^vD%;IJv*b_F{;nz54Og&)074`)%JK5CCc%}XqnPJ z4**L~QWy&?t|zXO;qgGQUjGnmjSn;Uer!IrIh{u4C+HaHV|j-%C{aqefxULy7!L<= zh}qvy;uF$mXJ(Htj0E=i%Vl|F7Yf2$b-rxJBb%fwwG;Sn^}jxA0QhB)-cx?`FANLY zJn)Em0MkAav~aW<7_wuCJNm@7`4}g7epI}d9P7RJ>mOEwkwRqN#y24b*YDnWkq^}O zU&Aa1$Rs;L?)dQ^A}jm)B9=_6AS{h!XL@X%Sq>(MSgU_KJty)iC?tWb_={x!>M1MA zhEsmWT}LHik9|%6MYj9Vb+CyGCxAyv1moj|YIOtqnnp1i?ury)@-x`1b+&3udLMFU zewV*I-t9#BlMu3^@UG{@h?@@pKdATDk+Wg77N4wGacU~#;HjR&kBW0J=|A{>0sJ(~ z!^Y^-Gj?AC3yO(<*SG^8_@|D4^-cYaoq`ZB!Qc1O6)S%0{W9~nTUo#CGgU1-uKpVM zN`A1zzn(^K?b*leH1*2^K6vo%(dM0DTTVakf<)?b{x;%knoi1K;@n{TiCre!>}kI@(vgu4@?yw?kgv*SVbf G`TqbzHh$Cq literal 0 HcmV?d00001 diff --git a/img_3.png b/img_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3d1e54010b8ac47b96d17ab0b4cc5ca673bebac5 GIT binary patch literal 82015 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�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%0AN|F9DMZf5{V=d4Odo;if} zuy^!k0TwUL3WLR)mw!qVVQd4Mi4P_%-(lQQAMA86tRGS_la+14Nl{RV(Ci(GCxMJw z{f>FBb@|rvLCu!WE7*)}Sb;)C#N0=b%6$K5-fl!U?Sr06VF|DLu$i|*QUEGM)f@P5 zdstJUKw&~$gl)|Yk>ZfM;s>YUL>nsS&e(*txy0ThfVU$yW5&(Sr5ODxrsdUJCN71g z4lt~=%tb8GQO~56@>^mJrEFUcuGqnibgX(vu6^B8~ zYKP9jD)3SZjqawWA9DRUvFmU|UE$i-Ha{Ke2W7r@(9c^ZZ7BPvZ8j<;H`Jk4j-C)5 z$Iv}fn}8h-kze!~hU#hDd7bAdBsn#`nv?h}zhdh*g5okKo92svSO-5QHr+ospR^MA zb(3{9llxb36KwnWs{K#)V|wNUA{^YqVt|{$rx}sH8r~ts69crNAH2}Dg)gkPV<4X= zH#o?7*u73IVb^qz|-wn@KbBr2&!5f|!oHe?ZAqP98>xu?8v$CsvCIOs=)f zI7q(P$)a%zQfvu8Xx5n$*!BWVbwY27d1H4n;7fl^ znpZN#sfF19Vg!(U<%nPi9O&I@O^h=~Pe0|j>$D{p1fDNRfW zg=NilP@j24ebq#|F0wd;1~8<3QmdyJ6rpS6WIpW>CxotrVE3DUSvh-)sI0ZisX^5U zpo~V!uEPk~@y_PEyoT!p7%;tUfB!kENf!n^*-ec+gdoYdKR_37`CExsfu$!q_6HiW$#f83i5 zB`u{|j$gJ>{n9?Bj6|bka}FiJWlwn08rbfO+vA%zz^@A)*Y9f;Ef*^(KXkq1m3$JO zd`{Mr^g}IM_3lnj`lkbUVn-?E&GH1D>Jr7J;0UdW38vMnH_#-R1|r;waGWR{M)$o< zrMeaYtG?!hf}%^qe3FpUPnv4i%Xe*e&f~2pxjwb7{UJSd>oy|`@#suck6{;Ix6%&1 zrZ+DkomG{R`h7zde%>=TQ`M0jPiiW)nY@H?{&q187syYDlQvgQ9GTq9dc|9dX~yAl zn=1d>H4zfKzkvKHOuiw3eeg56voMjaGgtLb4llQC^TC1DO}EemtHs+1)Zx7bj^{Ed zr$AZ>f7F2!cAtVTc_v-`6L{!PphtQ+eTUf9YyHp~9(!Py{8NvAq&EXww^L`>LTWJk z-EGgyuL^t|@{;PsC}aaj_cRIvWz2l@N&8k3XTBLIOgXT4M@K8}<= z3a6%W4i?maF=twRWYefB>VH-AWoO!vq#v0|ip~|=r-Qtl%LnS6)|?PB=~KyKv-3Oo3yyYg2WMJ{81xbH}RaUnBtLf0;dJWFilVR&D!)}H2IUY6Tqoa%} zc4p71y5dPO`M+I>7sA}$2u*n-Fp=AHLRKb3rY{})4birO$N2xU+s1#atPCNxkzEkC!TEMU@QxfI?xRgfGL_= zKQd)o;rd-$)}-_>l`SSXo(`?`-}+qg{EwpM!BBgzpa%bkxu;`?CimzL9SM8d8+r_6 z+piw~6SZ#dn=ZqNj60`n*o?(UD^7f)BBZ*qR2w=%M!)9t5aQ^Q+1@A1s#O?v;_fBU z$HYkY2?`v<@7U&tKhpm?G$`hMSDNHh>0{jJ8)5acO^e94h+sCF{~8p22KsSwui(0n z+2{IRgTH{3>V#n+tJ(aV`zQ4Qp+jAfzJjpV0*=9R&qWjX(ci3mGa*%%&drhSyHt~?F;SIp1!y|Z~ z?U4ZgO{-$TU($WgAv#O5I%e6Am{d_Py2ZY-lsLH~4bN=n2p7z%!No!8F?5IXI-IK@ z)|M_IeAZ4tym=CvEB^jilaUOe|KoVnxSP->{6_!Ph(B*1KB|-GZ2Aa7;DEV zBHM@UZw6S@dw*=hnJ9bP>2{= zhO?KFF$Y@+(uiB$h|M9_qW3g<*eR)D{g)l6-6hjOlvB(&?db7S`lhDv7Zb|@v z;`IFmoQYEuJ5Y4r<@*aBxq#U_x8||~2w$0H(~M+M=CfUI#F)9Hl0h)an3;`@xH@%` z)urpTLSw-1OboT4Y3(a>rBmD45fr#?8IJ)zs<@zh>QCR;Ypiqi(%;2%x&RzSX^Zm!qSj8=W4^|9mIsPtczbzZynz zp19`woyQHE<(4b%mJ^hb4PI^V@73XMr}ynbE~MX%VpH$?4nhRuQ)fCem#|NRmVUKQ zC#lQys8LF(L$Li!c}2xebOePU3nM2`iL?WRL*QR)lW2Qr%EV?TsUKJ$kn?CZ-(T_; zo>XhS6@|3Iwp=Em-s6|`Y=t%-?o)P#;78c@*{ChCtV5?Jlj5GNPq%rlvuc?iQ98*}ofTB?s;^o*_x<7?K<)_66KAJ^QTiD!8Yt-|;W*{T^&V`7wB2Tu%_}Kp zob-i@Rdk(KKe9S1xtsL_)WRZtJ1vP%*^;+unT-$@7S>neIV8MW9@c4_d$U>g=;T9Ask_DK*l5FXCc`DjPI5to-ibtkYf2}14AqYZcncAoS=ikwbCXR7?6W>R&GEkUmb4|O>fH}^ii?^j z%??sfVkawHiyW*abl|OFEv7*@7nUsM;|}~K%bzDLp4l$2H93fUvm^tw3|)Fn-n52k zjuX4lG4;2$CW^}yIG%qZc7>Na`lH8e)V-&}l!t{C+@_T)F&Ik^Yc;F)4&#;SQYnq7 zcof~cHgj$E{M&_%wF;!=Y^Jt|7s-tH;{8T(y8QCnOXfo%CRyk7REdrH=Fc&fOE|Y! z{ef_-4PnVmD0ccOn3&;R8FGR>HHbTAJmjZfF)Jk^KwgD-3Qv)iI(ePjV5R)`MUM$v zX%~@DwTVqSnA~MA!P4B$XS?Lme0ziU_rnlWT90^297QDt@J$YO|BI~Fo1GwK9rVG= z3MeyV3r2s?r|;FB-JR0-DQ@(z7iAtxl_kzPZ{`s zYH~drxzMVpUCzG3M*427x@9iC`I63Uy4;2n1F!b;JWyg_<2kaqJO@K`=d_ZCce=%&G$o6X z6k`IyKk(fNyH@w52X+uZ2l$e>D1`ajw430IM=O4b7NLr7@5ga7Jl9BJVLE!jG$>nY zx(NWxpUE|lm=G?)<)rEN*WWDWy|*=gg^`UMtR+*6G<{tD6dTt8L42y_orw7rBxj`X zNXY$5m(5Uc3)&)`&qGY&T7Apih^wMyV@vt2Mz@{h&lh#{!#^+CIkpS<&5OxGH}aB3)MpQt^Hjc=%IrT_ew;8O`y0J2tMEa z?&28QSR^x&rSfu${dOto<~^|uKdME|qrK#{?oZ(2NJDDmT{DaKtAq3QMbM&esJcPa zUTwJUjT)gBx3tXg3_SiLhfi+hOoksOZ{RbfHXrza>iR^^NXKfK}_*RNYnu zSB~qlB&3RfXA0*tmqT#h) znuhV#_+tUZy0@8GWj(9D8N(l;sU(&MA;ohQ%;kjSZb!8=J>r_;8M_>QcNn#v=Je*8 z(5n^S2x}-5&9%w6r01s5ldD>@wiA3IRQ-d{5s#njN3ORVO-_nG@dcROvs9#bY+`%- zjogLnEsQ^aoGuTPjy{V*^E^s6B=EjVT6raTgp*NiYv4X9R-LMW(PQ7nkB(ks-Pgma zf2A(06E6${fKJT3R>`7jMpLos3)W%|m4)9Q5Ab=xM?IfUJ3e2Vmn#}sO;0Zm0W9+q zHy-Ws$~3|YTJM)FMR++XNKT$KWl5UyOuHP>MUB+=j4~ zy-5dC#Xs<8S8_R+e$;um?vG$Io^lLmW^Wy*m@TOD#X^FXSi` zm^odv62CZdSCM;O*P+ViQ_bLog!aZ;ixBcm-v!}gsOl|;!Yd}vYFDGVijd{j@A-*l zy>fMl>DFb)2Km*T7&mXY$CFwM8CmpR@J~M3cVsp849jtzrz^p`^YcuId6TDT47(Dt zy&OT;&TYRgA5rqsq!)}>+nNUh7Lc8CNoDnVQqAxvaE}-h_tJhvnf>#<@TOb`z#dOc z8?Dx-B&Ff_gj<=Bxgp4MYgRmD>jxnIHCStoD2qVXX;nEpj4GWCjTxsDeo2MpgWzdx z2<3h7mj+e{srT_-=1&kGX5 zmsf~&1-gc&v7<|%A-#lBiobkO`MQ+MXtsS(#fpL%{SqqF$vx$6V?v!zi7{ak#~mNC z^Dq=Qm|C>tw%hk)UUI{DYuv;qZLoC91N2!qFxDq9MQYSq%qXJAknI;J+BpoU_dcF- z(_YF&-P^DqzC^{P;Xtde&fs?#mQrDbQ}sJ<>-yiaRC19SF+Hu3phzcQukCzB{OMhG z(Wpz%tL%KUldqIRd>|^wq0cM;0mq0qAfsQLHzP2#4&^F3aDBFmArIvt_!`Aen!Hc~ zBzQ%Jwe@N};eF`S+L*=2#&>EK5%TKDfu7h?@A=zbfXj7rT%WBNzl7akIP&ApCHD^R z#c$dwuP|4&xgS^`UEJcu@5Vspl=1Kaqs&D=+72FuDRn?vChfzf;>8H*R*rBy?OiQyv=!Y7hA z%U4*QR`dGAe>XR40WyPv#)EgNOaez){8`JbCDHw=diR9Jyt8ky9Eh&i$mq{?1$=vg zx&HOz3h{r?^_4+w{m<7}3$#FhP#l63C|?{(@!$>tYDlr-EpA0Za0nh;S|DhVQrwEW z7k9T7cMU=Q>F;^{+{vpy~I-8Tz&m z`Yxs8Y>1;=yzjM{wEUq|V2r$L^g_zbVUXJq_7?cXYq<%`pe%c*(lG)DBm7;4J+G*0 z{F*LeBdtIEj#b9-C+Ii4(!G;+2#@buB62Gqc8#j) z+jpGWpwHanqx)uND3iw}=q}Fe4kHyPCNW2Q2`$0w!c%g0BccB6duGJ7qvB{4xxYjn z#~5eAADEPn&aJ-v(yjt?eiQf(9LDZjAn3dDEe8Gz!jaT|&_uG&uOa)M1w^bERprPh z`U+hRd!R}wu8<)RYhp^I&+yPSbXGJBTUcKl@&}APiF?XS6h~B%5#6Wts%AxaB3%2m zq|$<(`b#=yDdP-3LseBt?iB_4)IwZfv7_9zGtq!)$3^tkisxQ489wRR@;h9OE?I4S ze|@nwH!RQQ2T?!{UDTSvZ-syt1x2hv>1~ro?lVROaJ9sgltGbJl%^D4pgx$?{BDd> z+sKFq0KU$;#q`D}8E{*#yZPL<+HA|3*`uSQD`Ds_cOJbl4D+J`=*tDiUI_wHS$`57 zpRIj*0(Q?K2Zg_w%^w^h;|wEaX^F%YelzKAXCjRt`?xY`C@pE*vz(jMpy87*L2}UM z^^I4WK~?X+9x7kwnWQf~f4HAtr>z#+&())smF9a}?BT$>Ifp{8F|#(x5Nr%I<09+E1u{I|Uj@1!+$^?d=h7q% zMjEY%8~PO`h6eR=*I~3_nsv<4|6Qdl5KPQu`e`Zq-`)MXS{~0sODkrC(TSOQuvn(y z+cfwkD=Zy7F&-=a{X5h9xX$n33VtN+&-GY?_HN%ORnkr2>3i0|piB^59WJXqZM1u{ z>=gnAn$Lav%3q4u@Cx-)70tXcF-+h{=xbkp9=YcKm659)L@ z@40Yd_T0|C!&N$t>_~*-j|H*K11#Gk*g?)p_9e6}c5==fT=46t8IQo5p~iHD%04!! zuQv*HaI#M4#C_UFQed{xyhT2$Cu7s!p>VC@21$CU=LnTJw;a#V5;M^&hUd9w0Kq%o z`BFDB_6zijN6vzki|%xSU$BRqcy$DBv4ep-BhXH9#HIIkhkr6MK-DhEhym8@$iG`>=d%UTIa-^KMN5^!m9x zQ~FchI&@p*k9^O5rYr>;z?3I6+gY>&cd1qp4jKgD|Owjo6 zokrM~rByD>m=7tiq<(y|T!?$*>F0(cv;WP-TmDY7Ifp29=m@>?&_aoRxO9B@u6Q?) z#Pz2IeK^7LfT1R)5^k5iEZBQrK47YQW#z}1%v?s-6J{r#pkn9l)fZy9MM;n4i?- zM|$~Fq(jnoR=od=gQbU=BW*UHc~oQ zb_Ag)E|B>4@t$|kAqf4;c0-EP6I8!G-rpI$C=h6LbQU(~|Hano!fY*bf^1{>>~Ilx zxUmPdLR85}(td-1iytN3YRPHw*>L`kcyKcHwE0OdqR6dOvSdl9>o) z`X9o9d~9<9bDm)Zj%5KR@$>GB@220>Cf4ubPZX~mN>Z!89%ti5-@u=rY#jK^g;Twa zENNs(Czv_$sYpF%p6@=5p|^1#$bMZ{!uKXnLQ%`_t4r_XZ=ABh*HV-{#8=_)p}dB< zj1(;kNVJgg)0ubc$U=72YW!E+6Jb6}u}=m|(3+0bLRB`Snwl}bOqWbx&26cB??=3N zFS@uDq&m*m#x6tWzm>bU_Vu0+(h1<0dFSo9gYqANgYU~f9#;b5WpVNQ`~!Vx{7)_i z9&=Sls$`tGd5-1k>`a|egkNs6-`yx#nm$Y#t4g#_fF5W3KLgq)m-BU?Og!Ue~!hx3KdEvW0 zK+AzmRp(A?^9_!uH=lZoT$%3hmYA_Sw>aOh_om#+8^3@j6ac;ar*L>%uFaNY16)kp zr{3N8QCpq$R)$7W@lBh77;v_U>Q8#;FuAO?G*sI+PvH*WtDPV0o4@GXdr)aJCWkuw z{io8b+hvK<{~4AO{i*y`uOgLE-bjG!-Cpbck3(wDlWwXD=)GR|y}jV1@tS>8ee}6z zjEpmF6gDw|)b~jsE$uZgghWS^h3=z>d+AV!e{|sr%MrCp9kWi;5Fx6|QS%_B`415# zKBm`}I!{SLu%Wr)q$!?4H*MhU=WZ(2lnJmF1n<>NQ_{(<1ZDqpf_X?5EnQDpK_`hm zb?D!*NdNXA-aqy1|7%=c*8E$^4>M%aY^IJd1wv+ZuhKzW5 zB=S3(UD@LMd z5kl9qPW(vqGj}RuBTx93eUYyPc8dzKPfN)U`vg9Ws)Vsf@8o|s*0aC$7h4Tk zeK>hkGNs4*UnS}g>evW?siJO5gfo?&!QJEcgH4nDa#v(Ve9k1Q~@hauan*~kpBEdh% zX{}IV&Uk_UOn8!$MtR@o+$_3|B<+>88WS!ly8ITNQPI~=qZ~E48BaMMx+Oh0{+>Hz z^%qt)Dl&txl}#hV#*!t`kv0my5c&?$@#E-^`t-))>y3ohx+jfDt)5y>OtQd0kJgL0 zqBk5rTs7lpgueIFSZnCMlJ^iab;ly`CV+Zg$BEpFFpyf+US_!e*uHSvzPd9kx=3e1(FSz|(3Lv=<~}N;+gf~NB`IBACJ?^5QuBVP z@5!gCE1ILb#S7y0jSc%Tnqw*I`LCW@BHBR;-|wR}r$k+weX)UW*o1H9Z%Snwl>BP1 z0;yn!6l;xXiGz`4ElX?vVOk^vcGnG}F(g`OwYs|aT=2yDkFp_--|DnS847>B@_Nu3 z!nQ|Nm00~Un;aoG-&2t+;aOX=h{Lyp5veL1q33rF3iY4*gHCw|RGqDEW0Vy(bGr%yhjG0SK;YSV6JW^Cb>3zC)es| ze;50lB4~gae(5#xWnF40EqmCgw!fuakoo$G`97vb>Y8!h-K6n3z^n4uz0~Tu1+g)_ z=i(|a`MR6e?1P(6oMQ*g3dBzBGxzqKYQhzV-<(7Ku2U=pUbxTHYEcBd2A+P*4Bh`a zSMXDmEGOTQh=x8L$6B%n)y{X6&l9%}}+#_eNA;b2M0c`I%)1>P>+o(%a_^IsBSJ{s@w$80+; z-$dR9Q~6QL9V=P{RwHi$Qy6l~|L9GOgG4o3N& zUHoYRUJ(?WCkzK;MhzYkI!SAuJJSbvmR(2;ryjSAf8ney1+fWX?mn?qd3M~VE;zSP!5XYOfc3r>T7+Oww zd_ep?>MqX_X*^!w!6(+d^69@;Y{Adx1Zjfq@#Nd2H`X>)z1tgQJD$f%uT!0Tg%VoH z9;ki)H6#Z0tuyk=&eB~+-kaU2t4$&cLhefRw+2wV50O?TOjILjKc%inPg0D&q?O{k z5e@zFj4||V4{?t3Ykx%57eZxRnDWr65I}I(dt4HPkL$Z6!3k!DW+~F@{(eVH<#^Og zmqUFTdSO6J;PINzuXA>x(3MU*?$>Mc^;F8-)sijB$X@{_! ziIvzv8$u~vQ#>!5sN<*S6xeJK4)==W)YtA4^|K4xw&+HOA7jXiX3~PGXYx*l^;=-m zoF_srQm9N|xCOt-o_`IZYgvyeyHaKr2VQ$|{L+w@fmznx8hMZSSb5d&m!^D;jvhB_ z`d%nu8_uVE{0sFdPyw8&13a1I7IrOhZAgfI##eg9tv;P7>KMubI)bCZu4zO~KG)Ut ztPl<_0*kt07m|g?YU{5^*JxWqYgcfGVX@nGQ3r)_zcQ1a5gGVzQK>tNZZ8#eZ76ZL zm*jVgmHzf7l<_cFg_*7N9=e;F#AlZ8b>64XQkMBu?bC-6Hd=<;pHEldEw`##h@UKP zp_+n9l1FWm8p=MpbmFA7R&WZSSbdd6rqRoQ{=940DD9X*!7}?d^vz(+urE=!tKZ&h z373Pp3%1TH7!C&x@zuMCn3PwT-Y)ATI7M3{_{N&9^oSc_%3khteXH1lF8@mN{F%24 zmHK8c$mzn;JRK%E)CId%8|kTs0bd{G&}lM~(f^preB4R^(RJABIawNV4s^VXQfN6m zxr)lJpfhqn6pA38YqjK9n(N=Pr7ogm#OeOEBWskY%*Hib@O20S!bxEo<@f=Z=`^~{ zc?{yXE|EVF~1?H56QwWRglGQ5woSdtX;A7^lLWO(Lm{`sR? zt>s8liYL;vd>klGU_Oi;oacA(!(?ima@oA7@rU}5%7`y5#|xhx%nXIofySX z)b()uQBdhlQU57qj|&DBV|XT|b->%4EA`wY{Puo#{^q>>)USC;EW&LIXP7uU<}9a0 zV-s)pwX%3U&dP@Zt8M?ZVA2e{`d8GYTP0QMHKXu)Y4pC3<;{7~>(_!xYCX|o@{dL< z{B7Z$%0^7LAXh3wmwq;b)!bYxhR54jviLXyVXa*6OGXFp8Mr1pF$%9M_i&Z!JdNVa z(^rA%9uAeda}%p-V{u>k%dUzQKT~<9e1D>TKDZ~jOlLb+-I8Bf7|nJbr98=9kT}Un z{8X8(VbrtVFb>3{5>@bS>qT91&^RZi47|B zhZC*k)(|-HVTJ7CgRf?d-=(V->%u3Z$8Ie3sr-|PK=uRs*xeryKP_wCO63w`nvxer zbyM4pBh98xBMc_5)t6?fG&*a3x_F&T)kSjE?&nv%4);Ogk2;m>KwAV)Js(Y{6zBeN z-I$@_)PL^YGLzyuQV>Jk_Z$G9t^J(#&Wul1pMC0sRDRvx^uUnZOs^QsuV+Y2<@is$ zYS9DIoNf?q&07@aLD)#72o4k8J8JCnGt9^aTeLxM@T%^_}+L02Ln@5h4dGP#|LF~-D&nvQ)Q8CLAZ?EMY zIQi#`1Xds|53L_cI4yW@&x!FJ_>9E{GvTYHY8DtnuC1H*=J=!+w5Phrw7)ua3BkjU zBOJ3$9t!dg?StcE`jZ5{LKTKAO&~wuE4LSy#AC)#o^AXK-QJ4{^~H;A=i=eUy3fbw z2TSUNn{V8y?|0NFkl*oK%QBa0M0sf>l)gjKo(DaqP~l_CgciP(f|^F%7mf48b8uuF zD^B@q=ZHVJiLK=U|2%*9KJh8@32A3NIBF2C`@m&_inz3qr`$6)mCuxI~sm#Sw5QAqAEQUi1?F@RWA@%!4{Ie z*Y8ABOf`wPlR+CUiX=PT*5>EJ@>Fc~n8n+bY#H$XPiTNdhlH<*@~?GfcCF^5yOhin zaF>{Yvyh76Wc24ZV>Yar$2tgRBGQ}V`P>AIzCR2)NfXN6=1{-(Sn7>*f1tmI9X%T6 z)739WPbxlRqzY298P&|EziE@>6dAQz7F2|UusA}bDf@Fg zkF-9=AxjrePHfm&u(DYth9Y@F`aC4?_rtHq*CZe>Ame)MjXE@=SeoRh!!BrejXCG3 z1S=ADndY0xO#XY*+bY?!iYT2dHP!AY7zi0<0WC0VNB6;L5G|}~0+|fUFbz}PJiJQs z0&}IESod4$Pl7$^h?#Yoor{}GQdG0|;7-9s((MFV1ykb69E`p5z6g84yz=f8eUTgv z>>0R@uNZG#b(0EhZ6v>m&(550AtS>-khf>63w4k~+#NsmuUOV_`=sl{1KNrq|?5THKN}-2WM_Q*;>h_83t9 zKS*){1T1@c3W=Y%xflb|XS%3)h}~ar)WA+6O(r{ewM7aO2KibI;ins5eny|8O@D#| z43V{UumI0vU1gx_^#y^P|IGx+p?}2EYN?#iINY#3YP+Q5SYRy}rbl$3=~1X%oJ|%? zPqz5SxEV8hB0i}PUk}(Qwd_M5WG>W6%v#aOWhay)5yW=BZ@I*B;v`Q)K>vEn8I_E3MY{cQn5%wKvH9fEYk-RT z^ciQ$sO^v8B@h{U{yC;GE}(<0Lq>thfNM$Lz2(b*tIiI&xR6$mCM&tot`WwCKWKqb zo7a_2#&M3*(U_=UKVV3Dqa~#X(UFsO87CZn zM`#c=ri|Y~%GS~9)Wn*{Y(pl1HB#+?k|eMY`X&`zI!8i=u;q6JQpcHy>V@CSs-iXYYH&*y)@)6+e2((?wq zItWcBEd@iFNee~N@#XO}n!m+R+QGM$hdK~3WL2A>T64OA=o{&aNe6?)4Z|>6(UUH| z-3K@^-|J6GwjTj;2uNt_-9l>;pU>LUhKXPZ6!Qq|&ne`oD>*8n%si_L7$7Rj*)@;>s_CAL9(V%A^D`~i zv*~rz`q0wM#ikNzE@+}G7Omp0dRdaNsH(eV)91bkB6F#~UU|4PIYBpE(=1>BT%k)kI*Gl&5$2#BWiBm4A@D zOROA&oJ$P@{T#?bshxxZ&7=g<4!?0#gVCHtYI3ZxC$fM5KmZW}%>FefOcCGzWc!F!^N&E`I-L2eV+U9-)JVPeB(tQ5ASjkHcoJv^NSPfKh`tj`9dM&LwdQ(#JJ3 zFko=*Ww1&2uc*0~^D#ffT}VKTTpMd!1#f(-IJHvpb!AY2^ZOY3)j5!byLJ0KGIB5I z2$) zfU(SQWzeVCSKs*W&I2a`SRS+!N{2a5!p3bmEpKQpUjp?V_A-ckLby>t)ebeA95 zzf>tn220{`cI=JO_>*9<9#;_ijbWR{z>mA?kKaJuF7!kgUOVhhG8SwP;}N_cl9Yz+ zKBob@l@rlAHAK;X6?jtx^m#MI6kBo>?sa*=Cc_zGM&Ca!{vuyZD9}h0$PFDVGGabG zOH7s0;p_GIt1rYh-&jCd*~9c*hY>g*b0#}#wl22O-UGJtU|(=ezUHDAR55z6p%FGq zr91`pByH!PGOY@@WfeNblAp6yufjFyr6C2~wL5P(_Eho6iXFMh`zJbRH#U9;hmy{w z9%0FW7@lrx%VuN+VdH>Sp8W;1Y2!|)1{`&1P>013mQeGnX0&Qy%Eq5i1&{w^7Pk~3 z@j!^E@zh1pjc7WqJ9Yp9@;DLKtVKPA_eSVcaTbgxy(`bBTBvZ3Q5!mIXtpT-yXh`@ z7>^zP@c`>B;C>F!`r-S$eAIanPR=4Iwok> zhsAcP74N`-WRimHeCMd=O4DY!!@od4hnh28!wkbL31FT@0&9!uVy@@AILGnwlXBai z<4oSZ2zrWNTp67#kgNP(fb{!t^oc7`>mCoKHuub>r@Ck!3K)}?zXMeG{T-rl zxl9wvS20r7Vk;NeVd@zI(7x23;ldLMu1;eB1=41t2{M%LScyx?G5|gN)!3a+w88sA zXB?{%?I*5$zx4hNW&GU2lgTho#TteU6fK>1LFXuEE5W-Pej7!hvoEKGyg$eH!DWNx(#`ip@m@}6BVRfB-`G`sw+?U z-SDU@00?l;-j&2pL^0xCoX>N%H^x1=wNs2~Qb*d#4%{;!?~}V&sGLX~dQN(My+Q!< zk-lc+pTRnnv3??Vp)-=2vfA-| z_W?c$a+_Nk+*>_x_EJ{vlfn&#%bfg>k7z4!7vnpyXrv8$ws8`0?z;jn?zQx_hBwQP7FoIiLQ z-UeT#e`%UU1QOS{QGoVy8a3_^E-`VV&kxvOT6;XGM|af(A=HZ0V!={)VD|5wCOnr( zHr=Am^dfF5aYL!1`k_=ru|90#%9}{`Ev~qS{G9~L^J8W~weVXVdHjLCoPhWhk^gWf z?=hO}0UDtK+arkqLT5*-Ie6-;s(DtwFe}d@<{V8M@f_M!OOdr3Jzo-`zpNB~CFDnJ z-N(CBnB+vl{N^RkwK5Ucc)|fQanA;V+8{3lm%Hz%p!b5cRlr<%aF*O!$tV5kgHI8yTr`Bn{J3O8)UDK1dY9geKGar`gHT*&wHfr`bxBNGw!{m5E!mk;vZc9? zf2C!Vaqz%@abzs8cCoj5UI__+T3p?HO#i~Dt!5wgOdh_vt^Dtp$Bz7iautZowfUlm zLJQ?hbM(dZ<93gYXpzrx1UiI{{2i^))}WlKLZ>hyMo|@yC+Xi$w@pS@7#2(lI}&sc2?;tMz#>JNC#E8^6nuRyeb{!H|E^Ui_ucocbz;&LJvG4c-J05}Ij4;0 z2|n?DS?9S9qvt7{*fn`Tel7}sWyli{KkwBiY z50O4@iKdd^T_7es0sCBQ*R-a@n6|l_^FDTSSzRooGZYFX$|}{Sv{M!%eH37WOJwQa z*Qb~IaU@iO5ag%Wh@BW(r+y4-pOe??4fbe&MCueNtesu8*q z_ROwx zV2P7I(V<@hB`Q~mI0@5s`4mSY8wtT>{r>RkE|Q*F zsbCL02DG3eNeCyg#hIcwK!Gb7^;p5gX2G(AdQk!%m*#Q}IXTSp^3nW$LYaQMiJUIO z`qqP9))}1n6YPWCTS(RvL${V8@h$GOm%dTtGckR=@lesLS%F+PYa9jf(||sBY=})r zq2fL1F#B6Z;4qCNxM`CVMF0n7DL~`Mx8;-C__*o0a}&!!V7pX`|73~BOrpwf$95Z( zqGCG&a4oelLY^S$mOKS5U%2x%zneu?0`A&bYFC-H)>Z>k;YD8XSRv)&wvRu7$lgrn zH$YtUsqA9sM2w4>Bp6d_hBf(%il~DqsmzmtnHyZO$;iW^MupH1N`3&XGmw_6A(>Y2*T`G$30L* zl0aKgc8((S0|&C`aeDyE)R+H3Nz?JSmA>>yzIYqN;dns`c_?hP{fJfmF<|@wuq!RY zo9fFGH1!= zV4N{Lr-hHWs@n^M@3WsI*N%cOK(LC)+VUq6S~i1~MVk5;RpOzm?-ge7|1ak7zDlV5^hv4NHQb+wMMPtGu% zEMVvO+^6-1>1*C<8mWW<_WHVQX@!4sEYc*aO`Pz=8P~l8X6!)uIv$@z*pkT%eW7s0 zXf(#tK-W+_Q^-rTwmwXit?cGu-~WATHti&{bg$Y9m_;}uWHr==3y}1G_v6-c^a^*; z<3XzaF6M(1#v%3JYAfN2u{ZuwAizQ8wJeB`EThtX^2u* zZwl?TY~qb*XaSoRd$2JRAiC1qH>?6#Y32 zMaGkH-evX$xyz{C5`-JkpHjqROkvHxw~Ci#TH@lyQpPbucsLea&NNf`eTgETxKh02 zU@i6YJ3pGywT`hafjNI9b7)3UKJV$a?c*C7R91T}_?ToHv7fF%v1!dU3XwDTOn=jR z`PzR8xB2G9EJ7!1C1cu+y|v1$nT>HVO~*L7E*CBK@f^c6E4yFh(w-lgd?~}3S`gk` z`Le)Mzm=JPeUCeMyb5SRtqgn(1(Dhe#ll1fZ2(aClZh$QfPM<>cr* zm*PDU3G_qm{FtyV_2uEhgzg=R@1L8k!EUjh3?O}54hC=tcrFcFUd+CddVD?5Pg<*$ z;>+l9dyUc*xp*p({bruWhCpcgu=lHEjs3@FXwYRVW~eBa8p?AQsTv7r~S4HUGb+>&_Y?APDh2YmEr^ViBY@!{!aSE`1e z8(@y#!v)4>xYl^J7<8&HB;c^GvMIzUB?Z*~RMe-TsdJneuvlWZ=soe9_VmrO#VxBX zn^`T5u$fpBz0}B#Tka?tfwzr^6H=`vb|B)+rA7}$gpI-E%7#0+i_M~K7C%H5&I zNf%IS74tQUnwrFnuydVjAAs4;lE>QgffU`kuppe@u^c!RKa~mVnevfz6K%f?ge}=tL(i|U0X;$ zMt67jYYe9q`13>EZWQWlYh>mwwx2Q+$w+wqB32Tco(m#gqF?n`IfmYO1-zB?auay0 zHl0<`{VV@j--AqhZQztmV7)7J&|xtrOAwv8B>H{+v#(=F=xJraODpK-EBhxUxsL4) zutTd!lfl+4^GJWIGl7>5j^*h02)5$pS@h*2x>a62K3ThToUK?C^;F7>-WJ-^s*1m? zTVN8{q(4uqm>ss$*+)Bll~ump$l+IrDf5xU`H$#S zaqH?`#~q^!o9cy6;OVfNDLylkK0S%aq08^g(~liRHbsi_V9?Z5Ql+?6gz&y7c6&SvhV=A6LonLW53P%~4}tjFzaIJl;)KE}CA`BGuGDh>l< z`s{pM0`C9qHP?Dg>BQ|y6ssI$#9(0V=MXiTPlY_r~u5 zz2eSL=L|ZuwXksW-TjAy?_UsPNT6L3O?)|(h!_Hi9v#c$6U!Nx;XI+R_-kctzLVkc zsZC4O;_;oGMLrib1R^Kv%gY``7aiBB#*aRwxq%r&k|F-RY^MY_Lzj>}F!r|)-Zh*B zJfDtBjDJ>GWqNx0GnOT@XqiFHlNHpkRQMYqYA02hC;Zp4d?81-iB!*Q`c zU)Yy5(!zY~c$r2CJLp-@rzfNZA^s;VXtOcSPc)JTZLRvDn~;9JOS+=+Hp!dJrQv3J z@u>NejKFCxo&~cq|9YR?P8?W0rDd>1#SN0^bjjN>WcQovgZZ@A>HB(idG3QozPW}k zG;JGvIffb1bHdEdg2IawArSpDoxAruf1xtIsbGVk{n)!n&!OGCUdeTZ!1uu;R4zQ0 zg;F-U+Z9nAJdPpzRu=y*H?=9|zJicUN@(D1e;2I2tYVjrCIcz%ypG4{j}dy+qg-SVe*FcOGkbQlwn5sVCcrxEP!g-c33v%QaqRYd^`s}TC-F?z*2a4fi!PS^!39rzBFty%G!aJ{Le66>FzUR51wF2oo&SlRHVg~b8=#@i8 z7s3G*?BmTfI^jRluS#09MQ!BV{p@->xAyhgFHT|JXPqt=(Ry)HgmXXS!TSG#UlqiR`OAk0)~U$F3;Veh z+l8G%j~4MgRtEWBd#p9ApMNgfE)*4GAa3G6Et`ky4aCwnmI(AIwfUHcpt$tK+us{{ zPJg&H=tXd7I8|Q^^~+j)CjV|Ch`qzv-#5_L^;={)II7x>>&(~t@srcjxa6;al8-J> zUUN@wgw6#{oP*cz#UYZ+0uT=W+;>RQf#(ixk2ti2h7BvHfu^50jWG`E$1qBRWy282h>66pF^Szvqr=$yYA~}s7#PturL$*w##eIE(K0H_; z_s5JZh;6II!&WesYzmMZ&#RMq1 zUzV(W1Ge7!nfRP2Vz%cJUM+bb!723zz{xpE4))ns=t0}qChYhfB)S5$Psj1xX3e^= zy(`=@RnjX5=UhM>#h7wv9@ZAgcTZ5(bo%C>Fo zowcIbZT*iS;^pOl^x)M>SnJJH+35IqvFdsHd#ux>OKC&9fD`Y)q^K7k@htj9clL%p7mwMcj zCaS_QpXPU}Ac3iy3N-0NZV7agN80k=^sw@AJ$v*^>_uO{!Vc-9xK8+g{v#bVGrZ%J z>-F{6;*l^}*-RX>o?`1CtwOPx$-#-6o*4&VsUVu&UmEH2W&D8dpa|`p`E_y+!-ezImL_COz2xSnnI+3;@!8sX=_W%?ThtaCG;bMy6oT0;~N~78nSF>hN%TD%5fIg=6`1#YhJ-1VA5^E zRx{y(M;VIT+jtJ_<&Bu-cgMdSeSvk$-aihvh(#9tk6=eoy=t4dOKnpn=>6|>TyBKq zDFG#~VIh!sd_tyofuq}Y1irbc&`iXL?&;u%=jC;^Rr+c$_T?XY(o2!rcv%&fMK!SM*+3z5ynBjEoK_^zFk|?d@4tZvT#nR;#{2!bDtGoP3{Os6Ufm_cDwQ(D+BZHA8ALUCojEPJ z&#cuhI80mw+clto{-2h3c^E z&z&5r4b_9t&mL&G_H5VTpVn|wT@)_t-(nRE8cAopXEMR^tC!Gc>9|>Y`;A$8$Y@3H zG&%}%wRqP&Jxvp6Wqt2MhOnfwe^cdc8WEA2+B+`LB+BQOmT6Ey(H0{@WI;V z&@wzN&`a(Ocjd`FyBUvV3#)$#LG3PKr-1K9mhbqjxZFPACilz_GFKRqM(^v}mM=IL z|Gg^K$z)e&e`el4*ba|e0$8x#;GkyU<~E`TS>LNIgiDJJzhpUQ?u64RpMQN=e{BD_jBTorXTB-q*qqLs98V>mYM*`l(Fi`71yehT+H{I%sq4({2W!3gF1 zkV4imnbom-z`hgmfuYbV&VbY+4+MBeNh@Tl26^2X>(*C0}%0TJ_{ z8x45AXLn?Ky&KgzGm4C|1XRJOOg%_Xy9HM;GB13d*ePwE? zf|R8fo}fO4UukIkV|v7LR45NrE^=Zfq4p9C7sI;Nusrh@9(qrBWGAv7V38X!z#knG?T*O-HN-#m884_f*!^ zn+TD#cIA5qI!D|D^qgo<-Znn#`_d&{%W&$Y8H1m@fv$GvD7Py0jSW{qRiQ70Pb9ma z6mGTJU9_T1SxE-RWkGL0%*8ALc;04ZD7`#u&qMK(?6L2&C8;Vhm(d5>Z?0d3o zw`-l=qv4tFY`a}6S0o*llVepwNo{8IBNnhx;!qcg?^2dVjgkaj#>g@Kf|c99GpQa^ z&r${K0|PH!K5|!m(Kpz=8E&bfU7nti6kcJjWPaboCCtz9yo+;ta8dwO4c;34ip&Ve z>5wF%D_+$LxGT?QqZY2D*r2Eb0n_#<)r630*OrR`Ia{k%a=j`?!kae3Xz?<-RG5!oj&`KNj%NCBGMU!bK^EuAdCzF;z(v@X_cpx z+@;U1{vtqWNcIu_o5ACKFC-4yBt(^)&o2<7?2Y8K>V7gwNy6_xzLacygtqV!cbcm+ z&@k`0Yov!hSm_6|{oN;Yc5r?0lOWtY@~dKu?%h9gnQO5gyr}eKK13ZD%9Wk0y>=hA zNp$X)NV^_Y$0@cY(mxzgUygP3A`oQuqfIgf+sHoOx%=I&IHLC3R8Ysui?*tBhMC8nb-DRVkIfmJv&xsG*&1E&`epzD`Gq8U zEP1@=%tz|7Eio`Rhq{~b(h-bBddKhK%CBN`-j=_RAD@$xaDGaPL*l8t`eRlH8NV(7 zz5hq~#~U|}un9;pRl(A{kdROcxheB3Ct-Fc9QpSqq(ZeI1zW08t^`+=(|aGWvh7EqbZ3?hmZtK4a%>>Re1dWQ8khAsf&U}l z%(XC0K`v)Q7i z-n(4fa~rR>kXw?Fl*{phh->*|S^9-zAK(gH6^VAeejEKqPT7G;D!Bqfmwtqk6pxg3 zO)0s(8Yuli5=uKi&PdB>ZvT%ZsQr%|oiTu+nvC7w=H0~n_Zo^}+igGCUKmHb^^1|e z7uYv8`aibbJDTl3?BlixS}GK!MvZisRkdSPDT-?CUDeooORO4IiqcXoiCKH^8KYLU zLhZfxh!r8$^X>1x@8>*!Jl}Ktlan0hd_U{@T-WRUzG9aZbfGQ3-bLaD9_{QKJ8`$H zJU1L&r1_Nh0HoKb+pCJnKZT*eke@`rq1KbEM>|bD-YLOIcdb?i(Gt(&%5TSV zb_d5}%7}p7(+0J`a6|$4vNY3OUD1b`19tFYr9&#$T`S^T5`^!l9Q4Ly#-nA`iWVIUk^?W_@DB1p z@PSGB@&i##rRk?REIslPKe5LR*_+)ISsc zC}C-NMYPQ@u+eYPgPWjaa?l9uO;<7%b)Z=77wZ1po9G#V;ONc{2(#}x0y~3p9N+1` zZfF@&f9`__y;nI1PO^*o!Gsc81CGAe+R45oVu~oxiS0%1mlR8=_qL&CinLL(228V~ z%I;;AP3kjJP=8KNhe$#%S@c15A=KT90s|dV20U>~JF=gFJ!ga4_&R%fG>4o|HOs~d4PuVn=bwD& zw-I^$^%fh=<;D+86jQ7O&6#5BT7W;htAO3i8dNh$RRo3tZ5{Dj(q0ypwiGPwNg4HR z6Jmy7*NHhg%E2z=H*3~tDd~HHw#&Qww`k9vKK+!PtQVtyr6F_4V)JitPx3~X)rLsu zHusp#C0#Vv06FEg!b<30(a()gU75_$P2i&fg16%3hE~(s7cNY`h{P#FLnu^Yx1VJW{l;H!{O>3rQ`$V&c~moartT`8I3N{)DEhB{fwr&zZ2N+ zxb(OrHeP;DRVd?sTqR9(N+7-)Ki^|`fZ=o7ImFHc2~#kyaEtSCJnMB+d(W8;-eX!` z`KPbhYbLeI zpZSkdisJfqMNe-F4ta_v+e}jZ@Ki}Y@gjLBxJag9+zC2=U{ErgNaTrtyb=pUIb*99 zqpQ<276xrly;oFyn(S&@zWeD)PJqJ~;`#IEib4FVTVn=jPWiyp(DMuy>Cc5k1J6-o zT`far>2aYuvmty(WN<0bw!l9B12XI5=nGy2@Ihe#M+gSb1w_Zr({P{wDdtmiJu-a- zY29l|o=UVaSsZ=c$}))JI(zW%-?T9-FFtHLHXK0g9ArGm_T&Ul$b4hvASROBZCh(l zcn%-xY;aS1OE!`9;geuXZ6IZd>bw5;EM$zMu$h$s7l4%D;W5L97~zb3i_abFLW$%A zS~Q)Rd9pn8A}!26*p!%({#UhrY7q_u7r6*fb6kN}`}c9F>WpXb8VOta;iU6CySy(a z%_2Q?{1|J27PcDFD4Z-9D>ZuLWpW^2mcSgvG&7Xo(mh>GecH|TLPiDo8_tAV(QN+G>;R2GpOv6NB%rZ@=P_cRL#LpsC#PDT?P z#L51)fB*9RohJ^NI;T;yK95Dp}Y_tLP_#hc8Q<9pl<&)*VqVWiFM5wy39ATq#3iutU&9YhmB z>k7A-kUjo#w&%|W2liwTg>$Yr5=@k;kP(h5(~g#3xH{+)9$V^kC60Ky$Kp@D&O}9F z_<(+3D3qJYtid#fM)*9Ug`a=f`pUK!HXC**)dAdw{(A;f^c%TQlfbPmvglMcqPxb# zyZw9XUpHzp>&hP)-)^2JS?8hq>Ys3VK!&-U{jeI@Fx51U;YQmRpn z?e!7N=;l>+GFNhuFUXDHXFo9R(pol;6(R_+wF2KVvw8nT^yQ9bfN46EVflfIsS-wu zg{h9;r(FJBqC(5{e5!pzk@%pJ{MG$#SDc=K~T=M+3|F z9Y9c2ak5W@!K&~1x~4w_}LrzrhE{(9@zQlU~ANo86-{-H8fUO@83i5r&D zC?mEG;qTm{Cu?W`8}qr{w(35CQjq75;CpIPGvPvV z2?&B&%9e-hwYH?Dasw_t-+L(n>vtp{6Z3i>jP&i%RMr-M>^TV0@lXowJ!WZXH6^cF zhVXV#CT%a_=vP@eF-nHXI>g9m?(466*DCx4rk^syM>S@NA~;-wVnwIkruB=*Cl#Hw zIq>d@nFjY>)(rzW0<%2GBdXI>f%%G{)VsEhj$z3TDgQgR0NG&B_+Qyin&S}gd-Znt zaCf)Q+P7%%^oKq_g>jm#sPtUbLb&wr?=mzJa0hOow1-;nF2eS+KB1Ch7dk$O*3}VJ zmVV8#lB@|5&=q5R^cI%k;wXP@g>3M=$&~z5S=6UrfS0eJ;WHWeX?c&1>-V%T8OeD( z^EAug2oOHZBNWp1ImvYtEM(MuCzQ$u(1{?aHk&w7}Y67$igb2Sm@)9eY$N=OTPC-j# z_FaeIOuLC>O}(!YMb^pR1q8Abj~ivs?>_!Q_?bh zvT<0s=esJ$wSKk8jFxl}+Xk?n|DH6vYPN%W4b$Mssn>&R(CJz;XTsC9c!2vcB23g2 ze--zTc5d3Wk71KzVch_ImA1K~9(gnCt~?tb^+4|Pv`lVc^EMyKYFdJJf{-L*|!pp(r>(i4Sqx$cHEmv zeB(lf7`?F$DkP~ZT62T*Re1!F)R7bPL*d2Svle?f2&_begt)w z{ABK=E9gFv_TRqa!3z|^dP?)8n~91=iyk~gYS!pII;Q19eEeyk|4@XRqx=0*>lS}m zrSLPDu5`buKKWzOOw$$};bm3alaotIXKS|`$ zuNu&)K+Mh+9(}db68-6OxXSO58T;v8ss$SajdJ(w?y zA)Bv0wdk7mfK8gfS{FWH1=;#bI%;cd)YW+B?D#L2QyU_t=9gFra^QYE21_dOQdAj7vh#4TZJ(h~ zuJqjn*E0Ch$oF{#BNv3ym%Tf2sjL0V^@IelCrYxu4fCVQ^X}6a_SlCwzr#t%e!%g1 zxP%b10xKcrcX;$)h2~$82Dd4)9BrEc>w*h?RE?JV$F&$@KgP5`38=X%4ud}_;U+G| z?-Le1m)Gvq>8G1N_GavgVTqXj{U}D?weihAlSqbqvFtNwm&GV+G}WC} z#*QM&UmePU&&%lt>^{YAOehmWGm!f$n&~i`XqXI{x$z1JOZNJ>JUiP^xLUOkDtKbL z8#}t&)HEIJl?rAMIR8G@b~(^&zIY^4IJW$gmsbDmXtBQ0XT*6gjF7gmncDH}BCW*hUTPLPNN7W#Q3%vVIa4BlqW5VQ47 z#3~fYH2~(avkQ3=xYQjtHukg?wm?R9NWACO8f-0Qtz#{{$UthBbK1ewq_}?-D zupPAAV(pOt<|*H6!+x(Z!LG&5$`_`eONiuHhkj^|CY?-gdtTe&iMZA&!E6ytCS%98 zkXY7RcaCf>dg2}CY#anyCR2Mm1ZjG>`rV;@=ngWz=ckMQfkb<~VL^@@$^GI}GDBxr zb1?KORu6|@3hp}I`51^;S4^M0m8amP5R}c!cSnv#ue;WPj>JnV0;I>^pov)397=>fEJ`Puz#&#xP++JG+Nyf@1ow>VCFlrjZ1t4i? zcdDHYdy%Cc|2;AE=rgZV)Q>5Iy?ax{d1k2WP6;ZT=u7z#nTir`^6=J7X=zOfjclJk zF3iaoYsU(4U0YdMC;WWka3@&b#<+{`9{UvU?_U+Z70$B77i30BlE}Ex{aLv|v;`;m ziRlmF>%E%s%n}OPcSQQr)-uM3#+s7vSdox9_ZA56pLn8~>wIn+xgaeufxWs2AV8w> z+4*Z0;?I2XEg|(oFIc!O%nd98z+{AchxI8j3R1%HP$Ey3YFzv8KB1AZpIg@Ma!PVE zTXowU)@Kt!-QlBtp>;9h7NBjCz3FbyZWI4A%e$lSsFg8|)%*XE(nI?SW+zU&K0_)90F!)nSQfymi z`1_4PCf59WJ(xdjiw-xrl|vqLCtGT9#Tm3hxd2X#@VDUhZ9|5*GQo79I74IIoH8I} zt|%qg7xt>1f9jLLz1O12Ujy#dOHK4>YO72K8#?`gj6=HUhE+NO-7~$V){OCAl{es z75K{(%-{LI^0%;pqWN_KZX;jOU*`pJ2~vVng_;XgpU^3H&xn|x*f+R(x4CX-h)pt=VP?nZMV4%5>It5dH%Zhzo?)SilQ-GU~ z^H~_2q{Vz{w!a8d2k%-E+viwF-2ppy9tf6iJ3oMid@K8d;H9uoK#l#Xq3WvY!EX#1 zv>jP$A|+p}39GS;bBfLgJw>gTyx*ELSQD7{KYIB?^Qkc)wOy_(6GTRqrtVqRoQqm_ ztw&M7G+PwVhMP9OdCxjHE`lN$`f7T@#!<2C(~z z{gjh)%N-O)rrs{m_9ESMG=sSo5#rg<2i$-9s&5>0>RG(rJ-t7#KEC3XU}KTc<#t6& z-g9)Hv^o?QYQ9YRz#jq#|YWGPsA{9Dn@$s6BQqaqesXWyz8hR7xwd0K4u~C@E z`bT>&GzdW4nI3f@~f@r|!*f(AkTu8^wX~qSF?(EE&Ti;$Qq;7^7*W;&- z&fqs^&ba4-#+rjX=lEYu%?06I%3rFU%G7#`&C0EwY-{JpUZFV@I~wMz!{$^=0tRQ% z?q|fRX*sJFWBCqqF|BznMG7NqJC}SH>i@fY*eyk~=|~rmU7X>R?$6*}4n300<>j-D z|G{>ZGxWpy7hke%*_W^WN<1Ov39UEab~!&B&K1(?({3&i-)gCTfG`c>%{Pd;#~eo# zC9^h1W@P-?Xq;bc>d-VLg|+8(ubQ&6_stK~2e^O-92SZWL0+0cU47k#@ukUsDitjF zIesb$I}-#dXww)a<~0@`AAcHqQdny^vq8XAFL!@riv}vDyg$3|@V)qQ(y~6+$fldP z7@uGA1t66IU1>oC1{#bgkEIxEI{3iI*3JhqlL)%Os_ZtmHkWW$$Mo>joS*ze>c%dg zTlz9|{;@e{sq*4p4*ju_1c2&0PSxzldXBA;>e0V8jup2mJj|FsY|cBpM>RPcmIe2g z91P9k+*KKxqhH|unGgXN?%Ds0OW(ww-C?(u%NssF$dkTu+n&igz9vhLRJNDOJyT94IVUCOd^^!p)7N+z%;e_k#PohSPY zzKK($qRl@$8z>z{%pY10ogG6q2^`h%(J(?cd{3@M%oP<;o2$86?XLZ( z5DRXr-th3ZYl^V9xaK{<&GHF*@%R#oQo#ofz2!V-!yC_C#cw%wHBLF{K&`H3p>|iZ z5%0m-U-GUh8!s7u9pWV!548P-m1czF_6TNZ^f6iK;Z^*9vBsh9RP7bJ&5{O_&I77A z1A0!E`d09P*x#2`Bk+ST&{r8)4T&nvIw-N3y$sP$jcN9bCy#7YFXuTTttx6eqOy zoH=n1cDBPk9HIa&uzTi18W_N3L4DS@Ws|AcE>^t5qndQT6*C6D?nZi6fHz{%O?_8X z<@*NqBRJ)vepVJE9QDIRcRBELZjLT^68*Jt;G2AzU8_b{_wh~kgd52n7!Pv5F4JFU(9 z^kqA)du<#lZjBkb?)ri1bd=PC{^l@?J_UqwlI(OFJ8AEAyT9eJHI{}t0h#9p58Mq< z+GM{tAT+gScO5b*^@Y$&QVp#I=$O3t7}4tUWO;;cQ_@>5KYiY=&rB+_T5`Lw>ka}M zYNkDvq?Rnv`ANcTpwQDZ@)k`Q*LniYf*|((H_-H->uazv~sH2Rxz_o)h3BQzs5DrSsOg(@fwqJF?F6d zo{bi@-9e5wwoM54wL3q*UgeIh#oha2oDT`jwwNKt3yMzaw@^964<)e3$K5kkU z`;zX}-rqyFj~Hl;3)Gh6nsGQI$Hu9br>N_hy)5p(Xr5)RusC!XxuOXYU!@QnBke5q@F9V)p628Ifa-Q!-&;)`%Wv-=38^N3 z%O(;slQmcgiwV?r zfZ}(Ca%)L6`VxdkVX(h)<$GXRFay;O(<~@!zTM5`++0zaCXyh3mOQ0(;rjwQxcmnB zBd+(cyBSN^M(>@>;^i>Y8o`t!BdT-Hwm7mg=d$F*BQi^Q&`?vv^fdbjC;9NEaU#Rg za9vKO!pE29S`_XTVvJAdI{1=JGl^3=L7u zY9vrCBDK1AF;Z8n-u@tw-@(tW>P(Reau8m_6C^GMgOU$|?lv82!2!qN-KjNpgA?EY zIM|_VM6@|^|63Z2*Zpr~3sT2Ya+O+7Tl&2&-K=DeCmX4ICRgTY5S+&;J2SQpr=pqZ zqD*U;t69ejqIMP2z%a9QtlLN=E2XVw^jNN&1En|J&A-4Rwya9`>FT(r=)Ah$% z8`vhA0zp6AyNb!e%X+6BsIwmt`EF^jG1jAx`B?IHtvo54BY6bb2XWrB+hDTu7=7nf zj)2sT78;HVZzU)iT(uja{O4KVAw6-#IOpl}4}0}{m-GYPCYE@#d2z`f3L&Km3>{k2 zws@{Ua0~c%Q3R)hVwa9)7ZWE^Yu5NPr0bPaT;i_Bi7&-20`DX87kg;rfi(fse3|-I zgsmZboIDKeh81|uuYH+KoR+;hupbVxy?D#%GFd=)`7Ujet#!~~>M*lC0{-IUVv`%= zAS<;TIUP-?)Nx|3f|wtH5+qd!!NV|xBN9U^n8!h6ne-o?RznD_uj9rbQ1E}iH)9K^^W)i67qt4 z78(Dr$rducchvDo?N5ASc6LjP538ubhU7=5NO}zoahh65lg9VD0Jwsr$PzyhyntM^}RA@4PiTOtE zIS^sD2)KU1bfGnUEr*j{?Pzn+_d8RR<bcsraa_qM$mjk80pY?mPKE|Lx#>*g|nX8O{HNb;IOgRqly z=T=KAgF;NczC5zF@k`1j82|OP@ed<^w@zY}0()TCmwP@vmjcFY-J><+83%Pk#?uj( zRrj3+aT$bbk=;)ZxgYILMa#K3D*d@X5=5?>6fS+<;sIshoIx`O;CG%N%)SuL&yiq- z5KIi12HF>{-`IS3)>U5OX*@rTKglP%9cgQKbnot7jNI`iB~xlD*e@WVsv46tVn|Ts zTE(X?Mx{wxO9{qZ{`u}@5^!o%cANY(U?(vg!7NL-ec~LXWN`9lJO_fF_KC&2m>(`Y z-JWp~4UwRg>StcKm4Mb{11 zaCL0j)TeFGfVf9#YbdmQ%cZvk09Y zGXx;F{vZU<#IeqPcctz$BK)hY74OsJq;#E-z^BFx6ih>WP*UrsUlt>_k}QAjF_2$v zOxhqpxGJ_ltob^#M&FS_nx2IKAt5_fXd^6;L};t}K?{$wX~NdvL+6m7hW@9h#P8up zwAI?wOP49-K}3s-)?O5d2;x2X!}``^UI-DUSGwG_5|KhrKj4#mtkeQNu19NqNdEpV z%-3Ivc3|ut_*R%Z@_Q*+0EhAbhm`vpmT}ck_|3~d*1%fmxN`yYqVDjM+vaR0qB;We zYf{|u&4hj?vQkO_Kptf3c&bvMUlpSzLty4-*!GeRvYB2 zWGYNrQtUe&_(d82Snj8-4*izugYG)cJ3K}oQg!Lv*hZx}W7z48s(dM@15F~&=j-J- zWM?j3e{o=!^{SwJWn8;V_{LUl_vM=9W(cah@pUr|TPal%{J7U$rCLz3kxgKWRo;3{ z+!t4v6^~svppmBuBDeSHBX!Mob97=0rCas zqBR12uTqoXxmA6REPKY*JV+K#no>WHWc#_x>tQiLC-p@QFR7$IQ^2txkcRn1x)QNs z-(jU~4#xi6XK-dh>-ySZcza(2q6!E{L-B$ZX^0HmRLcC|1#2XJir~!ISppHnvIpK= z&{?|pzD99Ww$u{FX901YIubJ8zA#=_-(gq9p9~`fn^1!Gtc)_Q%^!2blY|J#H!DJ{rp@wyf*s#5SW)UW8+#H zEtROrfI{L%$>YhTAJ?4HxPh{s-4{qz(D{D%?(-X+2)~%}b)dvFXYcIXRXz5*`}vr~ zM-9ehI-y@m$Q@@SfSA;YFxyyn&zsDd##FdviCCQ*(z0dFyX$<4O~Fo;){gYS;09oHh5U~OqCpVk^@ zPUbEEx#oM_Ed-*Y!9q0G$4fL7M@G0E4!^kzF*-XnpJa?9meML(Cpi%a+fyqcObY=T z1NQC6sy~4r$mebwx86wvrE<~7=dK`wg>S<1eL|sTIP!ze4;X+3`U5i@JLM~-EJ!~Q zx#?Q$*>}kOQ+JB}{NLjaens z8{dD}@^qjZaQe_oR~`TNj(Q%o;k7i;OY;k9ascV>rMpH0#LW&Zi})ZC#|wG7GI`eAO1FgD-#A1cogH=*T!A7d3~Hpp&I0lh|}xix|LQ}h)M zW3Mzf;}S@cb4TGWw}uhULxLHDn-+V>6`zsXmRnyYGco&g$Km?(J?07v7o&-0Y!c~z z`=4O1oz9~DAn(qFnG-RXu1^9V@l{|hGqlgGrV)JVo6I>?*NL@dMHOC+D*Y3=eZ8(_ zlpelCncy>&@-^1ArKvhfcwF?85zNr z?WinV&draErsy_uqjvF5<@1f5*1nG4yUmg#c=3!YP@@&>Xh8svM-)-gm7-eHETH(o}9!aP2 zv>|jI5Ir>_&@Ih_s%_APnT-~0D#&p388jp{Xs8)!Db$KVfR=8ZBpNM#O8OKw-K5Ez z`_rM7Q>3gEsiyWu|AOoRak}PRS9gVZB$61k?-=cT+1sEtb;QBN(r7geI(M$~A%V`! zrm1W$1BQy74i+`{Mtvd})IRYY@RGHf@fNo5PG_x=mZmNBIKbv6VoiY-qEOfNU?OcD zNEvw7?ho@i^E@*iP8@iN=wvcjU*cu8@baoYJC^ER!6~c^Ks0YHtIm{$miG#xZnxin zO8P^?4DE-MV>CX+m2)`CR!XR@E2~Yzdc+SDBlq7|z$BL`U!U&eBrmtgx;OdCFlAs) z7VmzW%?qEq@!e65)?lgnooxOC8vpMVTa6s9OpcC-Y@v8j6THgg;iiE@JhobX8pR`) zC|0XD)g^jR^OpUpXrjWqCeI> zjOyC4QKb(XFDE>)4*Qj7JN&q_f=l$p{o1tRtoxDY1IPsmuEdJ6`|T`J+)gC z#L_tD_)|0h{+-UH?cA39tkPVzmo6XBQ=|;zcdvv>kOr|D{7HAj1g}f60`-vopXr&h zjLSAw=i{P=B3O0J6w@EX@;rh}D&&4Wui{ak>2s}*085>BEzQM0-O04e`@tokg#;t> z1k82xGy;$SP{oa4B%dYyO4>4iI(6N%~!6vA*1kinUFN210$9=z&_*kU~+cA zfrKDnzSmF7yJ*d(+2Rwp@rF*VDs{J$ANGTwHJ8(nO-#(3rVBeSG|cp* z%uVsdxebk#aP$|nk4jztbEn_ydzwSP1h!Q5TQ zZR#@L=()~+gJ!qy%!V}NnYXPIJCE~J+}J3ESUIIwy+qaqQ&+1A?t9=|m-f$%U)U!8 z9MVz)N`1rmTWcmexWVc>#Y~qHxZ9wOxqhN1>6KFv&iKQ|bzF1RLYvu1^WP*D8S|N! z3;2)-a|4qFe3XIw6ZU}9k`tZEnSEBuVd~VV#+KBe98QyJZGTBdBWm+^HTu$v!yOsC zO>>0Co#5K{@pN%>vOzf{(hn}p8fP?6%`KIaX3}+WURRN;2~=o0N1YnTM(CWwe86*Kn46arBR4jyb(uz8DQCD%SIEasGOm+aw-;#B#>*`?@h9E4uvXd5W&V zRTl>;Vx4B&so+WHO+a9F&cDv^7q`2$LN+<#7|z8L5*Xtoi`Q6TsFImT= z-ERS_ka~T&Bl@?1ufpn|l#rO=5H)Qr1tdvtTj!}XAP_6#{%RJ;`fCK5)1h94YZ0+f z^m;4Jutd4pE-eHDc;8Z@^}YkAew*XeGK}~(pA^dQ;%w{pMY9)+!d#$SH4do{Z`j&m za1rcN)oA&70FLE5My{!At-8C(LXyulUhz=@wHD#tSDd|>LcK(3Wr89?Dwj7)N%jTi zt9#tv>Dq=Quk8AAtoiZvBe6E^3bNpAwM@BZHQg7!f&1?*uipGsG(EQa0~yvxI%jjP zBL>=aIB^MCFzktXquj1+Y-~b&;h`<9(7tct4%4-Go4yK{O*G52fS0W~a|mKVKKJ@mcMB7D;8Lmir8lVRh*|^axb# zq&>g=p~KOxYe8ZxU7!K{fz$gTeFsQjB&6jv zG@`AOrq^S()-UC34=O5re<@t%$14P$bAH5pN@K%H-u8FSJWG$9EX6+Po!y|L#{Pi6~Pp2hr_61sBtXw-i ze1V0R#892u%d3t6J{BE#FrtcLBJD@G76%I};v+6G+5B(cvY7|YG&`4X{WpQt?%pPX z;lRBz{#$BTK9DG@!5GA&qB&+7xCNzDnlZ{BNH(9459;zZ0&xaU9T?fkHv=NPCihW# zq^K9WQs_&e<}T-^y(aql6aGG#-#yt#qDEe_&)$*~^FsY$!Lp+pO4<^q1BQMjil~qn z&4%Gz%FCJ$EBeAJu~B5lyZ%0I?JXWb{%m`bl2CTY@lc9KFqmcK5l9x%~j~8cZj1M z1~l!Qj=!(f19Q_7k)+vrL!$JdZguGXuIEVd_=(N{#xW;Mi;4_F5jrmn!c8Yq?uroa z>&82{2C%8!QI3_Ov9dVe+;ah;EKNN7(6~{P{i7jmhX)sPm)@f%zy6nPWJL&$2=(L^ z%9-uT+;1TG^q5&3eYbhP!x(NdtBaj8iFng6i1r+J|6@BF>MpTNDR63kh}GvZiDmL4 zI`}S;REY01+?ScknU||^02lzZBOq+;07Mpy>v2lz4`&V&KP6=bKXm3=q&!m9_owK( zCvv{JsKWBY`lvg2mX^Cm$zzBiG}7;P@*iP!G)&R&f0 z4Q+l?=2A@cRYnkBwVVsfF4#%ZljnKI=Sz!$l=a_9q;~()KR^WHboFQM2>`LpyKRe| zDUKl;*2O4LZn)psL4bSbBGA2DK~InAvGer%hzJU&90_Oq{|!4V83>19()%1x*I<8^ z7?YBVPh1uZyWu~NYHu8*fv!9o`>m@QTmIE=ZnU|ypOp9XYAV~SlTo}}5CKIuY> zg7ArG?%GlR;w&bG$>KwRMGNf5)hn$J**WV5tMu`*B>VgNw!z?m&PkyKN?l&h;ITh7 zpk2-WZZiLzoE&LUj!NK%VyY0#*(|;#QkBDx3?qLfyScTsUubbb4d@k4fbrhP1YH8~ z-xJMR!2joe9?vA;7z{E_9tg<2*;gZzG$1qje$r@goe@FfJ>;4#csgN7NaFqJaP1&P z!6iR*-&O$8U6Of6DX?s26+fCTPyqggta!K$=xT-^4F|sQ`3+dCy?DP~B4^j`o6XnB zqY+~7Z(k95u9@bFQO`?$4_fLgvt1BpF@E@jG%%C|p%m!;(z+!f;HJr>XB739WdjB$|NovR z%*!v~YTNI{fgO9iW^?a2=WgGJYeJuV6dzTKTL^rhj*drui+Dng*KJyy;fpn8IOt^v zAVZY53?=;WhbhSc$=bH*!k)+Y?BGhldw+%Zxm+869m<_;#JFJxn`Iijc7DuYw>CG+ z5CL+telUrD&7|eH0mpz#y#VqBAsS`dS2Ij@V^>_e^+J=PEo(vZqA_XS;iOB z$-rx?H0RhQ0E^IxdEo#MlF|T8*arI62K7+RCozrMF9%XH6ats`bWNpT*ZH4+O}A<( zC9!zxlB+Ul*X+X|mYD6DAZ1ZBzt|w$J5RMhGEB1ksdXB(Zmv>O-)1(w(rJV2yr^Y_ z=?6LajakkyrOEg_trapGz%BMqvT^-A$o5RmUAag`pYxd`aC#Sne@@CLz{JQ7dRafS zey+Eq0X;F_T)$J?#<$a7r}?wHKL0VoS+)GIoca~E47vaNAPPvxC*NVcre)JS_PA8~ zzAi$QDZhE>#sBMUA+h|jO611>VdHenGLm}S+Mhz*GtTyj4>n^yEu5%ST_VZZd!s)=Rw2W*0|l-=fd3MKpl<3FU!Nwg1xoB0pMy3(lgs5e>Ip%dg?0J|K#Vy*Y^EV zA8x8(R@F*jI_gt|LRd%;ho>*}#)5yuF3(Cwy!%L)>{N;%IGBQrcaFCk= zcMn!slNMaqqkaKmHD?E@;IUDI^v#cA<*zHc|Bvfgagg97}dJDq#I-!e6R)SO=yz2b&>dFrD#bD8zYG* zbTV$U`2*WzT6Y7@(sYg|V4P2nEtpRY-^IXq`3oCi?}B;zZy1=}Sw8%3BZQ?@R2o zU1F4Awy_f8>E2&Ru2x{w2WI&3a{l4cQiYY{M8t>xrqC_}P5G2Ad%pQ{iA&$5`IMGw z^WlgQ=LX9!GtT_mF92okl$IXg31{(yM$THX{t<`ZF~C_hcy#&yW6IQVraNLR680=5 zMk16s9UAe;iQ(tdj*QDI>-c)9l&^ssuS~^VgbrSrX<|6)L^j##>NFS|Jhx(&hk3~_ z^^f7Oj2x)t3;bOz9UpCK-;hQ|F#;8~;TBtLBXj+O>=i*eouTVyVi)#yK$2Bz>f zAvuL32pf=@4qMNXO&X;Z&hN9eY8S1T2MbdtCDqegQT&d_2ASqE&S4~9bF#)ypU}6* zHoag9?pUR(&GgT)`Gh;IRg&2cYUm49bIQlHU5)EMLI^p9D_wr7b#T%q^*Z+tK>wq) z%t%R2{7%GQ-LTZI<3icbzLN$Dd|BgXy454dQU))X>xN)imPh}rW?Ad2owoD=k2SJ6<0hhw{3z+lz!!?l;P-0C(Py0nPmFTd ztk4e{@awTfMVdd4cZ#`DD+$lQ`-!Ngur&)`jv!#0pHa5=)VfRcG>}|{Sf+&{K>o2r z_58q=-kytn)xur&);t~;{jAr`~OmuH278n;w(EB;Ry@A5xTtOI_kQ6y0Fo^ykltNXSWPbBuNkgh6?XJ~BlCm*j$8TtG@x$;9UQQL?AWv7 zdmptCVJG#YeS{Uz_nrFE8GqmeRO zs%T4*r8>Qku=YG-e^`s_hgRO>WP=59r;oAQC8dgbCNM#@F9Reb-wqK(57Ckzd?XAe zxzrzc(C^(nu6*4w+v>(0zec=S{9%?15(3}If-DzW7Z^Bom5jZc0%XFum!@&*YrYL$ zhSfWTPnBCIT@XTE=n8#N+fz@7Jr(-a=Xdr@2l9GO`X>wcv$9iVeRhS5$y<)IMTCJ79`~B?! z3Cm7wW~<=`@FM7x*+>7(GnSeZ9&#Qn++v7^ylGTysa}jAj8Z3Vfs-rO1U`lfan#m;C84VXa#tNOUw( zb6%YYuq}%SQ2W>~zT;8fhO%wf4;or#J5;qArni3VgLE*=dK3gE^ zeH^BEQl8<;di}J@)g*(V-^rh$oxHK)d8DF<6|zOkVts8DsO<%{TDLKT$R7FQo%5(t z<}-jnI}>yCZ|rK2hfdR?{pDJrQ>af~g3mW6;giK^yGn~@4oT4am;IOz)=M2fe4HGb z5T(9x(Ui+5$uPhoA_0n$7>`6;{$m-k?-*49&Vtgq*y5<*j|tT+@w?rxQTTvi1p*7oQ<>6tUu`-n`{{ zhi~R0(GLiFy^NH8Hy;J@)KQuIZP(_xIeVdyBivYFQLXie$HR;)sBoa_bdh;Ko<);S zhoOFyxCvXes;DA3qe=>FpM#fZA%O2bYPo)&{ip4(>Z7jv*O2&Pj+oyy^$s3* z7rLsd^}C<4u#VM@|Kv%Cl~1d9lQ}Q5KNq}l>we_%=RCEa7h^O{wYY(VT>GI#`Ux9U zsoPby6A#k*+9s?wAlgx6VnC|KjMg_xZM~D)X39m-BG(UI!#6Hn;;zn z$<6lIX6RpHVl>l>We>x>J~E#Tu_QP64;Gv++xCxLyJ8!R_Pq}|nd#7tMOVzb>E;-` zrCl=i`aNH=bKKzhtBrXECUo2EvqJ)Nf9dbst;&?Z-ESs`a7WVxbbndvay=q&>DO(y z$r?VZ6PzJpI@;!ByF`vOelo{@av04A7jHhKIsvSn9l#=-RL;~|iJ*dj66UMT5^BZN44h4^V9pzD zHwps^Je*UFZdpMGqkqOO@jeY=>S!uJPel1{`@Dup2^spToHLgoHt+9;7qD8XAh#t7 z+V$3zCJ%5ZD-}=rNb-ZH{RC+-{d0f{?ql{ps`Uws1Uz{+0aVelowO_=7<~yo6?
I_XJSL4yU(63&RONV>`a( zod76L`r#ds035E5bNwH@AZZw@U{sz@8iSurnuqd0ooj&2P_?A@Qe(*gLfZ@wVu{(s zdq&$KQYy{bm(LxnM=VmN4L`C+@3!G3?4R9QwvnMnil;~OPeBDopG>{+YYy4@S$t%0 z)Il&rhSuFyA+JiPW{3FFW?Lbt`r+Vjv&SGe0QRI_>Gx`6Ab#$A#d2#y1z8cZu$93v zTdyf4Q3w%n(B(}mMhNe&6)xXDY#ao08wgr#K|`OQYB;p_%XGWTBUX^KI-)voc31Zo zCLFTPIj9TL@C`)ExG9SkVF7_??O9H_P{CXYy+}+cs>OH_$|heo<#Z1AIzcR28=5>C z{4r_Lf1B`7%zQ&bbrkFysmodEx!n=(ZB(z~gSIRW-DS7eWtqp5nYMa%_;weJE(eBn z+=((lfX26{lf-w{XRdJJ-2o7u`Mc$J~iM6*HZo*UWRJ`r_-bWR{Q4u8_frL4+p(+-n|Py zJPiC&P>@?u!Q!*r)7q0R<-OfRmXErmp+Ux194emuf7mqcO5WX@@??--)&!(|>qPfLpBLjk)KoKE%{ladC$bq@Q5r z6tU1Js2uvbSqbCqMoeue6UMxZf(R%GJ%pw((`9tivg63>>v{hr0_- zlvaZG@35TLYe-HIrS>Ft9D9_=+KhrN@iN;lka8AgERgnV5%Pf>+CES2fty!tO-%j! z(8;{2KNsSbpRU0unuuoAS|>3+_onlzq`9m>r>y`96ftapGJf$RbS2899=O?ig8Hb*a;ouX?bDS$e0k^?n3(}C^ zVN}i_FZa8vt>m4r zyuAlxMW0aB?lpTr-i2Zgk(rkSx<$gg5mVZRYn${We9NFhC-NGvRGx%0s2<(5 z+(t1Fj%RZQho)kVw(F<~kdvH>)!e$kIY-s|IA%v+O|k0TnTiRLm&!y>A_`z)chtzq zhbUAapJ(Hh)@<txmg7hmifqg{wMv$%rVo!Hf(-%P<3{1fTdv= zSV7jokMr`2I)tNVmOFk`unpYwnTSi!9b(N8=b)^}qh|q}7p238y>H({=9-0MZ^pzC z@|IjsL3)=gRZeiA+n2ap#X(pmlH^)84Nx?$!{v0z(07y*{b{C`%Q?31Z2FUaroFxj&orPAK3|56 z`~1RU%xUZTY21;<^;^gJ7qYYYC8K9g68QLec2Z8fpd_3-+}jjK-n&M6>voaf+>{pk z^V-XRqyXH*fip)N<3|~jvW@R8UmZ@~9|n6MhL1`HYa~)J9SXToIZ6jsn`)uGC%fe?Qcm9T6B;3l4< zftb))!f5&#iQWrM>FV^Hc;~xL?(V%84*CS7aHmKHj(zd7)b+8audO8kbbqs-r;o;> z3VyXM`8hLp{J`YmciALXK*5mswW3|^b2;2HHOT&&u?DX(q7*zG>on6$YGWWCm$C2Y z`7xc3$@5XGcZ`r)?7ny=>@!!d6wslsdF3yn2wTj5axH)OhD?9y z<~2@60Y336+{M#1WL@&3M3axRitr|afqymqCAjG68U?oUJin=SU!D~vprm{TdnmKF z;E7haK;*I^_CAXubN)!K#>iW(8-v0+^`wx^a&cJNZxc?? zRAs3(2wZ7-oTW@Fd6hA*%PhJ=IetcTamB3@sTP|3kg7Kc8%Y^`MB||KBu-UbCE<$X zC4(1VSDSZpri8x!aU;j%bhOhHH^|eC zC*6h~{Fw_XHYqR;tKC%@R!Paeh;{9d1+dL?gPm2`*00k4Jh<4x7w#57fLmp$oCn_R zChBNcsifAF9E~^uwlfPQOLOV zfoS5SJ6!W@rYp}eWbnR2-|ryAD2X6yj) zQ?o#7dEj!o;}abUpeXFbfyq>1q`!0arcd`qOc71CdUKK(fo&qrc`(iWxs~|z9v2WR zVRo)dD<=(oLOpGzf&k~f$7-A}ebvi|vZ!{LD?`rAe}r(4yjKj1t&TqVEG{-~t~fK` z$vg{K?WAYGEOq66NfQ5JVq1^xmJ6ZBOZqfJ4ATUpcK!&f%h(7{MSe9E)|AMeijy&W znBA|p>|?d=8I}hCB2x+dVPB?v+wS4r^{o25bB^mg`@e4RxT23fdlW~{g)RxoUU@4D zOvp;|d-Y~L%hea{kRZm?nlYVsIWN+Yqagsv4{BN>^i8aDAIV!H(G$C0*ujbWLptIK zP9JBQLXZlDX#z(8wPrC#@!|mn(UDc-GMS6KS~h9F894OTGn)L)rB~H=HAw;M8TvaT zFAi#a?*Q0Kq(+HFfYE1B$MV+}P{C~|HTI63qEo=1wAD+D(Un%+Fre04pVi)G%hns~ zWT<^hb+z{3k+0$eW^)7sbO<2W<;27|ef*L^TARp_@a;?~UbQn5FFbM0a#?#kMX0#& zqrTE#X)QHuG0{R!qSBNd8rJ06$jI;^6-vLzM(+OhAxZoZ1Cf5i2J@!8oC#101#a`4 zUh^d7++Uk3XI{C@7VN|2idMuA8fz>48?EnynF%YmXX98Ih>rfx^w5B9OMTU`LkM{IGvF$4JO5b(kfDH) z8BJWdvZoE)`Hr6GAbV^w*{jVc1h0_$;V4 z0DyNKO&(_{6r^@4jBC{btIy3KnavTVc~Qmc*k^xCZmrfs{KV~83yREapV&=|GA%p+ z2=q2Z5MS?dD~-kdyo>V-)wJuS-SUgpcxA0IQL@pZV-q95YXCYheh30vt`_{Vjevlv z65P5?p{LIu*6=kQ8yTO&bZhtmL?yYK&Aa92Kc<=nl=JJXyS_MCMrd;`16G3j7O-V& zx^$dW{Wm@~-xeA-J+O;wZWuF0?DVhRp90({QT!%4=lAqtVpgf}Xo3aE~AZpCz}_@~Kwo@2>ejqEQ>X^&~P8x%+&?Q$EC2D`4! z#HE%TFC%oF?t5BeU!4lnPY_Q#oH8q`jg!(F$l6Qsg$N5R{*o>AoD7i**L>_gF9 z_$>4vh6#-KB5+r_1nPq+Bx6Guz0=M}9MNBjnh24p90iU_Z)7!wbn{bitu$V>3$vuk| zztA4SP?T}@&!z$P&0-25$&yz(1@Vt=9Cb-3Jv{i_O4p>97(&ej3M=9ck=q#Vch_oNmHpHT?5@O0LZ`TnFo`n`rm!Oms8cIbQ) zry7Phn=_eK=^Hq`FFoq@%6hUmgRzfg`_^JNaO(W99SQnmne%Wn%!YTpUGF|p+U3MB=Keq8T)#2k3;(fpDJ#CcwyA7nhxQYTH|}%NhW2D2ze~=e{-|x~MW7x%(V(e@ zpWaXTk2ue!ZQ0raBNd>3*y1TU+*e@mwA78HQ4n(<_ z>Qqt}Iji-vLWNlkMadQ`y6jS`9E`*y?bSB}UWk1<<@`fo%K=wU(Ic3rI%*+`=HInR z`Qh`2X(X@kD*Ee!Qc~P*`QM+m{pbQw&2p*Ws42cW?V7mMO1B{XO9vylN_VtV<`;5yvM>7I z8TYljCBHcN<&CXFPn!0^!?>o)M2plQ*Cv1~oVL6i-Nk=zR?OPK9E` z%<*Xcx7bG?EwIN-3a{CWk ze>vW8Wpi_r>&34O^nO_f9euC#S;6avPYjA=BK)nf%U9o`hF-t*Zm&b9+l6WT`cY)O zJt+o2ss5Ca$(`^NgMZ}H0(Ph<#h=He%+EwV6#PzW#oI>-ROCd@=w=gVU>0qWrdZE1 z!SXAqnJehSy}fV2Pb|aInswG$`8pLo#tQ^S()i{l_Qro7&2M}Ubz-71AUsiJOC&vH z3W*;G20PT@O`w85_`@^ey;L1xklRI5f2N{KQ;pJP`>~QD7i=cE*zl;G1<`Pry?Q?q z3tM(i&xp6gbJ`*csd?#hN6ixYpzYf?xU}`{&xF@Om+Nz5b`^^?eqRxMez$yQ#t3o7d;JsWWQt8Ric^^Lq?kxllOjAE(F?OuVR?}(?UP<;jjBj?O1AqH-J_8)oRI3xDO7^U)4CivHbF6 zL^LMTYhzV_6{n^CS;3KW#Hw%;jq8$@<40r=6%uEHMs~VY7H%7$6sEJ}1nG229P}vK z2ld`zFfEn<%Ht>A^y77E6yb~MuyZrm*y6V`d)@s!QkWZ~dfpeK(m|?6euML#b|yzJ zH4;~ab>(qAa14*%%Zmqcmu5X>IsIOW9%LeHb9jGdbEq#pz4}N;cH*XA zRLq#FluY3HW6uc+Nx0x=7yZA4-lu15tUK4OxY4hBS$#b?s=}uX+Q%dU{yQ#QU_Go{ z;nse+r$y7aj>f)0>@^RRylf{8DItmfBbPUGuaTMLdh#?*eciJD{DV=~eB00Ylvn%ysVx~Wz;B!2t zkX=ccPujgzn<%ucJyZBNm80HH@?P4fbimV*dG;~i zd+(ua(O9|yPrB!&Qlp{k56*GPGUi;#=MQn z0K+)nGs@^JcIr;-7f7XoD^0fara8sa!FBU#4(p;qJX8fCtLt;lW&hU%6H)t%a4@@N z?XO(RTWO|_q0aqDOut5Sd|+#S=S+xoACvg4Y#cL@mkfiFiwp1Fm^etEl!tNHxI_WI z2GnfG2f`BDmU~9VY)O&k-#=Ic8tm6l(NOoIJ-z#5Zu6S+(=vjyA9HUm1c)r2dj-EG zocSV(M1^?=n|eyx#o?h?n?wbBW;2WCagSa8pNWn)?!oVE1BnsTJP8I(KqkBnJKsbk zLhBB=0R!om$9Woput9>tv8`du`N!kDE`hDH2PW-~PM3OMGj@#>Uy@IH48LqcmQaGL z^o)*EoCtr*S26nx*{Lw+m-`Dpuu(TcO@PLRBKq7MW&R#JH=F<-hUh<6fViF zneXvXBeV5E(e3G=#_zjzbaIhC-iycQp8pklRb1lL&J$H~b?@c$ZJ)w&XBSTDDzWr? zYLwwNWN5x{f5>A-i=50$cDlPJpWTrNDzO}nW2HU}t!n?wjar`YA=aBxYR#{I^SQn; zL{7$^QF5*(R`t@g`fP+<2=h!dOv``-f9B|Wu^aFTm3q(f4cQ#d)svrdKWl+W&shiQ8w&@Wjze<(D@JI)hnSEBZp%`f{(}}wUv9ba zj}!E=3_c`%FVEW=r(hM2!Jr(>YU45TWWtCq?eU!`VLY%;=l5AMmFk6W|7im=r2UBCHD0e2?oft)`B zaUIAe74{rr{FHUHNjuJV)KDzqgxtR6zA()0Nv*ep^ygn!w^A#O`MQwym)Tkf}@l@CqSo9~vz%J?x$rcQ&ycEN=oA;5d zTsp!+VY`I8Up(%XjxQB~@##aJ&&*{-Ox&9{hTO}A+ zBnv+2>b=?zLNWJ-I2y- z(PXi$Ks33oY&vlBkfk_7@ILYSMe)TP63roLVf-vOwX?o5;#B`D66tBlVxmt6f#0OZ zpK&iwGe~agyU$E?ggrxlS~3k-WAgQV9tCM=sQOU8?+>_2e{B~=fS$BAzgaNP*0r;E9k!%_#;nuGG7<2P2!#NZ-nO!|s1*fAPHf1Q23 zJtDOFp7%M2&H4){G!+Q@Frf{uZoVDh8KZ2HaUslNMWpx!%J=qn9B2$=mh~>UalV&Y zt7xm`6ZodrQ}wjnmANO%vN*eX6R`L2cILj>5AuBC28hZ6gsltX7%kzWTI;uX)E>GV zjOf3Vac6eO=Z0~)!Z!@{cWnINjgXfZ4z8~fZ7v7B7l^^U{YWvXMQx;XzS@W=VOC`O zmc6RGO?yK8u;0?r)Y75u>Krism(-yB3GXr&IkgwXIFzR~D+qj&WsdHh7~R|+%=Zx7 zn0fB+VStZ&K!21|9cw@#8>R; zPqj%y`RfNyd*@98yWLXX@Zqa1alE3$V%nOHRES?@3hUL!pWuX2KhMrIkIr}TUWh9p zPYA32uV-rJCp&q~U%W2wV8uNh(rYm2&_Bo<&!PNKnM#GclUgicaf4JM#q^npTcSj2 zm&_*UCAC7eNA}dW3lycQV8##T2p4X~T$(UDAR!Wn{MaOBa@S534SjEYl@(c@*s+mqGjb5FK&+R9&pY8IRY*ioI zx#)(Lg#frQKf}bY)u+z!A_;2FWzP(D{eN#WSTXz0vz!jzpOSg~2WzBW4 z*_fwuZwtR=AdYenKFRpF)qq%Gg%sN!(=LVAu;<%mA0oCTw7rl&nY7BZVK?sVR0q?L zdsp?2U-0O__5=cb&NO!?%sv+vclJM?yEB6!iPfm`ww?`H{{Eaw+deV~7eB1(quXFe z$bJCpHQOH|eFblPB*&97Snbh5*<>V2epQ{7U2klX4Cuh%n$nWMhrc%xeCtkr zpt{}-?IoT3GP#4!4Rc6zMGdc)g4m!A-TUAZr6v)xjg`i1t1nwn8bm zwmgngTwIo3rJB-n2_MIujOtfNi{A~%rXIJ)@7Ga3*KOt{0rJ&*!%ByaIA53Lz!mq$ z(ule>GA*n9P!Dgiw?VSosIZE7>4!nWP+u4_O2vb@s*}5YdcjkX_lfggX+LY6So->M z!TZf^;4enK#~r=T*W1c4FDvY3&sc8!<^S=P!&jG}$IujRACJp|jichY?qFM_RRE-+ zgCkfu)3LelDt3$EE@+;P#{aL*8Mqt~Yu}v2uioF|D{FtU1mGkH{=Qt&;Pd%{-|t|f zv%Ocs8ZIJ6TVao}fJMMxnKTqNW6r@YJh3eP{-HT%4jFdQ|brg8zA9k(*7XS*#4R|^dZ)*=e$ zNKs4-{05(qr>X|%&__dYFQdpwZWNCPS8r!>G|C1F`G4xcY+9`>7p~ z?@E&8Jua`=`Q7cVmw!p==C0m)8f}bhDL1#XK=>=F%NWM~v--f3Ksj0{;C@CTN8a3P z@=wLJ(XB1E5H^;7+^DB6paiym9Znkg|LuDi{Hyg}Z@}G0kUkJL*jjgVL9tXjI#Vb) z?zyt$3+po@33J20<^Ke~Vq*HvGZHoLsD}op{{6Edt0>jcSw^cR^FJ<}l{kjmi)buU z9_1x!{L>a(>+g1Rm#pcD?9kV-e(}TkkDslkTfAwJE0I<)NJtg+4q0g2OA-%u=#ajf zFW&Tz4<}~TN4hlWWXh-in~?%D=;WyZBHPh7gJ6>9o>N!v)gjwwlD`dxZGl3L{;{%w zzpbhnyzB@gE~OdUS%iw|?E;!^dCja@?u(3ZQnnnYT2^I3SUDF^1{7kS18VSrQVnYN zZf3|7ny!4{!e5GUcQ%&2N;O*d->-P%4f*su#P`*_I3v)hyqaO>!EbI_cP-xe@^|Ry zVxWJedZ=V#N8|dF04NGemVz2zi#Fq~f~~U^|JO47d`P|8&yf;KI7Qb>CqWe254*2_UQW@zovgXQw2H$Q1iU$n;hQx%`7_S z23%(UX(KeFgDmH`Kzw6~7feV;`#jV6k5kZwPAQs<$Ftx;umOhLITsvjuonIB-Omjj zNwDXP$^ixF#Ult{j~1z~+PJ#1<4ahTo^R*0|4T3&5&iOu90qP_B)d3}(l}as{*=ss z*fnhe2zV`6;+45I_|ZSZ^_`PL{p$i_Wl#9mhv)R+X@?NE y;Nxti&L98XB)b^?z4ia1*gK~&l+%{LcETUJZ1O>srpNyb&>m_&)+kqd8u4Fm8O>1u literal 0 HcmV?d00001 diff --git a/src/test/java/ru/ibs/framework/CucumberRunner.java b/src/test/java/ru/ibs/framework/CucumberRunner.java deleted file mode 100644 index e6f3a90..0000000 --- a/src/test/java/ru/ibs/framework/CucumberRunner.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.ibs.framework; - -import io.cucumber.junit.Cucumber; -import io.cucumber.junit.CucumberOptions; -import org.junit.runner.RunWith; - -@RunWith(Cucumber.class) -@CucumberOptions( - features = "src/test/resources/features", - glue = "ru.ibs.tests", - plugin = {"pretty", "io.qameta.allure.cucumber7jvm.AllureCucumber7Jvm"}, - snippets = CucumberOptions.SnippetType.CAMELCASE -) -public class CucumberRunner {} \ No newline at end of file diff --git a/src/test/java/ru/ibs/framework/RegardTestRunner.java b/src/test/java/ru/ibs/framework/RegardTestRunner.java new file mode 100644 index 0000000..31d5a12 --- /dev/null +++ b/src/test/java/ru/ibs/framework/RegardTestRunner.java @@ -0,0 +1,16 @@ +package ru.ibs.framework; + +import io.cucumber.junit.Cucumber; +import io.cucumber.junit.CucumberOptions; +import org.junit.runner.RunWith; + +@RunWith(Cucumber.class) +@CucumberOptions( + features = "src/test/resources/features", + glue = "ru.ibs.tests", + plugin = { + "pretty", + "io.qameta.allure.cucumber7jvm.AllureCucumber7Jvm" + } +) +public class RegardTestRunner {} \ No newline at end of file diff --git a/src/test/java/ru/ibs/framework/pages/BasePage.java b/src/test/java/ru/ibs/framework/pages/BasePage.java index a549d1f..426b376 100644 --- a/src/test/java/ru/ibs/framework/pages/BasePage.java +++ b/src/test/java/ru/ibs/framework/pages/BasePage.java @@ -1,45 +1,46 @@ -package ru.ibs.framework.pages; +package ru.appline.framework.pages; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import ru.ibs.framework.managers.DriverManager; import java.time.Duration; +import java.util.List; -public class BasePage { +public abstract class BasePage { + protected WebDriver driver; + protected WebDriverWait wait; - protected WebDriver driver = DriverManager.getDriverManager().getDriver(); - protected WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); - - public BasePage() { - PageFactory.initElements(driver, this); + public BasePage(WebDriver driver) { + this.driver = driver; + this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); } - protected void fillInputField(By locator, String value) { - WebElement el = waitUntilVisible(locator); - scrollToElement(el); + protected void click(By locator) { + wait.until(ExpectedConditions.elementToBeClickable(locator)).click(); + } + + protected void type(By locator, String text) { + WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); el.clear(); - el.sendKeys(value); + el.sendKeys(text); } - protected void scrollToElement(WebElement element) { - ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); + protected String getText(By locator) { + return wait.until(ExpectedConditions.visibilityOfElementLocated(locator)).getText(); } - protected WebElement waitUntilVisible(By locator) { - return wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); + protected List findElements(By locator) { + return wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(locator)); } - protected WebElement waitUntilClickable(By locator) { - return wait.until(ExpectedConditions.elementToBeClickable(locator)); - } - - protected void waitUntilInvisible(By locator) { - wait.until(ExpectedConditions.invisibilityOfElementLocated(locator)); + protected void waitForJSIdle() { + new WebDriverWait(driver, Duration.ofSeconds(15)).until( + wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete") + ); } } diff --git a/src/test/java/ru/ibs/framework/pages/CatalogPage.java b/src/test/java/ru/ibs/framework/pages/CatalogPage.java new file mode 100644 index 0000000..f9301cf --- /dev/null +++ b/src/test/java/ru/ibs/framework/pages/CatalogPage.java @@ -0,0 +1,49 @@ +package ru.ibs.framework.pages; + +import org.openqa.selenium.*; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; + +public class CatalogPage { + private final WebDriver driver; + private final WebDriverWait wait; + + public CatalogPage(WebDriver driver) { + this.driver = driver; + this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + } + + public void selectCategory(String name) { + WebElement categoryLink = wait.until(ExpectedConditions.elementToBeClickable( + By.xpath("//a[text()='" + name + "']"))); + categoryLink.click(); + } + + public void closeCookieBannerIfPresent() { + try { + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5)); + WebElement acceptButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("button.CookieBannerPopover_acceptBtn__VRuFj"))); + acceptButton.click(); + Thread.sleep(500); + } catch (TimeoutException | InterruptedException e) { + + } + } + + public void selectSubCategory(String name) { + closeCookieBannerIfPresent(); // Закрыть баннер если есть + + WebElement subCategory = wait.until(ExpectedConditions.presenceOfElementLocated( + By.xpath("//p[contains(text(), '" + name + "')]/ancestor::a[1]"))); + // Клик через JS: + ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", subCategory); + ((JavascriptExecutor) driver).executeScript("arguments[0].click();", subCategory); + + // Ждём загрузки фильтра, чтобы убедиться, что перешли + wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input[name='min']"))); + } + +} \ No newline at end of file diff --git a/src/test/java/ru/ibs/framework/pages/ListingPage.java b/src/test/java/ru/ibs/framework/pages/ListingPage.java new file mode 100644 index 0000000..c18dc43 --- /dev/null +++ b/src/test/java/ru/ibs/framework/pages/ListingPage.java @@ -0,0 +1,48 @@ +package ru.ibs.framework.pages; + +import org.openqa.selenium.*; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; +import java.util.List; + +public class ListingPage { + private final WebDriver driver; + private final WebDriverWait wait; + + public ListingPage(WebDriver driver) { + this.driver = driver; + this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + } + + public void setMinPrice(String price) { + WebElement minPrice = driver.findElement(By.cssSelector("input[name='min']")); + minPrice.clear(); + minPrice.sendKeys(price); + minPrice.sendKeys(Keys.ENTER); + waitForJSIdle(); + } + + public void selectGigabyte() { + WebElement checkbox = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("input[id*='Gigabyte'] + label"))); + checkbox.click(); + waitForJSIdle(); + } + + public List getAllProducts() { + return driver.findElements(By.cssSelector("div.Card_wrap__hES44")); + } + + public String getFirstProductTitle() { + return wait.until(ExpectedConditions.visibilityOfElementLocated( + By.cssSelector("a.CardText_link__C_fPZ > div.CardText_title__7bSbO"))).getText(); + } + + public void waitForJSIdle() { + new WebDriverWait(driver, Duration.ofSeconds(10)).until(driver -> + ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete") + ); + } +} diff --git a/src/test/java/ru/ibs/framework/pages/MainPage.java b/src/test/java/ru/ibs/framework/pages/MainPage.java new file mode 100644 index 0000000..3fb0727 --- /dev/null +++ b/src/test/java/ru/ibs/framework/pages/MainPage.java @@ -0,0 +1,19 @@ +// MainPage.java +package ru.ibs.framework.pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +public class MainPage { + private final WebDriver driver; + + public MainPage(WebDriver driver) { + this.driver = driver; + } + + public void openCatalog() { + WebElement catalogButton = driver.findElement(By.xpath("//span[text()='Каталог']/parent::button")); + catalogButton.click(); + } +} \ No newline at end of file diff --git a/src/test/java/ru/ibs/tests/BaseTests.java b/src/test/java/ru/ibs/tests/BaseTests.java deleted file mode 100644 index 8d37efb..0000000 --- a/src/test/java/ru/ibs/tests/BaseTests.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.ibs.tests; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import ru.ibs.framework.managers.DriverManager; - -public class BaseTests { - - @BeforeClass - public static void beforeAll() { - DriverManager.getDriverManager(); - } - - @AfterClass - public static void afterAll() { - DriverManager.getDriverManager().quitDriver(); - } -} diff --git a/src/test/java/ru/ibs/tests/BusinessTripPage.java b/src/test/java/ru/ibs/tests/BusinessTripPage.java deleted file mode 100644 index ad36606..0000000 --- a/src/test/java/ru/ibs/tests/BusinessTripPage.java +++ /dev/null @@ -1,103 +0,0 @@ -package ru.ibs.tests; - -import org.openqa.selenium.*; -import org.openqa.selenium.support.FindBy; -import org.openqa.selenium.support.PageFactory; -import org.openqa.selenium.support.ui.*; - -import java.time.Duration; - -public class BusinessTripPage { - private final WebDriver driver; - private final WebDriverWait wait; - - @FindBy(xpath = "//h1[contains(text(), 'Командировки')]") - private WebElement tripsHeader; - - @FindBy(css = "div.pull-left.btn-group.icons-holder") - private WebElement createTripButton; - - @FindBy(xpath = "//h1[@class='user-name' and contains(text(), 'Создать командировку')]") - private WebElement createTripHeader; - - @FindBy(xpath = "//select[contains(@name,'businessUnit')]") - private WebElement departmentSelect; - - @FindBy(id = "company-selector-show") - private WebElement companySelectorShow; - - @FindBy(css = "span.select2-chosen") - private WebElement organizationSpan; - - @FindBy(css = "input.select2-input") - private WebElement organizationInput; - - @FindBy(xpath = "//label[contains(text(),'Заказ билетов')]/preceding-sibling::input") - private WebElement ticketsCheckbox; - - @FindBy(xpath = "//button[contains(text(),'Сохранить и закрыть')]") - private WebElement saveAndCloseButton; - - public BusinessTripPage(WebDriver driver) { - this.driver = driver; - this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); - PageFactory.initElements(driver, this); - } - - public boolean isTripsPageLoaded() { - return wait.until(ExpectedConditions.visibilityOf(tripsHeader)).isDisplayed(); - } - - public void openCreateTripForm() { - wait.until(ExpectedConditions.elementToBeClickable(createTripButton)).click(); - wait.until(ExpectedConditions.visibilityOf(createTripHeader)); - } - - public void selectDepartment(String departmentName) { - Select select = new Select(departmentSelect); - select.selectByVisibleText(departmentName); - } - - public void selectOrganization(String orgName) { - companySelectorShow.click(); - wait.until(ExpectedConditions.elementToBeClickable(organizationSpan)).click(); - wait.until(ExpectedConditions.visibilityOf(organizationInput)).sendKeys(orgName); - wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='select2-match' and text()='" + orgName + "']"))).click(); - } - - public void setTicketsCheckbox(boolean checked) { - if (ticketsCheckbox.isSelected() != checked) { - ticketsCheckbox.click(); - } - } - - public void fillCity(String city) { - By cityInputLocator = By.xpath("//input[contains(@id,'arrivalCity')]"); - WebElement cityInput = wait.until(ExpectedConditions.visibilityOfElementLocated(cityInputLocator)); - scrollToElement(cityInput); - cityInput.clear(); - cityInput.sendKeys(city); - } - - public void fillDate(By dateLocator, String dateValue) { - WebElement dateInput = wait.until(ExpectedConditions.elementToBeClickable(dateLocator)); - scrollToElement(dateInput); - dateInput.clear(); - dateInput.sendKeys(dateValue); - dateInput.sendKeys(Keys.TAB); - } - - public void saveAndClose() { - scrollToElement(saveAndCloseButton); - saveAndCloseButton.click(); - } - - public boolean isErrorDisplayed(String errorText) { - By errorLocator = By.xpath("//span[@class='validation-failed' and contains(text(), '" + errorText + "')]"); - return wait.until(ExpectedConditions.visibilityOfElementLocated(errorLocator)).isDisplayed(); - } - - private void scrollToElement(WebElement element) { - ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); - } -} diff --git a/src/test/java/ru/ibs/tests/BusinessTripSteps.java b/src/test/java/ru/ibs/tests/BusinessTripSteps.java deleted file mode 100644 index 1b99cbc..0000000 --- a/src/test/java/ru/ibs/tests/BusinessTripSteps.java +++ /dev/null @@ -1,91 +0,0 @@ -package ru.ibs.tests; - -import io.cucumber.java.ru.*; -import static org.junit.Assert.*; - -import io.cucumber.java.After; -import org.openqa.selenium.By; -import ru.ibs.framework.managers.DriverManager; -import ru.ibs.tests.*; - -public class BusinessTripSteps { - - private final LoginPage loginPage = new LoginPage(DriverManager.getDriverManager().getDriver()); - private DashboardPage dashboardPage; - private BusinessTripPage businessTripPage; - - @Дано("Открываем страницу логина") - public void openLoginPage() { - DriverManager.getDriverManager().getDriver().get("http://training.appline.ru/user/login"); - } - - @И("Вводим логин {string} и пароль {string}") - public void login(String username, String password) { - dashboardPage = loginPage.login(username, password); - } - - @И("Проверяем, что панель быстрого запуска загружена") - public void dashboardLoaded() { - assertTrue("Dashboard not loaded", dashboardPage.isDashboardLoaded()); - } - - @И("Переходим в раздел {string}") - public void goToBusinessTrip(String name) { - businessTripPage = dashboardPage.goToBusinessTrip(); - } - - @И("Проверяем, что страница {string} загружена") - public void tripsPageLoaded(String title) { - assertTrue("Trips page not loaded", businessTripPage.isTripsPageLoaded()); - } - - @И("Нажимаем на кнопку создания новой командировки") - public void openCreateTripForm() { - businessTripPage.openCreateTripForm(); - } - - @И("Выбираем подразделение {string}") - public void selectDepartment(String department) { - businessTripPage.selectDepartment(department); - } - - @И("Выбираем организацию {string}") - public void selectOrganization(String organization) { - businessTripPage.selectOrganization(organization); - } - - @И("Устанавливаем чекбокс {string} в положение {string}") - public void setCheckbox(String checkboxName, String value) { - boolean checked = Boolean.parseBoolean(value); - businessTripPage.setTicketsCheckbox(checked); - } - - @И("Заполняем поле {string} значением {string}") - public void fillCityOrDate(String field, String value) { - if (field.equalsIgnoreCase("Город")) { - businessTripPage.fillCity(value); - } else if (field.equalsIgnoreCase("Дата отправления")) { - businessTripPage.fillDate(By.xpath("//input[@placeholder='Укажите дату' and contains(@id, 'departureDatePlan')]"), value); - } else if (field.equalsIgnoreCase("Дата возвращения")) { - businessTripPage.fillDate(By.xpath("//input[@placeholder='Укажите дату' and contains(@id, 'returnDatePlan')]"), value); - } - } - - @И("Нажимаем кнопку {string}") - public void clickButton(String buttonName) { - if (buttonName.equals("Сохранить и закрыть")) { - businessTripPage.saveAndClose(); - } - } - - @Тогда("Проверяем, что отображается ошибка {string}") - public void checkError(String errorText) { - assertTrue("Expected validation error not shown", - businessTripPage.isErrorDisplayed(errorText)); - } - - @After - public void tearDown() { - DriverManager.getDriverManager().quitDriver(); - } -} diff --git a/src/test/java/ru/ibs/tests/DashboardPage.java b/src/test/java/ru/ibs/tests/DashboardPage.java deleted file mode 100644 index 84be3c1..0000000 --- a/src/test/java/ru/ibs/tests/DashboardPage.java +++ /dev/null @@ -1,42 +0,0 @@ -package ru.ibs.tests; - -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; -import org.openqa.selenium.support.FindBy; -import org.openqa.selenium.support.PageFactory; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - -import java.time.Duration; - -public class DashboardPage { - private final WebDriver driver; - private final WebDriverWait wait; - - @FindBy(xpath = "//h1[@class='oro-subtitle' and contains(text(), 'Панель быстрого запуска')]") - private WebElement dashboardTitle; - - @FindBy(xpath = "//span[text()='Расходы']/ancestor::li") - private WebElement expensesMenu; - - @FindBy(xpath = "//a[@href='/business-trip/']/span[text()='Командировки']") - private WebElement businessTripLink; - - public DashboardPage(WebDriver driver) { - this.driver = driver; - this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); - PageFactory.initElements(driver, this); - } - - public boolean isDashboardLoaded() { - return wait.until(ExpectedConditions.visibilityOf(dashboardTitle)).isDisplayed(); - } - - public BusinessTripPage goToBusinessTrip() { - Actions actions = new Actions(driver); - actions.moveToElement(expensesMenu).perform(); - wait.until(ExpectedConditions.elementToBeClickable(businessTripLink)).click(); - return new BusinessTripPage(driver); - } -} diff --git a/src/test/java/ru/ibs/tests/LoginPage.java b/src/test/java/ru/ibs/tests/LoginPage.java deleted file mode 100644 index e5f169a..0000000 --- a/src/test/java/ru/ibs/tests/LoginPage.java +++ /dev/null @@ -1,39 +0,0 @@ -package ru.ibs.tests; - -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.FindBy; -import org.openqa.selenium.support.PageFactory; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - -import java.time.Duration; - -public class LoginPage { - private final WebDriver driver; - private final WebDriverWait wait; - - @FindBy(id = "prependedInput") - private WebElement usernameInput; - - @FindBy(id = "prependedInput2") - private WebElement passwordInput; - - @FindBy(xpath = "//button[@type='submit']") - private WebElement loginButton; - - public LoginPage(WebDriver driver) { - this.driver = driver; - this.wait = new WebDriverWait(driver, Duration.ofSeconds(10)); - PageFactory.initElements(driver, this); - } - - public DashboardPage login(String username, String password) { - wait.until(ExpectedConditions.visibilityOf(usernameInput)).clear(); - usernameInput.sendKeys(username); - wait.until(ExpectedConditions.visibilityOf(passwordInput)).clear(); - passwordInput.sendKeys(password); - wait.until(ExpectedConditions.elementToBeClickable(loginButton)).click(); - return new DashboardPage(driver); - } -} diff --git a/src/test/java/ru/ibs/tests/SearchSteps.java b/src/test/java/ru/ibs/tests/SearchSteps.java new file mode 100644 index 0000000..2baf82e --- /dev/null +++ b/src/test/java/ru/ibs/tests/SearchSteps.java @@ -0,0 +1,106 @@ +package ru.ibs.tests; + +import io.cucumber.java.After; +import io.cucumber.java.ru.Дано; +import io.cucumber.java.ru.И; +import io.cucumber.java.ru.Тогда; + +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import ru.ibs.framework.managers.DriverManager; +import ru.ibs.framework.pages.CatalogPage; +import ru.ibs.framework.pages.ListingPage; +import ru.ibs.framework.pages.MainPage; + +import java.time.Duration; +import java.util.List; + +import static org.junit.Assert.*; + +public class SearchSteps { + + WebDriver driver = DriverManager.getDriverManager().getDriver(); + MainPage mainPage = new MainPage(driver); + CatalogPage catalogPage = new CatalogPage(driver); + ListingPage listingPage = new ListingPage(driver); + String savedProductTitle; + + @Дано("Открываем сайт regard") + public void openSite() { + driver.get("https://regard.ru/"); + driver.manage().window().maximize(); + catalogPage.closeCookieBannerIfPresent(); + } + + @И("Открываем меню Каталог") + public void openCatalog() { + mainPage.openCatalog(); + } + + @И("Выбираем раздел {string}") + public void chooseCategory(String category) { + catalogPage.selectCategory(category); + } + + @И("Выбираем подраздел {string}") + public void chooseSubCategory(String sub) { + catalogPage.selectSubCategory(sub); + } + + @И("Задаем цену от {string}") + public void setPrice(String price) { + listingPage.setMinPrice(price); + } + + @И("Фильтруем по производителю {string}") + public void filterByManufacturer(String name) { + if (name.equalsIgnoreCase("Gigabyte")) { + listingPage.selectGigabyte(); + } + } + + @И("Проверяем, что товаров не более {int}") + public void checkNumberOfProducts(int max) { + assertTrue(listingPage.getAllProducts().size() <= max); + } + + @И("Сохраняем наименование первого товара") + public void saveFirstProductName() { + savedProductTitle = listingPage.getFirstProductTitle(); + } + + @И("Ищем товар по сохраненному имени") + public void searchSavedProduct() { + WebElement searchInput = driver.findElement(By.id("searchInput")); + searchInput.clear(); + searchInput.sendKeys(savedProductTitle); + searchInput.sendKeys(Keys.ENTER); + + // Ждем, пока появится хотя бы один товар на странице результатов поиска + new WebDriverWait(driver, Duration.ofSeconds(10)).until( + ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.Card_wrap__hES44")) + ); + } + + @Тогда("На странице только один товар") + public void waitForProductsCountChange() { + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + int oldCount = listingPage.getAllProducts().size(); + wait.until(driver -> driver.findElements(By.cssSelector("div.Card_wrap__hES44")).size() != oldCount); + } + + @И("Название товара соответствует сохраненному") + public void titleShouldMatchSaved() { + assertEquals(savedProductTitle, listingPage.getFirstProductTitle()); + } + + @After + public void tearDown() { + DriverManager.getDriverManager().quitDriver(); + } +} diff --git a/src/test/resources/features/cucumberScenario.feature b/src/test/resources/features/cucumberScenario.feature deleted file mode 100644 index 5d544a3..0000000 --- a/src/test/resources/features/cucumberScenario.feature +++ /dev/null @@ -1,19 +0,0 @@ -# language: ru -@businessTrip -Функционал: Создание командировки - - Сценарий: Проверка ошибки при попытке создать командировку без сотрудников - * Открываем страницу логина - * Вводим логин "Irina Filippova" и пароль "testing" - * Проверяем, что панель быстрого запуска загружена - * Переходим в раздел "Командировки" - * Проверяем, что страница "Командировки" загружена - * Нажимаем на кнопку создания новой командировки - * Выбираем подразделение "Отдел внутренней разработки" - * Выбираем организацию "Edge" - * Устанавливаем чекбокс "Заказ билетов" в положение "true" - * Заполняем поле "Город" значением "Дмитров" - * Заполняем поле "Дата отправления" значением "01.01.2025" - * Заполняем поле "Дата возвращения" значением "10.01.2025" - * Нажимаем кнопку "Сохранить и закрыть" - * Проверяем, что отображается ошибка "Список командируемых сотрудников не может быть пустым" diff --git a/src/test/resources/features/regard_search.feature b/src/test/resources/features/regard_search.feature new file mode 100644 index 0000000..a633c3b --- /dev/null +++ b/src/test/resources/features/regard_search.feature @@ -0,0 +1,15 @@ +# language: ru +Функциональность: Поиск видеокарты на сайте regard.ru + + Сценарий: Поиск видеокарты Gigabyte с фильтрами и проверкой результатов + Дано Открываем сайт regard + И Открываем меню Каталог + И Выбираем раздел "Комплектующие для ПК" + И Выбираем подраздел "Видеокарты" + И Задаем цену от "20000" + И Фильтруем по производителю "Gigabyte" + И Проверяем, что товаров не более 24 + И Сохраняем наименование первого товара + И Ищем товар по сохраненному имени + Тогда На странице только один товар + И Название товара соответствует сохраненному