From d764de018c1212952097666b460a52589785ca4a Mon Sep 17 00:00:00 2001 From: Ivan Lanin Date: Wed, 21 May 2014 22:10:36 +0700 Subject: [PATCH] Additional unit tests and @since documentation --- src/PhpWord/Reader/AbstractReader.php | 1 + src/PhpWord/Reader/ODText/AbstractPart.php | 3 +++ src/PhpWord/Reader/ReaderInterface.php | 2 ++ src/PhpWord/Reader/Word2007/AbstractPart.php | 3 +++ src/PhpWord/Reader/Word2007/DocPropsApp.php | 2 ++ src/PhpWord/Reader/Word2007/DocPropsCore.php | 2 ++ .../Reader/Word2007/DocPropsCustom.php | 2 ++ src/PhpWord/Reader/Word2007/Document.php | 2 ++ src/PhpWord/Reader/Word2007/Endnotes.php | 2 ++ src/PhpWord/Reader/Word2007/Footnotes.php | 2 ++ src/PhpWord/Reader/Word2007/Numbering.php | 2 ++ src/PhpWord/Reader/Word2007/Styles.php | 2 ++ .../PhpWord/Tests/Element/ListItemRunTest.php | 11 +++++++++++ tests/PhpWord/Tests/SettingsTest.php | 8 ++++++++ tests/PhpWord/Tests/Shared/StringTest.php | 10 ++++++++++ .../PhpWord/Tests/_files/documents/reader.odt | Bin 11758 -> 11952 bytes 16 files changed, 54 insertions(+) diff --git a/src/PhpWord/Reader/AbstractReader.php b/src/PhpWord/Reader/AbstractReader.php index a243c5d2..3cc2d490 100644 --- a/src/PhpWord/Reader/AbstractReader.php +++ b/src/PhpWord/Reader/AbstractReader.php @@ -22,6 +22,7 @@ use PhpOffice\PhpWord\Exception\Exception; /** * Reader abstract class * + * @since 0.8.0 * @codeCoverageIgnore Abstract class */ abstract class AbstractReader implements ReaderInterface diff --git a/src/PhpWord/Reader/ODText/AbstractPart.php b/src/PhpWord/Reader/ODText/AbstractPart.php index 815e60fd..392c3126 100644 --- a/src/PhpWord/Reader/ODText/AbstractPart.php +++ b/src/PhpWord/Reader/ODText/AbstractPart.php @@ -22,6 +22,9 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Abstract part reader + * + * @since 0.10.0 + * @codeCoverageIgnore Nothing in here yet */ abstract class AbstractPart extends Word2007AbstractPart { diff --git a/src/PhpWord/Reader/ReaderInterface.php b/src/PhpWord/Reader/ReaderInterface.php index df663197..361c4137 100644 --- a/src/PhpWord/Reader/ReaderInterface.php +++ b/src/PhpWord/Reader/ReaderInterface.php @@ -19,6 +19,8 @@ namespace PhpOffice\PhpWord\Reader; /** * Reader interface + * + * @since 0.8.0 */ interface ReaderInterface { diff --git a/src/PhpWord/Reader/Word2007/AbstractPart.php b/src/PhpWord/Reader/Word2007/AbstractPart.php index 9a0e0c63..2289a5e8 100644 --- a/src/PhpWord/Reader/Word2007/AbstractPart.php +++ b/src/PhpWord/Reader/Word2007/AbstractPart.php @@ -24,6 +24,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; * Abstract part reader * * This class is inherited by ODText reader + * + * @since 0.10.0 */ abstract class AbstractPart { @@ -466,6 +468,7 @@ abstract class AbstractPart } } + /** @var array $styles Type hint */ return $styles; } diff --git a/src/PhpWord/Reader/Word2007/DocPropsApp.php b/src/PhpWord/Reader/Word2007/DocPropsApp.php index 06b58bcb..ddbe474f 100644 --- a/src/PhpWord/Reader/Word2007/DocPropsApp.php +++ b/src/PhpWord/Reader/Word2007/DocPropsApp.php @@ -19,6 +19,8 @@ namespace PhpOffice\PhpWord\Reader\Word2007; /** * Extended properties reader + * + * @since 0.10.0 */ class DocPropsApp extends DocPropsCore { diff --git a/src/PhpWord/Reader/Word2007/DocPropsCore.php b/src/PhpWord/Reader/Word2007/DocPropsCore.php index ae59ad51..0b92b64d 100644 --- a/src/PhpWord/Reader/Word2007/DocPropsCore.php +++ b/src/PhpWord/Reader/Word2007/DocPropsCore.php @@ -22,6 +22,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Core properties reader + * + * @since 0.10.0 */ class DocPropsCore extends AbstractPart { diff --git a/src/PhpWord/Reader/Word2007/DocPropsCustom.php b/src/PhpWord/Reader/Word2007/DocPropsCustom.php index 969118b1..efbbfaa5 100644 --- a/src/PhpWord/Reader/Word2007/DocPropsCustom.php +++ b/src/PhpWord/Reader/Word2007/DocPropsCustom.php @@ -23,6 +23,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Custom properties reader + * + * @since 0.11.0 */ class DocPropsCustom extends AbstractPart { diff --git a/src/PhpWord/Reader/Word2007/Document.php b/src/PhpWord/Reader/Word2007/Document.php index 3ac4e0eb..34460b52 100644 --- a/src/PhpWord/Reader/Word2007/Document.php +++ b/src/PhpWord/Reader/Word2007/Document.php @@ -22,6 +22,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Document reader + * + * @since 0.10.0 */ class Document extends AbstractPart { diff --git a/src/PhpWord/Reader/Word2007/Endnotes.php b/src/PhpWord/Reader/Word2007/Endnotes.php index 02bf9e9e..c493c347 100644 --- a/src/PhpWord/Reader/Word2007/Endnotes.php +++ b/src/PhpWord/Reader/Word2007/Endnotes.php @@ -19,6 +19,8 @@ namespace PhpOffice\PhpWord\Reader\Word2007; /** * Endnotes reader + * + * @since 0.10.0 */ class Endnotes extends Footnotes { diff --git a/src/PhpWord/Reader/Word2007/Footnotes.php b/src/PhpWord/Reader/Word2007/Footnotes.php index 7aadf6c0..47713cfb 100644 --- a/src/PhpWord/Reader/Word2007/Footnotes.php +++ b/src/PhpWord/Reader/Word2007/Footnotes.php @@ -22,6 +22,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Footnotes reader + * + * @since 0.10.0 */ class Footnotes extends AbstractPart { diff --git a/src/PhpWord/Reader/Word2007/Numbering.php b/src/PhpWord/Reader/Word2007/Numbering.php index 81939ae8..2dd3f521 100644 --- a/src/PhpWord/Reader/Word2007/Numbering.php +++ b/src/PhpWord/Reader/Word2007/Numbering.php @@ -22,6 +22,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Numbering reader + * + * @since 0.10.0 */ class Numbering extends AbstractPart { diff --git a/src/PhpWord/Reader/Word2007/Styles.php b/src/PhpWord/Reader/Word2007/Styles.php index dd73f410..7dc4b6ea 100644 --- a/src/PhpWord/Reader/Word2007/Styles.php +++ b/src/PhpWord/Reader/Word2007/Styles.php @@ -22,6 +22,8 @@ use PhpOffice\PhpWord\Shared\XMLReader; /** * Styles reader + * + * @since 0.10.0 */ class Styles extends AbstractPart { diff --git a/tests/PhpWord/Tests/Element/ListItemRunTest.php b/tests/PhpWord/Tests/Element/ListItemRunTest.php index c034a8f8..37d679f9 100644 --- a/tests/PhpWord/Tests/Element/ListItemRunTest.php +++ b/tests/PhpWord/Tests/Element/ListItemRunTest.php @@ -51,6 +51,17 @@ class ListItemRunTest extends \PHPUnit_Framework_TestCase $this->assertEquals($oListItemRun->getParagraphStyle(), 'pStyle'); } + /** + * New instance with string + */ + public function testConstructListString() + { + $oListItemRun = new ListItemRun(0, 'numberingStyle'); + + $this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\ListItemRun', $oListItemRun); + $this->assertCount(0, $oListItemRun->getElements()); + } + /** * New instance with array */ diff --git a/tests/PhpWord/Tests/SettingsTest.php b/tests/PhpWord/Tests/SettingsTest.php index d188595e..36565eb1 100644 --- a/tests/PhpWord/Tests/SettingsTest.php +++ b/tests/PhpWord/Tests/SettingsTest.php @@ -103,6 +103,14 @@ class SettingsTest extends \PHPUnit_Framework_TestCase 'defaultFontName' => 'Arial', 'defaultFontSize' => 10, ); + + // Test default value + $this->assertEquals($expected, Settings::loadConfig()); + + // Test with valid file $this->assertEquals($expected, Settings::loadConfig(__DIR__ . '/../../../phpword.ini.dist')); + + // Test with invalid file + $this->assertEmpty(Settings::loadConfig(__DIR__ . '/files/xsl/passthrough.xsl')); } } diff --git a/tests/PhpWord/Tests/Shared/StringTest.php b/tests/PhpWord/Tests/Shared/StringTest.php index 086823a2..bf5862fb 100644 --- a/tests/PhpWord/Tests/Shared/StringTest.php +++ b/tests/PhpWord/Tests/Shared/StringTest.php @@ -54,4 +54,14 @@ class StringTest extends \PHPUnit_Framework_TestCase $this->assertEquals('', String::controlCharacterPHP2OOXML('')); $this->assertEquals('_x0008_', String::controlCharacterPHP2OOXML(chr(0x08))); } + + /** + * Test unicode conversion + */ + public function testToUnicode() + { + $this->assertEquals('a', String::toUnicode('a')); + $this->assertEquals('\uc0{\u8364}', String::toUnicode('€')); + $this->assertEquals('\uc0{\u233}', String::toUnicode('é')); + } } diff --git a/tests/PhpWord/Tests/_files/documents/reader.odt b/tests/PhpWord/Tests/_files/documents/reader.odt index 9e18e61917e66eef0736944d35d1224939160068..d37c4e6629209390eca9e281454d1eb14e77307f 100644 GIT binary patch literal 11952 zcmbt)1z1$y*8b3v(v6^WH%LlKDBaD_okL4^H&W8wEh!C3hjdE{lG6D{z5GNk_kQ2^ z{D)^|%^c2t-@VpZXP>?IdZk}MK%xVFygvC=3H|)?uMgx~D`;t9U~Fh-0|XgcTG%qt zOaI5S@gF!FsH>}QrhnVm(&lGNxL?S;fAWz34=r`=Y;5!`Ky;4gX20nHe}P~>0AgTf z2?Xi?qJG##tOr^dn*$B?ZSQ&dHx=Q3ZX{p~G6!1yx5f|k(_G)eP6v3upMO*0K0s+@ zX=P{iqv?O?>O&XB%Er>rM&H)<|ITO&0)p)RhjtJ72ePy@`@ggOXk`Vo&^PGQ|UR7J|Gnz=eU1Y6kArw-p=qRxsu4-CEP&f2PD4vcY#q?6m z9W+uqfO(?A3?~yVNAl59^G$&0!Et>Z@-qUi0h8(qr4JHQv(_S+k7rGcMs6-%qYb2q#`et#bq6^MUvR=Cd%|w=UyqeCsp_nSOz% z1GACvgU(WWn_pCUW>X#$lS9M?zOsrbje<*(f^ipRB(@==hziv1#P@>!#6N1?IWQqH zK(i}s(-VE!6-`d-(Bp^W+c1OxH3?^py#J}X$V0y0uTjxWot-dEFYMU_OPVZtM7$7T z@RQN00e46=mvhFH5hL4xg72m6+{DP}%TG0Nq>MtMUWC};WXEV-A?D&ru*wry_FIGR z`>uA9SRh8CqVRz^hhs;YT=iEc0cMib=Rb_GXrT<8FkXRIB9j`mJ5GIf?=M6!dL6pm z^}@z;xv41HLq^iD%`tRGXCxlAc}X>^Hg@dK^!K*O-ub~Rs47RD)fj+FGxi; z$-17^_4?BAxi-Zmy&&vF<`}vlB%=tak}2QVLF68X0A(Xgh_@uv`sgNaiLzx>a6Mm- zhWhEe=?VNu_0}-_+zr`~d3KRAG_GLan{BUNQxjQ|;Ip;~u#-8tVDB6EFN^P#@l(u6 zn&0$Ol0T(4$sC_pafY&2#XGD*7|5&W`b19Da3#NTSTN<~PZYxfGI)G~a-CMsI(z6~ zW9$3r4VaXTl?Z)Q)_l6U`8T>`1puO90~be9Gbfs3+cSPffw9bF^Bwv|T4dboNa@Fnhvkw)i*MygT_K2ud#(O$7(9qo2X$t%@GF9$%VWzBL(nYRe6;XDqE<4MOKQQ zqa?b_NASd3ebd0m_{|Ec3N6MpWC_}U^B+g|qM?+g?@!#%ctds3InxFZ zrzwKRu!-_vpnz=DJ-O1HMpxwi*aOCPeIJ$uCW!gLh*@5*u z_1$;CTcT+(UB_h`mZPFSi|ao??SPD}dNC|j%- z-5z-X*Ti=6BDu@f)2TbgkFXbBY*1nSbPkn#?5wT-C5CUr9*Y1WZ9V!FWi0p8pf}P9 zR`fw}>I@_hdYmpu$FEa-XWh|H9d`LG3bpd|>RCn1%j;NnbkNt}Gbfc)nPXOOmK(yg zWHHwS=?{iwp>CGXxO1Tl4iIdC=R75VbLxZ4KqeM-1W5H=G>kfx(4gp#+8NPz#S0JZaXjMZqw%MG`DYeQLndmCwmY(t9Zh%}G(hdzh7cvoRhz7sd_t z<@~1OILrX*rZ4ApDL=mGmqRHQ8ZY|-ju}=3u7&3;dY)gF7yNv>zI9vcq85m6J?7GE z-hB)Wu|RmtVT9Yp9Z~)L z`gzl^)zJ5gOn!&S?W4vQPy?f|$v5;6>o=J#V_PYe_VBjjI~J1dmW<@hfV(NtuZLsR ziO~oY7y#f60RSM}J{-+~7RCnpwjeqiJ%j$}ehY5~WS?CpxZdP)Pfa+u73mn;FpVT53Q>kvets%d0YZWE}H zuP9fnHi@0l@5-_~UX^+{oe*hs)`n2!C4+NuoozyGEz#zD_?qkg0MS5mEe^iTwG=Y1$)*!TOi!~hlnsCWol%kkle@|<( zfy+h9*4^|{3;i^=_#Lt-b#5!OYtORMdUyd_>0P+~eYy*K8!ic9d45_k$(MgkIqFPC z(ui-P$_ohqVBA0LpYYz!O^ah%E!v3?{B~V~0=Cd6ofD-;pO9_C*28Fbh()#tX%`%C zix6jjs;N>fm}988*?k{6`Au>FQ{>UGW6>nMy8%?%adm5r4&lYgLF{%-VW^xDZUBkD zVB{8qW_wV!$4H@3hR`aJ_{fNZNA<)fu&B!vdY2K_L~P~C?E-A4&~oXubE_wn1fO5V zf_Bn$3bu-dgKVmw>-4+8zY$-9B(LwpEltuhpQ7ZHf6Y+-vAwY;sk^I+@^Jo(Dn)Ut z0Fo;*r>|9coPR~cQRPDXUPfE=k~7?8Qm(JnvOIi7yS=8XyXX#DY`M&k)e48p)71+4 zNS8$a6}qqG!*dg%d@+Qsm+nALHAf-)`b}weDR$U)ft5jF*v z1l;0;^XGNPi2HDC6%wPD7dUuPMfp|Yq951YczHi`(O7EDkU4{y`$QFD=c?d)>IK28 zlz!1lYS2SjP)v<8X}~~uq*P?dKb-~jikMvi7gfBlb|Q+x#OG;Ljdp;(kR4Gj&YhL3Qu6&W7oVoQ9B*vm|Z zKIV>+-K-t*@E>xkEhzQ5a&H78N0j9CdV~!aE3bL)M&D zhE!WV1j-OOi5!QrZtVw}E~zF>2{$d@{TbFP8dpM;fq3z3sB`W!Erp?O;HznGjS5^2 zXm0GH4Dr+>boiN)2iC$4j{usW^{h~S(}=XI)A@JHO}orgBQ%{#;Q|8(AA7r(ujY)8 zVB&>^{bsfb>6?rkW#<>4nSIm4vhf0{g53O*-Z4bF80i_!up*laLpH1^cp^QmgM01;} zluv&Rt+x6gkg#(Hu}Ib~{>t^fIkJKr%H|NF)t)MWCNPV@vGhRO0Z% z(KmttgJ+&(-B};`rgS03M`+gqo+#z0XnqKQD^C0v!XVMf#2}Hx!U$9CRCKntlf$lf zT@fQNrzwm zK|ikuL6}>M4VHW9CE4>CzmFI~P6+n3Fl`}xo{aYGi*#)gBP+1vTi#-W#{j5A73rG>y7zCJRa!{`07pQZMp^s&`|KrV{l z*9m+Z<{dNBJx(+98ga^>8z$VGWv!2Rn4w_}V+rjeIbu_vxVu*P5GXXG!AyC(#3 z5Hj_Xg@{`xSNbR_H;W<~FWW1$sW4>Zk zTB$1UOs0~4Zj-m*!poA@tsUIGx!riS*+`2%TIgM?Ye+;ThobL>Wp|tue86zF``yMT zm>%E+IE{bX#uDEjFeQkb|9Hut=6xX_{$~s#Cw1k<0gg)PW>0?LoJ_V9H*GVQF4^-X z4U-z8Q^5Se9-X0o6lp{T2?t^syiU3rVfY2aq`jO%`3pJ>&(*XBTxJo(r*Q3R>CvJT ztFyye9rk7kHAgcC2Mpj;R)$P9ig;h>#J|u{;k7uF$JFj2U51Pz$-#a+XCF(V{yc;+ ztxWF3(-}DDLZxSHFAFCnnv-r8;5ri9kWN(R(J!VUJ1XZ26cFl#*^FM)i*$VI z$*z=J3k;yzs1-%Upn5DA@h{ZdtUeY5&Q2Q2DO1Zwl=NQgW^Q2!p{5b>T*lkTf!ol}1p$vN)BE&$R0V7CnNzt?Zo+_Wsq43EQqA zbQQC#SN|kQ8nnaIff&B676l94C*zBqY_sj%$D)dPcu%8%Bh@7QWW`E-Ip!vh)JGRZ zlvI#;ri3P61&n_3DBqSg&1UpDuJ=1vJA-yh<3yE+1)sf`PcJ`WYcAh)M=Jg~ME}^0 z`!!*emkznMx&4|+4*>iaxNSjBX8J$J)Hzj=$D<7BAHGu;5Y_s!=-1GIp@IiKEhmxu zC^6d=F&ViX5vMiyz0abZyUJgDKk0gYPxJ{lFZ$URt~D=)bA|v*8gHl^*jKP~FA#X$ z9G}d?KY3Aq;IVB_(wY=Qs^FQA;LE+HOv4u+6#A4Gfl87c0rnXiI)<{DUImaeN786? zZQe-EK!`Glwj`cw1eI__9oRV&DLiu)$7-v_xtfZ$ z>SX;9_Uf47V-^j&jQqq===mCA*NIG{W+}165fXVyX^~?|-3Un=hhmoy`a%G4x0-g~ z+Ig1)h0JtyM=-MQ~9 z{p4g;%+n%N!|l6}6G~iH>nzt>qRde6GwiOVioCowp-$atl)KVi?darnj)#0$^307x zgU-{By(a>8WS+pl=iztDMqF-C@PkyZX`i26E1RkC$`2zC7M$@BK?k$fYBuUZWf0ew zWJU#E@bEHYV=I_nTZL1uL5_q{e?Sru(*uV(Be2dG;$ELd)5en=2uo$5HF?&N8h`EM z6hwiGeG=ntI4u#61+|@U8+;|Xino9iQr06@fOM#8 zre){q$v_S&wssm-!L(zW4fF;3Cu;n>*TddkmjJ0{1$}w>zx?v|uN)yh;Xi_UaVHYdg=a54X zTh?1k5KkETbn@o+QdI3~Z()2he;2rXciOPBA&5{BV&6p5 zM>{cv@*K`HiF7N1FoQ1Hb#7*WJUAm~qpncBJ-dC&LP2Zdt9^}M{TWks&zQ4LJ~l63 z3L&>Bgt^he!R;`2W+Rt5SUUGon0;qQuRO$KdL)54J6W*R{Y`<^Q-fX1fHq#UPxjs3 z6lbs@UHH65E*IK&;!D)yDgS0{t&GEWA-fB3<0{C8y4r7X6ilp}3GAL@?(Y)m`??#G z+Q8ElW_1yFFN~ECJux+AuH^XOTKs7ZH`*2Y6|%ZwHrgjMA@1@>rWI=yLO(I%ZtazI zn6JjM>&nY|JChv@vWPQn2cY)s{lq!887ybCtu3)QgAByc%da1Xp#a9V_FXBqZ${P~ zROs`4D!p3A8<}wujcYN3R^M9rCRgUB7QQ;2Q#%f0dV%D>qvFRD#Fg6&mk6h1w^(1M z%^^mvY!cPe_f4Dpc@cYmo!MnTCQs7yWfnRlDN0?NFar{Q<20^R>SJKQJg)c<1Di%` zg{eTPL>?Vp!CSIN;&a_1+XNv-&D0K}uaRBRz1RphGv7Cq@v9NFQ&r|}j5KM5W- zhjy?k0kTTAZx4UdS>!{l3TddUeP610*5EJ;4Z!Y)isX#;4I42-Z1H?|_zZU)EgE_g zJ%u?^Qv-cu&xGa!b5K<_Lgcv5jpt!Myr8q41GuRg=(44)q0SP zBu)uM7d|j#?anu`|8DXwSisp%*U9z`M^((zk)S=Txb_Atzr)S>QyU{n!7PlWW*Yw! zI)tw?%jVN4e$N-K=_Q<9feZ^8;mc-}f@!z^CnBJyhuchIk9*%WA@~YMp!kt{{S$jp zf=kM1BoYPLUp$WL8R_VSjSTC3EFz7n&_1&c?1x#cUfV|oSwKb#d_3|3> zAI0*XY^xw&1^Mr3w8VJpedaIKeENlFBay>_)cC{6(5}YX-f|xmJpxW_*=aIwgsYaKmF> zE4!1f^YImgVpssO1sR8D0ui1`*ODsX{L~5kE;-$fh&`n@Khl$gVHLu#_)Bf9?{ptZt#{>H)r;v{RU#Z834Tt=$HP~E)QwIsfQ3Sp^siil;UE31wvaw3;kPLk zS{UBdT<(5|cDLU9_r0MXbtZWuJ98Zipt0HS^4_m03>OY3sp;)k{oDD=kMh^O6G3-v z=&URZw_}y0(V+3W@@s|!P{WfRFqH1eKY5BIHr>1k!>K z5T8;X?Dn?v6e^mV&;7 zJ`@y`0=p9VF1@=l{}Q#Y<%z3IWY{V$99&QCT=KwKPTan--by%s3x3VAkkDfne5(!& zwSuEBbyTP16AQg11LzYzI}WZ_{$r2p-wT{H@q9g!l-YI8rh2}|rMID9WSNZm>a?QI zFt0wJ)0LY|AXpZ#d)ydBK)c5CJ;+}iX5^#di_(>tK1x1T!dc!md%DsCpUM+{jrN6I zLL897hn$oCDR=xb9^eCPLFUl=S{gae)r<|XCK2hI zruw?x$C%MNyre+&u9Z;nDu0A0wJ!7}yA580vEw?+QU0kZ<{CUSax^P=kkM#-sf&c- zA&u^s!g)$#5fy_U=Ki!h1{_W!4wWW`is%e;E7kb9r&<)N|2$;5<4P?9Zton^D4$?? zG0rPaMKhLFgH!V+l{p#1m-vdQQZ7Sr_N3ebExbr)w2PS^X-$cY9Dspn-DU8fuY953 z!cHw(Baql{HK04tIc)Xmti7llZR(;}3G9v_1$ALY2=f&av5rZ>Ibu)%vswBfaBnSO+x=FFT z!{B@NKUnrElPXB@#NMok=f4ZLM5k}yuPzdwM=T-xRG7%Prl15C=Q3hI>#Z&^F|?jGTDi!P(hO z4ioX!z^V#_jIXom`T40@#Rb#-Gt6_0>Jio%@V5f=!P#BS%DXu9wt#$@!U0h-nHn2xkJq70{SE=BUn zit~i$#|QMos+?EV^};glZm9J8pMDaiiWd_AZ~YY6n%P1@IM*bs0gSn{AgGgysfP=s zASOqNl+{`I_HM4$(;Df85n(n)GJ=<6p{(?(w6>O%+Zr@0>6#Yuf`(|lL(jud|J;6#Clm( z6wi3sDtBP?c$#97%x9$ z^K!mw<+qRC1}PPVY_hARWHZA~OeXDIZm_M+aIEdW_G6wtieM{Hy0~zW@1SUy7Bqfg zy*ZZEyLF^_Ep~a>P;g%GX=_o$nM&x~WQlU7ejL)KYEIH z!IL-9zK~f9jUb0-fOLzkw3B#b0Gm-^Ow1HUu?Fn~i{o)#1H}iP=jD`tio5^E$nA-o=*t)vTT5P11_hh7>Y&^K5WeAJ9wK{T6-MTo-+)bNNN zkBGYfMM#O;5Bh?Z7}r^bUPqLH6Thbq?W=;|Sn=)UCj_8SKFaa%Fx95YTqx0NU#j%a z;n;^suI!LXwVTCTN@YFB^#OGhfwzxnfU8M99b?MXoNhiF-pZX#?^G4R0(rzjAOP(Y z`zGk|g(gY)f(kB^sBa*Zy{u1>&y+niy>mXtp{BSnsV_T2HH5{Mk9J;K$y=EBIL?k zypd$V)TFISwtOiB5v)T4NU>+B!5Kax&bVJI$ICxya8Q3kD)o-KMmOePqnp+H&H^)C!swmRClYp3hDH#i^=}}&TQOfG z=cN%>Ko}Lql^z6{GgG)IsL<8f1P9MvjITT<7K{MzQOzeClBY;0FmuRCPRJFL#L#M7 zakN7Ewmvu5xim*WOPsipL4#j?0L<&p)QISYa@GWNqjxGk{pLD`apKG(r+*r3x!30R zj#m4zrm$vK?i}u9*cOZNo_h_G(Cqx%%7dIWran3+4rJ%tj%i64WlUzKj`^YM3oFvc zT)x1P*`$uV@3sED+$_VKRU>jkuRaFBP8MZ+JHFju+acPm%T~y$P82gnYi%0{(LtFm zW7Ml;F~BD^vD#=G_(EOUHvW1q+j*O(c)*x9Gt^!pW(c^_0lz7FY2db_rd(Gi*6XVL z1$H*fap}q?rvXI-2BNG~{doN?@`3{p{X7nKJDpkceP)jW8U(wu&P3y2fZN~yjRF4;2D%3r?hC{2v-NEg z{$#te!6NtBesApm?B2gV$p2yUxIJQY`~KUX`)v2bWcP^yL>Hu;wu4}Igm?D7n}3V4 zu>T?c5y;{Pi0=ew4>8>Z^3L98`df*I^#{}P15E!Ct=%UgEGPOI%RBqOaf$E`BJA6e z=ijmX7tx*2?LOgM43jN>U9>xU-?RT7Lxl$j@5FHrG4(J1V!E^cjS2S;*Mc8l`YovY z|Kz)YjA-22N-P!-WXIBrf{TA*$#5E5$@$;6xv;U3j&zxtyt=|5fAa`QF z|6is*ub1h6VEQExe28m@@t0S3_P1BRR&9UE2=9hOkK21I^Oj5Zx2W(T@OP9mKSOqB z{|5h4hH)Rf z+zA2hBMYf}dtl!_cQizQb^Ol$LjL_^__O4Dhy3HR4j|nk|EmCeANj7&6dGec`+R5b z_xa!JzxR>x9^ck2?p1>yLVu<+`xE`n{*C@;9ppZ`_3dN)cU9ye>^R%GpV)WyH}=2h z3;ZAX0#ESAcEx@0QVhzU8FOd<(|z>k?#KO(v-}DE$6m;Nrn?Jpqx|cRy|dDJ+b@E2D=E1t0bz!YA*GS-&S8Lo83u--OF%$DLRv|YMo_w?yCek!5fBiS zRzg6|U~Juf+xL3EbDclW;+luG?seC?*LqexKW#Ovixe0bco-N%k?9JS-2y~cF)%RB ze`pd0914e^d|V+muC6dB*aihfxBxv}>;MQGcc?o6;R(7KXMO?zzhtnCB04`m-}k=-S`aLg6+J5O<&)6a}|&b^q?ukFb2z_xv zQP4&I@5aEmfPr`3!wxc;)EF29JgN%U^}W+K=9^tuOc)~;Wyb6p7Y7+ARH9Sqp5_sQ zuBqHkH=Ru`w8m2DjT8BcHP{;SIfv#b4jUww7-Wp^Vyzvm?}|Hr(3-B-RZw2wH;AyK zYl*dQ(9j8YI^M|9bTdEg@NE{6U5iM0g<*arK7>Z~`rTY+C0#OBuG{x0I#md4*|7Ql zE3%YK5mdi0=0kByx^O5Il~LnRE!MygySnGUC}3vzZly&@gg!i0vU_=8Cp@DvWp|~{ z4yVLqy*%twzn!>-l6#3(f?_?qq|L+4KVkl*g+7R(#FN@6X?P~+ViRDEO&CE*_$<3M zKbF@#X`{yZ;9zQFb|{0`C1Ln8AR4F0095IDrE9=sexupdW_VsrIP@wtPIX0eDNQo> zq$(HQV}W8Sr772F_RZn=YF{0&-KRxbvztb5k5t1tOb%Z!uewf28nZeM+kZJ&1Pun6 zA$IY-)YjK``IbWeXGlgg`&*jF9+)i$2JAAQ zPZ)6g$t)>wVem;-^06VW!s(ZsB-GT#um;yDsG78T7?<#|+oy8NebKZ}Oa+RSc{AST zD$@JZS!R1#bO%9nA3wMRP?IKC4+rp8Sys_Ax)_haqha-#*i?0tH=wgo1W_<7^Y9Ei zfh*CwX`4l=YD;&ipBc<%Xb_}j=nqan6fjmXcXNX(;Gdo@MPUr6|WY#FA52lE* za@A(-E`-?cGpc_nX<-@t2 zCVHaCAz0sHfjTZ$$z=Pua_?5tCP&81X#V5;aR}%>8)3=Fy97>&;wogbB{x;n&PM5c z#xP+6*@%|Y{Xseg(RiftN|;<5!=AnJoMG`~=tYI9tie)8#p4 zb+E=s0t?aE8@gT>Cj~^`0vjmjdP}5d)USK8R(x=S`SNkk5mT0aAX(dU$4XM_Af7)l zJQ~?`SAV~H!sn(RQ)bAg zgknyaDiiBUTf9ggG^F*_EEzo1mi*#-*k@gn1*E$5@ECE~#GC$${n$t?ePBTMit=iH zv!+Ayc66~$z`SPZVr<%JVd=^n1Ls5!9tE9Ar8PDgzcKk4>HnL}vpWCp-suuo^(Z)~NxRTR_G<336 zYJf%aT2$9kk&JSnk%+VfOoabyKqCyK*Yg0*>MU zQ$rpt7S9Ll*UwG+oPFA{YK3ksmK_*?90*?7->?v)7ZJs3+`w@1lb~5WlN;LK97=UQ z9+`p}5_$!NrFE>fIUVB?#VChGcrnH-pMcs{gIXMp{YIodd4?sl%?s`N#h!Myn%Afv zSq%9vRM1t0+erHkZc6#T%3e2OWDNSuYE=<2^6J$yF~DPYaA0gxfXRtN-VyYGqVdVd zOEH9JeZ<;gttQz?o7ZV<=%GDep%U0PCGPJwhrO2pjCwM)!VyL-_sdM}Fq|@*A!tsF zQ*N?;cQ;kw zpr!%P~=Ie7ZWM7i4(+_ST{QgvLvoy1UCl$LTQ5 zNn6+#{iEV3`vQ-9!}llar2^;~PgpmvUhS+jNIQzHb*N>OAdMkxUli~B(w>`nq7%IC z@)-{h$IT^*;V*_;Xbe0!nar(`Y2jNKKH*Hhp(R813S^+$ww{)uCL?TDes&a=Hk6xa zEq?z{R9$i8uF)#ce~~cj^M!iX-o8-6ZnR#@*V~d344>`uo0mp>gFE(I>i}hjIcr@d zdzcYx1BKcalAbHZ=C@MBB$*h~;XPf8+w{M#XP(^(HbFX(<3W@g>zC8juLLp;r*fKW zxjY)Pc!~2Rgv!%lZ^Sj0h$6p&h;B_t`(B4k~*-6g)<&kH>&ldg|`nUQO1@d1#L z%2v}@rR1yE_e8S1#k$*N?CDUC+fGc>bBjztK;=CPcjmPH4L@@(8^@ST4aN)^89L_$inoA)|G8-Wx9j--Zq@() z+`kT}|C@c&|EmZF;xhaBm?WzufzaDW3{^!?%gbV8X0b|8%2$`-# z_H2!dQ+JrF74w+M*+Ml>*E0!H!n3mV=0VuZJQtR{Jx*z&UM5TZTAV!NHLZ9?9Ai&v z!|ZCeqB<4Z{FcqkFTPhCiASvF!h$`cXs-%2JcqkyJB#fWYUO+i`?5Sl+N~c{ez+uV zQF=RKP5M(jnR5HKBirj*oVT|}CO?E_K6TV2zv|EUkZiAhdsV1gC+0y)-dYi_aC=w4 zbDB(olu^uuJNedJjS-3itI2wc0<#W|FDZB+e-%OwBSo+mc3O>fZu`=(UMFd)BUJgg zD7Sz|KEmtVIRC)xMJ^0JQ#mtu!+|iOSq`9S9Cza=GYpF-+HF7tel3N#Tvp>Wp#qYU z!)9(fB_^bj&1!hG(cq>uSLQ6Y3@39=rz_f)ZZ2C$w|oHv%d?3Hr>mE$rK$&+KYO); zNtiYpU*Y#~m*x%~P){{wCvmLZ0AHI<$m0bqQFw9#Koy}CiJ&DLvDRG zK-=|aY6LSd@k2oO-QJ{ZS&k5LB;FM^+~_s-s{Sq_lLl(>&nzuFg}Ez+{7*yZ;>zV1 zMf^Wt`|p@j#@QO{y%>unJiVmoOflVnlf*)euj-mL@^%V(VrD%3DWER*dRXMx8!RUm zW(sq^(ArsvD>;R7FN`?zPtvf&g$teiiu0PvyU9DLYp4f4Zm`+1NOH>7-oBSuifevM z)mcoH68j=;)vWzUJU^&?P?@}#?^)W>t<_4RLXGHz?ydUPMU$yJJ)8yC9-c;8+UllV z!bKA6F8ME%sd{JVL!kU_W#~pL!`2C6pH6Y9 z8A1cDQoT>Fo>pgL_P2UneLAu9I`Dy*m=+I-sB$0B$~{uCH!6N=H*@Yut06d48Q**C zbtJcQ`U#1(A5BzqJ97lFH=dl%e6D{T>9&Q){M^u^6UXJ%!^E_t1PRfe(m8tR{vlqD z_r#K}?V%AZYf%q+ElSe>=^EG%BqV&z)hFqsgK@7fZ72igeePFQ?}gRgS8xyNiJhif z=WG%M%fo0irqbquG_l4wj1zjUEKriZ2*{7lA2FrL$V5yORzDEY_GEV-LHc6N;9uOX zp|U&SO<-=7(@Q|oi`*##4CEa&>VIe!^nQ|A=)>{ob-2HL%k#72?T0*2rdIBQU!te_1BR&7v^mjjOF6kFZMTB3S=4`=~^%5 z*<*TP)&s}l5_)m-$hL#UJ(XwFZ%;o^unuA;=#07D&))H&sI@k`%SVVe=ydNE^ggi? z+(##F__iC9#$eW&w23XfyAZ5LE&T1>WE-Y|ROi`*-l+s{fY}lZ1fv1_Ju7X3= z-DBhK@Kx7oWXl`0?ER1BanXZqRSZDd96{6k03I-_yKU_pP&`-A);@s84m=L;JJ(3% z_q+!rBH}PU)ydggKbV-G_7N|AmN6J4v~3;xT7z3D=M!Vb{b)8J?+Vj6YnO5VAl*q5|9 zuVgt!!MUOsbV-W+z2HYK({Y2zg11~28D2os1cS-ux4b492SVr6@vl@6nmV)ome(xf zKnD3N=9tNFW2Xydt9p98B-buDCH{rCZFH07%}#b?h?X~fwqGa*i&S1byFw-@_hn1$ z>+RU`0@SjLeFyL4A0*a(E`-O_cB|bzfq~xyfPt&gq_+}y_HV9WUK)Xhoh=n@3sNkdLu+K zH82uno3*XDsxUO!T}`k%+MT;+?|e*1FCG@%7dFX0Jdw?#Ph4;tyz_*6!j zyBq7z8A&r#4G8yNXH%1lNiK#x0$K*&vfsLEmh@VrKmBsQC)S#R=DccUuM~}#m*oAy zZb94}oN_vK2TjQ9bdg|p8T;3Bu@rU4`O1A4o2ggxL&ZmSs2!Q}3%99_)S^qc7#Qy8 zMfJ~1DG_=pb%&r(P!|XH^UJzwQ@GI*i0n&XP*}kNrOuYe3a4K-pz$#$ee0*WQ>xiu zdksM;RqpMrtz7IU15r`%y*uE9LAJeJNx?fWvZ%|&d@tmQ_tQNIM80DPCgOX8^jwyT zk?6^48X0OSa|5kh5RxMrqsbMYvL@0PRjx9BrzGvaoOeSc4q8SR-<3_r;b@JCY<|4s z>B*{>9AttA$U-#rrsnFDpig!QM@RU@CZ&NM9tHzSFZ8ey^`s^A4Wy4txfT2k?5N+Q z^(AIxWLi$_wlqJQzwvz(xI`ME>>T}Qf$zwbalh@ z;P?TPP)pv;X#SlkR{Q(U@lv{-Gc8}#u+syoarKsEKU^l&s8ZXUSy4P~O8Di zcmV{AJc-0-QWRs7Q`x}|?0iG?F+2o62ZN(IUx$lgd^8Cj=1zP-(=NTP$MLakDHfbe z?@rr}*$y|`ASr_p=Y^Rv+V8m3l^eh*6w6*zx%nH;B^+aJ?Jk|@xfS`vzZqX}_>?0j zoP}2?sUc8gP=Mk<)d3}7?~*Fz=%U-atyV3l5>7AkGbZE?@kMDTbv$G=vvu;Pfbxh| z)^o4JJJyFD9gKxIVPV0Pp*gECq?@xH`INV63+7FX|X_5Xx zkP4+>XD`!VdNKx)o<0LaX?(={Ubl(}YI19_t! zL7}SMwUvTS@J5$TJ7!}?zp9fguBiOeNfMY`5M@N~irL*Od{=pn3m*d8BZM+<`u4~{ zV)?WSFZbsx)~(%8Ty?~ynpMGMT2AeA#l=and1U4SB}=%`cz*JU{O zQl`b5h}VLuN_4d9oLKePxXSpLP8T`m?GVmGL4a9vfoe%S2~SWCABD~vFYT@~u+9?4 zm&!W&CG=u8fH~P}uB3jto)|Ze9cK?XxpdWj9WN9_uP}XsSeoN6K|ijVx{yF8SjiY` zI@OseWLEt3Jh#Y*@sx(rOezB&mF%sMw-aq#cww3DK_3dIrxXonm8|g#W7@s13hA%l zyu2e8Im_@#ao{eIUfPBNc7uQ~4JLb?!Hj?sv>iaOMAF~;Wx#%?gq<@R>Y?eGdh@qoBv?bg(DBD*9Oj#>JY^TkSuSI&h2j1wvv5T7h3xKvvu&HS;1l_=ZqzM z@~x~diE1)=582gre92NVXGJ6MVDA9#U-a9oeN*z;?%UKf;FyRqmCkogeQ}t{)}bfh zqfQ4F6>PsJrCe#u*^D($Zb?rBYi~8jqe!a&uJ@o80k}76gdC7@{jIs0aNCknk;QIx zn}*2@gV7km%&IDOBvssusQ`0p__pe({v`RpV_GD*n=!5RntXl5f|1#^rptKjbP?oT z`549T%u_k9=>;UG>IcJbeonAz0KygO24o3&_D{#Ch-cXMGI3LHkK}-{uP8cov~0so z0v%+pvT_((rHQ?HO=6bVp87&zhhOvU;l57I?g3T~Ww8>TUFxB{s;;E(*8MxP`ef5N ze>FDv0`b-6BUTw}D0U;9mn)uqDyq_b8{!AQe##mYyrpK9UG{FC#m}n{-n{x^|1?W} z@9RWsOm*!s5E}!7>#zSb(VpLxyQ6$ykgwD1yy-k*S>#esOG~@s!ou-skgFbp;{Gj%l@*xZ?EfwyYKwQxpagAGs_^i;-R!q#Y&-+H3o(s8;5~fbFir zt=x1ej&)R~I^KY{=FC3-(Z*iTsQhk6V^Gsd8u3ss_nL{trTjSkh>%`uySiDgjBG;HqLqy88g8*l;Ls%s64pRi}es?>w17t6xvvM0b*5M9Pr z?^vgk_T06ka_rFQ9w4|jTWM>hy}!ag!(~uvUzrch9~w%G+TgJOqzKBxiHA*}6;p*R z_E*w!-8STKSQpChc@@toIVC+r_n`9~Qlrz+@oD>2%OtIrqvShP3^zGm+VF!!i1y0; z5W72@&3zs9?1qgOvLpwkF-A|0x811;bLdOd_86}x;hRQV=C6>fxeuG^eY%*I-96Xk zA1G1Tg0;EIkl6yT^Gg)m<=DKU7v(D^X~HVKQs)5aZYVDYA5EvJk2prQCY-3+2>^s}m zx^hETse=WgCbaB~z6#hcIYY`q znN1dnd>N~jLjuEu7v(AejKcyl(Bld{L(XwbOuiWI@G`H+kg22XtEl;#|` z^C}Hh%K+%6TZiA8zaV$hNEi3{(;42znqxcRYBmh4aZBNTK}*-S3yFm`%fTxAq49y( zYU7G|gT@!IA9kD3unZE}HQC>g6+784vXIt!PM8f;-~%^M(md83PzaIAg5{Q5k%3Jw3hck`;8Lof+H=L<3*c3E!BLJGH1h^W*G-`GG8@Rq*H4zG?x zK;Y!je)^L3LuU$RKP1nt-BTX#HA>?fe5ASsYPotoGUVyFw33`8II|_R6ry44JjArp z9j#1JM@-I{Ot$t?My)q^vKuh$l3tl1sO=FO-7n0!0`f!Qq84KDZPOp>2S3!;Ic{H< zHc|}{SbVT;=~lOKX_c)->t%niLM*`%p-IV_*Uqkbdgs%KSu@H*GH-`V@m5R62+#LE zDKVCtBTq~H2SCHO93Lvi+)aB%H@=g6c3UI%BvKPY5Bp10-z4O@HuC;U4Zj0>Q>7WI zAbEbXmX-%;q*v!!%ba^Y61|nqejmQvl}cQhwpw(r&kZ;FB_kF#?|c!>#^S+qhb^no zmWf`8_X|eIsrQQYFYQsqc{|8AVjSzW%#$y>lr|IsJ65U%yeZzOdSS2E$M35P6?iRp zjn0uZ%(qchttv{>52A-mRi&i3bZyi`@C#Zz$P9;6W(^Z4 z;zggQAL=Fbg4IZQ6`|BK8v5F~SdI(k`k5AP13sRk4h@eFh=vIVZJig?ZJi`vu-Vau zm5Ar3j*ob`ANr*p#0Xd&94}WAEkBkjr?C;HptN~{38PGI%09wSlXpMGv;j?vMO5ZX zq!2T@?ZcrTGTh`YYiV)a^WhyDl*Gr+0Qu^%R!^t z{3&*mVQwPOfJD_?*PS9n0O4YNyX9${Gjj)^67qSSnWLs>$u6ypINjM>9$6(l4ZtB` zQ_XIYit;=4O=$^Qro&iPb=nMPyiB2M?yMab{VpFRrc6yd@t34BOLHA}?)bW7z-2{H zF8yB{_|(duSNr2E=SVT;FZqh4?L>9>`$6~?cwKN^H#w!Uc^8*d7A$DT4h~4MRJ;-y z$C6#$au>`g$D-CxIG!BowHccjzvWrdeZ3ns+hHR-3zP}$lY3kfS5nJK07vx z{J7h1{mhDFaZblq_Pkni%?SI`5Gs&vfmFVqd?IuEQemv>UtjKCV_Br>7eSd3?)3{p z@q6d5!o`d}dks<+nU$X+7xAfuM-SXRpKB#vxVU;>D81uE1AA=uq}IW=d6}1uhe;r= zoA~3BFiQqDzi_Bg{JtOQ-f*S4=aY7RRC*i<_J*1ABc98vetPpK*jCLn(D@#~=T%I* zF(RLk7Sp+q+MNqcekbeN2KlPDio9^aoSR6y3l^JWUD>n?^~bGUrxR1bZwWF8Ftq;y za6Y~$VdVbsVm|k})hkl-xt_+vo^WNt3)607@+jC@T?h993@Muq}VY z{2g0Pa+DT1q zH$O(rl0VM6I}~eDH)g%9uTAY;aBmflJ-PI*VH({;{P45S;Uc)?S1$T%o$!2#K5dk_ zaDHyo*S`BD1r67D1pH6ine%fa+{OiJ4{=8UkaqS%2}3TSd}Oz_B*P%X)3QKpY$RuY zy;D}JaJVrxaQDHbSI=S+40Upg-(^iKmnjJ@#8jni*wFVzRTQ@A3xT=V`&AsP*RO#Z z0rhz=L9^2}*O(qK>^OzyWpOunxp0eHC5Q2f62V3)b2z;p>`7`hv9wK!xv3C!SHKVbHFSWH4iGvt{||f(QS^XVZIkE8;!5te+v~#-=L}1 zC78UYBi{CKW2wiwc|0^n(t7(^%*gbs+eG;*mam(iZkmTK_$N8~Zi0P1#=CYFSQD+& z1va(bHA?uLt$hKEoY5{lsq$2S$qqkq_#C%Zwaa9n{Ny}*RR@k^*cUJ`La}~??+554 z8}Vq8?ji=p`R^-&2ZFLWKXOaTpdZYh5TrXA!z0DQ58z{AhPZ$ccIY#?6pMkr60aDG zj5L8H!rmSVhJb#+dU(?@ZY7>EY` zpiwU4nR8_lnt*Z6yn9o!u&mszXV)>Mfyi{&)txg{OSzU1&V^&z<9w($T_4*TGi9W zg;^av=3OL#|H|-9>?=FECwb8}A<_bT{6f5ZLc9Xv`h0vKei4wcI6zF`yMlkReiMh- zp{=?&@Pd87=(B?K57ytv|Kzp%j@**g))&?g6wv#w{)f!p)sl8#5DJQdL8P@+w2cr* zJ7z5feKa_XSr=ks2SG{#|E@ph{1^WP1V92J0CB#roL}qD8UHOnzmUKA>Hu;11`U(e zLieWD*Rc!~0`LL&*^Hnrf&$Dx$>*JHg@#}`LBJ@W5FbBWm`%$r17+3!Sz?YX_*sjk0p@_!e1 zwL#iAAZ=V7e=v)Gukb>L^ao8)^g9vkh-L?)(R4p*_{GIofYOrRM=VLzz3TuLfmW{0cVkrG+VU`h(^$l``I__v2~8AbafW{pz+FTc+cKT{Kv!BwEk$ z%5AoY>|S@8C(tfk*>wXUog5??J9J&5b@u%m4AsD`6zVbIG#cZ|jba*~=yL7VBUi>o zh6$x4)MmDA@%zW4k-Jr5wnIRw!^A;+O;nU{a+)1{h6|*x&R5>s(bS*T(_O`7-qcmC zZ5kSu{+Ss?@US*Hr6TUrUK78~llFu~UxJgYf-u)*eZrg$Ps@NHmCegZVdNcBzW-5)zL+R07|G_oi>52W~FTGTqL5(&@mj zi(I|aST+lKmX=1(#oB5YFexzpjI=~Y`j_+rclo>2FDzf7b3e-(=dB5&HxehPns2>vWnqvQFzvU4Ql zH(2AJwVVSme