summaryrefslogtreecommitdiffstats
path: root/pki/base/migrate/70ToTxt/run.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/migrate/70ToTxt/run.sh')
-rwxr-xr-xpki/base/migrate/70ToTxt/run.sh202
1 files changed, 202 insertions, 0 deletions
diff --git a/pki/base/migrate/70ToTxt/run.sh b/pki/base/migrate/70ToTxt/run.sh
new file mode 100755
index 000000000..294bb63c7
--- /dev/null
+++ b/pki/base/migrate/70ToTxt/run.sh
@@ -0,0 +1,202 @@
+#!/bin/sh
+# --- BEGIN COPYRIGHT BLOCK ---
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Copyright (C) 2007 Red Hat, Inc.
+# All rights reserved.
+# --- END COPYRIGHT BLOCK ---
+
+#####################################################################
+### ###
+### This script converts a pre-existing CMS 7.0/7.01 ldif data ###
+### file (e. g. - created via a utility such as db2ldif) ###
+### into a normalized CMS 7.0/7.01 ldif text file. ###
+### ###
+### This subsequent normalized CMS 7.0/7.01 ldif text file ###
+### can be migrated into CMS 7.0/7.01 or later utilizing ###
+### the corresponding TxtTo<Target CMS Version> script which ###
+### converts this normalized CMS 7.0/7.01 ldif text file into ###
+### a <Target CMS Version> ldif data file. ###
+### ###
+### This <Target CMS Version> ldif data file can then be ###
+### imported into the internal database of the desired CMS ###
+### server using a utility such as ldif2db. ###
+### ###
+#####################################################################
+
+
+###
+### SERVER_ROOT - fully qualified path of the location of the server
+###
+
+#SERVER_ROOT=/export/home/migrate/cms701
+#export SERVER_ROOT
+
+
+###
+### INSTANCE - if the CMS instance directory is called 'cert-ca',
+### set the CMS instance to 'ca'
+###
+### NOTE: When a single SERVER_ROOT contains more than
+### one CMS instance, this script must be run multiple
+### times. To do this, there is only a need to change
+### the INSTANCE parameter.
+###
+
+#INSTANCE=ca
+#export INSTANCE
+
+
+############################################################################
+### ###
+### *** DON'T CHANGE ANYTHING BELOW THIS LINE *** ###
+### ###
+############################################################################
+
+
+###
+### Script-defined constants
+###
+
+CMS="CMS 7.0"
+export CMS
+
+
+OS_NAME=`uname`
+export OS_NAME
+
+
+##
+## Perform a usage check for the appropriate number of arguments:
+##
+
+if [ $# -lt 1 -o $# -gt 2 ] ; then
+ echo
+ echo "Usage: $0 input [errors] > output"
+ echo
+ echo " where: input - the specified ${CMS} ldif data file,"
+ echo " errors - an optional errors file containing"
+ echo " skipped attributes, and"
+ echo " output - the normalized ${CMS} ldif text file."
+ echo
+ echo " NOTE: If no redirection is provided to"
+ echo " 'output', then the normalized"
+ echo " ${CMS} ldif text will merely"
+ echo " be echoed to stdout."
+ echo
+ exit 1
+fi
+
+
+###
+### Check that the specified "input" file exists and is a regular file.
+###
+
+if [ ! -f $1 ] ; then
+ echo "ERROR: Either the specified 'input' file, '$1', does not exist, "
+ echo " or it is not a regular file!"
+ echo
+ exit 2
+fi
+
+
+###
+### Check that the specified "input" file exists and is not empty.
+###
+
+if [ ! -s $1 ] ; then
+ echo "ERROR: The specified 'input' file, '$1', is empty!"
+ echo
+ exit 3
+fi
+
+
+###
+### If an "errors" file is specified, then check that it does not already
+### exist.
+###
+
+if [ $# -eq 2 ] ; then
+ if [ -f $2 ] ; then
+ echo "ERROR: The specified 'errors' file, '$2', already exists!"
+ echo " Please specify a different file!"
+ echo
+ exit 4
+ fi
+fi
+
+
+###
+### Check presence of user-defined variables
+###
+
+if [ -z "${SERVER_ROOT}" -o -z "${INSTANCE}" ] ; then
+ echo "ERROR: Please specify the SERVER_ROOT and INSTANCE "
+ echo " environment variables for this script!"
+ echo
+ exit 5
+fi
+
+
+###
+### Check that the specified SERVER_ROOT exists and is a directory
+###
+
+if [ ! -d "${SERVER_ROOT}" ] ; then
+ echo "ERROR: Either the specified SERVER_ROOT does not exist, "
+ echo " or it is not a directory!"
+ echo
+ exit 6
+fi
+
+
+###
+### Check that the specified INSTANCE exists and is a directory
+###
+
+if [ ! -d "${SERVER_ROOT}/cert-${INSTANCE}" ] ; then
+ echo "ERROR: Either the specified INSTANCE does not exist, "
+ echo " or it is not a directory!"
+ echo
+ exit 7
+fi
+
+
+###
+### Setup the appropriate library path environment variable
+### based upon the platform
+###
+
+if [ ${OS_NAME} = "HP-UX" ] ; then
+ SHLIB_PATH=${SERVER_ROOT}/bin/cert/lib:${SERVER_ROOT}/bin/cert/jre/lib:${SERVER_ROOT}/bin/cert/jre/lib/PA_RISC/native_threads
+ export SHLIB_PATH
+elif [ ${OS_NAME} = "Linux" ] ; then
+ LD_LIBRARY_PATH=${SERVER_ROOT}/bin/cert/lib:${SERVER_ROOT}/bin/cert/jre/lib:${SERVER_ROOT}/bin/cert/jre/lib/i386/native_threads
+ export LD_LIBRARY_PATH
+else # SunOS
+ LD_LIBRARY_PATH=${SERVER_ROOT}/bin/cert/lib:${SERVER_ROOT}/bin/cert/jre/lib:${SERVER_ROOT}/bin/cert/jre/lib/sparc/native_threads
+ export LD_LIBRARY_PATH
+fi
+
+
+###
+### Convert the specified ${CMS} ldif data file
+### into a normalized ${CMS} ldif text file.
+###
+### NOTE: As of SunOS JDK 1.4.0, the required "Unicode" classes
+### have been moved from "i18n.jar" to "rt.jar".
+###
+
+${SERVER_ROOT}/bin/cert/jre/bin/java -classpath ./classes:${SERVER_ROOT}/cert-${INSTANCE}/classes:${SERVER_ROOT}/bin/cert/classes:${SERVER_ROOT}/bin/cert/jars/certsrv.jar:${SERVER_ROOT}/bin/cert/jars/cmscore.jar:${SERVER_ROOT}/bin/cert/jars/nsutil.jar:${SERVER_ROOT}/bin/cert/jars/jss3.jar:${SERVER_ROOT}/bin/cert/jre/lib/rt.jar Main $1 $2
+
;ٖf[hd1FSv#@X%Pγ P Ȑbi@k[ ʶ:엱)L?}+Y*xkd#|.ذ[^r]V/ν1\ҵř"T1ĮS:kw^@4&!?)䡦x>vݜ 'mUb~ K_)u ٹwk,{%?7\D=cR-l=z^(QGH>;=)kЙ0: g⪑2 Z,#A99/Pgo~IMK*]{ǝ$C9jfyxM''11՛P.™A)~11ڹ<[gsY,iWo$g/CxGANOXh}:͂7)E9eovIhN!1^JkJj$gY n*U!E|gTxjoUQ@oa2^*.Ҍ$g 2UdWڤ$}(9ttԡX 2v-d߹@ji۶ zމ-EY +4w_2ky]$^hܚD Uݚ|QJ!nAGˆG\ŷ\#zu^HRl2g%dS?0UUCN ;Q =B`s SJdC%}n TE2O!D2+_F)&쨿dtCn]NB%Ɔag<})N5$oL=k%çPDB~UW.?7-V%&#vl"3n'9 /n*B-w$V\8B$~ӣX[կSXyi%qJ UhYxL$₇;O܏RJ"Ѐ.,8񢏺n mF`j ҹS*qtے^FQyGU_Ze*w$2ugyBBIu%q~.pe!/?7,T3T&&gN%d@#otM-k,}>|$-{[)dMgbidG {v:EQIVz?# "7dwR?Ǿ\^9~R%H;Վ^5+ 4"H B"S|ZA->.{QvfYP{O%b!C&%`nj춁6/e?"M)7KSwn ]gUzx-j بXU)bPibo:}%1ZzLW`Y|Z1nt80{E|zT&daZu@.) K-2=d]DjAYd~jSR#H00.JTL?ʴ/taj:G+zL0k5'7#95^_&('F?,w)TgJWNMY1s L[(lעaF9E"MLp 4g kQrq ѱ?=I!Cp<+>+St Be%kN62&S@7?~׍MI2Oz͌jRވq#Z,?ec8( ;oA ORxaZuJHvH'/6YvYBҒjZg\?SfW0Ib&{7Ec ,G=[y&@tobuWQA@Ehda 1Y[qO QfÁct&%')rȲ`xIcN6/:$JgweS!Iz bZ@d.~}PեPw;)yKDF4LL'9@ʗ$&$eo#+ V> "Ć GbJ4CC4F?*"D]jwχ(A|OMt _ļSPA/c*`{k)^;Di̘+Ss_-3O HJwx5_ >Σd<+|݀SD%1m @ITv>9bT yO@1ǀ3M&sar9 ;&M$ke~XK; o&8v 䪫ʅxxD&P%/mQG9j;_Tv>}֣m"u_09:lrmxJB~ȍvF<%V}$ɨ?@ۼm=ȯØ-cKQ,E,*/e|)jb_#=X[o-">Kr\@9F`Rv/v,7ġ(>jJu mH!Aӝ6b:-e ⁿ6aչ=nT"[m=1LjиREMݯap QfLbD9wP^\PjYSXT-Ip .`ా+ia (>тCV0FO2zJ0Sz9B JS4ֽ\2 1k('CW-A[y+Khdqѥ%N]!|#Hzգad)Q4XIN+kt@h^ Tm<Ⳳe8ҍs٩p<~~La:zMTCԠo)E%) ڋZ+K9k dRn(0&u%wt؆DDxD wVV\a\a^JݿBQr bwq礦WhWNYc*het|8YZ 4O/ 4:P`bA[O8tpjEW8F)?>®K0-+v07I Jlh ;[tPA` 6H521ڂ_ )™|F`iEL3Dך8Uκ˃fF,:{S CSr홭:G, ekOLJ= s>uQ6Pc;/X VV#Pb *z(k;$&`,*Β^( UZU=C )ZWݡ&LQ{cjJD݉F.nh@ؔ]\L^#x0p GљL.gUM\cƗ i `HD(Mmsm"k쁴Pl5T9@TdǦ:2~0u!~oo:}sk2xgwDOlaԡ:W; Ut4)AN7td}+udʨO1Gd\~,fǮMD@քGYκICQ/O%iNԸqsO۠|-cfF^B_DV@OAD+81_7Νؠz*ƙCaΠqzpK[^/8M_%a_J&;|ꆚF$9bod 7 bK]4[)FETF*7%tΚ0m4`Zm,N(21 C Ą7h%)M׍6hQ# WGIЋI2߆[L5FBDL9B& W{+F(6#h/dvR;{(pzC<} .7DRRXtkƍߔ_6:cJ?Av50ȿC!l2[y1#&X X{%my zLvT-*ZXM7ePa vn|v5]څ- q6c|7dСHy$'R3B $g )צcr̦$s^ / ^tT.ĀE@U&Bss?=ǙlGfX3zelzL3i< 3#jуŌ >7׎c {Ȍ9@v#/DWѬQq(Ph32;bN딌M¶m2\$/_$#w?wi{4sx+jA2oOX _!dNcp5?WU~Jf'i=@O6F5:}5g">}lU<:i'%$66}-T<+DcDL^‡8u5s1X5Ĕo[+V~[h&x}ky5jbj;.O+薪^mddZt\I`샫Lw"aN0x~I:!;t9†9mwZq/Xt"!,x{t*W?u0Xp/&C2!&edbҳnc].Syv&"-~)hw@Lkp܇!SŠ㲇3V4Pu>dq#>c`1Q=!)gaOo՝ G)q- m[zsꧽ4xJ(LBfKŵܳցw= 6o"juʆB`2`= 7x:S|v/k/倌hīݰVҫ _\p&I8U7h0< s9Λ+wOH^~Q1>%|hQGKȠkP[$w##g6J!_3o J#Em»N!e"I+<pn ;5k!LJs )ag:Y<%XUA>R _gkMтXw֌O2s|#Ԓ$H^> [U˞ ;ʆ &Q>- \KT.h-=z=?ΧxK/=9\+:?c"\Vo /2wSK{KGGc%ăޙicQAL.wRLE ,NBET Ҙ*PUeVhhCwe|ע;H1x]f+<4k~_Rn!Z9_23d¯RuI`t {( e55Mi00Ȫ_L ™Һw^8+I.ҭ a- x6iqoofw$ N #\!٩ #d/ XҸ2x SSu$46<.I\x{:{Jzȉh}yM&a"Xm*6qQYm_{6&!9X1ҏeJ)͏/y[\RnnX+F۾͵b&F (ܵ$"Gz8tyIֈPg14C:3r5$aQ/A2뵹i)'ao~-O_L[M76Rp/hRĠOIc'$,_77^ ES#$%}))b9rƋy3ENذW :FTUk2x3|M7C14]0 L[D$]!0h"! ՠq2% ,Ў[!` Ѵ0N!:ni`zi-絚0gٟ_q6 E/S*/A7[Ҹ)Y0 čqn^Q*D!z#"͹Wz+#+[N49wUk16tv!}ߨUb{$L1GϹ]$##JQixh8P 9_8%_C3E{HT7p_&'icx:Uɳ# IDY.)dRGΠ.x }Nu.!ґ!bA O./I^y=>S ;!LD K AGN?' X?!…(aءziY%,@ߵ,48h!}Y2eGK yJ yy7\xiI(?{ s`TLCZiV?FZtAj;bo_x9EouS;CAvc"ogs ƷWjEZvKQ8]F׳5k2J(qq(]2kh6qڦHƶx#C=u 5nҏL]TP‡]JO@2 b:˜Dl zNrJܑjẄUWnN䨾w),B0px@%/$Oi\cSw^ m$]fN{=S(^fSFET3V*n<$F%,(|Lc\`Y?St05=k"+QteO?H~4 O J;1ڙ~9Ҁ0B++OڠV[^]%V|fYKy.j6TPaɗXp7V臲;;+Z hga[^G[M5 b-MyZ2[&?? p-q t}jSd$S0$Ί| "@=9ivRMWY0d1qHJ(tй'1bbMN#(^[~eqn.aKxxJ8@ݟ1䷄MkUN@H|'|-A߆*׶12@zц\$:o@K֗x`ImuHf&{C1(Y,KûVB*3ZԦEFv¤ lUU:x2\mSU0KbV.B>I?) kWna;h:RDQ8\@-9QDܙ'%(4=qDy.D{bLNV?٤@(r5RjԀX ùфc̽@;+3Cp3ĝ.% j%H4& )e!dpgVբ9k58Uw|V4x-"C1ŁɈy+P wh)UƉh Htn"\arV6 VY1.m41 BH;Ѓe9& )v)OI]g)5J]PČR怔@p2O2  43;f}̭*[[h>r< *KL(7Y`$b|yCgsa]RU'fK :ϥutY"Hd@1kr|/$WG~\"DBDamyDxY|\߆j"LBiM9RT*@ʸBX尾⽝kӖ<(}[ .uj;|\' Gj }o7nQ#s%[X(1r~#\]{o¼7I6hcڥ[[G%6R"Iw9K?^Y-&VyƗhѵ5$ oY9甛,Vrsgbn-wN)VTM\E <6fKLzBIA>u5QvsI竊%OИJJaR;[eRR4PE}nUڿFeB(-UC}X(w^5&jA~"3t};rע˫huEЄP1Kÿ[ ւdx=C_R#C1qhtwɑ|uty{6Sd=9#$[Z8T"ڂa-WCKm:EO9 +Gaiۘ l? P]U'8M]|ڙ'@s苌άzԄsw&K;}|Z*DϭX\2KRjzxo z1}\TOFnY.n|ZJ+<)Y9)R5SlLT/͊ll0LMB咁,sTAVeOH)mϒw2IAF3L+8w)* Z5$lD྘={G^_mL,n+/YL1pD^  {QJ`nS r2p |xOk 7g޵ (B29F]\ g &Mw?x%^,|g-^ˬ4k,tI;Vp$PiT΍Ͼ1"9=<+H8> ?r Z312#BqUO]pWiD~xHm6D}&("w&y R1/ATI] bhJ~Ű,'v!/-~VQ'7z9Ēz%~J_;aσŝ{1DID'b*RU,7U}o^ehȡ@!6f8˴xZ! @;D,PƒW+ߴ `/{Uy9юv秀cib=y`vՑ-S-BTEgC,(K@J5uBҮѝ5}Rmg>_ߋ4JJF! qg')W_"7v)n)(q| Qׇ?[iYj<#sZ&C ڬ< )T7\Â24mlD}=[Q _%7rSS+7GLaگEFo}ޟQ;pŦ 5ǽAsܛɀʒ T⊅;7!~^Ho|S|IcAFX/裵9 ?ˤ=e€SoĔ|[](x9}hGvCP;B`8 Wnqe!CL͵'63<m%Ԗq!K=V~Ml!CJ֮Pn~zۆ hv0)45JY@D,OAdd}ņ*e#quƜ8'ƶn]ʠlqdU؁ڏXX?0?ŻRn&|',`L˶fC“}5V+)u1>}..:hh8VV6V28 I<P,眐2'eG B>~kE}4~^#B(tiɓTFW6/xRIgxW*8*O$qBUPo%?πG=N;pP$S$̾9$q0r.)& ] VK]utһBx&f]}NK~(OJI\z@GBS(J(Kc4OQ>\ #(`&kp%{\%0@UHș&8C'T䘟mwlR'ioܾƍ'ϱ4a 4EP]5!-\4e%ܫ-T:ͅ;rѦQZ{_w<n]OʚW:8LuքfwӶzYTI*G~5]*f|nO|ЀX6?y){^OE| mJ)yI9ufn 3ik=2c2)V3"Jά'' )5ɪEk6;?4B= J߹iPڹO]d,JU#IZVu"H Ug(F"?Q6Bq:+x0deiTg\*0T2yE#/ϋ`G'nU:7HÜ;lut׬}-ESfL^r1pPe0dh DžO`jh72y!)vn?G9@xi9V  xn#-5ϝ+ޭ]ktnS՚كˍngk6ZU0B\=@4xa]sd-ȟp4e;|x ?+"7#JLZS;gB S^_z8~-t7y"8_یp(cN;i%, <AcatL|K[қ./5DD#=W"(}3ȯr^dR`F1) $Tk% /d@Kk׾CBm3 n|&{Q.=.ޟwC"ȹY=:ƞ"C;42Rpccn)E2kY}ON> o85[YEwY0wC鶿SWPJ=qX`b6&cʕ}!t=$!+C1Fb|1⛯+p-L cvI ƽ4^b*[5X)Ef9 ʌ=e%nu]/wZt;jL#0{wgӢF{3r`:: kiz'8kN@=i_ \o]ȼ"ڍ:vjv=Y 'PNo\bӑ% 22y"N1POk"s&[  ypeXCe)Lp6-:,p跢NFPwI&!V7 5().^9o[JhgH-f1?6ZlnPuU3|L}2;]pe+Mir~L婨雚&˯qb&y0# .dQќ)%5μث:Y/džp x8qc[8 A(BN}C rUJ3ɹ$} Q?F}1v; mHρP^TpQE3wݓC,*2:b.~ߔ,~5x}W#M(MsVAo6}I|KLjgj5AcBAǂhN4?ԝ#%K c-1=6̡e:b9nzɺ"Y7Ѹns"VB}o㢻P|2J h~9D&;`BIAA5a3!.!{uuaP4 \$`KvtO D8Uu\aRJy.Ց'ZL |~Z>4v:&NV(Cg[k@M唑T)(TMY$Ûu"L'bv5db6DsRᐲ"I`wn Ms@'\}{+)?~Agkwsc*`r=ȝ^Od\Ժ h"+$>fW.F56V]kW?518t-;J1SZHѵ9vwbb EϏ"@ |"8+o0y?$L;kE?掴Cxi_<#Vu`|8R֮Y!" FӚC*c ->#15`q^* ,釳 uWG~fDi'2inC~9(#p Zݛ :?HN<36!BWc8xJ wמyT$s>h=Y|,}xFyۖυ 4c?G&*𓹋 XtX3sЏ+㝉afؘμ&H *)`g#P]b/Bs?0bɾ0].Po&%rO.ٯkLZsus혵PBOӽӐ ;b3#ncHV4mkHI2*K e\Ы"s\ n+ F@5[B@AVOĠ r,Iwއt-z$1]r/A*JD,Nn쪦 B&HHl~#GUw 8{Tz$At ́b)UD5GL{S O=9B%=u˛SmsW|1U$\d3dvb'1x:j:g&jʺPCp} FL }G0*&dRsaLgpw?wt;0B"ۛ%B[fbS,[KWџ#bB|wpk4}c볕E]M2B˅G٠7)/Ez7T^KGA1IQ,n< quUEefц.Xf,@fx֥VVJBӮ- V$\|vX:ܖ,IX:gRxԫ̭jµ^(ԦUG}Dy \ 7APqX~YAcQ+m%;`!BN gaMKz%UN5{1]{wn@ ˲|Q3u^:`(=2y _2ɽO!wjXZvdĊ#5UO9cZ\ʩD?P@vg/Bl AA*)7]wP-sjiGHE*4dk G3g  0ⱓlbl7X^e4vCJ}#rV~H8I~XWx ӮoEBGTkaޑڧrzl1z]$Q-2Gx! BoBZ=B^}Lĝ[M崾S9W;0B`#j gYBOuDe>94vɬwFENUKDLxu5nwo#JW¯rq>fI賹  ldD@w%Z.=OǶLl$YqT(n:)e8cCQ[ⲉ Ə:W7 jmA #1F"6u'4 eEUiG5x/p='5s7RSգ44%AMI(b-fv`SWnLc;8$ˎA4)1tTbٱ P*I ~!6`\i2^,9+8'H|ݱs1)3Lut!EG-sT|B W.a)s̹sf3goǹT_>ͱ޳$'zQ2ɩ$1UPQd@8{t䥼ȥ[7BSqq2:khHG-LlfwAn_8>ŕ4W _B@D# vvf5)әN~?{hJBFBMkz OwB)H"W]my¼ x@g#揟z[!nILQ8$J|aNvb;6! gv I ب=A3dW%Cݲ8쪄.ͫ]sE!weH.R R{mP@1 =.aJ"@rV~:GPKocEecEO a`mS52-)21|K#ڽ +/V@n#a˿wdR#g;R_ǯxn U!5g(]܁G7A\z(ߙ}vBYg{:[˒&(Р8|*IuNl QyB$@Pm˖u(S{b=>u~Qɞ&)FN}q=0*-\?+J+#!B1IHܫؖ*|m}g.FB6| ͑zlORܔ_| 5V%,`V K1^ۄF%8q|g$ ˜Un(98@© }4`1(G$&Y)ogi z,||ёCʯϸFE1 ~8;P6J8X $G荣]897_a1$dQy{!J?+7]6K`SN"VGZ3J A*VsnoCc)m}AȭZ~#O C"xTiM"PAz.y.NN0AUsUpq""ce+AOR`CSYd`Hf,uDb 0g1` ]qTT㦦*+ɾX=B8؏2{#u8EpjAȘ-7{GQ^UNp1XM&2`$XJθ IօlM񁉢4jzmq ֬?3,/G!&@aRI;B@غrgm]9(P 3 ,wM1_b҈M"$݈?zP1씃Dr~@ø&ڽBqڎ)4vUԣbTiq[awR!a ~S{(2B;pQk&Vd"favKnRY"r9j h~mL*݊҈H魾?^{kSq ^ɱ0GMNPrY8h;!¼m a'0}4Jy:n־EOabpbJlVQgSzw:#Q-g/EsG|gjs~l7`ŰjZVX:9|egP7%PdTa}ԁ᜼GQGH7%ufy9|'1O`P rQ( ! 5<]Z 9oDV奠CK[%y!eDm8TrjL uܦ/vb3=}9;QC2Aܪ#8P5WhD g`pF徊t qzGnA-DѼlZ&?3)e,sɟ :zh?3}Yâ\uM-SP,#8qn(Cژ}xK%{:lՂñd5 $> :biV`KS?(3 nM WmJ{ٸSll,SG#3PsjjT&bOm8s9rJQY;-$ckWE-9P /}. ۪&K͌7CJ7 L/f`t6N'*+N2(yt 8P9JHT^!Dcm39.C;HBuw|'݅d8IR^RҮGϩkX`:dA/A6sEq^ҍ&G6a$]H "dJ/,nT6+2$NKySBxH2n &R\RR7+7u=M!̼)Nnԅ S$F>t/|Ԡzeøb|fYp>+7"d|Jp}FW9Qj7zh &4٧gVB_]b9taD~tDHhv3:BkGĠ5ig6KrU@Y뼋2ZA%S'RJEU[j2dagE* +v;bejzyΩ*}L2ɷ$j#+aٕ$,ECD>NSFь6}m,G{f9V[3Hs"5_ЪİTFݎY&J\ÝͪYDo%!v?DR ]mONCV"c$9b5{m2Xz9NٸսA~` u a*ƩԢoʄ _lǽ.8rUONMRziH2>зcxdY< ˗xT2 0uzhW$53A>Q$URDsj-_3P˓%a{r"H ,!&'p\7m} GSF4A/c g.A0f*Upi$><j ‰y 0Hn7>}j!WqD@6 4X*F:޻MɎ /?8PG{CN[?WPvA6wqs,4-` sPɧ~!$cQ6koIw!J+Ed, 9aWh!x'A~d@jMܼI!8w{hwenbXع/ gspPyM}5P *6q^0W_2`=I[j֖PM>NԻq2Wpk?}mxfLQ踳ꪹubp̃BUc7'-$$k:O wB) 3l3kQlwm] C^ |~m|8t { o1SCyx/{l?dOm[xp HO'V"׭i>WFzR`|ϗ I\!`M*fGb-GVXabPXEnQ2)|tML1COrKWo!Tl񏜍hTv4/So bG`šIP&faJX+Qh8PG?͠r$3qV+`gFYYin濏ݬW2oXbHW6 Wx37+ZP ے{7lY5n8083 lcރp98 >K*yG-ȡ 'Ee4 8|hbF_뼬=k!m P3A Uq(|S[kW.gocsry󶤑^(eA u d"+ÑL1m1m ozg}O}GRFڣ-9EUrL\Jo2T?QH`Qv{BY+oJhPu'sh|3b@07ȱH*i.iJT+fLHDE ?~ шf}c3mBҨ">9Pg.;6=r6 ǃrG2ɐlUu[idtQf;Wjk.U -W W'9MPco+qp^oE D+|٪^ʤ3(gjoGùW/D|Ma󌒆4\(f$(LjK d:ʰM׻dZG/A0(Ш%@G1=LG$_"y?!_}*ӝvwBshb˟LM WPU ~% JjT9xq}`!_Mȷjh+pZL+BxG`U9pukq'V%rh4&$Oqq˂NɊPP"$BYcLI]ԏJ=0/ hkc]s_%[!>}ˋOw@V^Xoa3/4xlO~}4kCÞxKb ؄V207CjC}J]ttgU^8ׁ,#W4ɽSЦ-S@n51E S8^WMwR>DT,E yT(+ɻYd,1ƌ/׍ 4\հY C)=gI13dR\E\m!]Z.|owNi7>v.H;A'08JSGuJꜵE7Yg 3F% }ύc?”K[L,6_/!kǠ[[fm7ú~TNI~ Wܰ]^\^S4fx=&s2MjV9l~?%"цm.#Lf= ɳ-X S,],>, mȦt=+4B^m7I/;Af'IBח٧|L~cS%%:#HHlvrQd,H:o@AjQ+One/-r|X~nwkJ{Cבn~ b=fGO tsb$o>IJ$S9QK2PR!O-7Z|qbT})K|PyfzvoTngOYlJ1<m79p)54T0Zhi ֶmVK]6{"{„w'F#)<ɯ486ܞDyӎ6ݵnllKyH 17Y8g ]:ɜGL=#d T|oaTopL>(O{Y 8\Lr_Q66w }Jq aBRm][ 7vM0f{ YVm?ޣטc?RtYƕ>0m˫bՙUi)$! -hga-Њ&wyo5j(eL3L>TÐrB^(,>Y8}>Jz\/og~d,r;g ʉlrGcr.FIT>Õʫ2 [֟~B޶Uf%G6ՔeT+.3(wSA>(=7sỲ:Ejx4UrCԘ]OZ ͑0d TK_9'uXu$E2{eXzlyQt}tcn p9=N2ofcKгf"lh&7%ɻ/Fh0D'cw?;m҇e6{Sb]7z͎|KKyɩAnv'C ˳C[;ԅQ!mGZݗl*cp!9.u)&V=Gu(b&0 /h΁fƣaփ#2:2/>5;ˈz`Ė^+qRo<{FX^X{*wj?(֠i z_u1`v-7'+!J݃2G(> h?. 'F_2Pury^9S-[#ew`pra$2Jk;1R2!ChLUWI{e& c^gJtiLN'gpa8nPP39Pe ɓr !Uq;k#֦{.USx&k4!9~\,my*ivKKn0z.; Q@VQƼhIt: ~~D>2W1c.`UF8ge3gBh$.XAV SD+3fI_zϷBBeztJ Wwaw@obT$<D^9ވ03MB.o `j=Ovϟ'|a=e9!T;iP[ QL%=uṟ=Wym'ּC/})vn)vI!FĉN4n>%687PWnOuǺlFQZμLq~TͨXh uM –)dX`}Q2sYƠG 0fDwk59ϴ"`jѪgVall5K;ruVe_Ёn # BdN`:򤰲s/9tFI\q\n&AI $L"-&9@ ?fnc{avС9Y;j(.NqҐ,Fpg~:G{& D{ 9^Yċ+_Ŗ\&&^q›/ZP%'4ì~#P =Յ痔A ]iZbt)gySwyY{G:d*i[h@yeec ݂BI6kwd;'v3Wh026V[˒m8^-  E1yȲѼ@T¦NȌ67p-sշ޷L!ٵ^19h fXuk\!Ƒɗ#4,#71ꩇ)~((Dux\ǝr1ә-\fo)_{L-hBiqfBeV.^ Hyg]ӏB|MmT qiCIu^b_p:g{F%0;G[ ]|rJkuq`,ͧKܘt薡Ӟf\`ηLm9|u"xC 9;`st *( wW㤼*#K/3 _SW"k!]9 l>nb#[į9Uxf h '*`aNe`AN&)p`GYtqi