From e09d61f6eed9f778b47214b0b52e7d9d0488adf7 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Sun, 19 Jun 2011 13:39:56 +0000 Subject: [PATCH] Support cover images in EPUB export + some full screen image improvements git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@112 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- source/distro/changelog.txt | 3 + source/distro/doc/user-manual.odt | Bin 52502 -> 52509 bytes .../comp/writer2xhtml/EpubOptionsDialog.java | 19 ++- .../writer2latex/api/ConverterFactory.java | 4 +- .../writer2latex/api/ConverterResult.java | 12 +- .../base/ConverterResultImpl.java | 18 ++- .../writer2latex/office/OfficeReader.java | 20 +++- source/java/writer2latex/xhtml/Converter.java | 6 +- .../writer2latex/xhtml/DrawConverter.java | 111 +++++++++++------- .../writer2latex/xhtml/TextConverter.java | 3 + .../java/writer2latex/xhtml/XhtmlConfig.java | 31 ++--- source/oxt/writer2xhtml/Options.xcs | 1 + source/oxt/writer2xhtml/Options.xcu | 3 + .../writer2xhtml/W2XDialogs2/EpubMetadata.xdl | 2 +- .../writer2xhtml/W2XDialogs2/EpubOptions.xdl | 56 ++++----- .../epub_export.xhp | 30 +++-- 16 files changed, 202 insertions(+), 117 deletions(-) diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index d04164d..4ddc128 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -2,6 +2,9 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 ---------- version 1.1.8 ---------- +[w2x] New option cover_image with values true and false (default). In EPUB export, if this option is set the true the very + first image found in the document is used as cover image + [w2x] New option image_split with values "none" or a percentage. In EPUB export, if image_size is "relative", an image of width greater than or equal to this percentage is placed in a separate file as a full screen image. This takes effect only if the aspect ratio is at least 3:4 diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index af4a3f0d7d002c18a476d77520eeaddd87fb567e..e239ad295b4d71e50cc0f7ef9dc3f72648db22e9 100644 GIT binary patch delta 42388 zcmY(pV~j3Lur)fiZQI;q+qP|+&)BwY+qP$qZQFZ1^S$TXn=kivva%{w>sO`HovP}z zEYRF6Par$IMD~~f6T-r(f{=X0uv|KPr|_df5iW( z*#9>s0nG9LYFPiTc6RFjue|~0{@)l42qB;m0ayu1>};cbK1ni#rdA-qvQ3GaOs8gq zk_wGPx^zfkU0#$7r8F+R&7Zy~u7 zW-wb#IVg#t;Co`#jb5pB6nXJ%eqd1E2;xE5Ln>!-wK$z$3Wza2MV&8IA8jMz+k?%FsY zKXnUvBPmYK?~Bt%8MAodYeJ_mf|4l&o(W7v8AvE%o(ACsARwR%U?8CXC#6tOQ2&!s z{{Ni+_rU&VnKTQ6zQR(XFn;o5fF7?^_#L1)QqvMPEv;nWZ1ylpPl|vexa?y|ixCUTylR=sULW@LjgeYtIeCwGic!s%h9_Ab5YmE!p0`&)g|& zp55zvOv-eI?xO;-K)Apq%asQu@6B_BR9N?Yt>Mp>y7s?7^B!GsKmh0iUP0CHhR(3z z(_#>ZVvdsgd_ic^T+qI`CtOa;28-@U8k=FrJw(FG=L&_dbodxL06lcsm~z`IcGkLq*|((+`$SlF}lB7DUxC z$=-|^kG;w*K#h{=ab=N3s%Uq3L^K?}j!e?%cl;D(vNPjCZ}L#!x?F_igZ3A3NSs2~=y zg6LFoV9s1;e`S-(BhXanqe&Zg3UJ3a%#5kZ^~ zt-}Mp%SAIPKe10=?GF%$WxfZb4DG1auqnPuz%5`?Fo9yxclc#R@uCAKDec5F-ZDb_ zKVDS|EWWSWHangtU#MNjf3g48>2~KidNV8vp*@O44Ff1=LKUMQ-Yv+x+jBL9PzpP; zo${GU(6N-yUFY%V3E@Oz;Mg694^jf5uLmLL{=|g7&Cu+CLQM`l=9CbACa08l2X#`Y z#7u^(0aMpH6QR#-(6B+cCT~KGvkD0hBx@$sMhH-I1KqGiBtiXt(9Z%570S zt`AJsM4HW}FMxRj_2IER9X|pchsl`~h(2*veF0}<&dP$sC^lNbpx~(IhR0()8)?W{bbf|>kcRIp#k>z=DE|&8LYFlz_&Ax6Ezn7tnxl}~nN4iJzO7|Za0u@6d=Qa$z1M)33Z%Ukv7O9 z41uv3sA6~)WZMk+Fg-=c%{_V0m7r=CLD$-rEg3|2GK+MUIy{5{$;fHjio*$^DAZfL zu&`pJBe05<#Ag!@tZ}-S!u+EQI>`%ln*bVH9%Ac0&%9bZDyruBhafeK{?h?Drw@ZRv@lEPfM0N-S%VXrtRW6^ zQxy2sKeY3>GZ|4ma>ATcxjG_RAgw^QbI26A(C#UWa80>lDxz&oZU*>?Ed^cHYNGPB6kc(;*4d)0hP3W1-LlJ(*QPs0iY^lW+&TVmU{H zas+;og}k0#ClaU%3Zo>`EkuagAq9D7p{ql_zP_F-qXJ{qqv2kz*3MQ#W_;=Fzy+9R z2*{jY5K@R4$i`4?U<`GjQ6$Ht58%X}OcoiozxQPn{~A$}6|=(I$u&Je>xll7R}rcE zMX2^K#e}^<-{KRkv=E|V$h7eEF&o7#RCuNXCdrHUx|Bv}j z*$c@ZNqghaT}>|Byo0$zM!+UQCWA2>vPsGz-sdMwnW<0f4MWkWSvwCb?jy?sMwOAp znFZ$BPI9y~`}KBIZaxE3-GHSBoNLIOA5RwtBZJkc(bT*h?xKa2GU_Abm;`;e^Lr`k zT~@#AsZ@t6y>n~Ny(~<{igeVFgttZ!ty8!V@{ByPXk4#%itR;-NTeKR6aJ|~ zo`G&V8C+$Cv6BjS#|#ySL%$G*z5w^dDYZ36yd%b+edUt50Wh$}aE{{F8I{*GX29-I zs)v8-FVAGUw=47O^APcXDj9H1#K$ROFcaS|luF8F6@`^lstM~Db&6R`Omb+AP2=t; zN_GdMW0|V^G9eO7QcgBm9*LJ&(8Jl0#4<(5WFMal#-(qE4Fc@RNrt6}H2UUF?N6q$ z77C|BNe4Y<12lfY=fmXb3M?Y?g56h&IF&eB;NJrZfqkv1HVY-=SvBW;XhBu=?9;WV zU)4{6+}>#$;TUO`B7?)AIFHpEiNH@KdjyxzTiKW125NjPt+K=Nlcgbq5HA81)o{={1-0x(ki(T26MMCr!qK&Y$#n(M-g z)Rsc>bqwZyCIl!;@wOiS5)>b%B_w|4TbK5D`}yUQki&GsICW`LUtRu_P)eaILqM0- zLJD;|nSa_LqUjXGgiMBaG~2)r^9{CKJ+ajNDiM?BhJ|*E&(L=wzk{r5hk+dk4V5At=Z^HECF7rI%dJ)vOt)`8*&%+f^`W+ zS~)$mG77NKU!0GS7l}K{@OS<6?)s4azfZ#JY7KCYC!duHYKzV!kr>mV^$X6ZXpmQs ziEu_!P(XT`m3W%Ww=g!p&bZ(Bc~^oY*Kz9s09}>~sFR9q-VuymU(H2z9O`9@4P=pQ zRA{eTP+Zb8M7VBPaHUqvM6!-&;?NgWB=H5ME=2~$te0 z0Ro(PdgY}IyRzn?a5p8*w0qcX6zY*68KsJ$xuIzVb0=D_EiSu!l~rY*w?k8CV6X1X z;$Fm0WL1h3N@g1?R09@-!1s#BnIq(8Q4l~;`ur{_4rChQlbUb=f2%sFe zX!u*<>nz*|`PBVFrxxk*ATvtn%Xxu20G^z@K;hLz*|+C?@)!%Z-iZq2gW3IE8>|7g z5VzF<)w-G!qjwleIFZr96a9$}ZRpvLSI@ee1xXCeY_@kWnq)o)jTQC_Cj>-*2$*`O z9(t>Th(Hf0Es8SN3w8=VscMIqGaC)blu;Tn3}fzxlQT0c<=lZE3U79I{xpd>Hr`)4 zzh{RNDB~iNzZ45t=Z{C-q#bTUWG=}l)U;5F^1!T!u__zMV$>3V2&FdxI2drYiVh`d zckmcLakO8GxH42hcyYsE$yt9lq5#0xi@^PIC1)?sLa@Q*!KmssT~&}A6Pc@$zC{!6bB@+;mL<*#SR2Skaz!fzba){BOG1AC&9AU#xO2|Suz!(acWR`XKx10+q@h`8-Ex0m4 zE?jYBxN54|DJUNoJVW4|X*sf^A?>E-Hk&2a5_;#V?#a#WY9_+_Npw~Eypr{)-OMCsHM6f>~(IA#gB2TVKaa*>zP5%p@} zK49kvI2#6ZKctH^&I>}GrF?LF5%O23U4R8t0)-V&pY$}|d>M-sbThTgZ>7jrws2u- zXkDo{AxRCD{lnM%NHDh9iiuFggF3TGx(XK@RA^Ed5Uel#DBnS`o(Yho5R+;W2fGd+ zg*0`aAL<#On;f0I*zjs^NIniH~EXI^%%M)_GOplSU8qP zbVm;0g=865NPEcC+lUM%b&dD-hudb2B8=NIH&#gxO0wH=ZwR6Ce{LnnpVPX=spA*l zBK-O*V$q+^&mX5R@cWR>TZvcK7Oy)>@{Y_Av-hPbxE0?W^5^R0*R$*L1JSKNKmT~7 zNE+XfMB#G-Z>r%nKW$plQaQ##Ep80TneiO(OV5YY!BWbL-RT71%-YT{6PI|ZsfZAM zT0oh~cq6|g3DM@b!8NDiMD;FS`m18?JW6kMvoTr`A(~c8ufKH9SbmRc5aVd#qOcQu z-HDe&RLk&KLtMgaN+6KD!mRY_`hM!g1|4F~uY8iO2$8wwZevA#jGpFwse*#I+kghB zxID?cV_8iAhu11m;Plk2Izlw_2O$`xLYr1~EtK|laVLof2{%N>W>Jge<)J<~*6dAd z((Pk*E=srDAJ(DTFeDtjRjuQb=?*`ki<{uR$}@1Qo2#d_q1V-l#9KQduN+!+;gIK2 zkN2CojGP&yuQu$h;d(6`WalDm8QTC*Q7g}>y>>KW4M92vBOeB|ga^{S2Pd9-p{$23(rTWkdKJa~Sm`Ox;iFI1C9lp*uIqT~G04r+b64nE%dL9yw{zL;rep=oDzogd z%u6Pek%_d9DeGZbo}Icq?hF*h-N8D&E1`h6n0RZO{rQkg)bGgDMu551w1=-1j!xC} z`tNz19a%h-MlLt+Wm%E z9g~=kTkTIdG z_|g6DBl=p2O&KPX8uu%SAz1|LOh=@wl3~JQ1G1XZ5}_wHbal^$=$8Q=_FTr9H3N4h ziRi#HsmTTq7aIK#iWSTTUylk)RNqxg{09KeDws0g`{8m935~CLgJ0(i|JJ!4oImRL z;(4Id=851W{16RWCo(wAlHa48Mc{#fG7OjkDo$b3ptH5q6MMz&bT8Y)F zb@$((SG;?ysnRT*yCVP?H2kZjvy}GL6wV$58N6yse7*Esvbj$OfnIL!&u)%!6OLy{ zkh(n|D}lFNISHxHK7rOV=1x9A7RU}R5axjo^a7}mVP1>MwAg#UN(P>-6aV?nbZ@nC zU7>rCVK|?OS?cG3`IX$ z&g)CiLbeR=B06+a=#s#Kn&;&}NXHd?Z`DWeG*qYyzXLb^Eg%%Q!Z8ByE^8;<8pQG) z0SavvuZh@H>OocQ*pcs$WI@ZmAa1BjvG$%6$a}0!Nv!3cJ5UfK~E%oG%YCCLMV{4843O*?(lUe-! z`}VUl&R^!cIUz<7`i-nq+S9lgT)33-lVdD~CN{NaP1?vx4H2sO)#n)YEVfJmGFPFR zK!0vM7X&BLv63YHC>NNntke^9=~7W=a(kGQI?9-lrDmq`B}%Yt(OOu(lnWa70LoZO z8mi`tCkHqdk&>$hrM58~>ee{m?)2hUU14ho$O#FeYpm1-TecpS>oiSeX#q#3x(UzA zHw2nx^=iC8_lMib371x_jUls6ybf&yK4PA*1=*#rK+oLUCv8>aFv`p`1L-330l6KQ zEmdQjLRS_u)Xlb4rD&;uM^H#G3sLW5mYL{Hm;mICER;lSd$gb&JulFr$xH$EDCfD# zTtPoJB9-HjLO5BdSvL$?gZHtF8ZNbd#uNh93H`$*6k&8+gZO^*OkWx;GfXmXrNLCB z+T()^?G|JT(+NQRx`5L@)9wP$EZjykMt?pb!!zrPRUdQ7A#M30IuDX3(r?hGi&!r` zG65_O*QxunYdbzmOT)$}$CbF?F;F$t&VocejP9}OJpm^f7D<80 z-FYHj6qVd)Rfv@?JO-)7C%3uGGK{{8FrU?M@GcsxWuBB&7Bx&i;>2&$j!~>CvXF@_ z&Jd;DxNFGQnTCPq zk<1(8qhtt{urV`xmzFh=uf>t5QK8u#+4CsYHAjZ5!pLnLl)M}+n#Nh>6j3zl#d9kC zE%AOSWYpJqv#G-sApo>r&o!2t&08Z7l`*Ddg!Xu=gP8Jxx)y;(7q+hU3g|LO{b=~A z=(u?2^K3r32RNJur@3HuC*zuCPR8;Sw5d;$-K%^-uW!U2Q%8Pq#ZruDzd#b*?!1}A zQp*)z&Bz_4_2h2@F5$u0Mud!VKh?2-tB26FIB=P%8nP z<}RNXpTN zSK~e!G+SNrLoedCoUMjq?u0b+SVoEoQlD~62$1u?%!x0MfPNe%9dUI54~2 zjFi09>^YBaA=+~i;{p%9TzCK8T{a$bJKKGg5DqqB|I)LJj81SYRv_x+?a$KHI=(G& zmnhQgHGoza9Ef5#3YN{VST}%>`65{=XnKSFsplIWVh-^9OSgnu=ffEbZWqEbk}_zH#?9+XdLo6 zQMA9g3~jrqzLBxht(-tGmNjdqlG&-BA``8|?rZ{*N452kgY2Pn2>nK-KvQ41=Z$Jg&f z=kQI4C6)UO%^GzJh3aF6MH-p&=|==HVUtwT?rh!V3jW)%qi^L|sdPwyYSf~mlauS} z?d-SHd#S6hZbs?W6jEH8i7c7{&gnTE&LV%|)k{;vnjNTPIudc`7O_ zW+F{nV(4FHiabBUP_dk;606C`R1hNrlnTq+n2%VA4@#1x%%5&-wKItEUKnB6fesNz?vq9!q#5V1JRdNDiqn20aJ8HwSVTM)XiaI^x?;9$VRs`voppe^I%*0vC z0A4q0Z0G(j{FaATJqexA#H-9iZSicK_f{O~N1FViq0~)=l0?TVpdr6EW^H2DgK!rB z$Yup$MS?S-;wl_ZAk~}}92OPI0t)4Tvc{yCsRR|pkhS9jW#VuCz`-j~Y_nJLl2~Ts z)Yt#BkW|}b>_Qs__Oq#fd?HIr#NYGFp%TD37K&fKz)W($X|U|XAh@1QqE3g?RT65< zb#wpcgU&o|eaeQ#NSGEtR9wr^*3?46v+pdL zMWD+Vt#wx+hT?ss#Gq9 zahGK2l z6+TPNI`B1Cmk+{-U90WU;$h33_8TtS7G=(wGm8v@D1b4S#aap|HaE1drw8X57*TEW z6Xe%WFD?l$*WV`liKivA*H`fXN>Za=CWqP}8M|+=m1+(6J8cUV7R;qgja(|lzN5@< zqd{UrJW>R>cJ;{mSEHHPH#g>TC=rq=Rj{&dTXnSRObh;K zR+W6UQ3_j-K3QH2=JvX(u4)FHSgo(jQ&-{_>~f~G1a)K5y{H{OQoH&IQLB`?W$krn zy$&lCEYoR2%w{c9{p(={t61t>{uA0d$sIiOfH6$yQizy_JTDgbCYWwoi*zQ_DvXB1 zK6BxYjHbso(Ly{}?*p}R6jXM_VO3Z;1}^Yx!L0h#fu+JKVuE3*6Vf|nyE0|Q1PMmd z{FfH`boQL9Ep{u%SkwP{q)fLsI*->u%Q;??9t^6aRr*GAJhpj_+XGu@AZq3<(vsVy-B5p851hX6&-lr5u3=EsCop42A_IQW56n{8gY?fuL+%t5df z3@gwGOpd}hRPAJPwNl~9$SwPxqvppB#u_l3dbSTj|1FjU$@6oX8)U$k|LoX1h+hdFKlT`}k6bk=+B`>w=n6$5e(? zQ-hr@W!l6Ty$hvUp;U2$FPAf)f@aZ#b1_T_cioguMOv1zi}%qSOFG-LCvJ7ND=hOU zQK?p^r^&B{@`)qgE)Y;}Y}?MuZ4;lH z7kiX*gf-1-NXtV9ElZV+Mhz4#U1;vOo{D~Sm$4A2A{fV}YL7QxP1)U;_cKe>E;&uao_vICY4QNp1mC+O_vAJ*60HNM*brH#{6Oc5@8Duj~M;IyySoSs4EIc zPb63TNs*=8{v~4x(gF?_htJa2D9>`Er>m#BGPRg%OQV?bHb?PKxMav3+`3xe8&%9i zW^%1m|IIjoJ{DER(PYttom^Ek^=T;JOUods-sL@O23?zTpm#zANDjLU7H1p)FE;?FVvElud5L__-Lt*_=4H=DcA>q0s#^}8f}5*iaFc+3gYBC z|CYz{}T1g(N2!xwe$$oU9ciM%6D^Gr17$##DF?1%5_+C(Gc z7oeSrf?FT=UGIr5AnkroOwo?IFa?>#pwyEk&bZ$=7WK$!GMtjp_{W*ZOPf8cUzZ); zD8_-L;&Ff{Kmp80SPcVxtu}^XqPRj`2wl~bS}n7R=fDcB0;;EV-f@wY?WR_?+Q`k9 ziRpG#+-Q%e9K)PJF!7bFimsEtSatK0E?GGO+Uk|_A~1|LFXn34*Qv=e=_bG~TgVhfvInDeU8~;F#Gnuat{EH5#bTCk5(Me3(jRd4`k0!;*UK&l;(LK~j7Zc;Q z1}5T``wK9Uyw8HHX3H81F0RXmyfH<1+dG=D1bJH(_r+SZ5R+5qlU8_QVs9A2C7e|{ zcT!~HEh;35TMDtEF=^Y*9N#zPft+H#-<9(91(CT2^TKc_%VT@4DTABC4Wz&YhqakN zxoW(N;{s~lYvE;dUsvYXJbUiQ>VQ!adzbhp z7p%2+x~RLG-gY9YO3Q1LAxd;r$<&b&S{|h?8@gcruD9~mbL#7OJrWQc3}zXl2723Q zqrKwaLj91+xpycn+;wTqK0yVVK;uFJqyqE`l^UellKYB<9SImS4sqIVXYCtP9x7C= z1xPjoNTuS$jTk~5gkK7k@7URg2B(K%Ivd=ET_0}=8lTEvbs27#+V{}S%)b{? zjT?7IbX3R2SVQ%1_H?feMdD&xCeeg$Tk+oui6Bn_p;EMAfn(B(W6_TY+%x0wAlfWEeCrXFLC%a^mLZwNEIw=CRsivpLEq6e<;HK$9XwT_Q<+{cAv zg9kc;&EYA-a|O3y^I{`tTrK;;2FS%x0>`vaJp2dF z$)~{Q{^^)|-gu+x43Vp_G?0qE$?qG{1Y>?oEAztT8>eEDPYQ`^1TV(nzklJEDM_R! zM-wCaUPK0EYHlP$5fQTk>51(!nj;|hjYhvVVDn#_1@K6+1gBhqvpm=|83fkLd(J(P zBFHJGAbt?d01_uE0&MuscMSOB`QPlV3s*Q6Nf>|$JQjPO?%a6 z1&~%xFBP&_YZ5qLNUK@-j;7#ch7HrXjila$!SsCi%24j+%*pp~waWa5|5%UX;nY

wft~;%lRqr9?7r+}sS5yN{)|<1h+HUY?8aDZfva-6 zVfW+ty1U9PNjHPCK(lR|6ULEELsA*nCo1Z4IZ*X(nj%&uBBbZZpWMZa`?o$umX*9e z>T9B0+H!(Mgo9oce^-wsdyppaJFw^0doqg~Vc6KG(Tqoi3NC{SJC;Y1PC&7xNQf$# zv+ISg@C?9aAIN(?jWZnDCeD5@K!UI%7^TCJQrM;e#ypac%6p<_Ct2^7F9{m5-#+n% zM4)7BW8+@9TidL2-4Rns@r2lv*Br>^0wjr9N_>{#u~ z)(97wq5?M^nD&|7mH%S6+j`T^%D}iK8)BW(jnQuVZHC+f(KW2Mm=luB1S??{aTYpx>@3hkNYC>66CynWrcP2C8g zWjw@|;#A#2&+WSV=9Soii_dLp4|Q`YWcs#iqr@d(ouRHJ~<$o8IRha#lXT&6OaW z7Cs1O>A{l7pbS%1aKpqiY8lOwzLi-!sUG`*F`wIBsD53T(-<2_+QFnhbEG$C(G9TP zNVQA&x^KR>R~?*-&9B+al@Bcr-2}a*vI(b%*O=r@gQ_{NwYJ4~!YufXKH746lrDze zximlu9DLUD(t$m+9;BrzCpG|sNI50z;ttl&zx}VA_)xlK;%;j@9>%fQe2>C8wm1AN zA{*hN+gn^wEQEMx`L?`V_@{2;#{q)*hzRKS^SgzodtRhI8XjplrPeXPC#tGg%dz3Y z$@Exp^sefT&t$Jsl({s|X3fgiN^zi%)7u8=gL7AwJcKst)%!k-MaUjx7_pk+xQ?A+ zbZ-7Fl98PGwW2v&)W~P6(j)I(|DlcsnFvTdOT>ov;jGmPp>@q5)%&Lgz(h}5jrbDC zWS9GAFFr8)jaWCK8j<+{!X9hNoxUtdxMBM4ny2coXiOlQZxP5D(=WG|x@qZrqu^yQ zjS5Y-e#^{Z(F`xSV)BqkcJ7xZG`vLpv((J82&hAw`B{P*!=h~pb7fxU_Ygag$t|T* zNa4RJd5|k&B;IDm1+^7CKp_0D;69h`!kqVcxU#YG32D-RocO%97Cel&MJn_v3>xAa zsKSQ@`?WzE>EHajDlm48%IMxRjyd5gwx^;tkx z^Hxpmlan?@=}+kCw*4-F=Njn)NyF|{Y2kh%u|ARft+79Jhw#riesQnr3d`7l5wSoL-4=(CM9D4N z*xM%Hnp{hzv%Bld0MJ+IuSZs4t`=R6cKwICsH%`m+{m=q$F1lr(N!1+epn+!+do3; zCD(mZMyV@2ltaM>Ir^^ks-rR7wd=rvGy9MvJugR8ruZJ9?ifCiyEU=sp{xf3|0s;H z1_qA67knf+nVijE8KXwe(TfK=ZkZh;N6uhE@fZ<<46Ez`RDa0swSka5GH>z~&!yu6 z2~o1NokJ~=G+RW`%++W|izd29+E=!G*e-2bc^BC!n= zKZcjfCB!FjDDsF^DYCH?CmB|sz&jEq1rbSf%W219wbfFMn+67xdlF%2vkP+G`6Ud( z75zDydipj4SbrJU_#*$ewfJG`!5+DH1TB6p;d@Uvw`wb^m+ zq53N2iA<_jo(z!i9M$l;N-q(i-E~qLRM4P!ldDCd|L<4nX=Dyz%NeKvwiEwrM7oYV%2b1aS^u zJcFF%_!3AtMG5WSwwKylq>qR>clIMJsn#Ve@mT{h>AwS!ku}L8T{NjdTj{c2>VJ1> z$fjd`fDZ7=sVLkI{{%E%2rW_-HB5scnfQA0#53gN**13qOCi`vzcb043fhNp|NSu- zz_MnEWrXgEX1Dx+>;1H}U)1fp&b%xE8KRWt&b*pJc6rYf{`wkT%KB8~nj=6k)YXmsUoKsDnYr&e#q!SR+tu2YCV zpg{51a(d?|8osJ>;|Biz9GFCnlrjsB2xlK(ZdS)aJhQ!pQMymq=5n1~bf$GrM!2;e z9g0x?U~@};7TNSkr{)JUR787SyyM?kRtYU(wNYgoiEZnhvQ_UkQ89%QFnAQA`3eoS zM97pCg=&C9HuA`)lz)L$v?f76rFh^6VAUfSN@lWiju=M9ncj7;_%9jl@7W-Ud-KdO zH|_SirN1MJ)&{{Y8+Em1lN&r=1`Z;K!}EwBI@$I*FN{H-lQ0)gSTUuo*oFGg!pAz z0Yu*w`W92|>4sK5FP&uVa;(8r(yu}0Rn0j!lHeSlEm~mzq~9K$}b>sYrm)*7Ey+-m&Xa^3!e-ph&^`ykctC&dF`*Y+7as3}c03=tF%5SG|F_nMVy zo&UT8bXyGISFofZ>sK>EsNT0f=zLSN1ymnyD_MD8V$ zQ9a@F*oz4n%*LDkF7dWsff)WLF#llra1RFNOLi5?$BTj4@TaObG9eSbpJQX+LBzJ+ z^-5w1%tQ`_w~StdtaBKE1`ZTvMt#`1?Cy8}*o>4+P8C}iiDRMwlw=Y}>Np#>H6by} zjVFr=Lrh%Cd~fOt{ijM$*DR@z`UDLq^|zs|Z=Gej3twKOtj9vOP}B$lyK%GbYpka4 zE`GM6xwe}ZRAH?_GGy_X^n8Uw7bt$tNn}*a^hv?T~|8VCDv`xufL5*DV!fv8%dDQcqfDYas7mSPQR{fpn^8j; zZ%{%QYyaalIi$XAwS%nar0tmP^=={f>#!IKT>0j%ZBw^wz3U1pNbc1xL}zl^7nbWSCo5RG7OQ}L6MK|T7L;=b8K6s5LNkHSVg7K&v!TwePK)%<8FytmtKqi_? zyWhE}CR-?KbVgS#kGWpSnw;eI%jj`~!?-P5q!b|)Q_cy;v%df05Oy}wy99NV(+#V< zHgtUQ62SD|-FKB!{PE0f#V#M$kUEF#?IiYf2z20f{|FzBs@Pev5~bR!hH#J;B{wkm zHDibBr~s3u_~Zz!)@zNn!*yf@P<`W+p`HlNgJ4p3Ew4qRzpb2@(a#!>XeJuJRnV+9 zhwC_b^JAMvWjEX`P6W--7#>|k7Jq1X_r6=P1@yj7$=~%ht@_lL?8>}VGOxT^>s&g@ zgS@ybS981c@YiBksrU9*E!IaK{_XNW{gv5ixE%-P3cQb>J288`ZgO!e+ZOr&*>%eH zdO1MGTY9*T^#^zxTZJF{EWk%~ipenTih0;O{iOq~ETt5T&G>HZkimlRq(#h_Q!rOw z0x)oSL@90(Ei>g;!?j7lb;LU~I+`55KIz$PZA=xN(0htZXAy(bbpyi(&nYZ{ks^L< z*Fz#lnCr>&25X?kh)OdR>Kb!fnPJIK^>vPih_e5v_ET$kkl^@WzWOmA7}Mh5v00nZ zgmp*w`upcWQ;#AUxW$WcFmKn?MNxi<0$z6BilUrF&y$BCT7@-TWu8JMkOMo;i{vU# zo`J;{GUPMV15ozH^RXylc%FGNyb_H4{d6MbfAx~OoM><e6;^rm2fV+`&hKWk0#7tvNGppW-^gtLsmuWws`bXsHxra5Rb|175Ky z&B+yycj!v72I*`pow-IsDp?rpNKoOKHuAiZOl_VU+45~p*3Xz6-ANCTo^KRIO#=0L z;Vww?_>C=(|IJaI%2NSdzX8wE!@aCPGd{yYPnN zvuTFZPaZGuufwx>wOGQy1Gxn@NMY)zSe0#!)0NSYuX|#BWTbatNslDkzL~aHrfOpk zLcF>Rv5KZSx@qhueo7NjJ~) zyNz|3%jh4L&R)7y+Q&D=0OzyT5uMeLN0Sq@FdS+%x$tp04>ShZgIkR;AvIXNWq-2e zN*-t6^piSw+)FO(?Ze2`OMa+c_jAQUiN)_X&t-ju98?gvH{rfKDd&75)I4kv^3Yo+t0Lkf1Ses75cZnwZ-}yt0+tG z>)5ioV`>mI(2p3aAd_VB-37|b&%*+=VP<8Zo2$p4$Qi0Hib)*Jn(P@6YWVh@pjq2s z>HN^t$MqwsPZKO^E`4_(?EposBwr!1IV@ZmvSl(kH{(PNA!oRA5VK@1DJrlz$=D5h zJprOQBJ7WKxy45S3W1z?|8ANu2;?SY>X$!hd1oK}&5czWg;fwUgg_FH4q~oduD?a~$=X@keXT3f||IAthHFmL>o9m`aA=I@FGb2GJe*+Mx;>d49N} zJlu*Ce&7$vx#1PlKScR!-Vjlbo!N~8E2ggP@j{9#!vBr{?v?#6M-5mBRzB2`oN>~A zoPM>A@DN;Q3{|`%G*>I+h@_#4)5VF(e7@Gx4EUlZ9*1}o!UOLhTyB+V*Q_0xRj*j7 znp@tI$21tyO#e`CWoBYGJ5w~(U+hbx(A6dwW+v)AY)B$RGOGGDWVKs1L zi-XkCHuMMWVqo#U7G+8w+WK%^I9)IEbw~*?n*(xyXRGINld{hzsfTjZkf{)G zr8QBow7jE&^RU2Qy4>Xc-`G4STX%v*&y2)8+owaCw^XudwaSxX6diRb8W+C#`e&7W zPu);}oSq2{DEup|!#KjK)e$Z$Kx_(Hl|7*e{@FaXk_}(>FKLWK>@!}^)!FuzSTg1{!~|`4B5gPuFT-H0C=7z`i>G9TT%dR@Q}Wd z{OE_cT}LE1X2p~K*&Xg&=IAkfAHfGYnT7-;_T&FLSA6!;Jy6OSvo>T{X&L}r zk%brJ6)9PqdQe#2dCe^5>k<*0*o2E3Ws!>(6!cLF3NP5H?^8aEhVqj0B<~s^h?@x& zO!>MU8_4H0*;8l9D7OLV)MlQQC6qy%c-~WiM1%>*RT#$21@$LX(vTU!$#WEpeCShQ z6!v18B-Eu5G&FHm}8YL3`d8^Q3gEfO?qg5*1(jc7$%n*lcVYe?mn#zZzy0Cl*waL zWF`W8(hddRDP2F7A`R2>}cU0)raBfGFd&-3i_eiHN=u@95Y7%5asx)ri zfF^^uGcSsfZt{z+vtwth`kzXp|9kRgU=s78m0XOkEV^|-v8ZL!p}Ib(@m(Z1Am5=x z1mbs60Tecv(f?2$erq78eF>m6XxTn-9Zu-gV6l`(|5+Wp-9xfBbJC?UlJxEU-c3)3busMU`L=?A(Vc;1&a4ww-?t@Z zOI`jvP86keRfg|iwE-(-@>3M6SKo21meDukc{V0RCZ)85mBOR3ng<{k@T%2e`)PVK zd~5(v4z2%Qf4OIsRL6@^Hu^X_H+~?ArP%}93t7&S*k6#iO`nju%K1LfQ~nkFW`y*Z=)?}#vMwWo9QS_U|qE=Y~ZhX75Bh=@J z^78AMl6>L$N__ASBf<9R2&C%RN9&Gi!G;kMn&H=|+iSFX$YN(y)U7{62e!5O^$m^| zJdoZh*#xJZ&a*;4nwis2-N5h9GIAbeD|$S0r*8Zgvior69KjFRkY{BSf1ypT9*fe8 z0&n%N6HEm;>gV2;RmQ+}$4Ni-3&Au~YV#|h_Z7R71#Vy6rc3*lxbY7& z_*ndD>Z6s7&L^D4KHWr-gKl2bVEfqp*{5=aT+fUP59;YJZodyY9wm53&Tj-9l@LFV zWS;?y>0ligWS6T?jM)yZ}S!U0EY-LYZlrUGYM;0P&a_5qS3;Krh2t->` zTE5Gwc}#&pMtX6yq@OHn>^EWXN;+Z`p}{zBfMtQyfq->6u$V2Ye}{knfBycrxe{Ne zbMW%FWHm;?eG8ZGwD;#3DU6V<{KSTM|kJQ0jJXb7!6g-8@n|@ zHuB-T<^{mu5gvn0QR6QGL|^^${j0CDf1P|ai#l=9^_lM$F6l)5>+7#)FDbHJQu(+H zNSsi_QgRJS-f`<(Ofo7ex>p%ZUkLO+Et6mZBT{I{@jNwXMCHMe2 z1r4Es4_psPS;R*a)Q=%_Ja*fRy>bB75?bmoU3Y`{5l?P3yt;RchD zYu>4Exn~>?pNBulXdl@Z}0Q~e_|OO@k)-0p*$iGDr8)1 zNxX*b04cFBAxohD`0Iaoo*T!}9sG-_5P$pe8-P>x^XhgGb>c{Vr`R6UENKlkuyTGO z7g?t}Jlo>D$c|Od*lSrq%}mO&iV36JnOYu7F-8)mA`Y9)azVGFsvI#bqjBQvUQ$0a z0Ia?>1iZBff3mPBB(fiY++~i?pC@jB{dJ?i;Je2aFWXY2Cb|+U$h6D61kof)QWnm+ z%&1y}9a(g%$)XENF*C&bQ92GtIC$*_efg)saBK4*vMvr}yuaj3osQHL@~+ zxm96NKwbA^rI+UkW3CDTEPt{V@_&t!$^Mw~%ImaGf8=ckf?R~aln;LR^ycV_|M}~6 zg%aMzI-|^T)5`EwO|fU1m02t!A(T;w;#uW8$KwZj-tH$!9fH^LtCQt0d36;lTOp2R z-6dgGzBlc`p}7I!OH?e%-X*&>5@m_bG`gAG@5G9dN#Lh9#8fKQ)7j)=h*KR^TCpS@ zFJqFGe>a$VDu0CokPQX@rmnp;?xo5ccWlEADzu6$3YDTl*Z_jOH*o!sh1)!kC~M4+ z7syYXJGc+1)iV4a8OSmv5pSvdUh;ewv=h|>8EY$;H%Y>#O;)V^0G`wvr@UhSi(*3y z>SoD_JGf|&Ytlr8^W^zFe1)moImy9*X_cZse+tQPq~NLTb6#PAvzc`T&aBD`oY__t zI9s!*z}dEH3Zw$=eL%>K@714zc~)=Bi8-Z%d^TeH-Y;E{?!MAADyB2FO+J}GV!3^1 z5=Xbb$0>R)*PwJzK4mf`_ZH`|%Twy}xGG_hYhAWvolBJV0DK}~IUXbZF#3i00gWY3 ze?D9&Vc(V2>`8r%LSB1Hsq#407=0+KB{_c5T4Spwt6I7Q8hrsDvUrD;j#0Jk7HxTk zhPBzutFx^YXOBgS9p+$``tz>NYOZd(PG#HK)qrf1SBoV8o>kEPoeMPikH7wJ3|@!8 zi`EHQvmA5dLuL8p1e7f7{F&07`N+d9e>a&vUJBsW2r-Oq;10!vruh<$IE9XL&1N--6 zdlS?l{G#mj+{mYv7bCfYv!Zv5I=+{%u}ahzNn#eh7))dI)qMHqO_?p6-9By$e=02! z-DRzbvOTe#J1cTx5{jNLm`4hzZ|$Q6$l_CZmMu$Q;6R;=)t&xtKYlp6x;no;GSXG8 zef~duJbLx<_1m|md*Zd3bdm$E_aI}kBC$TA%WBVA(S*7W4hA=cY<|RH>pMqZKIM)9PCjVt z!>K!?6WXqjZ)P*uA!7+FB^F~W(Gs`_!XdhI*%d<0T2&T<9KDCK%ciWZ6-QVOkv%fc zZ0U^FP+vXp?P+fJa1Dj7e{^k;uXcZ^5b41nCL%SW3guLBa>KRr`r}9G@gGz$QW8$l z!ANoY@YO9jYw&{v6X&OJN#91kCxeWIo3*B=6&rNthYo)JKwm!rCMIK4_JxLiNJP>4 zJM^hDr}M+_-{}Q|urn_o5Tc%ZgXNNid2@NQ| z!hcNPk@Jtg{=1V^pRAz<*@`vUvkt^sLH68?h@m!F@q|3%MOFGDVm52%D`zt~mx~0z zplfCIq5LsQ=Po;re^`oN);W7V(>Z%?<(xgYb6|^^mUDK4y?@W^bS4>R?$Rj4XU&er_RXL(WrFOizm(!YG~#lavAFJyECJ~*Pd6!=+| zVNu}VXFfZiUMh>D`K$IOp5obne3K1MwpvvdseIsNSb372e`)OJXb)~96l|umwy^m8 zhnH>VdsQ4x)oP5F$>d%0x}DK(JhO{EcV259i#6H+gaaE}?S`oZuKCJFSfx%|8Y-xG zS?WJMWOekiD_h>T8jDs0y36OTyOBPwV+Ykk2}w9qRd; zCy01?B{Tj#A8x@!3%uS@{I3~CSn{LHi2Y-t$bsS<@-KJ3mx636HGTSvRHm59pZmj6 z`b>(xf65UqyM9WUI1s8^OW;0Wzhh}5q0tlNZ|cEt3C8PwQgt$LS->C2-d0Ubv1{lHA@j4cHTPT#MMh2l~9tLFr9QgNG=Piz4$}uOlqRrb6 zf2T4zBQHRpg`db65?MfvYd_1c5R9@{L>E06r2A7PnvHLq68!?qLo@#s`1r4OyG_|@ z{1^Q*e?|VYnv2>px&?O{D(r9|jLVwihJEQ0kw-j=x!<}XthU1m%6I4)0G7k~En3Hi zqUQqfAtTUCeQ!eun88Ax>t2xD=+V*-e^evV-ihQ8pJdqiim$ zqHHc~qiinLjIz1dR+P;mUC5{nQ*q4eJMtHG2IW*GB-N9NRF&}2*J3cHf1#g}MRjto zryLnYpZT54=s@|du~1=rRFf)6rqX%@r{MZxGV$|TetkFVr+^3GbhnZ zM2z7Z?hu1^)lEIQr`wq|f5)89*n3rI3-uYIFSd14FFM{8l(30|z1h1wS0;0+HN&A= zjxX9AEsln7c1})=NG^uLWMuE&au(F3@?!I(N8v>V zmmk4Q236w)*Ng5&^1RAnYu75eN77rhVBE_5PVy~Ujb$y1SYR>Q+rkXR9a62boHr_W zfOPormdRT9%({w2e;9@4_-D8O>h^gLKo?LE- zDTmV#ZxtYT#yi9P%jffoR@e$PgZu2zN#2xQ^x2v@x;YEUjG~oFR_u~iMRGEG=d+WZ zYg(#zeW+-gVk`R7fV`m!Wh&svFssV5V3=UPd@5$*ohk3`e-QmHrFl`IEt8CVI}^hE zV_j2WnUzD_))l8KjH|1bt^FXyIf_13{fih|a#5oN*3!$F*3wHWYw4w}we)gLYw6`S za}t4<)gP>SS*P(+26Ui!m&+P5DaE>I z0>RFESmy^+mQ{U1a?L>GXdMq+f-FL$k>1?sX(lRe+O_RSj<{P)3W?PO^MXoFnU<_ z1IUN0`%o1ucQO%ftR%(Iz4eE(fe~)qxY@Z$)1!VjUZOM6!(Ms<{ z>N=hafB%z5Mr3&yD}~^_F>2iMSS_t=N)|QgCT8_KXNCjh!3*oay>UUzZV0g*xj6- zce~xQ4(M5L#81I<=R54Oo?x4W>A9e`e08sE<2JVHdnOkqVt3_@FWQNZUT9iu(AK zC)0{hQc@kDNEOQxN%gvaC5>!*#{E~*GBd9jGs63GkI5jLKo? z3t1T=h+qZT!rRWbF07B+F&DfOoQufLQ=JP=@)qjM(qwCO6(i9ck}ie`V`CmZC7YGF z>pdo_qal&H?y+jk3pX)NQFhD0O*Qg|7?dwBto$f3cm%dG=Fk?Fe_tilVtma=1QS}o z6q8KwszY|4b;p&tG|ZmMwNX|MpguQ6e2f*Bi$_C?TK40)d3Th;FAiQJ+E}B!A!^wp zB7X&fV?cs0UF~C$jv{#*6v^J<24AJDCWC0V(R!nl38wYj_$HFwo^UsCBK5^?d|~vg zP{QwH#Y&XBBNkc1e^Fmm8sGdX#XYvEG^tiwr^{s>=oMqphx#9-b<;gKcEhPjA)9Z| zQEDJz?8G2eblqS!U*FglvfQW-Y?XqusREtWbc8Ays+4dJJ}g%m$w_Vsj5^>uBI_GL z(M#m|e`YOIl9$MiBIfd#G z)Aay1I~7dAMKPHQ_8>`x!$5ZN#4a|%OA5MqKkq27^-lS@+|_@%#jVk`#Bc?YP|CrE{4Ay=St^nsly8K?QD%EowOtAAaXT zom?B2nlSPYfAS5T)FPt*owSw-pOSCaO=Z{9=E(*m<2B4uBPx+dN)S|K%2TPo94((G z-y?e;arTjmYD$WU!hS?Gcv5UU0H^Ep`5BHvwJ2oy)hwhRk9u<{yzFByTCN(fM~6je zvpZYzv!(HPrs-m!s5-mY1%UbiXRm2T{HYTtS|#0Ef5G&b-1y;5GVOW(KFKd{nH3vV zpv`Kp6bCGePUoyDYxu+Q!BPBxq*CrGo%IQ>a)$72kP9&kM+%phxlYv4S2HDI0l_It zDDo0vwn<>;b&y-M)^o@CQaIuhAo%G7(^YnyY8P15vByLBS>DsVn5=@CO>a7Jq@D@1 zH}Xa7f5!dM1J_#=_b%yfHUMLZrQJS8_t1SC6;uAn@GNc58LkQ<$b6-~tc-x(L~hiW zsT)iB#II($#ILM8;#al~@vAlc;a9ur4#!$BkDw7;)#(M_Q0p)9yjD`@avrfm5bue? z$x1^*%yCN5{iDscdB>C$lUviBUJ*jhERmgdf0^%5R&3Xyu62jVLp<3IQM%zD>rTAd zRT;35ro)u9>65&>6}WsehCBjdg*=CFV^}ck9#8kZ-xLX^dED$9E1`R+g zcQn-bxYRlD1L`y1(5E$hqSH$yjDW-#E1kqXi%5g+Nybn{k2t-mzyWq zbL&Po2ucJ9$`Y-lYD|$pUrwJsefnI!gDC#Dh;iR-!ZgYDL?VdC1hJjerQW8z#Dhe_ zY72iFDr8=IE*sAkrPopr4qTITz^(NTfAxwXJ*2an5KbMsxkj>id7Q&eaR3s4H=E~^ zTRL9az&fHyh3HENV=u&LVu|CwQ>*nZLj;>F%AgDXGSsGg8N`11zIx3L5y?a4hByglt~X7TW7A&kyQV%Ma>R&JXIXn;+EsS_V<$toafR4Xqn= zHuUOSIzzjF+fmW65PL_T-!q&uM%2LIHM~5X>?xKwRven|Ssp2Ee^VIulXg4Aee>TSxb?4O}Pq>*^*UAzNO3nj(!JGOs+h?>A^-7ZG zBqKAA^moGghhd8DVjbxkX*yZ%fGK9QSZfjuHGm)2Bj)&6EYeGjaKT`VE_xfL40NTE zX{eolFe=x8di<9gR ze>?|XkRwS-9QQi+B}giahY7Bg{BU&mX7>qy{G(OuxK_W67P?L=vh(@z;j?>vII6Ja z-|g<=f)Tu_3H7yT$n0-cZg+PRgP=}!`F$J=wZWvr7d_-vA@azdMw1Kq(F|CAENj21 zv4Z~4eJ*s+-AlJaQ}4Qkf8lIx`MOI5uce*l2C@Rt4lu$xU4dd7Bo2rbkh5w95?v!< z{&Ozq-|D)FGngd9lUrt%+7BQhCeg5TJ2XqG%V-j9kR~|)ZWS#RU(2r{FBspDkPt<^X7!#gWkIBbNC8(3 zk-OP@|1kXPjyJ>j{gCYU97kO-WN--Y$FzDK(C?SH+*X?iI#8@FDp!;$gDG&4WA~Hw zG&Q-=z&A=JljLmSe_BJidN3O*^@)G<`n|`!`@IJb?%!J+#QWaEd)AA)K;7vjEYN>g z&6I%OIup@g?UFX-=eIfg61PwqvpBX*jFmU1WAC7k3&m5PRxY0UR9aoTcq;6{(3^SY5QRAbc-pO5|7kKj^H>SSR`nf2y%IKH$13tGsQr^ZHGc zc&(~6FiH!YT(P_p@T;>ADx!~>b#`Qwz|1NgmKY?Vk~CZ$e+}p6gjbc*cBvo$X%Nfx zi$WnS^1?W&x0Q=(p|((;cyflWv3SvW==ATk(1b@{d$R}~4p_}kRjdZ9<};w>FpXww zFt?fysy4Aue~cK*Fr;W1bmmyKpciHr;c0uaJoes%gSi4-X@QY(!4w_ko` zz45nS{^@dSoX`+?a86*!*Px|iadD+?Nv3RW`=nG+fAN_LD^N0u1yvtq^^UYlkWyQWG7P4-VMG(*L!hHW^_00fX{5nl_Z_#O#163C&L zG+9p282J%;751X_?f}0pXx2O{{Gn5YMD7Otf58G@Bk0iNY|-y|9Ma{CMr|I-B^*Z! z5EfxlAZSu?fR7fzi=rc`kfJ-KbPM7#%=CJh7Ok>fWkGW(y_p~gyvu52M z3;li_%ZoHq09dmNwx%JMYztU1PeY(pLJ^iq=(+>6LsF74h7J}TL<2_?S!6I2h|Dfr z(8I(F55l3Zu?O*Agw(|KF(^~^N;pykS#l4w0tQFa z$l0&9rSxu#*WIC~mV1p+lYYdw;Sth-ksu{^0(@hrI{Ar{9$t+aFajf40NZ zFDfxBhyt5S^%18pmY5Gw%|F5yyV4sVu=+U62rmcs?APn`w9s^Hn>QeIle& z;e8+%aIQl{Mx)V9(vWv$!<`7ax-cV8BTaydio=5lLmD)p)NDX8#ql=T?n7ypfAX9*5=7B$ zddRxrf@p7y6nOc8Q=g0NGJo*rW`j&hyOXna6aAU>SeI_Rs4Me#VK*x0$jx1wT5sbc zhDDj=S;J7FXPtq0wQsFe*Ng2KsAPhU_9+_JNsrfJLN#)cu640LtSB^>pEkK= zS>wlPtGh&<%fgHJL1w?eV>gBe>Rc!ybnI=8VCe# zmGh}lF(^*H07qfMkh2JD!#-Hy4ZkZ;z_vrB5p^(P+^!vCK*xI zt2QVIjJ{n*znl+{@r&6@+7@K&`FKOgQ>h9WRIS*t+p+CFzu8O@AY$}$7{H|`F@i!{ zPr~>Z)cCO-Y3XuX+djoE&9_~iZd)zew(~-_#PFl?yxP^Ze^w;Qx=NETi!ZQthS_)O zc`+k%c{2+$xh$)3{S01_DfgbE-P(5T*jKaqX_p%upyz~6t~<_`jg8aUI+u>_@+8gc z;hzRkSwnGdHpMy34Xu!A*c8irokVFTM!O<^-FzSeQX`qao$3^(eHZTw(fowGk zy+Rn{=#GgtdL)ikhx@yYJfy*C?l@>u928Esn}Ikhf98&VHpM>*=)2V%#1p=uR;z8{ zB1}}>ZZ67FtWSP-o^4zn5uvx5mkz^8XoXYVF;U}8l$BMJ+#Uux!eXxQF};D|2HV0y zCxc+CdFao68sWEh9JDD8I`y~P#Arc`-5~B+3bJ;)nQ5@qtmNX&-Eq^VxhdLeZYrV- z-m%r4f7;yyDHhQu?^tT%=79NjTPKTPq<0*(d5&5~mnx|wb!8sXLE;TA@|=66vz!FI zk@B1{aZysUikLAAuqy`wzHah7tJ?eFM@}hI=Vwkxj#To}xP*v(lNW-*)TUw%R^2LE z@1yvnaylI*!Q_C;^BL8N_JMFGQ5@i4nNrZze~ATl;GnDN+)ZjBtVTIX#COP55u+mw z3y4Ne*|S-ioJIjAm3fr+OzDD@MK-Ss*nro5=m_!vz<5{R0s186uEe zf8CtRH1^K&W1B@LIqq^jtV?eUzX@nur_&L*I373up+_%2;T-rQ&V)bJ$w6o29mevv zR?6%R$scDxAfJ|J$AwCD5M`;ICFz{Fm|ST$=bgGl18P_td2?5gUNZ}bf0Zw7{!7Us zUM?AX<&qK9kOP6g8o_)){O6gZuRk4qe=iuu1;JT2Tlzzo`Ci~>epNy2$Sr?z=3gio znOa_&d4~i8L4i^l?R@ZKID~Ic!i%#c4Onh~{3C6M^5yA$hG&bDcsHERvWr?s5=1(a zP3+tbTm?$nJVp+DON1A?>lI`mlHd^4C#hlr z><8Q*p6TU56!92WxE`In7C~hQK4Ub+CHCX2jmRc^OvRk)4>N|Z=p0&gf7mZT6qrtl z9L!v(jOe1L`hg+CEHJ{>4&!aSJNW)1?K!J#?ULsa0)Pe@DGf+Kqt8{H0bj^j+yf zQUVd??A6t(i2&l{yUV_&f0b?fro_NY)H9NT40r*%B$^_u<&b|y&EKDA<0RFm+-yFW z2sf>|s;^htZzTg-*iAhw-mY1v!*5Ze;!1CO3zTG2nKBu z@FjfnD)_rwN5xOn&EJ5o~bjk9dF*X^F2opqvMHbU%> zZvX!M@4Crs)ZPE|=1aeG|H}x0vc6ys9Xx&RJ+JeY%-w&!3gikgPvJ7D1(VQoK`I4{ zBI$Z~q_@B%tB5dpf4M|{=?NM%FU7i|KO7Pg?y-@$G+Bj8g2s{|u-lYiE)*Z~2>C1p z(*-66rK4ubRnH27g4KH&;elAo+i}$r8nEbgq@{-=e?Bq2dB>4p89RoiR%S}K&q>wE z{1bR=l!79-zn^FUgo-ViSI}&z8iM&;MRvorm#(NK^4kX$f5$r;qhdYOk6DG-E%D9Z z*YHq)0-t`zx3HT438E>ab^VUFZ{VJ}N{NORBfLtH-#bQFE0oSs?PE5ZTwEJ@Uin3Y zF#HB3mVI~;UkCUDsksE=$J|JFXzvI3-|mMGyRSfXy$JnucM9Yj@8TP6l(Ew!)rfTy zu4reyoY!tKf4P5^1mD>M5@3g)yC3%tUsI=9Gz}dwx8xZk)K)(bnF_Eo5m8R51dhVY z!hY2_)u*^K*wk`)4H_d$@|2ntuWQx`cb2Zx>T)0Tvml9C z3TJw8{rEytWAOyg*q)i*^p3d43YP@<%!6yX1d?7jsS$RHRS!_yprvML>_=%hl?q$A zC1J-KBfcNohs2ye(5Eb7lfOVSQ%q)-h#{QCw!(OJd@o|OH+>;05_++!>!bTm9)0(? z-_uoHfAJuR;yFx?`h_7ryN57`*JH5wgu6zKi}s2`eVXAf@2_i4Z|DqLq&DaU z5nO;^#yHpj&YBpZ{#4GuTt4#J2Fh+AccAZLe?EedhDgj*+&OTug+c2fvL?sSk43cz zg#qZQAY>Z?-CtoQpTo(5Km>KpF$e*b;dOt09!(e?CpGeWPc0`1X`o=Iu!L4x&d=_%f*o`GIP ze?o&auXJG4^<%t^0$>L?5~ylpRcD4c)1-7GK1?iSia1gkGOW=WU?nH7CD{IOs`A&n z_$@Wx-eF}!zo{>UV;-NWX>p!i0$qF>v5`-nCW`?@8{}mK7OTh9bvE(a%kgs0NMYze zyZ5@}Ng+&GxJ?aDfRUT4N(4vh^CU??e?E<|vy%7>`*Wp$fe+9oRh#p@QFxZS)#wh+ zt|j>Q)Q={%8JQItQv3%90uu+HpBV)NB=sp(PH1VhRtc zz~Cz=z1xN3;2JT7mMZ%?*-xP67*rL7jGRnM)C4=~F_Qfv09iTA5|~8}U5_=9L%nN^ z#o8sFNOC-@>DQ=`VUJ!-%=nBRW+m0+21 zvQv=nX^1uAcHoT=FM_HNK*b79GFsN>_aV8P($I1^S)9c7;Sk?Lo#R7v0w0U+&AO3N z@0NFj|GvjdZ|gl=L(bbZPCg_%#dcAnNt(9_1ff=q)nBhp6RhMb@!_pff5V|5)8XcZ z)|WBH7LrZP$)sGW@RY|Gh3AaVPB87&Lkl9Y{L)=9TR?jcLJ%5qTS4jN9U;CeJ*agA z;MD(^0f|)T1Bd3ZfXJf0aVhBS7LhN(Plsccmei=eMq`o5CinS#kni$JadP3gYor>H zw!})U3hl`NMYJJ#YzdXRf6Lh&C)2Qtkv(LArudxW>^#F~!mmC<>qhP?q2*&9rSFvHQuv zi1w5LNYkc5LKg%b%TcfOmnaTEQmiB1q^TPw%3db3YCCJ$801pBf6gX#cDqP`;t|^M z{vxJttsx5`S=wbr9Lg!Y_I@7j{hh`@L->1*{Y!T{Dv_b5W@031quN^zW&$c2$YWua zeNyQaN@cV4N0E*W5fUBHOCQ2`-tKt&a>4Tl-t4M7z~Mu2TH9QfX7))=jC!7oXly z6&t>8ST{6h!o@*!yicy?|06sA@6tI_{r1|&DrD!KAN@iMe;gU@Y8U{VR{fcioynnr zqDj_@enpZcqY;J~py4_l*lRnhxIhbeyphHZ)(iI6~hN2Ho>rA};^XzEe!bF&=`QEFkNFfzALb9x~^o=+!2f5x@@QDMesyYvyoaG?$3VS<~R zzuMt{P~VJuUuXGFwH;5NJZo=^&!NJ=tCas~bZ_MRAfFc3(b(ydKoXMLJ53GY3Dz|& z_VaZ%9%&Wk98h&<$cxk=5nVz{tx{Lm67F$%WR5H6oYn_cE;Oi?9EK*jg^|6Muhe|1 z8>vz3e^L3T;g@KN7V$4p{Dm(Hu6amtG0DUm`4bhkYo~*ioSpA*&mYj#*F8qm z2<@^6(dKPB-;^m>lvAcv&T#sF(boGMASmo$op5k3~F+*i$@78f3y zh9-V|JVyhKgmE8z-1i1ijO3|o-EbyirLN_@nY3A)A9}mAYKHlQpw?ZH09Is!H`Ls# zJY`#Km{vt{#E{6{)T{xrKgAwxj{iVW)9^3WU?xhHRjd{S5Pv@oy6{M`Hw!yLxL$Wl z7O^Bnr>C(L)3!}_O5CN?6(*;0Mmb(QIR^$yy~ie&*K0|YSC5B?FpJWN0?weVot(Yv7CuC5M*5~Ga) zTgs#q8GjcOtAR>uOccB2sAE=-Ili1g=Sh$F8C}3-aC-R5a~FCqnarp0(x*EwhI*Ov_I;wwi%1T6Sun;QpVN*o?I>?Tf z3-^*lg4?x1-$#S(U7|rW*oHOYn`sLlHFulKD}UAA-X%M?utIM8iuF3ZZ)w$fy)9X{ zmcnG2fUG!Mw_-zoGF*R`(Tj^V_#3o{wE4b`h1{Br_j^jL{P2F;mdcir9SpYLnj=oH znAoJx)#MvkyG}mM+q-_41HRR370#|5lb<{|^oC`#(U49yWUa{z*C2r6(jz#T7Gb5Q zp?}H$Zm(v^2`BvrOH4WR)9R)fe7u@5hu&Dnn!{Z-W;fAxf6LWCm09 z>ugWspjmknR#}e*i|~fBQMI#r(TB{Q>g`{$L-KAPigWuGE}cR0Hx7CUG7#@Ry6Xx2 zg#7#4zn};B+W}sGZsTHlFAomvhzeXxjV>+M`j(dQv!GAi%0(P8`icd1qQSJ3*W#dX z+Lu^VPqi8BDP=HEj#Q{=~(Y)i9Vfc3TjJgdwCI{tcW^XVEk!F`jT~cDH!^J45@HfE~jSRN#3LfkA z)(C{e-~P6@M|%aI_{ZMfG=g1-)ci;Jx>Xp-**KJ(I0R~@?0WUn94}Ub)E}M@-K|>| z2iY%5{N2WAQpD&MZFO+Z(`ekJDrx2mCkv+?|s% zlsXb$%e9}*JH;RcQYPzEN};QjP?LX@7=I9}y4i*4s&x6=FTYB!T{{!=w_pD0jKW5* zakNjg=<>53)y1y=`-Hx26 zb~R3*%p{Z~+`93P-R}Agz^wN6@@ehu1^(WiJ+ZyL!p!#eB$2ajuct{A7+{W;_qQni zhsUb3rw;T*x3PqAOcr&zU@O;Vx&U#B$`S_b1B37F!C3(R0ci(H90ok^?SDBD&yhznG zrEeDpwUggWj0P$RW1?kZPJi=|fimZ*PJglvA9x(|1@nT}?_RyPP;(uKUQt$UNK-`g zDxPPH35`32W5!gy(Zmb`@t9Zgs1OLvQJlO7EH7BFOF!&+?X(jU#x z9C5=}{s)5!nt8f3EoW@&Gge#N@&t5mPBZh8Sk5IRM8?0rGlig0V=+Mg%v&U+gR5HEU9f>){O?Ze5F+_hP_ZR zST?p=)_Pqxz97C^Y9(;_#qs5ZXA4KazLYJFOrI1v$gTj!N}VHpRSMALoFlE~dA(js z7d_Q&DqT-Ah(_eC%G%fG;Qne{{4NeCs^L>Gy5U@WU~%teG=EJU736!fVB}eL<`8|` z3;|V3M4H{6GbTox*-p z-3x01x&aP{#D6HnOd2=N0T`1uORzh*kaBA?+0@k)BYL%|OwXIbrbV#38_1@IjMqFL zVn7DV8Fa{qaTjwonhKYjY$lit(PfTJgs0*;=rJYm9B+Vw7#+`wo431y1mQ<*GYC8NZxIO{5~dO%=Xe#{44Wp`tv}~0$rdci2e|i1O!!(&gdup5{SuWD677C_ol2eCpf+3$p z{fHcOge*_FcUbzDst=|q2;?b9V>Cza)eaASZK@cOfs#P*rOJpO#r%nj8(}4b&i*{x zAAJa?NqX@bN3h4WFUO%j^FS7@qIxZ;jDIY`eI>~yamXIYsULHEe-vYlJ)QPSeOuQ{ zQL%A|-f5I(@D57nF)W#zHDc9fG*ra=9P%0F%RqNky#}?5P0?_6|2jSI^`Ct3c7OC! zx6mSfF^G<_SW8EppLxJ!SX!tS^{lENQtBPnBKkSBN@u|+ybs~AKe))~y7T$P2Y(a1 zsxpk`(H!>MFTduCiN%PC(ROmAW=sZ!Rx?e^d?jRQpu7H~#~x7rQLmr(YL^Q0h0Hp` z5%z-eK%`?~j@kGEPIp*D7-RLq<}xRY8l5lJ7xAUGhizTpS{dSE1_cLZGUWg#DS3tN zL3WRW(&279VL`lpPotkX-Hez4RKPf9MU~B1@Urm+w|bq2Z5`Vtp%GMCIabQNSpxd5 z$eCPHpG62Fkb*>{?UY9>;2j$FvR-DrNt}fyX=*9TVkg1B^S^Lb`Cqz&-65Mrp8r2k zO9u#Ev6nBGnE(LEl?4D$O9KQH000OG0MBgGv*4T>0Rzu$)06$3C4Wbm^iwHHyoXO} z&Y2{&leTt}sqMDkGB^^F*zh$VbkgP5cNY&5BteSQ!{;_mW|9+ju~_U2iv_^1zTPLX z^GI0{W$FE7KAlY*ng&@IrR)32hxf1DyUEut|L|3|T15d}hFP#pXv*D!KgG0gpmSO* zCGdW-W$7{_MN}+Pl7G-*$%AE<(^Pj_n%GM*lxz{ihISXoU0nrGUCXk?2@u>NxVr~} z6D+t(aCdhL2e*SC+#LeJ-QD5fE(Zv%2?V##z4!h1-}}32*G%>9o|&4eT{EkD&9sH1 z;;o;RwI0A)}r@gu^Kl@hlw2G5=Br)q(S?{25?5yDh9WnT- z_~6W={pj2#qqdRPkQpy0Amu$GjX{@rZ4WYR+z<{TQ^&pAx%GO83ultZ0MA$1=22LH zd9b87pS5+PmmYdk#ISp~RS>Fiu)R3>(tV*cV0gcW$#Iqps2D zbS*|RZFzv?{g$NK`Y_d?#pOEd*rHRUveu{t=6fGH2M6X61!N9{LhM#$%D}{1z zfj6Hy#>l^@V*yU<>J;JZDuKyla&Q5fBH3g|iXZ0(Wcs3uDZ?O2{t^OZa=No_OWg1| zJtQFJBIe5cT}*Uxlga`iRCG=NOP{a&?DSAGQU?JFBrh);-5TyYvioLNJv-&#yhOu0 zrI^QvF>xgU_CM$l0mnk_WixQ5Rp&Ms!awX_oFjbKjLF7VNbUS0L+HGTM0`R73G?gm zdP$(6KGXPMYaE@`_lWu)AM3p}OP9hj{MS2LfAS-c`4iT(kXJ1*Y9|Z87@}>AlI4L5 za|w;wRq`C`iS#lx@?s48fg8HomPYN&<+Xs0Xcl*6$VRJ>p(64J;V7>P`%KGmb0(Lz z8eyCfen{(c-Et4N2kUgW`{V{h$zra8JbgJp36-2#U_DeYyG>FNW|^jC3t`5whd&Z? zq5DMAU*coXM@H(8;@_J9$}HT;+9qkktUJV7=k0uJM0g-hn%e z3UY`WGEVj$e1;6~8V&!Y{e(p_OE5Fo$n$DY{)wxXwpR@E86j&D@SFwwsQpI!tqY^g zP&DhdA0xDS?QbVKSe^>yjwxzuP7I~YGd5F`mxEgyo(M$_wW;!7=Vhl^sso4H*5dzmJxty3ZPMAf|+CVJl z;DNNptq^WQ=eUYph!m+>yD=@b*BpOoUu&J0WpwA#ZXuDGmLWw^@dcewTtJ#Bh(K5Q z4{AdN2+`wflkIyn7SxKTdh zl4sM|J!Y1vn$osa84sK@BJq&rGxZL#t$U&Ok3f;fJqna@L3BT%xKWUs?~ElOK3k{Vm}@HMFfsbi!M<2^tDv(ladEz_sh&-7-AOq7%dz; zokO=L;%cM9#85erNtEkZ@P&!zq@y3NOrxcCSvr%AD3v`;3eRB;`-0T)&7V3OPKUKxw86){@Eo8TYHfLYd^inxs=n>%qNywpt`* zR)nWG3P4(;wih1{pM7MT+H^q_r~)>C=9x5&=~e82^8|@(=r}x7?(Kj2VV>r3Ayplt zz>!;2SZ}@6WC+`wTZLc{z1Ra(4lsBvojw;uRae0Lf)ue#bCl${D9mpA(F(7g zGVwO{ykrU3e*EK&(AeVu_0%uX8Qgi$JU3`Ea|%`-3DZV(h!yCx)no`yjjhdy)qEsT zj>n&|%b}Xiq6HJc-+B$NBn$fAphB7yUP3Z#OXI^)@>F27Zc0b~X!J7PLRN_(;aTqBt-{#PFR-sMhD1c#Sm`b<7J&qU<3V4jv-5KX_ zqPkdQXD#w2G_;6uk*iEJh1V?3SV>#{qm?%K5}gqV*Le`ZwR(XbMik>E+hFZRB7C3n z6^(cFjYsnH?9RqiI>F1R@plJ}1z_$iwYGApm66if6}-@_&S0uFFjtyIgG^iQWEXqO7A9O}tPFLX5lCrm7%6EFmDCg}rnuZSA>Pv9TKIuw?Dv z-XOxyzI9KA= zUKo1@-dq2987KGYZqn}MyFg1Tu=lm_>DMbKY#gIMe-(spx!2k_w=IFlmuP-jA>y%F z{3CWD>&I9DyN7qpn+WId$}QJRLhj}^f~CLVzCg75jn3WCuL|QM%GG7CNHWi{=B)Ej zNsia-KdAXTeTZBX7}@gD@dfZ{#C-?mpzvMaYTk5Au6E0}`!FPF1DzkyoyygbmAm*F zWt2=m(Tvkt$Nle z!jQg!YNPLuaFAB*GW10SRZNZMiVmybAYKo6awD}L{t_)QEZ~OD3kxuuu^Mw#X3Ckw z%6sB9ta(cfYh5EDjFXfvXs{h)(JqQH_`P?Sf7E8d8M2!xLS}pN5xZvWo!%)bj=ARZ_*0z68}-p`UMVUSK%xVpMceStgDAAz7!CDqxRuTFN!VFfTje`C z$@lM+F`U18vd?|cCCQJCDb575UVn>W2^u|^jicUF6=X<=$*AvJUXAd?vB*`|!qF=# z6~PQX8Fa!_Zk+_2fC9|>>EqYT%e69=w^nQnQ~(QZc7mQc+@ts>QY-boPLf4f46N(O zc*W4zkhH!sOTj7p`EsrM7P?`_WwPPP06+i+&$srYF^&p$ZWVq^<=EoA z9`xN)n&TwC2E%f$p4fG4mO%Z+T_dta1=Y^tAQ5*-Ct;4&MTu-{0!X-W2ue9{UUsbh z$j(6zZZ_`wLIuqLFIbF-&nz^|QJjJTPp_Cz=4awr{ABWR<+&A4jzMNP`A6{?&?-Ul zl@u`;p9Rq2&ku#n6w0qZ@~HGP7ETvYVgWPQhmM)Ke7@V}$1h8+8eD0d&JR}=aL6i` z)2HA+CEey4b1T=Mk5^7oBC*2mjFZox4z6=oyq%>D;iyYlF7ywn=C8b*PDT{{YUR!! zr?z`ju)86VK%aw#;fmTDKCX!(>$qkilzmJ*?-IcEuA6Rs+Wc$NV)g5kS_C9_tP|{~ z3a##;KgAi7)b1ZL)533ZX*ViPGsk!hb~kxZZ+DeSXC;RxPV6sh^g&@B<4g^6mZZy$ z<~5A#{*#UFb#wX))%}nZb@Zzw$28OYxk7?gu=C|sI^ZQ*O(R;9ZaT`GXf6Q7dR-}q z1sfo@Fm5ZkB)UXA*pa}>ofIMEqD^nPGs3ScsF7eu#*`IOq>B~Y&wgOI<6Hbfe3|po zZps+tU2RSmE`Q)Yfb2~BP`_-DGG6BWC7eDMsd-gPqoeRKHdA3!%z?-fb1|?AZO-~s zqSCBt(%ztdL-28_$nXXKFMI};uM{;$#fO55(SiCmK!bvM!)3xb+K_rs1vD)3Cv^@U zel9+KE_P5(l_&Hk5MDJGG&e}LI)a3UlHA_h&6wZG*u~h=#n{P;#njQ=!A*#ggPoTT zbWx2*#>w?B6;rD>9aA@Rm;Y7aCt}>|nFSh}B3h2&i~fuc&G!!0uZo)FhOB*$Q)UY`081uojF>0<Lw4pYf)|s=AHSRq!A5-AVB)QC0w>Igc2HX647_nIvV+f;0Dv zURwad2cVMS^Z&{3%`V`aX+`_!l!aHAOKJ$Luh+wDL~8Sm!>en-*eHMHcfo(Llkv-K zr07l-NgQ$|@~f}_-y{s7*ybr4P|!CivO2&`b<5b;a4ecZbO?3t8IsS*uq~oddgbNa zswpCT8PmnYLtE-?p#HdQLm;x6hx|qr7u4eu0G|@KD+xKhpEhV&gmqU7Tv1br*%Omy z-@HGx{V>QkeEz~p(>_egdg0z;LPY(#qmNR~xdw<|7dX%++hG$qvZOw5s9$-!QV3c0 z4ixh6IHL0y>VX2mGZc=DbFYCa@QlPO>?XiVb-qf07 z4=@q%_U>2wGJ0~X;Z1LN5t(cMa5=#s;=mlqEsbJr1{v=Bt0OM>eXv zA`VMvsr@O0S*=7M@I`4$J=ukFW%}xFa+rh5C3L<@Xb8J5iq@Hqdj?M@wX7lx#WST@ zOLn!_yOu^s^11yzB`V*~29CF5$Esy_qu97P3r&Z{Ef@nsN~cmdjaOn`Ma+UV2f z3=EHn(aze-dj_gf_k)6dymlsfJLgcMMm**D8qRNCBrb9bSlyGFej9rQfym=F2eyetd|D6^cLxo!_NxG4i8KgyyZ%^)u*K@pcF z(n?xN4@>I$xw_W~mfEixS9-)(_Rg;KDJDN?(RQGab9IhB6L%5e zm%v8nI3@0}zZZ;hwjtg>fY#M8S9&Ljl5&BfxT|&rl*K%3!;h}!mLE&f30ilJ4`<_p zDtt&ii{D!%NPJmv#b zG`Vs%fTZVBek+&V{j&D6y=JeVBRLMU-Zr#SD*WF5nmqWzmm%LuUM0R<>DHP@MPr4v zlSaV%);_IIL>lxh`em?NZZG3Hu`dXckl^?P??ENY>7;lX}&U7qvOAuXQWW+{MoK=MhGXbHmO$1n@a zA15+K1k$`36cJ*z?~#>Ju$4A=DCedoP6({raI2mD2@<>5tha%%N_5yT`neah`+eTA zKjPx_Hr=%weRuoFIqz$K4qxwbEu2o@LL(lv^K<-T)fWc&GkFq&wRYy_#{J{G=6kPrLQX>P%xMW7Us(mEQYO zar;`_%ttO_1OCXJ4DVwSv0zvkn0GIfeJY+WXDom!JUvW+0D)tUdmJ$nrzKA(kD4EOB*;`+Q=TF`yW}HyhKKKMW zSlhf8Vs})3cpeXgP4qCM^HN*C=N?lr0-reoZAjciiEq$dfatNU{$QPmz~4i*a#msA zlCr#*8GHdsVkANp_<`$6yQE8PQJ47ERE)zn$~Kh6w%?W!0;LW7O{q5SY;G;L-7n&U zf|;g2yQb;J7(Ceqlp>M^r&Loj2GnHBVK3=lc^7ClVLLVqou`pnbeX5fpIVU8UsF5ei%J zPE>gL-15p}fZf;?VUUJ#Zf#qi?{s>+u@nPyU7+B!zgr5)!RFZQYDwkC`VQdy$zWgtXvkvC8|iL7+L!BakWfMRyx?Ws2=A=cQ-PZxf^D4) z1WgJJ%>hXi;T7jcIs}jkkxqBpTENctv!+*-m`U9u|ADvS4o}Ikxh_7bu?hM?ls!~} zRv?k4P^SwjGv`4e?lH9@F%x0C9H=+Ha$5jQAL_9%whX#z>oX;WxYtz*-%{OfM)vAW z)V||#JuX&Eu$CHmyYtcoGWfuIN(mI&$uI6)ydJRzzl?_WO&W?~N6Ps`6LF;yjB~d( zH7m->c6nW^q&S=(saS;I_%(dJl*Lca@qDQh5_#R@hN&N=nXG~n4d5EL+EfenE)@lE zsFI>*+Y=;&>7|n@|J1~?VELU0~ z--(Um&zk`vNBRpP0~5|f2w9h^?Y~WyC7jDt+Z7OrH*p?}p0i7!8|uQD2H$?8AYHjz zKvu1v$qa$t~#hYV4IH7ds*!C(&s*!iTkE7k27`S_yPNEbgaC$kUwUhU4K84_wn^I3vrJ68)31;OIw8eV`-99WpBu1Uo7V?-vL~C=9HBRZlx$;MtI^a|`a^CgV1il9Js#Gb zM?JED>I&>+)N%KAvM#D}kEEti+;!rx5=4is=o)KXIS#!Q31GB?~J_Dpzsj}H(?Uw>JU=g7UB zyyG{s{+1wiY|bl!*Nwj^z%5ayqU;fDK@|5Evfbxz!>^=L zw+iwKFs4#5mjEi^Z4Cr31MuzjYiuWS6+12(7yQ~K#O5atd_ybG2*4G`RHtNIOc)Ai zKUn;(=X&jGZ940;e2nz&C}D#V*yw+GkZvqoS~ShXxqZzHi~&U9ja|PtT%?>-_O0Lt zfBQ!El9$|Kgo>zlC9@Y;*Ed)NzX&h7LBK=#ZkL<4SHooPRs0H7eAPs_Ui`_kKaCj8OWIAPd|9CUY1IW?>BRi-Q8@B1Lb}81e@IxdpAK z{=`Sk(j^gQ@CyL*cb)L7^3k`s0w*TngMk#oy{}5~Vp47mV$&32f}b0M4@=J-@65Lk z!+Aj+)8CAQYP4S6Zuln;Fh2c=R^5ZoYBCzT1Y+OStMCr(9R7TFpxr=!IwMqy&nj|C z?zq)WKay9wL~TioH};Y>3Jg~M!YFPl71@P=ON(DlLqG+9ztE7E;a0yM3N{fw;91sv zAV>KYARS1H%h0bM&hb0WZwRP zK60IFISX}3&x9yYT>bQ*rbh!U)#PfRHJ%C~r|ebqcR}rT9Xj1*XdejYL`Og?ecI!q zw|WZS&0YtzAmfGjH1kR;46S4H5b9Es-s(P5;EOOdI9}g6C3-N<(t)c!kdS!a>1R9P z8L$U?m62dP=ATG7b(GlI6{wcnAfNg-k^XvleT2A|2rL;%K-bRMeR_$Bq_`97>{=Ut zeM8xZ?@li)4u{a7piVIU7j?h;CoBqL>Y)G-eZugE7;f*lk8iV&5{-G-wAk7G>P2-l zDM2;mPSl)r+Ff$AMOX`=q6jGeh@LM<Nrhd^M$xR*x-4lt9)ms zqMYx5ENUXeizA^C~q)qylgT8&7z9FncFPA1P(=g01Q(P?V*#4koMIpX`r z?3`UJ^*lYh`ZZwD(s;vuy*d`bg67)azD^{xZ3ASjtXTQtNHj7QO8o%d>w%on5d=~0 zQ5=3}mxqCmCvU{IAuSA#*{k+q zBo)gZN$5ta9X9f!ZjAuIQQSKW30&HVIhgYoZ0R;_aZ%z&X1+|HYvev=O|~53wlArv z9e=(wpQkn1=)fd`(D?{J>`YZ3$5i9Za~mNty+~0EcRWhn9t3U3^4%~bS-q0ws~xi$UMbx>@d zGt&iPL9X?I(;nNIOCk3}ntROnvw^8zQRr{-IqQU+JSC9J7{lCj=Sk6O`u#jp!i7Wd;E+N4Em0tY>iM&r7aW#6i~`o&c|`nNU>nJMUgeQn(Q& z#A-ZP)qBzrya{(LtltCdj$Zp8r#CQzSXYsYzP97~a2~nCU953UtJxLoz+T(!IJpnB zgha6=51C<>Yd5p&o5vZm!`%agNUAVdN{B=`igP{#hmisHXXA%1X_iwUhnem77? zrK~Y2uPrMkUXE0Y7y^65hjwT0P;ogSl_u!F?CU=b1)#vjcL)wQ0KGIR1;M_U+qn$R z#uE%MUGRVkY23qaWeu-w?17bSU8GA$C`c?{$g$;!ff=!jjA2s&{XSZcRWUbVGUt&% zG@u|6>|H}c2U2~4v@&1-Lo_1;WkTIAbHMq)_e=PY zNz+a-w6;7kf^$Pk7*@g&(|Xi)icl{mPJ{rV3@N~2H-?Vy_3Zu#&r!IXY@~!B8lDw% zo|{f6j3PMk-F2Zd2MemQ>Eas9T;=bbBZeDpMg8n1L2Su@6}+LN!TE`RSW zaT{PNOo!B{u*cx+&#Bt8sv+NTus_K@>aRM!@g{-`Nks-sl zRx?fE&ZKU3FpO+79j5Aa!l$y)sM_2SQ0*jCT*fl98h_ug5{3i6KP)-kNfXa{8CM zC(li0I^M1|+4F~jv;DsbK68gE>$wO}P}p?;ZzZdT9WMQc;8Qum^|yQX=ZNIrCDW+t z-(|q4_}}Hw=s$9_G3kHFi9xPo^#886{;R$_CX4!)W12#s=JN~`6x0z&V4Ow!FUfzh zj8NXb{NFKB=4TA%P1NAQwk}yO_kmKr28wUmo>iz#&z18kO zJ>$fHzZ(C?MgEV69QnU=aC4xbT;06w%w7Mx?SK2v^F`sIp#FN_{g+)`1r*d@Zu9@N z`q%m|{GU4m0`&hfBd7&gPtcP6HKzZZ_5U6>HK=NW`0uHkm>`CJ1|3e&BNUJP)z1F_ DcGL&o delta 42369 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 (Bjt~b;Al@ij!hO61(^<^j*PNAy&1QR}kk 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

TC8X1=1q* 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 diff --git a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java index 6ab1038..ff25339 100644 --- a/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java +++ b/source/java/org/openoffice/da/comp/writer2xhtml/EpubOptionsDialog.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-16) + * Version 1.2 (2011-06-19) * */ @@ -102,6 +102,7 @@ public class EpubOptionsDialog extends OptionsDialogBase { loadListBoxOption(xProps, "PageBreakSplit"); loadCheckBoxOption(xProps, "UseImageSplit"); loadNumericOption(xProps, "ImageSplit"); + loadCheckBoxOption(xProps, "CoverImage"); loadCheckBoxOption(xProps, "UseSplitAfter"); loadNumericOption(xProps, "SplitAfter"); @@ -175,6 +176,8 @@ public class EpubOptionsDialog extends OptionsDialogBase { helper.put("image_split", "none"); } } + + saveCheckBoxOption(xProps, helper, "CoverImage", "cover_image"); boolean bUseSplitAfter = saveCheckBoxOption(xProps, "UseSplitAfter"); int nSplitAfter = saveNumericOption(xProps, "SplitAfter"); @@ -206,9 +209,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { else if (sMethod.equals("UseDefaultFontChange")) { useDefaultFontChange(); } - else if (sMethod.equals("ImageSizeChange")) { - imageSizeChange(); - } else if (sMethod.equals("EditMetadataClick")) { editMetadataClick(); } @@ -270,6 +270,8 @@ public class EpubOptionsDialog extends OptionsDialogBase { setControlEnabled("ImageSplit",!isLocked("image_split") && bUseImageSplit); setControlEnabled("ImageSplitPercentLabel",!isLocked("image_split") && bUseImageSplit); + setControlEnabled("CoverImage", !isLocked("cover_image")); + boolean bUseSplitAfter = getCheckBoxStateAsBoolean("UseSplitAfter"); setControlEnabled("UseSplitAfter",!isLocked("split_after")); setControlEnabled("SplitAfterLabel",!isLocked("split_after") && bUseSplitAfter); @@ -298,13 +300,6 @@ public class EpubOptionsDialog extends OptionsDialogBase { } } - private void imageSizeChange() { - if (!isLocked("image_split")) { - setControlEnabled("UseImageSplit", getListBoxSelectedItem("ImageSize")==1); - useImageSplitChange(); - } - } - private void editMetadataClick() { Object dialog; try { @@ -324,7 +319,7 @@ public class EpubOptionsDialog extends OptionsDialogBase { private void useImageSplitChange() { if (!isLocked("image_split")) { - boolean bEnable = getCheckBoxStateAsBoolean("UseImageSplit") && (getListBoxSelectedItem("ImageSize")==1); + boolean bEnable = getCheckBoxStateAsBoolean("UseImageSplit"); setControlEnabled("ImageSplitLabel",bEnable); setControlEnabled("ImageSplit",bEnable); setControlEnabled("ImageSplitPercentLabel",bEnable); diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index 453d2de..ec62e41 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-16) + * Version 1.2 (2011-06-19) * */ @@ -33,7 +33,7 @@ public class ConverterFactory { // Version information private static final String VERSION = "1.1.8"; - private static final String DATE = "2011-06-16"; + private static final String DATE = "2011-06-19"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
diff --git a/source/java/writer2latex/api/ConverterResult.java b/source/java/writer2latex/api/ConverterResult.java index af3b96e..e38af10 100644 --- a/source/java/writer2latex/api/ConverterResult.java +++ b/source/java/writer2latex/api/ConverterResult.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-04-13) + * Version 1.2 (2011-06-19) * */ @@ -105,6 +105,14 @@ public interface ConverterResult { */ public ContentEntry getBibliographyFile(); + /** Get the entry which contains the cover image + * + * @return the entry or null if a cover image does not exist + */ + public ContentEntry getCoverImageFile(); + + + /** Write all files of the ConverterResult to a directory. * Subdirectories are created as required by the individual * OutputFiles. diff --git a/source/java/writer2latex/base/ConverterResultImpl.java b/source/java/writer2latex/base/ConverterResultImpl.java index 7cf218a..e55a519 100644 --- a/source/java/writer2latex/base/ConverterResultImpl.java +++ b/source/java/writer2latex/base/ConverterResultImpl.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * -* Copyright: 2002-2010 by Henrik Just +* Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * -* Version 1.2 (2010-04-13) +* Version 1.2 (2011-06-19) * */ @@ -53,6 +53,7 @@ public class ConverterResultImpl implements ConverterResult { private ContentEntry lotFile; private ContentEntry indexFile; private ContentEntry bibliographyFile; + private ContentEntry coverImageFile; private MetaData metaData = null; @@ -77,6 +78,7 @@ public class ConverterResultImpl implements ConverterResult { lotFile = null; indexFile = null; bibliographyFile = null; + coverImageFile = null; metaData = null; nMasterCount = 0; } @@ -209,6 +211,18 @@ public class ConverterResultImpl implements ConverterResult { return bibliographyFile; } + /** Define the entry which contains the cover image + * + * @param entry the entry + */ + public void setCoverImageFile(ContentEntry entry) { + coverImageFile = entry; + } + + public ContentEntry getCoverImageFile() { + return coverImageFile; + } + /** Set the meta data of this ConverterResult * * @param metaData the meta data diff --git a/source/java/writer2latex/office/OfficeReader.java b/source/java/writer2latex/office/OfficeReader.java index 6757603..a5182ff 100644 --- a/source/java/writer2latex/office/OfficeReader.java +++ b/source/java/writer2latex/office/OfficeReader.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-27) + * Version 1.2 (2011-06-16) * */ @@ -308,6 +308,9 @@ public class OfficeReader { // The main content element private Element content = null; + + // The first image in the document + private Element firstImage = null; // Identify OASIS OpenDocument format private boolean bOpenDocument = false; @@ -705,6 +708,14 @@ public class OfficeReader { public TableReader getTableReader(Element node) { return new TableReader(this,node); } + + /** Get the very first image in this document, if any + * + * @return the first image, or null if no images exists + */ + public Element getFirstImage() { + return firstImage; + } /** Constructor; read a document */ public OfficeReader(OfficeDocument oooDoc, boolean bAllParagraphsAreSoft) { @@ -1122,6 +1133,11 @@ public class OfficeReader { } } // todo: other indexes + else if (firstImage==null && sName.equals(XMLString.DRAW_FRAME)) { + // This may be an image (note that a replacement image for an object is OK by this definition) + Element image = Misc.getChildByTagName(node, XMLString.DRAW_IMAGE); + if (image!=null) { firstImage=image; } + } // Traverse the children Node child = node.getFirstChild(); diff --git a/source/java/writer2latex/xhtml/Converter.java b/source/java/writer2latex/xhtml/Converter.java index 4307c74..862042f 100644 --- a/source/java/writer2latex/xhtml/Converter.java +++ b/source/java/writer2latex/xhtml/Converter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-07) + * Version 1.2 (2011-06-19) * */ @@ -217,6 +217,10 @@ public class Converter extends ConverterBase { converterResult.setIndexFile(new ContentEntryImpl(l10n.get(L10n.INDEX),1,htmlDoc,sTarget)); nAlphabeticalIndex = nOutFileIndex; } + + protected void setCoverImageFile(String sTarget) { + converterResult.setCoverImageFile(new ContentEntryImpl("Cover image",0,htmlDoc,sTarget)); + } protected Element createElement(String s) { return htmlDOM.createElement(s); } diff --git a/source/java/writer2latex/xhtml/DrawConverter.java b/source/java/writer2latex/xhtml/DrawConverter.java index 4dab3c8..5a96d2a 100644 --- a/source/java/writer2latex/xhtml/DrawConverter.java +++ b/source/java/writer2latex/xhtml/DrawConverter.java @@ -20,7 +20,7 @@ * * All Rights Reserved. * - * Version 1.2 (2011-06-16) + * Version 1.2 (2011-06-19) * */ @@ -97,6 +97,7 @@ public class DrawConverter extends ConverterHelper { private boolean bConvertToPx; private int nImageSize; private String sImageSplit; + private boolean bCoverImage; // Frames in spreadsheet documents are collected here private Vector frames = new Vector(); @@ -106,7 +107,7 @@ public class DrawConverter extends ConverterHelper { // Large images (for full screen) in EPUB export are collected here private Vector fullscreenFrames = new Vector(); // This flag determines whether to collect full screen images or insert them immediately - private boolean bCollectFullscreenFrames = false; + private boolean bCollectFullscreenFrames = true; public DrawConverter(OfficeReader ofr, XhtmlConfig config, Converter converter) { super(ofr,config,converter); @@ -122,8 +123,9 @@ public class DrawConverter extends ConverterHelper { bConvertToPx = config.xhtmlConvertToPx(); nImageSize = config.imageSize(); sImageSplit = config.imageSplit(); + bCoverImage = config.coverImage(); } - + /////////////////////////////////////////////////////////////////////// // Complete Draw documents/presentations @@ -230,20 +232,36 @@ public class DrawConverter extends ConverterHelper { else return onode; } + // Add cover image (the first image in the document is taken out of context) + public Element insertCoverImage(Element hnode) { + Element currentNode = hnode; + if (bCoverImage) { + Element cover = ofr.getFirstImage(); + if (cover!=null) { + converter.setCoverImageFile(null); + bCollectFullscreenFrames = false; + handleDrawElement(cover,currentNode,null,FULL_SCREEN); + bCollectFullscreenFrames = true; + currentNode = getTextCv().doMaybeSplit(hnode, 0); + } + } + return currentNode; + } + // Flush all full screen images, returning the new document node public Element flushFullscreenFrames(Element hnode) { - Element currentFrame = hnode; + Element currentNode = hnode; if (converter.isTopLevel() && !fullscreenFrames.isEmpty()) { bCollectFullscreenFrames = false; - currentFrame = getTextCv().doMaybeSplit(hnode, 0); + currentNode = getTextCv().doMaybeSplit(hnode, 0); for (Element image : fullscreenFrames) { - handleDrawElement(image,currentFrame,null,FULL_SCREEN); - currentFrame = getTextCv().doMaybeSplit(hnode, 0); + handleDrawElement(image,currentNode,null,FULL_SCREEN); + currentNode = getTextCv().doMaybeSplit(hnode, 0); } fullscreenFrames.clear(); bCollectFullscreenFrames = true; } - return currentFrame; + return currentNode; } public void flushFrames(Element hnode) { @@ -400,23 +418,28 @@ public class DrawConverter extends ConverterHelper { private void handleDrawImage(Element onode, Element hnodeBlock, Element hnodeInline, int nMode) { Element frame = getFrame(onode); - // First check to see if we should treat this image as a "full screen" image - // This is only supported for EPUB documents with relative image size - // (Currently only images are handled like this, hence the code is here rather than in handleDrawElement) - if (bCollectFullscreenFrames && converter.isOPS() && nImageSize==XhtmlConfig.RELATIVE && !"none".equals(sImageSplit) - && converter.isTopLevel()) { - StyleWithProperties style = ofr.getFrameStyle(frame.getAttribute(XMLString.DRAW_STYLE_NAME)); - String sWidth = getFrameWidth(frame, style); - String sHeight = getFrameHeight(frame, style); - // It is if the image width exceeds a certain percentage of the current text width and the height is - // greater than 1.33*the width (recommended by Michel "Coolmicro") - if (sWidth!=null && sHeight!=null && - Misc.sub(Misc.multiply("133%",sWidth), sHeight).startsWith("-") && - Misc.sub(Misc.multiply(sImageSplit,converter.getContentWidth()), - Misc.multiply(sScale,Misc.truncateLength(sWidth))).startsWith("-")) { - fullscreenFrames.add(onode); + // For EPUB document some images require special treatment: Cover image and full screen images + if (bCollectFullscreenFrames && converter.isOPS()) { + // First check whether this is the cover image + if (bCoverImage && onode==ofr.getFirstImage()) { return; } + // Next check to see if we should treat this image as a "full screen" image + // (Currently only images are handled like this, hence the code is here rather than in handleDrawElement) + else if (!"none".equals(sImageSplit) && converter.isTopLevel()) { + StyleWithProperties style = ofr.getFrameStyle(frame.getAttribute(XMLString.DRAW_STYLE_NAME)); + String sWidth = getFrameWidth(frame, style); + String sHeight = getFrameHeight(frame, style); + // It is if the image width exceeds a certain percentage of the current text width and the height is + // greater than 1.33*the width (recommended by Michel "Coolmicro") + if (sWidth!=null && sHeight!=null && + Misc.sub(Misc.multiply("133%",sWidth), sHeight).startsWith("-") && + Misc.sub(Misc.multiply(sImageSplit,converter.getContentWidth()), + Misc.multiply(sScale,Misc.truncateLength(sWidth))).startsWith("-")) { + fullscreenFrames.add(onode); + return; + } + } } // Get the image from the ImageLoader @@ -462,7 +485,7 @@ public class DrawConverter extends ConverterHelper { StyleInfo info = new StyleInfo(); String sStyleName = Misc.getAttribute(frame, XMLString.DRAW_STYLE_NAME); if (nMode!=FULL_SCREEN) { getFrameSc().applyStyle(sStyleName,info); } - applyImageSize(frame,info.props,false); + applyImageSize(frame,info.props,nMode,false); // Apply placement applyPlacement(frame, hnodeBlock, hnodeInline, nMode, image, info); @@ -513,7 +536,7 @@ public class DrawConverter extends ConverterHelper { case INLINE: break; case ABSOLUTE: - sContentWidth = applyImageSize(frame,info.props,false); + sContentWidth = applyImageSize(frame,info.props,nMode,false); info.props.addValue("margin-left","auto"); info.props.addValue("margin-right","auto"); applyPosition(frame,info.props); @@ -523,10 +546,10 @@ public class DrawConverter extends ConverterHelper { info.props.addValue("margin-bottom","2px"); info.props.addValue("margin-left","auto"); info.props.addValue("margin-right","auto"); - sContentWidth = applyImageSize(frame,info.props,true); + sContentWidth = applyImageSize(frame,info.props,nMode,true); break; case FLOATING: - sContentWidth = applyImageSize(frame,info.props,true); + sContentWidth = applyImageSize(frame,info.props,nMode,true); StyleWithProperties style = ofr.getFrameStyle(sStyleName); if (style!=null) { String sPos = style.getProperty(XMLString.STYLE_HORIZONTAL_POS); @@ -918,28 +941,25 @@ public class DrawConverter extends ConverterHelper { // TODO: For absolute placement, only absolute size makes sense // TODO: How to handle NONE in case of text boxes? (currently using browser default, usually 100% width) - private String applyImageSize(Element node, CSVList props, boolean bOnlyWidth) { - if (bCollectFullscreenFrames) { // Normal image - switch (nImageSize) { - case XhtmlConfig.ABSOLUTE: - return applySize(node, props, bOnlyWidth); - case XhtmlConfig.RELATIVE: + private String applyImageSize(Element node, CSVList props, int nMode, boolean bOnlyWidth) { + switch (nImageSize) { + case XhtmlConfig.ABSOLUTE: + return applySize(node, props, bOnlyWidth); + case XhtmlConfig.RELATIVE: + if (nMode==FULL_SCREEN) { + props.addValue("max-width","100%"); + props.addValue("height","100%"); + } + else { String sWidth = getFrameWidth(node, ofr.getFrameStyle(node.getAttribute(XMLString.DRAW_STYLE_NAME))); if (sWidth!=null) { props.addValue("width", Misc.divide(Misc.multiply(sScale,Misc.truncateLength(sWidth)),converter.getContentWidth())); } return sWidth; - case XhtmlConfig.NONE: - // Nothing to do :-) - return getFrameWidth(node, ofr.getFrameStyle(node.getAttribute(XMLString.DRAW_STYLE_NAME))); } - } - else { // Full screen image - props.addValue("max-width","100%"); - props.addValue("height","100%"); - props.addValue("display","block"); - props.addValue("margin-left","auto"); - props.addValue("margin-right","auto"); + case XhtmlConfig.NONE: + // Nothing to do :-) + return getFrameWidth(node, ofr.getFrameStyle(node.getAttribute(XMLString.DRAW_STYLE_NAME))); } return null; } @@ -990,7 +1010,10 @@ public class DrawConverter extends ConverterHelper { break; case FULL_SCREEN: if (hnodeBlock!=null) { - hnodeBlock.appendChild(object); + Element div = converter.createElement("div"); + div.setAttribute("style", "text-align:center"); + hnodeBlock.appendChild(div); + div.appendChild(object); } break; case FLOATING: diff --git a/source/java/writer2latex/xhtml/TextConverter.java b/source/java/writer2latex/xhtml/TextConverter.java index 2a5fd51..21a03f2 100644 --- a/source/java/writer2latex/xhtml/TextConverter.java +++ b/source/java/writer2latex/xhtml/TextConverter.java @@ -189,6 +189,9 @@ public class TextConverter extends ConverterHelper { hnode = form; } } + + // Add cover image + hnode = getDrawCv().insertCoverImage(hnode); // Convert content hnode = (Element)traverseBlockText(onode,hnode); diff --git a/source/java/writer2latex/xhtml/XhtmlConfig.java b/source/java/writer2latex/xhtml/XhtmlConfig.java index 5f591ae..4ffac84 100644 --- a/source/java/writer2latex/xhtml/XhtmlConfig.java +++ b/source/java/writer2latex/xhtml/XhtmlConfig.java @@ -41,7 +41,7 @@ import writer2latex.util.Misc; public class XhtmlConfig extends writer2latex.base.ConfigBase { // Implement configuration methods - protected int getOptionCount() { return 55; } + protected int getOptionCount() { return 56; } protected String getDefaultConfigPath() { return "/writer2latex/xhtml/config/"; } // Override setOption: To be backwards compatible, we must accept options @@ -136,19 +136,20 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { private static final int PAGE_BREAK_SPLIT = 39; private static final int SPLIT_AFTER = 40; private static final int IMAGE_SPLIT = 41; - private static final int CALC_SPLIT = 42; - private static final int DISPLAY_HIDDEN_SHEETS = 43; - private static final int DISPLAY_HIDDEN_ROWS_COLS = 44; - private static final int DISPLAY_FILTERED_ROWS_COLS = 45; - private static final int APPLY_PRINT_RANGES = 46; - private static final int USE_TITLE_AS_HEADING = 47; - private static final int USE_SHEET_NAMES_AS_HEADINGS = 48; - private static final int XSLT_PATH = 49; - private static final int SAVE_IMAGES_IN_SUBDIR = 50; - private static final int UPLINK = 51; - private static final int DIRECTORY_ICON = 52; - private static final int DOCUMENT_ICON = 53; - private static final int ZEN_HACK = 54; // temporary hack for ePub Zen Garden styles + private static final int COVER_IMAGE = 42; + private static final int CALC_SPLIT = 43; + private static final int DISPLAY_HIDDEN_SHEETS = 44; + private static final int DISPLAY_HIDDEN_ROWS_COLS = 45; + private static final int DISPLAY_FILTERED_ROWS_COLS = 46; + private static final int APPLY_PRINT_RANGES = 47; + private static final int USE_TITLE_AS_HEADING = 48; + private static final int USE_SHEET_NAMES_AS_HEADINGS = 49; + private static final int XSLT_PATH = 50; + private static final int SAVE_IMAGES_IN_SUBDIR = 51; + private static final int UPLINK = 52; + private static final int DIRECTORY_ICON = 53; + private static final int DOCUMENT_ICON = 54; + private static final int ZEN_HACK = 55; // temporary hack for ePub Zen Garden styles protected ComplexOption xheading = addComplexOption("heading-map"); protected ComplexOption xpar = addComplexOption("paragraph-map"); @@ -258,6 +259,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { } }; options[IMAGE_SPLIT] = new Option("image_split","none"); + options[COVER_IMAGE] = new BooleanOption("cover_image","false"); options[CALC_SPLIT] = new BooleanOption("calc_split","false"); options[DISPLAY_HIDDEN_SHEETS] = new BooleanOption("display_hidden_sheets", "false"); options[DISPLAY_HIDDEN_ROWS_COLS] = new BooleanOption("display_hidden_rows_cols","false"); @@ -383,6 +385,7 @@ public class XhtmlConfig extends writer2latex.base.ConfigBase { public int pageBreakSplit() { return ((IntegerOption) options[PAGE_BREAK_SPLIT]).getValue(); } public int splitAfter() { return ((IntegerOption) options[SPLIT_AFTER]).getValue(); } public String imageSplit() { return options[IMAGE_SPLIT].getString(); } + public boolean coverImage() { return ((BooleanOption) options[COVER_IMAGE]).getValue(); } public boolean xhtmlCalcSplit() { return ((BooleanOption) options[CALC_SPLIT]).getValue(); } public boolean xhtmlDisplayHiddenSheets() { return ((BooleanOption) options[DISPLAY_HIDDEN_SHEETS]).getValue(); } public boolean displayHiddenRowsCols() { return ((BooleanOption) options[DISPLAY_HIDDEN_ROWS_COLS]).getValue(); } diff --git a/source/oxt/writer2xhtml/Options.xcs b/source/oxt/writer2xhtml/Options.xcs index b26acfc..b290684 100644 --- a/source/oxt/writer2xhtml/Options.xcs +++ b/source/oxt/writer2xhtml/Options.xcs @@ -75,6 +75,7 @@ + diff --git a/source/oxt/writer2xhtml/Options.xcu b/source/oxt/writer2xhtml/Options.xcu index 2c6b55f..9dbc3c5 100644 --- a/source/oxt/writer2xhtml/Options.xcu +++ b/source/oxt/writer2xhtml/Options.xcu @@ -115,6 +115,9 @@ 30 + + false + true diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl index 06b562e..d4f13ec 100644 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubMetadata.xdl @@ -76,7 +76,7 @@ - + \ No newline at end of file diff --git a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl index 57f0ba5..61e6e89 100755 --- a/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl +++ b/source/oxt/writer2xhtml/W2XDialogs2/EpubOptions.xdl @@ -1,6 +1,6 @@ - + @@ -16,15 +16,15 @@ - + - + - + - + @@ -36,23 +36,23 @@ - - - - + + + + - + - + - + - + @@ -61,14 +61,14 @@ - - + + - - - - + + + + @@ -82,25 +82,25 @@ - - - + + + - + - - + - - - + + + + \ No newline at end of file diff --git a/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp b/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp index 6a628fb..43b1b65 100644 --- a/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp +++ b/source/oxt/writer2xhtml/help/en/org.openoffice.da.writer2xhtml.oxt/epub_export.xhp @@ -139,15 +139,19 @@ Export optional document properties If you select this option, all the document properties (File – Properties) are exported, otherwise only the title is exported. - Click Edit to open the dialog to edit the document properties. - Document division - Technically an EPUB document consists of several document parts in XHTML format. - In principle you can have only one part, but this is not recommended. For performance reasons and because some EPUB readers have - a limitation on the size of the individual files in the doucment you should select one or more - of the following options to split the document. - + + Clik this to edit the document properties, e.g. author, title, date + Edit document properties + Click this button to open the dialog to edit the document properties such as + title, author or date. + Document division (page breaks) + These settings lets you insert page breaks at various places in the document. + It is recommended always to use one or more of these settings. One reason for this is that it enhances the readability of + your document. Another reason is technical: Page breaks splits the splits the internal structure into smaller parts. + This improves performance, and also some EPUB readers have a limitation on the size of the individual parts of the + doucment. Select the heading level at which spliting should occur, or "None" if you do not want to split at headings @@ -185,8 +189,9 @@ Use full screen for large images Select this option to show large images on full screen rather than embedded in the text - Select this option to show large images on full screen rather than embedded - in the text. + Images will normally be exported as an integrated part of the text. As EPUB readers + may have a relatively small screen, this may not be optimal for large images. + Select this option to split the document at large images, which means that they will be displayed on full screen. Minimum width @@ -194,6 +199,13 @@ Enter the minimum width for a large image. Only images with at least this relative width and an aspect ratio of 3:4 or higher will be export as full screen images. + + Use first image as cover image + Check this to use the first image found in the document as cover image + An EPUB document often include a cover image in analogy with the cover of a book. + Check this to use the first image found in the document as cover image. The position + of the image in the original document does not matter. + Automatic split of long documents Check this to enable automatic split of long documents based on the number of characters