From ac612208b76dd537c835c692470b1be6d2463242 Mon Sep 17 00:00:00 2001 From: Robert Muir Date: Mon, 9 Nov 2015 11:30:58 -0500 Subject: [PATCH] minor attachments cleanups: IDE test support and EPUB format The documentation says we support EPUB, but the parser is not enabled. This parser does not require any external dependencies, so I think its ok? Separately, test-framework drags in an ancient commons-codec (via httpclient), which gradle "upgrades", but IDEs can't handle this case and just hit jar hell. So just wire that to 1.9, this allows running tests in the IDE for this plugin. --- plugins/mapper-attachments/build.gradle | 1 + .../mapper/attachments/TikaImpl.java | 1 + .../mapper/attachments/VariousDocTests.java | 8 ++++++++ .../attachment/test/sample-files/testEPUB.epub | Bin 0 -> 29719 bytes test-framework/build.gradle | 5 ++++- 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 plugins/mapper-attachments/src/test/resources/org/elasticsearch/index/mapper/attachment/test/sample-files/testEPUB.epub diff --git a/plugins/mapper-attachments/build.gradle b/plugins/mapper-attachments/build.gradle index 94c1778304b..cb98f9e3429 100644 --- a/plugins/mapper-attachments/build.gradle +++ b/plugins/mapper-attachments/build.gradle @@ -55,4 +55,5 @@ compileJava.options.compilerArgs << '-Xlint:-cast,-deprecation,-rawtypes' forbiddenPatterns { exclude '**/*.docx' exclude '**/*.pdf' + exclude '**/*.epub' } diff --git a/plugins/mapper-attachments/src/main/java/org/elasticsearch/mapper/attachments/TikaImpl.java b/plugins/mapper-attachments/src/main/java/org/elasticsearch/mapper/attachments/TikaImpl.java index 2575d39335f..38e292725a5 100644 --- a/plugins/mapper-attachments/src/main/java/org/elasticsearch/mapper/attachments/TikaImpl.java +++ b/plugins/mapper-attachments/src/main/java/org/elasticsearch/mapper/attachments/TikaImpl.java @@ -67,6 +67,7 @@ final class TikaImpl { new org.apache.tika.parser.odf.OpenDocumentParser(), new org.apache.tika.parser.iwork.IWorkPackageParser(), new org.apache.tika.parser.xml.DcXMLParser(), + new org.apache.tika.parser.epub.EpubParser(), }; /** autodetector based on this subset */ diff --git a/plugins/mapper-attachments/src/test/java/org/elasticsearch/mapper/attachments/VariousDocTests.java b/plugins/mapper-attachments/src/test/java/org/elasticsearch/mapper/attachments/VariousDocTests.java index 754244464d0..88c15c10c54 100644 --- a/plugins/mapper-attachments/src/test/java/org/elasticsearch/mapper/attachments/VariousDocTests.java +++ b/plugins/mapper-attachments/src/test/java/org/elasticsearch/mapper/attachments/VariousDocTests.java @@ -96,6 +96,14 @@ public class VariousDocTests extends AttachmentUnitTestCase { assertParseable("text-in-english.txt"); testMapper("text-in-english.txt", false); } + + /** + * Test for .epub + */ + public void testEpubDocument() throws Exception { + assertParseable("testEPUB.epub"); + testMapper("testEPUB.epub", false); + } /** * Test for ASCIIDOC diff --git a/plugins/mapper-attachments/src/test/resources/org/elasticsearch/index/mapper/attachment/test/sample-files/testEPUB.epub b/plugins/mapper-attachments/src/test/resources/org/elasticsearch/index/mapper/attachment/test/sample-files/testEPUB.epub new file mode 100644 index 0000000000000000000000000000000000000000..a6fc2e634d5c45a3f0d8d901da0dd372544d0eac GIT binary patch literal 29719 zcmV)YK&-z|O9KQH0000006MNmJ8xmDEEE6$02BZK00;m80Bvb)WpsIPWnpk|Y-wX* zbZKvHFJ*9bVk>%Sa8OGF1QY-O00;m&u17n&&J}c@0002)0000M0000@MN~m8Nlr#D zV{dMBVQFq`KJnrnw zyy=gx;KdVDc1%Vdy1f*~q3JDC0Y{kre$`Fc$T^W_$S!MwfLRx-IU@6aWAK2mm^+M?0dft4pi_003_V000XB002)=Q!jLH zV=iuEc&(I8Z=*mAhVT6q-nj=SB<-dVq}nAtRB98X(nF5}GYM#627zhP{q-FnX+Y}7 zHeF6*r?uT+Pp%AB&Y2Jo?w5q8<1T zzi)3mU<1VE&HV~-5iFV)_HcMU7$IIS8L*frpCN9yTTAeye71D4!N23n=>^txXas{+ zUUF4|)gW|BB4o=KMp3TIU!7(`l; zRAdHVk0<9BKc|;w4*0%E$eiM??89o(#8aPdq^B!I9ofg1WPDePmQ@zY;!Tx=2moLZ0&H zRUu?i58x;`h;Df((|-Ecl&8(Mpyum#^IC&%>z(}&pe!PnH6FEv6;qb>XNiYKKLxRS zAof>50v@Ik^cuXjweobH#%i@b7=4Rs+@l(Qc|9@D$t-AeI!)ACl(;{PzQr@?@k~zT zvHu^B{W(t)Hy@Kz|FGs~FHlPZ1QY-O00;m&u17nX{15!oWB>s5od5t60000_P*X2M zZ+2yJL}hbnXKpTPaA)khcUV*3x-L3tQWX)9PLwWH1OyR?igW={X(B{KL_k19q=m!= zC{h#z6e&uT8jvP6bfgC99TIv8B$NBW1O7FPafyt<>Tk)=i(L+Jjo|`f{&l?&rKMZ=wp~!*jZTE`HpfP z<@|HT~OA`u6}c56g+us+W)OS~;^y`0|~5@!=brQfl{}ykzG% zDIh2$EG;7|cSc@a1dHFxe$}1|Xepc5sx3spkcl_$?8WOa`y{ng*2bb#GNrGS*3^n@S|*rD&Ml zqP5^Ht41+h&oLzW1&oOX^uMJ62_ZCq3O3r{qyaKXbCx7H4HzIr9&#W>I_B|@+eV^1 zO{C9+=1w1^7v3$gvq!s|-pZJaT&Y!&T%IM~g*>MLyAtq4CmKKlVt>;BE>0YX`r49Q zFiQjQhld=IXzK5F8h~1b&smcDP~V-w%RO)$Kh+3@#5E!rXu!%<8qih$XE-R6Dkv}q zrm&?S*dl4b{N64Cu3{?;iX2f{gaxvZ7>0(+3UE2c;iG z44qBiSppL|Xuv-xHn`juxpN31(w}kmFr1eP?Vte+kOe5|@B4!P-V~6_Rz`#vO)A`s z1~9^xK-Zh$s82LtPJtYo4*!eY$Y)g=;fFlnZ3NwL9qTLda{rUQTh;_E4|YIg7Wjvq zt-tNLLIc8Ch}<;biY(Q7iv|!Wp)3ZV39Z=!iVB&X27C(Dr~lS-p#jek+j^mY=?(ge z^$=gbXOfIWXaG2y2D||8aR1BJ|FZSJZ2d1=|I60@vi1Lqwnif-wg^{=W;i4v5byT3 zP7Mv-=zY?$k?vMQ9jHxuK>F$8lW1aZVLkSQ8**D=4C#Y7P)CZaT`(&2X@^jk2( zC+X%*nzHS;K4^ELk{rl4$m9EC-20|rbnL>*NI8Vo7KdEM^M9767fNYBE)0+ZXn;59 z5aMG1sv0FHLtT3yFF6C|)0)2JO9ME_W3Wc#wmXdOw^cNNqVf~*wP1PnFIs_x(&N8j zga+^-&xiIgQ3hg(E(fPFA{F{BHb=^RW&9^;-0ASYb$_G3Q;EW!@<|%-B%PSP$h!lR zq5&bXMBAkn0t*d@H^a$N=<&T8+7`+J(WCxFEjt?>6haj-`=D&|F=+E6yam+B!e`~= zJ41H`;JN|qM*W7*%`i%X}>a~vExfhXT0!-M+c)LwO5H+b6L zV%=sr{ySD})}o!iV4$TXt+23CFDc_^`YWV>x=M^VV=3MzBCIDkbg&Z?9~c?my3%Iv zX#I()Jy7-~cQCd<`{S~qcdEgIDubJO9R1d3YIEq5xbN|w&+HDeb?Z%VKr@_SU0i8+ zuBLkM>Ce}L2KOTe&ngNma&@tHAIq{fR5my8Zkfj5#!8BluNCOVGQ3@nmdddJ>5%~Gha4xVH2(Assp#fQRUnHzOaXznQyY++!@Nss-vS$ zvENs@j7UH(qmGHtOTRq^G(L$QiANB_$gF~!<6(5Ibr}EuATp2nVKk#3QAGo}o$$H` zjH9MyiK|IkGu9^7;v0`ys}b$#%+L#XO)M{hxO4kO&nV%%0PJ-A`)@uM_PteO37^Vb zD1#7Rc$1}`Jp3+M`#1Ec`}xVDXY*KFkK7Ml?95Em-7sSsQ2d|@KKBLAk<<)lF0L~R z0t6c5s?Qx=M~&a>GUP7x(Wr0XAl><4snqQ;PaR5Egd^yY$e?F-&P*&e^94y^CTVZg zhs?HZNt8ylS(dKDWQd^w=Oybd=Z`6f>$Ems%bY5vqdcH-r~ru-m#eC#d_X>8m#s94 z={6j08)D0(xW2C25J%QLv;3}cNCTWhkL0;{1$oM&Jbi_G`My696Ld8uoQhn=2wSC^ z2ChMl-b(LP*{QRR5(V8sG_d#{gqLwZw9}RE>^7Pmp0uz z|HTXaQ2T@9Gl-HHY9vx&4n8JHXdJDBV2r7v#CfZDo9Z-~P{~_0UV~*4i4X64BNA9% ziNkKNUl1f=>QZ2g#f}bR!+VxBx}wLl)AW)ma&rx9&(fW&SNC{EMs;;$*M!5nw>JbO z^rhmAC$0Io;!IWmM6b^T6JZr!)dmsLd<8pRfersG)jq;mfBu~RQIkXOs24Trx`tEd zkC+He=qes#taP?&PBNby4^9#6@lrercDFuMM)XsZGmuJ;=;SjUF0SJP4ExtZEXt7Y zeN;Vfw+`M}p3XEm0-v)EQ+Y=PQ(M#IOJCX7)`!a2P^Po7oppmM*FzWe<4cj#6Z26~ z{)Egpt9(i-*DY7QX^PnFLg1EGk$H&ePj@+bB))JxNH5&Oq*un0llNOehj<7@Ow1q7 zq^I_9R$NcaovQG=jHCBcapClf5c^S)d6!usX7RaKGu4)pMpW|<3^yeZL5+#26MmYj zFCgsCpOqC)LIrC$JH=MyY$o@U4=Jyx>_nsaq*h0`2|hesCey_|TjaY-GhlOi2$OXv@3bfW=AZIGPd zy*v6*t^MuWH@;&E%gu|IyY6dU(}gM|*qzaHtFg=g%fKH&#`>v!tF9Ps?%64ih7f2iRMRAZ>_0>ZJLfI#QQXl>?r4VZbJ z@=@{CiOUx9Tdk`1q))_f&q0BEJn3d-jlY1vL|E4O{NT^bFZE-IjJko`gq zKd%t8Ak140DL;K9owm7YlW2bjq1e}&C_9vV;PHw5W|O|~V%8U%UE~4CT=bD^bRuVx zUBT=kh-$psC5PyP5aqVoEQN`ndA$f1G)iE72J|ETN~Bxmz}^LHrkh$HC%++(0;r9? zShc@<_DRR+Es2e38o+et!I`@&rgaGeRhSJ}v~7Dj?pEx9gdV*BDIvoTEpxrJkW_Vk&5p`B*W+OK-*WLnsivAC$!zP;I+n^ zPyOVd&YDbax+yDX6eaa#kgoe|86wHNYE<)qWok``o)I^wpa$Uhc_`rx6g_MdM|Q@$@=T z8yb?HyKB1uf2pTUzDtR2IE{#?vm_ksu5f%w=U(&s?3{Q4MyXv0LuuW=Xd-y`u>tHm zk+c2KvNfI6T~DTeQ*SWa-E5AJ>ij%FM7)i)Kw$0D*3&Y0spcX z+JNsm!++WM7myW3ZK^o<93)bMn9bv%SDX%eC^zK9=39*E8{rh!#XxIY50|sM3OS{7U6K zeS-7Jhn!S#XFQx56iCNE7J5`B_&|%S&y6}j~^^SlCNjKDT-`` zB>R|ox>D?+vG#OV$|5Vz`k;N@oG;may(-X?S=#fy^bn-(Htjh9pG!~Y2cunJs6$w) zpXTTMKyUr*9zk;ZDa}i>=C4&KWg57oHkHX(jBGnM)0!S1p1(3oCLy$}XIn8<>PE4c zy+e=Isqa`vBQkG1CYO9_RuqXAuldqF2(|L|I@`gad{c#;40|fRsc>d7Ff1N*)KU4N zrre~XCdHL_az~z9JzOSwAZ{^XcN>}8Oua_AgXr*?jGW%20iIytODT0_6A~2j@>8}O z=CI4KaqxB!Ooj#^)s+o`BmS17-Cvk~!m7pzlqHJ?q7@0RDaCuj|Z zzm@tx-1E!rz;zH-Vg}6^Cnh@DKNPBVG#aNZ!Y*Sg2owdvN#tpm0=@h^oS~EFc{-#pzE^!*Xj zM%h04FD34xRF*y@==D1B&;aIM-16&PGtdd*?46fQYH)iIjkXCt?3!cURg z68xx5V!Z)K+^uf=`^3xW3q!nI!Aqlu{XIqmo|dY=+u>cYU;Rj~Fd0#vF7dH&8Zl{p5xe8o_TXmz&TaYQ%f7azgi%L- zEV2{y9gO>-BTWPJE#A?9S8Q-%{x)QykO;!S8!ZJ^Z>}FI^-i5U2N}aQgrzFqyRl-s z)MvqgA5s-tUyda{-KSWC$yG>F{{Q@UT}|Ml;*Ue~?*c67($4_*uE z#H z|E|!8tV(v|Vr#!&LSmJtW!(WeBm8`^SocwTL(SmZhvPw@kI3UxIr2@)k2)V0j}cyv z{o{*|${mHL!|K1^V|aAJH-+mLwq5(VDkO^r{NUce(zS)fb&#~F#>F}&d0onT7o0B` zK%FISPG5IRTl};uQ6GO5M@T>ysJdslCk9)8UAXMZc;yw9@he9^BDup2WcRh?Q?N&> z-t-|g_;61zf;B-~gIe(>4|Q{U^}ziQ^aYNywmbkq>Ck+)lb$FaBFd1i;DhrtAOcKa zp%+R0p7Sb1`R_C!a=$URig2F>9ID%nr~mlCO7J22#lSIUJ~ZI#sFN)9summ%?sL-x zAAoFV03$gs4FO4_yFTPVc?LuSN`qA>az7D6^5j}N&VBoZz|UX4e%TebdqF&XRe-;{ z1-Y#nkx7oJ+o2ll=|PggSM(U+oyUlw^qFyTQ)EpKTBsZ!Xn>Sa3!DIor2!_(h)n8# z*QF3g1GcpwdpmpVG~ib*6-@)Mxu@ygTtReqqkO<1#HX(OfQY=vnlNtp^uhZ6$JqUM z?ch1Rz5QWm7`hL7?a*YJ6&~psz!#P%nbcKrqWx@8mGA@ObR=)$y6K(rI zI8!qdi*I=GW!6p}yNdD%8gtO{SCU*pO62S?9K=FQ5d>8vu?eI(@{0h<`WVr|>fPr&C=%E&i~nT3HJ z_Qa1p{uk%{q>~?}WZ5$~+meiMUpYj49?e&TR4ZN6;JWX5FZ*FT_TfyeQvBY5xSkis z-s8CJ@aRP)O*4zyiq#!mNdi03g$8iU69Rtcrm3h{jgGDD3yEUiGqBMBq(_8!q324? z%dS2#?LJPkha)0^l6D!aiThZ|r$8%5f%#$b znC*f9_T5}9@V1>+>x~PEbWqsoubK#HUY9*DrUj1uoSqCW(n2QM&aVdn7p&O4u{QYwbJ|X-7+2 zaBSOnj#7onMjC_ymj*FzEnD2goYvT~wMyTqFxHELv7fnXDi`%INO}09^aC9vFMM<_ zmip!;(u4*)K)wu^Eu#S~AJ8HQUU;*m*U_Q)iM~g$uDeD}s@NTnBy6eAXhz5O9h8m? zFJbWJNn&>%ai7XNyMd@gG1Gu?deWsnLn*6Y3rY)KzNofus5VnCn#=#H@j-n4GO0j4 zHQn}PLQ!avcf^;^&ZU7<#p=~6wq^yzZwqD!qoa9y+kaAj78Ag6`+#>Xv137{4SoQ2 zm?epN!FQkfAMQa;2bNLUDKvoHs3WgI8r~d4@KLjWXG86wcFab{6fGV!1g=+!RPL`r zoJM~?_*A2na{grM8OP@H!Mb9ZvxDEzch6RQ$Kb6!41cE-R}MQ_?m2|45B>p)m~b0hZ7 zFbls_zveo)=^}kKOnc5X;knR?;j=kvxh-n8Tyw*I4j#MDU0}XM^lM|elIqmNuv2nY zXQhw%lUS3@+|e;XL}u3x$E`C%&G&{^Eh|^|$pTY>7ZMqBB(Arjr}OoFG$waQ;~O)4 z_^Jr9e~!#I^t4Bd!;i;o$<1hKtBq&zuQr1CS>NeN5N#Wu_4;DKJgdQ?rfOeEztFNP zf-fyg5PiLFRCYJ~kr{lFG2SN};q~Icwa)XMo8+|38G86O6zI2rai%E#JAFvpd*ZCo zAR5(6`Rt=K$b+pjaHy+QM1n^sGgHO%paYGqH{d-C@=#m5o^%n`D=tF$ zQf_Y8eYp-f(eO7qVw6luJf#ST zz&04AE;YoPU3z=h%a><1)$Vn8c|y&TC%FCHr*-j-h> z;2j)IB|U#~o{Y{!&B%+mTm72g)`#2-9BfL~Y*pd(&=VWoa2a|UeMORsupJwowNu zplo)rjUGQs)N2P(&qR2Q1WSo_JLij}DZwhqdK<(ryjwGfW7oX`%tw6LVO$l>$(-!G z)cs=LB?{U%)5VVHfJ_)+7H2zD-U;VM$y6kFTh_MTe#CpsW<)2$uRl(oH|lv?gvVhn zx{7=PW#woiL=M4ptCScvrFCDj4fq5P=>2fhZRj*vd-OXQ_6J4m$hSwxV9f}f%bs&s zkl}#Kz}(d~{ zb)5S;zfpantYUM4?kv&;dzBQumqa=Pkh+N8r#x2#@1`m&a}(u_$R9vQ=>P=-Q)JT` z3W;#E-&`zXU_eXJ6BQAYLF|Tkqxs95q8?u=7v?YeMJ4YbC*XvDSVBC`A{D)=v4kU* zAsx_zh8QkRJV^zpzcg2aKtJT*h8igt5OT0EF@Oy z?-4j7)FmjJ_-&yam-L3f6x?O%aOd>t`{0e^ZFVu~XLOh#dC#2WfBTCGdJvN9!}>nn z3~UHr6lZLxZJLaQj`mK-ZZM$Ps2m``^Dt|ow^eh;`NhjD7EKAV ztTC?{^+HByz+A$N>Pt$J5k4m(#5Fz9VdX(py!cuHom_Vm%(SBvdp&E?M#sB7$19|N z@0P71T-us$_B`p5=Sb3Vs;se4!PkVWPWh1e6bRYBVUis#bKIPxGlI4hEM@I_0MVj3j=>%qthwxA;cGQ*%pQT z3+*A3RB1qH5%mo05h;b0lnuglY+t5hK}rBUt6XCFCutx(>ff&7#Qv=|Y}f86Q5V5@ zaF^^7*@U_e!XbJi{<4765c*e@ERV;Mus(RR9k;1D@U$EqO~G*-av62=b^pj>6WxAy zDM;#twOLje?`?ZxFm^)&b^K06R=|hz7Nl)qEF;r6abBb2b(b*|R{d%kkfxoO%Ti0VX#9=#iG*?Ddv_C^MDVaz z7|vhw=jt1h@>={PzMeWMA7w0b$}Lv{sfKjp9y7A1e5(_Ny5$p#py1qTl*DBGL+|Bk z`8FrRo;Q5nTxxM9tS_3t5NZ#&^eU*#C%OW}V}M!JxitFhs0$%ruytYEUW^)%pHRxW_12X&zCAVF& zZQ~wqA*77Jqyy<`$)IXf#IR=AJLiXLU>e)|#(~mUHt)+;%%4cNhA zxXJQ#w>*$<$Vjt{NRiZh_p)YU-Lmzd>vK_{#dSOPTHTF3GWT$o0&c5KPloty4#7Vg z=y@Bj`9^WCK#1Dw>q#k-`XV*IIQ4^H*XYy-r#`Uj)WnZo{h>8NO5y{W%c z$@aU*nwsFX@-dRyW&E)OOp*N2n+8K0d(r2h2ey^GS-8%ZmnT+?wNAxwUw7BJj4_vO zzI|&Vr#j#M;lzFEt4TFs&6hduKi9nY{)h>1e@|mE{Rj8UJwybutRqaFo5y|IJ-97n zDu@vGBhh^H#JPn$$%MPX`^9cl4kmiM6kui#SKa7AWo4V7sIFJL_s|r-ylC0kHA=BG zO_T6p-+S9Wu((u}ig1}ApTRRVQ*~mNEV+pB#`qHs{PvS34UsEX9WLq%j$!+bsjYaz z8aU`V@&;Z1Oc)gkbR53IYdcessYiw;uIgf~?j{&}Tt zwfesTKmV*Su?Ra8csPspX_*dbOS1U^aacXy`-Ffiv3<|=n0?M4(QP@&ODG(m0q(DH z`K!tNOOfh+PwtcM{Gz&jS#%KzcIgJE!pheUH6q@qcc*IJDy%0Pdzr1dI=Nf~-daUc0quYev9^eClYx#uv6CD7L|HntD5WY|1z7vtGrX zj;@Y&`xUiUeqP(PEA^wH+UXZln`@i9ZY_MgG3*d(#k#RW16UYwG@!}nwJ_@|1XMQ9 zLsQ$MM|^1pqhU0w_UkMg%7_Vv_(3ncP!nKtN>-g_fv2!{tbe9a?({pu$Tfo}3tu0- ztgl9>QrC%U6+Q{k=76qhQ8_vxQ~lL0u%*>fP%~+wTmmCOTy%N6 z9r<-vYbqq&-1&La+}V=W2kc!phYj3w)7SUy!oOtf$fKjKTzZJ=6Fx`O@X8O6O!Y3A=qY|X_7Z_@e zTxZjgJ$0|)Cgr)F<{F%{LDgW+(Z=1SAA0#hdECIgOBD^GhI8U!Z??w*x|TO1eVAVM zJl-jKZlM-ltm1%BqC)&Ds<}m?x(ludj%2gD_mo#5_A2vMejnyR)ZJ&R(qHbWM7iUZ zbUB?I?JL56hYcFBepq^YEu?H|bMiyl=MIlUC**NGMGxVa1k%;OzAfWq&(Is-6HZ^; z>9x~{V*10!*`eEkZN3YE9QI-EgZY)VPE{AxQoQaQ6&%XK2Dq(0fW0Ss(^2L*S(j)~ zIJNTZ>~tXVPNj<|-n}o+hbiX!jwre1r}ZPzS1(oRMN}CCJCk0n()s}{IhTkdX=GKI z1yBkI@1MCWDlFuvrB&y^Q0XP07f>FwgUGC?`*C7HTM|!U)fHk=W#zqd_l$QcO8d(g zO_-yYBKNtuU?>`JjLeJq4mCkw^tyP@Ms&bJoPP{g{V@zNo;rs|7y{qc%BO z{q_5I5wd?QLQlE*#42hHUG1y4tbGW_=u@}G8Ih_Wht^8B{@SB9lS}W>_m+plCc$Si z(^BniyLAiq6VA`}$wtDP&cGKK@B-9^N620Fg00&`1uDB44LHU92D!K6N&~){-v(6* zVCO;M!u#|rd{lX4*`f0#$?FCIkC$bOwtv%+9*=D1B$L>^$b1vF5Z+jul7rBG;&2h*j;V2@)FB=x9=oI6mv-==oCP3rWSi z;#_ZO!>VGNi_or0y2ru%pUqi?EB#YEIZz#B?JFJKnVk1@-v7MN8+>~o@@BR)_61Ct zY*&p(zMCOgpL1yOPQK+QsML5ls!T@gEy0y(rlwbo;6yaYns^teCqjH++}Q5@^j9&6 zdiY)qR&h(-^_IKQRU?@iOo7 z1Fv;8!A4A{CuK=JU$w}`sr-9O@dfst6RyRXInyn0XMf>tmf`Xj^9gLfT%DU(M;gGC zeDGa*Hu4l_8qqPDbClN6#OR)%-lTTkH?FL^Dv}IVjN>UeHtR2$ekq|BQfv zA17aE_!(4mI)Y?tZhK)H_PFfSE_2O!-2m~uQ3sZn?as21jZVrSKBt-h2#zAuVJQ&R zgmI2&pRh_BaHIhRPuHst+37U5GyVEMw!`nAbT#_lR-{oVqWsnr(S2_SOqfAlTHo2B za@6kY35WV~Q>qXF5;WjL0?3vIWR?Bur2$j&hp_L5A_Sg)3s^8I=}*9h_`FdOvFP_# z$Rgn!%;XO9<0%TQNN3Q2287NXtNrOD>&9p;grz_;kB%45!&Bl+dqqgbb3;tCfUL1xukrfEXkaQGs^STdZ zqZF1)j|$%I$nn^5*DNNpwQN->nyfI~9pB|A$s98@GCfq5+b^)n1BG>1)+0MJo6xgQ zG*(gbH%2$BmOfPwNAcVII2G(Wj7cGDqL+?o(r@erR>Hi4%w9mag25=51-YdeL<)Ya z{k6=If5b$#gb^v6{S#cyjfF3-t_@DE&&YD~Fr}BVNAwt#o5k;DH+L3Vo5m4u`IAOh zK10pjUS5arCZ_w*0CiXo)BB?^ore?9+X(EqSmBzu0De93#yK{DtodEUm~SKEmkI~G zliWlDTo#arcEh6T*xO~0F8WZ>tH|-ZTypoe+xi}#6+|@j;lFPjBqB*S;hiIa^VF7z zgCba83pEcs%};Fm&;CoOUM9c8fzj~8Yus`4+b+1p&;SAIwCdj9V>^l3@MlGlUY&Iy zS|Iy-+>1U=dPX!rQeF>115DfyU*JE7cPUo8tQ%r~ih{Y=eQ)G${_Q+^3^M%j2)qyF zDIK*2zUR;WcRdR37?ERUDKL5n^g&g~k&-mPi3Sh`cR+NI7J|Cq*3ngOce#(5DSydX z-#?yB&1Ec!=ZJk{WAXN<8gJ~U7wt#<_BzPC@8*13XaLW++58vEmDyHtrNQNigy-osv-QsS*XLsEnFXxH{z0 z&`>*6?EF(C5#wqi!_l}W(kLa)CWshwy&lPb$(jjZc+L_UBd>KQPJN|DKHEg0O3Bts zARmsiO#G&3;d3Kv-nu!(G0uTPO{Aw1*h2_$pD>)*yy#uzkN8o3O?vv99YY!GGq~Ss zG6p{PWk(%S-W!+K7;jc@QOYTC3%y>Cc z2XMryv+U7<#7P88;hQ2L`>%7#!Web^AUUN%{~rClzDWf^ENWed>uh zEOS&10}0nVhR>pBW1^-0=mSx94c+r1;h=YU2%n>0nw&>?Ma(8Hdle;98;s)Lb}h

6%KZ1mxPE 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 ghbO`M-#q^$P+5s@;Q#dk^q