From 17d4cf0cf15199f0aea49524be8d87faabb68557 Mon Sep 17 00:00:00 2001 From: EugenMayer Date: Fri, 12 Dec 2008 00:25:15 +0000 Subject: [PATCH] Item434: New Plugin: AttachmentUrlShortcutPlugin git-svn-id: http://svn.foswiki.org/trunk/AttachmentUrlShortcutPlugin@1274 0b4bb1d4-4e5a-0410-9cc4-b2b747904278 --- data/System/AttachmentUrlShortcutPlugin.txt | 48 +++++++++++++++++ .../Plugins/AttachmentUrlShortcutPlugin.pm | 49 ++++++++++++++++++ .../AttachmentUrlShortcutPlugin/DEPENDENCIES | 0 .../AttachmentUrlShortcutPlugin/MANIFEST | 3 ++ .../AttachmentUrlShortcutPlugin/build.pl | 13 +++++ .../TestAttachment.pdf | Bin 0 -> 14728 bytes 6 files changed, 113 insertions(+) create mode 100644 data/System/AttachmentUrlShortcutPlugin.txt create mode 100644 lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin.pm create mode 100755 lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/DEPENDENCIES create mode 100755 lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/MANIFEST create mode 100755 lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/build.pl create mode 100644 pub/System/AttachmentUrlShortcutPlugin/TestAttachment.pdf diff --git a/data/System/AttachmentUrlShortcutPlugin.txt b/data/System/AttachmentUrlShortcutPlugin.txt new file mode 100644 index 0000000..e37d3a3 --- /dev/null +++ b/data/System/AttachmentUrlShortcutPlugin.txt @@ -0,0 +1,48 @@ +%META:TOPICINFO{author="EugenMayer" date="1229041003" format="1.1" reprev="1.2" version="1.2"}% +---+ !AttachmentUrlShortcutPlugin +Gives you the ability to you use shortened syntaxes for links to attachments !%A% + +%TOC% + +---++ Usage + Use the macro !%A% to create a link to an attachement: +| *Parameter* (both working, but only use one) | *Default* | *Description* | +| _web_ or _Bereich_ | Current web | Sets the web of the topic, where the attachment is attached to | +| _topic_ or _Dokument_ | Current topic | Sets the topic name, where the attachment is attached to | +| _file_ or _Anhang_ | - | Sets the name of the attachment. It must match the filename! | +| _name_ or _Name__ | _file_ | Optional to set the name of the link. If its not set, _file is used as name | + If you use file to define the file to attache to, the link is create automatically, so you dont need to use braces[[]] like in example 1. +---+++ Example + Different ways to link the attachment TestAttachement.pdf of this topic + 1 [[%A{web="System" topic="AttachmentUrlShortcutPlugin"}%TestAttachment.pdf][Test attachment]] [[%A{web="System" topic="AttachmentUrlShortcutPlugin"}%TestAttachment.pdf][Test attachment]] + 1 %A{web="System" topic="AttachmentUrlShortcutPlugin" file="TestAttachment.pdf" name="Test attachment"}% %A{web="System" topic="AttachmentUrlShortcutPlugin" file="TestAttachment.pdf" name="Test attachment"}% + 1 %A{file="TestAttachment.pdf" name="Test attachment"}% %A{file="TestAttachment.pdf" name="Test attachment"}% + 1 %A{file="TestAttachment.pdf"}% %A{file="TestAttachment.pdf"}% +---++ Plugin Installation Instructions + +__Note:__ You do not need to install anything on the browser to use this Plugin. The following instructions are for the administrator who installs the Plugin on the server where Foswiki is running. + +---+++ Installation instructions + * just use the installer attached to the topic or even easier, use the configure-system/Extension to easy install it trough an user-interface + + * Set SHORTDESCRIPTION = Gives you the ability to you use shortened syntaxes for links to attachments !%A% + +| Plugin Author: | Foswiki:Main.EugenMayer | +| Copyright: | © 2006, Impressive.media | +| License: | GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]]) | +| Plugin Version: | 11 Dez 2008 (V0.2) | +| Change History: | | +| 11 Dez 2008: | Renewed plugin for Foswiki | +| 01 Dez 2007: | Initial version for TWiki | +| Foswiki Dependency: | | +| CPAN Dependencies: | | +| Other Dependencies: | | +| Perl Version: | 5.005 | +| Add-on Home: | http://foswiki.org/Extensions/%TOPIC% | +| Feedback: | http://foswiki.org/Extensions/%TOPIC%Dev | +| Appraisal: | http://foswiki.org/Extensions/%TOPIC%Appraisal | + __Related Topic:__ + +-- Foswiki:Main/EugenMayer - 11 Dez 2008 + +%META:FILEATTACHMENT{name="TestAttachment.pdf" attachment="TestAttachment.pdf" attr="" comment="" date="1229040729" path="TestAttachment.pdf" size="14728" stream="IO::File=GLOB(0x8993660)" tmpFilename="/var/tmp/CGItemp36464" user="EugenMayer" version="1"}% diff --git a/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin.pm b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin.pm new file mode 100644 index 0000000..89d2056 --- /dev/null +++ b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin.pm @@ -0,0 +1,49 @@ +# Copyright (C) 2007 Eugen Mayer@Impressive-media.de +# www.impressive-media.de +# All rights reserved + +package Foswiki::Plugins::AttachmentUrlShortcutPlugin; + +use strict; +use Assert; +use vars qw( $VERSION $RELEASE $SHORTDESCRIPTION $debug $pluginName $NO_PREFS_IN_TOPIC ); + +$VERSION = '$Rev: 12445$'; +$RELEASE = 'Dakar'; +$SHORTDESCRIPTION = 'Lets you use shortened syntax for links for attachments with %A%'; + +$NO_PREFS_IN_TOPIC = 1; + +# Name of this Plugin, only used in this module +$pluginName = 'AttachmentUrlShortcutPlugin'; + +sub initPlugin { + my( $topic, $web, $user, $installWeb ) = @_; + + # check for Plugins.pm versions + if( $Foswiki::Plugins::VERSION < 1.026 ) { + Foswiki::Func::writeWarning( "Version mismatch between $pluginName and Plugins.pm" ); + return 0; + } + + Foswiki::Func::registerTagHandler( 'A', \&_AURLSHORT ); + + return 1; +} + +sub _AURLSHORT { + my($this, $params, $topic, $web) = @_; + $web = $params->{'Bereich'} || $params->{'web'} || $web; + $topic = $params->{'Dokument'} || $params->{'topic'} || $topic; + my $file = $params->{'Anhang'} || $params->{'file'} || ""; + my $name = $params->{'Name'} || $params->{'name'} || $file; + my $url; + if($file eq "") { + return Foswiki::Func::getScriptUrl($web, $topic, 'viewfile', 'filename'=>''); + } + #else + $url = Foswiki::Func::getScriptUrl($web, $topic, 'viewfile', 'filename'=>$file); + return "[[$url][$name]]"; +} + +1; diff --git a/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/DEPENDENCIES b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/DEPENDENCIES new file mode 100755 index 0000000..e69de29 diff --git a/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/MANIFEST b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/MANIFEST new file mode 100755 index 0000000..a1a033e --- /dev/null +++ b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/MANIFEST @@ -0,0 +1,3 @@ +lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin.pm Plugin Perl module +data/System/AttachmentUrlShortcutPlugin.txt Plugin topic +pub/System/AttachmentUrlShortcutPlugin/TestAttachment.pdf \ No newline at end of file diff --git a/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/build.pl b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/build.pl new file mode 100755 index 0000000..560a3b2 --- /dev/null +++ b/lib/Foswiki/Plugins/AttachmentUrlShortcutPlugin/build.pl @@ -0,0 +1,13 @@ +#!/usr/bin/perl -w + +BEGIN { + foreach my $pc (split(/:/, $ENV{FOSWIKI_LIBS})) { + unshift @INC, $pc; + } +} + +use Foswiki::Contrib::Build; + +$build = new Foswiki::Contrib::Build( "AttachmentUrlShortcutPlugin" ); +$build->build($build->{target}); + diff --git a/pub/System/AttachmentUrlShortcutPlugin/TestAttachment.pdf b/pub/System/AttachmentUrlShortcutPlugin/TestAttachment.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ba4bd471f1b0a33ab47e932bf34ae0e2e321105d GIT binary patch literal 14728 zcmai51yr0%vQB~p5AHAlg4^Iu@ZcKUVQ^<~OK^90f?I&#PO!nm*cn+O@$)mwf^5ye z<^VP*N10i|!Ws;6WR|ct1cSst#&#wkK|v%Zup`LO2FWdhF`^CW74S{KJ%8`4$cC-Y z3Fd3$tgOHl;ZBhw{$tq6^Xn0+Z!BJXY$$|&m3J>*sUgwgBTU3gRaMxpd~Y$ku1`)2 z`-W|0j8a`c1oPAE6=6VjLqrcYo7OB-o^kdB7m6$aLM&;d9EH{WSaU4wlJ9zggAt>Z zrPt>n2rVZaL zd9LcbIj|VJefpKPYfN>oYjxT-yJ%He_jA#6tP>U?xYeX!g)+XSY>Z7YDXSD?f;mLP zXs$lz=WZpL_6sk+{zj9_&ZPESu9DP#Yii}OmB|)kr<>i`jt|&#QVD0lq?JYYKafwV zF)Zlc8atp9wsSidU|g>hGw;=YvE^X^390m-HM;xT@XBDTPprc zlkV2GHnnS`;Ct#aovWgG{YmJ}0|$vJfrvA39CWXJL2I_NK+J7R%)H> zgdpEM_PdmVn!wsH?7P7pmT@X!^HigU91{>`WYeAF;L_50fVfO6VRz%j! z^rO5Yl;ZcL`^ySEN~8HnZUe&hJV2Fq-)@1;p;0WN`Scrkw+W&Yar75u{f7yX$5)IV zu)Iz4jo&bZoe_2AT&uvhkWSkIyD97%X_5=1Yubp~Fs2+I!a@v>5T8Cw&G5T#cY0gj z`qNEvDCs`Q3-W$1owwZg=_S;}bx&maB6@{2oZJCP3{OCq2`@Y#|BZY5vS1u*xGT#< zp$z8$HC|n;o#2*~oHZJ^i`_wpU6HLIUE< zB6svxgpW}W^sVe}CKLT0nwKu9ErH(2k0EWHt9=Yotxow)`S1}3$?%3n^abe!+AMdM zZe;O#iF)x*G~R$R$Ea3~RXSf4v;pG_;4ONX+<=O7V&I_Gw#d6zW2(iwrH3<*2i*tg z(>Ew}LAKqWelTt(_La$Yq%fpCRMMs$q$0^hlDo)-A2XQn4erCb z5^Rn6{!LTx>Z_q#d1{5Jz5yN^b4%Q@p}v`GRm+0+k!Q-w9RNXYi%e4@q8_ zdNL|I^rC|WgPDW=gTmWz*O!)Lt2ZSIC7TDx2h<1D@B=Z1{j3QD?I!bfzcMEbbgZp` zdR7kw=gfsKlX}B)nmD<%KkRGxUls)Cn}G26LWA68bKQoQ;e^T|rN5A822{>uh);uU zX_cGfdU#N6-@!fs_(VP)N!AVl2KsvjVFMTJ@)5TQ_MNUU4^8$5{T(~**l5#9B{&!9 z1!zeOhxT(+>2(1s6j+}A$3Q7sNpIAW>Om_3W>`rzFh3p*vH+9Ln=SOZH{T)cQk2BC(rE{h^-WJ5qr3DI(v%5 zsp+Wp*1#}cFD}Sl_ois;`r6IQf8$$^EbBbQ-8OQ>ko?g=AVamG#B(Ni+W+8YW)}t7 z@VIQxR_yBZ%?R#rPPkr9!#;(npWS3h3SI6g=H9AAn{ta+f?5>{VP_iSds6+cW0Wsw z)w?`y3-ICq*P$H8f;Sg(o|xeR5t7q+J??D2h-CunkaUdH-ifm!0qT@c7Le`!itB`zKl%lh1* zdKN!?!Gygyi~&ez3+8mT%xxWwiQCm_`W7&kNy_fF!wwE&XXnV2#+u}XOLd_uAWBFV z65o$fZZ@Myl`AV)j5Dg3C<)B6vbQuo>bhL|#uV-4)Vf&xn!JDI0DW*BCzmU=HgC#HEU=jet(&9=7 zvSy%0=7P;&<^YttoF2`hjJpjSoF=Ab4awNS^I=T8g>QJ0gEw^j0@OkbMS^hN=HW|R zo-d3$FMi%Qk3ED~*Op9yj$K?lnQV~Q9Q8?mC){^(XWGNQ;PlQ?V3FGTLuX7AC7Gk;gf?xHF741L9p0K-ENuvoKkS zngBN>`B*AQoxju;nXW?E*l_M4Cz{u^j9n5^3)54}su@r0g9 zK^g~UV9&hAk;BZ9UH$n&jwtX!y^XCv0q(Ir>r|0(Za$8UV`09rav_5UMgrd0n@j0* zj{L2SF@Rq)A0-8iILuUD#)PF)|Th@oq1`BA)Vs1M_E(V$=yqN%3!caSZ0qK++<9WVjXsYFc5!8=RGWt+I0 z^nIU{cS%0(UL08DsK2pNSC~~Mv0tKgV_+DQ@0aiI^*5|}5{rijIh0+wP9`|`+;{6v zxsjZ(tNmnj{UYN+P@5tSL?Y0L;4`);co`P`YS77myKRsk*L})nG)3J)3ewH1OQEL% zA;&slE*vdWW#^ADt?4xw$-#DdyPXzE&0wb`#QJ;YBKD)V+GEMK=3&{D%q4x2zUEpX z*YHkoqFo8P_DKV&lEe%}5~N&6X}CZ-O3QSj+?AfI%vIaAF3smnUh$$vzSpz?5Js($ zIccCYmO+Xz&!n&4NO2|%U&axo9@l@OICXe{Dqb_RT8rM~on}%ZzCVMuA*h$GED1kv z!Gwh%vb2;Yu7|R$*N8KomWh!uZ@5R+xO~}W0!7j|s(HwS>az6XruwVU0*Fub(1~9Y zAM2#Lf{V#KH8tBLHQ$jHVH>LNr&}90$?S&_OiU}wvt&S4LX29Cq^|D4qSGzth2IXnPG}|FSr`wP1^W$ev=@XpL8_z8`W@n3Bdf;@Z1vx>PA>&SNBq$(Llv z`mQE%vMGpaXz}*mn2d`*>%4rMdRAXkuinS{frgWlUXZ>wlc$okmn2z{Ap1gf@RHVX zP{YKF-Nz^MlY_;l$+_j(UyVIUjicPOqgnmq=WZUR@3a#>WSC~D(Hh7bVmC{F8P9r` z!zakp?ntJ<%~{+A1UkqfMbQC6UEbgL;ZuNWz9k&hIWREgSwHpNKHc7os_#I|(wD2x z6AQ20+dY0@&K<;CS(A{tlndTINtN=2dacXXw;;zI9-Z8tyO}JW^-C9TO4wAUi~W8p z9e|nhVQcWyhxg+S_*qom`mVtS05IjOeL=Scae%}~66lLowk|dCtj{uBgKNl-&E+a( zVlwt9bh6!`>Hw9cAxmoAufoa5z;7XZ-t^9mDV8kUbq}p{M2w{X9zG6drQVJFR(`Xn zi5RNK$OXJ?H}FBU`n|?QIJM>%!%0T{eN7+3_SQ$ga4RbUZFQG9F0z(=4q{1Nl`(me zwuk1#@|#IrdNtTzVI2g~l2scZE#DB;lvbAS%DZaXsum4|T>^V4cVA0+r{$fKo6%9} zE->PvD0hKB08T$&F@Ouca#~slEKI*0tEwRJ|0@20ldA@NeYTdyG7I0MOR~X~>2oO9 z!PqWPEl@|jn!G2|w%ktf=(6u}7;Pg||9kN#{XJqg;#6op7A+Z3ToNUt6c6)x>ok>T z%ZwQZlU%ucMg36sf&ByNb=mn`;i-Zb%eCUhX2}jW23Kk#v0ze)4nYG=QbYb&B{qv- zF6&PgTVq@?c_R^&CShsY@rf^O8vMbr^w?kv3yD5$P0qw#M@mjYz0|&=t*eN7^Y`a& z8$Y%@e&>fDP_3PEpE$m3)PdZJ6hu{|@ToNUqR>E?h-SFnLSKzpEzwx>m=cvdZR*$m`AD{YlFvdhFsoe>_PN#3$RJ4H;&Z`d#wW_Yik2 zcP-bgU0shLCzR}C=+<{-T*hnCJZqmQCEqE6q-`|$%R^c%Vt}JBVs!YkEG-*Tx_s)% zEV}w-or){wW%m|u{a16Rbnp6+&~z1Vmq6!QEW&s?EIf+$Dscm;H2`LH*|yTSbic4C(LQ~*#_;?0VeWGKmzU(ziC5}H-NVJhhxWK^ zy|ep0$AfuZ{E-_C_4@ewfkpIKhpJHD#yWqP>hUX*z?Ps>x&XgAu8@_Nqz>;uMV%BS z7U8{Y9B@O`tl4}$fbmufFm-$-(VCaG`;<2x`ieS>-NA_a?QZsz3h(vKLv!!7z&jN? zI(IJbBIoX)*+@LDW#9sn&4Yx+@!+9tdR%^C3p0al^TFtV!aAGe7UMqE_1c@k#cJAwr*_RtWOPkXoGHSkv{xK7ZN;6G`;I*r3o@`~FaNM=e#KS1%5O z=saix@O8a{%PS@Qce4`Q-@Rq z!?kmisj`&xP2BG5(}v}2h??7wB^nZ{@@|wv*n`;;+J^ZJxdixLfy`+0vuZ z3_7!!S9#yRP^HuySKrQNWDplQ2uHPW8?0otQh>C7C{A$Ds^hFAI$BM9&+s3eUpeZl zJv?^B^)8}OweBYffAFf!DQ49UE>?&b)$csS%8P=V@bCyKZejbZgE@q|%f7vg;VCnU z?&Ond+&@~~M<)%x)8Gw7PGGMMHMKaZ3qck>9u{AD$e(Pu7=Tw7R2>!NmBtV5# zlRF!FHB1|?EF20T1q9ltuBuQLlmMt^P$x>lCzoT=cY?;*T|YX5(w07kN!q?8jUme3 z`LL9-qo6X$Y0~I~tJ-H)l@#$IC}ASOM0QBt*^G}~WkoYeT9VFFAhCdn71Xe`nnJ(b ze0)jg#1_`%Vex^PvA4W6B@w4)<91=2(^NZPMMgpRl^xk|`pUOI0AmW|W36i#asm+D*1L8Y1&N0@@oH?|Z*Z3QZFzGI= zu$oUo{0iBFVIPdq7nA^v&QPFCfz9$&ryhT3}`M=Tl3i z>^IiAW>h#$ke0Ng$mKWW6Jqy^phH|H?UN7AqY49yUV4}69ZzI$#aapYhB4ovyJm7N zBhvyj;`XLV5lEM&S<5%%YgEY7DPGKAI(>e()*Mqh1KOeDRp(XLwa@{P79I~)HLtX; zuv)K(&e3>ITMf@?{M69TRZmEsPPRwzKy=M%NZdSdxLiuwob8y@Peh-IjwIXoc9mNP zn_P;wvNK$eC{0S*=+j1LiK|y5e}hp;(1Y<|dAe_<`n}Pz+g?NA%w5I)K0}27t`9{dizL@-G<=&fQ9!K zLlqkp9pl|=j*V((mOc_~|64EOsEY4kK?#H2#){T$0oWvBxMH~gV>cTk-r=5-G()bf zh62hb$Tv`GokE~SSB*l|FBl;+S`~DK$JD4W1i-_co4mtt;rk9#7Kf%`dKSWJ} za1MXn&MzA!xulEkI9viRTTEvRPuNdcPeuLdh$0$OhR%DI!4XuQ3!f=!ggNkW!cBTY zZSSVb^V8+|I4Eo=K;Z$5j`iH4)P_Z-6HZst=?uE=8MG?d50CusPERYz!zz2TzF`pd zjoYEe61&^5bLPss-CtbAN#|L|$D`ctj08zCDrou`JvD8A3)5=s!v@{Kz!A)`c z-!3mjzXiNY_{b z@gq#3fB!2nnl9w@7%*>=srK}wMBpwMg(~&s3%UkrnU*@>r%n*j_ik0M^bjj@uV}fZ zw!gh}FIo~@wuJOXNWz3}qHw_|50g%9*OR4L=HabXu!n$q?64k6(?=o@=e~jK!*scw z>03Mw0!z@_{j5%ct(T^gsXO}hT3ik=+C{ru?Y^_psojBs3&caFkQ#=*G*6Kvo;OZ@ zI0!6!2d_z9^WD)HC0t5jC}zYRUL{Luz}PX%gqvYSL}DMe;p2wu15xVmBqPvxm_6+= zIQW=pjgRM_hy0?lNAy-A;JvPnJRbjn+&S-D3AS4&Gw4p)cDbkZSpF+~o7BW)_c`!z1pTN8rXX*c0O@faiUWs_n$_Aq|PF9jI4_$R(KE*F>e40EK59!ndTj6(GjuhLhcF zzgdlyChfrdYV9mMdXUXx_7McRl&%WWWS5pG`h-}Qj?Ry@+LKw64uQ&3K6Lgli>MZr zhm9hk7Iv?f`ybu`~CJ+^k%I7`iw*1H>4m~TP#Q0 zNe8A~?NMerbo{p}gy%8*m3}8wA|Q$a z9!cnp8%BeIQh8LjptzENj2jgV-LwOUkPGpCY<;}rLr=8SaM_+0$?h=`k8R}S>A1sc zyX1Nov-sMygW!p4aiYuk3wH}P_hMwlywjXo<>*fJ`0P6+KiolUsdhy7URzyz9OFf?R^M7mI2yB_P@#INXv|LZd#0%zD^gz4{6>hP(F$ zTjvnK{E79$(%BLG4B$>6M~A6zPf%{Gz{$LpptJz|IR-OjA}zWZRv{7z(2cMHKY{gr z0Yx*=Ea4*BWOy=Zc%sZ%{{AKa)U?w4HV@rChDn%+?AX`V3AI8`V+bMBPlU^s0@Ya_ zYr4SplMuTl#slGY=(*Zv6RxoxZvD-ttV{Q|iQ1kT_Kp?>X5+L6WU zVZS!O-6Ca-Y@2sidyE)*Kc}d44>`URNoq{M*o2vZ$*=_kF-i{4i7~Y#1u!G&PQr0S z;&ZAlYFFTM!{OUU7Rm5A}1E)Jp1zwg(xMadR{x#rTye@ zK&?baUJ!8l@_FhmuzYWR>R8DN!8shfA4|v`$@Dr^&k%>qK-DFAm6eiVgu;@u@X=@+ z4JrI5lFwJ#8?)?D4grzm^|iw2gDEpY-DsVzavVe?UGO>+9$6RlHxd6L=1BNBFJDtyZ8Dwl_okafo*Y#ntvl#2F_R2im5^7 zYE(iCd}V7`@v>UlWq8=gSNOAEf~L6@$0$8=sfHuLWN1jVc}bCsaMW0$C&67skN28>d4@~Gm|8i}EXm~6r< zpIHJ&|5e5OO}e5Q;DWmyx55j-yzBDvOB)8`;rUjzJClo_M5}uEtXf#FO<1xThTLbi zo;1!WQeA4LaI`(n?8pgUTfFq^VX#Ej&r7O_7MLqhHe;8Ot$K6*u@gzB8W6kF@Xo~E z-Ss{XTTbOZqez%574^l;;@9Xt^&3usWZSfb$S=n5Lfx!WO-^o9eD2pcyP2W;!m&br zcOI+dkj>O1jy9yGUg*EZhQDr1K@MkK-;;h$7c-5pY?Hc??O?i3W|! z)38FX0961n(^^O2Xkf4=B&3U!- z@FRFkF1zhl*5-_Y`NV?Qn5S-6*<<#__w}M90eT*Qe3|IRG}%gUeQ3=D%ZPyPsYm>}*`v@pnSOq65(UrUOImHar{vnqx{G~^jOMlM(pYt&Uij)8 zS(){lc#p7ESS0(P%6!Y^4t9RLFKT}2M(?C~&J`p%6>H=*qgDg=N~X^(wF0`Da8+2X$4lWMJbtHnOt>h~9Tx=PLYBJ>)^hlE!M59$7aHIz=YVpgFsGjwN< zT8BABOG~>1tzwsUPqHI*!l$_UfIX5c7prz3#@Camhjq9LibGRc>Q+`Q?wyDED^__IhN)+FvRz?fmvQ+P{+eR#Gbt7oguY zdy(3-nH6^sVSO%1QY}BbL1^>VY4}c})d@r2rPw~A1y#By9!4ajh^ZKBwRVm zHodzae5a)zZ8km?XpysVh-5&T<%8lOXm$RI`N$HevJG&-ZI8m)c+iSUD()t>=vkMn%z7m`6T|Zh`YvF33y|8I^ki6RxyUW zbba6a{)7PktSjPCR}Te~qam6|=F%2oa@X3%$3D#XX?}m3_0FrUt5w+hE!@?4b7%EH z87kZx<*u~V3Q?VfTqavzn;J5eATe1w{4EE+5_FFrHvkbBTcl1Ca(<=bOY3u;gTr8R zyQ(s7OZF<)`&Te+StMSsM^{cs&`{jqa|k~)=NgUUt^4uZcII@9G3O`#g!PA!85#@< z4wkvU`owsAag%rrd+#xH=lAd%m~;)t>G7*a#(h(0faT~|yiC2STyv?p)M6&=ZuX2ID0V4f2y1n*at^ti7ZpUhr*7;XJ{8`TIHilkjd{;^M zF~Kw3J%9{xZz@1&(-r>Z&UVCIhUc2=8?GMn8gK0EJ4eW>oTzX}P?}G9F%Q-tx-5O* z`z&BD3R^U%O?r`Qe+?qW4kAEg$1&NG=uUk2Bqa-OC*O=Ipg|HD#jVBb18>oojz7-5 zc&&q;f@?!G1on%gqRF<=DnE@iz1mGt!ol_R?XLiqkQ}0)=z5qT@FgLV6MJM5A|#8` zhsalF4gh+~6G2$ItKc$t7xRhr8AkBI`!3Ql&N2BYv&st5)lc~F?v+D)^Oa);igVg; z5Ii14+g3D0m%LVgm^bs<+-0C;U6I3p#|j%$c|;gvHCp^?1b475_q6N;Ycz5%Q2g6Z zoQ3frSUQ70Rgtyjk*`Yr;I>FLkQ^;9c9GJh>CDGjZA z@c(#|8Xh}02)^#&?QxzdBa8c`WOf2!DEbL&5z@P1Zoh$@wlF&aK7cHztxo3q?g1Ml z?cytAqX&f&vb!!jm!DJ?$9!z;e_Hw1=o4i;F0LQV!JBn(a^Kf|U#LVK{Xd3&ck2@k zd-<&A`Cbi()b3t>nlQf(Ps&v>S2z_=H;L?|Rh_bt1HZbK*%KYle!o(sklt-;^uHhb#CgRI-c zpule$nqL|d$7n~SM|2L@el}#CV`VPP7EbM8*;wpw)W2bOx;NEMzpmMTmp$nw&nJ_! zHXtuHknxmS@5^cXB(?M~bsu=$P?y{f06Vl~hH~znSS1;qK-8Eo;TdQLI?DkvNN_~TwjeM9KFgwXp}mU$XfSk zmfW<#X#why^dD|vQ@#z>VJ=dJGw{z4PW7{h!7y;^ZSasDWgymh#e2a|}t|L;li29ZHEpSlrm#miLNHvbpL9PY-&73o-o+FlUMcOzf~OEVdq~jv%i{)=;WXn zHwr*GyRX}8!es|t6tDx(r}Pp$KhwWS#SDT&M>G)@?tROnTi=aYPfiC|H;Z**6GBiI@{uMv{}d)@wv zpo|Ah7pHXPL|Z52e#jLHCt>haDSKaCj9x6763O~du`3MeD;-!j?u{^E{J!debGl6%M3Ro@8LM(gdwU>4kW&FJ*6p2eqa#?-1W9@eY3 zIIX-pLD;%jzKFX(Fkw`upD3+EsP#w(!<4X);+BI+vgR}2iJ^xPfhxf^8YO5m3P$o? zdYH$3PT8Hj=frRDe^{jNdn*_?PtMfhiu*-m(zGbLDZgEk9X#N7R4ea%f5alpNvHa1p#DbzcDnTK5ye|L?I>_8}PtC6RN*B`zq*2#vfj% z{|Siws>4~7zbkR;rk|@$z#LRF>Sqers5jgqet%Z$uMwYn&z1N3Ji;@f=KlHFnCzKk zLp!frUk5rp917nuw@5Vm)umQ7Nw;X`ernkxdFeVi^h!@20rr7a0I&`M7ko-quKU!T zKn>VJ#HS1n4J4U4zb^Uk(n^W*%P*x9ad+%(TI{^eEJ=5gcjO75zr1e1XU7Tc{>43RgRi4?0Nyz04+jJQ^-=MUX{y29C^L9EjDr#y;=w${y%o`N zIl~ith!kWb%C+-J5+C=+c^GHm3;t}rJ|=r@Vud6xn4aq>`?kO-V_)u^?l-~FJf!_? zvkqJ))yohPS6*onu7rrx@du7Q?+SeKqef+-cv2T?9v8krlJ9YwQJ*&XgCW(U6S3hx zt2T`w@j7yrW;T=E(R^9}dmPhPBA1MGJ}Omf$0PejlG`Z4V<}sGEzCr1-3!Ww7azqW znS;E;9U*QJcEzN|h$rNmo_%e7;SocTyZD)X#G785{KnsCCrsFSQ_HEs2TWK~u;We0 zRak$g!sGoOOB{eFLVynx!uh;J`IPYGciBfHs?gCq#kge#j!ON}G|^4n=~gLZ@5WW0 zK89U=eC5m`O`7V|H0|Wzq{cKzM67eJrMgr9yra_6%RXCkNvjXdrV&b3OZeeug=K8F zr=+9?;OjY7bPVHtb>E7%%%hT}gCpnAAxz6O!qKz6>Floy$=*!7%wX-yyZUj_%SBNf z;?Q9$J2c(zzBuPG*v!40oWyY(+~#(C`6wUGBM;qLSjWfFzHR!UOb{cm4(`4%DcsI? zVBLz}&Oi|io810P0$w2gG>R$X?#DESNxz5Pw~y9Z&cR7M&Mq7;bM-C9ohNx`9AMPB zWDj6gP~_p5?JLnpSHTLyK@vto_#jQ}2YbUA{ASC*s7i5xLF%i#GKZ-0yS}&uhDZwO zcpVnGc%2u7bH6XPbx(})kb_+WyM4{SO)cz+@1y88R6s}<+oYz@j)*6HKeJXksi>m| zliHd0@7ugS26LJt;0ihgotU}Zh?sT1^eC*ZJMLt&wG(yA^)$?zni?0>QeRT@9n_c` zjhIpMgg30y(I6r#`}%~ka^2bz75#AxQo3tA({$LQ5h+M|!)SvbTifd0+pEM)*Q@cS zJ2Q3Rcu2(tX2|V5887uxJKJTIh_z5}`=%mCmwc zq&~B?`;_jWQrza8%}?@`P|JvOJ$w2cQ%xO7_E5{F0RO~Jj> zh(U({@ise_ck0(?K?y$zeiFR%`S?1@bhzw{tQV~v8SaMLf?J2`WN7ltT%M_;16FdV z^vjzY6|`=G1)PUq&eHFLhPK$vSkj-4Mpm@HHF)Tsw8weRJnV9l`o4&aLinXd$mIFH zFo&MS=5@|@m$0WC;=X%RZmTSOH!?|`uP*BEA86pc7pK{Tl76IdSiesue6!&{g%(L)~Zi;`E{F#iJ0?hqI>t<-7mqFZ%!Z?w=LN#qrNC|GED4<-e-CJ&0Mt z&K4{Nax!+bum{^ga~z;uc|#izvxxBXLoe)TVQ9@LVrOk4r;7BP0b%9@V23uKVj?1T zZrY5TtXu#_HZD#8D+?Pd0La45rOPY@Hng@d7Pd9B1_4-*n1!8;LAGE34+{qp^Yc>A z9Y$6l5Q$mT(EbC+!pt1}$3!G%6)?y~4ZsbZ^Sl5w?E=IKcurMNhUOjoBXxoMUk3b@ zq`}I~_5Y-3=uV8-`m>+W*|3e*{ji zh1p|^lG_k-o&#$&?Tw6nL4ZgW6a<3WHD5lwQZLYqb1VsHk-Wm4GSJwvx_5S9arVd< ziW5H-Y~XIW7*QI zm6m5M&-FV8FY;>c&38s#blY(_p2&&lEpkz^e$6PspwsDHY}wxxqS-Lbh=RG>Vg4|z}hZq1mJ%O9iD$-{Ldg^R&h20KSzwJ zqci9au85%%=-E&IN32*lI)O#a4IQ6DK-TcDHV_&->J}zob0=*s4i*3pI~#z50~$PB zTz}M@Ko$TuH_sn^Ha0fEbN_jq3p)M}nP1Dj={nGc;p}Srz04*8MlN|C;p& zDvE|?AZA5F$LA<#e^$V(405t_b~FY#0f5g-C^O4}Oe_qaPtWrL96THVZgy5(W=Tgo zXM1SskqQ)HLt7{NXBEco%%UpLL*rs$3{sX9VU_}bq38<=GK)et2wlMm@SL;s_u~Ql zTN0C~o%6F9(8B?B1pxSGGSjmw{%Zf58UIKVg6`nYc`VGT7GP@-zl6Ai1PcoX7Yhp~ z2egPn3mddRd7NU<0_Cx?u&{8k|H*r9vvdC0=7P#`J=k8zl{5?kga}7~L=v`)K2Hlex)PH~Y6Ny>D9%L(Q47RYd{nH2l^RpGU&eqm{ z5*Da#1!u6eh3&J?|M1ZB5wJC*F#$1(iPQcY?te?g5_Sfg+d2LPI6D+r=n-Mz{0H#j ze*(?^3_1`x_6+K?3@a2+QD`n2^!omruehL&c*gw?zx+cC8p$Tk#-M-5u|s_b)&8en zq3WOeoX@^{F3;+p{S2MU3LSg)_a8c;6P|s{1|`pYHuirk4~0Vvnjl9b#tR+d2C@QK zS%5$m4j?@XkeY>sn)YunyE%ePkyrpgP9&(Nza9W52L~Gmz!dN&56H&G4Tbyp0oeY< zgSLUtWBVUGR_J~3?>rzI7d!Or_n&ec|0T!D@q8%$O%BNVyo>+jaj`7M?>ga(((CBs91P_ppY^v z+u1=6_+OzaWov2&0RHg~MPil`184*I*;s&_VjL12BHTcrgs=pVi(5jRgOeR7CeFbw z#wsi-i1h!9Jf9vhJ7ZCEkg=7MvkicmMVy-(C?U$tBf`nSDZ<7k#v&@hBPPNk!79wf eAu7uK9P&