kR םa םaby nameby nameBUILDd kHA םa םa./AA kl)+om םa םa םa& ./lpp_namemm4 R I cluster.es.client { cluster.es.client.rte 7.2.6.0 01 N B en_US PowerHA SystemMirror Client Runtime [ *coreq cluster.es.client.lib 7.2.6.0 *coreq cluster.es.client.utils 7.2.6.0 *prereq cluster.es.migcheck 7.2.6.0 % /usr/es 8 /usr/lib/objrepos 16 /usr/es/adm 8 /usr/lpp/cluster.es.client/inst_root/var/hacmp 8 /usr/lpp/cluster.es.client/inst_root/var/hacmp/log 8 /usr/es/sbin 8 /usr/es/sbin/cluster 2592 /etc/security 8 /usr/es/sbin/cluster/etc 184 /usr/es/sbin/cluster/samples 8 /usr/es/sbin/cluster/samples/clstat 24 /usr/es/sbin/cluster/wordings 8 /usr/es/sbin/cluster/wordings/en 16 /usr/es/sbin/cluster/wordings/ja 16 /usr/swlag/en_US 3616 INSTWORK 312 888 /lpp/cluster.es.client 128 /var/hacmp 8 /etc/objrepos 8 /var/hacmp/log 8 % % % % SYSTEM PRIVATE % % BUILDDATE 0743 ] cluster.es.client.lib 7.2.6.0 01 N B en_US PowerHA SystemMirror Client Libraries [ *prereq cluster.es.client.rte 7.2.6.0 *prereq cluster.es.migcheck 7.2.6.0 % /usr/es 8 /usr/lib/objrepos 128 /usr/es/lib 4456 /usr/es/lib/perl 232 /usr/lib 8 /usr/es/lib/python 40 /usr/es/lib/ksh93 280 /usr/es/lib/ksh93/aix 184 /usr/es/lib/ksh93/availability 408 /usr/es/lib/ksh93/util 40 /usr/es/lib/ksh93/util/list 56 /usr/es/lib/ksh93/ezupdate 360 /usr/es/lib/ksh93/hacmp 8896 /usr/es/lib/ksh93/OEMVeritas 72 /usr/es/sbin 8 /usr/es/sbin/cluster 8 /usr/es/sbin/cluster/reports 8 /usr/es/sbin/cluster/reports/templates 504 INSTWORK 496 704 /lpp/cluster.es.client 40 /etc/objrepos 1 % % % % SYSTEM PRIVATE % % BUILDDATE 0743 ] cluster.es.client.utils 7.2.6.0 01 N U en_US PowerHA SystemMirror Client Utilities [ *prereq cluster.es.client.rte 7.2.6.0 *prereq cluster.es.migcheck 7.2.6.0 % /usr/es 8 /usr/lib/objrepos 8 /usr/es/sbin 8 /usr/es/sbin/cluster 8 /usr/es/sbin/cluster/utilities 728 /usr/es/sbin/cluster/events 8 /usr/es/sbin/cluster/events/utils 48 /usr/es/sbin/cluster/samples 8 /usr/es/sbin/cluster/samples/pager 16 INSTWORK 80 808 % % % % SYSTEM PRIVATE % % BUILDDATE 0743 ] cluster.es.client.clcomd 7.2.6.0 01 N B en_US Cluster Communication Infrastructure [ *prereq cluster.es.client.rte 7.2.6.0 *prereq cluster.es.migcheck 7.2.6.0 % /usr/es 8 /usr/lib/objrepos 8 /usr/es/sbin 8 /usr/es/sbin/cluster 184 /usr/es/sbin/cluster/utilities 96 /usr/lpp/cluster.es.client/inst_root/etc/es 8 /usr/lpp/cluster.es.client/inst_root/etc/es/objrepos 8 INSTWORK 248 952 /lpp/cluster.es.client 64 /etc/es 8 /etc/objrepos 8 /etc/es/objrepos 8 % % % % SYSTEM PRIVATE % % BUILDDATE 0743 ] }  kJ% % A םa םatsul1 % E %./usrb/AA k% % A םa םatsul1 % E %./usr/lpph93/ezAA k % % A םa םatsul1 % E %./usr/lpp/cluster.es.clientusr/AA la+omR םaםaםa&/./usr/lpp/cluster.es.client/liblpp.amm   es #/cilnrt.=_ahmopuy",1349ILbdgk02567:ABCEHKMPfvw-8FORTz$DGNSx()UV[]{}!&>XY\`j|'*; ?@q%W^<+=犊* ?pX? ? @pXO@3%:1&Y Q+:υ|RI'RB 5 Dyd'Q>oJ'Rr^3D7bI5dO |pf`f8(n8ů 9<Uu!j*b`RB(Q.x.r{Ep[!;Q8=GJYW۠*_*+@`n`cB9 <=)&bp8wD?Cǐ!:f:r&{|j @8zI'Bxl'#ㆇ000qCpp-xl!吝 QS3Eu+us:+Y Eܪ>oJ:RʾIRUOtQ\ p$SRO| I38ÿ ?Cǐ!:f:&YI5dL\LԞ|/I: xHXPH =$Փ!r&{|j @8zI'Bxl'#ㆇ000qCpp-xl!吝 QS3Eu+us:+Y Eܪ>oJ:RʾIRUOtQ\ p$SRO| I38ÿ_Hょ 8,' CC.u#*tQDI5dLW{7Eq3RyI$SWHW$&!aA"#ȃVO,QJ'Da[WxAҒfa@8zI'Bxl'#ㆇ000qCpp-xl!吝 QS3Eu+us:+Y Eܪ>oJ:RʾIRUOtQ\ p$SRO| I39#‡<,8(xXX| ;𰐟 /.u#*tQJ>-/h-L @Y+lb&'>W-Q:+$c?lMY<0xa94<gY *3[<40( G`I+[2Ag D@QQ ,`h1ώzI+ԏӒPHf92<!ܜqsURRm[]fNɮ:f:NNTs̴1`5̛Q+:υ|RI'RB =l 8," Fu(7)o]gƯJI"D,h@8ن-吝຺[0`RB(Q.x.r{Ep[!;Q8=GJZٕ} ZUs:+W4 !ETaFr=42AxzRLl$&p,L '@l3? i疫kΤڶͲ5K].u#*tQh z 4S `CAA5kc1c1c1c1c1c1c1c1c1c1bYgr[Uf||4XTųdYDj3[<SRQ .ԤQ3Ԥs>%aR[1c1c1c1c1c1c1c1c1c1c_uӐKaY >5|K _c1c1c1c1c1c1c1c1c1cűl,h3*p[IR@kSA"b,5gxMIGrEkH5H(ԤJIKF-\ʾӁIԏҎ*{E@:ضx.a^|Խ(.ԤQ3kb1c1c1c1c1c1c1c1c1c1b*p`13楚_JHc@WXs>j^` /4*+ 0{Ep"$lEkzj1c1c1c1c1c1c1c1c1c1cųѠtԎVqũl[<=$QJ=MTwAKKW*t-Kb,5gR- (g( |w$xE$Faτ[1c1c1c1c1c1c1c1c1c1c)su!g7P 0 `P,".u.Bu^|=xiG)IE=&-c1c1c1c1c1c1c1c1c1c.g: \G]HY`1~* =վ8u!gk/yɚNR{</)'R>oZV! @r+ư|hTW4;]HYZV! @r^*i~HtW>O_Klۃ:|VV1c1c1c1c1c1c1c1c1c1c-ض1c1c1c1c1c1c1c1c1c1clʚPѨ+ubZQ j&|CɶQ A+[ByH>|4XTGrapJųB_tԻnѠ@&pi2f𻓰+H,bـ@Ku|HWt.rD&Kje \MRi[Ot-Kbكй|r4`a,H $n{ a`048s>t7|T+tW>RU!xxV0t.gΆfa`048 ɂI@ D@@'H%xhxΥ+Jгb!_tWbZnh3 ` 0L` &LrvH^ZT0Er fyiRxQ|&  &p D\3p| .u#,U{j_ֿp P0P $X3 aĀ@ _ШRR:BuYǺobZ@k烬qÈ 8(xXX| ;𰐟 /.u#*tQ8ҏK fH8L@X(( 88@ $  yRi"|rrJ 3[=l‡&\ ;.yj \Mk)T5RR2A)щʎ*e0 [2ouF&|O>I$Jj 䃄<(@P3%Ԣ|ޔO5w=)&f@h@8ن-吝຺[0`RB(Q.x.r{Ep[!;Q8=GJZٕ} ZUs:+W4 !ETaFr=42AxzRLl$&p,L '@l@0 Njg)s63lMRAKHʳfdF'*82=Ȧ7 rt4sG  1c3ώ)TH- \]ԅ꽌c1X X ` VHQ]$ 1RR,UKYZ|ngnh>HVbʌ_9X [1cB%p)TH- \]ԅ꽌c1b@k烬rB CA @pXO=RR2A)щʎ J>-/h-L @Y+lb&'>W-Q:+$c?lMY<0xa94<gY *3[<40( G`I+[2Ag D@QQ ,`h1ώzI+ԏӒPHf92<!ܜqsURRm[]fNɮ:f:NNTt28[2ouF&|O>I$Jj 䃄<(@P3%Ԣ|ޔO5w=)&f4 pla N]]HZg0)!jQRW9=Ӣ-吝|] ʨ-lʾIW*+@`n`cB9 <=)&fzْ8P & Vxʐp4qsURRm[]fNɮ:f:NNTt2  8  hȆkc1c1c1c1c1c1c1c1c1c1bYgr[Uf||4XTųdYDj3[<SRQ .ԤQ3Ԥs>%aR[1c1c1c1c1c1c1c1c1c1c_uӐKaY >5|K _c1c1c1c1c1c1c1c1c1cűl,h3*p[IR@kSA"b,5gxMIGrEkH5H(ԤJIKF-\ʾӁIԏҎ*{E@:ضx.a^|Խ(.ԤQ3kb1c1c1c1c1c1c1c1c1c1b*p`13楚_JHc@WXs>j^` /4*+ 0{Ep"$lEkzj1c1c1c1c1c1c1c1c1c1cųѠtԎVqũl[<=$QJ=MTwAKKW*t-Kb,5gR- (g( |w$xE$Faτ[1c1c1c1c1c1c1c1c1c1c)su!g7P 0 `P,".u.Bu^|=xiG)IE=&-c1c1c1c1c1c1c1c1c1c.g: \G]HY`1~* =վ8u!gk/yɚNR{</)'R>oZV! @r+ư|hTW4;"Bu` Ҵ,ةa *TKx|(EK|}Z\eQУc1c1c1c1c1c1c1c1c1cűl|Vűc1c1c1c1c1c1c1c1c1cŭfTO?^Fg\P4#  CQ j&|CɶQZضb!P+}KQ-RDJSNT-Qτ7Gڷ:El\. t4и&<$b/+B͊x/-*O6ԊT4`oV\kӐK X@ԑRJ@}BGڷ:D 0D4 o)OM)N}+zQb:DMR0b%tR畧|!B9=)sK|nglQ!zn+sD)%#/X҉Jon7"#@kXֶ-|KsK**<쾋H(@+@y2BX0 Xx@X tx:ųR3yh V%sEF?lЧ.u.|l[s>thL. -!3<`zF}`)<*ʌ W@+:3C04*+bي$/R nt$LTgw|!EsWX*g%oJ=֐\i/ Mj&ն>-tԛSsR(RҶZ![s%+$iK@Ã@X$bH)o_7ǚÀ`hq1|nsW})-'Q\B_\`\ϝ 7À`hq1 k8 "$fNTKT1GAKKVfHC6"Ѭݶf@`:ɇL. -!3<`%):RҤ8LL,/ Xf k \G]HY8MԿW+:3C07`a,H $f?:3C07Éd0Q_Τuԅ곏t-Kz^X? <,,ya>?XHOAKHʳfdF&Jm(d@Y+[0b&'>W-Q:+$c5(re y C9疫kΤڶͲ5K].u#*tQW3e0zٓ{7Eq3RyI$SWHW$'a@A(Υ|0-L I31Hl!Y Q]lf$-R5"W'tWU|ޔtW۠*W9=ӢEp( @L rUHVg#<]C$'$[2Ag D@QXp04 @ DpC!ܜqsURRm[]fNɮ:f:NM+2\C.YΐXCGh8F80$`@:ض~ bX0,4L@3Ldr)g 03x§UlKb1cbRi)7ƶ1c1o8TŠ`R/$l@B+5/ư|ӐKQ\I,_<`5kc1c0dO1cťr`1xJj1c1c1c1c1c1c1c1c1c1c1c1c1c1c3 $c1c1c1c1c-c1c1c1c1c1c1c1c1c1c-``Hh0D  @jDP&P&ծҔ@`@  Ɣ|CɥƩrm|VX#I.MiRR2bɀ01\V(RR+XrZZGG8I`_P L &  `ErOa0,H*p7ķ4+a0,H_*tҒp `DnXyQ_W@+@ $B+0@ & p $8TŠ@xJ[Q(|I"b4WWU])$L $ 4`H( Ij M)O Q0$P4"V_<k <pP@8wa!?tԌ1}FfJtbM+Qi{Al ( GDV`{>9M$O| ZR>tWNIA"kgP˖@8rsS=-VAKImtQe:j& \FU>3%:1Hhc 0q̛Q+:υ|RI'RB =l 8," Fu(7)o]gƯJI"DЀqõ 0[!;uu!j+` QF<]J]\NූBwt7*p{Ҏ*t%\'tW(h)B Ҍ{hdfH8L@X(( 8@ NZـȅ0$Njg)s63lMRAKHʳfdF)ҹ-e {Ln92<!h<-lc1c1c1c1c1c1c1c1c1c1l[5"W3ۤ犥.hV>3%:_ ض1c1c1c1c1c1c1c1c1c1cc1c1c1c1c1c1c1c1c1cűl,h3ҋ9-g*j3>J>Ĭ*Kb,5gR- (g~|RJKgDYJ(fRQ9-c1c1c1c1c1c1c1c1c1c1R.Ҏ_`1yB}O |@k焬lc1c1c1c1c1c1c1c1c1c1l[< = *{EVųEHضxl(Fvs>j^SRQܑZd=i'R>oJ+gJHlԤj,8+H(⧾TgjJ6gK|RJIIl>IE=&-c1c1c1c1c1c1c1c1c1c,UHoJ;N=5, rRF/ RWQWL,P4"kJ>!RҏcT6>!@h0Ek[H-]Dp|KKgB|+B IElY0,Hj&4Ç6(9 'mgB|(`q\I"b7`,ШL & piZlT8TŠ@xR) >%UAL & LWtx:8$8,,pWA <ట,$':f:NpaW¬V.MlM:lS[] h:3u#Kje \M \WRKje \M*p@ XH pY?<,,ya>?XHO:f:<ʎx+`,@X(( 88@ $  yRi"|rrJ 3[<=$Փ!<|6C`ia@8@8Ѐpxl!吝 QS=lIaY€Q0Pp l$&p,L Zك}4>oqjH]9%aC.YΐXL<[].u&յ}Fm5K].u#*tQyC- qf0vzٓ{7Eq3RyI$SWHW$'`ϝIrAzf pY (DQ>oJ'Rr^3DXЀqõ 0[!;uu!j+` QF<]J]\NූBwt7*p{Ҏ*t%\'tW(h)B Ҍ{hdfH8L@X(( 8@ NZf *A=-VAKImtQ`RAKHʳfdPG<@n7@,4<, (n 8N;" c1c1c1c1c1c1c1c1c1c-ggA_l[<WQW>%aR[ e?il]MIF?'xRR[oJ8bບ{RxRR[Ml[1c1c1c1c1c1c1c1c1c1[Τuԅ곏t-@/X 3@|Ի =yMեh>VHQ]$ 1RR,UK[s>|KsAB>T`Db |[1c1c1c1c1c1c1c1c1c1[F>g: \G]HY[&w :s_Er)FųdYDj3>+HYsI<E[<SRQQ",%j3 | ض1c1c1c1c1c1c1c1c1c1cI)su!guR,VEԅ:ʤa&h ;]HYҤ8HZiZlT0Ax <Q_N =Հ+Jгb!(_R/.RGkrm|[pyGBj1c1c1c1c1c1c1c1c1c1cų=[1c1c1c1c1c1c1c1c1c1c-SQʾ輴Ҋذ%aR[9_c+[= q}RRgΖź3FyɚNй0 J)Tgϝ /r[pt3`-sB/B! VHRJ[=4ϕFpW|ngW>%y)%_0H<^q6yZNVϝi Hؿ$֩rm[lAKI75"*M+iũ_0b9"Z[R@Y f, 8<I@  ҖU||yX 8 gΆt33q  $ F`sCs>t33q 8H3k \G]HY8MԿWU]È<ఱ_ <ట,$' AKHʳfdPG%l6|Z^[2Ag D@QQ ,`h1ώzI+ԏӒPHf92<!ܜqsURRm[]f)$M]!\pzهH d:O҉ÔƮ3܃W$ ;[0CWRf HZj3EԯOt yd'xCr'(K[2A+RUʮr{ErP"(=(GxH8OJId$`h $!8L<[].u&յ}Fm5K].u#*tQyCT@nrSLd:Acc9c-c1è q|U)rR1|Kn:u!gc1cV@X&H@ 0L  ( 3`/@b @ ;B$KH@ /-*OQs>t3O`ruWX8!й:BB|ff0, 8<I@  B|ff00q ,0f4*+ 0".u.Bu^|=xiG)|sԚH7A\F|讜E[0ɗ,H,q{Z:j>6ɮ:f:I$Jj 䃄W9=Ӣ<^H8O[=lB $2QJ'Da[WxAҒfaㆄl!Y Q]lf$-R5"W'tWU|ޔtW۠*W9=ӢEp( @L rUHVg#<]C$'$[2Ag D@QXp04 @ <'8ܜqsURRm[]fj^SRQܑZd=i'R>oJ+gJHlԤj,8+H(⧾TgjJ6gK|RJIIl>IE=&-c1c1c1c1c1c1c1c1c1c- QP s>jY@Ԥ4_p3xBr c'W*RF _\ϚWlc1c1c1c1c1c1c1c1c1c1l[13lc1c1c1c1c1c1c1c1c1c1kbف5WQW  Q j&|CɶQ A+[ByH>|4XTGrapJų+N>oJ6,5\Xq2AƵKj]U٠[L/xGj&ն)-\[\W`q2A7@p 0q2A7`,Шp $W*W·4/<- 0/@ & h $ZW€h$0 Lp h_ \9 $ј&x0H X /4*+p=@ $I"b507-G:B% `Pf|bJv%/,I"b4XG0H L & F/UzʥXֺ_<aC@ pP@8wa!?tԌ1}FfA R.J",+`ْ8P & g@l>|sԚH7A\F|讜E[0ɗ,H,q{Z:j>6ɮ:f:)$M]!\pzق'tW>u'  gx(PdfJ3D( 9K|j=>5xzRL pЀqõ 0[!;uu!j+` QF<]J]\NූBwt7*p{Ҏ*t%\'tW(h)B Ҍ{hdfH8L@X(( 8@ NZـDž~8;.yj \Mkj& \FU>3 )%W2\C.YΐXhB1c1c1c1c1c1c1c1c1c1bضxz4Eųjz5%{yh V%lQ3)FԔl3p?@k狾hu)%%",%j3 u)(XTűc1c1c1c1c1c1c1c1c1cťr`1yB}O |@k焬lc1c1c1c1c1c1c1c1c1c1l[< = *{EVųEHضxl(Fvs>j^SRQܑZd=i'R>oJ+gJHlԤj,8+H(⧾TgjJ6gK|RJIIl>IE=&-c1c1c1c1c1c1c1c1c1c- QP s>jY@Ԥ4_p3xBr c'W*RF _\ϚWlc1c1c1c1c1c1c1c1c1c1l[13lc1c1c1c1c1c1c1c1c1c1kbف5WQW  ҏcT4.M`( Zضb3Ao-|J¤.r==(3;V-.HZUAU)sBDB!Α)%.)#X.MlQd$,֩rlQvWfn+0@ IjR*V@'ŰU% $L@р@ @  F/Ɂ`D `XHZW€hp9<` `DhB#p $W 8 0h, $A$ŠK"v%/0 $L@1_eR-tx:p8+Cǐ=RR2A 1¥_ Z.Mm|Z)s5IP']HjEmRڶGŮ:lS[S?XHOG.u#*tQMViGťIaY€Q0PppH 8 A㞤D 5#Et,gxzI'Bxl'#ㆇ000pqC!;WRzg@``(, 8fH8L@X(( 88@ $  yRi"|rrJ 3[=l‡&\ ;.yj \Mkڤ j& \FU>3f'*9Z0vzٓ{7Eq3RyI$SWHW$'`ϝIrAzf pY (DQ>oJ'Rr^3DXЀqõ 0[!;uu!j+` QF<]J]\NූBwt7*p{Ҏ*t%\'tW(h)B Ҍ{hdfH8L@X(( 8@ NZf *A=-VAKImtQTmRAKHʳfb|,G<@n7@,4<, (n 8N;" c1c1c1c1c1c1c1c1c1c-ggA_l[<WQW>%aR[ e?il]MIF?'xRR[oJ8bບ{RxRR[Ml[1c1c1c1c1c1c1c1c1c1[Τuԅ곏t-@/X 3@|Ի =yMեh>VHQ]$ 1RR,UK[s>|KsAB>T`Db |[1c1c1c1c1c1c1c1c1c1[F>g: \G]HY[&w :s_Er)FųdYDj3>+HYsI<E[<SRQQ",%j3 | ض1c1c1c1c1c1c1c1c1c1cI)su!guR,VEԅ:ʤa&h ;]HYҤ8HZiZlT0Ax <Q_N =Հ+Jгb!(_R/.RGkrm|[pyGBj1c1c1c1c1c1c1c1c1c1cų=[1c1c1c1c1c1c1c1c1c1c-SQʾ輴Ҋذ%aR[9_c+[= q}RRgΖź3FyɚNй0 J)Tgϝ /r[pt3`-sB/B! VHRJ[=4ϕFpW|ngW>%y)%_0H<^q6yZNVϝi Hؿ$֩rm[lAKI75"*M+iũ_0b9"Z[R@Y f, 8<I@  ҖU||yX 8 gΆt33q  $ F`sCs>t33q 8H3k \G]HY8MԿWU]È@,@ @ょ 8,' ΤeY31IbrJ>-/h- 3``((p04 }=I{TjGΊ($Xl rtNjg)s63j|-\)sVcRoZ `l&TngΤxIԦH8O[=lB $2QJ'Da[WxAҒfal!Y Q]lf$-R5"W'tWU|ޔtW۠*W9=ӢEp( @L rUHVg#<]C$'$[2Ag D@QXp04 @  `{Z:j>67ڥɮ:f:&Yʎ*e7Ldr)‡&\ 1 ñÃ-c1è q|U)rR1|Kn:u!gc1cV@X&H@ 0L  ( 3`/@b @ ;B$KH@ /-*OQs>t3O`ruWX8!й:BB|ff0, 8<I@  B|ff00q ,0f4*+ 0".u.Bu^|=xiG)|sԚH7A\F|讜E[0ɗ,H,q{Z:j>6IRAKHʳfc*bre0`kg7tW>u' N5trAzf pY (DQ>oJ'Rr^3 ;[0CWRf HZj3EԯOt yd'xCr'(K[2A+RUʮr{ErP"(=(GxH8OJId$`h(/0q{Z:j>6IRAKHʳfc*bre7Ldr)‡&\ 1 ñÃ1c1c1c1c1c1c1c1c1c1cų`/LONT|ngGIJ\ЭrH_ ض1c1c1c1c1c1c1c1c1c1cc1c1c1c1c1c1c1c1c1cűl,h3ҋ9-g*j3>J>Ĭ*Kb,5gR- (g~|RJKgDYJ(fRQ9-c1c1c1c1c1c1c1c1c1c1R.Ҏ_`1yB}O |@k焬lc1c1c1c1c1c1c1c1c1c1l[10@Zض1c1c1c1c1c1c1c1c1c1clʚPѨ+ubZQ j&|CɶQ A+[ByH>|4XTGrapJų9$J+ʑHZ]Rչ+bP `H `0f @`0`, ]$NIf+B͊9rF[If+B͊9`5kbض`xWSϾ4/.hVʡG`}9=)sKn9$JĪٟv|*U*RR2˩ T W|ngeUG?nt.TGHW@"Q^i->*␼(jnD.} ƊʼTVQ*U[2B73 *7VU(ыbكV|t-S\ЭKTf*4R) W4+R|kf*|r>+r|E3JJ⯅^R&].u#*Vkbق|E3JJf`ZS^qJ}|u<$x|ٖPTgTWYJ$A\U)jZض-%+ {ސ4+JqW®kb`$F: \FUu!j X, q1AC&"pFDk7`$O</4y\)<*ʀA` Hp$10@hAKHʳ.-R1I1` Hq1AC&"pFDk7@000I"b`0g/-*OM3WO`rhZضdtr))O|ngWVU(ذ87` H X :_<[̐4+[Ҏ3s> ҖyDn/YQ``"@ TKT8"z5`D` ^ZTŪXRxT#p / ''x8  8f"pFDk7`$O</ʡ^'B09P7rbr|gh:P X0@b^iN `7 X :_<0VV89i8 x'@k烀f`(-```  $L@daRڶGŮ:T -\V(RRj|7յ:Vڥɵm].u&7}[].Mm|Z)s5܊f[[T6QkΤr)-.HZ.Zg{-QRWOω\]DiRzgu,U)p>u#5``P,@P@`0@0bR*V@, p('I8 0/"T"%p8 g/MH:oFiI\φ*U &H '1\kΤe[JsŃ& hLN& 0s!kbض`+0bhzQiԺibu',\Ь])3[0bYJzzJ_gW4+JO,Ź< &H 'RR2˩ T`$` \FUu!j| Ũ >u@:| 4 ,LAKHʳ.-R2S}'Ņ  8@  ( p &(p$1-p &(p$1  &H 'RR2˩ T൭fc-QRW|*!7|kiR!g%qt2Y]AlE_ z4f|Jhg |K|hlYD@FDF@FDFFD@"#0F5Kje \MRo6Kje \MRoJ ڥɵm].u&7}[]6rm[lAKIS0 f.Mm|Z)s5܊f"` bd`M`$` \FUu!jTf  $LAkD[@0LPI"bLN& kΤeYR)яFiIUf[@k烬 "3%:_Q0a"b !N/j#Q0a"b [T6QkΤ=VH^5,I%5i$ysWVpNp$,@< :>7=4Z4AKHʳfdK[T6QkΤ=VB| ƥ$-$O7ntnn@_禜Tf)sVc̔kj&ն>-tԛg*\ϛ@й0BfI)I%["E" n $LAwpTk-QRTkΤeY32SY  & r9  & Kje \MqH^5,I%5i$ysWVpNpI"b @ӂ_jҒ].u#*tQ/H(h01H(h01\V(RRmMt.g@b ƥ$-$O7ntn@NpI"b @ӂ_jҒ].u#*tQ/=)Dsqa!$-mRڶGŮ:EґWĵ/K7IMZI(oj),$%5S $ `tM8*5)*5RR2A).Mm|Z)s4])|K[j!RS_J'ڷ:EEk7 _T7IXsN |E3JJtԌ1}FfJtKje \MJE_ <1jYJkID{VHHfa!+fI Xx0 u}nziQFiIQ:f:Nrm[lAKIHZQks,uDtU-fUBfI)I%["E" A5SH>7=4Z4AKHʳfdKx6qA !N/j# -tԚ.%{]c(ґWĵVC ƥ$-$O7ntn@NpI"b @ӂ_jҒ].u#*tQ/DŽ_ q{Q`@X !Zڥɶ/6p(HD41["&I)L>EN 8 JouYfH^5,I%5i$ysWVr/uI_禜Tf)sVc̔onD xPBSڈ-mRQ8H^"pΑ|IG7Ɂ _/o$Q<չ+R+YU:$/sN |E3JJtԌ1}FfJtk7"<())DsqA?#Zڥɶ/6p(HD41["&I)L>EN 8 J'8 JouYfH^5,I%5i$ysWVr/uI_禜Tf)sVc̔on=)DsqȑrmͨƊ$/R 8 VHRJGFu$҉ăқVdن/K7IMZI(oj)܁ fDyF"%F \FU>3%:_܅8n0$,~1k@($ BA @pY( \FU>3%:0Jj&լƩrm[O*j&4)sVcΒIMɨSYR&].u#*tQ_I)X5܊mEcT6QYRڶGŮ:j&ն>-tԚ>",Ʃrm[lAKIƩrm[lAKIks>k1\V(RRmM1\V(RRmMtJk1\V(RRmM͓tԖcT6QkΤڛ>"',Ʃrm[lAKIz)­f5Kje \MNmt.gf5Kje \MNmt.g͠ \Ϛj&ն>-tԛSsdf5Kje \MQBj&ն>-tԚ.%f5Kje \MJE_ڊj&ն>-tԚ.%zj&ն>-tԚ.%9TNJE_`ZQYRڶGŮ:EґWĵks,ppR**Ҋj&ؼ,ډ hB!Ӏnt$p3T8, -)fL j&ؼ,ډ hB!Ӏnt$pgRNO8, -)fL j&ؼ,ډ hB!Ӏnt$p3T8, -(H8L-)fL j&ؼ,ډ hB!Ӏnt$pgRNO8, -(H8L-)fL p G H_ <?Q@W \FU>3%:2 [T6-\jE*TW [T6G-\kΤeY3ks:I%6&{O-\kΤeY3ks:I%6&{MH[T6Q j&ն>-t԰! mMͺr| j&ն>-tԛSv8AmRڶGŮ:lS^[T6QkΤ=VB| j&ն>-tԚ.%-\V(RRhR*qKj&ն>-tԚ.%~8)mRQ8Kp _@, pPqˆ}RR2A)ѓq@V.Mm|Z)s5|ER _/o$Q<չ+R+Y0<8h #BBWU:$/sN |E3JJtԌ1}FfJtk78DPBSڈApࠌb9? 8,C?<,,yd< ;?RR2A1)*JڥɵaRS_J'ڷ:EEk7 _T7IXsN |E3JJtԌ1}FfArm[`RS_J'ڷ:EEk7 _T7IXsN |E3JJtԌ1}FfArm[`:H^5,ܣ-$O7ntn@NpI"b @ӂ_jҒ].u#*tQyEY#܅8n0pࠡ?KjlQ:FH^5,ܣ-$O7ntn@NpI"b @ӂ_jҒ].u#*tQyEYH8 pBSڈBG!xŭ\V<`FH^5,ܣ-$O7ntn@NpI"b @ӂ_jҒ].u#*tQyEYQ!N/j#8 q‚±[T6yF /K7(I%["E" A5SH>7=4Z4AKHʳfdQon<(x8XxHN1kj&ն(7=4Z4AKHʳfdQon8r9ac1[T6yFRb!xԳrQ<չ+R+YXHJjYH  wpTk-QRTkΤeY32(Kjju(4!R>+ID{VHHfD/uI_禜Tf)sVc̃/ _ q{Q`@ (#pF1kj&ն(Ph|'Τbh/K7(I%["E" n $LAwpTk-QRTkΤeY32(k78r9crm[`N`|,bh/K7(I%["E" A5SH>7=4Z4AKHʳfdQon@P:Sڈ"rm[`N14C ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ r9$ -mRڶJ :) _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8$$!)DsqBŭ\V<`EQ _/nQ_J'ڷ:EEk7 @jY$1}nziQFiIQ:f:< ܈ucrm[`:i/K7(I%["E"uI_禜Tf)sVc̃/B^G7@x ~1kj&t*/2 _/nQ_J'ڷ:EEk7 _T7L ,I3ZKjlQIwpTk-QRTkΤeY32(KjjjH^5,ܣ-$O7ntnn@_禜Tf)sVc̃-mRڶA(9I ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_"r9r-mRڶA(99I ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ _ q{Q`Qp1kj&ն(R>+ID{VHHfa!+fI Xx0 u}nziQFiIQ:f:<.MlQ#E(*]70Dxb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pB^G7@7=4Z4AKHʳfdQkj&ն(=kD84 D}@U⢵ Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf㈏r9r#AF1kj&ն(=kD84 D-S9"*[ _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8,,Sڈ‚ŭ\V+ID{VHHfD/uI_禜Tf)sVc̃/K!N/j#"GZڥɵm4D{Ox"d $TŎ(ɟ4 ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A__ q{Q`@8_F1kj&ն(=kD84ZrR9H1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY@88ZSڈ1[T6yFiZ$Lq3QSˆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7DpJSڈ#crm[`/hH I1Ūg ²u/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7=)Dsq1[T6yFiZ$LqRR38VJG|JJ/K7IMZI(oj)(5SH>7=4Z4AKHʳfdQon8r9?ŭ\V7=4Z4AKHʳfdQon8q+!N/j# 8?Zڥɵm4D{Ox"d 84,|HTTXb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6qÂBB^G78p#Kji{@5D"&(pi :{j,H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p@BSڈBŭ\V3 x6qÂB^G73 x6qÂB^G78$y#Kji{@,{yGT1jYGZI(oj),$%5S $ `tM8*5)*5RR2AZڥɵm4D{O=<@у/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7@8+Kji{@,{yGUǢ _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon88Sڈ"p ~1kj&ն(Rob!xԳrQ<չ+R+YXHJjYH  wpTk-QRTkΤeY32(Kji{@7}1jYGZI(oj),$%5S $ `tM8*5)*5RR2AZڥɵm4D{T>"dD&H |z V*QZb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pB^G7<$$w?Kji{@7}͢DL 8HNG8M"Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf㈂B^G7@x@ +-mRڶ^"=Mlsh2Aa"g$@@HN*|*)ԃ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ "r9A#Kji{@7}͢DL 9sts _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8y crm[`/h&6H @03JHZg>t/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7D$!)DsqBb.MlQ#ڤ6$p&q2@`0"TҧA0Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfK!N/j# "crm[`/h&4H @03ґSb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6qB^G7D /-mRڶ^"=Mh2Aa"gIH'ĨS> _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon@(rSڈH[T6yFj|$Lq Hɟ+e ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_=)Dsq^1kj&ն(j>tH^5,ܣ-$O7ntnn@_禜Tf)sVc̃-mRڶ^"= Q2ΚE(/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7 "=)DsqV1kj&ն(j>t$X1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYP!N/j# @[T6yFmTLiH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p!CB^G78 G㇏-mRڶ^"= Q2Κ.u#H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< x8XRSڈ ?Kji{@{L1jYGZI(oj),$%5S $ `tM8*5)*5RR2AZڥɵm4D{P=Ȧ"d 8N=4J/R _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQonDr9rm[`/hr)H CC7=4Z4AKHʳfdQonD ,r9@ [T6yFj$Lq!bT-Qb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pB^G78 <+ -mRڶ^"=Sh2AyR =Λѩ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7D(Sڈ -mRڶ^"=Sh2AyR  tޔC ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_8zSڈȎ8v1kj&ն(@"D8D47=4Z4AKHʳfdQon8B^G7D$# Kji{@{MD"&(qJ. _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon3 x6qÇ/܅8n0 (xñ[T6yFj$Lq!bT*zg:1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYYK!N/j# 8_-mRڶ^"=Sh2AyR@u!jb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6qB^G78X#pN1kj&ն(@"D8D47=4Z4AKHʳfdQon8@SڈGKji{@{MD"&(qJ$qi$aR>+ID{VHHfD/uI_禜Tf)sVc̃/ r9?-mRڶ^"=Sh2AyR"I)b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p܅8n0p $wZڥɵm4D{P=Ȧ"d 8NER94b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pÁB^G7 C v1kj&ն(@"D8D4+ID{VHHfD/uI_禜Tf)sVc̃/ r9 -mRڶ^"=Sh2AyR'R39/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7r9crm[`/hr)H CC7=4Z4AKHʳfdQonA)Dsq"-mRڶ^"=Sh2AyR[AR>+ID{VHHfD/uI_禜Tf)sVc̃/B^G7<9G@b.MlQ#ځE6$phxǕ*uH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p8 9)DsqȄ;Kji{@{MD"&(qJsJG-Qb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6r /܅8n0(qb.MlQ#ځE6$phxǕ*u)Zntb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p/܅8n09ŭ\V3 x6pȯ܅8n0PXYŭ\V %Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfȄr9GKji{@{MD"&(qJ,F-$L1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYq#B^G78|b.MlQ#ځE6$phxǕ*qC]DNI H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< ܀r+!N/j# Zڥɵm4D{P=Ȧ"d 8N({b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p!K!N/j#@/ -mRڶ^"=Sh2A|ŞVδ _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon7=4Z4AKHʳfdQon8Sڈ 8# -mRڶ^"=Sh2ALQ΂:b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p@YBSڈ rm[`/hr)H CCrH| L1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYa+!N/j#  Zڥɵm4D{P=Ȧ"d 8BGh)/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7 =)Dsq@b.MlQ#ځE6$phxj:8ӺH1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYP@Bb.MlQ#ځE6$phxj:9RR _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon< (%)DsqA G|b.MlQ#ځE6$phxj:9 _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8pJSڈBxŭ\V7=4Z4AKHʳfdQonr9$BGb.MlQ#ځE6$phxj:8T@.tލH1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYPQu D(Zڥɵm4D{P=Ȧ"d 8BG  tޔC ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ _ q{Q`¿b.MlQ#ځE6$phxj:8U["H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< (,pZSڈrm[`/hr)H CC+PŤ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7 "_ q{Q`8 p#Kji{@{MD"&(qZNA/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7< !81kj&ն(@"D8D40Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfadB^G7<~1kj&ն(@"D8D4+ID{VHHfD/uI_禜Tf)sVc̃//܅8n0HW?Kji{@{MD"&(qZNFEC ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_WB^G7@Zڥɵm4D{P=Ȧ"d 8BG"I)ZI(b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pp!N/j#  [T6yFj$Lq!bT_)%#= _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8 [T6yFj$Lq!bT_)%#I(/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7@PRSڈ GpN1kj&ն(@"D8D47=4Z4AKHʳfdQonDpV1kj&ն(@"D8D4+ID{VHHfD/uI_禜Tf)sVc̃/ǯ܅8n0pPQ^1kj&ն(@"D8D43 x6p; -mRڶ^"=Sh2AVSiHusC ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ !N/j# -mRڶ^"=Sh2AVSztH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< $ crm[`/hr)H CC+P]H1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY pBSڈȏ rm[`/hr)H CC+PH|J #AR>+ID{VHHfD/uI_禜Tf)sVc̃/B^G7<#Kji{@{MD"&(qZNJ #GJ&H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< $,rSڈG -mRڶ^"=Sh2AVS&rrHUBfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf/܅8n0yŭ\V3 x6q/܅8n0$(1kj&ն(@"D8D4s):Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf㇄_ q{QaÁ1[T6yFj$Lq!bziHZH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< y! !N/j# D-mRڶ^"=Sh2AZqu!jryE'VH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p@8:SڈH!Zڥɵm4D{P=Ȧ"d 8LAKH9< _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQonDp1[T6yFj$Lq!b)sѠBfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfBB^G7< Zڥɵm4D{P=Ȧ"d 8LAKHV1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY@ $)Dsq!Cŭ\V7=4Z4AKHʳfdQon8PZSڈG1[T6yFj$Lq!b䊜|'RuaR>+ID{VHHfD/uI_禜Tf)sVc̃/_ q{Q`r rm[`/hr)H CC-S8.g'$_ 8O( ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ <-)DsqG!Zڥɵm4D{P=Ȧ"d 8LⴝDEʜ|'RuaR>+ID{VHHfD/uI_禜Tf)sVc̃/"+ID{VHHfD/uI_禜Tf)sVc̃/B܅8n0xH8+Kji{@{MD"&(qj-QryE'VH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< pHHX< b.MlQ#ځE6$phxŪg =Λѩ|'RuaR>+ID{VHHfD/uI_禜Tf)sVc̃/_ q{Q`@ ŭ\V+ID{VHHfD/uI_禜Tf)sVc̃/܅8n0yG8ŭ\V+ID{VHHfD/uI_禜Tf)sVc̃/A)Dsq‚HZڥɵm4D{P=Ȧ"d 8LID>s):Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfWB^G78'Kji{@{MD"&(qjŤՆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7  r9p@?ŭ\V3 x6q`8#!Zڥɵm4D{P=Ȧ"d 8LqryE'VH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< pB^G7<$$pWŭ\V3 x6q/܅8n0pP #pb.MlQ#ځE6$phxŪg>3 8O( ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A__ q{Q`𠠠b.MlQ#ځE6$phxŪg>3 :51t\1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY!N/j#1[T6yFj$Lq!bs>s):Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfG/܅8n0$Y'Kji{@{MD"&(qj*zg]HZqQIՆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7 E)Dsq!N1kj&ն(@"D8D4+ID{VHHfD/uI_禜Tf)sVc̃/ r9?ŭ\VoJ'%j.T⊝5SBfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfB^G77=4Z4AKHʳfdQon8x@ ?Kji{@{MD"&(qjȾRJGJ&qQIՆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k79)Dsq8Zڥɵm4D{P=Ȧ"d 8L_)%#=8O( ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_A)Dsq!Aa-mRڶ^"=Sh2AZr/ɤ>s):Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf㇐ r9C!Zڥɵm4D{P=Ȧ"d 8L|9g>3 Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfǯ܅8n08ŭ\Vs):Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfȂWB^G7<#x#Kji{@{MD"&(qjHs>tH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p rSڈG#81kj&ն(@"D8D43 x6qAB^G7<[T6yFj$Lq!bJsqQIՆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7_ q{QaA!?1[T6yFj$Lq!b |J #G9Xb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6r_ q{Q`$-mRڶ^"=Sh2AZt4JJ|'RuaR>+ID{VHHfD/uI_禜Tf)sVc̃/BBG/܅8n0p88@# 'Kji{@{MD"&(qjҫII:I%:|1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYం#B^G7<(_b.MlQ#ځE6$phxŪgHryE'VH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< q+!N/j# < #Kji{@{MD"&(qj,VSVUBfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf`B^G7rm[`/hr)H CC-S:Eu*rgʣ0Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf!N/j#D?Kji{@{MD"&(qjR{qQIՆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7"8%)Dsq-mRڶ^"=Sh2AZuԅ:Xb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6q܅8n0$ 8+!Zڥɵm4D{P=Ȧ"d 8L|9< _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8@HJSڈA!Zڥɵm4D{P=Ȧ"d 8L|Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfDB^G7@pIñ[T6yFj$Lq!bq=;A)|'RuaR>+ID{VHHfD/uI_禜Tf)sVc̃/ _ q{Qa@Arm[`/hr)H CC-S:攏-GZ3N1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY܅8n0( p_ŭ\Vs):Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfH_ q{Qa!`?-mRڶ^"=Sh2AZrR8O( ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A__ q{Q`H pAq[T6yFj$Lq!bT*uԅ:Xb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p!ak!N/j# CZڥɵm4D{P=Ȧ"d 8Ld4qi$g9Xb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pȎ_ q{Q`88[T6yFj$Lq!b>/q馊Q|Ґb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6q/܅8n0pG1[T6yFj$Lq!b>/qu!jb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6qWB^G78,CKji{@{MD"&(sH^'9"R>+ID{VHHfD/uI_禜Tf)sVc̃/_ q{Q`@8N1kj&ն(@"D8D43 x6qǏ_ q{Q`p@@1[T6yFj$Lq!b>/u b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p[T6yFj$Lq!b>/u TfH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< ܀9u<#!Zڥɵm4D{P=Ȧ"d 9qx/O Mԃ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_9)Dsq1kj&ն(@"D8D4+ID{VHHfD/uI_禜Tf)sVc̃/ǎ r9pA b.MlQ#ځE6$phxϳ!xZI(b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6q‚B^G7@8@_CKji{@{MD"&(sH^'  ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A__ q{Q`V1kj&ն(@"D8D4/t ΃3 _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon<$$Sڈ -mRڶ^"=Sh2A8R*zg]HZH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< xHI7=4Z4AKHʳfdQon@ r9G?b.MlQ#ځE6$phxϳ!x |J #AR>+ID{VHHfD/uI_禜Tf)sVc̃/ _ q{Q`@X b.MlQ#ځE6$phxϳ!x*M)L1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYPH %)Dsq#?b.MlQ#ځE6$phxϳ!x*M+|ҒR>+ID{VHHfD/uI_禜Tf)sVc̃/ _ q{Q`8 crm[`/hr)H CC}^)  _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon<r9p~1kj&ն(@"D8D4/u)Zntb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6rDG܅8n0($'Kji{@{MD"&(sH^'L1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY/܅8n0(pQ b.MlQ#ځE6$phxϳ!xԃ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_@))DsqA1[T6yFj$Lq!b>/pPQ8Q0Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf$B܅8n0 @/ -mRڶ^"=Sh2A:)I% _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon<(r9 1kj&ն(@"D8D4q馊Q|ҕ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7 r9$Bb.MlQ#ځE6$phx}NB+ _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon@Sڈŭ\V7=4Z4AKHʳfdQon8qBSڈBACcrm[`/hr)H CCg9"R>+ID{VHHfD/uI_禜Tf)sVc̃/B/܅8n0$(xQ1kj&ն(@"D8D4qZNVՆ/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7@p 81kj&ն(@"D8D4u TgaR>+ID{VHHfD/uI_禜Tf)sVc̃/Ȅ"r9a`ŭ\VpGZ:F ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_G_ q{Q`@A?b.MlQ#ځE6$phx}Wœ!N҈b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p#B^G78AZڥɵm4D{P=Ȧ"d :ZI(/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7B^G7@ ##Zڥɵm4D{P=Ȧ"d :.Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf!K!N/j#88G-mRڶ^"=Sh2AA+/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7@(Sڈ"8'Kji{@{MD"&(ts9HTU/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7/܅8n0pP8Q1kj&ն(@"D8D4t RXb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p@HXJSڈq[T6yFj$Lq!bA3g,F1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY pH!)DsqF1kj&ն(@"D8D4t-aR>+ID{VHHfD/uI_禜Tf)sVc̃/BA !N/j#Ccrm[`/hr)H CCg#SA"H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p9u"< #pb.MlQ#ځE6$phx}_)%#I%Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfq[T6yFj$Lq!bA3|L ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_B^G7 rm[`/hr)H CCg"I)IB ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_B !N/j# 8GKji{@{MD"&(ts:51t^ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_r9$ŭ\V3 x6p!  ŭ\V7=4Z4AKHʳfdQonr9!_#Kji{@{MD"&(ts9:QL1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY puŭ\V1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY! !N/j# 8#Kji{@{MD"&(ts:Ui)'Qi$vH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< D-)Dsq GGKji{@{MD"&(ts:Bu ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A__ q{Qa@HZڥɵm4D{P=Ȧ"d :oXb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p@8H!)Dsq!F1kj&ն(@"D8D4u|qob!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pDWB^G7 ±[T6yFj$Lq!bA3'h%; _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon_ q{Q`Qp?#Kji{@{MD"&(ts:攏-GZ; _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon _ q{Q`?b.MlQ#ځE6$phx}R<j _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8q<|b.MlQ#ځE6$phx}鞝Xb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p@u 1[T6yFj$Lq!bA3/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7D=)Dsq!dH;Kji{@{MD"&(ts8Y((ZI(/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7"r9ǎ8Kji{@{MD"&(ts8.g'$_ _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon3 x6qCDž/܅8n0$ ,pWb.MlQ#ځE6$phxȤU⪜)s/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7"j/K7(I%["E" n $LAwpTk-QRTkΤeY32(k7 8!)DsqˆXŭ\V7=4Z4AKHʳfdQon8!N/j# CKji{@{MD"&(r)x9"R>+ID{VHHfD/uI_禜Tf)sVc̃/ r9r!a[T6yFj$Lq!b"WqC]DNI H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< ܀$B^G7@ (ŭ\V+ID{VHHfD/uI_禜Tf)sVc̃/ȯ܅8n0$ ,+ Zڥɵm4D{P=Ȧ"d 9USV ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_"_ q{Q`H!b.MlQ#ځE6$phxȤU⪝B/K7(I%["E" n $LAwpTk-QRTkΤeY32(k78,!)Dsq_ケ[T6yFj$Lq!b"WpC\b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6pB^G7@O@b.MlQ#ځE6$phxȤU⪜*QJMD1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY#/܅8n0!crm[`/hr)H CCE"TID ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_"9)Dsq㇅#Zڥɵm4D{P=Ȧ"d 9USER>+ID{VHHfD/uI_禜Tf)sVc̃/+ID{VHHfD/uI_禜Tf)sVc̃/ r9 ?Kji{@{MD"&(r)x"I)b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p [T6yFj$Lq!b"Wr/ɤ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A__ q{Q`!?[T6yFj$Lq!b"WtjbHb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6qAA$B^G7;p^1kj&ն(@"D8D43 x6qc_ q{Q`@XP b.MlQ#ځE6$phxȤU⪜JsH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< pIB^G7  -mRڶ^"=Sh2AE^*ɠd4H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< pI×B^G78,8+Kji{@{MD"&(r)xJ%$-$L1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYH@X )Dsqcrm[`/hr)H CCE"T+IJ\b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6q܅8n0 ($CKji{@{MD"&(r)x]HYb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6ppp@!)Dsq?ŭ\V7=4Z4AKHʳfdQon7=4Z4AKHʳfdQonA)DsqBF1kj&ն(@"D8D47=4Z4AKHʳfdQon8 xHBSڈHZڥɵm4D{P=Ȧ"d 9USztH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< p!+!N/j# 8(b.MlQ#ځE6$phxȤU⪜ԃ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_@)DsqCA[T6yFj$Lq!b"WpPQ8Q0Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmfdB^G7< /x#Kji{@{MD"&(r) Qԭ:zaR>+ID{VHHfD/uI_禜Tf)sVc̃/܅8n0x pP?-mRڶ^"=Sh2ABtRNID ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_WB^G7;Kji{@{MD"&(r) QR{H^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< 8%)Dsq!1[T6yFj$Lq!b$*+Ǝtԃ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ r91[T6yFj$Lq!b$*+ƎEh1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY@XB^G7Zڥɵm4D{P=Ȧ"d 9!QX>4tRNID ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_"8 881kj&ն(@"D8D43 x6pB^G78[T6yFj$Lq!b%>4sΤH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< ($"8Zڥɵm4D{P=Ȧ"d 9(񣢑Z _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQonDr9H -mRڶ^"=Sh2A`ҫII:I% _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon< ,r9r$?Ǐ-mRڶ^"=Sh2A`b!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6p +!N/j# @<@^1kj&ն(@"D8D43 x6p/܅8n0 H8/Kji{@{MD"&(tVUh$qi$aR>+ID{VHHfD/uI_禜Tf)sVc̃/ǎ /܅8n0$ Y1kj&ն(@"D8D4+ID{VHHfD/uI_禜Tf)sVc̃/ǃWB^G7@#!Zڥɵm4D{P=Ȧ"d :Ui[AR>+ID{VHHfD/uI_禜Tf)sVc̃/ _ q{Q`@H?Zڥɵm4D{P=Ȧ"d :UsJTuH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< ,xXZSڈBǃb.MlQ#ځE6$phxҫQ89'İb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6q_ q{QaAq[T6yFj$Lq!bIHD _/nQ_J'ڷ:EEk7 A5SH>7=4Z4AKHʳfdQon8r9@+Kji{@{MD"&(t_nHZb!xԳrQ<չ+R+YQ fDyF"%F \FU>3 x6q!C !N/j# @b.MlQ#ځE6$phx֥Q*qr)EJO`Bfi$ysWVpU:$/sN |E3JJtԌ1}FfAmf r9!A_q[T6yFj$Lq!bZq¯ tޔC ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_ r9 q[T6yFj$Lq!b)R9Z1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEY!k!N/j# @CKji{@{MD"&(rN.sΤH^5,ܣ-$O7ntn@jY$1}nziQFiIQ:f:< !)Dsq‚ŭ\V7=4Z4AKHʳfdQonr9ŭ\V7=4Z4AKHʳfdQon+ID{VHHfD/uI_禜Tf)sVc̃//܅8n0Pp[T6yFj$Lq!b >θ ƥ|W夒Α_Zˆ_T7& tM8*5)*5RR2A_/܅8n0$(x GKji{@{MD"&(sΤtB@1jYGZI(oj)(NpI"b @ӂ_jҒ].u#*tQyEYPX8RSڈD+ -mRڶ^"=Sh2AE^*H|J #AR>+ID{VHHfD/uI_禜Tf)sVc̃/DžB^G78pPxŭ\V ƥ|W夒Α_ZBWU:@`(@ӂ_jҒ].u#*tQyE\VgŪ`K콂R.I% _/o$Q<չ+R+YU:$/sN |E3JJtԌ1}FfAmfG܅8n0HPv1kj&ն( }H B`&g=Ҕp*I(b!xԳy$夒Α_Z n $LAwpTk-QRTkΤeY32(k7"r9r v1kj&ն( }H B`&g/TQ0JRjBfI)I%["E" A5SH>7=4Z4AKHʳfdQon8 JSڈ <crm[`/hP >gD8 &jOqj%VH%)/TQ0BfI)I%["E" A5SH>7=4Z4AKHʳfdQon88Sڈ ŭ\V3 [T6QkΤRiJvH^5,I%5i$ysWVpNp$,@< :>7=4Z4AKHʳfdQkj&ն>-tԛ*M)N:E8:BfI)I%["E"u$bP,yF"%F \FU>3 [T6QkΤRiJv)յ:TRӤS!RS_J'ڷ:EEk7 @jY$1}nziQFiIQ:f:< q#B^G78ŭ\V(RRl4;l|vt43HF!4C ƥ$-$O7ntn@NpI"b @ӂ_jҒ].u#*tQyEYr!+!N/j#8@?X?  !ac !!AKHʳfdP+1\Vɵm,Ʃrm[`:ɵm6(#YRڶt.r0.MlQyGB#a1\V<`izj&ն('A5.MlQ#ڤ6$p&q2@`0R) Q}Α.MlQ#ڤ6$p&q2@`0"TҧA5.MlQ#ڤ$p&pR*sR3YRڶ^"=Mh2Aa"gIH'ĨS>YRڶ^"=Mh2Aa"g&|>EF;YRڶ^"= Q2ΖcT6yFmTL$QJ+1\V3 YRڶ^"=Sh2AyR@>5.MlQ#ځE6$phxǕ*t R,Ʃrm[`/hr)H CC %.MlQ#ځE6$phxǕ*pPQ8Q5.MlQ#ځE6$phxǕ*qC]DNI ɵm4D{P=Ȧ"d 8N({j&ն(@"D8D4({7RYRڶ^"=Sh2AVS_ rP:oJ+1\Vs):.MlQ#ځE6$phxŪg: \GDif5Kji{@{MD"&(qj΂:HZj&ն(@"D8D4s):.MlQ#ځE6$phxŪg%j.T9s):.MlQ#ځE6$phxŪgJ&tR+Vɵm4D{P=Ȧ"d 8LIDM(=ʬƩrm[`/hr)H CC-S9\qQIլƩrm[`/hr)H CC-S9g9Zj&ն(@"D8D4s):.MlQ#ځE6$phxŪgFpȥs9HTUƩrm[`/hr)H CC-S:51t\95.MlQ#ځE6$phxϳ!xuԅK1\V/tR=f5Kji{@{MD"&(sH^''R39Ʃrm[`/hr)H CC}^) VpPQYRڶ^"=Sh2A8RҤҔcT6yFj$Lq!b>/t4JJƩrm[`/hr)H CC}^) YRڶ^"=Sh2A8RR{禳ɵm4D{P=Ȧ"d 9qx/.MlQ#ځE6$phxϳ!xq=;A)Ʃrm[`/hr)H CC}^) R<yjcT6yFj$Lq!b>/u)Zntj&ն(@"D8D4q馊Q|ҕƩrm[`/hr)H CCgwRZj&ն(@"D8D4qC]D|*cT6yFj$Lq!bA3U.MlQ#ځE6$phx}ⴝDEϫYRڶ^"=Sh2AΡjf5Kji{@{MD"&(ts8T@.tލJcT6yFj$Lq!bA3_ :չ6ɵm4D{P=Ȧ"d :*S)zQYRڶ^"=Sh2A-$NcT6yFj$Lq!bA3Eֳɵm4D{P=Ȧ"d :W;YRڶ^"=Sh2A|gR=k1\Vr54+k1\Vf5Kji{@{MD"&(ts:Ui)'Qi$vɵm4D{P=Ȧ"d :u!gzk1\VtNf5Kji{@{MD"&(ts9KZj&ն(@"D8D4pPQ8Q;YRڶ^"=Sh2A({!W–cT6yFj$Lq!b"Wq馊Q|Ғj&ն(@"D8D43 YRڶ^"=Sh2AE^*IDⴝDEʬƩrm[`/hr)H CCE"T$Yf5Kji{@{MD"&(r)x#SA"1\VoJ+1\V%VcT6yFj$Lq!bIHU䅪JƩrm[`/hr)H CC-:SM3J/R|K,Ʃrm[`/hr)H CCb_ 9B(Ʃrm[`/hr)H CCR%R9¥rĵZj&ն(@"D8D4΂EcT6yFj$Lq!b >ER8Q5.MlQ#ځE6$phxϡsI)Ʃrm[`/hr)H CC} q=;A)Ʃrm[`/hr)H CCtԎCtVUh,Ʃrm[`/hr)H CCE"T$Y> %.MlQ#ځE6$phxȤU⪜*Q֭ΑYRڶ^"=0R|ϵ.MlQ# 5'h2AMI>+I)/TQ5.MlQ# 5'h2AMI>-S_ep*I(j&ն( }H B`&g=Ҕp*I(j&ն( }H B`&g/TQ0JRj.MlQ# 5'h2AMI>-Sj %\ J&ɵm4D{AB`&m&H8P >gвcT6yFh(@Lԟ3D 5'8L }>tɵm4D{AB`&m&H8P >gŪ`%((X%)/TQ5.Mm|VcT6QkΤɵm].u&ʓJS.Mm|Z)s6TRtp>uk1\V(RRl4;l|*M)L)шM.Mm|Z)s6TRtp>um:TRӤS+ppP!_8A<,,yd< ;?tԌ1}FfA hV.M j&@ & j&ն) rm[`N xBڥɰyLrm[`MYrj&ն(@ mRڶ^"= -\VpBڥɵm4D{T[T6yFj|𐥵Kji{@5Dʟ:Dž\V-tԛ*M)NBڥɵm].u&ʓJSΑNί  Hめǃac !!:f:&YFiIPV.M _/o$Q<չ+R+YXHJjYH  wpTk-QRTkΤeY31IKjeBfI)I%["E"u$bP,yF"%F \FU>3k[T6QkΤH^5,I%5i$ysWVpNp$,@< :>7=4Z4AKHʳfb|-kj&ն>-tԚaRS_J'ڷ:EEk7 _T7IXsN |E3JJtԌ1}Ff)7ֶrm[lAKIM|VAy[ _/o$Q<չ+R+YXHJjY$1}nziQFiIQ:f:&Z qBSڈArm[lAKIM|VB81jYJkID{VHHfa!+fDyF"%F \FU>3kx6p@PHZSڈBG rm[lAKIM|VBaRS_J'ڷ:EEk7 _T7& tM8*5)*5RR2A _ D-)Dsq-mRڶGŮ:TŪg&| _/o$Q<չ+R+YXHJjY$1}nziQFiIQ:f:&Z p $%)Dsqcrm[lAKIM|VASu!jb!xԳy$夒Α_ZBWU:$/sN |E3JJtԌ1}Ff)7mfaCǯ܅8n0xXPZڥɵm].u&7}[](Sz4H^5,I%5i$ysWVpNpI"b @ӂ_jҒ].u#*tQMYWB^G7-tԚmtN| ƥ$-$O7ntnn $LAwpTk-QRTkΤeY31Ik7@%)Dsqŭ\V(RRj|7յ9J",H^5,I%5i$ysWVpNpI"b @ӂ_jҒ].u#*tQMY+!N/j# "crm[lAKIM|V1C75 BfI)I%["E"uI_禜Tf)sVcRo_ q{Q`81kj&ն>-tԚmtDZBfI)I%["E"uI_禜Tf)sVcRo_ q{Q`Iq߄-mRڶGŮ:hZ; _/o$Q<չ+R+YXHJjYH  wpTk-QRTkΤeY31IKje \MjMBfI)I%["E"u$bP,yF"%F \FU>3k[T6QkΤڤ ksK  _/o$Q<չ+R+YY fDyF"%F \FU>3kx6pB^G7@xO?Kje \MjMSH1jYJkID{VHHfd/uI_禜Tf)sVcRor9[T6QkΤڤ kt,H^5,I%5i$ysWVpU:$/sN |E3JJtԌ1}Ff)7mfȄ/܅8n0p wCKje \MNaRS_J'ڷ:EEk7 _T7IXsN |E3JJtԌ1}Ff)7ֶrm[lAKIz)­ZH^5,I%5i$ysWVpNp$,@< :>7=4Z4AKHʳfb|-kj&ն>-tԛg*ڙMNdن/K7IMZI(oj)(NpI"b @ӂ_jҒ].u#*tQMY  & r9  & Kje \MjM#e ƥ$-$O7ntn@jY$1}nziQFiIQ:f:&Z ܁8ŭ\V(RRj|7յ|($RS_J'ڷ:EEk7 _T7& tM8*5)*5RR2A _ D  -`8 "@ D+ @pY( +.u#*tQMƩrmZj&ն>+1\V(RRYRڶGŮ:Tf5Kje \MRo@j&ն>-tԚmt( |̓cT6QkΤ&>oksI5.Mm|Z)s5IZrg.Mm|Z)s5I9 qs-RYRڶGŮ:TIT=YRڶGŮ:TѩϚj&ն>-tԚmtx,Ʃrm[lAKIM|V1C75%.Mm|Z)s5I<o-k1\V(RRm Tgk1\V(RRm TgmRoƩrm[lAKI-QI@ ,ɵm].u&еFv&[]$ɵm].u&еFv&[]e.Mm|Z)s6E8UƩrm[lAKIz)­Zɵm].u& yjlS06k1\V(RRm TgmRo9,ɵm].u&7}[]WŽN.ADGac !!=RR2A 2 [T6-\jE*TW.Mm|pBڥɵm].u,rm[lAKIM|W.Mm|Z)s63rm[lAKI-QI-\V(RRmp j&ն>-tԛg*ڙXी88;pX8PD<,,yc ;?=RR2A9$JTfKj ƥ$-$O7ntnn@_禜Tf)sVct%Vrm[lH^5,I%5i$ysWVpNp$,@< :>7=4Z4AKHʳfc*Kje \ARS_J'ڷ:EEk7 _T7IXsN |E3JJtԌ1}Ff:I[T6QkΤ&>o _/o$Q<չ+R+YXHJjYH  wpTk-QRTkΤeY31rHZڥɵm].u&{LU _/o$Q<չ+R+YU:$/sN |E3JJtԌ1}Ff:Ix6p@+!N/j#rm[lAKIS0 b!xԳy$夒Α_Z n $LAwpTk-QRTkΤeY31rH_=)Dsqǂ?[T6QkΤ&>oktBfI)I%["E"uI_禜Tf)sVct%Wmf!BB^G78P# -mRڶGŮ:TraRS_J'ڷ:EEk7 _T7& tM8*5)*5RR2A9$J!N/j#8 #Zڥɵm].u&7}[] PN _/o$Q<չ+R+YH8:jY$1}nziQFiIQ:f:A"Uon@A)Dsq!#b.Mm|Z)s5I!BfI)I%["E"uI_禜Tf)sVct%WmfG_ q{Q`H@8H#pb8$c@?pPqˆRR2A9$J|p YRڵ.Mm|VcT6QkΤɵm].u&7}Zj&ն>-tԚE3Uf5Kje \M@"hVcT6QkΤ&>okt.Mm|Z)s5I'&ɵm].u&7}[] PNYRڶGŮ:TшBYR&].u#*tQ_I)լƩrlM:f:ͯ$Ssjڑ@ &pppX@8,(pG <?QAtԌ1}Ff:I[Jڥɵx!mR3%:14g<tԌ1}FfJtbM+.u#*tQR¯X)sVc̃:f:<ʎ* \FU>3 9()sVc̃\E^XtԌ1}Ff)7paW¬tԌ1}Ff)7NTswAKHʳfb|,G.u#*tQDʎx*;ΤeY32SjҒ;ΤeY32S)sVc̔x6wAKHʳfdFMwAKHʳfdPZ4)sVc̃|wAKHʳfdPx6wAKHʳfb|,Z4)sVcRo|wAKHʳfb|,x6wAKHʳfc*c-QRTtԌ1}Ff:IRR2A9$Jo kWA םa םam2Aj./usr/lpp/cluster.es.client/inst_rootFvAA l~+om םaםaםa&./usr/lpp/cluster.es.client/inst_root/liblpp.amm   # "0einorst,D\_acdl$./124:CENRfghmpu{}%-3AGILMOSTUbkvy*567=BFKPWwx&()89>HV[]!?XYjqz|;`'@+J^Q<R 0 " %gmm@NmYlm`, !lݶlmP`,H,\mmm`Nm"iWs9Ut& dhDx 3haBAɃJLP4;3CP2X*/^99/##>@๓J'0YZTyP=Uүz)Tz_1ϠWQӫ+(5  8gٟAWƏ[W /LΣ:F0x4G3ϊ )p0SƯT%Ӵ_Ja5pv @ σW_U.>c[3υDt8|kh}+8+WɪZ= ӋU+ GJy- *vo}+8+Wppn D!4RQV% RS8;3σ)  &T)f|0'b#!&*.z_1WQRW;JcAʯƣWVQ1#i p\ɥ6q p\ɥ,,@" & YCo'l: 5Rc:3Ɣ˾lohOm(bƄ`N ¸% Ϝ6}bM5'#WgNWR+.aylMK4k2j3y8V2mpv}(m)޳;>$lܣqԖgg6fN|kB{mJSzo+%NF$mG5+ Emmy󜧍Pe.cHa( Aw3];8ОmRiMG;<' *k>s+NQ6ԞЍ*gg R `am*N46 "Ͷa;L`<M>,mzR l5k6mpUJ6};>RggτS2gVƪLgEh   I;II;I"v|VPYxPSRbґYw͝4x#1K/1°h‚b4yL{>ЈW;Jmc;;>)7WW;Jcb @ƅr}4e\)V|ZU~+$eM)/[T0뗒V&<Ҋ8=yԖ =YJ J<'UhGTOӀbBx,0ǚQSg<`|N"f0&<Ҋ8=EUs9yxʚ|YՑMlc4#U]gdª cJ*lǬ:axUAlJ*l2$^LyL{>ЈW;JcUGQЌ+<`z$, Yuu, L]a5ELi1 B#\*}U5GB0Q+Uv|]&ύf3NFQ| ة>cUk`&Xڑg5U9D`<`|N"MQ SeWLI5Ԏ 9 `/Yuu, L]a4)Z3^1$zR9ue1_FYqOC2[._<3ST| cUMUT ^ X A0 @iYS,"g*"bIƳՖ>}v|]0%:-AUɛi^1,<`|N"3t0]2&$TOxz`13Ֆʯj ү7,&3J.H~)(r]w͝A`eWLH 9D'W_Yuu:axʰ03^1"x,h҂bv^=UGM\n0>'W_b )޶JrQe9U*',&3J.H~)(r]wͬggػM5tZ4TyF13F( TpZ,f,* {*ie7B:}VԉZL(h0^.h7fo9|Ԭ=g@.4ව|5Nsy]01PnǬ:e( <' 1( @m@mm`Dd"ͶlCml vmcUs9|j:uxVQ1 B#iDSLT8HړTyP=Uүz)Tz_1ϠWQӫCHcM(`QM(d bG@ @Q2YVQ1:+Jz^GN g,Qk6v}Z1HJEe6v}fdƴ'є^ϱwB{m'\Mgr>b1 &3+)|;k GJ0fgjY\OPUԁ °mp%YCo' &aH.)#f+;>2tZjUJ }N9Y,br7#o8XJ,mmϜ ϜЈW;Jmcđ(( kX T * kX&((Tֱk:o7!1 (":-AU7!"3tZ4T'J N:3t0]2&$TOxz`1@f[ yy B&r&%NF*x#UYu6m7‹]lj*to yGM0F4[}UGb o>E뾯]lc8o}UGb t#R4)QbAW2&$QcjGT =g@ a3 Aw<ټ܆!8i@hSc=T}1*5T1*`XUxDēUx>5g5U9Dd=g@ a3 Aw<ټ܆!9UMU>519UGXV+i܆_Hƒa画AW>5Mg3画V crZ M7!画V gƳ̙UAliEMX0>'W_b gXaZ-hV6l yGyPfy7(13F( TpZ,f,* {*ie7B:}VԉZLm(h0^.h7fo9|Ԭ=g@6m4ව|5Nmy]01PnǬ:e( lV+b17֡j ү7Qo<' bla ( m D vlݶl@  %mbm`X$m;*UUx>5:qɽ96p@๓J'0YZTyP=Uүz)Tz_1ϠWQӫә5 Dq3>B 4zEJpQz`>u19f|PH K>5|a("SE%38!j2jGaf}op:bgjx5Z`+G:qx*a(O3EWogj 0ߊJ5SX<#Jgf}x4E0q! ʖE1@ϰ~l XP=Uүz)Tz_1ϠWQӫә4!$ MCJȂgq!Yv}(ma͝bVƪLgRbґYw͝`ٙ:m e];8Оl y8WSYϱXBrƤjJEe6v#YC3mfqcUMEkRF98W}MIl4W;Jz}2~QZaohOm(bƄh/y8WSYϱXBrƤiU\;?W;Jij+X <ylMK4kˉJ%;Jz}2~QZaQ5 hg ԣ+#Ek6Ꚗj_=Gb )B45 jHBJM㒋Y ¸ggزOjVGUs1*3'Yz1Q33'M5=^Gb Ԭ`Qp!bƄh/gجF!9DR{B4qe+#UN}p!OQЎGb 5JeͶ(h0^.m1*q hFG5+,z`1m `; x./{6ڦmԬRjiX0>'W_b cfJ/fbH;GiIl3ai1Gx *ԋgg*B,tSL6Ih Ba1Љ1i1Љ1i1XπZі^Q28rSx0B4cBҎ ү6É4^9:J|) X0>'W_6m`=T|4rTv[>vSO6ꚖjQC`҆_!9`F4#J[J:3JmfD)*8rS(T֩S >tc$|&3J،'9LsYTԳ@,gi\UE`hqQ,rpeUEׄLOiW)k6ꚖhhXDΤT$ߡUERG%mqiT"gVYicQzA|nfa(\sF( Tp 8.9C D(@p ¹ggiU e5 f*/)|YsJ0gb834E򫝥_=JWUU*`@a™zRj^3*'N37(vs|kU*m'*v,Í.9U^RnTͶo >``n^lFLÊM:T]wgcDmJWu<4U*#UY36mf|(jЦSNR8먬r'q(~Y:p"(fvm†^3ʩ,X^GNY{SpA؀a`h@ !UzVf͹,xn3 䙶M2&[dv{ D&]ۜdwv{ D&]ۜҋ_<"T2UIj&]ۜYuRuԄr*eݹPUԁ<{ D0)X&]ۜViEүR*|p"g(bՔL@٩XJ#Iwv+QsT_<0<{ D0)9&]fn Hdwwi3J /K K`hhyLX%Jdq5j$q} .p+$˻j$P2sJ.v|P)L,*%=YK/(Iwv#4qTIv)e5(dwwnssJm#2L ¥儂%44L<,%2y 58>IvG$˻j$P2sK=.mDʖG am2,TP"$\O4`R$rL*Y($O4j$!,} .r9DQ DIww٥ʔ*B$X[q2L9sK=.mK(T< +ĄIDP%e.PpA!H>Iwv#4qT+&Qt;PچIvG6gLZrQeTG`q"{ D0)X&]ۜDi.jeݹUtNFZIv͙SاEgj&]ۜG6ɛ}( . ͙SaVeݹU4EӢѨdwnp`'6RuN*2L80EgMY8eݹWzLHY:,چIv9#VeݹVjtBj&]ۜQt3SaVeݹj 5ԋP2™*U5ԋP2sVUzVfͨdwnpa\WNZIvvl>)%T]:IQw֍C$˻sUyQ%T]:IQwըdwnq"9kUj&]ۜH35h=dwnq"Y>*idwnq Nl(Qx =dwnq Vjg3tj&]ۜH.UEӤ}h2L8ܢ_Sjj&]ۜH76]9|ZIv#4qTIv8iMdNFӛ|jq5HdwnsfiꋧNRP2#f޴ӋTj&]ۜ⹰kUNaE^{ D0)8&]ۜvi5䪋0q5Hdwnqf5|(ۏa"GC$˻sTL]D\2L8>+&qEEVeݹ3hG3*. . K6ɋҊzt}ZIv朜}(QQwըdwnqVlިgT]j&]ۜ@7jv|VQ1'fa( . R+.rR چIvUL@jW . AUӛՔL@P2BxHʼn= cdwnqy =:7>5j&]ۜAټ܆^1aDĚIv+bozuzk•j&]ۜ@rp6SzVZIvvjf%4% پC$˻sTLĦ, JbR چIv#'WƭC$˻sf‰R ƺoƄOa"KC$˻ssUL@ٽ3X2L8+4܆*,2dP2 хҪEaayC%eݹ@RoMEk%)Оi5Icdwnq+6U4,U"Iv!t.Iv 22L9NireE1}uFK# /IyFAЎVQ1)#g}^Iwv#4qToW%IvrL=E . 攑ѕqElrSUsi.lsP2VhT]86fzT]2L8niEүR*|,3v1Lj&]ۜ@+~"]QsfgJu2L8LR0zQQ|mHeԒ桒eݹ)#*\93#Iwv++~>8ٙzڒT]2L8;4)޶1)fecG5 ."C4V* .YeJ:QԒ桒eݤ( &(\D8,,$- D3%AĦO7Q!G2™&]ݞQ"Iwv#9\aH.O2L8fhjq %QЍ_3 *MIwvfR1p"}qO yM6Q 2L8/4>f%3x$X%I*.D!j/sP2f."_ @ҢPbS'aQ#dwnq"Y&]ݞQ"IwvsJHhʸĦ/QC$˻HP@LPq|*XXH"[JgdJECLn=C D?eݹāY&]ݞQ"IwvKJA(l,3)TvDOa"GC$˻sR:2Qug#4SO N~QU_J"H&{ D0)8P2f."_ @ҢPbS'aQ#dwnq '$˻j$P2 EDcJ-|)j&]@҂bCRA@TC;"T*Jdq5j$q} .$e5(dwwnq\TғQZygAWyC#eݤ( &(\D8,,$- D3%AĦO7Q!G2f."_ @ҢPbS'a2L8 .aC$˻s22L8D9EђϦ>58y`R$q2L ¥儂%P4!* %2y 58>Ivwv{ D&]ۜՑ=mQЎ}*;5 . FiA1B!`ya l T *!dJECLn=C D?eݹY&]ݞQ"Iwv8hE u$O7Q D>Iwv#4qTIwv#4qTI#e5dwnqNIwgHeݹ!QQwv+c;Aٸ`R$LH)X&]ۜ9٪,-R&^ǰC%eݹ ͤWgmW|k EhG/%T_*U& dԬ%b vn=,} .q,H~99*SAliJeM)/[dj!H2sA ﮨǓǰC%LmmmmmlٽXIvdwv{ D&]ۜ^h<7R!(mJhn=-ehfᨒ D>Iwv8 ,1|M]3SX(mJhn=-ehfᨒ D>Iwv#4qT)L\n$)X&]@҂bCRA@TCȕc<{ DC$˻se5(dwwnsA! P4aBy`R$Iww٢o_^O7 DR$eݹ)"P ,U4J.-P$ۏa"KC$˻HP@LPq|*XXH"[Jb9PbS'aQ#dwnq"9&]ݞQ"Iwv9l""g`xn}qO(}(O4`P%eݤ( &(\D8,,$- D1Phv1)ǰHa2L8\.aC$˻sW4Xn=,.mtH<5AH2f."_ @ҢD4T;j$0H&]@҂bCRA@TCȕc<{ D?e2L=A .pfIwgHeݹsKIgǰC%fmmmmmf}BR<5AH24ړzT 9&]@҂bCRA@TCdJECLn=C D?eݹwv{ D&]ۜ♠ ZKIv#e5(dwwns7hD8ﮬ-7҄q5K$˻l5FNIvrL=E .q\IK^oQa3"dsP2J靌a:*;5 . FiA1B!`ya l T *!2%AĦO7Q!G2@VIwgHeݹXlv* .Ye(/Jz1}#OaBX&]@҂bCRA@TCdJECLn=C D?eݤ( &(\D8,,$- D0fD4T;j$1} - K$˳j$2.aC$˻sC4|ǰC%eݤ( &(\D8,,$- D1,Phv1)ǰHa2L8L.aC$˻sG4MZ30J8Dhq\TQC$˻sTa\MHs9LsP2f."_ @ҢD4T;j$0H&]@҂bCRA@TCȕc<{ D?e9&]Q Ivwv{ D&]ۜ)^oQabNǰC%eݤ( &(\D8,,$- D0'"T*Jdq5j$q} . FiA1B!`ya l T *!9PbS'a2L ¥儂%ya"TGiFSp@ 9@fB^1&iFS4 G?f 7hdnse5dwnse5(dwwnqnhEHV3JyZIwv)&ޭu`mGko=O7Q D>IwvviEүDn=,} . iie!QPgV߀z=P n=,} . W4ECo_J垺:6q5IcdwwnqvhYgά zA6j!H2.(+3fgNFfş=#(ǰC%eݹHf^1,rr35 6,1GԞn=,} ."G53x'a"KC$ͶmkHP@<8K 0<8Kj$0H&]ۜ@7$˻j$P2(U=,} . Qs^O7$˻j!dwwwnsX Edwwwnsf$,2L9sEB C$ͶmkH*XXH"[ n>Iwv%Qs΋RUrL=Iwwv9٢bC$˻sC4Th4@P2($XiqB .pfiA"  j&mm]@RALT&((U&]ۜ@ 1ZK?O4`R$2L8+4bϞZK>Oa"KC$˻s3U]3rY7iU}N/Xi5Icdwwnpa,YOa"Kdww{m'U*y&]ᨒC$˻shhz9dwwwnsf$-Iwwv8hC5 6mm Fh`ya l&((U&]f:lY1WŠpA!H2Nh|jQW=-ehTᨒ DIwwxj$2;4< P2DH"Ydwwwns抄Immwv#4T+&XڑNo8P2sE%UJU3jNo_J . -9(R(dwnqY"tk=Eeݹ9&QcjEdwnqVjTNF6dچIv(>uLm8P2NjT2qC$˻sYBIvS5c&0Y8gѨdwnql AtfUC$˻s+aH._P.2L8٦K=dwnqiB)5|(چIv1%) ." (E8g ."C6/ &rp6ZIv#7ӄjQW ."7*M&rS|چIv%ޥ^UEY,mH .$vMUj&mmZ@҂XTIwv8 -%O4`R$rLPty<Ѩ DIww٠;FH)-fmmݤ( X%K K`⥊ XĦO7Q!G29&]ݞQ"IwvU]3rY릠; 5dQ D>IwvU]3rY림L%8Ui%O7`R$q2Lmm`ya lTR<8Kj$0H&]ۜnIwgHeݹNhB3Ѝ_3 *n<5Hdwwnp`3.(@Iv 22L8fiw ? 0aԀyImmv#4y`p,,$-*\4C c<{ DC$ͶmkHP@<8K K.!Ln=C3m FiA,*XXH"[/K `qLn=e<}`8 v`iA5W37%M2ab86iFSC$Ͷs/maC$˽sjB-22Lg9Uz:8fԄI:8# Q D>Iw{l8jЙœ6"O(pjU NǰC%e9#6t&qdͩ6t&q9P2mfQSg4V]':qx*_3dv5|ް桒e9%iEMLґYw̞^!Ve9檽 Y3jB$򲉈N[a"KC$˻s Uz:8fԄIt2ӄaVj!H2mU^΄,!yUlL °e9sM(R+.ʯD՛ԫzR-ǰC%e9M(R+.;JxEHeҭC$˻siEMLґYw̞(U*EC/,PP< *2Lg9MT)|21ws[a"KC$˻sS4Ҋ8"<p•}*{ D0)X&]sM(R+./2μξn=,} .q\@f˾d Eޫ0a"KC$˻s͡3I7kc;a"KC$˻s;6o17j898OyiØ7Q D>Iw{l#4#K Ka<8Kj$0H&^Z@҂b" ,,$-a0y`p1)ǰHa2Lg9ijJƯ"gZQ'e5dwsmHEdwsfQSg4V]j&]9TUdws3dЙŚI{l8lQeQdws9MCVP2md&$2Lg9&5 .p$]y*.P2mYMUג5 .pnlUzVfͨdwsMUY36e9)$\* .r9N/JSj&]sddچI{l8É7W%: . MEUyʵ . C6΄'­C$˽s͡3Xj&]@36΄'3j&]@m M82Lg8'6΄&Ve9Y6t&q3/P2m:8Գuj&]@ ͡3Aa!J . fЙ . CgBgVF¢S/%QQve96t&q7Y,e9 f}JJ& edwqsk5#A:W . W4'U*2Lg8;6Ru:-A5 ."VG΋PfC$˽sTX"*2Lg8t2ӄaVe9C3d ."K5U蚳zz/QcjEdw3J @8TIv8$^1&j$B%eݹ5WLIIcdwns&Qua D>Iv8 ͢jYIcdwnssdҳ6fmǰH"KC$˻s ͢jJٙQ",} .qL&iW͸Icdwns͒q}BRq5!H2͒qn=D)X&]ۜvj&ޥ^{ DR$2L8T8q5U*{ DR$2L8 :8# Q",} . G6΄'!` UIcdwnq:8ŨdwnqY6t&q7ƢPq5!H2:8҅ZIvfЙ̾ǰH"KC$˻shlLf_R ոIcdwnq'6΄'E V*{ DR$2L8CgBg{ DR$2L8nm MY7 L\YEEۏa D>IvЙdۏa D>Iv)e)(j$B%eݹͬԍ^{ DR$2L8\/Tq5!H2UILh{ DR$2L8iY:-A7Q",} ."C5SP]`q5!H2$sMN[a D>Iv ͒o|j{ DR$2L8,WjUEj$B%eݤ( &"*RAب,¥ %2y C%i3J @8T5әgCš4ϰhpɄ  & *Y1@mmmmmmgP)Lrk#jV 8WNKmmmmmmmmmmmmmf}HdpPjGcG \Eq ]}85Zi>mmmmmmmmmlϰhpɄ  &T)mmmmmmmmmmmmmmmmm>.$ $4pydC>5 hS)ڕ.2jUc2;3ρD 4s%5GQQu \*}^)Tz_1ϠWQXqɽ9CX3*a*EBr8gH}wҳzEJpQziϳ>($ÀLqRT_N})TT"b؋Ef| 1wzٟf|*'0\+GΘYZl^MV/ e^ XJ:ShQUC~YZl,3pj! &uw⒍f(T⒙ٟf| L \H@H92LP4;30$a!lqEE2Us=|j=x Qv|>^G/a&lu !dAHb$ SPҀ 09EHgD.by=Fggعՠmԁ4V]gg6fN|kB{mE}N4'p^xN(T|)V#m=s:rґYw͝d`8gjY\OPUԁ °moO "hFᡨ("J*("f<' KggزOhL]3RF98W}MIfv}fdƴ'Ԫ;LrYoRFߤqRYmm99xE VYhP 4>jV0zC;>S 1U*vєsp B9MboIҪ.v0 fRTH3m9`,hvJSq~v TͶgjY _9m8W T3mAYCo'_4AW5ϱI7(\m5%H\*>cUMEk3'M5=}gm(\Mgr>b1 &T]s\*Gb `0am5,Ѯ'.$](\*>cUMEkGT)%;`RԬe]gjYv|1*c-Ҫ."gT)# )7J-f<' >by=YMUүt| ϰdrqYGhϰl̝6քxRF51*jR9s+YE}gm(boIҪ.v&iW:>cUf%=Gb B8m1*ׅ*͖6@a™zRja| f,%|Ԭ<`|N"14฿;j|YR9IզGb cx]|D 3mA-(}.#&͇ZE,R,>ggoәM3@U&3fR+a$DQ.h   I;II;I"$DQ. >Bo9*1T^5ԁ4V]gef(5!@v|ЦPÒ^ &ƺT]}uM?Pfyv/EMxE:\WP8'9OǬ:䙶ms1画,@ʚ|YTԳRTK27 S4)UEzQ4AU5lMK4 *%MWPÒ^ BMBa%#! 1Ua9cͶzdw;JҪ.Cc-Ҫ."g$|&3J،'9LsYTԳCE:&u$b%&Ҫ.9(l+0ϊzUүTتx0h Q0aL)5pZʯJٙ'f;95Ԫy6;\` Y20`UzUJXXTyR‚m0 Fh !1@ *쩧śmٶ$|&3J،'9OBCUt#J[)0o& ?--yjiGRUF2ҳ6flnͶP)L\qIQYu%Oz:Q4(uz$DQ.Ͷo ?*+3fgR8YHHh@8 !m ғWL͙Q<qh:SUep f," D6mcvg`<fmM>,meW;Jij+X =m mׁfUzUJ3qa!D  *pZU^Rn@&(y`F=mSO6m\*Gb `0m1mٶUJ*i+#QVʮ#iYmٶ1; UzUJ3pbbxͶśmcAGUƴv^\Ӌ)WWYNo_JVGQm@4฿xͶj|YmT԰9H.+#!9UY3<7(fm<' ( fm1m| ^1Q6mڕ\*Gb gGmݛm`\*SFU;&P.1_MCR:YmR8qhf]qmvmQMxRƪ+3ffTO*"bEDͶjVGUs1*3mAj.ęݛm(iP]f͙dpfvmҪU8DD2k*+3ffTOfo9PRUۀNTpY8-fhͶjҪU3[=mSO6m\*Gb `0m1m򋯖^+H;mĀNm'C؀(0 $@Kb. m6mH'm;eW;JcAʯƣ]YXqɽ88-| L \H@H90iPɊf|(jЦR9C+T]qe|ԫ'%dvgٟ2iD KRj8}UUx>5)Tz_1ϠWQʮ8ޜP 83*a*EBr8gH}A . `󊕄vL"\%. C3di3Q<!&Z>tJ b2jxVC,tUJQҞgB*J aa&Qa5M=ck5 Bx4G3haBAɕ,bٟ A͈ @q6qEE2Us=|j=UՑRW;JcAʯƣ]YXqɽ81s&T0(s&N`# C LL%ggĄ1'\ro iU]JQVp9\bS4}Vv;>Ŕ6{@fYb6nQ ¸jK33'M5=T`7㕒'#z6#϶ml SJ(eBPg1qRq .hOmJSЦpJ59l'(|jOhFQu30v*)޳3mU*vϜ0im `; T`;ifm5,R l5fmpm0v}(ma͝bVƪLgRbґYw͝`ٙ:m e];8Оl y8WSYϱXBrƤjJEe6vZQҌ#Y6Ꚗh:du f*/p"eg\ a3D4<;?v|&9: 5Rc8 (fvE`hDhD B$ƄE3⴪†3Ɣ˾l9F1XϩYʮTOB9U( R]|v+`5#hʸYC;;ѡJ,(&,f,* x`e+#-ZeWVF*'=g@&n Uudmb{cx]|D 0\HT i6q4Ee4fr:s(ޢ98Rgb399`/Yuu, v\_TͶoIJTmf399`/Yuu, ͶafT쿖dlڑ[(eHG)ﮩõ{췪jY SLdlڑX6.fr:s S.$*k,ع4 L8Am0 3UԬ"gOm0DŽ\mH$A[m$ ;m  ؋6m m, m6Us9|j9UՑ+(hDx 3 (\4aBAɃJLP4;mmmmmmm5 hS)ڕ.2jUc2;mmmmf}mmmmmmmmmٟb8385\0j0cP"R\DW_NMVo0l϶mmmmmmmmm3 (\4aBAɕ,bmmmmmmm>mmmmmmmmmlσ)  & *Y1@υ BG(v6`3/z伌3QM(d jMQT]C/W;JcAƣ]YX|*Us9|j9UՑ+(5 8gٟAWƏ[W /LΣ:F0x4G3ϊ )p0SƯT%Ӵ_Ja5pv"(q/&L]|gٟ >q6 .VpV[U ´zcV>ZUyPߦVpV[ 0C i]YpJ58pvgٟDSLdS `?6IPB⊋eiW{=Uz#kQv|>^G*6e2: 1ai@YRlN"$3``?ϕL@΢WVF g,Qk6v}Z1HJEe6v}fdƴ'є^ϱwB{m'\Mgr>b1 &3+)|;k GJ0fgjY\OPUԁ °mp%YCo' &aH.)#f+;>2tZjUJ }N9Y,br7#o8XJ,mmϜ Ϝ}<' 0(/m 9m$vm`Dd"ͶlCml vm`fʮv|>^G*6VQ1 (!ЈzgĄ,hvg†M e#;YRUE_Jlrr^FGf}(s&N`&*.z_1WQꮬ>rGUUx>5ÎYD @p$q3>B 4zEJpQz`>u19f|PH K>5|a("SE%38 @5ux5Zb0>TOHaƸV1wҳzؼ 0^8RtТʇf7ҳzXg BMSOX%EkP %3><"@reK"hvgE ړTyP=UүzWVF9J\*}*UudmabbGP๓J*lp\ɥ$ =N `I0H)gg± VQ1:+Jz]Y[ح'T򲉈Vp9Vv;>Ŕ6{J0fϱs@U&31Q|iHϰl̝6ք2.hOm+PSgجF!9DR{B5|tq";?ba(FylMK4k2j3y8V2mpv}(m)޳;>$lܣqԖgg6fN|kB{mJSzo+%NF$mG5+ E>s7C8/>sҊ~С< i|Ԭ%aH.v}gmcRT4)(g\Mgr>b1 &T]s a3 Awj}]JSfTdfejUJ0im3t2 EmiU*v./xj|YlMK4zk3t2m<' ᴪ;Fm0v|"Yc;>}NiZ1qJg`@4P I;II;I"Lh@4P c;>27YLeD. h}v|v|)5hFΜ5%"4xU;+5iF G1 G51*2M\2#k^ X AaLfya7b gaXJ4gd҃4tʮTOxz`137!eEFr#kgƳ'#z1_Lb 1_L ʮjsD0:d &aH.rLeEFr#kcp(C画AWѬgg†G]Ɣ~{㕛ԫWLBo왼cRc(]YXz#k^FA cRc(]YXz#k- ^FA cpsP %m A[mHl@  %mbm`Q"[m0ʮv|>^GN>5@P`&<Ҋ8MmH%4*mc3Ә3J6m7% mj~dC˕(($\meWR̡Ë>5PUs9|j:u{^GNc;mAD'mH)mP`,H,\mmmDmb$Us9|j:ux60ǚQSg8x“iEM+m`H(0ANl@  %mbm`Q"[m؈+eW;JcAʯƣWC J*lX=T|4rTK)1TX@m$H #`H(؀(0 $@Kb. m6mDmVʮv|>^G/aԀx{ i䩈000 mP vl bX,0Xf\mmmDm`[*UUx>5áƲ{Л6mJ/iUfmg#03PfymlnK?0, fm8 ȇ*PPHfmʮ)CB|k)iWs9Ur#k1UG,6mm _< ӔͶmGN`f*lmܖ~`X$Ͷm2q.Tp Ͷm]JS2.2"0SAUүrWVFcP" m Vm @Qa6"ͶlCml $KmiWs9Ur#kQp8{у}XM%F( Hm$DKmP vl@  ؋6m m(-lD UүrWVFH画L{ i䩀}UJ ` ^mvm Vmmvmmgmm6l vm nmnm D vlI;m$ ;m$vm$@ A ;mS AD'mP`)mDvl @'mYliWs9Ut& dUs9|j:uxVQ1 *_1ϠWQӫәUүr5@UW;JcAʯƣzs6UUx>5ÎMUs9|j9UՑ+(UүrWVFv*& dUs9|j:uxDa2UUx>5:rv|>^GNHv|>^G/aԀx iWs9Ur#kFc *_1ϠWQʮ9EUW;JcAʯƣ]YXu  kA םa םabm./usr/esAA kA םa םabm./usr/es/admAA kꦮA םa םabm./usr/lpp/cluster.es.client/inst_root/var/hacmpAA k;A םa םabm./usr/lpp/cluster.es.client/inst_root/var/hacmp/logAA kA םa םabm./usr/es/sbinteAA kKA םa םabm./usr/es/sbin/clusterliAA lBnV&םa՝a֝a&H bm./usr/es/sbin/cluster/clinfonst#2: : ,1238;_aceirst046=@A`dflnopu(-./579CDEHIKLNPRTbghm| !%*?WZ[jqz~'JQ]^{d'by@T D,0(ig@%?͠wQ9;wc? vxS8; F Gxu/`,wg,b?Rszw`!uK%Q=?L@Nn0i`:8VZ3R:'e?'vxoz#hADa& 1)^y; 5a؀]bln(` G`)X?ۯ>" Kobly)u/0I*ZkƲ'n#;7Ծ$gERPx.C;"h|#^">g/OaSdZ; Mo^obdV7aSd 4v X#q1Z+󰩲 ; Moߦ<ŋȬo¦6h @.6Ga+yLy͑XߝMl,؀]blz!v9A3v|1AͿ%g4*]L2GKvDֈg6&ׯiCd;7mdҪU"d]xylOe; ؁R?ٻN;"haZKDr ]h/B&^Ky@p[ʼn7ǚgǘcai8݊m)~ X#?8~؛#N_͉8 nh؛#/K O_X#>~u;޽~D%Xr=lgfk Qj]VDl쉢 ן3D7|Sh Mߦ<މ>u~w荛d~_JzB[ ٻ}nN`V iOHVÑd;7lgD3&' |B(r=lgf:͟ٻN1K§/<̏dv ~-Tyl|#Sh¦&v wk1lOe; ؁R?M) aSd;;G皣@v6A3+^y>M) aSd;;Ggɲ;?a*lgbHV&Z #YDi <FLJҺr|GV|Btv t &ty>KaVXbܿp)6G>Kaɾ!-C/ɀ?]6A\ Tk"g-Pn֦ITM?dMCu8\~s )~5H%җ dMbfvnSgU]3-$di1ddMC3r ]hz#cs MȂڨ8UjOL 쉢x.C>g//l@z쉲 B)Tk=qQSuS@1IC쉢vBgAFLJ' /DbO"8=1(LAK2OVl?ڈ'a4@=bl`!=8;ğm s}ȇ++K씔؛#\06F_,g6A]g+HfvnSi.&UB+$eGdMC0DK>g"֏Dlya,MK> s6,J}._d{21\Pil/x Ln%Kd{䩏3%o a7ae &񍝑6r`ViFe%,6vD K!OI!~˧a`2񍝑6L 0E&lxEX#/z6/Cdȿ y?_oؖȇe)/l[deB&e;"l/ ?_o/ ?u2b{desaɼcgdA {m>-\\ %1 Ȇ_Bdi} ,I>@_,g9;"lNz"Z%!ٻNhWS42Pzdd:쉢x.C>g/>/cD%/k{ME,6F_,g/;"lJgf:L%uS\ 4FDOYWAU4AVϙȃuDlx}. /(P\t a`wKc(bOKx<ǁ'm KV/қ7QxX<"{`}21"+`""B0+LFlN;@Fw0!{fSodb)3uK#eO& @̢O,6`7}\q SaqY_H0OM}.[dmϰ ,xQbvۺk- lK'lKaKd[0ymadb)3u;&$c :vx0#;.v .['.0c`}mlܱG5(%6[%x;m5.[av|Hq906F})mO8_Rوq&ӨOmB]Dϔy~QKP_!3H)RV1ȒğX9~ &ϥ"KdII[Ǜ/"KT|I=X. s^ X#ʁ+S̈dE*؛#%o5($pو'4/6FGğmԿemY7xmϰ `D@ X^vFxQnDa$ZI͘lA9~MQ'D7/%>E/"/T K){&<%"/yV@@$B)P G= D ,^lvR M6ɍrV&0o;{%";y.w3S̾ %1A9Edi|I ҃DHK dq' JDvz0y˝)O}"إb )6FJߥ< " a`B"- =0E&lAKf!YNlu1C%"-/dq'EdE@KdvL/l'IM>Q'Ac$G'dMb'=_hz@J=-HV§SX/yTI2jh8AƆvD;!ZCKDr ]hz#cЉDa$V@OVl?ۈ'6 ua,2Ҙᭉ8$OVl?D Չ4> e1 &_+OVl?r@u2Ҙ$Չ8$¤fCON@6FG 6 Cbl %+6bQ;=4> e1I+dqXI/΀Y?Y :Sbl:iLmg6Gu8OVl?' :&6FG 6%6&_'+6bDdi|@Jch&6Gu+6b&Ө6dqXI/f! C/qu4> e1 dqXI/fCuN@#8]bl:iLme&_fC7' 6&NӃm)l쉲 B)hzBgf:ƶ}.Sd:Ț d+Ha؉h-'A๊sLB&<>{"IVMdؿ ,J}+#%d{քVReC:iù';9lgaJ)$zeC:hnw3g-L"t@!x$'<@ n&M4$(}a#74؛#>-\ lynlܲ\VCbrt lϥd6VCk->Qk ɼX#>hY+&V/dtun&M/dg@dVlMߥ<a$0و u1 @Z$_,(>+%dC ɼ,MQǿa#Ydx*(K^'+6bDbzu1 E'H/2=[ Lyr:N}aw=y~/frJgmrrYN_Xn&zɼVS+)<<|`d_&Ө gǿ`;@LvchC 7{& MyGg/lnlܲ\VT,ϥeE/%Lzv&Ө ߰I p& mdKLJzq0Go//d\mvvۺ[7,->rq1-y+'6 Oy~7==a#7/frJ͇mrrYT_Xn7Jʫ%eU/Ka#7x& Q$$ p' &6?L/oO Ƀ ^ȸ M}ab$1!pLVE dq'Ac,ò&1 I= Z%g+HfvnS@?'pFZjIJDW< 44;"h!b%Xv@J$r$3FcЉ. ˂lIR";ˈϥ.J\,>X҆#C+-yv})r@JZ%XJو.~eֱ>d3KDq'’u7ԧcaiXG1 Bdq'1 @ O|<@i|L|O4L,|Jy2 P&Gأ[ e(t& >^&)Kai`}M"@X#>ɍbMbl$){ UblR+%."%ooDd=/R(R1<e. Xy>QJ\,^\Lm{č(q}@؛#:ԧ- &KuRF?,6%!M$]3t& }Кğl4 ,M|I𴽰4 ,M00}'Ā=6G0}'ťeblq0ɽ)$Dؓ{b@؛#yJy{`h&6F~KjcUǛǙ%Y_&ϥ.,ymЙ>1/>1Jݓ{cWadm1PؿܰL?o>161 $Pv^ڥ/ DY^Mߦ_h @dfǠV .w(&#dN(N#BgV&onY*lJ$}(bCV PCQM}(bCV i{c~sNyRoa=D.Y'ҞdGbqZTboClG;@+ҞdGbd)Rيϥ D{%.ɛϥ D#PGGah / D}CC@O.J\nSdvJ\ofK ,o@ e6!'+6b()6/Չ4>$chi<5/ȐP?쀨3Oݒ'o71@ %l͘t@\%:6&ӨI|Il1/mC% FM}(b7P12P1&(CCVJym6J/d/dJ(bv~ 'q'D@l1;yBc% Nn)O6=oxbx+`LGdǛJ/naC&*A1IF0@ U\@dOa-ϰ6ܹڀȞt~b$'j /ؓi( nI1T,l7@$Y7"*˝̄x0#>P*^sBu*dPU*<@ynb"O҆*1Ua}`wKfsaݓ}Gs:/7C}@B1 A*B onDA8" 6lJmCVJ>ymIP=ae{Å( -oxbt6J/nO*dPU7ؼ1Tvۺe%-^nSb'Ağdc`6r!!f!+w{$`ebl% 1bR%@^mǙ8l^]X26bv&9sI|Vl PZc̈ȋTI4@chMIb 46PvL!~ ~J%KLF|}e,LKJ\?yLy@.ğQ) !Xnɽ1!,Av?6(7Aelz`؛L$#dYv<%Bw3i2""/J^aBym$}(bCV CFn^$+6~0!6G1 >`Ө?M/ UΓߥC2I~1@\(%/P,MQ'1l1U'҆*1Ua}`wMc}ȇ!f!+w{"GblCvD!qp{-ADQhzBgfL?4RЯȚ d+HgAFLJ63∁ȡ1$I,Ac8쉲 Bi *u5ReG1lOe; ؁R?4Aֈss%l_O?4)T.X7;"l43w Mf?hq$#I &ֈg{%MApTm0S;7Զl,8XDCBʋC쉢vB|D Dl\s0L2",M.sd eOS=7K&-ᝉ;12&-M[&:_Im/3ț .HV§SX,pThuc*O$End:쉢x.C>g/>.7oyLyk%R(a!*jS̖qSR"M.7E0#)M.7x#kdo7mO2[%L9~ H&z_Kׯky6A>MUXe3쉲 B)Tk6 dURHTSԩeU>Nψ|":<>!:=̺ >ɝ"OҺ[ge8t% MSKf+!B_؛#>%thv"V1 +tJkJw)!Se6Ybl$}.];6 [ǙKؓ~ubl]7ߥ<%tw)B)~ ;0chQ$B(.Z_8؛#oO?w0@(+BQ/2dΧ= Z%g+HfvnSld uI!Q|8&]h}.7\odۋfcS/,]3w Kf?ł $Xu$в쉢vBgADl$LVHO2 sϗ4\E> $.+<[bl$!7X{=1Gda!sB6adJߥ s|bgϥdH>ҲZz0J|Vy~,Mğd=aC 41 ?{B*JyOVKh bl$_2$'1 +Br(җ&ODRĿK2@r_G+)^oҞa6Z(@e+`PC<Ҟa{+!>ud+6 ؛#=액]Ǜؽ]X\AC" H9~a=( п`lM+B:V7O2X{+!>ud+6Z,MĞKF]|G@LK ~Tz8@?JЮ#܊`w'+B`PD)~%;%hW<1BTo_VKZ.6G6??73+%hW`:g`PD6Gd 6qed'f~MĞKlR NMJMVKiՉ;%d&ߥ<ܰݜX#Vv36^chğY $+%Y_8!6G/2dgOHG%Y TJ 3ag".éUPZ2Xq$EneGdMC0DK>g"֟H=~Dϥ8~ebz|4>6\{`:LS ȬZ36G͐~cbz|_Oh,ؿad\6 @]bl:?\n_ȁ<1B2Fv&ϥK_AI]-ج1@x]-^nRqY.= o`PEcANublqS< K{%DZM,lMO0d w2@N"͉;%DZ)<@N# M.=LDI~ U;%DZ)E8_@blq@/`B=9~ &a pM.=L HK4&_l>>Q~=?( ڮɾɂa">P Y.=1I)]->$˘.=/3ț .֞g+HfvnQ*kmiG_I5rHT_)lF;"h!b%Xv@J>g"8@=]9>^%uU9y;؉[ǘyXRf؛#WUW2]1G,IM;%tɽ)+1/0E/F1 ?#'bJ_ lMA7ӄ_;`F|lӓ@p_,eѹdΚ-DKD3;76?^pʅs!Q|8QvB Dl$K/5KeeK.]-KLBF :$#͠T}bd]-KL萌{6=QKmt/ğd@zB̢fvnSle$*/su cI;"h!b%Y9x.)荟KM> b) %m`@w3O2"KܿhcSq艏/SVi0ER+/@&Czpwsb3qICd)O'ppُl_O%M}.?~?%")C /poyd=1`G. _O>.E6}d|{>!b~%M}.?~?>v%M}.?\5I7?KK7. dz{#\fädv/'_%o/i66F~#~?>N#~?\fG. d\.?mqSlKK7UXğ;T}>ؿğdL~)B)~U;6X0ch%ǃ3J쉲 BC=-HV§SX #l[9さ?dMC3r ]hz#g'G mI[ǚ%l_!.-d͋Q0jd͋Q0@9~[C KYs kbCl9~>qd١ Tkm T.:Z3-BKg7\p2̶+쉢x.@>gK/5'\I]-l_vۺ[16/X@"iEDȰ? SdX>Kd[BAnvD!vhgf:?ن*-EsQUrHT_)lT#Es?dMC3r ]hz#g'G idV1=\Rrch 9~  ms: kb>! 9~ $6/X"kbaI|B+A$ 9~! ch%l_1KAc8쉲 Bi *u5ge (I -qʃBZMvD;!ZC>g"ֈ6|}.r|T|@֟vKJߦ<]i+~9\RmX.sbU'\A ) 6,l9~ f6,1\NXUlϥ.JyhL/3ț .HV§SXpPqZQUrHT_)lT (o&! 9x.@=sucB6/D—Lm02\6.sbTA )t3;%l_D’VGf6 .sbU lB#Dd͋F6 .sbU mCdAfY.sbU mCȍ m9l9~!"dGf66/X@:x<1 ߲\@$}.t/9>_> kON[%ؿtc%l_DҋD5],SlK]-wMe X7;"l43w Mf UQ9W$EneA1j'6Ț d+HgAFϏOꏈؓSr%֒1sm6/D—Lm\T^ch,9~ chk%l_D’T ms kb 16/!Œ6/X@[`2C%l_?l"kl&፠z./3ț .HV§SXlC*KK UQ<[9さ UQ?Di <ZFϏ|@3,#fpdbAy;؉[ȓ[%;ERw0&#lLyY. b);';+vb;dRcG\C;r+XH\ rn&b_0E/6GdX>Kdb(yNvMO-. x&/achPycBXț .+HfvnSdNBd3ފL[9さ7ފuTWHkAȿ<Z!KB)T[6YaʅS!Q|8;"h!3D 1Mt[d͋4L2KJKdv/<ȋI5;6dX'lKdJߥ< dMbf+HfvnSea5G+qX$*/su!dMC0DK>g"G 6|}+#ğϥ6^R6r_.h_6&ϥ̋ 'Y4/+%lAbȿ?~ lKb gbO}+&MOl-o%oҞZlGJ2gC Y+#X/O`DSM,Jk2Ac,6A\s,i *u54$hVq%k$VI -qo]h}.7>_KAb6;؋B)T[6Ue8*$*/su W x.~z#gDLJ,z Y.<aJߦ<,_bOG.\q󳹝Lyt])b>>Kd[<̬_bO>vVK,_DcȃϏKStz}.[dm#_HXmNgf:DpJ`\%RI!Q|8|cCIȚ d+Ha؉h|D H=~v|@?KX;v<ϗ[%͉[ǘ>˥%ol](lRv3a0\sKsq/Nǎgs;v;,2Ҷs(YyJlDLzJ,br ̢f "Dzbda8*e.lJߦ<˥%o9쉲 B9hzBgf:ƛgaG+r JqT[9ぐj쉢x.@>gK/Y.sdt/lQ;Db>Q~sހ _,g6A]ٻNilY2夶su%RU$End&!n}.r|Ud͓hؿ9F`R;>Q~sހТ" dMbfvnSgITndSR U_dMC0DKADr ]hFϏgЉ`2t vz;]){ru9zsN{> s@]0F%ҟ(Ac9ds' D,i *u5g '!Q|8MD\]JUZ|";Y 6eӰl.vlR]-Nl4Kc Ibl$}.}|D +6m /2쉲 BM §SY3uH\h_D &쉢x. .ϥt{>26;`6L)]T}.6Xb*[dq't, eYchM%]6A\顝Tk2&;ѝG, di44A8@>eѹ/uQէ#f];lɝE+@tKlV; [bl$}.}|D +6mPQ/2쉲 BM §SY3D3CP74A8@>eѹ/uQէ#f];lɝE+@tKlV;),Mğϥoofэ Ac.ț .t*u5?8<Z!K6^_"iL§Rٲ̐z̖KYɜS!Q|8Ț D3rq{bh 2Ac9ydS;7lY(SZ%j:y~l#,F"tpӁt 7@9{AΚ(t N.nr zfy&?g"8R~ gr93#;2Q,Ч93#;2Q,9VP 8xpDVs8fFvdXr9)F 9F)1ЎL2a=Ȇg$aPt5+A(npa+A)nph Б3L@= npӵ@v3^3<N/npcl6mhL.O=U2y&Z #Z~|#Sh¦&v wk06G`2ML@)מ`6G`2ML@)מ`6G`2ML@)מblOe; ؁R?RO|˧'#lˬgCl.t? )r؄8,Cؽѹz :wD: Hv;OdqJVb]8^odA쁺6{9ORb24O.u8r=lgf̉ČQ2%ҲEkJHCz͢l 嶡vژ/L 1b``6^ |~ɚ]ǘ=/x L< v^ E&iwS`݀F`6@A;/ /(Cfu1d d.`id.`̀T_fu08̘mCdlc("m}3;7A}3;7@TMQ~gC3wMUҮe0|#Sh¦&v wG;iAиs+:hlOǘzoxO3Hd3bH`)!QAdhFhO1X3 tTir/cBhr%Ð8LyhIAN5NnF;b΀9 cFl7bϴG> ci "C#B0@=Jyh44Tir/S} @vƑ!r<$!(FcB1!Q,9 ǖLX; v ۛAP7&SD;7Kq=U44AVñ,; Z%')1{)>g"ֈٶSy~6&oceKsA1Л^.dQhzBgf%ezo4;oEvͅCdm kgabȶ)&! v"Z%d D;m>g"ֈ O28DO_Rp0@U4dq' h mboҞ`+6l7rC$&-$_ 菼ߥS^_ȼ+5i/Y6F~W{m^.dqzo4GOHG%Y x"$|ژВcmXziTydv ~-Ty$&Z #ZI>M) aSd;;G瘔|#Sh¦&v wk1,6G`2ML@)b[hB6o;hR<ŌPimv Х104L 8i';7bOgf)u/؞oDi ;-ϙȃpQ>=@}+C0> 4}}Z6;9 OҴY+Li=Jyf }+I^IG+CVy[%<ӶJqOMm*B#",IO.'Dhoa hy0؛##ylIG.Zvڔ K;)])0؛#?5K1Z/yJ vJ}>>QJ}2#Tch8[dgҴY+A+~Zz3H~ i'eY-/Ӂ]9ӨdSiLmP=6GdlK` 6GdR`I)애m4DvE"-~^_X#])~n6&애ؿXC&1 Zz"Z%!ٻ:GvD;!ZC>g"DFeOx|Bh=>DV,^{>QJ7?OJlJߥ}S͠>Kd7DD@gMK.r~. dvK+%,b P_`abl$_,g6A]zBgfZgz\*ȦRU]2P;"h DDCHXE`)N~%e$}(m 3k%/-;%o(JyDNtl^&ZvJ&['҉(=xi΀+~}dekO1|KK1({cS{m/K͑Jy"L="%o))>~qKlJyb-lJy}dDSYdDSS}Kd+~.[d+~z)r&ȉ[)s+&ȉ[JybO_B)tٲ"VRbH](lSYa+xğd6DJߥ<1K6DJߥ<ފ\ɲ"V),\ɲ"V1)>KlJyb-lJy}dDSYlLybO_q'0쉲 B5vngmH]KUrJE?4AֈssD?K.sbU [a $K])nvD!vhgf?ؚeTs4AֈssD?K.Zmr%l_"kl!u*tK/3ț . SYg)U3&! 9x.CT$1Y{dgҠlz~Wu1 8i~Rb&6,}]4RR@0$*%X/Q}3PJ]-K6K]cS{m/od,C4kdg,`~ȓi\A~!d_ %<ߦrt<܉=K(\Ly,yО?K du5L>(T,Vy;"h 'g1V&ϥ.+ lM.X7;"l43wMgnO\M*Q:N;"h {>4>9>Uqxx}._dy abl]U[J6F?f)>~_,4~!2[bl]-^od2,M7S%BdeՉ4>$G>$_r_ !;&ʼn7T_}2Țu|X|ODK~^_Qbl]U[K/@V~b&Ө/l4~!2@76F}.t72""/#m2\3uK%oҞoY.1؛#/NMQ''>$_sd>uGK>m/̎u*[.mboa-qY`G"~'  \)pؿDϥ/~m`Thl md|SlK._b+;mԩ&Y.K\ɱa+~6/'r%_X<Ňm-%6F}.r>/\Xv۩SYhL/,O{%ӟKY.['Kؿ2;mԩb$.0dvK/"Ac8쉲 B;7{>,O\*]Us% ԬM+,LֈgsmdܕJybO_.7o%oҞeK@Jߥ<\od+vڔ%\odؤLy_'>Q'vm|V|O)>]3wKf?%8uBE4:RPtIT(쉢x.@>gK/5'\I])m$c oaI[ǘzobK.Z~ĞKu/밁"j|v #6F}.t71MKS/3ț . SYg3뒪钅)aԔ+%P쉢vB|D Zz#2,>{e<>;xsI4_I|.}.pxJߥ<1'/d<~Тob>]QK{I2;%yV-/,MObO˦\@f!p)ob̬ܿ_ȥa3x\l3HD!BQyLybO_ğd1'Ac8zvD!v|zBgfZgKS뒪钅)aԔ-"rJE?dMCpϙJ&/?= eKE`)N~%cK%[ǘDdcS}DƖJ&4yJybOmaR6K]+cSdRE.^=fc/2&9;"lLu5L!`z\ȦS)aԕWL-쉢vB|D Zz#2,>{e<>;xsI4_I|.}.pyQ@a1)>{%Kd7#^Ǜi1/RLm@yLybO_$|_ bf)FEdmz|yhO71LIK+%Kbnv; ĿZv\0/LIKS/3dMbgǤ+Hfvne%8(Z:E% GHBdSJé*([vD<Z 3ϥOꏈ$}.\sV1uO70ucWdo71LIOl-yJybOm_d@l5QW[_Gbl]-^ob%җ$_,g6A]ٻ@!ʫW))aԔ+%PȚ d+Ha؉h|D DfCs%I[ǘs@36FJߥ<܉?5COmh3ЈG~s2Ȍm>G~Jyls4v&Ө ǿd_,g6A]g+Hfvni4]h}.r|U>J_"fvnlgp@q=r+Xy%PȚ d+Ha؉h|D Nz#2K'vKo77"O}.1'>abB?(LchbA\!]lK.Z~̎rؗ61[%^oYdWqY. ؿmbKVM7WXOm>s,_Q'>Q'1+6F}.}d+~-=A&6'4C͘~XM>GSlMbl$_/Ϣ/1]-^oa ,@MSiLmMbl$_%ϋ쉲 B~z"Z%!ٻA̪CU )쉢x.~|r}.;\+7 mORQ+.dJߦ<˙O1LIb_E.dchHV&[ȓbi~Q칑+znẻ[J"/`\fJޅ5s"VR1's2V<1'bO친REQ53tq+zneƄ)WE,˚Mf\Е*S{m/n=V<1'ğp \h_6F}.Z=5%oB칩+yJURV)ˍI[ү1'E~ &}E,_`LGb`LF_,g9;"lNgf͖ UBkJ(&! v"Z%d D}I9x.'3!B9! D$BQK̑*Oґ#>>],V'1 %"[ǘBdA0Ly)LS̼"fLr+6b M>GaSA!6G{m/v)tXDЖ'A2)t6?JDOY)Jߦ<ܲR!> Ϭ(7,(£pHwJxȁ|,1 Oϥ"JD^oٗL nchA8L+6bĚCzpwM18dq'HKȓdgґJDD14:de1͘i؛#N D?/dsoө?/m)bl$_6HKȁCsblR HV 4秙A :sfY./.6Fy~_=97`p6؛#=l=lB&itȆch `1/&NӃD?m)lMĞKS/2Dț ."W$-DKD3;7 3-TtuKdSe^rӹ'/ C;7ԶlO\OHꉧN'u͆섳r%^oe5sLrst)?K])/diΓ١[6Yo%aꒃN'쉢vB|D FdX}./I],C/>uVKcWd7%obK]SSS{m/)tYĿh^K.<[%B&"+9\1+]A~к%pph?K/{dq'Ac8쉲 B3;72?ȯ% IT(E4:eUȚ >0Q0{)tX& S_m$}(i?J&[d`es:$cDNtI[dE1Q0{b2ӹa1}6eJ&l^&Zw32Jߥ<Y(iB8zL_1|RLmobibJ="%obE.{6DJbSS/8ȋdMb 3wMf?ȯQTFRJE?(.':^x˧ɲ;?a*lgbHV6G`2ML@)ԂA'hGe)u/bcy-?R_ŘRu94AVñ,; Z%kCmȃsz#2JzxVKϗd|@dzx{.!L|^)pvˆ |^)pvˆ C{.fv^)p-;a |RZvÐ=K'q$>(/X#>!.CmrI+6K@obl)r1$P%d%y~do7l62Y2'a@SibYi ,Me6IKIМ>-\-2A;Kvch06&O_Odm/1FK]+[4V2Y/^. r6!1X#>~%K }.%Y.%O87, d8vb-6!tch0 M`ЎIK;%ĢnV☂vE!~,@Dp)q[dv3HKM/؛#\JDdЮLVV 2p j!&/Łϥ.-|C^Ζ QSibY6&ch 8Y.%Xp?lJ~fL4EfC MuSiLmZ͉8$a8KvM7LyzoD2hch'6$EfC"pO>\KlB&8zu>'9s _,^ɕ A~?lJ~fL6Y+/dsGa(Ҙڰ*6G}{dbK/ŠntKyKflzHNLmX F͘ÛdsGSU&ch8lo@Y.$6> #ğd\H\KoyJy=7"ʟsCو_Kdiß= iτMA 9\ob6DXBK`:6F_,g/;"lJgfL昞O5dMCusqsǘ;?g2ad앿Lyؿğ`6G,I&[dvKO6]-bqiıK\!ù\rilICshXVy~LX#/36A]3wMf?)z䮰&! v"Z%d D[i[ 3Vz#2J!<>9ߟ/>O"OY|{ǙfMğϥǖK?KOKDcpc.SefLybO}.v1f)ɲhbK˳ydzٶbK eيa<#SX)>4:&6kdgK"&6Fh4fL6sBLVl?RpeK" MA7ӄ_m) bl$_`Dٌ eqa~ A97ߦ< K r>m)!e8tVK2[%, f1sb2X#/l4وx?l@`_Ev&>yLybO>.;1 O}.t7l̏B&it@?BdVl?`/6G0u ~K~e>QK~d=1Tm.hchC)6F~d?QR1}VM/̏y艥\І͉9Ө1!F6qm7l1'{%<ߦ<܊\och)qV|Cs@.v~rqyO/қX26v&ܠɱC Hx&#>QK1/!|>r%^oҞdEn.Z~_E;&%<ȋqZD 6F_$ؿJlz`؛L$#ğdrT'cRǘWCğϥt>WCnjk%ؿ21K!K.Z~"/.edbG.d?ͦ!"VëR͏B&it6?朊͘!/dsQ@L~^lD0eST/6F_Gdo6 DޘKb,\rכǙ~Ȋ1f)ɳ"V1{ogvKb~qsb3qdmi!X46`;r%^oّdo6)bJߦ<2ʹ}.^_Eo7O0dl)7"O}+ğϥtdob(~i~Z_`!6FGğϗ/^AVl/ fCgy=r@l_y;Dd}#d[y#@ym7lȋmdǛKd<1+~X4%onY.=y(%nRiOB&itF6d6͘"/bl`!=8;Ҙ) D_/ G2'ț -DKD3;76&gȈ𦚎g7dMCu8$(bl]-I[Ǚb@'tqd١k=1E3̲+7;"h 'G mOl9%oҞbi %ּߥ_]U2T5cm3tKymJybOmeb~eb, iN(Ju/ҝK]ke{%l_;P+4/"Ac8쉲 Bu5lqHoM!*gȚ D3rqrV1q%"yqE6KisX rZV&dMbiLSYB*dK\dMCu9yq~- ,M ț .ҙٻee3̲(T4A֏ϙOgi\{70d cedssH> fobB^ib{.7;P͒&K]-cټPOdԢ%vDK]+jSS{m/mNg/g$|* %k&JB^s>;\{7O-Cdi Nț .әٻiePurU]4+8;"h!3ODfQKl2^Tjf'\rVوK6i\1Y.=d2Ti\y~V&ϥ.2WtylMĞKGv/ǧ4s ϔ%-~@\rNgKߥ<%Ƕ@w0&i\.dJۺUcah? fQ1M16,MĞKJ˙O1LIb_(\|CXT.dvVh}.Z_,-yLyKl(,ZvW#;@F_ 3tKyLgf6X#=mb )3 {%l_;P+4>-\S1}7O-~ PE6Eqd3;72?,SLz;"h!b%Y9x.G1KϥOK7O0_,ߥ_{%B[%Ҽߥzt7k$di|IG.i-oaJchl-ymJyyN KL~_?(JtLB^qe/Od|{)O6\~~ l_' {%Y2^z|*Ad*EvK{Cr]3r%^nRbi~m/ {%M@ s+%&J)~eh~Wbl\sBVbbkdq'll=J)\=m@\rכԧ$_rĹ|L ؊O~qӵCq~s>P\ɒ/ PY.Z~"/,ߦ^I\1|m9d$6ѸX#=3bVM>G~|OmGd}ځYzvD!wahzBgfƐ3U2šĊhU?vD<Z 3ϥOꏈ%Efэu3r%^nRbi\m lBɍ0l}.r@[dvK/3ț . SY{2THd$SB쉢vB|D FeCLG'tKDZN;a ? ӏ=8V o/Ķ>R#cHґґ'yy941U?/".hch,qK8)sB}4>$|2~dJҞb fQKEb @WblR#k%"6%oҞb%̋D&OMm!DqdR"{dgґY)V|CP_36&ϥ" 66KV/"`|;'3H,+>!(/؛#yR#&oY)V|CP_#dgґ'R$ `G>s"V&OHgdMb-=!ZC3wMc- Ȧ9aK쉢x.@>gK 6>Kd[&Ǚ}lAb ~rtMb">Kd[&ԧq'"/3ț . SY1Utʮ3%k$Jtx.@>9/7>Kd[&ǚ[%7ؿ9;m)l@_Kl]-lnRZD. RٲplVJ8;"h!b%Y9x.~z#2\v|;> vA;l.ρl<~;>_Dϔ%2d,<){jSS{m/9=1ݒf6ӨmWԧ$_1^ȦK^ǛKm[%53r%qPTvڔĞKI\wb9Gԧ$_.{"O/K~~tM>Kd[&}.[d s *vڔĞKydir))=͒E5Kd7 OlqIr\vڔĞK%q@2ymJybOmIȋ'dMbiDKD3;74D$ge*$ 颹쉢x.~|r}.;>_;Ly>Kbx|^oҞ2 %vL݃ĹnllY7ؿ;;m-^oҞdED_%v@w33b@3dԨtI[ O1LIOؿ/̬PSl(J~ibmdɒ~;x;m--&gm#]+S̈NlJ~ l_dw' .Kd[&ԧQ'"/3ț . SYV-JH:R&!q~qX V m!jSS{m/ar%Gy+x.LybOm!&rئ>-\\Y.Z=Mߦ d>_~7>Q\66P iPv<(Ȭ-칕ؓz-mr%bd\rJߦ<ŖKmöّh{.dJIO2;%Gy+~ĞKȓ gdMbkLSY1ge*$8;&!n}.stdlMK])+~ğ+O' PY.[dPXJ|/d͋lJ_,g6A]ٻexU-U,k;"h!b%Xv@J>g"R̢>|>Km2cuJL1qmdlJߥ["Jch8KKY.aQ`DXY-EcW^E]^dkjF+_.|%_.xp|㜔; qb&1\;7mO1dA"HIO͏ 7Op@),:dsbl$'eKo>Yoi1%+"<ȋŇ&7]EdEVX#}:NtǙ-@ )6ʼn8KY.aQ`DXY-EcW^E]^dkjF+_.|%_.xp|㜔; qb&1\:})+:eIO͢O}.h_1\o'{%Y6Fchcs%Od@VD(~D_,Qdؤ&ϥ.ɷ @Ubl\wd&Ȣ gq/1IuV::(/ ؛#x ,M.)v_X#"A )pyTV&Jch9 dvK~X+"j!&1J nRbȃLm bl$'#.rzǙl_vۺc̈ؿ;;m1t/X"WlD.Ȭڈ1AjSYtpv&O}.l}.id{,dV3@(. s&6_#dV/X1M nBlVmD?"盶ԧ 6,Mğd\\пl7"-Jch ,Mğd\\п\1 {d@%ᱍ`K1 bsgǛ'Y)\n}+ YD_,evD!s"(DK=!ZC3wMcm3k0rZq Oꏈ%^oүG_Gv۩Rb%KbO.s'6KyLЍ/"A43wKf?MUҮc;"h 'G m kbjCr%[K>-/e/K]ii]kU6LSbU i X#>KdWԧ$_Y.SCuKyLr"/3ț . SY/"ZP;"h!3P̢>ϗAlO+%ēq q&+2NWbl\C\I O7,[„SiLm-)6G{m/>~!ğdV&Ө=-}._q'_,Gy+~K#ټ1,\#<ߥ<1'>e1]&$%(؛#yKf1\B@п7a B\SiLm, lMĞK@~$ğ(T|I\#Y.$6d=[ؿO>q +f! t]bl\rכԧ$_K/l bDB#3tK&KbH;m1)=tpvD!vOHVSXlBge*$Q)T KK]-{jc-l_rtM/[%6D}.tM7mO-D_"fvnlgeWR钵Pu)Di ;-òQ9x.~z#2\w|P}.qVl?&ϥl-yKf)=Y.[QlMߥUdW$_Ahz"c59?0u"(JcjP76GdXtS/.6F_EDcm%KXrvD!vhz"Z%!ٻYHYJ,rS'ɲ;?a*lgbHV񘏓dv ~-Ty#@v6A3+^xS@v6A3+^xilOe; ؁R?M) aSd;;G猆ɲ;?a*lgbHVɲ;?a*lgbHVɲ;?a*lgbHV@v6A3+^xʣ@v6A3+^x@v6A3+^xgɲ;?a*lgbHVlOe; ؁R?M) aSd;;G猃@v6A3+^xȂ|#Sh¦&v wkdv ~-Ty"lOe; ؁R?M) aSd;;G猉ɲ;?a*lgbHWvD;!ZC>g"ֈ3"I͒1Ye6F~ğE6^~6/'tKy\ vK6ğDKmtKy\Be6uK슬MK.Z~,A,1?وci qbl:ğmubl$_{ _;tM7t?K Gnȗa-6ܹdObxtX7;"l4=!ZC3wMc,aQRP猉Gɲ;?a*lgbHVlOe; ؁R?4AVàHDS|E >>gJEil%<τzBD.֙ٻ`9E._,MĿKy ;/;M9&O㸅zi r/"=!jkOykgCRW='T+M) aSd;;G >M) aSd;;G&Z #_Di ;-òQӉy9a9էqL1?7_Onj6i?ؿ; !}?@?2 ؿ;1$$$?6I;@8Mc5>`6z#4+y"CXɡ~ p/>)1 ؛#&6F:?O~A6Gy?X,MR_>gJck,M.^_1؛#yLyW/<З;daE{>GOHG%Y 'Ȍm)do77W؅ðwO#&6C+dq` /_ z?h\ډ?_ zm'!v|[ g+Hfvnğ?` %?-8XJ]ƈϓdv ~-TyB@v6A3+^xӧɲ;?a*lgbHV6G`2ML@)Ț d+Ha؉hz#2B HD?p*ϙȢ<[aK *cT'=ј26F~vA6!xXQ'Bzh`y艎HYI!wbϐyyCDLvzBOm |SXL! (:lm(^x)lOe; ؁R?4AVñ,; Z%'88ϙȬouK~mCbl1^ >te(3…NҞa!8s Ly'SX#yJyyH X#?_f (DK=!ZC3v$+x٠r=lz@J=-HVݘ?/bɂ Mߥ1>SXbڊdM ?Ț d+Hiϟ3G ~%Sd}.^|"fbmBkDSa0Z1Kdo7K< a2D,gJ1Y~)lMğdQ'^9]GOHV݉?_.Ӈ#'+Hfvne<ڊd5Lήi&! psi>g"ֈ/ҘJoct/?ArB!iyLy/1 MH&<.^chX#y&cV~7]#'+Hfvnğׯ @zi u5$dCYMDi ;-òPv%8uLJr$iӄ>g"֏_>gKc~zҞdq~aO2#t657nj+ߦ2>2t6ko:ǘ%̌m(DǛs#@^o81]F6Չ7c6\8 lM߯i144KX"ib_"_ ISbpzi ؓB8r=lzBgfZ5*;"h!??A\~%S@!ojć:Xbr@Z~Qdyn]bl rǙ657#Fhl/~,ğe1+^.d3;7bOx٠r=lzBgfZ vQUt+RȚ d+Hiϟ3DrDmbl sLy'rD&9ohl-1IX#y>cV~7]#'+Hfvnğׯ @zi u5}Gj)TT^;"h!b%ZpӞpqYSr ]h`S2`ochJ~L?@M2$ǘ0O@96F8)00O@{do700O.Ѵ@r!#L-1m q<؇0O%K@< chV&og1Y0Och7SfS1 @@ Sh ch&oO/_.҇#'%Y 'PzDK=!ZC3t I'%7-64쇘X;QLSdMC0DKNzsN>+>!#r ]h`S2C'm@46F~8L!ir71 `6A6F~`Rch&o״ q?X!%CAhD6F`Dh6di2& D&ybnj'h(,LxCS0O%@u1%4 M01" M2TǘG'@؛#y^Ib?- B!Չ7<Ǒ @ X#yjĿK0O6d8ec`6bl pI4S1H.6F}ǘzo4GODKD3;7bOx٠r=lz"Z%!ٺch 'mXX#yLyhG1h j)TUz|@,A:TǍvv 8pvtC }8)r?Lx#DpR:DqU9 Lm(rĿJDqU7<nj mДĿ"aDODLzzBD.Ϗyy1艏bOm-B?Avnmٳpb&TTUm-;"h!3D3IF6g""!+w~l36G}@唦6@",6@4OIX^vD!vi *u5;\+zT4I uD]h|^}.7>_K_6 ț .ҙٻNiګcH24,вouqɋAJgf:͖ wN'qтLOT>2V=#9V_vD;!ZC>g">=Jz| x|BBfPpl.B?ɐJ|V8Fcm@?Jz~#p0&>*+QlcmGIT'ҡOb,, !Oy~jMğϥB)r6-4>$|-~ZJbꏉ~_mLt61M8ϥBXm:?lJ~D@t6>'FS_⸈'A񍠌?O#&1 =!ZC3w Mc$L!⥇OM+)AOdMC0DK>g"vhzϥ Kd[l<"=sb(x7;g?dT+G6/ҋsLG{m>Pbd]-l'X?J҃Z+C~J+ڴ )PgҠJ&ϥ@bLTR>>Q0}*)D(+Gv/hvvۺ[+Gbv7\@dObl`;d+GqMv<(Y*ybl 4v,cA9j(ILmHsblPsa`~7; QDPchC[dvJ@{G6;sA 鍠 &6Gd9ذ?dvm@娢m@&6Gdsa`~7; QD &6P؛#T9ذ?dvm@娢m F6PX#xTȓ?Kؿ-?~D_[%Ғ>V obi~& eirpح9D!9B "%tJz_h'\rכb%K0ydt7SdbOf6O~=eJ'->*l*bI[ɗe^ d|w3g-L"thX@l}@CA V%<ݱ{G6Jذ 앱`F|@_ፄI rA?MT2,n{)O3+%@?yJKdؽ`|7{cqMD?eN?J͋;g$dZ9{Gb 1@"> r؀ci%lSsd [gcao"F8O~*Z9{Gb `LG`;dS`I6_[7v+Gbv7Vc\/`$9@zRVl^ذx7;r"(66] oi)9Vŀodǃ3 17?PB` ?b%hs1]#Gq'DDΘOJ7y/hZ;A?; ϔ2F_ፄI r& m ,\Z9{Gb `LG`;d""ap@ğ"`ch\ /^ii~[%6[%ҒXC6?JVV{G6;s"}d9ذ?dvm&;18($ r'Jch\Sb#" 'ڈ_P \rכdE'J?71LIeZa8ܬ\'6+dNiNe'/'-x,RV }.[dk[1M&VJ'->*l*^oi1D_^͒v,l{%je.^[gY+G6/hX-/Z)Oj%hy'Ҵi> r'?K  &1 DK=!ZC3w McLPPTQ\I ʏ쉢vB|D Dfg6KY""O3BO6\ӖKm8+"""rh'sB"!LF6?'tK~s`YnlKؿJl fQ]-l<-\1)\aC&)x l vM/̀m?1I<@)6ONll.g.v$|[dx>OdwgMe2$}.u/mNs+ƃ1hnRdEvMS$<q AbDB&D@ `r%^ob%K%̬_ Nv&DBchğϥl9~07?JeaCL6\Xz'Kd 'b5K(qW|O9"%1+ğϥ.nlk%,_tsb;&eq`~ۧcHwJy}L/lO'ObtZlǛ'\)I]-^m-Mrr6 XҝvDvۺS̈.C;6)sKȰ?;`Gd̢;^ ϔkl6msbY.)O.Yh@Gbsa`;m 7DL)A-D6>6!\Gs!';Pؿ/\XvsKLXBts@Gd̢; ϔ2Ebsa`;m%,3` ҝhǃ3 9bsa`;m%,3` ҝ̄x0#>Pv۶/ 왡Y/d-@ Z Nhǃ3 ,6ݱ~^v`Gd ͔{%,!g"1;"s3C@sctKؿN,6vsb;+NY.^v1bЬ \rgsdkhYdxr 1ɡYgsb5xxm(S\Xvyځ4+mCB%͢d\ؿhrŃ;"\`LG`EiȓxciJOI]-l_@Ӌ; 4+;m-/ӋaJls0#;;&hX~~1\x0#;3BV5x0#y;m)IO2%6[%ؿ/v<Pвtv۶/ 왡Y/d,X"tsDNvFv<(h.Xz۶KLG`~Ь؂Y.^v<`LG`EhğBЦT.Xvyځ4+mCBKd`NgIoi)Kd}n@қ\x0#;=q'>P7\Ȱx'Jw37Y._b8xۧg$G#\q`Nv4~r, ҝWIO!QypO1M}.sd͋t%E6%X=6y UlAT<1?YȂpT|ch4>mCИ''$skI<@Qaq2جhXchJNJ'>Q8P>NE(RJ'b)P}((RJ'ğϥ.nllE\q`NvH4'@G1L Q9q`~ۧce@NA +@ch؛#Q8ybX`G`FhYbx0#(2E9C @{dvJ'l_@Ӌ;  ,_vH"w"aYiB8[%Ҽ[ p)A-c%қL$#"ϢOd0 Omؓn间;T K/}?71LIn"I \el"TD ID DH(E* Vr%^oيl-/) 7Ly@ BI r1?$_)ϥ2))N~+6PLGs:Nvr'KO "&._b8xۧsb;+Dq'DE.?J&P6ȓ@R/ S_Y'ȥB&1/{m>-/_?KmtKy6KؿN,68Y.)O.n!nɼb b[ca#1h,_@͋?7r$vMS$<q @_>-> r) 6r@~ DYd,i *u52\*\$*<쉢vBa(;_h@Э|Dv.YDhxz#4;k8G`04=9 '6 ;n@aKd[vۺ[1咴?~X< ;=q' %hb(xw0&#fb*%hb(xw0&#fV|C@<8Obd]-l<=`wMeȥh$J{JЁJ>VI1JZq'tJ'"B?Kdv/֝Im/XXnɼb"dqG '6!\Gs!';P+@ uA , 6-6Gd?,ǃ;6 rQ0I1 ;%h@{Cb/xx0##h"-ECf66Gd?,ǃ;6 rQ0A{dvJЃb:Ł^`G`FDZ cB KdvJЅb:Ł^`G`FDZ ,1 dvJЇb:Ł^`G`FDZ D 46G>-\-nrכI<@s$0?KS̎$ r$9Sdk%PȮZؿX< ;+C1A}@T?*^zŀ/zYNǃ3 6Jb^vcdv]IPlbKbK,a{Jzv<(lZؿX< ;%Vsb;.$ȩ,']-\5~Ed_, z %h~w0&#"Q'XbXаD?Kؽ`~v<4\-~&){ yLybOm6]Dh%RBKY.h~Sd~&.7>$)IyǙ{C%%f\g%V/ c`˝gsb;D$\:ODCA+6bȂp\mlMQ1I!hňĞO ,6q݋@{cƃXľ){"af ?Kؽ`~v<$)IyǙbK,a{K͔{%d=;#; ϔ4,Ń؂J#@Fv`# %;r("!xlb@?it mX͘ c@xuağX Bi~}?Xxa\x0#;%>',@p[%ؿ/;m->VAΓߥ<ȋZ/ҋ'sb;&X@h`, X \\?St[%h z %hWIO!xG1bB%hؿJ,49dX>Kd[mk%̞o@>V/ c`˝gsb;&h<ށ1s|O9 ij p3O _ Nv?Xx`̀˝ #;Z'2S p'$ rF;1bz%qM}.;\wb:Ł^`G`tϬ)O^NwM`k 7Wq8 rFXJ4/ xRKD&'OHG%Y Tk2u IHqJjAdMC3r \PϥhG>^Б>+GgҴ!Y+B,ۖ/hH(bȝȂK1@&^ЏЅ}%2tKyKf)])~)tIߦ<1'6[9D,!2Ŀ-]i~]-^oيlJ_?\ O7,/yc *9dfC F%e6&Өm&_1b*B$Dϔh b\ 7wJy4{BERv۩Sdv/hH?(Jo7,vJІ{)46JІ{I2;%hCyc̔X"$'4ib([$D@|@_l 2;?A F,@ _r^Б>Q//: 6fو(p!Tch*6FGğX<{BDIF#" QOZ dMb4OHV§SXLL0Nq=rP3IXpy$Ph#uJfB*쉢vBa(;_hb+`y9غUgb8Zr|ϗ9A݇l}퀀l;I" &C.ⱡa$?ļ\h|1_ x/hG>-\ٛY.Z,=Vsv ψ`( g$|əzK6m6Ad1'g>QJJ!PPRO PBZ}(T1PFZ}(T)CCؓ[% "2"Z 1 ;Rx"BbH ˁSi͇@ I\|It"(\# ~"/|VBD"g13HQK@?7l܉=K%̞oi),\RnY.rvڔ"/K,J,m6JȊv<(Y+ABQ``LG`;DAlbkdX>JckdSpDAً/p >6\lvۺ[,6 7q-9 XD+d$cE6J!{ABl, Nǃ;6 rQ0DLm(ablBV/h(X@ͅA`G`FDZ A.V&* ?h1; QDch 59z@D ğf!~BK.^~̈#ğϥl-y47\#HyLybOmҴ]Vζ"!9D2\&6>/\-r ,_ 'sb;ނ$@&,@a2D,!g1'Ȣ Zb a?K//KK@d7vhom1id7Ly/}bvcdj"{%h(X6 NvID?!ؽd+")`F| >VBk<̬*-,_ "0#l!,ژ'Z /ͅƃLGT2D_QAPf!  m`6FG@"O,Dqr?OI\ \)Ol-ysaaA&#tsb8E|O9`b @?JP~l,4I애w0&#"I<@V)1b *|@$' g `z@&,[ڜ?Km?'sh ss^콄SARbcjQrp}-=#c̎hoi11/s.w`EY.w`OȬ;^)Yl@VX#/Sg KyĶfK8L~waJlsRB8&EiLm 8&ڐMK8L],SlK]+&}dȦӵq'D4܉>=p_,*Cb Xvm)Jg kPJӄ؁Ȭ +AH^P 8I^-zjiXp9gf6IM(U 3a`~bv< +ٜ%M@M+Nb"؂~ch~V&*ؽa6'cAa pZұt6 r+-!1A6GdR[, fx0##h,!NW8K^V.&Ee1Xch~ Mğϥl-%o%L$Y(`[bxׂb;0T+q0F)1?]blc.qL6"ؓD?/X}._d{[2"-AG/?71LI r]Vζ"!9D2\&rϥ/yKf)\O7O1,_ 'sb;&X9;m),\)sG4Kߥ<܉>{/a~&CdfCD6MQ'!< _ĞO@Edg 6K>pdgvKϥ&.h}-=#5|Jށ2Vl t NK8I>hoe1Gd7KB57!" ?| 1?;qY6J a6;7;F,:[݁ ^v@X N̍{9,5"JN2;݁);23"{"f`DVV\XBtaa3d0{B=6;2a.wdm0,3@lVS#D,X;lRw4gc]\X#/{d }cdV1`F, ҝb8C%q'g K8LyĶa7!s@Ua0#Q:[% N 戜a8*;#;  YdSlK8LYc&{dٍVWVJЎzl?bxU nv<:X"0#lWLm>%hG>c csX<;=q'C"Ot m?YFhch:+di|IʼnL%hGL_ *ǃ1`Nğdwb{ ldX@s ŀNYNǃ3 //Џa _Lnv#B=_/͎Dž`Ua .F, t/h(/g6  Nǁ\nY3@͎:S4r%odEzl_\apXLF,btJЎvA1aNq\W|O9bI..O#~2x0#Nv^>'&,@T%hG cdV1`F, ҝ l>'-O+B= faU`Ł);ĞOȬ_ *ǃ1`N`LGd&+ABxbw0&#mBd6@͎:SnOEa d*~7;J./V{Ń:S1ho@{+46 Sd/tsb81E.<4B &O+%<ߦ@ S!r*^׃6jˇ#0FFgh?z@ pAys9/Q5`ÑrpijL H;V[h6dV^0r!B@;$TPˇ$E`DwQ"4# N "dbv!MB@63#y4!4+'v>ls9_=o`QC0z@; *`PR'.v)Ivײ./ Ň9#+.e) \ /`}` Q'Z9$$>1b?'tK{CsaC&0L6 ;6X '\rכǛ2ؓx$,B] \=bd]-l^tZE* 1$}*$}.t/h6;m-v=oxa#1h,_'\rכǛ2ؓx$ ,@i\lK'lKbcYhy/2쉲 BHV§SX,".fUD*ZdR꫞$Q4AVñ,; Z%kCmȃpQ4=FgҴO1Kψ~Ӧ6P"# P?VaQn}.t/mb=Mra8$1K }.[dkSldߦ<1'a"ڢvrV΢"!4D/lv_>-\-r<\Se xci)͘ .:chv&Ө|IňJ?'e}@X @R%̏hZ>km%o_͔9x's:Nvr'KeC{ Xz6nY36K/@*3'+6b . _bl:M퓸3O~a+Y;yS&fzc2 6OVl?؀X m6FGn&vIňI Xz6nY36Kc2 6f!* 0)6FGn&vIňITXn&NAz֬y_6E.wLm OI=; Xz6RoXzՏ b=fȥd9~&6D?LMi)3a0/ehlğň??Mi)3abAPf!@\6bkdi}hlğX_ xci͘YOua2?8'0)OIdB/ $8  )OZbZ_I?|:N?,b94bi3|0^G6^g`{ls`h_7^G6 ;6%VIyħ" X0 $_,e쉲 BmW$-DKD3;7 g3rtW$ʗU\ ʏ;"h!3ࢴFhv}+@{@$}.7:eZ;{@!?/~tKyKf)])~ɴR^ǘ$_Zl6+crshYB&e/~[<K]+[1MKK\BS%oe17: 61 -Bch]4>[`ğX{@$|{m/Jo7#{@Y(4: 6Zوj@Bdi|IňZ^==(;.OI""ň^Ӳ&1 >=!ZC3w Mc-3{+&U$$PiG4AVϙȃu\s}@ZX(`@d l9~ZchQ3tKyLy5OKGv2ؓ"",ňZ91@]-^ode"i])~$ˢ H\:|]-^ode!.g\КlJ{-, ibO11b \#H}.t7"$˩X `%Lm`}.t7"$ˣ F\?>KdWLyhaK}@xb?! dWǘttEdɴ^rӵD]Xp=OOlK`wKf!XnJJm;? JchQl-yLy\ )7,-yX<ݰ߰>ڀbOKtMdQ`;dWa"ɾJlN\d$cHK'lKa}`wMeQ'Ac8쉲 BDK=!ZC3w Mc[>cq=r)\TRAמ4v|#Sh¦&v wk6G`2ML@)O*u/)HtDTá4W?'@gf:dʤ]*IٻN9ʤ:XuR.VdÙ)U/vnSgNLC'U"dyT4Aֈgsl|@n} 6Dӗ?r&1 vnSgeR,Q:(SBwdMCu9y~Xn} 6/'X^vD!v*u5LS*bHbQтȚ D3rqY7ؿ _,g/;"lJgf:͖ U!ZpMBȚ D3rqY7ؿ?O쉲 B)Tk6Y,U!j@t`D$QD]h|_aGMbdMbiL§SY3*bHq٨QT _D]h|^}.7ݣ&rArdMbiL§SYalʤ:XuR(T(쉢x.C>g/>n}~ _,g/;"lJgf:͖ fU!U &GdMCu9yv_D/O쉲 B)Tk6Y,LC'U"KdUW$*?;"h ϙϥݣ&{m`/)JdMbiL§SYe2(T]2UEsȪAcZ+B*4;"h ϙϥݣ&{m`/šdMbiL§SY'TKNJg*eAcZ+B*쉢x.C>g/>/cv_ a&adMbiL§SYeR,Q:*e3U"*Ț D3rq6> i7hɾX"iB)/36A]3w Mf?|ʤ:XuRUZg+&! \oaGM/D/36A]3w Mf?Ż2(T-uJfETU\ &! \n| sQaGM/0Oa P_ /36A]3w Mf1dʤ:XuRS=tBLO"*Ț D3rq6> iτMEY7ؿ@kM=-A~,O쉲 B)Tk4 i4ʤ:XuRS=tBLOD]h|^}.7>_ 9ݣ&{m`/X'X^vD!v*u54̪C'U%Uy(W\iUEU ʃgD`S,Y:F4Aֈgsl|@ӟ >o~7{Z Ac9ydS;7h̪C'U%Uy(W\i쉢x.C>g/>n}~4'X^vD!v*u5,,TKNE qJdUEU ʏ;"h ϙϥݣ&{m`/?r&1 vnSgW2(T]2RrQUvD<Z!3KϗOaGM/0N_?r&1 vnSg/TKNJg)XodMCu9y~4}dboa 4jAc9ydS;7m~U!S<\ETU_vD<Z!3KϗOaGM/0N_/36A]3w Mf?s*bIUk)CV.[dMCu9yv_@?r&1 vnSgIHtDPlETU\ ;"h ϙϥݣ&{m`/O쉲 B)Tk6yHtDꤦz\ȪA\TiGdMCu9y~4}dboa 4_,g/;"lJgf:Ͷ/*bIL"AϚDg=rNVvD<Z!3KϗOaGM/0N_@I?r&1 vnSgU!S_ =Y7ؿ@kM9~\RAc9ydS;7m~*bIL"'UWD]h|^}.7>_ =Y7ؿ@kM9~2$ ț .ҙٻNmeR,Q:)dVDdMCu9y~4}dboa 4PO쉲 B)Tk6̪C'U%UyQ<;"h ϙϥݣ&{m`/ $Ac9ydS;7m~̪C'U%UyQ?dMCu9y~Xn} 6/pX^vD!v*u5L$TKNJg&TETU_D]h|^}.7>_}dboa 9O쉲 B)Tk6.fU!I.Ț D3rq6ݣ&{l_U?r&1 vnSge2(TVR꫞$PhU\Y:\IٻN8!TKNE,s oMٴ"4Aֈss%l_O?46RJ_,g6A]ٻNipAUt̴8Aƅ4AVϙȃuU%Y7(%l_yE6DbP6Km%Y3" l_.əpC.%Y3$e/OCϔ2GbuVLȬC"[%ؿ9xȬte/lJm;]Q;&dXv<(dYdX>Kd[6B5%qd١ TkidI-RHTXe%TW8аkEsY:_D3qI=QKB)T[6Y1j%R+rN2x.C>ؿğdܿD.ҙٻNe$#IUήSC쉢x.C>g/>.7l@9?/' xEvKdMbiL§SY曒I5rHTXe%TW8udMCu9yqSh mb~7=(d$|]rAc9ydS;7lG$W$,2\)_vD<Z!3K_O>FFEbo{m>Ql_ϔnX(_ϔ2Pؿ(exdYpI\n_,g/;"lJgf:͖>RI5rIa箅#! ϥ/'G.7/ vnSlg2I5rHR+XurN2dMCu9y$|Ad)#mSbo>P˖/ؿ(hYbn|l_ϔ4KbndCArAc9ydS;7lI5rHTXe"'<Z!K_Oꏲ\n_"iL§Rٲ+IGI2W=*:d:&! 9x.@=6,_X9(2 l ňMdğϥ.̓ƅm[aɾQ`|7~s`ǃ54/l4&( ׀;" l!LX],SlK]- wMenvD!vhzBgf:Yg-+ETU\>I.u~Y.7o/ vnSlgwK 8.D>I.dMC3r ]hz#4OO7Y7"j6vD,@9m+~2]Sk4K~s`wKf6M~xt%Sm')D_.sd ꍇ\gIm V_,g6A]!ٻN#`B㥲UEsȪGK R꫞QUc*?;"h!3Dz}.r|T|@oo~^Ϊ l!,'uO7vK~s`anW☓eKd͓4Bobi3@$_,g6A]!ٻN`S9>_~s&bU6M>Q]U󘇙SdF,@V꬗9fE'ؿUd͓2\=!j9fH!OCϔ2GbU6LȬC"[%ؿ9xȬte/Y.w/d;&dXv<(dYdX>Kd[6B4IX7;"l4=!ZC3w Mc-3g*䐨JqX֊琲uJ;"h 'G mK3Bd&t'r%l_9>_> kON%l@Jߦ<̬T~-_<ٽd͓h,_69s'~;Tݶ<1'/[%lAbQ˝=:mcAnvD!vhgf:?]2UEsȪGK R꫞QUc* ƴWgK/5']6M%ofVKyMfuV/lynl޲\ɴ/ΓĿJchymJybO_K6a;{l us&1 C;7h@M3LQ\HIa*]Us"*eAcZ+B*쉢vB|D Df͆ &6fv/b ;"lf,@i?K]- wKf}}l_9>_ad`Cj# Ni\ɴcuO7.̓;m-K6a;xLmnRdE6M~xt%eqd١ Tki6 .:["UW$I2W=2*T4AVñ,<Z K/X9]Uy\buVLH9~!"dRbj_.ɚpCN%Y3Dep(h͒꬙Yq'tK~s`Ynl~sdSiܽ3BñCBsdS`dTw03@ܿ5'`!gKmtK~s`Yn鬴<~sd&lX|e%qd١hzBgf:ƚgQY$$} a7YHdhYY:_dMC3r ]hz#4OOꏈ M/"^Ϊ Chzb$2%<ߦ.̓ƅgm_bOKd͓4ؿT,vӹf6+? dMbf+HfvnSecUk)Es$,2eKzFTDg=rNW4AVϙȃu=>9>_> kON M61% d͓h [ǙoY]Uvۺ[79mF.w3/Ҙzԧ$e6M~xtf6.? dMbf+HfvnSe?Zg\#%RLuULϚDg=rNWdMCu9yqftAc9ydS;7lBIBXe" R9;"h!b%Y9x.@='G m &MPȂh X's&h1%ob%l]GmPӇ-U6L~ O0P ؿUd͓4+>PЮ$}.t/l4+;m-v/Y.w/d;&hXv<(hXzBY.9{%N;&h^ v<(h.)O.̓ƅgm%laő'Ac8쉲 BDK=!ZC3w McM3]2+$} a7YHdiY:_D]h|7>9>_> kl_\ɚ(%Y7K?K.[bBٍ9r`;mM,J[tDǃ3[KHVK6m/l4+;m5'Ac8쉲 B*u5l!a3LETU\>I.Dg=rNQD]h|7>9>_> kON%l@Jߦ<̬T~-_<ٽd͓h,_69s'~"nRb-6M~xtf6X7;"l43w Mf Es"*I),2eKzdUEU44z,RJ?;"h ϙϥ\6~7xЬtLI%Lcb6ͻb93H`X^vD!v*u5l]2+$} a*]Us2#9됲uJȚ DqQZ|"u.sdV1edilUb睶%lAbQ˝.sd ꍇ\gI_ck#/3ț . §SYg dW=rHIa*]Us"*eA\U4AVϙȃuODfg"ֈ3@\~}}&cgdA 9m+~2]Sk4K~s`wKf6M~xt%SBx?7mO2"vs&XTl'%l(6/Y.sd̢>P#s&@?>QK~s̋"2,;.v ؿUd͓hh,_\əB|6/Y.sd̼|Ub)!1D?H\nvD!vhzBgf:ZgঙJ=*ey$EsB=*ey 'T&! 9x.~z#4Oge &.X@׉ l!X@*Y.;f\>QK7Kğϥ/~;xˇm[d։l/:[L%"t&dv</l_Y.hchQCtKyLylJ_Y._'Kؿl3Nؿ _;3X/36A]3w MfyU3L+zT4*%RLuUHʃCG+zT4NQ4AֈssD>!c%l@Jߦ<̬T~-_<ٽd͓h,_69s'~.vڔğl޲\ɴ/Γؿ[aynvD!vhgf:L d]sҦYUW$I2W=2*T>hh#uJfB*4쉢vB|D DfQ[db%X9xˑ-t6,5V/l 1 K1b>&/9fI[m &񍝑12"uYLm)blIF)?cd͓4KbP>~a}AnvD!vhzBgf:[g+4]2PS,!Qa(eA=*ey 'T&! \n| sQdl~Wdmbo`wMf)>l3Nؿ _;3X_,g/;"lJgf:?鞺d]sҦYGЖI2W=#* 4}LO!dgdMCu8\~>:ψXs&3+%<ߦKd6h#uJfB*쉢vB|D OHY͒꬛)?>Q/lUd 6KlFEbuVMOb6Km/lUdsbf,G\dYa|<sv ^͒꬙2%Y3(O2͒꬙GEd͋QLQ!и5O%qd١ TkidYi$$EsBc=*ey 'T쉢vBa(<ZFhK'vKqb\+4bb#$2K]+c-Ћ4B`y9b M<6v|L_l,~`P+(6+bdbaň>`w♘bl`ޜӃk̡Dbbpň> d~YdbAxˑ-t6,1 `Pe1:S :)>&/ 4JJߥ<,7Y7l!B9=1I^B LЅxt_MCDK6L-X ؿC!D쉲 B~z@J=-HV§SXl">MUk)J=*ey$*,2Z4,}LO!ddMCu9y~4&p5pNS}.7f~ 3OXOaPw4f6KdMbiL§SYg Uy(W\i%RLuUHʃg D`S,Y:_4AVϙȃu=>9>_> kON;ad`C 6s&3+%<ߦKd69adbӖ/b ;"dG&,AT[%ؿ9xӇm[aɾQ`|/l4`F̓ƝDҝeñ l!  'tM}.t/l4n鬴=/3ț .HV§SX,"B㥲+XyQUrH)&Td:;"h!3Dz}.r|UaɾT1 D Xs&3+%<ߦKd6RXe$ʗU\ȪQDi <Z K/X9]U2)>PȦ͒꬛@|Ad͋Q2(ȌX.ɼ'l9f~X4s mb/3ț .HV§SXl0QUk)EkO$,2eKzFTQg"ֈ3@\~>:7Y7"kl!j6vD¥,A?K6LyY.5[%X9ymzs&XTlg"ֈ3@\~>:7Y7"uB l!,Cf%l@Jߦ<̬T~-_<ٽd͓h,_69s'~Ў?7mO1LIs&XTlRXe$ʗU\ȪPhXVfDNQdMC0DK>g"ֈ3@\~}}6D1 (Tb'DY.sd_#y~s&(Y.C̊)#+OVK3" l_\əpC.Y.CH♒3+bU6LЬCB꬗9fXUd͓4򆝉? dMbf%Y TkidSidVDHTXe"'Q9>_> kl_\ɚpG.ɼ],I\r6ptc{%l=i%E4)h1>2~d}.}F6Y.['Kؿ9xӇm$_,g6A]ٻNm,=tȭbUEU#K R꫞YY:F~vD<Z 3ϥOꏈs&3+%<ߦKd6I.PhVfDNW4AVϙȃu=>9>_> kON MZ1@P1bD\ɴcuO7.̓;m-K6a;xLmtԧ$eKd͓h,_69s'~Ye/3ț .HV§SX )zZ#%RLuULϚQg/>/k{%k&bodmd %/hSdF,U ~7\6fE'ؿ.Y3.(e{%k&dC$v/KLȬC"{%k&dX|e{C]f]1bt~7\6f 6/KL)lؿ 4K=ň&O{CƁS4b2OrAc9ydS;7m38%IjH 8b#BІ\B*;"h!3Dz}.r|T|@oo~^Ϊ l!bY?KyMf+]U~)>-6L-B6/֝0#1#? dMbf+HfvnSeeUk)CV.[$,2eKzFT>4bNWvD;!ZC>g"ֈ3@\~>:7Y7"j6vD1??K6LyY.5[%X9ymzs&XTlRXe$ʗU\ȪPlcCJV.[!dx.C>ؿĞOh,_O l_ϔ4KdܿD.ҙٻNeRI5rIa\d:Ț d+HgA=>/ψ,31Hň?K왢RV1+\wdؿ;;m1l3DcX.;fK\v}.edزfЗËdgK3H[%ؿ;;mԩl\Q`'sb3XK'lKbRГdm# ؿ.v|8}/v#;m-&hx>m ,2` #;`FchŒM}._d}݃ƈwMeIXrvD!vi *u5dV8b*%RLuUHʃBІ\B*;"h!3Dz}.r|T|@֟v,:!j6vD ň z9m+~2]Sk4K~s`wKf6M~xt%SA))>.sd ꍇ\gI_aZchQX7;"l4=!ZC3w Mc(&5V8b*)&TETUXʃBІ\B*6;"h ϙϥmdɼGؿ 6Fp!E!E?/k%LȤC"ᵒ{&e b6\od̑(dmdə(dWb6\od̋2,\6~7x˱L˦,T_K왠CAᵋCƞfb@?K/L<bIؿ 3D%? ț .ҙٻNid1=3L\I",2╋BRr 'T&!9~v|@e&hG.wd}.[>/\Dgm[d։l/"e) >3#~h}.[bsCX.1)])d|SlK._bw`3Yh{/36A]3w Mf?CV.["*IBXe$ʗU\ BRr 'Tҏ&!n}.r|T|@֟vK6LyY.5[%X9ymzs&XTl?7mO1LIs&XTl4bNWdMCu8\~>:9m+~2]Sk4K~s`wKf6M~xt%SArԧ$eKd͓h,_69s'~Y@XX7;"l43w Mf CV.[$I2W=2*T>hҕY:_dMC0DKGA=>oo~;#xȂYPm/v'rئ>-\睶A쉲 B9(DK=!ZC3w MclP B)&TETUXuDs'K>QKo/ C;7Զm3ZXe%S2W=4(GЖI2W=#*?;"h 'Q'tK~s`wKf;\ɴ/қΓĿ-1?/zs&XJlKd[6= dMbfvnSg"$MB$|I.UV2&! 9x.@>9>_~sd&zBlUdOCϔhHY͒꬛"/(JOCϔdVKؿU6)1b@6%l_xY̅dňJ_.ɚ(hYdnvD!vhzBgf:ZgI-RH)&TdhXU\Y:_4AVϙȃu=>9>_> kl7Y7ؿ[`P̅;"ab ?K6Ly6KyMf+]Uvۺk1LIs&XTlPЮ%la򆅑'Ac8쉲 Bi *u5F0zeKzd%RLuUH .鐲uJȚ DqQ[bm6M>uVMbOKؿ9ym.sd .vz= ,S/>_K~_dSY.['Kؿ9ym$_,g6A]ٻNm,I.UW$I2W=2*FXuULTiGdMCu8\~\ɴcuO7.̓;m-K6a;xLm*dݶ<1'/s&XTlKd[6ptZ"Omqd١Tk6a hQт%RLuUHʃg&!n}.r|T|@֟vK6JybOm Dϥ.̓;m-6M~xt%i?/"/tM}.t/lyn鬴Y.̓;m))=-6M~xtf60/3ț . §SYg')DF N;GK R꫞QUc* ]h}.r|U>Kd[6ptfK3NؿJ,4ɴ/.޲],SlK]-8vۺk-bOm!vhgf:ͦa'DF N;GЖI2W=#*?&!n}.r|T|@.sdV))==?K]-vۺ[3k%lAb)˝Kd[6-\̓;m5'Ac8쉲 B*u5L l(ZrHIa*]Us"*eGdMCu8\~s&3+%<ߦKd6iymJybOmKd͓h,_69s'~5OnvD!vhgf:ͦZpMB$|I.UV2&! \obo{m>Q/' sx&6$.7fBAZO/rCDv/ؿ(hYbn|l_ϔ4ؿ(hCOY.7/36A]3w Mf?܎I&IBXe$ʗU\_vD<Z?>g9>/K\v}.[d\~d|4>_/$|e+ , f͡] f͢;#ρNXK`, a3+4Abv|"\l)7,zdvK'dMbi§SY'#E#K R꫞Ț DqTI]-l_<ٍ9m.w3cYd͓ht+6mb %6[%ؿ9yms&pbluKfLyd~;%Ks&1 C;7m3F(I),2eKzdUEU_Di ;-ϙȃuǢ3A0"4ODZ't>_ؿ/ϥ̬7Y7l! OI\skvۺ[;,6˝ ϥ'i ~X#>4\ЕLy}\sCH`$˖ %,_ϔ}M}.md;m5bOqd,i *%McLgtWD3#%RLuUL&! 9x.@>9>_~sdzBlg._X#(y&6%Ks&1 C3;72?M\>RXe$ʗU\ȪQ4AVϙȃux}.sd[%Ҽޕ2tMmjeC:dXw3g-L"vt7.3bY.fVKytǛe}4>ğlğ (bC|N_'’v$O/"OD_,g6A]!ٻNYIœ*UW-s \ Tz쉢vBgAFh=>9={%M UdɴS m& ';8-\N 9dJ1+&6G0EAc8쉲 BDK=!ZC3w McL:SUBȚ d+Ha؉h|D B#Az}.sd[%Ғ~,])/2d6;s&v:_ȃDZZ  lA A gK/5'tK~tklUb(x'Jw36oqY.sbU (?; b6Mߥ<6K/[%6[%ؿZvۺk-bOmqd١Tk6`eRK\*:IF>]sҦYuJ쉢x.@>gK/5'tK~tgK~X<;sB~.r=fQ`~'Jv<Gmg"ֈ3A͒'lJJetA#';9lgaD$_,g6A]ٻN N(T]1̒ _4AVϙȃuqd{.w>J}.ZzB.;1b~B6G0unKg]NtGҞdE7~[dbP;^ }M}.[dX>JzB.;1b~ ,MG~v۩SYhyb>sk&$_ፒkOꌾ)rYdes&1 +HfvnSepz䪺dJIFLiGdMCu8\$}.s! ؛#km>-]-Ӷ٧\S\͒j`2v262yڀlK'l-km>-]-ӶYh9>_\\rכnY.rw6ObOl_\!@H)& QڀlK'l9Pw0's%^o/Y.Z~ ibO ftM}.XڀlTcknvD!vhgf:ͦqEITL l9>KdXV$;%Ҽߦğh݉>O/"OD_"fvnSlg U!ԫj\oUr< )7-s6R;"h!3D\stKkm%o"L(rL';9lgae}4>ğ@_bOQ'/1'/XKؓ$Iȋs&1 C3;72?$ʤ\UW-s ȮeUIUr:Ƈɲ;?a*lgbHV6G`2ML@)מ4 &Z #ZƄ3@v6A3+^xG>M) aSd;;G@v6A3+^xЂ|#Sh¦&v wk ɲ;?a*lgbHVvD;!ZCKDh|D Fh(Kn|@&XnЏd~~GaBE{U4#|"4$X}Y|;&d{aBMϰ0 )h1EE9~@?N~cu >+6b1A1bC MQ'7{m/.+1a2Ot'ga~pnm;/;  f'ŁXcs 7ؿ.w34$X"i b_/dA&Omdl~ I8P1bV>{ @*6Gd>P_S̈%g+%glnExۤ'ڈ}B X#]DSlK/Vm}(l+)OIKʼn;%E6%X9;m5D%X9;m))=D1'Ac8쉲 BQhzBgf:3U:Tl $eAM YǿdaB9/vnSgpꞹ*VtCudd:;"h!b%Xv@J$3"ID@rz#4d{/B|"2@ٖF \PlؓmdV&ϥ271b>v&ϥ̬2>-]-Ӷ/1X=1bf!7'3Y=X#NO,J'$/Y%Y=6FA& QpT}.idccu :&OVl?A,X#NO,JOIb_0J-؈y+2sDF>QJMUTS[i+x2Vl Nw3g-L"tG6/.ea/?;`F|P}.ebum_`ň'+6b ȊbU4>$bdؽ1'_#c(l[Q21Vd6`ϔy~~s+|A3+%NwL-:fCD#1bv&ӨOC{m>Q![Q21Vd6AOKX@N/KX2]QnX=1bbfCD#1b`1bl:?) bPĞOy~P+$/̢ esb8m}.7~s+|A3s+VK;m2 ,DOVl?lA9ňMQ'(^i/(l[Q21Vd6?|_\_w0Y+%;m2 ,DS1]Nhň4>$b$|7H VIl_D@qYbGxM~s+|A3\㳶/bzbOVl?hsF,D:6FGğX:^i/ݒKb"^w0&#̜$8OKX@N/ϥ̬_Y.vvۺelALX+6bA9C"U&Ө?/e IGpdؿ2 '1 ?{l20#>_}.eb{wL-:fCLX؛#NO,`졉=(.Nz@e Kb"^w0&#̜6y~s+|A3\ö/bzb f!D41b&&Ө^i/A +%dD `LG9ji>b-V2g+%ǧm_`ň I͘mNhň4>$bz^i/QY%~dw0&#/dX#>ddNu*S ,A +6bNi8Ibl:VIl fG``G1bوGl20#>_>2~ed/bzb+6bA9C n6&Ө%){(bOm;m2 ,@  ͘mNhň؛#NO,JY?/e IGhdؿ2 '1H)>ؿKd da<>2~edxvۺelALX\و؂s")$,MQ'%^i/'P+$/̢ esb8m 0}>[%̬ e's ϗ+%Ӷ/bzbA?Y A4>$bĜbPĞOy~VJ-(y+2s@~>Q/.ea/?;`F|V/̬m_`ň f!D41bu1bLI{(bOm<GbVIl_D@qY2GؿKd da~}.ebqnX=1bӧ+6bA9C j&ӨiSbPĞOy~Vz@dcdؿ2 '1 G+1Y7KVKO7#\JynjJɼc̶ ,A+6bA9C j6&ӨDؽ1'_B]1o~C dgI]=^睶Ta[%̬ e's ϗ+%/bzb 1 ѡ4di|Iŋؽ1'_Q0tn^Y%~e/;fNchI O'ObF6QH= a͎ܽKb"^w0&#̜1!'`gv2']QT2~edvۺelALX#OVl?. Єb [di|Iň ^i/z@eKb"^w0&#̜Р)>b-V2g \nX=1bS1 '4!Kdi|Iň$|VJ-(y+2sBdy/—,_\_w0~̬_Y.wL-:t͘愳"8ebl:?{(bOm<(l[Q21Vd6O(%e {<1'NYCd{I2؃Abf!$A9,ň؛#NO,A@T$|8[%̬ e's ϗ\t؃ 1" f,@Ěu1b/Tؽ1'_ %dD `LG90 \ob-V2g}.ebpvۺelALX f!$A9,ň,MQ'"R^i/6J-(y+2sDarGؿKd da$KX2\$~[u#͘愳 `X#NO,C?/e IGH VIl_D@qYBy//.ea/?;`F| gV/̬ gm_`ň9$fCDDb X#NO,A8졉=(.Y%~e/;fNch>6~s+|A3L>2~edL;m2 ,A'+6b ňP+di|Iň''졉=(VJ-(y+2sDSK_\_w0~O̬_Y.NwL-:p1[NdE1b*u1b ?/e IGP+$/̢ esb8m Z>Q/.ea/?;`F|O̬_Y."~[u "f! ͎X#6FGğXbؽ1'_dz@eKb"^w0&#̜М`>QBl20#>_s+VK/@ňDOC{m>Q!.Y%~e/;fNchJϥͬ_\_w0~#KX2\G;m21?[!{(bOmb-V2g$\InI rŋbPĞOyOH VIl_D@qY?| ,AXو' XMQJVP~$bZ{/DOybOY6A\ˇOHG%Y Tk3ⳜgKdKL &4 UF&bȚ d+Ha؉h-ȃuP>9ݡɽ)1:͘p1b"؛#NO,EROm%{= ;m)mu (S1p u1b A`y=tbz,^,=hY`2;PLF|J| ͒b,1bq-X$_,g6A]-DKD3;76?{%3ԵbAUD+:[%3 +&! v"Z%d D}Hw-A9x.Dh(JE1'uA= pb}.w8';/ðx}.t [`wKfwaC])\Q'ӹ'y4#Ft{K6ğD{4';P͒bd]-l<@睶XDϥ. lynltAK6;r'qYXpblc|Q7_69s'yKf1`ňz'+6bhMa-kdi|Iňb=␙dX>Kd[-ymѽob\I\VmD? \lMQoٌbX=1b OVl?p ZlMQ'!=إqY X3OIX{.DB1){ f'ŁtY7Ŀ?Ņp&6F~c2fCm 1bA4>$bJOmVOGKXx;m-Hd}<J#a;rA&ϥ^V1B%d˝9{ ދdo7l+F.w3/ ">4\17`ň 4~i2Y8dsޝO=وX(؛#NO,A'%ǛJy,ɷ,AW eQ@?'cb!`w~^l Gv '&^lN;#>z &Qb1}lo<^&ܲomϰ]Ga #1bP/`ňx͘ . X MQJ ?r`씞$bV/^&ܲomϰ]Ga #1b?JȦ4u l} ?uga3rA%̀1vJ#a;=t)q{ ( 40~V.c \>`/db%xw0ň4KY.h~ zb;~i2Y8@&:N{Y di|IňY.K%C&< 7c[ 7ؿ/6:`LGdئ+>!嶝T|@,C͘ .1budX@̍.vIO,@2O~M/.t ?uF%'ψ([i؞$O3/"D-OT`D0#(JOdw0ɱLCm;mԩO2LX'+6bXNňL6&Ө%ddlsvJO1b'lbX=1b)1@\&,@&Ө%ddlsvJO1bdl_GQx@̓Q`Fv\0=H |]sGeK<ݡE17k- l_Fw0&#*O~VKt$E6DchO71M1ݡ 6]+g9Dh%Sb@T}.id[2%nТrsGS̖tM/͇;f&O~sBL,6yKoe1_2OVl?XNňV&Ө&7?#1&Q'LeaC~riqXnБd̺v2'?K.[btf4=G@̓\Gs<i~+xJNvۺS̈ݲ\)Ol-~^vۺk-l-~^vۺc-l=%ͧ{m;Pnɾygsb81bS_l7@; e' nY7x<ǁ2!dFv -y2`gs@Fv<;`/mr%̢d\s+0ym._a-\]-l<@睶l+M\gI0+1\CV^J6F}/]3K%m~"%Mrئ;#> bK/]ؿ,,@Thzz@dSdiۨ앒+M\xCä `w/ga3{%bd\$}.XMMm}.[diΣx3 }.idc6`ňӇ?a4  RlMzu>f!61bu4>$bT {m/4\<> KLy.o!嶝T|@,@@+6bXNň,MQJ )~)Y"6ܹ;%'? @?KmtK vۺkb-Kxm;m- /9.w3,N=%Mr'ӵ=M}.[dmg"ֺz# 9=q,~C> 3>!2D dR ̸ 2G>4=H? ɽ)D_1Xdo71]]y|>;%dS8"F,@^ǘ"@>1bD/_spp:[3+ V/`}X?7O7,O,bd\=\=yND+%jSYa"O bĈ0O~' Zp$}. D~>%vۺ[ M/`) % 06F}.,SـO! *,BO~& q' XJ=\x&<z,B`GFd}A*ň;%ňkdg%cD;%/6/O77 f ,@*41 4>$bN/ؿfaEbbV!Xp I p-C 5v"rOqKbϥ,4yLya4Ibc@{di|Iň5OvKwiO1Khf,CBsK%ooX@"ARXTLmAU4>$bNTR$1obȥ͢PK1be)yJyܿD!. D?/d5do7O2"E,@-r_'! lMKO.LXP#6Gd<1bB ;%"V1D_ፒSlKK 4\1 d%@Ў&ӨZdD $8 S(?h,Y,6FJߥA pn,6;RB;v<*rHFch\&͎B8} x0#>QX{ ɳCv2`+Jw0&#>Kk\C8~b.N"_ fKk)a8Jbd.^ˑL'LX?/5F|)pbEv1)\F?( 6Kqalvb;edw0A1pn,=͎ÐLGd|Sl&#>Q. œf`*HG`/ySrHFchsq`37`F|2/3dMbb)(DK=!ZC3w McdLRAT$V4AVñ,<Z s@QaR'stKlx[8 ҝ lKdi{  "L>Q.ɲǛK1DKbO2OfEqd١hzBgf:ƙg}UPu=%H24dMCu9y~4&fuVK_4YuE:6F_,g/;"lJgf:N|[LҰITUFϚERɇ2QIj&! 9x.3AB$}.+9QJ؁ș9|Z/v Yda/+g-)4~e6']-OJ~cu \وN,D0bl:?"'$_)QJؗFa3{KX@DaR;^Ȥ%4K]+[1ALX&OVl?' "u1bOmY.*odWl̢zb)͘@=1b!V&Ө (6ܹ;%'?4'$_謗J~v$92Om)? dMb OHV§SXϲ25TTl*ڤd:]h}.r|U>J_lKb~<1[%bh\uQMkuVKy KyLy6Kf\ti)9]-Nl_6 Gsb3tK;P  ϥ.aXm2T_"fvnSlg f9aKdhGdMCu9y~4&.7~X@"j,!g&,BkblX^vD!v*u50KT꧚$PhJ*8 4*R;"h!b%Xv@J>g"N|z# 9=_/}I\\%Lp@>|}+ QY|y<ȋ"ymJy>X#6*>+jSS}Ad6˘>dgҸlzJߥ<1, OVl?d@\,D :6FGğX.OIq'r%^_ؿ/6n{3+C$ߦE!+q/qA3 ?Ҹ|~ X=1b:~ dDzchBX#>}9fCbl:?>&OI DZ,\͘, X36FG@qDI(Y._'Kؽm ߦDxzf@Qbo`uM@ 6ul_#iF?Lxj\o2$+61bdgK<ߥ/`ōdfCDYiMbl:?d9OLX؛#?P}\KD"8 qXdo7lX=1c[͘, ,AA6FGğX'\,@}}8~)tKψ<)~${%pCld@Qx}.X OI=Qb6mX  @ r)OᵁDm2T (Dϥ/{wKch{bxtWk%|6yǙ<+LyJygsb;&$S̈h#++7 X?'epavMOp$Y.i DCY~{!J6F_\R"O\=\wQ+)`Fv\0>,ep&D)%p "O a+|}+89|<x"Oj!@J VJ~̾ e41Yc 4>$bXzbKbl$_!%DC[do7l͢X=1b m?YpV%4>$bX(ňlM+ňՉ8~'bO+TDQKmO[3hLX͘, bu1 ,A(ň؛#W_bl$_(ň{dvKl%>;`/dxq/pE;.v 0t/pCyDFR"!0OIX{+WbǶKN8pE;  f'Ł%ͬ^<DBp&D!_ ]-2Ad|SlK._bKWL3)MK])+~U2tوȀ+"1bMQ'C I\1,M_6Gdc%͌X;dq'L,]-`l$Ҿm|X}+x;ň2'sGǚǠV .w(&#aSN(N#@%͞ohl_X26v&ܠɅN?;С;ׂb3l1"]M b^*v!!tҊvJ*ݶ<̬7oyc(LXS1YbA|X#NO!D /Z_sd[S̈l6\Э͢!>KDC.!mq?Ҋv/ OmVKX-;m-m3#`gcRv۩RdEQM}.edӶYhF\inO0>/\;m-FWa;wJyY+X ?u`G`Tl-6q'=2`gcl_Fvz )bOdV/.Zm;ǃ3rئ>-/l/mr%^Yim!<ߦ$b@p'6J*ߥ<ȋCk%͊|o _~E!l"'QPdIt2V/NwKfed[FQb8},CRMߥ<ȋ%̢d\s+m s+m<}/}nlY+y˝;ⴧ_ؿ/6:+b Mߥ<.igsb8>;`/dlSlKK6}/}n鬴_abt+ň U;%ؽ ?ub/OLX];%onY.hbfM.l~rsc#6lM.Z_,edϭ= Z%g+HfvnSm,#[B$>RPtIT(쉢vBgAFh(KğϥğA95)=v/RP> r)/1 hI"}󓹝>\L }.t73H""6%ҼݡE1^n)O7l7@; g1';PI]-KE>rlsJOa%{`XrE&H”Rv>ɼh왒3=Ks&1 C,i *u521T2Ur< Ț d+Ha؉h-!ܶkDsr \CODd'}+qDϥhKvM/n#a;sr%x<ǁ'mXnY7x<ǁ6xU x0#6:`LGdؤLy$}.[dX>Kd[`:@ X2atZ<=<@l;tTm1gQ36&ϥhB=H dF̈cb;b*6{B~3#1b:+Ba.v<%'1 O7W"O XOfГ`@"zb@/Oş` ;`c`GaU`; bT}aBA[dA;%>C_+tS`r%oXȥh+1ay@!@ `yQ l!7U,FlN+LzG.vB,DF} *6 l 72i`Fl G3f,Sϥk%gǚm2TLm/6FGğ@b@ S{m/ q'D!@(?O6:@e`sO| ^F.w34$X"eāK>/d}.ea2> p LBR$6/?~dLy};P͆+ۈ9{6NM/n#`f%'`DŽm<֞?b6 ;65VJE!:N~edb6 ;=q' Wa+qNOj"{%hB1bAdvK?]-^om-E.Ў77"OEiJZ"!4b1D %R@t}.e8֘/Omdl~Ca AbXTLm) u}Qi~GЇ}@,Pb@d[7"O,4yǛ'ei.l}+h,7v[@zǛJȓn-=>N_J]A,}V %6[%Ҽk#Z`Jߥ<̬Pyc̖sȓb = ;P7@; 7IN@2_ = } + = } nJo{qΓ5Knwdb;ya b6^lC͓f=a.v<%'" /;"Rst߉? AC{qq @~[b"'`ӨϗVM/n#a#LG{m>QV#!Ybls" l^Fv >t21 !&;Zv܌?uga3{ Wa+qN-m=v71LIvJЄbX#? l쉲 B=Mh{-ADQhzBgf:;,R$nS<S%GKrH2Ț d+Ha؉h-!ܶkDsr \C '2ЈP>h{+@ }+@tɼ\n& lͧuR!ga3xhC͓@ oүaBMaBA[`1'b?ۈEE9~' )>/\- e2͘ . v&ӨQ ?'Ndz/:@_6;&ߥğfC1b 9c|o%dM1&tM Q'MğA8 IQ ?]-^om-.Ј/77"O4 l DBh"cxKH1\%֘2 4bO#B.d~ȓ쇲%oe1ICZ`_vKJF{)7l7&<ݲVo"Ly_J\6/[%dz}.ŖJ]A}V %6[%ҼkCZ`Jߦ{+@!aݓ}s:/7Kayda{`H ;@Tl<"@ҝ *6:`LG3x`6KmtK>ymaSH$ ;Ї`FG^A (~ {6Fv<Xxa3{}l qX  >t`y~C/Q~3\Іv; xw`}_;o͇d<@睶E2ZBOVl?DA1b?:6FGğBj&ğZ %l0c`͇;flmlKatidSS>Q>9'a$ !-^7ؿ9;P+4/2GdMb659춉OHG%Y TkJ^j$W8o$ʗU\$#GPtJ*dMAh VA͘(mD]hFքpА{// K ~/i8oDӁw >G/96fSDi@Q}]IIQP X#;;Sc{mA^ 쉲sbW+VG! ljBI'ȌB,M p$!DE6&O`K<g~blMQK?O~oMȣwώ wAa}>&Oxv tĞ;8*&u2p͠<M8O, dgu@$c"YQ 8>DP1 Y=3` njBXwNi @_?7 0f}0! hDG#1^AXI^҃LAn);D1D#-.+>!!27l<{aa~?/̬ f70_bdݶ.l_S.?P6O >;"lؽ% ТO=@z3B Oy?-,@|bB` X#~sh%G\mZz#f'LSOA֖ pʣ'6GA^ 쉲sbLm $Ÿ́{%?? |OD{&?nM@|wX”&v vυZX'+MQ_?@chQl| @?@chQ BKVh"`JO0D B@0Xy~chQ'’$ !֖ a$($Т$ ]<K!?`\($؛#1(OO@zo!"af o@_bl?."."t) fi%3^vD;!ZCKDhIN8 w-A^|D sϥpňM+IO0})r&ߥ_DqRcm8ǠAl8_1b '0o`%qŞB9/0;CK/b'zq Z[ hz$hz"Z%!ٻ : &X#y\)?s1c(r/ULm%.qhr=lz$hz"Z%!ٻL]1dRJE?dMC0DKAD[D58v.(35ODfD-ϥpE>g/[ϗ̢sHRT!nf\ψB7l=>g-Ob  pNBǿb[$ݶ<Vl3 H&<L{BS%ǂb8lV|d &?s1b0OD-,V|Bz_>ޔxQY6'NQcyߦ<RҞ 4?.ؿ/6^1c ?fRcJ 1:[7,M`@cm-goQldE,Jck3a`Y!`~^B f<B1 Om׊q N#'BkDsmW$%6Edٲ7'ϧ<9d Jb@ lMw>Ή?)Qpbl>Zz3H O?Y>iLBkds~ OmZ\BS hzBgfD"O/( '<9d e1 NIx^T+\*p9A=-HVSXlg"8~}+ |":d|@v>?|R,A0'!m6?BB|);@+'L *lgbc/@A>gJi[6J){v"^qJo^-)e;@+JҞoEه NĽlD ,R6jKy?ҺiaK LX?J顋83{6 X :QJyp3OR^b1dq 'bmq{8^|-hQ;N />gJch{`2^'"U821:SX/Zy:SrXbOz3BCO?{2b@[dk׺s (DK=!ZC3w,? fi ZȚ d+Ha؉h-/7ܶkDsr ]h|"clSa1e8zpqٜZ9D1wLJM7<ǝiOӋxa@ci d &2ه1wzcRv-tpz59춉OHG%Y s#6=1 i݈]3wM`O$Xl<&! v"Z%d Dӄ/O9x.~}.[(؛#NOǾܱ~ZbRS(vt)Qȏ1bj~~sN[ -DKD3;7bO#]bl?_Gbl p9!QȦ~Zb5'`1 (DK=!ZC3v`w,GMğׯbiÑdQhzBgfIz!v9A= Z%g+Hfvnm9WL͢Ƅ@v6A3+;"h!b%Ya;">g"A ק*'h'|B(r=l_q'PzDK=!ZC3wMcLMUfDi ;-òPv%89?HZ#?]hP>g"֏ǭߦ<ǩÏyihzy~؛#)=遦lٓ|Xh؛# n8Cý{߼ 7GedIA#Jyx0Kgvz!v`w Рz[D' D,i ؓjB8r=lz.(G= }I?=;1ݘ3d[do7O-bQ$L -Pa)kkȪ'U9ٶ'ɲ;?a*lgbHWa#ҞbJI2&! v"Z%d Dğ"N<<Z !؛#yJy1'_f hzBgf@e8s͹s"do7Y;;σցK2EXހM0To'8 6b-A`ah4(Lzo4GOHG%Y 1bz&Ox٠r=lz@J=-HVSX_,Ŕ(eT"4Ä(ֈqY0?>g/ t*r[)O8I3lI1F~_J[ ٻ{m^/]GLݰ6,"6j^O¨C0P?;#Brp?'Pzu5azXyc3IgVhZvD;!ZCKDu{MA);>͇'IDǘmLh=yP,̀B]&<bI?'B9A= Z%g+Hfvnf8 M/yLyymx0-Oϔzc̕9Ǚ aC0z!8̀Y˛)\&<b^~/{mo'q=1F|Pi?hzZ%h`?Jq=)-(4&hK=66,Nߞ V_':?`/P4OIzo4GOHG%Y ő' bd( $ڽ~7]#' D,i u5d=̱D LfԴд5쉢vBivtر-'ٰ<Z &<` r!Q/6$]rxTE`bO`DNi=_f hzBgfVb` 6F|{c~ϦL 1-`yLyh|ؙtITğׯ @zhz"Z%!ٻ^.dQ'B9A= Z%hG?_f (D!vh[ -DKD3;7bOx٠r=lz@J1pg6PӶI/*lgb^ >og]}1P'_abPe~$8l`/4ĞW @zhz"Z%!ٻ`:lY!d_?'B9A= Z%g+HfvnlMJ5̱D Lf*YT慡4AVñ,; Z%'^Oo3DǙ'yO@(r LyXt؉xcx&!⓰"JN_Omx٠r=lz"Z%!ٻ}/pX#y>1"~K~"o_Lx6\zT?c҃DR%Fiß"~ vژoϔzS`$Lxlz+6F= ~=go )B) q:Ph@"~ߦ|>21^."O (DK=!ZC3vbȓC94ĞW @zhz"Z%!ٻabFС_B~$8lW0~6 )=_f (DK=!ZC3vn9x !nv'/?'B9A= Z%g+Hfvnxc`:lYxD l$ڽ~7]#' D,i -#ؓj!vh[ -DKD3;7l{~+2$3D25dv6^~z r"% > 2PBN'@0r"'arP&_Y '&1!m ymLyy^/]GODKD3;7bOm hzBgfA?A0Eو~_A/&<#Xy~cmtزۦS?XTC8m`vE=_.҇#'%Y f!!to7m{I-4:Ib /fCCl^'Lyk^|ߘK'&1!mG7m{i6^|ߘ#_͘!gؼ)LxC:!A?A0Eو~ch7ؽc'^|ߘ "Vl??/ymȓ1O`ub'&1!mXݶnjPy~ck(~`Yl^&~jMbl:nj_/́ o9njfEB }?_Lx˶[ZnNTIJYLHd70!~ݶ?_f (DK=!ZC3v$ڽ~7]#' D,i  lM"O2;ȿ1)=_f (DK=!ZC3vŖ^z OBJ_ө@`/?'B9A= Z%g+Hfvn9xC?JN_$z@W @zi Q>c6XxcN>q:OI􁖯_f kӘ(e'jf34m-! QU4AVñ,; Z%kS/yǡ ȃuc0=o"PO22PibR&M-66"r'Qi~ĞW @zDK=!ZC3v$1Y_ʼn7 _o y; =1zdC-¡QYAׄ;I@Q)ߗ@Ǎv;:SxzrWLxqa@ G=g^Si( 4C~dRǍl>zxbm8"M g4brRtITQ*cƑ2$C zT? 8=(4d=xOO>!NPd{0;1$v;:Sċ`sߦc>QaaI8 N_ʟj!vh[ g+Hfvn@&N TO253HhZvD;!ZCKDhIN >g"ֈ 3O#`!':4PAɏ2b#n9{ bO,I%'/I?'B9A=-HV݉>VbdX#y>1`hyLx& N oLC zT? 8=(4%xOOA2ߗzo 6)r>v Dt=1zzrWLxE;f`w 0D!~`vژS x = 2!P(⇬ѳ) vvL.1bϞ6N?tB؜2Rv6A3`GJ|zrWLxҡa@ G=g SƜ!NPh`whJOjcCϝQ)RЃzcQX+6f Ȅ?/ƇIymLy`GJ!70}e1!(nSklV__f'z}I(DK=!ZC3vtز$70?$ĞW @z}I(DK=!ZC1Ѝ{m^.d' D,i Gőp$`@?'B9A=_hz@J=-HVmE#1+bȁm??'B9A=_hz@J=-HVmЅ{`a~͇= -)Ou?sCĞW @z}I(DK=!ZC1`:mb'/s)9~ ?'B9A=_hz@J=-HVmb;6,Oy~ =_f DQhzBckBm &66F#B#BBbIDl1bӷC)NOD_+ {m^.dQhzBgf퇍66"r'XK;ғ S{m^.dQhzBgf퇍6ő'A6//Q?'B9A= Z%g+Hfvn,? 6D lROmx٠r=lz@J=-HV=Y~7eϞFС 0Ou? _2Omx٠r=lz@J=-HVݰtۦN^$+ N@!OIzo4GOHG%Y 6D , '$ڽ~7]#' D,i X "6 L)NOi=_f hzBgfdI2/2j!vh[ g+Hfvn@&) pBy(ACje[$vD<Z!ϙaY^ԽB˼`)no7m'Ǚ|B(r=lgfIz!v9A3vtزۦN^$aa<RvII?'Pzu5D,Q!RlI%'/)=_.҇#&vne'jf3449u OUrHhZvD<Z!ϙaY^ԽB˼m%<1 ؓc̍z!v9A3v$ڽ~_J[ ٻ`:lY`Dmb'/P X⓰"JN_JOm k17="Xyc3II5.д5쉢vBiğe=ϙȃuqbl:njK.(NQ2h9wbE0@*Hy&LD_Jy͘6Al^&Lyy^/]GODKD3;7bOm hzBgfeM/z  G`D^N_'$ڽ~_J[ g+Hfvn_͘67mzǖy~cm 遧A?A0Ef!!0ymLyj[>omWOL~+6bBAl^c\:"QO4 NvJ%njȓ(\t۶6(" D|"&|PD#'|Vl?)&`2^oaBo9~7m5Vn+xO~_f'zhz"Z%!ٻaadI!D_ĞW @zhz"Z%!ٻ{m^.dQhzBgf퇍6ő'w$ڽ~7]#' D,i 1`|_BOIzo4GODKD3;76&P̱D Lf 窩N'쉢x.Cψ~r)ݶğҞdQ'Pzu5.ήe'jf34huf v"Z%+6O@ dMf|D xu'iJ.cԠ)^/]GODKD3;7WiCd,i  lM"bEd_:OIz!v9A=-HVSXЛA̱D Lf F4- Vñ-8uYzovD`A V~-_[Y遧cX~_J[ g+Hfvn_.҇#'%Y 6D<[ȿ(\j|B(r=lz"Z%!ٻ7b$55ihkDi ;-òTb/~$)Cr(ֈ J_>~+=?7KZ[CC`=OjcƕD?ؿJLy|8ݶ_ vi1.d-)`4OڀHD?t1s`s }1 I|4~ؓcB9A= Z%g+Hfvnxز(dO_ݶğn_f (DK=!ZC3vŖ='C%/AJ Oğ/0#OIzo4GOHG%Y 'B9A= Z%g+HfvnĞW @zhz"Z%!ٻ`s-:OV|Cym]*c1Z["'1"=eGB#ady~//Ou? &OIzo4GOHG%Y 6Dad_=_f (DK=!ZC3wMcboQb$KHgB4AVñ,; Z%'8QCȬ>g"]h|Δσx0{遦, ?X?Lyxci nfaJy(?ORODM,VyAD??x0ǘ6!Dׯ @zhz"Z%!ٻ{m^.dQhzBgfIzo4GOHG%Y 6D6 ErOm zo4GOHVSX؛M0\O fi ZC:2;"h!b%Xv@J$"peܶ'G3Efx.~,'|Vzo6?>_Pr}.@$6?//`'+>!jcƂ8vBҞc/(? >=7l1;P tNJ,/)BN~); ؁lSv ;!ilr(El>KN@1)^_Dgݶ?Ҧ_@a??I`/dĞWbiÑdQhzBgftز$4l2/ jjB8r=lz@J=-HVݰ6,"6ğ2/ #OIz!v9A= Z%g+Hfvn @ gW253HhZvD;!ZCKDhIN|br$' ?}>g"֏ñJ_>1 DcDV|CN_}.@$ "j5ݶ<@v"il :g??/ъvژWzcY`u5ݶO( baY:e*lgbl!ymLxҀD☬E^tj p_KP?7mK`Q܊],V|CC6Svژl_y<Ŗ_K )ymLy!؉(qKψ~chRvژ/ҼbmOjcB8r=l{-ADQhzBgf,>z[y~,:O@h#:?_%?'pz[D' D,CjB8r=l{-ADQhcmXnزs?%G SOğ/ S{m^9]GOeH=_hz@J=-mvŖ= -<mS'S{m^9]GOeH=_hz@J=-mblM"O 7?̋LjB8r=l{-ADQhckvŖ= -<d6S'DI=_.Ӈ#'$I= Z%f6P^1(CB6etز$4@e`'$ڽ~sN[ I= Z%g+Hfvnnزs'(S8hz~$0~S{m^9]GOHG%Y ,Dl1= -<`zCS'B=_.Ӈ#' D,i #adI h2/ ?'pzhz"Z%!ٻaadI!G6RΟjB8r=lz@J=-HVݰ6,?xc"I=_.Ӈ#' D,i u5a7a3b$6UHhZdMC4g<Z!@/i1sOPdVP~_J[ Iz!v9A=!ZC3wMc"o$\O fi zg $4- ;"h!+=?A (bnSd?2+ψ1B|B(r=l_q'Pzi u5qdXyc3II5<vD;!ZCN|VzϙȃuP/i1sbOPdVP~_J[ Iz!v9A=!ZC3wMc"ous,Q@ei>g/Lx*ei0 vD?lB:XSlI1+O|B(r=lgfIz!v9A3vbȓCĞWiCd;7bCCX7m-O xON(? t6كjcNbO Eg:6jcb?_.҇#&6V}c~ci nSZE^/]GLmb$;ܝ\O fi!hkW4AVñ,; Z%kc}9ğӱQY d-)~^`㿊OcA Jz`wAOڀHD?KLxxaҞh lجǍd--A@njEp3OS8mQaߗ ymKLy K1Ȍm 2?ݶ<^A1]~_E?7m2XB8r=lz$hz"Z%!ٻabFПأ8d?I`/ZOm1 DQhzBcmIz!v9A=_hz@J=-HVm#b~z O@%r Oğ/?'pz}I(DK=!ZC1ز$7$ڽ~sN[ I= Z%g+Hf6 6D2E`/+OIz!v9A=_hz@J=-HVmbXnز B#aOlQ~$0~)=_.Ӈ#'OHG%Y K l"OnA̋"Om1 DQhzBck+b#aI i?̋HQOI~h~sN[ g+Hfvn@&_:(AAU)4Aֈo71aYblz!v9A3v!vu5?RgAAufvD<Z!ߟ3<ņ,C 6F~_J[ ٻJgf͟XM3 fi!KM C_fy< ЙٻxM3 fi!д5Ț D7rǘňdX#^/]GL݈]3wMf,.SL53HXeS73QT|gfjiyc3I-U8l쉢vBv@vr ]hG`u7m͂ vVNKRe&v v@~ f bĔUblz!v9A=!ZC3tJb[1З`uyJyhF1E@cm@~"1!_ t6XhoҞdF6<1(L_ t6]ց)Dcm @/υm6:<ߥ<Ȍmd b[1VZ% =hoҞdF6ڀd[1`uyJy(> mb7O2#XcH`=A .ҙٻddjiyc3I0o$_~33wKM3 fi!hkߌ7SG&vn}^< Lfߌ7SG;7Ծ)y$URO4AVӃ>g"ֈ({hohO_.Z|- Cdkx٠r=lzBgf,C 6F~7]#'+Hfvn᠈:<ߟ }1Cu5?gAAt+P0Ȧ Ad+Ha؉h`dMCPsf 9x.@LyӋe @N }?7O3$#fbkdaBXpЗc8z!vhvDhz"Z%6/ti !,8LyhL1ТvҀDs/=!fQ C;7k@4 =z͒@~&LSho`>ؿ> CPibcγ@/υJأ@~41 _ t47O2"p>>,-1b&ׯ @zi mLm&hL1ЗdJiyc3I CZODi 89r ]h}.[bS6FD~Bchh\[&ׯ @zi %LXH&ׯ @zi 3.O_dO7cB9kkM3 fi ztE%R"G4AVӃ>g"ֈ(<ߥo#N iG<6'ief鍶bOixR|ĞLR?>DV-O?nxx.C6 s&1A=T3);z[1Ywǘ!v 21b ; 2^/]GLSY"[g/ t*r[)O8$#^/]GL݉=_.҇#&vnXt5/aa'TI!dvG`DhNchĞWiCd;7boy5̱D FfXne )&! v"Z%_}VdI>g"ֈf6]3o2 A.D@: D|AO6JabcCd!0 ` "Somb#_͘nb1l1aadI!E``Bj|B(r=lz"Z%!ٻ7;O25HjTM-t,V5(Ț d+Ha؉h|ISY'<Z!%]3o4A.D@5@!'y3r '@#(x15)_J0p#Ocbch5'/ns4^|ğׯiCd,i X "6 XchdS'/Lch =_.҇#'%Y ŖF6 Ia*xЗ`vE6=_.҇#'%Y ǾcmS_/yLy>|A`uabFcСchiNO] ({m^/]GODKD3;7fchPجLy~}>Ϗ| K~Рz ~$[ . mğׯ @zhz"Z%!ٻ`޳҃L1yLyhH^?GLm@=6,Nߞ VchNOA_6$$ĞW @zhz"Z%!ٻ`:lY!G`$=_f (DK=!ZC3wMcboXy3 :ډ5Di ;-Ӈ_`Dm6,yd D~$663'> aCBX!CqBq64Rw*Ly`<1'"/'1 ?'B9A= Z%g+Hfvnf806F| 1"8 x^ =04̓`8/_σ?#1 Cm'B9A= Z%g+Hfvn- l|ZğÑdmB#aCz~$8d_6 ?'B9A= Z%g+HfvnD~$[ . mğׯ @zhz"Z%!ٻ`޳҃L1yLyhH^?GLm@=6,Nߞ VchNOM1H!'$ڽ~7]#' D,i bȓ1Mdch$ڽ~7]#' D,i u5d#arXy3 .W\4AVñ-8u |<Z!<y'W( F Rc$Oc̕z!v?O hzBgf퇍,"6 @:?1dĞWiCd,i b#n9xX⓰"JNch)?'PzDK=!ZC3wMcBo"O25H`2U_vD;!ZCKDh:cY'<Z Mce7J=Dn(O@*5Ih.^ !`!@xJNJ'2vv͐L@A?A0Oو~ckgؼLzeIzo4GOHG%Y 'B9A= Z%g+HfvnXt*r'U l2ĞW @zhz"Z%!ٻOL+6bBl^'LyheL 8Ol^cW`8 76A- ʼnN{_m@?I ęm$=_f (DK=!ZC3v 'Vl??1Knb1eCȂ~`Y;7myc'/>omb`obǟ(X 1V6,:Сch:?`/Dy{m^.dQhzBgfA?A0Oو~ch7mxT(/>om "^1(/1a|A`2Тwab= NO$S ,j!vh[ -DKD3;7lM"O` ?'B9A= Z%g+HfvnlMb'b$j+QdMC0DKIïyN|zp?AcKbOnD?Xu?xlbJHSҞaA( b,?Xp}K遦;Ojc)~ ρ.Zch2$?^9]GOHG%Y 6 O1 (DK=!ZC3vŖ^z B,1 Ou?21 ?'pzhz"Z%!ٺlD6hv'1 y?'pzhz"Z%!ٺ1,'Vzϙȃuc!$_[~_.҇#'+Hfvnxm`:lYV@{m^/]GOHVݰ6,?  )BTĞWiCd3;72&\Xy3 hjCtЬȚ D8>g//$"=_.҇#&vnpG:(AC9 R9LE3WvDxx.CO}>@|^T>`YO2؄? tnbO1ZׯiCd;7bOm 6XD4lD`7OIz!v9A3v+>1D??/1Iz!v9A1 2`iҞZ}nǖğׯiCdm4ϰ t!o7m-$~_J[ kY!!~nSZE^/]GLmb$;œb$Lj&+ wò4ם4AxO4(MϙȃucBZ`h( `!'A~P_oσLy"O 6XDbdci?'Pzi  M"O3k)&S{m^/]GOHV݉?gCL_?7צ<Ȍm6tز$O`"=_.҇#'+HfvnX#6D;`"OIz!v9A=!ZC3v!ÍV{cпBߟ^"1Htز$(!OIz!v9A=!ZC3vkbȓC̾JchN!'$ڽ~_J[ !ٻjÍVy~ W':ǙRxm`:lYyМ=_.҇#'+HfvndMC|W25H5jơºvD;!ZCN{O )>g"ֈi3 S||IocV~_J[ !ٻaadC$XF6p'$ڽ~_J[ !ٻ`:lY"6D 1݁.^j|B(r=lzBgfD*\O fa ltDi 8u|Vl?>g"ֈeDOu'O7lg/Ly BMblz!v9A3v!vu5?谹M3 fa!SQ0&! 1,1 r&ׯiCd;7biLSY iy3 IWOvD<Z!ߟ3<ņ!DNM_.҇#&vn.ҙٻggABŋ=?~3 mW`uyJyi0/n"]ց)Dck ?~|-%B)kgNBj30hn 皱pGDi 89r+xx.@Om'\1朣L 4Ehأ@~P_R> Pq_(<ߥ<ȋV_d> !DIX#^.d3;7LmESX_)y$tTP]rҦBH &! psV ]hrԧ(<ߦg"N|I0]h(7njؿN mx:>oǢ*{nj{JyЇzcRr v≁ߏC R<đa) mb ǘvJT 1d=~_&`%Ȭ@wρ.Dcl+blVR`G7O-yQD&BJaO-9"B8r=lz͢)Рz[D _hgf큇 ~`!DHdq'pzDSu@59춉6[_1 "@A6G^9]GOYE=ZSZ#hcmbiÑdQhzBgfG`91قߦ<ݘ#zo">:cm/_.ğÑdo!ٻC+i`oc獛&Z #_Di ;-òPv%8uܶC<Z 'Ҟ4o+/~@9h?7O ٲvĩle0[;L 1j#;'aLJ~J]bf [&<ҧ_;ĩAB/Dυ~7]#'$I= Z%g+Hfvn c;'aLJGq 6Mr!DX#yJy~7?.doh<>Z}#;@D0$4B/pf!A(LyO]6e@0 Apx0%JyhP4(~LJ)RMHlA}̀ _> ȓYmv!@N-&6D,6m˘SCI!vh[ | (06G'aLJD#X˜-=2o(١xS=2o(١k"[MP,Gٶ))ݳ;7K#ªBPò0DKADyDDA*ɴkmCO]n08(ǾbWX#Db7/(S/$XnڥB9A=_hz@J=-HVݘ') 2]ٻ?Զֲ S &! v"Z%d D}It `p'AܶkDs`3G0xz|X%Lx}0EO;ĴO0d ~[`7Ȣ◐zStX[ I= Z%g+Hfvn JB9F|,GOW$-DKD3;7bO1 DQhzBgfVlOkcB<O0YOqw슓b/?Olc{V|bn)>̌;8ذKJrpz59춉OHG%Y K2O1 kDsmW$-m#~+>`5Oc")V^xAm4AVñ,; Z%'$)ǧ?r ]hch&on '@T/_f ğׯ @zhz"Z%!ٻyR}kAO7iKŘSTIT(쉢vBa(;_h: C+i>g"ֈ ċ&oe7'x<ϓ/'?N.r[&^ovXNN}@9C ð-[2X!vh[ I= Z%g+Hfvn vO$~7]#&6o%> 2R^m؅ፂVv }5x K|-q @zO#= ح1塱@ʧJBT"{OH-%3wK+gM3Di ;-Ӄ/>g"A ?~)O1do77,i[74&!DF&bD`gblz!v9A=-HVݘ"Q6F~_J[ g+Hfvn53m{IAɲ7ǘb8B~Jck4x O-mBc̎ɷ^oZCk&oZZcm4abSLL2*ͺȚ d+Ha؉h-'a$ D?@ ȃucƇv }e*EgC')I?x٠r=lzBgfpe |ٷ.bE[bl1"\cszU+>kHs}x@v&(jJy"lR!\G`baRvbCFKKJ!vh[ -DKD3;7f~chOx٠r=lz@J=-HV݉?_f hzBgfDq id+Ha؉h:hz|쉢 %Oϙȃuc*=^ch&bBh؛#; !|ҞZ& bBhJ6F~7]#' D,i u5aH07M3c&! t r ]hhooV& bBh؛#^/]GOHVݘ'Q ؛#^/]GOHV=!cS;72"YBXolw9Izo4GOHG%Y yQU?;ccm/n$ڽ~7]#'mBSXr钩\*aȋȚ d+Ha؉h-^zr#r'/\<Z %_=2? qM"`>9!vh[ -DKD3;7l8`!-3_^.,9%h[Sv4>9r=lcm$z"e,!vhgf-dyT%L2~ !ͰxvD;!ZCN|IbJ|D df6kdg70xuX-󰩲 h @.6FvdjcV~7]#'+Hfvnğׯ @zi ؓ!vh[ !ٻmRJRɾͱ쉢vBa1NzAA6FXרȎ¦6 @.6G0O!5B9A=!ZC3wMc,•HͰ{vD9~<Z X@ҧ^d8L!@D K`d9׺8N0?ǙaUAؙ '7""LnbO1euh١dٻ{mn~m4;"lؽm :X_5#! Rǘ$~7]#&vnĞW @zؾȗH_OzΖ~znSZOx٠r=lcm,kTbHEsȪuvD<Z D@ҟ3Ǩ0JxȬz(A :R PJERٛ;c-(_1a)?7mO1\Izo4GL݉?_f ZSޔ%͇(_;пmrnRZ!h|OqwD<D!HqcDbLyhMOqwHD<DjD\@Eq?h R<&h|=N4pH1A)-Mc$F?k6d oM% ?;"h!b%Xv@JNzp]r! *ֈ %i=Xr;Jԧc{m^.dQhzBgfIzo4GOHG%Y 67ym'cACHvژzaS߽fcAJ 0cAs{=?oL 5 OӋYym'cKO@%xޔjc̈R6nSZDcmcB"O zo4GOHV݈Eٰ `AR_vژ^.dXu5 -I*dMC7|D SgcT߽fcAGq%MCm $'ǛK ~7]#'+Hfvnl'rقH7m- &6!h=N|Cu5 l-IW=){m3tԾ&beIB쉢vBa(;_hBr$'|<Z?>M_)/>!e=8z"|: ]I3Ƕ~c"&7$#Ly0^`σ *Y0;+ìa>cm$~sN[ hz$hz"Z%!ٻ=_.Ӈ#'hI=_.Ӈ#'$I= Z%f6!DH艍HXmNgf0bµIBĩER?`))?ٺ_}^D]Q4A<Z!3&AdGaSd tv X#^/]GLSY1ڤRuG)S ~ͱ LI^0fyd S]Mwefvn}8mRO\W?oDdũ6@*ٺ7S|Sla `6Ӷ1!vhvF[ -DKD3;7^L?Ћ }?_Ly)cm:`fFz+0EuaBUyGn_CLm0mRcmwmJn)1ԯ%/B|)NvژG|A')OD_`?b%-bQ@1b.^\zT?cyT4;% q:SƖ20E@"o4 > tL;)bY2O@%xcX0Ef)0ĿH&OIz!v9A=!ZC3v)x^/]GOHV݊||B(r=lzBcm ׼{遥 Z ˓^/]GOHVNŇCө@`/COm hzBgfeMIqvROm kn-u53HjkRB쉢vBa):3Dǘb=o"P'F0)\?moB#d4}1`HbQcb2 `G͘ |7)ym;Q-*cXv$8ɁA@ܕor!N¡?g A1"(S}2d^ZӨݶch7m?'Pzi u5h+i]r Lf FaI CZ&! v"Z%d D}K=8sЋGA1UğǡD? 8tۤfo~Tq(4hX 'Fl2KKu,2@?==o"PO (4J ) w ; pLd_I=  %ȇ]C8=(4@ <') v:lrz_Om0 OuLj9ᐈh1] }1bC.¡P6?chjci~ C[}eb~7]DÑdQhzBgfdI hXmVj!vh[ -DKD3;7bOmx٠r=lz@J=-HVݰ6,Hؓ^ch6^j!vh[ -DKD3;7OBvFcko1 6,= H~$ !Lch6$ڽ~7]#' D,i 6鰙ğPxJNci'$ڽ~7]#' D,i bȀT)r$`|i=_f (DK=!ZC3t'df6 笿ZB}r|_&OD<9a~  m #ȃ(chQ ;/@ Т "/@'Тm`%Lx]bӷC OğT1|=_f (DK=!ZC3u{Ml&r'T+RsG6j!vh[ -DKD3;7lM"P$`>{m^.dQhzBgfNm!/yLx6ŇC:?ch0OIzo4GOHG%Y 6C6?<)9 S{m^.d,i !D y?OIzo4GODKD3;7lLc1:`+ !<3a~?Fl#fCC>chQnSa~H'$~_J[ !ٻ{m^/]GOHVݰ6,"6TO6CۅQ;`vE6 {m^/]GOHVݰݲS2FS0Of/`6QymLxЦ 嘞AOKB'Z$LxI=Karl@*(%ȬM2Dє%"| ?b%,AZ W/<"R`G͘ |#ymLy/,OI_~7]#' D,i bȀUDchr=_f (DK=!ZC3v$ڽ~7]#' D,i bȀTNE?mW'$ڽ~7]#' D,i Н }16"r.¨~?'B9A= Z%g+HfvnDM'Ӱ:OIzo4GOHG%Y ;#xcD3X~4ߦ< "MB+1S'U9m;^j!vh[ -DKD3;7M~Ӱ OIzo4GOHG%Y 6C6,x' y`?'B9A=-HVݰeB#d3Сzө@Lj!vh[ g+Hfvn9xR)9=_f hgf(e1 OL ?'B9A=-SX؛ m4+AAU) H;"huOȬx.COߥ<җ`uY~|-RdQYiCd3;7bbO>>n|a .ҙٻy#Ю?ݰ Ț 3?{{cxzO:o)XnHlߦ<N{,cJgfY؝\Ṻ?6غР6 ôֈܶmicOdMBDקe81r ]h-`S]f2K(y }rכ2PfЄPLn1APh(3=_&LxѤ`dCJAxj`i ScxPip9 _0CI1 $lMz!v9A=f]hP=Mh{-@/I3v%f6 =h8sͲl"498Ǣ`d(X#o1 /0`,#ݙ D4$70(kbl`w1 667;@fGF6)NŢP0aC"6zlWnԧ?ޞݘ$Pc!ӈdBmS݉9߯_.Ӈ#'"Slqo(JeW? JdiO-Oɍh=mZcmSK9aJdiO-UAdS>dPiSϲXil~chQMߥ<q1bl)߱1Qc1(&;Baf;-ТMa_1•WU鰛aa"X&mO؆A;iSY8Ǩ-!嶒O7D?4M|"A|C!3v!<"l7Ȑn7vLR=‘ՋjAϐa <3wKȇKWTsUtDi Fl$Dq,<Z!`Ć@LHa$bl|&O=^/]GOHVSXiKV-R;!ZCKD׼'ЈH;"h-,3D=%|@ O;"y8To1!Gbln2,xM1I ubl qX zbC8؛#B9A= Z%!\>>7>%,b*q7& =1񍶏 D%:SBa6G‘[D!ZCmCu@;Mhhv0N6`!IN|bVl@|D L b>TSBl=A=odO!Sl7͔6G삟u1,`&Ɓg`]vH#鬵+7l$D4Ǚ@-'Q ds+"iț  "6/t]hP=Mh{-@/I3u107o>SDx3e?AO'|Sl#AO%1v"c8e9߇Pm'>``_'s l?e0FG`G nk- 66&iB,M{3_];"lz͢)Рؽֈ$D;7f1(ُ}*F GWӋ)c#I}SbR`ghchQQX5c)7*Ț d+Ha؉hy9*֏Y({6D? cτG9̸ Z 9Ylb 87],VyzJch鍠j^|B#&vnș>'-u4AVñ,Fl&ߞFAC{!(/фGOHV݈:Lmb/+6^oZ p[ρ/_.҇#&6!g턀]hvDߥoOy z!v9A3vvE`1A~Sm"d>>=x7"A|h76sH6!rbCE6hchXnH={ǖm1lXch66+1`/7l$7o^).ɰz~cmk?M0j獄@v6A3+^xK>M) aSd;;G獄@v6A3+#xy0i]<^AO-xtz&§z͔Ǚ4ND3;7S3wKbu*M[?Di ?C<Z '޳e)`Ee~vUWf;C`h+!؟4wП 3ӱ>i] ;7RL~Z|@B~F0OǙӋ@%jSr[{O?ҞZbOx٠r=lzBgf鍶koJ•*Mp&! v"Z%d D}Jpsr$iӄN|;ZȎCuIbq\Q,~%SXsǾ̂$!`i\*%eFo|ǾbCi,Mg:aB2lK'+;`i̇ ;ٰ> >eߦ<Ч8=l%yJyh[wmim;cwm1 r0z9!?_.Ӈ#'BkDsmW$J6$.LAdgP3Mf+>X9.Fv Z#1}4bCBdgg`8Ϙ1M?~FJy)G}AvO+;O> >Kmb[1IQ0 ),yLy,R$'DvO+tI} a6 X 3v&xR,R$'i1qσg`Ţ3BF"~82xTBkmJȚ d+HiïC3DSHb#^_Lyywb;oEvͅKR|-j!vh[ !ٻdFW%s_4AVӇ_r ]hJci \SdwcGaO!vh[ ['B9A=!ZC3wMc-ފXOdMC4!<Z D@Ҙob*c̔z~ aO!vh[ ['B9A=!ZC3wMc-9ȱ]b/vBqvD; Z%kCmֈB#b8v.(3GH`nZ$/_.Ӈ#'BkDsmW$-DKD3;7cwNGx~a]= I3CO?(~ e]V86Fz cLyj;v^%R ]bl7vON6Xw|G]@-/oblDž6 /'TY.:[dMC473D2Na`C 7'JyD=v' v+CC8LׯiCdXȜi KaSiLHb Iz!v9A=!ZC3wMc,Q%a&! v"Z%^ϙȃu~&^}Vd6Q57 0z!v;!l@hDK=!ZC;fZgJre'v bJb H IWd1\˧dMCz@J=-HV݉?$ײ.eӲ&!͋1Й0Et#yLyhH%l=1 <-"y1 )D9ٱ~ZmQc:Sm˝#1b$4ߥ_hC0ǖh7K,mSL,T:b8vBg`'&6F‚ϙȃucB#}l1{ǘ=_-B;o46VCٷ.oB95(@[bl:F#E`BFxGdl˝̀I`F~_;4}0oo1 46G4bB&éaS/$5_f 춉OHG%Y _1eO!vh[ -DKD3;7 VP'쉢vBa(;_h:[D ϙȃuGWYNX |'ٷ.E;P+'1?7Nw1 ?Oqw~~;D`!r;؛#yLyz ^zSD}zo4GOeH=_hz@J=-HVݘ9 &rxLZaz`ihcałt!<h$~7]#'$I= Z%f6?SX&gM0\SL2}_M) aSd;;G獉'ɲ;?a*lgbHW GSߥ<6o ǘccxb;oEvͅL>{m3v/ Oi_goKi*8Ț d+Ha؉hy9*ֈi{Jyd_1q^A1oOH-xRvh~\W0EPzDK=!ZC3v/ ODN(S;7O.+1ЏAO | qZc6Oqwk77gے-),UDׯiCd,i m2SX?Kiz+6Ŀ&! |^ C?Jy6퇈3b'.h OxФ?JNci$ڽ~_J[ ٺchOğׯiCd;7l።('$~_J[ g+HfvnXt؉ğg"ֈi0zD? :OO@9wbd<' z ?zS='8Bߦ/7m6dMB-u5HjTM-t,V5(&! v"Z%<Z!FEDAIy. B y2l20 bT@ K0OWoci 8ymLyk@ ^/]GOHVSXțMD fa 5cP]rȚ d+Ha؉hNx"RϙȃucJ?EQ`:mׄa =(4HSҞ`( a?m^ЈbS̾B,1^~$8L_6 {m^/]GODKD3;7Lm$Q_1 ^/]GODKD3;7MCDS)9{m^/]GOHVxO-x?OCMmgI=_.҇#'+HfvnhM&hW\QCp_<ՙu?4AVñ,; Z%kS^xw-Dcϲm9[`9E5Dy!D7ċof :Vvژ9OqwvC ٌ6lnuڴL!Sc@f_{'7bԧ _fGOeH=_hz@J=-HVݘ'~7 -6 n=?@BY& _ 6Fx16, sMe4"O3_;ªgDW?!b%\a>S/;"h-!ܶ|D  +Au3MX&oҞc| U7ReA+ I1K/@;; x٠r=l{-ADQhzBgfǾ_ dfbpTv TO-6f؛#68*1ӿu5fnDW1Vñ.1B"Ț d D}I8>g"\1$ ؛#xY3DoKz CN.XgǝK}{Lylcm5on?(9tǛ1 \V[ I= Z%g+Hgm݈dk1 DQhzBcm6;vlh, eFtK,ǖ`7m4/zr7E?k3%RŃd$8bvBg2Ț d D3X-CujcQ L @~sN[ !ٺb H&g/1Iɲ$Iz!v9A3wMfO\3AԴ)8[?kHiWQ9 ] ?<ނgOSh"{S/bm 'bٰ+QMmvnĞL݉>ɝ_A^E:Τo<@6G`2ML@)מ ">M) aSd;;G'ɲ;?a*lgbHV6G`2ML@)מ &Z #_Di ;-òPv%8uLJr$'?z{3DL3yLy -8y2ǘ3#Ϙ'qw-N/< 0+=1+Od=̔BLIzo4GOeH=_hz@J=-HV݉?_f 춉OHG%Yȼ)=_f m[Ȟ)P0o0O7-[yߥJgDWDi ;-òPv%8ur$'_N~ 9p?=]h! iLm'zΕ11L1@D!a(!|zΔ CgYқbv$-Jy?`9И;ݶYL1; S`sX)%h0);rSd+4Oshc0E3kdq{gs@:Z}0;WC0|B/ڸ vژaDX*> g"֏ϥgaX3& ϥ. ;`/dQd ,_NâB81!P`K d (?hXv ϧdsJy,, iEBñC" l7@1~X4,~0#fEf$0*'pQ`~аx0#>PЮƄ{|Sl(Ac9ds3;72DiJ:AAԴh4AٴEօiùmDep7@e`ޜ |/3EgOB" 4Od]F@ib0& d;K,B?Nߥ 'G𓥳ZMIqq dMCz͢)Рz[D _hgfț .և6/tBJ`ih>vYdmc6_;NnZ-BZ i!,Ņ+MA͂2CXĿJ ],B?J LmSXDG!uj$yR Lf-adMCpVΖ"_w>e/3/bl:moa ֟:Ӆ?a9D/gň ^!r d;7l7)aԃS1es=vD<Z!3[blz!v9A3wMg8O5vhe dv ~-TylOe; ؁R?<@6G`2ML@)מ T|#Sh¦&v wkOdv ~-Ty@v6A3+^x<>M) aSd;;G&! v"Z%d D}JpsQ~ )qd 57333Py/%Rd!6~_0OZg/\263Y.h| t"^.GOW$-DKD3;7KQ؄<s ^sgLy_d%escK,Rcm`X+1Y~؛#y ?E._`BXؿ/X"fbr%̏/-K\Gk5)RŃd9YU4AVñ,; Z%3Ga Ćdqxrz# T1_h* 10$N.ǘG<m4zQ) }8vc0$<Ϭ@vߥ" |qvJ  GCȢ ~!;;2{b OX hCBpzhz"Z%!ٺ 2T@"~ZvitJrB3 qKF '>A;"O?׷> `H, b'bpȜGk1 kȅePCVS쉢vBa(;_h:hA %u7:@??P$<%͓1!?7|<̬66f{SYhMwa;@RzwZ[ hz$hz"Z%!ٺ L;V9B}v9N4Eb'uLmˆ㸅'xvN' D'dG%Xr=lzBgf3_ jZf9eUs@v6A3+^xA>M) aSd;;G&! v"Z%3G2zgSblt@Y3b=؇cRGsb3r%8tb%8!Ӷүk M/xi#*Ȃ4'& Sa /BYrZvrðN|Ad[DvVh1f!vۺe-Rvۺk1]SnWl7Y7fA $0 `u^onbly3tXMOt@Y3b=؇cRGsb3r%'dMbiDKD3;75쇸gEfky$Ț d+HgAF@KSRckquLmbϥ.sN lJ|bU-M Cӳ.2p>Ac8쉲 Bi *u5}3ybQ$!4AVϙȃuG>ğϥϥ̌m0\vvڔ#IG<$}.tnlv2Lt&Sa{gz 4JFv20 rtKؿ2/6KmtKwMe'm9 Nț .Ӟ!ٻNYJ6T Ț d+Ha؉h|D Dd" 6Ktmv}|VnDĆ/"&s6 j I0"D"N0&vZS̈N*c#JNv`G`OY.rm2sk>༌`Ȝx0#>Q\]-l:ٍ<@lJm2, ibM0$#; /t^)N.v/dX>Kd[΀tZ Xh"OnvD!vhz"Z%!ٻNYLeK*K+ADi <Z 9I]-l:ٙXn$ؿJl9:K]-Y<@lK&!?CڂB3>@7Nؘt>@`LKkm>Kd['m(١T[ebgWR ʏ;"h!b%Xv@J>g"ֈ2zsD>!cSu9Lwa 9^Ϊ+7"LHc?All6%nD ?' m~saU;@+ҞdGbaZTbsuVK%oҞbi~=:< 5,6%nD`bC ?'?[M1 biN'dGjfց)==HM%: %֟98p9܉?9A+\bC5~;9qLH`F?>QqLA'ւpd#ğϥ.s;m-sM )vAG`h%ҞdGhKfD_/l j7@l4CEkgAsuVKmtKwMe%ҘC{%6ɴ`;PJNvv!q 3ҞdGbtSobRs;~{9v;v"sF 6K6P ͒A1M!u`* ϔdVK6P %;PLF|.B,T(ܲ])`;RB8t!9$#lWĆ`O_6h`~;;`Gخ! M|h, s&1 CQhzBgf:aF3I dh:th:4Ț d+Ha؉h|D Dd" 'tKwL4ada`60Rsz VnD$0n\%6[%tm_h_,g6A]g+HfvnSkgoV*KW$!4AVϙȃu茀#ho/ȋivx$أh"dS̈*T"/I">_lR}.[1K ,-^Kc;'ɲ5+ v X#1nvD!vhzBgf:vgEe39Aמ Odv ~-Ty|#Sh¦&v wkɲ;?a*lgbHWvD;!ZC>g"ֈ'Q'b(6r`xai|(dq'r 7ؿ96 ;6i~ }.$1}ȇr%l^taP6/LmbL}.t77l l2ZXt$0^/ODh{`2MvM~[Өϗl_yS }&\Gsb;ނ->@%1!\)Ol-{CsYjXⱧLHağϥ̢O}.iV|CY1!Bnɾa#1h"_|.O%+v+v".$1Hf$9?KE6V ,ynb#._'Kx^ɾWɴ/B@?lJ~.Ļ%hjLyݡ퇿a<6q Iϗ/hod{C{&\Gsb;&D/1 K]+cSdRDhVl7h{a@@ \GcRsb{J^q Ab"G&!D}.$#XnɾMvM{L" e!D0tKyLylJ_bO>/ݡ}q AbD@BNN p||B ّ8 q &hlD?D!!+wQ06GaC&Wɴ/q!/1 DO[%Ҽߦ<6K/72~`XL7h{db8<6 ;6p{aN D"e!D >Ka K}ȇ!i|(X#])8zvD!pi *u53ņ eT+zT4H2ʌCUkO4AVϙȃu&rϥ.Ly]-nK.(C dvKK])+~Й>X7;"l4=!ZC3w Mc;?ׅiyQUrH2dMC0DK>g"֧=DY|al1 )r2Om77 e, qb}4>$F$0d{/>@pQOIĆ 6F}.tSWa @ dtE.^bCFr%^ooX@b]qxbZV&Өp3OvKcٶOY.dvKyVJ_/ğϔ}4/ҌS5(Ȭ_\CmR_Y.";.v ̈́ C\+4{$0}.[dkcl@,A(X#NObC?"_}!h~lFO/3ò&1 hzBgf:ƛg#,,ZuuI *L9Bh6쉢vBgA&gB".$}('y+~ğdhy|WQ(&ϥ.-$8S $__}.bN K%@ !~(do7lbOsj%Ҙ,MğD%mPN咂wo2_.^v sv&qPNA:wLy('Nx1F_ȓJ $PNF_b cxȬD!DOWdV~CaL1"bl:>щ n ?"O8dbbCdb)q|ؘKlbP*/ bl-'6&OLH`>bl?q'K1O2;%i$S̈X-\>@`LKlbP//¤&oٽ2ӀJbC|'2x'#%bt\A;Mh}('rA;7O.Ć*IKqdihzBgf:ƶ}'EK&T+zT4I udMCu9yzF6ܿX^vD!v*u5$39RɥU% 랕2=RH24AVϙȃu&p\~[p~ğןKğϥ.ZJߦKdi+~#]-Gmtqd١ Tkif3ֺr*Y4]sҦYIFh-#U )Ț d+HgAF8}.r|U`uSVchoҞb>KdRV1t/br!፡&oҞfK~spgbl)t/D?1?~SS}E/O.ɷO.JyiIX7;"l4=!ZC3w Mc-3z*bXn̒ EB)(Z:G$RldMC3r \NEYA ' C4B/V[dv=oxK6 ;6Dn8Om71MJ,7%?KK]- vۺ[2l^(͇vMxaK=1 !dr%^ob%KD%@Sͅ{jc̎BSҞj"^@:d$ >Tl^(͇vMxaK=1 !\rכǘrM}._dX>Kd[=oxK6 ;6D}.[dkcSdi=oxK6 ;6%Qϥl-yLyl-/ZO}+I^)p!,P X#yJy" LH`.)>\vM/ f\Gsb;&D41 }.[dkcSdiğdc`6r!'C1_nZ_1 v&OE9di *u5CΖuJfITdMCu9y~X#/36A]3w Mg.*8nz3 u4AVϙȃuMKϗq' C˜_++K!Dz6&A3tKyJy&6\}._>-\inWY.ZbCdvK6m/NwLЛ}BU& F$0X#:1XQ dqX+6$0+dv1݂&wu9"|IĆ4Mbl$#M) aSd;;Gb3@v6A3+^x&->M) aSd;;Gc#@v6A3+^x&4>M) aSd;;Gcc@v6A3+^x&&Z #Z0l|#Sh¦&v wkϓdv ~-T쉢vBa(;_h|D 9D(='҉q(0)O[%Ҽߦ<6K/%VD1'ΜĆ3e?J'ϥlN=%o2Ydq鲇/2eΓA3L$xACxA6 ;,|gI^'h B4>ϧ=&a#'xBy'h&O<"B&^bXϥ.11:όHa,OVl?uaK|PbC2'-~ &6/~&cbLhz WA`ss:Ob8`@bAJO}97ؼN q=8`~Ȥ(0?O>p?O[%Ҽߦ<1Y f! b L1 "6FG@ğHf"=o= X ;{+ :NK]+ccu?OVl?ވ'3K&ӨX U?" 7,q=Qduf>KdWǘ >1!?Y&'2JbB6FG@ğH`_DO Hc# ?lJ_,dNț .W$-DKD3;7 i Hm3̲N:]rH2'H:RȚ d+Ha؉h|D fLFJG>^H> 6OF\I\6Dl$+@ r{Ch~bDᅉ;FLR؂A(& 1J9h=!#0X#Dl$+pDZbmLB lM"6b؂hLB ؛#?Ľn|Ks0{y^"^ڃJH{a!CLb*KY.d~Sd~(%<&Kb"91b/Tߦ<1'Zm9X hL"[,R"?VK<ߥ.d_Jx1vbRdJy*f!1'6lbDibl:?G ğ-K{m>2/LIb}.ed~moi)u7O0rNu*e8OIb_)\V%l=km%o&_͔9xB';9lgaJLyg$0͘Hs`( 4>$bC,i1b( )=Xd|앰`;"-F$2 O~Y;yǙlA|bC`?YQ di|IĆX*O@'$_,{a.YF[ vI$0 S_앓Lyg$0@OVl?\A9f!E54>$bC U?,E?'ydX~~KddSdQdĆ:b\I=PyI 3.O~%deY !I͘+' LB`%bl:?12XAOm.Xd|MlbO`Lyg$0I͘Xp(.6FGğHiXAROm ^KVl>P˖JKI0Ć_Y '+6b(MQ2ؓ 0?,HU?'Cd>Qdɬ.턻%ϔ2G/2؂vD!sbhzBgf:Ɛ3aO\ u:eA8AԴ:TDi ;-ϙȃq &Pz'Ҷ#ğϥӟKϥlA{b=ψy|Ub{ mJy^؎|7@ϥY+b=yV/0F{b=G>t&Gs:/7"/Dϥͬ_X DdŊ S}.id[1M=?K.s`9Rt^ǘ$_lD,o@b_\ňRLsK%oيl4/OlBV'Ly+bnj -yc@\:c̾ e'+6b0P1 8ua-?Pň"OmYoi1_2όHa9OVl?ʢ9)Q«di}Cȓ .O0'$_6VCz6VCǛLy @'+6bQpćh X#N 2DH`ň'$_%+!7/g$0~)͘Qpi 6FG@bO$4?,D)={%d1!͘\@\' Hvbl:y1!:O^i~ٕKlY  ͘8bCb&Ө$bCHSb'$_%m2όHb+6bLF$62؛#N ibO$1'[*Hc~(OIh=\)Ol9n =aa26ܹZvOa.@dOdכȒnnwa@̢Ov2Kl2~PsK%oيl4/7%o~dl p$821bf~#> pDDbCT.;` fF;Te&F.w36KX@bfэPKY.h~Y.hvJy,2{C@8>4\-sBKD~ߥĞK<a.dm;VڀȞtM}!`Y%+1!'^\)O̬2~tm ߦ<<O'<7M >$_,evD!sa$DK=!ZC3w McLv!y2)YLW]RH24;"h 'G lIF6g""dB/V Q'/Ua{`wKfvM/MvM~Р>J_q'uVM/~vM/MvM~Р }.t72" lU'7@l_;m2A-,IF6g"x>eO(]-^ob%җ<ݡ}q A(}.t723tZ`}.eaC&=6 ;6%yQ^&O[%ҼߦKdWǘt1>\vM/hzl<w0&#mK`?lJ_,ed-3w Mf?eKzdVS$*?&!(2VJ( xb& QpT}.t70t~ZNOv2']){ 7ؽWɴ/B2K]+cSdRa}sC S}.t71MKAQ`-Ol^x+`LGd!DZϥ.1FbC])Btϥ.XC&1 Zgf:͖X]2W=2U\꧒AdMCpQ>>elQ9&OǾv16N tKyLy6{Jw/}=KwaC&=6 ;6%yQgO[%Ҽߦ<6K/I,7h{db\Gsb;&D/1 !?lJ_,ed-3w Mf? eKzd\7U< &!(2Va}ȇ%hSiS/ݲV^o"LyY+G/7B_%h7Ly_bO}.h_O}.h_'ҟK|I#sBğ\пЯe' D!☄\VV@36F_,7h{db\Gsb;&D/1 S}.$#'v'uV\>'a ^Ƀ+dglJJߥ<1,X S1@]Qbl:?уĞK(XKd~uVM4/.ɴ2+lUdSd[b܈~&$0h'Xz, il_xˇ͒;[2F| t=)+~,_>P˥,O2,~ϔ2OIC"EdEqd١hzBgf:ƚgs ePISEk+Hq$* eTI:dpa%vD;!ZC>g"ֈ0v}.r|UaU`ğn ss9/°/6F~~&JybO_A H`fCb ؔbC@gbl:?JOmY.sbQ~6&oٌbxbC '+6bNģ؛#NO$4@?'ğs&1 C3;72?*VJmRH2쉢vB|D Da5g6K3"r%O.Ly'r%7ؿ9ym-]-2+~#]-2,>+]-d[&dX|ela+~#]-2u+]-,Kd̺|l("]-2,>Kdi G X#])+~[%s&1 C3;72?g:X:IVuuDI 3*IVIR+Y] C+&! v"Z%3DMYDlJJߦKdRV)D_@$00OVl?bs4>$bC|S_%3"tK%oҞZr_,g6A]g+HfvnSkgiO*djڤVH2vD;!ZCKDr \FVzóY/ew'ۈ2FbC%:Ol^x+gIϥhe=LxYOdǘYOd 睶%VS6DvژY+)"~tǙ~ydo>Jʈ[J6Jʇ´VJʂVRk%eDSZĕYQց+{iWY+*"(YQց+zdkB+{)W5ə#ymLy,La`InO7M^nSn+)ؽ4m<ȋA%e=2FvژvYOd̑ؽ"/YOdإ1풲ɱMa`@vۺc̈dؿd e:1@\ɡ GX#N앖?AE6J &r%ҟKY+,"=Ȣ6~&$0"O쬛Y+,,@}.idfE'Ҳ7VS7Ŀ//#O[1LI(x'f$1x'_d"I<@ ^XB"3hx!Ć/@do|O8dH1!U?J{&"@L}.[dk[1LIY.Z{)O2#@lLȰVS+)[DS/2쉲 BVg+HfvnSi1|39qZRI ʃGu ZdJJ&! v"Z%3ODa5gL;>/Dϥğn pbC @a?1I<@BbC Od $q'ĆO,|O8ccBa`;D5F$0Sd)>'4Ćv\>'a 1'@}.[di+~\I\qvۺc̈h%.ɽ1,]}Ҟ4+]hnSb%Y6m̈t6KoymJy}t!.vMᵒSZĕdlx2pؕ1\6k@&p)[JR.\vLˏ7m1e,,_{.d=2~hw0'K/.tKf\ymLy.ərmHwLyee)>{.3ˌ_ gKdSq,"ymLy.ɲ+1In7"O칙bO˙e_t_}t1`Ć?Y4 /1! di},1!m?KyJyrr%lI[LȰ:rYvr&dX|eLȰJy.[d̺|y-eL˧v"km>([%lam$0=;%I[1&t7O28ĆDn pЂbCtdRAc8쉲 BihzBgf:ƚg%Dꧮy'N!Ē 4~Q$钙Lv|#Sh¦&v wdMC3r ]hz# 'Ve_bl]-^nRcXbC+6bĆB lMQ'(~i~+%`0X#N70>=&ԧlA,1!fC4'hHb(X#N7IĆ-ĞK$L+4{dglJvڔb¤fC P6FGğH`=vKpbdi}c߲oymJyb f!DF$1uaeO$0J=$_,g6A]!ٻNd@\U $&! 9x.&T2,A,1!f!cNӘrdi} 0DĞKPϥK(H`,'q3 &!e[%ҼߥKu Hg?Y2'a 4>$bC (OI1'Ac(Nț .@i *u5%uj$u:VTq$* eTI:8;"h!3?k"O}*(̏@l_waɾ D?A"eev&ϥl-yKf~&:c(XbCCTfC" H1!i u1!O~ӖJRnDhTE"I~ȕdlV2,;}7O3HXbC'+6b(u4>$bC^%@d{)O7"O}*"~ %ba;&v< @ЕLyDb+6b(,6FGğH`9O2y'>~˥!6mǛJy*hϥ@i>Kd[m6TMl^X,; m }.[dk[2"vtM}.t/wMevJ)3PDϥ.ynlͬb4ǃ3@}.[dk[2"vtM}.t/wMePg"֟`zzI\`cql}.$ 7`ztmOoğ4F$1Xc߰d`}s@Tlc|O8$1X q3>'c?o6W JuaC߲o%oҞbi~M&i 6FGn[$_,7@ɼg.bCbkdi}߲o%oҞbi~vm3H`lMQ->=&V))=&i  4>ty+~ĞK6a{`H ;@Tl<".iFbCKMQǿdJߥ<1' t lH`ua7O1LIi7LH`Ubl:L1>=&V))= 7@ɼg.bC [bl:L[$_nmy\Ć@Zua [$_$nmxfEf$0Bua$[$_!D"1 Xv&ϥl-%ooDd=.[a<(p4OI= %l), lMK.^Jߦ<[%P$ˍK ȏ~ɾ+< OI]-l<@睶&Xn߲])^$v2'a.w/;PnɾSaqYbCV&OI<S`˝ 7@,_6:`LG$3&OI0@қ\@dOa-ϰ6ܹڀȞtM}.t [`wMel<!>? gdMbkOW$-DKD3;756}M1\ʨtW!¥D$!4AVϙȃpQ>=OIOh$Ҵ7{G'aɾXCf액a`F2@B[%Ҽݶ<ܲ])+~-ݒ;&Sbl}} f$4"O앢=y.1!;dgKO4,g/>.711쉲 B)Tk6Y:ZDkd)Jʴd:;"h!3DL7Y7lKQr xq6D#@=OIHapX⸬ڈ$0"X#N7'ǿd~+%Ҽ{iPm0+bs6ɴpT˖.)](\JyiinvD!vhzBgf:v}QKؿJ, /;29\)Ol-~saJ,vMK'lKbb?v Yj bO2854 RBgW:80W\i)JʴdhY1Qjb &;"h 'G lI]-l_G~vۺ[1"$}.[dmQ`~x0#xt`sE2`˝gsb;&l_lȿ [do7O8_\X/;`Gi\Q`yɐ͒M}.[dmQ`~x0#xtZtM}.t/F#`G`;m5,_?(Ac8쉲 B*u5l%9 PdIBDkFF (쉢x.C>g/>/k%/c/X^vD!v*u5L]3-Adƅ~vD<Z 3ϥOꏈؓ[%ؿ9ctc%l_ _;`FbCg~%l iEqM(%l_ ilK'lKbb?v Yhؓ/3ț . §SY7Dq=f!ji8,]sҦYGЦQ*g*ёdƆF!'&!n}.r|U>Kd[#x0#x_C?K.[bX/;  -;m-%l_@M.v< -~)"-v&oҞb{%bd\r64y`G`in鬴=],SlK]-@v<2V=#9V_vD;!ZCKDhIIeA[OȎҫ=D1 GbpwǠFT;S- &xq&?'T ˊKeQYci 9@>mtKIu*UTAdq}*"P ā~<#PJ@~^v<6_@bC+do7O2"R1Y'R1 Hc?K31!IM3hb uTx\1dF4\b1DG`; m1_ x~z}}#h,aV5@^ 0z%ȌH`(axe@vF| zE2(1 H# Fd=hvD}I(DK=!ZC3w SX3K)JʴeGx.@>9>_?K]-@v<}.sd[%5e^ d͇s:Nvr'Ky0Oau_ȃ;:ЗqYy:ӗhz_Xz_QX-]i} &Mm,cgdA Hb)Od͋V2}3tKymJy6,4񍝑6S ,o@v}xȂ#t'rrr.Z_,g6A]!ٻNk< ([< 4;"h ϙϥ\ob6/͉2Ac9ydS;7m\i$* "dÙT(5UDi ;-òPv$<OB z# C|0 A(`lCNӞ`P#;"lF$0L% mbCV2Vl t N,0 /җ?71LIb_d_l0 /җ0OcS{X풗% lK?71LIb_h{dM~$ǘ$/KY(`b_/)?71LIb_!%P&ĿJ_ ~Ğ%A~вC)~ C$ߦ<1'~e"]6%R1)=K B]6`"_/(QOcS{XğP&@ dKTobĿd/0 )~X ~Ğ%!&$_0 )~ ~Ğ%!Id(`l 2%R ~Ğ%#~% m&DJ_OcS{XDKl0 )~lS~Ğ%.ğEvJL~'1)=KJ?aɾM(b6D(s"A \Lg? cr'bL&>Kp6>-?KDd\$}.idMlR}(AdL~!`V7=[ D +aHn| 5<ŖM61! {XCbC4IX`ț . 3' D,i *u5g;YVm+&eAc̪).Ț D3rq6> iτMA 9\ob6DXBLH`:lM ț .ҙٻN3 jTW$* Q%SgUu8U_dMC0DKGA"8z# AQIa5( 4K@fCԧcaɼcb["mŢdĞKD+ M`?ChĆ @?JȬ$0 b~lz` ؛(rrb;& C Hx&#>PȓJ#S0E4> HP1x!!h> KT-1Gd[c̼odzǚ M;"m$0J/OIIk M;"m&$0dĆ3!X#=CK$0dgҤ 'a`2D$& Г'1!`ڔ7BbC (`?~= ob M;"mHaDț .H$-DKD3;76?\Jl4kAdMC0DKGADa?}rؓ{.hˀH.j}.m9lxv^%>`.}.rz> >ɂ7Hb:lB/ds~`ψQ7<ݲo!" ͉f$1bDĞKC%Y6D}._|W1ĆAF[%Ҽݶ< M;"h '$_[dXLcfCmEڼ؛#ymJyad1 ) ]) X#=Vbɔğ'a.^m2T Kxy>;`/dXa؛#ymJyad1 <1!ArJbC1 ,MĞKUblMݶM) aSd;;G]h}.7\o̅!v*u-,,]2LuUL:IBXe$ʗU\_x.C>.7o/ vnSlgf-zeKzdD>I.;"h!b%Xv@J$r$3a'">{@}E%h=o1 T~Zl@bA?~`=9l Ć+d+@+>!`4ؽn1N&( N4/hğϔbtK`wKf"o=~z>}h,_69s'18}@zJ \gImb 1 >`ӜsCҘabdd M\gI@b@\*Oc1{@)Ob Qf>Q],SlK]-X<vۺk-%Vb/hğdFEbI '7 S̎x(ȋ O|"V/h? ch͉3r%I[ dǚ M;"zIV$1X#=KLOlKaG>睶EgXwM~xtɴ!Dߦ<9:owM=J 9s'1 2#zsN{C#|ALH`T{MM~xt%yQ`ZĿ/~Ӧ$2=6G1ޞN|@ID:%o! 액 MĞ%1],SlK]-X<vۺk6JĆ\&OZ6A\Շ$I= Z%g+HfvnS6!̪'eKzjAc̪).eTIL-Xuq4]3w Kf?0JXe!:3Xz%RLuUHuvD;!ZCKDhIHIe|V!>g";JF HSay8; >Cd!@bOΓ28l Hap'`L!YĆ?'rr%G~vۺ[rrכ ˳Ȧ\n}D,=DQooD̬!aȂ!Ć2/ӶlRY1!G \Y0(~C v,RYC,?lJ~}EXDBAu97ӞooDN1uxkX, l!JbCsAdt1 Q L$qL)~*ds~`!=8EzS}da:SvM`83?>QdɷK%"d\sKnb2ms#2ݣ&&X/69s'1 }:NtnY.Z~ %d\r>y1a$& Ć{秿`2M!D<Dϰc& 28ms '`L!YĆ ?K>-\Ə};m-.)Bȓy艗n}h,_Γ% NӃ;m-%Ҽߥ6\nl[ 6L'J MpGdK(؛#>3a`4; 6vD%1!`!%ͅ ҝF+QdɷҗKE6/wMeK6y艗n}h,_ΓNӃ;m-KyLxrئ>-\Ə};m-KyLxD).v!cg >6>z ^AO7b}'"aVy36aInb10t%0+6O)CO|"?8R{։gdMOeH=_hz@J=-HV§SX&il%s*CR꫞)BddhX*Jg GUS=KV+쉢x.C>g/>/k%/cb ț .ҙٻNiګcH24,вoȚ d+Ha؉h-!ܶ ,;Ȏҫ=@Dpt%! ~|0aa1A#cɃ!"=߰c&| >d!@bO)?)zsN ۆ$0 S0E&lbCR/OI])m4}`ynlj%Ҽߥ6\nlE &-&l M|k ǀpGPэ6LHdOsadt!З` cpG:bCAR Czp +)`G`a-}da:SvM`FdSlKY.mbtZ1\)ODLvAbxt8 S0unlܲ]+c'vK6m4}`ynlܲ]+c eL v >&?aV3XJJy`;>yCρ)COh(/c.'`KaVlɂ761!?=dɼ(9.;mQ`*O`=8;c'slbC S>Kd[>y睶Ckca1~wp6>Q]-X<vۺSq'>QX;?(6/Oh(/q'>QX;>Rz"gv}dd M\gIm5#yȓ쉲 B9DQhzBgf: 3E2$8.D ~eTILtVh*JgjuO4AVñ,; Z%kCmȃpQFJz|n|@h~z?b6F >ɂ7 f$6T7T;%h=mQO`=8;bY ?J7ψ~$9Tğϥ.Ə};m-G`z"4}`2&XJlx(6/hأA:|Aaɾ{6cgdA  ?JxlbC|m夭c &񍝑4 HlZX#=K]]-X<vۺS &񍝑4t+C-6G/aGMM~xt%yQA4׋(LC#|A bCA?J%|C1!06G1ޞN|@ID:%o! $N+^x'&Z #Z;ɲ;?a*lgbHVNF|#Sh¦&v w \od) B)T[6YYdR꫞u<>I.&!n}.r|Ud͋IĆOKs&1 C;7m3n*H24вo]h}.7\od8_"iL§RٲHq=fk($} a*]Us2D3q{&AJgf:͖bg&TJI#K R꫞&! v"Z%d D}Hw-BK-r#tDa80.d!ρlD/c& AD Mzu>?^#cɃ `^|Bɼ('8}C6(4̧0}=8;g"aV|C61!I?K]-X<vۺ[0aDheM~xt?3_dPX睶bˉ:b|1L&>`; cgaVmy}{Hg7,7Y7l!v@I?'=KeيkMa|I\D̬7hɾɴ/қΓNӃ;m-dkjSkݣ&l fQHL(/OṠaɾ2 l!>6\nl5wK &b&`]``8#e6X#>3a`4; 6vDbz~sadtg;2QO: 1 A؞$O2Scٗca$tKKKE6/wMeKE6艙Xn}h,_69s'1(`!=8;ٹdkjc!7mO2񌸞).v!Y| +D0$G7,7Y7l!)CJ1, /\OЗd}bX<6bq,v) @ A O"N<YdmW$-DKD3;7 g eTHq=t)W)H24,}Q%3YL)?D]h|^}.7>_K_$2Y_,g/;"lJgf:ͦ j вcBɿ;"h!b%Xv@J$r$$>+`ҟ3Vz# Ń8; >C`iޜӞȂ~ɾɴ/қΓA+!X<23ҞdEKdX>Kd[>yy}{D,6vD!%2Od1 bȬb}b#gd}b<F$ ӱ!L&"Hc@`H)B!`̀?'tK`wKfl7=X ɴ/қΓDN`2&҂;s@?|9ϧ=񍝑=Q'`MM~xt* 1_1,?y"/[%6[%xϰym؆2LSYC6 b}l|  >ͣgX0+<lMX%Ҟilb}'"COi F &񍝑 %d\rt1-mr-ݣ&&XJleM=_.w36=O04Ns|cgdATbf?_om.w36O~'x v1̌t.)O.Ə};m510t%0c`L| v!XA`;>yCρ)~t])v!Y| +D0$ϔnXooCϢ!dğOmvbSXD}._>2=3+ >om.w36zNӃ;m-\)*,7hɾ[D,!/1 $)$XooD̬!f;"x>1 S>6\nlwK &b&`]``8#e6Չ9Nq~6A:SA`cgdA ~#?da:QO:ca$aSX ')M}.mdCYiQM}.dz"fV}dd M\gIm!OCzpwmrrכnjC%^nReqQXJF) Oh,7hɾɴ/"͇\gI왧l^D$ 枉~^w0(i0}_D" ,!27)r3ɾ`doCD"^bV)xp%"@b>MJҫ%iQ-VؼJ~$0̥?Jئ cZ[d-~_Ć+KbVğϥj%j7;m-<ݣ&&XG69s'fy,4ɚ%{U:X;;`FbABoo{-ȄF6vDO%Ҙ.O)Oim\SlJvJv/dnvۺk-OdB]UaJ?3ta`2M(+L|AL@( 0}_D"-ؙEdCdRb<SdBY /dvJңD+dq'6JD%!6Gd*1!"X#? " dMbQhzBgf:A#eR\(IT>hX*Jg GUS=KV+sguq4]3w Kf?0JXe!:3Xz%RLuUHu ϥKB)T[6YYidR꫞(Q$,2eKzFCȚ d+Ha؉h-!ܶA' Oga:X݁L$ؿ20V!L F ~#'`w7NwK@bNeO`=8;'& ~B!'slbCD?K]-X<vۺ[0aDheM~xt4ϰ}hWA`˝9qO>>6vD ~BL/76Sa;s@ ?/v23ҞdEKdX>Kd[>y/ψa`s/v &AX0F$3?`ߞ\wdbT;%vM1 * >`ޜӃ!p?Kg? cOKxϰymAߞF_d .w36P#Op 6~Z \gImR8zsN{;"l?f/76i˝9Sbw`#;m)D_K6m4}`yn鬵-q0Gؿ;8`(X;?(6Kxϰym<~w}C>Qd/ RV&ϥ.6Lyad1 lb4Sd$1HX#=KY/a RIdI?K}Y76i˝9 0unl] &Јh, e;>"/xaؼ/  "^b0Sdx-\x}`@ݣ&&X/M\gI왢[Zv<Ŀ/;`FbK(O%|C[%ҒCaɼcgdA f ~(^ HaH؛#=K+%bd\rRvۺk-(^ HaH؛#?  ǧdMb-DKD3;76&gfU oMqJdeA慏2$p`z4~ Q%3Եb6]h}.7\odS;7ԶlHq=fkJV.[T>I.ֈg{%M!v*u-,,Ŵ]2LuUL(GЖI2W=#!dMC0DKAD[Dr ]hF}.;>_;A_+&CdRbTRߞ\wdbC`?qݓh BmB0oNq;ψ~$8 S>Kd[>y`ӜsCd?_om.w36'FvۺS̈lK'lKaG>睶Rؿ; }󸓆lQX;=3Kb!`,MK.ZJ`&/ψa`s/v &AX0F!,0;wKBS6(?O?78lf ~slbC'ğϥl-`wKf7=X ɴ/M\gImBϰ}hW堰xt?|9ϧ=񍝑6N@% dd .w36"dؿQ/N4/O1M4}`ynO;,_ğdFEb$ϔnY/elbC[%Ғɏ46,6vDڈH{ Hx؛#=KY/adq'&$}.^z"e}dd .w36NӃ;m-Kadz>} ?rcR{"e hNǃ8D1 Ɉ0E&&X-69s'fl_ؿ< 's "1!0:OS̈/mr/ݣ&&X-69s'1K0un鬵艗n}h,_Γ%OCzpwm<~w}ϔnY/elbMK])+alCaɼcgdA @?KbMĞ%{ @؛#?/O|.[b;D!vA쉲 B9춉OHG%Y Tkͳd*C8bH24,}Q%3YL)=bt? \od) B)T[6YYdR꫞u<>I.]h}.7\od_"iL§Rٲ[L$ʗU\B$} a*]Us2vD;!ZCKDhIH>g"50b:Xa0bC#bd1&&OA+`ɼ(W'9+`ɴ!Dk*0oNq@$dجlbC >Kd[>yeM=_.w36c|91 1?_om.w36ؽy`#;m)D_KmtK`wMel^= }' c bO1MlQX{b,4D$ Łn0#>Q=[ {`l^=(hX0F|bHiV b36G1ޞN|@IDl%o!$[ @8ĿdYd&Ȟom1+V?ᝉ8q'r%^=yNwKf7hɾɴ/қΓ3A`|۱/앱%C1=&ϥOB&eh+L|A S0}_u1KdCe?2앱,MĞ%M}._d}1In鬵- ,Mğ6A\춉OHG%Y Tkͳ Q!V бUD OUf2$zWTf'<Z!K3!a]3w Kf?1u3L*]Us"NGЖI2W=#! ϥKB)T[6YYidR꫞(Q$,2eKzFCȚ d+Ha؉h-'A๎z# 'Ҵ+>^аӧa`s/hW`FX0F@VߞVvM!D\d @bL >`ޜӃ!L@ %hY0 H` >Kd[>yQXdIF{BGOMDқ; =4,>Ql^в$g2+,FS`"ra{nw0Fl,~ ,ئ , V!L ~2Zv "ablb<"-1KdC`%i?Ib_,VM/\ ,bل{ >om.w3L/Ł %3.OKHs?&iDX -cɃ!Fb0}_2[&)L@#Ztġ}8Ŀ\)O/{BtZZt MğDvD!sYDQhzBgf: Q!EsJIF2$p`z4~ Q%3Եbמ Odv ~-Ty6G`2ML@)מ dv ~-Ty6G`2ML@)f503063 3C#C3i C00 W+WBjZٖ+WMZjti\yBnu;W-5ZN:(e z*7YDʗU\O\*9YUu.(ޅe*]UsPQ]Q2&Xtt]+PJDP:Օ~q&f*Z[UʭBviWT+S.&UB+.辧g] rt^Q̪jV-yg] T!̪*\n@09ZSwNV46.5LtV(:CUU=7tenMŮ80]=U3ΪfUjOM8Y[Ʃ ݦp`zuS42Pzn65LX\5th2;LtV(1T!̪*pF K80]=U3ΪfUjOM UU պ55,v\/PB™ΖU )]I BgE:N̩uUK3/LX34*Z[2U;=4̱ruuT:/PST PyTI2jh8ULZ.굊'vU )bU,Vp+YM 3ʢI+SA6XөUʡE3T;BfTrtg;z'f*&XMvk)Yä'ePzVMTY cR:S 03.6FNTf_Stg*K&uL*@yTI2jh8I*USwE3ʢI+SAݙQʫ4*ٖ+Z굎,:e.0T􎧥T(zqF`)t_SbXI(Qc0Xs=3:U X+iF`DՂwIΪyv`eS]S3*&I.W)ݮVR3@'t:qTM3:gFc3GfXtt]rqF`¢jA;Ϋ\to=.Rfh3M(cgI.W)TYõ,+8fQ1`'tќLK2W=5;ZN+3*&3:3vyubUQ=Nֱӥe"*&0:3vyubhW\iv,WEk)aQ0h &tg(5F.=KS4RrڝcKZEf3-qêNӥVF ݬwiY/>5g̰UjUBJt:e.Lj6zL=#U 0֪;2ãUuU tu*Ӻ/Pꕔu(ڙV(3cUPg'ٖ.W[TZTNUʫ'fڃ.ӥVՕQ]JtUnU;ZE \.[p\WVguWsl3gU<ջ]SunAt^ڧb 3je[S;T 2iU)3f[9UN:SfEfbã8u\S}B3̪jV]ڧTQ[eTf4-ƦC[2X\5eTzYë(kX.BeT+RRÌD㢊3fXjVHu- WKPJFU /Q̪jV]Y]J:NʵlSo7C`Dkou gwewE]t=NЭgtU:u!ԫ]exQ&Q*g*ۻ:J/2tZvU )Qc4%[\[wAp@a(Ȕ_Pd(4%[\[{[:ɇ3ҪU:F`DkougV5Y0zݩdÙ% zRu<ҭcTCΗ0d5v릉H/P(2Ń3K2 V(ms3mLUKRvq΢NUwV)t^M(1ezFr-Q-sNJTv*u#أ/LX34*N).jk2V=#9Vа40 Nвj:ZNފ]zRٖ(zUvf̽1`̪:8kwCU%t%[\[wFBdX43:ZNT=.gvZmu<+YT0U%t%[\[wT\CZzGTM;BLN辧bk(0jk2V=#9Vѩ40 WhY5jS- PꕔBLN辧zRٖ(ZyZCyjt^QTK\JʶQ*}NS)b4NѠ,3f5ZZLUHUtaiYéJvUj)Z릉uJ]]sҦYt_P V(ms3m,XtZhVpCQLU=NYK+zT4vnJ:/P릉vn\3fQ-sQ*g*ۺ`S,Ӻ/әjvU ) ݡZn 3jk2V=#9VөkuήCE辧hVUq9ԫEfQ-sQ*g*ۺDk]]t:J/2uZRrЭѭrN3hHq=s*]UsBeRO\ʗU\2'eKzjHq=s*]UsBp*:T2W=4(7(S**zT禅 eP*zլQ?̪CVDReRO] Uu?ʤ8ʡE?*zS*eRO] Uu:?U!RreROY+-:o̪CW=gRTUu*UBi.ݬ8[>`gA g,Ь;Lt^puM+dÙt^Q*JwiU:nW=Ṉrvf4lvPJ:S+zi\:e.԰wiZ+fVȶOUWv极(@dʨ]n80]=U3΅cUPjҲi̪kޚ+zMÊQc9Vm+&ʨ]n] 颹S- PQc2Ń3K2X\5[$M:M:S- PQr[$M: XuBjPCΫ7t^Qr[$M:Sj VYmwtk::b 墺:e.̪kp0 ZIfuٕQ:Q-rLv]J:/Pq\<㵳\fUdi[]ݙU+*TB:.f[$M:3[iY4UBTB:.fUdsEwfR 9PJ&UD9VjgS]8tn+rQ}AeTg2֨1V53\)ԲaJe!q7 d&7TB 3 VjgS]ݪzY0b%C΍FR F%:5Hj\K(ubc:$AeTV53\)ЭA(dhU:Fa*ղML9kՒNSfUdsEwTЮgPJH@Q!̩uUMWviU*A;]n+t_SΪޙiOMT,V辡G2W=.[+Q8zhQ}A0 UD2W=5]ٕQ:ݦzWT\St\(1SQBfTkvj'/P(Fa2$8.̪kޚ+2Ъuf3UO\ʗU\Р8LRO\+*\SȦRPzBTB:Y˳J]-3ֺṉD.eTHq=s*]UsBp2QJ7T=*ewIEO;UwR:/P(1ʨzT禅 ePwtUBnyT-!ã骅(5kN쵻BtZ% ]sҦYQs*CR꫞)BQruN7] TPJ&T*b$QT+yuUVsJ7YR777 !2b( St%wq!)A`!DR"aip!4U7Nn`C+JMzRPN:RSBP=E+eKzJ&UUtRNrP#yDTINe*Ό7u K!Pܥ ?2uҥ9zUIEF+(R꫞f:[J8',yҨ*M$2@FSJRA%ᓮ(E4(E ̳PJ*7YDʗU\1T(q9{Ε@`}Ri%9o:2%.BWr. )(' tB)Dn(NeRQQ &T礠YҠeJ%Rr*"Js)Tte9J] (]4IA8dST:'jbP=E zLuUIA̳-ABU2jDj'/yәf:ZNwF̳%%Ou (BR讅Ғp"xBs,.VQ2W=%2t<ʥfX:A9{Μ1u7e)*}#(B^/ҒpȬ*|ک'2QB(ޅe*]UsPs,KiPPo-S̪Z(e̳-'[;Σ|Y꒒; B2(}~0ˈdEN B'@dȜ@ @ ?qW@ ~d!8gq2\@ kqu:""@8:67J@W 8:=.>qt~І#l&{,AaAbYE +,/Xh qAb?q\Aa︂ <,A`=X! 3,8.RPN"}vf(E ̳PrT̪j(QÂiYI<:s,KI閧F̳%%OuD%J*_ 'OM+)2T;vf(7YQB(jPnPzkziTgDҨMTy%pBDoC%Pܥ bU<G׬Ptq=dUZ2gbfik{Wtg9CeTdBnSuJ]ʥqFpAkNSEN̪ZW)!@TAҊ)%;54W=4JJ/2/QbFsAh}WwJ;b'q I=4ȭd10QwfU$!G<:vw'}J(C w߹LNRKk] t2xvf(E ̳PrT̪(TLU2tU*]Us9zND!}$W|pE8Xik3X+ Nt(9T;Zjr`nӕVN(cUPhZ3v꬜Qkbv9teU?,Xtt]K] ZjeU=4OUNή;ZiesT􎧤QJZSBYMnֱg:Y\qG咫VV-[,s=nֱg:Y\qFXZ殅ݭct9YUn:NQ& .ROM$<:vx '}J(C t(STCҒpBuک'2QB PnpAAROM$<̳-'UAʗU\7e)*} (nRC/QJ1zػظgUrEs/}_*YSjSEsϪuS_f5;mB㥮֮M ֮M ֮M ֮M ֮M ֮M ֮M ֮M ֮M ֮M ꞹ+8quWMk( ˤ,/ ?RåK_*XtikeK-̩a҂y,:PO42J 斿TA<ʖ('ZRåK_*XtikeK-]5QF.55*a҉)oQ\ꧪc?w7qQؾ4լՋgVK&XwfZ2j皷kX굊't_P]ќU)SXi8Ԏ ALqzRlj`l]S erhkqk):W%3ʣTWᩙbajkGL4W>jkGUt枪b39qȪsO\W?yatRQ-k)?:\wUеTΗ*tUt-U8ʫj.U] UN;rZqKWBS:\wUеTΗ*2šĊhU?RɨkYAԣe\ῨMDWW%UBVW-Q-s˩e.t^QY[jhU<*z*(Q8ZJzhy )S=?*N'yR@ޚ+M bT+!򨞙)U-JH:R8[4U7Nn`C+JMzRPN"B뮾N$U3"Y(UAB ULLC]2tU*]Us9zupšCf:ZUPv~/2D*|]Bs,*ܡU ,Pu%stO3Μ1uT̩uUKΣ|Y꒒:!)uW7 Ʀᩙba^ff]!axiKw8XJ]ϥ%AS$TPgU 78Xb(WEd<̳-'UAʗU\7e)*}0Y@>C݁)$?kmmcmXmm6m?նm*qms Cmig?_kڶmmm?oOummx Cm7| }r.YmQmmmmmmmcmXmm6kmmëmm ǸTo8mm?mmȋ[mmx^= |w0;mmmmmmmmg& .RRO3çQee%(7)e:Kk] JJ $PON;U3"Y(UAB (:(8XAڊIyәf:ZNy.yo=RRU:4%I9cP>DPKw}`V;sۘR9b0+`70+` )WRPNBV>OL9zPnPs(:<̳-'UAʗU\7e)*}Q B_ExQ^Ғpuک'2QB PnpAAR,\ytYeKz^u2T>( K(-)(' *|]Bs,*ܡU ,Pu"*g9c7R꫞F̳%%Ou!(BR +%aS:TPgU 78Xb&Tyәf:ZNy.yo=RRT'_|%.h!DWw]q+@=RPN:RSBP=E+eKzJ&T礜JF>4U7Nn`C+JMzRPN:RSBP=E+eKzJ&UUtRNrP#yDTINe*Ό7u K!Pܥ ?2uҥ9zUIEF+(R꫞f:[J8'/yҨ*M$2@FSJRA%Q[S1B(NeRQQ &T礢eT+RB‰Q$hDNX̳-'U Ԭy2T>>RCf:ZT'_| (w07[Ȅ%!qǮ2[c@?qǮ25B7 T8 >q@Z!bw 댅[p tgIA8dVR>NjbP=E zLuUIDʨVd*EЪrǝ9c*Z:gJJDYAIBnSxQ^2@@q dx @ 82 @ 82B 2En2]qJ! d q^!BB w'.2VAAB 댄S2G2G2Gn2lqE\d"2A㌄Px!CqEZ!=q 8E\d \d D H@@@n H@!imiRPN:RSBP=E+eKzJ&T礜JF>4U7Nn`C+JMzRPN:RSBP=E zLuUIA̳-ABTv&SJF)BR`}%w)BҒpȭVS1B(NeRQQ &T礢eT+RB‰PJrǝ9c*Z:gJJDIB2%nGxPJJ ']*PhQgsLuUIDʗU\Tv&SJF)BR`}%w)BJJ ']*PhQguTToB.(9c(Q9r*"Js)Tte9J] (]4RPN!]u]uwvf(E ̳PJ*7YDʗU\LjVHXQ2Y"h<̳-'U Ԭyo=RRT'a( BnX|YЇIA8d*|jbP=E 7(UA:8(UWLܞg9c7R꫞F̳%%OuCPC) KDҊ.i RÅ++(9c+:ZQ2âTQRܢuEQ!+u/]*vpwKk] zzСB8B0? ?`iyc3I0z|tdN<N|tdN<$OZjAE9辡GUk)AAԴ}WuzGԣ$[,Ù뻢:s4U7Nn`C+JMzRPNuݪBs,*ܡU⒊-UAEJΖȶZjg9c7R꫞F̳%%OuD!+u UD\hbD.4NvD'8Ɖ5Eq8XW \j5{j8w,`Eh§vf(E ̳PrTJ(bPnQUt:Ήyәf:ZNy.yo=RRT'Q>P t%W%ʢznEKS4aEaӕ1Ҋ-(aB (bPnQUt:ΉxtYZ"(vpwKk] wrA՞~EeaSU3"Y(UAB Y%TD7(`YBytYeKz^u2T>e!B U~*黥,]LӔ  NV,VPs,KJ*VteE 7('UAEUuEQ!+u/]*vpwKk] }ܸ:áҒp wݪBs,*ܡU⒊*XuT,D- yәf:ZNy.yo=RRT'Q>P I]Cb_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(U (Q$Cy:;VV 2%n萻Rh8U;õ>2#Gq 2yd4D2E#qN  BChd w ;w-w ,w wꊪYÿuJNU=wwyT;L򪻾o*M,Ue!B }^v^P t%WCb_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(UOM+)'ӯeh(BV^RRJ%Tֺ8wJJ "Bvf(E ̳PrTJ(bPnQ-Ki]jIyәf:ZNy.yo=RRT'Q>P IUG|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuTKRhWZy:;VV 2%n!vpwKk] wpZvH§vf(E ̳PrTJ(bPnP8U*g9c7R꫞F̳%%OuCPBSxa|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuT-$@ꊧ'ӯeh(BV^R(S\;Zc Vxt!RPNB*|jbP=E 7(UA:8(U ikyәf:ZNy.yo=RRT'Q>P t0]^*黥,]LӔ  NV,VPs,KJ*VteE 7('UABh:Zy:;VV 2%n葻Rh8U;õ;Vxt!iYKqzTXSJ]3XK9tފXөΖR~fڗLrF9U)YI7gݕմuEtuJNV̱]UҺjRꕔxUJVRu:VN=8UJVRu:W+u=5J:YnjTe'Stus*ꮚ* ]:k2uWJYO.]p ]m6`pX%w Iw %%OTPgU 7W=gGQRܡlOM+)'Nei: TQs,IISFPB.С(1/UwJ*X(, J+XYTiDPnQEKNr=4gNN(B [x"(D*CC2*|jbP=E 7(UA:8(U i g9c7R꫞F̳%%OuCPC п|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuT-*y:;VV 2%n芝D*CC`?JJ (QOTPgU 7W=gGQRܡm4@ yәf:ZNy.yo=RRT'Q>P t0]?Q=7trԢiŊeiEJΖLUTD7([MPry:;VV 2%n芝D*C_W}^/ë<:cga/jKk.辯ꮚ:/yt_W-8 %\q=ltZy黢Y |WwEzFwE}UB/A辯 %\q;yb랛/Vz]/hVp辡}Zp_<պ/_VqѼ/_WUtЬ}Byt_PhP`wE P}_+z]/hn 皳9Nt_W S(QLUwE~mAL9hn 皳9Nje )/ͨ:ډ5:/_W |Vg)Ն8}B㼶8M 4[(0];!Cp_<ՍCu;t_PGZj+Qۢ?-B/ŋ=.Pv/[EKUJ kgsrBgE f S(QLT辡}EGbmAL9}B2ժZXj+QۢNS1B(NeT*\RQEKNrBPg9c7R꫞F̳%%OuCPBUxQ=7trԢiŊeiEJΖLUTD7(m4+e xtYZ"(vpwKk] C2BV>NS1B(NeT*\RQEKNr*K&'Nei: TQs,IISFPB.С0xb_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(U gUJLO3ç_'}!FP]ԢZNpkr)C2|*|jbP=E 7(UA:8(U gM3O3Μ1uT̩uUKΣ|Y꒒:(]}~`1/UwJ*X(, J+XYTiDPnQEKNrȦ'ӯeh(BV^jQ- tvD?JJ (OTPgU 7W=gGQRܢPO3Μ1uT̩uUKΣ|Y꒒:(]}GtH KDҊ.i RÅ++(9c+:ZQ2âTQRܢPO3ç_'}!FP\(S\;Zc?JJ "vf(E ̳PrTJ(bPnP [MD<̳-'UAʗU\7e)*}(Bߺ|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuTxA<|_++DPB_ErD*Cw:áҒpȭT;L9zPnPustqIE,Q: A<:s,KIPo2W=/:gJJD2u7)+xb_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(U | igNN(B [x"%nԢZNpk9`YЇIA8dVT;L9zPnPustqIE,Q: :m42tU*]Us9zN(| _CrS%ʢznEKS4aEaӕ1Ҋ-(aB (bPnPq igNN(B [x"%nԢZNpkPugB%TASU3"Y(UAB Y%TD7()yyәf:ZNy.yo=RRT'Q>P t(Q=7trԢiŊeiEJΖLUTD7()yxtYZ"(+J%TֺѐugB%Bvf(E ̳PrTJ(bPnP)yyәf:ZNy.yo=RRT'Q>P I]J1/UwJ*X(, J+XYTiDPnQEKNr(M3O3ç_'}!FP]ԢZNpk?JJ (vf(E ̳PrTJ(bPnQTIT(Xg9c7R꫞F̳%%OuCPB%8b_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(UN $BxtYZ"(+vpwKk] Vxt!RPN!*|jbP=E 7(UA:8(UWL j'Nei: TQs,IISFPB.t(Q=7trԢiŊeiEJΖLUTD7(`[Q<|_++DPB_jQ- tvuPugB%J wݪBs,*ܡU⒊*XuT-E49<:s,KIPo2W=/:gJJD2uEb_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(U jM3O3ç_'}!FP][(S\;ZcBXugB%"wݪBs,*ܡU⒊*XuT-IU*Y1<:s,KIPo2W=/:gJJD2uW|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuT-IU*Y1<|_++DPB_EtQ;Rh8U;õ;0<:)(' '}ک'2QB PnzΎ)('UABڤa<:s,KIPo2W=/:gJJD2uC%ʢznEKS4aEaӕ1Ҋ-(aB (bPnP(XO3ç_'}!FP\ (S\;ZcHFC2B*|jbP=E 7(UA:8(U gmD<̳-'UAʗU\7e)*}(Bߺ7| KDҊ.i RÅ++(9c+:ZQ2âTQRܡl-gNN(B [x"'ݩD*Cz?JJ "§vf(E ̳PrTJ(bPnP]Q<:s,KIPo2W=/:gJJD2uСľyTOM(bfl5(8Zrbf:ZQR,:(UAE,Q: "K9'ӯeh(BV^ڔKA©.t1Vxt!RPNOTPgU 7W=gGQRܡmRO\O3Μ1uT̩uUKΣ|Y꒒:(]}Ex" KDҊ.i RÅ++(9c+:ZQ2âTQRܡmRO\O3ç_'}!FP\ (S\;Zcj'SB~XZ[3Å̲W-ua*k+ul;es=z7kЮu RCS1 OU+J7[(]t)zw;"w\,w\pruŮsJZXun7TOTж+uM y҉똠yOTRPN!B>NS1B(NeT*\RQR7(Yө8'Nei: TQs,IISFPB.Qgß?~7{xQ_GbXaV/^x¬_PsPw İ?zơw3ʣdj]oJ_S450&6.0`N0dl\j5LecCC#C=fXu/Q;FIIA8dSU3"Y(UAB Y%TD7(-u2tU*]Us9zN(| _~b"ľyTOM(bfl5(8Zrbf:ZQR,:(UAE,Q: Ki]d<:uw|BeJ~ WxbvpwKk] w?JJ "aSU3"Y(UAB Y%TD7(7-g9c7R꫞F̳%%OuCP\|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuT\O3ç_'}!FP^.ԢZNpk,fN/Q՞4W_MEus=n\Q辧E:/Q+M5ׂ+M5wpv ikՆyt Pj&Xn 皷A0L(2wݪBs,*ܡU⒊*XuTS<殢ytYeKz^u2T>e!B ;ľyTOM(bfl5(8Zrbf:ZQR,:(UAE,Q: )U |WQ<|_++DPB_ErNԢZNpkaugB%ASU3"Y(UAB Y%TD7([MP)U)<:s,KIPo2W=/:gJJD2u C%ʢznEKS4aEaӕ1Ҋ-(aB (bPnPRSy:;VV 2%n]D*CsA՞~P" '}ک'2QB PnzΎ)('UABh:ފyәf:ZNy.yo=RRT'Q>P t/O%ʢznEKS4aEaӕ1Ҋ-(aB (bPnP7y:;VV 2%n;Rh8U;õ8GxGxz}^/Q/Q/Q՞~=%_oNXuU.,X3'V]M>coASO\2ã+BzҲu=5P_Rz}L*]Lhj辡}_Jt*AKVQ:8[-U)QSEa3ʠhPqJJs:XXtt]̱Rr_ἴ kOMT,VL (VpZ7Wų-t,W3ʠSEsLtVMBVjc9N=+iSM*tNMUr-&p`zꞲjg ziYI5 N;OTж+sT/_WzjbE 8jgjuO=4u_&&V3ZE OMT,V辡}_es=c%K_д5t_PSZ5.д5t_PB}D+/Q2&4- ]/5 he[ 'W]bNhZ/_WiYZɖ*.B\e?Xp辡}_[=2Bn OUd(t_PuuJhwE 8Zg=&)2YU]3QUsk80]=UZhun՜OY2uS80]=Uʡ+):JIVqۢ3Z**}B⊫YZ]S̰ƔTY?9SKewE?4- jt_Pz#xe$W-kt_PRD&7ZU禉UZhT+QBKHgB%2 CWE (B;55%2Դд5t_P#xuf!S*cB}B㿝]sҶ*jySDRMWL]/ͩi1hj辢TaK*д5t_P#x+rի)ui骅g=UJq;uJNGZC:tUYI-Yhj辡}EGbփ-[!Zhun%D]zWVs:ZXe- S?uu4бXZ.sT/D:]~6΅jԮSݝTSƣ0nLhZ辡}EGbߍ3ZETwgU9I5.ɍ CWE (B;Ƴk80]=UPv/p`z&Cuu3Z**yT:e'Wt^g=UJq;SU :ΧW_RՊꜘд5t_P#xB}SJIVq۳uujk804- ]RzwgU9д5t_TҲj;:ΧW_ CWE-Xp:]~38}S,::\ÇgU9Mg-kbgU9I3wYtVLhZ/_QBؼw5jƋgV辡BnΪsmLI CWEN[MN:]S*cB}RNiT(Nu:6Uƅrjkuu5jƋgV辪N+TSKUN4[:E-uvuSN CWEMNLoB+8Nu:jeZLhZ/usD*gU9ͩi1hj辪5 heZ:]ZhunQ=SSBXNu: CWMPʥ+):(EP/PPv/mLI CWEMNLoB+8Nu:sTo*fU-U)YIE .辢z#xBnʡٕKUE VRtQB/^^;m-! :o*fU-U)YIE .辢z#xBnʡٕKUE VRtQB/^^;ÇMPʥ+):(EP/PPv/j7YJMPʥ+):(EP/PPv/hYMʡٕKUE VRtQB/^^;.WEaæveRQBP((B;gZXyT;2jJN(QwE !}3Y5 7C*袅t_Q@ABؼw:m4U;veRQBP((B;禕PDMPʥ+):(EP/PPv/6΅j MPʥ+):(EP/PPv/=4uNʡٕKUE VRtQB/^^;MWL]7C*袅t_Q@ABؼw-j15tʵyT;2jJN(QwE !zև'B'}UʺVOA<'V)teM; _~:X56u?IA8dST;L9zPnPustqIE,Q: c3BeЮytYeKz^u2T>e!BnR!P` !aIq^bŦ6-PblZP t(RU|򨞛QR9A`jQXpbe2tgKJ&XtPr*XuT-Eu9<|_++DPB_ErݩD*C|$Vxt!RPN"*|jbP=E 7(UA:8(U jl<̳-'UAʗU\7e)*}(Bߺn<1/UwJ*X(, J+XYTiDPnQEKNr@ry:;VV 2%n芝D*CsYЇIA8dTR>NS1B(NeT*\RQEKNr`oUO3Μ1uT̩uUKΣ|Y꒒:(]})IOb_<'Tu3NPX6V-9XYA̳-(Y҉*ܢ(U gNN(B [x"LԢZNpkqwYЇKe.˩e.R\: M+)ZV)uM ƋubN:YHqu=*U, ݡ[e:]QԵsSҥRugrRN3ʢg;uj'Pn\CSLYóZ:ug NtW;VqY˴+um4Q]R;`n 'plX K6]=w."F wRpASU3"Y(UAB Y%TD7([TJIyәf:ZNy.yo=RRT'Q>P t0/ KDҊ.i RÅ++(9c+:ZQ2âTQRܡmROM+)'ӯeh(BV^'jQ- tvkYAԣuE@P%WEЕ)(' tB)Dn(NeQ2W=%*]UsNrP#yDTINe*Ό7u K!Pܥ =)(' uvf(E ̳PrTJ*VtUNDS1<:s,KIPo2W=/:gJJD" (BVN; "w!c iŎqvziYOg*GR]?ʡՊvSUu.Ze5ΡՔ\9YMu[=2B%KSU3"Y(UAB Y%+:ZrIe52tU*]Us9zN(| _@ meEq?q!ARpJ"FY(\*]UsQ2W=$/:U7EIRswPu ]Ph3ҒpJ"FY(]U%ЬeKzJem* NnJF>4U7Nn`C+JM~Ep:뮺뮾O:"wvf(E ̳PJ*7YDʗU\LjVHXQ2$Y%[A9cΜ1yPJǝF̳%%Ov(~_EtEwqd%(qn b@ .2(\dEBy+zRPN:RSBP=E+eKzJ&T礜JF>4U7Nn`C+JMzRPN#F믓TPgU 7W=gGTj ,X9\CVO3Μ1uT̩uUKΣ|Y꒒: ȿB/_g C4- xZ 03K?Z[ENTТ7u'2QE (R꫞.'9yҨ*M$2@FSJRANTТ7u'2QE (R꫞U]'GTv&SJF)BR`}%w)B)(' tB)Dn(NeRQQ &T礠YҠto;芓I)̥P#yє)v0>tgNTТ7u'2QB(ޅe*]UsPs,KiPPsu:U7EIRswPu ]Ph32uҥ9zUIEF+(R꫞f:[J(Ito;芓I)̥P#yє)v0>tg%LAS蝪Bs,.VQ2W=%2t TʥNei:u2T>( KRJJ (§vf(E ̳PJ*7YDʗU\1TT*)`c:s,KI9zNP 7_Ex(JJ "rjbP=E zLuUIA̳-AAO2jN^2tl:gJJD%uW2uҥ9z(W1DʗU\LuUI9Ε@`}Ri%9o:2%.BWr. 2uҥ9zUIEF+(R꫞f:[J8'/yҨ*M$2@FSJRA%[STPguTToB.(U ԬeTIL:s,KIUB+u2T>*(BRwERPN:RSBP=E+eKzJ&T礜JF>4U7Nn`C+JMzRPN:RSBP=E zLuUIA̳-ABTv&SJF)BR`}%w)BҒp$N<.U3"Y(]U%ЬeKzJ&UB+$,(UPS,NX2teT+RQs,IIS)(FP(7C_IA8dJM #wQBs,Pb.(R꫞s*"Js)Tte9J] (]4IA8dJM #wQBs,.VQ2W=%2t '7\pN^P#yDTINe*Ό7u K!Pܥ ?JJ ( 'FS1B(NeRQQ &T礢eT+RB‰Q"'Nei<ʨVcΣ|Y꒒;CEMЕK `&@ⴤ2uҥ9z(W1DʗU\LuUI9Ε@`}Ri%9o:2%.BWr. 2uҥ9zUIEF+(R꫞f:[J8'/yҨ*M$2@FSJRA%OOTPguTToB.(U ԬeTI8uuNX2teT+RQs,IIS蝄 ]]Gna~`@v`AczbA-MqwJl!6ҸCl!gaGqlC%q 2W\lC%q 2Wǎ6BNb6!b6!b1㍈cǎ6!lC8؆4U7Nn`C+JMzRPN:RSBP=E zLuUIA̳-ABTv&SJF)BR`}%w)BҒp$!STPguTToB.(U ԬeTI2W=5<̳-'U Ԭyo=RRT'_(| K7)JJ ']*PhQgsLuUIDʗU\Tv&SJF)BR`}%w)BJJ ']*PhQguTToB.(9c(Q9r*"Js)Tte9J] (]4RPNDV>NjbP=E zLuUIDʨVd*Ek+HpNX2teT+RQs,IIS蝄 ]]CRPN:RSBP=E+eKzJ&T礜JF>4U7Nn`C+JMzRPN:RSBP=E zLuUIA̳-ABTv&SJF)BR`}%w)BҒp$aS:TPguTToB.(U ԬeTHuQ0',yәf:ZO2X9zNP讈E 6УhQJJ ']*PhQgsLuUIDʗU\Tv&SJF)BR`}%w)BJJ ']*PhQgsLuUIDʪI^to;芓I)̥P#yє)v0>tgNTТ7u'2QB(ޅe*]UsPs,KiPPsu:U7EIRswPu ]Ph32*F뮺뮺;TPgU 7U3Q2iMNNr2tU*]Us9zN(~u WJJJ (u]u]|']Bs,.VQ2W=%*ZL,7DNX2teT+RQs,IIS蝄 ]]*@! p %ᓮ(E4(E ̳QB&T礢eKzI^to;芓I)̥P#yє)v0>tg%ᓮ(E4(E ̳QB&T礢eUWI$/:U7EIRswPu ]Ph3JJ ']*PhQguTToB.(9c(Q9r*"Js)Tte9J] (]4RPN:RSBP=E zLuUIA̳-ADʔK\:U7EIRswPu ]Ph3ҒpȦ tNL9zUIEF+(R꫞f:[JЪeRQBN^2tl:gJJD@P] )C%EaS;U3"Y(]U%ЬeKzJem* yKUḚu1҂r9cgyo=RRT'a(FP_%YPT9KS1B(NeRQQ &T礠YҠZTTQLUMM k'/yәf:ZNwF̳%%OveQ+`m\_hQЗ)(' tB)Dn(NeQ2W=%*]UsNrP#yDTINe*Ό7u K!Pܥ =)(' tB)Dn(NeQ2W=%*N)'9yҨ*M$2@FSJRARPN:RSBP=E zLuUIA̳-ABTv&SJF)BR`}%w)BҒpȩ뮺 S1B(NeT*eTQDʍ7U99Μ1uT̩uUKΣ|Y꒒:J1^+)(' )u]u]|nU3"Y(]U%ЬeKzJ&UB+$,(UKBrǝ9c*Z:gJJDEPPsa)9991똱!! XXXXXYc1c0\ebbbb`(9999-s$A$T 1`%%ᓮ(E4(E ̳QB&T礢eKzI^to;芓I)̥P#yє)v0>tg%ᓮ(E4(E ̳QB&T礢eUWI$/:U7EIRswPu ]Ph3JJ ']*PhQguTToB.(9c(Q9r*"Js)Tte9J] (]4RPN#}]u]urwuک'2QB(ޅe*]UsQ2Y!aDʨU<̳-'U Ԭyo=RRT'a(~uWDWx Aq @@@%k En + 1nxykB[ Jq^x7q #2q\pIq\%%%ᓮ(E4(E ̳QB&T礢eKzI^to;芓I)̥P#yє)v0>tg%ᓮ(E4(E ̳PJ*7YDʗU\1T(q9{Ε@`}Ri%9o:2%.BWr. )(' Q9KL9zUIEF+(R꫞PJ &UD2W=$:s,KIUB+u2T>J *(C_' _%ᓮ(E4(E ̳QB&T礢eKzI^to;芓I)̥P#yє)v0>tg%ᓮ(E4(E ̳PJ*7YDʗU\1T(q9{Ε@`}Ri%9o:2%.BWr. )(' utNU3"Y(]U%ЬeKzJ&UB+$,(UOYLNX2teT+RQs,IIS蝄1:*"JJ ']*PhQgsLuUIDʗU\Tv&SJF)BR`}%w)BJJ ']*PhQguTToB.(9c(Q9r*"Js)Tte9J] (]4RPN9KL9zUIEF+(R꫞PJ &UD֭btY̪jV<7e)*}e%QM)JҒpJ"FY(\*]UsQ2W=$/:U7EIRswPu ]Ph3ҒpJ"FY(]U%ЬeKzJem* NnJF>4U7Nn`C+JM~E%.NRS1B(NeRQQ &T礢eT+RB‰Q!Rrrǝ9c*Z:gJJDYAIBnSxJn/JJ ']*PhQgsLuUIDʗU\Tv&SJF)BR`}%w)BJJ ']*PhQguTToB.(9c(Q9r*"Js)Tte9J] (]4RPN::7]Bs,.VQ2W=%*ZL'\<̳-'U Ԭyo=RRT'J JuStEIA8dJM #wQBs,Pb.(R꫞s*"Js)Tte9J] (]4IA8dJM #wQBs,.VQ2W=%2t '7\pN^P#yDTINe*Ό7u K!Pܥ ?JJ "|L9zUIEF+(R꫞PJ &UDUNX2teT+RQs,IIS)(} Bn+*sdvg6wv;b`o107w.m w?w6sPo0om#? do? h Ƅ? hnƀ~o6qi]m6s"A/wq9;$AU !"RE) $!.Aw  op@@ܱg!'4wpaܜAw("w(Ot6;q ?q AIw*4w*q @x xq {. "\@wBG? . 'H" ][ ]Ҹ:X%rܽ+nn#ep Dp\]dT#_b+wu+u" zr;wn w"[t KCwN~uWz]w n;%F;9uw Lw ~ |&5w>N&%u`]e@IwҺPEANANBNCN#}pXžӸ, io _w3[;-`-`PNGNHNINJNKNఇ-wNr/o7/o8C"i"i?-pIo -b}p d[;RNE"i?-)NG"i-(Y"ioA}p d[;X"iAEӺ?oW- ?žӺžӺ[;%NN}užӺžӺwP[;-N žӺ/o[;6Ni@m-'N}u?iBoowQ_wP;NžӺ?žӺwP=N}ui@y-i@7Ni@}-o}uwPžӺ[;d[;?d[;d[;-G-ȷw~ȷwd[;DNg}sEӺ}u~ȷwZEӸ0K"iޗd[;ԇEӽn~ȷw\}"ipy"ip{"ip7o"ip}"ipEӹNطEӸ"iF?-E/}p-o%-DEӸ~ȷwoN"7o!}pO"iT~ȷwN"i<d[;?N%ȷw$-H&}pžӸ _iow4iȿžӸN}p%N-N/N2N4N6N}piIžӸ}p}p/N[;}rwO}pt[;_iE-[;i}pt_-їwFi}pt7N6N?wJ?žӸ:9NWwKžӸ:[;wGiY-[;wL?žӸ:>N<N=N}pt?N>N}ptžӸ:?žӸ:i?i_iioo?wA#[;-KN&}ptžӸ:žӸ: ii i ?i _i ižӸ;žӸ;A-wboN[;_wboN1N i/wa[;PN,%~ȷw/[;GN2?žӸ o!/[;LN2žӸ iBw[;ȑ-dIN2%}pžӸ žӸ i}p"N4)N4w?oBoBoN}p žӸ }p{[;oHžӸ E-hc-i/woEižӸ }p6N47N4}pQ-[;Gwo _i@žӸCN7}pA-l[;ا[;۟ižӸ žӸ ?žӸ -l1N6K-mohžӸ N7wwižӸ }p2N6i-l[;[;m-m?wiAC-_iAEӸ1N _N wLd[;&iAȷwS}qG}qWwVȷwGiA;o ?žӸ=o }qo[; EӸ? Ӹ?߲-GoGoOo_зw3f-M)NEN(~[;Ӹ??žӸ?oįw_ -}p\-i ~ }p)}p }pGwӸ@~bi ;w[;_N }pN}p-EӸ@K[;Npw_ }piw߀xwN6oȷw ?qod[;_-d[; d[;wo,8Ny"i žӸ@a w߲-y[;H-78wҋ}p wo-"i NA w1o?i oӸ@-Hw'T-K}p? žӸ@ NE[;hw?owOᘷwW }p%r-\-o?i:N@)2N@xw?h[;F-Yn-Ӹ?-[;߲-}p E"i" }p AN@}p -ӸEӸ~ȷwOH[; }p ioN@wqo?-W }p [9NA_}p V-žӸYӸ?o֋}p a[;}p ?5N@ȷwo"iiͅӸN@V-@oEӸ?-Bo}p ߲-#ȷw"iO }p igwPwEӸN@#ȷw#Ӹ ?-JN@%зw᰷wӸEӸE-!Owo!iBiB~Ӹ}q1[;Do!="iBC"iBE"iBNEӸ[;E-"N}qEӸmo! d[;A }q ?}q G }qQo!*o!-o!W"iBȷwd[;V~ȷw-!iBa"iB>o!- EӸ }q"iBd[;@Ӹd[;Bo!N"iBh[;B}q#~ȷw? }q$~ȷwO}q%ȷwg}q&ȷw_NPo!-!#EӸ$зwN"iB!ȷw?}pEӸA"oE?- - }p+oE- -c"i ȷw/~w(P- /Bi Bi d[;- o}p_Bi ~Bi ~ȷw&߲-EӸA d[;- Xw'?[;_- NŢi L- }pg}po}p[;1[.TܡU(]U%fZU7^Iz sL򨨞^d8)'Y7,'uyU]$NPnA(I:z+I::X:ºV-gRɇ*:'ru?j*ziUEUhP%VxXq=uu:*%j)L±ڊdPqڊjE $U=tQB]k%IzYzꞑѸpS,SLʡE4+R'*ЭJ %JziYOq=t-VD¹NI)\E4+T+YM^G$W% 讉UI5k)¹$:XJ_I$:RHDhW:u?rH(WE~(E<<-BSʭrk$$byNC ErI5WL ^"eUVTpq,~в?If%WL\0!?e5WLT6~"3E$ϿdUEU޲.q$1'ߌ^I~? [R)&}+oI3 ?I% hc} M҆41„ɠU}IiC))ZIiCB2d^ T빳I>WCbUR 讫VŽ8mo!bۓD]pBŊZ\'~5 684ODQo!̱D&ѽkX.:[rhƺἃZ-[:D/?,684O@q6U W\71mɢy ϣuy[U&ѽk5bԪM"z(Z+R.o%UZL^kmxy 8!uy JA3}+$BhZIiCUB%P+p1\QM͡Bp*$Sx_y  ͠*H8}CbUSBSx BZ8^RJE7 hކR(W\0I]Bh JIiC^*]% }޸J{KJU%^(W\RWz!HLS։҆41S$>cshaH8}*G$S /?QrJE/1<5\IT(+}/?Q+G$Ssh`H8}CbUpG$Sxay q{@ kī*tSBSx BZ8KzI*/z#u7/?Q GHBo !y"?T-"rJE7 GuDRZPƆ8 Jc&Ю*"FqJ5bU\ϡy ̶^BQE~>$I(6%]u4:eU!y"uR"N"'B(^U%aL>T`uy+rgނ1= 3ԹUwD D5U:>("`?S*J-޴EI"+I-(cC(&>qԃiu*+( CbUסEɟy Xy(Qrgކ5VD+{+y'BR5W=rPϽ= tOrgށoCk23AA]S])!3ԺXERWzQ$&ʫqԪlRAU W^ԕO5`y :uSrOC{'TSlR īJWA)}/#EҺJ{4O#EҺCGtUɑ<= +wMU\ϣB0FUɑ<\CkJ(2'ҺCU]ɑ=J75ץtR*2''5ץt [rdOC5ץt+7Taɑ= LCkJ.7Taɑ= H^TqR&D'ѽ +:♇W&D$Q= +WU UUɑ<$/CkJ72'_`u]"STܙ(= .TYĕ޲i CbK^(/e1$1()*/YIZIiCLJZ7>UA*:e!z#]zUPu!ԣ}`z#$TY0I]F!2/ Z2҆41QAuF$ pMRIiCC(ɠ/Z8KJU4 ,8H845 W^J]' TQth5גn= N2Ѽ`uOTж+4o>=QF'S*U*zʑPƺU.ʞ}JPƺy򲒤o#E@19^Iܘ"yq^҆41IZAT6%uϼ`eגEw&}`z#u䒻ϣC~"K#E%w!4^(u%w$E^Pd޲E^P+q!HM'"CjT+]9YMrWzD(JHXqB+q#I )S%w"ȼ.EK#E%w(?uC3]눭$Q{3+JYZE^KJq!#H8}u W^Q8Q<`uJQ[0FW!'F`uEjV9PVƺW"R^$O>>5תP= UqBčѡz#]zUϕ0FW%TS@`uIk{(ކ^䖺]ɟzz#]zLC5תyܙ)`uI{1"z#]zj:Ew&}Oz#]zPHz#]zRɇ5\ ȢB0FW MU g3\5^$/D0FW%aJ Uq:ąhbz#]zꞑ.V!z?^R)&~?^)&~? YYZE$Ͽw(R)&~?^ZPƆ8#&RKJILdx_zB$ p4(oF`LS?sgДCCbUבmt(B0FL>0= =Bh^CugVmBoCk"R\'GȦSܚDƺIUj(YB>н +77z#]y,srOCq ^Е$} Ow1$>»I7ФRL>~)oE$Ͽ׭I-(cC4QA E}i$xWz| JE/?^߉ ^+H0o[!H$1ߌ [BZPƆ7c} O׭$1(c& R E~iȼQz߀  [DZPƆ8QF^޷+I-(cC'~ [I-(cCLW_I-(cCKW/[`/ [’ZPƆ4H~ [𔤖1(ɠ K &OM͟AQ"lJP<`uzu:D0= MLsthF`u檩u=єVk2$8[=єDa5תW)FRBa5ךlQM߄_+ƺUTF%OQEUR-uF⒤h^ (]yJmRW-'w)x$15סZɟz IU}~҆41Wx_zD$ pExg$H8*ij.\ ̺HϽ Cs.Wryhc»( DP1\oU}}$҆41Cx_zDRZPƆ2߀$i% hc oU}}RIiC* .o$ o^^17*R$ px_z)}$ h ҆41c&Ŕ]͟FAQlJU./D\Nz'z'uTб]ɟypĉ`u)STܙFoCkXp{>"`uΥc>D`? [H0}򒤃lJRQ5ɟy Q-rܙ`uSU ܙz#»LIxRVZPƆ7&EZYbڻ>R ʇju=~' ų3C뜨4OCkZZ75Rϼ= 3=#]򒷟Fh»4)R < KUEʧ:0"CPؕuU9ҹN5׬8[=ɟz]b5O]ɟy'5תc=ɟx몡Xy"z#]y*н krg|59XDz= TPUW&} Q 3=#\'8+o>S̱TUsg`H8u W\su)\ ʥrOw߉`z#]zt@1ϼ뫝TW&}oCk:ήIK̨vmFѡz#]ugWrg|59QM) D0F%[O@R`uԨ3AOCk2i]w&}`B0FSEw}/BS뫚+3C'5ך+hVqtE/"}!EkLOHu&}#D0FQ!ԧMrgށZ78.oDZPƆ0~޷H0|$)8[=͟ *ij.)Bn[!z#u䒵TȞ8+o`E~PJl\)'&~ (7zuMFZ]xUWtOJ2ЪήC'hNLWwXtOJmzW+yZɩZ0W9_z= qܓ0!} Q q܆Wrgނ( 0T,A43̹i\ *p<`qpƸQ3|5o]Tܙ`]TF`aeqѽ U\&}`elQ*>н ʖ53>WRܕ-j%UrgނOCk.#*[$Q= ] $ՕWL\0A0rD.ZTTShYUtm+oCs.Z2H:SYRʫyN$+n\!z#qtnUxz]MtneU~޸`"nA@9hҲfK.L^]DkOrgн Ck.o-S{/#DKF)T:ĉ⒤oDTk.aĊhU:N' !E˪Xq"NSĉʊDEHQFHSy!"zh芐e,8M W)""zJz"(YuK$SBu<7~$O"D!E˪Xq"NSGwDL!BEHQFHSy HFJODTk.o,ÕU,8SBu=߉H`C!E˙,8 g3DVCk.3v5rg*'5ʥs5'3DVT`e5nE/CJaGXqwFDĊ5MuI!Q|8&"5k$!Q|8LƸ)S[9げN*BKg7\p2 U^eQnXLs%*O$End:/Ƹ)UB+Y"RHT_)lF^!? \H0~(<޸}$ p!DU3|/p?IiC) .p? IiC^޸DZPƆ7 /p>RZPƆ4EQWѤ1c~ \$1߀$17*ZIiC+ /p@$ p /p@IiC~7* % hcoU}RKJ ߀KJ&)% hcdx]zIiCFM׮ KJ\d|*鹴DqU W^CN(ϼ`uW%SUɊGTJ;1SȢyqhTzoo#DwPA^c!G kCAU W^C1S^}k!G WrbF]y)STܚ'`? \a0xWzA ikzm/?CbUגVO!yq:⫓<7GtC 0FTqX 'z#»%)BrM-rXq"ꚚֲARA(S]<`uW)}OCȥEC= */(^+F0FU=w'5ג:wrg}5גerg|5בm .L@`uXT&} Q ]i@U^tDꤞVSU͠$f4-.2hk ^ K.55f461-.- ƅR dC0Aд<3H\jj453L[!aj56.50-/ ƅR d f4-.3L3.'cB) MFid036.5&,.0-K1iqƦCY&,/dȸ K.55Z\lAc"ە<3H\jj45j^3 &02.-O ƅR d BiI nVhZ\e!qAphi 1qmBhZ\e!qAj\jkwxf4-.2hk Լg!1m߁дBSQb[ 1iqƦCY9 SZ]w<3H\jj45j^31]cB) MF LitRFhZ\e!q@1lQjjX\`[wʞ K.55-45~'cB) MFid3.60-o ƅR d 506.0-^nm$)̺I3&)y G2$\螊9^I&/>裙udW&)zOE͠ ,˯$L^ s.Mx!y ~rI=UbH8}CbUpBW˯$^JB0G2%w}C˯$U߁= ̺IEɟx~(p"} ^@rLUy+p")HL \?W/\@wPRL~*VIEZH!GJ`DWo\/RM뀦I~?޸ aHM뀥E$Ͽ/\(QRTaJ? \%)?KJLo*E»IZE$8I7)Go\$RG]JE%PG8)&}Sz*BI3]뀩 "~?^ H0*G]뀪I»R$I K#E%wZWz*F޸ )~޸ H+pRL~޸"BI3WzI»P$RL~޸""g$I»E)Aw ~/ \#H+pEE$]"I7)>~(p`L/\pM뀭`*GwIAwI»YRA3Wz+ ޸ ѤRLVVI4/ )>~)p}"!*» )&~? \(aHSzB"gߏ» I» i?w%I?w1$RL~)p+HI» RL~(p A" \/I3JA>޸_DI3Wz}E$]I» $RL~޸`BI3? \0@I3$I~? \0$C? \0RL~)pE/?^`+H~޸aBI3WzI7`H1G 0REh<+p J|+p‰"g RE$lҨQL޸a"?EIYf42pB^)pVL0wORL~)p"gߏ7PRLWzD"gˆ"gM4I~?޸Q$RBm4+L 4{Q9N:U֓?dNU nY_]3-$di1d>/I%OkDU־W8UjOL șOZ7U=Td:ș u2Y$*.2&}5S42Pzdd:șQ2P;3 TW$* Q%SgUu8UW?$R&$yT*ܒ@ޚ+UWue>*IsNTU]֕ J:bM3,O$S=UOT 4} GHhQMDϿ♕IB&ɕI*uZ9J\ºJ5g ʃI2&}*u:&t*&XMH24kM \SiOVU]WZ>ЮzS) ?j8IC*iy&Xtu**\H2kD/ig♤W)>+IJAOlJTTu-CŽ5:\e%0z#ȶY3w|S2VU]W})UI1J:U$3)T,\?⩕M% *euܙ$Q<Ҳi&9BJ]w&J% *euܙ*U$#(WXT+J]cRL?ȶY3"ܙ  T3⫓?gI(7zbP@ >+P;ϡE nLreRJE3T]>S=R.SRT T3⫔Vu(E**3JhdÙ3Xp2T}kPJˣŊbuܙ )=Ȋ+Xzb,QDH2"grNICcTƃY eƲ F@4PgʗU\s%SMU .6~^FsuTUB)JnydiE@eUWI2TUBeT+RE8T\lLVҰ\S4)Z&u=7 &*4~~*ڍ:uHUW Qٵ23(XE4)eGKXq"k9hSs*ZLIċeOU-4XQS]]Bg.TeB)ME$'S*U1̴޲ K#E%wBg+[B+eI[zBZPƆ2% hc( % hce~*oI-(cCPM׭i% hc} ARIiCFMw)&}QzBI3E$G ?/\)?wi>~(p$RL~fUB+$i$LlDErcrg+iEϣC2W=2TUBEzH_%SMU .6|INUʫcie/HLSZ5#kOsb5P\$Ij%T)BnmIj% 2w!ԵnlVRpX*r+X{H8CQ,~S\8\)j%֝VJ* D䦹khy(? j%j\ij%W!Usgѕ$!?pr>UAcCBr.U]6~"5i[2ëE AcZhOLKWE͟+)H8CQ,~*o$11A^Ѥ12h<.oI-(cC(&)Ͽ^i% hcF2h6Cqj'BT*(\S^) ktEj箫>J$OCktJSIB#z#]s+u5ɟy\DVnIB#D`uΔHË>2\DW% j,e:Pq%wRAuJ\xr-YMrWz)I/PIT(J\i *iRJE7/Cq)% hc*<8dÙT(JGPؕu\Wx y FPE2P8FPE)7GB%P`z#]zW 1 <qKJS4 FJ\(B҆414QAږL9Bdq=͡} "*%UHuwkUR)A螊5גJl0<7E%UI*O#D4QUTeQ)y"y/8b0W\i,R?AСlJM%U\|/CkDV-!z^TiU\z#]z&uJf&}oCkD+Xz\'5עi&T禅&}ѡz#]z&\SO>W!)G4QLUxz y"uIf+Xz\D 4U=ɟzP0FM" R9EɟzH= I*UH @ϡ (EE$ WkJt\NLƣYS31,3O FcSduFk 0fd]x`xj5hkthd5.,KOG*]Us!d\HI2W=4(3!z#]y{V0= IRz O#D0FM"h:x!)G4:z`z%(]yZybQ=W&}P@`uEkEd8b\@R`uEkEdW=aG5\AOCk4+\to=2,S%TW=W&}P`=#5'uJm ZAJ(k`u"'Eɟz]\+XurOw<!)G뫚I.Eɟz"z#]usHqѼȱL+zT4\|뫚EUW:Bn' O@kiPT&}PE뫚JgTSH3"/CkiQPCu&}P0G׭҆41R2h=։IiC" u W]M OM"y h]zI*oz#K]p%wRBh֊$҆41".uJZ"^)BZPƆ2]qI])}!1OYL % hc|2ȑ>pؕu#U ) /?QrJE/JF*rBE~MBrJE76DRp:ī#u#U )$o!y"?ȠH8}*4Pƺ[R$O!xk GHBo7ѽ ̺Hy kB9%P)y q"h-#U )e0E/Z')&~?+X{B*몢CjܦFꨒU )L/?O?Q$W8zoCq$RL~(e1$RL~(e%i?Z7KJLdxDZPƆ7ጚ2dÙT(H8}CbUתYN@uE2P8FK"k<7~9$\b`֍Bg[4S%wIxZJVS]FVܽeHRKJd \6%]zҺIT(y kBWHP/?Q i]!+%Q*/!y"uSJ⫣F5סM+:hϼ`uSJK\G^^4+ѕƺ)tU4o!z#]zҺCyW(Z3!z#]zҺIgsR)Rd.T/#E~4 .l A0T6%]z"N7BE4pF)JҺy"y"?P"\6%]z̺Cun'  f]%3 >8% fXM͊H8*ЦiNϼ`qT1 f3.T/C~޲I% hc2hTY|Ei Z҆414/Wzߊ$*tUtJE5##H8EPؕuȦj^$I»E)ċ»P$RL~޷ I»O? WP+o!4^PJ[ムY Q=͟BVqCbU[='TUU ܚ8\}ކ8 % hc~BWU]+ϡ 0EPؕuVL^\]z#»>/ [EiE AOsgʊ EPؕuR $9U|/CkBa%rЪ CkBa"ܙ=  ARNȞ+F0F)(bڮLФIRnLѡz#»QJE$]|AE>޷ʡH+o"H0| [ORL~޷ʠH0| [)&~? [HR FW]}I*cU]}4.TY4RWzF!4^u%we)FWp$182LQsgѾqCbUט7Mɡy ϣu )4/>ƺUJqUɟzPEsֱmu\hR 6%]u*8<`ulNEKe{T0= s-TYEO#D0F̶CPUw&}oCk\dVD.LҦg>н s-RJkYx|5ט7V} D4QKe{' qWzG ARVZPƆ41?]| ~޷Q$RL~޷JR )EJr֍޷_HM ޷`H0|^1ɠ.l(.GADV5תkmtB0GԺXERWz߀!3AWz߂$qԪlIT6%]zRU<~B0F]T] ކ8m hSUrsg$?*īBZUxB0F-LYQkEOCж2VeGRUxF`u[B)$Q=  dziYMW&}Q!z#]zȱlg>K=  dY=4>J$OCkB&XUP]W&}⒤oCkB; OCkB+ro#D]z*]ѼOEЦC]ѼF)j'ܭѢz(^2*9Y~@4Q d8zLPz#]zȰ8zLHz#]zA]W&}萡z#]zȰij>P0F)`j3DЦEkҲ&}ѽ  d7re{>\=  d)XTZ4/CkB(RnI w"x5סLQ\ƺ)ꞑ*Z7B F-#h} (5סL1<oCkB)Nz#]z*I0W&}߁ ЦJ*V)`uS"ŵб]W&}߉먜teFR>`u9]FEФUɟy"B0F)rBjy_`uS%rH^~H^2W*٫Utq<%Hކ^2KJg@0F)ZV8"yH  d+ZT@0F^2TE**y(|^2TdÛ"yehކ^2.U]*Y0Ȟ|^(:\$TaɑlJhMɟy ҮC+ CkJ nVV4OCq͟BAT6%]zUc8qtq<`uW Z7G0Frg.VV4OCq[> A.3} *UWqWz| vBW]!͊H8 īMr+Xz^B1"uCk78TOC'5צ)EM]Sܚ>ƺ%3]w} Kȡƺ"RUxD'5צ(R$/CkMrP[x^8YԵnU(= 5ȩU Ԭ8)*F0F%'C0!uCޕ*x^BM hм8^W:cLep= 5ȶ8} ^8B* ϡ)F0F"nL\+>`uE |5ZU+RVĉ`uJ:>>`uIU\,V>"`uEUn^~F% Q;[E3U7~}F5צ(ZSδ7YJKϢ*`u@zk3>R\QwF0yq5ȶLϼJ8ZQU76~)lJw}/Ck:Uɟz^%O#D0FLб]ɟx~޷ UBrS\㵴SR CbXЮCʫϣ*H8CPؖ?SsgʢH8CPؖ?T+G!Usg*H8CPؖ? [hKJ\ehUz+FZPƆ2Wz+ lm)CPؕuJ$O!zEh]yf7BnZ'DVѡuJʡE7#)F0F!U*wzqD0F!U"nL B0F"T-GtE/@TSqVTa>)u=2.U]6| U W^ugRJE*]o!yQΤBNhhEȢuVu$]򲧊ѽ Τu3,\άEsq<4/CqWz++H+p!B`Y_%K5͢ qT6%]u3I,׊Q!uըP=Q!z#]y̮z䖕) ~(p!} (ƺPU, Ve= CkU *K<FPLlPDp= Ǵ^tDꤞVSU͠ IɟhZ\e!qAм3H\jj45hm!c#Z\[w K.55 Fa1iqxf4-.2hk fB jl\j`[x^ K.55-hZ\ff]tO ƅR d `fl\j2LX\`[rcB) MF&66LX_ 1qmѼ3H\jj451a|$Eŷ*xf4-.2hk ԼfH2L`d\[x K.555. ܭдBSQRAc"۾дBSQQԸhZ\e!qAxC1c#ۿ1iqƦCY4Ų&5 ~cB) MF Kr xf4-.2hk Լg!bc3iCQ,/ ƅR d5.;дBSQb K@԰<3H\jj453L[ hj4 M nO ƅR d f\l`[w K.55-j`l\`[x׮I-(cCPMo\@I3 7!H JE$IQz ޸ " Co\H0$BU/ScEI$xWz Q{P g(>»0RL~)pBTI31$Sc A3WzDAWz"gI7PRLWzD"g"gERA8|+p" E^޸#HQz)BrMw )C]ZE1?wI?eT+zT4H2ʌCUkOq3%  B&º$Z֓?e 랕2=ߋ4<$2&} JaQc*K&]tH24eP ș,BdU:&WL-QO"JJ=*ezd:ș-M3 ?4 $Bn 80Z7F80JN*4>(LT*BddÙNcȩdҪuJf$2&ߦzREK&T+zT4I T-"rJE4\dLʡE7ZRéGs,\&hEW=aG2H24} GHhQI?bK&BniU )Ҕ^,s]sҦYAp?q3P3I2Ls*]UsxJm4KHq"'W)Dº\lTWeKzd9AqąU4PhXU*Q"ErZoYTI |z5Zm*sdI'&~Y Ɍ nᬃdF}ᬁxk!hYS31,3O d S]o dix`xk!raith`g j5.DCCScQ)FpyҪ]=W6)I93  @320, ^Ʀ UzʒKJJ8ɠt2%w) |/YuBJ[}uJ[&*U Z#W\0I]|!4^*\QL޷HW4+U ))RJE7~' ^KJU|wRɇ2QL+IlJPES^BQT+LT*.DQT+jk}ϣu\QM)z^ ge+y'?rIiCc&ܡ]hI]п}IiC߁(ɠK&ʡE2UZe8!H8~lJIUR*]BuE2P8FIUR-CF(]y$%UA» <k$U"TAx<<C{0+zT4NU͡H8}5 W^kB0FM%aR0= HdҪ3#D0FM% 랕2= .Lhކ^VD(3?OCkDLuUM .LϣB0FM"NSϕJQƺM$S=U^'(^jO"'EɟzHP IJSܙE CkD+e#\D4QLT!zEh} (QGT(@ *īB>5סZɟz (TJj$ƅR d 1iqƦCY Ɔ&20ŷ}дBSQhfH3^cB) MFid,2 FƦдBSQb ƅieDhZ\e!q@1lfƣ$Ņ)xf4-.2hk"ccdŅ 1iqƦCY K2L`d\[rcB) MF Kaq$EŷдBSQRh\m 1qm K.555. $&02.-^ K.555 KMn ƅR d03&20-<3H\jj453L["cPkwxf4-.2hk Լg!j` K'cB) MF Kr&3645˾RhZ\e!qCRᩀ-.j^3 K.55-Ըj4 MK nS1iqƦCY4Ų@hZ\e!q@1le|дBSQb VZPƆ8^P1dx]z}$ o* \0RL‰"gE넥""`?R+e#$Pg?=*e{ PEss$* ș+jw&º\m fTC*jQq~qąU4PhPI"ʹUrLs-7&)ֹkAOU͊RNLƲ YɌ nYSKBѠ,3'f&c@Xgx,.C30C"c0<5@j]wᬆ4ƣRPQ#z#]usHzjW\QMʞ1=q8UBSܙAOCki)URNu"gϼ QEC T\BS qֹkAOU͟Brg5axj553& ̋7YɃ3"QƦC[Dk!q`d`]"z=R꫞ 'Ti(T6%]yeKzhQrgB0FM%U\)z^iqU\} = H8Shށ J8^iW)*z`z%(]yZybQ=W&}P@`uEkEd8b\@R`uEkEdW=aG5\AOCk4+\to=2,S%TW=W&}P`?^HUzDZPƆ4h&&Jt\i'&~bauмhfF}CScbԸ1=9+o&)dS) +p!H_uJ\$&*U Z H P`4xrJE2Wz*I? hW$Ssh$"lJI* ^"I-(cCToqRɇ2QL+IlJPESo!z(^ȦS =kU Z/>ƺPIT("z^ gehF8 ҆41MBѢ  )% hc~h&ǵ,s*Uk){@VpEPؕu䒪U:VuE2P8^]y$ʡ…Ѽ(^I*IUPp4O#E%UHU^^~} !=f 랕2(iϿ I% hc)8JUz+I-(cC"*UD$ p%^*hI-(cCKU֊҆41W%^E IiC Wz"I-(cCQUֈ$ pE%^*h1 px*I-(cCLQU֊$҆41Š8JUz1qU^)% hcC%^)}$ o WYL % hc*U)$ h^I% hcɠU))I-(cCZ(ɠ3*WsbiT6%]z\  L0G׬$ oE4AziYMW6F$f4-.2hk ^ K.55f461-.- ƅR dC0Aд<3H\jj453L[!aj56.50-/ ƅR d f4-.3L3.'cB) MFid036.5&,.0-K1iqƦCY&,/dȸ K.55Z\lAc"ە<3H\jj45j^3 &02.-O ƅR d BiI nVhZ\e!qAphi 1qmBhZ\e!qAj\jkwxf4-.2hk Լg!1m߁дBSQb[ 1iqƦCY9 SZ]w<3H\jj45j^31]cB) MF LitRFhZ\e!q@1lQjjX\`[wʞ K.55-45~'cB) MFid3.60-o ƅR d 506.0-^»֎I~?^pRL~(h$R ~(hѤR ~(hʒ)F?^eiCw E$Ͽ/YT ?/YT) ~(eH)F~(eE)CP gTV>*q@ZPƆ7ጚ2dÙT(>p:īT*]+y FK"NT^/DQRȢZP<7~E E$JE(4aG/\EI?/\Q$R ~BHbeA?$ZɟaԴdRQ=R(XA?≕._5 :U $VDI ʋEU% n/ (W\iO0/YBHbeA?\$VDH2S- Vq"'AdLuM5T(ؤ ʗU\s%SMU .6)EzH_%SMU .6))E$'S*U1̴޲) |ƫƵ\ TzlRrg5axj553& ̋7YɃ3"QƦC[Dk!q`d`]"z=AbW=2NU͡H8)D*4*]UsB>5ךi*Z'`uJ\rz#]ym4KHqrѽqHSTJQƺM"F"2+XzLȠ4LqJj3"4LȮzuj3"(^iVzdXJzLȡ {( (B*ZAJ(kB0FZТϽ CkiQ:NS=qR꫞\}'5W4LBLOUɟzʑ [=5QUsIT(OA J8]\*BLȠ'5W4*:M3rgE ^]\(̆.Lȡ)`?^ФRL~KLUI]͟ 6%]z\ '&}`z#]ukO"NFu\(3@$OCk]Sܙ|̱rL@'8Qz)H ʤDiT6%]z\  L0G/[iϡ (TJjRNLcB) MF nдBSQcCi ۾hZ\e!q@Xj43 $ K1iqƦCY4ŲSbShZ\e!q@1lcB42xf4-.2hk fC3bQb۔3H\jj451bI nдBSQɋ &02.-S1iqƦCY0иAc"hZ\e!qAp4.6dȸo ƅR d Ɔ / ƅR dƦ}cB) MF Kr K.55-1h53H\jj45j^3l50}1iqƦCY9 He)xf4-.2hk!pH5/o ƅR d j\5|дBSQbCQjh`[wxf4-.2hk fC2c۾VhZ\e!q@1lSbUz}$ qC4*p@ZPƆ2QAuIiCBU4(p#H1TLcE뀭" `Cw)&}Qz"mT}!3|Qz)HcEEE$֊Is*]Us%U\H2eRU\ueKzo).ziYL și.钪7U< șs*]Us"uW)eEDU=rTުy$PlDYRzJ [MRI ʃg2&º\m/3*]Us!̕M5T(/Q9 iEA $'S*U1̴޲Ѥ&) KUW6| DbjSm 45qjbl D,LuUM͢)H8CQ,~K )Xm͢*H8CQ,~+/LX34z.imZAc/LX34DkpX1`Zخ5efQ\6+)H8CQ,~,+eIj%ef7YHϡBpXI2W=76~3,EOLб]͟+Dpq,~в?$3zʫyNlYZAcSUt)ѼOsg ı*? Ac2QM͠| D"U:͠ D"UVD6Ij%k]t6RK:tUM͠)BpXYBrS\㵴S9^Iܘ"yqm~҆41/K$)lK2!ɟy ˯$L0G2%w~zJE2Wz)H/ \(RKJILdx_z$ oɠ]͠*H8 4U W\u*BO뫔{>W>WkLꥮLϣ$OCkJϼ4Oz#]zÅܙFOCku-sܙF$/CqbjE76lJRQ5ɟy Q-rܙ`uSU ܙz#ܽp1ɑxr5*$ACbUיPZN<`u-]ɟz\E7= kZ75Rϼ= 3=#^FhTT\s>Vp CbUםTJ:5׬8[=ɟz]b5O]ɟy'5תc=ɟx몡X!y"z#]y*<4/CkcÅܙ+`uV*Q=7~'묥E Urgހ=S:Eɟzz#ddXZI*qB8k>5יTTSOC]+&}h]\:3z#]yNuxy"z#]yխ}5Xuw&}z#]sOA'5Q-rQrgނ(^e:L`u榊[Д0F榊Lĉ`u榊ꮚ^/"}!EkLOHu&}#D0FQ!ԧMrgށZ780k p3 ƆW@iS׮҆41R2h<QUt+RТH8)CbUיTTS K^ $1]BQ!z(uծ:3"BV`uREɟyD0FI$*> ~KKUFrOshQ!lKu޴P$&ܽhI-(cCT+U )ֈ"(<1\QM͑"H8EPؕuU )" 6%]u4*U=7E ^+GдtIT(J$OCktJSIBT⒤oCktEu3#C(É(SUʑ<5:Q"7.Lʠz#]sY\)H*B`uΔHbLPz#]s-% jR'0FJ$VzjW]ɟz$(^\DTU5z(`z#]s+Xy(Qrgމ'5:Q!Ԡe#骅LTEh}ktCu=5P]Ɋ+~G(eGR-WO@q@ZPƆ7ʣ&hd5VD6FVpUīBW8!y Цu=ʟz) kBBkrg)*F0F)IT(O O5סMRʡE7*߂'D5סMR+e#>D`uST\Sܩ) kB8[=ʟyƺ)Ik%0=kB:B'5סMR,#zHP  jm3TCЦ(VqɟzH=  jy.W]ɟzEhކ^5HzudEɟz"z#]z% 랕2:NS@R 0!uST ʩ\SܩC`CЦYԵnTУBƺ)IUQ-W**y!y(^5HzjW]ɠy"z(^5Hro$D'x#]z%2QMʢyROkBW)*}FLcTVZPƆ8 Jc*C&:.W]!͑H8} Z:īS/5תkмSO>50 VMʊ)D+5V2rgވoCq]zBZPƆ8 JcFO? $I>~S(ms3m͑AKEΤ:mB$hbHqrzL@41= jųs=rH%[\Z2^PFMy$$} ezFr (c\ r<>2V=#9V(GT(EAU W^&}/CkB>0= Ń3I.鹴E)j1`╋"5 cF^fiL,]L"5 cYzb%[\ح5 cB^fhblW Aı!/LX34繱YJAızblVTp,~ Xn͟B CbX+o} (t\^fhA͢DpHfʗU\$o!z#]y.钪&}`z#]y.Y+$o#D0F*]Us%T7a&}oCkqJoO?OCkqJdc=ɟyh^\╋o,ÕoO>WRr*!W-3A'5צz.iV Q 3Աu3O%TLE=KS40rەz 3Աu3O%T7a&}J`z#]zgbfEYMsZ=KS4.WRkDP g3"}=KS4.WRkD9\h^D'5צz.i\:*!W-3" ʢUMx^Uzdc=ɟx'5וDk rmxʢULP gY+ܙ`uլQ=<5VDU@1ϼ5VD0rەx '5VDU@1Cyf[rg*EsܭHz#]zy*rgމ 5תY+ܭCEsUy rmɟz$h]]W+ѽ c=ɟx]]R0rەZ4/Ck*!W-30F\Zs Ãە= +-0Vq0SVVJQ +-0Vq0Cyf[rCOCkqJLw:83y rm} S:i̥7UW+B0FOHꉧ2uUIU{>ĉ`uꞑNe)ꪐY+ܭ 75תzGTM9J3o,ÕnL'5W=aG7} ?H^]\)U{>뫞e# rmB‰뫞e#*!W-3? R7:.5 nLϢC~(o $^} $҆41I$nlR ,˯$W&}/Cs.+3C˯$(Fѡ? [JR C׭(KJ1A}} RIiCBdx$h<$ oɠE})$x_z}҆41 % hc7C76}򔃄U f]y$裙uh.LROE˯$CrbFQ̺I2+'?Ͼ ,˯$L^Ls.Mw)y ~RI=UH8}CbUo9^I*y ˯$%/C˯$UѢy'9^I(3z#KJƊ}ʒKJTo$1}KJR7C}~)% hc*7Cu~KJ(ɠ % hc+E4޷$ oS4K R꫞^F&UTW-s NL  ņCYɌ nņCYSKaBѠ,3/ d LLƀ,2,.KņCY h`f`f]ņCY KU IɟaSb4ņ!cC2xAtbBd5H506.3LXbH5 s*+Eв+.lT '&~R L 450hf]t/H506.CCScQxAt KeG)Hl\jl`qtOGIUήSlSL6%]urOw/@q\Xe%TW= /[HR?rXe%TW=͟FVp&ʪR꫞]`uUU% .R`uUU"NO!)G̪+Eв+.T@$OCk2y rm**F0F*璪{S@'5יUTW<+XzL@ ̪+EkOBJ'C(T e~޷F`; K2)y*Zϣ)I93,243`f6Ld`[w,24343203.Hjd FFeDaDŀ}ņRcY K L KņRcY MFF) CC13I MF M]"xCPk ̺Aq`̵1AcbR) CC1C3#2 d&6.KCk2s%a0==qʕ\]7|A'5יR뒪{SȠ)F0F*W=r+\tb3"(^eJEkO% *(E ^} ]y+QRP\SHR )*lJ:^ J8 M /[& gm*sg$3LZl84.Phj`6Ll]x&2',,2\ЦTp4(fʨ{O!z#]yQ%a1= Ck2$TiU\z#]yQ% 랕2= .%oz#]yQ"'E߄`uUD*]UsB7F`uUD:Bp=qʨU )z y"uUD]VD($(^^eTIJSܙE Ck2$W=aG4(zH= ʨU )GwDѼP? [ ea(‰ थbUיR*ZD5יRQ= .%/C̩\(\S_y'BR5יR&T禅~o@$OCk2r+Mɟzʑ ʕȶzjW\QM߆ O@k2r*BLȠ'5יR)URNu"gϼ ʕȢ283"5יR̩uUM߅ȡ̩\)DoCqWz)B`(Cr)&TRpR ī2R꫞]`uU4W-s"z^eSIRz(^F`uU4iZC z%(]yM"NJQƺ*EkEdVD\A'5יT+\to=2,S!+-ϼoCk2VzdXEssUɟyD0F*EkEdϼ ʦZ/"5יT+Sȡ̪i)XmGȑ>`uU4Q\|ȑ"`? [E)7HR)&}I.UWsgDqīqbW=5\ ʗU\wʊ^5k$#%RLuULT xUBg]z*+I-(cC8c&[!I-(cCb*#oIiC|ɠM~$i>~޷*H0~$~ t`l6~"̺HU )<`eגJQRۓ"zZAiB*Z繳hRNL,PoEwB]yL*7 9 eU߂'V-\KOsgI93]yb==*շ\kk&ykεTOth7]߂'W-!߂'QTdQE76|?sy.SwޝZ~rHWsgI93sBޫx=*UxQ<}&㻣DG+syj ֬]w˖{ ֬MDM^(yM]o.WEf'zP$OGHr+h]| ^H>V$ޡ VЬ/tNWLSsgʒ!e_)AҚꮙ:7\H:RV:/*K&4/Cϣ\rB(}t\w!Ow4OCt\w"yjoCt\w"յwD0GErNmt1<4/Ct\w!byIMC@`Y7} O@R`7U:>D0Gw/>VWP?$hf%rҹ$)Uy$)[w+y 7Ƹ\f\3|躵OMɟzEOM+)y'5oe+F0FW-sܙ'5DLϣB0F*[(ކ]D)3AOCk.;'_z E*8Ȟ5ȶ梪+4/C'GˎSBW&HPk.;7Eg7&OyqUA¹@Z3"E~޸H0~$^gϕA0r"Y-|IJk*YUt)4,H:RVZ79-~$)eU`eW%UMw} O"E˪yT^%/" ϣ? \`H0~(|!)gZBp(.CwDK2A$5yNxhYUtm߈hbz#rAҚ}MUTTpP>bZ/=4YË>5Q9ずܙ/C˛T:/˪XpS{JRQ)T:GH^+$/DTk.aĊhU:N *+!E˪Xq"NSą'*B5TE4*\SȊąJa+芐e,8M W)oDTk.aĊhU:N߉ 0D !E˪Xq"NS*!y(Q=RQW-TM W)~$/! ODTk.dk@1ϼU[= Qրc=ɟx"H^*(ϼUYR758 )>QZ1<q~(}"H}F)Σ$*/su QH»ix  \JKJJ8ɠKLUI]͠CA!lJ(3!z#]ukO% .L0F(ErOx!)G뫞(QrgށH^3@R75יbuܙ OCqWz} AbHb>I% hc~ɠ:L9BnmGPؕuESLO!z(^dS) FK"k>T}#»$@?$"\6%]uTY*' *U,Dk`?^`B.pIiCጚ+pVa yE d:\%PʒT6%]uG2)/`? \/RL~޸_Fa >޸_"g$_» $B]rWzDBh-8D޸@OY Q=͠D *īzN+4/!yq /(8҆41Tp"CU]+BVp"lJ+]T&}/CkqB(^|AWz} A(J;H0]:m  EPؕuR $9U/!z#]z +W/CФHuw&D4OCkBa!ԣS2'ѽ  A)X>D0F)TdÛ"yh^„ (+pDI3WzBRa ^޸Pa <+pBI3WzBA(PWz++H0/ f9\޸ ʒ?rHRgI]뀬!4^u%wi +)W IiC^[B& ըp$EPؕu Srh^B]yu nM ϣyqRUrgކ8'PEsֱmu\ 6%]u*8>/Ck\duj*[,= Ck\dyU-iF`ulUTJLhކ^ȭbJ\'5ץL7&}ѡz#]z["ֲ>z#]yuj/\A'u[-3^(1]뀭AoV$ hc&»Q$AWwR)&~? \#H0"^"}!40x\uE%wHM ޸" U$)% hc2h> @TVppؕu.::/H^B0FW-r-/!z#]T,V+p#B ky+p&]SUsh bH8*:%o!z#]zR.y4/C{a hSUrsh H8~U W^)ʪ>/CkBZŕ'`u[B+XU*y'5סm dSLS'ѽ  hS"e8QJūgQxDD0F-LiX'F`u[B7O>Wж2M*Ԭ7OA'5סm dVm++YxD(ކ^)DOL/螂(^)RɥTuwOC5סm dXV΢>J`z#]zЦJg:7U:'ж2)S:'>`u[B)SU}ȑD0F-LJ4qxD(  hS"]\Oж2+/QIu4'Q"z#]zЦCi(VSU}%Hކ^)YmM-**y^)X2SJjy$/CkBBW=u^<5סm dXW=u^萡z#]zЦE:ZY5sU}Cж2Pijljz$h^)b斪0'+F0F-L(e뮃LOG(m jZmQRAEPؕuS%U]*/8 ]zgzGSEo0Gw$@TUEBs$mR4Q6%]zTW1̪'1޸I3WzGA)P\H8* dW)~'  d\M ]zuZ'z#]zȥT^P0F)`j3DЦEkҲ&}ѽ  d7re{>\=  d)X'ѡz#]zBuNWU{TRY\CkB*C'GЦJgzGS@ТBQ GHqć*:#y(z(^2N;DVJQ  dzu:VЦIWVI5.:3>^^2QRϾSЦEkbLϿ'5Q8ZV}s*VT"`uRtϼ!z#]ztUtJE5^^2W*…'5סLʶj]򗟄ЦIi[L^0$1=  d:(J^}$/CkB%m ֮*yEP= 3 Q dZ†')BuS%JL92'FV`uS!U"nLʠ`uRCʫEK&ܙϕ#B0F)U )UEUȩdÛ"y^2PUWx"yD0F)Xu4Wx_)F0F)Ẕhqx_DEЦEjo17+ ЦEj+x ^|5pUЦCʫU )|D0F)DQL$:u}!}ЦA eio@OCk]2\Ц>@R5סL5ή B'5p5סLTUPJ'D ЦJW*(`z#»1$A>)p@E$Ͽw H0AM eP@JAL W^2*y ЦYU\Sx`z#]z":~'z#]z% V+F0F)Es!y"z#]z%580]=U yh^^2Mw|5סL)U)W D]z%3]w&!yq ee4PнJ7GЦY&ykE)"h]z"jr=)J`y(ZA"W6.'K:)y tESʦ@V8+p@Ta> Essh )H8}CbUפC{BGu"kEɠyoEu"RUx F5פCʪ*@T0= 3]zNu'z#]zNu5\ѽ m0$?CbUץ\E*nL^^r^ ކ5ץ\z#"BAT6%]zUc8qw^B0Fg-CR0= *-\uË[= nm(RpؕqҮESʦB^+G8!5ץ\(C^+G~™TP;Z$@*ҮCʪ*@T5ץ\ooCҮC{B4O>5ץ\R94D]zUȥT^OE8!CҮEׂ/xq]z҆41"RVS\޸!D]QkpBRQx!Eʖ+8 +pBT;$T!DHpB īIEK&x!*y t;ׂ`u:rl+BT4OCkIIkh{ Shކ^ܔ0m g<= 'C*Z-BTн 'C*gBTp= 'C) S@`u:MuBT(ކ^܋G5N SE~&D޸ Q&*I,Vp޸ Q$&Q%w;(KJILpCBJ\?%Q0qUt@ %0T6%]u+RIx<`uЭJUDDT0= Y"PDh]R(Vq܋euEOz#]uW"x<= TeuEO> 뭥JfW]DTp= Y%5'>WqWzDVa"W]!͠lJ"'C ^$Q5q-s$OCkMrS:*4/"}ϣuJgS2%/"G\UJqU}ȑD0F% VE5צ(S- /0F!ΥsxH^TjV]J 5IBhbzƺ!oJx!"z#]zk 4/B]z]\'30F"VV= 5qBTU]DДz#]zkRɇ7&Db`uJMɟyB0F"UQUw}]jTLPJ߉\u=7&}}\,&XM&}E\N]ET/?H^~]zk誛SϢCF% QԪyֆ)Qx J^}TCkMrps]ɟy(^BRaF]zkm3=ɟyq= iknmJ6%]us/`uR3CZ O#D0FLб]ɟx~޸ aH0T-G%5;[E3ET"lJx ay ̱rL0GBARAı!\KWE͠+ CbXTtnM͡BVp,~VCʫпAı_zဥ$ o.pTZPƆ2w !elm$B CbUזi(Sx/@k,QMဥyhc]yfQM"ze(ކ^Y:\%P o@(^Y:\$Taɑ=T^^YTE~޸` QMr蹴0#H8CbUםYԒQJ(^ugRJE'4^ EȢuVu$^"xάJgS2E/?OCk:;Vн ] !3IR5sh} qT6%]u3I,ׁBD5VBOAH^^u3+%lf~޸a h-#U )p HJ+p‰ aMI~?޸aFI3U@1J\0Đ>(pTLQ ZE1G "I~?^QDa /^Q$S~(pH0~/ \()&~?޸J_HS A3Wz)Da L>(pLQWz))H+pH0UP8TUR(dd:ș I殩$*&4'|,(:,U-U]l/Y54W=4Ku≖.W]UQUt+RU *'[YɟQڪ*zi:⚦\l"R꫞diEϡG 2diEqąU4Pgʍ7U<2U4PgЕ{R.3J;3Xz?qԣuJf :vRrڮ?dʪ(Qp(|/UGKrS80\4reU.Ȯeu4#UGKrPIT(0E2QLEkO$SpQxeR(Xi ^LJC1d3AԴ4 g4f`:(-W8o=U8r;0W\ihLKM +Qڃ.3 mC%R\4&N:UBg.,Xtt]rOp<.VIT(zZ&T禫]2%PZBg/UGKrWLdEBg̪jVHuQēH (QpЙ3*ZTq$ \4&'R箫Xu(kEspЙi$Q:W*IeFZ!? 9+e) |UT)Aĕ޴i |-]BG%w$^ЮE)JYZH+$BhUB%P+o‘<1\QM͟Bp*$Swy ~޷$12]Rɇ2QL+)lJPESK^5תr)AѽFPE)o>ƺPIT(z^ geD4O#E~ZyҪ]=W6|$k!1mм5l554 d-;xk jfbf4wᬁb뾍ᬀ40303 /  d2.L603 .Y F~hj`3Lj8(ޏ̌M* =*ey 'TϣH8 CbUUDU\wʞB0FꨚIT(z/CqVI3]z$ pRAԪ>qHj .L^]ZB>0= '\S^Fu\(3@$OCk]Sܙ|̱rL@'8QzDI3UZyҪ]=W6Iɟk jfbf4w@jl32.d& ̋  F nQŃC1iw.p$1qA*]Us!d\HI2W=4(3!z#]y{T0= IRz7z#]ym4KHqx +FJQƺM"NO@L@k4+\to=2,S"'ϼ= HqѼȱL\>( Q HqѼȱL7YH櫓>("`uEkEdϼ DzDfDNU͠ U W]\U\wʞB0FZТϽ CkiQ:NO#DJQƺeKzhQrgށH]\+\to=2,S% 랕2=W&}*F0FlEUή%PT!u!ª*ϼz#]usILs<&}P`u"*nϼfԱu3NhU Tzm ?s1c#ɍMSI Fxhfd`f] B̺C1iuxhfd`f] d`j5601fd]!д<43203.5 ML0hg!qx^HC1ip&22 d6Hhj`4506Hf4-.K$FCAq4 L I!uʞ3.2Ldd,1O i d6H^`hj`4506Hf4-.[IiC~2gBq,]LӍkJt\NLKK ̌ ˯ƥY!uM%UMkȵb&/ |M"U*X:UDB!`u&L0EQ0qxP UEsȵb&/ 58EOLV*`ErOx ( J8\i:ZrgE H\iQ<(/} ]sVDU\xax$/>Q+\u%3Աu3OUɟy$h\i)y(QxQ<Z7G H]szkD(TI3}넭$ q>Vdx}$ oM % hcD2h<-K"*D>(hR)&~?^EIϡ/Z(KJp^KJoإ6%]u4*U=7)/uZ:E$SwмV`?.u޲{IiCጤK]oRTܽe1$12qt+)+e%i |UzѡI-(cC1͊Q$>pؕu#U ) y kQKS^~]uBb4/!y"?&Z9%Pp:īQF*ܥ^~乱JѮ3)~5M OM`y h]-Z:E$SwмV`eגDw)}/?Q GHBnS ^~ GHhQMFB>^p$1ɠ+JH8*Urgм`u[tp<8}sdEi(6%]u4:eU!y"uR"N8~ (]zgT g3@R7578[=ɟz0FRU/A$/@QܙAOCq"UTl $D_/Z2IRE$֎$҆41E4vrW]͑@*ȮST/Cks$SC*-ϼȪugܙѽ ̒QL>D0GM6R깱QJIɟfph]t/exlغ<5.50LetOG^҆41MBѢTV/q!I-(cC#E4 *Y0U )S)6*FpEPؕu䒪U:]zLT*.螊5גJlQSϣyQUT]ʊFh]y$ʢ ąп*0W\i,R"H8}5 W^k<`uJÅܨ`z#]z&RɥUrgF`uJ=*ez\ѽ HbQrg~^R꫞\F`uErOx |BR5עi%PP<FM$W@yQ= .L"B`uJV*Ͻ(`z#]z&\)ТϽ$h^Bgw*FѼP?rIiCG ^޸I-(cC`2h=$҆41(}JIiC ^IiC>*q$1/ \Q$1'ߌ*6shNLS31,3 HwA cx^04#7Diz?JE(̓޲)"+E+}"gU+$ p^\)NT\حIɟqcdFBq+q;qȠz,Rq5 W]\2W=4(3!z#]us"NOC!)G뫞(Qrgށz#]us%aS>!)G뫞%nTR( D0FJSȠ)F0FEkQ=W&}PE뫞Q<((`B`E뫞QIɟغ@1aji!1mм506.3LXbHf43. L c!xj`l] f54jhy 'Tϡ T6%]zeKzhQrgB0FM%TW<(3C4:<!)G4ie4V]0= SHo,ÕnO@R75תi*ZOA^VEkOUɟz!z#]zZB AT>Q]} JA`U} 4҆41 ^*o*I-(cCLee^^ĒZPƆ7} (o ^}$ eq[ZPƆ2ʼ/o IiC))^)H9&» |»)&~? [11A$12h<+o +o  % hcF2h6Cj'BT*(\S y 0!uΔH\rg)D`uΔIPi(SU߁%Hކ\DMrgF'5:Q%UP7B0FJ$WUfɟyTCktCu+5]T(YŕܙF0FJ$[=5QUsJwFR8\DMTU\3D (ꊦ"z(`z#]s+Xy(Qrgމ'5:Q!Ԡe#骅LTEh}ktCu=5P]Ɋ+~G(eGR-T\=q]~))% hc|2h6ijblR CPؕuSTw}/CkBW)~`CЦ%PÅܙJ  jU )@41z#]z$,\>ѽ  j\)B>0D0F)J=*eurOw Qx1 jRyU+{B$/5סMR+j zhPS^5I*%ȟ F)EUW:MȟF)Cy%UD] D\kBPU ) '_5סMRUEs{7`C~Gz߅ IiC))+ϿAJ6%]urOtq<ƺW-sܚ`ƺ!x'|]ZSUɟz"Q w_I-(cC%1^;LUHU6}򤃈"BShԇR$hbHqrzL@41= h:0W\iGЦQ*g*ѐqWz߆* JIiC&7QRL RA1O/[Đ`MyziYMW6~?qдBSQCxf4-.2hk!C3cF3H\jj45 IcB+hZ\e!q@1lAظ3H\jj453L[!д0̺ K.55-ظd/ ƅR dLllAc"ۣxf4-.2hk!iqbI nThZ\e!qAx4.6dȸ<3H\jj45j\3 &02.-[1iqƦCY1$Eŷ} 1iqƦCYq}дBSQRcdF~cB) MFidLj n/ ƅR d0 LiuDhZ\e!qAxBf@Yw^ K.55j\50 Kw}1iqƦCY4Ų Faqm*xf4-.2hk f@h K.55-̸3H\jj453L[ ظ!z?^!H0)C( Ϣ *kT5גeuܙ`u7%O#D0FS: n%Oz#]yм<8^E4*м$O>5גJQB\F`u\ṼOtP\Ck"nOCq ^"H(|+o)H0}/ [芒KJ\d|*鹳葤ACbUאS&3!z#]yTrbƺU=gRLT(}k"*h}$#8[]76| AU W^C1S^}k!G WrbF]y)STܚ'`? [/>R»L *I빳*TYrb8^ErTqUɊ}ϣu:[w_z^C+w`y'8+o`"ZTE54-e76}lJNuw@5ב\SP= Ck"}K= *.(+F0FU=w|'5ג:wrg}5גerg|5בm .L@`uXT&} Q ]|AE| Qz)FrM򒤒҆41(.oĒZPƆ2)G}|$ h~޷ѡI-(cC$qR7KJV2h5סZɟz҆41+~޸’ZPƆ8 |(KJƍo$ e(|׮(KJ1A} RIiCѕJ? \bI-(cCJ? \JKJƌ7Q_z} IiCC(/p>IiC(/p?IiCJ|I-(cCFJ? \I-(cC(#|RKJT7Q_z}IiCFJ? \$11R$1|KJ)G})% hcD7Q_z҆41o % hc)7Q_z҆41(/p@$ oS4^ FZPƆ7ጚ2dÙT(@Rp:īT*]^BQRȦSFOE,%[7F~)p@TI3$RLZE/W/\aOo\HJ*%waHL޸!"gߏ7Q$R%q JE/WwbH0|/\+pB"P]I»')E ~)p""!?޸"HG"hQzDV`»()&~?+U$֢R#(Sz)}" PL)$xWz)DaL>)pK蠏7I~? \()&~?޸ J)~+pđI3 E$Ͽo\HJE AWzFRa4^)p#FK蠏7eI \~)p#"+ E뀪gSz*BKT)>~(pDo\H)~Sz*FKQRE$Ͽo\Q$R%qTVKHR)&}WB+uJf$2&'RX]w&K&TQMW|,URPS,w:cH24,вkDT־?I%P]ky:0W\iGЦQ*g*ѐ"gQY]kRÉ' ʃIș\O*M+)&/CkL,]LȮS5Q=rЪE-@н H?鋍MdCK&$RiJ2 'L]T+&U%TW=RH2"g-R꫞&¹.>*VDPiQUw\u"XqԊ(?kL\ :+?Z뒅?kO% w&º% w&5Q\Pwrg+VD w&'n`wrgSL-Xt 5nUEsw-uȮzuJdiY:W>\*\$*.2& \r~(p`Sr/VDPjUEU(|,W=r)XZ?Zȥbj.L5 IHqJjA?j(C'U%U\|¹JV.[UɟI+-0P;3( )Xm}t 5nxVqJj% S4 gA0W\i,RDʌ+zT4[+Y\V.V>(p`Sr+kRq"]2Q=RH2"gQBL&3XzL+zT4\U]2PIʫuuܪ (W\i*XD+zT4*EkTiUIBLOUɟE3rċµY [-5 5o? R`D㻓?uJf++r>erg,Y5s$rgT;T+93I2$T$ʗU\ ʋCB+eKzdeEDZZ,9Y.Lծ:7f6%7U=W&2U"1ORՊdhЮTeA?qmtj4~'H30 KMeRJIT\dLs*U&SErgO\W*U!ԫdd:ș*IV"kB*jQq"E2W=2TUBBNnB*jQqUUtqL2U4Pg)ErZo\%P$&)GBʤ]Tȹ] ب XP#DpbX.YUt)͢ ı"SUt)ѼOsdp!?^҆41R2h<{8AԴ:T"CPؕuQrgB0F(J\`uլQ<:/#DJQƺJ\}'5׮L>T`uX]w&} C~=-s6R깴I'&~Y Ɍ nᬃdF}ᬁxk!hYS31,3O d S]o dix`xk!raith`g j5.DCCScQ)FpyҪ]=W6+I93  @320, ^Ʀ .oI-(cC(&L޷HLS}RȦSWzD}+rWzFT+jkRGW\0I] BhUB%P+p>>ЮIT(Đp*$Sxy ~҆41F>Ta̪S% llJPES]zW"NT]ODQT+jkO>ƺPIT(0= T+J<qI% hc)ruE%wi RIiC߁(ɠK&ʡE2UZe8BpEPؕu䒪U: ^5תuBz'u䒪[*'F(]y$%UA»hF5גJl O?O>ILO!d\ة hP6%]z&{5עi+r`uEK&Uɟy'5עi(W\iQrg+F0FM"'Eɟy"z#]z&eKzhQrg}5עiu=Bp=qI*UW}(^jO"'EɟzHP IJSܙE CkD+e#\D4QLTBѼP?^"HQzB`Lr‰$ pGp:īJy h]zI*+F0GIBJ\%I /\1$1*R(W[Vܽh18JP}!1OZ(KJLhB kīQL0^BEG$R;B(]r9%PGPQM͡)H8}CbUpu#U )(BE%͡ kī5M OMDƺ[дtIT(Z79^I!05סhQM)y q"h-#U )hI ^HKJILdzåRWsdE)\6%]uʮL n^ (6􃂔HjVHrFi\S''B(^U%aL>T`uy+rgނ1= 3ԹUwDR"BQE몝]ɟyD0G)Q%JΖLJZ$i!ܽhI-(cC(x+I-(cC"ɠ/YJ҆41_/YK?zaI-(cC\dxI-(cCqA^҆41zQ1x11A}F$ o2h~1AҚ̓JAU f]y$S*O!z#u䒵TȞ8eB*Z繱S'&~ (7zuMFZ]xUWtOJ2ЪugW!ت?z.=-sҭ[xVjg +YLUK4Fz"xޅr]"z?<QM͊I937^u7}ըG#R$?z4- *Mwh89螡]sҮUWwѼj ;4OTr77=Qjx QjZK=Qjʮ=TN5B';E!+FtVnM|E .8bD~IBʤ]Tȹ] ب ,~/B$9j\]0"z?yN)TIK2寔 MeuWLSy$)[r/!z#TkB0<8E)4/"ErT = q܋M{ąoCt\w"յx= qܓ[]7 ϣB0GEr-ąz#'8[]7 @`Y7 z# NϽQ= Dz\$hf%rҹ$)Uy$)[r/!z#\fTkʠqT13*EV3CȺR7z#XfTU˛OV`eZ3?OCk/EKgU\F`eTyUɟy^lQ*>"z#Yu)RUW&} Q Srgނ(\w%tOx= ^\w"RUrdOBSˎ[LQU ܚϣer)R@$(^5ТB'Ѽ8^Z\iu-sܙ"`?WL\( t Ѣ%rʤtWLCBʯ$+nToCs.Z2H:SYRʫyN$+nT/Cs.7Bʯ/C˩֕,g"y'8ZIiCߌU]3teW("|SSshrDK2C$5)T딕]3tnMtmʐ`ejT\ ˝,Q=ɟz]b΢= H5U-UToO"}ЮJ"`eJs͟BVq  W^Er +Ͻ Ck!Orz#]y )Z)*xȥT&ƺ)T&"yqUZPϼ4/Ck$ {y^EK&н@202.oGЕWz~KJ\d|*鹳qU W^CN(ϼ`uW%SUɊGTJ;1SȢyqhTznFѡ? [>>c!G kϾTqCbUאꣅk.LTGuQ©ܘѼ8^ET=w&`z#»$>Ww B*I빳H8~ ī%S֭eɊB]yuQW&*yo>5אm~'`u:w}򷑢z#»R }rM-rXq"Ꚛֲ>$Q6%]y:P`uW)} `uR= *./z#]y*'5ג:wrg}5גerg|5בm .L@`uXT&} Q ]~ C[@ZPƆ2]z߂҆41eh.o$ e(+Gu~҆41 eh.o$ hጭ׭ KJTeh.oIiC2h<.oVZPƆ4eQ ҆41eh.oIiCѕV0$18]z߆҆41†2~^DZPƆ4e1 JIiC+׭Q1 eh.oTZPƆ4qFV1$1 ZIiCEZ? [萤1'+G}}% hc} Ldx]zEIiCFMwPRVSo[$RLWzDRI3WzD"g"TTKZ"o[(R)}\~(orMwR )7)} +oRL~޷QRL~޷J)&~? [1$RL~޷J)&~? [ФRL~޷ѾI3WzGE$]})]}$I»2Iq$E}ZG]}4I "C]| E$T)Wz*"gE| >޷ʑ$RL~)o#H*%w>»QRE%hTVI3WzߊIge*$u:eAN:u-2U%w?=*e{xdq=r+7qAφ?R URWq3S=tL?gjuOtH-u 3u-5]^:u-5\Ls<ÙIS$Qq3*R꫞(Vwu0xW2(Vwrg+7ar=ɟ\ἓ\+7sKEVnJUtܦXZ]UnrKznL2KL\lLU4dKMWMSMU .6}TC*jQqEj'7\q!|M5T(PxI"ʹUrLs-7h K#E%wBg+I])H"gߏVZPƆ7 dx]z߁$ p,ʨutLJlD*:]rPϼ`uTJ\`uլQ<(3#D0F(ErOwx!)G뫞(QrgށoCkU U% .L@'5RtϽ JBg.]rWz*HMQ%w>Ua $VD޸El޸HLܽp@ZPƆ41AGunl$T6%]s:`uΗP0=  .[= ^/z#]sÅ~\u}?UD꣉+)D*:]rPϼ`uTJ\`uլQ<(3#D0F(ErOwx!)G뫞(QrgށoCk:Mɟz0GL87\JmRAa*V-ȞB0FU;D0=pFNܙOCq]z}$ o2hн +77 O>WȩdÛV"z###"։ HQxDZPƆ7&yTOM͑@qU W^CN(ϼ`uW%SUɊGTJ;1SȢyqhTzn<41!G kȊ"lJTpeɊB]y8U:<7GȱJ= Cq-ikzlAT6%]y*k.LTGȮC*1SϣyqKn'`u:wDV4OCq@ikRÉOTж!GPؕu:5ב\S^5בJ}h^CDRZ75גJ'5ג:wrg}5גerg|5בm .L@`uXT&} Q R$ pFSYIJIiCCL>)FZPƆ2aU)*I-(cC$1SIiCCL>*e%i% hcEe0BZPƆ21֍҆41L>U$֢)HR/Z4i)I ~޴ei>~(eHR)&~? YS>~Uy+eP$&EmT&}/YT)A/YR4I"gE*+H9&} YTI>~(q>I3]B+ꣀa$!D꣉3)jVISEk+Hq!GH2&UD꣉+șʵlhQuW:8VuQĆ0E+)urS80]=U uq3Z)UrgRuQĕ g2/NJg~ Ϊ8rYQ$V$!ĕة D L'WL $ФA*ī8uuB>5יR꫞(Qrgކ5VDPϼXyu=^+FJQƺJ\|A¹UIB>!`uT)3A$/CqĒZPƆ8 QMQ$V$!ĕة *\ % .L0F*]Us% .L= '&}oCkbW)u\(3A^ʪJ\5W8P= g\!B`? [RLN:u-2U%w6| 6%]z\ '&}`z#]ukO"NO#DJQƺJ\}'5׮L>T`uX]w&} C~(oHfUD꣉+ID*:]rPϼ`uTJ\`uլQ<(3#D0F(ErOrѽq뒅&}*F0FNܙ OCqV`L^1%1AfU% $BqCbUסEɟy Э@Ͻ CqTZPƆ4H\$1#\i% hc~(G ҆41 p#0$CCbUבmtO!z#]y&W]ɟz^Cyjy'5אrը[xQ5בM OM>4O> qHuQ鹲$IT6%]y8VO!yqU*]Ɋ}ϣuXMSrh84=w6E AT6%]y*k.LTGȮC*1SϣyqKn0FTqX*y'8 I4ʩaĊ'jh[Znm lJNuxy ȮSCȥEh^CEhކ^Jy"z#]y*Gw&}ѡz#]y&X]w&}z#]yТϽ^EUJqrgހ~*e(RKJTp#U)}$ o~*e0$11W҆418I-(cC"GRRZPƆ2QWIiCa~*e%I% hc)*~*e1$1W$ oUzѡI-(cCqW% hc)8$ p~*hI-(cC%1W$҆41WUzє1(c&»֍E$ϿP gT!3|QzđKqZTKZTDE~(eP$RT~(ePS$SWz"gߏ K#E%w"XWzF"^H2B'N!Ē 4~Q$钙dL'W%3 GZRI*յI ʃg2&T+T(g 3,O$V:zdiQ$V$!ĕdW:.M3rS=r-a2Vl[TWBIC¹:.W gs$"Ф8A8AԴ:TdL'N} .钅&꣋U(T$"Ф8A2$]2S80𮩦@ ʗU\s%SMU .6FS⩕Q$W8o=UlW⩕Q$XDWq_̪'W"*Iq3Hu2U\MF Bb WP`V/ o[RKJe~ BdB hW$SsgH8EPؕuU )<`?IlJhTznV5סhQM}oCqt+$R/r$ pOIBG%w{҆41F^(W\RWz}!1O\$1nl$ѮrJE0wѼ5\IT(w|/?QrJE1^BE~MBrJE76~6%\f(]r9%P/?Qsdi\6%\fUnJy h]-Z:E$Swx˯$ܩ/?Q GHBn/!y"?4-"rJE7R#EA3|-p$1 h.p1ɠ+JСH8*Urgм`u[x BQE~>$CPؕuҰCWx!y k:u=+y"z(uURV-ϽHކ\Zl&} C=KWxPQFWrgEQ= eTIRS80 VU\빴0$@*ȮS /!z#]s%UDOUD0= ̒QMaL= ̊VqYɟx*Ȫ(~@IeTVeP(VУH8*īU Ȫuw/EBr)A*z'uZ9ϣyqT+G"KzYw^5תhBn/#DEBrU2ųB\CqE$}넭$ p*~2h<-h1x}$ hFM)% hc4^(h$RL~(hHI*X$+HLTaʩ])B_/YL)Ͽ])"gߏW$ hጚ YIRIiC*B2h)~^:[rgм"= k1<(FO\I.W]ɟzP`?UW)]t6)Dq*ī]2lU]4+8IK^)~^j'ܙ_`uUWAܙQ"z#]ukVrg)*F0F%Y*rgF'5׮VԚe.RV4H^Jlny'W]!ĕ޴hREGE$֍IiC) Z2҆41BVS4(hѤRL~*eHRKJ(ѕx"HQzʊR)&~? jc<޲ȼ-c<޸HL WLs-2Wz!1OK"NTI]HU눥$ o4eRɇ2QM͢ u W^dU: ^5תYuB"z'uE-)yo>JE$ITrYZ^zHVJU80\ (+/>5עeU80\/>EUZ$U W^RPpƺ-:\Ϋ]r^}ϣ?o"\6%]zdZo S^5נCU )%`q\2Py s e .L^u9ikV/CqXJzʒE\u=+!YWPJ깱Z4lJWT+{5ע\OC]RW]Sܮ'z#r*X B3lE͊"lJRQ4My ϣu\oB}ks] ./C~isgД"lJ-v:4O!ykBg*MȞEжAk*4ODQ d]ɢyo>8 >A%bUסl`qJc]z;J^B0GBMUX>U WkBG*UwТy ~:0$@*жE*n^B0F-+B0<8^,Rh^Eϣu[%u%O#DQ d[xJ*]zR㫕z$/>5סlS5}oCkBU]}`?(6} !lJ(J0<ѡ?^УI-(cCɠ͊R BlJ̭kB+hBZ8ƺ-qt(Y[^F5o~5סD-_y ϣCТCjܬ/CkBK\} 7qLtACbUעcV-<]z&:[$OxJ]z&:[$Ú\ ϣyq3+~5עcWrކ5ee1-Bw+)y'F8QzBTa_h9G% *\Ф"lJL(\/!yq(G%S }qJQptusg} CbUנT\/!yqHlr^}ϣ?QMrp*Mrtr^5עU*/DQ,S=߉Ѽ8JQMtp*Mj䦩/!z(^kW%*U^މ]z)\g.O>͟BVppؕu9G"Ӫ](^B0FjP`u9G"RUwСy 7CrJU80y 7~5נGW}B0Fu9G%5ʢ^1(䦺Uy ~ PIT(ϾRq  W^⻿ ^~]z#Wwy"y"?t(G".l"lJ(G%31)y С]2 CqފQȭr>RAU W^Q*UNGJ9%]Y*nO>ƺRJk]S R0= -G$Qsg߉ *īu)HqѼܮ8^(\/>ƺG5ТB0= B;>ZA$5 W^9U|/CkBr*]߉`yq QȬ>(5סj9UPuEwQkBrUL~y"uZEWwy~޷}!2? [@ZPƆ41W6}I qJۿ ^~\f1 *^B(\f]z#Z}o!y(TkE(VE|/#E7ߊ5סj9'BO!y(^m|/C^Q-r y Gcw6} IlJLt g]z&:ZI(>OE1rL9q߉Ѽ85עc9\+z(^Bw}O#D0!? [B`+o JIiCB2hƺPIT(0= T+J˿[<q~KJEQ"e*$zl(R"| īER]W~B2Qu<޷D#uS̱Z 4qԪl0EPؕuIT]Q<`uHz RE$%i$WzDAE} DwP? >(oDP wH)+CwQ$>wEi)xRA1O׭KJ1AL)x_z))I-(cC(&N:u-2U%w6|A!lJ(3!z#]ukO% .L0F(ErOwJ^Fu\(3@$OCk]Sܙ|̱rL@'8+oH0|w6| CbUנr9wkAr->OErWwyo>8\.+tr~`q%q+G oJI[^X:ssgJ"lJ7BR5or*1= Cq IiC"8"U}% hc)׭p$1ѕx҆41W׭hKJV2h/Lc]yEOM߉Е?!Ek5UHZ ]RT !Ek5UI]2JzC0!? [$?>^$ hcFUu~"҆41U2 [hRKJS hʼ.oZPƆ4Pƌ\ % hcGhʼ.o’ZPƆ2ѕx]z+DZPƆ4e1*VRZPƆ8bW׭i% hcѕx]z+*I-(cC(FUu|$҆41U2 [ei% hcDW2^H0&*҆41hʼ.p!$ p"W׮01Q*IiC`W׮%)% hc)C2 \Q1hʼ.p!*I-(cCI\hʼ.p!$ hƌ@`lJ-R^^Irgކ5אZ/nL-/V`uRSBD]yЪ{B<8^I*E (Qrg}5גEs=)z#]y,sr^OCq ^$)?׮RKJ\d|*鹴H8*ī!ԧMrgB0F+OCϣuzΥܘQ<8^E4*U=7򗑢yhc» }uQ鹴ĐqCbUאꣅk.LTGuQ©ܘѼ8^ET=w&`z#»i?M-uO]͠| *OZ&*y ϣuW!G\Ѽ8^C򷡁`u:w= ])>U IUK$Q=SSBSshB*u9/Ck"N0 Ck"^F`u9QxFZ75ג!y"z#]y*Gw&}ѡz#]y&X]w&}z#]yТϽ^EUJqrgހ~޸ } %~^ $ hƌ1*$҆41G2 \1q*4҆41~4e^^ *I-(cCƌ"H0&i% hc|4e^^!BZPƆ4HFUuKJTS2 \ZPƆ8aW\’ZPƆ7FU(KJS2^!)I-(cCThʼUzIiCFUu҆412 \ĒZPƆ4EQ* ZIiCߊ4e^^!I-(cCFO׮P1FU}$҆41QA"҆41ƍikQzDTMI? \)Qz))H9 \( ))R"gRTL%1RVrMwhR )+M QI~?޸H"!»4i?/\H0&»2a)»RIR !G]뀨"cT"gUE1?*XJ\>>TY(A)pE E0E~޸"DIL14I~?޸"*HcE뀮+V"cW E$YJBh_VTaZ? \h)&~?޸ HcM뀬"a7/RL1…IiC"8_„"h„"P`TY4RWzCBg-[B+p+I Sz} E0+» $RS ~޸_"Sz}E$Ͽ*Z*VtJgH2 &ș )IXp{&kpaU֓?bRWMrg,:w%t=W&µ9+]3=rTl uq3*iy*VtAԴ cJ 5TlRhh6)șErOuPqJnO(Vv֢)E jplQBWZ(VvSu#R"NTLg*)TLU:cj3sLVUrgRr]w%3ԵbAUD+:[%3 +ș )=֕C.2j皹$Lh*IB9%PeRJE5]l,BdZɟ*u<]4OUɟ𲅲)AɟZ]Sm OM+)Z㫓?dÕrO$* "dÙT(5Uq3TaQuU )$~S=UHuw[W4,JR!RH2"g-W8o$+_4W<*K\H24}tʶJ7U<"g\)}CbUמVS% .M^^X\S'5Q=rЪE-є4/CR8ln{FJdy GRoB+8|+Q-rȶn*%YN#.[%tʶIFMq3GT$VdL'W\^)Bg 'W=4MuSRM]j/r:[uϡڙVȢZ^ zbL*([tO VBLGRD-/w]2]2Zt^WLdVD]jU )e["kES3ؙ $JsI%H|UPu=%H24\dL+T-)tʶJ7U=ѿ3:SJé$Ph: U>iK&ʡE&+7\LiL>Yg7[(RSkeY+UI uq3LJE2Ruw)ClgES3([,Ù%~T$S!7rQLUx!9gsR$QqZ Ê4}W$*TU]־I oMΪAtN;uPx[$u:kx%[B$>RPtIT(rJE5]l,X%P/ lw~|QBH,7\J |/c-aB;𲅲)A[*ȦS&I*83дtIT(ItU]ɟDʪuw& iYZˍE 'W]w?eS#ؙ +l,srgSU3I*~)e'tVR~aєRVNA;EL,OLW-s ʋCL,OL. ʋ\ἓP W8o$W-sܙ+7j\rgSL-X ЬIT(ՋlghJ`j$W8o$ʗU\$#GPtJ*dL-J\Ŵ+8U )$UTlB*jQqx"R꫞diEϔj'7\q!|M5T(hW2$a҉)KMRS<.6&UJJ7U=HI"ʹUrLs-7$&)Qjbl D#eR.zd\lVAı eW63rʫyNlVTpbX)gZHRKRzl(K)Bnl1$!?Tʢ܇R9RK*eQ@EkOsg"H8CQ,~\8H8CQ,~FQU76}ZAce QMsLQU76|5j .m5t+r蹴H8CQ,~Ѻ765h:\.m(KXG% ԬH8CQ,~+b+RpX.,:!?tUt\eIj%ܽhKJƍdx$ hጚrVZPƆ2ɠTZPƆ8 QM/[>zI-(cC4QAUQ=͟Dq R:ītErOxBLc]s+W=u\Q"z#]sT:Jw^)*F0FJ$WPk>41= ҉*85]򗑢B0FJ$WUfɟyTCktCu+5]򗊐z#]s+7X>T(ކ\Dg*uuBKHz#]s+[=5QUsϽ/CktC*P0FJ$VDPϽ4OCktCAzGSU ܘѼ8\DT+YHzjb5:Q$[-g7|"z%(W)% hc|2h6Qjbl 5 W^5Hqw*y Цu=z) kBBkrg)*F0F)IT(< O5סMRʡE7} ϿO>kBW=aG7&} ЦZNO? \1ʾTE8 +GPؕuu=<ƺW-sܚ`ƺ!R>Wkqe )ϽT(ކU҆41RS޸!HRI34I»I>~޸ )&}+e1$RLRRUwI>~޲)&}&Q*g*ۛ>qHJbC1-:U#Ct\EkMrgނH`D>2V=#9Vܙ nZjezFrGЦQ*g*ѐC\-GЦQ*g*ѐƸ)k)JʴeEG]5j)Jʴd:F((IBDkFCkrZZGЦQ*g*ѕ5MPIBDkFFIHqrX RŃL=*ey$} ezFrMr7T`rS=UI#S(ms3hвk5M'd5MM2%+zT4H%[\Z24,Шd5VDG krOYjeK)0 d)JʴdhY1Qjb5M'd5MM2%P꨽eUΠ3 =*ey$} ezFrLhhhT`2XsCIkrlƫ&\>2V=#9VWGq[4S%wRC\%)% hc|2h<-]1̴]$>,e:Pq%w։ IiC߆2h<ʥePBTp:īT*]/E,e:PqxJމ]zDtH^}Ͽq.TY0I]EBgZJVS]E BbrDZPƆ7&УH8}*ЦJE7/?Q i]"Bo S^~]zҺCzVJU )%O!y"uSJ⫢/CkBWHu=t5ɟy Ц(o /!z#]zҺJtwE ^}kBWHuZ뢁/CkBWHo*\&}/CkBWI1j\u"*U,E"y GM3 B * i\SFq i4(~~๴/"\6%]z̺Cuo /!z#]z̺JgDR8% fXM͡BqCbUסL*]ɟy 8_uS4)u}`z#Z$i% hceQ‹WI% hcF2h<ئKij.*YrdO!z#ue߅/CqWzQ$RLI'S=͊_H8 CbUe0G2"9^I\`z#uk"y'9^I'2'ѽ ̺HO?O>9^Iܘ"yq^i% hcCKI'Ssb)EPؖeגC>9^Iܙ`eגJRh}EFVI3"I-(cCH&WIiC4޲҆41"ɠDZPƆ8+~2h<+qBI3$)8[=͢ *ij.)Bo' ̺IZ*[rdOC~2dW-s"?s]н:&WwS- ƲU [MkϼOCqgeIPL:\>K2寕I MeK*:^IJV$oz#rAҚʖU]3uy$)[x`eAѺhYUz]MtneUʖ+8p#}$IxRE$ϿȖ_)l.lTRpP>bZ/=4YË>5Q9ずܙ/C˛T:HFe,8SBu=ʊ)*FEHQFHSyQSpD芐e,8M W)Ar*+!E˪Xq"NSEO@Q=RQ)T:DW**zJz"(YuK$SBu<7**y$%hވ (]RÉЪurO";TEo0F9GcZ&}⨊"z#Yz:\Z3X{>TEeHކ\3\Q^УI-(cCYLdx]zBTZPƆ2QAᜒNϡ ̺HurgB0G2">0= ̺I]QϣC~޷Е>/ [ミ`|.o IiCFKJV4h|.oRZPƆ4hFKJƉh]z|$ pƍ׭I-(cC%qCi Gu~)% hc+G4>csg CbY^I&~/!z(]y$ G2$ܘѽs.L/@裏๳@ppؖeגEW&}/Ck߂]y$ ^ IA3~#u䒫!z#u䒻`z#u䒳*T/#D0G2%&}oCq_z߁IiCCdx]z߀$ qF[#I-(cCC$1h_z߀$ o)^BZPƆ7F/1\h]z߆҆41 [’ZPƆ4QFEK^*HLp$"\6%]uTY*⫿ S^]b*JExay ~(pĐ.p1ɡ»1$A ?(LKWDSR;A JA*īE4SUwB0GwQ$A >޸!}"g Bw )&~? \H0 WP+oB/ N(Q%wo}+8B'%iT6%]uuEUP]ɡy ϣu(QwѾ0= wp$1 |'(WM]͟) 0EPؕuVL^\]p= D\]})] úӮ@ U W^ CQx /CkBa%rЪA0F)*]ɑ<ФHu(TLoCkBa"V-ϼ=  A*Y0Ȟ}8+p@"gJA" ?w!H0<+p@"g@»$RL~޸*H0~s*+p>R#Eʖ+8FJ\/ TN:@>^}$ eq WЦIuj.mR"lJ)4/!yq7&Ѽ8]JN*3C~S"Xmu W]JN*<`ulNEKe{ S0F̶JguRfT4OCk\d: UWrg+F0F̶EkNPϼ= *f~!3> 2, 䦵~+`u ըz<kRi>E8+p?AJUzCIiCLw( BS] )?w( C/[ei +)+p!BT *īXJ<`uHQ= Cq-MU]͟+Fp hS%k+U߄/CkBZŕ S0F-LYQԪ]JF`u[B)TZ75סm dSL )Xl.%O?OCkBȦN+u<4/CkBȥe!<\CkB4RZT]JOCkBȭbVVT(ކ^)DOL.%OAOCkBȩdҪX S`u[B(bճ= LCkBLTFQw*z=  hS"e8:]s5סLSM\F`uS$R萼\CkB(WEw~$/A'5סLVuw~(ЦJH(^2(X{7 ЦJMZOBSЦJgzZЦ@Z9P'ѽ  dlg>$Q=  dziYMW&}Q!z#]zȱlg>K=  dY=4>J$OCkB&XUP]W&}⒤oCkB;V41=  d8[=DhkB%PS葼OEЦC]De(ފ5סL+Q8F4h5סLeVq=*F2F5סLUɟxoCkBUɟxOCkB(:ZϽ/CkBM-Urgފ^2P RmW&}葢z#]zȭbVVϽZ75סLQLrg+'5סLҵE+w*x5סL)7\uP gpVWЦJtwE ϡϣuS%3=#Uw#y(kB9*\q!ʪ$o>OEЦIu%O>ЦJgzGSby1D0F)UլaKLϿ5סLTe~|5סLBu\~$OCkqҵO?ކ^cU^~Q=  N\$/CkB*T(SCkB+m|D`uS%rWЦIi[L^yHbz#]z-+iux "B0F)ZVЭj/>5p@5סL+Qx F(Q<\ dRɇ7&Dѽ  d:\$TaɑTWЦC*8^~(=  dj:M-UPE(ކ^2+PCy-/0޷>I3Dz)Bnl1$PؕuS,QM<`uS,*U )"`uS,Z7DT4OCkBdJۿ [hކ^2Ȯqw}'5סLS]3]EϣB0F)Jk%O>WЦY⫢ D]z%3]w&!yq ee4PнJ7GЦY&ykE*FD4Q eTVjk#zF8+o+H0}/EsgDppؕu:]!Եo /!z#]zNHyTEo!z#»"6U:͟DRp:īIԆ&/>5פEU:@ފ5פE*8F5פCʪ**z(^):]wD4OCkIԔΦ>Z785͟) **)SrgB0F+z^rEo#D0GE͟)} **180`uW Z7`uW!j峨]Eo#D0G(Rpؕq/ƺT/q3|^r+X{S^+G~™TP;ZH EPؕuW!UWw<`uW"۾`z#]zUorh^FƺZ7&落kJ⫾DQ3| kJ]/xq]z)$ o$^*]QkJ$^VS]|#(5u=t5R+7(!lJTaWE^^܇U(5פw!ų,\h^ܓLEhކ^ܔ0m g(~^ܕNBtP<4/CkIJ9(|5פw%5tP=^ܔXZn)F0FZ9uuAOCq Wz*)HLU|*X)+oB kD޷ʑ$|#o*I-(cC%1RUP`4i Պ8WM]͟F %0T6%]u+RIwѣy 뭡Z-X0FhVdIB4o#D0FIB]T+FZ75[Jr*]w}7'5[JrLϣB0FiRCwѣy]m ԬMFT"z'? [H0}-mMsϢ (j5ȭb0bE\8o(qtEOC'5צ)EM]Sܚ>ƺ%3]w|P]zkJN*<OCkMrPm߄Q!z#]zk2H^)~5צ'Vu-C*x'5צ*ZJ 5Iy15pұus򒧊`uJ*мV ϣuZjus8ϼVW\iYZ ϡ\(UEUpoCkMr*Y0Ȟ} Q= 5B3>^^Pj*<0= Պ8Z}O>H^䮃3?ކ^eU2jh83?(^ZuZ*+y"BE\-G8mET}F5צ(ZSδ7YJT@0F o=5ܙ)B`uA(E/>S 7G\iLήiLϔ`?N]%Ssgѕ>*뫜w]*B5JϽ CkMknIS= ų-t,Wrg+F0G䢪nlST6%]usP<`uX]w&}`z#VE͠BRp,~hW!UshFp,~*:7\@Tp,~*]% J\&)$ o$~.uJ\$&*$ eQˤ]p%wP$&(RKJ p"Ɨ6\6%]uBa"/?QrJE/^BEG$SDT(4+G$Ssh!H8}CbUp"~5\IT("}/?Q]ZAšW=(UEUlJUHtD&/E\u%TwJ^}ϣuΥU3]򒗡ƺU#fF`?I*jV\6%]yT(D/?Q+<8iT(zG"*H8*\u%TwJ^B]sGrUL|Ѽ8^UH䖋R`z#]% K R QxWz bW6W8 O!z#]uSȶW`=VCʫB 6%\g%Q Α:/%O!y(^gHBo$/#DEЬ)[w+y^qbu򒗠ϣu+$/>5סY9Qx PJ75סY9)L+D0F+:G%tOM+`B0F+:G%5u=7|)`uVtJ\/C'5סY9*Z9*bE)}Oz#]z#0OCkBrN;ETU])D(kBrPiQUw(<kBr)Ux JF'ƺ#:X{@ROE\ΎI.W]))x/>5סY9%T`ox Q޸ ФR1Wz+"gW E$GZ$I~? \h)+pS †h<+p}"g„ +pFa ^P$ ? \(Q$R1WzBVI3"Kd)Jʴd:ș1-\t2V=#9V#S(ms3huq3άja#S(ms3huq3 z .W]ɟ0 SSLe)(z/YUs ÃuJfIBDkFF (kLS=U]j7+0 VM֣EuJfQ|'`2CLCY$} ezFrLhhhT`2X{0 SSLe& 랕2<>2V=#9V &444*0 UQ=D ]sҦYobb婔(zGЦQ*g*ёd?RŃL=*ey$} ezFrMqIWPIBDkFFIHqq3uu]iIWI")Jʴd:ș$QZFJ8II)ErH%[\Z2\dLI$W$LUHU!DϿTK\H%[\Z2"g@0]Dl^kqnu-.W]!EU% n/ SLLkGΖBg?tE>tJ80 ‹Uq9r.RUk)JʴeEDj'l^ +Xy:7BY(WUry:7 C1B)S2ᑁqmEE C1B) FiCC9 L ͤ45fE;(-0LHj3LjX43CY Fph" KblC3i HjYq1q`l\j85 L03&20-hXԸh6.5H54.,԰h6-506.Ըh6.5H5,5046KbSqBCRظq!`̶CRjdmqC԰h6-50f452.d45l\fmqCቩ`lZj`6.5l\fm!q`l\j8f4-.PjX4 d5 LKbl!ƦC[%5, MLƲfA`̶BqaƦC[ MKbSqesiƒ5,5046PjX4 d3H5,5046CCQhj\5mP)`lZj`6.5hX\5f\76԰h6\mP'5, MLƲ&5555.36jl\iqC԰h6-50j\X4f\76l\fmqC԰h6-50f4fhd\3.36Ll`43E2W=2TUB N iEDʪd9"C2,U4PgУGLUMM kJ\lS2J$/?_qąU4PgЕxJULRC!RTUB}*TI#S(ms3mBg-Dkn@INUʫcie%p$&)GBʤ]Tȹ] % *RK*:$!?*j:7lVpbX.0 UQ=͊H8CQ,~Hg=aG76~)j% zi]͟5^҆412h<.hKJ&TZPƆ8+~2hTrgpbz+XފeQPoEwD̴S- =Xur,Q=͟$ޅw}勫K\DV'r7{S:R=Ѣxޅw~7\~O8ESsgNL8]Mzuj/$\)'&~hZwU:ps]=B\'yd9wth`no-S"zՔ+yrճ4OrzՕ]0"z]t)kO)w:BVr\UZ]pĉHr+!\6%I ͠$ޡ VЬ/tN]3tnM͠Dp ij.ZLWUt)Ѻ7Aҕ}^輪,н >:.;runM Ȣyqq܆=F4OCt\w"yj#xȵmto?OCt\w$VMFн q܇ k#yIMF"z#'7aF(ކCuS3AOCqWz߄ QWz߆)Ͽ]~)E {!\)K2rH:S\4,H:Ry 7ʣ\fQ3|5p!]Tܙ`]TF`aƲoShކ^{>D0FTyUɟyh^]eKgU\+`eHJ53A'5YRܕ-j%Urgހ˨Q7&}"`erWD `er)U)W&D%0= E5P]ɡz<8\w"*4"BYq܁ +94/"}ϣe媪ȶR=ɟy(4^I-4I$4,d:\B$ W~c\ 9Ŋ$TX2]JH9&bH 7_(UUt)Օ^Q$&E]뀦$aEo[萤R1G%i Q,gDpUånY-|IJk*YUt)4,H:Rx˖ TS J۾/Cs.7Bʯ[0G2o$uK*:(^F`p.SEURHTSԩeU`eW%UMwHz#YuR*Q!yqέm++B4*r O!z#MU ^IW$,SUt)uxA\ήI"XSdAx Jca? YL)>~޲I~? YQRE$ϡ»UE$ϡ$i"»I>~doEaO *H8~ īUMɢy 뎥T{D0= UrF`?XoES:JJY\ Wz+HH$ hጚ^УI-(cCTdx_zB$ p^`VWu} ҆41E4!̵Z0$BT*(\S(^BLc]s+W=u\Q"z#]sT:JwIR75:Q"S\`uΔIUfĔ)h ҉YqrgFU(bMW} /!D0FJ$Vnew&}Q ҉MTU\뒅5]0T'5:Q"UW:L!B0FJ$:5:Q"'&}葢z#]sJ R:XODVƺJ$:ZGSU ܘyq҉&Xtu"k9QIR75סMRJE7} ƺ)CT(}߂'D5סMR+e#>D`uST\S(^~x1 jl} ) kB1KBSF)C*zQ0F)EqwД$(^^5HW++zP0F)Jwrgށ4OCkBergށZ75סMR+e#(Qrgހ^5IBLNS/@R 0!uST ʩ\S(^ H^) kBW=gR9P 4(^) kBUwУy!y(^5HzjW]ɠy"z(^5Hro$OKF)Je PEHQ~)o"gߏ烙1#&0̶+Ͼ T6%]zyu=B/5ת璅&}H^+E*8ϡxEsȭZrgF'5תUjOU}BJQƺu='(^}Z7`CEsu='ȶSEaɟz!z#»$>޷ЕRL)>~)o"gߏ7R)&}.oIiC) [1QAas S6~NL /M!q$3!ā ņR̸AaC2ka3.6df`d8̸xBH2L302H^8 L o 쀩zi 7YH T W]\`uu=B`x1M~'J`y"uXn̔(2'z#]sK TS/Bƺ:W)} 0!uPÅܙ*+`uUD]yDE,WEk)zV(e0<FZ97U )PS^UTKT&+j(^/5W=gR9P !x1*\ܙF'5W=r)A߂G5\7U2^eLuUL骅LʢD0F(ꞑ2'75יDTQɑ<$Q= $zUB+{"yQ!z#]yHtUtIU"Leo0FHuб\V*`B2H) k2Esrg*EOCk2*8ֈ$ hcDI"lK2!ɟy ˯$L0G2%wDT4O> q]z1ɠI-(cC`2h=4N/ACbY^IL^]y$Wrgކ9^I+"yhc»RRI3hYQUw!J? YLI% hc&»RVI3]F"gߏ»֍I~? j%w) C֌!3ԺXERWzѕ$&ʫqԪlAU W^ԕO5є`uH2`?-QZAT6%]sjܙ/!z#]urOxbz]DMM kb= jRΦą!Q_\HKJɠ/\E)% hcE4޲I>~I'Ssb"lK2!ɟy ˯$L0G2%wDT4O> qI$xWz߀ "RE%(E~I/IiCC dx_zDRZPƆ74޷#I-(cCJc&"҆41^DrMEi% hc7Ew)% hc} &K% hc}E/[0$"S IiCQx_z)DZPƆ4Hc}^(oAu|IiCc|IRIiC(/oĒZPƆ7 [%i% hc7Eu}҆41 [I-(cC(/o$ o%>޷’ZPƆ8P(.oDZPƆ8c|2҆41o4i% hc o_zFTZPƆ7}^޷ĒZPƆ8 [KJ/ [HRKJ1RS}|҆41SUIiC|T)% hc~(EI% hc))TRZPƆ4qRS}|IiCE%>޷ʊKJ))UIiC) [Ei% hc~))҆41FIOI-(cCQRS}~(KJ Lo~(RKJ! ["I-(cC(|E)% hc|7J|/oč$ o [$1qRSQ$ZIiC+ [hRKJ8ʊ.oZPƆ7c&\ % hc+CE|]z+DZPƆ8#| [e)% hc~Ei% hcDSVTZPƆ2E׭KJƊ7E}|$ oQx]zB$ eQ/eWLHY̵UA»@􃂨&\DK2$5,gH:Ry ˖W$5ʫyN Z\4,H:Rxˍ$uвV0= ̺ iRʫyN z#KJT7Eu )% hc7E} $҆417Eu JIiCc}^޸I-(cC8#}^޸$1 oKJo҆41~7E})% hc))QyKJ(/p>$ oI,Vq Wz}Bd^޸*I-(cCE4޸$ pM\12h<EfUsh)H845 W^J^Ѽ`uzu:7`ujec7z#]urOx*xϡ]DMM kbO>=QF'S*UR_*FP!C뎥T{R߄@ kJo>VRTh]z3ѼZ4Q= }KJ \o9$M͠"lK2!ɟy ˯$L0G2%wDT4O> q]zIiCFM/\RA1Osh Fq  W^Ex *y 2L0FTz#]y )Zѽ UJqrh^~}k"Orh^}'G%Ue .LϣB0FHpZJ7+`uTaB"z#$1_H8EPؖeגI1K^9^I&/DQ̺I47&)yoE˯$"1K"z(.m(R.̺Hϼ`q˯$^_y ~rI=U GPؕqeגJ(^B0G2%w^9^I+9S= ̺IEɟx~(pCA2/ \’ZPƆ8FM׮Q$1(#&%)% hcɠ 4҆41M/\$CA ZA(gRU<&}/CkYԇT+3Cu!ܙz#]zΤ:Q(qrg+F0FHt]ɟy"z#]zΤ'>н gR%.Lϕ0FH(83A'5׬J*QUw&} Q ]!+E$xWzE E0#»"E(@»"JQ]뀥 E$]뀥JQM*]뀦(Qz)D`Lo\0SLWzF"gIh EJHEI(|+p#+H0^)p#*HHcE뀪"*U ATR^޸ RSz*FI3TI QWz*+H1>~޸""qWzJQH)~@202.pD$#RIiC)Wz V$WA4)pI3]뀮JQ}U2IFMqJ?I%P]k\pb$ W?h_KgV2THT_)lC)`q2̖ U<[9ぐ"g*I U]3t24,gCRWL\d1x%,9aɒÁ BKg7\p2\dLuI!Q|8&"gJN*gY$UBۭ)+$Xu$в$PgQjhVp`di5DϿ≖+b$ .S- TX2\dLRDdI -qʋCcZLEEr̖\ Ъy*rgKT*Zn6)CI&I -q`UDϿbNS72\HT_)lT\dL,7+rHT_)lAƓ\dT[$EneAdL(Xuo/;7\bqљmTW<[9さeQ\>3-mtk j̨$*/su* j͟ș.VzFFW=WZL\td5VDHT_)lT (k³mtiY_Շ g)0 UQ=֕".:Z`2Xs**I -qʃBZMq3bqљj'BKg7\p2̵ZdLVM־ -Xs**I -qʃDc2kNlDϿrF4RfD]i3\tZ!Q|8PhZdLaj'mtk#f[U"zF"2UEsrgÀΊz*k]2HT_)lT>ފz*ARU]!"șPZҸ|Υe3kJxY*k]7ZTƳaʅS!Q|82&}MM_pE4*\Sܥ ƋkbR W>kFб]WvYĕZ$*/su#I2&}V-ʊbBRUrgXuTQ\ܩTEr^(7\L_g7\p2U)RHT_)lAC=3] .>X4W8THT_)lA84k i3|+ hICZgS@aº)S@JOQܶsu%RU$End6~"gBgS@xT;R/U ܙ>)Ug3|Lyi-qTI!Q|82&} J8ICbh8Q=ɟC=e8*$*/su UDϿziYL[9け>jt]M*\#q!q}H24{Σ H24{Σ CCD>N'au<[9ぐ(bI$P$K]3t2\dL(抮P4ȭbVzn6 PW4+\to=7A W C1B)S2ᑁqmCE C1B) FiCC9 L ͤ45fE;(-0LHj3LjX43CY Fph! KblC3i HjYqcRظpjH`f6Ld`[!б1q`l\j8jh\Yqᑩ`lZj`6.54.3.5Ll]!q`l\j8jXj`hmq ŦbY FQŃAqBlPh!1`lZj`6.5i!jd] hk!pظh!Rشl\k!pظCRظq hZ]q԰h6-50j Ń2CCS MFA JjX4 d5 LKblr#I MFA  ŦbY ˆ M$03jXj`hmq԰h6-50f4jXj`hm!@Ըj5`SRشl\k!аj5̸nm!`l5,5046`NjX4 d,2.Lk!`jjj\fm ظh!9`lZj`6.5Ըh6.5̸nm!pظh!1`lZj`6.5i!ȸf\flhgq⚦\meTT2U4Ph!EeJ%Y iEBeUWI2TUBS*]Us!̕M5T(J|/Q:/>:fX:jh[\U4Pg"eH_%SMU .6}?#Q9 iEϢ**J8gqrl[Fs,Hs%SMU .6|,XjV\4>De\&9V!1O+)+p$&+Qܕ޸RAm}҆41S.]p%wI /[)% hc7xrJE2WzF^-\QM͟*IR*Bn7 \T54*U=7|/RJE7|oCqt+$V/r$ p_IBG%w{RKJU{]qI]뀥!1O\KJLpgsh .}rJE0x5B_Gx!y k*x8ЭQM͠%O\IT(<8FJqдtIT(/Cs-1<8,\:U%w6DJQ!SJéVU]B(R"N%O?O@Q<8[=ɟzʑ TV-Ͻbz#z*落QFuw&}PE~UD+:[%3 +hH^P14PxDZPƆ8 Z$i% hc}&O fi Zn2&} iXu!ʫPu-2+{*AL򪒰lZLyjJÅi3=KWud)\i$3*]Us!̕M5T(/ jQq$~*Jf(Դ$hLuR *̪(W\qrgB0F*IeIi85יUS=KV+y*rgކ5יUS=KV+y+wʞF`uUDq5ɟx̪%uwy"y(P/[$RL~I1̴޸HLSP]^*]% +p&ܽpDZPƆ8cܽp18!IBⒻ >*pZPƆ7cѮrJE0x"y kQK[^~]uBb/8hBnm46%\gTkQM*y qW\0I]x8dÙT(JiEPؕuZ9N>uZ9uB>OEBr-YMwF]zVE*+R CkU *o#DEBrU2ųBϕ0GTW]͡ u W^u=D5תIUQ-SxJ^5תE)ϼ"VVx~(p$RL~޴HRKJEQ"RDO]͡ 'lJTU!tH^B2QY0T"(<WAWz&U<JZ"UtN:U͑"H8*:" cUZPƆ8ܽq@ZPƆ2ܽqBZPƆ8rĉ$ prRZPƆ8`rč$ p눩$ pGz$ o눭$ e0zФ1/Y[% hc(/Y\ % hc)C+$ hW$ hጚ YZ4҆41"ɠ$1'ߌ޷I3]} )Tl-ϡ} *ij.)Bn^B0G2%j(mɑ= CqWzBR`4dW-s(NL,PoEwB]yL*7 9 eU߂'V-\KOsgЕ$ЮQuwk螕jtW5FS$?sy.SwޝZ~rHSsgЕ9hoUyTkSAwD 랕rO(kWx`xqѢzOwVVPRVL=_VVUwꦢuuЦQ<. Z7+uop=Uj(Yw'IBʤ]Tȹ] Ф!\6%D#rgP慫hVqrz'QwQz| Sunl"C1,˖S$5]3tnMtmBR:/*K&4/Cϣ\rB(}t\w!Ow)y':.;iOw)xȵmt^~I֭KϣB0GEr-Kϕ0GErNpn/A':.;syf^nuw&}"`? [H0}|+oV`[! *P#C1,˖ Mpв J۾/CkB5o*qbqJU=7&}`z#U=7}F`a˛x\rg~^53> ˬlQ*>p= )RUW&} D0F*R;DLz#Yu7\ϽQ= JV0!z#Yq܊UJqUɑ= LCk.;m3ET,Wrh^$O>5ȦJMȐz(\w oBnM ȟFYyjr-ԵrgD'8+oAPzS>RAT!P̹kRH:SYRʫyNeWAҕ} Khކ\dtWL^IJV%/!z#qtnUw߉`z#u7AѺҥWL]F`?^$ oMWL-YU~"SSsg} )!K2C$5)T딕]3tnMtmBR5Qrgކ/Ck.tD&}J`z#YugW:@1"z(]TW%S9@'ѽ  䪹iR$Q= NgE߂D/[!H0++SyjeiŽa7} Y- $)]3to-SBʯ$+n`e_IJk}5WLTAҕ} K^\oy$]z]Mtn]3to-S7\h)~!byNlWA袙r|e_IJk*YUt)tmBR41= ̹kI MoSyjH:R)y ˖5WLCBʯ$+nz#qtnUw߉`z#u7AѺSUt)ѼOwB4OCs.H:7ZTS[ʠz#K,Vq%w"HL W*XZG7 )&}DKg7\qsbI%JL,83!z#Yu8Q=ɟB0= NSVR4Ok.ašNSV⒤oDTk.aĊhU:NxRQ)T:H.VʊDEHQFHSy!Z7F( (]RÉЪurO"+zJz"(YuK$SBu<7+F$HJѽRQ)T:Dw+FL!BEHQFHSy VoDEHQF9\RÅ4*\SܭH`C!E˙,8 g3DVCk.3v5rg*'5ʥs5'3DVT`e5nVTQZ1<q+")D߉kr8BKg7\p2 UM=߀8Qz߁AZ/ [1(c&KJV2h~(o} wp$> [HSzF"*eWTJg $>eTILtW%a2ܦp`zlZ 4lH2cg2&µ-J&4+ZL&X]p\K4ӭITERɇ2QIj"gS*UWZ*UR*]֣Hu2U\MFBb%RLuUM͑!?r*hKS*خ$5TP;Z76} 45TP;Z%)j%k]t6} $5kN]%SsgDpXYBrS\㵴S0= ʨJ3ܙz#]zg +tOz#]yQ$Mrg~^eTI-'м (cy&UDRՊJÅNLUD+JS=KV+{zeTI=4JgjuOwޙUUBSL-X*CʫjzWTeTIL-XlE/lJ*EtXf23!z#]yQ%3Եb&}`z#]yQ%3Եbl~z#]yQ$Mrg+F0F*Ii8^''B q kJt\i'&~Y Ɍ nᬃdF}ᬁxk!hYS31,3O d S]o dix`xk!raith`g j5.DCCScQ)F qֹkAOU͟*I93d LLƀ<5MfE}QSduBSQѢxj5Ըhf20 .=׭KJJ8ɠ K.鐲uJlJAJ$U W^iR꫞\ IUr=F0= IRzS= H8 4:p=qI*UW@UkDK5tZТϽ$(^^bL"5עiXn .L"F`uIT(zGxQ"o>(։҆41RSx)I-(cC4QA։E$eRLuUM /YJw2k/ d03&20-  !@Xgx^,2aT`uUU%U\)} C̪+EkQ=W&} D`uUU"'EW(} d fU%3Աu3O%U\\I93,243`f6Ld`[w,24343203.Hjd FFeDaDŀ}ņRcY K L KņRcY MFF) CC13I MF M]"xCPk ̺Aq`̵1AcbR) CC1C3#2 d&6.KqITbUW)~'qDzU%'-X@TVrgXe!hi!1mмXe!hi ̺AAtcBaC3#2c#QɌ 3" ƅׁ) CCIfFeS0Bf 4/ ņR ̌ ˤLde!дktOHjH2Ldd4l4hj`l8hZ]r 5 $&22 d FafFai d2203.SņR d&22 ' 5 $&22 l44/.5hj`l8hZ]r 5 $45.hj`3Lj8j`l]wмXe!hi ̺AƲ L HjH43203.hg f46/j`l\5$Oz#]yHbEW(DO>Qʎ$VDU\UEP<F*W"ٕ.8F~k2\e:Pqsh"+I93,2̸C1c#ۡxC2dW}) ˍ 03.6p,2\ȦS) Q$1)S*\)-uA繴$Hf\m"cccY Ɍ n) ˍ6HhfF}) ˍ6Hhj`6Ll]x,2̸CatRSWD~*,2\ТU Bg`Xe"W)6$iL6%]urOwy !)G{ EsssblJ*W=rLuUM .R/Ck2s"N#z J8^eJJ^^z#]y++wz"z%(]y+%oEO"OCk2s%U\)}Pz#]y+:VD\AOCk2s"'^y0!y0"uTzVDU\U'aD5יRLT*/ZŽ'8/,22QJ;R$JʡE7@")(RSmSL6%]urOwy !)G~a)E뀩 BgRHzSsh> ī2$k0<`uUD g Ck2$TiU\z#]yQ% 랕2= /Rѽ ʨZТ#`uUD*]UsByh^^eTHSS>W!)G̪%PU@Uk2$jO"'EG"B`uUDU=ɟzP0F*EssBU "F`uUDQJ;Ty0E~޸ R FWNXe"'IRAIJ9ī2rU\rB0F*W"'EG0F*W"'W)))y'BR5יR&T禅)BD0F*W"ܙ|̩\g*uu*1=qʕp 3"(^eJyUHu9Ԋi{>(`B0F*W"*nϼ^eJ[2W=7Gȡ̩\)E/"D78a*]UssdEi(J*I.EP`uU4W-sܦ`uU4.7k(F`uU4iZCVuU4:(ށ J8^eSHqѼȱL(>( D0F*EkEd8b\@R`uU4LȮzuj3"(^eSHqѼȱLQ\\C5יT+X{(J`z#]yM"4/"$OCk28bGȑ>`uU4Q\FHD0F)]2LuUL:IBXe$ʗU\WFU\=t2W=2PIBXe$ʗU\W*C\Hq=fk($} a*]Us2\7zeKzd%RLuUH .鐲uJ E* UzʊRKJ1AU,s*ةARȪuw^5תYuB=FK"kE/>߂8UzʊKJV2h1bH8DlJTU)U)W+*y RRTHn%`?.TYĕ޸HL W*X$QBh_$ pM ޸a<2.U]QMHmT6%]uG2)ay ~޷ʒ)&~? [e)?wiZu]~I Wz߀#"+X{?)T6%]uuEUP]ɡy ϣu(Qw)z;KJQ>18EUҺjl$> U=ɟy P7+8+oT`xWz+D`\>Ф.t6|T6%]z gE+D5סH0hUw= CkBa"ܙ=  ARNȞ+F0F)(bڮLФIRnLѡz#»ZI»Q$RL~޷+H0~(+oč"gcU]~'?rHRgI]|!4^u%w|W򢤒҆41VU)`Z>T *ī0oBBGSrh^}ϣuԪ⫓>0=  Lb깳E)HRUr s-ըlOr`ul0ꥲ=ʞF`ulUTJLhކ^ȭbJ\'5ץL7&}ѡz#]z["ֲeO>WQwʑF5שlwʊ(1]|$ʊ|Uz*DZPƆ41?2r֍޷ѣHM ޷ѕ$>[$1ɠ.l8R.GAF/CkUr"ʞB0GԺXERWzD!3AWzE Bgu8UW6} T6%]zRU<}/!z#]zR.y$OC{`)kH8~U W^)ʪeO!z#]zЦJ,e5ܬ`z#]zЦJ,UJVT4OCkBȦNW]W+*xж2)SZu+*y"z#]zЦE4q]S]]ʞ}5סm dRZT\z#]zЦIWZҢeOA'5סm dVm++Yr)F0F-L'U@zgQr'5סm dTiU,]]ʞ/CkBȱE+Eʞ5סm dyjsuSYSĉ`u[B)EʞD75סm dXNW]W+*y(^)iU֦N.VT(  hS"]\+*x^)YzKe5\H^)Ze ).rJ  hS!*ZTUr`u[B (QIu4<5סm dZɫVT2^)bM\rz#]zЦJM-UaW+*xoCkBBW=u\q=  hS"՝M-UaW+*z$(^^)bΦM\r5סm dYZfrF`u[B.ijljYSz#]zЦEU2uA}G(m jZl7*īB*Z8BY\3}13=#]pVW~޷Đ`7)W=rN;ϣBq :īBR*9Y}!y(^(U-Us*(Fh]zBګMGЦJkmtq<4/CkB`IiPϕ0F)F dT`r۾T D0FdVE* Q ]|ѡIQko}!1WPIZBh-]$2zBT(R xWz)D`L>޷_H+o+H+oH0}_wEI?wQ$>»$i)E} qbu)W=w6+Dq T6%]zȮST/CkB+B0<8^2VeO#D0F)JN*YShކ^2WAܚ'GЦC릉LϣB0F)U )UEU/\CkB(WEw}7ЦEZ')F0F)妻R"`uS"0= ^^2Pj]OBSЦJgzJ7Ц@Z9P'ѽ  dlg>$Q=  dziYMW&}Q!z#]zȱlg>K=  dY=4>J$OCkB&XUP]W&}⒤oCkB;B41=  d8[=BT4H^5סLQJ%O#EF)E*WwЕ<F)j'%O#F]zȪZUgP<uS%srg*ЦEsrg*GЦJ3D ЦESKUu\5סL[Uɟz$h^2+X3DV`uS!S-sܙ`uS$QJŵ\h^^2Pr@1VWЦJtw}>O>5סLTQUBTQ!z(^rTCT]%O>OEЦIu^} J75סLTQwʑ<z#]z*I0W&}߁ ЦJ*VD0F)bX>ĉ`uN:Vą}s*?(^'JL5סLKWDSUߊ^2W*ۿK‰ЦJ[5j%Hކ^2KJgT0F)ZV8V!z#]z-+hVuw|DU7uS%J]| '+5סL*Y0Ȟ}Z75סLKWDL92'*'5סJ9*,srdO>T ЦIT(UW"nLʊz#]zqBTU]߀ЦJa]+Fz#]zȭB X8qЦU )\I0T6%]z$Sr  eEUʡE7++z^2ȮzΥsrz#]z% V(^+F0F)Es_y"z#]z%580]=U04/CkBd>WЦY⫾ϣuS,ΦeuܚDƺ)EqBB(}kBdu}AO#EЦYKUk(? [`)J.'K:} 'KU*u!ɡy ϣu:rN<7u:JN*JFHt9UEU1= CkBWu%'Kz#]zNu5\ѽ l)PؕuW J>5ץ\W}5ץ\}F`?2H8~ īJ g.%`uW Z7}ކ5ץ\Πs8qw߁h6}RpؕquW"SwDƸc]zUȭb/!xq eQ@EkOsgД@*ҮCʪ*/CkJz^rܚyq*7:ɠz$/EҮE*8*z(5o kJ]xhKJo)RVS\޷*HLU.e5޷߉#x!Eʖ+8 +o!3vHC릉\͟| īIEK&wB5פw!k^5פw!ų,\z#]zNrN;[E3V`u:Lж{'5פw%SP4/CkIJ9!y^ܔ]߁ @`u:Mu Q 'Cj]w~/AOCq WzD!1WHbh I I]~޷$ p+$ Պ8WM]͟ %0T6%]u+RIw}/CkjVHb&./ CkjVHt+Q8= PDUƺ%3]w}E >5צ⫕<OCkMrPmBQ!z#]zk2/RCkMrNZ7++x'5צ*Z})*F0F%'C[0!uCޕpD0F% Orh^+Fƺ-5XOrg++`uEe}C'5צ(P<oCkMr*Y0Ȟ} Q= 5B3>^^Pj*ϾSXYw߉\u=7&}}\,&XM&}E\N]ETQ<!y"uJvgn(}F5צ(ZSδ7YJ [Ϣ*`u@zk3>R\Qw!yQ8^[LgusOrg|OCq-ZuZ(? $6%]us𔼅`uR3CZۿ#D0FLб]ɟx~ ZJkvgH8*뫜w]߄/Ck23C~ .lSjr.U]6~(6%GFR6% tUt\0$!lK%i% hc|7Еx]z}҆41.u%w&)% hc|8 Cr(W[I .p>VZPƆ2~/ IBJ\HM׮ʒKJ p>Ɨ6򔃇ѮrJE0x*y kQKo!y"u#U )@^~ЭQM͠}A3]r9%PK^~»@llW A(6%]yf7+DDV5זiCyT(!+zEh}^YlSx_ze(ކ^Y:\%P8z#]yfrRɇ7&DP!z#]yfRz~H0+=E4Cʫ> U W^ugRJE*^y ȢuVu$RsE}D(]y՝I,ׁ+F0F:̱rI[άEsн u3IR5sb!GCbUS4r^BD5VB۾UE5םLIi["Bo0G/\"H0+ R EqxPx„" ?)&TETU]͠ )W]ZKzj3!z#]y.@T0= oL% 랕2<$|I.UV2CG+zT4NQ \q]z҆412h< )% hc} EQAwQ$1'ߌ޸!+HU$5 gĐqCbY^IʡE7 ̺IZ*[rdOC~޸>a1xiB*Z繴I938XA ӬRoEw}2Шފ7xZT)W~Xur,Q=͠E Iɟ WxVOWJs]o+Y53\u{D :/*K&4/Cϣ\rB(}t\w!Ox PȴZ(^+F0GEr-[]7 :յx P4/Ct\w!(^|:.;sx PIsx PJ7:.;TLE~޸ _H0_wIPA RA43̹i\ *y 8A8C8"qcU=7&}`z#U=7S= 3QRhކ^{>D0FTyUɟyh^]eKgU\+`eHJ53A'5YRܕ-j%Urgހ˨Q7&}"`erWD`er)U)W&D%0= E5P]ɡz<8\w"*4"BYq܁ +94/"}ϣe媪ȶR=ɟy(S AxzS@SAT!̹kRH:SYRʫyNeWAҕz#rAҚʖU]3uy$)[x>9IFaeW`eIFJU]3ux Q<~*pĒZPƆ7&ꫦyNRT4*r@R )!f\dt4*ryN)y ˎԨ3C5:X{>%0= ųEɠz=k.Z>`eW%UMw ȑD0F9U'Dw!G MUROCs.7BʯL/C˩־yN{RR4OCs.H:7ZTSReP= \I>{BbKg7\qsh!} }Ĵ^ziYI%&}/Ck.su5'3^57u=x#YuKЪurOx!⒤oDTk.aĊhU:N /*B5TE4*\S*+!E˪Xq"NSC #GODTk.aĊhU:N)*B5TE4*\SSx!Hz"(YuK$SBu<0SHPRQ)T:B /#| '*B57a媖)T:C H`C!E˙,8 g3DVCk.3v5rg*'5ʥs5'3DVT`e5o(*+B'Ž5TBRDĊ5MuI!Q|8&~޸ J \Ф1eQx]zFIiC2.p#$ hFU׮p1ʢIiCU׮e)% hcF2.p#FZPƆ2*2҆41)/ \HKJLeQx]z+}$ pFU׮i% hcɠVTJ4qP g ) C]뀬"c*c<޸Pw(I70S #M)Sz~I~? \/RT?޸_FL $"QL$ʗU\ȮS%RLuUHuq4~=t2W=2PIBXe$ʗU\W#+s*CR꫞dhX*Jg GUS=KV+z.2&4 OUwZ )=ֿT]kQUrֺ?\ʗU\ROY5'IBXe$ʗU\W?eTHq=s*]UsBp2QJ9$>ʨ&UDRՊ"gRru=\qԔ+zT4\+zT4]*]s,"(<L'eKzhPnPU )Ac̪).eTIL-X2&TʨzT禅 Uu< ~eTILtVh*JgjuOq3eTHq=s*]UsB$>ʨ&UDRՊ"geTHq=s*]Us$#BߙUS80]=U?ʨZ]Sq34PhE2W=2TUB+GzH_%SMU .6**ErZoZ7HLSI.鹲$if% 2w!ԵnlWAcCL(ȭblVTpX.Hqsbij%֝VJ* D䦹khy(?Ij%j\p!?#\KWE͟*DpXãunlE)j% tUt\Ij%j)u=2.U]6 j%(YT+b@+c𶅕\`H8C1,~g" ı)gZpbX\ TzlJIɟC1c#ۡxk 1mxk jixZ4wD@h YCTŅ}Y h`f`f^d\l`f]'K<5fqx Q9+p!HLS}RȦSWz}$}+rWz!1WW"Ք%wI ]BJ\I U BdH 1\QM͠)H8EPؕuU )<`?rVZPƆ2CK&ʡE2PĐp:īU U:/EBuB>OEBѼ8^*`u\zV^y(/\/12h=֍޸aHM ޸Q$1Բa̪S%USm *ī$U"/!z(^S) =k$U"T?x_yo"5גJUT+0FIUR-Dϡ~1dzLO!d\IB*4W-s򗐽 IXp{`z#]z&RɥUrgF`uJ=*ez\ѽ HbQrg~^R꫞\F`uErOwʞ|BR5עi%P@E4]VD(3@ 5עi)X{>`uEssB>z#]z&U )/@ϡ (RZPƆ8 Jc}\%i% hcF2h>޸ I-(cC/S aUDĊ:# īSS^ J8S*UDOU͠F$ܰCPC1c#ۡxCPAtC9 ƃ2 ƅ}) CCIfFe FSi fE KņR ̌ ˤ FaScS560h420,^ 5 $HC1ip,244dh6.5i!q!д/HjH2Ldd4L I L.) CCI3S0Add`f]r 5 $3.2Ldd,1OHjH2Ldd,1i!yh^\k!q!дoHjHhj\2.5fq غxCPAtC9 ˍd],244hfd`f] @hl_ ظkwxCPChj] ظkwz?IIċV*j'$ņRRrrOsh@RU0ؕuu=*y !)G~HqJhQzF!3"a\1$D9ī2&T禅DT5יQć\J^h5יQĊ:#)y'BR5יQċV*`#*z"z#]yIUrZ-X*F0F*8L,OLV*`#*z0F*8L0EQ0qx= ʎ$jTL^eOATCk2U=2-Xu=GB!)G̨EkVD\C'5יQĊIL,]LrgDoCk2Q<(#+y$Q<F*8ZUr=WQ@`E̩\fT^F~k2\e:Pqsh H`f\m!1mмXe!q+aeņRH^8 L o HzS) QRH ]z*)I-(cC/Ɗ/LEss$M뫞"I93,2̸DƲ ņRHl84.5 ̌ .ņRHl84.lغW!)G̪%P @Uk2$jO"'E)Fz#]yQ%+Orgށ0= ʨ\)Т#}#D0F*IT(G"+FaB8+p# r)Q=͊Q$lJ*W%U\DV5יRQ= /J7`uTEkNSS=qʕ2W=4("}'5יRЦϽHކ^eJ[=5QUsIT(=bz%(]y+U OrgEQ= ʕLs<&}P`uTET9uAɟy%0= ʕȶeKznPĉ`uTJpކ)&TȑC1*̪i&T禅DT5יTU\tEoC̪i*\oUr=_y'5יT-i.Shށ J8^eSHSS >S!)G̪i:7)ZrgE^eSHqѼȱL\>( Q ʦZybXnW&}PE̪i:7)+>(`B0F*EkOrBS̪i]JE H^eSHqJnRV$Oz#]yM%TW=Ѿ$Hz#\ zg&TErO$,2eKzFCE\=t2W=2PIBXe$ʗU\WFU\Hq=fk($} a*]Us2]QT UzʟI-(cCZ(ɠU*$ h*WIiCa^҆41 ePx#I-(cC0FUYQRIiC*^KJƈ2$ nM ^}k0nMɡyo>5RSL0G*2+kϣ*H8*GPؕuԪT5׮eU:-iS0F̶JguRf<2BUܙѽ s-Z83?OCkJnLϣB0F̶EKy)e*y^`Z'F-2' qWz*B`2^ѣI-(cCɟAE|!40x\uE%wCw򒴃bU|IiCጚϔ"\6%]u R/CkUr"%o!z#:J[&]SUsgDqCbU׬u%Sw)y :uSwF0= Ƕ h[B>R T6%]zЦJW*T5סm dbʎVS]*z^)*:RT4OCkBȦNW]WoCkBȦNRj^"'5סm dSLu:"F`u[B7z#]zЦIWZҢ=^)ZŴe*zoCkBȢuTu"`u[B,UKWx/CkBȱE+E*z^)媩΍N= H^)M2N^">`u[B)SU*y(^)iU֦N/SȢB0F-LRus"_`u[B VSU*x'5סm d0VBKe5^"J  hS!*ZTUxF'5סm d0V3LE%ҲS!z#]zЦJ<5סm dXW=u^"z#]zЦJM-UaWQ  hS% ΦM\x*Gж2,]YZfx 5סm dXW=u^"5סm dYZfx'5סm dXy9=Z75סm dQES,W]tOwD\<q*JЦϔpT6%]zUrwQ<Ⲹ#\fILkLOHu|Ⲹ A0Rzw]͟) u W^(U-Us*(B4Q QȪZUgQ<F)W-r- ЦJkmth^}5סJ0c$(qwp=  Q,X9\ D0FdVEF Q ]}JA0{e5޷!1WPK @Ie&)A AsD lJ)\S!z#]zȹ]ܚƺ)׈h^2)U)WoCkB+znM ϣuS!D&}ѡz#]z*W ϕ0F)tWw D0F)b֮B(ކ^2U\w@D0F)BsH/CkB(Y5j$oBSЦJgz($OCkBykBËROz#]zBf]W&}Hz#]zDҲLȢB0F)bf]W&}z#]zȲziYMW&}H^2LR*bL%Hކ^2+w]y^2V-eo#D]z*]F'uS!ʊUNeo#)FQ dZw++y4OEЦER\28‰eP<kB(7+>T(ކ^2,7+>R8^2Pu4WUɟz$(^^2,:ZϽ0=  d(bڮL#D0F)ZŴeɟz"oCkB \kϼWOCkB%jV-O>5סLTQU} $/EдtJHrQ=kB'wєoCkB)NFb`uS$Y$Ú\~/CkB(Z˾T)`uS"ŵб]W&}߉먜te*}s*U '5סIҫ>D`uS!U*wʊ^~z#]z\nQS‰ЦJ[5j^~oCkB%m3wʊ}^2KJg]yH  d+Z/>5oĊ5סL+QwD(Q<\ dRɇ7&Dѽ  d:\$TaɑTWЦC*o?^2PkQ ЦY) ϕ0F)E*8 @ƺ)JgS2M "B]z"h8]ɡzo>5סLML: ''uS,TK\~OBSG/[Q$yM͟BA%bUפtR9ay tESʦD8QzB /S*rKPq$>*u!ɡy ϣu:rN<7u:JN*Y["z(^* 0F/ƺII뾅z#]zNu5\ѽ llJhMɟy ҮC+0FD4OCq͟B **18ay ҮAn^5ץ\Πs8qwТy'8-͟BRp īB5ץ\MB/qJ]zUȭbV8EQ=͊ʒ EPؕuW!UWwСy ҮE} '`uW!ɡy'GҮCsjܚBQ*RSVVQ=kBSҮE} Kh+G~*o$ oVU+o+HLU.e5޷B%~dr!J[;$T!DHpϾA$5 W^܊L9^^܇U0= 'CV-buy'5פw$㵴S=~ѽ 'C)aw߁`u:T-l}}5פw%UVsLy^ܔ]~t;KM~)F0FZ9uuzz#(0$&*I,Vp޷B kD޷}#;KJILoBJ[B!-XtH8} L W]m Ԭeu!y 뭡Z-X/C뭡Z*]% N;B4OCkt+Q8EO2V`uҥ\W]߂'5[JrL/> 뭥JfW]߂+`uЭJ)mt=#»)W]!͊Ѥ@ CbUצQ=W} O!zF!ĵ\\΢M ȟF]zk̮CϣuE*8<OCkMrPmyH^^L+z#]zkugR9[D0F"T+R⒤oCkMrRt;41= c]zk7b\= 5BSܚѡyq MV.tܙz#]zkm++Yw`D0F! QUw}BR`uEK&ܙϡ'5צ(W]7&}߁ \-UEUy`z#]uQ0qB+./>H^䮃3?ކ^eU2jh83?(^ZuZ* kMrP㵴S=Sw!h]zkUfk@q 8k ^(ƺ([wѢzB0F\-+dS5w+~8Qz}APxRA4(p?A2 \1QAu)% hc26Ζ(TJj>rg3H\jj45hct/ ƅR d3H`f`l`cB) MFQi hZ\ex K.55-5cB) MFid3]1iqƦCY4ŲܥдBSQ2L`d\[to ƅR d-.6LX_ 1qmʞ K.555/ 'cB) MF Kaq$Eŷ+xf4-.2hk Ըf44dȸxf4-.2hk p5.553H\jj45j^3lhZ\e!q@1lCA߅дBSQRa-. K.555/X@h .K1iqƦCY KAxxf4-.2hk fCR55,.0-O ƅR d SCۿ1iqƦCY4ŲcB) MFid/GuKJR2<.pA IiCFU/\BrL/\hR !G[ZE0@~RLuULA$%]uk.ϼ`uT禫OC\]2PS,ȪGK R꫞QUc* 44}LO!dQx"+? \$11Aw"I-(cCb*#p@VZPƆ8+~2hګyN)R!e_)AҚꮙ:7\H:RBT:/*K&4/Cϣ\rB(}t\w!Ox#y':.;iOx#xȵmtH~I֭ϣB0GEr-ϕ0GErNpo$oA':.;syfHހnuw&}"`? \ DSPA K2rH:S\4,H:RBT5pCk5p"C8?V3CȺy'5p"E˛+F0FW-sܙ'5DLϣB0F*[(ކ]D)3AOCk.;'(^/Ck.;JN*2')`er-yM ĉƲЩUɠy/Eˎ QYɡy}k/-UPpE:LȑD0GwEiC*:H8*a7 f\$)eUTEh= T.U-sQ=ɟx"oCk.pSx +x FRS 8]RË D'~$Qn3I -q5Ti4"RRaSzE0>UwRʨ3](>»EI!7)&}Sz+DLGZ4+pBrL(p$(_WE%Hc†Q?g&TErO$,2eKzFC}U2IFMq'1zeKzdD>I.2FUO] Uu< ~eTILtVh*JgjuOq3)L+Q8 ]sҦYuLOTkS*CLRIF2$p`z4~ Q%3ԵbșrOxJʨzRS бUD OUf2$zWT?̪'2QL ~eTILtVh*JgjuOq34PhD$/? $'S*U1̴޲I |I2W=76| ı2QM͢+H8CQ,~iEssb5TP;Zخ$5u5ήC$!?#ZuZ(?RAce QMsLQU76~5j .l4Ij%W!UsgʊRKtnM͟AcCBr.U]6| DE4Cʫ! D% *uS"t,Wsh!*H8B? hYU͠$3zʫyNm(K2yN{ARAcE}E$eRLuUM /\R?ʪ{@IɟaC1c#ۡxk 1mxk jix,2Z4w!ņCYCTŅ)xk  Kxk!rair KņCY LiG+z?pJ\$ UT.7kBrgXd5aмXd5MfE}!A`ȺT`uUU%U\ OCk2y:VD\5יUTW<(^C(YIL,]LUr=W6IɟaC1c#۾aAuxCPk d2203.' 5 Ʋ&,4,243j\d\j`f^,243\jj454OHjd6.H\jj45jlغņRcYfFe KeG M^oHjdHh\\k 1u_) CC1$50503 $ S$&6.`DaDŀ56Ll]x) CC1EɆaRjcQăSdDņRcY K L I d&6.OaCbᙤƦCYŃC2ƣɍ8bDaBSQRjcQăSd׆q= z.i䪹kIRH Q_z)$ p%_ aUDĊ:H8a*뫔{/@q)IIċV*j'rgXe!hi!1mмXe!hi ̺AAtcBaC3#2c#QɌ 3" ƅׁ) CCIfFeS0Bf 4/ ņR ̌ ˤLde!дktOHjH2Ldd4l4hj`l8hZ]r 5 $&22 d FafFai d2203.SņR d&22 ' 5 $&22 l44/.5hj`l8hZ]r 5 $45.hj`3Lj8j`l]wмXe!hi ̺AƲ L HjH43203.hg f46/j`l\5Qʎ$VDU\U)EP<F*W"ٕ.(^F~k2\e:Pqsh’rgXe!qcdFBaeȮņR#H`f\m!x350-/G Xe"LT*/\$>^ZPƆ8_u2Xn̒]4{@?r) ˍLllk!1mмXe!qÃB PXe!qÃB LɍņRHl84.j\j`螏ER+^HL W=j:@RU0ؕuu=FBR8AAa7YHТH8 ī2s$ʗU\Т!y ̩\ȮSI[JQƺ*W=rP#B̩\Xp{DuTz䖺y"z#]y+*ZoCk2s"J(>("`uTzVDPRR(`B`E̩\ȭb䪹kaD5יRLT*/4O#OCq kJt\I'&~Y Ɍ nᬃdF}ᬁxk!hYS31,3O d S]o dix`xk!raith`g j5.DCCScQ)F{$FkO!d\RAJ(ky 뫚EkOB>0= VD:#y'BR5W4*]UsB>D0FZyb(W\i3@R75W4g*uu*oA J8]\*BLȠ'5W4*:M3rgE ^]\(̆.Lȡ)`?^" VyziYMW6IɟhZ\e!qAм3H\jj45hm!c#Z\[w K.55 Fa1iqxf4-.2hk fB jl\j`[x^ K.55-hZ\ff]tO ƅR d `fl\j2LX\`[rcB) MF&66LX_ 1qmѼ3H\jj451a|$Eŷ*xf4-.2hk ԼfH2L`d\[x K.555. ܭдBSQRAc"۾дBSQQԸhZ\e!qAxC1c#ۿ1iqƦCY4Ų&5 ~cB) MF Kr xf4-.2hk Լg!bc3iCQ,/ ƅR d5.;дBSQb K@԰<3H\jj453L[ hj4 M nO ƅR d f\l`[w K.55-j`l\`[xo\$SR(/hI-(cC#E4 FJZ2п^e)% hc) WLs-2WzQ$&)dS) +e%) QxeP*e2Osdh(UTWrO!z(^S) FIUR-CFREk$U$8WteO#D4QUTeQD_ q)% hc*u޴o&T+U )֎ƅrJE76)+H8EPؕuU )8B0GuJYIRBbPE)JYLI J8dÙT(Jئ6%]zW"ܥ^5תr)AJ^]zW"Քr}ϣu\QMJކ5תrYtpGM6R깱K'&~bauмhfF}CScbԸ1=F 랕2W!)G̪%PU@Uk2$jO"'E+zHP ʨ3@^eTHzuhQxzH= ʨU )Gx zEh} (QF)3L+zT4Ia箅##G+zT4NU+8M VD6$s W^eJ䪹k@5יRQ= /[0F*W"'W)h J8^eJR꫞^/@$OCk2r+Mɟzʑ ʕȶzjW\QMF!uTCT(U=ɟyD0F*W%3ʪCΤSLܙC5יRQPCu&}P0F*W"ٕ.(^E H^eJMHF0F)3L(I VD#B5'uJEQDzRLuUM͟+H8)FbUיTLuUM / ʦ{0F*J\x<̪iAԴo@k2W))uU4Lȭb3"OCk2VzdXCV.[Uɟy(ކ^eSHqѼȱL7YH櫓>("`uU4LUUɟy0!z#]yM"'0^eSHz Kȡ̪i)Xm*y'ѽ ʦ+𕼉(4^I.\S#K R꫞蠍p.SE鞺dR꫞(Q$,2eKzFCE\Hq=fk($} a*]Us2]Lq@ZPƆ4H*W҆412Uzʑ$1c*W$ h*WIiCJ*W$ pTYTI% hcEeO]zʊKJq?҆412Uz}$ h WHbI CVIiC߆2h<ʥePH8}CbUתYN(BQRȦS))z'uE-yo>⩥P+oD0!} *RRTHT^(B0FTU-^RKI]|!3|-\b)++E|!4/]z+$ pM QB*T(w6|A*īE4SUw|^WE$]|u 뒻I Wz~$Ug(VD6}iT6%]uuEUP]ɡy ϣu(Qw߉`z#[1 }~18EUҺjl)*īBOrgB0F(V0=pGw>Ot) ]=͟ U W^ CQw*y ФI\*= CkBa"ܙ=  ARNȞ+F0F)(bڮLФIRnLѡz#»QRE$]|$ʊ-UrWz*D#Eʖ+8FJ[P$&U GʠU| IiC/-L\eiT6%]yzܚ8^`BB}kT\`?U dW=kU͟GAR:īT^(B0F̶JV=`z#]z[%3:lOxy'5׮eUR*3z#]z["'U(qrg~^3? ܙF`ulSZϕ0F]eoA'u[-3/AOCTAU}RIiCLwe)E]})C˨WZ4RWz)+HM ޷ѡH0|W򒤒҆414͟)Fppؕu.::.IS^^Ewѡy ~GR꧙bI]~[]S]~i AU\JR"lJy(B0F]T]J8m hSUrsgJRCbUסm derQ<`u[B+Xxz^)*:R=  hS"e8:]u^(+F0F-LiE+E`u[B)tNuw'F`u[B7'+`u[B&]jVRJ@`u[B[J^(ж2(UE"`u[B,UKWxz  hS"Zu')`u[B)ZT/OC'5סm dSLSu'>`u[B)SUHz#]zЦIWZe8Q<$/CkBȭe+W=z#]zЦCe).xx'5סm d0VBKe5^()*F0F-L hiiQUhbz#]zЦCc4R]M+)D4H^^)k&zQ<5סm dXW=u^(*B`u[B(Vu4VY5^(*ж2Pijd]W'0F-LVu4VY5^( 5סm dXW=u^(^)fKUkesU葢z#]zЦE7Z[,ÚODV`u[BQT]SJ^+'?2QEUB\ICbUסLW-w|/7QƺTQwQVW~޷Ѿ`J/5 U\빳0B*ХeVq=߄/#EХeVq=߄hF5סL-kmto=  dj:MFϣB0F)F de.O>WХ1RŃn8^OCkEj]e/@R`? [Ѥ>SJVS]~I .u޷`HMZo[P&)R"g$I»"#T)W=w6A/PؕuS"NE/!z#]zȹ]ܚƺ)׊'z#]zȥT^(+F0F)м<8^2O]4Mrg}5סLQJ*h|5סL+ [@`uS"խ]]Dz#]zUr]E EЦE w ^^2Pj]EOBSЦJgz"Ц@Z9P'ѽ  dlg>$Q=  dziYMW&}Q!z#]zȱlg>K=  dY=4>J$OCkB&XUP]W&}⒤oCkB;p OCkB+wСy$/EЦIT(T/#EF)E*WwСyJ7uS% N;P'uS"jcUOw)yT#EЦJ ÊϼU 75סL ÊϼT'5סLM-Urgމ 5סL3E CkB( )X>H=  dVm++YrgވЦCyW(Z3ЦIiZjQW'5סL'gQ!kO@oCkBT-vY\/@OCk]2\ЦuS!k3P(z#\g]zȱJK%Q% Ԭ_zHP  drO@E}Ie^޲I~=ƅ2QM͢+H8)*ЦY%P5סL(T(p= CkBdW=gR9\#D0F)J\/z#]z"uܭЦY)h}5סLS]}ϕ0F)E*8‰ D]z%3]w&!yq ee4PнJ7GЦY&ykE߄"h]z"jr=߄J`y(E} JA\^Ssgppؕu:]!ԵnO!z#]zNHyT%/!z#/2w!ԵnlVVp:īIԆ&/>5פEU:@ފ5פE*8B5פCʪ*}`z#\f#]zNuC= 'RS:Lhކ6} IPؕuW J>5ץ\W} K0F)y'8ϡ*H8~ īJ g.O!z#]zU3B`z#]zUZl3} K= nlilJ%Q*U 6%]zNr*Y0櫾/!z#]zNrV 0F9Xew߅h^ܓL}^+F0FyKh[=~'5פw%SPyh^^ܕUY3sw߅z#]zNrS]w}^OCkIJku-7}^t;hw߅"`?PJ[$TY4RWz߅[] $ #oRZPƆ8 Jc}^ +o!3BZUWJ髹@p*Y$"y 뭡Z-X'`uЭJ.j'<]% N;uS̮'ѽ TT"y"z#]uW!"yh^]m*Us2|5[B+$w)z=pGw?Ck]t6+*H8 īMr+Xz H]zkZ .Wĉ`uJgQESWA&Oyq5LfW]}CϣuE*8D$Q= 5B+Q!z#]zk2ܭ/0F!Υsr)D`uEJVeB⒤oCkMrRt;41= c]zk7bx^BM hм8^W:cLep= 5ȶQ<= 5qBTU]߁ ϡ)F0F"nL\+>`uE }]jTLPJ˿7~$OCkMrWAܙoCkMrLb4\OCkMr-:uSw*y"BE\-G8mET }F5צ(ZSδ7YJ >5צy89ϼJOCkMrfE߆)ϣuEΦzgW4&}Q0Gw"H0~N]%Ssg*H8}CbUW8O!z#]qԪL0Fֶノh]b閺+3z#»(R U QMsLQU76~uP`uX]w&}`z#VE͟F CbXЮCʫϕ!lK)#H8CPؖ?T+G!UsgR6%KJ\oCu $҆41>*]% J\KJLp?ˤ]o&* % hc*t+$!4^^BZPƆ8c _.mFlJ*} ^~]uB_Gx/?QrJE1^<8 *%IlJ1F*1<8+p!Fa|?,:PB CbUזi(Sx<uCU )`zEh}^YlSrFR`uCʫU )!F`uCʫEK&ܙ@`uEJZ!*z~%)CS!Ushq*ī:%PK/O!yQΤBNhQ<'EάIfJ^+F0F:̱rL?OCk:;!Fн ]I» |fk@q 8k ^(ƺ([wєQ!z#]y̮z䖕)7+~8Qz| (BVrgP慫hVqrz'QwKgr@ A$3̹k2H:SY]U:.;Z"z#TDVZ7:.;j"':.;uk}:.;mt[ϕ0GErNpn D0GErNo,Û+zoCt\w!ܙ'8+p"Da(6CUsh f\IJk^IJV`y 8!5pB5pBS8!GV3CȺ4OCk 57[x>Z75kϼ= -j%Urg}5YRUW&}z#Yz*R;DL@`eTw%KgU\)F0F'TnMɟzz#Yqܕ=D`B0F⫓"z\w"gXн H}k.;M \!BQ@ޅܚ>ƲU [MkϼOCqWzE AEʫyNm( t "Y-|IJk*YUt)4,H:RChކ\dtWL^IJV`y ˍ$uв`eIFJU]3ux"y'8UzEIiCߌ :Z"ȼTHr ,˖ TSRWUt)Ѻ7AҕB0F*.L`eΖ(Ͻ LCk.lQrh$OE˪y7SȟF0F+妻+y(]T3ʢ"Q!yq]JAxBSUt)ѼOsh *H8~s!DK2A$5yNxhYUtm`e_IJk}5WLTAҕB0G2{ l4,"`z#u7AѺSUt)ѼOx7\"FZ7_8 V)g@ QL H( f\dtWL^IJV`y\tSUt)ѼOy$)[x!/Cs.ZRH:S\K]3u *ROCs.7Bʯ(^9Sy$}5WLTK= ̺ iRʫyN$O#*`=1|8@pP>bZ/=4YË>5Q9ずܙ/C˛T:A w$A>)pEE0D~޸"+H ~(pxWz+BIRSz+)HQL$ʗU\ȮS%RLuUHuq'eR\(IT>hX*Jg GUS=KV+sg2&oM"'"4W<%[+7Dʶ- 颹W=t)J idR꫞(Q$,2eKzFCC3*CVDRAc̪).eTIL-XșeTHq=j(IF2$p`z4~ Q%3Եb"gSTUB*)E2W=2TUBFWj'7\q!|M5T(~Hu2U\M)+BܡJ빱R$5ʡE76*+H8CQ,~iEssbKeQ@EkOsbK:.lV DӪIET H8CQ,~,j9)q)J* DZB>RVpXr.U]6| Ac)>pXЭKWE͟+BpXU-+fXusbRKS@zd:\.mKPU=2.WBw6 X-eW643zʫyNm7K2yN{@ ı\Xe"'E?R"Eq"EQIiC~2gLJy rm͠**I93,2j`l] f54hf]t/H506.3LXbHZ})i CSIz?eRUEsȶSEa͠*FrgXe غCCS ƆeBaSb L$4505] Hhja ԸhfZqx,2j`l]!Ʀ GD~ K W)6 īS7qqaQ\(p"HLaQ\6D L6%]yUEs2W=4(^B0F*璅0F*\Sz%(]yUEsȶSEa*FD0F*Y+|̪+JA^eUQ\+\tb3A$/Ck2yQ= *1=P<GN5qr^҆41dI-(cC/RSgbfb&$Jt\إIɟ1lSdƦC#м43203.hg!xf]!д43203.hf205Hl32.hZ]xHL I LƦjl`43hd`X8/ ̌ ˤLde!дktO  Ʋ $450$3\c#!ظ@j`fHZfitofaA̺O d&22 'I4ņ2 $/0 ˍd450$3\BiJd,Rp U W\i&T禅&}/Ckq4\J\`u&\So#DJQƺHb&.RD`u&妵dZU)D#z#]sS*KS"Պ8J' OCkq4eTY2-Xz!z#]sjTL\@UM"ꧦEQ0q"Nނ( J8\i:ZrgE H\iQ<(1<} ]sVDU\roD58Ekz.i3#DM%3Աu3O% .RT4Eh}1"u&꒪{EG HR a/:XuROM+)ƅR d 1iqƦCY Ɔ&20ŷ}дBSQhfH3^cB) MFid,2 FƦдBSQb ƅieDhZ\e!q@1lfƣ$Ņ)xf4-.2hk"ccdŅ 1iqƦCY K2L`d\[rcB) MF Kaq$EŷдBSQRh\m 1qm K.555. $&02.-^ K.555 KMn ƅR d03&20-<3H\jj453L["cPkwxf4-.2hk Լg!j` K'cB) MF Kr&3645˾RhZ\e!qCRᩀ-.j^3 K.55-Ըj4 MK nS1iqƦCY4Ų@hZ\e!q@1le|дBSQb WE0Dz*Xzm ZIɟaC1c#۾aAuxCPk d2203.' 5 Ʋ&,4,243j\d\j`f^,243\jj454OHjd6.H\jj45jlغņRcYfFe KeG M^oHjdHh\\k 1u_) CC1$50503 $ S$&6.`DaDŀ56Ll]x) CC1EɆaRjcQăSdDņRcY K L I d&6.OaCbᙤƦCYŃC2ƣɍ8bDaBSQRjcQăSd׆q=IL,]LUr=W}$ p$?aUDĊ:Е$@RU0ؕuu=FBR8B ʤEQ5shJRNL 5 $03&20- 5 $H43h3.hZ]w,244hfd`f] d`j5601fd]!д$Oz#]yHbEW'"Eϡk2QCk2s%a7}'BR5יRZ!y"z#]y+*ZoCk2s"J(>("`uTzVDPȡ ϡk2s"'zS‰ϡk2s"NT^^G 8;(KJFM/\HM *]hI]п012h<-]1̴]>,e:Pq%w(REdÙT(JYL`H8~lJIUR*]/ETe:Pqxz'u䒪[*07E%UI*J^Fh]y$ʢ 7'Bc LR RH!W KJUPxu +o&*] (\QM͟+ CbUתIT(!B8TuJ\$&*r-YMrWz$@UK&ʡE2P@ u W^ȪuwkU S) =kU Z<7GB%PW0FP@c=+/o#D4Qya)Bo\I2,2*:@RqITbUW)^ J8 M /\"HL6 UKA Iɟfph]t/exlغ<5.50LetOGEsBA Ba*̪*Z<`uUD gB0= ʨRɥUrgF`uUD+zT4("x̪Q= /= ʨeKzhQx4/Ck2$W)+uUDQM @Uk2$jO"'ED ̪)X{>`uUD7YHށ4OCk2$BQJZ7C Q] r)Q=͠ थbUיR*Z<`uTEkOBC̩\(\Sz%(]y+eKzhQx= ʕȮ7&}*F0F*W"骊]rJE7@'BR5יRPT&}PE̩\*:M3rgE ^^eJQEC T\BS̩\fTy1"z#]y+7DoCq쁉a*]Ussg QuU4*]UsB/Ck2k@0= ʦW-sO#D0F*Eu-!)x!)G̪iu=*z`z%(]yM"F"2+XzLȠ̪i:7)╋rgEJ75יT+\to=2,S" R9ϼz#]yM"F"2UEsrgE ^^eSHb[ȡ)`uU4(bD0F*CV.[tPކ^eSIUtE/"D'5MzeKzdW)H)&Td:(\ zg&TJI#K R꫞(c\ r)'qiJjGЖI2W=#!_?^)&~?^hR W % hcD4o$ h*h$1cFZ2҆414oFZPƆ8QF^eI% hcF4o$ hcFZ2҆414o!I-(cC4qW҆41Ď4oZEK^>W$I% hc~ɠ*L9Bnm6%]zT!z(^dS) =kT(o'F~*]+*HV㹳h.*U,DUJqUʢy RRTHnVT8TRgWz+D>TY|#hQz+!4/]z+$ pM QB*T(w6~"U W]Q̊h[!z#+J[/ N(Q%wHyY Q=͟} AU W]lQUT,Wrh^B]s]z;KJQP]5w6} ZA`*ЭuSܙ  *z#»)+ t맹!H8CbUסH0yT]y ФI\*@0=  AWrdO#D0F)J;U:"xФHj3?OCkBa%JL92'F`? [P>Uw *Cl22.TY4RWzFT/ TN:8>We)% hc+/-L\h"lJ)4/!yq7&Ѽ8]JN*3C~Ȯz->u W]JN*TO!z#]z[%SQRfQ= Ck\dyU-iU= s-ꪔ)U]ɟx2Q:C>D0F`ϼ4/Ck\dT7\'+`u ը=F5שlwєQ= c»4iWp$1 dS Bh`u FJ[(C[0$1ɠ.lK W]B㣠5תkmt򒗐 u.y+QT޷!3AWz߅qԪl(R"lJy/`uH0= Ƕ h[B>R T6%]zЦJW*D5סm dbʎVS]ʢz^)*:RD4OCkBȦNW]W*oCkBȦNRj\''5סm dSLu:ܪ'F`u[B7*z#]zЦIWZҢQ=^)ZŴeʢzoCkBȢuTu*"`u[B,UKWr/CkBȱE+Eʢz^)媩΍NQ= H^)M2N\'>`u[B)SUʢy(^)iU֦N.UȢB0F-LRusܪ'_`u[B VSUʢx'5סm d0VBKe5\'J  hS!*ZTUrF'5סm d0V3LE%ҲU!z#]zЦJQ<5סm dXW=u\'z#]zЦJM-UaW*Q  hS% ΦM\r*Gж2,]YZfr 5סm dXW=u\'5סm dYZfr'5סm dXy9Q=Z75סm dQES,W]tOwB\<q*JЦϢ+H8~ dk(^BY\3|^ꞑ.K0Gwi+"Jqw6}IlJ)E"jcUOwBuRER\28…hF5סL-kmto?OCkB(ZEwQ4/CkB`IiPeO>WХ1RŃnLOA'5[" .4/@R`? [H0}^*9YMw x ]% o*HMLs-7>޷F`%>޷D`0yRzlT lJ)\Sܨ/CkB+B0<8^2VQ<ЦE*8Q$Q=  dziYMW&}Q!z#]zȱlg>K=  dY=4>J$OCkB&XUP]W&}⒤oCkB;#y^2V-puS$Ruw+hz(^2TW QkB(Vqy4OEЦER\28…eP<kB(7+>T(ކ^2,7+>R8^2Pu4WUɟz$(^^2,:ZϽ0=  d(bڮL#D0F)ZŴeɟz"oCkB \kϼWOCkB%jV-QuZ:G%K$9UAy(z(^2N;}Дz#]zLOHu}>(^2JL9qɟyB0F)Ѽ0=  dX+ϼ"z#]uyF0Fʮ+yD0F):Urg~  d:\%PS? =  dU|'5סLʶj\*F0F)ZV=W|!`uS$q**yH  d+ZTV芠z#\fHc]zR~$/>RϕЦJ,srdO>ЦCʫEK&ܙϕAХKWDL92'*F`uS$RRɇ7&DEp=  d8B*R@`uS% Qְijĉ)F0F)ẔhqwFEЦEjo1ۿO>W5סLV-*y\kB*T(w~"+ЦEE3*`uS ꅲ4!ELW=t)p(]zsZYKB'5ouS"*U,D+RzHP  drVT`?^Đ`Vd1LSsb* eU )E/!z#]z"BoK0F)Esu-CR4OCkBdJčoCkBdW8TD0F)Jkp`zEo> ЦY)z#]z"RUw+z<8^2LfW]ɡzH^}kBdYM+4/@Rƺ)IZQwBD4Q eTVjk…J`y(.lVRppؕu:]!ԵnVT5פtMy ~™TP;Z76+ u W^ M ^}kIԋu&ѽkIԊUJqUzOEu!UWrOC2^):]rz#]zNu5\ѽ ϡ} **)SrgB0Fq= CkJ nW= 6} lJpeO!z#]zU3ʞ5ץ\Πs8qrF`?w6++H8~bUoCҮESʦBƸ/ƺZ/qҙTP;ZحT6%]zUt9UEUܭ^^r-\OCҮC{B4O>5ץ\R94D]zUȥT\\fVWҮE++xhW0$1C$,Vq WzBT;$T!DHpϡFp CbUפw"jJB0F:uBT0= 'CV-bu%O#D0FvgJ+F0FyKh[=BTD0Fujж{ѡz#]zNrUUg4QBTp= 'C) D0F䦺RwЕ=J75פw"S*zz#($&*I,Vp޷F kD޷*H҆41RSb(W\0I]} jTLU]+ϾTp*Y$`uЭJUD|`z#]u+REKZw}򷑢z#]uKZr.yw+x뭥JL[뭥JW]|ѡz#]uW!\CkjVIMkk DO~޷} ʶBW]!͊Ф@ CbUצQ=W} !zF!ĵ^"\΢M ȟF]zk̮P]zkJN*TO"E\)[x$/CkMrP[TK= 5q:j"Q"z#]zkRYrJ 5IF41= c]zk7bbx^BM hм8^W:cLep= 5ȶYSϡ\(UEU^} J75צ,srdO>(^]tܙ~/CkMr(\UWw0FV*`jV]yD0F%tOMɟyF0F$*I+SAɟyD0F"ӪQU7~~F% Q;[E3U7~O> O#E\-GRZE߀@0F o=5ܙ)B`uA(D0yq5ȶLϼJ8ZQU76~GPؕu; ^\u*>0= 5by'5XzeLhކJA"UBrS\㵴SBb \ZPƆ7c.]% }޸&*҆41G IBJ\JEu I% hc8x!Fp5bU\IT(/BEG$R;F*x/?QhVIT(!)H8}CbUp!GG$Sxy qWzB /ZV̰PB CbUזi(SrO!zEh]yf7BnYS"+Fƺ% ePW#)F0F!U*xzqD0F!U"nL B0F"T-GxQL?QR QMr蹴_H8CbUםYԒQJ !yQΤBNh`yO"5םYԒxZ75םYԔΦew<= ΤW8ϣB0GwH+p> 񺙤b湱T *멚IfT/!zCPmF" Φes$L=[= )Px]z}IiCa^*I-(cCILhE A] Cu% hcG dy % hc} EQAwP1'ߌ \ E$)8[=͠DTqCbY^IʡE7[^]y$E-2'`? \(R DU $krgpbz+XފeQPoEwD̴S- =ʱl:X{@SIɟ WxVOWJs]o+Y53\u{D D0F+{ ˎRSLJ`z#Yq܋ij*bB1"yqE4*UrhD FzVsrh^D7GUT+m4{>$Q= ] "GʫyNm7 t De_*AҚʖU]3u *(^+F0G2$5,gH:Ry ˍ$uв`eIFJU]3ux4OCq$ oMWL-YU4ȼ )Te)L )e`IJk*SB)+gr JR/Ck.;RϽ ^\bLД0Fήu&bDQjJsxyކ^rU\x JD'5U)ʞEG~޸H0O%5WLT6JAt De`IJk}5WLTв JRhbz#rAҚ}MUTW'*B5TE4*\S E#GODTk.aĊhU:NEДW!E˪Xq"NS)y$%hވ (]RÉЪurO";` *B5TE4*\SUx@7Pz"(YsyfZašNS(*C (\aրc=ɟx"z#Yq{>TEh= T.U-sQ=ɟx"oCk.pSxBQZ1<q'D'~$Qn3I -q5Ti4(#»8 DTI% hcɠ҆41dx]z҆41 \BJ"ʨ3]"ϡ$QܪWzBd^޸" +pDVaQxRE0D? \hR)&~? \oRL~ )dR꫞u<>I.2DUL@ޚ+╋ ʃg ~eTILtVh*JgjuNlD 颹8XmaİC3\tRrڤ%RLuUHuq3=t2W=2PIBXe$ʗU\W"+s*C8bRAc̪).eTIL-XșeTHq=g\IF2$p`z4~ Q%3Եb"gSTUB).J\mT^FsuTUBi$Q:W*IeB a*]Ussh H8C1,~ U]͑pXUBT(Ѥ!?4ʢ܇R9QZAcCL(ȭblUAcW]!͊K:tUM͟BVpXYBrS\㵴ST`uUU%U\@'5יUTW<+XzL@ ̪+EkOB[@Uϡq,ʤz.i䪹k@RTrgXe!hf5lXe!hf5hfd`f]x,2434 ˮ) CC1$50503 .7 5 Ʋ& 5 Ʋ nņRcY f d&6.DaAtRjcQăSd׀ņRcYfFe56Ll]rxCPk"b L L IŃC2ƣɍQFIURJwFh]y$ʢ [ϡ~1eRPU )Gz H)URKJU2.]p%w&*]~"ďE BnlE)RJE7~" +rWz}^ЮE)J\楓eP(WshBp:īU U:+y FPE2P8Rz(^ȵe5yo>5תrJE7~"`u\zV^y'? LSz}HCa)W)6 ZA%S W]\So!z%(,24(p!!3 EsB@ hP6%]yQ%U\/Ck2$8[=*z^eTHdҪ3#D0F*J=*ez^1 ̪u=BVp=qʨU )z y"uUD]VD(Q$(^^eTIJSܙE Ck2$W=aG4((4OCk2$BQ"o>(»@dEkOshPlJ*W%U\/Ck2r+Xz^(ކ5יRQ:N<!)G̩\*]UsB >̩\SrgށoCk2r-$Swѽbz%(]y+U OrgEQ= ʕLs<&}P`uTET9uAɟy%0= ʕȶeKznPĉ`uTJy'ѽ Dz R꫞AAJ43ʦeKzhQx!y ̪i*Z/C̪i*\oUr=*y'5יT-i/Oz%(]yM"No@L@k2VzdXEkOUɟy"z#]yM"F"2RrڮLȠ)F0F*EkEdW=aG5\AOCk2VzdXJzLȡ ̪iQ=}P0F*EsxJE H^eSHqJn"}̪i*"E\=t2W=2+y$} a*]Us2]84^I.钅H)&Td:"E)} UzaI-(cC(#)WIiCѿL*e%)% hc`U)FZPƆ4hc)W$ hSYLI% hcD2<-]"/Z2ϡU*}$ o4eRɇ2QM͑$>*,Wteo!z(^dS) !z'uE-ʟyo>lҨQL޸$ A%bUXJJN*2 *U,Dk"y ~(o& [!I-(cC1BPCʫU )͟*Fp*9M]*/Cq ]B& $ B (eIT6%]uuEUP]ɡy ϣu(QwСz҆41Tee_ *Wsbi*īBOrgB0F(}`z'?^`VúӮϣ*H8CbUסH0yT]eo!z#]z +W}[0F)*]ɑ<ФHu(TLoCkBa"V-ϼ=  A*Y0Ȟ}8+oF`2 f9\޷Q&rJ$xZqԕ޷JR>RWKJW2-L\"lJ)4/!yq7&Ѽ8]JN*3C~Ȯz->R CbURS/Ck\duj*[,K0F̶JguRf^F`ulUTJLhކ^ȭbJ\'5ץL7&}ѡz#]z["ֲ^|5ט7V"y(^=)"`C~޷aH0|[KJƆ2gQzD!40x\uE%wO&^+I-(cC1A\bH8DlJ~ U\k/CqKeU%w?mtO%wHL޺JϾTqCbU׬u%Sw߉/CkXEO5|`z#lж5W-w6~EPؕu[B+Y\/CkBZŕ)z^)*:R)y'5סm dSLS)xж2)SZuFRD0F-LiX)yh^^)JCyiQte/>Wж2M*Ԭ7FR"z#]zЦEkҲFR(ކ^)DOL."`u[B,UKWte/C5סm dXV΢^5סm dyjsuS2ж2)S:)yކ^)be8:]u]KȑD0F-LJ4qte/" ж2+YJte/ж2+/QIu4)x'5סm d0VBKe5]K%Hކ^)YmM-**2`u[B (QIu4)y$/CkBBW=u]Kʠz#]zЦEY5sUєTж2Pijlj2F0F-L+:ZY5sUєT'5סm dX9^ 5סm dXW=u]KCж2Pijlj2F`u[B.ijlj2+F0F-L(e뮃OG(m jZl(*īB*Z%O!x Q3=#]bx8+o QP\8? JA( QHZUgʞB4Q QȪZUgʞFh]zBګME ЦJkmtP4/CkB`IiP"y^(,[w]l(芞~޷D`%>*9YMwѤ&*@Jz߅Bh.ciq!HLS]~)&~? [#H+o"g ?wRLxz#} lJ)\S!z#]zȹ]ܚƺ)FR4OCkB⫣)xЦJ:BD]zu=t5ɟyh^^2JE*"y^2P^2,]Z!zoCkB*ZkQ=  dP\~ ЦJMZ[Д0F)ꞻ C'5סLra߆>`uS% es=u\"`uS%Jj3" ЦEes=u\_`uS"e5\Q"z#]z2J3#z#]zȮqw*hbz#]zXp{ąhkB%PSH^F'uS!ʊUN!yJ7uS% N;H^FF)TW1̪'<uS%srg*ЦEsrg*GЦJ3D ЦESKUu\5סL[Uɟz$h^2+X3DV`uS!S-sܙ`uS$QJŵ]Khн  dI'T+c=߅ep=  dGwF`D]zLOHu^$/>uZ:G%K$9UABQDQ dw]Eϡ)F0F)ꞑ."COCkB%]Z&Ըϼ!z#]zEJ]^}^2,[] rg}= J]򒗟oCk1̪J7OCkBW&} ЦCʫU )ЦJ[wѡyQ"z#]z\fUD#z#]z-+iD'5סLҶW}'D ЦIi[BѼ"5סL+QwѕWkB*Taɑ<2oCkB*,srdO>UOCkBr.U]*Y0Ȟ|5סLQJ*EK&ܙϕ0F) OCkB(ZSKUw|ЦEjo2š*'5סL-c|B0F)ZÅQ@R5סL5ήB'5o kB)Rd$Z~(^/CkB)\{ĉC{ 2QM͑H8)*ЦY%P@5סL(T(P= CkBdW=gR9T#D0F)JT/z#]z"uܩЦY)H}5סLS]^|5סL)U)W}oA'GЦY)L4/@ ϣuS,)w& Q8^253\.OAO#EЦYKUkOBSGshH8DlJ.Z7^^*U7/Cq eQ@Cjب u W^ M ^}kIԋu&ѽkIԊUJqUB5פCʪ*>0= 3^):]xy'5פJgSUɟx~ mIPؕuW J>5ץ\W`z#]zUkx^F`?/EIPؕuW!D5ץ\9j$OCҮBgP98E/#D0Gsh?*8]zUȪyT"V5qEҮEkOxy h2w"'TI"lJrO`uW"R0= *74/#D]zUnu-C@H^5ץ\UJqUBQ=kGҮE׉h+G~눭$ oU%w^TrY\ 9$\b`V!3|(\SMU"{p CbUפw"jZ' 'C]rOCt;bٖ.W]<t;q)h+F0FyKh[=<= 'C*Z-h}5פw%UVsLܭϕ0F䦺V D0F䦺RrO@R`u:ȴsTZ''8MB+oR$TY4RWz~[] $$%I% hc2ru޷УHLUDUҺjlI)*뭡ZL^]m ԬjTL](ކ5[B+$TJwwУy'5TJw"꧙]w} 7ѽ TTQ= Teu(}5[Jr̮ϕ0FhVdֶn>WqWzCAQmiuu\ب (j5ȭbEo!zF!ĵ\\΢M ȟF]zk̮(`yq5ȥT]KȑD0F% VܪD`uJrO\:ʠx'5צ*Z%Hކ^wr^F' kMr]\+)x^BM hм8^W:cLep= 5ȶH} ^8B*Дz#]zkRɇ7&Db`uJMɟyB0F"UQUw+)y`z#]uQ0qB+.}= 5]Srg~ѽ 52ʫeqrg~Q= 5ȴUMBVD5צ(Zq)4Q5Bu*uT]<"^ 滓>(Q= 59})ϣuEΦzgW4&}Q0GwФ> N]%SsgЕ>*뫜w]} ^\u*>0= 5YK= ų-t,Wrg+F0G䢪nlEPؕu;^^ergކ8j\H6% :\.lIRAır>$5 cEBr.U]6| CbX.oĉ$ o^+I-(cCLq!R(W\RWz+!1O򲴒҆41Sqx\J9+oHLUu|$ eQVP`Z$x]z+)I-(cC1VƗ6|ѮrJE0w^BEG$R;VT(]r9%PY[^~ЭQM͟+ u WW kQM+/?Q]|2ҶeW6F hjIB}/@k,QM߉"+Fƺ% ePK#)F0F!U*wzqD0F!U"nL B0F"T-Gwz~)tUt\H8CbUםYԒQJ~"(^ugRJE'4]EȢuVu$]/z#]y՝ILfX]w~O?OCk:;н ] Ifk%i*멚If4/!zCPmDTD`uS2ZVȦjހE %~(p! W R꫞QUw6 JASEU\rgB0F*]UsUC 0Gw H0 O׮$11Aw RKJ&\#I-(cCO4)pBE$Ͽ$)8[=͠ AU f]y$S*`y ˯$&D0= ]R ,{A $?s]н:&WwS- 0= q܋ [= 3\mE hކ^{>D0FTyUɟyh^]eKgU\+`eHJ53A'5YRܕ-j%Urgހ˨Q7&}"`erWD7 ˎRSLJ`z#Yq܋ij*bB1"yqE4*UrhD FzVsrh^D7GUT+m4{>$Q= ]JAzS@AT!̹kRH:SYRʫyNeWAҕ^+F0G2$5,gH:RC ^\oy$^E/C˩֕,g"F4OCqR$ oMWL-YUZBd^Ъsunm(rY-$)M 7\Suo$+o0`ejT\ ˝,Q=ɟz]b΢= H5U-UTo">`eW%UMw"E˪yT^/" ϣ? \ /Jj:7m$? 9K f\$tSUt)ѼO *41= ̹kI MoSyjH:RC ^\oy$^E/C˩־yN{h蹺7Ox#byNmIeo<De_IJk*YUt)tm`e_IJk}5WLTAҕ^B0G2$5ıMU^I-(cCPMe)% hc} (ɠ$ eh&»2QU@1J\O&}w)UTUBd^޸ $>w xU E0Ag&TErO$,2eKzFCcL$ʗU\B$} a*]Us2\d/E2$8su*$>ʨ&UDRՊꞋ7\4Ph"R꫞diE#Cj'7\q!|M5T(e^Hu2U\M)GBb%RLuUM͠} ı)W=w6)+H8CQ,~*LSsdhKeQ@Cjب D!UVD6*FpX.Hqsb5kN]%SsgЕ$!?P8m%SsgЕ!? UQsg"H8CQ,~GB*>RRpXãunl4ij% tUt\򢔃5i[2ëĐpXVS!UsgFpX!4,螫>Trg506.C1c#ۡxj`l]!4ƣغCCS ŃC2ƣغCCS M.@֊3a6~$?qtbC1c#ۡxj`l] f54hf]wH,1 M$- C[غ@1aji 43/G҆41dK\NU͟)H8D W^R꫞\ SIU% .L0FM"NFuEв+.S>49\#z#]z{V!`uEkVD\5תiQ<(!z y0"?#,2eKzhQz!3̪*Z繴 d03&20-  !@Xgx^,2aT`uUU%U\ OCk2y:VD\5יUTW<(^/AT>QoL%TW<IU24+\NU*8@hCV.[shaH8s W^eGLuUM /!z#]yHqJdE)`z#]yHSL/#DJQƺ*8jTL^}'5יQĕW-5["Պ8%/@R75יQĊeT`zdZU C̨E2To,ÙUD))z!z#]yIU"Պ8%/ATCk2U=2-Xu=)FDJQƺ*8ZQ=W&}Pĉ`uTq"RS=KS4\"}̨EkO% *^DO>Qʎ$VDU\U)+xT>QʕȶeKznz#8KJ  W=t(p>!30,2\{@ A%S W]\So!z%(d^Xe" R9/D bUיReKzhQx y ̩\ȮS4/C!)G̩\B'}^eJJÅo@$O@k2s$MFȠ̩\Ur=Pz#]y+:VD\AOCk2s"'^/"/>Qʕ\(JxH} ]y+uB#D8Q0G9+hʒ_T)Aĕ޴q$FU*Y0U )S)6򔃇*ī$U"S^5תuBz'u䒪[*}Ȣu䒪U <FIUR-D򷟂'BcWI-(cCThʼTu޷D/ W$S%wR?/+U )Bp*$Sw)y ~*]BG%wФ&*r-YMrWz}>ÚL9Bd]͠BVp:īU U:*y FPE2P88]zW"Քx}Ѽ8^*z^ ge~y(JʡE7I JNbH8a*뫔{/@qRP%I Jt\(NL4ŦÃBx5 ̌ .Ɔdׁqc+z=ņR+%)Ba*̪*ZB0F*JÅ(ކ5יU*Y4L= ʨuJf Shކ^eTHbQxy"z#]yQ$ʗU\Т@н ʨ\S1<\@k2$BoP<F*If+Xz^(/Ck2$bL"5יU+e#^=$h^eTI*!zEh} (QGwH0 N9a(lJ*W%U\^^eJVD(Q= Ck2r+XurOx FuTI.ED`uTEt)3@R75יRMTU\U )ނ1=qʕp 3"(^eJyUHu9Ԋi{>(`B0F*W"*nϼ^eJ[2W=7DPĉ`uTJy'ѽ Dz R꫞@AJ43ʦeKzhQx y ̪i*Z5יTTު{h^eSH8Oz%(]yM"N=0=qʦZybQ=W&}P@`uU4LqJj3"̪i:7)\)rgEQ= ʦZyb*3"/Ck2VD ȡ)`uU4(bD0F*CV.[xQ<ކ^eSIUtH^DOCkr/L$ʗU\ȮS%RLuUHutPƸ)]2LuUL(GЖI2W=#!#?^Q$>YJ҆41E"^KJƎZPƆ21+U)$ hߍ_YJ$҆41*_YIJIiCC"^i% hcDh-]"/Z8R>WZIiC߆2h<ʥeP#)H8}CbUתYNʞBQRȦSG=kT(nѼGJE2Wz$Ow6~'.*U,DUJqU5XJmt(B0G*XJ[Ei CjK^B^ʊB׭KJ dп)rBjGsgʑ$"lJdSE5Wwʑ`? [H.]rWzʒEa $Đʎ(PblVRqCbU[='TUU ܚ8\+`z#VVZPƆ7*qBtحA`*ЭuSܙ  *Y[O~Ф.t6}JA A3ʢ*y ФI\*ʞ5סH0TLh^ CGjWrdOz#]z RmW&}`uR $Rɇ7&Dн l2J$.TY4RWz)!4^u%wR>S[(RKJW8|2LQsgEPؕu Srh^B]yu nM ϣyqRUrgކ8T)\[]W6}IHRUtp`ulNEKe{`z#]z[%3:lOtp2BUܙѽ s-Z83?OCkJnLϣB0F̶EKy)ep= }[@h]zL| E8+o`(UzDTZPƆ41?1$& Ph ZBh`U~҆414͟A%bUP8<`uZ[]7} u.y+QT޷*HLu<޷FtN:U͟| *īXJヘ/CkXEO5|`z#lж5W-w6~EPؕu[B+Y\  hS%kTr`u[B+XU*8^F`u[B)xж2)SZuG ж2)S:bF`u[B7G ϕ0F-LJ+) E"z#]zЦEkҲG z#]zЦEu=38^(^)RɥTuwG `u[B(bճ8^5סm dyjsuS8^$OCkBȦNW\.>`u[B)SU$Q=  hS$ҫM2]/" ж2+YJtpRCkB`E%ҲQ"z#]zЦCi(VSUIR75סm d0V[ESKJ`u[B (QIu4h  hS% M\tp5סm dXW=u]/!D0F-L+:Z[,ÚF0F-L+:ZY5sUR8^)bΦ0櫣萡z#]zЦE:ZY5sUP0F-L+7Z[,ÚF`u[B.ijlj8^ж2(+WO#E~d)kH8~ dk𔼅Ⲹ#\f(]zgzGSx8+o} QxP\8? )lJ)E"jcUOw)y F)G"jcUOw)y'uS% jZ[]7}?OCkB(ZEw>н  Q%Cϕ0F)F dT`r۾뭑Z}Kz#»$iJVS]}I .u޷!4^I1̴޲Wz~$I»i'*%iCbUסL:м`uS"tWrh^GЦC]/#D0F)JN*8^+F0F)м<8^2O]4Mrg}5סLQJ*P<\CkB(WEw}򷠁ЦEZ@R`uS%UMw~^(^2(X{K`uS% &U߀J`z#]zLO]߀bD0F)7T,8'ѽ  dlg>$Q=  dziYMW&}Q!z#]zȱlg>K=  dY=4>J$OCkB&XUP]W&}⒤oCkB;O OCkB+rF F)U )U:D4Q=kBTRuw*e(ފ5סL+Q8Q<'uS"jcUOw)yT#EЦJ ÊϼU 75סL ÊϼT'5סLM-Urgމ 5סL3E CkB( )X>H=  dVm++YrgވЦCyW(Z3ЦIiZj8^+F`uS% M):]T0O>5סLTQUʢy(kB9*\q!ʪUϡEF)qw}7BR`uS%3=#]EO>(^2JL9qɟyB0F)/0=  dX+ϼ"z#]u0z#]yeWwQ<z#]z*3?H^^2.U]QMW|CkB+m)D`uS%rWЦIi[L]h^}^2KJg]p<$H^^2KJ]]F@0Fe1 dZPy#]zRnLѕz#]ztUtHdÛ"y"z#]zrRɇ7&DHн  dBUQUr*Y0Ȟ|5סL(UEU(^~(=  dj:M-Ueo?J75סL-eCTOCkB[!KnT/>W5סLV-ϕ0FQ d:\%PO>W'5סL'gQ!kB75סL;S,ܩB'5׮UȮzSwʢz߁ Qƺ)浃(z#\fOƺ)b*JJYw}!B0F)ʧP=(`z#dЦU )4I0T6%]z$Sr/!z#]z"BnT`z#]z":ʐЦY(ROV`uS,r~^2Mt OUw*Dн  eW ϕ0F)E*8ノ D]z%3]w&!yq ee4PнJ7GЦY&ykE|"h]z"jr=|J`y(.mKīIsxy tESʦB82w!ԵnlTTp:īIԆ&/>5פEU:@ފ5פE*8Q='u:rQ[0F$1'RRt!y'5פJgSUɟx~ m4lJhMɟy ҮC+ 0FB4OCq}͢)H8~ īJ g/!z#]zU3`z#]zUZl3z#㹴HpؕqE1*UWqWzB 0miuu\ب (j5ȭbEO!zF!ĵ\ ĉ`uJgQESWA&Oyq5LfW]м}kMr)U)WG ȑD0F% VܩD`uJr)~5צ'Vu-C!x'5צ*ZJ 5Io OC^8 XW pD0F% Orh^+Fƺ-5XOrg++`uEe`uC*/>\L92'COCkMrPnLϿ5צ.Z\/>LCkb&(VeB߉\u=7&}}\,&XM&}E\N]ET%O?H^~]zk誛!h]zkU0= +PϢDp,~hW!UsgJR6%GFh6% tUt\򢔃5 c % hc|2Uz߈$ e1EPV!1O򲤒҆41Sh.]% }޷$&*VRZPƆ2+Er(W\0I]|x]z+$ p\4o>pؕu#U ) W ^~]uB_Gw^BEG$S+*y qU )hRGPؕqoƺ*BE~޷+H0~$~A,:LICPؕuJܤ/@k,QMߊDVѡuJʡE7~(^J75זi*T([#'5זi*,srdO@U5זi*j;V `y"?^ /:*?4T6%]y՝I*Yw*y ȢuVu$RsE߈Q<(^ugRK5ߊ'ѽ Τu3,\ ?OCk:;Vн ]|$I»YZAqxLTMs\ؤ qT6%]u3I,)/AHc]uj-^( fW=rKJ]++zz#(R JQzBA$^2,2eKzdUEU0E1*\tXuUMW&}/Ck2W=5^/ CqWz2I~=1|8BpP>bZ/=4YË>5Q9ずܙ/C˛T:@h)~]RÅ4*\S ^)*FEHQFHSyWH^ (]RÉЪurO$*+!E˪Xq"NS@R!E˪Xq"NSEx )zJz"(YuK$SBu<7"BV芐e,8M W)#SHPRQ)T:BK)B芐erj hU:NT1=RQÁ{>TEo0F9GcZ&}⨊"z#Yz:\Z3X{>TEeHކ\3\@⢴(byIL(]uK/O>J$O>H\ gQĒ[9ぐji2$ qC4޸I-(cCQM׮q$1dxWz*BJ(#*%w>»S?r3]뀪ȼ+p>wiT" »QRE$࢙I.\S#K R꫞$PxcL$ʗU\B$} a*]Us2\dfUDUu*$>ʨ&UDRՊꞋ@EsUw|STUBFʗU\s%SMU .6OqąU4Ph $'S*U1̴޸HLS#2kϤ d03&20-  !@Xgx^,2a~뀥$ eqA,Q:'shƅR d 1iqƦCY Ɔ&20ŷ}дBSQhfH3^cB) MFid,2 FƦдBSQb ƅieDhZ\e!q@1lfƣ$Ņ)xf4-.2hk"ccdŅ 1iqƦCY K2L`d\[rcB) MF Kaq$EŷдBSQRh\m 1qm K.555. $&02.-^ K.555 KMn ƅR d03&20-<3H\jj453L["cPkwxf4-.2hk Լg!j` K'cB) MF Kr&3645˾RhZ\e!qCRᩀ-.j^3 K.55-Ըj4 MK nS1iqƦCY4Ų@hZ\e!q@1le|дBSQb TLA]S]$VI3Zci ) |/YuBJ\(CuJ\(xr-YMrWz*I ?qu +h&T+U )։cB%PCA*īTQM>8֊҆41G >Ta̪S% m lJPES0]zW"NT^ODQT+jk%O>ƺPIT(0= T+JˢhF8bl-AOU͑iMBj] LɍRSWD~^HKJJ8ɠ/Z(KJS4 FJYJп})}$ odxeP*e2OsdEIU W^I*ES0]zLT*/ 'z(^I*E~yo"5גJUT+Jy(^I*E/<C{%F 랕2W!)G4QLUx_z y"uIf+Xz\D 4U=ɟzP0FM" R9EɟzH= I*UHy0E~(pHQzaHQzQ$S1S1HcE)+H(UzѾZPƆ4pMZ8KJV2h=֎҆41RU^hKJe%^FRZPƆ4Q{4҆41FRU^eI% hcGIWzĒZPƆ8)*UFVZPƆ8W IiCGIWYS% hc~(JUzʠI-(cCQxBZPƆ8RUT$ pFRUTRZPƆ8FRUT$ oIWYQRIiC2^KJ\e%^*eEi% hce%^*q!I-(cCqxIiC~2^I-(cCPM׮$I% hc} 1AmTR>(q#H"Qz+HQzHE+)H9&}^I?/YYRE$̪CV\$'-s6RpuIҘ*\dSLC'U%tʮR U UT(kIO5Zm*q3K2crO$#ID`S,Y:T\dLhS4Uu0{IBT&LCkU )AԲa̪S% D`S,Y:T\dL%PZ*UW-kA,Q:'q3FtD꤭bdd:~)u4A/O\WLUI i(ș *c&9IZ&9u.7>S8zjIF\dLITMq3eRUBdW2k"g_2+:mKZAL*\oUr=E~(k_Dʤ:mKZA#UZyҪ]=WxYRz> fU"gRkIEs*J2º\m/3*]Us!̕M5T((|/Q9 iE3U-U1̪'QpЙi$Q:W*Ie!!1O 繳f% a7YH>pbX/,2\ЦЕ$!? VD6FTpbXI2W=76FVpbXCV.[sgСH8C1,~IBʤ]Tȹ] %Ush>pbX/YUt)͠) ı)gZ!? R꫞^R?IUB։!32,2+\Sإ īSTBR5j/$W$Xe%TW:N1̪JyBh8I'&~R L 450hf]t/H506.CCScQxAt KeG)Hl\jl`qtOG㉕IU!W-ZIɟaSb4ņ!cC2xAtbBd5H506.3LXbH5 w2kϡI93,2`f6Ld`[t/ d&20- d M/ņCY FXd55313;xk hj/ dito d2.L603 .TaC9Quxk!1oG% hcɟMR)&}@֊3a6}Iɟغ@1aji!1mм506.3LXbHf43. L c!xj`l] f54jW<в+zlJIɟغCCS Ɍ nᩁt .Sb L$ S/Sb L$6.560Lj8' hy 'TϢH8D W^R꫞\ SIU% .L0FM"NS=qSHSEa)z"z#]zY+o@R75תi*ZOA^VEkOUɟz!z#]zZBAT>QYRA趋Ζ(TJjQƅR d 1iqƦCY Ɔ&20ŷ}дBSQhfH3^cB) MFid,2 FƦдBSQb ƅieDhZ\e!q@1lfƣ$Ņ)xf4-.2hk"ccdŅ 1iqƦCY K2L`d\[rcB) MF Kaq$EŷдBSQRh\m 1qm K.555. $&02.-^ K.555 KMn ƅR d03&20-<3H\jj453L["cPkwxf4-.2hk Լg!j` K'cB) MF Kr&3645˾RhZ\e!qCRᩀ-.j^3 K.55-Ըj4 MK nS1iqƦCY4Ų@hZ\e!q@1le|дBSQb VVKQ){&RUEsO0ؕuUU$ʗU\Т`uUU% .`z#]yUEsȮSR4O@k2yBh8O@$OCk2y rmށoCk2y*Z^1= ʪVZrgނH^^eUQ\+XzUwz y0"p.Sy$$*,2+dhXV5,R kr=tU$ERUEs ƴW5W=r+{= @kzEɟz߁`u\ gS>!)G뫞%o "OCkz䪹k<oCkzVZrgEQ= ZB"/>QZUr=WaD5W=r)Ap`?^Da ޷FKQZE0EK W=aG76􃈐lJ*W=rLuUM / ^^eJErOx z J8^eJJ^^z#]y++r}'BR5יRZ"y"z#]y+*Z^EJ75יRZkOUɟyD0F*W=r+Xy(QU}P5יRZUr=WQ"y0"uTzS) T8Q0F)KT>Esr24,z,RW\]2+$} a7YHdiY:W~$qQy$$} a7YHd:PXe%U\>)(SB ZBgTXe"'ED!3RP\SL6%]urOrqjeJZ$I |/YuBJZ"{W[*HLUȵe5]EDE^ Wz_HMW$S%w/cB%P"+H8EPؕuU )L!z#ܽe014H8dÙT(J lJPES$O!z(^ȦSDROEBѼ8^*[0FP@c=+.S <qJʡE7DP{IiCc&ܡ]hI])!4/_zJKJFMjY0U )S)6))H8~lJIUR*]"y FU"NT]K=k$U"T?ro>QFIURJw)hF5גJl I[ϡ~1qa)BQ޴hR+zT4NU͑p4(jIUr=*y 4 g/ CkD*Y4L= IBLOB>Z75עiQ= .L4*]UsB>н HSTp=qI*UWE@UkDK5tZТϽ$(^^bL"5עiXn .L"F`uIT(zGrDV…qU A8|Sz*FKQ֎Q HzSshJF bUיUU\xby ̪+x_z^eTHdҪ3#D0F*J=*ez^ѽ ʨZТ萼= ʨeKzhQx^}5יU+{}z%(]yQ$SrOAT?QʨYu<(D!B0F*JV*Ͻ(`z#]yQ" R9E#D0F*IT(ѡzEh} (QF)KTDXe"HбF 랕2~(o [Q$>Uo[!H(M|"У7)~)o*H(Q("`uTJgTSH3"/Ck2r(̆.Lȡ)`uTE*]Usr/"$OCk2rPѼކ7IjB)Q8аb,RA\)DF N;B)Q8ʋ5M鞺dVDHTXe"'Q~)o‘KQ[~޷ xZE/Go[Rq >~)oRqT"У7ei~)oFKQ4I>~)o"У7hR)} 8+o$>So[1$RqR"У7)&}DSYX-s6R깳"I935.`f6Ld`[w5.43203. d FFeDp@h ƥYHj`j`f]o d5.2.L503 /  d.55'K $.5556Ll]wRᬃC3#2ŃC2ƣɍJ7K ̌ ˤ4..5jlغ/pDŀ KeG M]0"xԸk"b L L I d&6.QDpCR"S0Aq`̵1AcbBVRᬆEɆaƲ M^'xԸk!pBSQRjcQăSd}1"xԸk!qAq`̵1AcbR85. d&6.L'Kc4iBŃC2ƣɍQ#z?#oTZPƆ2ߍx_z߁IiC_~2g/oRZPƆ8_lR9TLH6R깳Brg`f6Ld`[ 1ji!qt/ ̌ ˤ^4Hf4-. ̌ ˤ F&&02 ̋3^fFeS0Bf 4/ C3#2Hf4-.$FCAqI LÉ ƅ)xdh6.55]i d2203.SebYI4ņ7c# 1aI BY LÉ ƅ+z=Rr 'TA"1T6%]sR꫞\ Rr(Qrgކ58ErOrz%(]sZU~^H\i*Zk\EQ0qw*F0FHUJEQ0qw CM"U*7a̋V*` @ M%TW("`uU4LUUɟy0!z#]yM"'R7BS̪i]F(bD0F*CV.[wо$Oz#]yM%TW=B$Hz#\ ZТj'#K R꫞} oB@t`D$} a*]Us2kr=t2W=2H)&TdhU\Y:W}\ ޙCV.[$,2eKzFT>4bNU߀5M鞺d8b*%RLuUH!+-uJ(c\ ުS<\ETU\>I.PhXҕY:W}TkrZg╋#K R꫞ )XlUwƸ)Kd8b*%RLuUHuw_p.SzgQ<>I.PhVfDNU)E\]2+XyQUrH)&TdhhVfDNQ|(7"'UW$,2eKzFTQI.4QoUk)J=*eyQUrH)&TeAc=*ey 'TkrZguJfIBXe$ʗU\6|бF 랕2]sҦYuJ(Eqnq(W\iUEU#K R꫞kr=tȮz%RLuUHʃHB*Ƹ)3LETU\>I.Dg=rNQ~"7"UW$,2eKzFTDg=rNU+~5Me3Ȯz%RLuUHʃBȌB*pƸ)KdW=r*%RLuUHuwc\ ޙJy$} a*]Us2ЬkEsY:W|(7z钪+ETU\>I.hy 'Tҋ7%TW<$} a*]Us2аkEsY:W (7%TW<>I.PhXV5,Rkr\tJyQUrH)&Td:bp.I5rH)&Td:PƸ((IBXe$ʗU\W7IjGЖI2W=##B,TB*p.SE 8.D>I.x*p.SE zT禅H)&TeE|8Sz߆$_B? [C$) \{B))Xm͟B '6%]yI2W=4(/!z#]yHqJdE߅ 0F*8\S_y'BR5יQċV*` >̨J-jTL]azʑ ʎ$S*KS"Պ8!`uTq"U*7a̋V*` @ ̨JyUD߆5יQċUDĊ:‰!BuTq"R+XzLȡ̨Ekz.i3"D75יQĊ(JUwy$Q<F*8ZUr=W~Q@`E̩\fTH^F\]2Rr$CV.Z24}iJd,R Qo$$HqJFF )XlUw!p.$$ERRrѐC~޸RLĉ"gE+)HQzѤRL~޷‘I3"У»>޷߁"У7R)} 8+oVI3~)o"У7H)} 8SzEE/Go[(R)&}Sz)"У7i~)oRq_B?޷‘I32_B?޷đKQT ~)o$Rq>~)o E/Go[$RqV"У7)} 8Sz+DI3Z4_B?޸H(M )~)p!)H(M RE$Ͽa*]Us"*EILJ*]UsUɟy ̩uUMW*`z#\ M\>RXe$ʗU\ȪQxƸ((I),2eKzdUEUW7]*HIa*]Us"*d:H\ ZpMB$|I.UV2pƸ)(ZrHIa*]Us"*eEc\ ZТj'#%RLuULܭkrЦ+Q8I),2eKzdUEU37zeKzd)&TETUXʃG,TB*J\ ޙI.UW$I2W=2*FXuULTiE~7$ʗU\#%RLuULXuULUw)p.SyT(HIa*]Us"*eE~(7Q:Q$I2W=2*T]\ B㥳P$|I.UV2]Ƹ)3L\I),2eKzdUEU6|!+-uJƸ)3L\ETU\>RXe$ʗU\ȪPhhҕY:F]PƸ)Uy)Xl$|I.UV2б!+-uJƸ)Uy)Xl>RXe$ʗU\ȪPlcCJV.[!d]QF)Kd8b*)&TETUXʋR5M鞺dVDHIa*]Us"*eAfkO!d]#\ ޙEkO"*I),2eKzdUEU44+3Xy 'TҋR5Me3ȭbUEU#%RLuULfkO!d?wJ\ ުS<(I),2eKzdUEU6|аb,R7Pl(ETU\>RXe$ʗU\ȪQw\V]sҦYUW$I2W=2*T>hX#uJfB*6~)p.SzYLPS,#%RLuULp>hX#uJfB*p.Szg(W\i)&TETUXʃ84}LO!d]#\ ޙJ=*eyQUrHIa*]Us"*eA憏0W\i,RJ.QTkr\tJ=*eyQUrHIa*]Us"*eE߉7z\#%RLuULϚDg=rNUߊ7z\ȪGK R꫞QUc* "3 'TҋTkrZg\ȪGK R꫞QUc* "3 'TV5Me3Ȯz)&TETUXʃg "3 'T\-\ȪGK R꫞QUc*.Z(7z钪+I),2eKzdUEU6|ЬkEsY:W|kr=tU"*I),2eKzdUEU44+\NQ 7%TW<$|I.UV2аkEsY:F0Ƹ)Uy*)&TETUXʃg ƴW0= ̺I]y'F8.o>ZPƆ4h&H0&H9&7HߏR Qz}A8Qz D0F+{ `er)U)W&D%0= E5P]ɡz<8\w"*4"BYq܁ +94/"}ϣe媪ȶR=ɟy(RVa'=YUt)͠) KO̹kRH:SYRʫyNeWAҕ7ѽ ̹k MeK*:`eAѺhYU)+z]MtneUTW'*B5TE4*\S '*B5TE4*\SȊBT%0EHQFHSy o%O"D!E˪Xq"NSGx!*xz"(YuK$SBuZPƆ2WI-(cC"FU}(RKJ QHKJƍ p#*JIiC2h» iWo\0RLRE$Ͽw"H0޸`+H `+M)&}+pA0 0RLWzE1u҆41 dyK&ʡE76ilJK"'kT)AFK"kT}#» 1$ ? \0C ^޸a)HQzDA4޸Q@a 'SzD"]$aG (R)\~޸QS\~޸Q$» $iG "R e^(p>)p"~?޸J`HߏꮙH24вk}I%Ol$ ^KTIU24,+\NUOI5rH)ZN2&}VsEW[> $j W)!DϿh`)$$*,2+d:șI&IBXe" R92&}i$$EsB"gI$W$Xe"'W)!DϿh`})$$*,2ZW>Y$$}a*]UsҮSCUO*-+ETU\>I.2&} K 8.D>I.q>(\tJyQUrHIa*]Us"*eEDϿtʗU\B'YLUEs#K R꫞cZ+B*(-璅j'lO5V䪊GK R꫞QUc* 4,+\NUOGI)j䐨Jq"ge3U"*IBXe$ʗU\4,+\NUOGZ*؟AU"*_+e3U"*I),2eKzdUEU4,+\NQ>鞺dB)*FcZ+B*(QUu{]2UEsȪGЖI2W=##CB!dQqQWUU U:+}^UL%TW<$|I.UV2ЬkEsY:F\d~0z钪+IBXe$ʗU\4+\NUOG=tU$I2W=2*T>hV5,RB:KdW=r*%RLuUHuq3*KdW=r*)&TETUXʋEsr24,z,RVW=rH)&TeAdFs!d\d~\+Q8bߪ"GK R꫞QUc* 4,z,RB $PGЖHzuFC*e3ȮzUEU#K R꫞\UqQXqԊ箫 \Zg\ȪGK R꫞QUc* "3 'TBEs$,2\)"3 'T'Уg\$} a*]Us244z,RJ.2} ?+@qԊ箫}^SL"UW$I2W=2*TDg=rNQ>=tȮz%RLuUHʃHB*(Es$I2W=2*T>iY:W>J-uJfETU\>I.2&} ꮙ([wʟu BLO"*I),2eKzdUEUșg(W\i")] FF0W\i,RB=*e{|J=*eyQUrHTXe"'>]sҦYuJ((=*ez򨼍Z(W\iE)d]sҦYUW$,2eKzFT>]sҦYuJ((-VDPD㻭-z钅uJfETU\>RXe$ʗU\ȪPl=*ey 'TҋBߦz钅uJfI VD* D`S,Y:W>ЮS,B'J=*ey$} a*]Us2G+zT4NUOG)d]sҦYGK R꫞QUc* |F 랕2]sҦYuJ2} ?+zT4Ze3BLO$,2eKzFT>hX#uJfB*(ZguJfI),2eKzdUEU3B+zT4NUOGHMsW$HzR2\dLUy(W\iUEU!Qa(dhX#uJfB*'УuJfETU]֣)Z(W\i؟UUk)J=*eyQUrH)&TeAc=*ey 'TB˪e3BLO"*I),2eKzdUEU6|бF 랕2I.PhXVfDNUOGZQ=W[Q<*)e3ȭbUEU#%RLuULfkO!d?qQEkO$ER+XqYY:W>Q=־SL"'UW$,2eKzFFfkO!dQqQVbJ-VEkOU־/*zZȪGK R꫞QUc* (B*4'У3L(IBXe$ʗU\4+3Xy 'T'У鞺dVDHIa*]Us"*eAfkO!d\d~/Pl\ETU\>I.2&}(\tCV.["*I),2eKzdUEUș1IjH 8b#BІ\B*JQY]k_╋kYLRr$} a*]Us2б!+-uJ2} ?p╋B'Uy)Xl>RXe$ʗU\ȪPlcCJV.[!d\d~I5rIa\d:șUy)Xl$} a*]Us2б!+-uJ2} ? U:╋u?RrQUwZ(>:YLRrQUrHIa*]Us"*eAcCJV.[!d?qQeL!+-H 8b#GІ\B*(+8bZz*g)Xl$} a*]Us244}iJd,RJ.2} ?RrڮHk8b]k=tqJdUEU#%RLuUL )XlTiEOG]2Rr$} a*]Us2!+-uJ2} ?EL!+-GK R꫞QUc* 4}iJd,RB:KfERHIa*]Us"*d:șIT̩uUM $%RLuUHʋTNjI#%RLuUL?lʗU\BvU &D>RXe$ʗU\ȪQq3I$I#K R꫞c*]Us!d\e &T_|⪵$ʗU\#%RLuULXuULUqQg&TIBXe$ʗU\R꫞ 'T'УeKznJg&TETU\>RXe$ʗU\Ȫ?bW=2NQ>*]UsUWZ\qԓ*]UsU־/GL$ʗU\#%RLuULXuULUqQ4(ZrHTXe"'Qq3*]sҦY[ SBw$,2eKzFT?q3)VDPbhSBw$I2W=2*TD&VD(ZrH)&TeEDdbQт)&TETUXʃg2&Qт)&TETUXʋZpMB$|I.UV2"gI&IBXe$ʗU\W>I"%RLuUHuq3IW$I2W=2*C]$I2W=2*ClM\>RXe$ʗU\ȪQq3ZI.b5M5T(aE2W=2TUBNnB*jQq*]UseEU4i$Q:W*IeI |I2W=76++H8C1,{C#'U$ҲlIɟhZ\e!qAм3H\jj45hm!c#Z\[w K.55 Fa1iqxf4-.2hk fB jl\j`[x^ K.55-hZ\ff]tO ƅR d `fl\j2LX\`[rcB) MF&66LX_ 1qmѼ3H\jj451a|$Eŷ*xf4-.2hk ԼfH2L`d\[x K.555. ܭдBSQRAc"۾дBSQQԸhZ\e!qAxC1c#ۿ1iqƦCY4Ų&5 ~cB) MF Kr xf4-.2hk Լg!bc3iCQ,/ ƅR d5.;дBSQb K@԰<3H\jj453L[ hj4 M nO ƅR d f\l`[w K.55-j`l\`[xF\ TzlTrg5l^6Ld`[w^a<55313;@1auF@&FᬆrRO d4505^oG5\n5Zm*shNLƣYS31,3O FcSduFk 0fd]x`xj5hkthd5.,KOG),TB*4HI2W=4(3!z#]y{= Ck4Tު{4OCk4-i.ѽqHS|BR5ךi:7)ZrgE^iVzdXCV.[Uɟy(ކ^iVzdXEssUɟyD0FM"F"2UEsrgE ^ L(B*I(lJ撪{<`u"'Eɟz]\+XurOwм!)G뫚I.Eɟz"z#]usHqѼȱL+zT4\|뫚EUW:Bn O@kiPT&}PE뫚JgTSH3"/CkiQPCu&}P0GwI>~16 UK$iMBj] LɍRSWD~*pDZPƆ8_rVZPƆ8_39e) B$̸C1c#ۡx̸x̸x̸Bfj`[x^d*3 'T#H8 īzR꫞\ \S/C!)G뫞(Qrgށz#]us%a}'BR5W=rK]tA'5W=rU\r@R`u\+XzLȠ'5W=r+Xy(QUP5W=r+Xy*ZS $O>QLT*/ Ž'8+pHfԱu3NhU Tzm ZIɟ1lSdƦC#м43203.hg!xf]!д43203.hf205Hl32.hZ]xHL I LƦjl`43hd`X8/ ̌ ˤLde!дktO  Ʋ $450$3\c#!ظ@j`fHZfitofaA̺O d&22 'I4ņ2 $/0 ˍd450$3\Bq,]LӍkJt\?sRᬆcdF}RᬃC3#2pAdd`f]tO d LLƀ(bD0FHbEHF`EM"'{}HFHqԔR=W&}hz#]sz.iE@4Eh}1"u&꒪{ $/>GwZE$ϿQLO!d\إѡCPؕuJT5עi+x 5עi,UW&}h^]sҦYEɟx4(&}`uI.Eɟyh^^W)} ϕJQƺM$S=U\(^jO"'EɟzHP IJSܙE CkD+e#\D4QLT="o>(»T"gߏ\SBh깱QRIɟغCCS Ɍ nᩁt .Sb L$ S/Sb L$6.560Lj8'Z+@Y+ت$?qtbC1c#ۡxj`l] f54hf]wH,1 M$- C[غ@1aji 43/G\NU͊"~ īTLuUM .L^^璅&}`z#]z\S/#DJQƺM"hYM**z"z#]zY+ܪ'|4W-sܩ C4Hb3A$/CkT+Xy(QU *8+q"HE눥"gEE$]눩"gߏ E$VRZPƆ8^i% hc+E4^҆411AI.E} y2kϡ}$ܰk!1mмXd5lXd554 d-;a@h !b딼Xd5faѼXd5ȹ04SņCY F׉!4ƣņRU\zCGп㹕U%KZ繳aI93,2d LLƀ^,2d LƦɃ3"ak 0fd]x,2d.55 Y Kc#,2d3HX43qm^ a.7kG}} 4҆41R2h=)Q:NJR )*lJ:FBR8I.W)6} RA%S W]\S(BJQņR+Xz^Е&$1&tʤY+OH506.3LXbHf43. H,1 M$- C[aSb4ņ!P=2*[M )ϢBrgXe غCCS ƆeBaSb L$4505] Hhja ԸhfZqx,2j`l]!Ʀ GD~aQ\:VqITbUW)} 7qqaQ\(oBgK 繳$"~ ī2y&T禅}  ʪE߆'`uUU"N𕼍!)G̪+Eв+.$/@$OCk2y rmD>T`uUU%U\} A^eUQ\+\tb3A$/Ck2yQ= *@@`E~޷@`%^(o d fU%3Աu3O%U\\aI93,243`f6Ld`[w,24343203.Hjd FFeDaDŀ}ņRcY K L KņRcY MFF) CC13I MF M]"xCPk ̺Aq`̵1AcbR) CC1C3#2 d&6.KW!)G̪%P'(^eTI,:EkOB!B0F*JV*Ͻ(`z#]yQ" R9E|#D0F*IT(}"+FaB8+oT`,2Z1$lJ*W%U\} !z#]y+ZТ+z^eJVD:)y'BR5יR&T禅} }'5יRЦϽHކ^eJ[=5QUsIT(F!uTCT(U=ɟyD0F*W%3ʪCΤSLܙC5יRQPCu&}P0F*W"ٕ.y1"z#]y+7}"}~޷߉ 1l R꫞C1*̪i&T禅}  ʦ{`uU4.7kD4OCk2[MR]%/z%(]yM"NJ J8^eSHqѼȱL(>( D0F*EkEd8b\@R`uU4LȮzuj3"(^eSHqѼȱLQ\\C5יT+X{O"5יT+7C'5יTRrۿ 7"}̪i*(DOCqWzE AE}4gQzDRK"E| E/L /xRE/J$_򒔊_io[%I>~(o)~?^ѾK_pR~(oFs ^(o)HQzGE/2_)o[ORLU AK(o@KTRKT"E|"M|$I~?^BrT򢴊_HQzߊ_$R~)oRI3Q$RLIa*]Us"*q$E1*\tXuUMW&}/Ck2W=5]P CkrZgeKzd)&TETUXʃB,TB*c\ ޙI.GK R꫞QUc* R꫞ 'T+p.Szg&TETU\>RXe$ʗU\Ȫ?bW=2NQ| krZgZ#%RLuULϚQRXe$ʗU\ȪPhhVfDNQ|kr\tEkO"*I),2eKzdUEU%QoUk)Es$I2W=2*T>hYY:W|(7"UW$I2W=2*TDg=rNQ}oL"GK R꫞QUc* 4z,R7z\ȪGK R꫞QUc* "3 'Tҋ7PlETU\>RXe$ʗU\ȪQwѢp.SzYLRr$|I.UV2BІ\B*c\ ުS<\ETU\>RXe$ʗU\ȪPhXҕY:FqF)3L\I),2eKzdUEU6|!+-uJ27z╋ȪGK R꫞QUc* BRr 'TҋT5M.:[!+-UW$I2W=2*T]\ ުS<+zT4HIa*]Us"*eA>]sҦYuJToUk)J=*eyQUrHIa*]Us"*eA慏0W\i,RgQLkr=tBLO$I2W=2*T=*ey 'T#p.Szg(W\iUEU#%RLuULϚ>]sҦYuJ(EQnq(W\iUEU#%RLuUL|(7%TW<>RXe$ʗU\ȪPlaX֊琲uJQ\krZg+ETU\>RXe$ʗU\ȪPhXV5,RgPF)3LQ\HIa*]Us"*eAcZ+B*C\]2UEsȪGK R꫞QUc* ƴWLC'U%3LQ\*eAX֊琲uJ(yHtDꤦz钪+IT>hV5,Rdʤ:XuRUZg+ETU]OLC'U%Uy*2Dʤ:XuR(\tJ=*eyQUrH2"gfU!J=*eyQUw?eR,Q:)d]sҦYʤ:XuRUZguJfETU\ 6|F 랕2iY:W?eR,Q:*e3ȮzUEUd)HtDꤪ"LC'U"KdVD*eEDϿeR,Q:)dVD*2ʤ:XuRS=tȭb2œ*bIUk)EkO"*'U!S<('̪C'U%3L*]Us"*'̪C'U%3L*]UsqM2(TVR꫞$PhU\Y:W?eR,Q:+Tá4W=OWTUBʼ̩uUL2U4Pb NnB*jQqZ?i$Q:W*Ie>YT+bpq,~(YU͑>pbX.YUt)͊JK%5WLT6D ıY]S]D ]T,V+h?諠qԪm AU W^ԕO5<`uH7`?^)&}Qz} +oHE$пw)&}Uz*I-(cC\Au$҆41ɠVZPƆ74^P1%1A % hc+E4*pZPƆ2ɠU҆41dx$ hጚ \%I% hc} EQA}$҆41[A]E E$Ͽdt`l6EAU f]y$S*' ̺IZ*[rdOC~2dW-sRIɟŊ ^bz+)FWx7A2ҡL*D~btD6EIɟ WxVOWJs]o+Y53\u{D  ˬlQ*>p= )RUW&} D0F*R;DLz#Yu7\ϽQ= J%oC5ȥT\Д0F58W"hK\&}Hz#EeU85WLT6D Q:\%r AҚ}MUʖ+8eo+CnТH8~(G1-VR`aɟy ˨qbL`eurOxQ/˪XpS{TIR7*B5TE4*\S*xRQ)T:H/ Sϕĉ芐e,8M W)CxJ8z"(YuK$SBu< SДW!E˪Xq"NS)%O"D!E˪Xq"NSGxJ)$(^ (]RÉЪurO!U*y(Q=RQW-TM W)0!芐e̖ h3ܙ+~5; g3DVAR9ܙ+*F0F7'Сe%0u,8%o>J$O>H\ gQĒ[9ぐji\qTbʒlJUO5ɡ}/#EWteo#D0FqwxТϼ= RUrg}5׮S ϕG IiCC1*U*$ ehc*WIiCES*eE)% hc2Uzʑ1*W$ pS*eQ$12UzʊKJTeOą$ q"^I-(cC"ʟUIiC2h<+epRL[Uy+ee) CV"hΊH2\dL!P *$2&} tVOXURH2"h_eK*K+A>3I ʋgWR ʋΊ(Q$##AAѠkEtOuпr٥Tbd:ș.Yadd:ș4ȭbVzn6$/M h5uW*Zy(JjX4 d ˍSHj\X4$\lURشl\k!аj5Ըh6.5HX3-Ըj\lUKbSqcI CS"CCY fC԰h6-50\6.36Ըh6.5H3\lUKbSq`lX3-d451hkqT>楃AiظCP԰h6,\7.,24hkqT> KbSqesiƒ5,5046ت ŦbY ƒ K L 03h FCjX4 d45 F ͤ5, C԰h6-50Xd\BԸAqP&5, MLƲ Ʋ ͤ.\lUKbSqcI fE23dC;QY%SMU .6TZ吾J\m UUtS!̕M5T($>fTC*jQqH.Q:/A`ꩩmrTUB+CLS(J\m  NnB*jQq/^s,Hs%SMU .6µsJUW?ksyjbg*䮉7?♥Tb6*C $'S*U1̴޸HLS>UAc2QM͟ AcEL(u-C?JAcEL(ȭblQ$!? uu\K:tUM͠BTpXYBrS\㵴SWq2TI] JE0ܽpI-(cCc)E$Ͽz+I-(cCSw҆41 jc<޴O&EF\ *}$(M)S=7D/? JT+9'~Е@0GBТz# Jqrg~߅&}}q= ⁑D"(}։IiC)RE$^Q$1|QzRL~)BZPƆ7S|.TY4RWz`HM'I])!LPd޲I `@u]))HM'R!IOPs%w$9YMrWzѡHLUbI]FB (Q%w J|,XL޴p&Et*X)+h$&F5P g֌"4^ạ뒻֍Dh֌$ qFRSW-w6GJ}UȢqay UB)D0= \KOro#D0GUr+UBbxϣRSB㪹Py"z#(Qtp<4/CuW%*'\+`䪀c="z#%)F0GUrK]SȮϽQ= \Uu=B0!z#yܙ)`䚺^$OCuW$uн "syjO>WL9@202.oT}҆41TdxWz߁IܽoIiC))% hc|2h<.o$ oM RKJILdxWz߀"gU~KJSHUz߀$ qFTU^BZPƆ8c*t+$ 5\!  IBG%waHLUkA¹> $IBⒻ%) |/\΢+(? Os޷*HM׭bI-(cCLoUE˨Q%w6~>R^yQwD0<8yhUj$OMT,WwD(}s*Y0J$ILOHu~o#DQ̩dÙ*H`owFTE'H^EqPJ[萤~ 7 Q%wO} [I-(cC%1A2W=2+y+o#(W\0I]}$+rWzDR [葤1DdQ\W2ãl""C2jh8X^լQ<Q:C0Fb䮃.D4OCjV9XhކYN:UD`D:\KOrh}֬C'4>'ΖW<&)jSwR7Gf\֪)y}u-"Cϣ=W}7h+\eGK]}IDUu}ZIiCH\W2WsgPS,::\:X{@ꞑ4DQU3ITM ϣyqU3H7&`yqEsu='ȵb&.MȢz(ꢹP7Wrh)FQԶZgF8W%k̩uU]|􏔡3I.˨Qsg`IT(LuULP}/?Q̩uUL:5jI\jY0E) >T2W=2V- >Wϣ+JhQw CϣeKzd~^<8TJ+aw}OA$/CTJ+R꫻/J4/>WqW$ʗUZ(L))»J$a{sgJRNLƥg!pظD7B԰5 2.HxjXjr <5,5 C9 RCx^Eb)]RP3ȸl\e!M^Eb)RP3ȸl\e!UʞEb)"O K CPC"qw+z?K>R$ܸ԰C"qnSR R?w.55,/.,1ȸl\e$SR RCx^.55,/.,1ȸl\e"+x԰C"q7)x԰C"qSR R\SR REx.55,/.,1ȸl\e!]ޏ(W]|!4^TSBgRVZPƆ8#&4)% hc|7)YUj$:Jgϣ}%QD@<`X(P;%OCSw)y':3+F0Fu9aLW\F[*]򒷟G"iU*4/>W/~޷`IWVCήl4I*QUw}!z#Q% rp Cj$]w|hIU{RTZ75*@<= M\(򒧟F`DL92'+`DJ:[M&} D0FIkeV=J78/o)I-(cCc}/KsgѣIS+zL^NϽ CgT+3#D0Fu(ϼV`? [ʒ_F8KJ1ei*}uO]ɟy ܙ`w&}hΥܙѽ ]| A/o>ZPƆ8!>,Vqz*!3}L޷ʡHLSdS) +o"HT>^ʊRKJ1AK&ʡE76|JGT*]*/ERȦS|=uK"k7~iT(J[$*w6EȖ)Rd$RST!z#XJmtB0G*XJ\Q$&},Vqz*+IT^^JRKJ dп]넪J d:\%PI*DE4SUw ]넩 E$]넩JWzGE$]ZA(E$]RA((VD6 DzN+4/!yqPz;KJQP]5w6 *} PuSܙ P+8yB`ue)* A3ʢ` JU++zR $U:"y': ]ɑ s-RJkYwʠy ըB"y([-3=Q= cWI-(cCɟ 4I»%IB+)+pBBh`U҆414 nm0\B㣠@V:M ǶUB\"IS"m derP<`)*9YMw|`)*:RU= ж2)SU*oCt-LiE+E*`)M2WAWwʠyh^[B7|+`)iU֥e!P=[B[J] hS"P:]([B,UKWwʠz ж2,QJūgQwʠz[B)ZT.TC':ЦE4pu:Qwʠyކ[B)SU*Hz#m dUuSUȢB0GBȭe+W=*z#m d0V^iYMW|Q"z#m d0VBKe5])*F0GB`]F':ЦCc4R]M+)@4H^[B(Vj箫Uʠz#m dXW=u]*B`)gSKUkesU*Q ж2Pijd]W|0GBȱugSKUkesU*萡z#m dXW=u][B(Vo4VY5]':ЦE7Z[,ÚTDV`)EL]uu="y(V)kISEB*Z<Ⲹ#zu: /0G'sh"BQХeVq=/#E QȪZUgFhL-kmtJ^~S% Q\ȶo%/>  Q%CSϕ0GB`EKW-=ȭB [z#»OAqt&*tM~$I |+p@"gRA#4IM U]͟*%P dW)*y  d\M LUP< dRSTz#Lu=7&B&3>  dBUQUw~'|:B+S"խ]]| Q ЦJoAOCt)Bsz ЦJMZ/BS dz@R1"z#LraOz#L-argD':DҲLȢB0GB-arg)~:ȲziYMW&}HS$*+ϼRT`2+w]*+yS%aHF GB%PS"y(:rS"yJ72PD㻿'DQЦER\28@2F:Aq\\F0GBUɟxOCt)L!B0GBM-UrgފS%E+rgމ':ȭbVVϽZ7:o*\&}"z#LҵE+wʠx:BuNWU{RTY\Ct)+~C'G dzu:H} $/E GHqć*:"y(z(S$OoCt)ꞑ/P<z#Ldj\urg} ЦJ*VD)`2,[] rg}= teayF0G1̪EO?(Rtϼ!z#LKWDSU~:\o[? $OCt)VZST`2KJg0GB%m3YKϢD`2KJ]]+*yEP= ЦJ(^| '+:RnLѕz#LKWDL92'*':rRɇ7&DHн ЦIT(UW"nLʊz#L(UEU0P"z#L-GZéŒ)F0GB[![OCt)Zt>p!z#LV-:%3]w&!yqЦYSA M yqЦY&ykE"hL*-Q-s?'hR.EIsw*y 'KUWJBVD]O!zGMrK\ἡ**z= \΢M ȟF㦹)Le/"G5ȥT]D':k+nQ[ȢB0GMrP[5q:j򢧊Q"z#*Z~"J \YS0!8 XY[pD0GMrPT&h^}t-5XOrg++`[J]} C*^} J7:kRɇ7&Db`]tܙ~/Ct"UQUw|)`jTLPJϿ':kϼz#&YUrLZ.L':kik t% Q;[E3U7 [ϢCGMrPJhn}TCt o=5ܙ)B`B>S 7G5ȶLϼJ8$xiknm>\B0F:Uɟzm++y'5gZXϼV`? \H0 _P8m%Ssh%sy +Ͻ CqWz**H0I% hc+GbB'WUrU͠*)ITQ+PIJI]So!z#VD-a!A+F0= PJ0zUA+F4OCj(px $8zUPowѼ= PJguByh^ըQ%3:]tȪyըQ%JjhނOCj(bf]RTo@R`Z,[,ÙEU|E $XnW=RToC5jH8zUPowѽ LCj(vuEt+ Z7 $Q] EU|ȟF0FBOM+)y(ըQ"wѼ$/Cj(vuE`tJ;h)~5jH;:`yoD0FB([,ÙE[wѼRT`ZPo*9Z7`Z,[,ÙE[wѼ5jH;:`y&]M+F2ըQ% F f5!A+FROCj(#EՆKUfUA+FT(ކըQ% F-UkC{Vq= PJV3Z4T Z7B`ZPhijs]RToE Cj(#EՆsKUfUA+FH= PJ)N"z"oB8/pBZPƆ7ߍ~W\0*X)+pHL,:Zq܊L9uW@RƳ,:Zq܊L9Dsh JUUZLO!z#RSM ySU ȢuܚDeKUN;Rɇ76􋢒eK&rLdÕ!z#båȩdÛT **jTå%[IRH QTPtT*Y0#*H*Y0<`J,r#/Cq!tT*Y0$#*RRaJ/޸ PRLWzDRa$[`BA I*D $W8 [^ըQ%3]w|0FBu=ʞF`ZJjShކըQ"RUwѼ= PISLꥭe7~"F`Z,[:+`ZLeSPըQ"խ]]DR(ކըQ$ժ(ը极[`Z*ZUx _zըQ!kZ7 $:]kZ7>`ZV-y(ըQ$Ruw|ȢB0FBTRuw|/0FBJE7~"Q"z#VD':\;S %HކըQ"Ntwx J^F'5jIRQ9߈h PE.Աu3OrgFU $Q9܊L9x '5jI]2=*BT(ކըQ%t4KI߈q= PEK& Z*Xo*%C*TV葢z#VD ʪIiPJ,H.Z7+F0FB)NB\= HVDeuuȭB~"ըQ%Kg宫S‰ $l*]+F#z#VDk$1<8`ZA"RUwѽ H^ըQ"= ըQ$Z} '9i["h^~oCcRe/B8}cRZ 8]R(pznmL *CEC&U͠)D17Rɇ2(nm4)*EUrֺS^͠FREɢy ɦ]M3{D0= ͠F"u=ɑ<`EK&B/#E~*p#DZPƆ41?K@EK& "oI[^F5*Y0#B5K&Ȯqw!z#JL9D% ꮕSu6*dbX@e*/8^B4QE*8<3=#^h+F0G"Uu=FhtUt\IR/p$ hFM҆41|2h<+pH0|{RYshJ_ITx/>5*8? ϣyqԸm)B0= дE7~"z#j+F0FU:S򨞚^yh^}qW6"Df_%KVe)}/>Wc2*\tZ I[ϕ0q_z)*I-(cC/MQ1K9Z6JDux!}/#EkB<jWx!}hWKJdj TrBS JF U% NeVT}򗐽 HSEa*`z# *ꞑ/ L#D4Q+rWzDT» %I (RKJ\oSKV,U"\_ITQN;IT(T9uȥT\0G8+Y7a <9unJ\0_ )o\/đI32Iw]͡EJQ;CunEO!z#w\i{[0G8*wʠy'9u-'~"ѽ ;JgSx`BD4Q;Cj\+`qrΧ:Qx`*z<G8Nn Д0G8XT1"z#w\P;(D7G~ .m LI*D̾IuQ{BRRHw]E^D(eTjV^D'+1|eG*)%0(e(M)%(*G~޸Q1%qAm 7.D̾IuQ5(`zAZ+p*I ~޸P’ZPƆ8_0x,RWshPISTVRu-w&/>:I2jм7GT^0= Cu*eKo ^F8TJ\(JRBiJo:m T*UxPu*eRP)y1Db:I2%/@R7CQ֪*zy(U$ʤ:]BT0GZ&U!ԣ„a+hS"MUT޸P ^6W=rU<]76)*D MUUBVDR:gS23B꧒ziYLeSrgޅQ= ] !}4M-so%w/I!̊UJqT޸PHIVTu!ʊnm T̊x B0Fts"ux ކ3NȞF`E-߈oCgG2V-м<8Ύd&*yH}gG2)U)W F`E*8 "yΎdu:/A'3''Z ހFts!Ҫ ^Ύdb8/zΎdX+R1"xq'FTRR/c9K]FzGwH0>Q8)H00!ITJVRy o  Cq-͡"OMT,Wrh^BRSB}q-͡Ux`/CrKRfJ\ cUU<޸`D,]B\0))W6i"-iE^[L*8R8Vr)*\oRfJAx`D9SAăί <`?,Nush`*IS]x`/Ck0#zAx`+y'5ҨQMʞ+F0GeCuK&]I| %)% hcG dxWzD E>Ѻ2WzD$qxWzDA(_zᄭ$ o dxu2s]͡EJFeFK&ܙ^ΦTnY,3P{ [Y\Lܸ8k >O#Eʍ˕NtX>b`eFEՖ+ϼ!z#:Q|(y`z#:Q*(yD0Fu2qrg~ѽ qʃ1rWzE HQA]$QCqŊ\޸a!3ES*]Ur-XU͡J)Fu2K&ܙ^ΦT8k #D4QLiQ<= Liu=ᄥѡx#:R^`yT!Eʖ;T#z#:R%LMɟyHbz#:RaSbyH LhT\DUʖu3>Rʖ*]w&}aF0Fu2ʧ:6rg|OCgS*Z\s{>Сz#:RU*ϼ8`z#:Rє*Eɟyh= Lh,rg}Z73- 5+Q8ϼT= Lis]ɟyh^ΦTWNu|3-] /P"z#:RrSw*yQ Lim*+y`eKC1w'+ ʖOHʙ(YLCj<0ϕĉ`? VCʫЕ@1_z**I-(cCq/ W$S%wBPIT(ЕRJE7' u$)% hc)x]z҆41H/pIiC)J|.pTZPƆ2߆ \1#I-(cC1 21\5Bač/?QG$R;S^~\IT(+O!y"?ЭQM͡+BѮG$Sxb+y qWzሥ ya͡B IBU^Z8CU )%EO@ϣCIBT(2oCr!U*xb)zqD0G,.U]*Y0Ȟ/Cr"T-GxJнQL?Q](R !TS@zd:\.m HU)՝I*YxbBEΤBNh1>(Es:Y PV`ugRS:.W])*y"z#YԊxb)yh^VE$]넮J S4,S\6B%3I,׆(BD5j-Q!z#LIi["%p=[= ]넭A%pVR`Lo\%h)?^Jʒ)*» \I?/\%eiG։ JuS̱ZBBh+hI3Wz!"gB"gED ^޴HQRL~޴HJ)&~? Z$1$>wHb} E(»։)D~޴OI3Wz? E$]D$I7)L~)hFI3]DRE$ȣ~$I7i>?޴P>I3]E ?oZ(!H)?޴PRLE%QWz@TI3WzAE$]EZE$}E ҆41Sx]zBIiCʣ&ge*$W8oq(QL.U]Ed)\i$~* 颹7\LdL¹N.W]֢ZU]=KWU?IW4\l~*dK\> $R\IqbYJNzș+yRaEd)\i$ VJg")\i$(ULz{LJUɟM )S=7&$R\Iq\^&X8M Yg7ZLAN.Jtr 鞥ʫȼI"KB 3̲*Y*Ъ{JNSɎgsR㫌A1j\uu+J՜Vsu+r3w߃:["՜Vsrd^(jJ[0RL|4ZUUrHrgtʮ3%k$JtE*LxY$W+I.6U gPu)xu*l~3̲NCEd)\i$$>*yR@ޚ+"g,I*mČ$R\IqTO\W=HT+9Or3u^5kUuh,E+$lVAԪOq~Yg7ZLHrb#yRC\2&$R\Iq$~%Q-sd)ʫ$^I"K@tUt-U8"gPBi3M+)J\S<)QxQxfSBU]JgA}3\$sR㫓"%ҪaKL.Q"՜Vsrd^*jJES8ȼ/y5.:N'CS8J8Ҳ8 E+$?]*9" $JsI%oXur*\")\i$0x!yRJO"Oq3)U-UԪZnUd)\i$إ]JgJIAԧdUԪOuAd)\i$$^GL,DL9SB2&$R\Iq(-U+z6~>CBR L KRmϔHX4`ȺBAg X4`ȺBgʟMSMU .6E kUu)(:z?^<)Q%ROUG+ErZoY\HSB+.l\Ij%T)W=w6Ij%ʡE76 AcEL(u-C@R D"UVD6 D_Ms#*H8CQ,~FQU76Ace QMsLQU76$5j .m 5]R(pznm !?JAIUsh` D&Tå%Y(WUt:]s0H8CQ,~GB*BRTpXãunm 25s뒙ԃ CIj%NushJRK1ʗU\V,UsdHQ$!?4+G!UsdP!? llRAcZhOLKWE͑"+H8CQ,~(h)HL>(p&^Ѿ>(p`L6Ck`Irgކ9 {V4OCrS: o[hކRSBDM 4/>ϣI*E (Qrg}9$W8no-Sܩz#Rɇ7~)^Q$^JKJ\dy3ʢznm I*)8k>9Trb%Su(O""*T4O> qi8[]76DJꣅk.LTGU*]Ɋ}ϣET=w&`z#Zꞻ"%O%S֭eɊB\UUrbFm@0= uQc= IUK$Q=SSBSsdE)*S\/Cr+{= Cr)QxJ^F`CoCrU=wD`JQɟyh^buܙ+`E(3A'9)U)ɟzoCqZTKZֈ"$~޴Ei% hc2qu +e(RE^KJe(|UB%P+e0$)C*ئ"IT(0<`?z(T54*U=7)}/RJE7)oCqgsdo\5Ba(BErJE/LO!y"r9%P ^~= * *}rJE7F^~]͑‘sЩTܥV:I*ܦѽ дtIT(y q"h-#U )h$G/Z2Q^q$1Q[zʐ12 WLs-2WzʟHLS}RȦSWzʠHT҆41#&̪Y0U )r"IS`)rNO裩ruBP=GRr-BމGH$&WIiCѢ,UEI**GXp{`eKzhQrgކ5kNSTh) qRL~ IiC)ܽq@ZPƆ7SmIiCc)č$ eQTJ2I% hc}|Uz+I-(cC4QA|.TY4RWzФ&+Y%wh|.]rWzHM'V!\>UB̕޲9YMrWzѤ&*u $$+ÊI]+!\>,RJYYZBd^") PWzBGСPeu]} BW01(>J}UȢqy UB+`z#(hF`VcVUr)U)Ѽ<8E(YSUqBн \ur|:++z= \A z#%Wrgނ(C:!z \Uu޷+I-(cC%1AasgBrgj5/ ˋ wи4/ ˋ.hZ3Kдf]ņF*xl\k!a`f[x, nVpjlkwмb\85.LZ[!̸ph6.f\kwxd`d\X422Ȱh3-04,Ȱh3-/&LY!axd`j56j\j60,.&H5.5]oGQ4Nq~?^"Uz߂҆41UO͟Iɟ dd4 C@Axhff\XmtO6Mr Kxd4SņCAuxdoAqaBq`d`]5.b fË Ɓfd`Y!px5 K nKI2) }#QÃBaÃB뾍lI:W R?/^FIT~*oTZPƆ7c)E~)*W KJQcsgBsZ0`GIT(J_ITk9E2P8T!z(뒅~/Cq!IT(J]~? WU Q aHRSzuPpuo‰!IW˕A¹Ez߄!I_s޷F [$17GE˨Q%w6~T::EK{ /!z#:E߅㮃9IUu=5P]߅Ȣyq̩dÙ*HsDQ%3=#]J^F裙Rɇ2U80RRTE'=E~(%i/ 7 Q%wHR? _P]} .RꫡD޷@(RKJILdxW"'\S]}$76}JJDpȥT&/>3Erh^}ϣ7~F8/oFZPƆ4EQܡ]p%wEI (W[$]zDVZPƆ8#}VȢ+\eGK)*Deq%tNuw}S^լQ<Q:C`z#VDWAWw<d.*x"S芞~O*UtD&ѡz(jʤ:X{@z(esro"fe7}O>TƶY3%uy}u-( O>:L]EoA'5rV\+K)CL % hc)dW"'DsgaIS(Ы%P !yhcRSRRн \u$ʗU\r+`jT2u5w))z= \u 1XzRR(ކꦺM EϣKMɡz(}kPB0!y"+E˨Qw!y(~璣]ORTQk9Z(Qw@I\>3W"N< O@QR%kVD\/CkeQr`ZȢzU))y'Hcr+XuTU\o[1$|7򒴊_)?^ѡI-(cC1P g8>8RKJILdx_zF$ pMW$ʗU\ȮS#x]zF$ p" %k̩uUeI*+ikb(<裦zu=*.M=g&ULU*B}g&UL(ɡz}uQ\OI-X@(:y, ܚQu-4o#DE~T$*0I.˨QsgѕHTE˨Qw!y s*]Us"N^~ (VD̶dZRT#yq̩uUL gIS>Wϣ+JhQr O>9.钣\ ϣeKzdr,Ww_z!z2W=2V\ʗU]GBpG5rLuU]B+o!H2 [O1 o!UIiC)5Bu<޷ʡHT2I+YHU+Y2+{U ^~b嚹*ZIK~kejTR^^ʑ1 oVD\򢤕>W#yjE-)DHcR꫞K\|H^XfE-*F0CϣC~+EkO 0]=!ċo[Ei*»HR FW \*]UkPEHH|+oAH$,ȶ) ["I-(cCMTa̪Ssg)ISESS!z(E2P8TDQ,%['F~޷FrE>*oVZPƆ8 c)U|҆41UO[p$12hU ȥRޅjV\`z#hBny"-J\ ϕ0Gw%i?\I-(cC(c)?\ZPƆ8 )UI% hc2^FZPƆ7Su҆41W4*p>VZPƆ7c)҆41W4޸ }"gUKJx)% hc}e^^ )I-(cC8c& J|+pAE$^ +I-(cC1xWz AH|_I93Eb) RP3ȸl\e#}ajd\6.2 ԰5 2.I xjXjr EtO K CPC"q7)xjXjr Gto K CPC"qW*xjXjr <5,5 C9 Rܭ .m0$d\6.2 м\jjX^\Xc!pظGƦņ2 <\jjX^\Xc!pظHo Ʀņ2 EtOd\6.2/d\6.2Ѽ\jjX^\Xc!pظB<\jjX^\Xc!pظHƦņ2 +[ ]% pC BhUzIiC \1ʫQ!RS<6i*%% w^B0Fw\(azP= @1oCgSV-ϼ= ̵uɠyh^5YϣG4OMW+? \Đa0AYUj$:BVQUWx!*y (P;.C0FIx!hIU{ /z#Q"jJ0= M\(ayh^HdÛ"yITrgނOCj$vUj/0J78/p"BZPƆ7%~"}%O\3!z#Q:>0= Pϼԣ>Z78+p" O_zE IiC8Anm$I*}uO]ɟy ܙ`w&}hΥܙѽ ]JAx_zD$ pC}*X!3|-U )J4^ȑBr%TY*/CkTU-R/Cqr$ˆ!3|-\b (B։ % hc2h_D %~0LKWDSR;"DJ*9M]"B8+h*H+h %^޴PRL~޴PH0E Ow0RL~޴PH0E > Q=͠FVIUBw&/>3\'`?#p!I-(cCG2)8EUҺjmS*} PuSܙ PT`z'? \(H0W(R N{"@ CQxQ: +WOC AWrdO#D0GBa!ԣS2'ѽ ФHj3?OCt)TdÛ"yh^Œ"gA(|+p"gA(I» 8 !FwI» 4)Wz)  f9\޸JQ& L)% hc+E_ d7VД Srh^B7Pм7GRUrgކ8 (S"Xm J$#RS" 2*Z4S0G\dyU-i"z#eUR*3z#e+XuR&}`3? ܙF`ȩ`o%5|9uj/ LA'=)"`C~޸JJR !)E K% hcC3޸PĐa  Ph… Bh`U뀮$҆414 nm .Dqqx y U\k}/CqP5W-w6%O)ʪ"*y  hS%kTr"`)*:Rh[B)"*x hS"e8QJūgQx<= ж2)S:b"F`)JCyiQx<\Ct-LJ+) EDT"z#m dVm++Yx=J7:ЦEu=3([B,UKWx= ^[B(bճ:ЦJg:7U:bD0GBȦNW\/">`)be8:]u^EO"E hS$ҫM2^EO"  hS"]\S/0GB`E%Ҳ"Q"z#m d0VBKe5^EO#z#m d0V[ESKJ"`)X2SJjF  hS% M\x<:ЦEY5sUDTROCt-L+:Z[,Ú"F0GBBW=u^EO#`)bΦ0萡z#m dXW=u^EOE Ct-L+7Z[,Ú"F`)b斪0ѽ ж2(+޸ $@Ww +»Z"+RE$lj*"%P dW)*y  d\M LUF`2)U)WShކS%tOMɡy"yqЦC릉LϣB0GB%PTU])}z#L+' dX#zoCt)妻OAOCt)Bs/C:BɫUx zS%3=wĉ`21ʅȟF0GB([,ÙϼOCt)e5\D`2,[,ÙϼRCt)dҲL(= ЦI*UET,WUɟx dW8hbz#L gJF GB%PSJF'2Tz(S% N;JFGBKUsʬ{ʠy(S%srg* dXnW=W&}q= ЦJ3D  dXu4WUɟz(`z#L[Uɟz$hS"iYZ˓>EhކS!S-sܙ`2KJ[UDTZ4/Ct)&딝P^++`2UEs@`DLTQUBTQ!z(Z:G%K$9UABTQDQЦIu/> dzu:Rϡ':*I0W&}߁  dk/ IKϾS dX+ϼ"z#Q8Z˕>`cUo?(Rtϼ!z#LKWDSU)~:\o 4/? $OCt)VZR*F0GB%m3xQ0GB%m3 4O>:-+hVuw7DU dZ)B2TdÛ"yehކS!U"nLʠ`(:\$Taɑ:%3]w&!yqЦYSA M yqЦY&ykE"hL*-Q-s? \1$@RU6"T.Z7^:]"Sx by ~wL(u-C@R%OC{BG'R.V\FQu"RUx='*RR0= u%'KI[= u%3ϼV`?#}%OJTܙ ҮC+S0GJ oLO#D0G\hRTpy *PzW!j峨^F`?&H)W"Sxy h\(#}/? EQ=͠)*ITW!UWx J^B0GJ:Uorh^FJ Υsrh GJz(W"ѼV8.p#$ oIW9YMwhC$,Vq WzFR>!DHp#FHi:ȩdÚ2 t;ׁK0GICfX]wK= t;q)#)x'C)ax= t;ը[B2F`ܕUY3sx\Ct䦺2'C)Դe/@R`܋G5N"`?PJ\>Q%w} #pBZPƆ8 Jc^V*`]5w6JBSY$芞B0FjVHb&."`m ԬR(VqDT4OCjIB]T+*xTT芞~ҥ\S+*yh^ҥ\3+*yЭJ)mt^OD\ǴS\8ʒU4"'#/C(Ck78e/C':kQTu=ɡy}t%3]w'CϣRS""`JQ!z#(S-)}z#'Vu-CVRJ$OCt"T+Rx5I#F41= czV.{'`BM hм8Zjus8ϼVW5ȶ(} C*T>5ȩdÛ"y1D0GMrPnLϿ:kB媨'|5Q0qB+/QKϿ':kϼz#&YUrLZ.L':kikT t% Q;[E3U7'D'j:O:e*/H^}TCt o=5ܙ)B`B>S 7G5ȶLϼJ8ӪIETi*}u Urgކ:k[x4OCkLб]ɟx~޸ *ʨZJkvgQ$%sEo!z#buܙ`? \(I-(cCG2jHq:m $I* %jI:V:+{/Cj(9:7^5jIBf]R*7^F`ZPnW=RTe/z#VDT 2'5jILW]2Te/>  $yT+Te/>W $ziYMWK@`Z,[,ÙC{ Q PEes=uH#)zz#VD ÊC{`B0FBT 2)`ZΨu!AFR1"z#VD+]tȪ#)yކըQ"e5^e/"E $Vr2D`ZΨ.CGwK/0FBgTV O"қHըQ% es=uHo2J PJ PY3UFR41= PEes=uHo2B0FBgTV O$˩^FU $HuaY溤:7^*B`ZPhijs]R*7^* $Huc9AuHuPoxT'5jIBsKUfUAFRHP PJV-UkC{衁`ZPhijs]R*7^'5jIUr%3=#^PZ7G~޸Q@ZPƆ7ߎe>W\0*X)+pR &XtT,s%UZ\0$̰jr*Y0E-͡$EUrֺS^Ԫ⫓B0<8eBr(mg7&Q<8aSTa͡D"褙Rɇ7B4Q2V_y ~-U8EK&޸Q>H|Sz$I~?$Rɇ2(o\0#I >U%T-U1ҩUȭB†' 8]R(pznm  ~F䚵W6RT?u*Y0E-͡%HZUx`*y ~00ITRP<`d.=ɢzRtJ:ȞB0G"dE^F8Uz҆41\`H*Ta^Rɇ7B4Q7Rɇ7 Y0Es08tdÙK\P\u:QshaB*Y0I+ R^F5THT\'z#zu: /z#Rɇ*:RD4Qu :\.m IRJ}E ҆41DU4޴P#I-(cC'c&»։"ǵ.:Z6DI*aP<ƥT^yo>:-'ʞ:y':]GhކҲWwD0Fs<'W(}G͑@THq Ԭ'y ϕ̾J(ϕ0q_z@$ pW4DU.jV\GW j%[… <jWxPy"y(UDZIiCߌ6 *9QM͑@%O *'2P{^ʤ[M )"*zʤzu:|hF8+h"B \I% hc|8`c*D.m YZJqrJE7^"RUrdOC䮙fY7'y$1s-qĕ޴HP»։ M$i>~޸b*H0$~$Iu)*)G8 )(B0G8<"`qrU@1"*y'9u-'hކ%31DD4Q;Cj\+`qrΧ:QxJ^O?Q;E8$/ LCsjŊ Kĉ`qrk@}OyqȠ)IR$HFeN;)y ȑE̾JPJˢ~'"f_ 0YQʊn/#D1|&7RuG4+R蠅q<\Q1K9Q-rStP"x)F8/h}$ p2h>{""Df_$򗐼Qq Ԭ'y(|eB4H^~ TZ7\}q=QL}D4҆412h=]͑AEȑ!8|/"Ec2K\B%0!f_ 0YUA^1Q1K9( ^B%0!f_%K LcZ9E76"Duw&D:fP"+z.l"E̾ETSxb)y F3/D<Д8ȡ}"Ho!zF3DnMB/BS(U(RKJdȼ.:$Lb81>ѝLby ʦ.U9րc=P CgS*TEJz#:T9΍g81!x~޸b VJm R$EZZM ^}ueRUɡyo>5J`? QJHJx]z*}$ pJIR+%P$QԪE+):BGJTUrh^}ϣl.R`z#T,:[xJy'C(AR+pB<}THSyUshJ0TBCQԪIHuBU ϡ'CQԪIHu(B#y1Ej QKGZ&U! QKO#EjTR QKWG*ERΪ+p$\O4M͡*%H!U)ꪼ%EO!zE(u3,\>(Q y'ȶU7&}QE~޸J !*py&b7 RCIdRSŒ$òDu!ʊnm HT̊xQ3;hŽ'`ES2'z#:9Dx QV`JÅܚ'G̓PO>ϣE*8+yh^ΎdRS2'+`IS"z#:9py!zo#ĖJ%EoC3&X/ P= LCgG2,[] xbbDZ8N)(ʒTRRĉ/c9K]B/%1"? \1C^Q8)H01D71`Y7"`?%%hRTu=5P]ɡy ϣJN.M ϣyq6UxJм`Ij[,B>8tts* \ !DUbz+!\>ЕH.7lO% / \!z#m3ԪW ^V )%eI"-iD Ȳ$NuxJѼ`?,NushJRT9^B0FV`z#]+*y'5ҨQMʞ+F0G-RY0JZ$0$ Z$011A]D$OS%wB։ RIiC߂ɠeA滛"} JFeFK&ܙ^ΦTnY,3P{BT0(ΦTn4]YbLϿ3*BV0Fu2sihUtHJ}= Lg(huܙoCq\u2s\޴O|+h \nbW%wi -:R꫑jŊl $@ReKLL92' Lipq<ׅ y(ΦTZ ?OCgS*Zk-FrOtHayh^)~ΦTsuD ʠx (ΦTqwD*F0Fu2K&+>0Fu2 Z$(}$/CgS*Z2U)W&}@0Fu2*gAbLϔD0Fu2ʧ:,W]ɟyQ Lir΍ܙ)Gʖ*k@1ϼ4(^ΦTUJ3>ΦTe- Qrg}4OCgS*Z %uܙFV`eKC1f N;3>UOCgS*Zf3rg|3-ӮE ϕ0Fu2Z+Y '3-, )LE7R`eKL o (~(z#:Rs]?ϕ`eKCZeL|5 iygstHQ\Hh:\.l!։$҆41WJ.h18x]z"FZPƆ2BU]DR "a͑"*IT(4)y "+GHrʡE7D"+F,PU )L/@HtUtJE5]JGOCr!U"nL B0G,*UBwGE~޴HH0DÕ:*"DVNIT(RˢDREΤBNh$HEȢugRK5"oCs:̱r0= άEs"/> ~޴E/RL~޴E0$")%LTMs\L)*JfYS^(ƭB OAH^S2ZVȦj+~8+hQ$")»ֈ"g)Fr\^޴E%IQWzĐ`Y_wIZE$։I~?^HH? Z$p$R? Z$pR~޴H$RL~޴HR)&~?r3]DBd^޴HʒI»։IxFVJ$hMDT"H]DTE$}K&\޴EP$OwT)?/Z"IGֈ"Sz#HpG]DTTL0G]DUE0/Z"J E$]E~޴Q@L0G֊(R)&}+hDI3E$/Z()?޴QDI3]EZE$uDV$ o / Z"KJQAz\*ȦRU]2P"gRIT(_+)E dn T(CwU )e~$JsI%ϕyH]KUrJE7?}s-dBnZ/Hrh+Dʩ"gS2g5DY$W+I.6 IRɇ3q3)zGTM=֓?\ʨBnTeVTἊ(J'W)ZUlʤbs]DJY$W+I.6G"JEkNS2*A$W+I.6~O\*]Us% ԬM+,L'bZQ=W)CZ'W)*BbQUr(.Q_4+XuTU\(jCS*]UkPm߉ &Xfmߊqm+XuTU])3*]Uj:^ Q:* E+$>sLT*$SJé(Z:E% GHBn2&)HBnO$S) F)\i$/%8*(["VIBU )șU]7ZUuPJJ3i3)IT(_ܢIT(J3i3$JsI%Wz䪺dliXu% GHhQMDdWL-үI*(R:G$SxIW4\m}Ӊ뒅s"NTHRU]2P"gSD-~,s"NT]j4~)lQM+EIW4\l[ 'JIB9%PҰJJdLh钅ZU⥒H:G$Su|I"K}q=rrO"VIBU )ș $9YUj:J/CVSU:&4I*ke>%TXIT(IA$W+I.6^O\KZxY$W+I.6DWyȭbBjOkBjhéGr+\u$Srg,E+$#*q2reRO\QMH|U2j皹IJJE7ºuDܙ 鞹T(|,E+$ERD%k\dLu:*%.S*U $ș M ]i3\%tNJC*-XD֕xW2ãUү +zVO+znPAk9Wi=ɠA$W+I.6} _̪Jg:X:J:A$W+I.6}O\OHꉧN'ȫʧuDk?IW4\l^q=rV-(:{QXp{~Hrg*N'J\QLiXu!ʫW)?VUZN~$JsI%?U!QMD E+$@? fl:hXA`@50-P$,LC`0fd]!`jm iq,LC`0fd]!`jmq"+¹ECx Zԫ{ꞑO%ROUH Å%ROUH INUʫciq@!1ORzlJ5u eP>SAcEL(u-C>RTpXS*r+X{> AcW]!͟*BpXiknlQZAce QMsLQU76~'K(H8CQ,~"Η@ D"WTrMZA45Rɇ2(d]UҸuu΢C Ac:tUt\hRKtnM͠*BpXqrS:ash H8CQ,~s@VVpXTZbB$5h:\.m $Ij%i[2ëBR DE4CʫДH8CQ,~(p&~^(pI3[z$ e1̥TWz)HMfJ\%I |Uz$ o WzNYU͡+IT0M% UJqxJ^B0G4 CsI2R^z#EJUJqxJ^+F0G4Mxby"y"? Z')&}-hI-(cCTe>޴E)% hc*Z$i% hc1ALd9UsdEI*DuQTM^|:glOrh|zWT&ѽkVuw&<:]]ɢz/?ڧ\eɢz~8-E%wI KU5s<'Ȋ.Ds<./Cs,V:' m)$ eQ_$,Vp޲REbRWzQ$)RR W\޲i @tDWzJZd&]Qk֍^.D޴p$)Ga $!J? )S%w$ȼ.EK#E%wJBgTnsUy+hѤFS̮+hʒ#)/Z8KJe(@^TER/CuW% \`z#(%O#D0GUr+UBJ+F㪹yyq\Qtp<= \(8^}:Rz#*thOCuW$u=B(ކIkyܙ':^/CuW!tO">%0= \WA ĉ`䚺]ɟyކCuC37"`7TaWFT( \5V-ϼRCuW MW)FJ$OCuW%aR⒤oCuW!Rhbz#)Ny$/AQ}*BZPƆ7 dx>ZPƆ8_^KJLdy*$ o(c&ڪ%wBd^di!͊RT4HPRznU ^~ЕA՜VsrO? Jz#Zw*DOCcAN.Lz#Rϼ/'8P24eEI ysbNLK nRlfƣKq`ԶAuxԸhj[!1xԸhj[ 5.,`flj4԰/ Kd0365H202.,]ƥŃCR K FW*z? eukYQZB-q!I-(cC\e^޸I-(cC`2h<֙YJ+P$%PV-Eo!z#L0G-'^$/#D0!CuTM}bDO~3̲Wz$PxRZPƆ7c&I"GWE%EQRL~} % hc2 IBJ[`HMWU Q 0} .uJ[Q$&*5\GzBR(TJ޷УHLSzuPpu^Е$} ? Êo!4^Е17E˨Q%w6})*}tO"C ^yQwД >::C$ZSU %/"2dpa!JDTQwЕ<G2dpa"BTTE'Jމ Ȣ?qrI]}> 7 Q%wH_z~҆41RS4I\*]Us"N>> +oRruJ[HM׭ʒKJoS(J+aw6}T J:b/!z#VD(XD./C'XK= XJ:b/z#YdU8uW}򗟂'5ʠUr,Q=ɠyh^:gZ(<8:g:Y\ȦYYM}ϕ#yqa]j|GKe{7Cϣ=W}򧠁h+\eGK]}򴏿׭1|5Zs*]Uw6~U).WDBr,Q=ɠy GLOHzT\z(M䪙Uw&Ѽ8M䪙QECB0<8ꢹ:ZU&Q=uQ\(X4z([-3q"J+R꫒$~ eKr\!IT(LuULP^~R꫞u=}!Ej(Բa̋VS]B*FR꫞+wТzyqEsQ .OA}s*]Us%G4(Q="yq̩uULW2ãoA$/CTJ+R꫻@(м\ \*]UkPJ["HWz߀ x=#I93Eb) RP3ȸl\e#}ajd\6.2 ԰5 2.I xjXjr EtO K CPC"q7)xjXjr Gto K CPC"qW*xjXjr <5,5 C9 Rܭ .lI'&~Ʀņ2 Ct/d\6.2qayqaEb) d\6.2qayqaEb)]Ʀņ2 )KƦņ2 Gtod\6.2Od\6.2+qayqaEb) V~IB[D/rWz߅ Bg % hc2h<.oIiC)*DSIL\aITQ-y(P;D5c@0G*z#c=߅ hކΧ:8[=ɟy"z#j@нkeQB >'EҪU=5]`y)~ JAEeUs? 4BD ' %/C&W]߂'z#Q%T53C L= J;3z#»%i/HRKJ1 _IS+zL^NϽ CgT+3#D0Fu(ϼV`? [H9}޷BZPƆ8!P{TY}$ϡLs-2WzDR RȦSWzD#|.o*I-(cCM,s*Q$uK"E/!z(E2P8葽GT(n"F~*]|!W(H*U,DUJqUD/CkTU-RV8TRgWz)B>TY뀥ˆ$ pM ޸QB(S!U*ԎТFJdSE5WxQ`? \(H+p PxWzD"g I?qBkOsgʠITKgꊪbBG .`?#oBZPƆ7*<WJ髹HT"Z꧹3!z#8EW|+8yB`uJU* gE*}/Ct)W- SC AWrdO#D0GBa!ԣS2'ѽ ФHj3?OCt)TdÛ"yh^$I»2E$]#Cl2IZBg.pI-(cC\oEЦIuj.mIJJ7Mɡy ϣ`BB}jUJqUɟz$Lb깴%I**FT]HB0G\duj*[,H:[%3:lOw"y':[!U(R>Z7:["'U(qrg~S3 ɟyh^lSZ˾ϕ0G0nE))z<u-J7' qR$ hc&»@ \bH+p!+H0 ^.]hI] ) W/1ɠSsh\B㣠!}/CuW-r-^*m jZm)*~T-LUW}' ж2VeG+)D0= ж2VeGRUw"y':ЦE4pu:  hS"ҢDp= ж2M*Ԭ7}' hS"iYZ˾z#m dQ:S:E hS"Jb$OC:ЦE)Xl.$OBS hS%3USEDbD0GBȦNW\.$O"} hS"4pu:<OCt-LJ4qw"yH^[Bb( ЦEes=u\_`2,VSUɟx':2J3#z#Lw_yS%aJ7BQЦIT(TJ7裡L*)U:Re(ފ:BJ7DQЦER\28@2F:Aq\\F0GBUɟxOCt)L!B0GBM-UrgފS%E+rgމ':ȭbVVϽZ7:o*\&}"z#LҵE+w"x:BuNWU{O0GB*^} }t)ꞑ*(} $/E GHqć*:(} (:8S ϡ)F0GB)Ny1D0GB%]Z&Ըϼ!z#LTe))`2,[] rg}= teQ<z#UwE N\$/Ct)rBjy_`2W*':\fU)+yJ ЦIi[L^e/> OCt)ZV8#*yH ЦIi[B}TCt)j/ %O>Rϕ dRɇ7&Dѽ ЦCʫEK&ܙϕA QtUtHdÛ"yh^S$RRɇ7&DEp= ЦC*QK':Bu:Z0E(ކS" d7b}':ȭB :[xQBp!z#LV-ϕ0GB*T(w7+ dQ=TS:]w"z/z#L;S,ށ (Ur+EO@=J8S!k3/(z#LTUPJŠ'D  drI["8Sz)DI3Dz(S*TS eU )B0GBdQUrQMDV0= ЦYYԵn"z#LPm)}oCt)Es0= ЦY)4/Ct)JkO\Ct)E*8R"yqЦY)L4/@ ϣ2Ȳ(Wrh^ϣ253\/AO#E eTVjk@%0<qWzFA=͟GEȩ:]!ԵnI[^:]"SwѾ8TP;Z76|%OC{BG'R.V\FQu"RUwQ'*S0GIԔ.y':Nu5\ѽ \hThMɟy *2zW!F= 6})*~ Uc8qwJB0GJr9%oC*-\uËz#ɮl2r*U7}/!xtZhBZ8ޙTP;ZhRU*Ut9UEUB0GJo CtмϣrKP=r)U)W|DQҮE}Kh+G~^ѣI-(cC9YMweII*X$$ϡ7&Es6}ZJ!w"jy 'C]w0= t;bٖ.W]G= t;q)oCtyKh[=G'C*Z-ѡz#w%UVsLq<\Ct䦺8OCt䦺Rw(ކ:ȴsTzz#(Hx Wzߊ|T$ pSV*`]5w6|%O)m Ԭeu^B0FjVHb&./CY"PD㻾K= ]% N;uS̮Khކҥ\W]|`m*Uu2/> Teu^|5+RJk[]7|@+8jk]t6| JBVD]hB1"8yCbD0GMrS:*4/"}ϣu3+*y0<8E*8D$Q= \)[w_yH^JwaxC՝KP+x':kRYwJ)*F0GMrRt;F' t!oJwʟxJ*мV ϣW:cLep= \iYZ˾RV`D0GMrPUWwʊ^} J7:kRɇ7&Db`]tܙ~/Ct"UQUw||5Q0qB+.TO>HJ:>>`eU2jh83?(EUnQ[(JvgnO$1<t% QԪyֆ)Qw@0GMrps]ɟy(A("yQ8EΦzgW4&}Q0GVJ*ϕjwB1ԪL0GMknS#D0Fl] ܙѽ T-G%5;[E3ETITJw/Cs,\>0= }4҆41olZN宫@%P!DB'U*ڧQ%tOw5jIBf]RTq= Cj(9UPow4OCj(poCj(pUAG $yT+ 8}5jILW]2*7yըQ%Jjz= PEes=uHuPow(ކըQ"Ų9UPowD0FBTU}OC5jH8zUPow%0= PAЮd:7z= PAЮdUPow'ѽ PEJjy(ըQ"w( PAu(z#VD+ `MG(= PJ0zE+q~޸@a'EK&ȢZp@V"*jTa͠"RTdÛ[^Rɇ+o(B0GKUO"o\ \I3r .mRT %jHqwB0FB)LzըQ"NS= PIUQ-W*x $RS8~ըQ$)uRֲRVн PEgWxz#VD*YT򗠁 $X=J75jI5joAOCjILO@{C5j$k]U)`ZVbD0FBWZ뾎'>`ZV-Hz#VDQJq<$/Cj(E*WwK= PE!RQM)+x'5jHsùRT`Z+DKw`ZTyNtwwJF  $Q9KS4&}eP= PE.ȩdÛ HQ= PJi(* $fIi8%o#`Z*Y0"DHPj(RyUI-4IRq=4OCj(RyUI-4IRGz#VDTQxWOC(ըQ"i]r+Pm)+y_`ZTyZ%o? $OCj(̪uw}O? R75jHq:"D'G PH$RS8 $/Cj(mt򒷡BU $+Z_B`ZVȶW~oCcRʞq<8JW" / P jDKssh D1Pt;j\ ~) Tå%[A *EUrֺ   A RJ&/Ck&u4ήiM0GW6.\Sܙ^Ta̔($Iu7\`qr)y[C䪀c=Dh$]򒷊ѽ ;JgSx y"y(!̵ήLϕ0G8gS(eoA'("^%/BS:Zb„bD0G8 5Рwx_+y}q40IR$HFeN;/"Ec2*\uB+/ O>Wc2ʎTSx`)y$/?QQ1K9Z*Gϕ̾ET)7ѡzhc KJ (c&繴0$$#2'x`B"1|.:Z^D'+1|eG*)0(e(M)0#xO@TSq_z҆412h=]͡"B3/qw/!y(ȢZ7\^1 *0:I2jм7GT^OC~+U%wE}뀨$ pHIR+HT(U"K]ɡy ϣRLZ4/>ƶU0GR&Xtϡq T޸ @TO47UW6$)*E *EO!y1EJTT+EO>(} QGR&U!ԣTT#y1EjQ[GZ&U! Q[O#EjTRQ[WG*ERΪ+pDH"Ces%S-ush"%H!U)ꪼ>DR:gS23B꧒ziYLeSrgޅQ=  8qϣE*8@н ȥTArdO>W̓W]+z= 8q.]w(͠+"RTޥ<(hB0G"gU)W/CqWzB )(_H.7lO% hB0G"h8vu9B/Cq`s@VVȺ`s'`t #D0FU )Shކ:eCuK&] 4]zBTZPƆ4pMtnL޸_$H|+p A/}KJMS* 5$hNTndaɑ<`eFs9 /0ΦTe- Qrg}4OCgS*Z %uܙFV`eKC1f N;3>UOCgS*Zf3rg|3-ӮEߊ*+`eKAdWB/?ΦT3\2򒷟ʖ~(z#:Rs]}ϕ`eKCZeLy)y9a} ϕĉ`? VCʫТD1_zDVZPƆ7|+U ) J"u Bnm K*ETQM)B8.pZPƆ2)Gu넦҆41J? \(Ф1B IZIiCʣ} / \%1$1Cm 7.}rJE0xJby k*𔕼5Bb(м8_BrJE76 *}rJE7!y"? \%%Ii[2ëBR%PC,Py "+GHrʡE7["+F,PU )%/2oCr!U*xJJQ= 4KWDL92'* HU Qp=QL?QʊhOLKWE͡)FNIT(RS^Es:U )9(Es:Y IKhކVu%3bu"y"z#YԊxJJ}8T%K5͡FRQĦi%y EըP>E9̮z䖕)~(p*H0&)͡GJExQ<`Irgކ9 {Œh7\ujeOz#JN.M ϣE4*м$O>9$,Eɟyh^\ṼOr+`EK&~FE׮ei!Gw)+TIiC+Hs<'Е@"S&3!z#\O]W&*z}rU=gRLT(}r)R%OϣC~uQ鹴%HUU+Yrb8:TLT}r,R4OC~޸JR !*EM-uO]͡*FVO!yqȮC*1Sϣyqt CrTqX4OCqWz**H0IUK$Q=SSBSshJIT(:O!z#\Sܩ`z#JTh9QxJxO]**y"z#:wrg}9&X]w&}z#m .L@`EUJqrgހ~*VIE$)!*+E')*ܽpIiC"2 \1BJ(c$I» E)$Ͽ]$iS]"JG]()*E/\1#+V"gM넭I~?޸JHM넬"J» Z4I» \I"7)? ~(hs _w !a7i>~޴HbH/h1FW}D҆41ɠJթT?rJE4*\SiWtSBu=֕{VqY̔Jq=ʟ@zN+T)zWT&*M YJċµ4*\Sܫ$R\IqLhpYq3I"Kʠ\dLHrhaO5w?lS<QUwZ_$4W:*_+TN;uI]S]]Hrh |,z䮰"gb]j$>)zYLZLHrdPxg5D7\J,z2ܙ*J,TËWU=#&JÅܙY% ֮W8mTL)STܙ jrWXqrg+R\б]ʼ,E+$")J\&٥["Ngп d4,Le ԰he jl> &53LHX43H60\l$>ʼnHl ̋,M6}>)iEȟC $'S*U1̴޷D,U-U\5}~҆41Tdȼ)Q%Ssg$'R 讫 ^FRS 8@DO]|#WAWz*HL.y+QT޷HLRi*ԕO5*y cU<~'`? o\$1e>&Bd B^ R)-p#I-(cCTe>^ KJJ(ɠIiC)) Z(KJILdx_z+I-(cC`2hWj:p=pGLꥮLϣ$OCkzLϣD7:ÅܙFOCgR1ɟyhB0G,U-U’:≮L^ըnL0F:Xϼ~넥$ oL kgjm 4Aʇju=ʞB0FlL0Fr‰hK\*x&}`ꞑ/ KϣB4Q:XZ.U9͡}%HΪsrOr -Ͻ CkzL= @1ϼV`U 7 \ѡz#UBaLϕ0FrRS@`e*(W*>(ކ鞩NϽQ= Dz.,U-U\B3y(W!ԧMrgB0G2j\Sܩ`z#WM]TL= TW&}oCsD0G2ڵѡz#Xuw&}z#9QMD"z#Q-rܩ Q Qrgނ(]M3Ͻ ^榊)`\]ɟz= M]4+8(D7B(鞩NϽ$hVCN(Ͻ"oCq/UEUЭJ˛"%E0"TTSS^ $1M $/@Q\urgDUT(3"~U-U^/"}80k p3 ƆW$EDV`L6)B`mt7 2L0G!OtHF`CugVm#xUJqrh^~}r)T&"yq%Ue .LϣB0G$ {<\Cr*Y0ނOCqd`d]z_HRIRW"ئEB5LC~(:RR$ h)EF"gEFE$֍IiC+6yTOM͑:≮L^W%SUɊGOYԣ<'GhTzn<41:mtI*C1S^}rTpuw&*yo>9)STܚ'`?3ikzlT%O%S֭eɊB\UUrbFmѕ CrTqX4OCq;ikRÉOTжتBCήT9u=ʞ9L#D0G!ʋFZ79*>D0G%Su(ϼ4/CrLrLϕ0G"\ϽJ78-VIE*D^) ~(q@J"Qz"HEE(U눭$ oR׬ IiC|2h<+Xz2 &U-U+{*L\-֕xW2[u"J*jV]>MMMȪ^I"KJRpAe>(XEiW&X]w[/ $JsI%#E$'S*U1̴޲ nlRJEwy +Ͻ CrT~z#rը[wxUJqrh^~}r)T&"yq%Ue .LϣB0G$ {<\Cr*Y0z= ⑑u~$x)8XJQ:@%QP`b[0GHE`? o\KJWO\i% hc)Uz$ oMHs<'ТITHu)\ ȮJ= >9*Gw&*yO>9ЩT^Fѡ?M!G kЕ$)8VO!yquQ©ܘѼ8XMSrh8I빴%i*~ *k.LTG:⫓<7GKo OCUV;<~ZTE54-e76DJG!W*y :OCT]򷑢z#E)xO]!y"z#:wrg}9&X]w&}z#m .L@`EUJqrgހ~U$֢"(m̈$x5?$s ?6 @|ۘW+°c͹caX8G°{+|ۘV|V9b?0p~H> +c͹E>+ O!0p~H){X9o͹KV9Co`RX9Uz\R }1Ha#I#1R!+oJ&?$s 5͹n`#*n`e0A_9уG0@~ sq0s @#s H>ؐ>m-l~>m-l~>m_dsp7+Xj~H{ |ۛO OBF#9V#9W?6*6gb=)#AT(%?$sF?$sap"K퀈0{b0naq cG0{t.|ۘ\}(%?$s oa{F?$s b1#^Ғ9ol~>m/98/aIq͹шaxLV#9O%?$s#AIO'6F{`D>m̌WN~HF >m̌n>m̌=ndcF#9b1#D@|ۙH9F#9 cG22z1<`K#!ш`X~HCoK#!9b1#!;V#9G0B1b1#!,`#1b1#!=,`Kb1#"+~H}~H> cG0De`?$sCF#9%^ cG0Dw`?$sCF#9 oF?$s@~HF#9 F?$sAC~H# =|ۘހs`3|ۘߠCJ`nb#wD|ۘeP1Yb}*6+ҌOa`X~H+*6+)Q#|ۘ#1F?$sf~|ۘ#zT>mi##;FbH0F>sa*?$s`I#{bH0FsbG*?$s`}ndndnd*?$s${`8>m̑O)|ۙ ҕ9Ol#s$^s$@ ͹̐F|ۙ {`j>m̑ s@ ͹AO*?$s͹C?l@6 oC!J>m+|ۘ$ҕ9@e>m?6 C J {Cnbƽ1` |ۘҕ97x|ۘшbX~H,X91# z͹G͹͹na%_J2?$s RcG0Ҙ9o@26PF~H{@P>m0Oh ͹36`b~H؎>m z0J =n>m)#{'ŢK#1VbnnbgŦ~(1jJ9AJ>mZ҂G1h:O͹DK#BVbЏd?$s^+SG7A?6`N~Hsu?0p~H/G#n @d>mҨ?$st>ޕA# st#UnJ͹%ZŸJ\,9(]_OzSG1qG1pшb}F?$s`N~H.d~>m\$x5?$s ^)$?$s^ 9G0L_ 1|ۘ&U 5~O0X9`D|ۘ&Ol@6 ׶0A9#& ~F?$s?V`mlsG͹p(n` =|ۘcCG0YX91}#b҃cG0|>m1 `|ۘlsz>m^ 6/ ^anb}B9?d͹F?$s+@yT9oY#(}~H G{I#/l͹870‡~HJ=2PKndndyQ#(9hs% CG2P00ɯlK6/l͹Cl͹@@0a$|ۘd>>6϶͹A 1naP0`{`|ۘa# ~H0W퀈1p~~H0|#$}#) *?$s G͹P|ۘ)l͹?$s q87!nox\o"%9k87`|ۛ{I# 1no# Ɂ͹And ͹͹ ͹oJx~HL=( 9cG2t^ cG2p[nd`b~HP{ |ۙAL~H=t>mBCnhBO.?$sB"ЁDz͹09A#~wA#z`?$s~/L4?$s|X9}1#?9Cp9鍏%ÃG8>OLl~HϦ9w鍏>pL8?$sBpLl~Hp1#.zccG8I}06?$s9spccG8A},,@Cъ}4h~Lt~H掿a07ԟ909OdB6$x3?$sF"PJ~HT^Ȇ>m̨ =t>m̨>m$7?$s{#nq#G{'49 }"6`%~|>m+=1q#G+ y AnqoLv~HV19D1nwkC͹/ knw`~Hq;?$s X>mG;_|'Q#͹܇@0QAnqgq X>m5^ >sG8Snqޔ d ͹$P(?$s-{A1ҁA#{!0|ۘ{A17@|ۘ{!1.?$sY#ŇG1:ncG1!/9DJi1q#@gi }(9WAni~ A4J~H,6x`~H#G4/G4}Q.?$sB9d ͹(9͹W闟9G0Ts@P X>m'9An`$zcG0V6D1n` |ۘ+d"sa XF8J9 OҠGiF^sJzP9%?$sJ?P~HAP~H$P(?$sJ#P(?$sMP(?$sL+P~HG4oh<6u쀠4}샡nac@3K?$s z`?$s "0o3G0yA)#`͹߲͹zP(?$s-|N0?$s.}04?$s`?$slG͹V9/͹3?$sDz͹͹͹@{ |ۘ =t>mh{ |ۘzP(?$sLcF>nfmY~H7-Vod~>mn<G1#ncXL?$s?6 K|G0Z6Gp"B 0\,g`ϻxZCdF P1AZۘdB( =-m0 $AZۘ~X/D0 d X@BZۘF [sor³G9~H @@ 9O?$s(}³G9:_$4xV?+9@?knr \K`;@P|ۚ[859;(~H{ (>m@O1@P|ۜ៲I [s}( [s {!,-mq5.ȰH!4|ۙ`J~HpKG?$s8^s8 (>?$s8P~Hp҄SG3A9#'F#9x+I},g1zP~Hr[B)#߹#͞!9=>m΂_@΀͹7TtY9>Ȍ>m΀y d(s#x*|9Ȍ>m x%B0^OsG0^iG?$s~ 3G0^~Ȍ>m@N~H ͹G?$sx+ropZۘ=|ۘ!{"01GV# =nc~H9<9#_dE6͹UG5G5GޖG5@)sT=,gAw"s:^P6tgCd|ۙ^G3`N~Ht>Ȋ>m>mA# '΄K#_d(sV }06oՃ/hd>m[b1#}A#͹;3G50o p`#?$sX%xfkG~+s/+'uo+'u<>mβJguCG:pH~HX{9}23G:?9"!#d?Lk~h~H>?$s\za#(6Hgc/J OBJ HncK#&?$stY#$Pt$³G0܏҇a pP71#/L~H;>vz`6?$s }('?$s`=?$sz`~H=09҇a}8ޘOÀCG0(z`=?$s$^J?$s!ޘOG0cg`PޘO0#r|3G0dká#nvG#s< >#x|ۙJ OO39 ͹r#G3Гgg]nc6<~Y#3}('?$s`9saX~H _K#40h,9@ =g`&zPJ~H^A*?$sz ͹A9B_+?$sY#}³G00 cG0},`0 9p'=09|^G06`<6b1#Om YsF?$s`)9 ~̈́_p̀8O͹ cG6'~HH(~Hd|ۘ <` G049L|~H<6X~H#K#x>mV#9W},`|ۘQs#s0ϋ|3G3㟹#~#6AG0w] AWakn`"DZ G0{ j>m;Ȓ>m;>'a<̤;G0&}!#v#f9`}s,a㾘h~H"da៲x>mmͽ~Hg> cG0{@|ۘ ᙁ# K#  LFO͹cG0!++9 X~H O͹ш`QF?$sߥCL4?$s{'"1BW=kOfa/K#z'F#9=;9ҁA#z3G0C#s? 0 90zcG0Q1#xf |3bv9r? #7<@|ۘ PG~9'Tш`*x+TzPJ~H'~HOJ~H0pG`?$s ϥG0p=d`{'?$sx>m>#b1#|KF?$sX҂sG0$!#~;(~HAQCG2>#<5Dn`C`&a# 'Y?_>?$sa' \(|ۘE~O m鏏#= `{'a`=?$sҎdYOd}(|ۘ ?ȑG0 ~# "`4[hҌh{Ih>'`4!`gdG`4C#G#2#G1?1?$s@>m@G`6 }80GCx$zcG0>М|ۘ( 9?ᙙ#?ޔ9[C{醇a#za#@0/x>mXCCG0 !a#[J#d|ۘ_ h~HCo  ҁA#Aޔ Gz~HD_JG0$za#B%CG0?CG091x>m!9d?Lb "P1A̤Dnb `?$sxf9@0"Lga!{' H9PҎ*Jx~H@@>m#%s9a0x~H"d|ۘ}09 K#xf,?$sZۘakn`D{"XZۘ_൷0"7Hakn`D0"k [s , [s3^ZۘР-mƾФ-mkn`^Ӂkn`Oh. [s0{DaknaAkna3aknaDkna}`ZۘG% [s7Zۘ=-m@Zۘh-m=ZۘN`Q! [s0> [s@M" [s@%>Akn`H"{C0$?i(ZۘxZۘ2 [sSh-m @?4 [sP(G͹(~H/66E?$s 1$|a jO@ Cana #+9?$s 766l0"00&3g`N1#IOYIO҇`NȌ>m |ۘh8{AZۘǴakn`76s/#~cG0}099z2SG0F3?$s8{JG͹G9G0+9^a#I/9H1#I<3#G0('?$s "O`D~H#s Fތ%i@ZۘJOh-m%Ǵ T~Ȍ>m (%?$s};?$s;?$s1#3G0f:?$s@Y#͹ {!@|ۘK's a-m% G`SfG`RGCG0)0 ?$s`R$zPJ~H_cG0*f:?$s3G0<39$f:?$sH>t~H& Ga0&#L<38?$s9X3G0+{Us|37?$s/ Cn` %9(0`~H<3T~HoA9#M |39jna46t~Hkt~HO=G͹a#<39h7t~H/͹t^1#-t~Hxf:?$s ^r Ga8{Cna8Ct~H Gb)cG1P̄)t~HB |392a#21#͹? Gd ̄$f:?$s!1<|ۘ,m(xf€<9 1#P Q#P|39>P6('?$s/a##Od(s800Ȍ>m ~G00>9}g`` f:?$s6?$s#Y#t~H" G`b1# cG01X B7b?G/# pknb8 !@|ۘG|>m Dan`d f$f(xf:?$s" 39P6` (D|ۘL|ۘͼ#x0?$s]~' ~Gb@@&>mHHY#9B9#P&?$s@9ϥ`ig^~HG04N9?hs[@&>m @/#?6#Տ?6w͹P 68`~Hϸ$?$sCJbIG1&JbH7P~H$oJbH@ x\ 95?$sz. g`n|N9>$9p>' ~H߸V~H#x0?$s<. `r18`~H'~' ypH?$s#>' K$9AG1)GG1)W J|N9@#!x\/J`tepx\ 95?$s ~He' ?G0;9$9{@|ۘ>N #c0?$spbZ_bX{@|ۘ#{@&>mD86G0=s9`j>m@IG0> p>m87?$s`|^86O`~#|N9ء8`~H#G7Gdш2/YKpY N8*Y ~' e/J2ҁA#ҁA# x\ 8A'5?$qȼ. g2_2 [' dhqB"8~H ͸"y88"{# L|ی!ҁA#7p~H \2,@=b1#0=V#8o2#~H"# EbdV|2+|N8ȬG$8#"8`~H qn2_1n2d^' d8 `p>mIoG$|N8$sA"/ A!υ,A pE2,#$8Ȱ3=(8ȰP(?$q`KP~H"'C5?$q6%8`0?$qx0?$qHb1#_X~H WpA+GGO+?$qhш2-{X~H"Ծ' dZ_pH?$qh{pE#D?ˮ!#_GtAP~H.oJ Od\1P~H"(8ȸP(?$qpPP~H Y@A1I#j.Od#`pK?$qNecG2 0?$qN;$8b'|ی>??$qx%|ی/n2/ޔ??$qx{`p>mE?V~H /F#8(2V#8( N8(qPqPqqx0?$q?l͸oF#8b1#8p@J$8,qS?hqP0|یB2x0?$qypC 8ġn2 ~I#ؔ>mF|,GN8p>mF',Fk턱n2 A#d/l@6 `8>mAJ_$?$qRy 3"G8~;?$q.~H/0?$qo2 {`2>m^^؀>m^l͸I턱n2L^x>mIn2L~؀>mI`8>mI/͸=>x>mIsn2Ql͸@d'G(' dIp#?$q.zPJ~H(b Oe T8•2@A# ?p_#A#*e#{@&>m` |N8860@2?$q!#x0?$qf8_G$?$qF8608!GD@|ی{@&>mQ'3GD#'2 ;6(_j~H(n2R,JR1JM2RspJV\dG)Ol͸HcG)!+en2#qi}~H(ͼ2n2WGF };6(F#80{F?$qan2#x0?$q`QF%³G*q_pJ#n2Tn2U_G*<|ی~H%@X~H%An2T cGGSpH?$q8`~H1%8`~H1\f! b0?$q' f!#mR' d 6 `|ی2 ͸*l͸*l ͸+{a$|ی~>6 {AZی$P-mS{@|ی{sGL~:6)x2:6! 2͸f ~H%Cd2YO͸a߼T~H%Qn2X}G-CdcKB͸hHȘKo͸r dt>mFB Ghq%GǴ͸ȇQ#Cd4<`Z~H%Cd(?$qqn2^`2` t>mL `2`:6&?$q͸x)Gn2#8ɍt>mLLG1:6&!#H 8ɔ:6&C 8ɐ@2 Ghq Gg͸H2f }t>mLxd d =t>mLoFCdhH,?$q{@|ی+d@|ی*RP~H&Yn2h$x) dF:6 V~H ^:6 =MF:6&=#ߴdj25|N0?$qA#8/%P~H ϸ#?$qX<8=|یqa#W?6# d&(#?$qG͸q?2 G͸/ #n2 29"P~H#}#^Ѐ>mUd~>mUEUY2|یOh͸ʠq#eP=?$qn2tAGdBXj~H*>JeYGX`~H+ '2BP 80JfJf͸d|یևa#6Gfa#v~H+|ی+ OduO q2Gdt}GB/G ?2'2;92;h@6!^|یSGG;5n2v =;5?$q͸IXj~H'aCd%2<8t%x`~H6 q#Ѐ>ml!0W/d~>mWP?$q|V8_d~>mWW W2FGeya#_d~>mO5?$qUAn2x@>>mO^Ђ>mO2zЀ>mGd~>mG2m@4a#M}|یA?6#{#n2|sA]dd~>mAa#fJdFЀ>m@Dq5?$qaA?$qN0?$qN0?$qA@H=|یDGdoSG0n2dd~>m@LBXj~H (@?$q qd~>m@|V8q/2G q D2~B#dx`~H (>g2F~H ͸?d~>m@a#x=|یq?6 oAm@TFGdD2> ~H o!#H2@s͸9/d~>mAMXj~H# 818H mH#2A^|یAG ^+ Ody(@?$qx&?$q"P~H ,;P~H .A#?$q[q#V~H  |ی{#n2T+ Od> G|Od8AGB#ϒGJd| 8(@?$qJdPl~H >_@>VGUx+A##`?$q"6"{Bq~SG,2`~H!=|یHW͸ȅ_G͸Ȅ|ی!GA6! =}( 8DaB,|>mB2LOd# 6!&zPJ~H B_A)#ҕ8 =(%?$q#h>6 H= [q$?hkn2B [q%hC [q%hd @kn2 =>mBA?d$h$qg8 oh$q#|یH P~H! #z1B@LV#8HN8pH~H LI흏q&5e>I6 M_8' d g27|ی0p@#;' d ?$q'>m@='6 lqA |ی҂SG8҂SG8Gb1#&+dGG $^d$}~H!$X~H!%?G ##d%9F?$qG F sG Ad%b1##7?$q(wш22' d ( d d ?b1#@I8`~H 2F?$qx+d P8K}~H RX~H RGp@@n~H RV#8~' d$^F?$q<2N8F sGHycGH?$qш2G~ cG 2D?#j/F#8+d F' d G sGБcGX~H Z$0?$q.x( d F?$q.UF?$q.;8`~H \<2Cш2_BqG x( d'~H!9Bp78`~H!8$x( dE1DW|2"8`~H"*#dE|2"2"~ sG!"b1#2B0?$qш2B cG!o2B|2#=cG+dF48`~H"5 sG?F#8Ȍ2#22F?$qX~H!<#y7?$q=~H!' dG$@7dGEcG2#N8Ȏ '6"=>I6"8ш2# cGGq >m@G'~@ȟqn2B7 G͸͸=6 ghq3S퇃d cd ׶#d #d Cd Jg2ш222_퀈X1n2Ҁ#,{`(>m@ 1@<2p@%}!#dH q!DF#8Ȑx+dHUpDk͸Ȑ6"@8Ȑ#`@St@Зш2}( 8 cGE^' d G;6 h }#%͸2F?$q5 2~' d @S;6 j@ =n2k흏q6s\~H l_#F#8P?$q6|2#{gcdIAcGE~ cGb8`~H"H{gcdI}~H"HHV#8Ȓ$x0?$q7~H nGF?$q7Ep@=n2۰|ی{gcd o8ǴG͸h$q8l|یpH~H pz1@AV#82an2wn2$86 r:k흏q9@=6 r^ q9l@6 r^q9l|یD|یA#dJS͸Ȕ}#B?8ˏd0h~H tш2AsGX~H t|N8cG cG' dF#822F#8x+d0?$q<l~>m@퀈Odn2%=|>mDGA |یG͸PN~H z"6 z 0?$q='Gᷴ͸(CG+?$q>>@x0?$q>(%?$q?#8Y#2J OdϾG#L8`~H ~#{a|یb8 YpH`D~H$08@ (=)##JF~H!D##%?$q$56,A/͸n2opX{a|ی)#|N80n2K Of3h2|ی }>mm0m ' fЛA9#G6['5G0~HZJ5pƱ#a3р#d?J4ȧ#2g4ɧsGe?Gf ƙa`8"8!# iGdK#4҇4?CiOFi( 8C478`~HMJ OipƚlA6M qJ(?$qϼN8`]#i4bAO q+?$q'88ИS hN>mƄᏉGzG E8R>H6AHBP|ۍ!3#$?F#8 cG"w# 8~F?$q!ƈ4D~HDA3X~HD@a6DB_G 8`~HB}D4h+^H6AYsG /J h+ F?$qHV#8VC8n~HB4?$qIhR;?$qHcG ( 8X+h,EpƂF#8Xx+h,[pƂҀ##ш4 cG 4h~H@x+ho4Oh34cG Cb1#N8Z҇43Gp iL#8}!# ( 8ЩhT[F?$qQsG'# 23Gz1ƅAƅ@# ?Jx~HBCG >h.AcG ~ cG |N8\Ҟ8\҇4zSG #?$qϟ8^҂sG ̽~HAzb1#|N8^=4)#8g4F q0cG# cG#N8!w# @P|ۍ cGA3X~H@G8n~H@ GcJ(?$q}(ƅj=(~~HB ?$qX҇4+SG>Ɓ?h$qFepƁ1n4x0?$qF}Oh' hGch߶G͸ n4H^56DIn4Hx>mƉ͸$kn4 =6@{bl͸$>؀>mƁ!h qH6@zPN~H@"{`2>mƁ 4 a,|ۍ 4,'|ۍ >' hX =>mƅA# ?$?$qo#~h0apƃypƃ6A{`|ۍ]n4 pX~H@Gl͸%qJ chhqJ *4 @͸%(~~HBуG@\ƅ' hZ|N8ӧ q@S1n4{`&>mƝOl͸Ӡ]턱n4{`&>mƅwqp*X_͸к !# h\g#h\#{bh_l<6@҇4 h͸'khؐ>mƁ8g@n4 }hcG炱Ɓ8}pƁ8`|ۍpn4 ‡3G CF#8cƃ4CG @OCh1>6A A$|ۍ"8b^ؐ>mƃqyG# Ǿ' h |ۍ_l~>mƁ@b@'͸(>6@ =p>mƁ@pƀQ퀘pMq qn4`|ۍ8<8`~H@pn4Un4kp;n4}6Dl͸)#h?hb1#mƃ#?lH6A/ $q >ؐ>mƃ h2OlqE8`~HCXJ hPN~H@cA9#4 V4 @On4 B'G͸)/d|ۍA9#/҂sGxSA9#<@Tƞa#mƉG4L!zXh =T>mƉH#}óG'-Ɖ11# 89@ ~HD4N!?$qp`?$qq#Q# },4P }>mƊ7x>mƊG4P18@:h(( 8@M3GBE@Ɛ#!6iҀ#!Ɵh&q?iG|A 8'sG|(x0?$q}#@&?$q,8 G͸#GKơ##BGҁA#B (8"܈ơ0V~HH8 Oi=Ƒ>8 (O͸!Ҁ#"},4R)P~HE <6E!ޣG)~HE&~q׶|ۍlq 6~HE I킡n4R=#g4{#?$qbGFF=,4T0O͸RG4T[`?$qOh~HECd|ۍ?$qK#4T^* zhE8G~1g5ƢOh&qOG+18XFG+ >??$q# Ɗq1#\҂SG#GJ8><~HW,41aA9# BO܌Ɔ$?J i$^i!܌ƒYCGHL6@h h@\>mƁRg4 hGj)Q#%{ҌOi(͸ShE [q4?4J#ah3OhG6A@f>mƃ0*n41 G4Xk,{B8,А>mƋBQ#J4X$b!#B@-Sho4Z=J?$qqn4Z= |ۍoG.1n4\͸p{B@.a~HEG. ?~HC"hH6C(=|ۍ ? 8!(Ɔ@͸{B@x%8h{@f>mƃ@Eh4{B@ |bh4>|~HAqn4`E~HF/hH6Fho#-J?$qn4`|bh |ۍg#q!(ƀ ͸Ah`,~H@7J?$q%8#qbh{B@1$qn4bK~HF&Ў>mƌAo$q 8ш!(ƌA״#qn4bbhh ͸ђ?hG6F@ hɇBQ#>h$b!#w$q{B@3B83scG3%J?$q3_hG6F`͸њG =|ۍ chh |ۍ |bhhm@Ɔ2# "8ѣ8ѣp~HF܀~HFI#А>mƍ͸Ѡ~H@ }|ۍH(n4/|`,~H@[~H@͸BQ#H{B@qn4!!(ƍA/$qPMhBQ#hG6FB@5`,~HF1 G4j= |ۍ/h ͸ѨIJ?$qP>n4j͸S~HCS_hH6CQ#qhjw~HCR$q @f>mƆBQ# DohH6CP0qn45bhؓ͸Ѱ&n4lK#%J?$qe>Ў>mƍB@6%8jE@ƃP͸jЎ>mƃP;|ۍ J?$qXЎ>mƁ`FJ?$q-|ۍ |ۍ Ǿ1 G47ޔhn>2#<~HCp?$q2n48А>mƃa״#qy~HA B8 ͸l!|`,~HAKJ?$q %8_͸x%8Ǵ$q h ͸x%8|~H@ehߌD?$q >1Ƥk͸ԇ?~HR#qGN2qn4!(Ɠ#q4BJ?$qgNCJ?$qFЎ>mƥ!(ƥА>mƥhG6R0?$qDGFn5({@f>mƥbh{B@7Ў>mƍx%8ѽ>А>mƍ^Ў>mƍǟ 8Ѹ7J?$qp"n4nqp~HS |ۍL(qn50!(Ʀ |ۍLА>mƦ4XƦ9J?$q#qO͸G |ۍL"%8Ҁki@@f>mƔ$q!(ƔJ4IG58SGjq8/jp3n4iHy)# =|ۍ bhB88%8 B88bhᏴ#qO4r%8ɯchGBQ##qBQ#$q>Ў>mƨ`,~HT>1 G5A$q }36T(J?$q$qG͸G = |ۍP^Ў>mƨ 1 G4 #q^ } |ۍcGG} |ۍ_~1 G4 >А>mƁx B8BQ#͸/?hH6@IXƇ$^1 G49'qn49G hr!(ƕhG6Jh ͸ҠK iRGTЎ>mƕǴciShH6GNx%8B8:h ͸{B@:|biXB8Vq`] iX~HK}(8Eii'cih(n4/GhH6@͸0%80h ͸0 |ۍRE~HT|~HT|d#G |ۍRo>CG =36T$q|` ?$q= |ۍT =|ۍTx%8@] j͸BOBQ#V0qn5\А>mƫcG!(ƫx%8`3 jqn5X~HKА>mƗ =|ۍ.`,~HK%81 G4B@\>Ў>mƗbip{B8\А>mƗip~HC͸͸GG$qG ~9h7/hH6A{B8 _BQ#~9hv |ۍ'#qHJ?$q'4~J~HAGO9#ONhs81/#ch{B@,>0?$qbmƁ~H@|ۍ`%n4 8%8+n4B8mƏB8<-J?$q}|ۍ |ۍmƁ^А>mƁcG1 G4 84F~H@ =|ۍ@,n4 4BQ#h͸B8яBQ#hK#I|b8 {B@/hG6CБ~H@|`ƀ8y~H@xƀ8#s8W$qAGƀ=/Nhxƀ<|ۍxKXƀmƀi#WBQ#=|ۍx%8@͸B4J?$q/hG6L bi#q iy#0mƘ 1 G4͸{B@_G '4?ưƁNhG1:?$qj;?$qj } |ۍQ 'G4 Bo9#Q/'G4>w"8'G4>aG#qKXƇOBQ#~Ў>mƏ>0?$q^1 G4|Ў>mƏ4|bh=|ۍo!(Ɓ?#ql1XƁ!(Ɓ8n4 ״#ql x%86hG6@ = |ۍa'cGOBQ#?hG6@" |ۍ4*mƀD&%8v'qn4hH6Aد!(ƀL!{B@0hOBQ#8z[~HA8z b4?$qA##͸g hcG?9J?$qh"{B@?  8~H@( |ۍ'#q%J?$q{B@@[h|bhO͸ hH6@(>0?$q1 G4q h͸x%8qn44~А>mƀ[~H@ޔ??$qnGCG҇4 |ۍCG !$ƈ??$qJ8ό8:CCGd~??$qv|`Ɓ؁h8;(~~HAJ8~zPƈ?hh14A 3?$qh~H@w҇4C/J87 h3҇4)|ۍ0\~H@},|ۍ.@P|ۍG`&?$qCA)#@v>mƀYWGaߥ444៴$qh͸ BPp_an4J4# Chohh=/i͸=P(?$qz>>mƀ`h|ۍI#{B8.ȇ͸ h~1 G4 "6@2 =36@21J?$q{B8AEq{!(ƀhzP>?$qmh@qOD>mƄߌBQ#/ȇ͸ qn4g~1 G4^h8a#:qn4/q>0?$q1 G4kh1n4}!n4x%8~H@: |ۍ>41 G4"8D>mƀt=|ۍcG¿G͸>{dChx%8 ~H@=hG6@<dCh0?$qO~H@< =|ۍ@f>mƀx!n4BQ#]Eh^1 G4Gh dChUhh1 G4B8}!n47J?$q.|ۍ ͸Ђ0ȇ͸Ђ!(Ƅҁ#""8?D>mƁ*qn40?$q~!(ƁB8#q~ bh q|ۍD>mƂGG"8_"6@@ |ۍ4 bh?͸D>mƀ%8Є[$Ƅ chB<ȇ͸Є=XƄ!BQ#@EhBOh ͸Є^BQ#^h !n4|ۍ(=36A!(Ƃ1 G4"{@f>mƄ@ȇ͸Ј>0%?$q#8Ј>0Ƃ"8?$q#ql|ۍD 8D%8Da~HA!{dCh"Gb4?$q=!n4A״#q|bh"?#q^/BQ#*ȇ͸~Ў>mƀ!(ƀ$|kh"6@D͸>1 G4bl|ۍhG6@K~H@[G0dCh͸BQ#!{B80Dȇ͸GBQ##CG͸G{!(Ƃ9D>mƂ9#q!(Ƃ;sGl|ۍpqn4G3/hD>mƀ͸J?$q#hG6@F1!(ƀ/9# dCh |ۍ"GAƀD>mƀhG6@J)J?$q%ƀ{dCh A״#q%1 G4Ƃ@dCh$B8 bh$_hG6A !n41 G4wD>mƀƀ{B8f1 G4#CG`.qn4GBQ#8]h J?$q'kh qn4x%8}|ۍ8>J?$q' 9?$q'chG -{B8 .x%8IG ]q#{B8 "GBQ#Ah%/l|ۍ|bh%??$q%zPƀ҇4~@}CG@I4+g4>??$qf?$q!xcG_3?$q)|c1#HCGf?$q*mƄg~0?$qD>mƂzJ8OPƂzJ8O҇4F>mƂmG 48 (~~H@`҇4 0?$q08ǶH>mƀ88ЎG#q#xf4#J8Ў$Pƀ G͸(#J8zPƀ =G͸1:?$q3&6@f(~~H@ a(ƀ#hHPN~H@hdh ^|ۍA ҂sGW>g4܌ƀ؋F~H@l qn4J4GCGF^hI(~~HBH6@n}Gq#%G4 |bT~H@p$Ĩƀ%G4%'Q#-яq:1*?$q;4ƀoAI# `6@z׷X_nh#!8 &?$q]͸ {@f>mƈc/ln>mƈcH8 G"8 {4C?h ͸ &z@ƈaCSG!^~HAE8Q } d~HAFlq_ h(/h ͸Q>#o9#G Yh(Gb,J?$q#/hG6LMbi B8b!x%8;qn5o#Z+J?$qKbj}|ۍ[gBQ#Z!zAy#Z^Ў>mƭ  8բWBQ#q{B8J?$q͸ }`,~Hx!(qo^q}/Gdm}dAy#!Ay#= ^Ў>m|`,~Hm"J?$qo#q/1n6/mߌBQ#E6"m_H/?$qoH/?$q=|ۍ=X%8`Em$|ۍ^|ۍmH3?$q} } d~HbbD?$q2H/?$q5>q0>#?D?$q06' )?$q:?hG6bt1 G6'9G H/?$q8:qn6' 8؜CJ?$q8~HaI'#q!(•~Ў>mš0?$qBQ# ?l)bl͸/BQ#B8" 0?$q*bl{B8"^q lBJ?$ql*q>G ?8T$zAy#G"G ~^~Hbqn6( 8ؠ$x%8ؠ=|ۍ1n6͸VBQ#uBcG 76aXG6϶ ͸V} )?$qH͸ؤ{@f>m$1 G6)=!1#H>|ۍBg lR*6aa'6 T>m~Ў>m}36acG H8XT>mG6߶ ͸ wG6 T>mG6`|ۍ'6{@f>mM͸Z!8Zg͸ZzBcG k#*6ah{g6~2?$q&CG DH OmQm>1 G6#qbm'qn6MJ?$qP͸ةόlTK~Hb!(@qP{~Hap"|ۍq/~Haq&?$qT>mI#= )?$qal/q/l/4J?$qG _qBJ?$q3~HdcHL~Hd`9͸#G#~Hdb/8! } d~H`"8!9G G6DD?$qB #G,}T>mcI# [l%8"hG6`CJ?$qD͸ XY~H` 2|ۍ0!(͸x%8oH/?$q ~^~H` = JGGAy#|ۍ? 8ج!(`1n6+>J?$qX@qn6+1 G6Ў>mcGaBQ#3?ln>mclJ?$qF|ۍ0klGa͸#Oln>mIX~Hdq@1n6H%8!76dbl ~2#Ag&?$qH6lސ2?$qHs)#Aߤ 8$a6  l ͸$ >łH8ذlX lXz@ł"8ذ$zAy#H8`EY#} d~HaG G͸`?J?$q=|ۍ_!(*?hG6`!((4qn6 X|`,~H`>J?$qJqJЎ>mݯ!(hG6n>1 G6B8tJXŸG#l]h ͸ظ!(ïln>m͸ظ{~Hbqn6.|ۍ?l\m8{B8Ya͸'bl1S킡n6W#q =36a{cqn6^1 G6/Olqx{B8gcl^|ۍįGސ@5l2?$qPAPGv|ۍ81n6w76`%8s/H8lq;͸2?$q^*6`|ۍ8#Gp>P%|ۍ@Q`|ۍWcl %!d#G !1#@q{@f>m!76aϤ l2l2} "|ۍA3G6H l`G60 T>m )?$q/qn60!( ͸$x%8)#J?$qR |ۍ/G#H/?$qR|ۍy#!(H~Ho{cqn6%qn6/BQ#gm᷶76o 8%8BQ#|ۍ"%80J>mɄom('^Qn6N =l~HdJ>mom((kJ>m?J>m6P#{iG͸ G6|ۍ{iG͸8#6oޔ mJ>mP(?$qJ On/J7iG͸OG@8 M헏q@J>m+O͸ kqB7|ۍ?l|ۍG|ۍޖG)9ld|ۍG|ۍ"87,6c`?$qcK#zIn'$7iG͸_@?I9#߶|ۍP~Hq~0%?$qzB#b!#Aҏqoc6cOlb6ҏqT~1#l|ۍ~Qn6 J6 GGa3҂SGbGGJ m(`?$q/m(L,6m( J>m00ҏqla6eҏq[6eޖG, iG͸`{iG͸h&0-l-miAkn62 9?$q6}#?6^eA9##r3G/(~~Hf(6f&ِ1S홏q' ̈38ْ_ 6d73?$q%lḞ͸d|ۍfclf~Hc0}@a26f`<6faf>m=,6f>٘Gd>mG26flN)#H{F'6"*?$q mƷ̇͸Շ܈ơD~Hf3q`8ٰM̀36aޔ l5҂SG l3?$qՏf>mޔP~H`4 [qX٨Zۍq4lpq{`|ۍGH l=Z>mi?cl%8-^Ў>mhD|ۍ"hWBQ#= '?$q\ |ۍh ͸.-6`x%8. >8ls6Z>m`qn6 8l!x%8l= (Qlcl=Z>m(!((#b!#P{`|ۍPB8 8-6`=J?$q ~1Gn7 {B8G7!ߌBQ#zAy#Ў>mh ͸܀Yn7 ~Hiͽ!1#Sn6H8pk킡n6@Ӂ#qk!(8ܠ3n7(#GT>m )?$qpMl{@f>mh7-J?$qu>-6f d~HfCl@R~HfEn6n} d~Hf]킡n70naO nbOlq?lq d~Hs T>m ?lqH8ڂ_ OmB?hG6j ~0?$q bm@m@y6@R~Hj'#qEP"%8^2?$q z@R~Hs@4O#GW"8H/?$q״#q78~HjQzBcGR-6jL|ۍ5|ۍa#GR*6jD/H OlJ?$qG6q ͸'6p^q.h8!`J~Hg"lqAlY#J?$q 8Ϥ8{~Hg!l%%8/fz П8w?$qȯ;8o`,<3'69l|ۍH~8ڠP>m_|ۍ}(%?$q͸~1SG:p~HgB@TՑ|`բ#O3GV|b6_n>mq1#(%?$qO6GZ cGZ=(%?$q`I훏q`[CG >cGGJ80d|ۍ)PJ~HtA)#17Iϥ7Mq1# G7HM7Pc"?$q~G7R#<8A܈r#GE~Hu ~GS醇7Y'x>m}?$qzXnnmsG\18 =qn6l|ۍol|ۍflv=-m`gXZۍw-mËjBl87Blx0GG;4Q##8rmB?G=nn6<5|ۍ:6cc͸Al|ۍ2_?lv>m{@N>m `|ۍ0"6` =,6` =l n6 L#F>8'6={҉lz~|ۍMZۍ@?kn6=llzZۍs^8 [q{`-m8lǶA6`#0~H`w#xF~H`2 }6`~cGa_L~H` ҂SGU퀸r#Gl`-m`>` >m{bCL~Hc~|ۍ+ Ol|oAn6>d~>m7a#͸{a|ۍc_l!ql: l"q{a|ۍ11n6 #͸V8϶͸w͸vB6a]An6͸xD6`$ }>mH{b q͸ >+ Ol_6BGL{#n6f+ Olo#a|ۍHCG18a|ۍa|ۍ>mEAn6pH~Ha l͸ |ۍ?l"q6~B6`(( Bl"q lawkn63`b~H`86`D$8g1?$qn6|ۍs`b~H`{@|ۍq#GlpH~H`*18`~H`*2UQA#=8`~H`*>Tg686`(88lmȓpGp0?$ql~?$qG8`~Hc߂l~=Q#G͸#mЃ6~H`(}!#l=|ۍDg6>' l|ۍG`n6' qv؎>mؑp?`b~Ha @|ۍ6w͸|Cl?<#l?j~Ha{@|ۍ_#G ~86d(8p>m"OOl86`6lx+G @|ۍ?(8<^86`6lclGCl#%dNg6RX{@|ۍm\*6`0 1.~H`28`~H`Qp ҂sG)sG(8`~H`B8`~H`06an6n6Jg6sGCG##Olla#}@\dx0?$q >' lH~9?$q#8n~H`4|G潠p>mxYxҀ#$?$q^86`<@x&x+G/`Z~H`>q |(zZl})#_@~H` (UGg6v~H`J??$q炰'?$qO1?$q{b(C?l&؂ b`\b@€Zۍ"7C [q~(Zۍ=Akn6o@` l" [q~PaHn6q9#' l hqG?'6'G^F?$q /V#8' lRp>m@wlGE'6! ~Hb cG0?$qlBU8؅gD#GlB<6!o6!W͸؄$;6PxT6]b1#^ cG%' l hq_~Ha{P8A~HaAV#8A ' l w͸AGB |/l! |6P~Hb HP~Hb PP~Ha G<.SG~Ha#\l"F?$q%x+l"x0?$q,8`~Ha~HaAb1#PF?$q|N8E Gx0?$ql#%V#8F48`~HaopH?$q<8`~HacGX~Ha#x0?$q<. 6V~H`B,8`~H`ClL6!GG6 ш6"$0?$q! G$' l~H`DKF?$q"0?$q"-$8ߠq"@͸n6e~ q.Ol75?$qGpK?$q_l#|6G 8Fb1#pF?$q$x0?$q%x\lb1#/b1#G3O A#ߣlϼ6aG0{pH?$q# F?$q#|6bWG2 1b1#$^ cGC/6GE^F?$q$X~H`Hx0?$q$' l  A# {bXPE퀘XP8l͸d~>mSGPqP턑n67#(ay##A턑n6 >m@=Qa#"H ]@ _.?$q&'n6<>mel g1?$q&l@6`N'pȄGpUl }p>mo 6)l G1?$q ͸=p>my8 8l_#Ml$x+G 8>mH>q9#* "O#G D^P'67͸J@Q#P'6l% P l ͸!#@yOl 'cl ohq(!@2?$q>N'?$qXl~86`9#"(GA# J@67cl%~86a,6d~Ha,{@|ۍOl Qx+GUn6#(G6B`b~H`T0(8-V'6B_1?$qn6|j~H` 3Iϔ#GH@|ۍ$³GHG ~ a ͸L?@F>m` zD>m`=8`~Ha0C8`~Ha0&x0?$q$0?$q+"8`~H`V0?$q+0?$q+/Gl ~ cGsG8ǠClB6gOlD q1x+lJN8I?$qF?$qb1#(B8n~Ha6@F>mJ8#6`Z="6`Z}(~H`Z q. }~H`]#pz1n6Y+#shq#1PF?$qJ8`~Hd 8o6B0?$qypBG!o6##6b0 zD>m`}p`pa#_G x0?$qKpz_6F#8 cG#mCGG#^V`bk ͸ޔ&8~H`bX~H`b N8JB?$q1n6!3ш6"G6b:6#=(M?$q/F#8؎eF?$q68n~Hb=~~Hb9lG}~Hb8=V#8؎=6b8F8`~H`e$6`decG$ cG*N8p@~H`dl G cG F?$q2N8$6`fq3(l An6bGlsGXш6^ cGY߉GXcGXKV#8‡G TlH *G@_ G͸z`Zۍ J`h1 [q4@ l AWB>m3q598`~H`kO#l A q50?$q5?l͸' l B$q5' l Bo6gn6lG͸9A9#%k`">mط҂sGc_l%q6W퀈aߥ6;6`l6`l}('?$q6x>m 6`l؀>m =6`lCđG#lIq%J lIclI{`">mĔ8ؒ͸ؒq$<ĐuB#lI8ؒ^I6bH{`">mĒ6l ͸Yl 6`nmGu~:6`o_~H`n<8U8OlJ6`n|'6a퀈p;A턱n6;6`p1CGn6͸l#ln6&n6 q9>Xj~H`r}(>?$q9d(q9 8?6bWĠ҂sGW?6bP!n6%'Xj~HbR8ؔ ġ҄#G76H!n6@q:Q} a##n6d+ Ol }!n6od~>ma#2@P|ۍ#8Gl>@P|ۍGXj~H`xN\~H`x#P?$q<@|ۍ랚3G?$q?!ȏl}`8/M#J~HvǠD>m/ 7џ8d~>m m W͸+ O@#}#F>mJ8L{#n _d͸La#g c@&QCG ײ?60>Xj~H8@hp@hq/@~Y#gJ~HJ~H55?$qR|ۈSGwG@V8+>g 7-m`z-me>-m` z [qX=Zۈ3kn w6 [q |ۈ1|ۈ|ۈ*G@+ O@L|~H/?6x5?$qAn pqSG z`?$qz =-6P5G@*V8.0h`~Hxa# ~-8/ |0 <0 @@ O@?$q8 AI#/`~H0c͸m $% $K $Sqn $~H@G@H?Xj~H@{O@H0|~H@*G@HmG@, #WSG_pF~H{@|ۈ_d~>m- |X 0@ g?$q%$SL /͸>+ O@ B7mt>m<#qcm/L  |ۈ0a#0@`~HL /a#0g hq'C@ 08{@|ۈ8{GpG@ ? ?81#`P~HğqbҀ#SG&|ۈ+ O@L' n `,?$qC@ X.G@ L qgSG:/#@`~H9Xj~H@)n p"8MX~HPEn %{ %^|ۈ MV8u͸<:~HQa##hqd;X~H=t>m܈ 6R a#H0?$q) Gg x{@|ۈG͸Un xŀx~H?$qSG<08>:6b?8{#n &5?$q0#n &>Xj~Ha%?$q:?hq9GOhq@B>mI͸(x5?$qA@`~H.x( @SG!-3G!:6*!{@|ۈ`8=Xj~H!#ŀx~H!7%?$q{@|ۈC@@|ۈa8X@k͸^+ OA@`~H# |V8g F@~|ۈ cn ŀx~HQxa8SGB;?$q$hq Un Ed~>m+ O@&SG"_hqI!w?6^+ O@R_P# )zSG?6y Ҟ8H# p#-mG( [qQoL~H?q@q@#" + OA0?$qYd+ O@V@V6d~>mt@|ۈ Ǿ,G 3G +<0ApMn >:6 d~>m0-?$qf~|ۈ#QOd~>mޘOAIXj~HC@1Uူ͸bV8 G$G C@r>m#n C B$x( @  h>C@ ~:6Vem |V8180сA#d~>m sG& + O@ SGoxX ^:6͇Gb7?6JXj~H܌gG͸ @[_G_d~>mJ -|V8"{#n -V8P8@`~H^+ O@\eg .7/hqpy?$qpLXj~H/ "hq{@|ۈ@/͸d!x5?$q=t>mG{@|ۈB84|ۈE+ O@pH~H$0(?$qh~|ۈBsG5?$qx%G@^_`?$qxB  0{#n 05?$q~'8|ۈ {#n a#"# {0?$q @Un 3G@qn 1"`8ė &^+ O@b  C@b:6 K͸SG)`,?$qC@d!x@O͸(x5?$qO͸f`?$qa#g~)#`En   3qoSGǠ@4>P Gq@Xj~H{@|ۈ ?#G5?$q҂sGg 4~g 4/hq08E|ۈ$1Xj~H F~H `?$qOd~>m V8B?SGHK ҇ +Ҟ8#P iG@5m^ @L B?6#5?$qj)#QҞ8l!}ȏ@ 7T>md~>ma#aς@`~HX V8pF~HX^:6X|ۈ`n _q_# g ͸n^:6#q1Xj~HJx~Homa#h/<08~@ @q-V8^Ҟ8V>mn }5?$qlV86 @B _m;R @Dd~>mV8?Jx~H )#$7 G͸J}Ha#$ AP8@ pF~H{@|ۈ/d~>m /͸:/#xa88a#g N^:6wn /L qV8U^OA( @|ۈ% # G 7n 7d~>m9( A0@`~H o o8`in =Lt>m>,GL<0A1a# <0@=t>m ͸@P q Jx~H zSGN t>m8q?6 /CA9SGN<,SGN:6$^ #=t>m R&G SgCG)Od~>m ASG)ޔ B?mA ͸ + O@P8Y x5?$q#?$q +qcn V}m ),^:6an Z -O k(~HSG-=)#Jx~H`״͸=X~H`#?6`a#a#yO@ ?[ox#nFb+wpcŻV[ŻV_ŻViŻVmŻVx#nFb+9Fb+UŻW_0;Xwp`v-±0;[`v-³`v-°wp#n[`wp@Fb+[b0;XŻVطw G0;XKFb+ [b/0;XPFb+<طw ğ`v-±/wpŻ0;/`v-.x#n)#FbRR['P-GVwpqnyX-O+Ż\mb8w Ja!([>-9' -:% wpN Bn ǟJ'>-87BPw'J|!([q B'Gw>TB*w'8@$-7w'TBܜ$yP wrp@$-_w' TBܜ&P wrqʀH[*!nN#P wrq#ʀH[>TBܜJ_w(B*!nPE@$->TBܡ*!nPG@$-~TBܠY@$-w(%yP wr>TBܢ/aw(+ EB_aw(-Vwraw(2VwrOaw(6Vwr[ n +h[+Vзw|YୡnVb0}1X wtb?`-фo`-ф`-ф`-ф`-ф`-ф`-ф`-[h[_nPwPw EB!煢nPwnnr? w-, w{`A |,"nw,"|,","xXE>ntnr w[-i`A6 w{,"᷅[?[G[---_[w`A; w{`AxXEǾnvns wy`A|,"-? w{npy`AnKP wxg[|1@\-  n. n.^ n.c( [Hb)P wq n1#P wq@\-"pw.@\-$ n1{@\-(|b@\-1x( c. n1-P wq[Lbi.opwbx( ?[Tx( @\-*b@\-5( w.pw.炀[G n1a.pw n1|b b?P wq}.y.{.@\- @\-"[D/pwe@wh|bb3 ranran0w 0w ď0w ğ0w į0w Ŀ0w ranYɅb0w," wrOܘ[9&ranX+ wr|bBܰK93Ep`[^p`[oHܸ#@#w. >pK0-˂gn\} wrw. p`[ p`[ ^p`[ wq`[z@"/Hd)0-@[@[@[z@[@[D_wqMn6~<['wq l$}xw ?p-W'wq lCn ?O'wpXE  ~<[><[?OW  ><[~<[Ż,%n n xw<[Ⱦ<['wpXŻ,-n <[/OŻ,6n p-`m 'n }xw?p-bOo'wpY_'wpX;n <[><['wpX=n }xwp-`y p-`7n p-`} ϸOxw'wpX<[Ż,<[Ż,p-`Gn G'wpX~<[ ϸO&xw/'wpX><[Ż,><['Ż,<[/Ż,!xwp-><[Ⱦ<[  wq-s I(w'(w 6!``(w/?E9[QQnBE;[Pc[_nb/bAAwu9pr-;"@c"A/wu}ȷwPE_pr-E"@Epr-ȷwP_"Awupr-}ȷwP7n6n?wu >[9nWwu ~[Ewupr-Y"@Ewu >[>nn}ȷwP~[>[pr-?pr- wyG@8[~2w8~0~-G~1ށ@$[0`-"[D-όEЃ[nEQ/c[ԇ [In<ߺn wun>pw\~녻[g(7 wpy n=7a Ep8 ~-Á8ސ?&zE?H ws  bBxĄ-9?HBxĄ-8$!nʼbB$!nĄ-8wwYwHB1! wpaw1! wp|bB bB?[p}wyw{w$!n$!nHB/~1! wp1! wp1! wp 1! wp >1! wp ~1! wp 1! wp 1! wp|bB[QCAn>n| [b"bR-Dc[_"K|bwp/R-D!HwO"Mbwp)"x)"!Hw1 Ex$[_ށn wp wpA[L0 $$ wp ~FB#nh< y wpEpwp |.n$wo>-_pwpx\Fw>-7Żo |[ ?>-9Ż ܁w !n@"!n' wptМ-/ BpwQxZ:Z:KhNМ-8[/ BpwFn-  - nZ:QhNМ-ү BpwK|- WhNwhNМ-՞nnnxZ:>' wptxZ:|-  BpwC BpwA8[yhNZ:<-  BpwB8[ М-ЇhN#xZ:nG8[hN%Z: no8[М-P' wpt#Z:<-  >n BpwB_8[8[М- Bpwd^n>n' wpvGhNWhNYhN Bpwa8[${*_e@wa-X(x" ^Xw/P-d# wp 'BO wpH-d&x wp 'D_An!C[ȏpH-dH8$2$ wpN  ~'H~'AnH'|N  =pH-i w^'8$418$4[o wAnF^'  [BnbŞ  [c[/Bnox$(6!@w^  [!@w  $(6_[ٗBnf  x$(67HP-l6HP-m?Bnj< wq(E[#@? _ePwKe T- wT{*X? ePwG~['~ʡn <=U wqX[!粨[ Xl-[ X-=U wqx+6[!T-b-LE}BA 0ABA|!n ^ʡn bbʡnȼb}BB1U wp~[>ʡnD9c*?4:!nͽB?y{쓋wp~QnϿ@-yBV@ wp~?V" wp~x+bbͅ??Z->E?^ -n7wp~? $ -KFew7wp~"R[z-⚅?<طwOb^l- wp~CM@n~[/B }w~|-[_|-@w [n |,d[>ɐw)b E-X:/H-oŻ@/Xw_An ?wpm왋wp7w E@O0w = *@Uhw }n+Vwp;[en,A(w+Ż@X wp |!([[qn@wwf-<" wp"  wp-A- wp!`w-Gx-Hw'x-K[f-MAw/&-P wp#:Hl--nb ~TB~^-wp  9w?n,[$@ [c@[/wp {ʃn|x+"F">B!wdd--@e~D-P[Xw '& wp Q"|n @`w -w8@wwp ٸwN-{E0 x+n$[{[7\@? ߄nZn"@ x+9@n/iŻ~ b7"?n#]Ż$ wp ~w wp |- Ż)w#ɮ-IPE ^ An_$@C( wq Ż@HBB*@-"?dwqW윋wqY웋wq &D- K wdbBC wq n!EP[I|[䔋wqԋwq!зwDb!An[![ wp?ŻBQn~ B EB!~)#{wA¡wA#-IT!H-L wp}Eqn!)! )! >(wBW BK!) wp8wd^)wb-nPwb"!<[7|) C }B!RJ-߁wh|)"!//d[1 CKH wp[ wp_H! [3O wpm@ o|-mCOnx`! [5_wpwp_[1ߋ@8[3[;<\[1狢 { CaE T-yQnn!`waB! IŻCwbᇹ!˘R }Z0&bo=̉˙ω{DaST[T0aS۞'IaS 0=9wD=1Aۘ@(,ŸKs ;NaX@'0 ° °o0akV!b0C°0IV%0G1H9^1J,Z)blTaV/s׀;w')sb's &p9Bn᷹v\~'.'s*sP)s9lZNahah7#Z?Ůah>s D<9. #77m7n17>˛=1QT99 FXV*O\JT;1S 1P{AF*B* "sV* $s 0aq~/s .03\20As -\%e.ax/C9//iTمNax79,s 3%pN D-0J0JP\(P9Q+nbNZZ^-0s-2nb3sƎbӼZ<͜ţl-pX-l+nsv,އ7Nq˛j\0st@stB9ӛ. \pd.kŸ\7Fbz..p \9F 3J `90L,`9h&4Y. a0sa`#`< N a+?s pN`:\"s,8m!0&sHs0N -Xq0Np,sC `Iƒ'3s | ,Is E8.`zb .a01Әb219"K-9d^!SёKC!ck!kA >d[$2 C"1x`/! \F&s2 A!( .`z`w0P3(sn`(2V cs[#0@G0qV䬖9:K\+%`dhvKC Y3ssF`hW0Y6sq fCg0 A\HdĦN\E,2Qc#2TLs%6f2U K[!)!Ù(bJY2QBc+B'a2#dDkd1dz%d.a{!ۘe[!ec+& ?s &Ada9s Gc 11+$1L`l8 *·c,qn8 X&X(`ȁ׸ l נqe\<—po8 ȁH\lt6SlN`SVlxZ`({6Po'(lC$q똵ucl3=/6Cl8=O==ɜlCЍ`$8= '7) 6ˍL`0;—`{n6q`BN6 lF`0%`gl\lEx$q pJ`2 N`2 \lT`eVJ`2.6!P`2!o mLѸ 7# pT`4,[.i3,h-q6˜l{``4=\lh>n6@3q0 qcL#PW'8 x, & \l@4qo@S6 [.6 n#8 dN6dm.&q Cڌ+" ݗilJq!g2'8V`8eÝŸ\`8;l,6+qȄqwetmv혙t{.68|P`:KP蓅6^*q| l;pD`,ly#8>8>all8d`C6>lx(qEq8(\lѸn6wxAҸg *)aeEq'Aq'Cl aS9q8§p{`NS8M ?qqq; \laS@·8\ll#qS^a%̍IIE3IQ? lc}m@`; E—xT=m`y`l8.6 FD`&aSq6 Ĝ-qn%8 pTY6!q-H`*=Ŏ6qT$ውlD|8 88A8a9;P`> 6{.6C)vlg+q;(qrac6B^897"^\l~E'q.+qm7ג8wGqcHcu8%g 8bdL3,Bdd')qt+ʜl;Xі la8:6llMl l`Yl8,l` l qv};0R`$lwbVpa9q16.6{N6^&q&KX0 4q8~6LaM— Ȝl8Wn6A p(7 F"q Vdld6A`d}\l7\l0Ld lXb`sw %q!'$Xy=ɜl?@}6A+eN6qx8<KÜR`nx3 eHa$$mI xIJ"Ȝl%9N6xS q_6S l%( 8Ja(Kq(A`P)6xR`P1.6YǸl{n63@`P"K "qS Yn6 lp@`k lX!qW'E= 8 \l-Bq ;.6qZ\)qs8K l%[8KZa,nx{IˍHmFn'q)#\l B^8-q)wl B8^`R$KIn6A l puwl 7q* .6iۍ&-%.'qdN6f(qqK$66 \l!gHI$J#f,qᇊI=Էe6q5Oq5[l C)q5p%[ l bd8,,q6Q6ʰ@`l6# \l ^㍉"CTbI*q$ lI lI{ lI7D|đ'.68޼8p63uJ366``pd6u#6/(q8 q9O`rs`r@`rwlC܉A·6!C6%blJC'88ؔs8ؕ^ lJġ-q(>;Bؔ!F lJ xXh\m9-V,"sX ,_sXKsX`K$ v|,s˘Ā$"g1 GȜĂ 0404w c~$sE` Z.s@{w040P ,} R칁~DXT M F sPN`j=C`9>%`j$c06sFeN`l[ `lLý3'06ay97n`lfn`lq ,5s`GkbKl$`$$܎bHHӹ"Vn1,rX ͱ˘َ\݆9spX9>N`n!al9sq+^Xfqs-` l sy N~/`p"*<~.`Ex|"̂%~i `*k2˝|9}vl3`q3ӌ帀9gg q,qPb"8%FqM0,YCwdyKd<,| \e}d&32n#Ce Z.2HehEehGeleYm[%d)q28elѐ[\e! 2s eȽ[w@,d2q󌠉w@2PV2Pٻq-T(S8ș%2&\"g/q1&.2&y7"dh"a&2&JD8ș;!D̨q02&G.2& l8Ș3q:@5D2'#dDA.2'D3g#q$q21/`Bw M8d)9qB'q$R1".BN28+qKҸq",H!Hs"N2D3q* q!5q&H,p$A2D q!"42D$TE!S{C8q.2 d*O7 xTc F|!Pg 0qAnȡV8Ƞd"'Ȭd8#d[.26ӌ0 $bga'# y#2댒9dW!.2Ib$pqAd$j$ }8 =W$I,8 F-IFI+ yG2 2 zdd2 ,ָ$u8$$ qH%E>qaN2,`("X9qb>qc ?q`>.2,p8Ȱ qSCqCX!d09 + q , 8`#Wp dG"qJ7 d| \d'qJ qJ!`P #-A(KA()Ex8ȴ!8ȴdZ7{Cl2-2qhHE/dZp9qhN2-!t.ˢeVZqL8˧le"qCE2V.He]!d]㌋8ȸR^"A gAA#`ŐJ &]qL2.qMc A3A;cC'!`zd &28& N2 JdB (dYA9k%n2 H v+qOc)\dYL %2 FN2 !ppɣ;&2C Cz8ȼw3lqyk'2/ d^p"n2/X" \d^AA!,d"dd(d9qP|t q-d8ddϙ\d&@ !dĦH26Aӌd) I]d2J ,$Y+@mIB[ :$+ <$AC ő C!!C#B;B F!Pd \d`FKq%qn20Pd`;QF!9F2qId d`"20\d`$2%)\d4ˌ.2 NZ"qRZ) d"SDn27xѠ^PӮ2z(q\d*i&(q`&}I\dnN2N'w'`СIֈd&ˌmn2PAD8AT8C8@Fh8A e KeB@PcNBv댡7B2Ahz(Bc@ (D2eZ}+A_N2@6/4e@@/Ƅ/f^ˌی89;§P0p``ێ333 fg+qF8$qMaa\f0H0l1qBF/@Ql#lT(pD(qV`(+2CeHqACQ 2R,q^)Cq8HN2SfJC̵JB63q8HL%JB5qbl(2 \e e|2w139eH\eI.2HΜd8Q dS%DJ8Jpb%Er%C|8R*;\dz%G8P7%A/2T0l1 pb#Iba7 f"\f#L8C|>q3f#f ybq^3H}b!8[%bBqL Z!8Yd<+#8X#$8XKc7-qaK ff q ql8Nf3 fNF1 1n3\e`1`cOf3` \f0yf0{b0q6 \f0}F1l dbiqxF'x^#`F",qW1qPCDdb%h\e')<227IRe2oER'HBQa { 6cq`"a c47qia@qsu3?q<a A]Í1aG'a#n6|"8؆,7pbcp)q KgxMqFq ya.6!8؆p4q %nbÍb>>؈eJF8؈!b^؈$c^l"xZaq# l" 0ql"6 cD%x&qw'q @8D `\l[n6aNl g4X [lN`Ul8+y t.6a} !gHlV;swtX8GG0 qGp{l#l#|6ĭCr;1N8:l1ۍlˍx`Fn6c\l` `F!c0g2n608 pGpx`HmÍ mˍ"@q$9u>`H `A `Hp8#q%" 68`JiQl Gx8|'8 l B^.6Cl D l$`ha g `na  8a"l$C,= 񃍀,8-X` =2Vb@Lb@cn6$ r6$*N6$-7e6$fn6$|hb@>%Āؐ1>4q4Al 6p`h,gGvl GB]?L\l& @a0E6N`V8cYl 8bN6a6`lI#Y8 pYg\1q,Cl "C` l 񃍁aL`Xd69Ce{6>`XCqK)*q qC( lUw8668^ q&xd 6V Ld ]#?qN d zgqfX N-q'K8a8md !@1${8 N%q6\d2'87§8>2p\dVdk r8_+28K#ԸKE!->9q}8K ckBXq)aI.;q){.2&r Sf8  qd!'2' d&`:!0o 2?q `@!0E #N2Cq+@8لw2`w, d 8 )q,K[a\d x8Eq, @A{`Iƒ`(W2 dFdC| dL0 8 dB.2'Q %Mz!52SEBikn!4~N2B^2DP8Md@ "\d U28d-q-Y8vAhGdV Z%H \H \D` \Jˮ2̂g!q"q.̌d V^q$28Nud'Bulq3 d'ASLq&C7KY,qV2qL\dE3q$4q&h"(ɫ8V,qdZ$$2BT8 k&2BqHeKc'2B $"*dF%e[vVȌ`"158Ȍ|Da یC Da- qr!<1d8O%dBy Bx q|BxxÒ2Yd(%dN22~!@7 n!@d(H2 @ !xŒ zVA㌁y , ^q/Yd 8 ^q/ .22lN2\d Bk!@k!@@@ q0>dd BCPd d BKJq1@d ^d%d.2+Y@ cc"+k2#":gqCb8ȎDp pH d-q2K dig! .q2v\d L f,2nN2qb3L+q3Q\d @"q30@$` "n2rGY dc|.qs,{wX<X>C,(` 1,o8Ȑ)ɜdHd2$: tN2$WȐwq { 33,q K˜d 4q4Af h<d ,@$W@8j j8R80 q5q5Q@H8"q6Oq60@`@&`DD댉%3q$ȒGȒ Ȓq$JϜdIq$Ws>q7d {q2qpیPq@G}@I'Bq8@, \d p piCd,c"'(8 Gq9!@Wn2% rdk@2 dD dB6Cq)(Ȕ,[D*q(є2%VR"P@&`@I2T ~8dn2D ^dǹ#7Ŏ2 d$2ˌ6d(6d(qQK.2M' )BP!Dw\d(0@!Dks}Xq%n2FD,VS eZ,Xn8#q .2C# $q!/83i \f1kGfװN6ņ.3i fM7fͬ0T6+qD-3&c'GGx8b\Yc|\k;Ʈ5ن5|nXI58.qH qE|4c8%49qUgN47ո#c2`ƙii8">bLX8^4Ч\i^ igwhcqh8L0hM`M@4Ѕi8A'i/6?q`ƛƛ:qF8b^4w@G `q pzH q q pq4>H<@1Ɛ 8?q< 8И;%7Dq5xEq04&0!q0}Ƅ?q8eƄmН'q9Н>DBuXƄxXBqМqƄ^> PlRKx !ˍ mƂR!b Bh)1["^HDD$q$8%q$ƈ`ƈው{`DB^PAQD|.4h*C8U lTbg )qAȜh*ؙƂh* Ƃ4S ƅFBX!=ƅ{~qeƂM Ͳ' lPAZ|PAZ+q h+Un4ׅ4ق Ǜ4asc8VrG 8Vk PnФSw8ƅ%Ф%qHmhSfNB(qH7иФB}qHФCqH :W pƂZAa h,r h, >3qKhy,j@6q@ %4 pX@ Uhr8 4Fn@&s8 u.4|ƂN h-h-/Μh-4~ Uu8Z;q:qn4* x8Ш& h. Ƃ8Aqc' Aqg l h.[Ƃh.Apsh. ApPƂ, \h/8^K4p4qg xAxw ϰ8qrAx<ħ h/8^0=q$^8^$2'qJdƈș hCd+q3&E.4F;d8h>dTDb!{l#YN4F%2+q1-G(8!"d!y\hY4M!Z!L@/8!Y'qBY}ƁS$ @V[$LƁ)h n4f^qD;d4qD4 BF h h8%\h[4-s8qk4-%{ ^8д h[^ \hZn4-ƅhZ!hZд&`Bд(`qHjN1:.4.ӯ`&NNŀ::[ӡ@qNr ;^Gv8ӡ4= N 8ӡiЏ.4M:% ƅaƅ`FBL \h\a!ƅxи=B .4.B| h 0,qMMqLi"&Qh ;.4 b'qOcqN'{ huƁ9 \h4 /qNqċ%q`A \h14\h1[Aƃ 'h18h1W B^b%4/4/4/%n4/8н.hB5qzh^w[ Ϲh^ \h^f4/4/Í ,ƅ9qxqxqyƁBXƁCn@.4 8(w/qQƁAnz@8([{.4 8(5qPƁ@IMƁ@ ƀ94ƀ64ƀqwpq#%%mƉF88)~h6'%a7%>+(#(#NDA\ h22ƃ# \h2;A 48d!9ƃ  h2!c"enӍ#bw#"q;Clmx!q;v\lĽ!;l \llx"q'49R&o9rg4Y;gr4p-94ʜni1ޕ3 /[4.am3{9qbw0̿ 1(s xVإ3Z`s,%s,Cs,g2üNX=Ȝb'lZg2װ̵(s-e̴yeFZ `̴Kr /s.`̹H\_G2̹V.s.e̸#̸&ap2+ye1(s!й;c#*sYs2G˘h)9L=AT0Ҽ,s x[-0&칆Ci43{neͧ2̽ }̼>s/4e&s/ 8̼H—2D`G p"X{Fs0 nfF˙Is6tf·1G1H0`0Ziml+s8X U`P0Z6\h>F䀷lxicÜLc;xǁ#b,q xZ`T`83/ 16 lWq e@88C  \@ND@0E N8 x^,@8-k%qZK@;ذP. / D=ihHqZ DNKȜ@ @ @\r78. rN,@  {. 9k 0qT\@*B^.s.cfXp @% @'rq @1c.q\0L F N0q\#pJ@t. @@@{/-S+q^sq^.q^8/0x7\@9/\@+p1^ \@F#:w򸀌8qr5 #@F \@F k@F xn0@Fpa3. # 8Gç >xBK7X4q!-Ǯ &X\@F8 $eH@q" @l)q" H7{ @Ȱ #q a70}8 80q[ `g0w0 @+{ @+8V_8Veq>cgySc̯%Ye)q#/§5Xw\@`@TCg^+q%"Wc( @ Kk)(8y;+ PyQ&q% ;(Kq%\@-wDhFi\N @->h>. zG BN @- W B"N t @0Y tl}ဿ@.Kr} q3DpN 8 \ ] |/. `,XLi7d%q&0LL?`}@ N @ \@ 2q&!pyo='py8~7qHN$c&chc7q$`  @/p qJq("@   >Pv\@ ;. r\)qȜ@TQ. zK{ s8 q @Jg86ׂW %pJP@J%`2C;$X`#qda{! 82 BO" Z'  Ѹ`N EoX[  [. $[>(@R bg@ D]HN y)qœ,qȰb=^8-q\@3! @L[ & J`u3 &0Ntbr,0q8cׅ '@N 'C N7}? Įz' r @PW縀#츀I8@N/h@,*q,,qXZ,7@>!pD/q' @ }V@n @,q8X\@8 @@ M@;8&q'q@<*q/ A 8X\M0A \Ay A!#! 8`D\@SNb"`pNQa 'K-ɜ@'q BC"'"" S'"4 )sn )@R,qJܵ6c'G8@n )7l( F\@%qR-l+͗""qD{>- =}DvAIqB>'qBV"qXc@V @V_ +9N +{ F@V0D pq],q6+.s.<3.}w\ወ.!` x)q>L ̡t. 1\ATen y~ & N 2 C\ M4. #\@1٫"5q&g B \@ @Y_J ˈ}. FN I@ gRT $akP\@ .q+VVe8#X|0q+ 8%K3pN1qP*@8) \@>ٓ( Xe. J %@GS9qd9c L7N L?\@N L& x3ge,qf_83Q3[`Cqf ^Wd>g \@X+8]~- }v@Z@Ը FTX -X8J @\G@\. .KGbW@\` \@\qs @2  1kIpRIg d . pd N ̥ 8d1A/N  +BF4qh7!2qh}4G>lJW8Y@^m /i@^Õٓ A88:q}. 0uxg;. LR3 b@G Gq8ė @b[\@bN 1> A @bc B^8E+ D 2s 2`C8.0q~ ;  2N 2 7 N @3 x@3/@3 T +a00}qC@f/q @f1qf3l\@fw8y+ \@4#DoqeA \@4/ \@hЗ. 44Ŏ 4Q 4UWY\@h 4 4)qd @)x\@&X(qN wH=. H 8+q+$G8DCN 5"@j{ G. 56|\߸GqOjeQP{@5;7@N -q86278!q 6pFa#$qG0JY\@ź S \@pP<'85 DI@ PI85 wq1x0 ˈg v\@ ma&q,; >§ @ f xq^8n \@7/@7. po7 H>#8n0JPŮ 8&qK;X<8pJXd] g @84N 'fVZj8|+h>@ D,$c'Й N`ZC!3q.s3q. 5q.K=#츀! 6\@w)qlaS` fa/ @H0GS"q U'q0` ($ '(q.  ׸ǻ. g0}#츀ĭA"ݗHA }A A K8A A NG N898:-qqF\@ac8P@IJE\A)%w8W wJiS` kK%;A((q BѸP&q{. 7&?Iq&% cA0@ aS&c&p8.qVAFBac#q +#Y P Z @A;|^/ P$d P%ᓈ'A8&q| D ' ['x@1S+q+ז8IZ,1h"`" R Bf. R3gx,. 86|1eVφ @re#A&qȇ@rt 9$<,q-qT l.q-q 27P XX \#$q^ @ `Y^K@ `,b^s@ w|2q/)q/ { 7HIrQwqriqoq @9,q @9s7BF.  8,q^7q\R,8P @6ӸQnKu/>B>ˈ [>/=츀g=A#eBV Ldx @cN Vi V \@8X V"kX!qpD8a~H$q b,na.qow, 6`I Xpq%qd` F; ZsqչSen Z h=. Z @CҸhI7- c 4q0X4q0Y8cgo @ 68@ fA@\dt2 p@wd,㌁"q @b8@a2! v\dB \dBd^ /qEqB \d d c;2b)pD!n2M1c-q2Nq{A6d2G'.2CܧD! ͗It2B(q7ID~!$COqs.2c,qf㌄1C>0n2B<Ů2 ]࠷dC"q x(ȈedDKlȈ Kx({A^ˌD;n2 3EB {N2.2,8D[qˌSUR!wd"م2G2OB({8E჌Pyd"b!AB(d"} B3.2d#aKcl@o26ˌa+m@Sq!s8q!Q80@|,q! P @͗!ی@>&q"[ DOm2BVˌi@ G bw1D UN2a(qV Kg0!R!W!.PA;.2mB8>8G3p.2Fx(q#%q#Qq#U.2u3,q#n8{.2N2vd "8%2@ \d "|*q$92qK Jc25#q-% }FˌAӌD=D\L#Q'ɰ \dY8ɴXT&|MxM%Q2l#ɰ&=%: K\d56q6Q׸j lj!j6\d5 .2>J{.ˌ\dl7q}% [N26n26 L#aG— 9*qY,qXy(6;.2 +qXw)2 Nӌ HqX%8܋8)q"qT#r\P#t8A߸{#peFgAKqú q3+P2 E;.2 E{>JAiˌ8-Ah>2 B>-r'V(q\)>Jq]fˌyd|N $N2 *q\%b%qy!l aKlr' *q @)R KJ?Oq w@ [dͱ3Z)q @,acX d{3" U3 ed;dd yC§Nr\,,N p)fیt3/fW1;̣eS;ȜfP̣,Y2n+qr]7E&7mɸ}dOD3 6\fgfhfc-wfaeqQӌKq 7E*nˌ6e@3vftZcftSᑯ3eTR,2@*GWq$=8g8%2p~܉N+2pd98!ȧiNC9Eq,L'!'q"q d#b9'8` c3@ehh;$N2 8T xd Ax} C2 N/ R IȜdr+§n29K\dr_d?qAˌKqJ138ʦR*,P*>8ʡ2uc 7d1^d>qd%KR'BVD*ŘT*R*!eXMqbFӌA+2L+8V VN2yN2>2%N2J.28N<27ˌ8mVZ6d 2 8SL{.2 m80vdݷ/@ &wŸ fˌii1!'ffˌӌӌe5Wq;?Ÿ b,L5bwn3XH"N2>·\3KWeGA'q<—)qGȜdt$S+qS|`, ݗ ӌی'@!d7q;8R#"q,*qn(qٶn)q <` =CeC2 q3CR!<Ȝd81;'8p1O"!ˌ#y`[2v\d 6dmŻn2@0d>d>ˌ6dbg;0NqdeAݧG{N2 d:B'qd#Oqw!y!}!>8t3A/t0CD6SͅlO3a<`feWg^_.2 e}WpWR+,T+\.q!qNdY8XOqk1s07eOF;N2z[qӜMl12&q>'qND )§&q<2>nGxZ'Ļ2|2|.2|`IG6 v\dKclA|AxT 86 R1.26bgodAl@D%SP2$<+qS\d;acoakh<CeC!KqI8xx[d<2Ÿ d<\d< N2ͧ"= %Ÿ*=@HCq @M pF & <0e@L#bw0.2b. YYN2 dEI߸Lq ZRzx)q&z%g?"2~Gd \d"qlP'O? {.2~6dJqd@QN (1—C,@P6§JC dR ( acH@ .ˌ 8Ǹ@}88(R ܷeA|N n7;—q dxV E.2 |,R ײ +fˌe@TgH2.ˌ@ L &qp_.2 0A)qp=—)qpC289cd^ BO9.2B'qr%aK)qD#8 <oJq  8HXHVD$*qyda[ o iA{n2AK§A7mA d> @d;a =qvvdd>ýݧ3Q Cˌ[N2d?U!yqw<)/.ˌSdwdw L$qPŸxd[.2Cxd/e@$8<m<d28 8{e@\i@\m@]>@\wd̉@\>§p{=Ǹ]qw( \d0@ ;Ȝda[c>d\dqzi @ N \d'8=CГ\d,e@`i@bFq @`Hu2#ӌy 26dBN@d&bw/"2J\dN2@m@hl L 4pOq- d@Ȁ}"d@pql 68 bwN 7f&qK>Ȝd,+qp}@pe@pi@qӌy 82' 2]8@t;&qR : dN2,_>6q|iA7q|l>n2F&"q-q4qQ <@ <bw"dqbw\)qC8§mm@}F@}V&qc20@|L*ˌfӌ21;{q~2G/y0d \d (qfیB)}JEe*]J_e-.2{e()B>ϓq½Mϓ2N~%'eK}'8-C%>NdAqЙ2\7qϓOq/eFB'#!ˌݟ'#!'eCD>N{.2|Kś.2^gx7qgdc& | }L 0>N ˌ@gdWɌ[.2b7{}LD1 >P(2C&E>P;.2d6|.23@e23 .23|ɘeL{>P LNˌ (/ \dh;򁯸&lK 4ɠg(4 .2h%E~ m g'g&.2jgGdCqP\7ec2'"§'.6>a6>^c#qH+qlS\luϢϒ侄lql7 K8 9K Ѹ8G8\lA\`O6#s'>lBF.6WQf6ᫍ6qn l=cwCpaFk'NaL 6~1qm?loЩ?\l=DB,N`(K.6a[XQ.8 QV -|v\ i>0&bw0EŸss,NaK~7§0FR`?w99# ACAL3>UaW }̂ lD-={.`wmq3bw00ȜaS PA K}0xq qW.`nӘ<g0x<`<—0x?ȜH§0x1C< V,sd sb<-s` \YnFƘ!sc9Vx$s`9<0%sa^.s`.+0%`/9n99|\#칀I9L—0  VV9E8ZQ^TTYKBSl n`$s+ 9[D0s(W0|%ዘD9dE99;=`BToռ`4n`N`en`@s#HBn LZg0yk 9s q .`02`&l^|)s^D!(ss˘ ͧ0R" xHx.s^DY q[ s.s,p`4wy9} 9[ `48hJ.b@ pT "ҹZg16d -O@ ;.bdZ0#s8S`6=sm m0q7G`87sۘ09ypA`8!N`80f\u9`:.N`;n\t6GxX`C/s{G0``:qk 01sX&Em0|m-9L`C`&[>p xRw0 S{n`<=H xBŮ`<qs 's+sN`>+~s\|m [N`>13,0lmms \N`Yn`0.sP`As"$#mAb1#n!'9!7b9f`,s7?6\Hs/+ \Na|&l[Nanۘ@@70` snaC#@  0qs@pL1s S9[`@&sܡ-|N^T3+s^1si!N '4bYc.sBfb3s$X KAaYaa,nM N s! W0!fa#DsB p!!B01×0Na~0sAa%"fNa S1^a na 1˘C%ۘCC-0_\a 0m493\91a {C\2-1 Y!;.b~&s1?!.b=9b's<)s6(snb.9bF[b!9̍D{ HD"%"\@ys L"l)s\DD![D"0K0D0ea60sE!s ,na }9A a%0qkD\ w0CNaS0+\*2sRܝ"CE9s0f"r".aۘF0co"F칄`y-F0;Fp#'0!A,R%X& s*s9 |/s@ 6\"sY'sXs.kS(sX XC5#q`K5N!nkP`@֭sZ}=kAБNkB&s00`K`04N`o`=0`?0`# x9:]$#'8$sn,s@:DZHPeΠm΢FXр7 \4uLPLeγM:mg8εvaScPX pΰXINuVX7:Ĝq,s\Gk+\\. r^VJ溼2q{(ak/qt DyNcX91[oG1X:ი<+b1>s\: &st%7Aan,Knz1칆{Na 09"N"^)`m sCݷ0d9 ! }`B2rG0d$` X%s3t+0YOaty:4йC~06(9JUwàݧ0K9KC.vb; K0X a .v [Nkȶ׊q;r'5両yקs^skם{ 9ps^ G5,s^ xLŮkn ׅ ^HGs< \m>g>Dx$3/ g˙ә@zw3 \B> ,s=0с \dž1yS~<.c< 1Pc' \92<*sn[3{1+sj2G0g^H #30fn0`@;38AN9@9G,ʅ~ \i0h6K9A@ L&sױ;ʼn5.i~D|*sT(s(syn` b0 D,sǢ-sD=.cizr'1腅NcЏǡ7 ǡCD,s@XZ{`*sX\pDʱ[F̑*̀$s`<#0s` J&np̀0A9|yC4.` 8@E\@HѹR\9XUAQ˘5 ;^Tsc-1וWco>Nc|)s 8T|9 pWgpq ϖ{F|<=Isma^&sȰN` L V ,s`@0lwL0l"a-06sǛna vbw09` ñ ða؋ñ/ f\\9rG0. ,X*Ůax<<0NX(s60s^ \y9C ﹀,mC̵ܱdA H$`B.bBFdd Ǝ`&1%̳W009L%0pZ'p s.CW0`j} 8s<\!c0z0|A3VsG=>z`X2sB>9'_k.˙әۙz313 \܉lP~!a_{ \Piۘ hQ>&sE.`(w.`(=—0>ȜP=¯+>?enX {sN`6g0؝`"sF§0P0n`K7`0peL q"s>9q#9q' `*)0# Pk k b0 Tdn`+^\T{'0 D\Znf.s8`ᓘ8;'0p<` /se·6SЋЗt`΄ZB.sw}':΁nt΀ %s&`΁#t x` y+/a/{.`(s}0^D Ǻ70^q9/n`A.`#+/ c/1ϗ\!r+|sPNۘyHANa 9f(s V @akH[@}a $lVNHXx*=r 칎BNӘGsZ@Ojm5U9mP{sT boA7Έ\ΉvΒh<tlͧ3oX59s>Ӝ69snۜ*s{A9!dnr{r|T H !sHnrIQ7L(7L&i_Q BʫogG8i3;i3'L(wT% ªgGgG?3QL(dHn ggLO!_3SE??O??'iŸIЩW_??O$)R)Zg7̩eS??sB_3Ps??riuQL(Ps3Y0z UEUίgG&3oQ̿3aL&do:RL(Td??TdL(4?L( Zi8gG\+QWJL(+ίQU-u??bR֧ieK*gG-kίi4O]_L(XgG]5\iEJ(8U1???ZQ??Ki]jQ4W?3'm ?tO??ki]jgGZi?QT]QSUrL(*u??Q㪖B[M S3ԨXu??E4*7\3ʣUҮcL(igGRgizUM*???3QPpU_??lҲiEU-iQOZӊV3U<i-kT.[3ꮚ?gGT:gG;e_Ю3 oQȩbQJioL(ڊd]L(V??Q,_RL(Q-iu9K4+Q8gGRʧQV-_3yhgG o??z-gGTW??SgTA33A??Mk?3.gGЮ`i2j皿+ioQ34ӭi_]?? gGY0O3?gGTgGG3o??oQUu:j?gG@K?? 3jkB:g7U"ŵIo&iAu4Y?? gGbQ3L(l ?gGPu=4Y?8i펿gGcQ cAOM?3/Q?gGaC3Y?@L(AL(@ gGQ gG ?p~mx$SZǛ^9g*oǻ^9g*op~k,MmxyA@jl^9g*o Fɍ 7?S b56Ll`X^9g*o}AzV:p~6r?TBp~vr?T[M Sk,M*Tsmx:R{?vr?TB?S-sAIVp~r?T@J>׎YtWF׎Yl7?w/k,Mn&mxUݯ7E?S쀋? ^9g*oM +A^9g*oXĝ7+k,MO?r?T`({^9g*oM+)pxUB@AArT+@"?SNSAnͯ7?SUtְsmxkXV׎Y@@?S @^9g*oꮕs-ATq-7ֲp!xF?SRhWZ }7+[M RF׎YiI?SUr^׎Yʊ) ͯ7L9S@ ^9g*oTy@vr?TA¹U{@ ^9g*o斳w>׎Yd ^9g*on7 wV׎Yi@r?T]5WO׎Yccp r?TԲa ?S2j皽r?T]3@)?SmxxyU*Y67@,?S;A;^9g*o斵gW.׎Y@@׎Y@@k,Mp EA -7ؙ;^9g*o%?Sp -?S;~׎Yccp 2?SWp 4?SM r?T7p x6?S;QL+w^9g*o̩eS(?S b56Ll`X;^9g*o 7-?S b56Ll`XxRbr?T=cuwp ;?SAu4XmxD'p mxw׎YڊdTYø0?S b56Ll`X^9g*o;yA N@xk,M@??S섧p r?Tp ^9g*o[ݯ7&@ mx0׎Yp vr?TS!e4V׎Yccp r?TM;F?S b56Ll`Xk,M1c7PJN׎Yp {^9g*oU]3~3k,MꥴЮ.@vr?TM;AeUWL(wAQ֊}7&)w#k,M1c ;^9g*oJ?SM7-w׎Y:Br?T3k,MEAqSA!9A׎Y@j! r?T!f׎YN!;Aøx.׎Y.^9g*oL.7#Sd-7Bk,M1c1?S!%?Sb [A_AB2?S`;F^9g*oWP0]?F^9g*o Fɍ !׎Y%B r?TM;Ir?TwmxQ^!x1&60,wmx1&60,wx1&60,w?S`/w{^9g*oL׎Yccq ͯ7惉δ8!׎YW=4Cݯ7#Sd 7#7#SdyA@jlBvr?T*K&qx1&60,w^9g*o Fɍ  k,M7qmx1&60,w׎Yg: q@?S b56Ll`X!7#SdA!mx1&60,w=7#SdF?SMB^9g*o Fɍ  A@jlB ;^9g*o Fɍ  A@jlB ^9g*o Fɍ  A@jlBvr?TM;ACk,M1c#x1&60,w7,D!'k,MU"ųw7WL*qK?Sk]"׎YN?S b56Ll`XPmx1&60,w$[^9g*o Fɍ k,M1cAsk,M1cA#?S b56Ll`XE{^9g*o Fɍ k,M1cAwk,MJ% ;^9g*o Fɍ  .׎Y+WWW7U2U;^9g*o誥>Qmx&b?S b56Ll`XF;^9g*o ^9g*o Fɍ  n׎YЮ>Kr?TNu1w&[^9g*o Fɍ  ׎YccpmA@jl r?TM;k,M)Q.>׎Y*\lF׎Y*XNNvr?TM;[^9g*o ^9g*oԬ[: {^9g*oiUp;?S b56Ll`XNr?TM;6r?TM;׎Y{A@jl ?SM mx8`Cͯ7'} ^9g*o Fɍ 7?StAGpmx8yA=?STVApr?TM;k,MJoB?Ssp!x1&60,w!k,M G?Spw!#k,MM 7*B^B^׎Yp6r?TM?SE?SoB(mx8D}7{A6r?TCAvr?T+k,MK?SM r?TM;/k,Mmx:vfD;"-7' SAf?S;"=7'p+?SH! 6r?TR^9g*o Fɍ cA!x&?Su(ڙVx$[^9g*o)+wQmxT.[cAzУ]7ɃB-?SIkB/?SH!mxp6r?T#m7!׎YpmxRBOAq*!(?S b56Ll`Xvr?TM;%[^9g*oY5jwKvr?T*r?TS;Bx1&60,wG{^9g*o)Z?Su(zk,M !vr?TR=wL6r?TR7p}AB6r?T̪J{A’ B^9g*oACBr?T]3J]?SAC^9g*oyh=?S;1k,MXgI*ZksdwU׎Ybo 5wF;^?T( p~s3 V״?/s*C7p^״?/sЪ)*T@ "RPZ[@(ZοxP >u XX/ka ?c?c?#>[ \) XHMw >c;֍ >c?X>#X AOkagkao}w"c?dc?dcka޸ HMka4kaC/X!3c?h  ЉkaA/>>?c?l3\(mkag넭!1Okaa}>}/>;Z(R Aka>>Ykaska>0c?X>!W}@>(c?"0Z8R"c?"DDc?"c?"XȀ> }PwAT??X>CXP?c?}[_aw}z!4?}X&+>>>oXºc? }Y}Xc? }zHM +D`W}zRc;V X$+G}`ka޷о`SkaXc? > c? >@Xka c?ukaZ}h>[ka[}h+-1-->-?-XЋkaZXПkaZka>/kaOX>C>P *oX@Yka c? >:.?c? [>!G}p}{>XkaF"Fuka!XX.>Ɵ40qka_X0ka} 0+Aka+'VYkaoka>ZX`V>XG}c?b'} c?$_X}Ika$ ?>=0c?>Jkka%Ska-(Zc?t ?c?tc?_>pcka'X8 >N?p?1s>_kacX?Xc? G !kabc? @1 $/X:^/ ?c?ka?c?g}1^% 8&?c? X "2X>XB>?}`}%`> [g}2XH Ag}oXJXI}c? 'g} c?"W} c?x0Skaw}>X>c>}>>_Lc?&L>cXɇM_}c?&L c?&oXɀ>`ka0J c?&_}yka:X0aka9W}O}N>ýp >pcka8NNc?'X>pka8N?c?'c?' ? ?c?(oX c?(KkaA}>?c?( c?(P c?(?FVVRg,+$s S)Aq_@ Nns C͟#{6IwZSXUk<⫕mcr‘'gg?)̉ݝՍs@*Ok(;X5dH~vP?B>yΧs"Q5@ȇ; |NN ?_쥵\OD .XO:*-g70͝_b pIFӶk¦?;?yaP SDVXǘ/';0k9,K ~7? c_$>yͬ|'O-ď %,wG-Vb [pN ?=|0&0A?|>&XI}}ek_ΧsqfK_ي@,G:8$wk ~v.6꣋)Z2yn}Fz9kLϿ|*Ok9gg/cA#XnME7\[Xmtܧ"Kk_[wD[k_9E<23M+W2;6wG-A)NGpN ?ckݟS1@°xvwG-R)N1'KE\Oʶ~v?q5֓?6 >yrgKk_9ۓ?[k_7\E}}23ɕ}~bj.Lik_]ɟd>Z}~NoWH_kk?Aky<u?%CC':T;5qI_KBc'7SSퟝO,k&˂e|󖓁ֿXnME ?cOmc\%P2QU*_%+XЭ>SkX F~ֱ|1Ok_sኋX╋ܙ Nmc.L*cOXjoܙ kG>C/ Nc-cÅܙ}24^mc<1ak_#o Oc>o{k_*1㫢X}Zܥ>G6>ZO=_|'77v}C?#)R?.v>'77͟P?*.L\Zb@oO9. > ?0S@!rh_˃XsϨgRZZO=_|'sl9 E>05ɟˇ<)l)O9NlyO:̜#luO$*=֚Okq|2^A2ye?;? g,i'7|} Iky<@jl;^9gNoWHUk> D_ֱg$X3ي> D > DOX3lo,aA7?4?T("@vQiXpS!״?T&D!).*kg*X%n+^״?T&D#)]iMJٝJ;6U;iMR(:QE>IA7H?gH;ҍiMRKk AC3 F?? B[״?T&)5Cv}MRsk'SBZ*l /T*/kx( Ik:>ýo&c; Bh?>ýh c;E$ka޲}!} /ka޸)&~?XAR}!>,[&}XDXR/>c?FwJ?h?c;$!}g}Xka>(!)8 AoNnq2lΧq9l1H|_7' •H-g\O`>!l-_;j:Q5(WϨgQEɟXч6_lA#3Jiccpxd) cѐ?ֱg0?сֱgWk>Ъ*"T)@ "`Yka09OkaP#T c?* c?*UkaU}@>!_} [ X&c?X-!}z߅!1Wka޲Ͽ/Z$>ýo`!}c;JAw$?ka}zHc?1XOX=kaDwSka@>>7ka*{>ýpc?@>Tika*>T c?JSkaP0?c? o>c? ka`>o}X[ka`>ßX3>ka`Z7YJ$c?-[ka޲i%?Z_}_kah\>Z2ϡX*H0&> }+kap 2c;TA4?>XE* ?X@okah w' \E)w$i c? /}KUkaxckayO}c?/ c?/7;kax ^?c?/7}/>}qkaX c?0X$ȿc?0?X!7}gkaX >]kaX -ka}oX c?5şXCOX̃X̟ȷ> c?2ddX̃X̀ ka޷FX̂w}@ukaOka3h$hHka?}눭 $_H ka}标>PMkaG}XL?c?5k7}c?5c?5X@ka޲)Eka}kaQkawc?Xw >Zwka. c?'ka. ˿c? )ka}PCO}Pka+> c? X(okaQ>wc?7>sXoX{kac?7gka>>>}o}Xo}}kaka=q7}1p u?}ka}XXԬr+>1c?X,_XGkaikaka>XX?Xc??c?!@H+0+>^} ?c?ka/Eka/Kka/0Xcka/g}z_)H X|,/S3guX:"kkl [?;?>y/|Nmc|MW[Z:fX{?[Xx~_k_Χq~vOlZ<'*|ٲ> rsu?awT\>^_ld)6.h ^Ӷkl[?;?/T(JA9 cԵn/;XU)GX$l[?;?@ma.hh^D@#Q,\O`0lJ.Lr]m} >̿9mc~-cunT-cS3X 9}^ vI<-cy6 96H؀gu6 GO_Mkl@2d(ΧqggR.6 wZkb^wD/ DE\ObK~sk(c;X?𯵏t\̱D&X/P3>VD sXu?gg 1ώYBW6@jl^9gNoWWk~ {g&okc'>}TT6T  {P_7[ XI3ttwBh?>ka޲?kaOJ[$&*c?Vwi c?VOka8Xc?X&\$&X7}/XXXтXօXTa?XG}c???c; >s>}zFaka@Kka@ YQZ@[0g,_X l ;5H* ¨k9AX=U|^>y2ܙPQS?;?_ۍݝ֚NJ T?XWk9gg_8< XLOrgKk_a嶱/SIggccpvK}ޯ¡|}hֱgi?cͿ6ýp$RL"gXHMtc?\)\I?}㠻>_w}z߅ Xv>ýoĐ7Xp5\&*c?kawc?>>_}ka޸_HM w}ckapWkapc?!wϿka1XTrM}a7}> c?}` }c?*> XXX_?c?;}zbH0)Gka޲Jc?;?FA4!>d_FR`:g>,Z8 XàGkat/YS?kat c?#>mka޲iw$ϡ:Wkah>:c?G>ýqBsAPBG}Зka?c?Xoka ,]֚(bAA*`> rsu? o^mcVΙ(>~[k_Χq~vD`.MA)T*b_g\O`6h/mc3,Q=ɟ-}?`_k_X{h>'O`li\l;5a):;kcX56{?;?/eΙ(>C/mc1>~ek_`3>/>VDEЃk_<;?;?쁟i>)VTImc'7S|lU>>y/}Ι(>VDEl?wgga}֚qJƼ*_Nnq X=>y2ܙ`_k_X{h>'O`(@ \l.MJ_+#X56A+gg/= i|e'3լQ=<lJ lh1FM;}PEk`c> ^?6ka>ww>>}}& ka޸!H0&>h>ýp&}X4.\$C> c; c?>ýpH0+c?ѧ}zF`M}z*I ?>ýpĐrM}z+H0/XB> jX4wka?c;V@[ώYE q?id|Pg(K}k9H>^h{k<@_ak l%mL-H`S `9%'\O`RGCXч>y2ܙXu?Q$KP_u%_ݵ\O`T6~vyk<:fX{?[X4_k_X{sk_Χq? Fɍ M(XcߛZO=_|'SBH Z*l T "=@{>= DX8-/X83rX8>_X8c?kap>*Ɵy}wka} '}X< c?kaHc;Bg>ýp$RLFw!3 c? ?}ka޷Ф}_}kaH_~}A4~$h?c?`>XVaW}ka޸$A} >/\ >ýp!H0|>7}z} X >XA4gc? _| c; RBb>ýpĐ`LSka޴O&|?c?> X>mX>m'}ڟX>l`}"/YJ$hc?ikav*;e_fa}ڿXð2Z8R Jc;֍A2/Xȿc;֎$?kax>ýeHR wARX}c;T XMXL=Xw}}Xc;c??J\H ")}z "XPw AEoX`V}( c;V XRXH0+);>ýeq$w (c?@ska XP@w>r?>)~>}Xc??c?}Gkawka?c? X@ _>t/}>tka;}c?aC>v% c?> g}>" c? G>x ?c?c?c?pQka X_}eka=OXB?}0> >c? kka 3ka c?>@yka>Xl{ka/Xp c?ſ Ika>?XoXŸXxc;Q$&Eka$Xxc?c? W}>@ka?} ?9  }DXc?#>X>mkaAX:c?`>!c?c?!!`7ka`ka" ?c?>>Xɀ>} 5D?} c?_}>8>R/XɎ?c?> c?Q}> c?c?c?%kaEW}B#}&> [kaX}BYka޸#HL}B !kaX ?c?1}F@g>$ }H E O}H yka E_(% AO}K}J]kac?P>%? c?EkaXika+> kaK>:%OX}R?I>)H"7}T$D?X* >ka@#>MkaL}/}XX c?T_(wka?>?c?P>A#>c?PZ&}4Xg>-, M?c?{kaX ?c?Нka}ZpYka?X_kaCkaX>.rXX: }\w򤀷l ]>h _&syN|Xm)Kk_nOm}8Xq/mk_N*9`rv}C?슿'A}~O9bS>ElJ~v&q9}#Sdrϴ+F&sz>>'{!|/6gN~SPI)5U}WSPk:c?!}zHLwI>ýh}&?>ýeI >]ka}z}!4_}1g}0kkaska c?}z)H0'/Xy>ýoĐ`?XxXBh?XxX€c?  ȿc?g}`Mka##kac?1}fuka\(>}z XĄ?XăXąE A4ka?XF?HXĀ!HO}h) o}h6 c?@ ?}h>5[ka?c?P OXF`L}m'}l9 X!H0&>ýeO! ?>ýeP$#+YT)EkaEka2YTI >$oka c?CX)\O"}pW>8?c?!BX#X'}r>ýee)p%}Q>(%}P%}PG`}voX ?c??}vg}x}xSka& c;i w}x><<-akac?oka*Mc?7}0SkaXic?!}oXa>M>}h>T8%rXg>Ɵc?E? >d,?XeZ6Z>h>h8Z@>hXeka"-}أ>l[ka춋>l>lc?}4[}؁ka?`Ykac??c?#>@BP}& c?3Ș>G}&XdMW}&"`D9ka쉀 ka쉂o}&XdN'DXdN}'"p[ka"q}'>oXdNȜ c?Xd)!KR> FR9B?c?c?c?!!HKB2B?_ka$I?c?#_Xd>";H}DAH}!P"B> BUkaF_TT> }z$1!P> K> T?TTc?}W}ཟXd* B'> Ƞ*EXdP0Ec?Ag}(XdQ'}(Uka}?c?@"E>}(c?RXdPȠ?Ƞ c?@ }?}kaic?ika`kacXd+?c?x>ýe(ʒ>s[>9gͬpnSP% VkggO.L}?ccCS,==Ս, _`U> rsu?^'!X>yb_ᵬ|'O/ggp9k^wXE(=> rsu?K̞u?[Hgu)GI ȤOk9H?;?ȤikaA5'Ul1~|?ziYMɟ-}~o _m}97>/N cV/ {Xu?ݟHGk9k¢SZ,?"*X5`jggdR{XEɟ-}~ L}LOrg-E6_k_}~bUk_셂X+)mc[*Boim} }c=ݬ}?cO}Wk_셋Xd,{VZ!`7X}}LGyk_셁v+-3'Kk_-'-Vvɟ9}}G̭cmsKXjhֱoq}cy`x1 6s6wG-1b`A k=Jmc&<1.͟9s=_Hn GXB>k9K~vȤ p6΋?[XܙX([k_m]XZܪ+Xd,ik_셂ͭc}  cq{Xd,SXd,Xd [k_셀-^(?ֱ 'cV.[rg) aLHk_Э@?Hk_ Hk_#o DXjh‘.>M)!箫d}k_XzWv '>'77g3'  ̬A-cyFϨg)u?" T dNgtrKAL@  %\O"pgg*=c&/3!a7 ̭cfX{?}~qJnLֱaL>Z&>@#6E}BWDUͬ}> k_셃vX>k_X{C@> .'O >W'"Z>)L|dG-c'7S"~v? d-"XLOrgKk_Rrۓ?m}Xp{?_k_Э@?}c?4ֱ ]W{X76B{{Xd-h>paxcsz A%|}셰O=_|'O ퟝ@A;W^),?!hNnqF!l ?E kp^+t\[k_nL}LOrg/)Xmɟ>8[=ɟ4Bֱ ZcZ!h ߨVvɟ>@#V6m}BWDUvo>Bn>P\&)> @7}=}ȦXZܪ Z@{Xd-=&> ?Xd-3 T> @¢Xd-/ mc0/\>C/Z(UKXemcssE}C?p&>r%.|2>Y5sxm}mcy}C?cy2HRihSA/@2mc'7SL -c皳?>@3,Q=ɟ>}}~b_sk_RrWcy3)=P3qNZ?A  _츿;X52ggO@C=|>e'3\_k_-Z+P;~ik_mk_ߍc/ᵬ}GcmXjhX7U})9_}|}80_|ϲsz A%|}9y=ṯD&+-3 g3 ߹3Z~ik_#oͭc"omk_셀Ȩ)cy3gq;5b7XE@ Nnq[?;?X{*{XEɟbLmcQ_嶱<H6~v±+@AR]֚KH_ E_`AX52 ?;?&3,Q=ɟ>dhg,#g Fɍ [}NoWh_k"=6g슎 mcX3E@/> yc7[{~9g$:OBP "_XdTc?P!pSka>ýo&c;։!4ka!p>ýh !XI3!pIB[ka[$&)c?^!w_}Xd/ |!4_}}FEka쑂OXd7}F5H>ýp&XdEH>!O}A}?}z+HLXdXd"Xd>k eka4Xdc??Xd}+ c?]_Ȭ?Ȭ"ka3X*H0&>`>l?c?Fc;SA3#XdXd>b7}įX$$Xd$F!3$GA2X+HLI ?c;T O}H c?@*A$_$> c;T >w!4?}zB`M},6\OEka޸R"c;$C/X A4_%ȴ"?c?i}zF`Xe?c?@ka싀>}.Xd YZc;VA4_'cka޲R YZ$h?c?}zѤAka삀> ?c?Pc?P(_( _(Xd}g}Xdc?0@mka쒅(aka쒌?c?PUka쒐?c?PI@> c?!d>#OXda7}0 c?c?9F;ka kaka>- c?R c?R c?R5AI} @3>#XdXdka삐%AHka삑+>yXe>xYka޷D`Uka/#^0^/-c?}c?Xe>x?c?}H^Xe0^Xd[ʒ"*IXd$XdXd$?0,I$c?`>&}L0 $^wR>q p\ai R4 Bw0F\Oaퟝw |uu8k<0_k_Χqgg] vwZk)='_ ~\Ob"M?}k<-g uZMa&>y:a.>yRrۓ?[Xl&>Z&X 2I?斱Z}BWᵬ}>>'Xd/=I'< ggÍ_'qHOq'_쓀_D[X56oggI#3V.[rgKk_-+P;~_k_쓀V~ik_쓂ͭc?>Z+‡oX?ͬ}0U}NI_cLVUrg>'ݬ}OZ$>ux}N>؃k_>>I> "ýp$RL!3kaQka_FXd}zHM%}zBkaXdC[>}>ýoHMkac? !ka(A}c? \>>|>ýp#H0>?X/}c??wR \%) X >ýp$&\1$Aka4`.ww) XfKka}z">لc;֊$E_DVa ? ]ka޲)(ka޲ !>ýe0$&Ewh?c?@wka씅_H>)'JS%&I}R c;֎h?c;֍A8c;֎JcJ@C>ýhʒ JA}RH%!>)?}Rc;T!3c?4JX(0Eka AQ_}>G}zFT]tp8id$w0> rsu?o~>'Ob8`dM%p_8D[X56CF_(Oc0:fX{?[Xe _k_Χq3 v~v ֚͝|R| }pQ/m-|0gg?\̱D&Xe~_k_W8Z(ď@ek_@ik_ }~O:cȳ0K>!FM;Cݯ?ޯXc~mky<M CXM7y */kXd/[ XHM!t?T?FawI>*X}T}Ὗ~Ͽkac?O}zF`O}V c?XE%q%`ka)\Aka4_}pIka޸$A}z)HL?X Xf?Xfc?kawRA1O}z)HMka޸QAka>ٌ>ýpĐa W}z!HLU1k?c;֊Jc;ֈ!4_}IZ$iwRA#g}zD`Xdb;Z"_R"R@[ka:RYkac?Xe ?RXe NR} *   c;֌ Xd(Z2ϡAP0AQ} } }zʑ$Aka޲_*/}}zʢH0&>ýeEi c;w'DAP*BgXdXd} >ýqD`W} [>6|rς ?2񣍄6wZk2 17+k> rsu?gg`'ͬ|dߪsmcy6?;?=s`_R%*'7++Nnq,!m .X 'V̞u?(Gd{xk;HxrcX56bdBa6uu\-}  ?/Sl#^6֚HHvEP_산gmc'7S[?;? AXL-}~O:{Gq.wZkHvs 7+\O`\6~vSmcQW>y ?Kk_2ܙmcߗ &{)cy6#%hElFgu<[?@ |ퟝ QX ɿak9gl1c~s}17[XJqkZߧ?e(cJ?AkP> yc:OTF-#9ckU) >uUn)]}WU~ c_bv2[XgCᅬ}WgCve(c;Bg>ýp&c;։ >ýe)>ýq$&c?/} c?)c?S+S/[I Xe0wka w) Xe0kaOXe0!> f wICka޸)&~?XR?fXd3W}gkaAka_X A4A0% \%)ka얎?c??c?/Xd>. c?Xdgka޴E)w4%ka޴EI%>.%?c;RBgK}\_XdAK>.c?:YIZAJ?Xdd?c?_X} Xd4c?c?wRA4GA2Xd4Xdc? % YT)kat c?$wA4**H0*Gka솁7>ýeQ$&E!ka솀{ka엊?c?Ika엡K?c;4\EI(c?mka엀}^x@K>0&ɀka>0O}}@ c? ɋɉw}b#&BXd0LK>7}3_Xdf?F`ska왗&`{ka/ka3>O}h~) &}h"&SkaH4MHc?Qw}jOka욖&>5Uka욇_~"MB}5 c?gka޷)HL}5#Z?c?ka@s>PMkaB}5_XdjXdj?c?5"^ c?kaHɰUka/Xd&ɴɰ>6ɲXdُ}j4CQ}Xd5Xd5Xdl?c?>#bXdl#e#a>oXdl?c?PFwkaG} /} A`>,Skackakkauka?c?X?c?XBFO}7 ?Uka> c?Ŀw}8Xdpc?#+Gika>g} E-)Ai} @+>>>ýp>Bhc?Zka} ArXd?c?\?.c?7}!=C`kaPqkaP4@(?c? Xd'}@UkaP >G}`>?c?   c? :@.XdÿXd?Xd>>;\H0Gka} "d?d_̀ka/Eka/Kka'}+`?̊c?̀>ِc?} c?@1 ddc?>ِ%2̀mkaCSyka޸ H0Eka?pMka)XH)c?!X>N_kaw}5S)ÏXe8>NwH\G}wka?c?}c?Uka1G}FS}ka("oXfQ_}Wka ?c?Jc?&̣/XfQ}(>ٔ>`.eXfPN} >ٔ>aka9W}zѢ} -c? ώY OFn2=֚>)# G\2| le ?dR{X(Nk<]iOZ:WxQmc26Nc@̡GXޯɸ mc'>}Χq'v~vYb38_9%?n> rsu?8(+'O ~v#:]֚X}@N .kx}kd͟8cn^-|7/Z:Åj"e |7 Vdي>y웏|7>y움-&;[Xd-MXdE>C/-c7U=ɟ>]t&}~j芿 c ?Ok_웁}~O:@l B dGwZkbOyɸ\O";?;?⁧XO:@ʽ@0B@Ci#r şp_|!'ggWu?EkyrgKk_?m}0>٘ek_!斱+-3Z g3{XjoܙkXf`6 ^Ng%?vT+(ݬ}0-csz#>>\mWky<ޯ)|ϲssD}C?-{k_o}C?dK4dȖ?Xr |/f}|>yֱfa/̞u?b.Wd]칊A P(gmc'7S"_*?6̜q=6 .LmcyБ"y2[?;?@x |guO PNnq> ~vȂʄʀe@~>P~ᵬ} kXmJѽ}~uw&>k?>'77dfϨgI-cy2lȀu?v~v A Hvlk~~p_`Ul\O$0gg$**ok<䒨.>yΧq q_˘~ٜMD[X52C!@U֣mc7Z/Uk<*/t_d(m!)X;5HGg|bgg*Ώ.>y2k>ٜ~mk_rgmcgok_N>g Xfr>ٜI@g ?v۔csz#>>T|ϲsz#XR."?)Ƅ.ƿ> ex ?k9Ƃ?;?o0?#kX>yoZ?X0XO:Ƃ~v!q֚͝DR.k =k9Ƃgg!mc!'XeH_k_̭c|Rik_)[k_ΧqgggUf†)a7 dIe| l(8Gͬ|U:&U|qɟA7g3gKnV-7h*!Χq@ggK[4(gtrR F?p>V| ~v+8|{ke} W>8okXd ?Ok_Sw)Qk_(g^Xdyk_윊={k_윂?p@ֱmcWVɷ!G%|} X3NN"?d8Sk3X3dϨgu*?F7h-v}C?ssƂ/g3?e߁>dw-cssƜ% NCpJNA߸%WrgDv<❟Pno^) .'77h/ ;>e'3*' 7e}J]PXk_a߁Kk_위?~+Xd${ֱ{XsƅaϨg}O:ƅaCgg"D h9kQA}a\' e7mc'7S#_"9e[Xu??;?v$xʿ١3Nnq@"c&/3WrgX 2)Xmɟ>8[=ɟ6B?7g>6h>٠_XfmcZ4>nLS XZ{@>FЁk_Э@GX7Xf!Z3hCKXpaq(mc'>}X١O6gWk>S&a&_Gn4 =֚@ W\46c'7S&v~vw_k<3}ɟ>ܙXUɟN~ek_Rrۓ?}Xp{?mk_&ok_+6h>٠XfMɊak_]G}Gmcm ^~>hAhhCg^IKXpaq$?X3dF>>hS1ýe) XeP'U#Uwi XBgU*H0G| YZBg>Tska?~$w*ї}qkac?VXTrL} c?ukac;RTaka>ýhФAka޴o#Ckag}?F XwZA4FT`> o>0)Agka޸$?w j@Ika@kka}X"Z'>>٭G}X1k}X +G>ýhR !EkaXdt#X*H0>_}zaHLG@>XG@Cq}w A4*} }XB`L> }!=Cq> >ýq"H0XRka?>ýq#H0Xdv.Gt#%G`qka}zH0+>OXAkaeka޲ihc;VV`VUka}zH0Xdoka읉ݿr!ȷ>@>@>CXd:!c?!Ѓka@Ekac?#>^"+įXd/Xw}z~ka'c?cka_Xd'?ka'}x_'_>=OXd''ska޷*HM}<#Gka c?oXdx#?c?ska c?#4G}kaka0Ska8c?f]ka3_Xdka5_3c?f c?f3 4 ?c?h0AW} G} >aka@9@7@4,@4>  @4>]kajXdl@4c??c?>GG/>c?#>D ?c?we) @85@8skaq}}  >5>>5  c?j55 ?5XdXd} @> I_> c?%G> ska쀐=./@H  &c?c?XdP /Xd= c?5C'Xd>?2O/>@ @Q_}  }}0ska >>'9Xdc?r"#>c?>ِwka kaO}@ ?c?G}@$Xd >}?ka/Xd>!Xd>?Xd>Xd>>C gka}kaFoXd$$ska@w> > +> }Fc?7}@Oka>$ ?c?_}EXdka_wc;\Ika?@ PCka c?Xd_ka?c?1c?xw}`tώY_ݝ֚A)o UDOkx+\O`t1̿96̜q:> \Б}ɟ>'q;C6aϨgl?;?6b.M! D> rsu?ؓsEW[/̞u?gg.%ie.)o o|md>k?}~O:ijm7idB 0m"''q=v}C?O:Eh!%id{@dx"#"' 3kl?;?g4Uu">y+U|cXNno?[Xq>}C? L嶱<>'q?u?gg'guc_ 2sd+vklĭO䒧I*J6dl+d\lgu\R ?!?@X—mc'7S o*~sk<@ZZ?x?d}C?Eɟ-}~O9d0y6E?;?/' 6l[@d@DdD> rsu?gg?96d_c9aDA &9aDE /36ݟPo-PΧq,6~vQCvwZkx"B"_쀰 T!Nnq"VEUXSd+ &y쀰~wk<3j}C? }ɟ>'q l@ҍV h_1H x"dX5 hl7g4Uu"ok<@\06d@ЗӸ;>)*\Og4Uu"ok rsu??;?I抮_c<66~v{;5E7"!?@\ mc'7SnU#k<@\{6ΙLS5C)X?}~ Lֱ7ܙXTLZQMCUrZ .n Xd .? @ Z .Z .k_ 9d83G7@& >I{>@Gdğ@%Z O< \d' i'OH Pg, X()X3@ [ X3@ /Vg6gkBo| #?d?X3AX3Aퟻk= mcI-| ?z> ~>  Ek ⵏ?d6g?-| 0ߖO=_|1&60,wak,A+>>@eX3@d>?dJ?!> iE| 2{"]| 2 6g?cgWk>W+?k3B(;L Ukn3Ax@d ?cdhU?H*dg?VAkUUn)-c_6H+XX5|F)XXMc_6Hݬ}WR|Rc ]|F) X,c?oXd@h3@hmka}Kc??\ X?}z$&c??c? W}z߁!31_X c;JBd_}@gka޷Ѥ>} "Xd@Xd@Xd ka޸ H0Xd ka޸ RCwi 6뀩 _c?XV 8?c;  A :c;ZAc?|?c?]7}}Xd1@xUka% <}@}Xd_}?넥 Xd+>ýp`W Aka!W} 7} c?!o}(XdA>ýpĐ`M}B_Xd ska>Xka_Xdc;TA1?kaXd?c? ?c?~ c?~?c?Tc;T Xd7XBAc?~}z*HMka޲ AFB]ka޲R B@+B>>_D!1Wka޲c?ykakkauka>?}!!}ka oka BBB>`>`>`1ka0 B! c??c?Xd"D!>kaoXd@>ýp? Joka(>ýhR "@! ! > Xd$_H?c?XH0&> C> uka0>`@1@Xd ?XF>c_Xd ?c?& L L?c?' N N>q}>P@c?5>ýo /Xd };ka8G@ c?'Xd }p>9/}t?c?W}zc?/Xd#kaka?c?XdC>8!$!$!$> &_I> #Xd$> #Xd$}@> ]ka섐9BQ}J> C/Xd%Xd%-BP> GJXd%oXd%_}>c?( P PWka@>c?( Pyka@  P_Xd ?Xd _}?}G>@>@ka % Xd}ka섰Aka섰Oka세c?eka섹c?:B[Xd%?c?K_Xd%KX8@$ R4Xd /Xd  TakaPkka$ V c?> !01Bd_L2BbXd&*@ W}e%wH"@c?+X{?Xd Xd ǟoXd }`5kaXA d@ ?c?+O}a?>ýp#F?)w}`mkaX XEka޸ HT>Eka`& O}Gkaa}oXd !Xqka`0@:@}`2@ka`H@ c?x?c?,Xd >c?mka޲R>s(|rς/P2guc_AOk c'7SAT֔>y(]XO: A1;"ZX$Q7ZNnsB_~7dЭSl_ϊ@peI-|4"bha+>yΧs}ne9?ihb[V ?@mc'7S l9|'OW(F>sDguc_qHV ?@c'7SggSY]l(57Z'>yΧsDv~v?y̧iRa_(A2[X5e.l9|'OR=d ̤Cid< :}`dA3|2@ 抮twk<@>ݬ|Ru]k'O&s+wguc_ gIWIc'7Sdd&G{Xwᵬ|'OV7dX帤W'MxT!Nns+~7d?;?{ V"H>+_X$ Nnsgg9?=.Kk_̱rL> %-J!4M[k!4c'>}ΧsD=C$B  VIB?ZNnsg;?;?sEW[ _XB-cXLܙ-}~O:0}$.sL"+ >CX+ Zx^> rsu?c?;?Og4UuskQrh-S}3*s,vwZkHx ?`d AOk9̴gg2抮e|R߄X*iR/[XuwZLP Z~>ѯ}B*E{Xbܩ>Z@gg 9]֚E +X$<\O{?;?w9XUk<@>yΧs lAguHK5Ok-X5aMsEW[ _6eH ~>yh3m|Ћv̜s PeEɟ-}~O9^ϨgN_O:̽.gs/guA`d @> rsu?x}&?ha+>yoZ?.gd 2yf[?;?`r`?iĬR 1?_p&F"Nns0?;?a+*J9*@[Vd m|Av̞u? ~vW@H֚A _qk C抮mcʐU|mc9b!l?[XsɆϨgNSm8yc4[>8Eɟ-}~O934 '<1?;?p$f!u_pEKNns?;?p+抮mcʐU|2m|?-}?-9"1_2X$ \O4{ggLeY]l%6eH ~!Z?8Cs,Q=֓EF!:=| ˿ ΋?[Xd COmcyfv~vÏ:ifM_B*Fi+!8yvk?;?dUW>y̱rL} k_S?;?d K_X x#I mc'7S {?;? 9X<0 U 9Hgu Y'Nk$#l"抮dwk[]7>J?/DPU}"~ik_XZ?ZB^?,9]ilR<+"(:{X5cW~v_g4Uu7"(~Z2ycRďg1;5칊@x#<Ok'c'7SCퟝg4Uu;k(gwkyTICݬ|AZ:.LS[XZ7&}嶱S}}Bek_쐃-cͭcya8dcogu> @ |X$! mc'7S~vha+>y쐍Uk'O6 ~vG1gu `-+$% [X5c`}>抮mcVdOmcyca/ggĻ;5@ X$!{-c'7SÝ9ݬ|nc!~>'O ^c?cgu F!'$y*[X5cw~v'Ul1~ͬ| |󖓊RU>: )L_嶱<1@A n?iR! <X$!J"Nns;Iw[ _sk rsu?J?ԝWu6d&ZN*IW[X3\17ggaN3;5{D e('Σ mc'7S׶~v_NbӛXX-'\-}~tSrmcy`gg)wZk,R!`i+"0U> rsu?-?;?*J2y`Bdwb x#X$ RNns/̞u?.gg@;>9g ?NoWcdF5X3Da-cZ#M|"0~|!=X3Bx;X3ByX3Bxq> Oݵ?d'/፬|!< %?d(?޵?d(~> Gc c A> "> /~[ky<@jl)">&#9_ᗳ]| ^UvgxEkEgxsG?d K-cmc!vgx!.> /l&ZoZ|Ͽ nk3B&D?oXjVnH}3 ~̝M 2;g `?_쁄_ϡ\_}z߅!4_}z߁!3w!3ka޴I XXd ?c?0>ýe)$F`S*H0&\I_ka޷ФS Xd ?c?0?c?0  `c?0Xd Hc?1 b>_Xd T b bȎ.DrXdGȎ ?c?2DsXdGc?ADp.Dp4@g}@ka쁐 wJE0ka쁐 w -Xǎf pcvwZkٯB*$_쁐k9dž?;?WX@a>y쁐 Xh?> fGykýp$Aw?>X[ka޴i%?ka޴Ika޲}zIc? FD<@ h?}Ac;JAc;E$ka쁠Q@uka쁰]ka޸&)c?6_}BhXd  lmka쁲Xd }+ka쁰"H#DSka޸Q$Aka޸JR !Eka Kka޸QC}wȿXd @gka޴O&}}ZXd }!ka޴H? n}zAkaXa _)!K}zaH0D>ýe( nXd >/XdXdwFA(c?8_GBg@c;֍Ac?8?Xd[> @c?8XdD7}!}1 r3@qka>>kka>@" r?} {kaA_}%ȔQkaIc?(kkaS"Poka@ka@DDkaA3>>ýoD}%}P t>@H@>'X$ x)@Wka`>G}%ka>@D@ |>XdW}ka¯XdQ!D!D2mͥͥ͠>Po}lc?Vj1F}栛>ٴ9ԋ>ٴc?5m}h}ka/ ?c?@o>ٴ"6Xf> /6}zc?H/}/Xk c?}C7ka c; %Ioka'>;;5ŊB 'KBkok9͟9d@~v. G;58 !G쥵\OCd ?XnM֢+UkH_ SNnq!v~v3$i c#?GLXO:͟HJ @0"Ig$(dENnq"ggJ.TEk 6u%ؤ"-cCXU#kX«qHF 6i}ԟCXi}c?w>h c?_Xi;#Mka63Qka6MoXi_`[ Xi#>ýhAИ!B`BpGka /X} A_ka ka&_~[I\ ?}}EO}DXh c? mka8c?K?c;JBb>Рkka޸"HLUBXhP c; c?@Bska s>XhPW?}z!4/AXoka`ka`>Aa}z@ah>.Xh,wRA4EA"Xh,Xh,/Xh,/}@>Kka> E?[}?c?B>}zѕA>ýhRIZ4ic?PBBAq}/Xh._}[ka޴h ka޴q$"+7BM@@ ЯdЬ>ýhH0F}>$0 c?A}H$g>F >аBeka [>}Xh?c;SAIW}-}zʠHLи5Bc;T Xh\?c;UA4и c?pka >>Xh"0ika`[kacXhYka`>0@YYJBhXHLXh7}z @ c?L& ?'>'>Xh_'akaakaskapka @8@?' 'Xh1AoXh1b_~"uka 5ka c?}/Xh^мska!;kax@Xh^мB>_Xh_(Xh}ykac?oka8>p>pQkar}[kaXho} CXi ?c?W>x=XeekaCmoXiX̀ka<c?O}O}[ka<2XhXjXdJ Ȕ#Xika"Xi>) c?okaXi7}g}(EBXh1EC?Xj YkaDqkaDwkaD@>ڈc?>+c?5>jaka @K>O}1Xhb>H*_@Uka$5Oka$?@kka$_@'} '} *+g>ag} >skaXh} \#HL>JI@>J c?T3>J?c?/}c?ŸXd O}>L c?a> Xh3> >,E>, c??XhikampEyka }2c?kaAXh7}`}` c?}b5N?c? Gш;@@>1 шFAO}d ?c?"Xhcka _XhFG_R/XhL c?!}dkaѐ FA>-aka9o}zѢ)H XC>Ig_%'Aguc_b/> rsu? GdqY]j82y 7ggE. ;ͱHkU,k 9=| v~vU֣|'O`gg[g ,i@EDE ?ŀu3vk@,6~v}>y |hf c.LmcFߖhf ?/7@- >}O:Kũ@guc_b<_,kw[X5 tlU֣|'OD-@/Ŷ8]RObNnq.!Ghf8(k3?{Xsv}C?Χq(-j_N ֚)Y-ј*@k9&`҇hg&'J c)CA \mcss6}C?/3F`ј)>3 4׳d!nLֱ<$[>@sϨg&'qd? @0gg.␌0Q,k -v> rsu?V'ISZ/I*QEmkh8i@7! 0<ј2X5 '{?;? 'mcLN?1R'77@eG/3F`ј)>3 4>UnLֱ< ȶ}C?'q8cd7'q={>G@P_֚݁ B0:3^k@P~v `>y >y }Eɟ-}~O:͟JA;5 D6ŀuf~Nnq?;?  'mcOh?hk<`>>dmm}3@R#?g,? b56Ll`Xg;^9gNoW97> cmky<M Š#k*/km}Wbο <*ο<lR`[B8[B8ο}4>GkaP)3ka >_}4oXh,/}h>4Xhc?@>4c?@>4}!3ka6$wBh?>?XhLXhNc?8eka޲>ýoH0+c?8?c?>ýo`"g>*c;ZBb> %_}z!1WkaI} %ka޸&$@?c? oXh@>5FwB}j?Ѩ}kaXhjYka?Ac?7{>."}lww)$w$PF}@c?a >6Xh58P> @>?Xhloka _F W}*_X X >_Xhlc?,]kaukaZ7 Z2Hc? > >ýe%i1@c??Xj@GkaHMkaHR?ԁC>ýe%I(c?E?ԢXjRXjTԴF>7?c;RR`R>ژ c;֌!3S_}8wh?c?ĿXiHWka)җc?%ҐYka)Ґ>R}ka޸RCw$i Ckahc?!}Xa_}p&_ckaG c?ika}GXdc?j c?j5Xd_X_Xh?ka}r>9Xh{ka޷B} @>9/Xc>kaxc?/ X}AW}Ao}@T_}BXjgkaP-kaP/ /Xh#>@c?ț>?Xhr ?c?_}z߂#Q}9: >Xi`"(Ximc?}qka->ýep$D>x"OXi-?Xe>x?c?@ka-?c?@?>>ٴ9OXdj*oXa_>c?'w }CXhwXhv ?c?ska>'>}c?buka?c?b@?ka`@_/>}vGa}?rGkaA}}XjAkaXgkaX>ڰ7XjukaXՀGkaXc?>^&?Xiy7}7}c?>^c?}x<\CXhaka?c?XhG>=c?ГkaBOXh@3} o} @ҿXd_}@@Yka>ýpB!2/Xh@'>mkah84 c?Cc?@ikapqkap3<$XhÿXi}]ka0XiLoXh}>Xh}G}  o>} ka`>/ka`?c?Gka`!?c?7}_뀬!RXhX)G} Xh c?ka޴o{>9gi2(8ͱHJ@"Nnq0*e?c<# ?;??P;qH rsu? l 䒧9$ DV̞u? l ZCՍi@ x;E\OysEWZ|'O gg h{;=kA *e?c<D,dzqHP;> rsu?"?;?wq:P>y A|X?[Xh@_XhD@"/Fek_?Z#lsrg67@1% y Kv}C?6'O?;?:Սp3joJ!XxE\Ogg$D|JH c<$ ?;?2q*wZk)?(_)Kk9. =3N&Z?(Mt\[k_nLv*>C/ϭcXhDXqQg3?{XsPAo<W/k =֚:,R^-Y @h;YNnqo/q:PkyrgKk_?m}~93Aث+X >D-c@"mcssP h) />XΧq=d?\G_I J yc:O]Bp*/k,lR>u%ؤ _Pm@!Zο N c N-c_vc?c?*vc? c?Oka}?ka}OkaXhAAc?xCHUka޷?bG}zѤ&c?0C>_+H9c;>#> Lc;)ka޷$?ka޸)&~?XDž| XA_ ?c?Gka}D/Xh>5_ Lc??c?c?ka޴P>D X} Xh@@z c?>ýpC}zB`_}~@(c?_/>PKka_ T?c; RA(c?rMka9OXh}?>ka޸JR !EkaC>BXhoXhA>}zѣHM ~?Xh?Xka'>> Z4) c? XhD}zQ&*c?H ]ka@>"Xh/kaka'>c? c?XhX w !>p!\0A}A'}w}zAka޴ei >ڜ c;TA4 ka"d2dcka>XhW@2=d@2_눥 Xč!4?}z*HLXhB'} d ?c;WAZXdXh@4@4 c?c?oXh{> hc?Xh@ c?yo} ka />c?_kac?BBwHL>CkaQkakaP3A#0 #W}g ka@6>l@6c? }?XhBXe+tYkaekaO}c?>ýo Bgc?_Xh@w>Ѝka>6Xh?c?XhAXhA?Ђ_+ $_Ђ!,c? c?`Eka,,mc?> _X$c?5"j c?5(YZ$c? c?6}zѤA g}!}!?c? &BPA}"Xh"?D0 A c?C( (>FF64FXh#}+c?!c??c? ?c?Aykapkap*8@G@F+>4@GG}a}`>0>0ka >A} ?c?%@J_Xh HH"\&Eka?XdBXh$H[kaikaoka@HXh @L3@&@NXh }=ka8@C?c?}A*Xh Xh }mkaA>@kacOXh%Xh w>>kaP@Tc??c??c?_c_ka$5#}c?ka޸ HT>JXh'@;>ýe%e)okai @4wV5) Y'h \O#haC>yΧqY3n '␐${}Ok9CퟝB._k<}־"-c|IC9H}}VLKmcssg3㛓?Wk_ -P)SퟝF-N[6wV5)at?C0۲> rsu? G?;?_g4Uuoky%P]k~Z2y ͟OPY gOLvk@ hf?cOc_Z?1~>[k_?}}~O:F? Ag,Dl1c^9gNoWch&/> g7> yc:O`1T Bw@Eb=}Wbe|J HI_PmBH>uUn) Fv_V␔ mc_?v?ka\@V@WW}`kaX @VXh oXh įXh Xh /}@XmkadX?c;֍!4ka }&G}'М2YZA?ka޷ФМReka޷H0}X XI3<.[I$w *Haka?Xhc?!@$? M}`%kaka`wka0Z"@XOXFrM}z$"Gka`@Xc?,XhEXh@Qka( ?c;ֈ /Xh&'>>kapkapB( @Mka> >ýhH0|> @^c?0=kaXhGB9W}#q}zBa @f?@f˿c?c??c; B@ka Mka /}z}!1Oka skaXh } wHM}'>@kaka޷>Wc?5>RXh @ kaM)@l7BH<\iEkaLDYIZBg c;֍h?c?9XhDXhm>Е}%BPBP0}zʊR YR4**HLXhJ}%XhJXRaXH0&>>OXhg}@> c?}@AE5AIA$ c?: o}@kkaeka+9[HL> c?XjXjXdo}@$>o}@xWka@x>aka>$BX>t>x=XhK7}%#> 1>[ĐXhIc?=-5D04Q/ka1 ?c?%Wka޸"^ c?>ٴ_>ٴc? c?CXih4F}&m[ka16ka1 c;RAQ_}ƏXmIA눭 (c?7>ýeq$kaYZ$?c?:?XlNc?Mka&R c? Gkal>{ka=kaaP> +> £Xl*? bkkaka}OXl,c?XXC[ka 3 `c?@?c?@ /Xl-oXl-0ѷ}n};?c?P>/XlT0@>ýp>V}c?PbYka튇?ة}XlT/XlTbka튀> ka+kaCkaXfA}}/Xl/OXl c?0ka푁}`XlXl}O}G>Xl}>> O ka?ذbSka"ŀkag},Qka)Ł}zJH XC> @ =Սm@ C_Nnq.?;??9E{XO:&8LBqlhEL1ذ~> rsu?cMB._^0_uok<`x>y >C5~X3?#o(g3&ܙmc`_k_oNϨg_@nfƿ6!$&/&<1;X5 Y]j(?2y oR vwV5) '~ &< mX5 gg[Y]j(?2y  9S$K_ RA`!ǟa{vZNnqv~vhf?cOc_Z:.Lmcssl~[k_oSP:'O H{?;?u wV5|R_`Uq|׳Tֿ{X$Aumk rsu? ĝ=OX3X3Whf cFߥ3_k_Χqc#g Fɍ I>ȷ>?l0X3-> yc:O!BNg (6 Qe}Wb(l0Xlc?J c?JSkaRXlkaQ} @?>Xl/Xl>_kaP<Š>c?lشbӟXlZw}ؑka޴i XhLc?0?c?8#}zaX /X AwI$wI>}-XlZ#nka ?c?Oc?@>}.>} ?'`} `}ka޴Q$} }z"H9&>ýhR "8 `?c?Wka > @> @ka޴P">ýh >}Cc?c?dc?]ka޴O"Cka킐ka킐d>'Xld>'c?IkaeXVa >B?c? EkaX!1Oka?c?!G>|.o}zHMka7>| c;V!1Wkac?Mka!pO}kah$Pe')Bc? YL $e@ka-ʏc?ʀ[>*c;֎h?c;֎F!3c?eB/}T?* W}z Xn$Fȸ ?c?pqc?ka@5ka-Xd@x-IW}qBO}WewƟ[Xȿc?;XdMkai?c?^$/XkCkaF}{w1/}zc??XnKka?c?{>@>ٴ>rXn0kac? c?Xn0?[JR?kaJ?c?w}1cXiF?SXm0>L c?c?c;U A7c?5[kaskaj/Xm1}Xm0AkaX ?c?}#>L<-aka޲Ii}zR c?~0  c?>}bOka혥Mc?Xlwkaِf@>2Xl"fA/>ka7}hgkaXd0>4XlHc? `} kaH` ?c? `kaH `"`?}kXlW}jcQw}5&Ơ>ka@>6w>6{>ýp!D}m}mg}lٱ>6>6oXdf PIka톤j ?c?%a>}@c`ka퍄XlݟXln?c?$>} K?c?Z6h/p(t?.XHc?'`} Wka}"/XnD܃_XnDܔr_܌?c?woka͟d @qfƿ6 Qg 1okS> rsu??;??9DU>yΧq7dqK]Սm@|1?_?Ok9> *E_c<~v N 9K_(1__#!Nnqݟhf><C9={kyrgKk_26>'77@9v}C??}}ik_oPg3y Tlȯg,!6@jlNoW[XNM>?m<gmky<M !Sg b*/k c JiӞic?ӄ/Xm8iďXn_>۔r.ܧ_ܣXnPbc?h,ŧ?ش9[ Xi#>ýhAИ!B`BpGka /X} A_ka ka&_~[I\ ?}-?XnPşMc?sXlc??c?>PKka j>P#sc;ֈ ?c?N_DA4EA'c?s7>8/Xl c??g!}z!H0>ýh$@}/c?Xl ka8ka8aac?(tX‰ c?rMkaska!}9Xlrc; kac?!>B_+Z4i XmPj>: c?}zѤ&΁}tc?ka޸HLUgD?XmX[ka c?`>V j}c?c?}yka޸P@Wka}ka޴EI >۩w}zAkaԿ>ۨ<'}P@oXn>ۨc;֍ A4FBhX!3c?` ka0YRe?h?c?`ka_`Wka`wkak0,[kaXhGka썁}>\7k}ka<} @ ?c?O}xka?c?}@:akaF}i>?Xltcka펂O}/Xl7Xlw9?}Hc>c?>ka_} ) `>c};Xl>;Xl<Ð>hÐ ÐwX@?>Pi?c?'i+>Xm0/ika c?a}kXl9}X@`}}zH0*)*X"H0*> ?c;)Hc?f>ýeEiE_3]kaFc?hYka@`kkajXlG_OXlA}=}=/}=c?JǠakaDXlkapka W}ŸXl>` c?Gka퀁}` >}@@@#` ?c??c?k`c?j{kaSXl}}>-'>o}>?Xl>>4\`HL>> c?>6Xl؁kaka7} ˿c?`a$R_Xl5jc?ԇka퍀k> c?HW} ?Xln}7coka[>-```Xl}|C, c?/Xl@>6öc?Xl;vQkaic?>w}ka޲p}B.ώY5 @EXؤUxl;Nnqggg4Uu~7d@Ţ%Xؤ?a8=| 9D|'Ogg[-qgu ^k#~!NnqH?` cOhYk>}kxc> yc:O*d X*/k4x%wA?ka޸)~?>ýh_XS }@> ;[RJXđIT}z߁ [RW}z߅!3}V c?wi >ýoĐ>ýoAka퀘>ýp>`M}swR \ }kc?<%awz?XR}~ c; ZBhXlggZ(R !>@Eka퀡}?DVc?? 0Pka wHc?n>c?nwkaq} X$Aka޲ Jc;֍ A37``!` ?c?n?c?n `*Ika퀫 Xl@'>U  }+ka퀨ka퀨ET c?/XlH8 c?p c; Cka탂Xl`6\EI$w( "*}zФAka޲ `8Y\)Eka타gka타mka޲ie?8_Xl}zAka޷СHS}`}ka޸}!E>8@vwZk qH0w8X52/U\ZXO:@$1\dBwgu)> /P_타)mc'7SȄ1h ?T)h9d >>΃5n6F|ϲy2!}W!ED!guX @GD.e숶kdBv~vڳl~sk T(Q( )ݵ\O! ͟#?mc<Kv~v ^2q!R/. mc'7SB ;?;?W-sl?2y2=^ dCwZk#Q炁( |L|ȶ~v%ka>yΧq AoM$*(l'v> rsu??u=6lgc9[k<3SȈ~vڏ>!idY@$(`)v> rsu?A^Bmc9Z?r#>yrgKk_Χq~v#xEwguHD l~1$kd"ųȇ2l9dd"?;?/@B3;5)J( *Kk9B3?;?샯<6~vo !_ɖ)H2P @]?xT!Nnq~vٳ!?8>yc-c&/3c Xu?(y@iN)Hl~~k9@͟A?WZ_:.Lmc_rg-4d!;5 g@]?kd@#]֓?6ΫUk<3]ɟ-S=F N2agu;!1P_> rsu?Gğmc<lwwZkP_. 9ekd#5@*>yΧq6~v?77vwZkcAw[X52d?;?5 9ddݟ(g1guqHL'( > rsu?kQsk@[ka탠8Z4}A'>ýeEi > >h?c?veka탱>'}|c? >W}a:!}A=w_Eka޷ >ýo?`_<X >x?c??c?}Vc?Xl?7}P>(E _=#``00\(aCka޸JR !Eka޸"H >c?-\( >kaOdJh)Z(R !i7}z#HLU`46h>ýe(RE`4 }CXl>ka_Xl@Ska޲пkaXl@Xl@? _A}i?c?`8yka޴hQka޴e)wD%_`8 c;֍A%_>`c? c? c?>})ka޸H9&>yka`<c?Xl>0|JYR$c;TR`T>ýeOʿc?Tc;T _}?*F`>>Xl#>>kaH > ika/>BXl! c? c?XXl!Cc?Cc?C C/Xl!}!c? /1w}!b>#>؆>3XlC>0qka`>}!XlCXlC ؆؇o}_DXl"c?.2OXl./Xl/}O`DWka>#oXlc?"Ykaska> `N`N`N0/XD`T> #oXl$kaXa%g}@3> ka턐> > 5ka턐ka H/Xl$Xl$}DXl%5ka턧?c? c?}ka턢Xl% c?> Ta*Xl%_Xl%Xl%}Xl%}_}oXl% ?Jcka@>OXl c?(Gka޸H0**\Q$&E`X-`X7Y[hc?,>ka`` Eka(>Q};>RXl@>ýp@ >P4? ka(c?a5} ˿c?;hLha4c?- ?c?-wE) `Z2`Z`Zc?.a8a:/Xl'wa9_}}"g}F؊=`>}#،c??Oc??‚Xl ?c?/>c?/<c?1?Xl @_> c?1O}"G}#ka>O}#p>}#_؎b8 b8Bpb8kaG> > Qka큔`e?}@>!}A}@> ''`d%`f`f c?3+>9c?3`fXl $`fB ?c?3XlaO}Cka,` '}>ýp$E_Xlf` Xl`!ka,?c?Xl`?ka,"` _>Xka,c?(Ā>c? >ؐ c? c? b@c? AĀ"ĀbA >>>B/Xl c?4`hMka큤*BV}/_N25wV5) _`hak9F{?;?_4XZ2y25-d8֚͝KH rsu?Ýcߍc<͟c8,wV5< XA)|'gg?9*G>yΧq]}FlklRA)Me|v~v?=ok .27vwZk# X~J?L?>0k9F^Vg4UuH9d;>>'qg3dp!ag8 X|RB7)'=|M9*C>ylᵬ|'O ݟM.qZgu`HP_큨J{X52 N~v?g4UuAͬ|`IXU>'O 18.O_ R ?L?أȓNnq]f 9*Cͬ|` U|[k rsu?͟@Y]lP~sk<~>y큰~>yEskkM!)Pd_"\O26~v 9mcOZ?%?6뵏u\mcy2c(;e@$xd,%0L|,NnqYY]l9bM?d7 ?&<; fP}(%^&M>) țlI^kdW(U֕!>y 7X$/5w|l?m}~O9&͟PΧqq ggP_M%␚ 2)ؒs\O3 6~v*ؠ>y큰$U|@olI_ksO:h-7֚͝(b-?Sk7W+-c'7SU֕!>ySXz̞u?]>2 ieRE_xYk9Ax}?U6l 'c?ja)>yr_S6 ;G#Սs^l#cX529g4Uuoky큰$U|m|XU>'O*mJV! HO JaOA> rsu? ?;?B?g4Uu>y~$_dlȀ?[XsVPΧq)wZgu!.|2 `r0Ok9V~v *Ҥ??9Z?9~>y"9+D Prg-7ehP <͟aA}֚K!9 lT%Ok9ATsEW[?6`r`r6XU>'O4 )wZkoBr_ Sk9_\O4~vȏ9*C>ySmk<]ֿ/2y3HF"O8^M$␜~Sk97Nnq?;?@*ؠ>y큰$U|\k"XU>'O5?;?KC_Bp5lDvkf^_U֕!Z?(>'77fmP?>'77f",&}~O9+P< {>!< v~vȃ_ x#;5!8 <`,%0'Ok9GG{?;?BhbXVΫ-}~O:CpggsliD_lJOፖkd7v~vsEWZ6lJUkxk9Cgg抮X%wvlJ>y5BKk_Pm}~Nnopg3\cy PΧqH" )vwZkDS_П-|!R_U֕!ok<>y@]{X% ?dd;?;?H@ M"R"ό L?mNnq K?g4UuAͬ|`IXE߭bP]|vΫ-}~O:@0&l!/;K_XEW) Nnq?;?H9*Gͬ|>yAmc<Ql bWli 9mcOZ?:.m|]|vΫ-}~O:A'o&d:O_ɶ)!+Sk;y=|{?;?qY]j4?;dfý06{;5=HAlGɄ;X53`'?9*Gk<Vl k<ؔ -S<&=wZkDb)'kdY'g4UuH?:.6`t?;7-c<==vwZkEDc/Sk< k9G[?;?z9mcOZ?:.m|]|~;u\mcy2<?;?{?83wguc_ؤFL?k;k9A?;?Y]j4c<f?;?N2 idbD%0şkd͟8sEWZTX-X ̜qhw.Lmcyg3d?;?y? guH#x L?-|?;?t?U֕!>ywcmc/뵏ddB#Ի;5qHO_bX_)mc'7SggNsEW[?6`t]X-vlXU>'O / didlKX529*Cͬ|'77dnϨg37dv}C?O:@=> \d;5'Ja%CX52?U6l 'cW+E[Xu?F'D2M1HO?1%0 c'7SD 9*Gͬ|VDZTSXO:XE_P e;5P!<_bXy]keggL9*Cͬ|Z5kOuE?dd v~vE 6wZk qHO|/Sk,ZNnq~v*ؠ>y큰$U|5kOuE?k-9*Cͬ|eX̜qg3&=>'q>0u?ݟ086wZk qHPHlAǂ> rsu?`ggL7抮(?9`l ?Uk<>y2XU>'O &&.2)vwZk-!@L?&x+Kk9@E>hJsk_`|cXmcssC'g3\mcyPΧq6;5@`|za|-0(抮(?9`l ?Uk<~>y:V<#M3$8 wZk@G`|^c'7S {?;?Y]iRmc~>yddB2vl)Sk>y큰$U|?=cW+E[Xu?6@@?ieR H_X52!ggg4UuH9dJ &y`~]|hKk_ΧqnC@ ? *guc_ ` D?Sk> c'7S ?|'O *?;qwZk ZRL?d|Qgg#*Ҥ?c XC-c9 I &XsAȯg3dlCCM$ Mo)2Nnqr~v?g4UuAͬ|`IXClivΫ-}~O:G{?;?+;5 b)Sk1> rsu?ĭ'lο? c<H6~v7d%idW@KRd1Ɖmc'7S:U֕!wk<ˆ%>y>y5BKk_E嶱9 g3\cyA7g3d!8 >MC"9?'%0 Nnqvw9mcOZ? [k<‹ksggw)/_c> rsu?ýhJ7`~ᵬ|!+̞u?'ggCvwZk+~%%0 -NnqcsEW[?6`~mc _kyr_ ?m}~O9$y2D?;?@guc_&_lPy[X52C-FU֕!>yТbUky1U|>h-S<;hp Cidc@OSk!|/ggg4UuAͬ|bcXEɟ-}U[k_Χq?;?2MC d_^ ;X52⽟*Ҥ?? -XO:@\C  wZkHm~> rsu?ݟg4UuAͬ|`IX[k rsu?ggU6nUk<=m|ヌϨg32g3d{?;?Q胇;5@̷)ݠ\> rsu?ggOY]lP~sk<~>y>yr_S l0@qO_Ru)Jah6Ok9@iVAWg4UuH9vc9 4= &<> <[378_ANNnq-@*Ҥ??>yd>>'qg3d@?;? 2~M/b3Ja c'7S 6~v _U6mc [k<O뵏t\\嶱<'gg-'Ļ;5@( Jao-|-@s*Ҥ??>y2;>>'q6}C?O:@p#l;ﳺ_c@ ONnqsEW[?&? 1m|>h-S?;?f .MH^P%0`RNnq|mqY]lP~sk'O &JvwZk,) ^n|[?;?抮(?9`l ?Uk'R>qwZk@}/ANnqsgg+ ?9*C>yΧq?;?[R;5|Sk!"Nnq~v²hJ; .~wkyc<!_\@>w6@jlbrϲyI?@,?@> yc%A ^?*wBf׬gO`A ^?*EAvc?T( {3 d(Ъk]?T_@>4G}zHX‘K)HL c?/>ýei Xd/} c;XHXE/ka޷$>}z)H0&>ýo‘K:XA_}E/ka޷)~?X"\$?}z}"\&}X@I} B} @>!;>XAc;JE/ka޸`Hc; )}z)H0X‰"Q?} }> Jc?> dZ$Ika޸J)~?X)Hc;։E/ka޴Q$"Eka޴EI}>ýe0&)c?!AIYJ4_}A  c;֍ BhXh> kaVD7Z4i >ka>>Ska޴ei/w E/ka޲)}zʟHc;U A2X@KG} A} Bo}p3YQZAR?XR E/ka޸Hc;)E_> > X@*CkaCXdc?pQ}r c;WE/ka޲R)~?Xl}Tska@kaCX@* ckaOX@'} _.X@?/ c?_G} ßX@g}#4`>} kayka>1}`X@O>1>0kaka HX(Oka`ka> X@ E_X@ Mc?%_hK}7}?X@ [>ýo*H9Gka<}'}Mka0/Mka0LX@ ¯X@ }>X@ ?c?'>p>q}!X@ N97>q}c?X@ {>q>p& c?'X@ >ka=1 c?b11(Xd_X@A BXdc?X@RXZ@[2>qMg+> rsu?~vSQNJgu{?'_?J-|Jgg?SS-8a댥guE@y8%'Ax-c'7S[6~v<Jgg0qMN ?_߈vke(e(HFe7_׊@'=|L+I|7g6s]i3>yΧq?;?&8k6wZkX |?t_fX52N3'Aye| ϶~vi37dd3v~vT \di ?NnqN SbQK'i4't \O%v~v?gok rsu?[&̞u? {?;?-wguU@o:ks\O%v~vgokyi3Z92y2\=%.M; h$y86'A&Wa> rsu? {?;?i37fZTWᵬ|I̞u?v~v? ddgu'? rsu?{?;?u>yi3Z92y22?;?PEi5st`-| ;?;?[&̞u?q Ro )Ok9CCu>yi3Z9Ok<]k?>yΧq@g ;5 Qy8A'A&o"c'7Sxgg gok< cZLj._ddgg #'/gu F^N?"> rsu?}k-֓?{XoumkygE|'O%'ggC0wgu§mc'7Sɀggn3{&kX5֓?c皋FW-c<0[Od_ j _ T?\O&3I|'O&3ggBC;5ߓ:k8X52l?i37fZ/ cZOddv~v d;5x A_?X52a-֓?{Xoumkyu{XO:LD}Ŏ2dMs@#y@_N@N)v> rsu?!u>yΧq!q!M= j^P _ )Nnq!ggi37f[ Oֱk|2y2d#q]֚R?_?%\O#1[&I>yuc<v~vVyuc<4"?qD;5QN@P}Ķkdou>ykmk rsu?͟[&I>yuc<-0q K_ l;eN@Nnq 6/n_7fZOֱ̞u?M?;?e8{;5Rt&*c'7Sgok<6ddN2jgu7'AB䶱kdggu>ykmk>A> "?@ 6@>ýp&}}>@_?XD`X)HLXF`XA>Bkka!@>ýe0$ka}zJRC@Qka޲i(c;֍ Bd_}zJ Jc?Hw$O c;֍A4 c?PwX@WG}}}zH0&> XFa /XdwZA8c? >ýeOAka wka޲RIW}H, ?c?@>$ c?CX@?c?@kka޸H9&>ýqBrM}H@\H !c;RH$PckaX@D@Yka޲+ X+ >ýp! -c?ώYOp.qj!H~ $X56 Bn?mck{?lo;5>"K1B? c'7SyOɟ'U\&Xu?g6~v!6K_ȯ#oBQ_PSYk9ggΨE֓?>yrgKk_=w&Xu?-0E>en)Aǡ+B?Yc'7Sٳ,Wuͬ|>'Oa=d$qEi R$,B?;k9ñ/gg?E֓?:.Lmcy6-hM;1HFAxE\OaOwZL:.Lmcy6Ol 4N6IwZkH B?xk9Hy)ۭ|ݬ|>'7 kt(ؙX3dl=~v!`g)~OA@ c'7SggMEɟ-}~O:-Cng.MHzAnNnq+gg*>[k_ΧqώYA6ޯЭ* լ|TAkgVgP> +߹kg_`WkX3?v> PCck-%?@_޵?@Ck( ~> P*+X3 mck0'-|嶱gWk> Fɍ Pk,bbo'7 k> `ٲ> `X3 |mc&hZL$Eg0v> f,?@ X3*> fe> yc7Z~9gg ޯЀ >>mky<M mcpƧ233= c?f?c?f3oX@X&>"_G},qka X@X_&7_Yka Q>wHLSka޲_}zJCw넩!3wȿXBgYZBg>ýhA}!4/ a/}zRIc;֍ c;T`Mka޸ >ýoHc?0#_X@Zqka Nc?h}ka޷ >X@Zc?hwR >?X@\+@> ?c?q?}. c?pc?kka޸Q$C}Oka@> c?> }?dE A(?c?hWka?X@oX@.X@44>Eka@*?c?xUka c?z?X@^c?zX@^> }oXhT_} /}X@}}ka޲ c;TVITG}.#?X E%Quka @c>ýq$D>>#>ýehR)*>}1X@d}z$">[ka타Hc?gka c?X@duka X@d>X@dc?C@Mka _X@d$ =0> fMkaw0.I@> >bX@f c?W}31W}3Oka οc?;a}3'0=AO} c?}P@;X@h-A}4>Uka$: >Q}X@5_X@l%ԋ>5&gkahc?jB D}X@ G}?.c?,}Cka`T&xc?ska> nc?@pkaekawka ßp>+>*8ukaE Z>N#)>ԟX@ @#>Skah,ŀ>c?-/X0\?ckapkap\c?f]kap?c?.X@C/X@ ?c?sOX@>skakaka@ka@+A c? c? ?c? $Cd8 akaxK S>o}!c?/H0ka c? X@sG}9X@r} 3>P??X@ K>> G2@wkaY}X`)ka}?XW}Uka) c?%'>>X} c?A_}>T c?P) N@?}X)+>T:+8> g>}>>} kayc?n>@%kaa/>_8?@>>?OX@ @ka c?"7}};X@9?99X@}BX@ O}@>#_XJc?2X@::X@>X,"0 s>XxG}<oX@x_ka)>}<?c?}<X@zOkajka@>X@z_X@zc?Нka>>/}'>haka6X@}>huka4;OX@}Гka4(z5zc?o}>q>pka=X@g}Ika<c?>y}c?ǿX@X@3ka<?c?X@Ska -ka!>&w$eIoka20_ p Qk9>?;?!G9_c@*GgWk>SNy?wgtrV)SNa.dvwZk1H6ZNns lARQ"̜ޯ VaWmc'>}Χs ٳ؇#֚_ @c'7SD ;02sz%Zc'>}Χs <ė0{;5 r @{Ic'7SggZ;u]iWv@/J!DX3d?;?gCsvwZk9~k)kggRQ"ǶΙL mc;>U:V9_c@=]|ϲy`/^A"0ȱH_@/?k9>A7JۭDmc皕ZL c?X?ֱ@~[k_@XTLUZrg>VSrg6k }X3d`{_ؤ(;k9f#+n/>y@V@@/T\-k*ELRk_XZ?}}~m~/> KXܫ#KX@qFֱ&ȆnLȃkXTLȓJ5c'>}Χs?;?/_s=֚b; QxX5bId?:{*>y/mcsz%Z}[X3dlggK\n֚͝< v>?_D[X5`6=d ?9j Kk_!*>>9y8rT?>m}~NoWXPmc'>}Χslc+>K_Ч߄j!xZ?\OmRQ"v@ @X3-cǖJ\J5]|ϲy`>@#0O_8K_ߊ;X5`?^ 9AԧiW6@>#U|P_[Xޯ V |ϲy`>%lAc5G|-c'7Sgg+n/{k< Z?Kk_rX妻ꥪAek_I&kgWk>SggwZka#7G|!c'7SggZLsk<Kk_!*>>amc'>}Χsbna.MD;C_x!Nns 6~vGE d&Z? BsܙKX@>ZhU=W&}~m mk_ZuwD|k_Cͬ}L&Z?[k_?~;~wk_?Z-c>'7BU|}w> yc<0!ꮕs]֚>Gs-|0%]iW6k&Z?̜ޯ V>mc'>}Χsm1 9vlV)(oA> rsu? ԭHX檅siWXKXamcmcjU}}~NoWX> yc<1gg s,ihQ> E\O"~v ԭH>y@$Z?$?Kk_Qrg>cZەV !JBE|ϲss"o*83>'sP%(7e7B EvwZk~kx-|0#B6@ IKk_!*>>G#>hZg.X3w~> 6ހ> ycpNi3bo`skٵ317ЪcpH_? c?6 }>>_} ">}"_X@!>c?kaCkaOX@?c?vska>a}c>`>`Cka޴HREwi XBg\(RCw|!2/>ýoc;VZ$}zHM }Kka޲h?XH0)X$Aw$[R)?Xd }->ӿX@Zw>oX@Z (>2XV`LSkaka-}z)H0}?>+ka޸J !>ska޴P$">?XD`X@@>ýh")& c?,X@cX@c?X@rǟXSka c?Gc?BXmkaG} c?X)H0F>ýhѤ?ka_DXd7?@;kac?> c?>kaaka޲ c?z=8c?zc?T=X@* c?z>Qkac?}?X@~>c? ka>X@~ ?c? `>% {ka`oka>qW}Xd0X@ c?7X7}PQkaVX@/X@>X@w}X@Kc?9r c?9rc?9X@?~ c?/X@?2]ka?c?-w} }  ?c?c?#t}@>w}wgka>{ka>"X@_}_?_?oX@/X@#>mka-c?">#X@A#>c?<1>}ux /}`SkaX3,6,Xh^?_>?O}`kaXc? c? ?X@#ka폀>kaA}*X@U>ka Gkac?=1'z${o}O} @J=1}XdI?c? ?c? *1g}0?AH0=_ ka`_X@qkabX@ 1kah84}>}w}OX@e}ekal;6?oX@`ykap*8Ikap>_?>c?_X@'>?X@ykau}W}X@>$?X@>81X@W}? c?>>c?>c?>aka}/kaBc?>K<?c?}+>Qka|>$>_kaX@'}?ب_)>Ł} >}KkaL#X0>@ / c?PKka c?P)ka@ka@+X@X@7>A>Q?}?"}>P#o}ika3X@$܁}ka}}}X_kaA}Wka8}ZYkaA} ?$o} 7>0"LOka>0>0>06L?c?. c?}`ka$" c?o}!}%w}"XdC/X@[kaQ} @>>kaP(#P  X@> >"?X@!>?X@%kaXC,$")Gka>H>I}c?*X@@ 5 8 O} oX@ c?L&?&oX@>ZX@c/X@coX@`>XDV &X kaEXBX@A'} &W} >>>/>hSka'}Z>h- >hka(X@o}>p.X@c?N}!>c?D0-1}>skakax>' c?OX@X@'} AkaxG< c?Oc?OoX@@ ?c?P c?P*@>} c?P>ekaX@c?P (?X@G} Wka%/k>x ^,^/Ika޲>sYek=֚KI #H c'7Sl@?7/a[X@~sk_P Z gWk>S?j}֚(oF')k> rsu?ջ?;?UtiW=/ _P\-c@aX3d ?;?eTsu{;5 ^~\OPggZiWͬ|E֕c発7ZUuP gh>y5ɟRUrg-c@|ZO=_|'OPmɏ<ʩw* ηvwZk"GH_[gmc'7Szk<`ʨQWXL_嶱7*XޯʀJ>> gWk>1 P~_}Χsmo q ';X5agg+L-}BN3+U@1(/`2wk_̶_7}?}8>Z1_c~Z1K{X@#OZ1X@+?Uk_P Z l{X3dl\# 05aH_klbߍc @>yP Z @Wky<u?ؗ@"sR^20` bNnsCmƿMͬ|cG?Sv Kk_P ZG =ky<u?2"l! %if,d0)k <-Kk9?;?w @{yk<9>yp-}-cXޯʀJ>>9X3dë6~vOLBM$c ]'H_p;X5aKm_G &?&;e[X@#9_|}ȋ mc'>}Χsgg T \wZkٯ $`QR2C\O`MA ~-c @#mcik_ZTV |ϲygTxgu!cA@@J/Kk96@X!c {@Ac~>'7@7>dȮ> yc<1 *xgu-ƘS _1?kdž[?;?0mc 'c3k_>㛓?k_P Z {J-c'>}P8~> yc<1}wcM!' ^T+)k#X5c? |WM֣GV@g_vΙ:rg-}Rɇ7&>3f?ϭcQ}~NoW@%k3|ϲy`ggY9kp{D _0<\O ~v 3OvbnL[Xw&-k?QwЕZTV`>m|ϲycю T|=O_ ,@1/#Ok9z ~vٷ\SiWB=|BE|k< D%Z?7 vZN*үȈv`ouv@X@禓.Uk_rgc++Qrgk_u4UA}Xȁ}L&"K&ܙȄ XޯʀJ>> Q"y|E" `ouD#??Kk_u4UCXLDZZ,srg"`k_M'U\>7\WTVXA> yc<0j7h;TN`֚͝,`)-c'7SQ@5X sk<c@c'>}Χs3ggPDs{;5X&U_H_}> rsu?gg#, 9dTVXB |ϲyc@Ic6wZk20yP C>햱kgg@? @?Kk_>C/mcsz*+X mc'>}Χs>v~v_ 3guNʃ/ .mc'7S ;?;?J|xJ-}*ʼL_k_rgL>'7m6gWk>Sa/ggDq?1&60,wk,IF&sz*+X => | T> _ DX3@F9-|Ͽ@nvr NoW@>>@wVgWk>;^?#HoXrkg_A7~̝M ;' *!XD_ ~>u4>w}A}@akac?X@>4  >_kaԫ>> W5X@X@5_X@_ka c?XBYLI c; 4?}zD/>ýpDc;JBd_}z߁!3w!3ka޴I XXd ?c?0>ýe)$F`S*H0&\I_ka޷ФS X@Z c?}-8>[ika A}- c;)AkaP}. c?eka  Xllc?X@6,l6>>ýhBWka&6/X Xdc?}BX@$c?I'}zP"+A $ c? n77>oX@ 7>}pmka?n 7OX@7>> 9?c?_X@ Wka c;T > @> Jc?Ct*t c?:}zDa?W> bXdc?pQ}r c?}W> +?c?WkaBtc?XkaEtş;;;Wka9v c??ka>,x>> <?X@%X@%}>>?|>_>qkae}!X@C>c?Q+DK BX@ika0 @w>1c?) @>1XAk>6_ӯXAh2}c?Yka-_XAhXhc?M>ٟ}$?X`>56TO}c?M+>kaX2}Wkaf@3>_'}oX2=3 %kafH?&d < H3A>W} &hI3AG>c?Lث>͆?&lc?L'X >pkaO}kka`ka)'>o}pgka`c?L/X'hc?)>O}/Xh^9/Mka` c?<{>`:c?L&}F}Q0Z& @{>h>X8&p&p c?L* _&c?L*XO}u.O}>#& >Bw}*}C0! &bXdX4&f&g_&a>kabB?XoX>ăX@Xd_} Mka@9zXdBXdI?c?7}N?}z}z.>Ā>XSXY?c?L G&>'}&}0(Z&tOkagOc?LНkaap>_&}+kaap \c?L c?_oX@ Ag}0>};Xr}/X!}0b& @>c?L/>>[kaFX '}@> ?c?L c?L X8cka` >c>?&%?}ka`}"XR2X@> 2 & >_X c?L0=aka$`/X [>0 c?L A} -0)_& ?kabb}_&'&'>kabzc?LN ?c?LN?X}/}XAkabWkax&(X@W}?&B8X!&B ]kag?&|wkag;3C>X@&<XXB>К>Ы4 kahG&c?M:4 5kahD/XBc?M?c?MO%746&D)2 Gkad@kadPWka<?c?L/} -2#X";\P}>9gC 'Z4*;wZkxX'VOkLNnsl:d>yd@2&ΙLY0Wte_k_Sr?k_]Qɟc*cL#!Z~mcL -cLKIԭQWV&)%.k_Xk[M@Q7{Xs=}C?쁿<0Jde4W8,iN;gr_bk9.kRɇ7ZL6Du>y@1Im|k?mcsz+cX3d^*Y`) @#ž> rsu? ~vY0I>ySuuP gg[k<[Xޯ{X#okX3dPO5{ ;U@/`5W'&)‘> rsu? |4Z?LR{{X@Kmc9_D뵏yo6#?cT>?cK&ܙ3\-)$&FI}}_ZU\-c_}724ߎcLkݬ}&F}Z;k?}}~NoWb=|}d`Hgg6͟ccw,>bo'7>>20}{X320!0> L > LNmcD~&O=_|'SBmcpe vlefLX_M;ȶr17+ ~״ ?X;^?SUt-d}ڵZ9D=if/ V\S)hq6|rϲ?ze Utt"2zcv}U ZROUthp>ϴϲ/󥃩}vq̱hq`"?7_̱hp#i '`yݟi ':e gg?Χ::X:Aϴ_NuT -b)l':EݟişNn ggK3$u4*ek+F?Ds{>9gKl79g.'U,8vwZg.1&60,w^9g17T]vNh`g,]en40O?rokJ4Qf培7}ݝ֙_P=qY_`ƣwgtrܛ@jl+^9g#❿i^&lAxЪk0!L6 qg,/26wZgY郗 ;~.6培g ȿ#Sdx17u|  M =v0Ȁwg,B_`835p`gtr5'uS^cvwG,_kccp׎Y #-ώY/_fz@~gu~@jlޱ/k,&NSvN? nv|rυ \nvwG,30*q^!Ygb+D=֙g`rgIvwZgX'qL3Xgtr?80wG,3uU1͝?p —]fL3 ltgu~g{;3k,9qCi_`tcvwZg#Sd }}G17uoo, M cpw`?_ '>0w/' 'i9@2?i9[՛;3?ZƀlEi9ѣgu~Mh֙k-Ѓ_h@wZg8Ѕ_h>qgu~@ƄD;3?Zh"i9.4_p#q!_qS;3?\h@FLL@HL4Lƀ>L L7?psNA&֙͝k. Vl_pJvwZgd8%i9$q(_ȩƀ_ƀgu~S9gdώY_ 8fgu~?L\h.L{;?p+Lhݝ֙k 4f!'_h9qagu~?C?pz@>L6@?iO"8҄;3 [G;3 ۍ*gu~?h>LҴ;3 ^jK'_z֙k/ht!'_x5q.LiOƃvwZg h?p=Ɓ?p~G.L4 ֙k0%q '_gvwZgƀB֙͝k0ƃ6wZg8xgu~?]֙k0!L4ivwZgJq;3 S ?p,qo'_87O?p7'_ h}֙kN4wZghiO?qr?iO4D]֙kƇvwZgKiO\h~!'_ˍ=?p ƈ.埸OgB.埸OiwG,A;~?C=?p!G;~?@qƀ? #SdxNSk ̅?D4=d h{;3k2}ƀ_i_M;x_bo'SB赎eȀwƀ>͟@ƀiokccqȯk,"#:OUv!ȀwƂ>9g2̂+vwZg:1&60,wmx_bo'SBëX7@Md) qώYGNL8qLa·MYkccrЙ NSuv'Ȁwƀ.ώY38%i@jlPL?NSdd) q7|rω? 9q7wG,`!0q8YCaƄvwG,`!0"q;wZgkccz]>YMhU?;3 _Bg"kSn8Њgu~01&60,wR x_bo'SBj;g 'ȀwƁ]/p@.L`1&60,w'k,O#7Y~9g M  X7s hFf '[˿`l@wgu~0 b56Ll`X DMhU?JfBg"kv|rϴ!e"q,wgu~0#1&60,wP"x_bo&"o,EMhU?cp?!O&͟'uu07qٳ?_M;X NS}vBg"k.ώY Cqz" Fɍ /?NSլvN l8"26wG,`e6?_l9K9g/k48tL`e b56Ll`X>k,NSkD4l_ Ck6wZgkccur/17T+hog"k=g,?4=gu|b1c6K}17u`} Ъbֱ8oȀwƄ>9g/A3 iwZg!oK4%wG,-1&60,w׎YEF&u4*cpHM@;BJ}/"gƄ;3I b56Ll`XͯNF&u4*kAȀwƀݟ% q=wgtrόE q=gtrόE P@}όE#Sdbo0[^?PЪb;' wȀwƀC>/% =ƀCi_#糺9g%?#Sd.׎Y M &8o@M@;k>9g/KόS_^"Yokccpj??NSv[?D4i/_xAӍs;31c}NF&u4*UvPh& q>9gw/WNgwZg @jl>׎Y M '8o@M@;B=>9g/iwi b56Ll`X9r;ЪcUv_Ȁwƈ^ώYGOTIT(q>1_7q]>1_M;r;ЪbZlOA72ƠD@d"όCk7vwG,71&60,w:vr/bo'SBZlog"k .ώYReg .L͉h ]kccy=#7Y ;~9g M l D4 ]2̓B.L_M;; NSwkD4 OUt4 ό@ b56Ll`XX%xw17ww6r/ Ъb"Zd6կg"k1ώY/_j,q3Y?5w[;|bOk `q 9g bB@>1']֙?5K6wG,@kf@jlXk,pQ&x?*U%3ʡmx?*U"ųwH{^?T(u4*-vֿկg"k>/ꮘC;3!1&60,whvr]MhU?1MvVh%?Ļ;3_M;6rWM惉δ8G?o'SBl H_Dk*4qі״?T&u4*HlG@;@~?>/lv@~?il.όH_6#!όH_6@gu|bBl*wgu|bBPq>Ląa-6lόH_ .LąبEiFdnόH_ \lCiJ`֙͝ `r`>Ląl1O>1!_,6/O>1!_, vwZg$/kbd֙ @jl|,#:O;' ,կg"k&K|N:[M ɒY_8m4+&vwG,@tEs6N"Y_:suw(vwG,@dUtgtrϤ KV-\m;3kh]֙_8jŪV6Rgu} WN:Z+\lCiH_\WKvwZg7 n֙_8YÍwZg㥴ЮPgu} WN:Sl>+'+qwZg㥫iϤ KWTs6wZg#SdMM_rϸ Ъ l?_|-/n֙_7lwZg_ 8.O>!gvwZg_܄`fLBkÍX>gNgu}!W7*}֙_8LBk8ڗvwZg_SwZg_M;y.׎Y#:OZl?_M;mxdp^kg?M ZdOկg"k-2JyϸhgtrϤku*Mp˝+J%+nf wZgW9ȱJgu} _\6֙ b56Ll`X;9?bo'SB􁽬vZ( Z qX!`CiH ? Fɍ L?M / C_կg"k> Z8.L@ 1&60,wk,"#:O X7?_ ?2hhϤ#SdrMeo,A7T@ D>)w/ l.L@m'2wG,@mัvlYqwZgokzgb6)vwG,@m8ݝ֙t6lgu} 6'YB(ͬiH ,qE1cp_}#7Y wMhU?cp?҇D#Sd!^׎YL״17T*, /.1P&1TFT/>ýhHLUwI >ýhCwJBb>ýoka޲}z$&c;Bh_c?04@_XAwAOw >ýq$}zBL1 ` ?c?LT31Q}?>ýoH0|>@)kab1PC\R +/>@okah\ 4Aw}&> Ykah?&XD_DA$?&+#\( !>coXwQw) c; kak>р}$D >?&c?L1W}z`H0)>2YJ$c?L`<2@QkahZ&HUkadh > c;֍A2X$c;֌ _&H*} }Q}zʡH0*>IYQJE%Q(Xc;TVITB/}z} ?&ag}X#0+PckaHc;RE0ka엀}[&e~"ԏ|rϠ2bԏwZkC[A* 0+NnsR~v`W?=0{GֱeRU"-}~Am}XXq/mk_N*3,Pux!kX Z&`gWk>Sퟝ(:83guXX)2T> rsu?[?;?W CX\ XXGֱ>y`V>{k<ծ:3k_rgcL ߥ'FVh>TUtHkXb(IOmk_*Mk#ýei XHMwп `ika쁄)H9&Z4YRA4}zH0*X"c@wR c?L>Hc?Lc;ZA(ka޸H0}}2aG}g} c?F>A>Ɂ'} 1?}_>Ɇ넥 _&Lc; I0wJc?LZ( ?ka`_D"c?LD"c0go}zC>͟{{;5ׅb?@ /\O3gg*mc&? :>>1`'|X3dggM;'>#F&sz@k~ek&, O=_|& c@WgWk>Ъvk g"kT|!3wCwi X&c;։!4ka޷Bka쁁}w >ýh >ýeI c;a>aka&,X.1a}z*H0&)1`ykab}A_}z ?c?LZ3\)"1h1X} 1hc?LZ&-&-/X‰"c1h c?LZ*+H >s|rϴ/61gua`7T!_bk"[?>yM'U\9_*>>1p_> yc<5B`l.M a`X<T1p&k9Pm]lXsIG*-}~NoWJL]-c'>}ΧsT~veNAԓK׳_م`x*PC{X5gD{?;?禓.U[XޯPk~Gky<u?ҍ'֚͝ +?kL\mc'7S?;?zi:_ VKky<u?L'@jl,rϲ17*c-c|ϲu4*b{X7> Ȁwj L*c b56Ll`XE>&w qߎY NSX7* Ȁw >9g2( ;3Q b56Ll`XͯNS଒;g  `0 s>9g2( ς?kcctbN׎YM Y-v  Djj֙V .`@jl}171w(kg_bo'SBWv /PK}/s vwZg[#SdF^9gNSck("?_}}֙V@jl'6rM X;g w{>9gO`RL+K b56Ll`XT mxF&u4*jcpXP  s vl  Kgu|G.s;3?D.` wgu|Gw0gu|G9(Ei`0-wgu|G;;> # ]֙V!㘊?i` b56Ll`X??;QL[!{L)P 6Q&>SGqkgO`@ }i?*nýeI X[ \)&.)H9&1pK1pc?L2"0%`>w}CX  l%`ka8c?L2wR@[e c)@Gd4\O#?;?0_X o5'Ul??L2ziYMɟM>rᵬ}*ەdߥX |ϲyi;?;?1ck,uM լ|}aGky<M X Z*lrrrrV?8#_2SV^?#:O%T6N怋g,"OL+kNh;38 9lYVDs}֙V 'gu|<*(lYV ?#g Fɍ 'k,Tq>׎YSGp&^?T(@AU3Bv'^?PPrOW$RO8s>9g_ q'}|hO V9'V6q[+>9g_ d \V?*X䞯XZR'26|r*,V_ПPrOW'ZRlAK%PQs)v}|+ªI X[8斳#>9g_ ik883Epcz`ekKg<ʫoqV??O*AXggXB8UB=_5)q~g,K?.6L+?hO V9'V6qg,K?ggXB8UB=_."?\lٳ%PP qfϴς+ªIX[8Swg,K?6ϴς=pczJլE-*'g,K?lil?*X䞯҅6qd[>9g_ 0#"B8UB=_RNu9Kwݟ/Nu9KwݟiJE U $~UkKg:gW6E%PԬ[:q-iJB8UB=_Vq]3ӹ%PꮙiKw'T+PIkKg=UM*; |r*=UM*; }}(B8UB=_v"2zT0 v|r*=UҪu{;>>Y U $~_kKg9Ԫ,s?ORTmNggҋ?*X䞯Ҍ-b)l'S2O8%P̩eS`N$LPQ U $~"2u'W}/Nz0"O3AO'T+TVq[M R'wg,K?[M R'wggҡpczJWkKg<0lT'ykYG`4?ПPrOWAUE-dT+qlT'z*QA[6}}-?*X䞯ҖZRNq=k׸,/?Oֱm{iJ ?*X䞯җRNbE%P֬[:s(}})o'T+QE-dfT0"T'u*YTv}})'T+S[X[8Pbݟ/ LS?hO V9'"2sXs {>9g_ zV:^ϴϥB8UB=_ b)lAˈg,K?`{3FПPrOWeP%PPq% >>?*X䞯ҩ*`%P@{>>ªI("2u5W-~G?OjZ`3N??*X䞯ҭq sg,K?Tn lLU_ПPrOWWZRNe#lA9?OVR9iJ ??*X䞯҃X[8-_sT'ugW;>>u U $~:VlAv|r*= &W؂ LP pczJ9g_ Sηlz lLShO V9'"2ys̫lA>?OW؂}3A'T+PZRND=/ND=iJ?*X䞯҃X[8P Jg,K?@>ϴϥПPrOW@n"2z\K\ T'z\K\ LPpczJqRlT' \-iJПPrOW@"?'+>9g_ `JϴϥªI(kKg$(g,K?Kv}}( U $~mb)lmsT>9g_ SLQªI(ZR8+>9g_ qV}}(B8UB=_=E-dЭDQώYB'j'rv}}(B8UB=_ vqԶ֥/ORhWZ0}}(IpczJvq#>ώYBrG0}iJ?ПPrOW@"2u5`ifώYB'SZ6lLP,pczJb)l':z@y%PΪ88lLP U $~G꣊l NώYB':j7@3B'T+P4ꣁ3l /NuQN6^ϴϥ/hO V9'qkKg8Jq1|r*8Jq1}}(B8UB=_X[81qL?On&lLP9pczJCiU*Y6@."T'yTdۍ3DhO V9'RNoB{>9g_ ޅj?q}}(QpczL'lv|r*8Lf?*X䞯vqgM/l6}}0S U $~X[85qjg,K?j`>ϴϦB8UB=_6qݟ/\lv}}0ªI1%E-dWJwAg,K?]*-l=iL?*X䞯 mb)l'kX9@?OWMk;>>B8UB=_ mb)lzlz=?Oo[G>>hO V9'E-dֶ%P'm 7Agg ?*X䞯RӍ ͟/Ӎ ͟iL0pczM E-dNEk7?ONEk7ПPrOW颵e5n`Fv|r*<j$Ld_ПPrOWZRqXώYBp,wggB8UB=_ b)l'j?OWMUӹ>>B8UB=_ -b)ls0 %?On~D>>ªI1E-nn`i%P(ggB8UB=_X[8M+)(w%PM+)(w3ПPrOWֱqX0 T'uT+CiLk U $~ZRNZw0 >9g_ rT+`}}0,pczL"?70 v|r*  ;>>6pczM=E-n`+?On`+B8UB=_q-.ώYBpZ]iLªI2X[8,g,K?YϴϦB8UB=_"?s/n`}3B8UB=_-b)l`"T'Pb.ϴϦ] U $~ZRs>9g_ v}}01pczL{kKg̅g,K?\lAv}}0u U $~{kKg=LU8i~ώYB'J-/hO V9'!kKgX`g,K?Ŏ6ȶ}}0B8UB=_X[8U%PU3遯'T+`ZRNYmn lT'ur4kq$ggПPrOW遽E-d4W?}%PzhsggПPrOWq7Rg,K?7Rgg'T+b E-dꨪ {%PQUsAHgghO V9' @.ώYBg#K3 U $~@ Fs%P`^g;>>B8UB=_X[8`϶|r*8ϴϦhO V9'"2sy H!T'sy H!L`pczLb)l'q$|r*=tO 3逃ªI0F8>9g_ 8>>CpczLvqX|r*>q%gg'T+`'2ݟ/wQϴϦOhO V9'g0$/?O0 9!~ϴϦ?'T+`kKg\v|r*\v}}0KpczLqFv|r*n`Lgg_'T+a"? g,K?T;>> ?*X䞯E-0Os C/0??ªI0kKg9EGK%P·*(:]iL#B8UB=_{X[8`:sGv|r*N`HϴϦOhO V9'wkKg=3ʩRɜnώYB'yU*Y3-q U $~b)l'U͟/O!u4Y>>??*X䞯>"2ykwE{=?O818{3ПPrOWᘚ"2ybչ %P斵gV>ϴφlB8UB=_bX[8ꮚ.TA3g,K?]5\fϴφbhO V9'-0+?OW-q^ϴφa_'T+fGkKg:lݟ/Nj-wgg7??*X䞯0GkKg:*Ts|r*:*Ts}|3?ПPrOW%uJn϶|r*:O:#lLfI U $~{X[8B6 T'uЮ;>>?*X䞯2[X[8ԨXu{J>9g_ JgW3c U $~ZROZKyq͟/OZKyq͟i /hO V9' X[8CN6;|r*ibϴφdПPrOWUE-dWM3a'g,K?]4sKi pcz 6qRgb>ώYB'VK}i pcz ZROU Uqg,K?A¹UnaA''T+f2[,Ӹjݟ/OEU-ilnϴφa'T+fckKg9g_ Z*ýi OhO V9'"2z*RN`%?OU*k K3ᙗ'T+fROEKi]ns?OT:]i 'ªI3qK{>9g_ \Cm U $~kKgg0g,K?s iv}|3ПPrOWᚋX[8@'s v|r*a=nϴφi?*X䞯:-b)la>pcz vqS% sp%Pj)u8GοhO V9'9R/OT)s BNϴφa'T+fykKg4s1ώYB`F7B8UB=_`kKg`Fg,K?\hv}|3=pcz ZROL@tX%P.q+v}|3B8UB=_`"2z O*|r*=  h{>>'T+fvq.aA͟/6}|3hO V9'vq`?O9v}|3'T+f?Xݟ/,s ϴφ`ªI3b)l %PC0'Lf@pcz ^"2uK&0s%P,r9ϴφdhO V9'b)l*ώYB*ϴφ`pcz E-EFώYB.*6}|3??*X䞯0kKg\Dc%P@#i {ªI3Vq!s b?O\˜}|3ПPrOWE18%P@Ls{>>?hO V9'#R {>9g_  }|3ПPrOWZRrg,K?>?'W2W=2+Xy9$[Y̔+IsL &OLI^cȪSys-U )[" 䞚dR\I*URW8Ҫ:[% IT(TrÅrOzPD㾪钅(\tTrÅkOήSuSQkfW)TYĕ67U<+mEJny,Vq%tLLU(Cpc=+9$s'I:z$sy$sV-Vq=u,rS9YUj:8IUWЭS$ÌzuTJcuJ*TWY4~TiUOS%UBv*9YMxE2.8[=8E2 gWLҰE*$8nz3q=r]=sU=r]8E2KM2 IT(JgS=3|v,\n|vQB&ykzUA+ֲ\zu= Ԭ' :SLʡE4+R8T(jVg%U=48Xsp\SIJr)\QZj䒕]*&e5rHtD+ITd.zdQ:΢ErOPu%3ʢEROM2TqPu%S"k9(:bu2jXCUWPu"gETU^Aԓ*YTLZ䐱T\Z9j%j:$Q\DMUNZNEkO$* Υs$HbB\ .:[ UT(Z$*2p^t+8Z ʃgp^sZ ʃgu2Ъg+Xy$PlNNPNNPNNPNNPNNPNNPNNQU3"Y(]U%ЬeKzJ&UB+$,(ULuUMD<ʗU\Ur< 6'R꫞' ʌeKzdMO$*2y.rTH2'zqU\H2\ἋiZC$PlNNPNNPNNPNNPNNPNNPNNQU3"Y(]U%ЬeKzJ&UB+$,(U*Xo"k'UP8TUR(dd:I殩$*&4''(''(''(''(''(''(''(Bs,.VQ2W=%*ZL%[D%Rr̡m+|WQBՁ(F2IT }Ri%9e֬y(E ̳QB&T礡2V=#9V+(W\iA'f:[$#Bɍ &'qтLOT>2V=#9VY:OM+)AOЮTQ\I ʌAċi]r+&R$Dg=rNVOB+eR+eFOB+eRRrڤeFNq=rP3IXpy$Ph#uJfB*WErLEkOT UD*ZdR꫞$QЮR꫞$QЮTeA92[$*2sJJ:l Y99A99A99A99A99A99A99ETPguTToB.(U ԬeTI8uuNY<)Q$$* qԃiu*+'EsN:]rH2փGu ZdJJygs"8uu$#J2rrrrrrrrrrrrrr'2QB(ޅe*]UsQ2Y!aDʨꣀ`NYЮ:I u:N:]r+Y] C8A2$\UI^O1dR'W%3\ Y99A99A99A99A99A99A99ETPguTToB.(U ԬeTHet) 2yT(qZRI ʃGUN)I^Net)$jڤeA=3,O$V:zdiQ$V$!ĕ*Uk*յHet)$d:9a̓W\WBIT?R URWT$"Ф8A2$]2S80f(E ̳PJ*7YDʗU\LjVHXQ2$Y%[A9f 'PӰ"u Exbv0>PyZe;F-(F-k=#&qՔP`o=% s*\r*Y0zrzVJ- 3CIzgzY )A'[-5O%JΖ:$LiAM UF99L-Xdh)Q%JΖLJzbs\ &4} GHhQNNq=u,rSeAU,s*yU*Y4CΤeFNEs]2D$#GLdSuS:2z*BWLddhY1d=Rjf34e[Lj6zK dh:aҚVI ʃAjHY0U )4 UdeY+UI us<ÚI 5m $dh*IB9%P2zg`zdkITd2Qܒ ЭD R꫞dh*IB9%Pf(E ̳PJ*7YDʗU\1T&Q*g*r̝B㥲H%[\Z2d嫎Q*g*$} ezFrugV5Y0z)Jʴd:'d5MM2%P꨽eUΠ3 =*ey$} ezFrLhhhT`2XsCIs0 SSLe&!>2V=#9V &444*0 UQ>Nq=f!ji8,]sҦYGЦQ*g*ёdƆF!',X9\2URH%[\Z24,'T`ruJfIBDkFFdQ$LUHU#BE8ErH%[\Z2dHMj+GЦQ*g*ѐ'IGЦQ*g*ѐ'\D$LUHU*2s-s#S(ms3hʌf(E ̳PJ*7YDʗU\1T(q9fPyZe;F-(F-k=#&qՔP`o=% u,VPeKNQBʫyNrsI$4,d:,8-XʅS!Q|8reS,8Py$*/su!O$BWL FK*:ԩeUNqљmTW9W$EneA1mTW9:KLCUkO$EneAQjb&.:Z`2Xs**I -qʃBZM\tfZb䐨R 4F3-VD:KFe(ʊBKg7\p2̵Z?\tZ!Q|8PhZK:+ qt!Q|8Ph#z+ yUIUtLl'5E5fKT*I -qur7-BKg7\p2dWM $dI!Q|8M=UndSR UY:EsJq$End3I &9XndSR UF*ZKg7\p2U)RHT_)lA-qTI!Q|8sIe2HT_)lFd:$.4/IFO8`o$#IuHj&'au<[9ぐ'E kQ\DMUʨ'j%i$*2yVjgS\ Y99A99A99A99A99A99A99ETPguTToB.(U ԬeTHq=s*]UsNY-`/j(Z7ߔY)*D*M$2@f(E ̳PJ*7YDʗU\LjVHXQ2XN_=t2W=2+y$} a*]Us2d]2LuUL(GЖI2W=#!O2$8.IF2$p`z4~ Q%3Եb',2zQ=RH)&Td:UD2W=4(7(S*Ac̪).eTIL-XyQ!̩uUM ÊʡE2H24,}Q%3YL)>O2$8.AqBrO$#BߙUS80]=U?ʨZ]S*CR꫞I бUD OUf2$zWT<ʨzTIF2$p`z4~ Q%3Եb''(''(''(''(''(''(''(Bs,.VQ2W=%*ZL'ꊦ',d3X:vNCt( [!ryQ!Х\S бUD OUf2$zWT<ʨzS*Ac̪).eTIL-XyQ!Х\SAc̪).eTIL-XyQ!ЦU )Ac̪).eTIL-Xrrrrrrrrrrrrrr'2QB(ޅe*]UsQ2Y!aDʨzլQ99fO2zhukO$* 4,}Q%3YL)9<ʨzլQ9ԫddhX*Jg GUS=KV+z2yQ!Xy$>ʨ&UDRՊꞌf(E ̳PJ*7YDʗU\LjVHXQ2$8V.ZNY̪@ޚ+╋ ʃg ~eTILtVh*JgjuNlNXe!: )XmRH)&Td:UDqJN[$#BߙUS80]=U?ʨZ]Sѓ̪'╋ бUD OUf2$zWTdS1B(NeRQQ &T礢eT+RB‰Q!r̞eTHq=jUH24,}Q%3YL)=99A99A99A99A99A99A99ETPguTToB.(U ԬeTHq=uQ\<ʨzꢹΥ[$#BߙUS80]=U?ʨZ]SѓUL9zUIEF+(R꫞PJ &UDUD<ʤ:mU\H2~r]sҦYuJU!ԫjZU$':XuROM+)':XuRVt2H2d%U URH24cJ2zgOMS lK$* &U UT(kIEs*JyHYԫj\oUr< eUIRzyHu*ڗ\$'FƵ\ TzyHYԫjZA\ʪ|f(E ̳PJ*7YDʗU\LjVHXQ2XNY$I!QaQ\#B±!ddI5rH)ZNy$$})*u8u$!QaQ\!O$W$,2\)YRXe$ʗU\ȪPlaX֊琲uJy$PB)*CSRXe$ʗU\ȪPlX֊琲uJu ȮzUEU#K R꫞'PlETU\>RXe$ʗU\ȪQ$I#K W=aG##BȌB*e3Ȯz%RLuUHʃBȌB*e3Ȯz)&TETUXʃg "3 'T'E k$} a7YHd:e3ȮzUEU#K R꫞\UZg\ȪGK R꫞QUc* "3 'TEs$,2\)"3 'T'z\ȪGЖI2W=##CHB*4'z\ȪGK R꫞QUc* "3 'TҌEs$,2eKzFTDg=rNVOL"GK R꫞QUc* 4z,RB㥲PS,ȪGЖI2W=#!Nq(W\iUEU#%RLuUL=3L+zT4Ia箅##G+zT4NVOL% 랕2<$*,2Z D`S,Y:Fd]2PS,ȪGЖI2W=#* D`S,Y:Fd]2PS,ȪGK R꫞QUc* 44}LO!dQ=tBLO$ER+Xq0W\i,RJ=*ey$} a*]Us2G+zT4NVOL% 랕2<>RXe$ʗU\ȪPg揢0W\i,RI%I",2\ФdhX#uJfB*e3BLO$ER+Xq0W\i,RS<+zT4H)&TeA慏0W\i,RS<+zT4HIa*]Us"*eA>]sҦYuJy$PH W=t)zYLPS,ȪB)Q8бF 랕2RXe$ʗU\ȪPhXVfDNQ=3L(I VD#B5'uJzgQ<$} a*]Us244+3Xy 'TҌEkO"*I),2eKzdUEU44+3Xy 'TҌEkO$,2eKzFTQ4bNVO$W$HqJFCS<\ETU\>I.PhXҕY:Y=Uy)Xl$|I.UV2б!+-uJ鞺d8bIa\dhҕY:Y=3L\ETU\>I.>4bNQ=3L\ETU\>RXe$ʗU\ȪPhhҕY:Fd]2Rr$} a*]Us2!+-uJzg)Xl>RXe$ʗU\ȪPlCJV.[!dd-I#%RLuUL',2R꫞I#K R꫞:MB$|I.UV2'BQ$I2W=2*TdI-RH)&TdhXU\Y:Y=Uy&TI),2eKzdUEU4,~Kzd,RI.GЖI2W=##G,TB*鞺dR꫞QUrHIa*]Us"*dhhU\Y:Fd]2LuUL>RXe$ʗU\ȪPhU\Y:Y= hQт䐨EkN2'M :0Vqܒ>I.PlOB@t`D$|I.UV2ukOBw$,2eKzFTd(+Q8I),2eKzdUEU6'+Q8I),2eKzdUEUΌw(GK R꫞QUc*2y$$} a*]Us2dH$} a*]Us2dH$|I.UV2d+%U@1I),2eKzdUEUYRXe$ʗU\ȪQUL9zUIEF+(R꫞PJ &UB+$[MrN5`D7B萻w'TKNEK&Es*tWD3*bHZdyTd*bHdÙ)U<ʤ:XuRP+Q8'TKNEkOBw̪C'U!т<ʤ:XuRMBw$*2yHtDPl(ICeR,Q:Njd*bI*P'TKNE U"*ITd*bIL%TW<$PhhV5,RJ2yHtDꤦz钪+IT>hV5,ReR,Q:*e3U"*'TKNJYLUEs*bHq(W\iUEU ʌeR,Q:)d]sҦYUW̪C'U%3L+zT4<ʤ:XuRUZguJfETU\ 6|F 랕2iY:Y<ʤ:XuRUZg\ȪU!S<'TKNE ȭbUEU ʌeR,Q:)dVD*yHtDꤦzZ*bIUk)EkO"*'TKNJYL+X|eR,Q:)dR꫞QUy<ʤ:XuRS=t2W=9<ʤ:XuRUZgeKzdeA*]Us!dd*bHZd 颹rrrrrrrrrrrrrr'2QB(ޅe*]UsPs,KiPPuEd8ΊH2d:+L,/UH2d:+ 'm*$Q̩eSԩerH2'YlꤐeFNlT$Q2H224&*KW$!N3Ù uUL*(]U%MQB Po2S<)PO62Fr}!KN2THp' 颹7\L(Q-s2THuS>NurU]4+8UOURO̱hq"O<)Q"M 9aKz]JgJH:RzÅZ(:|YJzh|zUBzÅZR]>OL,D"uRɨsʫjy:Ȫs2TITSBz]JgJIAԧ2THdÕ4*''(''(''(''(''(''(''( TPJ&T*eS,:(TI2ã'J\QLiXu%U% rz*r&BryIRɇ3דʭB yQ=Y<ʤbs^Nq=r*Y4VD:'8&TJY"VHX6Nq=r)AĊiXu% GHhQNNq=rU]2PE4:s$SO\WL-M+h-#U )'J\e:Pq"VIUtBܜzh-#U )M+dnNq=rrO"VIBU )'IFNq=r+Xy%PyHq=rJE98UT(beRJDu=9<ʤs䮃'JuDAԧ%aꒃN''J\QLiXu!ʫW)=Hde$SUL*(]U%MQB Po2LeJ$y4:3_D `v/w(F-(ve5-XIB(\ʗ(⢊:''(''(''(''(''(''(''(''( TPJ&T*mg4*(WEd`uJ]|'`B'ryTEB+mg2PbW?UthpOVNNPNNPNNPNNPNNPNNPNNQU3uTM5E 7(UA5Q=4XpO62FrNWx oS!}:ȶ)rrrrrrrrrrrr'2QB PnzΎ)(YTTled3X:vNCt0\`CRgjf34'y2)YLNCPlNy(ACj6aY:Xy3 IWOe'j30buNNy(AC(zO25H47X8W\D,QO:(AB*ZPk]4+8W25Hg=aG)(zW25HjTM-t,V5('\O fa փ wήe'j30hP`|us,QzJgBT'f(E ̳PrTJ(bPnQUt *bP=E 7(UA:8(U C%P:JuESS1B(NeT*\RQEKNrиpLlf(E ̳PrTJ(bPnP53-u͓u53H5jƋgWu53H5.д5B$55ihku53Hjk804- ruЮc3I ,sB'[M jf34hufN fi fд5'[M jf34m-! di]r Lf 3Z**'[M jf34д5B$6UHhZi]r Lf gp`zCB'[M jf344YZ]S!hku53HOYg $4- ruЮc3II5.д5B$4- jB$UROUL9zPnPustqIE,Q: Ki]dd㥫9rqckuy99A99A99A99A99A99ETPgU 7W=gGQRܠj30&[M ''[M j308M 2uЮ3 P'[M j30hP`|m4+ACj6aY:hW\Q'B$,X]sӓu5Hg=aG)(zB$Lj&+ wu5H5jơºi]r Ff |V5('[M j30hn 皳9N *bP=E 7(UA:8(U UI\ꧨlf(E ̳PrTJ(bPnPoEr,[Q<9\WUL9zPnPustqIE,Q: A UJpO6NRSf(E ̳PrTJ(bPnP7yuuS1B(NeT*\RQEKNr͓U$ҮSrrrrrrrrrrrr'2QB PnzΎ)('UAE3ʡa/j'':JHqܞQ%azgD:'yT,7]Y=sa/u< ~NSXn Ҧ>Bf(E ̳PrTJ(bPnPuĕWM *'''(''(''(''(''(Bs,*ܡU*z&U!ROY<,CkN(n !rrrrrrrrrrr'2QB Po2geR,Pu% 謞lb(WEy99A99A99A99A99ETPgU 7U3Q2'8''8XI'8XIEk$wEy:ROM2+Y$+ *bP=E 7(UAE IB+'t`: xv0>NpAԔ+%U@1''(''(''(''(''(Bs,*ܡU ,Pu%stO6NpAԕI |f(E ̳PrT,PtPpAԕ-''8XJEsUL9zPnPs(:zi't`: x v0>NpAԓLUd I=4uQT" *bP=E 7(UAE Htr(:bu2j''(''(''(''(''(Bs,*ܡU ,Pu$ʖU9<9RLeS2j''(''(''(''(''(Bs,*ܡU ,Pu"*lN5`D7C9RO\f(E ̳PrT,PtPpAԃ͓S ֺhVqS!gusOS!e4WS"p_<ՓS ֺhVpXv'ETU] Ԭj)TT^v KUEʧ:j)TUUL9zPnPs(:Qyrrrrrrrrrr'2QB Po2eeFK e$`u;'P/ NTdບVS.ˎ}*v(J1ʭCXm OMT,V$ѓ *Zk\6];:'_Gt%WB*w'@֩钪\P'B)\妵ru )]e8A'B)\:\б^O$骅S@y*Zk\ICI $r:EW-5["RH24d㪕uJ'Er=T% ªyny*9YMrWL<7U<+8fQT꧒%t͓MO"$y$RJUN;QLWM 2qڊde5ȩbvHr-vCӓ1]tT]t-4dLgusOS"OSUj(Y$-s֮SVfNBhVfNq=rQM Ԭ䒕SBUHՓ%+B+URMZj(:.k2u:X]rLZ䐱T\Z9 lk opםa՝a֝a&bm./usr/es/sbin/cluster/clstatnst #*0  8@AH`aceist ,/0<>DLNTdlnoru| !"%(-.:;=BCEFIKOPR_bfhmp} $)14679GMSXgvxy~#&235UVWZw '*?JQY\]kq{[z+^jꎏt}aJ}zf1j]Fb=h#ɑ bErrm.DԍnoZ/l!D9FwH>p=Im"x}"p(hd(I ښAp>_v|tzo&G7SK GGkÂLoH/6IOiÁCX^ٲC$r |mM'95~m Ā|mH E*47BzuFh%G?l8*۩}bpH _ `Hn!ͩE2` w4[Eon_'Fxl8}7ڑC!Qia  r)im[E/ld3ԏ2[D( }8*5#FtzC/(wt[m9Sr%fʴ[Ezt[6 Ȗ߭[~߯E edcDtK^i"C 􇡣/E!i!i &ڑ3mBw"/ԠIQhԍ"/"BqBq!8Pd%2"3[G=#Ql-Y묂 d2z"ad !@!x7#ۑV uk&TŐS n^Gx7@o&G#ٶHa@#x7#Wm"q3F o"? P*ƨp q3PA Ĥ f'D&ཨ wAlE2 *6|8F~{"Z<Pn 8j ښC|^"6Áax7#:HlY@Zo&GM07qޭLD$-n ޸ +8wy >GfŜdѭ|8Z/t)_8Z w0h3w~%!W . >-dl/o]w&9nb]$adgXCvo]w&E[,K%$Qwz﵈y2$o!F/ ~/;d( "oYȯA-`o~#tA B.뒗5^__AFH\9F\&M} 6!Ktݶ 7FR!޼×XF >#߲WqXsCx7 zԉ"~dWa8ZUx74"I.Xp29Jm÷J<߇ ޼zЋP`$IaSJ 8imv8Xյ=tn&D( z$ɠo@k.]f;B 7^kw#l:W{AݢJ׃zͩ gY5ny^ 뻫k&zxnw.]xmM#8Dh;tu;x7@unIvnÊ@<ښN,<9;ԉ$ 96wV7|=vnC[!Fյ=y$%iEGd_v9gx7ڐŃz!^ j@ )-,VsuvoC /H(s/Gx7}LD$0 ֊a x7 YW8$8*jHz) >}1z^ /x7}LD$0U޴T1^ j@|= Bhp|XKkk1 9%A#ox74Üxڐ) q8oC^ 7^ EM0 oR(YaZ+98ĎoC/H$:{x74Ü^ j@ÌK/ɵ LP,>f?ԉIt=$&|_;oZ/$]כSHZS#oHh6☈HPjAmj !1$p"|9 >p#iOW0ZSL8@2:i~M"8Pz# ? #)$0ѵ"h;_ A"h?BGi6D'r Ԣm0 %߇]Օ!!u88.9{x_U)ǖWkpk9_oY$0LUk%CpS޲;vb!!՘H6~dAݐRÒ}R$Mpx_ì oR a@FY|C8>#nˇ\H7pOE_QyֲE3#ϲ 'k`۷| a IjLzC ÒZ+9ްaއ6wz Is`Ü+BW| @ְN'߾ՖV#spm^0%428(ÄB7|G.*#5[͐RH+9PC;fڸsgoq9spyx7}ۍCkkCoq9spAeLMDa˺/]Hao]Al(HH~:Avnڑj{HHi߬8SKP.ޒcji ɩښPÕji6//&q-×ue~oHmHd(p"+9U|8^ sPqx7{oZ*ixڒ\#3%fuODtt@ѵ"h;DH!{cDH!_ .K/}8fHD:֗z%sPEM07!Ј~kKhu ?+2"|2G(J B2}|6 AÜABnFXCv]x7]!C '. q@UqA@OCoZYx7#: * rvۻsRE_QGHqir0,MFťwJۤ>&CVo&GM/>ۤWGq} =st~݁:wp tL_ gۺWe oow'%߾BLoȯ=776" 6" lPDԉUE!x)H4nڑj{HHiߩ$GwHf͈[!5"Fv6SL8 jinE,8VsvoC=@FSL8oSKa$l/9-mh "Ha0(39&Z+98@怆oCSL9? }5Iͩ\n]N'XYx7NFE ]S#G~+\>aU޳m=`o`Wx7EdBmM""a޴_k-6H!ċ(kmjzs1޴[楗xڑ =uF N_Eg85^ s3Nghԉ]FD^ /s`wx7~$OԉWg BAl7F{F.Vs9`z&EM0x7S$uGRAM<ڒt: =ϛRA㡯RA n@ym S#hdFԐXXnsDrK*oCzhͅ7xt6jH" эaȆ־p!`rCYx7Ք^ p*iqSHt7Sj@"#"5hr!UM`r&?d7z%EM0 ;u48z}}ۺ+`o\9uMۺ+B7a0qۺ+B7CYx7ۺ+B7%o%mHuPPG`r}l8oC s@ax7? %\ " \Ot"袑u"(:D`mHԉP'!;}|KeM$_/("'|*@RԄ)zךmHA vp_zGuzPmأr ôn )AH:D`G[~ۄΒ\0t0K>%~/ڸ,VzA94[g(@Cn?Bp"DGR"SKEGr4Ly9ӝN{9WH!D!ӴcDAQ":H?)pRq@DC`p_Eg;a-޸q `l=/T@DÐZ+9XHucpakdB 9 tvgBo\:(|^ "aͯ%aՂ[pL\;z>YC`pCoXu|,ÀҲp~:2쀌! 8#ë('u'8t;dd -}[  듺[:KfoY\:A5+Xs!޹;5rOX1up4 oߵ",XI4Bމ5h#O7ǖ@G :1ݯ+2 />  %B;5 =q$hoY(+;5 =qƒ [d2듺["+T$^ v%.+B/H//ҲE$.$a0r ôn )AH:D`G[~@Ght@YήL !C{ͩQgY5Ø_6I Y%6Ea{"_6I[6a $hGl H{C,}H!vaϡ;{НØTzG#6V((߭x /f}2IODtNYO$1{I$r/НȃR% ØXM6soILD$1~ϡuhNp;ut a49^ 1ë^ Zddk~׶lQ@p?nv-ZMsmx7;Wz@͝ء47HV߭{98PBA,&2zՈHښOv%a@޴[h4X.3z%ftMAԌ&bx#䖊V߬9zZԉIt=gh3b_^J\DR<0id>jHѡJښ[X|6xWx7_~ؿlۆhn [ M5}pމnsapأ}r $d!ɵ"H?-}C##hlۆhn [ ԉ !aZ+9êoD7H9Wpأ}r $d ڑ$|C_Eg<ꊯKtbnoQ@p?lDR$X|m}#t_mb47HV߭HjDya(Y30z%aG/6F$H+o$B "@, ss;x7_~lۆhn [ ԉ|Evyމnw~ٷ 7(i 8A[~A" R$}Rz%aG~ٷ 7(i 8A[~A#"66Cz%aG~ٷ 7(i 8A[~A#&6QkaoD7H;V/6F$H+o$efԐ@@DVsC!/ ?^/6F$H+o$v6&+_Eg;rމnp4 bnoQ@p?dWp?أ~$}m`'HI6rɣ9%8di4!CR"EGH(ڑwW5"D9t$O;\OE.bq \Z/l>/'9omapȔ:BˇHj֩ b".֠_߾qe0[P HMޑ//( ?` $8o-EpO@|Oqe0[P HMޑ4BuF#^ >ٶ{b$46DD'!(Dq"+ڑmB1~KQ%͜ca $1{I$p s  ܈5(mZ+^ A<8V}x7K MldQz.RKpFp]x7ԃn_Åa-޺ ԃ%aX/·o]RD7 E8 뀢!EEwVmHĿ7E8{x77/`x77hqXoH_v0!BYv2â/oQ_ݶV}x76lQĀ9F{I tHuv&"#I+mU.zG] 4+#|3ȷg=!Qa _Eg8Y-ynoQA[~;,Qiߪddy/tCFqbH5[~jC> M ͩj4[ޗ&zT sN3oD8}/أ~/#m8FtF[~Xh0SI*dzHҥ:<;uRyᐒ#أ~/#LE)yđiV߯ ^;&cDtJdɃ&H!l ,CH#$p ]rH!tjDqt઒}*i$_;\&Ԣ/~m /" dC#$ ,8 ˮÊO:Z: GBB*B`Qp쁽D6V((GH"; $=Kze3.p$YɃI蕙gGCH7|:mH9us"CGH:tQHF//EOBw"KE.b7Ǒ}= &je/ZL&BO`" @V/T E3 ҲswJJ!zȭp [pH fq~_N_ iиD+E/6MfRUmأr E"#)\GH"; $V6([~X.%Ep!##K>IHpR"\~l48>+Waåmr)im[E/lZ|џGCH ѕH!tjDqtè)K@E @/@/;\&Ԣ1~b$EpJx^%~ ^:ꆡ $7t)׃y2?j|jA^ ]xڐ/sFEap+|}&GsJPoBRn {f8(R"8tR#i 8A[~ulHhn )AH:Dg ͩ@pQq gzdq-_ر4g*h32LӣѾ4nY-HrnwZDMV߭HmqzD*AHqi/[~W!pa:%:L](+"G^v`mC[tDEko'i ߬N>"-X}D+[~8H-_K é莉Nd? J)rԉzE;BmBw=P (ǫP opyYqqof8(߯ Dx}Aڑ"CpRn8ۤ~Â@kof6(@C[~o\[Ia8P px74Äٷ 7(߯ alWH!GCH|:mH:CIp s1 iȃR\ٶ=L/dtwD1m "S =L/gѪ`ӣ݀2۶|kZOHiH"rm}8#C@jjDwA$H+ot) 4}`rC[_Eg8'(VoXnmH +9Xr"oCoR@vnzٶMH]Mqv )4ZpSMÄoXn<6_Eg9-)$9Hgx7 &mx77b48LoXn?6_Eg89% ~oCroXnA66p "^ ߀4nmHn:6 }$wz%/mGR$hhmSjDwkh;mHI2%y!WHJڑ"C Ci/DAx`u"3<FԈm"xm1.V/"=x7ްCkhJvp޸">`rq/P<}ۇ8}qÔu޵n68}P _v~C7yҘ` 뻇a1=44 q"iR"8t mHG.&5wF(-]6K'^ ji(׃z(hf}bxԉTښGWy$XnB@}zmHHVs 8H /q9z[kmpkkݯ9zx7 ڑ%Mpo5&B ~p/ͩ Z+96 U$98oHCp%־pCx7}ۍCkݯ9rpqx7}ۍC;a1/KIڑ Z-j@5p i Iڑ @\C9h:3:g9jD 5(9Sy <|8Jo{~Q5޻|%KsN.8WqqaSIp^ 띺pٶ{b$4;I[~X/F%:jD t?Ɖ ܈5(yd"tz4n?p lmH8"%Vsp ͸lQ9FIm8R#jAKY/2tCWynoQW8ڐqοk5lۆhnVߪdzH6'pzFV(ߋHp IvCVs' ͸lQ9FImYŐB"}-}sٷ 7( _u] vsIr,NpԉZ{_Eg8#ynoQA[~AjAmk]^ ͸lQ9FIm M"Ik !!"o6mb47H+owJ1ODtKcAxf=J],1#j@4RHMl&oZ25l]Up7_Dd+~"\__/̈ˤu qEĉo!F&BmXXRE#j@|Dy!1ٟݰ ax7Ef $~]>յF - X\(&PX\ʊ^.//(7zI$L8p:2Yqq(S" =z\URׂ{QKBJajk5Ap(}5~.z,)z//(.ZS Q&L}0b72\8V I7nQ!]EmR(nN..%}/Hwpo;Į +QG\O}m]W˼$~p<-<ڐ՗ n'㐅EjˉBX@jGjiE`.t]p˃WJˀAҲt+/&t/ڄ_ĀisG?M C6t3n/v&?"A!t"/(pax7ۥ5v_kK@Ôf/Bk5|415|90,т& Wg?[4z0UlF$*т&xXr`Yx7DK@b{-on@fԃ0|93K.7SH5bas^ ba؉,k&}\o`^ JI;bkGwL5~# dtq$Fba6P6IokÁqތ|8mM 8Rm:&IQx-%4F&`mH[G`86;/# ;0jRQ! 5fLڑ C{5ԇnd~q ?ԉqJ$^ l"Jzjb!!%WzTBC@޻mbHao]p"q0 ^ ED]x7i +jAް"$&xp..V 棁i")~Ѥ&pB"Áuް"$&xp, }jH+ ڐ:XrյpwSj@"R YUa>Wh5!kQ=d7^2t( +YBk9wd_=[Tw-kp zzSx7`G8/;D.M_&!@aHCj@X7Vsaމ4:R`Er+6HMg.T{A!M`Y,>Pb;6zZ z:JmH LE/4FzVl]q~]>ڸ;H) agY5x{a9 !Ң)Z+r@oSK֍!5\9Yx7Ef {ԉ!HOM}V r@oD;4H\7znpd$9x7Ef /7%n/up"}x7`G8qxmQ-kw( z$ɠoPX{d ů(s;i ;r)Ȭ!5üCA! +9ŇA8^ (յF䵬M޼R$Mv`)~Ѥ&r";`Er+6HMg.,WVtR@"O,ü=(^ jiQg-x{a:PoSK֍!5q(ox7Ef ! ڑ$={1Y   ԀkmH78ma rd| NԀ8ݶڑ2?}om_mYpd b/"6Bn;mZd~^L[~ ZeSH^i0Mh'Ui[%7x!]Rֶv̈́R2c01ˁ6zۄڐ6ÒҘ6 MI46úAy zZHnL{%y2?B}ۺ=?}ooKsbUˮ`%`1Y 07BCvcq(o&GM}ot.sXmH6jAd7GmÂ_I$$lÍ&a sS l;Èp$o&GC[%7="/d7;ˣjAwDK6!^ o&äxM]imcx7-:% 118z&>kpEk,;i`#7tM ɑ ]ps9wR! CXq(_}#>ѻ8Gäq~^wmQBam.s3{1wt`oZ7{6Eãq~^#uUvA= 䎆޹'f45I_3f }iC[t6oBzuFh%G?͛BzuFh%G?͛(7IYjF mW$sLپ9BzuFh%G?͛ }iC[t6o!ArO#R4hkn#f }iC[tChJLfl ޹'f45I_3f'BzuFh%G?͛P޹'f45I_3f+BzuFh%G?͛$5#F+9&lР޹'f45I_78$O }iC[t6oD(7IYjF mW$sLپ !ArO#R4hkn#fj>4HѡJɛ74(7IYjF mW$sLپ#!ArO#R4hkn#f$BzuFh%G?͛$5#F+9&ld(7IYjF mW$sLٻt(7IYjF mW$sLٻBzuFh%G?͛(BzuFh%G?͛V>4HѡJɛ7uB$5#F+9&l!ArO#R4hkn#f} }iC[t6n(7IYjF mW$sLٻArO#R4hkn#oFt~.D%H1b'݈ 4@`ߨ#I $b/70'ѕ pH=1i4="b/7n)`ߨ#I< LEA>%LG[%Ȑ F/5[}D_JbP@@>^dI D)@X\}̓"l$6/@4`ߨX@h6PiF [~~dB2A4Bd`]~&߫V `uLGAM nILEA! d"IDmM"IW, rڞVqP*ÈJ.Bw##USCIlؐ޹'f45I_3fBzuFh%G?͛z>4HѡJɛ7u$5#F+9&l(7IYjF mW$sLٻ!ArO#R4hkn#fArO#R4hkn#fj>4HѡJɛ7tr>4HѡJɛ7t!ArO#R4hkn#fBBzuFh%G?͛ArO#R4hkn#f ޹'f45I_3ft(7IYjF mW$sLٻP޹'f45I_3f(7IYjF mW$sLٻ$5#F+9&]_Dѵ< 7Te&S ~@S ~H{~u󁱄H(*$P AA}LD22<SH h 1XX Q%2Ꮾ_Dѵ4T~,O&TL_܂QFb?FSH UKt`ߩ&%nU{s8'у~/@A0 р&b+S&%nU{s84vo$%ld7t!ArO#R4hkn#fР޹'f45I_3f(7IYjF mW$sLٻ$5#F+9&l$5#F+9&l }iC[t6n~>4HѡJɛ7t!ArO#R4hkn#f޹'f45I_3fT(7IYjF mW$sLٻ $5#F+9&l }iC[tű(ŶQVE1QhYZDlNvit&;NcPzXu3-5XLw%צ)ł; T(AT +dJuڊUY2fk# 莎F 'fYw30i=N5GGa8V+[YȜV,N?6lԬc,S0.Qpq\cDtJ]Rֲ_,*^7<;YVF 'Vs9(i)uJKz#Ff{EF&UVQLf7bf2,f#:zv҉1&H6# YZe+:T-&*_a=]Y#h3=,5aTz_ҥVf#:dSxɝd`z%gRR9nxxf2ԬݍLٳdΫY/X >FFU=K+ C0i=ƈi=F C&iʧea`qS& 'Vu 'd/T,0 *dJΣ#2c5 4CIY,f#:1i*jpfLmzV 2`z%gQz1L*R225Й:7KB:, +F)R,kZֵUUF5y&IY3&%KVkZֵhƬ-cbf/R=sQZ&>a8'r!^/JVr6rQ lmcD?fi2WKR=0i=⚟4Sl/zT&Ջ*+ j})&cj2gV,}j\/&Ջ*+ j})&cj2gQ6Mϣ?-KFFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*UDzԪz02h}XrՑe^Z/SRjJSVJu*]5JSV*U%*_P'r:#a20i=թYPR22ĩ#gRֵjZ3cZVF 'Vua4Vy+2h}X`H薧ҟ2f6&ub%|Ո6/KSl/}O3m(d}ISKKdխkZֵj1k3%gL4̗ʗ#`Vu\ʫeSs2g5jdZji'fYw30i=O-'GAԌ>?-=dɣbʊ)#ZJ|ɘڧF 'VgGџ̙4`YQX0e$tKSO3T:J3Թ&Ջ*+ j})&cj2gXM+:ԽJNxɘa5U"s U"vr3s*8!i524b0kJGDTjxɝJydd|#`9W23 egSs2g5jdZjiJt&g&uΫMd,39,993Z`KB4R*YY&rփՓk#+:$SecVr-EUY1^.Q&Ջ*+36TOVFLX%2bZ9FL0_V,l2:%̙xɝX_-O?-RR]*S& 'Vu[65bʊVʾɃI蕝MUKt&u8970\jeL֮5Zbgɔ&E47949>i=;V= Eua3gڶQY0h|tLbz U1O3Ɠ fLKT1T̙~͑ O-L4`3:%, &b`Z&*4`YQX0e$tKSO3T:JΧџNb/JᜳP 3ZֆUg-  A?g(fM'3V)}*S& 'Vu5WY&,i<3df4J9(i-O/*\Ո6/':+##دeecDU%heY喲2>>0.3z%g(V41eDǃjG3 W0͛&u*^[)+:Z=Y1`6I_YՋ&'S1VqDIj||R# 莂r枉Y4 YQ1ڧU &fɝJfr]Ud F]V,$CDLR&LhfɁuX,9e%$j3?R{-fbxətLɍC 0ܵh~:%_Y_4tJl#5@KA쵑I蕝XM= &`§rա}f>>|+_&Gѱ_=c`a*3d}ZehfOD3UFrĹ*_RZֵkZUW9;eAZ6+꽐`Ƴi4Մgr/֧̗YTVv*Ƭ#b3iYʃYփ͈̈́ӞRZ&WTbj jiLl捂cX %i#)T1:%.RjJSV/֥kZֵjcjFɆmD̘ii,ԮVIf%@df`S9`VIhHU;&䖢l)Nhnr)+Ti/ZW T+;*=YD0i=O#+2" EBlQ- Ei)Tu T"j*p0l?H Ai]P2S0-P ff4J͌ʁW hrQ0VjgZ9KRԱgFLWZ֪šܬ#&+ܴƲ!d=@AVGTkZֵkZֵOD=tORֵjiF6|G3 WF 'Vu*<F 'VuJGZֵkZP{Zeh|w+:?^4 ddJ'bу+ "Qh[YȜV,N?-O&T{3u SiAMEAQrqp*ԲJJΦꪬ1kJGDT&%1VqDIE5>dZ2gZeKZֵkZֵkZ,M*J̶+ "ŢRvr'G:vO9SJ<':z#D=CODt&T{3u SP)QjXƬc>kZ6k3҆G4+bɉdhrQ0QMO/փRֵkZֵkZֳ$ǓJ0i=ϥ-_Ԯ9TJj]Q^f`RX*)Ff16 e`4RK圹Ju%RZ&WTbj jiLl捂cX %i#)TQR)U)Nhnr)+TJu*Nj\r*)47ZPTSSH cg4li-IJEB)rW*RrITVIf%@df`S9`VIhHU)1TU:*47ZR땪J:IԮVJ VbÈ5Z/0QS#5'(ʳ3 9Tr̍NIf%@df`S9`VIhHU)1TU:*47ZR땪Rqʥ)@bR땪Rqʤ T6C6qT0 Vf42m(d}ISK&u <2btukZֵh=0i=OVC،5h=cj0aSjkZֵh~:%^[ZeD |z*w-cҳJ#`TqʤW+TjMB3QMM 230)ѰL{+M$e*-4GDS\Ju%RZ+1XgS#5'(Ň+Vj^`&*L*RRb/27Xnr`U:&WTbj jiLl捂cX %i#)TVt+ df`#UFk@YySSsfg& %RRU+RhnuF&yI`h&=Z&2FLOD˔47ZR땪JrJM ֮/30),#3DzKDFRIVTR9) ֮T:jNR_RZ&WTbj jiLl捂cX %i#)TQTSRjJSV*)]:XqfE *df`#U179Vfr`R*WSys)47ZPTSSH cg4li-IJ&*RRW*RrJS9T: VRrIu+U)\,50a) `Xj/ZaC#JM ֮Ff36 Z&4rg1F&yRIVOAr*47ZR땪R]`Xj/Z`S*^†Gꔚ]SH g4lC+M$icʌMB3RAC†'sN9) ֮T:j\r/\r*)47ZPTSSH cg4li-IJ)rW*RrITVJ VbFE *dfa ՚(ʳ3 9Tr̍NIf%@df`S9`VIhHU)1TU:*47ZR땪Rqʥ)@bR땪J:Iu+U)\,50a) `Xj/ZaC#JM ֮Ff36 Z&4rg1F&yRIKSL&l\9) ֮T:jWX֘0򊅰,50&WT#3i-Iic9dP)TPPsS N?/ ~^9) ֮T:j\r/*WX֘0򊅰,50&WT#3i-Iic9dP)TPƈ M عJsJS\Ju)\,50a) `Xj/ZaC#JM ֮Ff36 Z&4rg1F&yRICʧ ~^1;JsJS\Ju)NR]JJW+ ELJyEB֘PRCui 捂he`44񱜲yYyQ^f`Rb6  %gSL&l\9) ֮T:jWX֘0򊅰,50&WT#3i-Iic9dP)TPPsS N?/ ~^9) ֮T:j\r/*WX֘0򊅰,50&WT#3i-Iic9dP)TQl &H6.RRW*RrJW+ ELJyEB֘PRCui 捂he`44񱜲yYyQ^f`Rb(bw9xPs†'s N?/RRW*RrJS9TJj]Q^f`RX*)Ff16 e`4RESԬxJsJS\Ju%RZ&WTbj jiLl捂cX %i#)TQTSRjJSV*)]:XqfE *df`#U179Vfr`R*WSys)47ZPTSSH cg4li-IJ&*RRW*RrJS9T: VRrIT\r.rJM ֮/30),#3DzKDFRIVTR9) ֮T:j\RCu15 KE546sF14Rbu)U)Nhnr)+TJjaL,8ZU23Xbqy390PJJW+aɁTꔚ]Q^f`RX*)Ff16 e`4RESNbJsCu)NZ)Rt+ )NZS9T4f9hg4I#+:3虓ԩWZZV-gVG?e<Fyg.K# 23Փ:}ghw8z%>YQXagb|YF,JZv'zeEddaFrJ R0i=M$6rՋ*+L46#jdYR9Vuh=d08 Ϧc431&u>dZ3虓Կ1Ti%_VriF1F 'Vu&g3&%LNU)19TqlubVudySS1 k$m'r&'*f'5dγ>?_Y6OlTV9(i)jIgb|YF,JZRY؟iŕɆmʾ2fY(`6-Rbr)+:+1K=cg-XDIjɍcb6K圵Iʥ&'*y+:ʴX`2V1zD̘^e:2g-fbxətLɉjJSKN%Ru23XbqySS#5 Vh)ʳ3 \r*)47ZPTSSH cg4li-IJʥ9ʔ\RU+RhnuF&yI`h&=Z&2C#U) ֮T:j\RCu15 KE546sF145cD#U) ֮T:j\RCu15 KE546sF14zr:W*RrITVIf%@df`S9`VIhHU hT47ZR땪J:I}L+ %S %Rr5R0ea`qS& 'Vu 'dJuƫJ<&p+T*ɩꬁh,^f`RF1KDҳ5WS - >J X2:&dĵFRRK%f<[Ɠ 㡓2}-L *R0FldyEMX+62S1LfSP(Ɠ 㡓2֓h-Fe#BЬSS 5IkV 1-=sژU)#fLKOc*U)&G& %JXaɁHNhhhhhhSUc%!: (PSUM Bu (44)ZiHNB*47ZPTSSH cg4li-IJL֮39TRZ&WTbj jiLl捂cX %i#)TL#Fs\U0,T8Rr5G2ɣ9%&5bxətLɊW,3T<&p+Tj3JM ֮Ff36 Z&4rg1F&yRIgdќ^͓C+GBpZ, ŁJ °G:::>yh ttt})!HŁ،bxO+ d0aLI &>- I },e 2^u36 HtyY/f2:c1&>jjƉYG$!cS& 'VsfhLRBu#HJ+ (*u#HJeXTGu#HJp*PVlϧ:9e:d3*PԌ`C6lF~Jx:9e:b|џaR`u :b|џaRLu#ru#+3°B`u :I蕙gXTG'R0:CK>+ (&u#J4XTGR0:hŜ9Vr%cCTLx6 ¥ CDEFILOPRSXbfghmp} "(14BMQ_vxy~#$&)2359GUVWw *67YZ\]kqz{'?J[+^jӯtLH1Vb#yʄ9rIb2im6FUDz?$7"7RQ'qXj7Tv͟l uyPʧc"Yu?jB8nH)􉨰'$nH[jE.%Z#FHmr[:gH5erz lA!F!B#\bEZ2|>" $xw-(Թk\u7&9ήMwkt\s]vt;/S) mP}9,/(;dsDKn9i=l;b.H[j=2"]?Xո:w]vzkQupMr nC7Kzo>*Z :dDp~ICsyi%@0ήAEwL*[ CyJր߻ncqΙ.\RKsi<'\gW &l ?֦R-ڡPT-hIxw9"%k:yuuk鮇OGpa\?\C7ZHTjCJE߻o:dDp~OwQ]Mt<5:tI0ήAMsxZHTj@Ro:dDp~N9ήW]xktupMr .üje!Rޠmϵ *Ur\[Φ X %2(z#|Y=߻|ydz|dŜ^2ncoŌeuy71e`^nb@\_r0;7ŁqY7~f؍b|xM"SiHpOHDR'jEh,axw@ݾY}]4r-U) 22E1㜆Cu]LM!\?+Ssƿ:uuk) 22E$kry gWCήMt=2E*. 22E"[rgWCήMt=2G}Cp:WH9 ü볫W]]# ]#ry gWCήMt=2@J!t;rήL'svuuet;v] }a`%V^tԋZ﫤8[HubՍ/bGp7tK M XnDL$? zG.EE ~-;]vn+ %GY~Xol Pa<٬_%[֩x o${?he``XFae0yHH2 R#D{H%˴8={5!yQym3r8& {(̄0 m'pY72@TM3U4\ 1Ő V_zlX\ Y 9$I<;KFޅ=,-*eI957} #m.vćf!ߴ{Q.0Gd7} p5}]4E/r~jp7t\3 -}#c b_xwItRECٺI9d$^0T0u bi=߻bH_}r|Y6;|Y;;KA5ptΒ+RXrE;A`2-0k_zńSE^˾?ؑlYׇ}] N!rEia-3A2þBC{Sqn62kÿwŘ}] NÔ^VFXqxwHka`/_z zر;|ݱ!X^t9)=_z 2Eafx޲63c'orlIXKþ&QE ;\GS W`Us)dQ;hy/#tҲbwZZN+G]΢L$;d{`﹓5`Kÿ,ͳ(Q_dG|JΆ_*M#Q#-H^Gy]GD&[duE%2 |,ߺvC{ÿt/2þ"L!6mb~D$?Y~_ŀ9;BvF8E>oϺ2 zDUt7p?w71yΏ/#?E>p"{rzQ{ً8_~0SZEno& }"d y8o#PMziOqY`+ͳ%Gp=|&B_cy3 }B_r"5[bh#lh(Qi8I~bL,þ L/ޑ lh(QK[dA=wXAg'ADJ{HM#=#g-elԅtTGGȣEprrI·D91{ahmn/ ~f0;Z8?%ɘ7p%j_GpH`+G1 Jc߹&ͳ%Gp;Qp=|&M^xwܡzzD{GcȻ$fQ(>pHe:";bo6ϬOƂEopHeaWuVF{-elԅtTGGȣEVԊϰrC~:'2xF!Gv'\^[ ?2/[N([櫃j-J8GpLDIOqXٶ}b~4DR(8(>pHe ~rwk,ÿqnCi}] џ}+fʲGe7pŁ?k$nݾ\DyUl B8)D_\,+ÿv dq`-;_{N ~*"_Q-8=;kcyxwM;I;kłWxw8^ͳ%GpڑAEG!p%{MuX*ׇ~܆3ߏ@>V͕d6ˀo#b;Ѭv}qVFݰ1 BW ܦ9~rTexw!, /(7?Ņ)B_'S,$Z==|Qa`gg'ADJ""# 4)/7LS`U|3/=lnTGH^Gp&orB:'As&c ~4?ŇP&c ~'j 2idBXGͳ(Q$?Y~B[6άO%GpHeݿ==yȄ("GgV'QI~| @c2h{v)EI~ԅwo&.#zD2f0p2#B_-S&[w=]4WoOqcd4谬Gͳ(Q$?Y~B[6άO%GpHeݿ==yӏ°E6άO%GpHea!3/=Cg/#?E>E({r=(dmIEׇ}B_p"|ƃ.ŀ=ߎ_\>?Ag`X ޸>9XT f1vE(?smX*;# 4܄k!&F }Ee?wȵ?6ϬOƂEG/ ҽ(dH ( f^{-=G/,_ 4aǧz}G +5o,(V_KD}1QD & 7vnOHHH2 /# # i =jRBȰNBϸI?G?k!}nKޑ={ 5J? (KM0 q]mM\ 0\ͳXz3ʜ " q/UpnV:Uaxw%P H齯Fuز(> #,, /taZ8^RpZMOBរZM##A8Dż #\Gk ] N T%!F@A nﵠ#G?%nbjGh8,?c=дڄ7 F&Aj9xP I'1ᵇ|V xv x[Ň7~:h2"]&|9|&~I BW$?'qxw#lj^I-\(嶿@(XvzkɘqW$-?ڄ /!$X|7~(٩h-ET>B_$E{wK_$$(K7G\>,8ÿpF@A vK!$!ƅ @j%/#BƠ\l~dC`{H!źfU0kÿiZ-PoMWE7jpޑKjoJĬ_dmգ)ZBT$,kDX|Exwٱbr(< HR!6ICAjvrzDV#7d_vpT8pp-#ao. ,\|Xv﫦GBذHWM*m#n7:tAR oyj@& %H[f?䴏-WH:i[zDtj,GxXo}]#HgŢGM1v}]#>?cr )`̄v&,8qyo''`7}Ł(WH=] -p`P0̄Z0^/\>]h бBBҠta`-;`сm߳\ͳXtО,vׇ}]#)Td ,6 2"M/ž[ |j>DtCHt%Eڥt:i oG?S R_Mt>( %GpHe>tg2b-!E9}Y ?}/F2b4q@7Q+܌jr޸/PYyd(%LF1u{ !'Ņa߲n;kNj=}>0ed'#MfPYv!qK֤uȥ!Ϲ>Y ,<";dĘ!:#FasQa^]ͤt?(Na?xw_bLIkF$|Xx^ɉ7m~F$|XxɃ(LF ;ÿy1,6.;c "TwR'mHwH{HM#kXv fM# JY? 40d4;r=#ȲABt,;~^@B_X^<n%'mb~Di_7u7\4v( ?/#9w]"sKGcþٷQ_7&QH^GEI~=|;QEmHhE=DRzD.#qJ<"sHÿ f1tFUQ8}p\;}B_p;-mp 4т?\ ~?/!1?ņKORZ71CZ CB[5 j>Z#_#g~&Kÿi45t:ׇ~P#7GXxw:}pa;x#,/h0HqŀYM\DM`8/=zp"h̏E}Uߋvl%޺ "Tw!Nq%"{Ԋ  !tX3u{܀ƙ d.OE] /,@N+_G#}>,@}^$1\z(H~5dpQDEkAKXF /Gw >Ԃ[XnE>Mdb@3;dc삖8zA÷;xIb@%]wŀƿ&kL."< Y` w~f[6F$|Xl؟@ADJDR'mHwH{HM#yn,\Y(jvƊỴrzDX$xo "0o% 6G|xZM pdOE~܄tN)Ei/qi̎UҒ cp2t[!@l*wf%VzE7!!)bx,1, D0m`Oa |7k/N!7䡸sըx>#'ݨ''j ϵi&r>4!@%Gw~Ln)|N%Oڍ*a﹑أ'i]);k6,5 Ǘ?A=ߴ,5~5y,5W~;G _$7#Tÿy# d d;"]m'sIb+f·'u "Tv/ڑF޽ @a#Us)dQ+?&(rh}= 裺EVԊR'H= ˹ (z\ >dTXW~84L/Q0 v* )j%Ek`d^' >;oOH%}ZOAxG﹓8/ Qt`-s_v,ÿs^KF$|X;qd;xw >/ +OE> A=s&kdzD/s _v,W~o 7]`b(Q3ZR`b[ÿpQ+O> [ikϹ>Y)X%3x %7k>b(;;xu Jokf`L."< Y`ixw&okdoGłPmO %Gq "s)6Pp;Qp=|&qS\Y(kC/#?E>E({r=" Xd=A7< _n,2 v E@#xw %Gm #\?6nTqPiVC'H?<V!B&4T"i`o@dw?r*QE]ߴ~ٶub|*;"# 4_PQxŮZaS9zi@-WH , 2ŀP4;c`ݷ"mߴtٶub|*;"# 4_G`T-GM-gV'Q(>pHe}TdhePvP7@kH5~,X[6άO%Gp;Qp=|&\&"W}B_wLE|cKÿ?t+H\~~,XKfՉtDt.$?Y~o~,n)^>[ŋtٶub|*;"# 4_{0(vtI@fQRRii8'w!@螑@a,}dl-}@wxwq!p\?@{xw9 Te6okY,#,/$xa,V޲7 Y gxw_B@Oxw9 xKFQd}ߍ ?&;NVkY0$(;!pGY [xw9 jK#$E`$;!pGY!ߴJ^͸OG/ u~@_tOHԅw2f.]΢KaooCbҁ{ÿkb/xw6άO%GY~XoDz5]% + ơgH^G\*M##nyQ]B% ¿NEzg(p";owk5GqZON ?ħhiDR k AB&Dܐ6 ܦCcZ@}ۇ5 ߼J`{@m$!wUHT-E {XJ1|ZE߻yr [gV'QI~Կ/O!3 #QY!y&\&oYv?˹螔g CwȫL}l1Ё5߳0kxqY'1~"3!ga5+@UUl)҆NE^!r9#%WH;|> Z=߼J*0' >yZPWZ*L^웴[p;ogkGqod2)AmX*;G/ K"yO0,?osfIQ]54oV0܏kjDeW#F%jB8nH)􉨰'$z,2ڑA˹ jG2F=&dm-C8 `ʋk2-nC|Qab}B_ *[Nl؟y41wXw*R=@I{Z|A72H[&g`~?Ё=Rwc?'P (&T$-ɡ9߄3=RwUHa;ɡA=XPlB> %GnHR&9Ĕ0ڑAeMI*2-HȀHd7Cs  iHA6C |@I6BE1Gy48QjFDE iH\ȅ+þ/SHA=RwTdi܉/F4G| 裺EVԊa;ruҌFWٍ̖PBoۓbnM7k/| X<wő^ͳ%GpڑAEG/[Xݸ/h 56*");}p |Y<;g'ADJ""# 4H|Z&/ZdAAÿN+yY =ߺ,﫦 =Ĺ Y2bڐH{HH܄tNr=L3r1դ܎))xgS/ L|X<;KI:ho|fɑ,N(Q_hSN72&@ wSHEdW&$W[tѶu2EꜻI͸RsVЦ>{ÿy ER=͓"X5Q>pHea?y)Pym}/#1ru+ixw%G7ŷ1w~G+l:>neaD/ԅ{ 螑ℾ+~S|Z3؟cd-J5}CbCÿp$lۊ WDe5) RaMea"S0jZO/?p F/#<ŷBԹw!6J:'xǵa ?i,Thn+ %GrMrBŮPI~mmĂJ Bb~t%Eÿt-JzCGq %GrBŮPe#^vf eGK74X{'5]% &(h^D;QEmH%"}8˹ \Z:'Q嶵:r=0xm|;a ⅣlOm2m&#mxrlJlOI6Q[f(#xwQ-n;\}q!w;ΛI+p>ٶ#'N$6w^w-6ħ. ͸RsV٪(9ZSÿqΦ-(%;aʼn((QIH""# 4_W umk/Rcwq2l!lIq&%9wm&6m;QdQ[qE^tCqU B_?p=$ᭉ+/ծ>7WH tHW2q$rb('Nz_ ^vf Y@yF 4B.#zQ\sW)9G(I\|ɘ/d2[ \d[aVJ̖­$,B枪T}UɱmвVB%q\wż /fQI~nMQ-[bۡdcJ8"Biݾ| p}]4_Xn#^vf fa5:'AjB;3.Qo/hn$WH8;L-l:>neaejJ ,ÿr?TuM_|;#隑%GYtѿ[7w0܏kjDeW#F%lPtHjh䭛\ÿr?TuM_|btHjh䭛sfIQ]54oVNa߹Lԉ*:˦FJٿwG55"Jo~s]3R$.7+fNa߹Lԉ*:˦FJپjtHjh䭛a߹Lԉ*:˦FJپttHjh䭛};#隑%GYtѿ[7sfIQ]54oVa߹Lԉ*:˦FJپtHjh;|ow]R\ PJ{F&i'螑 d\rtA5nۊ-þٶub|*:|UlFQ4=" Rܶ >r۝˹ә3#N7 چjX M4m؟bA;gV'Q_7]~PI  IrzD/#1rۉ˹ҺE0MwtG.qEͳ(Q_?`XP MDO0#=" Rܶ ɟ9m̙ހ{'Cb~[dg.n&w1t/fՉtD/ > %a .tOHԅw2f.[q9w:WHwtFa{j&cvQn/fՉtD/ |d XB<ˤf,?/#9w]#$t!;qX*: XA Ir?7tHjh䭛na߹Lԉ*:˦FJپtHjh䭛᫘wG55"JosfIQ]54oVӘwG55"Joa߹Lԉ*:˦FJپ ÿr?TuM_|AsfIQ]54oVXtHjh䭛wG55"Jona߹Lԉ*:˦FJپ"~s]3R$.7+ftHjh䭛;#隑%GYtѿ[7w0܏kjDeW#F%lÿr?TuM_-!?GX?M?g-\'q&bxrQ {R$҄ l Sp Sd0K\_$0"uhV_{˘HP y]+=<NT{ o{nHW Fkc $Z?k5o{n5mG}`o[Gm_sLJP4ID M"n#@nOHHH2|J fg.%xtN)~ԉ*8 6?2rLBHGe!i4@R隡1UH|MB1|Yxw,H:~I%t)EPnD Z<%7֯VKf{!n:ŝ6; Ȇ6m2KM0!ہTdgCþrbye! T KIOŝTq qX6LJ[ˎ,Ili0Xa 't ExwlE"Â=qhrNZ  & 5~Cj ڇJB- l, iATdmŁMxw%[qb2mxwh?xwi876-H BN t? ߲p};ÿd-,0ÿwx,.ڣW,a+;B6,0~5uh'2;=k5~tѥrvÿwx _,X1~5u X1j!'?+ÿd bJ9\cax<;B*azM)J@b/7$,j"|4ŃI ^o&b(Th`* Bqx1(%e.|s|ʟCtæCLnyBE,p@`uPa t `Y:`T`Kf_nY_, \d+PQ~ V~ ڸn*,$, jHŃnW~{5UT1TXbexw mlYAbTOaw_,gwsRÀMf-c ߏ76bRiڄ"|H- wKy`/qMm,SKQi|tZGvCD(E߻lTdaݶb2^UX`ׇ~G#xwKfΉ'tGjBX{Hݵ[$!vrzDV#7d_سWM+Iba;'f-c jEQa fLJ\cdjd,xjp7ZoEt]", /,8w~:/"?&b+{D=ao4Λw`$Xel̎ڦrT0~$,?:}B@EItopZoEt]"qgAh[y߼TJG`t$@]4Yʭn< kÿy3\ =*:Iri[d,Bÿo#_,/ c-c+D=ao4ַ #'I"ԗw1s#5?t6sal |>! .aׇ~f*gAh[yZ W_Swd$XRJ%j!w! f ֏s^HTT% oHh] G WM#Q9mŜA ]FDp&YSxw<@ qc3Kÿ`;h] 7~,(KM1ޔEto=%dR4՝Q#R F@@ԅpݵ"8n;HAD&(] 6mrB:'MpEuPan5u"PxxL.1-d Ui3_썛A|}ۇƐ!&,ZF,&tOxwY3;B,/p*,f0;Yc6xAcD_zXLĪf|C;ÿd$x@]kY,&'HWH;';f^^N'<L9pO SUTXĈ3E5i.,Wrx',.%szD+!&D$'a0 '[ÿ/[_Qju-m&cn#Bְ(\[?1LYu߻n'M$}!*??'x';\(.iځ< K!&" (߳l-[~ݸY}`6 /pG],؊}`X~]b4?; ~☞b/EqJ{UXĖͱ"ԅ*;xiH2AnڭR#$7$IJiHY~cZ<-%WM!i-46i-4?-%tGsd-U)Y 1X -}#`.] B^@mxw) ;,f9xw4_xw?S _faD.jΉ( Cxiy)AjDpwHiCtDvp"iRoBIl{V69w!*A ^y%܍B_]2[ H=] KÿhtADK2ߖ Ht_!o{p] /;WcnOxAvŌ~-ۺo3';#8:tqs}p=] );K7u|-XV?n|ݻ;u˞?2ZCPũ@#j6%*C4k2TuMU ``*WHozD[E\Nn۳/anj=t' %CL 2KQ zo\ o ZK7O\ ~t!f#jBܞ47mHwH{H&(!e| npٱ.ZGAjJD+þQ,9J'E@XCƮp;;fi7~.J@þ`(J"F q5ߋ3KÿV֎U8'; RirY(OkY ÿf]M-4y/OQ4th/wU=߷\C]T%I ~;\(,@vٷd.ꮐn /xC|HybWH8~@"}]"aQ ,RHȯw~ #xw)v"ȀnX?Edl #ÿLeh] }]"ed!1WH8 ?! X{þ[ ~+?WHCv_4;Zc'Xr,-*IÿGM*`=xwYG-?C/pq(WHuv^.)/ǨKP am=)Q"@Z޲6Ga, *IoY;Kho(?roB8K `RoY=ߋ t~q s O(qB0,%Ґ Y4;a Z:iWH}] N .v\@swCXB ÿpۺ9Ϣ~몮̿a<\@=vnj_@uK&V:[ aկdl0WHW~,axw4N(;`?rorAbOkV&anH)􉨰'"H-< ]GD@8ymu"p9ym}@E6L d^59b) O;uW_PoJ+?ڄ"? ;EfQIJp) \CHJDmHKBۄ2t@IJ+?ڸLv#PG!ʺi[h[6ϬOƂM"SiHpOHDtҍhNOƲ܉/ɏff5f}#)WH^G i]!5DY)e"rо0@螓x YXElׇ~,;_m?-'Y,޲6jl7~/l :~/ 1dF+Mxw  ^K_zk`*$Cxw xw-0 ZF, t`u/;abGldd1i}#bb!DgxwLn 8RŦ. ÿrg_kp~nE`4;AJ/L,'j)߹3FwXߴ Ō?Lcw_%bk  |ydEFȬ D+þ7ŀa߲ w7&uw );AN\ߺ,߲mɝ}]//h[rgI WPḦ it^Z 7Zb !5lB> %GnHR&9Ĕ0ڑAe-6a`j B{8z Gya\ ExwkpGa |pߍS[6+ "TwEGi_7"{ƫ X1_)!ytOHkx,<#{s~N G]bˀs7.zhmX7ADJm4}l "TudkgD Y,ԅtTGGѡ|adgE܄tN) #4 nuު2rĿr=\黑۫ao bׇ}Td|c ";W ~ɩHZL8\=gF'u*;# 4_o.?d2P˸ ~$^6tobwPQ>pHewkŌFB7h,d~_WM( ݾsmpY ~hߴ{I}]4XnuSٙ+!e5UK74X?X=hԅtTGG/Ky!cr=#[%VB VjTԉ*:˦OKk kY] w~5ah"fV'ADJ{HM#d"i.,dl] kÔEƒqX*;# 4_Q) T}kY\Ixw_.?6? "TwGi[! m,ukY^~5ah"Hlۊ(Qi8I~lB +SVkY] > /kÔEٷQ>pHeBWHSa0 F#xw_.lۊ(Qi8I~lB#+Rv }#gߍrlۊ(Qi8I~lB$R&a:޲6|^)sqX*;# 4_DtRXL_z`9xw_,qٷQ>pHe|H$DukY:Agxw_,mb~D$?Y~B"!WHXLVBg ߍr cn+ %Gp=|&*G#a0_z+ÿ4e?6? "TwGi[! ?XLmdl]"@.;SA^GfV'ADJ{HM#d"++~, dmD~5ah"qٷQ>pHep='Ub~ .Mw1JnyheD&)RIQaNE>0_e"/#]#B.7螔hZAST`4DP  H N .,H3M@HxT1/ }TOK .6t^Xڀb^? d, [Kqo?m΋}{P5LKޑi K@PP&A!lh(Qۏi[%8v!Nq%"x 6PY~{uD(p^]4at#`|e _ԅtTGGѡ{HFr1r; ~Ð[ΚÑ[ Ņ}ߺ9(,, oН}] ƿ9"? Ut5aȼyac~NUZF9 GX=Dž1WHF9 ,b=;qCcWxw9vQx"s&kvKż;_l,bxw6ϬOƂG/ Kq`H2bс 4 ^ /fV'ADJ&ޑb~ .tFY~p ,ԋ,['D(FU* } Vґ]4ڥS0-FWM'u+pg8+Jub۝7 G:$,['D/sS0-]4(K*n7`mQJ۝b~R_ЇtH#؟? eaS)Yht4ID gb 4 ^ Q"+jESHe #:RdOE9[M1܆ mA-E*@Rt'EE }iнhB/7n*jo>Mۋ~=m36mX7ADJDR'mHwH{HM#$8mw8IlO_7;9)YB+?Rii}GAeu 裺EVԊR'Gŷ˲8rCpD1nc?'TRE,] x5}7zFg'ADJ54$OpڑAEG/>b'ffzNOƲV(W"]HpUd:Dېzmڑ%G}:/|n!i[G{\FRbS?RiiF6F;QEmH%"z,4Ũs􉥨@G-G-w!KzQG6<+@+ $uMI-E_|9Fmu0@ b#xw%oڂn7_*QZ l(B>K2(y\sBB^fQ'Mq "s)6Pp;Qp=|&{g'ADJ54$OpڑA]4 85p7p;ָNp?b~5ⷿvb )_hn=g|7@}m WM"7YW?;ڐ:'xZ\9}˼Pp.(q}ۺB14߱?M/l`Y] ?;qX*:zu[.w ! ͸OeݾsmpY Y] Ņ#ÿh] 6ixw6? "Tuz5>eRRii Gt(dO-HSp"i -F iFn{þ-4ԁmF1" u'݄4;f*&S7GUX|ٶmHRݵ\IH""# 4_)t `\ukYߋ&~ÔtK b] 0ׇ~,%+þZ:if!JvWM(wm|ޚ{_vi$p<; dlY!@`9߰V~Ô2A ZF dB@`;a(rIWH7 }#a0!+ߋ JopBwWH r@WH7 %O}ߋ +ÿh͛kOԅ*: U]"×;ÿh]" ^tdS cLxt+/jB8nH)7„RzDXi`U7,jEٶ˹ jF7&=t@ٮڱXP oXP :XH,;,k],axw =C4Y4|irDk=v >.Ixw}ێ>E&k].;xw ,(XP0;w6[ˠR7mV4N!="kiIH _# ? }ExBѹ_1 dbeWM1Eߋ(~fͱ TtiC1dj7o+L}#b a| [ÿ~ݸY03;p"ɇ~ݻ_zdbjE5V@sxwڒO >ÑQ LA6et o~ݸY0}`& ovp"Ɋ/q=v`~s{xwioWH(=tNkGa M.P|)S > WNΆCVL3 zQEþLX2pZN);o\~f1d7{ÿsD ,;n=솜˴߹ۢfQvea8@C(ia!RRiq܄tOH2U ~En7aoBp ! 쮐l$j@͸OM#s"˅d*."i>Z /fV'ADJ\}"BzA6޲6hZ}n+ %GpHeKb۝7eΟ,WH]"PWH޲63WH,^͸OM#d!P] @ &bdmbAc}n+ %GpHeT c+=xw6? "Tw 4_Aº@-6ut0wxw6? "Tw 4_B@c_z] W}n+ %GpHeT!+K +͸OM#d!Pj1B޲6r}n+ %GpHeT$,&;k_zt-&mb~Di[! tSK &X ^͸OM#9 Y%Xi<$z 6IC ݤx"#R jDpٶԅp5#rx<,;IQ,>r,6tXsB$rA? +H(h ˦kTdmŁB pGAq*, %Pan'@ٶj20)^ iUAݛf KM07WH9H@KkŁm˷}zwznI8Z"w- p&'D@=t>)M&h$ţ0PAd 9U%'SK@; d"U)IW@|2Q]ñ\a ^ ~TosOp*bv,>#;6ñ\ayl= R>fzD6ZͅpY?aزa$}B_ipY- 6[]۝1_Q-u_51dB_mwnvwK?7noQ-~]cR\$i8,gQd/Sm, +ÿvJ ^UF@A›ÿvٺ"Cxw Š6C#RtD&ʹ͒iۻH="+xiH2vԈ-UeAcX,[-ߐXߐX:;uybŠ<] *ׇ}]4^Aeb[xw o-Kÿiddں@`Ir_#nG}R@Tqxw@/WH3AXL$ÿlv1-_L"_fɉl-?"b[cPB%lbж?&ͳ#kEpZDĶ߰gd? ߴK1-0$!Y]"@ZFts cKG/LKl,DWH+A;}&%3XF D+H?WH*w}̂/sG/Dıv] B%la1wEf*=,-5ހ4z;^<[$,d%Α]@t޲6L#PTexw,svوoL FH>&%;29WH*ׇ~6la Gc=ɘJ!( J * Bx1 l? ,%?bmߺ&PTn j_ n }@meye]$,|0 *j0^1 IlO@(FlnxZ<\O\\|߸f !5  &[ S)n_p{Tx[ @  7A5ÍGEEޓ}G6זAmԲY1c¨ꄿt% ۋ| Svىa @fWPF xTDkK<1Xt-ݸE僧E倵y`/,WE央CRW;v;㫺,@j|-tY9OWMKk, .CkЈ,"^зtn@gڄ#(WtYu k,32OŁׇ~@Sgxw%[ ~͈ń ~, +ÿyx3-l=5*onv_Q n AD5`d,;jGtt$^A`#|XB iA`M[þmyx, {ÿ )0 o!$A˨K77X7J}BZi'A`%r﫤So oŁ ~, }]4I`5PoEjo {.2 'WH[I`7ݏ ~Gv œLj| !>زutI,{ !EWH! ٱ߲%rݶb2`9;mĪ2`3;m,X^F@A,ׇ~@Gw}]"1-lQ~6l`\m7}]"H9~&%x@'+~6l`\cGn =] B_jp7Z;L"@EWH˭}#e*Qÿ1Z\dw_1t](\͓, xT*kpF@Lz]<7t'kőT*k#}+jyEX[T!!BWH{_zQa0FWJ;~5iwjG\͓-d"%] :F.`!WH~ ZSX\"Ea`qiQ/%l1-'{ד1j3i-Ka!yFtҦUh;;8b^tLK`1WH~7~6la GE1DM}#eCwxw_61+Rb ]#WH~]xw .CfɉlTMn/ut7|^O &!1`P)ɘJT6%x-Q(K |J4;! ZF‹ k&%߰$ &%3X8WH OkY t2 W1jmߺIH텃H?^Kٲb[#;ŀTXzf-\{L"G6p%#s\"Qx <-z{_|X>exw6s |@]V]HAbX>^{{{y E`b﹐X@[}wE( ~#;RHΎ P| @ydKݴ0?ڄw l>$G#ggvHÿi-(%G{2JKݴ1| D&Ac[_`Xqxw%[Ac[6wAc[_v, ߋ$Y 﫤+6凙ݒ6Ao%tmߴl4t{!6%dnkÿ^2ÿh](﫤S] 6,&>޲6L/;nߋ?WJ;kþHA-Exw4[þ* @onE GᘯLDod(f+ )7}A="RS)7Bޑ/"p>)8! ̕Q_P*d=ћ~[.:TڀBwT6tzd#{ &77!`隀BwT[#"Rn8",^S)7Bސd@`7:ЏN?9=(_LdJ7a߹Lԉ*:˦FJٻwG55"Jng0܏kjDeW#F%l0܏kjDeW#F%l70܏kjDeW#F%lG0܏kjDeW#F%lÿr?TuM_wI\ÿr?TuM_-! ;rcn;#隑%GYtѿ[7va߹Lԉ*:˦FJٻ;wG55"Jn;#隑%GYtѿ[7uCwG55"Jn鋘wG55"JnNa߹Lԉ*:˦FJٻ\ÿr?TuM_wFa߹Lԉ*:˦FJٻ\ÿr?TuM_wntHjh䭛tHjh䭛;#隑%GYtѿ캚lM(uEPAC50Bv% D]3Si 2HC=GM+/{/#LdwC0܏kjDeW#F%l;#隑%GYtѿ[7u;#隑%GYtѿ*o}h劑1MP A>' c:PP|` fߨ%M  B}(' Cu4dmT`NLmP 6@mTبJ|fߨ% X' Z/>BO2}EcQ@-6#'! @7!AdP@>A6 `o-jFU A" Vfߨ'#U A 6A9_Y14ꠋmT`NGPC6A(OuZYy]4?`\t2\8jxڸ DPo(=2PGX?O؍wD'0܏kjDeW#F%l ;#隑%GYtѿ[7txtHjh䭛"~s]3R$.7+fa߹Lԉ*:˦FJٻ;#隑%GYtѿ[7tGsfIQ]54oVÿr?TuM_wRÿr?TuM_wD0܏kjDeW#F%l9;#隑%GYtѿ[7tOsfIQ]54oVÿr?TuM_wE0܏kjDeW#F%lwG55"Jn;#隑%GYtѿ[7{sfIQ]54o_eE+So ~@ja 75j; }hj; ~% uqthHJA#!BBJd4ud :}zD |C[ҐkBNڃ+ m`2~ %G}TJcM04Ű@&MáVͿQ0& TxtnAuBFmᨛ n`tO+"wFmCV42: 7F` bþ(1xj&d۠';~ȼ]469n_ .7y3wG55"Jn wG55"JnwG55"Jn#wG55"Jn+wG55"Jn;#隑%GYtѿ[7za߹Lԉ*:˦FJٻ;wG55"Jn;#隑%GYtѿ[7yCwG55"Jn;#隑%GYtѿ[7za߹Lԉ*:˦FJٻ9~s]3R$.7+f~s]3R$.7+f~s]3R$.7+f-sfIQ]54oV:sfIQ]54oVa߹Lԉ*:˦FJٻѹ~s]3R$.7+f9~s]3R$.7+fNtHjh䭛tHjh䭛CwG55"JnW0܏kjDeW#F%lG0܏kjDeW#F%l;#隑%GYtѿ[7y;#隑%GYtѿ[7x>sfIQ]54oVNa߹Lԉ*:˦FJٻ;#隑%GYtѿ[7xBsfIQ]54oVÿr?TuM_wa߹Lԉ*:˦FJٻ+wG55"JntHjh䭛 ÿr?TuM_twG55"Jn3wG55"J?(_ /B(_*ݦiM&Y?MMDxCPΥ +$?Tt̘?2la;FtJa(ރ 3V[5Ō K l0,1,4,dY%Ժ 4ID.C4Q-KP>sDKR3O' XPɌ' XPɌiiY.ӘNѝ+O5J̩t~҉fTJ?iDDҳ*]%iiY.Q4Q4ʗIG(yVeKMQ(։F<,C?e))Y @,wP`b2`^X6Pc<PV5Q&̥F΁Dz *Ή(,Q(Y(oAeXJRDSg@Q?yخ2J%K:,)d^Y]Pʆ!R'hΉY ŸC* XL J7v蕐)T2ňd4v(  Ÿe]8fQ4娼),C4ֵja;FtJʦʓTE ”/^Vl*P>TE ”/^Vl*P>DR¬$?ja;FtJʬ$?>ZBK*ΆK TIzh f^{- d=,:/hS&UUtSh];FtJeaIeJ+h͑\khΉYt蒂%fţ%.dŢeJ%Te))Y @,ƲO;@dyOʓiC%WYV W4i5 luRu(fȊLjSYK=jc)Cښ6rQ+"ʮk$]TLN>QgD*quP1;S%YMAeWN5yخ&'s~T///M(dK++ %e3ڍ2X|?1y-e Oe2he5բCugC"E ^CK*PΠRcU=(Y@8uMխJXU qK*R' Oe* ( f^{-z2yTꅒ\PΧTO#6e qR% *Jj 5 !mTO/ UQP`T*͒ⱈV}$3dVfkhΉYPVy1*>QS.fTT Ր j%cHZX1 I}YKC)LhΉYVfYDX'NVRFRJh~w+*<l;Z9Y']<Ջ*`~3Su`ƊȺҕ'f3F fŃ9ҕ'f34Use*bɔpTv蕕Ym2YFRՃ+"&KV,+#X1_+2%QZ&?)FtTZ2b6|ӧ֟JZZ7CXPΨ _*:ut+*^5?hΊTLF/zt4VIbJ%Y*xŕX1_)I"" ZNY'(d8U=dŢIȈJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJSNZ3Ti-'_V hܵb+ W'Oz3eK1/TVQZFFE֘TV?DE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)DZ?hΊY*6yv蕕M TV򃐥?DE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)DʥkZՔ4d´13VUftUR? ZNY'(d8Uj?0I1eR^d7@*XݔU.>XEҔ1aC&3U.>X"%LK+AGQ3 zV UUID@di eh>hΉYVyPiܵhJ%_Y_4K8?/gY'e*2bZhi_UӴgD35f,NԥkZֵkZ|'qS4Ud`؆L*VCiKY;veINL *~|X1 1eD3 #֒άh>h>L33ꖘ36X&xȸ\R0T"tu6H./9J%,TVfliz%)>kZֵkR*},ќT@8uWNѝZԥWNѝPAP)TYU^TdjRTY qI N0SZXIYqZ3VEkhΉY( ڊCk!p*j*g)T C K57笥@&1`hd /FM(eP53 %dZ M@N|E+l/eK=kZֵkZֵjv蕕Y% ȂjVkU3@Ah>I}WNѝՉh>hΉYU9kZֵjMAh>5`VUbyP?笥@&1`hd /FM(eP40* ʀPbT0* PTT0* *j`v_P4R.\.+fx+*\ŁB4H*`T0*fqX+>Vem+fw3ӴgDNΉ(+]<( O3**Jj 5 UQVX-,Z3VU41}Y4aYVF1?T^Q+)Q0PWS,AZֵkZֵkVhiWt+"^# BҡPMj͒ⱈV}$3dVfkhΉYPVvtIAR>qR% *Jj 5aQX+-, OK Zֵj_VMVf OebfJEL6)*}*zֵkZֵkZ՚qLAqyQ)b3eK1/NizL`djjro ML MM114X)Izꖘd3/TflmNMp`.&EM$m-.\^d^PQXȽQYť֘+Zp^l##S"EkLKӪ+Zp^TRjh,.S*Bjh,.z3ejg t,uK8Z&]"r0fRVSTEE3Q-M2bz3eK1/Tư  b^bڙ`d] )DR6HǕ94EQzxPhPiC04С4Ec"Eff+Zb^izKN -1&r<&r36XpBi'Qe(g#e,e1NMpT^d^sDhSv3̸pXd^bEkLK-1&r<&r36XpBi'Qe(g#e,e1NMpT^d^0;fZ0;fZP(`v(`vQXȽQYť֘+Zp^TRjh,.S*Bjh,.z3ejg t,uK8Z&]"r0fRVSTEErO;ny ,Z^iz5.X]qLAq|+ײ5Eff+Zb^RFf F`d\.NY24ID͖-/TVĽ:TKFfDe zuKMQR ަgDsD4gQPŒMLӪ++ȸ\ 9\d VF5.9h[1ZP/NtLŁS)gc"xR.QRIjy*/a c(bȪDRꋆs.dś*h‰Y0 'bVBEXH6J*hVP‚/nlx/ M থ)5Yخ*>K;Q3G3>-NQYɁ @FAqp&333333UipLJ*TjhYp&RJ31uCSE˅2*TӪ36X&xȸ\R0T"tu6H./Nb#%͖-ɠ2.3ȸ]#)Ae Ӫ  FkLA`$Z35/U&%ꖚ-52/8KP4`xőLłMLe z%L ,[S8L e4Y232r&xȸ*/T2/8KP4`xőLłz3eK -djeQrbbh.. `djjro IzꖘS@atQPS@au P ,[S8L e4Y232r&xȸ*/T2/Y!+bz3eK1/Tư  b^bڙ`d] )DR6HǕ94EQzxPhPiC04С4yBQXȽQYť֘+Zp^L9I0'$åtI@L;|I0L;0L#`H$0Ia&0L>$0IbLc$`'$&Q&L I0H7$$6$TBM2$I 9ĂNq b䓜H$ 9ĂNq @&/$ 9ĂNq H$h 9ĂNq @1$?k pr Nn Ty!#S q`NB~ q`NB%)Ƅ*p(:SSTO9NUN,QN4P&[ Kh8F? e\|##i*3\*a(dL1_,??eV_LNnSM)+\M)$?ˉ8Dq7_{p8SA"FSA".&,SB".&oyN/ˉ8D#7ˉ8D$\M)!+oyN ߗ{pOSB{pQoyN.&oˉ8FC##oyN~7SuSa?{p_#Q#Sq7~\M)8?tSf?M)8tSf{poyN&M)5M)3ˉ8GG#7X({uoyNM)ͿoyNlS{sb?oyNlIM)͟&Ŀ[M)ͫM)͂oyNl/&?ɽ9oyNl1&&ʿɽ9SEM)͍ɽ976[M)͎ɽ9&{seSOM)͐?ɽ9oM)͚{sk{sd?oyNlM)̓_oyNlSɽ9qM)̓oyNlM)̓oyNl {s`UM)̈́oyNl ?ɽ9M)̈́?oyNl<&/77tS77#oyNn7777{su_M)oyNo{ss_&M)οtS&77_I9M)?tSoM)tS~77su8oyNn{sto&77_M)g77tS?ɽ9{sqI9M)į&o77tSQoyNn?&OI8ЇStS&B_&J{qOhS7[I8W$ioyN41oyN4I8hoSXM)Ƈ_8TM)ƑS7~{qI8S( {q &Fɽ8oyN4C,&DO$hDM)Ǝh: &@.M)ƁQ7#~7ߪ&ASW{q{q,BoyN4{q&A 8E8F؛Sh#7 M)ƂO{qh`M)Ƃo&A;ɽ8O{q7 ?$h>S{sS&hM)oyNpGS~~M)&M)M)+JM)78 9& cS[țS*78S؛SE؛S7&2oyNp8M)#&2M)#78_BoyNp}&M)(oyNp7oyNpЛS_oyNpI9kPM)78~78?tS?M)tSߺM)&oyNp {sY978 I9ySM)o178_M)Љ9S ?Y78tS$~78`M)ؓ{s?oyNp(~0&}I9S779!$9M)IA&"{sS_%&*?D&*C&#@S&*ܓ{sM)b6&&&&o{s?fM)cS {s&379@S &#I9_M)ooyNrS{s8/&!{so 9}@-& BoyNr 79{s oyNr!boyNrS$&M)֦S!oyNI:O&_oyNI:o{uoyN'oyN_j&T7Z1oyNܛSUox6Er+c¶1a\fȮtswFUV\kx|'3;?BHW{}!6Yq%45789JXz*wјh6)i8YㄴpĐ|:((s<#0ܡƹ󟗰B,sy{i*4{]j OnE<ƋrynI|b6~T,le#^/0?q0w]@w2LpLLs08&9ALLpPS&8TSW \p)x&8K(mmmmmmmmmmkmmmmmmmmmjɤɦ)Q0E=9ܓΆ!%0)Ί2BRE9.NQ 79|>t/ 90QǾ`^-w<;1͕^vmmmmmmmmmmH#MrR!H)`b.za1Č!x@"|41a4%*21<`Љ2Ic(T J&h!ՃU2Ŋ2,ED|zR|{UQ@Rx0irC0 CDc1E9jsbƫ+6br)%KP;<]X~v)d"$4Tq1 4#%$,L@8ֹ)_*bծmmmmmmmmmmZXSBfQIuw"oMͪb7E9D' Y9rqԶCAPފ[!F,?fbC|S}GA-!UŎn,#͹ (C6NN]㳪x/(oE4S@4;]F,?:/8g EJSMͪb7#)^ ]] eUܼ͐Wk!kmmmmmmmmmjNQ E!/>fRdJ4d3%2P"Lhv71(/dxvrOE8Kϱ.za13\b@1aLO EG$tqe7EEax+a✵ɱI hM"[d1YM("Lb$@mmmmmmmmWtSBz( mmmmmmmmjԂ*+ғڪ`p 5蠁EBmmmmmmmmm_NQ 4Cs=mmmmmmmm4D@@-HA㡣9 +| h4C '$[AjB2@h4D@@-HA㡜yFW8=< +|mbO: tX|lmV9)!8bSNwAsa,۟qNtTVrS]79QXF_H 'Ed{!5-e!(>2,Ȧc9]۞=9  /Sd3jŘ)^]4煮Pފ2KdS͹mD`,^ K|t<_d,͹ osk)vGbjLx<{GP|x:*+ _a4.TP.^Cz )9QXF_L4?OcUUUI@*Y~zLNL.?/\+OGUN?6)4 _<4~i22Cp5B3Gg 4̋?8@e{JM5 d`B2 .zp4¸IɱI(%&$XRċ(`rbE2D>"97b.zr2ă&cK,h&Ie9\2sb(EhI%60ȽY ͽxdb.h`ċ4X *h`fa@15ؿRU{pbmmmmmmmmmmuwAxylWWmmmmmmmmmmՉIK&h@xyB21c1AL1&'&\ ,` &É0@#?/(0k>8 Q*ƏEEaxbLGz ( Zċ*DDT!-@@4)->ǹeQCsQ5-F ` s(\#*WAj@$D0PhP@ՃU2Ŋ2,EE cdB &@``cGx\eF5˄I4`! =X<||X訬#/ yx\"UŒ2LH2hP@ՃU2GP|e!Y!L2`j,d  ,B XH$ Y!H2h<H B .dPyB%L1kK"H$AHHŒ(TXh) Ȓ P2 $bD d% ,$dbAHHň*" hm!#"D@!%H(H<@y,\3F .d<@yNa:Rm)Os)gcԳk~_9?:rRtgs Ϡ E>)&KctTVBI.`bŒ2L""DLI0PREaNcsEәzc>c97q)Ί2)6Ʋ,spI8Nx vt!9]E8E|76Cd438"42 *@h%ӓsqTV?/ "HDIe८mmmmmmmmWsIvc/mB2mmmmmmmmjȈ"\bmmmmmmmmmf"8 yvmmmmmmmmڴT5( sX7 4YO<;1"\4$ГFcC1@"""` mmmmmmmmmmwsy?sX@/:#mBmmmmmmmmmmՒ0ds&Ō r8f(-_ x2®tFbr%!+0ds&Ō 8 _amY$K4XHBH AXg)ΔAU"mmmmmmmmmmwA)΋Aj1mmmmmmmmmmph$ǣ`PRI@ k-.3v~oUcN p//XNȀ뻢Y^-<YO ]Ac)qNt\vuU蝄_0mϝiHAvrc"ÄPmmmmmmmmVLvP _;,;<](>;"&'vKI4Z4N (Ҡ dE03<68#()k76DkXӃ1AL_(֓+[ N5f .)W݃` .X<`D"UcN3$\yR"$!FG Y-vmmmmmmmmڻ7蝄_kXӀ[_,\0YSEK0@h% > ZRz8!"L>Ocz2N!h+q䁠㛍.Hq`,0@#|֓+Zmmmmmmmmwll蹰 3n~Dp/0H85,p8F4')h5-dmmmmmmmmmZoǫ=e(MNH\E✵`pzx QXF^>b4䎚Ë́Pl`lZuwP ؽ*ClnH^-997SC)%wrGa1E1Y)H;V8Sk%..IbWx:B2%;A^e6C|v~^blE=G8'.]q}ܑfS ^Rm͘h>ZNJr ]Csh=ʵ,Zt\x_sE$v%P\{ă"H9ul7Ƒ$.)WWr$ 2;EDž;d[rGaGAG N_+684 QB"G=\28ئhƇ$"$xE̓!="H9fص@""K*DDx4CL2c!br$D@`eH 4rbiG"䥨RͱkC{#=KINٔ||>)Ί2F`n~mFR4%;.Hq`,&'6)k hbDD &T& %YW*BWU<t P|M>@J6ů"㜂*:|S|aԶGd6:ŇrA&' cՃUr|XhrL%"/)Wx`cGxY"EIA/{AԘc"!Ɖ.X2H 0h@ 0 8>0&(TR"$ V0V4z*+ǫ(Ȳ`=qV_Dр`HsEH 4=X<||X訬#/X"ɀTIPcAC|"r|X 0H@""hPB劈*db✵7@切"`@2/VFbr ;&T;JOj)Ձp92Nj*8PSEN"P9/' Τ ਬ;(%HZp8PslXIǫ=eAI%jQMh` n0hrH*wU{qrEr_NAHbcD*DDͱصV"㢣m KNKE|S}΂ޫZƜXx9B b9j:tX8zR|{UQL㡢m`IUE0`89-P|tTN="f1NltP|7ֱW㡢:q1'ǵU@jW 9ǠrY?kI?*h5-e~T7zz^%& $E)qw a]}KsE\豧7rR œ4CI :&Ws q#&Ks %&=d{.za1r((iJWq#&K :rc7DHI4A4q#&K(!$TVACMrR@h$ҎE 5KP; IA4z^$@h%ӓsq'P1 HC&,Trf .dyr$&\`@jE 5Hq +8D\p%:~TϠ odvCؿ>pvuϞ) _okI?*lGQXF_'L + Gd3|M/roƵIA4z^% `F ZǠ=/cf aP N=d{a(-_<$dЉCɈ*dтE/S|9"%2JrOdX ) _B$J&"LF &ϜQTrGNLqcP;$%$,7AEg|ʽ/Ɵ8!PQ9j۟9d"IH8iĀH#DDԁ0`8zR|{UQ@Rac 9X¹s1'B!$LF,?8 ✵Ai1`IUE0`8oƁf((9j %`s ?^рZ(G 4$6¨0TP_z Ϡw4r.:usQS{=0$6a&Ɖ,Tfa&Ɖ,T<-`z=Ť|ƜЀNRAЎ%8,; )w> J&h!! 1D|{@ fa&Ɖ,T</BlZseص{sO)\O4@@9Ĉ,L`mmmmmmmmWrI!<۟AF%NR1s{mmmmmmmmEDS (/7@1AE9j(6mmmmmmmmWsI8DHI7rGx|)*$RQ6ATcmmmmmmmmj HM$$ sqD " Tq2DI%EHENfAfE<*X rݐ=ؔ9@UI42Pb3H+B(> (ZCxN頉003>b5); d#jBAz $b5?tS<"<眣d-k>TrGNLqa(EŎhq +8D(ȝRx0h*3!kc} `s ie/>fV.P|Fbr Ƞ+'OpJOj)'1pQNZT4h"t 0 _/T@a&J4X%BD "T D@$L$h D?IR9pS434*"7Zo >̆09@UI44t"3_S@a&J4X%BD "3&<]PQAubD0, &WA;-0pvuU󢢰/ӛAtkNNyl^/{Nv5k Ӥ怱!`($ͨ^QLVxP `/A/8S|qQXF_a[P 4"@`$g.@䓔B{ .{ι) b7X~sJsϘKc9nh4mpZ662΋F,stPk]Vt>RЏxFNtx<`Љ2 Љ`c2Ķ62QNZ 9<~F,ssJx _DrhDq21J^рZ(G P$\yR"$Ɯ!~xJe..e%،IW8 2w 4UΏc/Ab7q^>/UΏG$>R ʻs(Ŏn,TK۞vR 4f4H`DIصaǢ5bӤ怱2pENFaaO4 >a✵jQMh`p`"ʑ& 4ہrhKEEEa y#0UiM.L%a (#//>fQ-+<")mpXI1E""Mdpbͱmmmmmmmmܼqؤl09W0VwXImmmmmmmmڿ'\@ &3!Ց✵;70LDsF 20hP@ JOj(ƃ$Lq`,H4( O'ǵU_/mmmmmmmmڿNsnQG 11UOq%;!RQV2/tTVb3 9|tt|Z4Zmmmmmmmm *@17A8Љ2 +H@ `2e,W)!3Pzт/T\bs)d48scRpɱTE9D&j@0ŘB34"9Ryӏ 8F_)b̊yǹS%،Ó)SNtT^tAcx97v4`s4#$9#;NtT^tɘ_ਬ;1E1Yӛh70dB ~TD& ŧI]YNj_cY -99RyӏCdvCAG o<#0|^.Ɯ_SkaO\:@N/)Wp{(|S!8F,? N^,N qC|W ]$-b(FFCz*B/:q!V8 QKU{aNQ EHEN<' H qE9j " @ qCEHEN<\0|<"df0E 2*XɢE IUE%(Ta 9q~hqW@܉PZt:.:Ɯ=|P)IEa~"P9/_ c: >PH_zkp9nR-v-;jD-mmmmmmmmjx0hX d^-<&*͹A-|P ˏ Ƞ+IUE0`8 @ 39<@UI1TA腶bRTSƁI*PɠyA`jwo&\"LH4( L _/mmmmmmmmm_L7^ 8Z >PH_zkp/EdWmmmmmmmmm_c '/qa Ɓ!`R✵=08j"礀J*9#&8N2 ^ @0QFc琊y䠨 _ bx2Q D\*Ə|࣎$3_SECRnCla7^ 8C5(>0z8p8HJPԢ`07b(>,iQACqėm6%VLTq|͹Nj~T1͆yorbHFHp_mmmmmmmmU{w78Z_IlA{ l"JKmmmmmmmm1TS= WlԷRyӏ&ckV8mmmmmmmmjIRAAcԴTcMmmmmmmmmڿ' *br'&\ ,` &É";ƒ(TX;"`4$K4T`Љ`S!"%ɕ2hHbDƄI(Kƒ0ds&Ōƈ*" h@a&J4"R?*B(>8i!A僱I"& I2DEA 2"\S&$LhDrhDq=6RWm6a 4AE1/mmmmmmmmڿ8-KqAmmmmmmmmj݀a';"mmmmmmmmm_C8W8=x(_ N41 3ǀqQ=$QQ917qTVjg!8 3o0z8p8ͱؿmmmmmmmmjI9D'&vQ6($/V8 tA|"+mmmmmmmmNQ EF4ۉ_oqF@Kr(>0z8hƛq3 6mmmmmmmmWqn7(>#/dev/console errlogger "$scrname: Second parameter is null!" exit 1 fi cllsif -Sn $label | \ read adaptername adaprole adapnet nettype pubpriv adapnode adapipaddr rest # # these network types are no longer supported but they can show up in # the config for a short time during migration, so we leave the check in place # if [ "$nettype" = "rs232" -o "$nettype" = "tmscsi" -o "$nettype" = "tmssa" -o "$nettype" = "diskhb" -o "$nettype" = "diskhbmulti" ] then exit 0; fi # # Define useful variables # outfile=/var/hacmp/log/$scrname.out # Log captured each time clinfo.rc runs # # Uncomment the following line to enable logging. Please note that the # resulting /var/hacmp/log/clinfo.rc.log file will grow without limit and # must be periodically pruned to avoid filling up the /var filesystem. # This may be helpful if for some reason the arp cache on # non-clinfo clients is not updated to reflect the new adapter # hardware address after a takeover event has occurred. # # # If logging is enabled, log start and wait for our turn to run # if [ -n "$logfile" ] then echo "$(date +"%b %d at %T"): $scrname invoked with parms $*." >>$logfile # # Wait until we are child process with smallest process ID number # while true do sleep 1 # Let all children get started or wait for one to finish ps -eo pid,ppid,args | grep $PPID | sort -nrk1 | \ while read pid ppid args do if [ $ppid != $PPID ] then continue fi echo "$args" | read shell shcmd rest if [ $shcmd != $0 ] then if [ $pid = $$ ] then echo "Process $pid (child of $ppid) is running shell script $shcmd, not $0!" >>$logfile else echo "Ignoring process $pid (child of $ppid) running command '$args'." >>$logfile continue fi fi lastpid=$pid done if [ "$lastpid" = $$ ] then break # We are child process with smallest process ID number fi done echo "$(date +"%b %d at %T"): $scrname running with parms $*." >>$logfile cp /dev/null $outfile # Prune log file fi # # Uncomment to turn on debugging. # #set -x # # If clgetif is executable, then the # cluster.es.server.utils fileset is installed, and we can assume we are # running on a cluster node. # if [ -x /usr/es/sbin/cluster/utilities/clgetif ] then # # Get affected adapter's IP address, role, and subnet mask # cllsif -Sn $label | \ read adaptername adaprole adapnet nettype pubpriv adapnode adapipaddr rest if [ "$pubpriv" = "serial" ] then exit 0; fi netmask=$(clgetif -n $adapipaddr 2>/dev/null) # # If netmask is not null (so affected adapter is on our system) and # if adapter is a service adapter, then ping clients # if [ -n "$netmask" ] && [ "$adaprole" = "service" ] then # # Get address of network affected adapter is on and get adapter interface # adapnetwork=$(clgetnet $adapipaddr $netmask) interface=$(clgetif -a $adapipaddr 2>/dev/null) # # Ping clients that are on the same logical subnet as the affected adapter # for host in $TOTAL_CLIENT_LIST do # # Get IP address associated with client host name # clientipaddr=$(host $host) if [ $? -eq 1 ] then print -u2 "ERROR: Client $host cannot be resolved." echo "ERROR: Client $host cannot be resolved." >/dev/console errlogger "Client $host: cannot be resolved." continue; fi clientipaddr=${clientipaddr%%,*} clientipaddr=${clientipaddr##* } # # Get address of network client is on # clientnetwork=$(clgetnet $clientipaddr $netmask) # # If affected adapter and client are not on same network, # just ping the client # if [ "$adapnetwork" != "$clientnetwork" ] then echo "client $host is not on the same subnet as affected adapter" ping -c1 $host continue fi # # If affected adapter ip address is in TOTAL_CLIENT_LIST, skip this # client. With ATM this is unavoidable because on a failover the local # service address needs to be pinged by the newly failed over service # address in which case the adapter ip address will be different. # However when cluster services are started or a node is reintegrated # then the following case will be true. # if [ $adapipaddr = $clientipaddr ] then echo "IP addr $adapipaddr is on local interface $interface. Skipping." continue fi # # Add temporary route so ping flows through affected adapter # route add -host $clientipaddr -interface $adapipaddr # # Delete any ARP cache entry for the client, including any "hip-pocket" # entries kept in the network interfaces # arp -d $clientipaddr # # Ping the client twice # echo "Pinging client $host..." ping -c2 $host # # Remove temporary route # route delete -host $clientipaddr -interface $adapipaddr done # # If logging is enabled, append log file to clinfo.rc log file. # if [ -n "$logfile" ] then cat $outfile >>$logfile fi # # Affected IP address is on our system, so there is nothing more to be done. # exit 0 fi fi # # If control reaches this point, we are on a system that either does not have # the cluster.es.server.utils fileset installed or does not have the # affected IP address assigned to a network interface, so all we need to do is # flush the ARP cache. While there is no need to ping anything as long as ARP # cache is flushed, this logic has been retained solely for compatibility with # prior releases. # # # Delete ARP cache entry for affected host # # WARNING!!! For the logic below to work properly on clinfo clients, the # service adapter IP label passed as the second parameter to this shell script # must resolve properly to an IP address on this host (must be found in # /etc/hosts, DNS, or NIS). # arp -d $label # # Ping all hosts in TOTAL_CLIENT_LIST # Note that this is not necessary in order to update the client's arp # cache, as flushing the arp cache has already been done to force an # arp cahe update. This logic has been retained solely for compatibility # with prior releases. # for host in $TOTAL_CLIENT_LIST do echo "Ping client $host once..." ping -c1 $host done # # If logging is enabled, append log file to clinfo.rc log file. # if [ -n "$logfile" ] then cat $outfile >>$logfile fi r r kꖽW#oA םa םa֝a&bm./usr/es/sbin/cluster/samplesfoAA kjW#oA םa םa֝a&bm./usr/es/sbin/cluster/samples/clstat/vaAA k*p!oםaX՝a֝a&bm./usr/es/sbin/cluster/samples/clstat/Xclstatmp/! @(#)41 1.1 src/43haes/usr/sbin/cluster/clstat/Xclstat, hacmp.clstat, 61haes_r714 10/2/95 18:02:08 ! IBM_PROLOG_BEGIN_TAG ! This is an automatically generated prolog. ! ! 61haes_r714 src/43haes/usr/sbin/cluster/clstat/Xclstat 1.1 ! ! Licensed Materials - Property of IBM ! ! COPYRIGHT International Business Machines Corp. 1990,1995 ! All Rights Reserved ! ! US Government Users Restricted Rights - Use, duplication or ! disclosure restricted by GSA ADP Schedule Contract with IBM Corp. ! ! IBM_PROLOG_END_TAG ! $Id: Xclstat,v 4.1.1.1 1995/04/03 11:04:42 jpp Exp $ ! ! COMPONENT_NAME: CLSTAT ! ! FUNCTIONS: none ! ! ORIGINS: 27 ! ! ! (C) COPYRIGHT International Business Machines Corp. 1990,1994 ! All Rights Reserved ! Licensed Materials - Property of IBM ! US Government Users Restricted Rights - Use, duplication or ! disclosure restricted by GSA ADP Schedule Contract with IBM Corp. ! Xclstat*title: clstat Xclstat*iconName: clstat Xclstat*helpFile: /usr/man/cat1/clstat.1 Xclstat*refreshInterval: 100 Xclstat*upColor: #00FF00 Xclstat*downColor: #FF0000 Xclstat*fluxColor: #FFFF00 Xclstat*borderWidth: 1 Xclstat*horizontalSpacing: 2 Xclstat*rubberPositioning: true Xclstat*resizable: true Xclstat*topAttachment: ATTACH_FORM Xclstat*bottomAttachment: ATTACH_FORM Xclstat*leftAttachment: ATTACH_FORM Xclstat*rightAttachment: ATTACH_FORM Xclstat*editable: TRUE Xclstat*editMode: MULTI_LINE_EDIT Xclstat*scrollingPolicy: APPLICATION_DEFINED Xclstat*visualPolicy: VARIABLE Xclstat*scrollBarDisplayPolicy: STATIC Xclstat*scrollBarPlacement: BOTTOM_LEFT Xclstat*frame.height: 200 Xclstat*frame.width: 300 Xclstat*frame.borderWidth: 0 Xclstat*topControl.bottomAttachment: ATTACH_POSITION Xclstat*topControl.bottomPosition: 20 Xclstat*topControl.borderWidth: 0 Xclstat*prevButton.rightAttachment: ATTACH_POSITION Xclstat*prevButton.rightPosition: 20 Xclstat*prevButton.labelString: PREV Xclstat*titleLabel.leftAttachment: ATTACH_POSITION Xclstat*titleLabel.rightAttachment: ATTACH_POSITION Xclstat*titleLabel.leftPosition: 21 Xclstat*titleLabel.rightPosition: 80 Xclstat*nextButton.leftAttachment: ATTACH_POSITION Xclstat*nextButton.leftPosition: 81 Xclstat*nextButton.labelString: NEXT Xclstat*nodeMap.topAttachment: ATTACH_POSITION Xclstat*nodeMap.bottomAttachment: ATTACH_POSITION Xclstat*nodeMap.leftAttachment: ATTACH_FORM Xclstat*nodeMap.rightAttachment: ATTACH_FORM Xclstat*nodeMap.topPosition: 20 Xclstat*nodeMap.bottomPosition: 80 Xclstat*nodeMap.borderWidth: 0 Xclstat*nodeMap*topAttachment: ATTACH_POSITION Xclstat*nodeMap*bottomAttachment: ATTACH_POSITION Xclstat*nodeMap*leftAttachment: ATTACH_POSITION Xclstat*nodeMap*rightAttachment: ATTACH_POSITION Xclstat*nodeMap*alignment: ALIGNMENT_END Xclstat*bottomControl.topAttachment: ATTACH_POSITION Xclstat*bottomControl.topPosition: 81 Xclstat*bottomControl.borderWidth: 0 Xclstat*quitButton.rightAttachment: ATTACH_POSITION Xclstat*quitButton.rightPosition: 20 Xclstat*quitButton.labelString: QUIT Xclstat*dateLabel.leftAttachment: ATTACH_POSITION Xclstat*dateLabel.rightAttachment: ATTACH_POSITION Xclstat*dateLabel.leftPosition: 21 Xclstat*dateLabel.rightPosition: 80 Xclstat*helpButton.leftAttachment: ATTACH_POSITION Xclstat*helpButton.leftPosition: 81 Xclstat*helpButton.labelString: HELP Xclstat*nodeScroll.bottomAttachment: ATTACH_POSITION Xclstat*nodeScroll.bottomPosition: 80 Xclstat*nodeText.rows: 10 Xclstat*nodeText.columns: 40 Xclstat*nodeText.borderWidth: 0 Xclstat*nodeQuit.topAttachment: ATTACH_POSITION Xclstat*nodeQuit.leftAttachment: ATTACH_POSITION Xclstat*nodeQuit.topPosition: 81 Xclstat*nodeQuit.leftPosition: 81 Xclstat*nodeQuit.labelString: DISMISS Xclstat*helpScroll.bottomAttachment: ATTACH_POSITION Xclstat*helpScroll.bottomPosition: 80 Xclstat*helpText.rows: 25 Xclstat*helpText.columns: 80 Xclstat*helpText.borderWidth: 0 Xclstat*helpQuit.topAttachment: ATTACH_POSITION Xclstat*helpQuit.leftAttachment: ATTACH_POSITION Xclstat*helpQuit.topPosition: 81 Xclstat*helpQuit.leftPosition: 81 Xclstat*helpQuit.labelString: DISMISS /43haes ko?םa՝a֝a&?bm./usr/es/sbin/cluster/etc/rc.initat/Xcl#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/usr/sbin/cluster/utilities/rc.init.sh 1.31 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2004,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/usr/sbin/cluster/utilities/rc.init.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM ############################################################################### # # rc.init - Called from inittab at (AIX) boot time. # This utility starts the automatic release of ROHA resources of PowerHA # SystemMirror then starts the agents for PowerHA SystemMirror. # # Arguments: -u : Called during PowerHA migration or upgrade # none: Called from inittab # Usage: none - called by inittab # ############################################################################### ############################################################################### # # Main entry point # ############################################################################### # Including Availability metrics library file . /usr/es/lib/ksh93/availability/cl_amlib [[ "$VERBOSE_LOGGING" == "high" ]] && set -x PATH="$(/usr/es/sbin/cluster/utilities/cl_get_path all)" export PATH PROGNAME=${0##*/} NODENAME="" typeset update_flag="false" # set update_flag="true" if rc.init is called during PowerHA Migration or upgrade if (( $# != 0 ));then if [[ "$1" == "-u" ]];then update_flag="true" else cl_echo 9654 "Usage: $PROGNAME" $PROGNAME >&2 exit 1 fi fi # # Cluster services should only be run in the global WPAR. uname -W and # wparquery -w will return 0 if this script is running in the global WPAR. # Note that wparquery is deprecated and uname -W is the preferred command # to use, however since not all versions of uname support the -W parameter, # we use wparquery as a fallback. # # Note, we treat failures of these commands as indicating a lack of WPAR support # which essentially means we are executing in the "global WPAR". if wpar_index=$(/usr/bin/uname -W 2> /dev/null) ; then if [[ "$wpar_index" != "0" ]] ; then exit 0 fi else if [[ -x /usr/lib/wpars/wparquery ]] ; then if wpar_index=$(/usr/lib/wpars/wparquery -w 2> /dev/null) ; then if [[ "$wpar_index" != "0" ]] ; then exit 0 fi fi fi fi # set the environment to access the correct odm and libraries ODMDIR=/etc/es/objrepos export ODMDIR unset LIBPATH NODE_HALT_CONTROL_FILE="/usr/es/sbin/cluster/etc/ha_nodehalt.lock" WPAR_MAPPING_DIR="/var/hacmp/adm/wpar" OP_SEP=$(cl_get_path -S) HA_LOG_DIR=$(clodmget -q"name=hacmp.out" -n -f value HACMPlogs) HA_LOG=$HA_LOG_DIR/hacmp.out IPV6_BOOT_INTERFACES="" # Availability metrics tracks the shutdown/reboot process which "ends" # at (AIX) boot time when rc.init script execution begins. amlog_trace $AM_AIX_DOWN_END "AIX down end" ALL_PARAMS="none" #################################################################### # Log Start-Up #################################################################### cl_echo 220 "Starting execution of $PROGNAME\nwith parameters: ${ALL_PARAMS}\n\n" $PROGNAME "${ALL_PARAMS}" ############################################################################### # rc.init is called from inittab or during powerHA update, but just in case, make sure we have no # extra params ############################################################################### if (( $# > 1 )) then cl_echo 9654 "Usage: $PROGNAME" $PROGNAME >&2 exit 1 fi #################################################################################### # Invoke a script that clears PVID of all target disks defined in consistency groups # which are configured for backup. #################################################################################### if [[ -n $(clodmget -q "name=BACKUP_ENABLED" -f value HACMPresource) ]]; then cl_cbm_clear_pvids 2>/dev/null fi #################################################################### # If this node is a server, take some additional actions #################################################################### lslpp -L cluster.es.server.rte >/dev/null 2>&1 if (( $? == 0 )) then ########################################################## # Register PowerHA script for AIX Live Kernel Update (LKU) ########################################################## Util_DIR=/usr/es/sbin/cluster/utilities RegScript_CMD=/usr/sbin/lvupdateRegScript ############################################################################## # Register the PowerHA script for LKU LVUP_COMPLETE event ############################################################################## if [[ -x $RegScript_CMD ]]; then typeset -i V R M F lslpp -lcq "bos.rte.commands" | head -1 | cut -f3 -d':' | IFS=. read V R M F # This is only supported with AIX version 7.2.2 and above if (( $V > 7 )) || (( $V == 7 && (( $R > 2 || (( $R == 2 && $M >= 2 )) )) )); then if ! $RegScript_CMD -l | grep -qw PowerHA_SURR_COMPLETE; then $RegScript_CMD -a -n PowerHA_SURR_COMPLETE -P LVUP_COMPLETE -p 1 -d surr \ -s "${Util_DIR}/cl_lvupdate -P LVUP_COMPLETE -d surr" >/dev/null 2>&1 if (( $? != 0 )); then # Log the error and continue cl_echo 10711 "$PROGNAME: Failed to register script for AIX Live Update (PowerHA_SURR_COMPLETE).\n" $PROGNAME else cl_echo 10712 "$PROGNAME: Registering script for AIX Live Update (PowerHA_SURR_COMPLETE) is successful.\n" $PROGNAME fi fi fi fi # don't call clmanageroha as we might be in unmanage where resources are still being used by the application if [[ "$update_flag" == "false" ]]; then #################################################################### # Launch the automatic release of any ROHA resources #################################################################### print "[ROHALOG:$$] Automatic Release of Resource: Start" >>${HA_LOG} 2>&1 VERBOSE_LOGGING="high" clmanageroha -o release -s -t >> ${HA_LOG} 2>&1 3>&2 print "[ROHALOG:$$] Automatic Release of Resource: End" >>${HA_LOG} 2>&1 #################################################################### # Remove the cthags exit file #################################################################### print "$PROGNAME: Removed /usr/es/sbin/cluster/.cthags.exit file.\n" >>${HA_LOG} 2>&1 rm -f /usr/es/sbin/cluster/.cthags.exit fi ######################################################################################################### # REL_APPS contains application names for which resources need to be released for ROHA async release. # There is a scenario where REL_APPS is not cleared and no async release instance in place, # Due to this subsequent acquire process will get delayed as it thinks that async process is still going on. # This ODM need to be cleared to avoid delay in acquire during node start ########################################################################################################## ps -eo 'args' | grep -vw grep |grep -qw "clasyncroha" if (($? != 0)) then # No need to reset cluster handle as HACMPdynresop is node level ODM print -- "HACMPdynresop:\\nvalue=\"\"" | ODMDIR=/etc/es/objrepos odmchange -o HACMPdynresop -q "key=REL_APPS" fi #################################################################### # Check to see if our agents are already active #################################################################### clcheck_server clcomd CLCOMD_ACTIVE=$? # Note that we do NOT use clcheck_server here for checking clstrmgr # since we do not want any of the retries that clcheck_server does ps -eo "%c"|grep -qx clstrmgr CLSTRMGR_INACTIVE=$? if [[ $CLCOMD_ACTIVE == 0 || $CLSTRMGR_INACTIVE == 1 ]] then #################################################################### # Check to see if srcmstr is running; if so, we try to use it; # otherwise, we exit with error #################################################################### typeset -i i=3 # check for srcmstr 3 times while (( $i != 0 )) do src_running=$(ps -e | awk '$NF == "srcmstr" { print $1; exit }') [[ -n "$src_running" ]] && break (( i-- )) # decrement count done if (( i == 0 )) then cl_echo 234 "$PROGNAME: srcmstr is not running.\n" $PROGNAME exit 1 fi #################################################################### # If srcmstr is running, ensure that it is active before issuing the # startsrc commands #################################################################### if [[ -n "$src_running" ]] then cl_echo 235 "Checking for srcmstr active..." i=10 # try ten times to contact it while (( $i != 0 )) do lssrc -s inetd >/dev/null 2>&1 && break # break out on success sleep 1 # otherwise wait a second and try again echo ".\c" (( i-- )) # decrement count done if (( i == 0 )) then cl_echo 236 "ERROR: srcmstr is not accepting connections\n" exit 1 fi cl_echo 237 "complete.\n" fi #################################################################### # See if syslogd already running. If not, start it #################################################################### ps -e | grep -s syslog if (( $? != 0 )) then typeset syslog_type=$(clodmget -n -q "subsysname = 'syslogd'" -f path SRCsubsys) if [[ ${syslog_type} == "/usr/sbin/rsyslogd" ]] then cl_echo 10737 "Starting rsyslogd" startsrc -s syslogd else cl_echo 221 "Starting syslogd" startsrc -s syslogd fi fi #################################################################### # Start snmpd #################################################################### startsrc -s snmpd 2>/dev/null #################################################################### # Update clcomd with the timers from HACMPtimersvc odm. #################################################################### clupdatetimers 0 2>/dev/null ################################################################# # Remove the resource group --> wpar name mappings ################################################################# rm -rf $WPAR_MAPPING_DIR/* ################################################################# # Make sure that the special (hidden) directories for WPAR exist # These directories are namefs-mounted inside the WPAR to ensure # that the PowerHA binaries do not show up inside the WPAR. # (Note: A WPAR can be configured such that it shares a # read-only copy of the Global enviroment's /usr /etc filesystems ################################################################# mkdir -p ${WPAR_MAPPING_DIR}/.usr_es ${WPAR_MAPPING_DIR}/.etc_es ################################################################# # Remove the file created if the clstrmgr is stopped intentionally. # The path is defined in (and must match) clstrmgr.h ################################################################# rm -f /var/hacmp/log/clstrmgrES_stopdaemon ################################################################# # Create the lock file that inhibits node halt before HA startup ################################################################# touch $NODE_HALT_CONTROL_FILE ################################################################# # Start the cluster manager daemon only if the lock file got # created. Otherwise failure to start daemon might halt the node ################################################################# if (( $? == 0 )) then startsrc -s clstrmgrES 2>/dev/null fi fi # one or more agents inactive # # If this node is part of any IPv6 network, retain IPv6 addresses # if they are configured from router. # NODENAME=$(clodmget -f nodename -n HACMPcluster) # # If we have only IPv6 address configured on any interface, # the particular interface will be in defined state once # the node reboots. So we have to run 'autoconf6 -i ' # for all interfaces whose state is defined. # Here we are considering the interfaces which has IPv6 address # configured on this node and the same has been configured as boot # label in cluster. # IPV6_BOOT_INTERFACES=$(cllsif -S -J "$OP_SEP" | grep "${OP_SEP}$NODENAME${OP_SEP}" | grep "${OP_SEP}boot${OP_SEP}" | grep AF_INET6 | cut -d"$OP_SEP" -f9) [[ -n "$IPV6_BOOT_INTERFACES" ]] && { for INTERFACE in $IPV6_BOOT_INTERFACES do autoconf6 -i $INTERFACE done startsrc -s ndpd-host # Give it some time to finish sleep 60 } # Now configue any persistent IPs cl_configure_persistent_address config_all -d >>$HA_LOG 2>&1 # # if there are any core files, try to grab them # core_list=$(ls /core* 2>/dev/null) if (( $? == 0 )) then for name in $core_list do # Only grab it if created by clstrmgr if what $name | grep -q hacmp.pe then base=$(basename ${name}) mv $name /var/hacmp/log/clstrmgr.$base & fi done fi # # retain only the last 3 clstrmgr core files # saved_cores=$(ls -1 /var/hacmp/log/clstrmgr.core* 2>/dev/null | wc -l) if (( saved_cores > 3 )) then (( number_cores = ( $saved_cores - 3 ) )) core_list=$(ls -rt1 /var/hacmp/log/clstrmgr.core* 2>/dev/null | head -${number_cores}) for name in $core_list do rm -f $name done fi # # Start the clxd daemon # lslpp -L cluster.es.genxd.cmds > /dev/null 2>&1 if (( $? == 0 )) then startsrc -s clxd 2>/dev/null fi # # If SAN communication has been restricted during an incomplete LPM, # enable them # # TMP_IFRESTRICT_FILE="/var/hacmp/ifrestrict" CAA_IFRESTRICT_FILE="/etc/cluster/ifrestrict" if [[ -s $TMP_IFRESTRICT_FILE ]] then mv $TMP_IFRESTRICT_FILE $CAA_IFRESTRICT_FILE fi fi #################################################################### # Log end of start-up #################################################################### cl_echo 32 "Completed execution of $PPROGNAME\nwith parameters: ${ALL_PARAMS}.\nExit status = 0\n\n" $PPROGNAME "${ALL_PARAMS}" exit 0 # The kS o$7םaX՝a֝a&7bm./usr/es/sbin/cluster/etc/clstat_cldump.helpmp/$$ Troubleshooting the SNMP-based status commands (clstat, cldump, cldisp) This troubleshooting procedure addresses all of the common problems (and some uncommon ones) that can cause the PowerHA SNMP-based status commands to fail. The procedure starts by looking at two known problems. Most of the time, fixing these problems will solve the issue and you will not need to go through the entire procedure. However, even if the first two items are correct, there may be other things that are still interfering with the SNMP-based status commands. The rest of the procedure goes through the entire configuration for the SNMP-based status commands in step by step fashion, making sure that everything is correct. 1. Check for access permission to the PowerHA portion of the SNMP Management Information Base (MIB) in the SNMP configuration file. Find the defaultView entries in the /etc/snmpdv3.conf file: # grep defaultView /etc/snmpdv3.conf #VACM_VIEW defaultView internet - included - VACM_VIEW defaultView 1.3.6.1.4.1.2.2.1.1.1.0 - included - VACM_VIEW defaultView 1.3.6.1.4.1.2.6.191.1.6 - included - VACM_VIEW defaultView snmpModules - excluded - VACM_VIEW defaultView 1.3.6.1.6.3.1.1.4 - included - VACM_VIEW defaultView 1.3.6.1.6.3.1.1.5 - included - VACM_VIEW defaultView 1.3.6.1.4.1.2.6.191 - excluded - VACM_ACCESS group1 - - noAuthNoPriv SNMPv1 defaultView - defaultView - VACM_ACCESS director_group - - noAuthNoPriv SNMPv2c defaultView - defaultView - Beginning in AIX 6.1, as a security precaution, the snmpdv3.conf file is shipped with the internet access commented out. The example shows the unmodified configuration file: the internet descriptor is commented out, which means that there is no access to most of the MIB, including the PowerHA information. (Other included entries provide access to other limited parts of the MIB.) By default in AIX 6.1 and later, the PowerHA SNMP-based status commands will not work, unless you edit the snmpdv3.conf file. There are two ways to provide access to the PowerHA MIB: - Uncomment the internet line in snmpdv3.conf. This will provide access to the entire MIB: VACM_VIEW defaultView internet - included - - If you do not want to provide access to the entire MIB, you can just provide access to the PowerHA part of the MIB. Add a line to snmpdv3.conf which only provides access to the PowerHA MIB: VACM_VIEW defaultView risc6000clsmuxpd - included - After editing the SNMP configuration file, you must stop and restart snmpd, and then refresh the cluster manager: stopsrc -s snmpd startsrc -s snmpd refresh -s clstrmgrES Retry the SNMP-based status commands. If they work now, you are done. 2. If you are using PowerHA 7.1.2 or later, check for the correct IPv6 entries in the configuration files for clinfoES and snmpd. In 7.1.2, an entry is added to the /usr/es/sbin/cluster/etc/clhosts file to support IPv6. However, the required corresponding entry was not added to the /etc/snmpdv3.conf file. This causes intermittent problems with clstat. There are two ways to address this problem: - If you do not plan on using IPv6, you can simply comment the line in the /usr/es/sbin/cluster/etc/clhosts file: and restart clinfoES: # ::1 # PowerHA SystemMirror and restart clinfoES: stopsrc -s clinfoES startsrc -s clinfoES Retry the SNMP-based status commands. If they work now, you are done. - If you are planning on using IPv6, or might be using it in the future, add the following line to the /snmpdv3.conf file: COMMUNITY public public noAuthNoPriv :: 0 - If you are using a different community (other than public) substitute that community name for the word public. After editing the SNMP configuration file, you must stop and restart snmpd, and then refresh the cluster manager: stopsrc -s snmpd startsrc -s snmpd refresh -s clstrmgrES Retry the SNMP-based status commands. If they work now, you are done. If you still have problems with the SNMP-based status commands, continue with the following steps. 3. Is snmpd running? lssrc -s snmpd If not, start it: startsrc -s snmpd 4. Are cluster services running? lssrc -ls clstrmgrES | grep state (looking for a state of ST_STABLE) If not, none of the SNMP status commands will work. You need to start cluster services. 5. If using clstat: Is the /usr/es/sbin/cluster/etc/clhosts file correct? The clhosts file should contain a list of IP labels/addresses of any PowerHA nodes with which the clinfoES daemon may communicate. Persistent addresses are a good choice. If the file contains addresses that do not belong to a cluster node, this will cause problems. If you edit the file on a system, you must restart clinfoES on that system. - If this is a cluster node: By default, the clhosts file is pre-populated with the localhost address. You may want to add entries for all the nodes in the cluster, so that clstat will work as long as cluster services are running on any node. ? Starting in PowerHA 7.1.2, an entry for the IPv6 loopback address is added to the default clhosts file. As described in step 2, you can either comment this line or add a line for the IPv6 loopback address to the SNMP configuration file. - If this is a client system: By default the clhosts file is empty. You must add addresses for the cluster nodes. 6. If using clstat: Is clinfoES running? lssrc -s clinfoES If not, start it: startsrc -s clinfoES You may also want to have clinfoES be started every time you start cluster services. 7. Is snmpd listening at the smux port and is the cluster manager connected? Use the following netstat command to list active sockets using the smux port: # netstat -Aa | grep smux f1000e0002988bb8 tcp 0 *.smux *.* LISTEN f1000e00029d8bb8 tcp4 0 0 loopback.smux loopback.32776 ESTABLISHED f1000e00029d4bb8 tcp4 0 0 loopback.32776 loopback.smux ESTABLISHED f1000e000323fbb8 tcp4 0 0 loopback.smux loopback.34266 ESTABLISHED f1000e0001b86bb8 tcp4 0 0 loopback.34266 loopback.smux ESTABLISHED If you do not see a socket in the LISTEN state, stop and start snmpd: stopsrc -s snmpd startsrc -s snmpd Once you have a smux socket in the LISTEN state, you should look for a socket pair in the ESTABLISHED state with one of the sockets owned by the cluster manager. The rmsock command can be used to find which process owns the sockets. If you just restarted the snmpd, ensure that there is a LISTEN socket at the smux port. If you do not see any smux socket in the ESTABLISHED state, you can either refresh the cluster manager (refresh -s clstrmgrES), or you can wait for a couple of minutes, and then retry the netstat -Aa command. The cluster manager tries to connect to the snmpd when services are started and periodically every few minutes after starting. The refresh command causes the cluster manager to retry immediately. Do not use stopsrc and startsrc on the cluster manager. Use rmsock to find the owners of the smux sockets in the ESTABLISHED state. Use the first field in the netstat output, which is the memory address of the socket, as an argument to rmsock. For example: # rmsock f1000e00029d4bb8 tcpcb The socket 0xf1000e00029d4808 is being held by proccess 4063356 (muxatmd). # rmsock f1000e0001b86bb8 tcpcb The socket 0xf1000e0001b86808 is being held by proccess 18546850 (clstrmgr). In this example, there are two ESTABLISHED socket pairs. One between snmpd and muxatmd and one between snmpd and the cluster manager. 8. Try the SNMP status commands again. If they work, you are done. 9. If the SNMP status commands are still not working. You need to check the SNMP configuration file. First determine which version of the snmpd is running. There are two versions which have different configuration files: snmpdv1 uses /etc/snmpd.conf and snmpdv3 uses /etc/snmpdv3.conf. Use the following command to find which version is being used. # ls -l /usr/sbin/snmpd lrwxrwxrwx 1 root system 9 May 14 22:19 /usr/sbin/snmpd -> snmpdv3ne In the rest of these instructions, we assume the snmpdv3 daemon, which is most common. For information regarding the syntax of the /etc/snmpd.conf file, search for /etc/snmpd.conf in the AIX information center.i Next, please check the configuration of the snmpdv3.conf file. First check the authentication, then check access control (authorization). clinfoES, cldump and cldisp use community based authentication. They will use the first community listed in the configuration file. It is possible for you to specify the community to clinfoES. This is rare. To check for this: odmget SRCsubsys | grep -p clinfo You are looking for the value of the cmdargs field. If the field is empty, clinfoES will use the first COMMUNITY entry in the configuration file. If the field is set to "-c community_name", clinfoES will use community_name. If you want to change the community used by clinfoES, use the chssys command. After making a change, you need to restart clinfoES. 10. Find the first SNMP community in the snmpdv3.conf file. # grep -i comm /etc/snmpdv3.conf | grep -v ^# COMMUNITY powerha powerha noAuthNoPriv 0.0.0.0 0.0.0.0 - COMMUNITY test test noAuthNoPriv 0.0.0.0 0.0.0.0 - In this example, the first community is powerha. If there are no uncommented community entries, you will need to add one. You can use these entries as a template. You can use any text string as the community name, although public is probably not a good choice because it is so well known. The community name needs to be the second and third fields in the line. You will need to restart snmpd after editing the file, but wait until the rest of the file is checked in case there are other changes. The snmpdv3 daemon uses VACM (view-based access control management) for access control. Please find the VACM_GROUP, the VACM_ACCESS and the VACM_VIEW entries associated with the community being used. 11. Find the group associated with the first community. Search in the configuration file for the community name. For example: # grep powerha /etc/snmpdv3.conf VACM_GROUP group1 SNMPv1 powerha - TARGET_PARAMETERS trapparms1 SNMPv1 SNMPv1 powerha noAuthNoPriv - COMMUNITY powerha powerha noAuthNoPriv 0.0.0.0 0.0.0.0 - VACM_GROUP director_group SNMPv2c powerha - In this example the VACM_GROUP is group1. The VACM_GROUP entry for the director_group can be ignored, which is used by IBM Systems Director. 12. Find the view associated with this group by searching for the group you just identified. The view is listed in a VACM_ACCESS entry. # grep group1 /etc/snmpdv3.conf VACM_GROUP group1 SNMPv1 powerha - VACM_ACCESS group1 - - noAuthNoPriv SNMPv1 defaultView - defaultView - The syntax of a VACM_ACCESS entry is: VACM_ACCESS groupName contextPrefix contextMatch securityLevel securityModel readView writeView notifyView storageType You are looking for the name of the view for readView access. In this example: defaultView is used for readView and notifyView access for group group1. No access is provided for writeView and storageType. 13. Find the VACM_VIEW entries associated with this community by searching for the view you just identified: # grep defaultView /etc/snmpdv3.conf #VACM_VIEW defaultView internet - included - VACM_VIEW defaultView 1.3.6.1.4.1.2.2.1.1.1.0 - included - VACM_VIEW defaultView 1.3.6.1.4.1.2.6.191.1.6 - included - VACM_VIEW defaultView snmpModules - excluded - VACM_VIEW defaultView 1.3.6.1.6.3.1.1.4 - included - VACM_VIEW defaultView 1.3.6.1.6.3.1.1.5 - included - VACM_VIEW defaultView 1.3.6.1.4.1.2.6.191 - excluded - VACM_ACCESS group1 - - noAuthNoPriv SNMPv1 defaultView - defaultView - VACM_ACCESS director_group - - noAuthNoPriv SNMPv2c defaultView - defaultView - You are looking for a VACM_VIEW entry which gives access to the PowerHA MIB. Locations in the MIB are identified either by a string of numbers (object identifier (OID)) or by a name (object descriptor). For example, the first entry shown here uses the object descriptor internet. That corresponds to the OID 1.3.6.1. If this line were uncommented, then that would allow access to the entire MIB: 1.3.6.1 and everything that starts with 1.3.6.1, which is effectively the entire SNMP MIB. However, in this example, the internet descriptor is commented out, which means that there is no access at that level. Beginning in AIX 6.1, as a security precaution, the snmpdv3.conf file is shipped with the internet access commented out. This means that by default in AIX 6.1 and later, the PowerHA SNMP-based status commands will not work, unless you edit the snmpdv3.conf file. You also need to make sure the relevant VACM_VIEW entry has the word included in the second to last field and not excluded. There are two ways to provide access to the PowerHA MIB: - Uncomment the internet line in snmpdv3.conf. This will provide access to the entire MIB. However, many IT departments will object to that. - Add a line which only provides access to the PowerHA MIB. The PowerHA MIB can be identified by object descriptor (risc6000clsumxpd) or by the OID (1.3.6.1.4.1.2.3.1.2.1.5). An example is shown in the next step. 14. Edit the snmpdv3.conf file to ensure that the PowerHA MIB is accessible for the first community. You need to make sure that the first COMMUNITY entry in the file maps to a VACM_GROUP entry that maps to a VACM_ACCESS entry that maps to a VACM_VIEW that includes the PowerHA MIB. In this example, the only change needed is to add a VACM_VIEW entry for the risc6000clsmuxpd object descriptor: VACM_VIEW defaultView risc6000clsmuxpd - included - 15. If you edited the snnmpdv3.conf file, restart snmpd. Note that you must use stopsrc and startsrc, not refresh for the snmpd. stopsrc -s snmpd startsrc -s snmpd 16. Repeat step 7 to ensure the cluster manager is connected to the snmpd. 17. Retry the PowerHA SNMP status commands. st kE oA םa םa֝a&bm./usr/es/sbin/cluster/wordingstAA k^ oA םa םa֝a&bm./usr/es/sbin/cluster/wordings/enldump.AA kꨎ oA םa םa֝a&bm./usr/es/sbin/cluster/wordings/jaldump.AA kj &o$ םa֝a֝a& bm./usr/es/sbin/cluster/wordings/en/cl_ccv_en_wordings.json$${ "CCV":{ "similar_data":"Similarities between clusters.", "different_data":"Differences between clusters.", "c1":"First cluster information", "c2":"Second cluster information", "cluster_info":"Cluster information", "cluster_name":"Cluster name", "cluster_type":"Cluster type", "nodes":"List of nodes in a cluster", "network_info":"Network information", "ifix_info":"Ifix information", "resource_group_info":"Resource group information", "version_info":"Fileset version information", "pha_filesets":"PowerHA SystemMirror filesets information", "caa_filesets":"CAA filesets information", "rsct_filesets":"RSCT filesets information", "glvm_filesets":"GLVM filesets information", "application_info":"Number of applications configured", "filesystem_info":"Number of file systems configured", "volume_group_info":"Number of volume groups configured", "service_label_info":"Number of service labels configured", "rg_dependency_info":"Resource group dependency information", "bp_data":"Backup Profile information", "gui_data":"GUI configuration of server, agent and log", "cluster_id":"Cluster id", "snapshot_section_VER":"Cluster version information", "snapshot_section_DSC":"Snapshot description", "snapshot_section_ODM":"Cluster configuration information", "snapshot_section_ETC_ENV":"Content of /etc/environment file", "snapshot_section_LSCLUSTER_C":"Output from 'lscluster -c' command", "snapshot_section_LSCLUSTER_D":"Output from 'lscluster -d' command", "snapshot_section_LSCLUSTER_I":"Output from 'lscluster -i' command", "snapshot_section_CLCTRL_TUNE":"Output from 'clctrl -tune -a' command", "snapshot_section_CLUSTER_LSLPP":"PowerHA fileset version information", "snapshot_section_GLVM_LSLPP":"GLVM fileset version information", "snapshot_section_CLUSTER_CTVERSION":"Output from 'ctversion' command", "snapshot_section_CLUSTER_EMGR":"Cluster ifix information", "snapshot_section_CLUSTER_RPM":"Cluster RPM information", "snapshot_section_TOTAL_COUNT_LSLPP":"Total number of filesets installed", "snapshot_section_cloud_backup_configuration.xml":"Content of the cloud_backup_configuration.xml file", "snapshot_section_AGENT_configuration-agent.json":"Content of the SMUI agent configuration-agent.json file", "snapshot_section_SERVER_configuration-server.json":"Content of the SMUI server configuration-server.json file", "snapshot_section_AGENT_log-configuration.json":"Content of the SMUI agent log-configuration.json file", "snapshot_section_SERVER_log-configuration.json":"Content of the SMUI server log-configuration.json file", "snapshot_section_netmon.cf":"Content of the netmon.cf file", "num_of_filesets":"Total number of filesets installed in a cluster", "caa_tunable_info":"Cluster tunables information" } } s/powe k6~ &o$ םa֝a֝a& bm./usr/es/sbin/cluster/wordings/ja/cl_ccv_ja_wordings.json$${ "CCV":{ "similar_data":"クラスター間の類似性。", "different_data":"クラスター間の差分。", "c1":"1 つ目のクラスターの情報", "c2":"2 つ目のクラスターの情報", "cluster_info":"クラスター情報", "cluster_name":"クラスター名", "cluster_type":"クラスター・タイプ", "nodes":"クラスター内のノードのリスト", "network_info":"ネットワーク情報", "ifix_info":"Ifix 情報", "resource_group_info":"リソース・グループ情報", "version_info":"ファイルセット・バージョン情報", "pha_filesets":"PowerHA SystemMirror ファイルセット情報", "caa_filesets":"CAA ファイルセット情報", "rsct_filesets":"RSCT ファイルセット情報", "glvm_filesets":"GLVM ファイルセット情報", "application_info":"構成済みのアプリケーションの数", "filesystem_info":"構成済みのファイルシステムの数", "volume_group_info":"構成済みのボリューム・グループの数", "service_label_info":"構成済みのサービス・ラベルの数", "rg_dependency_info":"リソース・グループの従属情報", "bp_data":"バックアップ・プロファイル情報", "gui_data":"サーバー、エージェント、およびログの GUI 構成", "cluster_id":"クラスター ID", "snapshot_section_VER":"クラスター・バージョン情報", "snapshot_section_DSC":"スナップショットの説明", "snapshot_section_ODM":"クラスター構成情報", "snapshot_section_ETC_ENV":"/etc/environment ファイルの内容", "snapshot_section_LSCLUSTER_C":"「lscluster -c」コマンドの出力", "snapshot_section_LSCLUSTER_D":"「lscluster -d」コマンドの出力", "snapshot_section_LSCLUSTER_I":"「lscluster -i」コマンドの出力", "snapshot_section_CLCTRL_TUNE":"「clctrl -tune -a」コマンドの出力", "snapshot_section_CLUSTER_LSLPP":"PowerHA ファイル・セット・バージョン情報", "snapshot_section_GLVM_LSLPP":"GLVM ファイル・セット・バージョン情報", "snapshot_section_CLUSTER_CTVERSION":"「ctversion」コマンドの出力", "snapshot_section_CLUSTER_EMGR":"クラスター Ifix 情報", "snapshot_section_CLUSTER_RPM":"クラスター RPM 情報", "snapshot_section_TOTAL_COUNT_LSLPP":"インストールされているファイル・セットの総数", "snapshot_section_cloud_backup_configuration.xml":"cloud_backup_configuration.xml ファイルの内容", "snapshot_section_AGENT_configuration-agent.json":"SMUI エージェントの configuration-agent.json ファイルの内容", "snapshot_section_SERVER_configuration-server.json":"SMUI サーバーの configuration-server.json ファイルの内容", "snapshot_section_AGENT_log-configuration.json":"SMUI エージェントの log-configuration.json ファイルの内容", "snapshot_section_SERVER_log-configuration.json":"SMUI サーバーの log-configuration.json ファイルの内容", "snapshot_section_netmon.cf":"netmon.cf ファイルの内容", "num_of_filesets":"クラスターにインストールされているファイル・セットの総数", "caa_tunable_info":"クラスター調整値情報" } } _ lHM'o$* םa]֝a֝a&} bm./usr/swlag/en_US/PowerHA_SystemMirror_Standard_72_Notices.txt$$  -eiotTanrs ,AEINORScdfhlpu=CDFHLWbgmwy"./BGMPUYv()02Vk1:_jx #'*4KXq359;<>@J678QzZ%&?[]`+!{}$~=$Թ-BiQG%PgHv!9Ζ: sT8$E0@a"q"pC k5K~>ځ6ӧƔqj tqUsy>^pv?\)L$vBpH_b)|)ZxNkV׮CZ^%'NyN n}Ξ)^ޚJ{ի Q={҅8~j! pr?4=KyWځ=N=K'VwQ~>5Eq>뒽['_{ ]J|r=?onP<]zOl>' jNáx{RҜ}/őU'n}Zǹt^>?sB>5BDi}Zd0D=N߫W^ӧƾES]G9MZm:t+ )NCv=9E/Nwڵǟizr.'J~ڤ\miB/>)NJb\2B#6ӧƫ]zSރQa"h eG7˜F!:s߫W"ZQ4&յ{M;hkCIT>7WLSԧy!}PBQ!QrNo'kCIJ)Z=:SqӄVׯqM6`~pH_R1y2;_nkޓ=B=On1|~Cy>G4ͼJZ1ZA 5._!c?b_*[rWc:RFx+PQ'kCIT>7r @ @ @ @ @ @ @ @ @ @ @ @  @ @ @C|Hr# @ @ @ C}lB%o$6fffffffffffffffgdL  @MfffffffffffffffgfffffffffffffffK]  d;~)@IQ! JSP@ӄzFP`,Ɂ$ipP$XOtK6HJʝSmH G{ETcxqT(y>B~҅aU^΁ /w]\]|%o Rx/o wdNծ=oߛi׊]~>*Rܺ ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G333333333333333?x+|w3333333333333333S333333333333333?؅F2JDŽ?$(VB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_DәC}lB%oPGezA+|wR8+B 94&! !ormL - k7 Er[/OoI - oR,xFޤ*9"\<"< zf 9ETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -DyB~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*Rܺ]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b ?t]$P9Ev71ypP(\Ĺш1L=|ø 8E@`b&AaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqeqg4RKAg 1$4iCHaq8B=sAFސi\֌A("pP j)pxӌ o<ø_`YFGцWq' 9 hQ?% @_D-/[Gц8/xWe o@_AqJhq0ޒ8M#0z j@@ҟ^B)( }<`, @H$ ]BE`]=,X$i%|eNx}GlLd6B<`eT"BIETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Drfffffffffffffff4_GEiʙ-t7alH|H! t5jg7 9r[x0?Jޤ+YHTr 3 Eָ:xDx6!Q,A r ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLi[G)4LpOHٙ[x0?pG N#o[%p}Cx UZETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_6Ffffffffffffffff*fffffffffffffffgJDŽ 8Il - A8#Y^룃QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4fffffffffffffffgO%offfffffffffffff*fffffffffffffffgJDŽ?$(DpOHٙ[x0?pDA8 ]-0-(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b ]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b *Rܺ5g4P @ @(88YH ^)N @(ʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]G8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_9aЍBfffffffffffffffgfffffffffffffffK] BráCJH⌯QO& 8IlptdL xd.;-Px(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVBXt(JrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*RܺB~҅aU^΁ /wSx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9E Ag 1$4iCHaq8B=sAFސo05E.% @097@hQKƜ`Hxč0 5.=54NsCцQ iĠ{Q0KKA4a9#K"rGŢY}P<-93a$qGa5#z0xLqIsoImb&3333333333333333LB5^0@ӄzFPW 9mO(N0NAmdW]VquyETcxqT(y>B~҅aU^΁ /w` ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLin5d#3333333333333333S333333333333333?9aЍ@!$qFW-!CJH⌯QP@ӄzFSVrBxN(88Y'& (2Fh0LGI2Kdzk+ ;LVJlgz^֨P| CJS߫Wp -w=O\{7?6ӮC_]D0ޒ8M%@pEpc$ 4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[G3333333333333333x^fffffffffffffff*fffffffffffffffg?',:?$(|oJ 8IlptdL 8ݫ9F( ǐ^ L<"% - A8 ⱒ B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPS AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.ԥ>uqu𕼇O k@iKdz|q']]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b *Rܺ4(88YH \՜p#@c/C&dL H$/]Vqu1#ZtPe@7B (_V_s*0OVIЮv:$iVר6E]$P:t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b fffffffffffffffgfffffffffffffffK] #Ni3333333333333333Bqp o&@ ?(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVt@rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4fffffffffffffff4_O+LQ( #2D  iM=#ffffffffffffffff(N0NAmdW=ڳƸ\)PVt "QdTj9E#J\v=sƽu8{O#+վC[҈▭y}Ю@ҝ`}J}Yj+y=KǺց җgo0Nxr,|+]owdҿt_ծ={WRzV.\S]FW)qXv>,|)b_V]<`,WNǯqߊ^>=SVKk=W&~o25j"[bjRVacǃ'jq{OXw!ExƔB5a+b)z :?VIЮJlg|X[O rPy_7<0H h7 EQCFĠC 4Q#@2<<"*!6! Bxgr*fffffffffffffffgOC|*:@!$qFWdWQpOHٙ[x$ @ _p.[cQҀP#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKN)N_],WI:^GaieKyJlgzFxQP l~f4_O&_#Zj(#׸_R㰱:|h*45R(\%!\mOR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|Jt+ (җgo0Nxr,|+]owdҿʹ迫\zO>]\]|%o!Ը@ R㰱}'YSN]>x8Ym:/~+ǩ{x=OWW_ [u.)#PQ_16HxT9mBܼ{RVu.; <0H h7 EQCF h+@pHkPE.b\@(MI.<+1L=|č qEopY4Wj4h8Q0j]|,D0pӚJoWW_ [}sԽ|A(2FΞ0LGI:gkWI:=z$iye[9+ձqKVvǹR+ߏ@]Kq''BKd7i׊qWoMvT8blT6)Z)BبP^oq?)Kdzu*W~m_y>y r8ioj5RCv_k9*^8t+[);V/bFǃtp oZ'BsF8iN&~oZiN]FD]oVd޶.B ~mDLJ#x#H r@ '$B. ! dَ+ H   SVrY]x$G6Ӯ״>qOl>?@AH9MZի[~}B+[xVvZ״񮛞PƔV] rT>[#_ >Z_*'ʸ.G~+jI~ޚQj?s);V;iNP*V]{N/xQZ 1 x31`~P%qq<իk?V(>o=ǒs?s @>\\*KNqxv<G1č?~+ƒkޓz6մݷ)Pt'\U+ox9S333333333333333?x\Tk^R8+B+@?$(,ٵԨ 8Il5jg7 9r[x0?p0;(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.\mOWmr0o9V_Wr{o!zOw._ժQbBx.)Ǔ/;]P8%z՝ի~+kR<7#N|xVԸR{ޥ“MƾEԸR{x\4)zLIjժy>?` P%qC >m]'ب'OP@0?r9 ը3=Ky !vn_'"_S[9Enp`f9,>eD5zLu6oB~Ҝy?\xN(2Xn@]~FWbBW G\ qKVv>%*[q~o^ҟsNx0Nx#Omt_sղ xQ(2OA>+9usO#Qe}4}"}ݷwKu/]-8tzF<"ůJ|R{(BPvҝLM4vԥ=azWUBݶ\v@o9'deKVP3:OJ"_՝Ǻ46CPS "q_s9%5EK܅ >%=ĿK~Ax5j#Z+ b~Il^Y {3d">]`FWǍl>.>+9u}5R,.?VvQ[Ƙt=zB'׷!իTq_sZX9E=x7]~F3d"_*[ի,o_W=NqKVv>?!ܢ_ϫ;x/8l>.?VV*_՝Oǹuɕ#)8NW!oV; Zx8Y' 8},>eD5zO[!`>#K9u~*WV0NAmI~/!j325Zԥm/Eov+F\mOC=|)Ti~ޚo!dz{#{J}¿,v?/I1"^Cqؗ:1q#{Yr`yq#;{\L>rTQ_>9Cf dkKl6S!V; /gJo!$Y}՝ŋMf+]])5j+Rd=O - > ~owXvXw ⳗ_?w=N,>eD5zL?=N?ac>X})Ǔm:|rPYr~ޞAVZ, *~W -mOR{>_jc:x/oծ4dxI}sԽ|~*WV>4_&Xw!֨P|wbk.\ JԢ@ZkSY!Ea7/XUMעjӦ7>:=Oo;i״ȸE\/>.~4"CKz5j+}jV; ,%ku:|kǮO}[#]m?zkǯi_YMn'CW}'Qkao!JqWq < ?rq(z]z!o!goի;~dz d%zd}<|v.t  ao!Di_թ'viQ+B~ҟsc=PǍC; Y˯F~]Gmx{ mzPP?F,{;x~.'LCe:zKdz._Q__qU v}q\~PWO-%W|%z3▭|Kz`|@xIW D0>ԥ>_5[j+y=K(~,y T<);bZ/ l>.=<`~qm:|hE;YkRպSk~MЁ>0D]VvgBumz=Bgf;Zy~jc0N?y>*a; _՝;\v=_[K;i_9J"z۰m:VG`ur~+jiʖV~mQ;OoJ\UBݶ\v@z(+joMvTpciM@^mzaߊؕ.; . W[q>BPvҜy?WPmĿj=BIj>v,{;xN^oYñac/|yڔWrSdsiM@^a~\v@_bjRVv){x/ݻ ?6Ө`(WGI}ZN(v3ȸrpf ?[|uDi8v3Gm7m q>0>Ԯ{B{NP#ǩ{xW!ٍLCe=y!Ը,{;xf)jnĿ+CYMn*a; t{%z/ )Nó,)b/u.; ?V; T \kX^<jԽ||uJ{ծt;J%zi,Xv(Q@~ծP/v!Gd| ɬWN?ac܇bjT}x~dzK7 1#,1"R#Ġxr<;_ժ!Q,/t~ޚo _%z3{#zy}':s?!ǩ{x{NhK|xN<(гOi|,D0pӚ_qg4RKAa_iCF D1t+TXǯ]\RFo!j+1 v1f6!J\v=q_sY#]&W\{Nݴ%za 'q*n1|{/Rki@@~6޻o^6>׽&~zsJ~u胗d WիT=Cxޚo!D_Orz_|ժ4Y_^F>YRy>^p\ S[=J^9db2 ~'qU)=~+9uO,{;W!qʖ'ԸRz_p);rjS˗<|hOrGq {O t{¢_\xN~]{{f5j+; kzk):"Cy ZW@!E C]Wr.]V^ܺVtv"cQ>_S[,{;+?@)_Wc#kޓ)qPNy9ЃCrm}zLZׯ R㰱_Z/8l>.?VV*_y魙VY_=N΁ ur&1zu_Xc!N&_D_zLCnkޓ={ |{FC-q~W}ZWmOJrio!k|v>%gq>&Wñ|$>r=O=r~qU}oR&Y_)Zz=N.&Xw!tQW!}{p^_zlL#ơq[N?ac܇Oy_Waܚtw<):sw(ܿ^>׽&QF+/B+@G4HB8y0OjWI:;NݴSd?]ի%'BΥ9o+V+ Vw£zk%z3{#zի-3//-Re5_aV/qXvdz>4_sxTZXt(;7qGt^fJ}ΦxeEU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]J`r' oF 78h#<;aeFj]z jB~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*Rܺ8.!$qFWi6)GB';=U 8Il5jg7 9r[x0?Pǘ?, (2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.$6fffffffffffffffgpt9E - A8 8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQZt]$Q}Sv*o{9%ի'BǪqZLʋ#O~ի:x/o wdNծ=oߛi׊]~>5R)B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPqTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E4(88YH \՜p#@c/C&dL xd.;-Px)խH@$*n1?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_6FIQC}lB^Ӧ6!( #2D lTBPGezA#R 4􍙙pt9E - A8 vC OPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_04(88YH $.Zy5 (N0NAmd2 +9>?I5fP`,Ɂ$pⱒ 5g4QBqp o&@J4Q>Z_(z &Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EB~҅aU^΁ /wB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP4(88YH \)]z蹔2(Z (ʁo=j'AP*+Y!ET#?]o*Vqt]S1Ju16HxQmZ2Xt(_SjbIЮJlg|*; Oo_*[rWc;ײ7Z,S1x2R&_#P!EbghGiE=@.OJի'BzsP#{بG-~],WI:=V`ԧgTYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b B~҅aU^΁ /wB~҅aU^΁ /w8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.4(88YH R  c$txqajk!LdG֭o 2@<"%P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.B~҅aU^΁ /w4(88YH _'MfA|4 )nMQA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵt@ _SWKNrWc;QZ{x5R@Wc;ײ7Z,ٍ ▩2 /+RghGiE=@.O~],WI:_s1P#{بG-~],WI:=V`ԧg*߸V]\]|%o!ǩ{xի~O' u>qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E4(88YH NxjA8 OIETcxqT(y>B~҅aU^΁ /w4(88YH Ip|f/M5(747IETcxqT(y>B~҅aU^΁ /wB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h48t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.L<"(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B~҅aU^΁ /wbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4fffffffffffffffgO3333333333333333S333333333333333?؅F!( #2D  iM=#ffffffffffffffff(N0NAmdW=ڳƸ\)PVt "QdTj9E#J\v=sƽu8{O#+վC[҈▭y}Ю@ҝ`}J}Yj+y=KǺց җgo0Nxr,|+]owdҿt_ծ={WRzV.\S]FW)qXv>,|)b_V]<`,WNǯqߊ^>=SVKk=W&~o25j"[bjRVacǃ'jq{OXw!ExƔB5a+b)z :?VIЮJlg|X[O rPy_7<0H h7 EQCFĠC 4Q#@2<<"*!6! Bxgr*fffffffffffffffgOC}lB^4(88YH $ 1|$i/@}F (ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZ bIР/u)ի'B+ձ-=y~ޚo Q+ձm^AmƋqKT|@dz)Kdz_#״FCƗ_]GV+ /}˜T#?V+ 0}jSu3 dxI+V.Խ|@j?만[{m:zV*n1~m^+9u*ޚJ{r#~ۗd6ի'B) -Dr\1G 4W%Hш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057xzxN<(гOh9GC 44ohy)tP Dࡍ(R&4-y$i`Qt4apӚ_0֌5qZr(LjA Dq_18-/8%4KN@8iI -Dނ= Gц`ӏ KhzH h4?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_ԙC}lB^z( #2D!m& B$6fffffffffffffffgjoi\ s@'' 2`~ +^=ڳyF( ǐ^ L<"QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h44QBqp o&EOMe٭Pe@7}<`|)j/d:gkWI:w4(88YH \)]z蹔2(Z (ʁo=j'AP*+Y!ET#?]o*Vqt]S1Ju16HxQmZ2Xt(_SjbIЮJlg|*; Oo_*[rWc;ײ7Z,S1x2R&_#P!EbghGiE=@.OJի'BzsP#{بG-~],WI:=V`ԧgTYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b B~҅aU^΁ /wB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.B~҅aU^΁ /wSx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9E Ag 1$4iCHaq8B=sAFސo05E.% @097@hQKƜ`Hxč0 5.=54NsCцQ iĠ{Q0KKA4a9#K"rGŢY}P<-93a$qGa5#z0xLqIsoImb&3333333333333333d@LTk!QCJH⌯Qt 8IlptdL H$/]VquyETcxqT(y>B~҅aU^΁ /wxFTzxgr(ʁo=j'AP*+Y!ET#+<`~qt]S1Ju16Hx< WKNJrjbIЮJlgJGaieKyJlgzFxW[c;1O&_#Zj(#׸_R㰱:|h)5g4QBqp opLA8V+X+^PKJ| zp*%p o @.u "OtDbl;91ڄxNj[u !Py  %P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 4(88YH \՜p#@c/C&dL H$/]Vqu1#ZtPe@7B (_V_s*0OVIЮv:$iVר6E]$P:t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B~҅aU^΁ /w4(88YH \)]z蹔2(Z (ʁo=j'AP*+Y!ET#?]o*Vqt]S1Ju16HxQmZ2Xt(_SjbIЮJlg|*; Oo_*[rWc;ײ7Z,S1x2R&_#P!EbghGiE=@.OJի'BzsP#{بG-~],WI:=V`ԧgTYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b bFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4fffffffffffffff4_O+LB5^m@ 4􍙙3VsxNP`,Ɂ$'{g?X @$88YH \V2AwGZqּqHTpj c$ QA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵt@ _SWKNrWc;QZ{x5R@Wc;ײ7Z,ٍ ▩2 /+RghGiE=@.O~],WI:_s1P#{بG-~],WI:=V`ԧg*߸V]\]|%o!ǩ{xի~O' u>qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EUV&fffffffffffffff*fffffffffffffffg?',:?$(|oJ?$(VpOHٙ)W 9mOp0YP`,Ɂ$xjA9+AzP0tETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_VCxPFR8+BlB$6fffffffffffffffgdL sݫ9kŸu z5jOB AmFJR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|{\hW)qXv3맊W"wµWp0NAm+~mEZ׸zx/oj+y5dj җgoo>@"w˜(uj -ʹ迫\zO>]\]|%o!ԸCEblP#!Vr.څx!)^j\v=x9_{VWxgr\O7iOd#_!؆͢!2ǩPS #k+ VwŊNմ% ݧP#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1E.a⸔j'R&4-y(MNJ9DqNi0i} D`0а"_A%4ӌ`Q8#CExQ|$5ƜsMځ|1hY/NhkMH ).=#Q$Ԁ$@_ Ha}xb( 9?Aǚ\j(44j8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB~҅aU^΁ /wB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP4(88YH \V2AwGZqּqP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E5g4QBqp o&@ݫ9hy}B%P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b W 4􍙙88YH P-.QA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵ + :t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.>j?ac܄A1u, @>(iKdzz׷0Not rb_%zrWc:QRմݷ/بS )O;~]\]|%o!ǩ{xB =R㰱_f OEkV]<`,WNǯqߊ^>=SVKkѥ.; >>}\E1 Q?만[JߛiV;^=Kǹ}ZJCqMwYZ#OmFCP] rCJS[Ը,{;xr]#Qs #ȸ~o]ҟsFC #ECe=RaVGWI:^i!yJO+bFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDqޚ_V.`ѽ { V8]$WIlm:[]N>ʔ,M؅+P(_{7J+խV?'R<)qXvBݶ]][^_*[}Z+MgԮV&VD֚V)^ԨX}((WuD0H h7x)!frሠ 8Q1s,x%N 1E.` 4{LiA8Q0jE@`b&ApX`Ӎ_8#CExW o=E EiƥDHi' 9xy%Š0b-8Hhၨ {FҚ0} -Dނ1=@m>@zOP[>իNrWc;'jePbTcxrz}Ξ0NAm\|q]$Wsy>m)#Om+]~)˯|(<`,ԨDͨSVouX $Hd@  @$!<`,1tR  8$rj@+o^8u:>5n#]TPH  )\x}B78Qtp oOEkc6ӯS[߫\z>5s]Ҝ܋n^?5j՜dk'Ҝy?WKW?VvQpYW%~\p /]*>BG}Z'j}Gm)JիiE=O #WqAf<f4 ժ4_ծ<>ǕqxwG؅3PPwGv!QիQIbIЮ/zǀF5xP`ޞac{}S"=:ڶ2*V3능m*fffffffffffffffgOʙ-t7£PGez@EpH^\{6 4􍙙\,>5g4QBqp o&@f'zYETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_,ٵԨLTk&$6fffffffffffffffgdL  @b L-c(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E. i@+9us_jc:x/oC/˜({xu.; ?=JVJqT><1 pծ=LM4(0N7]~FWO' $z~ޓgVXN<_Zx8Y'>B~}ZN(0 `+9us]?VCs]rT=?ongoOt ]zS&_wB/R$q1~Jo;}?oIyWa1W+oye1pnF5]%P/p=K'Λ}Zp!ȹ!Di_S[|իT8}<~ZJE]}B+[ںOPN `r_Q_gcz+:C[NܿOEkc,0rc +9usX}˗69~k_ m;7><8V>4Q_d'@\9V)Z)N@W!ȸo!▭|K+oMvT޽>+ `tJ/FǕ3ǫd[^Q_dTur|Vr4+o^3뫐"_*[q_):xE^< Q|>:$iye:xoVr46* xirY_{ղZ/Zj'_ WU'\)]=zJիZnS'W<`,ߛi՝ʔvZVK +sn"=`}J{ի, |$(0l>. +9usO䖭Z,f tTW D;}ǏtiOlRaVDjrKZk}Zҗ rq|K{]~p/>jGm7mW*4/=ܒؽ/dgVEk`}Z D+kiEU v}q\|VrzkrY\~.08zՆ/9.Oo6CǓqϫWAW'QejT,=adqBPr ,{;xo9'dgVEk`oMvT+WY {?V; z'▭|~CE/oVv_qU v}q\~PT;}r+GSq>9C]?\v@Ǔtp oOqX}˗69~ks:B J}G>rT]<`,^Cf dj?ǩJo_#( W9y>@}/I1|>=˗/v$Y}?J}ZN{Sa5RCg{zF$Y}^c>Eֽ^/u+b$F%s_`v$F?VvB=)N<!},Vm:|r\իzٌm;,C>\v@_Ε-5RCHMx;}ǧ8W'ȺS>jW+F=J{% y<ի[~}C<'+ '@g.#Niz'X}˗69~k_K9u~+-{~dz:<}S):S't;_>4Y<m)^oqX9EAT[xN2< }Zǹt^>?+\xN/ӓ[,{;T(y>B~pgPb.Y_Y%jQ}-5ٍ})0r*P~&_p o^ӧƾ1 Q)Bl>.?, ^\R&_akT/őt}SqXvEd}SŔKuU'\r@~?~+m:|h*߹jP#ǩ{xTqm:|hNMn'CP9ñA\edPE怴f6E䦳Bn_Iʰ/!AELot|uJ{ծ>4<vi_sp.8>)Ef4_U}]riuE>jW>*>\v@Y_KT+Ŕts /u\F~u^ӧעN?ac܇՝ЮNB'BZ=x ~y>ov?VXvh[dsZ[Ŕq < ?$<Ҁxv2Wgk^;oAs~ޓkzkq_ᑌtA5d}QfܺBC߫Wwq8go;iNJkիx;Q\)=+=;iBSO^ӧƢW>{/Rki]\՝v@ⳗ_@EZe5Axq9E~)qXv;\O˜(u:gk]GVZX<#J[$KVJlgJ-[Mx=:*ޮ@}`}J}YñjVMg<)jz&"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE acu0ի:Wde]->NgoS;{ uw.  +PWd~ޚQǠӄ á+\v=yV<Pm.; "t]+œ]<`~]۰m:O҅S[NoVעiʖV~mQ;Oo~\UBݶ\v@z_~]\]|%o!]@Jkw=$ߴV׮acP=C~+j?%z`ur~@FǗ^0>ԥ;ǐVqU v}q\@ +Vu.,.|>8V*a; ~z xV),:O6Өu0:WO_~\pzwBoW Ex/f dj?>WGIZN"})ñ|$XvGZT,=adqc=Kdz_r(;jӄZ,0>ԥ e5R_v=~mQ맏P<)jq>4Q_gq>>O' 불pf)jnǹ"}`}]){x/KUZ?z>5F=SR+C/˜({xCqXv9Rմݷ W\sUBݶ\v@rKb_bjR;f4Y_SOo_s\v=~\v@VOy+Պǩ{x붔\xN(2<7Xv^^ӽ\kP%q~dzܺYFiNC]?\v@Wy>ϫWiY˯eT>_jc:x/oծ]>ZCP]XFqKT_Z'L:tqU'.'p}z6v+Jn6ӧ!D-Ԩ8go??9 nbG$Y_4bEiƥG@G4K/xwg(WT=lB+dX^B5R@JlgzFxOt ~CR+Ѧ@8hxQfYa0$48i椗<¿"ӄ1b ñW/K𨱏^m@CW1 bc^m>C”,{;o!jFL. F8iNJnPN_Tcx^C6ӧƁ(mv?m}zLOz/j,%V{܆55RC/d)?`T \hz|(p8}0]ĸ,tz;krreDObS{% yVr<Xw!_ׯñC.!Q/]-;OpoRI~,Rv+oNԧ/:x f"5ߊZ1IkWv@eKy=SuE*=\_#,,/qBڇUֻ0\=y!}SuP5E*?!Ƣ/}?ھ,Xw WgGrSVF6>׽'_S[.!Q(&1s?I1E/op^?^acyq_qU v}q\~PT.'[25>*@z5ժ M:c\,CK9LoRe5j^>׽'zAx=@[cVįN0 Ӧ6CŔ={ |K"}ǮL?c0I},zñxQckޓ/7Y˪Wy?C,{;/|zñޥ}LR zl]ONMn'C^C2ل)N<!]F=эCiNKe5~dz<:8'ù4鍷y?S[t ?QKǹ~}zL8.!$qFW)C R8+B iM=#ffffffffffffffff( ի6ӧƀ'' 2`~ +3kP#2 SX"\<"%P#qǭP9JՅWzk:(}q<`Jծ>8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQZt]$Q}Sv*o{9%ի'BǪqZLʋ#O~ի:x/o wdNծ=oߛi׊]~>5R)B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzPfffffffffffffffgfffffffffffffffK] |q0]hCJH⌯QlRNw${*PpOHٙjoi\ s@'' 2`~.0~2 YXKPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0B~҅aU^΁ /wSx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9E Ag 1$4iCHaq8B=sAFސo05E.% @097@hQKƜ`Hxč0 5.=54NsCцQ iĠ{Q0KKA4a9#K"rGŢY}P<-93a$qGa5#z0xLqIsoImb&3333333333333333gIJ:q9ʙ-t7u( #2D l iM=#ffffffffffffffff)W 9mOp0YP`,Ɂ$/8|%]X)ۀwրIETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_nʙ-t7*1pOHٙ5jg79E - AH ]bIY_(>x#J[p'' 2`~  @8E-"Mr.x!Q Eָ:xDJ[x0?p @V2AwGZqּqHTpj c$ QA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵt@ _SWKNrWc;QZ{x5R@Wc;ײ7Z,ٍ ▩2 /+RghGiE=@.O~],WI:_s1P#{بG-~],WI:=V`ԧg*߸V]\]|%o!ǩ{xի~O' u>qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E` (N0NAmdH.+B:׎?B ZALd:xDJ(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVBXt(JrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*RܺLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b ` ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLilJfffffffffffffff*fffffffffffffffg@[!$qFW94鍈CJH⌯Q}ͷn@ iM=#ffffffffffffffff( ի6ӧƀ'' 2`~ pҕ O:8F - A8&A s'& [x0?p @V2AwGZqּqP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLiNU]۴ʙ-t7*1~)@IQ! Ō$6fffffffffffffffgZYm:|hQBqp o&@d.;-Px(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVBXt(JrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*RܺqTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQZt]$Q}Sv*o{9%ի'BǪqZLʋ#O~ի:x/o wdNծ=oߛi׊]~>5R)?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_C}lB^ˬ稽@ iM=#ffffffffffffffff( ի6ӧƀ'' 2`~ *A xd.;-Px)խH@$*n1?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_m]g=E333333333333333?3333333333333333Zo-TbR8+Bu?$(^űANi3333333333333333@f\,>4(88YH ^+ ĭ T8^8 c$*8Fky1 (ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZ bIР/u)ի'B+ձ-=y~ޚo Q+ձm^AmƋqKT|@dz)Kdz_#״FCƗ_]GV+ /}˜T#?V+ 0}jSu3 dxI+V.Խ|@j?만[{m:zV*n1~m^+9u*ޚJ{r#~ۗd6ի'B) -Dr\1G 4W%Hш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057xzxN<(гOh9GC 44ohy)tP Dࡍ(R&4-y$i`Qt4apӚ_0֌5qZr(LjA Dq_18-/8%4KN@8iI -Dނ= Gц`ӏ KhzH h4*Rܺ` (ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZ bIР/u)ի'B+ձ-=y~ޚo Q+ձm^AmƋqKT|@dz)Kdz_#״FCƗ_]GV+ /}˜T#?V+ 0}jSu3 dxI+V.Խ|@j?만[{m:zV*n1~m^+9u*ޚJ{r#~ۗd6ի'B) -Dr\1G 4W%Hш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057xzxN<(гOh9GC 44ohy)tP Dࡍ(R&4-y$i`Qt4apӚ_0֌5qZr(LjA Dq_18-/8%4KN@8iI -Dނ= Gц`ӏ KhzH h4qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EUV&fffffffffffffff*fffffffffffffffg@[!$qFWc[}jP!$qFWUJ@ӄzFQMZYm:|khdL p ǻVs!X J(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_0^fffffffffffffffgfffffffffffffffK]  BPGezCէraD( ` iM=#ffffffffffffffff)W 9mOp0YP`,Ɂ$u">O uDG‰@P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPS AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.>j?ac܄A1u, @>(iKdzz׷0Not rb_%zrWc:QRմݷ/بS )O;~]\]|%o!ǩ{xB =R㰱_f OEkV]<`,WNǯqߊ^>=SVKkѥ.; >>}\E1 Q?만[JߛiV;^=Kǹ}ZJCqMwYZ#OmFCP] rCJS[Ը,{;xr]#Qs #ȸ~o]ҟsFC #ECe=RaVGWI:^i!yJO+bFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDqHҖt%P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQZt]$Q}Sv*o{9%ի'BǪqZLʋ#O~ի:x/o wdNծ=oߛi׊]~>5R)` ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLik1Tk!QCJH⌯Q@>:$6fffffffffffffffgZYm:|hQBqp o&@SYP`,Ɂ$m: ̎'' 2`~ ?hq4dP`,Ɂ$pⱒ qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E4(88YH \V2AwGZqּqP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_6FA333333333333333?3333333333333333Zo-TbR8+B^2FB$6fffffffffffffffgZYm:|hQBqp o&@ Ss(ʁo=j'AP*+Y!ET#?]o*Vqt]S1Ju16HxQmZ2Xt(_SjbIЮJlg|*; Oo_*[rWc;ײ7Z,S1x2R&_#P!EbghGiE=@.OJի'BzsP#{بG-~],WI:=V`ԧgTYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b ]\]|%o!ǩ{xrwdNծ=oߛi׊]~>5R)8t+wF8iN&~oյ< WKNJrի'B+ձ-=y~ޚo!^^޻oj l~f4_)<`|)j/ ^}Kdz_#״FCƗ_]GVRXt(;7qGt^fJ}Φx|< }ZJCR )Wp0NAmʹ}Zبx])Oo]~Rx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# qx<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGb LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}{zk(Uux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ)yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.B~҅aU^΁ /}q<`~qt]Sm)#OmGjbIР`9s9ot]$W%z3/]-9DVwdo]xY?s//-ReQ}GqXac/őt}P#!KO~],WI:_sB8Il#ի'BǪqZLQdxIuqu𕼇OSV]<`,ߛisDZP#qm:Eg.^ޚJ{r#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0?I5fQA7?vcEe8L\v=\|q]$WW!e0%zrWc;ժB (_bjRVvZ}0NAmʹ}Zبw0:ܺj~)]<~dz_-@r*n1S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.j~)]<~dzPe@7B (_V_s*w0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=Oب)qGt^fJ}Φx~,=VV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ s<ŢqF{AǔzQ0{F hK`r' oF 78h#<;ae(KA G8ᆴaӐ?/@`ڂ-"R j#HDžqh_@5}y(yZr4ghzH h7hJ Hނ=5(xR\F@[GLi[*RxBfffffffffffffffgfffffffffffffffK] Tq~.R8+BQ~)@IQ! f ?$(f; q^إ8@ӄzFP@ + - A8 6ޥ?QA5=0r`,Ɂ$KYp]r7?z O}XU|WB'بG~o! _\|q]$Wsq;vҝLM4v?kxV + :WKNrWc;QZ{x5RC[޽v?dؕ;1x2R&_#P!EbghGiE=@.]?t]$P9Ev71ypP(\Ĺш1L=|ø 8E@`b&AaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqeqg4RKAg 1$4iCHaq8B=sAFސi\֌A("pP j)pxӌ o<ø_`YFGцWq' 9 hQ?% @_D-/[Gц8/xWe o@_AqJhq0ޒ8M#0z j4sW!Ѕ~Wz[uG. @!{z@D(`L#IJ:q0I!wmGB v @&A9ApSn( #]|%إB&B"5`?t{Gd|Sm&(q0 09S333333333333333?xbt s333333333333333?3333333333333333Zo%Ct^CJH⌯QS0\!$qFW$R8+Bq]7FDR8+Bq]7F񩙙joi\ s@'' 2`~HWK 1zf @pt4mBY@P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_.bpx3333333333333333S333333333333333?*8T?pO~)@IQ!Q(?$(3PGezAA( #2D"ޥ?f; y:|jfffffffffffffffgpt9E - oR,xFޤ*9"\<"< zf 9ETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_z-&fffffffffffffff*fffffffffffffffgGJ( #2D %^=Ѡ`CJH⌯Q#XH!$qFW[ԧao R8+B!LS@!{N\,>5g4QBqp o&[ԅt 3 AfbDOOFޤ*9:xDQA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.53333333333333333MZYm:|khdLҷ df<#oRuHTr 3t*n17{3333333333333333S333333333333333?*8T?pO~)@IQ!Q(?$(3PGezAA( #2D t iM=#ffffffffffffffff)\|q]$WRҝPp״ *n1V+k+ zю'nSFmzjt@rRjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍO&_#Zj(#׸_R㰱:|hQի+ /}@b|~$t]$WY+Rs8_*,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hG$hh !4೚h;F&ӍK/NsCi椗<b-8HhF@DžiC 44ohy)tP Dࡍ(R&4҅0$i`Qt4apӚ_0֌5qZr(LPEz j#H18-/8%4KN@8oImb&o Hނ=5(xR\F@[GLiQ'LTk <PGez@J!( #2D $^=UM\;dh iM=#A ٙ[x0?p/aώz`xz<#,91u, @>(iKdzz׷0Not rb_%zrWc;▭y}Ю@ҝ`}J}Yj+y=KǺցz4ac8)\1 []>x8Y6Ӣqwx8Y6ӢqwV}ZF+*t}>:}W{~+c,{;"|}vcJ}OS!0mv!2ǩPS #k+ VwŊNմ% ݧ*n1x9E4at"o9.+v7@097@hQKx%ډ!A1s+xw4"jIt 8\qa8ԋ$hh /xӂiP/a+1L=@_ 5# =4sŜI.-y0ZpѦ#Q A#yh~q9OoHaF7@097@hQ#Ġ{Q8$5" 78h#<;9DqD-/x{L_H0'4h 4,0iG@(iFj\ qF8Hky78,+b( DгOo@_H4%&֛@R]zF 8I?Itԍ/1G"!y%=hcN@?AFĘ<;a"Ɯ`INhq|pZ0y(LMD-N0$48="8#CExW<Сxz0G~b'$q\qt[0}K1K悍?/(rF o A$ 8i `QLiUZ ex럳Ffffffffffffffff*fffffffffffffffgGJ( #2D %^pCJH⌯Qԋ6BUv@ iM=#ffffffffffffffff(t_UB7pA|]|`$H;rkP>@B>5B+@G4KAM EAZr=\f4_1 Qu.; ?=JVJqT><1 pծ=LM4(mO@g.#Nի[~}C=?oI3d,ԧLV0NAmI;}ǐV6ӧƁ+D5zLg.#NիWܞz~ޓzˮWC?Vv \WOץ8et+*<"GW?aW}YzL}Z GV)[}+Osv0@“ߐ.:nf5j+RICsB,2%Vqxߐ+ZJE]}B+[ںOPN `r_Q_3=Ky !vn_'"_S[9E7d80v3`?]~Fzj2C_&W@]A;bFǐO6ӧƁ+Kt Y˯ӟjBBrv)jnIJzk)@EC #k9+9W Ex>+o^3뫐"_*[q_zF<"ůJ|R{(BPvҝLM4v<=N<>|ժ)nM9Eòo9VK s:B+[KVP3 R{/r]׮Ԩ}ZN/>ޥ8}dNoMvT=;\ԧrYY_ ׸!)Vc S԰/aU v}q\AVr4<%-ZCX=+W D;}ǏtiOlRaVDjrKZk}ZK܅ >%=ĿK~Ax5j#Z+1 ?Kw$/E?,Y_{ղZV0c#Q+~qm:|h*a; ]~oMvTK ՝E]XaCR_d8zy>?{~ruWW=N*a; ժW 'Vr4<%W[!5R@V/~\v@;O-[Mxr^>%Vv_qU v}q\~PT;}r+#)8NW!oV; Zx8Y' y>zj2C_'έRsőo~?+ի[~}@}Z GV)[}dyݥӟWiܹ!Bi<"Enst>C˜Fʖ{;ߛײ7+OezOaZ{Ŀf O?aW1fɂ\v@_Εo!$Y}՝ŋMf+]])5j+QvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ+W⼒G,{;x?“8|mOCő?W';iNJkի+ PsN0NAmm:|h*߹jP#ǩ{xTV>4_&Xw!֨P|wbk.\Y%jQ}-5ٍ})0r*P~&_x8Yi_s˜(t_bá\UBݶ\v@W#״'ԸdzrKdz>4_s\v=Q_/xUBݶ\v@oc0NC< "Q_Ps1O6ӧƁL=V1zjW>*>\v@Y_%ku:|kǮO}[#]m?zkǯi_~,Xw!got+еz8V_~dzDܾ>C'#Wpq < 9_+վ\v@9%5YMn'N#(Wc%;]m?zAx{O[]-;ӆF2?!_uE?r y;~\v@Wq ?1vҜWvԸRzW=;iBSO^ӧƢWB~ҟsc=PǍC; Y˯FGVYMnv?z(Q_ѥ.; <c AEgv3ȳ,>OP틧~+j+U v}q\{x?Zt=B;YkRպSk~MЁ>0Dy;xv3Y!J}ZDEd;YV_ZX@{OX{Wc=Kdz_rp i}m?K)D]Y}Pݻ ?6Өa~],f W GV; , MvTFm:՝LT5}C~*WqU v}q\@WPWd~ޚQǠӄ á+.; 8V*a; ~zIj;iBtyR'o!jm:|hgq>>O' 불pf)jnǹq>0>Ԯ{B{NP#ǩ{xƋ!2<\v=xv3Gm7m_y?S[X{Il^CJSc0Ƌ+1 Q=NacWd5j+t GXV=K]Zt9E7?N?aczxv3 a{Nr~:@Ƌ+s8goOǹu<ҝ\1Z,y>ϫWiY˯eT>_jc:x/o6ӧƋVwR_@~CR+?4=KyWpVT*ⳗ_Ŗ*+9R&WWځWiA]{N! 4E@]&҅Vm:|rARCŔq > ?ltqZtS*=Tcxٍ}ZQ_F_9J"_@>ӮEĿCe=q~\mO@Ӧ7>YR\:8^Mt c^Ԩ o!j+Y ~\v@<)bo!jsiMQ_Wu|Wt 0~1”0]wRs(^t;Rjs+Xw!؆ڕ{'c$ LH+sF 8Q0j]xsN@pqzC*1"JʖWc;ײ7Ǘ|?nC”,{;o!jFL\{Nݴ%za 'q*n1|{/Rki@ ?do]nkޓ?=v^C:AZ+$jo*[w=:5j+Wר€k7 S' nuKkwGK! W&W r{?wRs(^ⳗ_~dz>׷^zDoMvTy>“K'Iۗ,ޝO._t?mE*?y>΃ڇt.6+EV>5ߊZ1IkW; kzk):"Cy ZWK axEvu+9./Oo_w+jdcc{e5"r0?14鍷9O9){x/ۇz.; d!T,=adqBRv3ȸMl:k:+Uܚtƹ|Ya:s~ޥ}25j^>׽'zAx=@[cVįmOJrio!k|v>%gq>&W>K9u{f8xTX>r'Vq8gr=O\xv3B_sԢ/IW+OPq :΁1;Onkޓ+!Jq1jJwu:_)=q)Ǖ⼞3Ӧ6CYMnIЃCE/o0rxQ Kx%Ӑ="iGs .Oaɭ\mO}O%WaZ950\V.+Aݵߛi|VG_#Jq90]lx0˜]Ҝܞ3J~ڤ=\mV<o*Q_\|. _h _#J{ի!BݴW#Oo}\իkW EWr Ogoq_|MwF=#]SQN?⽆`FeJSEqBߴa(?V0NAmʹ뫐@ԧio^oIa}MkWN0NAm@P$oc yEtҝPsrkWiEUB7pGjt0yƾq No=:Vq>4W;\Ouի(H w0֠|:|j!Ni pAE^F>YRy>^p_!BJ}o{o _+ +acS*V6ӧƽǩqXvc$ LH+8@5qa8Ժ((朁t,j-TcȰҀҪq>5}ZX[Oe+;7>=PFx^Ct9S333333333333333?x&]1@j333333333333333?3333333333333333Zo%Ct^CJH⌯Q8!$qFWRjE!*vR8+B4 ,p 4􍙙\>4QBqp o&@yU+dJ(2Fh0LGI2Kdzk+ ;LVJlgz^֨P| CJS߫Wp -w=O\{7?6ӮC_]D0ޒ8M%@pEpc$ @@ҟ^B)( }<`, @H$ ]BE`]=,X$i%|eNx}GlLd6B<`eT"BIETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Drfffffffffffffff4_GEiʙ-t7{@4&333333333333333?'' 2`~p ( l|*5P.; ?vc^:z}'|!^#ZWbFiN0>ԥ>uqu𕼇O k@)qXv3맊W"wµWp0NAmʹ迫\J{WRzV.\S]FTiKdz@W Gf;LCe:wdNį׸zx/oj+y5djjblP# WT9mBܼ{RVu.; <W{ s8w>]#QOBbFP>?s[ZXt+zO/őU'sV@KVJlgyRմݷ,B7Jv!)goի:x/oW#ZW)qXv3맊W"wµWp0NAmʹ貿Z׸zx/oj+y5dj җgoo>@"w˜(uj -W\zO>]\]|%o!ԸC]LM4v:`SV!U'ՅW+ ѥ;/Rjg4 ?^ӧƀ ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLiAj\C|@j( #2D!K M^D^Fdn:4&333333333333333?ծ>8t+|)ztiNԨ}ZYtQA7?z O}XU|WB'بG~o! TZ'Btc۶bl[^ڵpd]$P0ԧ/jt\TvbFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[GLimF333333333333333?3333333333333333Zo ^!$qFW?b$ R8+Bh@ӄzFSVrBxN(88Y'&;Xw! s//-Re=@R㰱}Z'B)`F+վC[ޭWԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0jE9:&;FImb&44QDžs 8\qa8Ժ 5# =4sŜI ~q9OoHaF7ш#MN0$iZa D`4KK(M( 4`(K0(H jH 5iDžqhƠ]|5#Kixb( 9 5 G0Ӑ?/@`4(iF$ނ=5iӐbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDž-/8%4KN@8oImb&o Hނ=5(xREhzH h4ԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0j\qR&;FImb&44QDžs 8\qa8ԺYa0$4;xI ~q9OoHaF7ш#MN0$iZ$ZYG(M( 4`(K0(KcR@QMH4kN<+E]|5#Kixb( 9 5 G0`|JyCN 4&)5iӐE+:x/o wdNծ=oߛi׊]~>5R*ܺ@Pe@7}<`|)j/d:gkWI:w@Pe@7}<`|)j/d:gkWI:wLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.AaѦ2P R! n2*O!@TA$*n1dVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[GLi⎊Jpm0C|@j( #2D!K M^PGezA2BPGezB;P!$qFW/:+)ÔR@!$qFW/:+˜h@ӄzFP`,  @WVqxv?B۬ `/Qx| (%ѥ>?JSP8x8YAH ^u "OtDbl;91ڄxNj[u !Py  %P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24?JSP8x8YAH ^u "OtDbl;91ڄxNj[u !Py  %P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24Sx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=dVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[GLi⎊Jpm0C|@j( #2D!K M^PGezA2BPGezB;QzWBPGezB8)L9E-PGezB<)v 8Il -2  ڵqXgGm-X2]SkԨE<Q/[x$ipP$XOtK(V&~_SsQ  G{Xz* QA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵ + :t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b *RܺB~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b dVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[GLi⎊)3333333333333333S333333333333333?hPGezCJ!R@( #2D" 8Ih9 h&fffffffffffffffgaɭ\mOU?A'' 2`~ ?mkiJv^Caɭ\mOU?A Wi@p(3ȸ~of5kVׯ@ZtO%zիrE[x?ZNҊX $ OD iM=#d(ׯQnO=z븗wRs(^'BR㰱)zWi^Ը,{;J|s1s&$rE8@5qa8Ժ((朁t,j-TcȰҀ%Ujm:|kxIڶ] ˈW!v*n1|{KmzWi@LiNfffffffffffffffgfffffffffffffffK] ?$(,B6PGezDpOHpLP`,Ɂ$!|V} 1u, @>(iKdzz׷0Not rb_%zrWc:QRմݷ/بS )O;~]\]|%o!ǩ{xB#Pѥ.; >?`tJYVj -k_;^=Kǹ}ZJCqMwY?(ѥ.; >>}\E1 Q?만[{m:,qw AE5j -w=O\{7?6ӮTVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,4"jIt 8E44QDžpopY4Wj Eiƥ@_ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4?4i 0hцZ1R#ĠC 4QMN0$iZ<;aeFj]z jbFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[GLiU14=Iʙ-t7{@R8+BT ~)@IQ!L!$qFW 8Il5k+  ^S*Vsz>4Pe@7B (_V_s*wt+VIЮv:$iVר6\,WI: /u)yZt]$W%z3/]-9+ձm^Am)}<`|)j/ ^}Kdz_#״FCƗ_]GjtE=OبT#?V+ 0}jSu3 *,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0@B>5i?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9Ec +9usX}˗69~k.CP#qAS'ki@ 3#ⳗ_?؅+P)99Rմݷ~ޚo!dz{#{J}WI::_Sd?]`:xl0v?kA(U'\9'𨲾uayMg>r`\mC{X@~ޚo!dz{#{J}Ξbץ>=_!O;iN&~o_s|~ZҖبP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=azP0l>. +9usO䖭Z,f tTrKxFu*Jua@V; z\$իҗ rq|K{]~p/>jGm7mLBO-} !or@^ulVի~+kiEU v}q\|VrzkrY\~.]XaCR_d8zy>?{~rujT,=adqBPrXv+9usO+έ~ޚo!j !or>Wd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃP0~dzo9mOCw>9 f d%zd` PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DAߊm?xN2< }Zǹt^>?Ǎ95~dzB ~{+YrY%jQ}-5ٍ})0r*P~&P1m)V{x?aO޽O}E/\ٍUjsƗ\]rc!=O@ƾϊW-PS[i]0~=rs;i]F={N^~,Xw!got+еz8VXvhqxD}xZN?acǁVq_䖴e5~dzD:>,#{?9^|vö{ q['zOʖ8dc)#%=Ooc0NC< "_bjRVvg߫WW_ [t^> AEc<1Bj Nغ~V; *a; wO'_\xN~QA"wc]'▭ҝ[^:n !mʹ>:c=5իk@Pv3ȳuot']\<Pm.; }˯ -/te=NXvG #jc0N?qY~eKydk6ӨYC]o't7V*a; =B9_WzkGNh7kt{WǩqXvZ|UBݶ\v@;xv3Ը,{;\1oMvT rtwndzʹ=<~JrW[YMnz 8I[^*[}[#]Gަw*y>áqU v}q\Kӣ_uqu𕼇aw'Q9+խp~[^giN իX{WKu&~o_{R_C[T,=adq/ZԸZl>.%WrKT(>k}Zरi>Nߐ"']<~?siM =\mܿa1zS;yR'jm:|hc<(aacuJkPm.; }FԯsR$~իNo #jRŔQKǹ~XvG7>;iN8NCt?yQN'p oh?~a▭|{"}`}]){x/KUZ?z>5F=SR;1)b/:go^Ñ-[Mx\sUBݶ\v@rKb_bjR;f4_1 Q=NacWd5j+t G[ǩ{x붔\xN(2<7Xv^^ӽ\kP%qO,{;xo~=ˮOőov=5ٍd|y>ϫWiY˯eT>_jc:x/oZt| WG\->]>ZCP]XFqKTի@~+~4àOwQ~x"}gנ.giNJn6ӧ!D-9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@0~*5΄&^F>YRy>^p_!BJ}o{o _iCJիSӓ[,{;CJXvs1s&$rE4bEiƥG@G4K/xwg(WT=lBE/]- Vwdo]/'B~G:x/oѦ@8hxQfYa0$48i椗<b-8Hhၨ ;x? 뫐V>]1 bc^m>C”,{;o!jFO tc۶V=u5^@7eT>qm:|hm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"r`~bio!:ssR_IZJ\v=q_qU v}q\~PT.'[25>*@Y!]Z@Ӧ5N+ d4IЃ(I5j^>׽'zAx=@[cVǍ~3 P}@oM:cm QE-H w0֠|:|j!Q Kx%Ӑ=.-xjF41i_0\Q5CZrPRt7]~FWځ=N=KǫƋ!2<Ը,{;x)[})ǓR{xH-V16HtVr4Zx8Y'>Cs:B Jq]<`,Vv!?m>\mOP0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rA!Vr4?԰Q/mr?@]A;bFǐO6ӧƁ(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`VרP2OA>+9usO#Qe}4}ϊ.9]xt']\5RCg{zF<"ůJ|R{(BPvҝLM4v<LJ#xϚC-IQ(aX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(aU v}q\AVr4<%-ZCX=go) T,>\v@:IkMoW/r(>xo.m_|ժ)jn˜FG[B,/lyWa1W6ӧƋeJYD]o^%#Pq8}#@j*?/d}SX{jb 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(a8gr+9usNsy?oRF\qA_?=N?ac>X})Ǔm:|rSő?W';iNJkի( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9E ? ~>4dxI}sԽ|~+kiErkq8grj'Av* V JԢ@ZkSY!Ea7/XUM׮-:c{Sq~ö{Nt_YȹJ//>.~4"CKz5j+}jV; /Z^,^ӧƻa{zղ5vz>.qYMn'CW}'Qkao!JqW'/{\8~dzD^j-ikq8got|YFi@~r;;]m?zAx{O[]-;pS]G:x>q(z]z!o!goիC,{;xoO AJrW[\v@oYڏRIt  ao!Di_թ'viQ )8v3z\xN>jm~]Gmx{ mzPP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@ycsժt~\v@UBݶ\v@0OV>4PEMƻO-[:GtCߛi|uo!gozk9)OWVר?s(gf;Zy~jc0N?y>*a; ՝;\v=_[K;i_9J"z۰m:VG`ur~+jiʖV~mQ;Oo~\UBݶ\v@zrV; eJw=$oV׮ R㰱?l>.?VvgqXvcޚ]=z+j݅goߛizxuVpz MvTFm:՝LT5}C~+jקG~>+j+yNrW[4&/zu.; ҝ:_WPm+խV3뫐#LM4v.=0>ԥ8v3h b)zKdzիjW%zիRm)V>4Q@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?ac)D]\AV>5ʏ~o!?{7?vc_Vr5Q@jr..%b){~+jm:|rӦ7>YR\:8^Mt c^Ԩ o!j !oի1 Q>]<~Vz 8I[^(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9E7WIߞ;/Rߝz YeKVP kzk}^SӠ9}<~!V}QnO=z븗ERmw=NBO/d)ܞ!TJy>'Cz8v3uE*%zks.\)=/ŊNܹ~ޝO._t?mE*?y>΃ڇt.6𨲾W6ӧƾC;_Wf5?ٍ}Z/ʖ{;ߛײ78TzF?3%k_%0ÈQ}<";PfU/;Ow.Z$j ۗ8T~CD_|YMn'COP>J|W+kuE* Ӧ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9ExQ Kx%Ӑ=)5g4P @ @(88YH \z<~dz33333333333333332Q@$z<~dz;JwoXBfGB ,{; ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzP8t+wF8iN&~oյ< WKN)N_],WI:^GaieKyJlgzFxQP l~f4_O&_#Zj(#׸_R㰱:|h*45R8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=sFF"+ч%@[Gč q\yaN4Wb({N5.j"F{L 8i(g4RH=h(`ѽ bxӌ o<úA8G"hQNJ9DB8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9Eц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.Sx8Y6ӮkbFuⳗ_oMvT .Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,E 8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`Hxč0`YFGцƜ`INhq|pZ0y iĠ{Q0KKA)5$i|NH¸P /ހ<<-93a$qGaoAFiN<).q -Drfffffffffffffff4_-)4(88YH \jERY.ݴ (ʁo=j'AP*+Y!ET#+<`~qt]S1Ju16Hx< WKNJrjbIЮJlgJGaieKyJlgzFxW[c;1O&_#Zj(#׸_R㰱:|h)=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O,y T<);bZ/8l>.=<`~qm:|hA"wc]'▭ҝ[^:n !mʹ>:c=5իk@,|+]o/],f W G'T,=adqc=Kdz_rp i}m?K)D]Y}Sv=~mQZX@~\v@_-5RCʹ?Vv37P[s իX{Pq_*T{14&}/zwGo}zgo_թ'T,=adqc=KdzȳeJ(O'_Wv,{;xN%zŔӄյ@Zkղ5ߛi~g~ob:_WPmĿo޽:;_WW_ [vru#ZA 7{յqXvaߊZl>. ^ot']\blW )N9+վ\UBݶ\v@+խK !O;iN<իX{_{$B,ծ Kʹ=.]r}1N?j?c_W=$ޭ]ЮCv=ǮOu37-RV6ӧƁv3ȸrpf ?v=~mQVU v}q\~R㰱ܾ\mOgq>>O' 불pf)jnǹr.'؆ڕܢr!ԵUSi_jc:x/oC/˜({xCqXv9Rմݷ!w<)T,=adqw$/E!)ñvcESOo_s\v=~\v@VOy+վ]'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0rJLv!( #2D!J]IœD mOLP`,Ɂ$Ud^#{JpV, :xDJ(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b 4Q@o $E@@A"DÓZSMD-.a⸔sN@_DP% y|qG$N iQ@8?Jori@+9us_jc:x/oC/˜({xR㰱ԥmOIC oZ#OriY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4Q@hoIxiv_xZyO}SujOۨY1r]<~^ɗЮԨtO+վ&>]`F_\zd \>< `Wc T \)=oRIsc_V“"縅|YMoOeKVP'!V!`PzT( 9|W񝎹[xTK?Om;r >ޟ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(d'@\9V)Z)N@W!ȸo!▭|KeKy=SxIЯf O$i3ǫd[^Q@=iy>@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&Dd`+9us\@^ulV 䖭Z,f tTrK\wp*V6ӧƋiiNի ׸!)Vc S԰/T,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժP0~dzY˯ӟ|@^ulV eKyWY {?V; z'▭|~CE/ogoPm K}ix.?GSq>9C]?\v@Ǔtp oO|OޥڌhoI3d,ԧdyߏg.~]<`,^Cf dj?ǩJo_#( ӟWiܹ!Bi<"En}ZN{Sa5RCg{zF<"En=>]ku;q']Cde-5RCHMx;}ǧ8W'ȺS>jWTlݴPZx8Y';q <=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; (H? qp oi@>ϫWځ=N=KV>4_&Xw!֨P|wbk.\K J/41/%5_rNUQ~ =zd޽O} b)}SqU v}q\~*_ak\X]2={Mr}%={N/u.; ի)T,=adq3:Oz *~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@r@R㰱v3ȸ1 Qu.; O~\v@UBݶ\v@T+iKd|!^#Z/{KuU'\RcGnt O #o~mQm՝;琥>][^PEkի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@QZ/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1z/RjP#ǩ{xW6ӧƋVwR_@~CR撽Z:o!j_~jj[VrB4|#Z_jc^mu:|k*y8>t;JrWq>9 )o!kq8gor?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(Wu|Wt 0~1”0]wS{% yNbjT~\v@zN?ac܇bjT}x~dzK7 1#/9 ob({N5.co!acyW=NŒ5~\{Nݴ%za 'q*n1|{/Rki@@~6޻o^6>׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qPNy9ЃCrm}zLZׯ R㰱իCX{jbgq>ّUj=N΁ ur&1zu_Xc!N&_D_zLT:?ײǹd<,>7%zծ%gq>';Og.s ^}]_=r~qU}oR&_R_sbzrkq8grg@r'׷IzlL#ơq[N?ac܇Oy53333333333333333Bqp o&@ {U\iVR==zOOB%*n1qTcxNVrʔܺ]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RU'1pOHٙjoi\ s@'' 2`~ +VGJ(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.j?ac܄A1u, @>(iKdzz׷0Not rb_%zrWc:QRմݷ/بS )O;~]\]|%o!ǩ{xB =R㰱_f OEkV]<`,WNǯqߊ^>=SVKkѥ.; >>}\E1 Q?만[JߛiV;^=Kǹ}ZJCqMwYZ#OmFCP] rCJS[Ը,{;xr]#Qs #ȸ~o]ҟsFC #ECe=RaVGWI:^i!yJO+bFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDqԥ>uqu𕼇O k@iKdz|q']@"w˜(uj -ʹ迫\zO>]\]|%o!ԸCEblP#!Vr.څx!)^j\v=x9_{VWxgr\O7iOd#_!؆͢!2ǩPS #k+ VwŊNմ% ݧP#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1E.a⸔j'R&4-y(MNJ9DqNi0i} D`0а"_A%4ӌ`Q8#CExQ|$5ƜsMځ|1hY/NhkMH ).=#Q$Ԁ$@_ Ha}xb( 9?Aǚ\j(44j,|)b_V]<`,WNǯqߊ^>=SVKk=W&~o25j"[bjRVacǃ'jq{OXw!ExƔB5a+b)z :?VIЮJlg|X[O rPy_7<0H h7 EQCFĠC 4Q#@2<<"*! 9!0B,{;A |~+kbR{T+mˮOtiOp-s? ^*aV;@2<<"Mf163333333333333333 C|@j( #2D!K M^ t!$qFW,@^Ni3333333333333333Bqp o&@ H E`"F>j?ac܄A1u, @>(iKdzz׷0Not rb_%zrWc:QRմݷ/بS )O;~]\]|%o!ǩ{xB =R㰱_f OEkV]<`,WNǯqߊ^>=SVKkѥ.; >>}\E1 Q?만[JߛiV;^=Kǹ}ZJCqMwYZ#OmFCP] rCJS[Ը,{;xr]#Qs #ȸ~o]ҟsFC #ECe=RaVGWI:^i!yJO+bFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDq]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.={Nr]D}()(^!Tcע[x$p}Cx[1&] £P[x$ t/dTj9A7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0Rt\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDž-/8%4KN@8oImb&o Hނ=5(xREhzH h45RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9S333333333333333?x; qʙ-t7{@R8+BT ~)@IQ!GBPGez@|ao!jZpOHٙjHOiE'' 2`~t\`$]ڇsq "QA7?vcEe8L\v=\|q]$WW!e0%zrWc;ժB (_bjRVvZ}0NAmʹ}Zبw0:ܺqTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_6FA333333333333333?3333333333333333Zo ^!$qFW?b$ R8+B!@5?$(,j 8Ih9&fffffffffffffff)W 9mOp0YP`,ɁpDA8']Ҫ9ETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Drfffffffffffffff4_,jLTk 5{@^RT&CJH⌯Qj:R8+B1 4􍙙rkWiE F/[ˠOAQKn$H95 @!{NAE4B+@G4KAM EAZr4 ⳗ_?F=SR;1)b/u.; ?=JVJqT><1 pծ=LM4(a>9o9V0NAmI'έRy?WO' $՝AyWi@ 69~k7]~FWeի=';_P՝<~/1uN<! JO _[O`^Cf dj?ǩJo_Osv0@“ߐ.:nf5j\)=r.{Q~WŔ&_$jA:~0CW~_랥΅DkVӷ/Z)zLnp`f9,>eD5zOPNo!ب )ǓǍrKt Y˯ӟjBBrv)jnĿoMvT޽>+ `tJ/F0NzOkҟTJ/Sd?]/t>?sPiKwlTA(v@ ⳗ_?dgVEk`Ijժ`|@xIW DEWp{w^/Rjm:|hztp o~m_Vv*RۮMjS}Z,/@[{bjRj0=K_ (UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9E ,{;xo9'dgVEk`oMvT|~P+j|)jn;RVv_qU v}q\~PT;}rdyݥ>i=5ٍd|y?WO' $qX}˗69~ks:B J}G>rW - >>]`F_\zh<Ҁ܍9y>@}/I1|>=˗/v$Y}?~ի|1 ?]Q/]-8w7doiO$Y}^c>Eֽ^/u+b$F%=Oq5Lo!N;Dcgot+sBɗ]_jm:|r\իzٌm;,C>\v@_]-:xD/ݷzxir| >CP%qF=J{% y<ի[~}C<'(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr9^'' >4dxI}sԽ|~+kiErkq8grj'Av* V JԢ@ZkSY!Ea7/XUM׮0NAmt!2؅0WPm>ŅL#״'ب+"_#״R㰱}Z/xUBݶ\v@oc0NC< "Q@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(ѥ.; <cFH^8io'_!R{/ )O;xv3oի:x/o E!a5j'l]?c_WPmǻծ*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծI%zi,Xv(Q@~ծP/v!Gd| ɭ=v!Glj,{;x?Ĺp9"1"R#Ġxr<;_ժ!Q{"JʖWc;ײ7Ǘ|?n4Q@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9E0?14鍷9O9){x/ۇz.; }Z/8l>.?VV*_y魙V_sWW _ri_e2_$AezECnkޓ={ |{FC-q~W}Zt?>_&1,m_yO~=rñ|$>r=O׽&QF+/B+@G4JfffffffffffffffgO3Llfffffffffffffff*fffffffffffffffg CJH⌯Q~)R*H`!$qFWBk5~)@IQ!6!Ni3333333333333333Bqp o&@՜5Ow=OCXw!r] £P)R㰱f58}\^ΔGm7mv*ovCJS߫WW_ [t^>=ЮF+OF,{;xWu+f;Zի~O' 6Ӣqw\,:|h)mD0N:|h*fffffffffffffffgOB; qʙ-t7{@R8+BT ~)@IQ!GBPGezFpOHٙ1&q>4Q@o $E@@A"DÓZSMD-.a⸔sN@_DP% y|qG$N iQ@8?Jori@+9us_jc:x/oC/˜({xR㰱ԥmOIC oZ#OriY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4Q@hoIxiv_xZyO}SujOۨY1r]<~^ɗЮԨtO+վ&>]`F_\zd \>< `Wc T \)=oRIsc_V“"縅|YMoOeKVP'!V!`PzT( 9|W񝎹[xTK?Om;r >ޟ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(d'@\9V)Z)N@W!ȸo!▭|KeKy=SxIЯf O$i3ǫd[^Q@=iy>@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&Dd`+9us\@^ulV 䖭Z,f tTrK\wp*V6ӧƋiiNի ׸!)Vc S԰/T,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժP0~dzY˯ӟ|@^ulV eKyWY {?V; z'▭|~CE/ogoPm K}ix.?GSq>9C]?\v@Ǔtp oO|OޥڌhoI3d,ԧdyߏg.~]<`,^Cf dj?ǩJo_#( ӟWiܹ!Bi<"En}ZN{Sa5RCg{zF<"En=>]ku;q']Cde-5RCHMx;}ǧ8W'ȺS>jWTlݴPZx8Y';q <=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; (H? qp oi@>ϫWځ=N=KV>4_&Xw!֨P|wbk.\K J/41/%5_rNUQ~ =zd޽O} b)}SqU v}q\~*_ak\X]2={Mr}%={N/u.; ի)T,=adq3:Oz *~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@r@R㰱v3ȸ1 Qu.; O~\v@UBݶ\v@T+iKd|!^#Z/{KuU'\RcGnt O #o~mQm՝;琥>][^PEkի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@QZ/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1z/RjP#ǩ{xW6ӧƋVwR_@~CR撽Z:o!j_~jj[VrB4|#Z_jc^mu:|k*y8>t;JrWq>9 )o!kq8gor?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(Wu|Wt 0~1”0]wS{% yNbjT~\v@zN?ac܇bjT}x~dzK7 1#/9 ob({N5.co!acyW=NŒ5~\{Nݴ%za 'q*n1|{/Rki@@~6޻o^6>׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qPNy9ЃCrm}zLZׯ R㰱իCX{jbgq>ّUj=N΁ ur&1zu_Xc!N&_D_zLT:?ײǹd<,>7%zծ%gq>';Og.s ^}]_=r~qU}oR&_R_sbzrkq8grg@r'׷IzlL#ơq[N?ac܇Oyԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0jE9:&;FImb&44QDžs 8\qa8Ժ 5# =4sŜI ~q9OoHaF7ш#MN0$iZa D`4KK(M( 4`(K0(H jH 5iDžqhƠ]|5#Kixb( 9 5 G0Ӑ?/@`4(iF$ނ=5iӐ:4eT>\,:|h(ʁo=j'AP*+Y!ET#?]o*Vqt]S1Ju16HxQmZ2Xt(_SjbIЮJlg|*; Oo_*[rWc;ײ7Z,S1x2R&_#P!EbghGiE=@.OJի'BzsP#{بG-~],WI:=V`ԧgTYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b ?I5f8~dzP#qf4_O&_#ZzacNur&S rW|%z3ZqT(y>B~҅!)goի~IdNծ=oߛis S˯.SF@[Gb(h b\䁹o05G9!#L8-.`Ѽqa8ԊsFtM 1]v9.8M$hh  qDqtj"F{L 8i+9@sAFސo05GƜ`Hx(úA8G"h?I5f8~dzPe@7}<`|)j/d:gkWI:w4QBqp o&EOMe٭w=N'B%P#qf4_O&_#ZzacNur&S rW|%z3ZqT(y>B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M*fffffffffffffffgOV; qʙ-t7{@R8+BT ~)@IQ!?$(z ؄ 8Il5j$'[x0?:.r|0~k.m@*n1ƋqKT}P#!Ը,{;_VIЮCa1JoVwU=j'AP0>ԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0j\qR&;FImb&44QDžs 8\qa8ԺYa0$4;xI ~q9OoHaF7ш#MN0$iZ$ZYG(M( 4`(K0(KcR@QMH4kN<+E]|5#Kixb( 9 5 G0`|JyCN 4&)5iӐ(\%!\mOR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|Jt+ (җgo0Nxr,|+]owdҿʹ迫\zO>]\]|%o!Ը@ R㰱}'YSN]>x8Ym:/~+ǩ{x=OWW_ [u.)#PQ_16HxT9mBܼ{RVu.; <0H h7 EQCF h+@pHkPE.b\@(MI.<+1L=|č qEopY4Wj4h8Q0j]|,D0pӚ?I5fQA7?vcEe8L\v=\|q]$WW!e0%zrWc;ժB (_bjRVvZ}0NAmʹ}Zبw0:ܺ@KVJlgJ#ZB7Jv!)goի:x/o k@4ac8)\1 []>x8Ym:/~+ǩ{x=OWW_ [u.)#P(H?F,{;xot ryc1FSWp0NAm+Nǯqߊ^>=SVKk=WLM4v?d>jEP/0>ԥ9+վ]Kdz(9.8M%@pEpцZ1yP=K9 9(ù01RK8,0iƊEiƤ_8#CExQ|$5ƜsMځ} (+1L=@_ 5# =4sŜI.-y0ZpѦ"P`j!$o1x4Â悍=! 0`kF A%ډ!A 78h#<;9DqD-/x{L_H0'4h 4,0iD( 4`(K(ʁo=j'AP*+Y!ET#+<`~qt]S1Ju16Hx< WKNJrjbIЮJlgJGaieKyJlgzFxW[c;1O&_#Zj(#׸_R㰱:|h)8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=ChΉF"+ч%@[Gč q\yaN4Wb({N5.DHi' 9qg4RH=h(`ѽ bxӌ o%xwH0'4(MNJ9D=SVKk(ѥ.; >>}\E1 Q?만[J6Ӣqw=SVKk(ѥ.; >>}\E1 Q?만[J6Ӣqwj~)]<~dz_-@r*n18t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=sFF"+ч%@[Gč q\yaN4Wb({N5.j"F{L 8i(g4RH=h(`ѽ bxӌ o<úA8G"hQNJ9DB~҅aU^΁ /wqTcxNVrʔVQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RH 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b (ʁo=j'AP*+Y!ET#+<`~qt]S1Ju16Hx< WKNJrjbIЮJlgJGaieKyJlgzFxW[c;1O&_#Zj(#׸_R㰱:|h)8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=ChΉF"+ч%@[Gč q\yaN4Wb({N5.DHi' 9qg4RH=h(`ѽ bxӌ o%xwH0'4(MNJ9D8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=sFF"+ч%@[Gč q\yaN4Wb({N5.j"F{L 8i(g4RH=h(`ѽ bxӌ o<úA8G"hQNJ9DB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_*3ffffffffffffffff*fffffffffffffffg pOHٙ[xL-㖽~bY>}(QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0Rt\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDž-/8%4KN@8oImb&o Hނ=5(xREhzH h4fffffffffffffffgOVTk1XR8+B!NQשœD iM=#ffffffffffffffff(N0NAm_9=OCWOB l|*5Pʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_)JrjbIЮJlg|*; Oo_*[rWc;ײ7Z[c;1x2R&_#P!EbghGiE=@QQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b B8y0LWWI:;NݴSd?]ի%'B”/V+ Vw£zk%z3{#zըY?s//-Re5_aV/qXvdz>4_s]~1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<(h_@5}y(yZr4ghzH h7hxjF4aF4’(F@[GLi*Y^n3333333333333333?3333333333333333ZoV?$(Spc~)@IQ!pOHٙjHOiE'' 2`~t\`$]ځETcxٍ ▩2FCqXvqt]\sɔ0c#\!^Vz O}`}J}YjRx8Y6ӮkbFu{r񋨃SF@[Gb(h b\䁹o05G9!#L8-.`Ѽqa8Ը0M 1]v9.8M$hh  qDqtQ0`INhw0E 9@sAFސo05GƜ`Hx 4I /9DB~҅aU^΁ /wqTcxNVrʔVQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RH 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B8y0LWWI:;NݴSd?]ի%'B”/V+ Vw£zk%z3{#zըY?s//-Re5_aV/qXvdz>4_s]~1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<(h_@5}y(yZr4ghzH h7hxjF4aF4’(F@[G333333333333333?xb&cL!( #2D"1X1S!$qFW:/$6fffffffffffffffgdL n/p{Q| l|*5P*n1]ĜO`RS z5A '/ Tጏ^(mO{=JSr ~rx:S z5ՅQQtS;u+'Bǫ Cu{1Dq(*Pr1|mOw0QG~+jUtE ^">8t+}T;qIlw3d#$o~LCރKZ«'Be;o'Bǧ S&V\(6  dzi^(;0?{ 'ñ !s+S*b V^8t(J^Bs 0}1 NAp}AGi>5WRdJ}Efgo'ՅRGu.; Ozt\ Y!]\ZƠi׵yQ[Dnv!I'-/>"]xTv>?VvrBxJy>OF,xfPxY 5jxTv>?`wm}ΝC]o𨱏nrxϵyycu+߫Q2IՇtBTq']q¨IРW'BǑ-[8~8Fxs:1>)^:Vv\2B#'ԨX{/R -w ՝<\LK yW wc!,ZݶG9+չRմݷs}ݴw?5jKq  2V+ϊ*RV_jx1Rմݷk[iU=) iNbx09E}~j9<`}Kdzz)jnBJOO6ӧƀO񝍩^>)VAC! >ߛQZ{J>_ެ0իCAJ>J|zc?coY=ѥ>?Pd0GS)^8.R~ V !9jժVv3]Jb~?YjqTA+c<}SqXv}@{W! "%Gu+<3IՇ׽/O-%!)go'>,Zl1\sacm.O+|&O'1 vIdNR5N&TǷNgo+PV>5>ի|i{Ot 0)Sy?C“.իCA{x?ZtN_C[! .'Y!]ZCXm7/ܞWPwO&_s(3ȸvx>1IЃͤ Mgy ("wc]'dVvxR㰱|aV/o+-{aޞ?]o{RaVG! ?!eZXsO)Il^:k:+w.ծ :uԨ}ZV>4Q_ի-[;q.? r.z9=\_Ij//yc73KSuSCe5~}vc^jr; [|;u.,.}+/N]-;!ndNq_NBǿ9'B~lE՝3؆ڔWt 0?sy.; ի !J_TkR/}׷vcPa/wtįi@Ӧ6G~\2B#cK>ߵ'\{:W.>-kw?^|3K SZd0G{|(p>bsߌ:#Op9E5jxP fDi\r8t%G[TRzI_;y,/ߛԨX})Նpa8e9t>)Ǹzxڕ SԦ)Sx,.>VDcKK?6ӧƋz?jb_S;{ars*4>>ES\ؽ>~&sP't7ˆ: /Qy%m{rjĿ{=Vo~WOo:kY?!GJ'-@Bi \O@ڵ@W?}@]A;}Z,:x/j\v=z v}|I{adqS\2B"QG?E/o_#P!DsVrY_~oҟjq^jqrWwrY_ҟjq?p]5R\v=#J[$zQo!jT9,/*j1_Ǎrv3ȸO':gk! < =ѥ>?ޖS/RҤOzx|.g\=z^CF?)*Oo=N ؆ڔ՝3ܼs_uqu𕼀Q_?14y?{^jB1[r.Mk}L)8zWu(IkMnE]KdzeT>_jc^'_=N ܍)l.OSt^ߵsPe,9%zw% ݧUZ|=ڝ\v߫B'NKsZaer5ߜBx ;^iu* x0Ngo_wOm\Sp만իEz8)E>.; ҝP}zT><z?R"Ww>iNCN{~Y!@W&a'y+վ^ޮ@3IՇҝVP+:gkEz8)@ǹ}=a%_ R>C#PNܿR㰱ǮOڼ2W“>]a8R{+=t:W G[Ŕ+P/O %zIpp9E5j`tJ;,/>?V)Z)N@~\@EyGm7m=?l뇯\@_Omx0NOF.իu+]~Gez]_t{@Zt=<4'ݻDXҳVqKT~,^ӧƾCqXv\2B#%_su"ܺݵ0 l{/Rki@ TP/my%N1uC-/ #=P+V>5Z_V^ӧƣF5:=B?jc:x/oC/qXvC9R'o V\2B#@=ѥ>?ރW5 R㰱}Zd0G'd|{J|ըa8W'l]?{"ܺ):w^ӧƺ?VB>9 Ը,{;_!▩?W < Tk@{Ov3ȸ~o,dkV ^t~^Am!?iNBc=Ю 뫐r t ۞qpSm~ZǍr`KwOӯtoP~rm+vz4Cj tq ޽>aOq59e'R{"FObKVPo)P/* ZJ@;zxǩ{xW6ӧƋg~iTkz?V=KV>4xM~iJ\v=vU'dY_\b>Omz\Ji]SjCm={ |K?=<|hONxz OW'ޥ“Z0R㰱+jqr9^d6ƓZSܽ'Nv^@ߴ)OSar}SI-׸~ԥ>s .Oj&랝Dqvծ>4?{z\3=X[WsɔöC b,]F?!:xr?\^y + \v= ա[q#?{a{MxYTIhq>]1ԤJZCjJ^@Υact_V2AnTߴ)Oȸ_Vc$\Mzt9%A(}wt=:ի£Ǎr~]KdzzkV ! SN.jO~C' -AW'Q/VB[ܿO' u*]~\2B#z\xN((sl/i ܿR㰱Fx@ZkZFxQ/>\v=*ovwǐ)Jw=@}>%bVO9~>6ӧƺ?l}϶FI\>ǒ(}x].s؅F>Ǘdz-Ujԭu rB%؆^:x9E?y u.;o kyP">Zd0DIڷQ?#ǍIkMn^?s=N )wmC#xbj*bB#Ilu.; ?Ru-Uj/}ϫWs:@@7^CNrKZk{O' Ҝy?W t\^2/}ϫW + xUklD.נ-:coCfJNxJ_ARZCJ{>]XUx뵘Wu v}GV^8t+!sm>^+:S™|WNr\9Ezqa(p$ԍo EL %Ɯ$4W# D(Fq"8h#0H_j ƚ{xa֚+s$$ <0G&Es90%N 1E.aGц EA 8Q ሠ|Ĺq4bEhw@_0Sx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.@@ҟ^B)( }<`, @H$ ]BE`]=,X$i%|eNx}GlLd6B<`eT"BIETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Drfffffffffffffff4_GEiʙ-t7:+r`pOHٙ[x0?pDA8(>dVM42ETcxqT(y>B~҅aU^΁ /w]\]|%o Rx/o wdNծ=oߛi׊]~>*Rܺ(iKdzz~qt^:z}'|!^#ZWbFiN0>ԥ>uqu𕼇O k@=R㰱_f OEkVE~0NAmʹ迫\zO>E~.\S]FQ@'J\v=|}<1 b)ի~_[{m:/~+ǩ{x=OQ_:u{իF=@ZW] rCJS[Ը,{;xr8t+[);VB~JOTcxA'z`ч%@[Gb(h0%N 1E.a⸔j'R%Hxa%Dh8Q0jE44QDžC[Aig4]0pX`Ӎ&ӍK/NsC(Y<ԒG E b<057Q afC 44ohx8(cz5% @pHkPE.oq#MGxwr&i|Z_8' 44aN0i|hX`/POi (Qfx<(z N 9@CQ4, I45Aj@Ơ]|5#K(Q0<1Ԁ HI.q5CCr 5$ԍ8t+wF8iN&~oRGjbIР`9sN_],WI:^P-=y~ޚo!^^޻oj l~f4YIqKT|@dz\v=YO24']GV+ /}@b|~$+ 0}jSu3 dxIuqu𕼁IԽ|@j?만[{m:zV*n1~m^+9u*ޚJ{r#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0S AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.@AE5k+ qW]}<~dz"+'ȹʷa.^ ^CXvk Uj)=z޶^t@Yk5eի:>5 Gw.aWWI: N蔦&~Ҝ}/ @ ֨P| «5_y>B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4 ]~QnS]$qFW=O@^ OrQ@^'Ⱥ߮ҝ{B=Ҝy?\|q]$W$Yj״?%^#OS|)}ZU@yZ:%jF=>ʙ@L~ 8Il - A8 @GPtAp+TA#Op*=<~dzPe@7B (_V_s*Ǖy0OVIЮv:$iyJի%'BΥ9ot]$W%z3Bzk%z3{#zի-e'/-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGRXt+zO/őU'sV'R )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍHQ0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(bE\$4FŠ0$i`Qt4apӚYCц?0KN@%ډZ_jA Dq_18𢅢Y}Ġyiѝ -Dނ= D0xLqIsoImb&33333333333333334Czk9\e{@@ӄzFWaɭ\mOT#x -e' @ +mD&/iQ(MD-.a⸔sN@_DP% y|qG$N iQ_m9Em:|hg.#Nի@{OvcESOoY_R㰱ԥmOIC oZ#OrtVr4Zx8Y'>Cs:B Jqjd߄Py9o!jm:|haA_Vr4Z/~]>ܺT=?ongoOt ]zS&_wB/R$q%z՝ի~+kR< `Wc T \)=oRIsc_V.?9=(?~+kz~ޓ/ZjO9=ժ4_p5'"^ G!_;sԷYШ w`~>Jv}B+[e5?oIW p6Cc0ia._8 ev*n1|y9Jqqm:|hd'@\9V)Z)N@W!ȸo!▭|K+*[q~o^ҟsNx0Nx#Om:/t`VרW *n@]~FTY_m:<&irr]s⻶c0N%zkΕ7doiO,ZU'Wd}SRմݷw(WgoPm K}ix.2<ҟsurޚj<ի[~}@!Ǔa._8 } 5)@}/I1|>=˗/v$Y}?J>\mOC=|)Ti~ޚo!dz{#{J}¿_ioOuo!׸K`tJ8ezk.CĜvW"縅)Ǔ/>?/W6ӧ!}Z |WqMC{"0>Cde_iʖ<"EnY=<|Xb>Eҟ!V_ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr2K9u~+-{~dz:<}S):S't;_Yr~ޞAVZ,~?~+d6ӧƁL=V1z5<)bE!L:T,=adqe2={Mr}K }GiOPW DGiE=Nac)T,=adq3:Oz @~?~+m:|h*߹jP#ǩ{xTV>4_&Xw!֨P|wbk.\Y%jQ}-5ٍ})0r*P~&_iOoƓǁ~:|kr.}g"(cEUZ/Ɨ\dXi}SP%qsCdeZ^,^ӧƻa{zղ5vz>.'kq8grVvB:] \ y S'j,{;x4@8}<">~W'[dsZ[Ŕq < ?$<Ҁxv2Wo޳v{d |w?oI55RC8dc)#öެ-(?K?~:|j% )8v3z\xN>jm+t~+j;kŔmǫkҀ@R㰱v3ȸ1 Qu.; O~EZX<#J[$KVJlgJ▭|Kz`|@xIW D0>ԥ>_uqu𕼇OWpc<1Bj Nغ~V; Pmǻծ.%;xv3Ը,{;E.O' vrE ۰m:VG`ur~+jeKydk6ӨYC]o't7WPmEe~\v@ʕ z 8Ih ޭ]:_{R㰱?l>.?VvgqXvcoMvT rtwndzʹ=<~J+խ,=$ޭE]->NgoS;J;Oo~\UBݶ\v@z_V.. G%zNokR㰱(WaߊZl>. ^ot']\+16Hx؆ڔrV*a; eJkwR'SS'j^W䖨P}CŔIa}G EˮO)ZxJsiM =\mܿa1z_)jq>4ñESc0I۰GZT,=adqc=Kdz_r(rSdsiM@^a~\v@_bjR;|YMn{݅goߛizn{xf+G-RvV6ӧƁ+yQN'p oh?~a▭|{_CJQKǹZ)״1z%_e5l>.=0>ԥ8v3hSOo_s\v=~\v@VOy+ՊjԽ||uJ{ծW'T \h<Xvߴ{\#){zkիǓq>9}v^CF=SR_qm:|hJlg{OE/o:x/orI^sԷw/5kyB+9uYbRC-Re}{OƘt״#OO\Ol(WJn6ӧ!D- 1.r@$ĎH4bEiƥG@G4K/xwg(WT=lB+,/t~ޚo _%z3{#zy}':s?!ǩ{x⽧4i>N4Q_Fx0~s}?{eT;Dի LKVP kzk}^SӠ9}<~!Vez|(p8}0]ĸ,tz;krre ~'qU)=~+9uO,{;{ppg8TKeKy\)=/ԸRz_rڔrOܿQ\B^9=wBo!TY_~+ki_!իop^ƾE*[q~o^ҟs.!Q:WPeq /XgjWZ¾Crs=N+Z$j ۗ8T~CD_|YMn'@gGrSVF6>׽'_S[.!Q(Ny9ЃCrm}zLZׯ R㰱_\v@UBݶ\v@T+/c<̍}ϊP,SB]\}ɧLk|WŖi|?IQޓ,!Vu{dsxY=<|n;OJo\Jt?>_&1,m_yO~=re'W|aׅE|l}zLߏg._+5jXw _sWc=!U=J"TeR zl]ONMn'C^C2zlL#ơq[N?ac܇Oy_+0M:cm;OŔ9O;R_nkޓ( 5Ps8>>5յt׍'o`AȩqJ.) r8+@Os2P yWt%з{A #QTJ= q(<+ ghN(\,>4QBqp o&@H ^Az/۬yWtPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_04`$H>1O3 @!{NA^ӧƁY9Bqp iE -A8&A J(mOV㣰Ԩp״=mD0N:|h*fffffffffffffffg^s2;Tk]Нݵfffffffffffffff(<+s⻶= _BXt6ܹMZYm:|khdL PaM˃ Mm]k@$*n1B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzPB~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇Oի~O' u>qTcxNVrʔ.Ox>:~CoZXt(71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Drש@4 c!ifffffffffffffffgfffffffffffffffK] 93fffffffffffffffgK5"sgJ)W 9mOp0YP`,Ɂ$' /k:4r w=N qޞ?ac܄A(2FZCs/ tQs[;x?\|q]$Wsq;vҝLM4v?kxV + :ZXt+[ ǗʖV h0LGIQ}GqXac/őt}P#!K.RjbIТT*rKaWKN{U>):ㅕGTϫWW_ [t^> AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<Ԓ(Z8a!LGF@DžiC 44ohy)t(JȜ1bE\$4FŠ0$i`Qt4apӚ_0֌5?0KN@%ډZ_jA Dq_18-/8yiѝ -Dނ= Gц`ӏ KhzH h4שA!;fffffffffffffff*fffffffffffffffglvbTvb<Fujoi\ s@'' 2`~  /YᕵǺ*9r ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[GTN?3cs.fffffffffffffffyS333333333333333?4 fffffffffffffff(8SVsxN`(88Y'NO' u* ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GTN4 fffffffffffffffyB @ @ @#xA @ @ @ @ (p joi\ s@N0NAmdV.#p}A7?z O}XU|WB'بG~o! WWI:;NݴSd?]ի%'BΥ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{xrwdNծ=oߛi׊]~>5RQG\/m_WKNhzH h7 EQK1|qkxD<;_4"jIt 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B=sAFސo05E.\ԧիi][^2A`~6 ~՝<~Igo'(W).8@2h.SVsxN`(N0NAmdR~[u/Vdx:xD!Mq(<P#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sV5g4W(N0NAmdp5Kz;yN{ OB r*n1bFP>?s[ZXt+JU>):< }ZJCR 5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@r0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Dr(ffffffffgq8N3333333333@K<p@8 ZYm:|hP`,Ɂ$ds,8 rPe@7B (_V_s*0OVIЮv:$iVר6E]$P:t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b  8#>5fffffffffg7 '' 2`~ p.[ǔP#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_01rj@m:|k򊙙-t7yWt$n_88i^fffffffffgewBHjx\,>4P`,Ɂ$p |`s2D @ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{x5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[Gffffffffg^8 ImBܿpp~6ӧƼ(uc4P8 tי(c4P8 PW 9mO[x0?pA |:6΂ǔP#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQ( W bIР/u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Z+ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WfJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]G4(N0NAmd*zk;[x0?pA9҄dL H ]bIYYBqp o&@V2AwGZqּqP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9MoImb&ሠ 8Q1.r@ 8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ s<ŢqF{A8zQ0{F hK`r' oF 78h#<8#L8,(KA G8ᆴaӐ?/@`SPEz j#HDžqh_@5}y(yZr4ghJImb&o Hނ=5(xR\F@[Gz}'<mOy*C|ժ<~dzP#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sV5fffffffffffJ(33333333?,A\mO{R㰱)%HWsF 8Q0j]xsN@pqzC*1dX^@rU_V6ӧƺWi rP}bFǹײ7Dz*V6ӧƁj 0HxN*fffffffffffffffffffJ[x0?pH ' z`U^Li#`t "Q\mO)zW1&q>4_T#x p6\mOO\O7ǫkנ-:c}X^뒽[t9\;\Ouի(n$H95 @!{N@ӄzF$Q\5c@5)Ǔa7^%!TJIТgiNԨ}ZNacSK7 1#,8@5qa8Ժ((朁t,j-TcȰҀt\mOurV);Vq 0>y@7s+do]eT>\mOQ95T#x -e' @ (X $ OD#Q Kx%Ӑ=.-xjF41i_0\Q5CZrT(mOxi}sԽ|zh b)zKdzRҜy>' d+kSd?AiY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4P0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rnp`f9,>eD5zOPNo!ب )ǓǍr`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&DaX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; ( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(iKdz"~1FSԸ,{;]:c=5իk@;YV_ZX@{OX{gozghd~Rv,{;xNՆt']\Z,@Zkղ5ߛi~g~ob:_WPm@(ի5RA 4{յ=C~+cԸ,{;xOy>*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hPv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1zW'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁Pffffffff5p,A4W;\Ouի(H w0֠|:|j!Ni pAE^F>YRy>^p_!BJ}o{o _+ +acS*V6ӧƽǩqXvc$ LH+8@5qa8Ժ((朁t,j-TcȰҀҪq>5}ZX[Oe+;7>=PFx^Ct9E5j$amO3333333333333333333% - A8$f^=0r`Y|_ w0:xgr(6ӧƔJիÓZN/8V 6ӧƁW'.'ߛٍ}Zյ1,/nzu^jm:|h.'~ WtvWX $ OD iM=#d(1”0]wS{% yq]$Q]KdzeT>\mO{R㰱)%HWsF 8Q0j]xsN@pqzC*1dX^@rU_V6ӧƺWi rP}bFǹײ7Dz*V6ӧƁ(tE @ R۬sMj^ӧƢi=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O`gf;X}wԥ;ǐVqU v}q\@ Vu.,.|>8V*a; ~z xV),:O6Өu0:WO~\pzwBoW Ex/f dj?>GIZN"})ñ|$XvGZT,=adqc=Kdz_r+;jӄZ,0>ԥ>e5R_v=~mQ맏S<)jq>4(;\OE8v3 -:4;#Zz!w(ܿu-Ujtځ=N=KǫƋ!2<\v=xv3Gm7m_ur'kqU v}q\{-}`}Jpf~1FSǗ:go_Wժ5,/uJoWOSqm:|h&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IiMD-.a⸔sN@Az/ ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9MoImb&ሠ 8Q1s/9 ob({CpqMI.%4E5:=1 8VbBAڵr_\z>5A\}S(ujdz?W'])k5|K˯]{N}xS1p뒽[Gm7m}'؆T55RC&$/ =ܺK״׷*Ry? VON;NS{Ҟ>Oksju:|kYFWXv/xP f]݇m?z>5<~dz՝F.OՅ}Zxgr"? ?Kzs4t0֮V{z Sv=~mQ|MxmJu:|k@xVz 8I[^xTY_}ǻi_Vv,1>]<"öǯ\5j)8ODIk^(`}ϫWY {1VcMjPXz,Cl>+pA0F#?5n{o{O'n_9gmڵsrkWKNqxv?|v_ }Υm@kFsrkWi^,;lz^jAA(90[T{NZ {">4eT>\t|P$_ecVנ-;붔y P}/T:$iaZ950WzO1'o!j0֮6ӧƋ઄o A(\7ffffffffffffffffffd88YH Ypp |_>U /v289OB%tҝPsrkWiEUB7pGjt0E{1\zzӦ7xEN+վ\mOñE[x?ZNҊ@@A"DÓZ 8IlA^F>YRy>^p_!BJ}o{o _+ +qXvJիq\v=>?Ĺp9"h[&ӍKi@_0ACTcx=BFx^Ct9EÓZN(UB7pA|]|[u "@aɭ@ tB9M5P9o9V0NAmI'έRy?WO' $՝AyWi@ _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`Vר *n@]~FTY_m:<&is@!|Wv?,f W DoMvT޽>OkҟTJ/Sd?]/t>?sPiKwlTAxirY_{ղZ/Zj'_!R{/r]׮Ԩ}ZN/>ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prT,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժ 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr *~W -mOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=*~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@rP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@pp ,y T<);bZ/8l>.=<`~qm:|h@p ,znf5|)j)յ?s@bFONy;xv3Y!J}ZD@Ekի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@1Z/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁEc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծ'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0rbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_0B~҅aU^΁ /wbFP>?s[ZXt+zO/őU'sVӈP#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R8t+c^t ><<"*ޥڌxy@[ޞ?ac;&_Wիƒ7\w Lpz۬D!z#!P fL  ի:>5 Gw.aWWI: N蔦&~Ҝ}/ ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZKNJrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*RܺB8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&Pffffffff5th@8mOy5fffffffffffJVש<@pի6ӧƊ[x/psW &Pe@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghGiE=@.O~],WI:_sB8Il#jbIЯqV>S AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_04 ⳗ_?F=SR;1)b,SqXvRS'Ҥ?ա[7~qbl9_0N7]~FWO' $z~ޓgVXN<_]<`,Vv!?m>\mO _& ⳗ_?}+jOm=?oI=N+Z{u;zx._t+bҜy2Cz#+O+վ&>]`F_\z'b܍9kZJ_RI{z OK73p!ȹ!Di_S[|իT8}<~P%qC >m]'ب'OP@0?r9 ը랥΅DkVӷ/Z)zL;l` Y˯ӟoRF\qA_ 'qTcxsZt9_2Xn@]~FWbBW G\ qKVv>%]-8w7doiO'Bq']U /v289OB%tҝPsrkWiEUB7pGjt0E{1\zzӦ7xEN+վ\mOñE[x?ZNҊ@@A"DÓZ 8IlA^F>YRy>^p_!BJ}o{o _+ +qXvJիq\v=>?Ĺp9"h[&ӍKi@_0ACTcx=BFx^Ct9EÓZN(UB7pA|]|[u "@aɭ@ tB9M5P9o9V0NAmI'έRy?WO' $՝AyWi@ _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`Vר *n@]~FTY_m:<&is@!|Wv?,f W DoMvT޽>OkҟTJ/Sd?]/t>?sPiKwlTAxirY_{ղZ/Zj'_!R{/r]׮Ԩ}ZN/>ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prT,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժ 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr *~W -mOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=*~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@rP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@pp ,y T<);bZ/8l>.=<`~qm:|h@p ,znf5|)j)յ?s@bFONy;xv3Y!J}ZD@Ekի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@1Z/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁEc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծ'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0rbiW P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9MoImb&ሠ 8Q1s/9 ob({Cpq(%G4E8t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hB~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*RܺS AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.4(\,>5g4QBqp o&@-(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 4Q@hoIxiv_xZyO}SuZ{u;zx._t+bҜy2Cz#)<~V?v~qRǖP2x. ӟ?ի.ps1QJ\)=r.{Q~WŔ&_$jm]'ب'OP@0?r9 ըgcz+:C[NܿOEkc,0rA!Vr4?԰Q/mr2 'qTcxsZt9E%:iv!J!JurzEyGm7mYVeKy=SxIЯf O$iyQ`:xl0v?kA(U'\9'𨲾uayMg>rl"}ݷwKu/]-8t):xE^< Q|>:$iye9t>?sPiKwlTA(v@ ⳗ_?dgVEk`Ijժ`|H=ȹJueT>\mOoRvҜy> -}Y>ޚJ{wn5Oj-X^DZ )Oosb|}/ *a; 7]~F%V{KuU'+"_՝Ǻ46CPS "q_s9%5ER rq|K{]~p/>jGm7mT)Ti_t{%z/!d-_+έ?vXծk^a{sӮJoWi@c<tq>5ݥ@@A"DÓZ 8IlA1”0]wS{% yq]$QJ\v=;/Rjm:|kzgiO1.r@$ĎHш1L=A%Ӑ=.ax^P ~CP\mOurV);Vq 0>y@7s){#z|{/Rjm:|haɭ\mOP*H8 n{.> QE-H w0֠|:|j!Z\q((朁qh#R4(4KN@IӐ<m9@m:|hg.#Nի@{OvcESOo_s\v=tz=|xhc$ _\z$iP0N7]~FWO' $z~ޓgVXN<ի[~}Cq իr/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> A@88ycsժt~\v@UBݶ\v@0OV>4PH8yc73y>Gnt O #o~mQm՝;琥>][^P"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  @~\v@ʕ z 8Ih ޭ]:_{acǗjsU v}q\~R㰱r,}5R)8z Wݻ ?6Ө})^oe54&mz/o!lwu;zߛبksWT,=adq/N}|WVܝDVsiM@^mz\v=;t7V*a; W[],f W G:$iy~CJS|yJoWPm@JkwR'SS'j^-P)kám:~@\s SڵtOWA 7kt+r]r`FzLqKTի~.'ܢ;O݅goߛiy+խUBݶ\v@;xv3Ը,{;E/!RC=QJzVz 8Ih ެ0իCJSS[E/oacu>x;▩;yWi@ESc0I<`,#O߹ñr8ioȸbjWr^=RVO޽O}sԽ|zh b)acWc0qKVv>%W!~,PmǺ=ܒؽ؆ڔaٍLCe=y}SqXvq_ZJ]<"QVt^>>:=6ӧƁ@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?acQ@~ծ 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծ׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qӦ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9F+/B+@G4H r`{nJkCԮ^U<p( sy5rm:|hQMZYm:|hd@$' z`P#qǭP9JՅWzk:(}q<`Jծ>8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQ+t]$Q}Sv*o{9%ի'BǪqZL*8_#O~ի:x/o wdNծ=oߛi׊]~>5R)8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)):P*߹j+y=K(wdNծ=oߛi׊]~>5R(']GB~҅aU^΁ /w:~CoZXt( PhzH h7 EQK1|qkxD<;_4"jIt(4E8|:|j!) +E#J\v=sƽu8{O#+վC[҈▭y}Ю@ҝ`}J}Yj+y=KǺցz4ac8)\1 []>x8Y6Ӣq){WRzV.\S]FQ@'J\v=|}<1 b)ի~O' tYZǯqߊ^>=SVKk=#Oms|ժn^=`}JrW}ZgoQ@'WT>]#Qիu/Qxիj?COJOB<ٍ)==Lk;9؆({BN0ծ%GNrWc;'j}^C7<0H h7 EQCFĠC 4QbFP>?s[ZXt+zO£< }ZJCR j?만[{m:zV*n1~m^+9ueJS]B8y0L Z'Btc۶bl[^ڵpd]$P0ԧ.PZXt+[ ǗʖV Ġ ٍ ▩2 /+Ը,{;E={N/dB8y3x?Z'Btc۶bl[^ڵt@rRZXt+[ ǗʖbWc;ײ7Z,ٍ ▩2 /+PR㰱:|hQի'Bzp @b|~$t]$WY+Rs8_#O~@V.Խ|@1Ef]>x8Y6ӮkbFuⳗ_55RQG\/m_WKN(4a$qK"(F%H8@5qa YNJ, h DԒ# q$hh !4೚h;F&ӍK, j"F{L 8i/9\Z8a!LGFP=B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4<Jи>⛀]k ).x/X~k\>%%h\v:^F `b.?l <@"\<"/_S^ zKU/ĭE - AH$X~k\> \|q]$W:|iNԨ}ZYm:|h[x0?H  /Ƹ|J(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVt@rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=%P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO244Q@hoIxiv_xZyO}SuZ{u;zx._t+bҜy2Cz#)<~V?v~qRǖP2x. ӟ?ի.ps1QJ\)=r.{Q~WŔ&_$jm]'ب'OP@0?r9 ըgcz+:C[NܿOEkc,0rA!Vr4?԰Q/mr2 'qTcxsZt9E%:iv!J!JurzEyGm7mYVeKy=SxIЯf O$iyQ`:xl0v?kA(U'\9'𨲾uayMg>rl"}ݷwKu/]-8t):xE^< Q|>:$iye9t>?sPiKwlTA(v@ ⳗ_?dgVEk`Ijժ`|H=ȹJueT>\mOoRvҜy> -}Y>ޚJ{wn5Oj-X^DZ )Oosb|}/ *a; 7]~F%V{KuU'+"_՝Ǻ46CPS "q_s9%5ER rq|K{]~p/>jGm7mT)Ti_t{%z/!d-_+έ?vXծ4_T#x p6\mOx"}ծ=[^i<"\V6ӧƁy?]o+jm:|kJ)mD&/iQpOH (5c@5)Ǔa7^%!TJIТ,{;Jv^Ct׸.; ҟ b\䁸Ie9 ob({N5.^,Rvs2`}AoRFx^Ct9EÓZN(UB7pA|]|[u "@aɭ@ tB9M5P9o9V0NAmI'έRy?WO' $՝AyWi@ _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`Vר *n@]~FTY_m:<&is@!|Wv?,f W DoMvT޽>OkҟTJ/Sd?]/t>?sPiKwlTAxirY_{ղZ/Zj'_!R{/r]׮Ԩ}ZN/>ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prT,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժ 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr *~W -mOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=*~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@rP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@pp ,y T<);bZ/8l>.=<`~qm:|h@p ,znf5|)j)յ?s@bFONy;xv3Y!J}ZD@Ekի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@1Z/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁEc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծ'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0r\,:|k-@2<<"RpC@xAGjNiQEW=WW_ [uYz{xua{}XaÁxgmxGao! ѥ;/Rjg7iEv ζ^tCJM 8pQALq;s T#x#J( sxNQMZYm:|khdL $wbQA7?z O}XU|WB'بG~o! WWI:;NݴSd?]ի%'BΥ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z j@B>5SMD-.a⸔sN@_DP% y|qG$N iPRa>4 ⳗ_?F=SR;1)b/u.; ?=JVJqT><1 pծ=LM4(mO@g.#Nի[~}C=?oI3d,ԧO - >gosCt9@hoIxiv_xZyO}SujOۨY1r]<~^ɗЮԨtO+վ&>]`F_\zd \>< `Wc T \)=oRIsc_V“"縅|YMoOeKVP'!V!`PzT( 9|W񝎹[xTK?Om;r >ޟA!Vr4?԰Q/mr?@]A;bFǐO6ӧƁKt Y˯ӟjBBrv)jnĿoMvT޽>+ `tJ/F0NzWy0#In_"}ݷwKu/]-8w7doiO,ZU'ի ׸!)Vc S԰/aU v}q\AVr4<%-ZCX=go) T,>\v@:IkMoW/r(>xo.m_|ժ)jn˜FG[B,/lyWa1W6ӧƋeJYD]o^%#Pq8}#@j*?/d}SX{jb ,{;xo9'dgVEk`oMvT|~P+j|)jn;RVv_qU v}q\~PT;}rdyݥ>i=5ٍd|y?WO' $qX}˗69~ks:B J}G>rW - >>]`F_\zh<Ҁ܍9y>@}/I1|>=˗/v$Y}?~ի|1 ?]Q/]-8w7doiO$Y}^c>Eֽ^/u+b$F%=Oq5Lo!N;Dcgot+sBɗ]_jm:|r\իzٌm;,C>\v@_]-:xD/ݷzxir| >CP%qF=J{% y<ի[~}C<'Xw ⳗ_?w=N,>eD5zOY˫^Il#=YIՇҜy>6ӧ!4_&Xw!֨P|wbk.\K J/41/%5_rNUQ~ =zd޽O} b)}SqU v}q\~*_ak\X]2={Mr}%={N/u.; ի)T,=adq3:Oz ? ~>4dxI}sԽ|~+kiErkq8grj'Av* V JԢ@ZkSY!Ea7/XUM׮-:c{Sq~ö{Nt_YȹJ//>.~4"CKz5j+}jV; /Z^,^ӧƻa{zղ5vz>.qYMn'CW}'Qkao!JqW'/{\8~dzD^j-ikq8got|YFi@~r;;]m?zAx{O[]-;pS]G:x>q(z]z!o!goիC,{;xoO AJrW[\v@oYڏRIt  ao!Di_թ'viQ )8v3z\xN>jm~]Gmx{ mzPѥ.; <cFH^8io'_!R{/ )O;xv3oի:x/o c<1Bj Nغ~V; *a; wO'_\xN~P$c<1ޛw<#ZJumz'؆6ӨCsRVQ~P`gf;Zy~jc0N?y>*a; ՝;\v=_[K;i_9J"z۰m:VG`ur~+jiʖV~mQ;Oo~\UBݶ\v@zp rV; eJw=$oV׮ R㰱?l>.?VvgqXvcޚ]=z+j݅goߛizxuVpz MvTFm:՝LT5}C~+jקG~>+j+yNrW[4&/zu.; ҝ:_WPm+խV3뫐#LM4v=\f4_1 QR㰱+ñr8ioCy?S[X{Il^CJSc0Ƌ!2<Ը,{;xZ/P%qa{W}Zx/ovҞki@2<7Xv^^ӽ\kP%qO,{;xo~=ˮOőov=5ٍd|y>ϫWiY˯eT>_jc:x/oZt| WG\->]>ZCP]XFqKTի@~+~4àOwQ~x"}gנ.giNJn6ӧ!D-ӮEĿCe=q~\mO@@ZtG€k7 SGs.>kc>_!d-q_s!2ի~WA 7k9@)#PA`5c@5)Ǔa7^%!TJ>90>ԨZ/=95~dz0>Ԩ8go??9 nbG$_sF 8Q0j]xsN@pqzC*1dX^B5R@JlgzFxOt ~CRii|Dži/NsC,jIqh#"ӄ1b ñW/K𨱏^m@C!n}F?C<)KdzV; zы$k. F8iNJnPN_Tcx^C6ӧƁ ?do]nkޓ?=v^C:AZ䖭ZreKy @rxCP%q/^ )N*@Y!]Z@Ӧ5N+ d4IЃ(I5j^>׽'zAx=@[cVǍ~3 P}@oM:cm4(dL Ҳ8 tJ[x0?Jޤ+YHTr 3 Eָ:xDx6!Q,A rd pZ^`SWzǃIA.)5T"BA%p o @D2+e #O+*w=Ns;d]c!/r@@C/RD @ J(*n1?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0jE /NsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' iC(R&4-yq#L8,(KA G80֌5qZr(LPEz j#HDž-/8%4KN@8oImb&o Hނ% ц`ӏ KhzH h4[x0?:.r|0~k.mCgV1u, @>(\%!\mOR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|Jt+ (җgo0Nxr,|+]owdҿʹ迫\zO>]\]|%o!Ը@ R㰱}'YSN]>x8Ym:/~+ǩ{x=OWW_ [u.)#PQ_16HxT9mBܼ{RVu.; <0H h7 EQCF h+@pHkPE.b\@(MI.<+1L=|č qEopY4Wj4h8Q0j]|,D0pӚ4(0`,Ɂ$f^=0r0e@7B (_V_s*wtelWWI:;NݴSd?]ի%'BΥ9r5t\Tv]\]|%o!ǩ{xb3V]<`,ߛisDZP#qm:Y˯׷*Rܺd#~ۗd6ի'Bf71ypP(\Ĺш1L=|ø 8E@`b&A1aN4Q|č q\$5ƜsMڇhxDqtQ0`INhqeag4RKAg 1$4iCHaq8B=sAFސi@֌A("pP j)pxӌ o<ø_`YFGцPq' 9 hQ?% @_D-/[Gц8/xWe o@_AqJhq0ޒ8M#0z j4eT>\%R״~WpOH}7=mbf >@B>5HHh HAE @ @ @ @ @ @ @ @ @ (88YA8ֺs=D OiJv^CϢ\%!]{NUq 4 O[u #t OD %!R%w3(p(@ @ @ @ @ @ @ @ @Q@' -~wGmOB%nxNS*V}) t?J8Ionz۬>8|:|j!) +@ @ @ @ @ @ @ @ @ @P qp opu/Qx,{;@6ӧƔJիDJB>4ҪNiA@@@F1O3 @!{N@JB$Jf4P$  @ @ @ @ @ @ @ @ @x`, xk]wqxv?t "P';/Rj.OӄzFP'S:^ӧƢI ( @ @ @ @ @ @ @ @ AE &x^)@G ԧA !`P' -W Z뻋^SXw!7pu:|hUƜ$77=mbf >@B>5HHh HAE @ @ @ @ @ @ @ @ @ (N0NAmd.ӆG' Ax~bY>}(iJv^Caɭ\mOU?A Wi@pE{1kVׯ@ZtO%zի~.'~ WPN޶@@A"DÓZ 8IlAP @ @ @ @ @ @ @ @ 8`,Ɂ] + l|*5P;/Rj0֮6ӧƋ઄o r:U\iM=#A ov!U't ^ӧƽ\m VONՊ(@ @ @ @ @ @ @ @ @Q@'R>4WS'sf:Mzt՝7? /S\iM=#zwo[uyWt ( @ @ @ @ @ @ @ @ AE -A8 Y{x.`eXBfGB|SY{x.rѥ;/Rjg7iE @ @ @ @ @ @ @ @ @(dL H$)|$^ h9\>4eT>\,>4W! @ @ @ @ @ @ @ @ @ (~6ӧƊ[x0?p&]C)^S*Vsz>4P  $ @ @ @ @ @ @ @ @ AE -A8@&]C@n ̏OX]C@#KӣJv^Co^ӧƀn ̏OX]CBB;PpOH89E @ @ @ @ @ @ @ @ @ (88YH ^xk/o4xNS*Vsz>4W! @ @ @ @ @ @ @ @ @ (>?H |$^ hm"Y+^ hiztiNԨ}ZYtm"Y+^ hEl9H90]lB;PpOH89E @ @ @ @ @ @ @ @ @ (N0NAm^?u )^S*Vsz>4QB @ @ @ @ @ @ @ @ @[x0?p @ Y{x.P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RAz/(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.bFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\FRH h4 @ @ @ @ @ @ @ @ @'' 2`~  !O'0}B Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs+VWI:QB @ @ @ @ @ @ @ @ @[x0?p/^?u (ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G @ @ @ @ @ @ @ @ @(88YH R /^?u (ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M( @ @ @ @ @ @ @ @ AE5jg7 9r[x0?pH |$^ h9ETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Dr @ @ @ @ @ @ @ @ @'' 2`~ A /u/Qx,{;F.[cQҀ)qXvSf s>@KVJlgJ#ZB7Jv!)goի:x/oW#ZP җgo0Nxr,|+]owdNį׸zx/oj+y5djz4ac{O#ȳ!2}Z}tp o~mEqw]#Qիu/Qxիj?COJ<~dz.'f42Cb)z :?Vq]$W%z3,Rv؅9(^?P#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1GD֠\$4FPZ_8G"h  6ӧƁVr4Zǹt^>=\f4_1 Q=NacGJNղjS'jd߄Py9o!jm:|h/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oIP0v2  ⳗ_?ޥڌhoI m;7><8V>4Q@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDRz Y˯ӟ}\ +VGs7/|Uv?>ϊW:ʖ{;ߛײ7-zS*ޞ)Ebl=N<>|ժ)nM9EVr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89E X{ ⳗ_?,,Ijժ`|@xIW D;}ǏtiOlRaVDjrKZk}Z){/Aľ5xw;oCPqKVv>>*4/=ܒؽ/dgVEk`}Z GV>4_Pmg.~o*W% "08zՆ/9.Oo6CǓqϫWAW'QV; zUBݶ\v@T+(a8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA(T v~#O~ի@{O_\xN/ӓ[,{;T(y>B~pgPb._%]BVߏ]}ߒ΁ / }'*¨pnp5ivҞk't\ EQ}V5 G'>ö5dc״p'kq8grVvB:] \ y S'jq8go|}|OGݷժ=x ~JoWIkMoS[,{;x4@7JϷoY;i׽u;~ޚo!ӆF2?!_uE?r y;~\v@N?aczy2SZj>;zz O~CXw O﷫ y #OOy>ö{N!?iOñԨ}ZtW!goP#ovt~+j;kŔmǫkҀ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇OPv3ȳ,>OP틧~+jtǍz,znf5|)j)յ?s@bFONy;xv3Y!J}ZDEc<1 [WKusU v}q\~R㰱ܺ<`,_aOQ@_s݅goߛiz?V3뫐#_W MvTFm:՝LT5}C~+j?s(q_*T{14&}/zwGo}zgo_թ'T,=adqc=KdzȳeJ(O'_Wv,{;xN%zŔӄյ@Zkղ5ߛi~g~ob:_WPmĿo޽:;_WW_ [vru#ZA 7{յqXvaߊZl>. ^ot']\blW )N9+վ\UBݶ\v@+խK !O;iN<իX{_{$B,ծ Kʹ=.]r}1N?j?c_W=$ޭ]ЮCv=ǮOu37-RV6ӧƁv3ȸrpf ?v=~mQVU v}q\~R㰱ܾ\mOgq>>O' 불pf)jnǹr.'؆ڕܢr!ԵUSi_jc:x/oC/˜({xCqXv9Rմݷ!w<)T,=adqw$/E!)ñvcESOo_s\v=~\v@VOy+վ]9}v^CF=SRծ  ~9J"ڵǍT{y9بs}RPtq/;O{F_Wi/1”<)Ǹz:lpOE8XyWY ~\v@<)bo!jsiMQ@)#PA`5c@5)Ǔa7^%!TJ>90>ԨZ/=95~dz0>Ԩ8go??9 nbG$_sF 8Q0j]xsN@pqzC*1dX^B5R@JlgzFxOt ~CRii|Dži/NsC,jIqh#"ӄ1b ñW/K𨱏^m@C!n}F?C<)KdzV; zы$k. F8iNJnPN_Tcx^C6ӧƁ(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(&1s?I1E/op^?^acyWPm K"}5#_s z5ժ M:c\,CK9LoR!Vu{dsxY=<|n;OJo\xN0 Ӧ6CŔ={ |K"}ǮOv3]^;/^12~?y?C,{;/|zñޥ}L+OPq :΁1;Onkޓل)N<!]F=эCiNKe5~dz<:8x;Nye5'B~{ۇ(tZ\q((朁P @ @ @ @ @ @ @ @ dL8dq]r d.[cQҀ>4eT>\t|P$ڵpa>4 ~O\O7+VmzLo ۞rW}ZN"<`~E n$H95 @!{N@ӄzF$\9.%Fሠ 8Q$ĹbG$_sF 8Q0j]xsN@ACTcxײ7Dz*V6ӧƁ(@ @ @ @ @ @ @ @ @QMZII' c|q]$W)!;j'~ի,p o~m]S״/R-i w“@&S[i]SN CJSr]r`Fv28:|j?Vծ r '94OpzW1&q>4_T#x p6\mOyD\O7ǫkנ-:c}X^뒽[t?y?]oXիn$H95 @!{N@ӄzF$QMr\J%@pEtIs<$ĎH8@5qa8Ժ((朁t,45h DԒ# q$hh h[ƜsLi<;4Eq"R#i@_ii|Y<ԒG E b<054j"F{L sC>Ny@7s/do]eT>\mO3333333333333333333333%5k1|N)\NcOؕ3333333333333333333332QS333333333R\IJyǫk׸)!;j5ߛi{]`}Jurޮ@_~=r`.ӆG~_V)t4}{Nիk1|N)_s{/RjP#ޮCVW44i\իp!2NW|*5rժAm~o-Tb>B~ҝPǸ*Ijժy?dX^vjW m6b)\{*qtҝPp״rdB*,R{a_NMn?ac܇^㴧vZ!o}}95[^ ڔW!z.ǹ~z\\t(2FZCs/ tQs[;x?Z'Btc۶bl[^ڵp`d]$P00ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o#ի~O' u>qTcxNVrʔ.Ox>:~CoZXt(71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -DrffffffffffffffffffffffffffffffffffffdOpP1gu3333333333333333333333333% @ @ @ @ @ @ @ @QALq89]s싶(Pp( sxNSVsxN(88YH H$7 qDX /iEP#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G @ @ @ @ @ @ @ @PcsFNyWt,ZU<  rg79EdL  @+0ƍ`s2xOQ@2FZCs/ tQs[;x26+k+ zю'nSFmzjt@rR@jbIЮJlg|*; Oo_*[rWc;ײ7Z,6f4_O&_#Zj(#׸_R㰱:|h(']GV+ /}@b|~$t]$WfJ}Φx~,=V.Խ|@1@Wp0NAmʹ}Zبx])Oo(9ux~Cő?m2xWt@boImb&ሠ 8Q1s/9 ob({CpqMI.%chlj(¸Hky78,+ц"R f$ai椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҁ1)tP Dࡍ(R&4-yq#L8,(KA D 4NsCц?0KN@%ډZ_jA Dq_18-( ހ<<-93a$qGa5#z0xLqIs(4a$qQE @ @ @ @ @ @ @ @ @(J'R>5yWt8xApx0?pDA88Vasn ! =A\>4pW! @ @ @ @ @ @ @ @ @(88YNWxmdTj9Cm:|iNԨ}Z95*H8#jm:|h3ȸ~of4Vq No=:Vq>4ñE[x?Zi]`$H;rkP>@B>5 4H8  @ @ @ @ @ @ @ @ @@I\ ^ӧƹ PpH8O&@H ' z`m"9]+6ӧƀsJ$ J(@ @ @ @ @ @ @ @ @QA$O:|hx`,³/\]~[cѨ@r +ծ>8)^`}AO,t״;znEp^ZӄzFmz޶ /iEpP@ %QE @ @ @ @ @ @ @ @ @ ( ^ӧƊ' -+0z`=@>+ ᱯZ:<JqlI]{NW=\e{ի8IoV׮n ! =B>4W! @ @ @ @ @ @ @ @ @(){N<+<A 8W< A8"A +0_9Xew@ xN8Y+H ( @ @ @ @ @ @ @ @ AEÓZN(UB7pA|]|[u "@aɭ@ tB9M5P9o9V0NAmI'έRy?WO' $՝AyWi@ _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`Vר *n@]~FTY_m:<&is@!|Wv?,f W DoMvT޽>OkҟTJ/Sd?]/t>?sPiKwlTAxirY_{ղZ/Zj'_!R{/r]׮Ԩ}ZN/>ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prT,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժ 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr *~W -mOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=*~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@rP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@pp ,y T<);bZ/8l>.=<`~qm:|h@p ,znf5|)j)յ?s@bFONy;xv3Y!J}ZD@Ekի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@1Z/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁEc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծ'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0r8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R4QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4 @ @ @ @ @ @ @ @ @ @ r`{) C UQrU<  rg79Eի6ӧƊ(N0NAmd  ³/\h m<+ tETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Dr @ @ @ @ @ @ @ @ @ @(1ɂB#@G<+rd|0j7P*ǁA 8P,>4(\,>4QBqp o&@H nAzFn9]^ӧƊ(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Dr @ @ @ @ @ @ @ @ @ @(1ɂB#@Gy 9U<88 (0Ym:|hQE5jg7 9r[x0?pH '1]!#6;1D*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb& @ @ @ @ @ @ @ @ @ @ AALq8<;>+h!m%|rU<p@8P,>4([x0?ptq8D}Pe@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghGiE=@.O~],WI:_sB8Il#jbIЯqV>S AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr r`{s6;0P*ǁ 8P,@k6NSVsxN`(88YH  =0rdL H nիlvcέETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4*n1B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzP5g4QBqp o&@N%gCA8gr(ʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]G]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z jS AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr @ @ @ @ @ @ @ @ @ @(1ɂB#@G @@op@pdiqxv?|ժ<~dzb @@@uqxAETcxqT(y>B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b %xP8( sxNPYm:|hdL | k#OETcxqT(y>B~҅aU^΁ /w4Q@hoIxiv_xZyO}SuZ{u;zx._t+bҜy2Cz#)<~V?v~qRǖP2x. ӟ?ի.ps1QJ\)=r.{Q~WŔ&_$jm]'ب'OP@0?r9 ըgcz+:C[NܿOEkc,0rA!Vr4?԰Q/mr2 'qTcxsZt9E%:iv!J!JurzEyGm7mYVeKy=SxIЯf O$iyQ`:xl0v?kA(U'\9'𨲾uayMg>rl"}ݷwKu/]-8t):xE^< Q|>:$iye9t>?sPiKwlTA(v@ ⳗ_?dgVEk`Ijժ`|H=ȹJueT>\mOoRvҜy> -}Y>ޚJ{wn5Oj-X^DZ )Oosb|}/ *a; 7]~F%V{KuU'+"_՝Ǻ46CPS "q_s9%5ER rq|K{]~p/>jGm7mT)Ti_t{%z/!d-_+έ?vXծU /v289OB%6ӧƔJիÓZN/8V 6ӧƁQk^a{sӮJoWi@c<tq>5ݥ@@A"DÓZ 8IlA1”0]wS{% yq]$QJ\v=;/Rjm:|kzgiO1.r@$ĎHш1L=A%Ӑ=.ax^P ~CP\mOurV);Vq 0>y@7s){#z|{/Rjm:|haɭ\mOP*H8 n{.> QE-H w0֠|:|j!Z\q((朁qh#R4(4KN@IӐ<m9@m:|hg.#Nի@{OvcESOo_s\v=tz=|xhc$ _\z$iP0N7]~FWO' $z~ޓgVXN<ի[~}Cq իr/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> A@88ycsժt~\v@UBݶ\v@0OV>4PH8yc73y>Gnt O #o~mQm՝;琥>][^P"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  @~\v@ʕ z 8Ih ޭ]:_{acǗjsU v}q\~R㰱r,}5R)8z Wݻ ?6Ө})^oe54&mz/o!lwu;zߛبksWT,=adq/N}|WVܝDVsiM@^mz\v=;t7V*a; W[],f W G:$iy~CJS|yJoWPm@JkwR'SS'j^-P)kám:~@\s SڵtOWA 7kt+r]r`FzLqKTի~.'ܢ;O݅goߛiy+խUBݶ\v@;xv3Ը,{;E/!RC=QJzVz 8Ih ެ0իCJSS[E/oacu>x;▩;yWi@ESc0I<`,#O߹ñr8ioȸbjWr^=RVO޽O}sԽ|zh b)acWc0qKVv>%W!~,PmǺ=ܒؽ؆ڔaٍLCe=y}SqXvq_ZJ]<"QVt^>>:=6ӧƁ@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?acQ@~ծ 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծ׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qӦ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9F+/B+@G4H @ @ @ @ @ @ @ @ @ @ r`{N;D@.%x 9͇z~>4(tS33332QBqp o H IppIQ\P#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sV]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z j@B>5i' d+kSd?A(mO@g.#Nի[~}C=?oI3d,ԧLZx8Y'>B~}ZN(aA_Vr4Z/~]>ܺfP՝<~/1uN<! JOǔ?aW}YzL}Z GV)[}(<~iϏXU O~CԸRz_鹘ը.?9=(?~+kz~ޓ/ZjO9=V!`PzT( 9|WV3=Ky !vn_'"_S[9Ec +9usX}˗69~kTv*n1|y9Jqqm:|h`ur|Vr4Zj:=\"]#Z,zk)ϊW:ʖ{:SzF<"ůJ|R{(BPvҝLM4v<:xoVr46*  ; Y˯ӟj3d"_$joc0N@TrK\wp*V6ӧƋiiN@prPmg.#NsYY|իT=:*ҕ/qS!ԨX})ՆZ/ur֚VK܅ >%=ĿK~Ax5j#Z**4/=ܒؽ/dgVEk`}Z DW6ӧƋeJYD]o*4àVDj>>ާOh>^ߵ\G⥕W=N*a; ժQ95T#x -e' @ (X $ OD#Q Kx%Ӑ=.-xjF41i_0\Q5CZrT(mOxi}sԽ|zh b)zKdzRҜy>' d+kSd?AiY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4P0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rnp`f9,>eD5zOPNo!ب )ǓǍr`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&DaX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; ( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(iKdz"~1FSԸ,{;]:c=5իk@;YV_ZX@{OX{gozghd~Rv,{;xNՆt']\Z,@Zkղ5ߛi~g~ob:_WPm@(ի5RA 4{յ=C~+cԸ,{;xOy>*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hPv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1zW'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁QE 9mO)W 9mOp0YP`,Ɂ$p#ORH8(*n1Wy0#In\r]s⻶c0N%zkΔ޽>OkҟTJ/Sd?],=N<>|ժ)nM9EVr4Z,/l-ZCX)U'\)]=zJիZnS'Rx8Y6ӯ;}])Oo&)>\@P ׸!)Vc S԰/T,=adqY˯ӟ|@_$joc0NC< rKxFu*Jua@V; z\$ըR!n_ƒ7}~k/v>%Z▭|J1 ?Kw$/E?,Y_{ղZV0c#Q+Ǎl>.>+9u}5R,.?VvQ[ʍ08zՆ/9.Oo6CǓqϫWAW'Qejd}SX{jb6ӧƔJիÓZN/8V 6ӧƁQk^a{sӮJoWi@c<tq>5ݥ@@A"DÓZ 8IlA1”0]wS{% yq]$QJ\v=;/Rjm:|kzgiO1.r@$ĎHш1L=A%Ӑ=.ax^P ~CP\mOurV);Vq 0>y@7s){#z|{/Rjm:|haɭ\mOP*H8 n{.> QE-H w0֠|:|j!Z\q((朁qh#R4(4KN@IӐ<m9@m:|hg.#Nի@{OvcESOo_s\v=tz=|xhc$ _\z$iP0N7]~FWO' $z~ޓgVXN<ի[~}Cq իr/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> A@88ycsժt~\v@UBݶ\v@0OV>4PH8yc73y>Gnt O #o~mQm՝;琥>][^P"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  @~\v@ʕ z 8Ih ޭ]:_{acǗjsU v}q\~R㰱r,}5R)8z Wݻ ?6Ө})^oe54&mz/o!lwu;zߛبksWT,=adq/N}|WVܝDVsiM@^mz\v=;t7V*a; W[],f W G:$iy~CJS|yJoWPm@JkwR'SS'j^-P)kám:~@\s SڵtOWA 7kt+r]r`FzLqKTի~.'ܢ;O݅goߛiy+խUBݶ\v@;xv3Ը,{;E/!RC=QJzVz 8Ih ެ0իCJSS[E/oacu>x;▩;yWi@ESc0I<`,#O߹ñr8ioȸbjWr^=RVO޽O}sԽ|zh b)acWc0qKVv>%W!~,PmǺ=ܒؽ؆ڔaٍLCe=y}SqXvq_ZJ]<"QVt^>>:=6ӧƁ@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?acQ@~ծ 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծ׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qӦ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9F+/B+@G4H r`{ p*%x ( sxNQMZYm:|hdL R YL*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&P @ @ @ @ @ @ @ @P OO[xVaѲ lz5}(W%pc_u+y >?َ^>5goMzWpOHޭ]b @@CA{:|hB (@ @ @ @ @ @ @ @ @ AEptAg4@O5tz$(& q 縍 & FGh fܽ?xNQMZYm:|hdL |+0_9郔P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GQ m:|h\>4QBqp o&@x.QA7?vcEe8L\v=\|q]$WW!e0%zrWc;ժB (_bjRVvZ}0NAmʹ}Zبw0:ܺbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4[x0? w1v<AmFJ6ӧƔJիÓZN/8V 6ӧƁ5ݽmD&/iQpOH (\U?AmOur,Rvs2`}Ao:Fx^CtEaɭ\mO(rkWiE @ @@A"DÓZSMD-.a⸔sN@_DP% y|qG$N iQ@8?Jori@+9us_jc:x/oC/˜({xs\v=tz=|xhc$ _\z$iQ@m:|r+9us]<`,!zO[!`8ej - >gosCt9E _& ⳗ_?}+jOm=?oI=N+5j~}Ю?aJqWeT:xD< _[O`^Cf dj?ǩJoY@7#N|xVԸR{ޥ“MƾE)p!ȹ!Di_S[|իT8}<~@Ƌ$V>+յtb?xA!+V[xTK?Om;r >ޟ(;l` Y˯ӟoRF\qA_ʠ.CP#qAS'ki@ 3#ⳗ_?؅+P)99Rմݷe[]-8w7doiO'Bq']4_t}KMJqO' ugozk)!ݺ֥>ի9az0>ԥ=azP0l>. +9usO䖭Z,f tT@VvҟBN0d}S䖴J^-P}/v>%]ĿT9RմݷP!Q}~K s:B+[^Cf dj%bV>4_Pmg.~o*W% "yQ^%#Pq8}#@j*?,Z/qU v}q\~PTaɭ\mOP*H8 n{.> QE-H w0֠|:|j!Z\q((朁qh#R4(4KN@IӐ<m9@m:|hg.#Nի@{OvcESOo_s\v=tz=|xhc$ _\z$iP0N7]~FWO' $z~ޓgVXN<ի[~}Cq իr/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> A@88ycsժt~\v@UBݶ\v@0OV>4PH8yc73y>Gnt O #o~mQm՝;琥>][^P"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  @~\v@ʕ z 8Ih ޭ]:_{acǗjsU v}q\~R㰱r,}5R)8z Wݻ ?6Ө})^oe54&mz/o!lwu;zߛبksWT,=adq/N}|WVܝDVsiM@^mz\v=;t7V*a; W[],f W G:$iy~CJS|yJoWPm@JkwR'SS'j^-P)kám:~@\s SڵtOWA 7kt+r]r`FzLqKTի~.'ܢ;O݅goߛiy+խUBݶ\v@;xv3Ը,{;E/!RC=QJzVz 8Ih ެ0իCJSS[E/oacu>x;▩;yWi@ESc0I<`,#O߹ñr8ioȸbjWr^=RVO޽O}sԽ|zh b)acWc0qKVv>%W!~,PmǺ=ܒؽ؆ڔaٍLCe=y}SqXvq_ZJ]<"QVt^>>:=6ӧƁ@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?acQ@~ծ 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծ׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qӦ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9F+/B+@G4H @ @ @ @ @ @ @ @(& q 縍U<p( sy5rm:|hQE - A8#]8>*@*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb& @ @ @ @ @ @ @ @ @90[W=hl-~ Rx p0Ym:|hQE6ӧƊ(N0NAmd+zAfc"6!Q,@(Z hԅG 1O(2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9E @ @ @ @ @ @ @ @ AE90[W=hD(P 8$0Yl=>4(dL  @N%ػ r ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzP4( '' 2`~ +^=ڳyhy}B P[x0?p @V2AwGZqּqHTpj c$ P( P#qǭP9JՅWzk:(}qgtNw=Nm)#OmGj(]$P:t\Tv:~CoZXt( Q@ -Dr\1G 4W%Hш1L=|ø 8E]yaN4Q|č q\$5ƜsMڇhxDqtDHi' 9g4RKAg 1$4iCHaq8B=c{zC 7a֌A("pP j)pxӌ o<ÊFpY|QfAFq' 9 hQ?% @_D-, oAF4b'$q\Z( o@_AqJhq0Ҁ2H h7hxjF4aF4’0ޒ8M( @ @ @ @ @ @ @ @(1ɂB#@G-TbP*ǁEo͇z~>4(0`,Ɂ$ip|f/M5(747IBqp o&@ +\Mr." bQ]k@$ '' 2`~ *A xd.;-Px)խH@$ Q@2FZCs/ tQs[ +k+ zю'nSFmzjP bIР/u)ի'B+ձ-=y~ޚo P%z3{#zի-}<`|)j/ ^ee.; ~,^ӧƋz]~1uZXt( T*rKaWKN{U>):< j+y=K(Pj?만[{m:zV*n1~m^+9u([])Oo]~1ud|ur>?t]$P9@3F@[Gb(h K/9 ob({Cpq(5$hlj(¸Hky78,+ц"R (NsCi椗<b-8Hhၨ s<ŢqF{AC 44ohy)tP Dࡍ(R&4-y0 5.=54NsCц?0KN@%ډZY@"ނ=5$i|NH¸P /ހ<<-93ad"oAцԍ#hQ0iDž%?a$qP @ @ @ @ @ @ @ @n!\#44l} FG(8$ h fܽ?xNP`,Ɂ/QxVt "QA7?z O}XU|WB'بG~o! WWI:;NݴSd?]ի%'BΥ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z jx8Y6ӮkbFuⳗ_55RQG\/m_WKN(4a$qK"(F Ĺ1";/xwg(101RK8,0iƊ/x<+xӂiPob({N5.0Ya0$48,jIqh#"ӄ1b dVFWTzv;l>4Cj9^#!m^B)( >@@SVIЮ>7x~.',{;x.R|Lzj2=nOzxgoָ@~5_V ?q܁2]׮n ̏O/:+/:+SV.ts /uܺCc_\|q]$W-:c{R$iJq (2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVt@rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=$qaja[ PQBz_vҞj( #2Gpz“܅{^=ˮL.^кf4OWI:-ip}}Z <:|j W'H rV%GpP#E0ըpr(& q 縍@opH8$ ( sxNQ@88Y K^SP=D P#qǭP9JՅWzk:(}qlwtNw=Nm)#Omի%'BΥ9ot]$W%z3hTv]\]|%o PO(5j -w=O\{7?6ӯ}ʔ.Ox>:~CoZXt( Q@ -Dr\1G 4W1.r@4bEhw@_0P*ǁHOi@r(>5$$d EOMe٭Pe@7}<`|)j/d:gkWI:wԥ>wdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"RhΉF"+ч%@[Gč q\yaN4Wb({N5.j"F{L 8i+9@sAFސo05GƜ`Hx 4I /9DqD-/POi 0(Ժ 0(Ը5$ DԃF¸P PI.F4΂<1ԋц?0KN@%ډZ_<Сxz0{PE 0KN@Džt[G% sFv7oAj"D,ě0H h4(1ɂB#@GGW FG@p(0Ym:|hQBqp o&@ ?(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVt@rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=ԥ>uqu𕼇O k@)qXv3맊W"wµWp0NAmʹ迫\J{WRzV.\S]FTiKdz@W Gf;LCe:wdNį׸zx/oj+y5djjblP# WT9mBܼ{RVu.; <W{ s8w>]#QOB8.UB781959E - p;o] £PCm:|iNԨ}Z95*H8#jm:|h3ȸ~of4Vq No=:Vq>4ñE[x?Zi]`$H;rkP>@B>5 4H8#Mr\J%@pEtIs<$ĎH8@5qa8Ժ((朁t(x4a@`b&ApX`Ӎ_8#CExWsF 4೚cN@a("R#ĠxrsF_sO5$piCF D1/j"F{L sC>N QE-H w0֠|:|j!Z\q((朁qh#R4(4KN@IӐ<m9@m:|hg.#Nի@{OvcESOo_s\v=tz=|xhc$ _\z$iP0N7]~FWO' $z~ޓgVXN<ի[~}Cq իr/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> A@88ycsժt~\v@UBݶ\v@0OV>4PH8yc73y>Gnt O #o~mQm՝;琥>][^P"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  @~\v@ʕ z 8Ih ޭ]:_{acǗjsU v}q\~R㰱r,}5R)8z Wݻ ?6Ө})^oe54&mz/o!lwu;zߛبksWT,=adq/N}|WVܝDVsiM@^mz\v=;t7V*a; W[],f W G:$iy~CJS|yJoWPm@JkwR'SS'j^-P)kám:~@\s SڵtOWA 7kt+r]r`FzLqKTի~.'ܢ;O݅goߛiy+խUBݶ\v@;xv3Ը,{;E/!RC=QJzVz 8Ih ެ0իCJSS[E/oacu>x;▩;yWi@ESc0I<`,#O߹ñr8ioȸbjWr^=RVO޽O}sԽ|zh b)acWc0qKVv>%W!~,PmǺ=ܒؽ؆ڔaٍLCe=y}SqXvq_ZJ]<"QVt^>>:=6ӧƁ@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?acQ@~ծ 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծ׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qӦ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9F+/B+@G4H r`{2xo4a^mO(,>5g4QBqp o&@ +\%ހ@oq^@ptͅMlUX_A<OsT:xgr(ʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]r._WKN>bFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$asO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFCN0$488aj< P=%z0G9# @,kzPbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\FRH h4(8ZYm:|khpQBqp o&@H-]=2 ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV]\]|%o!ǩ{xb3V]<`,ߛisDZP#qm:Y˯׷*Rܺ4QBqp o&.-|c yCi<u!z#!p*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&QBqp o?p*=<~dz_-@r ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'B”/V+ Vw£zk%z3{#zըY?s//-Re5_aV/qXvdz>4_s]~1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$ 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B=sAFސo05E.B8y0LWWI:;NݴSd?]ի%'B”/V+ Vw£zk%z3{#zըY?s//-Re5_aV/qXvdz>4_s]~1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<(h_@5}y(yZr4ghzH h7hxjF4aF4’0ޒ8M(oiE'' 2`~> 8t6(Z b2<<" (2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9E'' ^ bFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\)s _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9E Ag 1$4iCHaq8B=sAFސo05E.% @097@hQKƜ`Hxč0 5.=54NsCцQ iĠ{Q0KKA4a9#K/8%4KN@8iI -Dނ= Gц`ӏ KhzH h4joi\ s@'' 2`~  WuK#׽7@(Z / Oت.xIVt "QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b ]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R8t+wF8iN&~oյ< WKNJrkի'B+ձ-=y~ޚo!^^޻oj lJ۝}<`|)j/ ^}Kdz_#״FCƗ\ 1uZXt(;7qGt^PU>):< }ZJCR f]>x8Y6ӮkbFuⳗ_oMvT=uQG\/m_WKNoImb&ሠ 8Q1s/9 ob({CpqMI.%chlj(¸Hky78,+ц"R f$ai椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҁ1)tP Dࡍ(R&4-yq#L8,(KA D 4NsCц?0KN@%ډZ_jA Dq_18-( ހ<<-93a$qGa5#z0xLqIsi@$qP @ @ @ @ @ @ @ @ @[yQ=DAmFJPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /9ot]$W%z3/]-9+ձmEB-}<`|)j/ ^}Kdz_#״F@WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0}(Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /9ot]$W%z3/]-9+ձmEB-}<`|)j/ ^}Kdz_#״F@WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[G @ @ @ @ @ @ @ @ @ ?joi\ s@@H`,Ɂ88ի! !orul0w(ܿOB $Pe@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghGiE=@.O~],WI:_sB8Il#jbIЯqV>S AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr @ @ @ @ @ @ @ @ @QMZYm:|khdL xJ dz=w[{#׽0"\<"%ai[V:O)<~>j?ac܄J(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24*RܺB8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzP8t+wF8iN&~oյ< W + /u)yZt]$W%z3/]-9+ձm^Am)}<`|)j/ ^}Kdz_#״FCƗ_]GjtE=OبT#?V+ 0}jSu3 *,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W b\ш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#H #?@Ӑ?9;FRH h7hxjF4aF4’0ޒ8M(pt9E - A8po@ z8Gz` Eָ:xDK&*u˯ Rx'|ժ<~dzPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 5g48(88YH \c$.PETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Dr(& q 縍+,^&P*ǁ9@`{i@r[x0?pH mBLoQ]kJ ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K)Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9MoImb&ሠ 8Q1s/9 ob({CpqMI.<(qF8z N 9Caqa8ԺYa0$48,jIqh#"ӄ1b 4(1Bqp o&@-\>h&F'w&L*n1?t]$P9@ ц"o9.+9 b1";/xwg(101RK8,0iƊ/x<+xӂiPob({N5.0Ya0$48,jIqh#"ӄ1b =SVKk(ѥ.; >>}\E1 Q?만[J6Ӣqw8t+wF8iN&~oRGjbIР`9sN_],WI:^P-=y~ޚo!^^޻oj l~f4YIqKT|@dz\v=YO24']GV+ /}@b|~$+ 0}jSu3 dxIuqu𕼁IԽ|@j?만[{m:zV*n1~m^+9u*ޚJ{r#~ۗd6ի'B(Uac˯C~+jbIЯozP^tt~D,eu;1WeqKVN+ ,}#Ző?mˮO}Dp>zeܽ?ZXt(mJիFIղ xFYϸbjRy?WKNⳗ_▭Ҟ,՝V,ղ"<{$<)z"\(*1=Nt+ aw'JrW}Zxr{oV+j:u 뫐tsTK #—&QMoImb&ሠ 8Q1s/9 ob({Cpq(%G4Eܺ8t(! 1zю'nSFmzN8V~c:@IjR㰱)^jbIРr(@ @ @ @ @ @ @ @ AALq9Wb@#P*ǁg7Y/O6ӧƀ'' H \2 (N0NAmd}pGznuDz={Q. _6I5Uc]~x=SP=D88YH \c$.PEP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4 @ @ @ @ @ @ @ @ -+4wq(Pp h fܽ?i@~Vq>5?p*>״:k=\]|% [yQ=DAmFJPe@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghGiE=@.O~],WI:_sB8Il#jbIЯqV>S AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr)\z>5 Gv yQ !ovua~E-@2<<"a:~? c#{&P001Bqp o'OL|ժRxgr.[cQҀTcxqT(y>B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*RܺA)W/jr]o[NuiN8t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR +ڵwdNծ=oߛi׊]~>5RQG\/m_WKNWa$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&001EO1< Bޥ1'|$-/z>4tzJ A_qp o H A88|!nV( ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(j?만[{m:zV*n1~m^+9ueJS_]Gx8Y6ӮC_]G}YgoO' u>qTcxNboe2o!#OmzVvZF+h?~o]Ҟܠ}Cn6!dz>C]oKdzիNrWc;'jePbTcx~p;A=LBOm?߫W7kޓծ>8t+y>0c#@؆ڔt}[@[=a{9'B~+``bpޥ1M.~״;Q `r' o0\0BI#?No$7(;]PW - 5q<~\ ''Bm:sw(ܿځr{NS%CIIЮcOzk)^o :Q(CxNpps$7(r("pP D,94&W -  @.smܿ f6x[ZQr dz5jydTj9Ee@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghQի'BzsP#{بG-~],WI:=V`ԧg؆ڔ՝V]<`,ߛi ~kbFu{rWZXt+}Yj -zV*n1~m]1N bloImb&ሠ 8Q1s/9 ob({CpqMI.<(qF8z N 9Caqa8ԺYa0$48,jIqh#"ӄ1b 5[j}/jRt_?nc0NO - $ @Az=0rr] £PF,{;xٍ{3q@W F%W|%z3)jnǗ T)؆ڔ՝V.Խ|{\hWW4ac8)\1 []>x8Y6Ӣqw>}\E1 Q?[{m:/~+ǩ{x=OWW_ [.)#PWSd?]zCv-DZ )NJbWR㰱>V}ZF+VaVWįXw!EƔB5aCe=RaVDWI:^i!yJOTcxrrr0H h7 EQCFĠC 4Q K ^+v|%^fC NyCX^%S8o ڵa@5zdǐ%zsAawu;³/\+8pa+[4+n "8r( COB2jbvǯi_jc:x/oWI}/<'-9XYѧAL `!5xBgo\睱tځ=N=KǺK rrfffdJ33M 8rI_?88Y\o TO[x0?:dm!F݀] £P$z4ac=Nkq']S1/[9+ձ+Gm7mv*ovCJS߫WW_ [t^>% k@ +ѥ.; >?`tJYVj -~mEZ׸zx/oj+y5dj4ac{O#ȳ!2}Z}tp i_?ߛiV;^=Kǹ}ZJCqMwYOV&~o25j"[bjRV qXvzC5_WkM*իj?+xgr\OiOd#_!؆ͮ1FS*JOXa\|q]$W%z3,Rv؅9(^?P#q${FImb&ሠ 8QHwhx8(cx5P=Hx1s+xw4"jIt 8\qa8ԋ$hh /J'8,+F qDqtQ0`INhw0\Y<Ԓ+-y0ZpѦ#Q A#yh~q9OoHaF4z&{R#Ġ{Q8$5" 78h#<;9DqD-,ylj8Q qKBq}xH{N0o`YFW< qF8Hky78,+b( DгOo@_H4%&֛@R]J'j $@_ Ha}xb( 9?Aǚ\j(4OAFĘ<;a"Ɯ`INhq|pZ0y(L'N4NsC#ڂ-c44QDžs pQ7A Dq+b'$q\qt[0}K1K悍?/(rF+цHhQfW! qp o&80q8Ev'1zN"7m,oY9oN|ܥVM l|*5PJ'J\v=sƽu8{O#+վC[ҿ qKVvԥ>uqu𕼇OW=ЮF+ R㰱_f OEkV]<`,W?t_ծ={WRzV.\S]FW<J\v=|}<1 b)ի~O' Ok^Խ|{ի:u{y_?jblP#!Vr.څx!)^j+goW<WT>]#_q8Ev'1zN"7m+VWǧXw!EƔB5bG6OcԨX})ՆNrWc;'jeb{@7+ r]$qK"(F!ݣ P Dࡍ(R+@pHkPE" %Hxa%G4Eq"R/x<(z +4೚h o8,0iƊEiƥDHi' 9qg4RHxpiCF D1"orBFpY悍=! 0ҿ iKD֠\$4FŠ0(MNJ9D $F 4I / b!P=#@ i8Qf_?1lj(‹!4೚h ሠ$5B=} ДsCZo AIt+j@Ơ]|5#Kiሠ,xHjGjIsiӐ<WfffffffffffffffJ[x$ @_$N{s㷬|WӢ;i5` ǣQҀƋ!2<Ը,{;xZ'BDZP#{9_?4Y~G;O.!Q+<*,XaF?Ƌ;]b/Zj<'Orz_}^SӯT>5f=C:W+ǾW}Z1TsӯZ'B3Co_WRǺ?auB08J Ut@j+y=Kǫ AWKNw0QV0?z='J\\65EuaT>acpa8|իT=į~@r8tspSi?:ub(hgoի >?R{x zqaVK)+_qݺ֥>V !/Z[zgiOG\.2V@t|k~3j[՝,=JP.; ?*F_tn>j0|WW*4&sP}/O))fV0 {bjRvcPt|s QO-?&AKyɗj+a8!)^sN',P}@Ijժ!QePv!V?ZbN& ٍ)֨UzkD=޽>}':s~\IWr\F~}zOuo_QW!t6ewCJի !zV}w_y?oVF!v?,^Ná5ɭٍCV0G! z랡}SQS븄*zP(_՝VW$A|:jCA{}ɧRAreZ?nqBo!ՆVOOiNJoWbB#=ы$iN<ի9_9_?ZJ(ZKtp o[R_w4Y~D\m>3@ƽ}'+Vk={sv! ?!}b.څrW1FS>CP%qS'ٍի !,QAE1$jQ>돪rSZJ]g(W-IzP|TWc#kޓ)qos5fV؆TժvMnj]J48>BOj+\yE Q:OcՆv! WMѮIj}Zq%V{Y {_?qKVB'GqXv/a S|'VJq1uaJs*Ǘ3!zOPKz}"]G !?cS)?bm>IЃիJ݊q> z~ޓ/^9נ._?=N>Ժ{p}Z1ur'kuE*=ͥ p]ZqqӨ>++fffffffDq@ÔfdL̔W ? pS|Ut Np2-=/@'' 2`~  ~{,Q rk[zWt`]*Z{x@9 xB^ vHOo 4/J2xҜ}/kVׯqT,>Z}u-={LJoWRմݷ9_?3333333333333333333333333333333333% - $ 8L-B\uy}Pmq냕bY>}(WW4ac=Nkq']S1/[9+ձ+)jnǖW]ݥ;RVx8Y6Ӣq+{WRzV.\S]Fѥ.; >>W{O#ȳ!2}Z}tp o~mEZ׸JO>]\]|%o!ԸC]LM4v?d ZȻj؆ڔ%zիqXvK1ypP(\$;aJȜ1bE\q(N jWK70\ù01RK8,0iƊEiƤ_8#CExQ|$5WƜsMځ}  8\qa8ԺYa0$4;x,jIh#"ӄ1b D(䄍0E{zC 7aJȜ1bEA%ډ!AIi7AaQȚ%r&i|Ĝ(`A8@aaLD8)iKOA 9E - A8 ?jv=coDž5' Ax>j_dj5Pqw{W =dv ^t@-&[IDEА[OY%{įdL  i'iSK:] £PF,{;xٍ{3q@W F%W|%z3-[Mx]ݥ;RV=SVqMwY?җgoo>@"w˜(uj+>x8Y6ӢqwV}ZFY7<[O q}W{~+bW=Gq>>1>秩|bG6OcԨX}(WZ'B+ձbm>/!BioWWFImb&ሠ 8QHwhx8(cx5+JCZ)pc$ k4Q_C{1Z ^a[w=N)]JҝXa#\<}qNtkdk^,CAVP~]׸]SH @ Nfp[yWm>k5I+S}B+[ի>h'CZ,#OvP؅MwzAXQJrYY_?qWa}L"y}S}iRsˆVa}L"x?ZJ($2<`H0=N0H 0a_?7'>]Ntk:xgo;}Kr\ 2']F<}r.R#~۶ |w_?v{EZ@`v?qCKyW8+8ڕmԥmZ$Ԩ}Z#sdJP[rW}ZƴY}6a ~O$/q>O +ջ_XO~|$V:kǒrWy!j}f;VWOy>B8"]wOիpFCW$.[c VuWMwY՝<~dzov;\=Ѡr SJxoQ_'' H )pW =gVDAmFJҗgo;1o`w=N>ľJoVw-[Mx]ݥ;RV,|)b_V]<`,ߛiV;^=Kǹ}ZJCqMwYZ$is|ժn^=`}JrW}ZgoW W{xVaVWį,{;"|}vcJ}OS!0mv!2ǩPS #k+ VwŊNմ% ݧ*n1x9EFImb&ሠ 8QHwhx8(cx5P=K9 na⹇s@`b&ApX`Ӎ&ӍHqF8Hky78,+F qDqtQ0`INhw0\Y<ԒG E b<057Q afC 44ohx8(cz5B~҅aU^΁ /w):< }ZJCR +ڵwdNծ=oߛi׊]~>5RQG\/m_WKNWa$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&Q_ծ={Na;{Y {C #j+b @@A ՙ?BS܁0 @ +dxN?sT9t "] £Pe@7B (_V_s*wtVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(j?만[{m:zV*n1~m^+9ueJS_]GS AEV]<`,ߛisDZP#qm:Y˯׷*Rܺ@"w˜(uj -k^Խ|{ի:u{իF=@ZȻj؆ڔ%zիqXv]~q] rixy;YG;1Z'BcK ի; /J#O j1FSoMvTIЮ)Ǔt =;1otw @@A"D|b>@@]#Q1OI!AAzI *nE~o]ҟsFC #]bT,>Z'B+ձB/vب^C71\ @Ad1FS*Jua~qt\rҜ)$491OI!1NZ#QVw rPbFWbCxd0 @R㰱^K;cPYVj+yoK҄+DZ Q]*>8t+A1Jq])$7COzk])$71p]-H |b (hÒ -Dr\1G 4W oAzI ሠfo1.r@ s<;5$G4Eq"R/x<(z N 9@цh8Q0j]|,D0pӚl->SRp&tqCe=eJ+ {?s[ZXt+zO/őU'sVqTcxNVrʔ.Ox>:~CoZXt( -Dr\1G 4W1.r@4bEhw@_04tzJ A_Z״^?suO;{]=ˮOu]o:>Aj ڃܺ[Sc]GS'@ j;ݴ"Eބj & !@[pQ ؖQ\}ǏtiO}7ՆQ6@KZk{O' Ҝy?W }#zOKB z`jdN^ӧƻ^=ˆPİ( 9EƸ3j;"Eބj &OdDVt+tiO븞3j;0%Cw֚Ю0NAm8|^";P//N)zf5R״r祰ǐ. hZF_WVרF4Dz tͽpuhM2"=zA/1#רM3o\b"=zۀeF4Dz $b"=z`So\btcDGP,@(4h_tcDGP6f޸:эBHM2"=z"}э@4tcDGPXkOqdS'e.ӆDvǜ/N)zf5R״r炜[t֧)P/iNa@%CIrBޠ:ݫ\}—FJի+i@j:$x 0009JKnS~pP aa2, DX jqѥ;/Rj0֮O\ÀD{,GaN#؆ni6+4v?xW Fq@dX^xo0L D!9s`Z]{B=gժ>5“$irxυ9OQj}"}KUZVGF<}/+ų Z״oW ExWzƜ$7kzGʗ OrQ([x$\N0 [!~bY>}(WJ\v=sƽu8{O#+վC[Gm7mv*ovCJS߫WW_ [t^>=ЮF(ѥ.; >?`tJYVj -k^Խ|{ի:uz4ac{O#ȳ!2}Z}~0NAmʹ迫\zO>]\]|%o!ԸC]LM4v?d>jEP/0>ԥ9+վ]Kdz+jիk+0z`W{~+bW=Gq>>1>秩|bG6OcԨX})ՆNrWc;'j}^C7<K1ypP(\$;aJȜ1bE\q(N jK70\ù01RK8,0iƊEiƤ_8#CExQ|$5ƜsMځ}  8\qa8ԺYa0$4;x,jIqh#"ӄ1b D(䄍0E{zC 7aJȜ1ǚA%ډ!AIi7AaQȚ%r&i|Ĝ(`H0'4h 4,0iG@(iFj\ qF8Hky4Ev_ E!i ӚxR KHAG 5 PI.F4PsR~<$5#5$ǴQ ih(xR4W0]v5Cӌ 8i/kF8%ډZ_I%i4G[$hh 4OoAF4D<+08kzFR7/at"i|QH]} $' 9} #8 4*zVEbޥ1F j &agEbǯiJwG001_1[•SӮ'4v]Gi0Au ZڵN{R㰱)^sN&W<ޥ1/cO).WyoڂN+j S_O oױt oppH8-e'pՋ@288Y N|kOp@QzEVIЯqCJSFn Jlg{O*1dX^O:s??=w3d#ZSnur'qBo!Նvc_NWTcxq );O_sNur'f dhoMvT50/}{)qXvVK/őU'sVQ__!d-Nr,{xn0!Q(3ȳ#go'PͯWY {t@y@\ r}Xd*{"__vҝԦ"={NS=\]|% ]a7m88YDszN?ac܄J>4Z⽫W2qO WWaɂB=JzwQի=0y_'' 2`U¢']<`,+tҟjxTXi_jbQ_ի=GiQ vX !q{@zVT>7ݽm"$H+b8}/!Ҝy?12={ԧXH wD :xDR탔./^|_[uV:xD>VwG!LܪiNJnxN9EV~)@T{a{Mx2R{^~)\^2/@D @W{x!`,Ɂ[ktxen#s0?q8 +=z& & N0NAmdS @]|%Tu(>t4<"WƔVTcx\mm>6ӧƸ$Q_'' 2`~  _j* xv<<}{bFiO =Nac#.WV:|kFMg<T9Ed)GEZ״Q^GF=P䖴,>ՅW+ Lȸ]Vv& q 䖵mu.yW r`ZwGf s«NWc=Ю8{7J}EF'񝍩_ǯi]K'Vq88YԨ|W r`WF?ǯi]LTZf5go'!dkr.~\1ɂBի -f.Cx ~:|m;<9EV{xW0`,bTsj,>eˁ D= -urVOۅp& q (a8gr܍9y>á:=<~dzOT9mBܿp& q /O rW}Z`,bTDJb(*  w=N O7#N|{OP?[9,eu: Ը,{;E#Z\1ɂB+1ɂBsj{xmzR㰱)Ǔq88YԨ: v}GVvu=s|W~g!an!\}^PtQSy!KVN F *㰱r4DZ -;x?Zc|"]M:lz;O^j5^a' Aϰ;o_T#񝍩_ty?}xrqXw!r4ǹ_VvxMg@urUacy\xc|bj[x >qL;Ci0ަT{ys>6ZW2Z)U<•G}Zc{W>)j(_u>)j)I a{Nr~Y)Ǔq88YԨW0^)j)U<>?Vn!EW>5}SŔ琨U z? vZ`,bT+Y {m:|h>?V!NqXvVtQS~\1ɂB{0?x}B7EqKVNϊW`urA+*n1W!c]S▭z3UacǔWp?t+P#{ƾ]-st઄o:pmw=Nk▭ҜPwYR{>]Y {m:|hUacW▭ҜP_W r`'E`;\O,{;\3ZJpUB7KuzC\wqXw!9+վC['kҝ\Z^)j)U<؆ڔ՝3^16HRV0իzPeKyw7doiO_Sd?m?s:)էk0 ^_r8+Kz`}J}YOgvށWVAEujxtT#xZ}ϫW[x]J~]-st઄o_eT>]Y {m:|hd3Rȸ*W'Ñ-[MxիzP+ <>,¾]xx8^)j)U?(>Vjr|/}իzPQKǗjxtT#xENw{՝ԵUS #jqիzP+ .y<}rKg'VQ+jxtT#xȸ_V3뫐#_W -[8*p|ժJEЅ~6ӧƾ@ v{NP#{W^ӧƫuaT>0LGI=O R㰱}Z^)j)U?yW^ӧC@~aϫWO'goիiTT):P@5G߫WKuի▭ҜPzy>K RaVGޗ"+ ɕ]ׯoi]ZBŬ})dzUac܁\]T{]˯@rWgo^'kҜ^@~+jkT#x!KVN FVw`Wv3ȸqXv"ůJurc_WK\8*Wc;jc0NCJSOeJooի:իzPIOoE\=ڝjdk⼞3acǃrV׷`{xݽ'$\3 'o!e5go_I/j<10>Ԯ%2>?Ԣ.z!ӧFVu.; <9^OCJ^Ooӣ]KdzVZ'v<}'k_VvZ;SǺ^/Og~oW ^qt9E@ñEdzKVN F-zS#^ի:/ )O;y<5j%ĿS-+ %Wadzkz!ǓOP^^v>?Vvzk}Zc8dzj𨲾Wc;QZ{xRxTY_zQ“oڂNի90[P9EDcڳq* t7/n઄oQ_`?ǁʖ~o^ҟpGezsNgo#Pr.f5_W r`ߚ_OF4}D}Zc}>^)j)U<ܢ/ŔBzxڕ Sl~+jLcK_sw< }ZV:|h*Pr2q|J+8 'ٍ▭y}SqXvtQS8^)j)U>>`}AOd6㶟i@$f68NC:gm>\1ɂBӦ7OYߛٍ▩2CqXv\1ɂB'374ǯi@`r3ZJpUB7:<}S :=/n઄oȹJZg?KW}5j^ )Ofgo'Å▭ҜPxE^jˆ?ǯi@`\z>5ʏ~o!?yjW>*>\1ɂB+ռ*,R{;OMwY:|\=zZ`,bT>wu?oVO-('|vö{ []-;pS]G:x ~{Oi>עVvZctvԸR{<~dz}m?}X[Q~jծ6ӧƾ'P#ovZŔmǫkҀ`qMwYxB~ 7$o9.+v7@097@hQ+@pHkPE. b\G0\qkys@`b&ApX`Ӎ&ӍHa+1L=@_ 5# =4ŜI.-y0ZpѦ#Q A#K#@8hxQfb&G$$i+ц@cM=0BkMCr 0o`~xRKhCND\$;0q|88(cx5]\]|%o!Ը@)qXv>,|)b_VEx8Y6Ӣqw]#Q_?ac܄ySzzv!sk Q=JҝXa\|q]$W%z3,Rv؅9(^?P#q+0H h7 EQCFĠC 4Q=SVKk=R㰱}'YSN]>0NAmʹ迫\zO>]\]|%o!Ը@WSd?]zCv-DZ )NJoQ_Ը,{;xr #O>V}ZF+³/\ߐwG%@GOB<ٍ)==Lk;9؆({BN0_k+ VwŊNմ% ݧ*n1x9_Wv9.8M%@pEpц("pP j)sĠ{Q8$5"_K70\ù01RK8,0iƊEiƤ_8#CExQ|$5WqEv_hyaN4Wb({N5.j"F{L 8i+9\Zb-8Hhၨ MHH 4P?8zQ0{FĠCWtj=xj'R&4-yqG"h]\]|%o!Ը@OF,{;xot ryc1FSWp -k^Խ|{ի:u{իF=@ZȻj؆ڔ%zիqXv{VW,{;"}}vcJ}OS!0mv!2ǩPS #k+ VwŊNմ% ݧ*n1x9EFImb&ሠ 8QHwhx8(cx5P=K9 na⹇s@`b&ApX`Ӎ&ӍHqF8Hky78,+F qDqtQ0`INhw0\Y<ԒG E b<057Q afC 44ohx8(cz5ԥ>uqu𕼇O k@ѥ.; >?`tJYVj -6Ӣqw>}\E1 Q?<`,ߛiV;^=Kǹ}ZJCqMwYZ$is|ժn^=`}JrW}ZgoQ_{VW,{;"}}vcJ}OS!0mv!2ǩPS #k+ VwŊNմ% ݧ*n1x9EFImb& $4,cN@r\1G 4W o`r' oF0\JCZ)pc$ x8Y6Ӣqw=SVKk=#OmFCP] rCJS[goWO>V}ZF+³/\ߐwG%xgr\OiOd#_!؆ͮ1FS*Jua~qt\Iڶb{@7(hÒ -Dr\1G 4W o`r' oF0\JCZ)pc$ 4tzJ A_qp oe;o>j?ac܄Kn :v<2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_WtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OWj -w=O\{7?6ӯ}{zk)˯.,n_V+ +0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z j/z>4tzJ A_qp o&@ҡ۟t]p",utEe@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghGiE=@.O~],WI:_sB8Il#jbIЯqV>S AEV]<`,ߛisDZP#qm:Y˯׷*Rܺx8Y6Ӣqw]\]|%o!ԸC]LM4v?d>jEP/0>ԥ9+վ]Kdz+jիk+0z`W{~+bWXw!EƔB5aCe=RaVGWI:^i!yJOTcxr9.8M%@pEpц("pP j)sĠ{Q8$5"1.r@sMI.<+1L=|č qEopY4Wj74Eq"R f$aa⸳y%Š3N4x`j!$o1x4Â?4i 0hц("pPj=xj'R&4-yqG"h?t]$P?+0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9_T6I}|MJwoRCJ|Xqtҝ(~ W -R "] £P+*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR +ڵwdNծ=oߛi׊]~>5RQG\/m_WKNWa$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&001EO]!@K!Q/iNa ( a*%^ӧƔW_ D+``b - $ /;oQ_*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9EhzH h7 EQK1|qkxD<;_4"jIt 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B=C 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR4#hQ0iDž%?a$qW=7N/iN~P -Dqtҝ(~ WsJuazF%S88Y$+0z`[xHA892EiJv^Caɭ\mOU?A Wi@pE{1\zzӦ7xEN+վ\mOgq?0OV6ӧƻH w0֠|:|j!Ni pAE zP fJqa{M׮|qU)=~8t+qXvJիq\v=>?Ĺp9"1"R#Ġxr<;_ժ!Q{"J\mOurV);Vq 0>y@7smzWi@~ QS5{/iNS qtҝ(~ W - A/A8  @.<ի5{3d"Q_P#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sVqTcxNVrʔ.Ox>:~CoZXt( -Dr\1G 4W1.r@4bEhw@_0)\Biy>ki_}Swt!O/xRҟsdzS_t}l.})ݽmN|AdzET0 WvcP~q-oŒ5{/Rj) t׃j՜Ԩ}Z ^a[C=NEZxuqz\z Orǀ/=`}Jv^Cu𕼇^ӧƸ<"G? V SwGR2%w3m:|hڵǯi]L+` #jS—F+jV#״Ear~*4sR_i\8Vc:@ffffffffffffffffffffffffffffffffffffffJxMC%!\"Ws16ӧƁ'' 2`~ $!|W iW88YH \.YԿ tu - A8 nSbY>}(Q_ѥ.; ?vc^:z}'|!^#ZB7Jv!)goի:x/oW#ZWJ\v=|~+:ȳu?만[{m:/~+ǩ{x=OWW_ [u.)#P(~)qXv>,|)b_V]<`,ߛiV;^=Kǹ}ZJCqMwYZ$is|ժn^=`}JrW}ZgoQ_0H h7 EQCFĠC 4Q8t+y>0c#\!^Vz O}`}J}Yj -w=O\{7?6ӮC_]D -Dr\1G 4W1.r@v7ш#0h8Q0j_9:&;FImb&44QDžs 8\qa8ԺYa0$4;x,jI{zC 7a֌Aoq#MGxwH0'4(MNJ9D]\]|%o!ǩ{x5j -w=O\{7?6ӯ}{zk)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_0ԥ>uqu𕼇O k@=R㰱_f OEkV]<`,ߛiVO>]\]|%o!Ը@OF,{;xot ryc1FSWp0NAmʹ貿ծ={WRzV.\S]FV&~oWzCv-DZ )NJoWR㰱(jիkVul~C5 #ȸ]ҟpd#_!؆ͮ1FS*Jua~qt\Iڶb{@7(9.8M%@pEpц("pP j)sĠ{Q8$5"1.r@sMI.<+1L=|č qEopY4Wj74Eq"R f$aa⸳y%Š3N4x`j!$o1x4Â?4i 0hц("pPj=xj'R&4-yqG"h8t+wF8iN&~oյ< W bIР/u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K)Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9MoImb&ሠ 8Q1.r@ 8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&P @ @ziz0 '.!OpG @ @ @P @ @C?6Өr|Q[  @ @ @ \,>4QBqp oe;o>j?ac܄x-@* /Qx (F*O!@TKdu "OtDbl;91ڄxNj[u !Py  %ծ>8t+c^t ><<"*ޥڌxy@[ޞ?ac;&_Wիƒ7\w Lpz۬D!z#! ⎊ ⎊ի:>5 Gw.aWWI: N蔦&~Ҝ}/ ֨P| «5_y>B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4dKiO ǫq)]ЮIJpw$q)^ԥmt{_u+qaw9+խV25_WSd?]("AG[u !8S<"G|u .ר7m)VR8+{\)=]G ڃܺ[Sc]GS'k+ 䖴8>W״?%^#OS|)}ZU@yZ:?V1P @ @ziz(   @ @ @P @ @C?6Өr/H8$ @ @ @ 9mO(N0NAmdsT:xgr(ʁo=j'AP*+Y!ET#+<`~qt]S1Ju16Hx< WKNJrjbIЮJlgJGaieKyJlgzFxW[c;1O&_#Zj(#׸_R㰱:|h)}(QHҗgo;1o`w=N>ľJoVw-[Mx]ݥ;RVx8Y6Ӣqqߊ^>=SVKkʞ)qXv>,|)b_V]<`,ߛiV;^=Kǹ}ZJCqMwYZ$is|ժn^=`}JrW}ZgoTjիkVWǧXw!E+cJ}OS!0mv!2ǩPS #k+ VwŊNմ% ݧ*n1x9E4at"o9.+v7@097@hQKx%ډ!A1s+xw4"jIt 8\qa8ԋ$hh /xӂiP/a+1L=@_ 5# =4sŜI.-y0ZpѦ#Q A#yh~q9OoHaF7@097@hQ#Ġ{Q8$5" 78h#<;9DqD-/x{L_H0'4h 4,0iG@(iFj\ qF8Hky78,+b( DгOo@_H4%&֛@R]zF 8I?Itԍ/1G"!y%=hcN@?AFĘ<;a"Ɯ`INhq|pZ0y(LMD-N0$48="8#CExW<Сxz0G~b'$q\qt[0}K1K悍?/(rF o A$ 8i `Q @ @ @שGm'A @ @ @ שʹ=\`ѼEQEQEQE <lf #…~4H$r@y @`0p  lWL'o$. םa]֝a֝a& bm./usr/swlag/en_US/PowerHA_SystemMirror_Enterprise_72_Notices.txt$$  -eiotTanrs ,AEINORScdfhlpu=CDFHLWbgmwy"./BGMPUYv()02Vk1:_jx #'*4KXq359;<>@J678QzZ%&?[]`+!{}$~=$Թ-BiQG%PgHv!9k.5R`ppH_ Uth] 8'1 sT ˓m:|iN !(\OwQ~=Na7^\m?PO_a+!2•GVmz:Rxʹ=0ʔZOc׸(S}p06\2B" (I^sԷ}sԽ|~+5jqUiTQ8>+չ!!ݴw*nS%פr|`9V\:OW)j)K|YRzVի@{O_W8$/i]!TF\իCAJsu:|k@~\O?]o=ߛix_ ի6ӨBR=\mܿa1Pb~m\yGk"~ԧOv?qƔ(y2CIZbV/! =m:|j:ץ=9E-0T{|)Ti?~{z.ծ%Nj][^ǹ4كV)t4%C{Q{z=J~W 8$/ b~$A߫;~^ޮ@V)t4D|ok•Sӥ=z 8Iumzf.)#)Su>C!sF:8T{N 0իծ<pR=<~%zk%z3/do]ᨍxR zuV)t4%C{Q( @ @ @ @ @ @ @ @ @ @ @ @  @ @ @ @-t7ċ7)8 @ @ @ @ -t7*1V< iM=#ffffffffffffffff(N0NAmd2 +ެL[u } (2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@8hxQf~q9OoHaF4Z1R#ĠC 4QMN0$iZFpY|QfAFCN0$488aj< P=%z0G9# @, o@_AqJhq0ޒ8M#0z j4_sx딞1uZXt(;7qGRXt+zO/őU'sV'R )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍHQ0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(bE\$4FŠ0$i`Qt4apӚYCц?0KN@%ډZ_jA Dq_18𢅢Y}Ġyiѝ -Dނ= D0xLqIsoImb&3333333333333333*O!S333333333333333?3333333333333333Zo-Tc$xCJH⌯Q%o$6fffffffffffffffgdL Ĭ/u(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[GLiN3333333333333333S333333333333333?؅F2JDŽ?$(VS AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Drfffffffffffffff4_v3333333333333333?3333333333333333Zo-Tc$xCJH⌯Q%oPGezCp iM=#ffffffffffffffff(N0NAmdJ΂]>r ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G333333333333333?xrfffffffffffffffgfffffffffffffffK]  d;~)@IQ!xCJH⌯Q0\ 񩙙[x0?p UqZ+KJPHp<"(P#qǭP9JՅWzk:(}q<`_Nw=Nm)#OmGjbIР`9sN\ot]$W%z3/]-9+ձm^Am_s//-Re5_aV/qXvdz>4_sx._WKN>bFP>?s[ZXt+JV>S AEv]>x8Y6ӮkbFuⳗ_oMvT=QG\/m_WKNWhzH h7 EQK1|qkxD<;_4"jIt+4EdVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RfffffffffffffffgfffffffffffffffK] xCJH⌯QtI0 4􍙙88YH H$%ػ r ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLi73333333333333333S333333333333333?VB8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G333333333333333?xxB3333333333333333?3333333333333333Zo%oPGezE 8Il - A鯌9B ֨P| «5_y>B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzPbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4fffffffffffffffgO`BޮLTk;~)@IQ!& >53333333333333333Bqp o&@t|*4X+Pei{)J@*n1qTcxNVrʔܺ*Rܺ?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_OlTLB5^dCJH⌯Q# 4􍙙3VsxNP`,Ɂ$ͮ@t\kpMb@ptPe@7B (_V_s*wt+VIЮv:$iVר6\,WI: /u)yZt]$W%z3/]-9+ձm^Am)}<`|)j/ ^}Kdz_#״FCƗ_]GjtE=OبT#?V+ 0}jSu3 *,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b ]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b ԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0j\qR&;FImb&44QDžs 8\qa8ԺYa0$4;xI ~q9OoHaF7ш#MN0$iZ$ZYG(M( 4`(K0(KcR@QMH4kN<+E]|5#Kixb( 9 5 G0`|JyCN 4&)5iӐS AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b UVPGezETp 8Ilի6ӧƸ,(N0NAmdW{g?P @:xD*n1=ЮF+OF,{;xWu+f;Zի~O' 6Ӣqw5g4QBqp o&@ +^=ڳyhy}B P`,Ɂ$pⱒ B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLiq)CxPFR8+B R?&R8+B{ 8IlptdL xd.;-Px)խH@$*n1?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_^űS333333333333333?3333333333333333ZoPGezFb4&333333333333333?joi@r[x0?p/Y<4@V<>` (N0NAmdTA8X%h\wZZS Q5[)OIETcxqT(y>B~҅aU^΁ /wB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP` ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLilJfffffffffffffff*fffffffffffffffg P 94&333333333333333?'' 2`~ s<*n1*Rܺ@"w˜(uj -ʹ迫\zO>]\]|%o!ԸCEblP#!Vr.څx!)^j\v=x9_{VWxgr\O7iOd#_!؆͢!2ǩPS #k+ VwŊNմ% ݧP#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1E.a⸔j'R&4-y(MNJ9DqNi0i} D`0а"_A%4ӌ`Q8#CExQ|$5ƜsMځ|1hY/NhkMH ).=#Q$Ԁ$@_ Ha}xb( 9?Aǚ\j(44j}(QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0Rt\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDž-/8%4KN@8oImb&o Hނ=5(xREhzH h4=SVKk(ѥ.; >>}\E1 Q?만[J6Ӣqw4QMZd| ʔ+ /F`b_|ժBvҞ<}[v!)Ǔtp o[RԨ}ZJ@:|htE?]o/y>qԥ>oMvTWW_ [|0hޞ1uZ+ zLM4v?; |~PToMvTqKVv> AE ZViM&$ơZJ\v=>CPm%'}Tqyo]zOYrc 'ԸB%uC@{_x/o~rtWzXt+CyxEeJS&Ch qBB/{=ݥW_O”,{;J|Ra)@ u^琨#ZVQ/]->]GmBT+rë“$irxbjW DϫW_v? "WIkMoWOqT,>Pk"QMr]$q8t+wEJn0NAmbT"QGJ)\x}B7:۬$qmD mr@ 0NAmIЩ9E5kW Eݷ@D{m:z{N7Np$ծ<>QZx8Y'"ߛi׋)goծ={NiNJnEP/Cղ5N<իA%R{;y8,~dwV8ʕ VON>qbm>?j״ի 3B~W3jW/PʸZ\FjBFSy(^?;;¨]$WGmD{H(0oO>HCm[MxzWAKuRǃ3333333333333333\LQ( #2D "$ CJH⌯QȮ=]J@ӄzFSVsxN`(88YH N3p,*n1Cs:B Jq - >gosCt9E/~ޓY˯ӟjw'rZ{u;zx._t+bҜy2Cz#+?aW}YzL}Z GV)[}+ ?ar4ǁja*}K'!\)=/tkWK'Eq #Oߊޟ䖭ZǓO~@jW/8ZV}t`#Z;sԷYШ w`~>Jv}B+[e5?oIW;l` Y˯ӟoRF\qA_PNo!ب )ǓǍr%:iv!J!JurzEyGm7mY_zk)Wy0#In\ϊ.9]xt']\5RCgJ7doiO,ZU'\mOoRvҜy>dNoMvT=;\ԧrYY_3 qqCJS\`_K 89ET,=adqY˯ӟ|@_$joc0NC< %Y<{J|d: : W=NCZ[W[_sߚ|K!Vr8io!Q}~K s:B+[^Cf dj%_\xN/X{ⳗ_7]+gouiA׮0!)r}{x/}N<{}Zj :K+W=N*a; ժWN?acǃxiy>K s:B+[zk_ZB[ܿFq_sy>Gm7m){xCX{jbY>ߴ{\_<ҟsurޚj<ի[~}@C'oRF\qA_ղjSxC˜Fʖ{;ߛײ7+"7m?i.:~8)]<~'1,Ś& '1ȹ!Jqg.Ki>]`F+Ըco!=bo!jtiʖ<"EnY=<|Xb>Eҟ!V_*6AS(^q]<`,q8go Q_a8gr+9usNsy?oRF\qA_Y˫^Il#=YIՇҜy>6ӧ! ő?W';iNJkի( x`,t?IU'sF=SR_Zt~N?ac܇ZCs?sc=݊r.+Ril>Mg@ܾaT_B7^[z>5<)bE!L:T,=adqedzq2 ^\b@~,^ӧƋzKdzj+; z,PmX=P9^i@>ϫWځ=N=KkiErkq8grj'Av* V+K J/41/%5_rNUQ~ =z+-:c{Sq~ö{Nt_YȹJ,1*CxK_,d4V9VjZ^,^ӧƻa{zղ5vz>.OŔq >wu?oVOp+'/{\8~dzDWV; ֚,Xvh'Gőov+ñ;]m?zAx{O[]-; e5d~Cj #w7~עVvZ,C,{;xoO AJrW[\v@oYڏRI_O@aOoVFZ}m?z>5 )8v3z\xN>jm+Wv׋)׽Vץ(iKdz"~1FSԸ,{;].?VvgqXvcޚ]=z+j݅goߛizxu+Vpz MvTFm:՝L+T5}C~+jקG~>+j+yNrW[4&/zu.; ҅:_WPm+խV3뫐#LM4v=PCJQKǹZ)״1z/RjP#ǩ{xTqm:|hJlg{OE/o:x/or撽Z:o!j_~jj[VrB4|#ZF?y?av^ӧƻB?yI_Wq>9 )o!kq8gor?ltqZtS*=Tcxٍ}ZQ_DrEĿ}\ !؆({5ZNe NP fJur=zz6cE'ٍ{R,}ըB[+jLCe;yWOիNoVנr?qMwYxB~^ )Nco!acyW=NŒ5eqǺ1JrWpfwbFDz*V>4Q@lm{`~=NԨw^9V@e-ZC7ʖA{!ON'ZJEec@5)Ǔa7^%e5ԥ}A]SF++ r{?wRs(^ⳗ_~dz>n}rGq ~ޚo!}K'z OKb.Y_zv?\!ƀk4/qWk:OjиwG*,ǍWٍ|}zOvc_V*[q~o^ҟs.!Q:WPed~;0_O:م|"ezˮW5jO'n_.!QF59~e5~dz:<}Sҟv21?Gq 9E0?14鍷9O9){x/ۇz.; իCX{jbgq>ّUjsWW _ri_e2_$AezE+T:?ײǹd<,>7%zծ%t?>_&1,m_yO~=re;Og.s ^}]RsժN?ac܁}S'^W(ReR_sbzrkq8grg@r'׷I!Jq1jJwu:_)=q)Ǖy4(88YH \)]z蹔2(Z (ʁo=j'AP*+Y!ET#?]o*Vqt]S1Ju16HxQmZ2Xt(_SjbIЮJlg|*; Oo_*[rWc;ײ7Z,S1x2R&_#P!EbghGiE=@.OJի'BzsP#{بG-~],WI:=V`ԧgTYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b S AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Drfffffffffffffff4_333333333333333?3333333333333333Zo%C㉂BPGezFbt s#UZ@ӄzFSVsxN`(88Yu yZRX*n1):ㅕGTϫWW_ [t^> AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<Ԓ(Z8a!LGF@DžiC 44ohy)t(JȜ1bE\$4FŠ0$i`Qt4apӚ_0֌5?0KN@%ډZ_jA Dq_18-/8yiѝ -Dނ= Gц`ӏ KhzH h4S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.bFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[G333333333333333?x#O#@L b 8IlptdL @H$ 1|$i/F@q|-J[x0?pH ]"ksEm&<@[ "\<"% - A8 H ^+ ĭ T8^8 c$*8Fky1 (ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZ bIР/u)ի'B+ձ-=y~ޚo Q+ձm^AmƋqKT|@dz)Kdz_#״FCƗ_]GV+ /}˜T#?V+ 0}jSu3 dxI+V.Խ|@j?만[{m:zV*n1~m^+9u*ޚJ{r#~ۗd6ի'B) -Dr\1G 4W%Hш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057xzxN<(гOh9GC 44ohy)tP Dࡍ(R&4-y$i`Qt4apӚ_0֌5qZr(LjA Dq_18-/8%4KN@8iI -Dނ= Gц`ӏ KhzH h48t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.` (N0NAmdH.+B:׎?B ZALd:xDJ(2FZCs/ tQs[ wO'_\|q]$Wsq;vҝLM4v?kxVBXt(JrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*RܺB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_6FA333333333333333?3333333333333333Zo-TbR8+Bt!$qFW>f۷ 4&333333333333333?joi@r[x0?pLA8 J#P„dL  @sYvkj - A8 H ^+ ĭ T8^8 ֨P| «5_y>B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_B'*|L b?$(ORFNi3333333333333333@f\,>4(88YH \V2AwGZqּqP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B8y0OjWI:;NݴSd?]ի%'BΥ9o+V+ Vw£zk%z3{#zի-3//-Re5_aV/qXvdz>4_sxTZXt(;7qGt^fJ}ΦxeEU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]J`r' oF 78h#<;aeFj]z jLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b 4(88YH R  c$txqajkQA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵt@ _SWKNrWc;QZ{x5R@Wc;ײ7Z,ٍ ▩2 /+RghGiE=@.O~],WI:_s1P#{بG-~],WI:=V`ԧg*߸V]\]|%o!ǩ{xի~O' u>qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EqTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4ELT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b HҖt%P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b x#J[pPe@7B (_V_s*0OVIЮv:$iVר6E]$P:t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b 5g4QBqp o&@ݫ9hy}B%P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RqTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EB8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[GLi;VɅ-ʙ-t7*1~)@IQ! Cr@ӄzFPW 9mO(N0NAmdW]VquyETcxqT(y>B~҅aU^΁ /wLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b 8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R@"w˜(uj -ʹ迫\zO>]\]|%o!ԸCEblP#!Vr.څx!)^j\v=x9_{VWxgr\O7iOd#_!؆͢!2ǩPS #k+ VwŊNմ% ݧP#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1E.a⸔j'R&4-y(MNJ9DqNi0i} D`0а"_A%4ӌ`Q8#CExQ|$5ƜsMځ|1hY/NhkMH ).=#Q$Ԁ$@_ Ha}xb( 9?Aǚ\j(44jB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP*Rܺ5g4QBqp o&@ݫ9hy}B%P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_뵘ffffffffffffffff*fffffffffffffffg@[!$qFWFSvaNi3333333333333333@f\,>4(88YH ts(N0NAmd~6GJ[x0?p_ 8k2 (N0NAmdTA8X%h\wZZǔPe@7B (_V_s*0OVIЮv:$iVר6E]$P:t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPB~҅aU^΁ /w4(88YH Nn)9ǔPe@7B (_V_s*wt+VIЮv:$iVר6\,WI: /u)yZt]$W%z3/]-9+ձm^Am)}<`|)j/ ^}Kdz_#״FCƗ_]GjtE=OبT#?V+ 0}jSu3 *,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B8~o! WWI:;NݴSd?])[^ڵpd]$P0ԧ/V+ VtTvbFP>?s[ZKN{U>):< }ZJ@^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.bFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\FRH h4*@*n1B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[GLi*YfԙCxPF4&333333333333333?joi@r[x0?p/Y<4@V<>` (N0NAmdTA8X%h\wZZS Q5[)OIETcxqT(y>B~҅aU^΁ /wLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b B8y0OjWI:;NݴSd?]ի%'BΥ9o+V+ Vw£zk%z3{#zի-3//-Re5_aV/qXvdz>4_sxTZXt(;7qGt^fJ}ΦxeEU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]J`r' oF 78h#<;aeFj]z jB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP5g4QBqp o&@ݫ9hy}B%P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R4QBqp o&EOMe٭Pe@7}<`|)j/d:gkWI:wB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_뵘ffffffffffffffff*fffffffffffffffg?',:?$(O+@ӄzFP`,Ɂ$ sԨtSXo(ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZKNJrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*Rܺ8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.,|)b_V]<`,WNǯqߊ^>=SVKk=W&~o25j"[bjRVacǃ'jq{OXw!ExƔB5a+b)z :?VIЮJlg|X[O rPy_7<0H h7 EQCFĠC 4Q#@2<<"*!6! Bxgr*fffffffffffffffgOCxPFR8+B R?&4&333333333333333?ի6ӧƸ,(N0NAmdA p ǻVs! P @:xDJ[x0?p @V2AwGZqּqHTpj c$ QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.bFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h44_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[G333333333333333?x*:BfffffffffffffffgfffffffffffffffK] ^i{pOHٙ[x0?pnzkP#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24Wʙ-t7£PGez@ @ӄzFP`,Ɂ${g?pS]SP=D_-@rF,{;xٍ{3q@W F%W|%z3-[Mx]ݥ;RV?`tJYVj -ʹ迫\zO>]\]|%o!Ը@=R㰱}'YSN]>x8Yk^Խ|{ի:u{ըLM4v?d>jEP/0>ԥ9+վ]Kdz+Oj5S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.}(QMZJBN(iKdzz׷0Not rb_%zrWc:QRմݷ/بS )O;~]\]|%o!ǩ{xW#ZPѥ.; >?`tJYVj -ߛiV;^=Kǹ}ZJCqMwY9EA4ac{O#ȳ!2}Z}tp i_t_ծ={WRzV.\S]FVblP#!Vr.څx!)^j\v=x9E4at"o9.+v7ш#_jc_WzH h7No0\iM=#AJ8IlA iW!ԭurfffffffffffffff4_ C|*:@!$qFWdWQ~)@IQ!p4&8W''Bw=N6ӧƊ)\y,/=5RtE16HxS[=LlK@RSǏy0>ԥ8V0NAmbT#zWW_ [OPN(co!2<`ծ<@_'6]{N?qU}Y%,(_eT#9+]~ar|V.P#ǩ{xPe@7<`|)j/u.; ծ>8t+{16Hx%zrWc;▭y}\szjC }'%-P9J؆ڔ՝3ʕj+y ._QQt]SFc!ժʖ)jn(=WU@^Wz 8IݷD=z#_Q_)Kdzu*rO ;o!KI._ buDN_}s+OW^jOKNto?6ӯޚJp2بm{=RR/}DZP#{ZjB+sRgiOT,=a(?sյ%zkիsTy*r.RuxRxD=NOCJ᨝jnaJ-ij=JҀrqMwYJ)K1yi1 9.+9"P Dࡍ(RfJ=ƜtEiƤ_4"jIt 8E44QDžpopY4QM@8Q0j]|,D0pӚG9\Z"ӄ1b Ga) 0ޒ8M# $4,cN@8y7xN<(aݣDW 1cM=ĠC}(гit4aN ԁ(JȜ1bE\qFo 78h#<;9DqD-/hD( 4`(KxW@5|øjF71zH 4Ӑ<ww=OrE<`,ԨGq>z SmC aw uC}Zq]$W%z3,Rv_% ݧ!y@7)doNw=Nq;vҝLM4v?ҜlGˆ^ -l]JA(ډE5kFG[u "@ @ N>9 H \ B -WI: @ @(qH~m]Si\}&5ܞ}|I?rLJ#x #WO' $V;m:e5ǯi]7<ٍ)^ȻjV}YF})Ǔq$ UzOcgo5'q]lW 5RJ)~ծ>,RvvҜ>TZ>4_s8QwdcAߊfc@ ZJEZyWWt~]P}1?{% ݧt~b}}ZU+ xtcQ~W >׽': #ӨmioS/Rj1Oc0NV{xrfffffffffffffff4_ C|*:@!$qFWdWQ~)@IQ!YdzkPpOHٙjoi\ s@'' 2`~  1a2wPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_04W*H8 n{.> Q_`$H;rkP>@B>5i4 ⳗ_?F=SR;1)b,R㰱ԥmOIC oZ#Or xitp oO|>ulɕի[~}Cq իr _& ⳗ_?}+jOm=?oI=N+C?Vv \WOץ8et+*<"GW<~V?v~qRǖW<~iϏXU O~CԸRz_鹘ը OoFe5?oI-ZC'_ժ4_p5'"^ G!_v:o!ⳡQ/8}>$V>+kz~ޓ(0v2  ⳗ_?ޥڌhoI.CP#qAS'ki@Kt Y˯ӟjBBrv)jnIJeKy=SxIЯf O$iy_0Nzޥ8} -}Y>ޚJ{wn5Ojg?,/^؆ڔZ1OR>@pr X{ ⳗ_?,,Ijժ`|@xI_rKxFu*Jua@V; z\$ը){/Aľ5xw;oCPqKVv>%LBO-} !or@^ulVիJV>4_Pmg.~o*W% "y_]XaCR_d8zy>?{~ruWV; zUBݶ\v@T+(0~dzY˯ӟ|@^ulV eKy|~P+j|)jn;R+goPm K}ix.2dyݥ>i=5ٍd|y?WO' $_OޥڌhoI3d,ԧdyߏg.J - >>]`F_\zh<ҀӟWiܹ!Bi<"Enի|1 ?]Q/]-8w7doiOW<"En=>]ku;q']Cde_]-:xD/ݷzxir| >CP%qTlݴPZx8Y';q <q Vr4>9~ޥڌhoIW⼒G,{;x?“8|mOC#@5~O1vҜWP$Aߊ88Y~#O~ի@{ORǍ95~dzB ~{+Yr%]BVߏ]}ߒ΁ / }'*¨pnO' :|kxSNBt+X{R5.,.e>A\YO:gkWv@h Mvca_~Jk:( & zW @ZtG]ZIm?z>59辳rY_cEUZ/Ɨ\dXi}SP%qsCde$BYMnOw0QϫdkMwY:|\=z+<)=}Y 1t-r~ެ-)N<ժWN?acǁ__!Ǔm+jq8go+վ\v@9%5YMn'N#(Wc%v~lo<>*[wNkO~]G%o@˯D->qY_wXvޞAVZ/޳“ҿ?ac܁>öެ-(?K?~:|j%ASpg*V>5}Yd~+9uݴWիS[{dJP җgoñE)b]SqXvx~+j+; *a; ժs4DJoVtRմݷ}SX=؆ڔ՝;+F~]\]|%o!ǩ{x8ñE!a5j'l]?c_W_Pmǻծx ▩;yWi@yQN'p oh?~a▭|{_.'؆ڕܢr!ԵUSi_jc:x/o;1)b/:go^Ñ-[Mxw<)T,=adqw$/E!)ñvcE1 Q=NacWd5j+t GX]9}v^CF=SR_Zt| %zuRC?խ: eiJGIի@~+~4àOwQ~x"}gנ.giBVm:|rARCŔq >  ~9J"ڵǍT{y9بs}q`( ~5N@C Qj?q>91”<)Ǹz:lpOE8XyQ_Wd}S˜(vV?i_W=$ޭ@0~*5΄&^F>YRy>^p_ W!TJ>90>ԨZ/=95,{;CJXvs1s&$rEsF 8Q0j]xsN@pqzC*1E/]- Vwdo]/'B~G:x/oii|Dži/NsC,jIqh#+b-8Hhၨ ;x? 뫐V>E!n}F?C<)KdzV; zы$k tc۶V=u5^@7eT>qm:|hm+ۇAzPνrV2Zjo[]-;BOK@Ƌ+ר€k7 S' nuKkwGK! W&WA{!O ! >P/g.s8gr}^=z;:"5RC OK.'n\J~rCin_.!Qst;qq_TY_~+ki_!իop^ƾEd| oMvT޽>Q\Bu1!+]rwa(au]k E˪Ǘ';\j#PNܿQ\B|j rkq8grtx(q>+jdcc{e5"r`~bio!:ssR_IZJ\v=+WPm K"}5#_s +Y!]Z@Ӧ5N+ d4IЃ(IW!Vu{dsxY=<|n;OJo\J~3 P}@oM:cmbFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[GLic3333333333333333S333333333333333?T>8.!$qFW=pOHr*LSVsxN`(@ @ @P`,Ɂ$/5g4QBqp o& TETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_&(ArG ʙ-t7u( #2D#IJ:q9ܑ쪭@!$qFW\gIJ:q0 4"5k+  ^S*Vsz>4Pe@7B (_V_s*wt+VIЮv:$iVר6\,WI: /u)yZt]$W%z3/]-9+ձm^Am)}<`|)j/ ^}Kdz_#״FCƗ_]GjtE=OبT#?V+ 0}jSu3 *,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_08t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.4(88YH \՜p#@c/C&dL xd.;-Px)խH@$*n1?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_&1C}lB^Ӧ6!( #2D lTB$6fffffffffffffffgZYm:|hQBqp o&@ݫ9F( ǐ^ L<"% - A8X%h\wZZS Q5[)OIETcxqT(y>B~҅aU^΁ /w]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b fffffffffffffffgfffffffffffffffK]  BPGezCN؄?$( v$6fffffffffffffffgZYm:|hQBqp o&@ H \])PjP`,Ɂ$dW:.r|0~k.m@88YH R  c$txqajkQA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵt@ _SWKNrWc;QZ{x5R@Wc;ײ7Z,ٍ ▩2 /+RghGiE=@.O~],WI:_s1P#{بG-~],WI:=V`ԧg*߸V]\]|%o!ǩ{xի~O' u>qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EL<"(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b ?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_ORF333333333333333?3333333333333333Zo-TbR8+B?gIANi3333333333333333@f\,>4(88YH ^+ ĭ T8^8 ֨P| «5_y>B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.bFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[GLic3333333333333333S333333333333333?؅F!( #2D!Ja@ 4􍙙3VsxNP`,Ɂ$+ ĭ T8^8 ֨P| «5_y>B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP*Rܺ*RܺB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\9 _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`HxP_`YFGцƜ`INhq|pZ0y iĠ{Q0KK)"ނ=5$i|NH¸P /ހ<<-93a$1z7oAFiN<).q -Drfffffffffffffff4_aQZfffffffffffffffgfffffffffffffffK]  BPGezA *)܄B$6fffffffffffffffgZYm:|hQBqp o&@՜p#@c/C& ֨P| «5_y>B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.UVPGezETp 8Ilի6ӧƸ,(N0NAmdW{g?P @:xD*n1*RܺbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP?`tJYVj -ʹ迫\zO>]\]|%o!Ը@=R㰱}'YSN]>x8Yk^Խ|{ի:u{ըLM4v?d>jEP/0>ԥ9+վ]Kdz+Oj5qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4EB~҅aU^΁ /w8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=sFF"+ч%@[Gč q\yaN4Wb({N5.j"F{L 8i(g4RH=h(`ѽ bxӌ o<úA8G"hQNJ9DbFP>?s[ZXt+zO,< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[GLic3333333333333333S333333333333333?؅F!( #2D"4PGezDuj!Ni3333333333333333E5jg7 9r[x0?p/Y<#@c/C&(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b B8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzP8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.qTcxNVrU5RQG\/m_WKNSF@[Gb(h K/9 ob({Cpq(%G4E8 ֨P| «5_y>B8y0OjWI:;NݴSd?]ի%'BΥ9o+V+ Vw£zk%z3{#zի-3//-Re5_aV/qXvdz>4_sxTZXt(;7qGt^fJ}ΦxeEU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]J`r' oF 78h#<;aeFj]z jB8y WWI:;NݴSd?]ը+ rRZXt+[ Ǘʖ[޽v?dh0LGIQ}GqX,{;E={N/dSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpb\A|qkxD<;YFMI.<(qF8z N 9Caqa8Ժ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4q9OoHaF7ш"A%N 1E.oq#MGxqBFpY|QfAFq' 9 hQ?% @_D-,z0G9# @,kzPSx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5"DHi' 9g4RKAg 1$4iCHa=B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sVB8y0OZ'Btc۶bl[^ڵpd]$P0ԧ/ZXt+[ ǗʖV vcE ▩2 /+Ը,{;E={N/d5R']G8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24 AE5j -w=O\{7?6ӮTVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,4"jIt 8E44QDžpopY4Wj Eiƥ@_ 5# =4ŜI.-y0ZpѦ#Q A#yyNjD 4?4i 0hцZ1R#ĠC 4QMN0$iZ<;aeFj]z jB~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"Rh‘4(Ev0H h7x<+4o8,0iƊEiƥDHi' 9,jI{zC 7a֌Aoq#MGxwH0'4(M8G"hG@(iFj]yqFj\pGjAZq\Z(5 _cL#@YH8aj< P=% pQ7H4aN@5.`9# /8%4KN@8o Hނ% 0&9.8M((2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV +  RZXt+[ ǗʖVdh0LGIQ}GqXac/őt}P# Tiux~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.B~҅aU^΁ /wqTcxNVrʔVQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RH 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b 4_sx._WKN>bFP>?s[ZXt+JV>S AEv]>x8Y6ӮkbFuⳗ_oMvT=QG\/m_WKNWhzH h7 EQK1|qkxD<;_4"jIt+4E{)AO]^*KVv>yw k"\<"P@Gm"Y}y^X!\H H}az#Om+j. c=إ9[Mx?ҠG[u "@ൡȃB\v4Bvt mydP@G:|@?5g4QBqp o&[ԅt 3 AfbDOOFޤ*9:xDQA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h48t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R53333333333333333MZYm:|khdLҷ df<#oRuHTr 3t*n1S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.):ㅕGTϫWW_ [t^> AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<Ԓ(Z8a!LGF@DžiC 44ohy)t(JȜ1bE\$4FŠ0$i`Qt4apӚ_0֌5?0KN@%ډZ_jA Dq_18-/8yiѝ -Dނ= Gц`ӏ KhzH h4):*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=uIQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/qF8z N 9Caqa8ԺYa0$48,jIqh#"ӄ1P`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#M(ZFpY|QfAFq' 9 hQ?% @_D-/[Gц8,9# @,kzP>}\E1 Q?만[{m:/~+ǩ{x=OWW_ [u.)#PWSd?]zCv-DZ )NJoWR㰱(jիk.^A:OߐXs~ߐwG=<~dz.'f42Cb)z :?VIЮJlg|X[O rPbFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na⹇s@`b&ApX`Ӎ&ӍHqF8Hky78,+F qDqtQ0`INhw0\Y<ԒG E b<057Q afC 44ohx8(cx5Cs:B Jqjd߄Py9o!jm:|haA_Vr4Z/~]>ܺT=?ongoOt ]zS&_wB/R$q%z՝ի~+kR< `Wc T \)=oRIsc_V.?9=(?~+kz~ޓ/ZjO9=ժ4_p5'"^ G!_;sԷYШ w`~>Jv}B+[e5?oIW p6Cc0ia._8 ev*n1|y9Jqqm:|hd'@\9V)Z)N@W!ȸo!▭|K+*[q~o^ҟsNx0Nx#Om:/t`VרW *n@]~FTY_m:<&irr]s⻶c0N%zkΕ7doiO,ZU'Wd}SRմݷw(WgoPm K}ix.2<ҟsurޚj<ի[~}@!Ǔa._8 } 5)@}/I1|>=˗/v$Y}?J>\mOC=|)Ti~ޚo!dz{#{J}¿_ioOuo!׸K`tJ8ezk.CĜvW"縅)Ǔ/>?/W6ӧ!}Z |WqMC{"0>Cde_iʖ<"EnY=<|Xb>Eҟ!V_ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr2K9u~+-{~dz:<}S):S't;_Yr~ޞAVZ,~?~+d6ӧƁL=V1z5<)bE!L:T,=adqe2={Mr}K }GiOPW DGiE=Nac)T,=adq3:Oz @~?~+m:|h*߹jP#ǩ{xTV>4_&Xw!֨P|wbk.\Y%jQ}-5ٍ})0r*P~&_iOoƓǁ~:|kr.}g"(cEUZ/Ɨ\dXi}SP%qsCdeZ^,^ӧƻa{zղ5vz>.'kq8grVvB:] \ y S'j,{;x4@8}<">~W'[dsZ[Ŕq < ?$<Ҁxv2Wo޳v{d |w?oI55RC8dc)#öެ-(?K?~:|j% )8v3z\xN>jm+t~+j;kŔmǫkҀ@R㰱v3ȸ1 Qu.; O~EZX<#J[$KVJlgJ▭|Kz`|@xIW D0>ԥ>_uqu𕼇OWpc<1Bj Nغ~V; Pmǻծ.%;xv3Ը,{;E.O' vrE ۰m:VG`ur~+jeKydk6ӨYC]o't7WPmEe~\v@ʕ z 8Ih ޭ]:_{R㰱?l>.?VvgqXvcoMvT rtwndzʹ=<~J+խ,=$ޭE]->NgoS;J;Oo~\UBݶ\v@z_V.. G%zNokR㰱(WaߊZl>. ^ot']\+16Hx؆ڔrV*a; eJkwR'SS'j^W䖨P}CŔIa}G EˮO)ZxJsiM =\mܿa1z_)jq>4ñESc0I۰GZT,=adqc=Kdz_r(rSdsiM@^a~\v@_bjR;|YMn{݅goߛizn{xf+G-RvV6ӧƁ+yQN'p oh?~a▭|{_CJQKǹZ)״1z%_e5l>.=0>ԥ8v3hSOo_s\v=~\v@VOy+ՊjԽ||uJ{ծW'T \h<Xvߴ{\#){zkիǓq>9}v^CF=SR_qm:|hJlg{OE/o:x/orI^sԷw/5kyB+9uYbRC-Re}{OƘt״#OO\Ol(WJn6ӧ!D- 1.r@$ĎH4bEiƥG@G4K/xwg(WT=lB+,/t~ޚo _%z3{#zy}':s?!ǩ{x⽧4i>N4Q_Fx0~s}?{eT;Dի LKVP kzk}^SӠ9}<~!Vez|(p8}0]ĸ,tz;krre ~'qU)=~+9uO,{;{ppg8TKeKy\)=/ԸRz_rڔrOܿQ\B^9=wBo!TY_~+ki_!իop^ƾE*[q~o^ҟs.!Q:WPeq /XgjWZ¾Crs=N+Z$j ۗ8T~CD_|YMn'@gGrSVF6>׽'_S[.!Q(Ny9ЃCrm}zLZׯ R㰱_\v@UBݶ\v@T+/c<̍}ϊP,SB]\}ɧLk|WŖi|?IQޓ,!Vu{dsxY=<|n;OJo\Jt?>_&1,m_yO~=re'W|aׅE|l}zLߏg._+5jXw _sWc=!U=J"TeR zl]ONMn'C^C2zlL#ơq[N?ac܇Oy_+0M:cm;OŔ9O;R_nkޓ( 5P=54Zb-E4&p}Zur]uw/zVvkttc5:lm+f dkoMvT>?W -JvBjdNN J~ڶ\ 'ְ9Ed  F92ǔWmO)zW1&q>4_T#x p6\mOk^a{sӮJoWi@ñE[x?ZNҊ۬sMj^ӧƢ4& W5c@5)Ǔa7^%!TJIТ\v=;/Rjm:|kzgiO1.r@$ĎHh[&ӍKi@_0CP#q do]eT>\mO3333333333333333jE!*v3333333333333333S333333333333333?*8T?pO~)@IQ!Q(?$((PGezE&]1@j( #2D {@RpOHٙjHOiE'' 2`~ (x͑.,PrD*n1ƋqKT}P#!Ը,{;_VIЮCa1JoVwU=j'AP0>ԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0jE9:&;FImb&44QDžs 8\qa8Ժ 5# =4sŜI ~q9OoHaF7ш#MN0$iZa D`4KK(M( 4`(K0(H jH 5iDžqhƠ]|5#Kixb( 9 5 G0Ӑ?/@`4(iF$ނ=5iӐdVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0=ЮF(җgo0Nxr,|+]owdNį׸zx/oj+y5djOF,{;xot ryc1FSWp0NAmʹ迫\J{WRzV.\S]FV&~o2Cv-DZ )NJoWR㰱ʞ}^Pwp`0X7~C5 #ȸE~iOd#_!؆ͮ1FS*Jua~qt\ΕX[O rPbFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDq5g4P @ @(88YH ^y "T̔P ]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z j}(QHҗgo;1o`w=N>ľJoVw-[Mxt+P#{bjRVvZJCRr5AE җgo0Nxr,|+]owdN+ծ={WRzV.\S]FW)qXv>,|)b_V]<`,ߛieǯqߊ^>=SVKk=#Om25j"[bjRVacǃ'WT>]#_*XIlw>]#QOB%\OiOd#_!؆ͮ1FS*Jua~qtEVwŊNմ% ݧ*n1x9E4at"o9.+v7@097@hQKx%ډ!A1.r@sMI.<+1L=|č qEiCN 9@цh8Q0j]|,D0pӚ8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQZt]$Q}Sv*o{9%ի'BǪqZLʋ#O~ի:x/o wdNծ=oߛi׊]~>5R)8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=ChΉF"+ч%@[Gč q\yaN4Wb({N5.DHi' 9qg4RH=h(`ѽ bxӌ o%xwH0'4(MNJ9D8t+y2f dk[9+ձ{ZCs/ )O;~]>O' u>qTcxNbo]~1urhzH h7 EQK70] bG$$i71L=ChΉF"+ч%@[Gč q\yaN4Wb({N5.DHi' 9qg4RH=h(`ѽ bxӌ o%xwH0'4(MNJ9D8t+wF8iN&~oյ< WKN)N_],WI:^GaieKyJlgzFxQP l~f4_O&_#Zj(#׸_R㰱:|h*45RB8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt(;71P>?s[ZXt+zO/őU'sRJCR )Wp0NAmʹ}Zبx])B˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&H# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057xzxN<(гOh?8C 44ohy)tP Dࡍ(R&4-yq#L8,`Qt4apӚ_0֌5qZr(LPEJA Dq_18-/8%4KN@8oImb&iAGц`ӏ KhzH h48t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24Sx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHa=B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.AaѦ2P R! n2*O!@TA$*n1B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b ?JSP8x8YAH ^u "OtDbl;91ڄxNj[u !Py  %P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@bIР`9sN_],WI:^GaieKy^^޻oj l~f4_O&_#Zj(#׸YJ\v=YO24{3333333333333333Bqp opLA8\VY/Qx n)V+Gm$F*O!@TKd A x(>dVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[GLi⎊9HYfffffffffffffffgfffffffffffffffK] ?$(,B6PGezC"~)@IQ! ~)@IQ! ⎊9HY!$qFW/:+#܎@ iM=#ffffffffffffffff(N0NAm@ H ^ի+8e;o!m0 qx>@@ҟ^B)( }<`, @H$/'̊{YB6HJʝSmFmB<'5K܄x-ԨE<Q ֨P| «5_y>B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4dVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[GLi⎊Jpm0C|@j( #2D!K M^PGezA2BPGezB;RAm~)@IQ! ⎊Jpm0~)@IQ! ⎊)4&333333333333333?'' H $/j`^2@@Bbv< @ J tiORD0NAm@ ]BE`]=,X$i%|eNx}GlLd6B<`eT"BIETcxqT(y>B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b 4eT>\t|P$ڵpa>4 r5=Kdz?9 nbG$YCh[&ӍKi@_0=Pq>4T+fffffffffffffff*fffffffffffffffg CJH⌯Q~)R*H`!$qFWA0 4 HT - A8a}@_-@rF,{;xٍ{3q@W F%W|%z3-[Mx]ݥ;RVx8Y6Ӣ~+ǩ{x=OWW_ [u.)#PWSd?]+T9mBܼ{RVu.; <SFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDqB~҅aU^΁ /}q<`~qt]Sm)#OmGjbIР`9s9ot]$W%z3/]-9DVwdo]xY?s//-ReQ}GqXac/őt}P#!KO~],WI:_sB8Il#ի'BǪqZLQdxIuqu𕼇OSV]<`,ߛisDZP#qm:Eg.^ޚJ{r#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_08t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQZt]$Q}Sv*o{9%ի'BǪqZLʋ#O~ի:x/o wdNծ=oߛi׊]~>5R)B~҅aU^΁ /wSx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9E Ag 1$4iCHaq8B=sAFސo05E.% @097@hQKƜ`Hxč0 5.=54NsCцQ iĠ{Q0KKA4a9#K"rGŢY}P<-93a$qGa5#z0xLqIsoImb&3333333333333333Tk 5{@^RT&CJH⌯Qj:4&333333333333333?cMjm:|hU?A st H )mD&/iQ(Z\q((朁qh#R4(4KN@IӐ  6ӧƁVr4Zǹt^>=\f4_1 Q=NacGJNղjS'jd߄Py9o!jm:|h/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oIP0v2  ⳗ_?ޥڌhoI m;7><8V>4Q@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDRz Y˯ӟ}\ +VGs7/|Uv?>ϊW:ʖ{;ߛײ7-zS*ޞ)Ebl=N<>|ժ)nM9EVr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89E X{ ⳗ_?,,Ijժ`|@xIW D;}ǏtiOlRaVDjrKZk}Z){/Aľ5xw;oCPqKVv>>*4/=ܒؽ/dgVEk`}Z GV>4_Pmg.~o*W% "08zՆ/9.Oo6CǓqϫWAW'QV; zUBݶ\v@T+(a8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA(T v~#O~ի@{O_\xN/ӓ[,{;T(y>B~pgPb._%]BVߏ]}ߒ΁ / }'*¨pnp5ivҞk't\ EQ}V5 G'>ö5dc״p'kq8grVvB:] \ y S'jq8go|}|OGݷժ=x ~JoWIkMoS[,{;x4@7JϷoY;i׽u;~ޚo!ӆF2?!_uE?r y;~\v@N?aczy2SZj>;zz O~CXw O﷫ y #OOy>ö{N!?iOñԨ}ZtW!goP#ovt~+j;kŔmǫkҀ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇OPv3ȳ,>OP틧~+jtǍz,znf5|)j)յ?s@bFONy;xv3Y!J}ZDEc<1 [WKusU v}q\~R㰱ܺ<`,_aOQ@_s݅goߛiz?V3뫐#_W MvTFm:՝LT5}C~+j?s(q_*T{14&}/zwGo}zgo_թ'T,=adqc=KdzȳeJ(O'_Wv,{;xN%zŔӄյ@Zkղ5ߛi~g~ob:_WPmĿo޽:;_WW_ [vru#ZA 7{յqXvaߊZl>. ^ot']\blW )N9+վ\UBݶ\v@+խK !O;iN<իX{_{$B,ծ Kʹ=.]r}1N?j?c_W=$ޭ]ЮCv=ǮOu37-RV6ӧƁv3ȸrpf ?v=~mQVU v}q\~R㰱ܾ\mOgq>>O' 불pf)jnǹr.'؆ڕܢr!ԵUSi_jc:x/oC/˜({xCqXv9Rմݷ!w<)T,=adqw$/E!)ñvcESOo_s\v=~\v@VOy+վ]9}v^CF=SRծ  ~9J"ڵǍT{y9بs}RPtq/;O{F_Wi/1”<)Ǹz:lpOE8XyWY ~\v@<)bo!jsiMQ@)#PA`5c@5)Ǔa7^%!TJ>90>ԨZ/=95~dz0>Ԩ8go??9 nbG$_sF 8Q0j]xsN@pqzC*1dX^B5R@JlgzFxOt ~CRii|Dži/NsC,jIqh#"ӄ1b ñW/K𨱏^m@C!n}F?C<)KdzV; zы$k. F8iNJnPN_Tcx^C6ӧƁ(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(&1s?I1E/op^?^acyWPm K"}5#_s z5ժ M:c\,CK9LoR!Vu{dsxY=<|n;OJo\xN0 Ӧ6CŔ={ |K"}ǮOv3]^;/^12~?y?C,{;/|zñޥ}L+OPq :΁1;Onkޓل)N<!]F=эCiNKe5~dz<:8x;Nye5'B~{ۇ(tZ\q((朁LiGffffffffffffffff*fffffffffffffffg CJH⌯Q~)R*H`!$qFWBk5~)@IQ!%x$ iM=#ffffffffffffffff(tE @ R۬sMj^ӧƢQM5P' d+kSd?A(mO@g.#Nի[~}C=?oI3d,ԧO - >gosCt9E _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(`d;0g.#NsKr!/~ޓv*n1|y9Jqqm:|h`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']Wy0#In_"}ݷwKu/]-8w7doiO,ZU'ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prPmg.#NsYY|իT=:*ޮ@VvҟBN0d}S䖴zR!n_ƒ7}~k/v>%Z▭||)Ti_t{%z/!d-_+έ?v~qm:|h*a; ]~oMvTK ՝Eap "_r5 \^ loS'4VoڂNR\v@8l>.?VV*Q@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpbXw ⳗ_?w=N,>eD5zOY˫^Il#=YIՇҜy>6ӧ!_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=P9^i@>ϫWځ=N=KV>4_&Xw!֨P|wbk.\K J/41/%5_rNUQ~ =zjӦ7>:=Oo;i״ȸE\1*CxK_,d4V9Vj%ku:|kǮO}[#]m?zkǯiOŔq >wu?oVOpq < ?r5B~ҟsc=PǍC; Y˯FWv׋)׽Vץ(iKdz"~1FSԸ,{;]0G]VvgBumz=BycV3뫐#^Yñac/ux8Yö.,ݻ ?6Өa~],f W GV; /o!lwu;zߛبksWT,=adq~QG+joMvTpciM@^mzaߊ.; . W[q>BPvҜy?WPmĿj=NIj>v,{;xN^oYñac/|yڕrSdsiM@^a~\v@_bjRVv){x/ݻ ?6Ө`)GI}ZN"})ñ|$0NAmm9Rմݷs\O +E/oCjP^ӧƾǹt^>=\f4_1 QR㰱+ñr8ioCy?S[X{Il^CJSc0Ƌ!2<Ը,{;xZ/P%qa{W}Zx/ovҞki@&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A(@rEki]LsP#qf5j)]#Q/tq/Ơi"_v!2GV6ӧ _-:c{@5)xSptَ@f5JpVZ/xSNC?~+jӄյ\S]F^9Ѓkר€k7 S' nuK;BO/m m:|r`}Qq_9zrkq8gr`}Qq > 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծS*ע_Ր&_$jo*[w=:5j+zP fJqa{M׮p4YMn){Pvs!B@!BJ}o{o _]~q 8ۇ_sc=\Q\B_*[w3vc_!kޓիޚo!dz{#{J}ΣGc^C1BVY_ 8,3va_!ȹuYz{xCrժ<"F~G:@WŔq :ΏT4~]l}zO,Q\BQ@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IQ 5PbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDž-/8%4KN@8oImb&o Hނ=5(xREhzH h4]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNP -oImb&ሠ 8Q1s/9 ob({CpqMI.%4EB8~o! WWI:;NݴSd?])[^ڵpd]$P0ԧ/V+ VtTvbFP>?s[ZKN{U>):< }ZJ@^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> AA"wy?C“.իCX{ W6ӧƀ,znf5|)j)յ?s@bFONy;xv3Y!J}ZDA"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  9_WzkGNh7kt{WǩqXvZ|UBݶ\v@;xv3Ը,{;\1oMvT rtwndzʹ=<~JrW[YMnz 8I[^*[}[#]Gަw*y>áqU v}q\Kӣ_uqu𕼇aw'Q9+խp~[^giN իX{WKu&~o_{R_C[T,=adq/ZԸZl>.%WrKT(>k}Zरi>Nߐ"']<~?siM =\mܿa1zS;yR'jm:|hc<(aacuJkPm.; }FԯsR$~իNo #jRŔQKǹ~XvG7>;iN8NCt?yQN'p oh?~a▭|{"}`}]){x/KUZ?z>5F=SR;1)b/:go^Ñ-[Mx\sUBݶ\v@rKb_bjR;f4_1 Q=NacWd5j+t G[ǩ{x붔\xN(AL#q+=|AkרLJc>W'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁Li4F3333333333333333?3333333333333333Zo ^!$qFW?b$ R8+B!@5?$(})1S 񩙙[x0?p doiN R==zOIETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_})1STk 5{@^RT&CJH⌯Qj:R8+B#aN"R8+BN)Bt - A8PHp덲7i{)J@$*n14_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[G3333333333333333&fffffffffffffff*fffffffffffffffg CJH⌯Q~)R*H`!$qFWBk5~)@IQ! (>.!OЁ 4􍙙rkWiE F/[ˠOAQKn$H95 @!{NAE4B+@G4KAM EAZr4 ⳗ_?F=SR;1)b/u.; ?=JVJqT><1 pծ=LM4(a>9o9V0NAmI'έRy?WO' $՝AyWi@ 69~k7]~FWeի=';_P՝<~/1uN<! JO _[O`^Cf dj?ǩJo_Osv0@“ߐ.:nf5j\)=r.{Q~WŔ&_$jA:~0CW~_랥΅DkVӷ/Z)zLnp`f9,>eD5zOPNo!ب )ǓǍrKt Y˯ӟjBBrv)jnĿoMvT޽>+ `tJ/F0NzOkҟTJ/Sd?]/t>?sPiKwlTA(v@ ⳗ_?dgVEk`Ijժ`|@xIW DEWp{w^/Rjm:|hztp o~m_Vv*RۮMjS}Z,/@[{bjRj0=K_ (UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9E ,{;xo9'dgVEk`oMvT|~P+j|)jn;RVv_qU v}q\~PT;}rdyݥ>i=5ٍd|y?WO' $qX}˗69~ks:B J}G>rW - >>]`F_\zh<Ҁ܍9y>@}/I1|>=˗/v$Y}?~ի|1 ?]Q/]-8w7doiO$Y}^c>Eֽ^/u+b$F%=Oq5Lo!N;Dcgot+sBɗ]_jm:|r\իzٌm;,C>\v@_]-:xD/ݷzxir| >CP%qF=J{% y<ի[~}C<'(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr9^'' >4dxI}sԽ|~+kiErkq8grj'Av* V JԢ@ZkSY!Ea7/XUM׮0NAmt!2؅0WPm>ŅL#״'ب+"_#״R㰱}Z/xUBݶ\v@oc0NC< "Q@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(ѥ.; <cFH^8io'_!R{/ )O;xv3oի:x/o E!a5j'l]?c_WPmǻծ*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծI%zi,Xv(Q@~ծP/v!Gd| ɭ=v!Glj,{;x?Ĺp9"1"R#Ġxr<;_ժ!Q{"JʖWc;ײ7Ǘ|?n4Q@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9E0?14鍷9O9){x/ۇz.; }Z/8l>.?VV*_y魙V_sWW _ri_e2_$AezECnkޓ={ |{FC-q~W}Zt?>_&1,m_yO~=rñ|$>r=O׽&QF+/B+@G4JfffffffffffffffgOW!A q ~Tk 5{@^RT&CJH⌯Qj:R8+BiS333333333333333?'' 2`~ ./Uƞ j /`X)C Aנtt "Q\2FZCs/ tQs[;x2+k+ zю'nSFmzjt@rR^jbIЮJlg|*; Oo_*[rWc;ײ7Z,f4_O&_#Zj(#׸_R㰱:|h+]GV+ /}@b|~$t]$WfJ}Φx~,=V.Խ|@Z}tp o~m]S@7ʹg.^ޚJ{y]˯.,n_V+ (ц"o9.+9 b1";/xwg(h DԒ"W8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,,jIqh#"ӄ1b B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[G3333333333333333Y^aNQ{x.fffffffffffffffgfffffffffffffffK] ?$(,B6PGezD(QЇ^!^vPGezEH*8r@ӄzFSVsxN`(88YH \-ڵ<%bQA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4fffffffffffffffgOrG!^ԙC|@j( #2D!K M^ t!$qFW,H{^q$ >CܽR8+BSڜR{,Ci0 4􍙙\,>5g4QBqp o&@[ktxK,Ģ*n15g4QBqp o&@.xq*n1?`tJYVj -ʹ迫\zO>]\]|%o!Ը@=R㰱}'YSN]>x8Yk^Խ|{ի:u{ըLM4v?d>jEP/0>ԥ9+վ]Kdz+Oj5=ЮF+OF,{;xWu+f;Zի~O' 6Ӣqw,|)b_V]<`,WNǯqߊ^>=SVKk=W&~o25j"[bjRVacǃ'jq{OXw!ExƔB5a+b)z :?VIЮJlg|X[O rPy_7<0H h7 EQCFĠC 4Q#@2<<"4F66רZ! =D@"w˜(uj -ʹ迫\zO>]\]|%o!ԸCEblP#!Vr.څx!)^j\v=x9_{VWxgr\O7iOd#_!؆͢!2ǩPS #k+ VwŊNմ% ݧP#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1E.a⸔j'R&4-y(MNJ9DqNi0i} D`0а"_A%4ӌ`Q8#CExQ|$5ƜsMځ|1hY/NhkMH ).=#Q$Ԁ$@_ Ha}xb( 9?Aǚ\j(44j?`tJYVj -ʹ迫\zO>]\]|%o!Ը@=R㰱}'YSN]>x8Yk^Խ|{ի:u{ըLM4v?d>jEP/0>ԥ9+վ]Kdz+Oj5B8y0LWWI:;NݴSd?]ի%'B”/V+ Vw£zk%z3{#zըY?s//-Re5_aV/qXvdz>4_s]~1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<(h_@5}y(yZr4ghzH h7hxjF4aF4’(F@[GLin1v C|@j( #2D!K M^ t!$qFW-=(!$qFW:/$6fffffffffffffffgdL n/p{Q| l|*5P*n18t+wF8iN&~oյ< WKN)N_],WI:^GaieKyJlgzFxQP l~f4_O&_#Zj(#׸_R㰱:|h*45R8t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&3333333333333333cC|@j( #2D!K M^ t!$qFWQv9 4􍙙\>4QBqp o&EOMe٭w=N'B%P#qf4_O&_#ZzacNur&S rW|%z3ZqT(y>B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M*fffffffffffffffgO--Rs+S333333333333333?3333333333333333Zo ^!$qFW?b$ R8+B!@5?$(6FIQpOHٙ5jg79E - A8 vCA+AzP0t'' 2`~  c$txqajk!LdG֭o 2@<"%P#qǭP9JՅWzk:(}q;ծ>8t+wF8iN&~oյ< Q@!,WI:Υ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F Ĺ1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGF@Dži(sAFސo05E.*CPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_04Q@o $E@@A"DÓZSMD-.a⸔sN@_DP% y|qG$N iQ@8?Jori@+9us_jc:x/oC/˜({xR㰱ԥmOIC oZ#OriY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4Q@hoIxiv_xZyO}SujOۨY1r]<~^ɗЮԨtO+վ&>]`F_\zd \>< `Wc T \)=oRIsc_V“"縅|YMoOeKVP'!V!`PzT( 9|W񝎹[xTK?Om;r >ޟ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(d'@\9V)Z)N@W!ȸo!▭|KeKy=SxIЯf O$i3ǫd[^Q@=iy>@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&Dd`+9us\@^ulV 䖭Z,f tTrK\wp*V6ӧƋiiNի ׸!)Vc S԰/T,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժP0~dzY˯ӟ|@^ulV eKyWY {?V; z'▭|~CE/ogoPm K}ix.?GSq>9C]?\v@Ǔtp oO|OޥڌhoI3d,ԧdyߏg.~]<`,^Cf dj?ǩJo_#( ӟWiܹ!Bi<"En}ZN{Sa5RCg{zF<"En=>]ku;q']Cde-5RCHMx;}ǧ8W'ȺS>jWTlݴPZx8Y';q <=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; (H? qp oi@>ϫWځ=N=KV>4_&Xw!֨P|wbk.\K J/41/%5_rNUQ~ =zd޽O} b)}SqU v}q\~*_ak\X]2={Mr}%={N/u.; ի)T,=adq3:Oz *~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@r@R㰱v3ȸ1 Qu.; O~\v@UBݶ\v@T+iKd|!^#Z/{KuU'\RcGnt O #o~mQm՝;琥>][^PEkի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@QZ/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1z/RjP#ǩ{xW6ӧƋVwR_@~CR撽Z:o!j_~jj[VrB4|#Z_jc^mu:|k*y8>t;JrWq>9 )o!kq8gor?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(Wu|Wt 0~1”0]wS{% yNbjT~\v@zN?ac܇bjT}x~dzK7 1#/9 ob({N5.co!acyW=NŒ5~\{Nݴ%za 'q*n1|{/Rki@@~6޻o^6>׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qPNy9ЃCrm}zLZׯ R㰱իCX{jbgq>ّUj=N΁ ur&1zu_Xc!N&_D_zLT:?ײǹd<,>7%zծ%gq>';Og.s ^}]_=r~qU}oR&_R_sbzrkq8grg@r'׷IzlL#ơq[N?ac܇OyfffffffffffffffgfffffffffffffffK] ?$(,B6PGezD(QЇ^b4&333333333333333?'' 2`~ +Y\.WsT:xgr( l|*5P.; ?vc^:z}'|!^DqKVvԥ>uqu𕼇O k@iKdz|q']1O3 @!{NA^ӧƁYfffffffffffffff4_-#C|@j( #2D!K M^ t!$qFWk/}/.!OЁ 4􍙙rkWiE F/[ˠOAQKn$H95 @!{NAE4B+@G4KAM EAZr4 ⳗ_?F=SR;1)b/u.; ?=JVJqT><1 pծ=LM4(a>9o9V0NAmI'έRy?WO' $՝AyWi@ 69~k7]~FWeի=';_P՝<~/1uN<! JO _[O`^Cf dj?ǩJo_Osv0@“ߐ.:nf5j\)=r.{Q~WŔ&_$jA:~0CW~_랥΅DkVӷ/Z)zLnp`f9,>eD5zOPNo!ب )ǓǍrKt Y˯ӟjBBrv)jnĿoMvT޽>+ `tJ/F0NzOkҟTJ/Sd?]/t>?sPiKwlTA(v@ ⳗ_?dgVEk`Ijժ`|@xIW DEWp{w^/Rjm:|hztp o~m_Vv*RۮMjS}Z,/@[{bjRj0=K_ (UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9E ,{;xo9'dgVEk`oMvT|~P+j|)jn;RVv_qU v}q\~PT;}rdyݥ>i=5ٍd|y?WO' $qX}˗69~ks:B J}G>rW - >>]`F_\zh<Ҁ܍9y>@}/I1|>=˗/v$Y}?~ի|1 ?]Q/]-8w7doiO$Y}^c>Eֽ^/u+b$F%=Oq5Lo!N;Dcgot+sBɗ]_jm:|r\իzٌm;,C>\v@_]-:xD/ݷzxir| >CP%qF=J{% y<ի[~}C<'(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr9^'' >4dxI}sԽ|~+kiErkq8grj'Av* V JԢ@ZkSY!Ea7/XUM׮0NAmt!2؅0WPm>ŅL#״'ب+"_#״R㰱}Z/xUBݶ\v@oc0NC< "Q@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(ѥ.; <cFH^8io'_!R{/ )O;xv3oի:x/o E!a5j'l]?c_WPmǻծ*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծI%zi,Xv(Q@~ծP/v!Gd| ɭ=v!Glj,{;x?Ĺp9"1"R#Ġxr<;_ժ!Q{"JʖWc;ײ7Ǘ|?n4Q@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9E0?14鍷9O9){x/ۇz.; }Z/8l>.?VV*_y魙V_sWW _ri_e2_$AezECnkޓ={ |{FC-q~W}Zt?>_&1,m_yO~=rñ|$>r=O׽&QF+/B+@G4JfffffffffffffffgO^^\B333333333333333?3333333333333333Zo ^!$qFW?b$ R8+B!d`B$6fffffffffffffffgstE - 9>?I5f8~dzPe@7}<`|)j/d:gkWI:wԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0jE9:&;FImb&44QDžs 8\qa8Ժ 5# =4sŜI ~q9OoHaF7ш#MN0$iZa D`4KK(M( 4`(K0(H jH 5iDžqhƠ]|5#Kixb( 9 5 G0Ӑ?/@`4(iF$ނ=5iӐԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0j\qR&;FImb&44QDžs 8\qa8ԺYa0$4;xI ~q9OoHaF7ш#MN0$iZ$ZYG(M( 4`(K0(KcR@QMH4kN<+E]|5#Kixb( 9 5 G0`|JyCN 4&)5iӐB8y0OjWI:;NݴSd?]ի%'BΥ9o+V+ Vw£zk%z3{#zի-3//-Re5_aV/qXvdz>4_sxTZXt(;7qGt^fJ}ΦxeEU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]J`r' oF 78h#<;aeFj]z j4QBqp o&EOMe٭w=N'B%P#qf4_O&_#ZzacNur&S rW|%z3ZqT(y>B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M*fffffffffffffffgOǧS333333333333333?3333333333333333Zo ^!$qFW?b$ R8+B!d`BPGezAxCJH⌯QǧA( #2D $6fffffffffffffffgstE - 9>?I5f8~dzPe@7}<`|)j/d:gkWI:w?I5f8~dzPe@7}<`|)j/d:gkWI:w3333333333333333S333333333333333?hPGezCJ!R@( #2D#] 4􍙙\>4P`,ɁsYvkjS,{;A7?vcEe8L\v=\|q]$WW!e0%zrWc;ժB (_bjRVvZ}0NAmʹ}Zبw0:ܺ=SVKk(ѥ.; >>}\E1 Q?만[J6Ӣqw4QBqp o&EOMe٭w=N'B%P#qf4_O&_#ZzacNur&S rW|%z3ZqT(y>B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M*fffffffffffffffgO!'Jʙ-t7{@R8+BT ~)@IQ!KLR8+BœD!$qFW[֨^ iM=#ffffffffffffffff)W9!B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"Rh‘4(Ev0H h7x<+4o8,0iƊEiƥDHi' 9,jI{zC 7a֌Aoq#MGxwH0'4(M8G"hG@(iFj]yqFj\pGjAZq\Z(5 _cL#@YH8aj< P=% pQ7H4aN@5.`9# /8%4KN@8o Hނ% 0&9.8M(4QHҗgo;1o`w=N>ľJoVt8io_t+P#{bjRVvZJCR)ЮF(J\v=|~+:ȳu?만[J6Ӣqw]\]|%o!ԸCE#OmFCP] rCJS[Ը,{;xrhÒ -Dr\1G 4W o05Gx%ډ!A !s#x<;5$h8Q0jE44QDžC[Aig4]0Ҏ qDqtQ0`INhw0\Y<ԒG E b%F79!#L8,@=h(`ѽ bP=Hxӌ o<ø4KK(Mlj8Q qKBq}JPOi 0(Ըč qEopY4WjPfހ I45Aj@Ơ]|5#Kiሠ,J HI.q5CCr 5$ԍԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0j\qR&;FImb&44QDžs 8\qa8ԺYa0$4;xI ~q9OoHaF7ш#MN0$iZ$ZYG(M( 4`(K0(KcR@QMH4kN<+E]|5#Kixb( 9 5 G0`|JyCN 4&)5iӐB8~o! WWI:;NݴSd?])[^ڵpd]$P0ԧ/V+ VtTvbFP>?s[ZKN{U>):< }ZJ@^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.?I5f8~dzPe@7}<`|)j/d:gkWI:w(\%!\mOR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|Jt+ (җgo0Nxr,|+]owdҿʹ迫\zO>]\]|%o!Ը@ R㰱}'YSN]>x8Ym:/~+ǩ{x=OWW_ [u.)#PQ_16HxT9mBܼ{RVu.; <0H h7 EQCF h+@pHkPE.b\@(MI.<+1L=|č qEopY4Wj4h8Q0j]|,D0pӚ(\%!\mOR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|Jt+ (җgo0Nxr,|+]owdҿʹ迫\zO>]\]|%o!Ը@ R㰱}'YSN]>x8Ym:/~+ǩ{x=OWW_ [u.)#PQ_16HxT9mBܼ{RVu.; <0H h7 EQCF h+@pHkPE.b\@(MI.<+1L=|č qEopY4Wj4h8Q0j]|,D0pӚ(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV +  RZXt+[ ǗʖVdh0LGIQ}GqXac/őt}P# Tiux~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.j~)]<~dzPe@7B (_V_s*w0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=Oب)qGt^fJ}Φx~,=VV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ s<ŢqF{AǔzQ0{F hK`r' oF 78h#<;ae(KA G8ᆴaӐ?/@`ڂ-"R j#HDžqh_@5}y(yZr4ghzH h7hJ Hނ=5(xR\F@[GLi[*RxBfffffffffffffffgfffffffffffffffK] ?$(,B6PGezFÓ?$(Y9P 4􍙙88YA/A8 ?:.r|0~k.m@_-@r ֨P| «5_y>B8~o! WWI:;NݴSd?])[^ڵpd]$P0ԧ/V+ VtTvbFP>?s[ZKN{U>):< }ZJ@^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.8t+wF8iN&~oյ< WKN)N_],WI:^GaieKyJlgzFxQP l~f4_O&_#Zj(#׸_R㰱:|h*45RB8y0LWWI:;NݴSd?]ի%'B”/V+ Vw£zk%z3{#zըY?s//-Re5_aV/qXvdz>4_s]~1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<(h_@5}y(yZr4ghzH h7hxjF4aF4’(F@[GLi(aN#3333333333333333S333333333333333?`HCJH⌯Q9G^; q^B4&333333333333333?'' J,{;?1u, @>(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_)JrjbIЮJlg|*; Oo_*[rWc;ײ7Z[c;1x2R&_#P!EbghGiE=@QQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 4QBqp o&EOMe٭Pe@7}<`|)j/d:gkWI:wj~)]<~dzPe@7B (_V_s*w0OVIЮv:$iVר6E%'BΥ9ot]$W%z3/]- %z3{#zի-}<`|)j/ ^e)qXvdz>4_sxWtE=Oب)qGt^fJ}Φx~,=VV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ s<ŢqF{AǔzQ0{F hK`r' oF 78h#<;ae(KA G8ᆴaӐ?/@`ڂ-"R j#HDžqh_@5}y(yZr4ghzH h7hJ Hނ=5(xR\F@[GLi[*RxBfffffffffffffffgfffffffffffffffK] ^ )b4&333333333333333?'' H \&^?1u, @>(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_)JrjbIЮJlg|*; Oo_*[rWc;ײ7Z[c;1x2R&_#P!EbghGiE=@QQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E. @ @ @ AB @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @:ZonIP0 @ @ @ @Llv` iM=#ffffffffffffffff)W 9mOp0YP`,Ɂ$  JjETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Drfffffffffffffff4_Czx£`p (0l8Ih>{3333333333333333_GO5Б NiWP$l W[xH @/ ? + y|WP ^Ui|]qk@y|,HԌ+P'qT):x>Ը,{;\>=dzxJծ={Nbl|{;Y!o!}ǿ7u(Q_BDzQ_jtzG#8t+ԨҟsuI ˠW'ë 0YЮY!]XUWI:3ȸ^,¾^8t+z;_dzAj/ts /uwV.],WI:Pe;o#'By?C !s:B=<"Fm=?d|ժ\*Xt+^8t+zxP8ej j1p}AGi>5rñ px;q0?)aU'B䫺J!o!:SߚS  dziQu*6A\ a_VvxK8>]XU)~R㰱tW WI:z5\|j{Wy+r N>q'])'ԧTk-_'a zW[bSVׅGai|Wv5 ^=\'WJR㰱tW'Bjx#Z9E~/! q=Kdz._S[ !/ZjD W!ժ/ycի“.]W[cgiD񞳃gf;ȸ^,¾/a~X}|M+~EGu(',|V_V?Vځը }ZB-(Wbx<,Joi x8Y'Bz P\z>5-iX}GzA*n1)Kdz2)jxIРrr3i=s"_%\sp.u uY>O]PG߫T+{t >C*+ ~^8t+yRպS'k^w=NãS䨢N~Rv?s߄vZ^ߛj !orZ~e:S'VGW_!d-\3d"<)uxW]re>4W!>O@"=XUvc_!ߛ״;u+]RwP#ǩ{xr<`}Kdzz-[Mx.(xQx`hHӄ 4+Q Kx%Ӑ=.-x<((䚉!9h 8YLiQ_V>5 Gw>giBzWځWO9~>6ӧƁj! ,Re5qw%)V !(9zC! ?!}Jl>,/*<`,q Y?s?]opa8wv2xʫժ>=d~C[-[Mx=@9]J{~sVA*orP/zk)^^޻ojG-[Mx`p?5>5^ܢƔ'QGP Ը,{;x▭t+4>Jqqm:|hD_ڕc1@jO~*T{>\2B#=}SaZd0DOǮOھ=<~=<|vK SECAxޥ1OR8>C"+'o!jq89CZgo5Ԧ)G%V !eDv3ȸO':gklO~\2B""Tq']X}{R"_bjRVvxIŦ3=N1 v ^rkt}acm0NAmʹu.)#P$A`uL{~=]QOʹ?VvRki]S}Zƞ|W'B~r9 T<);bZd0Gծ]r~ϊ[wte=BCoV+K1wrY_ҟjqO' R㰱x܎)jn9,/*V1J/ )O;yz^4_}Y=`}E'B~=O;{1Gq? R㰱}ZqԨFx/o]{yWf5>wO'_\J>4-:co{W! >4Pr{adzQrB߾,se~0=ѥ><իCA}ǿ7€k7 Sv!o=Ӣ4SVׅnFaϫW#ZJrY_t{%zJ)jۇ^4>?]JҝXaW SM{OP=Jb?{0;kjF4}DSqm:|hcF%37'>I-Oac0;kK;-O񒔸,{;_VOo w$/\֚d|{Jpa8VacW-"w}Jծ?! sR5 BAx?5j%)V !(V !l%zw%)V !w#_);q ac4G>VC/RV^)_\xN(c<}SqXv\2B#K Se2**Oo o< Wz6u׮@eT>_jcR?s]`}J}Y=:_WW_ [OVaz!Qc"ַœEq']?-%lpkƔX})jsqXvyTXǩo!:\{ڃݶ^Wu);5.; ?|z%):S؆U'?sރ/!@]&θzde ׎3JiϏrZq'].>acSVx0NCW D^j\d:xE}?c-z|P}._sϏWV1Pvx䖴z6uׯ_/^;zxE}?J.riZt:9ER㰱+ ^C*ޞ)^ȹJUZNM:~O'ՆTlݴaw'EZUjk6SN Zq']0>ԥ;/Rki@}۴E+5j+}Ξ0LGI:|k:gk! >P~Z=NJ_.MˮO@\3 Dz*V>4P%AG[: N>Q/<,<3zki\~oYju:|j?jmS:e5aۨQ[ ۞W ñW~onM:c~qm:|hzu=g~iQ=?0 ZCB~Ǔ{7?r8O R㰱}Zd0G=z v}rY\AjOoQLCO^w&1V>4VR /&QR'o!KdzV !lsY_ҟj(2B"/}KM\3Ӧ5N+ki_s8_s)˯cF=SR:x;ygm>C-Rvj! ?!dqS9E~ ~k[푮O.; իCAx!|@Ǻ4Z xRv.MˮO“u:|k #j+!d-_i<`}Kdz)jpa8#O~ZFǹt^> c<"FO5jP-=|~?IO؀@]A;|WdsT*Pv3 𨱏^OW OO;G\xN(Tt=:wO)w.v?⽇m?J y #Oߐ;OPGSvQRx/oW,diO$jw@Zlƹ=Pġ>5;OPT6O߃ײĿSƀk4J"}Kdzjq]p=n"_{~OrXw*o|0r*)KdzիCAxe9uIl만]Gpr!\)=\ա[KCo_\|i=u==ڟ!}=\teT s ]duNq]N+jOR9'>^4?=ܒؽ{=JSw0P);lA(߫Wa1ZI編u?sՅw)E1 >?sZ琯IЮacPZ'>K۞|Oݷ՝Dv?sέSJNԯjVq~8}<`,J{~ruEd,p o[R-ܝG! =PǍ񢈸rw?!XBakM.; ?do]*[dkausޥacbFiO\qy_~oՙ-5R7FǍoO AQ+Vv?>{oq?Zt9E~W + "}Gq[ƒ4sw.PV+jTጏ^m:|k #dhMn%|y+]r׍ob{>]Tiy|{;ȸRVJZp(*1]`~CNQMnPǐwR V?#իCAJuP">_\xN䖴a=sy2v8}B7/zW6+yWځ=N=KĪZ_;x}B7<]P?+Ry?W t\^2~\2B#ʏ~oO#xH|TZt|3ȸMlso>dzN<իWKN/zǃW8 'W緧c áիCA}sP¨! 1R㰱x/oWRVO(^w3d /TcxqaԤ7u)N<ի,1ĬW @>CՅWY{_Pm~+uaU'BXbG6Cⳡo!<)|q]$W!O9uɃW&IL HцP Dr\iM=#Eqho@_0B/aKb({C= ሠe0h iYiHw000iL o`M o0A Dqi4W89q] P Dࡍ(R(!z j<0Zq0HK7sF 8Q0t,9 G5$Rhlj(‹!4೚h o8,0iƊEiƥPYa0$4;x,jIqh#"ӄ1b F="oD_1"hxCLsCᆢ-BdVFWTzv;l>4Cj9^#!m^B)( >@@Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS\#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_04_sx딞1uZXt(;7qGRXt+zO/őU'sV'R )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍHQ0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(bE\$4FŠ0$i`Qt4apӚYCц?0KN@%ډZ_jA Dq_18𢅢Y}Ġyiѝ -Dނ= D0xLqIsoImb&3333333333333333r`Cz@}=LB  ^}fffffffffffffffgt\mOsB?x%!\mO(N0NAmd 8DL_-@rF,{;xٍ|WWI:8}\^8ioYNv*ovCJS߫WW_ [t^>=ЮF(ѥ.; >?`tJYVjWdNǯqߊ^>=SW+y5djz4ac{O#ȳ!2}Z}x8Y6Ӣqwԥ9+վ]Kdz(ϫժVA'z`W{~+bW=Gq>>1>秩|bG6ObWT,>Z'B+ձbm>/ W{@7 t |QMr]$qK"(F!ݣ P Dࡍ(R+@pHkPE. b\䁹]J8,0iƊEiƤ_8#CExQ|$5ƜsMځ}  8\qa8ԺYa0$4;xI.-y0ZpѦ#Q A#yh~q9OoHaF7@0978Q"Pj'R&4-yqG"hdVM42s<>AaR4Cj9^"QA7?z O}XU|WB'بGV[;x?Z'Btc۶bl+kxV + :t\Ε ǗʖV vcE0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaQIbIЯqV>Sx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5"DHi' 9g4RKAg 1$4iCHa=j?ac܄Kn  SVIЮ>7x~.',{;x.R|Lzj2=nOzxgoָ@~5_V ?q܁2]׮n ̏O@50(P&QMZJCi]0~r ~qt^Jbl)H((ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZKNJrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*RܺǑq>C "V_jc?B~҅aU^΁ /w]\]|%o Rx/o wdNծ=oߛi׊]~>*Rܺ@B>5B+@G4KAM EAZr=\f4_1 Qu.; ?=JVJqT><1 pծ=LM4(mO@g.#Nի[~}C=?oI3d,ԧLV0NAmI;}ǐV6ӧƁ+D5zLg.#NիWܞz~ޓzˮWC?Vv \WOץ8et+*<"GW?aW}YzL}Z GV)[}+Osv0@“ߐ.:nf5j+RICsB,2%Vqxߐ+ZJE]}B+[ںOPN `r_Q_3=Ky !vn_'"_S[9E7d80v3`?]~Fzj2C_&W@]A;bFǐO6ӧƁ+Kt Y˯ӟjBBrv)jnIJzk)@EC #k9+9W Ex>+o^3뫐"_*[q_zF<"ůJ|R{(BPvҝLM4v<=N<>|ժ)nM9Eòo9VK s:B+[KVP3 R{/r]׮Ԩ}ZN/>ޥ8}dNoMvT=;\ԧrYY_ ׸!)Vc S԰/aU v}q\AVr4<%-ZCX=+W D;}ǏtiOlRaVDjrKZk}ZK܅ >%=ĿK~Ax5j#Z+1 ?Kw$/E?,Y_{ղZV0c#Q+~qm:|h*a; ]~oMvTK ՝E]XaCR_d8zy>?{~ruWW=N*a; ժW 'Vr4<%W[!5R@V/~\v@;O-[Mxr^>%Vv_qU v}q\~PT;}r+#)8NW!oV; Zx8Y' y>zj2C_'έRsőo~?+ի[~}@}Z GV)[}dyݥӟWiܹ!Bi<"Enst>C˜Fʖ{;ߛײ7+OezOaZ{Ŀf O?aW1fɂ\v@_Εo!$Y}՝ŋMf+]])5j+QvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ+W⼒G,{;x?“8|mOCő?W';iNJkի+ PsN0NAmm:|h*߹jP#ǩ{xTV>4_&Xw!֨P|wbk.\Y%jQ}-5ٍ})0r*P~&_x8Yi_s˜(t_bá\UBݶ\v@W#״'ԸdzrKdz>4_s\v=Q_/xUBݶ\v@oc0NC< "Q_Ps1O6ӧƁL=V1zjW>*>\v@Y_%ku:|kǮO}[#]m?zkǯi_~,Xw!got+еz8V_~dzDܾ>C'#Wpq < 9_+վ\v@9%5YMn'N#(Wc%;]m?zAx{O[]-;ӆF2?!_uE?r y;~\v@Wq ?1vҜWvԸRzW=;iBSO^ӧƢWB~ҟsc=PǍC; Y˯FGVYMnv?z(Q_ѥ.; <c AEgv3ȳ,>OP틧~+j+U v}q\{x?Zt=B;YkRպSk~MЁ>0Dy;xv3Y!J}ZDEd;YV_ZX@{OX{Wc=Kdz_rp i}m?K)D]Y}Pݻ ?6Өa~],f W GV; , MvTFm:՝LT5}C~*WqU v}q\@WPWd~ޚQǠӄ á+.; 8V*a; ~zIj;iBtyR'o!jm:|hgq>>O' 불pf)jnǹq>0>Ԯ{B{NP#ǩ{xƋ!2<\v=xv3Gm7m_y?S[X{Il^CJSc0Ƌ+1 Q=NacWd5j+t GXV=K]Zt9E7?N?aczxv3 a{Nr~:@Ƌ+s8goOǹu<ҝ\1Z,y>ϫWiY˯eT>_jc:x/o6ӧƋVwR_@~CR+?4=KyWpVT*ⳗ_Ŗ*+9R&WWځWiA]{N! 4E@]&҅Vm:|rARCŔq > ?ltqZtS*=Tcxٍ}ZQ_F_9J"_@>ӮEĿCe=q~\mO@Ӧ7>YR\:8^Mt c^Ԩ o!j+Y ~\v@<)bo!jsiMQ_Wu|Wt 0~1”0]wRs(^t;Rjs+Xw!؆ڕ{'c$ LH+sF 8Q0j]xsN@pqzC*1"JʖWc;ײ7Ǘ|?nC”,{;o!jFL\{Nݴ%za 'q*n1|{/Rki@ ?do]nkޓ?=v^C:AZ+$jo*[w=:5j+Wר€k7 S' nuKkwGK! W&W r{?wRs(^ⳗ_~dz>׷^zDoMvTy>“K'Iۗ,ޝO._t?mE*?y>΃ڇt.6+EV>5ߊZ1IkW; kzk):"Cy ZWK axEvu+9./Oo_w+jdcc{e5"r0?14鍷9O9){x/ۇz.; d!T,=adqBRv3ȸMl:k:+Uܚtƹ|Ya:s~ޥ}25j^>׽'zAx=@[cVįmOJrio!k|v>%gq>&W>K9u{f8xTX>r'Vq8gr=O\xv3B_sԢ/IW+OPq :΁1;Onkޓ+!Jq1jJwu:_)=q)Ǖ⼞3Ӧ6CYMnIЃCE/o0rxQ Kx%Ӑ="YFW+: @ @ @ @i"* @ @ @  @ @ @i] @ @ @ AGezS;zK\9Qx=N뻯i][^(mOx{xq 4\rҝ #2D(<+ewB] q@']В5D ILOs20vjoiE'' 2`~ pYLew@ >@ETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIs) -Dr-t7]НGafffffffffffffff(<+  m:|hKn$Ht OD i@,mD0N:|h'' P`,x$dtEn:;qJ 9{N`$H>1O3 @!{NA^ӧƁYfffffffffffffff5w<++h NϊڕT%Cm˔ի6ӧƸ,(N0NAmd Oܸ; Eָ:xDJ(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.5g4dL \i=k9A(ʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]GS AMZ}tp o~m]S@7ʹg.^ޚJ{r#~ۗd6ի'BhzH h7 EQK1|qkxD<;_4"jIt 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B=sAFސo05E.5g4QBqp o&@՜[P?({(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b ]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 5g4dL \i=k9A+P#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sV?t]$P9\71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -DrIc0N@@F1O3 @!{N@Y+4 SVsxN`+'' 2`~ d޶.B W(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S A\]>x8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(SF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 5յ迫c$ky/jYvx}Rr@4 c!i5jg7 9rdL xq(<eXBfGBRp9A7?z O}XU|WB'بG~o! WWI:;NݴSd?]ի%'BΥ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{x5j -w=O\{7?6ӯ}{zk)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_0):ㅕGTϫWW_ [t^> A\]>x8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(SF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9g4RHh#"ӄ1b 8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)B~҅aU^΁ /wbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_04P`,Ɂ$pt{]<\#CȦ ]k@$ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZKNJrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*Rܺ5fffffffffyNyWt$n_88joiE - A8 H  z`m<+TA ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sVx8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@4a$qK"(F Ĺ1";/xwg(h DԒ# q$hh !4೚h;FPDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hHP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFW18-/8%4KN@8oImb&o Hނ=5(xR\F@[GyzV3@^<qTcxNVrU5RQG\/m_WKNц"o9.+$ h[&ax4"jIt 8E44QDžpopY4Wj EiƥPYa0$48,jIqh#"ӄ1b ]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr333333333Sڜ< ?i^fffffffffffd333333333Zo8.<<Atי(.<<AP`,Ɂ$,A88Vas/Zz`NWxSXw!m:|iNԨ}Z95*H8#jm:|hrx"}ծ=[^i<"\V6ӧƁ"<`~\mOwiE[u "@aɭ@ tB$6A ^ )NP/NԸ,{;Jv^Ct׸.; ҟ b\䁸Ieq4bEiƥG@G4K/xwg(WT=lBE+Ujm:|kxIڶ] ˈW!v*n1|{]{#z|{/Rjm:|h\7ffffffffffffffffffd88YH Ypp |_>U /v289OB%tҝPsrkWiEUB7pGjt0E{1\zzӦ7xEN+վ\mOñE[x?ZNҊ@@A"DÓZ 8IlA^F>YRy>^p_!BJ}o{o _+ +qXvJիq\v=>?Ĺp9"h[&ӍKi@_0ACTcx=BFx^Ct9EÓZN(UB7pA|]|[u "@aɭ@ tB9M5P9o9V0NAmI'έRy?WO' $՝AyWi@ _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`Vר *n@]~FTY_m:<&is@!|Wv?,f W DoMvT޽>OkҟTJ/Sd?]/t>?sPiKwlTAxirY_{ղZ/Zj'_!R{/r]׮Ԩ}ZN/>ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prT,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժ 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr *~W -mOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=*~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@rP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@pp ,y T<);bZ/8l>.=<`~qm:|h@p ,znf5|)j)յ?s@bFONy;xv3Y!J}ZD@Ekի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@1Z/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁEc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծ'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0r4_T#x p6\mOk^a{sӮJoWi@ñE[x?ZNҊ۬sMj^ӧƢ4& W5c@5)Ǔa7^%!TJIТ\v=;/Rjm:|kzgiO1.r@$ĎHh[&ӍKi@_0CP#q do]eT>\mOSV`aFtS3333333333333333332WP`,Ɂ$,A88Vas/Zz`NWxSXw!m:|iNԨ}Z95*H8#jm:|hrx"}ծ=[^i<"\V6ӧƁ"<`~\mOwiE[u "@aɭ@ tB$6A ^ )NP/NԸ,{;Jv^Ct׸.; ҟ b\䁸Ieq4bEiƥG@G4K/xwg(WT=lBE+Ujm:|kxIڶ] ˈW!v*n1|{]{#z|{/Rjm:|haɭ\mOP*H8 n{.> QE-H w0֠|:|j!Z\q((朁qh#R4(4KN@IӐ<m9@m:|hg.#Nի@{OvcESOo_s\v=tz=|xhc$ _\z$iP0N7]~FWO' $z~ޓgVXN<ի[~}Cq իr/~ޓY˯ӟjw'rժQbBx.)Ǔ/;]P8?aW}YzL}Z GV)[}7#N|xVԸR{ޥ“Mƾ]K'Eq #Oߊޟ䖭ZǓO~CP%qC >m]'ب'OP@0?r9 ի;sԷYШ w`~>Jv}B+[e5?oI p6Cc0ia._8 ~wy@7!?iN<ծ+o^3뫐"_*[q~o^ҟsXOOzxSSFǗ:xoVr46* Vr4Z,/l-ZCX=ȹJueT>\mOoRvҜy>0NAmʹqeJSCuɭJ}ϫW%3 qqCJS\`_K 89@ªxiy>K /Zj'_!R{/qS!ԨX})ՆZ/ur֚VJ^-P}/v>%]ĿT9Rմݷ1 ?Kw$/E?,Y_{ղZV0c#QծWd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃ '@g.#Niz'X}˗69~kW⼒G,{;x?“8|mOCx>4Y<m)^oqX9@~?~+d6ӧƁL=V1zh Mvca_~Jk:( & z -{N1FS T#״'ԸdzrKdz>4_s\v=W=OS[X{,f tTrA@~?~+m:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A\ @ZtG]ZIm?z>59辳r_f4_U}]riuE>jW>*>\v@_$BYMnOw0QϫdkMwY:|\=zN?ac܇՝ЮNB'BZN?acǁ__!Ǔm+jq8go[dsZ[Ŕq < ?$<Ҁxv3v~lo<>*[wtᑌtA5d}QfܺBC߫WwXvޞAVZ/޳“ߐ=;iBSO^ӧƣASpg*V>5}Yd~+9uݵZe5Axq9@(J\v=x?y!2w=NacQիCX{jb|)l/[9+ձqKVv>%=Ooc0NC< "_bjRVvg߫WW_ [t^> A@88ycsժt~\v@UBݶ\v@0OV>4PH8yc73y>Gnt O #o~mQm՝;琥>][^P"wµ`ur~+|UBݶ\v@;xv3Ը,{;E.O' vrE;acu0ի:Wde]->NgoS;{ uw.  @~\v@ʕ z 8Ih ޭ]:_{acǗjsU v}q\~R㰱r,}5R)8z Wݻ ?6Ө})^oe54&mz/o!lwu;zߛبksWT,=adq/N}|WVܝDVsiM@^mz\v=;t7V*a; W[],f W G:$iy~CJS|yJoWPm@JkwR'SS'j^-P)kám:~@\s SڵtOWA 7kt+r]r`FzLqKTի~.'ܢ;O݅goߛiy+խUBݶ\v@;xv3Ը,{;E/!RC=QJzVz 8Ih ެ0իCJSS[E/oacu>x;▩;yWi@ESc0I<`,#O߹ñr8ioȸbjWr^=RVO޽O}sԽ|zh b)acWc0qKVv>%W!~,PmǺ=ܒؽ؆ڔaٍLCe=y}SqXvq_ZJ]<"QVt^>>:=6ӧƁ@ dyo^'^F<;z?vZJE<Xvߴ{\#){zkի|;V6ӧ!ⳗ_Ԩ}Zǹt^>?Ǎ+ձy>{P#Խ|AV[}Z}ߚZV,P)_!▩?WځWiA]{N! 4E@]&ҜmOCˆ: [xN?acQ@~ծ 1.r@$ĎH8@5qa8Ժ((朁t,j-TcȰ҅zk|<$AۨO^Ӛ4'- 4,_ 5# =4Y<ԒG E b<054c=Я^'QcurJځ}ի!Bݴ~+ٍxRgm>\v@;Hs\Aqq;vҜ;.ƾ+بJծ׽&~zsJ~u胗d -ZC7ʖA{!ON'ZJE^F>YRy>^p\ S[=J^9db> r{?wRs(^ⳗ_~dz>W!qʖ'ԸRz_p);rzv?\!ƀk4/qWk:OjиwG¢_\xN~]{{f5j*[q~o^ҟs.!Q:WP|@!E C]Wr.]V^ܺ5jO'n_.!QF59~e5~dz?@)_Wc#kޓ)qӦ6Ct ?(ܿnkޓ㖵”,{;o!jZX|;\Odk|UZ}SB]\}ɧLk|WŖi|?IQޓ/>j}zO샶z ǧi^ki@f~ܚtxd|;\O=aY˫>?c0¢>6>׽&_~oW'Vq8gr=O\xv3B_sԢ/Iԥi:غN?ac܇Y"F=\s{~ޛ0)Ǔ/:kǺ1m)A~,Xw!ǓG^Orio!~,$A!ܢr{p^9F+/B+@G4Hk;bxx tי(pfC(8 m:|k̔QA̓܇PpSVsxN(N0NAmd YLʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.+׸):k?W^ӧƾ?őn1zxgonvi_,{;xYIbZX[WիXw #~ľ9#OQAKycMjz5jP;acuݷԯW^ӧƾǁjӄյ)WE{>5goSq,;lz^V|b:tK䖵ˆo! |~C~+j0֮ e d6<]w;l>Kiܜ21VDZ Vtv@`v> W1&t]$WGmmuVڿVo_W1&q>5=<"öǯ\V4]~ÓG QN<իW,/iޮOiJv^Caɭ\mOU?A^F?5j+z^ӽ\i@~CF[ }\իÓZN3K }uqarvVcMjm:|h F$j 0HxN*fffffffffffffffffffJ[x0?pH ' z`U^Li#`t "Q\mO)zW1&q>4_T#x p6\mOO\O7ǫkנ-:c}X^뒽[t9\;\Ouի(n$H95 @!{N@ӄzF$Q\5c@5)Ǔa7^%!TJIТgiNԨ}ZNacSK7 1#,8@5qa8Ժ((朁t,j-TcȰҀt\mOurV);Vq 0>y@7s+do]eT>\mOQ95T#x -e' @ (X $ OD#Q Kx%Ӑ=.-xjF41i_0\Q5CZrT(mOxi}sԽ|zh b)zKdzRҜy>' d+kSd?AiY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4P0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rnp`f9,>eD5zOPNo!ب )ǓǍr`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&DaX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; ( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(iKdz"~1FSԸ,{;]:c=5իk@;YV_ZX@{OX{gozghd~Rv,{;xNՆt']\Z,@Zkղ5ߛi~g~ob:_WPm@(ի5RA 4{յ=C~+cԸ,{;xOy>*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hPv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1zW'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁yzi6*) @tי(q8.L?mOyR P(ի6ӧƸ,[x0?ppx/8U&P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4k8] 'm:|k̔PffffffffK] 8Nf`8x 8N33333333333%lvcp@8 \,>5g4P`,Ɂ$ %{L88YH  ڵp͎sղ(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[Gyz9(m:|k̔yCx1PxA3333333332QEc T-.p)W 9mOp0Y'' ^ J;t "Pe@7B (_V_s*wtNw=Nm)#OmGjRt@@Υ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(71ypP(\)s _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z jbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_0xrp{w^@2<<"j@MZJCi]0~r ~qt^Jbl)H(@ ֨P| «5_y>B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_0J+Pʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]Gpp'i^fffffffffffdmz>pp!MZYm:|h88YH 5{P`TcxqT(y>B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*Rܺ Q_n$H95 @!{NAEj!isĠxrŠ H&"-9+9&pHkN@U+o|A+i@+9us_jc:x/oC/˜({x:go+o8}*OoZ|W&~ xitp oO|>ulɕ - >gosCt9_0 `+9us]?VCs]rժQbBx.)Ǔ/;]P8 _[O`^Cf dj?ǩJoY_2x. ӟ?ի.ps1Q_ OoFe5?oI-ZC'_jW/8ZV}t`#Z񝎹[xTK?Om;r >ޟnp`f9,>eD5zLwy@7!?iN<ծ4_T#x p6\mOO\O7ǫkנ-:c}X^뒽[t9\;\Ouի(n$H95 @!{N@ӄzF$Q\5c@5)Ǔa7^%!TJIТgiNԨ}ZNacSK7 1#,8@5qa8Ժ((朁t,j-TcȰҀt\mOurV);Vq 0>y@7s+do]eT>\mOQ95T#x -e' @ (X $ OD#Q Kx%Ӑ=.-xjF41i_0\Q5CZrT(mOxi}sԽ|zh b)zKdzRҜy>' d+kSd?AiY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4P0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rnp`f9,>eD5zOPNo!ب )ǓǍr`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&DaX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; ( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(iKdz"~1FSԸ,{;]:c=5իk@;YV_ZX@{OX{gozghd~Rv,{;xNՆt']\Z,@Zkղ5ߛi~g~ob:_WPm@(ի5RA 4{յ=C~+cԸ,{;xOy>*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hPv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1zW'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁yz//pH8mOybFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ ) -Dr\1G 4W1.r@4bEhw@_05fffffffffffJ(33333333?ŠmOy<@9Bqp o&@H ]r۬D!z#!pF `eTcxqT(y>B~҅aU^΁ /wqTcxNVrU5RQG\/m_WKNц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&yzh8 8'333333333332QEQE @ @ @ @ @ @ @ @ @ @*ffffffffffffffffffffffffffffffffffffffffJ(1ɂB#@G&D tH蒀U<p@8Ep0Yl=9E5jg7 9r[x0?p @>Az/(2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ,č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z jS AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9En!\#R P(P9Eo4a^mO)W 9mOp0YP`,Ɂ$ y©5<*n1B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[GPcsF:$m1bS  FG@88Ptaɭ\mO F/[ˠOAR۬sMj^ӧƢQM5PulɕWO' $՝AyWi@ 69~k7]~FWeի=';\ժQbBx.)Ǔ/;]P81~Jo;}?oIyWa1W+oye'b܍9kZJ_RI{z OK73“"縅|YMoOeKVP' VjW/8ZV}t`#Zv:o!ⳡQ/8}>$V>+kz~ޓ(`d;0g.#NsKr!/~ޓ*wy@7!?iN<ծ%oMvT޽>+ `tJ/FǕf }SV3mDRz Y˯ӟ}\ +VGs7.Vϊ.9]xt']\5RCgJ~o^ҟsXOOzxSSFǖSOP>jF}&Dd`+9us\@^ulV 䖭Z,f *ޮ@|Zv^Ct}-7m)Ǔ)<`,ߛi՝ʔvZVK ( E{RW1)XHQ@ªxiy>K /Zj'_!RzR%Y<{J|d: : W=NCZ[U){/Aľ5xw;oCPqKVv>%BFG[B,/lyWa1Zt|UBݶ\v@ޚ\@;|(Ft=zB'׷!իTjT,=adqBPr[x$2QCm:|iNԨ}Z95*H8#jm:|hyƾq No=:Vq>4Pv3ȸwO'_Wi]QKn$H95 @!{N@ӄzF$QA^ )NP/NacS*V6ӧƽǩqXvc$ LH(qkxDqtPACTcx=B7Dz*V6ӧƁ(tE @ R۬sMj^ӧƢi=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O`gf;X}wԥ;ǐVqU v}q\@ Vu.,.|>8V*a; ~z xV),:O6Өu0:WO~\pzwBoW Ex/f dj?>GIZN"})ñ|$XvGZT,=adqc=Kdz_r+;jӄZ,0>ԥ>e5R_v=~mQ맏S<)jq>4(;\OE8v3 -:4;#Zz!w(ܿu-Ujtځ=N=KǫƋ!2<\v=xv3Gm7m_ur'kqU v}q\{-}`}Jpf~1FSǗ:go_Wժ5,/uJoWOSqm:|h&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IiMD-.a⸔sN@(& q 縍t0JeP(P rg7Y/O6ӧƀի6ӧƊ(N0NAma ~ bFP>?s[ZXt+zO£< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}yǔ%4KN@8oImb&o Hނ=5(xR\F@[Gn!\#.>7sDz˜m@UB780Ym:|hQAg7[x0?pnJQA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\FRH h4(& q 縍tN}p1T#x#88$0Ym:|hQEa88Y$  ³/E9@2FZCs/ tQs[;x?k+ zю'nSFmzjt@rRjbIЮJlg|*; Oo_*[rWc;ײ7Z,Pf4_O&_#Zj(#׸_R㰱:|hQ(bV+ /}@b|~$t]$WY+Rsh~,=V.Խ|@1@Wp0NAmʹ}Zبx])Oo]r2x~Cő?m2xWt@b3F@[Gb(h b\䁋h[&ax01RK@(qF8z N 9Caqa8ԺYa0$48,jI3N4x`j!$o0\8hxQf~q9OoHaF7ш"A08(cx5Ii7AaH /0,R#hQN0$488aj%cӐ?/@`ڂ-#hQrFD<+E #< %4KN@8oImb&o Hނ=5(xR\F@[GPcsF t@Dm"˜m@UB78  (0Ym:|hP[xHA8 @VXSXw!r0e@7B (_V_s*wt(jWI:;NݴSd?]ի%'BΥ9o(jt\TvS YR{>]\]|%o!ǩ{xb3V]<`,ߛisDZP#qm:Y˯׷*Rܺd#~ۗd6ի'Bf71ypP(\Ĺш1L=|ø 8E@`b&A1aN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<Ԓ( Ag 1$4iCHaq8B=sAFސo05E.%a("pP j)pxӌ o<ø_`YFGцƜ`INhq|pZ0J?% @_D-/[Gц8/xWe[Gy@Jhq0ޒ8M#0z j):TpGTϫWW_ [t^> AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<Ԓ(Z8a!LGF@DžiC 44ohy)t(JȜ1bE\$4FŠ0$i`Qt4apӚ_0֌5?0KN@%ډZ_jA Dq_18-/8yiѝ -Dނ= Gц`ӏ KhzH h4stE02۬DY CL5;PpOHҊ[x0?p],P#qf4_O&_#ZzacNur&S rW|%z3ZqT(y>B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M(Ra^mOP`,Ɂ$ipwGmOB%AmFJx`, xk]wqxv?t "P';/Rj.OӄzFP'S:^ӧƢIR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|{\hQ@'J\v=|~+:ȳu?만[{m:/zx/oj+y5djz4ac{O#ȳ!2}Z}tp o~mE\zO>]\]|%o!ԸC]LM4v<=@ZȻj؆ڔ%zիqXvyzC5Z^]^2}ZF^0 #ȸ]ҟsFC #]bT,>ZTq]$W%z3,Rv؅9(^?P#q)K1ypP(\$;aJȜ1bE\q(N jK70Exw4"jIt 8\qa8ԋ$hh /xӂiP/a("R f$aa⸳y%Š3N4x`j!$o1JrBFpY悍=! 0%N 1GD֠\$4FPZ_8G"h8t+wF8iN&~oյ< WKNJrV],WI:^GaieKyJlgzFxW[c f4_O&_#Zj(#׸_R㰱:|hQ+t]$Q}Sv*o{9%ի'BǪqZL*8_#O~ի:x/o ]>x8Y6ӮkbFuⳗ_oMvT=u.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsCi椑BG E b<057xzxN<(гOh?8zQ0{F hKBP Dࡍ(R&4-yq#L8,(KA G8ᆴaqZr(LPEz j#HDžqh_@5}y(yZr4ghzH h7hxjF4aF4’0ޒ8M(& q 縍f@UB78g7Y/Otqp o&@H  z``ʁo=j'AP*+Y!ET#?]oدծ>8t+wF8iN&~oյ< WKNJrkի'B+ձ-=y~ޚo!^^޻oj lJ۝}<`|)j/ ^}Kdz_#״FCƗ\ 1uZXt(;7qGt^PU>):< }ZJCR wdNծ=oߛi׊]~>5R3_]G8t+wF8iN&~oյ< Q@,WI: /u)ի'B+ձ-=y~ޚo P%z3{#zի-}<`|)j/ ^ee.; ~,^ӧƋz]~1uZXt( T*rKaWKN{U>):< j+y=K(Pj?만[{m:zV*n1~m^+9u([])Oo]~1ud|ur>?t]$P9@3F@[Gb(h b\䁋h[&axƀMI.<(qF8z N 9Caqa8Ժf$ay%Š3N4x`j!$o0Ec<ŢqF{A悍=! 0`kF ]x8(cx5Ia4-yq#L8,(KA G8ᆴaӐ< %ډZ_jA Dq_18-/8%4KN@03a$qGa5#z0xLqIsoImb&QALq8葷ԧU<p6ӧƀ'' 2`~  @2\(ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZKNJrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*Rܺ⛀)rre~5P BVmub"_pss Q. r8e@@'RJ P`,Ɂ$$A8e~5ڵN{^ӧƔJի6ӧƊ(88YH IpprkĢ*n14(0`,Ɂ$f^=0r1@Nw=Nm)#OmGjbIР`9sN\ ot]$W%z3/]-9+ձm^Am@s//-Re5_aV/qXvdz>4_sx._WKN>bFP>?s[ZXt+JʳV>S A@ ի~O' u>qTcxNVrʔ.@LT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.ulɕWO' $՝AyWi@ 69~k7]~FWeի=';\ժQbBx.)Ǔ/;]P81~Jo;}?oIyWa1W+oye'b܍9kZJ_RI{z OK73“"縅|YMoOeKVP' VjW/8ZV}t`#Zv:o!ⳡQ/8}>$V>+kz~ޓ(`d;0g.#NsKr!/~ޓ*wy@7!?iN<ծ%oMvT޽>+ `tJ/FǕf }SV3mDRz Y˯ӟ}\ +VGs7.Vϊ.9]xt']\5RCgJ~o^ҟsXOOzxSSFǖSOP>jF}&Dd`+9us\@^ulV 䖭Z,f *ޮ@|Zv^Ct}-7m)Ǔ)<`,ߛi՝ʔvZVK ( E{RW1)XHQ@ªxiy>K /Zj'_!RzR%Y<{J|d: : W=NCZ[U){/Aľ5xw;oCPqKVv>%BFG[B,/lyWa1Zt|UBݶ\v@ޚ\@;|(Ft=zB'׷!իTjT,=adqBPr[xHA8&XF K$tҝPsrkWiEUB7pGjt0'.'ߛٍ}Zյ1,/nzu^jm:|hgq?0OV6ӧƻ`$H;rkP>@B>5 4H8 ^F>YRy>^p_!BJ}o{o _+ )KdzeT>\mO{R㰱)%HP1"R#Ġxr<;_ժ!Q{"JWիC'j}w<.!\o!بz/do]eT>\mOQ95T#x -e' @ (X $ OD#Q Kx%Ӑ=.-xjF41i_0\Q5CZrT(mOxi}sԽ|zh b)zKdzRҜy>' d+kSd?AiY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4P0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rnp`f9,>eD5zOPNo!ب )ǓǍr`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&DaX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; ( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(iKdz"~1FSԸ,{;]:c=5իk@;YV_ZX@{OX{gozghd~Rv,{;xNՆt']\Z,@Zkղ5ߛi~g~ob:_WPm@(ի5RA 4{յ=C~+cԸ,{;xOy>*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hPv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1zW'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁QEL @H$oo jODuCxYt42=:S*Vsz>5(0hx۬DYX@[] 8Ih9@x9EJ_g7;1Z>>ÁyKӣJv^Co^ӧƸR۬D!z#!)70^_tv4&P@ %pڵuqu𕼇UOVG^Ն8 v׈Dv+ ^S*Vsz>4_Wan ̏O?ÁxW!n!\#;UB78p@8$g79Eի6ӧƸ,(N0NAmd O7x*P#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sVCs:B Jq]<`,Vv!?m>\mO 69~k7]~FWeի=';_P՝<~/1uN<! JO _[O`^Cf dj?ǩJo_Osv0@“ߐ.:nf5j\)=r.{Q~WŔ&_$jA:~0CW~_랥΅DkVӷ/Z)zL`d;0g.#NsKr!/~ޓv*n1|y9Jqqm:|hd'@\9V)Z)N@W!ȸo!▭|KeKy=SxIЯf O$i3ǫd[^P2OA>+9usO#Qe}4}ϊ.9]xt']\5RCg{zF<"ůJ|R{(BPvҝLM4v<LJ#xϚC-IQ(v@ ⳗ_?dgVEk`Ijժ`|@xIW DEWp{w^/Rjm:|hztp o~m_Vv*RۮMjS}Z,/@[{bjRj0=K_ Pmg.#NsYY|իT=:*ޮ@VvҟBN0d}S䖴zR!n_ƒ7}~k/v>%Z▭||)Ti_t{%z/!d-_+έ?v~qm:|h*a; ]~oMvTK ՝Eap "_r5 \^ loS'4VoڂNR\v@8l>.?VV*P0~dzY˯ӟ|@^ulV eKyWY {?V; z'▭|~CE/ogoPm K}ix.?GSq>9C]?\v@Ǔtp oO|OޥڌhoI3d,ԧdyߏg.~]<`,^Cf dj?ǩJo_#( ӟWiܹ!Bi<"En}ZN{Sa5RCg{zF<"En=>]ku;q']Cde-5RCHMx;}ǧ8W'ȺS>jWTlݴPZx8Y';q <a8gr+9usNsy?oRF\qA_?=N?ac>X})Ǔm:|rSő?W';iNJkի9^'' >4dxI}sԽ|~+kiErkq8grj'Av* V JԢ@ZkSY!Ea7/XUM׮0NAmt!2؅0WPm>ŅL#״'ب+"_#״R㰱}Z/xUBݶ\v@oc0NC< "P9^i@>ϫWځ=N=KV>4_&Xw!֨P|wbk.\K J/41/%5_rNUQ~ =zjӦ7>:=Oo;i״ȸE\1*CxK_,d4V9Vj%ku:|kǮO}[#]m?zkǯiOŔq >wu?oVOpq < ?r5B~ҟsc=PǍC; Y˯FWv׋)׽Vץ@R㰱v3ȸ1 Qu.; O~\v@UBݶ\v@T+iKd|!^#Z/{KuU'\RcOP틧~+jtǍzA0v3ȳ鹘s8tVרΛ}a}?{m:m>Mg<)jz 8ycV3뫐#^Yñac/ux8Yö.,ݻ ?6Өa~],f W GV; /o!lwu;zߛبksWT,=adq~P +joMvTpciM@^mzaߊ.; . W[q>BPvҜy?WPmĿj=NIj>v,{;xN^oYñac/|yڕrSdsiM@^a~\v@_bjRVv){x/ݻ ?6Ө`)GI}ZN.'ܢ;Odv~Ñ-[Mx=NERR_: ~:|k@{OvcESOo_u.; ?;#Z/:e5l>.=0>ԥ8v3h b)zKdzիjW%zիRm)V>4P~#cx8go~1Ϡ-;붾jW/~dzܺYFiNC]?\v@Ǔq>9}v^CF=SRծ Rqm:|kB~*n1ƾ_`+j%..%:]\K1FSWt Lot|(p: tqw=N1"ƽQN>CB_W=O b)}Zx~\pz0~*5΄&^F>YRy>^p_!BJ}o{o _iCJիSӓ[,{;CJXvs1s&$rE4bEiƥG@G4K/xwg(WT=lBE/]- Vwdo]/'B~G:x/oѦ@8hxQfYa0$48i椗<b-8Hhၨ ;x? 뫐V>]1 bc^m>C”,{;o!jFO tc۶V=u5^@7eT>qm:|hFx0~s}?{eT;Dի LIjժ! oMvT zt/9=/>jW/1”0]whR>C#?{؁C*B@'=q׷^zDoMvTy>“K'Iۗ/ӵ)>4Y~G'Yr{PC=WߊZt|g~+jƾC>׽';1W55RCg{zFGq W!⼆buq /XgjWZ¾Crs=NT:xDA;rGq u1O)=u>iOZ^|YMnD&1s?I1E/op^?^acyWPm K"}5#_s z5ժ M:c\,CK9LoR!Vu{dsxY=<|n;OJo\xN0 Ӧ6CŔ={ |K"}ǮOv3]^;/^12~?y?C,{;/|zñޥ}L+OPq :΁1;Onkޓل)N<!]F=эCiNKe5~dz<:8x;Nye5'B~{ۇ4]}0\J9 zEn!\#k7 @op@8oi@r(N0NAmd=+#8ʐD88YBYԅG 1]k@'oR<"(N0NAm@ H Nի+8e;o!m0 qx>@@ҟ^B)( _O' H   .DI".PM42s<>AaѦ2P R! n2*O!@TA$(2FZCs/ tQs}wO'_\|q]$Wsq;vҝLM4vqTcxNVrU5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax4"jIt 8E44QDžpopY4Wj EiƤRYa0$48,jIqh#"ӄ1b =SVKk(ѥ.; >>}\E1 Q?만[J6Ӣqw?I5f8~dzPe@7}<`|)j/d:gkWI:wB~҅aU^΁ /w:~CoZXt( PhzH h7 EQK1|qkxD<;_4"jIt(4E4eT>\%R״~WpOHߐ X1|q'@ tBR "Ws17! @ @ @ @ @ @ @ @ @x`, xk]wqxv?t "P';/Rj.OӄzFP'S:^ӧƢI ( @ @ @ @ @ @ @ @ AE'' H ^]^2z<~dz m:|iNԨ}ZK+i@*4&  nc0N*@DcEnB (@ @ @ @ @ @ @ @ @Q@' -~wGmOB%nxNS*V}) t?J8Ionz۬>8|:|j!) +@ @ @ @ @ @ @ @ @ @P@ gp* ͽJ~K@LP%nx`, p5e;o:xgr(ptҝPs HW^ӧƁU\iM=#~@(p`)`/iQ HT$]ƊP @ @ @ @ @ @ @ @ dL8dq]r d.[cQҀ>4eT>\t|P$ڵpa>4 ~O\O7+VmzLo ۞rW}ZN"<`~E n$H95 @!{N@ӄzF$E @ @ @ @ @ @ @ @ @ ( # - p] £PNS*VcMjm:|h F( #UƜ$4@WbR{ᙽ\Omu:|kv<jX @ @ @ @ @ @ @ @ @x/iEpdAz=0~blFJI\~q`tJC8}g6c׮O}Ys+2=Ɯ$7kvXew@!{N+ @ @ @ @ @ @ @ @ @P`,x$/I5[u/Vdx:xD 5)^S*Vsz>4QB @ @ @ @ @ @ @ @ @\,:|h ^t@k/o4 |D z< 4P @ @ @ @ @ @ @ @ O[x0?p&]CA';/Rjg7iEpP @ @ @ @ @ @ @ @ /p/Meຆb @@A ՙMeຆFFJի޽Ob @@A ՙMeຆPÞ z< 4P @ @ @ @ @ @ @ @ d xIPґѥ;/Rjg7iE @ @ @ @ @ @ @ @ @(88YH R  _I5QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4 @ @ @ @ @ @ @ @ @'' 2`~ YL*n18t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Dr @ @ @ @ @ @ @ @ @P`,Ɂ$p/MeຆPe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_0B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G @ @ @ @ @ @ @ @ @(88YH R /^?u (ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’SF@[G @ @ @ @ @ @ @ @ @(\>4QBqp o&@%]@*n1ƋqKT}P#!Ը,{;_VIЮCa1JoVwU=j'AP0>ԥ>w)<`,ߛisDZP#qm:at=uxA) -Dr\1G 4W1.r@v7ш#0h8Q0jE9:&;FImb&44QDžs 8\qa8Ժ 5# =4sŜI ~q9OoHaF7ш#MN0$iZa D`4KK(M( 4`(K0(H jH 5iDžqhƠ]|5#Kixb( 9 5 G0Ӑ?/@`4(iF$ނ=5iӐ4QBqp o&@x.QA7?vcEe8L\v=\|q]$WW!e0%zrWc;ժB (_bjRVvZ}0NAmʹ}Zبw0:ܺ}(QHҗgo;1o`w=N>ľJoVt8io_t+P#{bjRVvZJCRr5AE)qXv3맊W"wµWp0NAmʹ迫\J{WRzV.\S]FQ@'J\v=|}<1 b)ի~O' tY_~+ǩ{x=OWW_ [u.)#PWSd?]+=@ZȻj؆ڔ%zիqXvyzC5Z^]^2}ZF^0 ,{;"|}vcJ}OS!0mv!2ǩPS #k_NrWc;'j}^C7<0H h7 EQCFĠC 4Q4Q@o $E@@A"DÓZri?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9Ec +9usX}˗69~k.CP#qAS'ki@ 3#ⳗ_?؅+P)99Rմݷ~ޚo!dz{#{J}WI::_Sd?]`:xl0v?kA(U'\9'𨲾uayMg>r`\mC{X@~ޚo!dz{#{J}Ξbץ>=_!O;iN&~o_s|~ZҖبP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=azP0l>. +9usO䖭Z,f tTrKxFu*Jua@V; z\$իҗ rq|K{]~p/>jGm7mLBO-} !or@^ulVի~+kiEU v}q\|VrzkrY\~.]XaCR_d8zy>?{~rujT,=adqBPrXv+9usO+έ~ޚo!j !or>Wd}SRմݷw(>ZXVv?o'7J}6ӧ!{zkիV0NAmI?԰Q/mr>ul,#{},ի[~}@}Z GV)[}dyݥs}\^c2}@{/9(^?HMx~ϫWi{ b~l>_*[q~o^ҟsHMx'|{yb_3맊WOIhKzk.CĜvW"縅)Ǔ/>?/t:Wa1.)w=OdX}Z,=*[t_iogobg@J|ZJ]J{Jy?WO' $tx1N?acǃP0~dzo9mOCw>9 f d%zd` PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DAߊm?xN2< }Zǹt^>?Ǎ95~dzB ~{+YrY%jQ}-5ٍ})0r*P~&P1m)V{x?aO޽O}E/\ٍUjsƗ\]rc!=O@ƾϊW-PS[i]0~=rs;i]F={N^~,Xw!got+еz8VXvhqxD}xZN?acǁVq_䖴e5~dzD:>,#{?9^|vö{ q['zOʖ8dc)#%=Ooc0NC< "_bjRVvg߫WW_ [t^> AEc<1Bj Nغ~V; *a; wO'_\xN~QA"wc]'▭ҝ[^:n !mʹ>:c=5իk@Pv3ȳuot']\<Pm.; }˯ -/te=NXvG #jc0N?qY~eKydk6ӨYC]o't7V*a; =B9_WzkGNh7kt{WǩqXvZ|UBݶ\v@;xv3Ը,{;\1oMvT rtwndzʹ=<~JrW[YMnz 8I[^*[}[#]Gަw*y>áqU v}q\Kӣ_uqu𕼇aw'Q9+խp~[^giN իX{WKu&~o_{R_C[T,=adq/ZԸZl>.%WrKT(>k}Zरi>Nߐ"']<~?siM =\mܿa1zS;yR'jm:|hc<(aacuJkPm.; }FԯsR$~իNo #jRŔQKǹ~XvG7>;iN8NCt?yQN'p oh?~a▭|{"}`}]){x/KUZ?z>5F=SR;1)b/:go^Ñ-[Mx\sUBݶ\v@rKb_bjR;f4_1 Q=NacWd5j+t G[ǩ{x붔\xN(2<7Xv^^ӽ\kP%qO,{;xo~=ˮOőov=5ٍd|y>ϫWiY˯eT>_jc:x/oZt| WG\->]>ZCP]XFqKTի@~+~4àOwQ~x"}gנ.giNJn6ӧ!D-9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@0~*5΄&^F>YRy>^p_!BJ}o{o _iCJիSӓ[,{;CJXvs1s&$rE4bEiƥG@G4K/xwg(WT=lBE/]- Vwdo]/'B~G:x/oѦ@8hxQfYa0$48i椗<b-8Hhၨ ;x? 뫐V>]1 bc^m>C”,{;o!jFO tc۶V=u5^@7eT>qm:|hm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"r`~bio!:ssR_IZJ\v=q_qU v}q\~PT.'[25>*@Y!]Z@Ӧ5N+ d4IЃ(I5j^>׽'zAx=@[cVǍ~3 P}@oM:cm}(iJv^Caɭ\mOU?A Wi@pE{1kVׯ@ZtO%zի~.'~ WPN޶@@A"DÓZ 8IlAhÒPo9.+0LK &$rE4bEiƥG@G4K/xq@,9 G5$hlj(¸1r 8E1L=A%Ӑ=.Ӛ4y%Š3N4x`j!$i|Q0`HӚGq8B=RU_VcMj઄o 6ӧƺ);Vq 0>y@7Nz{#z|{/Rjm:|h @ @ @ @ @ @ @ @ @իp7N{ҟޞAȻjO0ի =^㴧K.P<]zOl>'Ni>'`8? w{~_!d-_[!_W)\ᎆqJZB[ܿO' u>]{N/*֚ܠNW|):SŔZ t4Q}ЯޮCV|$e5>59Oʹ=Ю0>ԥ:oW Ex/f dj?0~i#^ӧƣjZ(1|N)_s{/RjP#Z95AmObpS:O+iJq] +PsrkWiEUB7pGjt0ACTcx=NRFx^Ct9S3333333333333333333332SV) '1S333333333333333333333%333333333'Ni>'`8? w{~_!d-_[!_Wj8cRV/ -w=OW^ӧƋJ$ w“@&S[iQzG؆ڔW!o G&8dq]/7kCI״ZV) '98t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR9MZ}tp o~m]S@7ʹg.^ޚJ{r#~ۗd6ի'BhzH h7 EQK1|qkxD<;_4"jIt 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B=sAFސo05E.ȻoU<  rg79E5jg7[x0?pDA8p 4H?[u ! =B>4QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4 @ @ @ @ @ @ @ @ (1ɂB#@G<+ 8U<  ~P,>4(ptE - A8"A Va$ew@!{N(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 5R3_]G5ݽmD&/iQpOH (@ @ @ @ @ @ @ @ @QA$O:|k p9\2`~ pp |b @@CA{ m:|hg4B  $ @ @ @ @ @ @ @ @ @@I\ ^ӧƊ' -+0z`=@>+ ᱯZ:<JqlI]{NW=\e{ի8IoV׮n ! =B>4W!QEP @ @ @ @ @ @ @ @ O:|hx`,³/\]~[cѨ@r +ծ>8)^`}AO,t״;znEp^ZӄzFmz޶ /iEpQB @ @ @ @ @ @ @ @ @<c2pɁ$$ ³/E?[uyWt '#Ҹ (  @ @ @ @ @ @ @ @ @Q95T#x -e' @ (X $ OD#Q Kx%Ӑ=.-xjF41i_0\Q5CZrT(mOxi}sԽ|zh b)zKdzRҜy>' d+kSd?AiY˯ӟjd߄PO} 5)Ǔtp oO}Y<q>4P0 `+9us]?VCs]C?Vv \WOץ8et+*<"G1~Jo;}?oIyWa1W+oy|<~iϏXU O~CԸRz_鹘իp!ȹ!Di_S[|իT8}<~|ժ4_p5'"^ G!_|gcz+:C[NܿOEkc,0rnp`f9,>eD5zOPNo!ب )ǓǍr`ur|Vr4Zj:=\"]#Z/]-8w7doiO'Bq']@EC #k9>*o`wm+`urKeKy=St)xIO }AJu16HxOP>jF}&DaX7]~FW%W[!%V{KuU'\)]=zJիZnS' -}Y>ޚJ{wn5Ojsn"=`}J{ի, |$(UBݶ\v@o9'deKVP3:Oz%Y<{J|d: : W=NCZ[K܅ >%=ĿK~Ax5j#Z!Q}~K s:B+[^Cf dj?Ǎl>.>+9u}5R,.?VvQ[iA׮0!)r}{x/}N<{}Zj :Kq_sZX9@q <g.#NsY_{ղZ/]->_!d-_#xZ/w<#Z|~՝v@UBݶ\v@T+/qܺYFiOt:oMvcxoq_O - >y>zj2C_'έRsőo~?tp oOyWa1W+oy|,#{7#N|{O#_K{ }_r% ݧ_ioO߹jm:|r!cLBOmKeKy=St_ioOuo!׸K`tJ8}Sb}xY \8eWZNW!j325^6cyyWdzeKy"7m>,Zl1\"OT \kQvҞBC'jd߄P?7,{;xpb=xim:|rSKr!/~ޓ>rW[q8gotxRuaOw=OGƀk4\c 9+խV; ( x`,t?IU'sF=SRծMg@ܾaT_B7^x8Yi_s˜(t_bá\UBݶ\v@dzq2 ^\b@~,^ӧƋzKdzjkqU v}q\}:*ޮ@9@ xcmOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p끨 N붔\|i=x^ӧƾ"]p}r.RƋK_.~ȱZJ_`Zի䖨W)״^??lv#O\y?S[,{;IbZX[Ry?UÉ,{;x4@8}<">~W'W}Z/rKZkxN?acǁGP};zaO޽v?'eKy21u2&uJ,ށ^[}Yjq ?1vҜWvԸR{<~dz}m?}X[Q~jsty9J}^C6ӧƺ;x/g.ځ{_WQ^,^;o=[^(iKdz"~1FSԸ,{;]:c=5իk@;YV_ZX@{OX{gozghd~Rv,{;xNՆt']\Z,@Zkղ5ߛi~g~ob:_WPm@(ի5RA 4{յ=C~+cԸ,{;xOy>*a; ՝;\v=E﷦*Ww9G^x?Zacu?]o9+խ,=$ޭE]->NgoS;{ uw.%vߏZJCz 8Ih ޭ]Kdzt{WT,=adq~Jkի:Sd?]/ڽ`}Jw/!^j?^o\X] }AJq\UBݶ\v@9%Pe5pRXt4~mQratV?iZ4&mzurޮ@_~=r}S)jq>4ñESc0I۰m:%zX{gozgh#jWwG)OQ?sA 7{ՆqY}`}J}Ykw(ܿv,{;xNsߛO4tyR'o!jm:|hPv3ȸrpf ?[|uDi8v3Gm7m9CJQKǹZ)״1zW'T \hq ?rdyݥ:oMvcxoq_Oc?st4_%z3'ܢrjc+:s? zP fJqa{M׮|qU)=|mOC *?V; g=ONMn'C *>=PǍrm+ۇAzPνrV2%V{܆55RC/d)?`T \hר€k7 S' nuKkwGK! W'DObS{% yVr<Xw!^=z;:"5RC OK.'n\oNԧ/:x f"+jdcc{e5"rtq΄'{m{`rֽxRgm>\v@UBݶ\v@T+/c<̍}ϊP/ttWwV/4sӯ /t 2J"eZ׷Iv>=P#!d?y+վqm:|hTP/NyS[샶/c<'?>K9u{f8xTX>rWj'@{B{zE2=B[Sӓ[,{;:Wǫy>}zOf8eMwYF5 ;:/Ŕq 8~+0M:cm;OŔ9O;R_nkޓ(tZ\q((朁 @ @ @ @ @ @ @ @ @ @ AALq89]O!Ex0Ym:|hQE5jg7[x0?pDA8p 4H?[u ! =B>4QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4 @ @ @ @ @ @ @ @ AALq89]W F%x0Ym:|hQE5jg7[x0?pDA8p 4H?[u ! =B>4QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4 @ @ @ @ @ @ @ @ @ @ (1ɂB#@G<+ nP*ǁA 86ӧƀSVsxN(88YH H$7 qDX /iEP#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5RS AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.(2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9B @ @ @ @ @ @ @ @ @ @n!\#Sss⻶bW)P(P oi@r(88YH 'A{GETcxqT(y>B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*RܺS AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.4(\,>5g4QBqp o&@N%gCA8gr(ʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]G\,:|h 1|q'@ tBh joi\ s@'' 2`~ Vt4 Xw! ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzPXIEP#qǭP9JՅWzk:(}q<`~qt]S1Ju16HxQmZ2Xt(_SWKNrWc;QZ{x5RC[޽v?dh0LGIQ}GqXac/őt}P#!K._WKN>bFP>?s[ZXt+zO/őU'sVB(2FZCs/ tQs[;x2_\|q]$Wsq;vҝLM4v?kxV + :ʷZXt+[ ǗʖV ĭh0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaWKN{JV>S AE5j -w=O\{7?6ӯ}{zk)9ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*Rܺ4_sxWtE=OS7qGt^fJ}Φx~,=jV?t]$P9E4a$qK"(F%H8@5qa YNJ,@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]eNsCi椗<b-8Hhၨ zxN<(гOh?8zQ0{F hK`r' oF 44-yq#L8,(KA G8ᆴaӐ<(LPEz j#HDžqh_@5}y(yZr8oImb&o Hނ=5(xR\F@[G @ @ @ @ @ @ @ @ @ @PcsF\P#qP*ǁg79E6ӧƊ(N0NAmd^24^Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@wdNծ=oߛi׊]~>5R)8t+wF8iN&~oյ< W + /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@ц"o9.+1.r@Kh[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9B @ @ @ @ @ @ @ @ @ @n!\# P*ǁA1&q>4(aɭ\mO F/[ˠOAR۬sMj^ӧƢQM5PulɕWO' $՝AyWi@ 69~k7]~FWeի=';\ժQbBx.)Ǔ/;]P81~Jo;}?oIyWa1W+oye'b܍9kZJ_RI{z OK73“"縅|YMoOeKVP' VjW/8ZV}t`#Zv:o!ⳡQ/8}>$V>+kz~ޓ(`d;0g.#NsKr!/~ޓ*wy@7!?iN<ծ%oMvT޽>+ `tJ/FǕf }SV3mDRz Y˯ӟ}\ +VGs7.Vϊ.9]xt']\5RCgJ~o^ҟsXOOzxSSFǖSOP>jF}&Dd`+9us\@^ulV 䖭Z,f *ޮ@|Zv^Ct}-7m)Ǔ)<`,ߛi՝ʔvZVK ( E{RW1)XHQ@ªxiy>K /Zj'_!RzR%Y<{J|d: : W=NCZ[U){/Aľ5xw;oCPqKVv>%BFG[B,/lyWa1Zt|UBݶ\v@ޚ\@;|(Ft=zB'׷!իTjT,=adqBPr[x0?pH ' z`U^Li#`t "QCm:|iNԨ}Z95*H8#jm:|hyƾq No=:Vq>4Pv3ȸwO'_Wi]QKn$H95 @!{N@ӄzF$QA^ )NP/NacS*V6ӧƽǩqXvc$ LH(qkxDqtPACTcx=B7Dz*V6ӧƁ(tE @ R۬sMj^ӧƢi=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O`gf;X}wԥ;ǐVqU v}q\@ Vu.,.|>8V*a; ~z xV),:O6Өu0:WO~\pzwBoW Ex/f dj?>GIZN"})ñ|$XvGZT,=adqc=Kdz_r+;jӄZ,0>ԥ>e5R_v=~mQ맏S<)jq>4(;\OE8v3 -:4;#Zz!w(ܿu-Ujtځ=N=KǫƋ!2<\v=xv3Gm7m_ur'kqU v}q\{-}`}Jpf~1FSǗ:go_Wժ5,/uJoWOSqm:|h&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IiMD-.a⸔sN@ @ @ @ @ @ @ @ @ @ @ & q 縍$DP*ǁppA@`{i@r 9mO33333%'' 0?pH ' d (QA7?z O}XU|WB'بG~o! WWI:;NݴSd?]ի%'BΥ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z jbFP>?s[ZXt+zO/őU'sV  6ӧƁVr4Zǹt^>=\f4_1 QԸ,{;x)[})ǓR{xH-V16HtVr4Zx8Y'>Cs:B Jqի[~}Cq իrD5zLg.#NիWܞz~ޓzˮVjOۨY1r]<~^ɗЮԨtyI%z՝ի~+kR<1pnF5]%P/p=K'Λ}ZRICsB,2%Vqxߐ+5j+ vIl|Wj>A:~0CW~Ec;sԷYШ w`~>Jv}B+[e5?oIP0v2  ⳗ_?ޥڌhoI@]A;bFǐO6ӧƁ(,f 7W Gg.#Nի V S#r.r8ioʷ*[q~o^ҟsNx0Nx#Omʎ3ǫd[^Q@=iy>@EC #k9+`\mC{X@~ޚo!dz?7doiO,ZU'?JҝXa?իW!-ij*[_sߚ|K!Vr8ioLBO-} !or@^ulVիJ~qm:|h*a; ]~oMvTK ՝EL:uaKFK| qFsPU~*YZq_sZX9EÓZN(UB7pA|]|[u "@aɭ@ tB9M5P9o9V0NAmI'έRy?WO' $՝AyWi@ _& ⳗ_?}+jOm=?oI=NT=?ongoOt ]zS&_wB/R$q<~V?v~qRǗ1pnF5]%P/p=K'Λ}Z OoFe5?oI-ZC'ZJE]}B+[ںOPN `r_Wv:o!ⳡQ/8}>$V>+kz~ޓ(;l` Y˯ӟoRF\qA_u6oB~Ҝy?\xN(,f 7W Gg.#Nի V S#r.r8io5RCg{zF8t+u(&~o:/t`Vר *n@]~FTY_m:<&is@!|Wv?,f W DoMvT޽>OkҟTJ/Sd?]/t>?sPiKwlTAxirY_{ղZ/Zj'_!R{/r]׮Ԩ}ZN/>ޥ8}<`,ߛi՝ʔvZVK g?,/^؆ڔZ1OR>@prT,=adqY˯ӟ|@_$joc0NC< "_՝Ǻ46CPS "q_s9%5^[_sߚ|K!Vr8io b~Il^Y {3d">]`F_\xN/X{ⳗ_7]+gouƘt=zB'׷!իTW=N*a; ժ 'Vr4<%W[!5RCB}B7իs8ioQK}Yd!T,=adqBRo~=ˮOőovmOCf7W]<`,!Ǔa._8 } 5)*4v}DoMvT޽>OezOaZ{Ŀf O?a=,90]8՝ЮEq S&_|K9u~*_իurV0c#_\Sf1zȱ qY|{; MvT,v?qŦ3..@ƺ m)/m8V0NAmIc{~dz(N?ac܀7]~F6ӧ!;O԰Q/mr?g.y%wXvgG'VJqNsd|hOzy2SZjr *~W -mOR{>_jc:x/oZt~N?ac܇ZCs?sc=݊r,(|tQ~M9VE(?p만[z>5<)bE!L:T,=adq}GiOqaw/5* :|hԸ,{;_V; z,PmX=*~W;it?IU'sF=SRծMg@ܾaT_B7^iOoƓǁ~:|kr.}g"(hP4 /|ժ5|U}Z,Ijx{NaVaOޚ1tzǓe5~dz;{]F.OՅ)Ǔ\8~dzDܾ>C'#Wpq < ?%zի$)=x ~Idyݥg㷬vm:y?O| oMvT#MwY/ڂkw]Ģu腼՝V; '<m)^oq_Ogj=K'!,{;'vՅVqm:|kVrk?ukulյ@rP?F,{;x~.'LCe:zKdz._WPm }R"_%zrWc;▭|Kz`|@xIW D0>ԥ>#UV.Խ|@pp ,y T<);bZ/8l>.=<`~qm:|h@p ,znf5|)j)յ?s@bFONy;xv3Y!J}ZD@Ekի:Wl>.?VvgqXv]~0NAm/`( /wndzʹ=XaWKuի*[}[#]Gަw*y>áqU v}q\@1Z/]*=pA[^t7=Kdz/YñacYzkwxSp만իv=~mQSZksiM_-5RCʹ?Vv37P[s իX{_o^ի; :^oӄԸ,{;JwGo~\UBݶ\v@VZX@u16Hx؆ڔrV*a; |ŅOOT,=adq/ڽSZAS[%CIu.>@jիNoV׮WW!o G':ߛ▩?Wi@;\OE8v3ݻ ?6ӨW[l>.?VvgqXv_B6|t{ܢ#>\p~XaW؆ڔ՝,r^=ndzʹ=7=}t3JwG-RvV6ӧƁEc<(ax8Y]Fsc0qKVv>=Sq>0>Ԯ{B{NP#ǩ{xr~1FSǗKdza▭|KCYMn*a; t{%z/ )Nó/˜({xR㰱+j@ƺxE^jԽ||uJ{ծ'ix.?GSf7Wv3>\mOCg.]P}sԽ|~+kiEWc;}){x/F?!ǩ{xI^sԷw/5kyB+9uYbRC-RV1s>5BDi<^M9+ոNte5~dz9@탔.. \xNeG7o;1W9Jq`( ~5N@C Qj?q>9i )NC{]Sw1oTS|Wd}S˜(vV?i_W=$ޭ@ Cs?IׯQnO=z븗wRs(^t;Rjsq ;Rc=|@ b\䁸I|qkxDqtPIЃQ=K⽧4i>N6=z:6yWs CiWy.; }Z/wF,v9+ոv3@]A;|WP#qz\xN(mv?m}zLOz/j/Zjo[]-;BOK@Ƌz|(p8}0]ĸ,tz;krr}A{!O ! >P/g.s8gr}uׯñC.!Q/]-;OpoRI~,RvJ~rCin_.!Qst;qwEV>5ߊZ1Ikd| oMvT޽>Q\Bu1!+]r,/qBڇUֻ0\=y!}Suj#PNܿQ\B|j rkq8grgGrSVF6>׽'_S[.!Q(LmA!QKǹ~6>׽&-kׅ)qXvCd!T,=adqBRv3ȸMlMg@wujN=:,1'B~/Ԣ/&_|ժ{p^m2AmO[6ӧƁ%A4鍷e5^;ov3ȸr{'W|aׅE|l}zLߏg.{OPq  z?jg*緩D_j/J/uu=95~dzEzzۇ6a S&_tutcPSYMn'C'N?⼞3Ӧ6CYMnIЃCE/o0rS AE5j -w=O\{7?6ӯ}{zk)ˮRx~Cő?m2xWt@ц"o9.+9 b1";/xwg(h DԒ"QaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqe 9\Z8a!LGF@DžiC 44ohJ05E.2DUB78$rÓZNQ95U?A st H [u "@aɭ@ tB )0\J9 z\Zԍ/hb( Ӑ<1 pծ=LM4(a>9o9V0NAmI'έRy2jd߄Py9o!jm:|h/~ޓY˯ӟjw'r땚C?Vv \WOץ8et+*<"GRx/^go0~/!j325Zԥm,d \>< `Wc T \)=oRIsc_VR{x\4)zLIjժy>?` ZJE]}B+[ںOPN `r_QX\-+9usO#Qe}4}9W Ex>+o^3뫐"_*[qOSt)xIO }AJu16Hxs|~ZҖبP0,g.#Nի+έ|իT=:R{/r]׮Ԩ}ZN/>ޥ8}'[{m:}5RrkRsde@[{bjRj0=K_ (UBݶ\v@o9'deKVP3:OJW D;}ǏtiOlRaVDjrKZk}Z/r(>xo.m_|ժ)jnĨSrKb_sB[ܿ%W[!~/!j325_\xN/X{ⳗ_7]+gou]XaCR_d8zy>?{~ruV\v@8l>.?VV*QCm:|iNԨ}Z95*H8#jm:|hyƾq No=:Vq>4Pv3ȸwO'_Wi]QKn$H95 @!{N@ӄzF$QA^ )NP/NacS*V6ӧƽǩqXvc$ LH(qkxDqtPACTcx=B7Dz*V6ӧƁ(tE @ R۬sMj^ӧƢi=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O`gf;X}wԥ;ǐVqU v}q\@ Vu.,.|>8V*a; ~z xV),:O6Өu0:WO~\pzwBoW Ex/f dj?>GIZN"})ñ|$XvGZT,=adqc=Kdz_r+;jӄZ,0>ԥ>e5R_v=~mQ맏S<)jq>4(;\OE8v3 -:4;#Zz!w(ܿu-Ujtځ=N=KǫƋ!2<\v=xv3Gm7m_ur'kqU v}q\{-}`}Jpf~1FSǗ:go_Wժ5,/uJoWOSqm:|h&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IiMD-.a⸔sN@(& q 縍P*ǁg79Eի6ӧƊ(N0NAmd @NAz/(2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9E @ @ @ @ @ @ @ @ AEKt\88Yf^L ǣQҀpW<65_\|q']'Ooq 4ݽm"9]^ӧƊ$  @ @ @ @ @ @ @ @ @PmOsJ $^A^.׮@H ( r`{) Bk@op`(0Yl=9Eի6ӧƊ(N0NAmd³/E9A7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo]r.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\FRH h4 @ @ @ @ @ @ @ @(& q 縍 'XP*ǁA 8P,>4(ptE - A8"A Va$ew@!{N(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b B~҅!)goի~IdNծ=oߛis S˯.QMoImb&ሠ 8Q1s+a֌A(䄍0ഹF"R(q4(Ev0H h7x<+4o8,0iƊEiƥPYa0$4;x,jI{zC 7a֌Aoq#MD$Z_8G"hG@(iFj]yqFjEcR@QMH4kN<+E5 _cL#@YH8aj<`|JyCN 4&4aN@5.`9# /GĠyiѝ G 0&9.8M(@ @ @ @ @ @ @ @ @ r`{) By\B5NT#x#(8$6ӧƀի6ӧƊ(N0NAmd  ³/\h m<+ tEP#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R4ñE[x?Zi]`$H;rkP>@B>5 4H8 Jaɭ\P$tW!'j}w<.!\o!ب)Sdo]eT>\mOPt1&q>4P*H8 n{.> QKn$H95 @!{NAE4B+@G4KAM EAZr4 ⳗ_?F=SR;1)b,=NacGJNղjS&V]<`,Vv!?m>\mOP0 `+9us]?VCs]rVz~Gޞ?a Lv^CHO+վ&>]`F_\z ?ar4ǁja*}K'!\)=/tkR OoFe5?oI-ZC'YT \hk?OEkc[WI*  B+j+랥΅DkVӷ/Z)zLnp`f9,>eD5zL m;7><8V>4Q@c0N>+9us]RR\Cp.C-[MxU5RCg{zF8t+u(&~oTq'E=N=[ r@xI7W Gg.#Nsr|*,XaFYϴܹ[>*o`wm+`urKeKy=){#{J}Ξbץ>=_!O;iN&~oYNz\v@:IkMoQTBܿom_? |KC-[Mx b~Il^Y {3d">]`FV+kiEU v}q\|VrzkrY\~.ap "_r5 \^ loS'4VoڂNRիPm A(tE @ R۬sMj^ӧƢi=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O`gf;X}wԥ;ǐVqU v}q\@ Vu.,.|>8V*a; ~z xV),:O6Өu0:WO~\pzwBoW Ex/f dj?>GIZN"})ñ|$XvGZT,=adqc=Kdz_r+;jӄZ,0>ԥ>e5R_v=~mQ맏S<)jq>4(;\OE8v3 -:4;#Zz!w(ܿu-Ujtځ=N=KǫƋ!2<\v=xv3Gm7m_ur'kqU v}q\{-}`}Jpf~1FSǗ:go_Wժ5,/uJoWOSqm:|h&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IiMD-.a⸔sN@ @ @ @ @ @ @ @ @ @ r`{(P @g7Y/O6ӧƀP`,Ɂ$8M< qjE/]Ҫ (2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9B @ @ @ @ @ @ @ @PcsFؐ*8O@(P*ǁ6ӧƀPYm:|hdLҷ df<#oRuHTr 3t*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&P @ @ @ @ @ @ @ @PcsFdI2U<pJh fܽ?i@r(N0NAmd ]-0-(ʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]G4_sxWtE=OPbFP>?s[ZXt+zO/őU'p WW_ [t^> A@3V]<`,ߛisDZP#qm:Y˯@ޚJ{r#~ۗd6ի'B0ޒ8M%@pEpb\A|qkxD<;Y@%G4Ex#J[p'' 2`~  @8E-"Mr.x!Q Eָ:xDJqp o&@H.+B:׎?B ZALd:xDJ*n1x8Y6ӮkbFuⳗ_55RQG\/m_WKN(4a$qK"(F Ĺ1";/xwg(101RK8,0iƊ/x<+xӂiPob({N5.0Ya0$48,jIqh#"ӄ1b bFP>?s[ZXt+zO/őU'sV):< j+y=K(Pj?만[{m:zV*n1~m^+9u([])Oo]~1ud|ur>?t]$P9@3F@[Gb(h K/9 ob({Cpq(5$hlj(¸Hky78,+ц"R (NsCi椗<b-8Hhၨ s<ŢqF{AC 44ohy)tP Dࡍ(R&4-y0 5.=54NsCц?0KN@%ډZY@"ނ=5$i|NH¸P /ހ<<-93ad"oAцԍ#hQ0iDž%?a$qQE90[W=h⎊xP80p)W 9mOP`,-./z=OCXw! n :v< J(%ѥ>?JSP8x8Y]BE`]=,X$i%|eNx}GlLd6B<`eT"BIE5k+ qW]}<~dz"+'ȹʷa.^ ^CXvk Uj)=z޶^tBBE5j+yOw0Q˯t6?NzӦ7%)FK *n1ĉEJ+o;ܺ8)]K )^ov!ZSd?]("AG[u !8S<"G|u .ר7m)VR8+{\)=]G ڃܺ"~Ju| cJqqt\֚gժ^ӧƢxRxD=NO)j"_t~W1\OjPZځ( r`{~ FG@P8 g79E[x0?e;o>j?ac܄J7?z O}XU|WB'بGP}wO'_\|q]$Wsq;vҝLM4v< QmZ2Xt(_SWKNrWc:PGaieKyJlgzFxW[c;1qKT|@dz\v=YO24dWtE=OبT#?V2Xt+zO/őU'sVd^> A@3V]<`,ߛisDZP#qm:Y˯@ޚJ{r#~ۗd6ի'B0ޒ8M%@pEpc$ _sF 8Q0t,P4"jIt 8E44QDžpopY4Wj EiƤP@_ 5# =4ŜI.-y0ZpѦ#Q A#y(- 4,?4i 0hцZ1R#ĠCPF 78h#<;aeFj]z j4(HOi\ rB@N0NAm@Nt\`$]ځETcxٍ ▩2FCqXvqt]\sVJlgz^֨P| CJS߫Wp0NAmʹ}Zبw0:ܺ=ЮF(җgo0Nxr,|+]owdNį׸zx/oj+y5djOF,{;xot ryc1FSWp0NAmʹ迫\J{WRzV.\S]FV&~o2Cv-DZ )NJoWR㰱ʞ}^Pwp`0X7~C5 #ȸE~iOd#_!؆ͮ1FS*Jua~qt\ΕX[O rPbFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na0h DԒ# qDqB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGPP /ހ<<-93a$qGa5#z0xLqIq -Dr(1ɂB#@G%C㉂JT#x#pH ÓZNP`,Ɂ] +NA l|*5P6ӧƔJիÓZN/8V 6ӧƁ5ݽmD&/iQpOH?+ч%Ġ(r\1G 4W@a9 LHh[&ӍKi@_0YNJ/sF4"jIt 8E44QDžq4bN 94 qb({N5.=\f4_1 Q=NacGJNulZx8Y'>B~}ZN(mr0o9V_Wr{o!zOw.Z{u;zx._t+bҜy2Cz#%z՝ի~+kR< ?ar4ǁja*}K'!\)=/tkԸR{x\4)zLIjժy>?`>jW/8ZV}t`#Z3=Ky !vn_'"_S[9@7d80v3`?]~Fzj2C_' 'qTcxsZt9@c0N>+9us]RR\Cp.C-[Mxʖ{;ߛײ7t^8)E16Hxf }SV3mDdTur|Vr4:$iy}SF5j#J[bP0,g.#Nի+έ|իT=:*ޮ@|Zv^Ct}-7m)ǓdNoMvT=;\ԧrY_9az0>ԥ=az *a; 7]~F%V{KuU'\=ѥ>?JҝXa?իW!-ijBܿom_? |KC-[MxSrKb_sB[ܿ%W[!~/!j325Zt|UBݶ\v@ޚ\@;|(4àVDj>>ާOh>^ߵ\GZ/qU v}q\~PTa8go ⳗ_?,/lʖV/~\v@;O-[Mxr^>?s; *a; ժgo~]r~,#{m:|r\1Z/'jd߄P='=>/rCxD/ݷq>9!Q%zk):xD/ݷK{ }Ⱥ׷v%0Nxt _Ĝvľ1fɂ9~ޥڌhoIK9u~+-{~dz:<}S):S't;#@5~O1vҜW PsN0NAmm:|h*߹jP#ǩ{xW6ӧƋq : O;Te˗dPE怴f6E䦳Bn_Iʰ/!A]<`,״LCe:/ aЮ*a; K2={Mr}K }GiOPW DGiE=Nacq_se5l>.>`|@xIW DPs1O6ӧƁL=V1zh Mvca_~Jk:( & zLot|uJ{ծ>4<vi_sp.8>)EcEUZ/Ɨ\dXi}SP%qsCdeKT+Ŕts /u\F~u^ӧ׮<)=}Y 1t-r~ެ-)N<ժ=x ~y>ov?VXvh+վ\v@9%5YMn'N#(Wc>gk^;oAs~ޓkzkwNkO~]G%o@˯D->q_wq8go;iNJkիx;Q\)=?ac܁>öެ-(?K?~:|j<>{/Rki]\՝v@ⳗ_@]իS[{dJ4acǃgq? b)s\v=1uZ/8l>.?VV+'Җ+վC[Gm7m_s3:Oz%!)goyuqu𕼇O`gf;X}wԥ;ǐVqU v}q\@ Vu.,.|>8V*a; ~z xV),:O6Өu0:WO~\pzwBoW Ex/f dj?>GIZN"})ñ|$XvGZT,=adqc=Kdz_r+;jӄZ,0>ԥ>e5R_v=~mQ맏S<)jq>4(;\OE8v3 -:4;#Zz!w(ܿu-Ujtځ=N=KǫƋ!2<\v=xv3Gm7m_ur'kqU v}q\{-}`}Jpf~1FSǗ:go_Wժ5,/uJoWOSqm:|h&Gq > 5cñ@[ wm|ժ4_s8goOǹu<ҝ\1Z/'ñjm:|r+9uJի@{O_\xN/[QKǹ1=KJh랥ի~}[uoY˯ҕ)j}{OƘt״#OO\Ol)^t<()=|A?ltqZtS*=Tcxٍ}ZW{K)D]\KuȺb#Qի NP fJur=zz6cE'ٍ{R,}ի,V; z1FStOߊZ4&mz(`U5dj9Lz|(p8}0]ľC*B@6ӧ!؆ڕW3&Xw!؆ڕ{'c$ LHh[&ӍKi@_0?9M/q8B=Q0`INhq!ŜI.-y0ZpѦ#Q A#Av3 r~1W!ԭ}Zb-O⽘|)qXvCd}S1dw<m)^ñz k⽊oԨ}Zt9@lm{`~=NԨw^9V@|իT=Cxޚo!D_Orz_|ժ4_ec@5)Ǔa7^%e5ԥ}A]SF+ ~'qU)=~+9uO,{;n}rGq ~ޚo!}K'z OKb._jS˗<|hOrGq {O t{*,ǍWٍ|}zOvc_V; kzk):"Cy Zd~;0_O:م|"ez˯Vtv"cQ>_S[,{;:<}Sҟv21?Gq 9@ M:cm8B~b^=0~9k^)KdzV; *a; ժñEkfFU:k:+Uܚtƹ|Ya:s~ޥ}2CPۇ^;o lzxvV>4a*ɧLm)zAxñEߏ\f ?Sv3^*,cc{eK9u~+5jXw _sWc=!U=J"T}JV}Sɭ=u+cw<^>׽'Ry2C{ҝokq8gry? tqw&1'krN'){x/׷IiMD-.a⸔sN@(& q 縍+P*ǁP,@k6toi\ s@'' 2`~  @NY]@ DOI|Z}$Uu Op==OCXw! ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|h)5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސo05E.8t+wF8iN&~oյ< WKNJr[],WI:^GaieKyJlgzFxW[bVf4_O&_#Zj(#׸_R㰱:|h)5R)]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z jbFP>?s[ZXt+zO/őU'sV4(oiE'' 2`~> 8t6(Z b2<<" (2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9E'' J,{;?1u, @>(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_)JrjbIЮJlg|*; Oo_*[rWc;ײ7Z[c;1x2R&_#P!EbghGiE=@QQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKpX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr(N0NAm_9=OCWOB l|*5Pʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_)JrjbIЮJlg|*; Oo_*[rWc;ײ7Z[c;1x2R&_#P!EbghGiE=@QQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 4QBqp o&.-|c yCi<u!z#!p*n18t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR )Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9E4a$qK"(F%H8@5qa YNJ/5$hlj(¸Hky78,+ц"R f$ay%Š3N4x`j!$o0\8hxQf~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#z0xLqIsoImb&QBqp o@$/ s+V@{[Cep p:kIETcxqT(y>B~҅aU^΁ /w5R)5g4QBqp o&@%w[넲={p=ހuIr'?`{ z5jOB%P#qǭP9JՅWzk:(}q<`Xծ>8t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/dx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Dr)W 9mOp0YP`,Ɂ$Y]@ DOI|Z}$Uu Op==OCXw! ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[GSVsxN`(88YH ^Y]@ DOI|Z}$Uu Op==OCXw! ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[GPW 9mOp0Y(N0NAmdW &QA7?z O}XU|WB'بG~o! Z'Btc۶bl[^ڵpd]$P0ԧ.Ut\TvbFP>?s[ZXt+JU>):< }ZJCR )Wp0NAmʹ}Zبx])Oo)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&A q$hh !4೚h;F&ӍK/NsC(Y<ԒG E b<057xzxN<(гOh?8zQ0{FQ)tP Dࡍ(R&4-yq#L8,(KA DpӚ_0֌5qZr(LPEz j#HDžqhYH/8%4KN@8oImb&o Hނ=5(xR\hzH h4 r`{2ouT#x#88 tE -Wp.y ?@ V ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'BzsP#{بG-~],WI:=V`ԧg*߹j+y=K(]>x8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,Q01RK8,0iƊ/x<+xӂiPob({N5.DHi' 9g4RKAg 1$4iCHaq8B=sAFސo05E.B8y0L Z'Btc۶bl[^ڵpd]$P0ԧ.PZXt+[ ǗʖV Ġ ٍ ▩2 /+Ը,{;E={N/d?t]$P9@ ц"o9.+9 b1";/xwg(h DԒ"P8,0iƊ/x<+xӂiPob({N5.j"F{L 8i, ,jIqh#"ӄ1b B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGPP /ހ<<-93a$qGa5#z0xLqIq -Dr)\z>5 Gv yQ !ovua~E-@2<<"a:~? c#{&P001Bqp o'OL|ժRxgr.[cQҀTcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGPP /ހ<<-93a$qGa5#z0xLqIq -Dr(@ @ @ @ @ @ @ @ @ AE6ӧƊ(N0NAmd Ѡ)(ʁo=j'AP*+Y!ET#?]o~qt]S1Ju16HxQmZ2Xt(_S*jbIЮJlg|*; Oo_*[rWc;ײ7Z,;1x2R&_#P!EbghGiE=@.IQի'BzsP#{بG-~],WI:%*qZLYR{>]\]|%o!ǩ{xի~O' u>qTcxNVrʔ.IQG\/m_WKNSF@[Gb(h b\䁋h[&ax01RKG 8E44QDžpopY4Wj EiƥDHi' 9Ŕ,jIqh#"ӄ1b 5g4Q@$ - pSmZ2/gVr^= "@IETcxqT(y>B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*RܺLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.B8y WWI:;NݴSd?]ըd]$P0ԧ/V+ Vw£zkDVwdo]xY?s//-Re5_aV,.; ~,^ӧƋz]~1uZXt( bFP>?s[ZXt+zO/őU'pZJCR )Wp0NAmʹ}Zبxzk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8Eh DԒ# q$hh !4೚h;F&ӍK,Q0`INhq|Y<ԒG E b<057x@DžiC 44ohy)tP Dࡍ(R&4FŠ0$i`Qt4apӚ_0֌5qZr%ډZ_jA Dq_18-/8%4KN@ѝ -Dނ= Gц`ӏ KhzH h4(1ɂB#@G Nx 88 0Ym:|hQAg7dLҷ df<#oRuHTr 3tʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJS_]GSx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEp%H)|qkxD<;_4"jIt((qF8z N 9Caqa8ԺYa0$48,jI-y0ZpѦ#Q A#yyNjD 4{zC 7a֌A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kFG?% @_D-/[Gц8/ހ<<-93a$1z7oAFiN<).q -Dr)W 9mOp0YP`,Ɂ$' ],^}dz]k@$l->kb\ '8{Z,{;ETcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=uOx>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢYe ހ<<-93a$qGa5#z0xLqIsiI -Dr)W 9mOp0YP`,Ɂ$Y]@ DOI|Z}$Uu Op==OCXw! ֨P| «5_y>B8y0LWWI:;NݴSd?]ի%'BΥ9rV+ Vw£zk%z3{#zի-+s//-Re5_aV/qXvdz>4_sx딞1uZXt(;7qGt^RO/őU'sV?t]$P9E4a$qK"(F%H8@5qa YNJ/5$pX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚYBi椗<b-8Hhၨ s<ŢqF{A悍=! 0Ҍ hK`r' oF 78h#<;aeFj]z j% 8ᆴaӐ?/@`ڂ-#hQrFD<+E@5}y(yZr4ghzH h7hxjF4aF4’0Ғ@[G?joi\ s@r[x0?p2An Pe@7B (_V_s*wtebVIЮv:$iVר6\,WI: /u)˕ot]$W%z3/]-9+ձm^Am[}<`|)j/ ^}Kdz_#״FCƗ\WtE=OبT#?V+ fJ}Φx~,=V.Խ|@j?만[{m:zV*n1~m^+9ueJSr#~ۗd6ի'B) -Dr\1G 4W1.r@4bEhw@_04(88YH Ip--j+u Eָ:xDʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@wdNծ=oߛi׊]~>5RQG\/m_WKNц"o9.+9 b1";/xwg(h DԒ# q$hh !4೚h;F&ӍK/NsCi椗<b-8Hhၨ s<ŢqF{A悍=! 0`kF ]x8(cx5Ii7AaH /0,R#hQN0$488aj< P=%z0G9# @,kzPx8Y6ӮkbFuⳗ_55RQG\/m_WKNoImb&ሠ 8Q1s/9 ob({Cpq(5$hlj(¸Hky78,+ц"R (NsCi椗<b-8Hhၨ @DžiC 44ohy)tP Dࡍ(R&`Hxč0 5.=54NsCц?0KN@2j& i}"ނ=5$i|NH¸P /ހ<<-9Îhц"oAцԍ#hQ0iDž%?a$qQB @ @ @ @ @ @ @ @ @[x0?:.r|0~k.mCgV1u, @>(\%!\mOR4ac=Nkq']S1/[9+ձ()jnǗ T)؆ڔ՝V.Խ|Jt+ (җgo0Nxr,|+]owdҿʹ迫\zO>]\]|%o!Ը@ R㰱}'YSN]>x8Ym:/~+ǩ{x=OWW_ [u.)#PQ_16HxT9mBܼ{RVu.; <0H h7 EQCF h+@pHkPE.b\@(MI.<+1L=|č qEopY4Wj4h8Q0j]|,D0pӚ4QA7?z O}XU|WB'بGV[;x?Z'Btc۶bl+kxV + :t\Ε ǗʖV vcE0LGIQ}GqXac/őt}P#!KRx~+jbIТT*rKaQIbIЯqV>Sx8Y6ӮkbFuⳗ_ʔ.Ox>:~CoZXt(\v=|~+ܺ!t7V+ J}>1 OIOGOWSv^GnbIТOr8io;|Ysܺځ~G运)K]V^=ޓի'BԯZ$iJ=[ i5!)Ǔt]$Q~+9u()j)k}YjB[ܿ1[ #DzC˜m.rBsxB^Prt%zի'ޮ@bVáQ𨱏^WMgExpp@8 ( sy5rm:|hQBqp op^s \dL 8J dz=w[{#׽0"\<"%ai[V:O)<~>j?ac܄J[x0?p2An QA7?z O}XU|WB'بG~o Sx?Z'Btc۶bl[^ڵ + :t\TvLT*rKaWKN{U>):< WW_ [t^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqtj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.*Rܺ4z5jiQ(J={NSƻQ (88YP8?ac܄AdTj9ETcxqT(y>B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OSV]<`,ߛisDZP#qm:Y˯׷*Rܺ}(Pe@7B (_V_s*wtNw=Nm)#OmGjbIР`9sN_],WI:^GaieKyJlgzFxW[c;1x2R&_#P!EbghGiE=@.O~],WI:_sB8Il#jbIЯqV>S AE5j -w=O\{7?6ӯ}{zk)˯.,n_V+ (71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,?4i 0hцZ1R#ĠC 4QMN0$iZFpY|QfAFq' 9 hQ?% @_D-/[Gц8/xWe[G% sFv71z7oAFiN<).q -Dr)W?p*={Na;_l~+( ՝Ю@^&Q[Sc]Dz.>Eu:QƔJ  *y__vҝԦ"/z>4tzJ A_qp o H $' c,{;Fш"2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o Wp0NAmʹ}Zبx])Oo]~1ud|ur>?t]$P9EF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9_T?$-/iNSry BǯiJwG001_'' 0?p$'Roʁo=j'AP*+Y!ET#?]o+k+ zю'nSFmzjt@rRZXt+[ ǗʖV vcEe8LFB2={.; ~,^ӧƋz]~1uZXt(;7qGt^fJ}Φx~,=V.Խ|@]>x8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@oImb&ሠ 8Q1s/9 ob({CpqMI.<(qF8z N 9Caqa8ԺYa0$48,jIqh#"ӄ1b 8t+{ؕbl\szjǭP9J؆ڔ՝?만[{m:at=ux{՝~jVvp o~m]S@7ʹ빆)Xc!LM4v=xz?Z'B324=`}JpgGA+ձ ~CSt 0r( /iNS٘r={NS=\]|% ("pP D,94&1Cxuݵ9E`,x $7 }Q|] £PWgiNԨ}Zjc^ $pRXt4+ 1*Rp޽ur$7B~҅aU^΁ /w)N< {^ӧƔJVO5j+ eJSq\v=!)zCiQ/>5\H\%!\mO@@F1O3 @!{N@+t; 0W`,@ A @ Ys++ l|*5PiKdzz׷0Not rb_%zrWc:W▭y}Ю@ҝ`}J}Yj+y=KǺցJ\v=|~+:ȳu?만[{m:,~+ǩ{x=OWW_ [u.)#P+R㰱}'YSN]>x8Y6Ӣqw\VaT;1:xEerY8SvQ_?VYOy }AJrWw?_`}q[+0P~A5F=SRxH 0QxßQ9_?[u !5x;;/tYѧ)qXviyO}sԽ|{^+a'++ffffDq@p3<$У++ O[x0?&`I9_?88YcFFdmW< l|*5PJ'J\v=sƽu8{O#+վC[ҿ qKVvԥ>uqu𕼇OW=ЮF+ R㰱_f OEkV]<`,W?t_ծ={WRzV.\S]FW<J\v=|}<1 b)ի~O' Ok^Խ|{ի:u{y_?jblP#!Vr.څx!)^j+goW<WT>]#_v$ =}ZF_{ Xw!EƔB5aCe=Ra_?ՆNrWc;'j}^C7<J'at"o9.+v7@097@hQKx%ډ!A'9 na⹇s@`b&ApX`Ӎ&ӍHqF8Hky4xӂiP/a+1L=@_ 5# =4sŜI" G E b<057Q afC 44ohJ'hQ.% k@ +ѥ.; >?`tJYVj -~mEZ׸zx/oj+y5dj4ac{O#ȳ!2}Z}tp i_?ߛiV;^=Kǹ}ZJCqMwYOV&~o25j"[bjRV qXvzC5_WXgj"q#,v?p !jq}zxgr\OiOd#_ W?!sk Q=JҝXa\|q]$W%z3,RvW?!yJOTcxr +ч%@[Gb(h0%N 1E.a⸔j'R+ b\䁹]yaN4Wb({N5"lj(‹!ҿ N 9@цh8Q0j]|,D0pӚ;zzI=:+SY&Ѳ lz5}(WWlh b)zKdzծ>8t+{7JcN-ZC~B[ܿW G9RպPȳeJVwdNի aq9WWώ޳^wONm&| O0,Zx8YP}Kkǹu'B~G[ˆ: }ϫ\J+ /]-;_St ~+YI=Bս}F%~z]~y$>W WOŊNܹ~ޥ“ߐ@5~ۗ8T~C",P}C¢o!Նc^h!؆+{%V{sr{x'=:CCYcܞ<\m>3!<{=%zիA\=:ծ>8t(: d6u-={OQ+!d-.],WI:V.Խ|zpWUt]$Ws /ujSi}u5ɭcP\OxVK\v=W -ZCJY {#ZJ;O;áQ/"(F+VvZ^' ǡ&`?%k8付b]ۮMjSjq%5ǩqXvd|ur+jqGƷ;֨U}Yk{~ԥ R㰱rz˗\"(J_Vpݵ5j+?`}w<~]ws |~+j/]GyaqR}Zlj!jJu.; ?ƗTEhq_9_?ZqICe:S bdiFV3~E£Nkw=N~2ҝFao!jCO{!(Wf5G;NبY~~=Ѹbi\V؆bjR<$A| 䖭Z bWa{ k;'5j+ի@$A`ݘҝj[*TKqS|?IWk.^ePW ENj Vr݇Cm6Wt; |TZqjqzu^ao!Di>wm*WO-y?\:L\ݘ>+jCAy+]~zP8U>_?8>BNzbYj{~rN',P}C+V0Gܚy-&_ի^_t.6Xa+5j+tVv! >FZ1ժBժ(4WO' u*sժ9gm:iSCt~jWݴ~W؆=OU¢'_Vӷ/ Or,U[NVz"N>+9uRu׮CrDoMvT/[޽v׽';1WbB#'؆(z_"[+!Qe}Ce:S>jW?]o8}}Zqt^KVP8>(q>*_|ժ5r߄WKv21?Gq v<#]Fao!j+`I}ZNWjơZԪ#J}γ븄*VQ ?!֨tztFƾ+jCAAjDfc@ƔT*ʕw{zFZ1#ZvSqXvv! =SWOo_OO Q=XaWbB"WWt䖨Wի !/Zj~@Gn/tzgiORP>xRuaOVDޥ1OR8J y?);V9O}Z1{y_?{o _)بG_s2+]~}zJ0sK׷^իW!~,Q\BPUի !=:@rrffffffdJl9KNffM=SVKk=#OmF@ժn^=`}JrW}ZgoWWW0H h7 EQCFĠC 4Q]\]|%o Wu)qXv>,|)b_V?만[{m:/~+ǩ{x=OWW_ [5djjblP#!Vr.څx!(W+վ]Kdz++jիksȺ; qؗߐwG%?ac܄ySzzv!sk Q=J҅0ծ>8t+[);VB/vبat"o9.+v7@097@hQKxĠ{Q8$5"1.r@sMI.<+1L=ex<(z N 9@цh8Q0j]eNsCi椗<b-8Hhၨ M+Q afC 44ohx8(cx5uwsԨX})Ն5pF{F d4jIl|WQ{-o= 8Fa]\ u]ovv{^4? ~0;\=Ѯ'"WWZ@;\=ѯ{]_q8֋q ?;5LM4j{=݈TqyD]\e%ov.=)<(j+.ժB"C#N  sn `>{arspFCXv԰Q/E+zKc+}5dc"+x>:iN~]k4_ի9gm0>Էs<¿Pv>=JVJ{ծ=bKJի9=FHTz랥%zիkEfL<O}4 9_?[uxE~o)P?OEkcy+]~>)E<8IVqcj;\=ѯtJǓT#+.wt ?}Ztk:xrNrY?pgYtuY,{;xWh|S(? u1ԧFqp oH pP;*ulAdTj9_)qXvSf s>@KVJlgyRմݷ/بS )O;~]\]|%o!ǩ{xB OF,{;xWu+f;Zի~O' t_ծ={WRzV.\S]FW җgoo>@"w˜(uj -k^Խ|{ի:u{իF=@ZȻj؆ڔ%zիqXv}^Pw|Wf^L!jq}J<~dz.'f42Cb)z :?VIЮJlg|X[O rPbFǃWat"o9.+v7@097@hQKx%ډ!A1s+xw4"jIt 8\qa8ԋ$hh /xӂiP/a+1L=@_ 5# =4sŜI.-y0ZpѦ#Q A#yh~q9OoHaF7@0978Q#Ġ{Q8$5" 78h#<;9DqD-/x{LY_aN0i|hX`/POi 0(Ըč qEopY4WjPfހhJM97 DpR~5 Xa}xb( 9?Aǚ\j(44j?t]$P9EF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9_ @Z״^?sl~+ױm:?Vm"Y+ !{1 + N0NAm_9=OCWOB l|*5PTcxqT(y>B~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=ux~Cő?m2xWt@oImb&ሠ 8Q1s/9 ob({CpqMI.<(qF8z N 9Caqa8ԺYa0$48,jIqh#"ӄ1b :dC[co&D_O' -RĭDj~աU]ƸJB>4Q_5hSl _O' 9=N< q8D/ݷ0$hUts1OW=RjMA/C-I\:ep o z't\UF?.ո[n'9j aH B9BDi<@ f5R״r(뮶7m)ݽJb! ^ӧƔW_ D+``b\|q]$W:|iNԨ}ZYm:|hN0NAmL93&_pWTcxqT(y>B~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OWj -w=O\{7?6ӯ}{zk)˯.,n_V+ (hzH h7 EQK1|qkxD<;_4"jIt 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B==h(`ѽ bG@097@hQKƜ`Hxč0 5.=54NsCц?0KN@%ډZ_j4a9#K"rGŢY}Ġyiѝ -Dނ= 5#z0xLqIsoImb&001EOAzI /iNS)^ӧƔW_ D+``bN0NAmd`$A8v])$7COA1u, @>(F,{;xٍ{3q@W F%W|%z3)jnǗ T)؆ڔ՝V.Խ|{\hQ_iKdz|q'],|)b_V]<`,ߛiV;^=Kǹ}ZJCqMwYZ$is|ժn^=`}JrW}ZgoQ_P>yEP/FӵT~Cծ>8t+f;ԸZJC0[4 fqCe=eJ+ P}/Ry?WAzI *ޮCWAzI \zn$H++P?j5 ۘ.pd =Yٍ)==Lk;9؆({BN0ծ>8t+[/!Bio9(^?P#q/NtyO!@S+Ce=RaVGWI:ȸ~o]7.)bCA~Cq>  {ժ5Jlg{% ݧ*n1~])$7COA+ѥ.; >?y>@$9AEkV.L$(@?@\{O}5R'BKObCxd0 ƽbC{s2۬)pb9.8M%@pEpцh@C$G0\ù01RH]yaN4Wb({N5"lj(‹!4೚h o8,0iƊEiƥDHi' 9qg4RKAg 1$4iCHb&G$$i({zC 7a)$7"%yK@pHkPE.oq#MGxwr&i|Z_8' 44aN0i|hX`/POi 0(Ըč qEopY4WjPfހhJM97 DpR~5 _cL/ Eg5 #CR8RK{MEƜ~1ƂG05#Es?xwhPD;/8ᆴaP=%[Ɯ`INhq}{PE qF8yCN 4&4a9#@"rG?xw`w@5} 0H h4h(G$hцHhQfW @ @ @ @ @ @ @ @ AEV!2zkGlnZt\/vǓp58'llq]Oj1FSoMvTIЮJO1#mM+89_T^M4tzJ A_qp o vn &|x-@.խM ( ֨P| «5_y>B8y0OVIЮv:$iVר6\,WI: /u)ի'B+ձ-=y~ޚo!^^޻oj l~f4_O&_#Zj(#׸_R㰱:|hQի'Bzs*o{9%ի'BǪqZLYR{>]\]|%o!ǩ{xZ}tp o~m]S@7ʹg.^ޚJ{r#~ۗd6ի'B+0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhq|Y<ԒG E b<057xzxN<(гOh?8zQ0{F hK`r' oF 78h#<;aeFj]z j{18|NPQ_(,}|MJ{y_QЂ TY}FpP aa,' -a8P8ڵxFWڎ{]Xa%d`_$p m)Ǔp}B7+ĸZ+p |V0NAmʹu:|kQJS(lK W4Q_\sGSD&; &I#.b :$A5Y`q ^S*VcMjt?j 8Gv=fbaz#OmuriOW~+@E?] :$B1`Q_ժ5ױt.p}}Z ?iQ~J)<"F'S/?Vځ.'ԵUua~_jcH[0ժ{Nr]}uqiM=#zGiOod|p!ur88YA8 /@CO{ղ.[cQҀ4ac=Nkq']S1/[9+ձqKVvԥ>uqu𕼇O k@=R㰱_f OEkV]<`,ߛiV;^=Kǹ}ZJCqMwY9_'J\v=|}<1 b)ի~dNǯqߊ^>=SVKk=#OmFCP] rCJS[Ը,{;xrO>V}ZF+³/\ߐwG%?ac܄ySzzv!sk Q=JҝXa\|q]$W%z3,Rv؅9(^?P#q+0H h7 EQCFĠC 4Q4tzJ A_[)Z=:}az#Om+dL \ϐŭ{a2Eю?@N{ ZH1ǀQ. Q_zlzzjgV8>;_p osݴs [c>qt_sdzSdP@\|q]$W.; Ҝ<$A`~ QS /iNS2 t{@F9|]|]X ([xH @>t)ֺ t|Wk+ 0>ԥ8tf VwlBE?Is}?y+]Ws:B<}uu:W!}Gq t.6XaWf5_\|q]$P9Ee@7B~ҟs;1\|q]$WW!}`FeKy#PNܿs /io_jxRgkaT2YR{>]\]|%o!QZ{x8?jB_\|q]$W"w7F b~Ҁ<1ޚ?Vvx% |WI:W{1\|q]$Wv!2oK҄]bLM4v?WS'nSg}ǿ7€k7 Pڅ):><1> ޹>Eҝe5z1>)TiJwGyWY {t@qʹq>>(ҟ!ܾ)N0s0NgoW]92 u?@Qz_/D lE/P.:n_i5FJ%7m)ݽJb!`~״;Q j^v<[x0?{K=0~=DiJ|ի@~+ڵs!NpAEv-+LSԧuZ# nǕqp o&\<*,R{a - >mO)VEOl>>5F%Z#dz o[u0wD >@_j`%C{]b @@A"D* *S'L rP})ǓP##׸J|[u{@J+( 1_9J":~z`Xa:~Jj{{/]ʫk۶V_9郔WjGݷ+!U'/Qx۬D~)@TA +ڵwGW - VGVB1=N s#P)ס+``IJ:+dL: ; n UORCA%liNJn@7((j̆vm:|kAqp o&@  @ E\2Gm+׸*ov<`s\v=P=5ԸRz>JoW[x]J{ & q ~_jc_\z>5@իc_VvxbF"]|W-(O[]N?\Z`,bT;P/jP^ӧCsQ~WmE -f.@>?VoRF\ }x4@qS]<`,ߛiW!jW r`rXw ӟ:O޳,{;JtJCv-ϫW r`4 9%zի -f.@D!Ҍ¢Q_7sr4ǹ%WS`<`}Kdz_r8O-(-(>?V.'Vר.; Ҝy?W[x]J}SPm~+goO^=@~QrOLȸOWWK\8*Ǘ/n઄oQ_®; 7#N|{RCի90[Wr.{Өǯ_sx!V_!3ϚB?ڕ^OO (aWgr]P7#N|{OUgo'tWW!\v=dž90[Wv!,1ޮCn!_sT;eG7?io!ժ9E%zP)Z~ի90[W}Y▭҅Y▭ҟ?oN>W'@5Ҝy?W[x]J9E▭ҜPsjL_}YY!Jr`\mC~],f W D2Fr658^)jn׫c;\v=yEB7J}k=GAN FS vsƸ^)j)U>=\sVw£!)go'37,{;_VZJpUB7( :4acW=GAN F`Hgq>*㰱pmQի:W=GAN Fdž90[W<#J[$y+ձ-=y~Vrv~C; 8Rzի,p o~mQzю'nSqMwYA3yoMvT'kҝ\ZcWv3ȸs .OHul kk9*%=OC8ioEWp{w^?V'' 񘺕ڵxTY_m8crV;kORJ}ZZ)U<S[őU'sЅ~6ӧƁ+\v=x^)j)U>?p& q KtQ_@ñEdz0xtT#x'\ WT9;n?!wqWgr]Q}S[9+ձp)ի▭ҜP`}J}Y=5\Sd?zK-UjZZ)UczZv ~Mp%#2D؆ڔ՝wo^o~]\]|%o Wȸ_VZJpUB7uq88YԨ|W=GAN F^CЅ~6ӧƋϫ;~\N0NAm1u*zkrx9RմݷZZ)U<+ouݷ'Å▭ҜPQBjơ.x2}ZZ)U<yVZJpUB7Yww}Y=KUZ?z?VZZ)U<Ɂr.$xRua0OVZJpUB7ujc0N?pRպSp{w^ZԨW]Y {m:|k +`״;{7u:|jVKqKTs.; ի▭ҜP1xu:|m>\tVvZ>5EB zYT~t']\Z^)j)U<^*Jua}|}r.R\]=z;z>5ժt+ ZҜ{;\v=GܺJ(qXvp)V: pUB7+/n઄oJlg~],f E@cԥ>oMvTazOoa/VZXZZ)U<MooYܽݿVF+0\v=x?+j{|v }lrKZ=ЮvS[qXvor|3ȳCJ^)J":tk5jR㰱0>ԮOo:5Ը,{;xJkծOqWj3xF:goիe=|{^BOwr sWad^COW;\O,{;]/n઄oNbץ:ԥ>wtWw^ӧCU}Z r`\v=quQv*ov/u:|m:Q>jcOիQm]ݥV1ծ={NaϫWf58dzիz!KVN F*Rj BAxr0;v*ov{x/▭ҝSzP^VrY\K>\1ɂBrY_y?a7mgo*Wի90[Q}S,{;_V +%z3/ )OWE@[\)=*}ZcWF=;{\'RJpC~+KVN F`\xޚo _) qFW=Oll@Vv5 \/i|"]vc_p& q /DcKK鹘ի90[W뻅▭ҜP9){xYMnK t+7P;Vn!^4=NW~o#O~ի@~+k^ӧƁ+©/!Ģ }|)jnǗ:go_WK\>C▭ҜP<JqqCn;i>4Ico _#Z>CqXvC-(OM:c~qt?|)j/:gk-(jxS;{N߫\z>4Q_p?+0xtT#x?PS #KVN F<}|ժVs4Q_ ڵǯi]Ls~^Ams.,}\ /=h ի -f.@  qt׷*T~]-5ٍ|Au ZY_*tWaO޽O}E/\ٍUjsƗ\]rc!SP%qsC-+[¢'s~u^ӧ׮<ի -f.CW}'Qkao!Jq\1ɂBxϷoY;i׽55RC e5d~Cj " |w]z!o!goի90[WOgj=K'!,{;'vՅVZ̆vm:|krxϊ]6m|ի;|YMnv?z(Q_PWu|Wt 0 hxa@YFሠ 8QHwhx8(cx5a⸔j'R%Hsшxw4"jIt 8\qa8ԁF qDqtQ0`INhq|Y<ԒG E b<054<Dži"orBFpYPo44 D,\$; ᧍5$&4MCC@097@hQ#Ġ{Q8$5#4o 78h#<;9DqD-/x{L_A%4ӌ`Qs9# <;0;ހцԍ o 0H 0(O @4W@_hxb $pINhw@_H4H((+``b__vҝ1x&~״;Q [x0? ³/\] £P+ѥ.; ?vc^:z}'|!^#ZB7Jv!)goի:x/oWk@ җgo0Nxr,|+]owdNǯqߊ^>=SVKk җgoo>@"w˜(ujW[{m:/~+ǩ{x=OWW_ [u.)#PWSd?]zCv-DZ )NJoW\v=x9_>1>秩|bG6OcԨX})ՆNrWc;'j}^C7<K1ypP(\$;aJȜ1bE\q(N jK70\ù01RK8,0iƊEiƤ_8#CExQ|$5ƜsMځ}  8\qa8ԺYa0$4;x,jIqh#"ӄ1b D(䄍0E{zC 7aJȜ1ǚA%ډ!AIi7AaQȚ%r&i|Ĝ(` 4I / b!P=#@ i8Qfx<(z N 9@CQ4, I45Aj@Ơ]|5#Kiሠ,xHjGjIsiӐ< 8Q&hajtpӚ_0֌5qJQ8Kxӌ 8i/jx8Yʹ迫\zO>]\]|%o!Ը@ѥ.; >>}\E1 Q?dNǯqߊ^>=SVKk ou16HxT9mBܼ{RVKdz+?jիk+0z`W{~+bWt #ȸ]ҟsFC #]bT,>VIЮJlg|X[O rPbFǃ@GhÒ -Dr\1G 4W o`r' oF0\JCZ)Ĺs<;5$h8Q0jE44QDžC[A@GpY4Wj74Eq"R f$aa⸳y%Š_"ӄ1b D(䄍0E{zC 7aJȜ1@G@qG@pHkPE.oq#MGxwr&i|Z_8' 44 #h_44C#ĠzF4qx 5.8#CExQ|$5WqEv_ E!i ӚxR KHAG 5 PI.Q0<1Ԁ HI.q5CCr 5$ԍ=SVKk+iKdz@W Gf;LCe:w<`,ߛiV;^=Kǹ}ZJCqMwYZ$is|ժn^=`}JrW}ZgoQ_'jq~]<~dz.'ߛf42Cb)z :?VIЮJlg|X[O rPbFǃWat"o9.+v7@097@hQKx%ډ!A1s+xw4"jIt 8\qa8ԋ$hh /xӂiP/a+1L=@_ 5# =4sŜI.-y0ZpѦ#Q A#yh~q9OoHaF7@0978Q#Ġ{Q8$5" 78h#<;9DqD-/x{L_H0'4h 4,0iG@(iFj\ qF8Hky78,+b( DгOo@_H4%&֛@R]zF 8I?Itԍ,Q0<1Ԁ HI.q5CCr 5$ԍ=ЮF(=R㰱_f OEkV]<`,m:/~+ǩ{x=OWW_ [u.)#P(=R㰱}'YSN]> -k^Խ|{ի:u{իF=@ZȻj؆ڔ%zիqXv'jq~]<~dz.'ߛf42Cb)z :?VIЮJlg|X[O rPbFǃWat"o0\RCB=4%@pEpц("pP j)sĠ{Q8$5"1.r@sMI.<+1L=|č qEopY4Wj74Eq"R f$aa⸳y%ŠpiCF D1"orBFpY悍=! 0%N ހDA%ډ!AIi7AaQȚ%r&i|Ĝ(`A8@aaLD8(F,{;xٍ{3q@W F%W|%z3)jnǗ T)؆ڔ՝V.Խ|{_ +'J\v=|~+:ȳu?만[{m:/~+ǩ{x=OWW_ [u.)#P+'J\v=|}<1 b)ի~_0NAmʹ迫\zO>]\]|%o!ԸC]LM4v?d>jEP/0>ԥ9+վ_qXvjիk+0z`W{~+bWXw!EƔB5aCe=RaVGWI:^i!yJOTcxr9.8M%@pEpц("pP j)sĠ{Q8$5"1.r@sMI.<+1L=|č qEopY4Wj74Eq"R f$aa⸳y%Š3N4x`j!$o1x4Â?4i 0hц("pPj=xj'R&4-yqG"h8t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/dS AEV]<`,ߛisDZP#qm:Y˯׷*RܺB~҅aU^΁ /w4_sxWtE=OبT#?V+ 0}jSu3 dxIuqu𕼇OWj -w=O\{7?6ӯ}{zk)˯.,n_V+ (hzH h7 EQK1|qkxD<;_4"jIt 8E44QDžpopY4Wj EiƥDHi' 9g4RKAg 1$4iCHaq8B=sAFސo05E.4tzJ A_qp o/f^L1u, @>(F,{;xٍ{3q@W F%W|%z3)jnǗ T)؆ڔ՝V.Խ|{\hQ_'J\v=|~+:ȳu?만[{m:/~+ǩ{x=OWW_ [u.)#P+iKdz@W Gf;LCe:wdNǯqߊ^>=SVKk=#OmFCP] rCJS[Ը,{;xrO>V}ZF+³/\ߐwG%xgr\OiOd#_!؆ͮ1FS*Jua~qt\Iڶb{@7(hÒ -Dr\1G 4W o`r' oF0\JCZ)pc$ 8t+wF8iN&~oյ< WKNJrjbIЮJlg|*; Oo_*[rWc;ײ7Z,ٍ ▩2 /+Ը,{;E={N/d):< }ZJCR +ڵwdNծ=oߛi׊]~>5RQG\/m_WKN -Dr\1G 4W1.r@4bEhw@_0?t]$P9EF@[Gb(h b\䁋h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9_T&BB_:|iNqu@+`,@ ~NA2FZCs/ tQs[;x?Z'Btc۶bl[^ڵpd]$P0ԧ/V+ Vw£zk%z3{#zի-}<`|)j/ ^}Kdz_#״FCƗ_]GV+ /}@b|~$t]$WY+Rs8_#O~ի:x/o wdNծ=oߛi׊]~>5RQG\/m_WKNW71ypP(\Ĺш1L=|ø 8E@`b&ApX`Ӎ_8#CExW o=Ev08Q0j]|,D0pӚ_sO5$piCF D1+- 4,~q9OoHaF7ш"A%N 1E.oq#MGxw4 0(Ժ0xӌ 8i/kF8a-9j& i}"ނ=5$i|NH¸P /ހ<<-93a$qGa5#J=5(xR\F@[G~ QSp޽A\!XU~N TKO).W1G1VGjA\;[xHA8³/\W88Y$C!iW>4eT>\t|P$ڵpa>4 ~O\O7ǫkנ-:c}X^뒽[t?y?]o+jm:|kJ+۬sMj^ӧƢ4& WׯQnO=z븗wRs(^'BgiNԨ}ZNacSK7 1#/9 ob({N5.ACTcx=Nv>=Pq>4W<|3Wޥ1^O).W`,Ɂ$b$ @ ZL3Wc:B 7?z O}XU|WB'بG~o! WWI:;NݴSd?]ի%'BΥ9ot]$W%z3/]-9+ձm^AmƋqKT|@dz\v=YO24]\]|%o!ǩ{xZ}tp o~m]S@7ʹg.^ޚJ{r#~ۗd6ի'B+0ޒ8M%@pEpc$ _sF 8Q0t,]yaN4Q|č q\$5ƜsMڇhxDqtQ0`INhqbi椗<b-8Hhၨ s<ŢqF{A8zQ0{F hK`r' oF 78h#<;aeFj]z jvΥK 8[xB/N)>]Gi0Gҝ`NO @!Gi]o5Cpp@AEf5W)\\V<|Y#^*V nOx;V}YJի>u8 ?ac/y~>_իWWzPǩp Ox r؆ڔeT>__ [u:|k$qj>t~\%!\"Ws16ӧƀ\z>5ʏ~oROz?V^:<)ztkV)^߹j2={O]o/x'LBO?E/o>5AS'j3d+fffffffffffffffffffffffffffffffffffffd ' {>+R2%w3m:|hzH (qp o&@ /A8 p_E[x0?p5K@P+`,Ɂ$9Ѕ<.[cQҀR㰱f58}\^8io_t+P#{bjRVvZJCRr5AE4ac8)\1 []>x8Y6Ӣqw@"w˜(uj -k^Խ|{ի:u{իF=@ZȻj؆ڔ%zիqXvK1ypP(\$;aJȜ1bE\q(N jK7+xw4"jIt 8\qa8ԋ$hh /xӂiP/a4Eq"R f$aa⸳y%Š3N4x`j!$o"orBFpY悍=! 0%N 1GD֠\$4FŠ0(MNJ9DqNi0i} D`0а"_A%4ӌ`Qp1lj(‹!4೚h ሠ$5B=} ДsCZo AIt(&j %R4(Ƙ_Aj@Gq椗8!9b`jF+0цw@_q' 9 hQĠ{Q0KK58xč q\BiM#hQrFxW8aq7o@_hÒ -DO FI#NsCAFqFh9_T+SQ,ݴv0,t/z>4tzJ A_$'88YH i(7p2 ,IEe@7}<`|)j/d:gkWI:wԥ>wdNծ=oߛis S˯.Q_ц"o9.+9 naF hHH K4ob({N5.8b"Pr]$q?I5f8~dzWTcxٍ ▩2FCqXvqt]\s0c#\!^Vz O}`}J}Yj -w=O\{7?6ӮC_]D -Dr\1G 4W1.r@v7ш#0h8Q0j_9:&;FImb&44QDžs 8\qa8ԺYa0$4;x,jI{zC 7a֌Aoq#MGxwH0'4(MNJ9DB~҅aU^΁ /wx8Y6ӮkbFuⳗ_oMvT=.Ox>:~CoZXt(0ޒ8M%@pEpc$ _sF 8Q0t,]J8,0iƊ/x<+xӂiPob({N5.j"F{L 8i,g4RKAg 1$4iCHaq8B=sAFސiFbG@097@hQKƜ`Hxč0 5.=5`INhq|pZ0y iĠ{Q0KKA4a9#K"rGŢY}Ġyiѝ -Dނ= Gц`ӏ KhzH h4^ A*c#=0q bFP>?s[ZXt+zO/őU'sV(iKdzz׷0Not rb_%zrWc;▭ynv*ovCJS߫WW_ [t^>=ЮF(ѥ.; >?`tJYVj -k_qߊ^>=SVKk(iKdz@W Gf;LCe:wdN+Z׸zx/oj+y5djjbl~T9mBܼ{RVu.; <O>V}ZF+jgVw>]#QOB<ٍ) B5aCe=RaVGWI:^i!yJOTcxrhÒ -Dr\1G 4W o`r' oF0\JCZ)pc$ 5RQG\/m_WKNц"o9.+$ h[&ax01RK8,0iƊ/x<+xӂiPob({N5.j"F{L 8i/9\Z8a!LGF@DžiC 44ohy)tP Dࡍ(R&4-yq#L8,(KA G8ᆴaӐ?/@`ڂ-#hQrFD<+E #?@Ӑ?9;F@[G{FR7A G48ц"h9E @ @ @שGn,Cr q @ @ @ @ @ @-t7m:W!@8 ? @ @ @ joiE'' K^SP=GB۬D2 tiORD0NAmP$XOtK(V&~_SsQ  G{Xz* QMZ'Bxv?/@OȹJ.y2X}˗?==Ze}Z(>xrp{w^@2<<"((QMZJCi]0~r ~qt^Jbl)H(ʁo=j'AP*+Y!ET#?]o)<`~qt]S1Ju16HxQmZKNJrjbIЮJlg|*; Oo_*[JlgzFxW[c;1x2R&_#P!EbR㰱:|hQի'Bzp*o{9%ի'BǪqZLYR{ ի:x/o wdNծ=oߛi׊]~>*Rܺ$qaja[ PQBz_vҞj( #2Gpz“܅{^=ˮOu]o:>{18VIЮIkMnpI{NUI49Ǒq>C #jP#@ @ @ @שG⎊߀p` @ @ @ @ @ @-t7m:W!?@@ @ @ A@`tdL-./z=OCXw! ֨P| «5_y>B8~o! WWI:;NݴSd?])[^ڵpd]$P0ԧ/V+ VtTvbFP>?s[ZKN{U>):< }ZJ@^> AE5j -w=O\{7?6ӯ}oMvT=ux~Cő?m2xWt@ц"o9.+9 b1";/xwg(]yaN4Q|č q\$5ƜsMڇhxDqj"F{L 8i/9\Z8a!LGFQq8B=sAFސo05E.@KVJlgyRմݷ/بS )O;~]\]|%o!ǩ{xB J\v=|~+:ȳu?만[{m:/O>]\]|%o!Ը@җgoo>@"w˜(uj -k^Խ|{ի:u{իF=@ZȻj؆ڔ%zիqXvO>V}ZF0[ ,!jq}zxgr\Of42Cb)z :?VIЮJlg|X[O rPbFǃSFImb&ሠ 8QHwhx8(cx5P=K9 na⹇s@`b&ApX`Ӎ&ӍHqF8Hky78,+F qDqtQ0`INhw0\Y<ԒG E b<057Q afC 44ohx8(cx5[^ -e!h3OZֵkZֵf5kZֵkTkZֵkZֵFEJֵkZֵkZƕkZֵkZֵOZֵkZֵkZd3UkZֵkZcQ=kZֵkZ֩ZֵkZֵkZQyxkZӗֵkZeZֵkZjbcZֵkSֲFE%dTЃ Rvt wMn[饰_*M"A,nįPI?r |r gɢcG z %W̝S=ĀR@ HWI`R3d~V!@XBfSJPHhZfNV|tI\'A^4݃T)&HZ`;6,u?"&SJ<͋_mkϛ;>p|=`O,h}VﺁUa7N+bBPԞ)E@vou\* .9kPϿ-XD%̧DZ| ysa a ?dAݛdHߣ1@a8pNI"a+V L C EXDu2^ɔ菠a ̧DӺB/XDBИ\(znA;=qZAr3IGh@! 䖄K&5XB):ҕ>znA;=qZAr3IGh@! 䖄K&epl_U6NKiJO=D7J Mȭ # \ЅrKB%FuuRQ Һ'g f܎ЁrCB-%MJTy!uN\Ah@! 䖄K&S1K  UX'mrSϩ Ai.}V(̘&h1 yҼtvz B%FubzK\tp'̝%M <8  b?W=iąY8<{%M>7Rxt{ERx%Y8t{5'U|nt8IbY8rOҹIju4+q)<'O4+q<ʲpBOҹO(:U?t{=RyJ'|nt8TduX@o4+qTdX@4+qO3X@ iW=T}V>7Ja: Ou"Ry>W\AhD(n>W\AhD(ng +Gg "\i7W_ +Gg "\i7W_Sφn㣳Z.J4ᛥxK&A}% !j5%' ;ЩQ ~SPCj)?@P_5 rd :PPΠ(/N%`yr#Dw` D Uzw;f 'cB)`' ;';f 'cB ')W{0<>) :"`%V8Bi7WDÀ ARuBΠ @0=8 :)3I'T : R R :&j& FۣwGI,p:)>S ,. LJVCo)ѱٛm1z#G⬘,?/^yoҽA&u!Fg$`2:)~`BR k?݆t}{/D9NI-RofP"RD]& &G渢Ic{)4tS~I)@Ny)LSbM&C_Y9)LSbM&C_Y9Nb/гi2(1?0_f)qd5P?œay?0_f)qd5P?œc:)~`BR k?ٓ?+Ϗä BĮzDcuZv|/J纁JMg O4A[jctڃ̝yV#M&%O;cJdvz f 'VQ_gF%'mrQ ܎qXRta2qXCv}S1bt5P? a0]@( CWp5OPg BAp(&L@M8BRyA(Ro x>[i \ 0L>Ыh5 \'Je:'_*y]+3-'䆄+Z.J4dWp5~oA{9:I''?%7YMV|C4dϙ5C|L 'DЫ?>yKVg@ Q%[XAGSA [E4lX|-lY4lZ|-l[4w%y̵ҳ:{.HhB%w%ΆJPRxK*K@t7ɧjmPRxK KVL>!.Ybs6X%뗻-p~u0ACI,/w.i|+N\N\1sMBrx% Oe.uuuJ'.sBP)EuR .C4GC"\I`sLTΪ^+Nb5 O3SRHu<&i7W_&@i7W_uJI樹̝+N'Ū@c:L\EW{4W6ԇZ'_ :MM &Q_)%[7>k0@f.ۈ!,}{׺R((%<> uRyC)?n:<J)VYGU'| ^NzQG7p x| ( yGU!n:/e uR 0@aDJo.'wnܔi7PtInܔi7PVY{&GЧ$6:+RJC :MM/P,I`T\U'W9)C^y&uuI٤]>| e!ɴ-tybufGfje3{1K&!]~di7W_MJ4Muu&]~Ii7W_&u0I,A?"\~B$rA#I῟S'wX5 O0`btRݟ=hyu](? =v@Љ/>S7vmKٵ0υV̧D9%xh}TQ,g`T g."@+ +Js3J;=q# \ЅrKB%Fuqq"j ~GrΒJC' BW=A,u'ҳ7\AW{w$ttNrD:Vf*sgҳ7\Ai=$4!\ЉrRݛ f\IWp1!?jO.?WrD):fpYg bI2 ?h3w Hύub$ @I݃=vqq]Ȁ(\]dg_ Z6C0ҳ7&S2?mf= O-s$rc,YfN ' =43aI2qXGv}R R@y5N(5wS]?~n_]`;8@tWrxP\ sA8BRr;CI7Wr9[+/Wp5wc0XS'7g)P@# V̧Dpu2y+C?@[ b:xvqpP)\tPyN.\ *O1`AJS ,. LJs͑?0_f)qd5P?şA?"\~B$l.H?vo+0XOE!SPga9 ?Q;s;3bw/qWp ٔ蒹O:>VL3)>榡)v}S(-O@Y&H5N.5 V: o4 IDI/:yWp1J<ĥN~mh1yQABeC o>7t7]@e*b|no@ Q%w |AqQPتh16(mcylX|6, o3OųAc23-s1{fufN դ# \ЅrKB%Fut8|o0BP.\'JP̧D%MC23VgVd =UU܊@\'+IqpYh1W=Iw~䁃C23VgVd =U_5 g^YYw4W{:iUnTtJ'U`B'~hB34"]+3id\V1<"#%f%̝%G+NG?c7"{0X4<'ПS'7g)au"HHqh5 \ef/tάA;zSr+H.Fi=$4!\ЉrQU)B j9ҳ:'qiT9-MC45%wtC|jj&4a)Wq4Kfht*σ} 3|ME49:T`ϡoMC7O\$s8ب(lU4pqGChP56,> M"j#0bࡱhp2DbXrXPI<3-s1{fufN դ# \ЅrKB%Fuqp<=Wpx~{E&dP̶yՙ;'sOV܎ЁrCB-%M]N9kfu;=q# \ЅrKB%Fuuݤb#1cB!ҳ:M6P풰bym#%rONb/гi2(6gtS~I)@.J?!\fCә;h' ;dDa]K̇0Pn"O4L/O7s)vE\Nt7Ut S uBpɚtLE Pʺ S|3tЁrCB-%M*$tN :3N1 !LE1 ' +Gg \ЅrKB%Fut7ŊSvn`u@W&S}gmAҽA-W$"\i7_oD1h?~4D/ dz̛r+Cl OWr>b_ƒ͉0`+  /_sϚWd Sr+H.F;zv IhD(n'|ÈAitfv&3\df@`ٝ+LDRxKܖI7081=Q1Ke21/NfN oS'܂}gm?TDWr ̧ErDzDۯ?,0ٴPq`z3q9+abY \0ٴq`z3Mr6WptT_ 8=WaX8Wp.*_sϚW AhV\w4i=$4!\ЉrQ]t'f āӣ(~=4f 'f'?~ 8XS3`yfD WrZs40ao;8Wpt)%sG_>j̝w%F OCE^aiWĽ:fN /h 12q]*&}g=8WpIO4O;wKS}SzZIhD(nU36'㵞[Kdb^?̝%G+NG?c7" }04 T柿y>; !`ٝ+/N+N9]+LAi=$=ZIhD(n(`]ĵ/0QQ>0V$}@y]@+|S3`y>TGsr+Cl OWpOϘU{0fw!SL3|Ҽt~'qZAr1դ# \ЅrKB%Fuwt/4 4Gј+ȟEW{3@ R{3w蒹O bB?Q†^'&06',Ľ:d.J?!\w6$r9#[y>8 KL?t K*O &&RyA`=N,z>L$S6H-7 Ŝ k_΅a R0I}3?J_Έ4SDPyr FE230Qa`a YDIJ:눊yAφn㣳Z.HhB%IF 'xg1Ye21/Nٓ HWIa.C?+܊I=>,ɉw@f |E_0Y8S3uY&5hZ`j>:Fy`re:$z 3?(Lj3#PX9%wDhḿOϘOCf ж5!Lj L<:"Wpp.ޗ5bc"LfTբq0\#Qk GJ%Ze:$x{B'`!TIMC6b+hAxaqһ H~*f0>P0Jzf&ip%&t10CL(L[v`}лfj%5y X1'Cj 'B7H-X20Kaw Y3^8t|ģ%Ɣ ]nEi{& OWp-~|ҽOWR6w+-+;=q䆄+Z.J4-0gDjTdh )%sԞ\DBcP&sJ`c`kqY l  BcPxZ`Aɚ DI3.C3Q hȕr9[3_5RSVlshC GFQ7%w fSJZ ԞyP%5ӌو5UFP^*2g0 DV0B Ŧ F2 EFLIBu{=&Qi;Na3K8F PkMHj9~j'Th6Ԇ*2f" Am#tقX=0KawG&*K#̡1Bz4F}%wC2W=IJBcPY+?Cl~l }] 0 ж5!Lj L<:"Wp+ _awD}L{@=b"2%\3_53-5h30]Gl+)%s T ɀP2PBfb.:5là@]ă -AZZ`~$p"xd7:<٨*JzNttكW" :db` :>L3 )Q; MD  8͘,:bS4B7H!w/f zL.hDġbܟb&081=Q1 VY| Kӧٓ~D(rKL~}L~Wr P/| wyҤ''A|tSϪtPvz B-%Mf8oCC̒521/N%G+_~@ {fr1L,A?Ys`|} 2q]قfw@pV SJ<~gz󠟪`,}`)5?!a!(oa껈/'l?=:@1 z+ B0!z]ı9åfoMȭ # \ЅrKB%Fuqq"j ~Gޤ] ԇZw BW=A,u'ҳ7\AW{ O2ܑI" = b 10I!3S3?wRyBw?SvC,4NP)G>vص 4Wp(tv Sw ,.Rf򊦜\!)O1\!C1 h59?W=@sPyuy]+3-܊ Or;B W$"\i7Uwe:%w Ovp~0AJ<ŎfZYN\AW{we:'_3-tΧg Sr+H.Fi=$+ϝ;1Wp' BW=A,u^y]+3*sUwNy3-tΧg t\!%sԞ\CWqa2fZYN\AW{$s2Jvz E7"f܎ЁrBȮ{RfN2 4! ŮnU3 loCm*x,i̝%G+O$r;ك1#4}L~V"ԞPBf ݟT A;}GL4>O~D;1ބJltO !b+_5N. jC\P\ sA f\!)}ҡR. BW=Ay]+3- # \ЅrKB%FuWp(I̵ҳ: Or;B W$ćC|=Wp&_h5 \Hs2Jvz ~P2NHs2Jvz zo4 ]+%sԞ\CWp'):fZYN\AW{Wp+ws2Jvz H.Fi=$4!\-uݤe-'34 hB34"]+3f&C~T1<Ү7aO'mrQ ܎-`\^tnE>NbE!<1f" N )<|w0m&B>5NR~ @y &;8  BcApK7EC4 HuPP.P\! 3AJ<Ӻ9kfu;=qZAr3IGh@! 䖄K&0a2󙖺VgSZ)#4v ;GWpl9%sb_̵ҳ:>Wp&9~s2Jvz WC|Eqp(AJz]+#M&S6J1I6>VgMS ? a+= Qϩj_h5J ³΁cOPg D+ns5N.HRtJMC|IBT|A| DP)CC4G:-h59BQ4>ؙσz>d4+?W<,ɉ6J &p7I0TAfj*>5lm.:tFe:#ވ|j̙9ҡ8[H'LNf6R,'^GG|D6q(:* @F(T|,LP+4>T@APV"3},t92hd+1Ah26a30QB QYsB'?[̎fJ|=m,Xyz bb$S0$ 6딫#3PFn6 LF]2oDJ'j Arq7ѢWpd)Dz:L>w8AJ<9uZAr3IGh@! 䖄K&&Su3uҳ4g ew>%w}PRy29NhYsZAr3IGh@! 䖄K&=DӋ5w?jO.AW{J"?YsZAr3IGh@! 䖄K&H ŭ'3B̵+fi&L O-zt.J|(;h)\dTh0ҽAU2>ҽC'(%M%Mj7bǡ VYxc) cb?0_f)qd5P?œb!?0_f)qd5P?şA0qRWq `sH;hRtO>N?+P &`F1:Rx(/ĈZz? j0]5wp߷΄DWp /Pg ҹ P\ )< f\!L@%CA1)7<&"m SsP iu UPRy Suҳ7\Ai=$4!\ЉrQg͊:pLD"8bYff03QPWOs"n>x]p-Aw5G3&:@)ta ]|"gto1ApϚqp]@a I/:Bw@pi4+OR8#Ce !id 3DOHpt'GQt8&hp<75NtKfQq ZiofM&D"t!+M0MɽL"h*Wq<[4+:sPy3'q]cuwie:'_.jO9d ,2P,u#4Lhpt3DϬWq h1W=A,ufq}MS}VT+i7_?1<Ұb _cc,Y2vGw >}MS}V :W;=qnU3nbym`e@K@A܂{>s>a83:W;=qnU3hm*v/+,fN{5J0:W;=qnU3tK0KaK2vGw 5OXPyN\A4L9a[GaJο;h#_|_?+i7_0; OGeyfc*sdA|<_>ҽA&us,Cm,(1t_̝]/ϟSTU/>}SzM&S6YCm,2vGw 5OX&:W;=qnU3ma1<Ⱥ[/̝]/77M>>NrϪtPvz fPJ,dA| |9jC:W;=qnU3hU O--,R2'm~Wr {?7STU}SzM&S6F*'VCc%?fN}ϩ}u}ݣ>ҽA&us#'V 2vGw o}}MS}V5}SzM&S6Ya嶕ٓ?+ϩ}u}ƠT^ITͷam+ J_̝]/_j }SzM&S7O'㵞aiW;h#_Y+>ҽA&u\#'&0үA܂u>V yN\A4L?P!ImE'm~Wr =w§}SzM&S7O[iaImKX?ٓ?+}MRDϪtPvz fm,1-\qdA|9jC0^ϪtPvz f01>7g}SzM&S6Cm+(/3;h#_}*/ҽA&us ˤb@/dA| |9jCyN\A4L)'$9̝]/ϟSTWpyN\A4L۟0J݄ A܂5Ow>ҽA&us m++-ő'm~Wr >s> :W;=qnU3nm*x,ٓ?+}MRnϪtPvz f)'1Yg㵿;h#_Aß>>ϪtPvz fw('V V[;h#_Y+T^IT.Cm,La(b9[G̝]/_j§}SzM&S7OG O-s$rٓ?+}MR`ϪtPvz fpK G2KhfNß>>+i7_0[iaIm̝]/_jH^ϪtPvz f !xgIm'm~Wr =wqT^IT.E^#%ke2vGw 5OwT^ITͷaPJ/̝]/_j A>ҽA&u\#'㵞`edA}gST07:W;=qnU3tK"/0beA܂5O[_yN\A4L۟衉嶕llNY0bKdA|o}&jCķ}SzM&S6FCm*؜fN}ϩ}u} ?+i7_?bym[_'m~Wr ϟSTUg}SzM&S6嶕llNY/2vGw ϩWr7:W;=qnU3tKxg2vGw ϩWph?+i7_ʡ"/-%22vAIa.C;w܊1:IG'ПS'w]SPS0 ),|)biϕ/aNtji*O4%3@9 Q1ME0)Pyf -3-3 Z}Lɉ@rDiWJ 2wN枧K)rB܊ #M$Ĥύ\]dO3t4"Rd3B$&g04Ds)}&PRyŁ`wM&LЉ +c0g>i%imBb>kWrY(2@P2Ŧ h \,ucP)Fc:>?>,|]@#O>"WYw4WrY ,|]ASL><^AfN ա 䖄K&5&O>#:WN\AhB%I qT D + ݟ@ϟt80LϨ &&Wpho1P>LM4򻃲fJf] s&4"b#ynQ’oU'V VY lt#RoPyi7UZWGECm++,6:\n1/Nޠ)unuQa;J0}df%̝RB H.C?+~S.FIG'ПS'f ]Rxؐy4S5G,/wLD}: R _m<9OZϨ &&w! b,|]Ȁن9ҙ0ty|Wp4fhg7AQ"fME3)Ka3fP6i%k3\J &&Wp#ܑ53Ε3'qixBxDҗ!+Mȭ Or9f4* AtS5G \/+ 4a)7LV`"acpF(imB0KBb>bY]g.-0gDch @D'WpZD+O53Ε3'qiбbewm~Ly|A;z!\ЉrQOXg<|g !\ЉrQ]~hBǮM6"ކ'V VY lt#1/NB;h' q?Sr)#$#Iy>8Oux|@]L>iJ 'v}@X1331P>LMه9ҙAt{NO]'}B>fsPTf3@"QBRy3  А3G&3B%&}S7G3] Lj-fu]: *@Դd EѢ /uf>m]XLO &&Wp"dz^ə;'sOUw%BɉHJcgҽ2wN枭%Mե1JGg "\i7W_8+M6˕ O-qĽ:u G3ٓ~D(rI? \Mf`\^tiy>8 D}=))'wWp)AFsAH*B' i]HTcOFS(=twCJ+;@/Pg~j܌>LLw~䆄 Һ3'qiЉrQC"fZ vfFh)+1hQX13Ԡ{<WCd =Z.HhB%IjP̂صD7P4. 7~X>NjPt3AQ: .hYH3\H &&v}BX Һ3'qiij;>]p3gJ|̝CBR~̝J|w4hD(n qB(DWs &&z2A-BX ?W=IJh@jP=zٓi& ކ'U _cc VY b^?A?"\`j}:G! dN#n$M]πA{`ݟQ1$Ad$#HdLtSNS?W=1d8u+B*Z, yМ:VZ.J4LoDOCm-a)zt̝%G+O$r:T9C~-=ϩ҅3,t7Ŏ΅RP? ;1E/'d*Qwg(-v R晥N-ː[6庺b>衭&CmmhC\ErҲ -'䆄+Z.J4s]DCjݛj] btI\ԞbP)%rhXԞcC|V(i蝘+z蒹{y.s=I@B`N-0>n<2b gυ>c{}V(tI\_\T%9XYYwR0 Y@s.kt3w%fW>S9, K'WrX(K5:L,ޠ9~ygJ'g v IhD)]jDjcuw%9Bz,u!RrYjV#:VVA;=q#"PTNKO$SV#:VVA;=q# \ЅrKB%J'ͩt7Uk2W/u'PxI ChD+++ Md..z9a[GaJΌKӧٓ~D(rIGJ(|7oH|D>N?+J!ަw΅RkpT;ĈDWp ?Tv%Kt{|ra,׺_Jxf%7%YO02jBqi5#vnA;;>7|-=]I9fr)S6,u!hR|X{ZѵIe*KR˞jK 'Uܖ>K4S9K&+W_=rҲ -'䆄+Z.JWr[ h5%K0LTLJ,XV#:VVA;=q#$^w5Ш_*ygJ'g v IhD)] ٵ. SJ*_NV MEbB!XYYnU3!s'zWI-%`UF%9#)LSbM&C_Y9%)LSbM&C_Y9&)LSbM&C_Y9C>S ,. LJs̊|E1OY\A4 gQG<]~4Qa3K"llt5c])щztQG<]~4K"llt1/NJ(KuUTzXF1<Ⱥ[O2vOȗ%I? \=Aǟr1O?+Ho.'v}RߡU;?!a0]Ð.}] jT]@ApK7Edqp'5}йrϩJfj(v(k9 u55o Po3~&89E55ĸj)NKY4c5t'9,i Q5Nbךjj@g0d4D|{4c5h,> i Q5xfMMA3(QL O{ C8DFa霠'@.7 BW=Ay]+3 \AhV\{.HhB%ItfS󙖺VgSZ)]#{{3Of @0p'CjjQLB|C4b(9DuTMC(CDG(i h,>IAd8*0ujj GP)Gf9E3)>IB33 L҂[ATSAg9D]f^(E IbBgN],AJ7vj > }]À,7#Bq=7YD Ls!4 j @Y+|,votfbm ^Ry&K<<3@j܆5'ҷw4i'䆄+Z.J4NJ̜@aw+\ 'FWAk R|PiL.#࢈PX|PXp@wJ@fN ]P>ߠ|#B]!?4:(Wp }D BJ稞_bd?Їz[id]-Fk:1/NBï fN 's`|rA#r30':|y?} 2qY)(_Ws7#B8|gA;w ϨӸ>tWp|+}fHkA|&г@^g1RyAn':ȓQy+q;'sOV\{.HhB%IЉ`8Dhy~/iB x1Ws9wΐ5 I1J稞obd?LK"lb^:#;h' q?Sr)#$#sך~O>N?+%p||@pD! }٨W34 ]OwiL@p]كg3 j!4 j lstfM;SꝃTԞc|7*xpZ%'(3 3 zљO2= Ӹz'/{<`V6'!&fY<3N렟'R=u棂!:V̝J\ЮsE7"`e=ufp DhYw|_Ӽ ́Ӹ>tWp39f':Q=ǪK-'ClkK"llt1/NB;?3^X(8ȗ%I|8d.H?s.Fh 2;=5d`}>7Wpح[u4]9[t}2Aߙ>7zSGfzfLL'39Vi=D; a_faE كa$b.'Rn>6_=3%;- # \ЅrKB%Fuuf`:, bĿ_MtY=Iz r3ܒM_:6d-?@]Rܒ̝\bbo 'VI`Lzt3H$ q(.&%.C'ЂwÏ<p;h!X(8 ~{dfLL̮}>7AaY8'A 5Be36|Z`+')>|T 5&f ȕx C2@%(Q;t?<-7[ !ޮ⩅ T5w 'eP3C1f9V`p )=Lр8f6-Y& "tBt=LsB>'Wy[rضa)Q6*uachhcbw9oz|arod:#!Fh=L3|RKrK2wO'<ēģ%eK'M߂@]SnIfN LOWR6w)#)G;zMK3Rܒ̝ęО.&4m '4Sr+H.FS܎w44E Z3Ѣ5h*2g:Wq&Nݙjvj :w&E Z3Ѣ5h*2f4J= S|6@jL:5Ly~*2g0DC$PgQ@]iIp4Jlub^?w6LIH)!\J$KIK k7A Au}L,ɉ7sϧ T>lA 2g5h:(LfMGŦ `y g~j:PyVoS" (fPwGJ-'4Ӫ jP:Ʌs»?Y?GG*byz': 2g ~zMḘGi=2PӪ>/{<ZR0IS0LY*L3 3f#v`ف-0n"tyWvCtyBjv*Z-txضa-Q8lT43hhŊDl>tx|2`|@i83FCu3\~ =|RKrK2wO'<ēģ%eK'as  .Է$'qq*y'K)rB܊ #=M&%@]SnIfN TZR6w)#)G;zMբF L3+O2ٜ ,7IBq@Xxk0Pաi=#V&oD3)>t C Fi<"5FLȕݑȂJ 'F= O--,R2ztQG<]~4 =-Jқ0}KӧPyi7UZCoCm+ Jb^?2vOȗ%I;  ܊'Ad+0d1:Rx Gv}T w~BHAߟS ?Nݐr5vqps8k5 _ f\!%C' BPԇMfLL'̙̂'SP7Fs{xpS8൚1L~%>Wġ:jj&j'C ol' Qj)М'ȳOf"R3SSP39S!lT|Of>QLG9,4c5[Lj'CŪ jj@fAQ:6+K>N.+55R5WQ6,p1L늕fPPyOef/tάA;zSr+H.Fi=$4!\ЉrQUtSP̶yN.+32w_isOUwo3+7NROPpT+ff@0pNfAQ:hUxL)P)Fs CBsOf"R{6-P9& bTS!mN)3 Bذ'lY4b(j@Cf驨uMDt|/f M8B3WQ1-ItAfLk0[Gyʫwx&%sԞe*e2 93-iKfu;=q䆄+Z.J4Ӌ7Nw^0%sԞ\EW{j=iL󙖺VgSZ.HhB%I2#1cfu4m0Хʞ'V| Kӧ' ^nE|y>{'m+A2p&&fW>>m5  GWuq7u5w\?C0eP|nfbxm{zDIٮq򿘚"K"O2u!7t}m[οpzg>)w]KrK2wZ)#O># \ЅrKB%GsOSI39X84JOS6 .]GL N|PWBCzasbࡱSkbم͢> D4ŇCbw\DA[aa!u-,AhUw (A^B@YP(;.)wZ asbࡱSkbم͢> D4ŇCbw\+l>t7l>u]u3%;-܊OʟULX+П.C} Qn_]b@Y8fʳsL'j"F }ǡ嶕1/NB;?$K qO 'Y>}>7P|,ɜf稙$g} _G[oOmEJ`W+T LO ]"`':Q;n+&кuNju']L?W<8 Fb#Q6&Pӭ "wuÀ Fb#Q7S0C0MBwN0ޗԞ\LW{:$g>)uN%;'K)rZNhV\ ii7Vb!A3S6?tC ?$w'P]BwAm ];J#bsbAkbN̑G:2FŇŊn?ӶP9  .Է$'qq1]Lυކ> ̒ hR _] : [vضd>6i6,>6,Wsz?ӶP9^~T[YxDc2G*|.rfL0w;‡l<]*w%|RKrK2wZN} E7"f܎ЁrCB-%=M&g3Wq=9  36_Wu|=ڊ s*s3ᷫpD}]_+K&L)C O--)Ľ:u G!'m~V':@Q껮J穛cuw`Oͷ_';;cJdvz f :1RyA1bt򅮇])C Svo%:@:AS)L@mBW/s)<k&]itPye.uwX avR||-= Ri5WvNϨUЮe:'_lz[l\Ai=$4!\ЉrQ]1i+~lz[l\Ai=$4!\ЉrRGt8ilt Ki;o;cJdvz B-%MդЄB#q:V#I!6pЈNnU3!s3G嶖&0%yLNb/гi2((Nb/гi2(d+a!4E*n#.#'ـH`&N}Bc:"c'6byғSYғ# C ~ڄ_k`P&>t6ll"@L !'L} WpX?W=AHmWs$tNL/NOPԿE)ZbCg+w?&u/AY2bX 3$)M2uw e:(Fޮ$̧D&"90Y1 ;'sOYW"\D<'wOF<8Oq n͖%w2 &N'd3' 3|s7Nwb);>݋YgST)3i;mWp jj8!-YFc ?4hRx&: 3t6wSӲfP"a!Lu4/'37Gֆk6V2q2lt LBRyA)/Pyft3 &:3'3\DWpD)M]e:(Zz ,Ni7Jēģ%Ɣ ]nEi{&2WpN\ۚ nÇU]ւ覦7t=ŏӱEY@KCwb7J(>O2!2fa3W@iibB p(Pi 3)広ˉL)SBm7Pyq2p@NTh-f198͞3` a4ph-f  h1)M]Ciju2xvz I QcJ\ЮsE7"`e=ug%,m7RyS!Х* s+,.NL ` ?,/ nQ'giD?2 pFL? gO5_I CMq7d fynS5 ew!azW6<%q mӼ=I= :*ʌfS>4.eE)+b̧E OWp*Ny ҼA;=qZAr3IGh@! 䖄K&ۄUwctzZ& ʍNSJ>ʿᷪЂf sOԞdWNjaz_Ou?̈z"MO[4pS+f3B K<+50AB!A8(3 ?0q /'3:Ag 2@P͵ 2_B+50+AAPلަkp?2jne:(Zz+NisψN 2wN枳."R»n#Aqi7WNFf>9) fPIT8 f EacN77m#2U"?W>jjbL *g0'D $C3 jjPZ?`Fw tSAWqLE OWqe:'_sψN 2wN枪t.1 "WpR>2꒨ eSف(u >|qhe~CGJMC(!:W,A;z,^/!?wA^';])M]ҽA&uЎމ0D3x!KW$I῟.H?s4?c7"NhmAS2vZϟS'D7QqkWaJ_m,رI)h }IR\Iq*]LpY3g +Mȭ # \ЅrKB%Fu GCacn/Z)DIYBiaT2#dZry)WqS@EQ07]@BIWu@fLO8n$&,&N"?<ֆd`%UP6wVzέgҤJzX!yɎ+&|\{.HhB%IT7W91\[Fo6%G+O$4h*fN @$d3%y O}5ͩtLNf_ ɉde:&v Ν4N=PyB+&v}BӔ +x SJ<;3(;6 1;{q1:ˇοP!VP ЁrCB-%MN'bCz ;Пw*Va;ЇctL.Н\A\_OB|<xyKKչ~= guvbbyB가 &Sg`[c`&>P;11<(>ze:&v Δj0[+hu2691LDPxKn'g ,a2W=A,CuP!VP -Wp"N]BL}1>vbbxP}VS)3Nt4Wp s)+\)CLwӔ +v)%sԞUܖRW=I,^ =(ԞŊ'o U O.,aiCV1!NuXgnE?gP< 'AS2vO̓b`Pxؘ@N>>))v|@S3a,NpXe:$xH%fm2|̯=i7hP< +`0f Ɂ0HK6,Ry@P:[nQˉS@e:'_ = uҽAfoxg]$/,d.H?s.F?Sr+?0Acja2wNL=2y>0'& ϨLOLi '& L&G&&#@}BkPq )3NtP}m2u[aTtN,<:A!|+j=VU2 n.Nl;2LZ@BEWu6&'IfD©"L`5&N g3&& ~B&*&ot3,`3*'Ng'&-? TI0]0 ao90zY1NP*?gg Sr+H.Fi=$4!\ЉrQ]x2Mȭ # \gt>%w@%2=xJfx (aS@7G3O`< =|b 8Wp!O>7t'Y1W=L0'uaLDdЕ;ZTÓ۪,nQ?Vb_+лEԞcnG' 4 S}ަky`e:)KC>9nIfN QcJ\ЮsE7"`e=uu3(9nIfN RG9t=*`ًh%w29v32@9WјM&fAA߫ٔ J>)Nz̝:Ħw)#4v IhD(nsZh 8WpB SJO 'U3' O-cbrCc VXĽ:ٓ~D(rI? \=\'AdK0#) i!П:>hڕ}DhR|Цi!'i!#Q2 z &Q2 Oz fPWq36[4n̅yNؾi' fQ2O5&:>l]Ƣ[6 M>djL*2t|؀5t6q,@'BiNl8]Ơ Out|Wq+0uef/fN fu;zf܎ЁrCB-%M]̧DgU%sbɠsP̶yAW{w3̧E4j9;*sYN.ҧ BW=A,ulٓ}]́tNrT3-s1{2wUuwC23VgVd =U]%JA:2#1cB!ҳ:M6bym[F%2vOȗ%I? \=XRtw6Mȳhdb I2vaNu O?ONPty~348?N3gFF]lϪh (`o`~MT h}L3Wqot7i;@;.REd DӋ%')7bC!*y3|%J@yB9fFs{!*W|À5nQMMCLs C9I}C1d:%M>&t:<C`/$MMC9S!IN93 CAQNtS!# ȳOf>QL Of"Uw01C`0%MMC9S!l^|&i j) OISSQ0+PTd̂&t:l] *jj&~jDNM ^lG榡}j)Z|T4b(Ī^olI榡}MDtWr0Kj #0%J(hAJ<݄mP̶yՙ;'sOVnEi'䆄+Z.J4FS)B6f[:d3tP)FsS!I3Of>CAQ𺂩3S!#uM>  &PEUw't٩g0?E2Of>->nMDCQ2?Dtjv؁555EFL b;q,:O fPEJ 'NSP>̂:)Udf zMApgp,j@ Gf%KDofo4z̥]WLD%MC23VgVd v 枭W$"\i7WC}j34zˈq]Gef/tάAi=$=ZIhD(nP\: hArF8͞.ћ PwO;]~i9fu4m0ɦW嶕llNY/zt"8c$m++-J6',bym\oőm*v/1<Ұe O-s$bym`ebym\oő?'U _aK"l_^%a/K G2Khbym[KeK G2Kh,嶖dѮXlt#嶖dѮXlt݄ m,1-\q F4% Khʱ,YScm%`V[,I$ mY{Te`S"=YRŅk%ՉqpFteUEjZXaScm%M]&(b\ݍ`d.6Όc6:V jX=LQ K V%ѕCXKjưĹذ 1.`nư2]XGgFUZưĹذ k%ՉqpFteY-aX)l,P-mlt,XQĹub\mVleV;@.WIRŅ K V%ѕM]V;@s2bKT6+ K,Ĺub\mUs.YX#&,$c1ʛ}asv5Y`sv5ĸ8#:2ق,veXԴ`¦RJa+k 좴LQĹub\mVleV;@ʲZ+C)h±SYeBZ81*Xb\ݍ`d.6ΌYV&[0YeYVV[,ibZhT`1GĹub\mVU첬NekW0[Sv1;Hɋ -Sxد1.`nƫ , >07cX.K3*ʹ}U̵ `]* jn:i1a%o% d^ŅK$PZ+QK `^q.\b9[F] G2Kh%f4KQj Ɖj8Sff2p=GA K V%ѕW0A啎2bKVE7j /bʱ,X2`KX*X1GФ`4V$'kY# H]bCt1[iaImKX1c&9;Js , +hcKpK G2Kh,20ET݌u#%u,-auKQkJHQK G2Kh,6:\n20ET݌u\[Fo6dk KZ#^oUTBHµ0ڦZB!.#%es$1ZFcD^hU9Fic* ̌StpK G2Kh,6:\oő 1ͤT݌u\[Fo6ids^#,KXb]fyz|1<̒5 dfUKU*n:a-7TeKK$%8Wo{SA2[!*@ApA?gt<>o{ 'A^|AE{܉$#^!? B~_ K$2drʰ+GByQaaaFAXVb\9}FǏ]2lr% G/Hµ0ڦZB!.#%es$1ZFcD^hU9Fic* ̌Stj B+ Y# H]bCt1<4Хd%s$-F#-#эFF'.f5 LcS#bx;Y| Kӧ20ET5])G7djoRG Ok="lF%әV"*כԲD7֩`z7yllNY/ztUʆ85,-M㵪X=(z7zdѯztUʆ85,-M㵪X=(v1Ճbĵ(YRŕ-,YPARŕaiCV1깄m °KRGc+-RʼnkQ1 l*ZX*҆cs mA`ҏV VZc eKTeAKU X;3x! -K Ok[iXZU22v6ZiNcaemlcbŽ[iXZU22;C-VA,Ҝ*ZX=Tz0('V| Ee7caImK%1. j[iVV"*n:̒:YRʼnk KZ#^oUTBbym[FUʛs$Te``cbrʥ%1. j[iV唆La(c1-,YX,+-Rʼnk KZ#^oUTBHµ0ڦZB!.#%es$1ZFcD^hU9Fic* ̌StpJ6',1Yi%[V"*n:̒:YRʼnj6',Y%``K%1. j~&L'S/ LZ2P=S/z_/!_[_1@L*@Lebe=S/(LީLe!_z_Tz_~Tz_heCLu7e#_*=S/eLe(LeL2T2H~QT_T}S/72reTz_22S/8 _2?TMGe&LveeW2L"ez_2eL25Lީ!_Ge>edTS/TLjz_w_T毪e222!_L_L(L=S/2X2Y7eః0S/z_DTĄT~Sz_ P=S/{דC"$?rGU^ |(#xPGA'?K|bOC? 3/NAg _48B:Q? } V{F?![&2[PQ?ȵmPQ?c(.bm "? ?v(\SO`mm#(05tO ?OAG,?*Oa/AG6{/PQ?b;,ZPQ?PQ?'(O-E0YPQ Z8 ?omz%Y ?oa(0~1K? AGPQ(K ?o+?= WKi<(ʉ=4~vʉ'Al|F+-'}o‚FQ7:𠓶TMPJ*&פʉvʉ?*( 6lQcl>*(66ʊ?[eEmeEqa+l6ʊ?lʊ?yr}l |nlo]pUteEnQG7㭲r/eEeE+eEyʊ?lݲCOeE$񸃶TQBeEkqlЫ񸓶TQ@ rQGmB7$YjB Z**( nQG^4lɅ^*(`пlɂ C=& Vm2 Ym3? Y0 xZ{TQ|-0jQG_ AQG D=&"Z"1##lxZ&m] IeE(2ǶTQ_eE(

/8:0,K/_[# /7_/7q|?-/q|? /q|?!7q|?8`&W8`K/b8a_[т/FA_ _8 ?K_AOq|?u:&/1/_!?S8d_!4`C_FS_q|? 8q|?8##q|?8D/68@q|?@88 8D'/k8bq|?S_& !Oq|=n//ÇF/q|=npсq|=npс?ΌS8¢_zΌ%_$?_[peu (q|?t` /$t` 84с_q|=ni3T/'q|?2//08s/?0 /?'q|?[8,ut`_}_[т/8y q|?8y?q|?_8x;/Gq|?Ooq|?*/b/8Xq|?.g8X?._hMAq|?pG/q|?5/_f8Po  $*ق& .=^2"?A-\?D8AcDqy^D۟-3H.#f ¼H&`* -w\Q y^ #98MM,K-QG|`V$ ljL__pq8dE Yol?D8Aqx7ț/+țs`]@cńylr?U/C ro:/ dE&Dqy^D۟!{eI a"6_emKE&Ow^ P^ &-B(U!eo* Y ICo]]_=Goǟ#_q|?'q|?u_8G[_/ q|?q|?tq|=nh&zDΙt:d_[3fq|=nGL*ægLy2, ?Gq|=nh?zS__[:03O8XH뉯_/q|?_XF/ф`__q|?zމLq|?.q|?_ q|?C?_E=/q|=nF /___g_Oq|?_/#q|?t 0_c8 l,/`5_[HS__gq|?A8(8( Bh倄ֿ/q|?v僰%/`}_Q_ #/倈 ?D`"_C_ ? . A Oq|?Xb?/g8,P/@ ̅?fLS8,/q|?YC_d?/2́q|?Y8,Л8,c_h2/4fC_l8,c`/6̀_lg?q|?YW_p0/9O;_[CKx췅/%W`$e|)?-Ȅ|[9T&g8? h8^ &&1彲P([0\υ uo,!wC<|BfcY5^@9G^US3c^Ucʲ"? , "n8"((%2o?h򬉲Cțsv[-dylrHA-'/C;{e/pyAG yoh#x򬉲'{EDPQ-LqyVDGꄬ[o"̈́l[]u3?ø򬉲 o9D۟o8[0\xK @)"(s-,K<|BfcX3?ʿHb,qyVDQ⁴qxA#xo7^W6륖/ قp bq"(solaU =/ aЫqyvgqyVc^UF?%/*Ȋ P6//ho7^W oMV9m^U6Qde&2 olb ; 

)DP<o&>yʡ3?Q,:G2"? ,: _"n8"mxo(<[0\ ɼP6 @WDPa[-\_˖I/qz<Ѳx!eoğ*YH/G`0^2\O ,N/G`z9v%eoğ*XğFxIr߉?T%¯//~$PF./G& /~$PFqz?2^ '/~$PF5/G8P !)!Lg\.倍7q|?XF`#c8,`"/_?ð/?ñq|?Xva`8,;:e?863q|=nΙ_t:eo8æM:d_[3fq|=o:2_[:f_[t?8)/8掎/:054u q|=o4Y,`u_ozjLq|?X%`K/фp/qq|?a?/'q|?Xva$`./<1_x8,8Mc%?/ _d $/!8,q|?X< g/>hh __kzѣJ ?Ȁk8,o!q|=nGFd@ /"q|?YȀ?_DU_q|?/͚:+/c8,<凋凃_;/8,<aX_,oq|?8,<Wq|?z)/8,/)/6q|?_5__ M_ .?  ai_q|?Xz{8,=o ? / _4?+_4 /dy_`% q|?8,_q|?X `&q|=nF '_bO$i--`/ֿ8- q|?P./q|?Py_;/Tc_`& /_Wq|=nF /88с_ɝK8, ï7q|?X `'倜=/88,//q|?X@a8, ? _q|??`*-_hFh@8- $ /B!8-Ђ?q|?Z_Gq|?X 倭OT;/Xq|?X_`p/_@c8, q|?XAau(pH#ev[0Kch|Ff Ā/ Cq9 $彲 ?ǏrLG? ~UKC^@z/ a =qqyʿcʿ%/*"-_XA#ʿq4qyVDQP$?X(o7^W6F{e>[0\ 'F .G^2"? [/眪3Ʉ^Q qyԎ/ a#/*G8 Gb8"(c,V2C/pyn2- 0/8:0,K/_[# /7_/. ?Z [?""q|?X/?`Z`- ?`-_ȧ8,g_!q|?Xq|?XB/8,!`ΌW8,`c_[pE\ ?\倸q|?X8,o/ ?`v?`v;8,-/ :0UO`1/8t`U_87CN:03?ba q|?XC?N/LjC``a* *%/8HQ_֧q|=npс??_://?  A8,"c8,@8,Aq|?X A_"O@8-/_Gq|?X /`2q|?X W_08΁q|?_1q|?8w_N? 8 )_0A/8 8,`/$/< ?q|?=q|?Xq|?XG/8S_q|?X/8,E_샿o8, _O_T_3_r 8\K/|_8W_//| gq|?`_AOq|? /0 ;_` /q|? ?q|?X /[8,'8,_r*/ȿ8,c8,s8,Oq|?X w8,џq|?`Rq|?X 8,BBGq|?X!`q|?X!`?_`&$/8./:_`_8,v v7/ @_ė8,`/ H`"/<2/<o8,8PٳCCx췊 bylr\@ĸ+`q9#彲眪3֎/ L qy,X?%/ `q_X8<,#ʶP"?zqyWպ^U1u3?8"(|_Q"n8"mƁ?-,|jG/[R߅cP _C ^2"?9T&gdɄ#? # X!#&/ `q_X8<,#ʿC&/*@f~8jL1YC7S3ʲ"? ^ `ߩ^ &"ro?C]^U6Q4[-%D۟Hro& |lrX +7 /co/C@$>yʡ3?Ø`8AWx7?cDqy^D۟%(02>[0\ )]Xk /hL#G[<|Bf~XG?&|;/ XC/ ` `y^@ oS3ʲ"? ^ `G^ &";-, FY qyVDG<[6-,&lr|JB`E /a#DP㐓E<|Bf~X@/ L hcg+/ `ʷ٩QYDw/CG|?򼉷?&k-,y0/q);`)DP6[-X9T&gqy Oqy,qya8 >/ `ʷ٩QYDw/ |?򼈠,[ FY qyVDG-,Mn#eE``9&$&~a?/B  »?Xgj8`<Q"n80L-B2^8o*?.[G`-B1)ON: !)!0g\.xx`<x`<`<q|?X/8,Gq|?XBe_8,:fi*tq|=nΙt:eo8M3Mi2k/3O8S/3?/:f_[`i_?sGGfizсF8G\M,q|?:/7q|=o5N&k8,%Hg? t8˃O8Ȁ8Ȁ%_ Oq|?X/q|?X BOq|?X @倴`r)/g_ o_8,! /Aq|?Xq|=n/:0QoWq|?X (&/!8,_`C_`/H/}z`0 8,t`q|?X-/86т?8,K_ _8,< a |q|?p8Y33/P늯_g_;/8,U_[сĿ||?~?~5`? ~?/`?$/`?7q|?X__J/R __` q|?-/净*/TzC_E?`=(?D`I.?`@ p9/o\`@ `@ >/L p&rq|?X@ _}__[L?`Aq|?XA8, '/K?`A0$/q|?q|?8?:?GF/P(q|?X#k88l`g__!q|?X 8,2` ` ?8, 4` H "/Gq|?X`8,?ÿ@U_92?$2I?"`D"S8,8,A_Aq|?X8,Y_@y_@`D `DA?q|?X8-/t{_ k_8, <`;_`__ A_q|?X%J#QJ!8'x췂`LJlr V%!'@)(:/C[-ǏrLQɄ#z8SF8`oX,FZʿJG#ʿJG`>8"(H,{8ME)eP>8ztqyV,1^UC\GdE"形P(򬉲e&? &b[rLHL3 9/_"(H05oP|!G|?s<-B"qכ@_Y I?w,_q|?X%8,Oq|?X@g8,5/)?q|?XQ `Ewq|?X@)_PF/( >tq|=nM:d_[3K8L):fs/3O8S/3?/:f_[`i_?sGGfizсF8G\M,q|?:/7q|=o5N&k8,%Hg? t8˃O.Q_>//|q|?Xq|?Xq|=ngGfg_[_8,q|?XK_f>W_>?q|?X/|ΌW8, @ @_`8,__./`A?q|?Y/%@ _`8,Y'q|=nmcfX8,ğH3/ӿ`Z`Z _;q|?A8,L 0b` 0?/d_`FC_lA/6o `F8,O_`9/@ o?D8, :0Qo'8, A+8,28,"Ŏ/!/*t`pq|?":08q|?Dq|=njgF/+/_`Jq|=ni3T/PsG -_($:04k8,`8,h& ğ`_8//*/M_[с@O_x8` (/ _xT^^A8,F/!/'@8-Q_q|?Z 8, '@8-?_@c_q|?Z _ !_q|?Xh @+/F'/dq|?Z0[_ѥ_F?h?2?aq|?h/#c #/ 8`Aq|??!/|q|?81/p5/|oq|?$p\O\F/q|?"\\ _p./@87q|?`&/D=剀8,@!__zC_/U_wq|?-/` ?р_8,S_%7q|?_/_N|g_8/oq|?_|  oq|?\8.Xq|?\8.XA_,`[-p1 I4qxˊcDqy^D۟ 'ea2ق(P B?pq9{e\'8A)&/ Lqx7ț/+țse:<`(P E`$xQDPo?A9/ pøDQच8A_|?򼉷?C{eN /-._% IlHqx8Ȋ?-ȿy^ t:0Lq|?Q_qy˅qy˅~O^@Ȋ G?U8MM80{e/9>[0\ġ@ -# # Gol?^p u:0Lq|=nΌK8.78ɄØ 'qy˅8qy"(RM^ p&qqx7ț/+țsp5{e'%bH^2"?' olkɄØ ø ' I4qxh˃o7^W6 [5|`üJ GCG. A/C-iqy"(RM^ pZ6"8MM[-N-._ag˂"q"(s>[-_p[ØDQच8Aഁo7^W6췶[ 'f `?pZBDP e0s^@q I4qx~ 1"n8"m[ق'Ġo?pZ|HG^2"?(+{e. @!s^@Ȋ G?\.O^ && egPق(& @,/\Ăqx8Ȋ&彲i,9/ dE I.".qx7ț/+țsEyolUOA0ZHdx/CM?&c\8A)&/X^ &&[-Ncقq(&<-`$2gĤ"(sA[-2 cDh%Yho7^W6섌[/kf ;ĠG.$%DP roo} 8A)&/ |?򼉷?iL['f ;Ġ,/\G/C-pZØDQच8A$. #Dqy^D۟!eῴ#e%A #-qx8Ȋ?1p8d '/ dE I. q"n8"meqv=<`ÜJ C #/Ceu39/ dE I,V Dqy^D۟|[NقbPL?X _ "(s[-ɄØ} 8` '/ dE I. #@/pyn#彲Nጶ`X) #x& q"(s{e&c7T&ø+8A)&/)o7^W65'pCf uA0x #%X,/\Z.8dE:S-Š9/ qh!~2"?$%F/pyn:o7OA0|Vo,/\ZB[-qyˋA 8A)&/wB/pyn:yol9㠗/>%"X,/\Zq"(sN{e?1.`Iw^@Ȋ G?\["n8"m oypylrA0 |V˘"(sCl[[-/\8A)&/B|?򼉷?t'eR <ق(OX _%G^2"?0-0s^@Ȋ G?\|^ &&)/wDw #0|PO^2"?0\cDh˘Xu^ &&F[-ߖ/sDhH"(sا-.`߇1 I4qx^ &&v[-G!ق'Ģb/_X _)qx8Ȋw|['?1.`߇q I4qx3s^ &&vo b6[0\bQ5|V?qqHDP㰓Wqyˋw8?({e oق'ĢaCG. /C&{e/a8p8A)&/."n8"mϏo )/XL@X%˂|RO^2"?>oC˂k_q|?@W_ A9/ p\_q. 9.[GH eo*#o.[GHwBrߊ?T' J|rr\ ‘A/~(P)'Bn_˖Q?Rr#o* ql-B"y0/~(P)rߊ?T' @Arߊ?T' A/ɖrߊ?T'^L1rߊ?T'ߓ.[G<;rߊ?T' |uON:*c!)!C?- p`S_ C/˃ G/ˆ8. ?q|?\0./X长zY2o/6t_[l_q|=nfq|=nL*ægLy2, ?Gq|=nh?zS__[:03O8XH뉯_/q|?_XF/ф`__q|?zމLq|?.q|?W_ 8.78.@?_?/ 9/ˀ?6oz9Pq|? )/ˀ 8./1/ˋ?qxPI8./_K/˃8, _" 8,G/8;_!q|?\pbq|?\wq|?\_[P`Zpb?8, Z/w/?@8-=/ˌ8.0  q|?\8F/6q|?8? @%_E/ˀM/;8._a8.c_H8.m_[тFC_@88с`?N/AOzF/89C/2/$t`H/Xc(k8.?q|=nU/:0Qo?sF )_6q|?\7q|?\ u/ˬ/?8.pO_8,/˜K8/P8/P/@8/P86сu/Hүzj-? t(/ˀ)/ˀ1/ˀ:Q__p'q|?\@_8./ˀ:pp7_q|?\q|??p\r2odA/Aq|?\_P#(?5_$q|=n΁_ov[(G/Q0#x*T<qx8Ȋ yol1>yʡ3?. G?&|1.Hq[GdE 8AW^ && 彲I a-o#`Ȋ Dqx^ G^ &&.[GD7Y I?w.H8.H?䀓__q|?\pdg8. ?2c8. /˃!8. _@o_@/˃ zi$tGL34ttq|=oCLz*tɯ8gL?zt:eO88t8Pq|=o3S_偧q|?(/_[t`ksgFiziq5X>/8:0,K/_[# /7_/. ?ð_OðI/]_x*/W8h>/F/``Ao[_ 088. G_l#l@/ˀ?p0/ˇv/ˇ`8.k8.C_8.0_q|?\`%/c_ ?8G_(?@8.Prv""+ _d{_f"q|?]I/q|?]8°m_h_aF/Wq|?]q|?'8.?8.yʡ3?@Ģ9_/ˇ_pp;/ˇ/ˇ38.8./~pq_8.q|?\??p?p7/˃p/'q|?\*!/P8.=_?p' _q|?\ /ԙàCx*0(.\/\ !^2"?0^vʿ1YD|qxdG|?򼉷?[-Bc¡yl%Cp~!B{eˀ{~hAqyˁ8% c  (?/ p(x G4/;TR/*~wĪGp( |JqyVDQ_^ p(qx7ț/+țs@{e˄ Dl`v_˄lJ*oC/.DP(H{eˇ_5S38.?1_\ cʿ78ˁB/.O>/*9SF^U/p(.x]^UA,?\ E/pyn|[?(Cf 6ġi\/\ Ģ4qx8Ȋ@k Ȋ  p_o7^W6 olp < <`.)ġj W\/\ GAq9ol`uN\@ NQ 3_qyW1_ GdE .wDqy^DPQl[q_\@WĠ8"lA[-XM  >2قGġh?X_p?qcb8q9ro d?._p3 fq|=nF /qq|? 8?:q|??倘8`Zw8, @8, @8?r/$t`/؁_QzO8./,t`pq|?\ ?GF/ˁ?8. ?8../ˁjԧ8.!/ˀ, p" @8.A_;/ˁ_p7w8._pw_p7/ˁnn_ p `D`Dwq|?X+_@_@K/t: ? +_ k___q|?g?r7/2/x&<J (P冡8, u L Dlx%1 5ق%X]ˁ$彲

yʡ3?]hG?@(\A8.1_\ ~K^U5ng5/*sqyWO^UA{^ bQ8ME形 S5cʲ&?形;"mc/ 0`X.'#/C[-XU j@80 &!?@ R.L8fcʿQqyWպ,qyWE/*oS3qyVDQqxJ{^ && {ebBag+췐G/A{^ q^ 0/p@o*@-`yO O#rߊ?T'&Y.[GD7BRCg\.DpEp_h8. oD/@8.?/ˀ4? _p:_p:K8.Aq|=o4:eoziLLsfΙ_NO/X8gL?zt:eO88t8Pq|=o3S_偧q|?(/_[t`ksgFiziq5X>/8:0,K/_[# /7_/. ?z*t`f@=__q|?\_ ?tp:q|?\8.A?8.E@$/˄pq|?\ ?Aq|?\ /TC_7q|?\!q|?\!8./˄0'/˄0?/աт/ˁc_[4t`iOp<sK7_[сxzgF_8. 8E/ˈƿuMpqaq|=nngF _/8.#q_8.#C8.#g8YC/˄@W_q|?\" y_  7/__q|?( 0/˄@7/˄@>/˄@ (q|?X=8,@!_=__(8:/B?q|?\;_p?-_8.q|?\?.g8.FN/p5/@G_p ?E_톿p 8q|?\#q|?\#78.#_[тƿ#`I_/#q|?t _0!/#)/d 8Yc0zGF /ˀX ?s)_:09O_q|?\#q|?\#gq|?\#g8./ˀaq|?\8.4/ˀ`"2?p 'q|?\ $/ˀk/ˀh,/4 __3-_q|?\ _0?/˂/!8.8.oq|?\/ˀp8p/q|?\pq|?\ 8.B/ˀp%8$M_ !q|?pc_AWq|?\ g?}_@_pD8.?q|=nf΁_ 1o, lrXA[^pDP #{e >yʡ3?. G?^+/ r~G^U:Gu8@5P8iU _\?m^U:p8ˀt˓dE/pR8MM?[-o䘐fr;-/A 8A8pW Dqy_=`ON:-JH?w  :q|?\{_!:op/ˀx8.<8.(/ˀx7q|?\ /5[8tɿze5*t/4tq|=nGL:fi*ægLy2, ?Gq|=nh?zS__[:03O8XH뉯_/q|?_XF/ф`__q|?zމLq|?.q|?pi_[_?/ˀx"Rp_J pq|?\COz5O8,_?p/?q|? ?,,G/ˁhJ/˄(/˄`u:0Pq|?\5_p!pH k8.%`"q|?\@_"/ՙтjȄO_p Fq|?\d(s8 #q|?\g8؟q|?X+/n0?/ˀq|=n8Y3*q|?\`W__Fps8.0:09O$?pI#/˂H{_$pq|?\@_$85/8 $B@;_8O q|?Z0>/8M_8P 8.AWq|?\8.E$HHA//?,//?p/ o 8 d#N K_8 s)_  `A  o8, _ a8sΌ+_ 8%88ppK_q|?\A;8 _p 8._ O <pp,/_`,/ˀQ_h__l-_p?pq|? /ˀe?p08.G/ K8/q|?^ 8/xq|?^ +/_x#_?8/_?xx/a#8!88 8!, C_)/K_8!,!o83_!/_[CoY?(q-._A%`xW!,DPnol ǏrLZ80Q!,#zq!,_ʿ? `K^U%[Gnq$qyWպ뉣ʲ"?G?B\Me^ &"u5MO\S^U6Q@ ohMIro ?5[0\kQxE ~B#Gox* pw^@.'/ p"x5^@ Q ڙq_B\3c^U%\VfYDգ,G|?򼈠:o%8"((N[-]#M^U6QAk-. ț( %"m@{eˀ`.(, W^__PG^2"?C[眪3.%/ L  c\\qyKohL8!.1/*O^U5ngK^UA-Z8AG|?򼈠)/h򬉲@{EG"m$e]E w^__|1{e ?ǏrL80\5/ qp!. 3?ʿg8K\VfYDգ~G|?򼈠G%8"l<o6x Yole+xf @`mUK["(s=eo眪3.%/ L  c\!.Oh qyvgqyVu3?i^U$ qyW %/*ϳS3qyWp: [YDգ,V 8ME@&形E/Ø򬈠-,!!dMYohrMYohr&"[±/ BUH@s$q"(s>%{e9T&g\K^@A.?!.Oh qyvgqyVu3?i^U$ qyW %/*ϳS3qyWp: [YDգ,V~:/pyAG~o~dEQ^[-X!!dM2o"[-XD۟DC{ebBag_e j/BB= 8M ɂF_˖Q?(dž✿-BP ^L\ @O2\ °c?/~(PȜuhJH+L˅_ /H@ _'8!!8,b?q|?Xv,/s8,;$/? $$"?q|?B$_ayʡ3?!Ʉ!(e!8 #yH/ n#/* F_B w8A*8Ax|@/*tS3򬈢dC/^ &" [-B S"qyVDG'{E6olπT%p@E2!ʟ_Sqx8ȊŒ[x*#G?&|\Gx!"8S38%/!ocʿDAu3?a/*Ȋ D8ˀȟ8MEX#形D(򬉲.oo9``9&$&~{KE"qx ^\M^ P%qx7ț/++~_˖Q?V xnGO-B xn_˖Q?8ьqd%$?&/B /,t/:fs/CTsLu:e9XbzٚF86t`fq|=nс/_8?_,_[S /8, :0.]?Wq|?B 8 )_?0 08! 0q|?B`8!;/@l*/3 ?x?@$/Ey_[3/˅ /Ag_8!- =/6t`1倸I_Gq|?bq|=nhсb88!  (/Y_DzSg\M`?ԙ!#v[8 G/MĦ??2"(sO)>yʡ3?cB0% 8qZZ!gQoƱYDi^ p&+/pyn6[-XU#f #ؔJhB!yn8dEo7q|?L/|q|?}_+8S_q|?X|倔0 J?`&倚,q|?X ?g_?8, Z/w/?@8Aq|?@8YS倘m_q|?X?_,o8!Hq|=nqC偼s:08q|?X_`nN4/8{_p`'q|?X ?`(`(9_%_/ ?Gq|?X@ /P?/68- o5/B3/B_hO 7q|?Zh@/_Є?Vc8,j倬_q|?B 8,/8q|?PF/ 1_8!Pq|?B8R_x췉ق!bP^~`1*qx8Ȋ5{eD>yʡ3?4qy O!G6i4o^@YI/  q[3?f_B qyW k^UAˀ(o7^W6[!pAQ /Bp^2"?E[-眪3@/ L qyT _? ( ?n`GS38TƱYD)/@Kqx7ț/+țs-@1<`.?Ġ`1&%DPײom<|BfɄ/ p`)8n~!G?@I8vg8:_B5/*Ȋ Lqxߵ^ &&olI av[F DQ c,V\B/Bh$|? Brߊ?T'7ɯO)φ-B"qכ1Ő[.Cq|?BiOi_H@Q_Gq|?Bh @/M D TC_P8UCfq|=ngL:fs/ӡ+2o/&zމ34y?z3zCiΙNq|?X84tvfq|=nс/͝_[t`oyu/`8,#TfG//8_q|=oD&s8ˀq|?O8ˌ4/q|?Xv?ðC/'8,;wq|?Y8,ğg?k&o8,D/Uo8.8!T=/M?ᘍ_1_/`+ /$t`:/8?q|?Y8.p///_[ٙ늯_X D/XS B_q|?CP__ ?8p _d,//? /W?q|?B=_z᳣\d ?.'q|?]_ 8h& dd2q|?B7q|?B_q|?Bv  Hi1/@t*/  :./@uOX/I85/I8eq|?B q|?B _[HS@8( ? f /6 _`9/6 +_lz 8!@893$:06q|?BJ>/HfU_[6t`m_fq|?Bq|?B_8!5_/_ __/Fj#P_@+_ P3/F_q|?B/Cclll"!! !"!M/Aq|?B K8!4&/A8!8M_@*?q|?B8C_N/G'/'r T ?m_Cz3΁_ yoT /-._ˈx0x#?"(s o9T&gqyaqy,8`^@SqyvgqyV53?g4MO8"(up_8MM"ro  $Ą0Ɓ_e,D^ c0y`a^ & o*<)Ƞ~x췖s(.(G߅(\__.'A(!)ȠCV!弹oc\q Jr(.P^[˖ 6xE8%9C(¢|-'Ȑ @}Q>[˖t_+@;"t1(!)Ƞ@';-AG@wN#弹o\(>;"pGPxR 2;-AG<)o.[W)y(?8%?^ ;-AGuP-x Q/:|vEG"e [e(&P>7eow ?OȠ\!"e7);-AG2o.[˅RdP~.(!)ȃݻ␕o* ?=}۷) Yo.[' ?OȠ\(!)Ȭ2}? 2;-AGXd~*eo\(>;"p#PBS> ev["}Ryr.˅RdP~.(!)ȏ0TMo* ?;"pF!A O0Co* ?@ `-x"p^t!A NDR><+'xDR><+'yr. ?OȠ\*-ߋTsyr. ?OȠ\*o_⠣T#x \5)y(?*'x y|-)y(?*o2 ev[P#y-xQ/:|vEGP%yo* ?@A[˖p#p^t#PBS2[d$v["ex;"\Gkmv[km弹o¿.KΟA.(!),)6v[_.KΟA.(!)șz[e(&^m ?OȠq J a[e( a[˖\ Q/:|vEQ(!)ȝ@a-ߋTl!弹o.KΟA.q J #ev[ < 6[˖\g˅RdP~ !A O`x?;-AGX<-ຟ\(>;"\q J Fx`?o.[q.KΟA.#!A NDRк;-AGt.|-2Gq Jr#;-AGGt_p^tp"rCl~/PQN]m\(>;"\7!A NDzGo_⠣ȏ@RR-x.p^t88%9 `>;-AG~-x. Q) f̼ 1 sKweP]h.Cg@zΟnaCg(ogg)ntw 4}Awt `vqfi4Ay >M?Z(y7|ֱ@ZǛȚl1}cwO6D:șz}0@"e:}ۺ΃V&^`a >&^]ݻ<5o"" H" Ĉ1"" `}DL7bΔ2b)n켊 9z-ݗAv4IdVet/yƓI,1"" H" Ĉ1C0Δ/:P/X(.DEf^KweP]h|4Vev^E}֍&Yz-ݗAvu0OM$+2[/"E\>&YbDD$DAc*&:a( ^t^KweP]"g"/XeP]&Yz-ݗAv߀i%$DAbDD0>bc1yҀJx1e6)"g"e6)bDD$DAc*&:a( ^t^}LLd-" Ĉ1"" H"  TLtp/:PC/,c!]&r&^i@[]y0]2DD$DAbDD!nJ(eŗRϠi&r+2[ 62I,̽b}MM$+2i8mM$+2}i4Ȭvmi4Ȭvi:bDD$DAc*&:a( ^t^Kw>0̽b}Ma K"" H" Ĉ1"" `}DL7bΔ2bEw^x)tNDD$DAbDD!nJ(eŗX9/X@g<@i&^<!șz>v)}$'C2[K!<R_@D)n/D 72[K!>o"e0 6y9/Yn4Lb}MaDa3f^E|r&^ݙym!șz-ݗAvșz-ݗAv߃"ev^E}ֲ&^Kwy,<ȠoLb}MLcn>y/X 4D)n4 4D)n}Lb] 4u쉗R@:D)n_t&^@lu쉗RymZ(:72[/"E\așzȠo y/Xn]P>>&^Kw۶y9/Xșz-n@șz-n@ }ۏ&^픻}g}p}2}`o&^Kw>ϰy`ybDD$DAc*&:a( ^t^2(.u&r+2Av`xïM$" Ĉ1"" H"  TLtp/:PC/,b]&r+2EvȬ(n 4IdDAbDD$DA ^t1y҆^ Yy:~ 9ݞv L<XvldE- e2# ?vq["e;|w>>~ e2bDD$DAc*&:a( ^t^Kw)}$'BDEf^Kw)}$&I,̽bRHOi.4IdVer"By&I,̽bRH`(@fI,1"" H" Ĉ1C0Δ/:P/Xu&r+2[aZ4IdDAbDD$DA ^t1y҆^ Yz-w<&r+2[y&I,̽b}v.@4IdVesi%YRϷr6i4Ȭ)nۼ돐i4Ȭ)nۼ/w&YbDD$DAc*&:a( ^t^Kw۶y$LVexgBi4Ȭ)n;v_u|i4Ȭ)n;v&Yz-n@4IdDAbDD$DA ^t1y҆^ Yz͏?s.&r+2[ci%Ye.vlxAw\M$+2}`ohh0UJPي%IȬ)n46P>uir+2[ 6}͔q|i%YRϠil|<٤K"" H" Ĉ1"" `}DL7bΔ2b)n46DEf^Kwul|}M`fI. }#(2+Yƭo6"o <ݟȊ[(`v")n <ݜ}:}ن"u t;D}Gw.:șx(.my +Y mE-̱v$7> X+=# dw2y >M? >Ö4q߳r'O{0OE-]:>>M?4PỎ-"gO{0OE۾D)ny/ h}_QS 0` 0` $,` 0` M5L0` 0` $` 0`0` 0 0`0` 0`F ' 0` 0`MS 0` 0`"ALF 0` 0` 0` 0` 0`IUc 0` 0a# 0` $` 0`0` 0 0`0`8 ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????z}0@"e:}ۺ΃V&^]ݻ<5oe:}ۺ΃V+2[/"i4Ȭ)n_t&]z-ݗAv4Ivet/yƓI,̽bȠo@iȬ)n켊 M$+2[/"E\a4IdVev^E}֊θ}͚M$2[/"E\aW/X(.i4)n켊 q|i%ٗRymZ(:6i4Ȭ)n eymIEf^KweP]4Ivew2̼ K/X(.M$&^oz?}@B"ey֟ne.șzǘCػy/Xxεػy/Xxεf^]0 v^j v&^jE]20E]v>0i%Y f/DM&Yz>v)}$'Bi4Ȭa3cM&Yz>v>0i%Y f;v0i%ٗhgBi4a3f^E|M&]z>veP]0i%ٗ f4M$2}}Ma K/Y@͊_@ M$2}RHO0i%ٗ f۹M$2}}a K/Y@͠va K<3ym3Fg0pg4`z9v`z6npXx:$-=o-`z5@ ݷaȬ)n}ͫYRq|i%YRp4IdVew\aW/X6f^KwuiIf^Kwuli%ٗRq}\̽b}M~ K"/X@fI,̽cn>fI,̽g`a`xïM$+2`xïM$+2}f^Kw>&]z4ݜ}&]zM>^4Ive; 6^4Ive; 4y\̽b}Ma K/X@gBi4Ț()=ND<||"esl(: 4Da3b"By9/Yn/Dr&^Kw)}$'C2[K!șz-ܥP>>&^Kw)}$'4bLfy6>0"e8m<RϠi!șz<lȠoaDq۳/"y9/X(./X(.dLbȠoD)n eymRϠi}Mo"ew\așz-așz-yP}+2}2[aZșz- aDvm2[/"E\>&^KweP]h|4/Yym:Da3cr&^ݏs!șz-w<RϷ|RϷr72[@RϷx !o"es v4D)n;v0"exy/X(`y/X(!}qD}`ouoesl(: 4a3b"By;/Yn/Dv^Kw)}$'C[K!z-ܥP>>^Kw)}$'4bfy6>0e8m<RϠi!z<lȠoaq۳/"y;/X(./X(.lbȠo)n eymRϠi}Moew\az-az-yP}+}[aZz- avm[/"E\>^KweP]h|4/Yym:a3cv^ݏs!z-w<RϷ}RϷr7[@RϷx !oes v4)n;v0ex{/X(`{/X(!}q}`ouo"/Yym:K/Yym:K"/X.Wm\̽b]If^Cp]ڽz w"fI,lXzΟo-2wP>;ȟn?g2t}n ̽bRHM&Yz-ܥ@p]i4Ȭ)n/DM&Yz-ܥP>>&]z-ܥM$2[K!>li%ٗR_@ M$2[K!|}MM$+2[aZ4Ivew2δi4Ȭ)n۹M$+2[ػeli%YRϷsIEf^Kw><٤K"/Xn>B٤K"/Xn4IvesM&]z-w] 6i4)n۹K/Xnli%ٗRϷx !li%ٗRϷx ^M$+2[ݳ!4IdVexe/n>4IdVexfI,̽bl|}͚M$2[ݳ!4Ivexe/n>4IvexfI.̽bl|}͚M$+2[ci%Ye.vlxAw\M$+2}`oθ}͚M$2[ 6}͔q}^̽b}M`e\a4Ivesl(:6i4Ȭ)n}͔ili%ٗRp(@g<٤K"ﲄ}Aw<"e"(eDxP#ǐl<ȏ6y#g 7l "("j6l"#x|xP>>DRH @(mL nEaA> dGy N>yKw>Y4lm#Nn?t dE-ݳ̉Gw.:șx(.my +Y mE-̱v&XKw"CqՏ"c">Gy_tȜBDP9'4_tȊ[>M?g@z]:"tw 4DR߳lY4E_tșzﳑ4P@DnDRfi@wȐ4z-;$ ݞv E- dG)}D#|0k? lo$ םam՝at֝a&3bm./usr/es/lib/libclstr.a$$ 9.7a ,128:;_cderst0346@AH`filnop $(-.579=DKPTbghmux| !#%*?CLNXkvwy ")/GJOQUYZ[]^jq{}~+W X }S#mmmmϺmmmmmmmmu"fmmmmHmmmmmmmmmgљ#Jmmmiummmmmmmmmd&)uFmm[mmmmmmΦ/_!bpw:Qamoy$j뮿13mmd%Ї!) jq_N.z/chc"r|v><č%WIf; r`8(N_$? rc3vPj+Kgl?E~TOG?I5Q}W&4~eJ;龝5֠)wDCꫭOM!C)z&t"+rcb(Y,}NZTgR@b[,ue?&3?Sύv谞INbVeW"zĆv3c}WJoM7֖CꫭO,罹I:wӾ& U~7Co)z&6SjVs-OD,aı\҂'=f>}Uu[lS|ѝ4ϟUɩiKɩ}Ly5,sE<*Xɩ}Ly1jN 5<*N3I9ǧ|LS iQu>-S|Җ99>紒sΑ0PMJ;龝5֜J`| Q:|!gψCN#y֕*oSjo}J!oNJoNiMcs)oSmMfwԚPMcɩcSaJ,srd>?S|gGDW(Y,}N5o'2r>'hE :f[Mwөjo#G}AC ThCzOMٝNFPs o)éiQ|OSl~|NE|oSo&X,]G|NЊ Ezl퓇zĂ(C4))ThOM}96|BӾ@W>ߥINe_Ng&H^ I`=M|ct"+|؊+KSݿep:]) 'n$317&:S܇JI|Q1ԩJSϪwӳhER*4QOU' zzvN}rDh%vӟ|ϮT$TsCuMG7ӿfwӑE};ԩThOT! RĘNh>1J|OSba:1W>oQMo>1SaxX8~7E~692OK17@jN>)S>=>_U辶?-CE8֛hco:jo8'P(}Wfw}K}9joR=#'RT Q}We91M,svg'|jN|?ƴ=SRDNS|Y:ɟU"zo iQz=P[҄MXϣl) 8&,tѶPS{K9m9=><?ߦ.!e7)cIӟA"nd+)>iN}9$9Z⊞+ңDh紱ӟF:-CE8ڛ紱ӟF:-C}oN}`E9紱ӟF:-Cu z)}L~Zӟ~i$ωE7N2$)PңD 4ߥ>ni$τt/TңD*紱ӟF:-C?Ω}LyIjNM\C7)$$8*>))S~oR=>AN 4)7ic>tZ9uMcPsoPiI'NPX QJe=ߥ>ni$τt0mN @>%>$|:sEr7ϩ(-C)K}A5$;RJzK}A7)cIӟ Š^&)Λ@{I'N|'E};@zڕ'a*>S7q?iKNN-Tw"Z}pRD%S龝3&zڕ(~|E$_U|OSlTEkHd;ڊZ&5,}sCY!;B(5%Q6upn(Cw'=}W9bǾD JsJ;龜?ԑAtTBA@=$c5:*4QU'pPQ}VҞͩjI:w?HKZh4F?ŗ)8}J;SrsGsOܜR"2hZMS'J> 3JnNhmE:(<Ο"XNBAJ#(~zu8(ңD>憵9W!֛ ƕ'vSIӿ|BZF?oSjThU|OSbst"+ruDQ6t+KS[%8IJpY嘃,i?vPj+Kmb;d޼5ffd6g|Xg|Y~ҧ W͎ћK;w͙7g|~͎3"pV+ңDT^R{8MvwŚoa;7ŧ7ŧPS7ŗmIuI&W K~=:KJ}]|Yq?ԜgTl5|B Eө1*4J|OS{ i$"m}ְ4vwŊo.!e'$X|!dg!zwf~S|Xq?&#S{6>?&;7ŧ㮲9:8B"l>;IȢm|eJu`W @~ϒ,)FTCI6ңDk"m%ՂU_ai{>H)S-*4QU'Mq%=(f"XN+U&D=$X)ΐiQz=Pl5SDFOjHm|d<W!oESjThުOT!$ T"RDr(f"YPlL$OgT: iQz=Pl5S)D6 PJL|=$Zs%F0}BINCThElKyB_g" sThުOT!$ TDFOElK *yC9{>HjsMJ`I?S`J4"m%<*|!ߧH9 Qz=Pl5Sk)QSQ6;D*Pt=$ZU:(F0}BòTh?-C̊&ٷȖj|!_+SAF0}B(ңEME}AD6ž0~8=$XNңE>RzDFjP"m%<`W K|c:*4QU'vSPSJ7PjߑFDSbo-C#䌈Wu_|е?ƯZ#")ըU7͋Pj$dE:龤?ƯYk|oKPj~GO((f"X8|! K_,SңE>Rz$)J7Ņ?E7>UM55],S|Xqd(f"4N8 U~B ŧ"O ңE>Rz$j֕'a2(}Wjmbst"+{dQ6t+KS6Sأ:2S2?"Q^X5kY'hH"?grslIϩ9jPi99*4N!(3"s~NJTh9qztDE"|`jMF0}BN)Py>Di:{>HTF0}BN*4OSϪwӑD=7'=S@oJ`I?>Bޞ tܜ:sJxZThC:N}`E8ڛN}`dNyMic>tZPmMic>tZ{#紱ӟF:-CE8ڛN}`cMMic>tZ9NŪnN|bmMic>tZ.N@3ȍ8~B&_䌡Np*4JI$篂:1F8N3_U=5*4QU'pHgJNEF*{>HTThުOT!&'vSUMٝQ7OMTQz=P[SRZnN|bX}W97'=#}]ϐCkMHj=P'SܜEjCmMHjc>;rsws3ȍ)Pj0=$e u@9J>I9N6 iQ|xC5_䌥NRE>RzߏNb*4OhғS?qe!dϑPN*Th4jN"#GJpR ~B Dg# Qz=PǧS3ThU]j{ J|Nh/֧TeJjPaTThܜڛ8ӟ{ܜR"2?O"}Wji9IH:| p U~B)'~ϒ1#ThުOT!F]?}IbMKsSPsP"#TW!y3|) QU'I'=|MJ7'>q1ON#LjT OgpTFTCө]*4J}9gOW k|P1F0}BN ThUOI'4~ kS">4SpIJOjlNt|NE|nN&.Ezcvտ`Y:2Knq*ωCbC;cwΩt8ְ5,罹u>MM:l>oQOkƶ%;%7ZOωAY,퓇zĂ(CwΔ3꽝Q7OM9&(~|=6>,tѶ7F>iuK9m:5joRN}`dN57Ωc>tZPmMXϣl:9:)uK9m=SuK9m8zNzoRN}`^'S7Ωc>tZ.NoRN}`sOMXϣlNgO%)02U`H~ϒ, Ε(I':~=:RD}=7ӿfwӑD=7Δ1F0}B!oQMLU|OSl~|NE|oD(Y,}No1dṴKnd"Q^X5kY'P)g{;ȢnJpݍ*4QU' zzm%7Ωc>t*4N!MXϣlѨS|:sEs% ru>-S|:sEu ):6jc2TӟF:-CE8ڛTӟF:-C|?,tѶPu>}MXϣl˓~JoRN}`sOH:|А W!x{>H&F0}BIΟN %*4O};g}9M|NoJ`I?>BޢO>Nɩ?>'B"7͈mbW>oQKVRIJu;%7ZHme>'hEdj&.N:HS(U}A6#>U}9PS(<Ο"4%ùU~BoF[J`I??NThUOSl~|NE|oD(Y,}NoĜiا3ɖPCb ֬vPj+Kgl?$Bt͎^wzԨ3C]joSʕ'NGMpN iQU'ٱN5u?-|HSpƕ&w};k9PSjN1V9$jE_jmωЈb(Y,}N5o,&i̴._$;B(5%N:}W^ƕ&w};kA%7өPiJ{'cMpL Qg}=7Ӹӟ>ODB')33C]iWZqΔ)U&6"j)ƶcωAY-poXE~꽝8ңDzoq u?u94F=ܦu8RDzoq u?U]j|ODB*)ңDzoq u?U]j|mI*IΟ~d>MM:lE%Sk[C [y$\IvPj+Kgl?$Bt͎^vwUpcJ;龝5֠:u8ңD龝N@%R{꽛=,tWZsOTkD"Ҝ43C]iz,%:SÅ_iME>MM:lE%SfFZ#Zy=W8~7H"?g|^wz;43C]j)NJThC;oS`&w};k9PSkBmNJ;龝5֜(}Uu'.9Ҝ_jmωЈb(Y,}NZ5ƴz%vPj+Kgl?$Btg};N A*4L罹wZJoS8v;N&w};k9PS|!2%8%v&w};k9PSjN2]${))56DWW>oQMo 5H֞OD;B(5%NR"?|0 k`~vw',}9kֲX@grrnNZWZ79c꽜ZH>P4q?U]j|kMoJOSbwωЈёEzcv۷>5K<OD)W8~7H"?g|k꽝8t"RDzoq u?ΩN;ThC;7өãThIltӸM]iu>h_"àޕ&w};k9PSjN,MKNNn ~ɩ?>'B"7͈d;ڊlտ̴.Xw|NЊ Ezl퓇zĂ(CwΟU}WÐ FNPMp@48v;NHt3C]iWZN_"jpRDzoq u?U]j|kIʼnc)(.U&6"j);\>'hEdvbA!;L_U}W >FNPMs0F=ܦu8$Ԩ3C]iWZOD&6SCThOM!CꫭOtX9ҜW!CꫭO85$kS@J>MM:lE%Sf:\>'hEdvbA!;OwӾJ;龝5֠ңDS}:؇J;龝5֜(}UuE>ZE9$FNN>ړRIΟ*OSl~|NE|oEzcvPEωAY-poXE~6:{;UpF"RDzoq u?ΩOңD龝N)QU'ٱN5u?-|Lza*4L罹wZs^ԜX9$j*OSl~|NE|oEzcv٫)chaD"Q^[;dޱ {;UqңDzoq u?u<#J{'cMq&w};k9PSkBfJq$FNN>֓:S@\>MM:lE%Sk[; ;aDW8~7H"?g|^wz8ThOM!N2ThC;oS:ThOM!CꫭO)Ȅą8p )Qg}=7Ӹӟ>6s256DWW>oQMo cy$aD"Q^[;dޱ luwӾ&w};kAuMw>'NGMq*4J{6:zX&:4S寑 87FNN>ړR:SW|ct"+|؊+KS[KBh!/|NЊ Ezl퓇zĂ(CwΩtJtUOSl~|NE|oEzcv H2̴E<_ωAY-poYI!;؝>R؜?S{SCꫭOaY:&wJo}95|Nb>Zj;O=N&w}=,qPְ~4k9QME=|?~BUI&ߧP/'SMRfwZoǓ3icya&wǪ|icO=9*Yi*65R͟ʿq?)* oqңD|Yi*KP)詾*YC겖wŊoǔO 3icOE5MQN>Qu8)Q}Wu>MMtȢd;ڊlտ49bXfWxLF{DQ$%H&> I _vPj+Kgl?I! 꽝|J&/BrﭦZZo%}APﭦsU֧~|)}Wfw}:fw|A|M|~SE*4LS|>~E9eQҟKMqxK{T>b"$ٝ)@m>&1*D$}KӚB#}APSA~r4y9jzS짵OLy9jNo4<?~cPsl1}9P{8ǓfJcPs辶<?NZs]hr=ivSӑP'?PF'-CvS罹<?7SNZӟ?}M1k96~r>(}We>?}=1}9|Ҙr>qi'-CǤhr>(}We>^:&1:񸾑;ڊ{[=•xdw$~|NЊt͎^zoM7֖C3Cz)tZ詾?ڛE}95>(}We> |jXHAP|Dh3iMG(?S|8AZ)uKk3ϒ2e;`%>T־N#)SgJD|]56DWmE;V%xDtEy$>'hEdvtBP͎ OĢ`r/,o}A5Zoq?U]j}ӿOHxvg}M7G:w8^IFo8Zoȧ >*o))cJ5H~oȧ u*4O>MM1:IW>oQMأ2h̼#кr|NЊt͎'`M}WJo:oq?)?ƴߡ>(}Wfw)hN>oE$7Z_7pΕ&w};}AQM|^ɩ?>'B"7͇j)ɭәh|.ܱ+yKKDWI>'hE :fZ̓f&>N7΋P7ָ`ZZoP>;4q?U]j}M7RǢNuH|V/̛St3CoS>MM:l>oQNMo -9h0\XZ"MzĆwΙֳ$w|?}jPS~>}k}AP辶sU֧=7(?S|zjR*o-C(}UuF)&E(1mK霙5,smvS7֖U]j}&}WC7 Xϣ cI'N|:DF@ϣmx9$9&OMٝNE54ΟUD ;)WZ(}Wgm=95he%+$NxpZ<?!L/=f^|#ْt'RE*_^mM票}A5>(}WfwSqy}9PSb/=~Z@nzoq?)OjXϙ>MMGDWCv[/2ZC\➉Xo[wflq'Ug}M7b>(}Uui$H>@~n5|A;$F>;i#M7q҃4ߥ8ANi=7ćQNSM!=);H#0aN|^7)c>Bޞg}3B&}W{M~X筠a)mg~X)Acw>;S|3{M)Lx8I'4>@"$h}4,u'[S\NP}W]ߑO>:,t[ӏi%,s06ѳ%,uTߐ1;Uٝ)t}:,t[SXMF,qNh|:D I2C{()rWZ#0aNϪ꽝&}WmMjXAo6m+>l|1;vg|ޛٝjoR.X392e>PS>Lf>oONХe%+$NxpZ"W2M*e];B(~7ٳRzI2HR͘<@$߾E*T"z]B"@$ԿqxnPGH% #g1OSU~gp~HxL)#:nq?)R̵?ƴ)P])28ӟ=K7؅!`n/gpM‘}AQM‘,BoNkXIgpM‘}AQM‘)߸Ib.gpM‘}A%p?S`kJ;*R>*CҡpO>/tbl"sZ R?q?)R?SpK䑉`ְ4 )p~PSp~U|'DWK;ڊrkJ̴E=DS.X8~7H".}ij=9CꫭOaLy5,z)@ɏmXR 6.F8=tL9궄 ;)"KPd>JSϪw};ri–:sDhzXRIӟ 2s~=tDd t1cAKNt@'wzoqRXOƢC)z&|oӓ[ ChbhI4Gz?>'hEdvtBPg};;c#,S%_;uu/rcJ;)>-Km(Ԍ7Gh43T *oS#_EzcvTƇ2u]s>'hE :}WJXEޜ'S:#Gٝ4R*oq5PǴ:|M&~FҜ )Qg}:GMw_$cU9H ңDu>PSNɩ?>'B"7͇j)oļhs-/WQ+$"Q^[;d޶P3#3cwΩ#֛1jP>;T:q?U]j{ Tg}m7ָiA\CT2J&}VV^o\C)J3cg~@o% 0wD*NG*g|ڛԱzP2c|?m7ǯ]li3zk龦8OSlɟU罹w)ߦK9a"4y9j|mMٝNE5TNow|G0L%g|^!)n}%L3@7Ӆ;SjSg|ڛԱm>'S7~:g|ޛ! S}M,qa*X39=O>COSl@>'B"7ّEzcv0QMos-NxpZ"a4Įeq,]-^I&vPnC; /:|'N/ UP_Kyi7?:XΟְ,/SM\Cz(}We>MMt"+qymE=,+$}k}AP辶s^SϪw}=,u[ӆt:6jP>rߏ;龞:-)Q}Wu>L6SjdN2WIe|NЊك; w؋vdx#N^=N.U꽝/b>)?U]j{Sqx57CEMgUU>-qx>#p$ңEKxL"[BM;;ϟKVU&}Wn/>-CT_Ij=9:'S)b/>~*qW^|zw> _JbCF1 F/t@'_;>EMSӓXKxj IO>COSax|NE|n/f>oQNf{q\Aj"X)EB.$;B(5%NTEyc;S꽝~B&u_cEޜ'S7Ģ4}gMn!P7Ub%R!ыqqJ^&}WʛP)龁KJ>@"#w,HNڕ'SBTh@'*o-C%O>'SFt)jmDW +KSַطOD,al?ٱoPs]o&-C?< u?i?<?ƴm3U}X걫9=^UO>7ӏӵo /9bJ^w,`AMovPj+Kgl?wflq^ _OģrA(bǟPr1jN>#>Zk]@.P>iiKv詿KqOMwU _QMNuIb |{KF~O0%7w91b.q?UOTC)z&؀|NE|o"j)V'hz&c̼%)bX+$W8~7! ;@1cωG:P."hŏ>% 8$>%@9g}m7gMk>(}We>(S}k;~(?S~UOg5!}AP|KG}Wcɩcᚮ]liKGg&PǴgs}AP}o P|_c>%  >*|]COSl@>'B"7ّEzcv٫y̴D,KSEy$%s/;z&cvPo[vwflq3t流h>(}UuCGM8ʯCz>}We?B[M!ƩTg5 eq?U]j}M,qFHnP>Οְ\N>K)u>MMf>oQNտ2E=Ey$ωCdvΙ=}W=*Lg}M74>BޞoR}`1N紱ԟF:-C?m7ic>uKz|0D I3=oh|E5NhңD56ΏЈCvODH_"p6fw<@$߾E*_^O>^› XF:-Czn/)b/`}`'?gM,ElR^`@^?fw"ѶPsĚn/`|ĩ@^"/NkX/q?U]j|3~r4y9jzS>]B'S^F>'B"7>oQOkdG^I&ScN疆'K5*J>L|!Gԓ7?ƬOLh(G1LERLPH+QN-6^q?(m?l%;y_؟Vj4T}#ܘ&B"&o($Xfj4T}#ܘ&B"&o($XQ2}I3A#kO6/8e~q%H&> I V'6j4T}#ܘ&B"&o($Y,F%$P|L+E/oؚW \6vd%C bP%ŦĶ%vP ,P1-nl[]z(zpF x81,W @`LZ CH+I`X5-=| FĀ=$\_NK, dVQ7E|<%klڛfF[L|J*D} 5-99-Se*9/p b $b^i,::%_-tK<-+0(ݘ!ƤT$,LLD7&$"?JK> y1,on?"xT>l&(Cv0ңD`(b:|od"+4>EkHd;jp*4O`ŎtT DVh|Pk]b!$41H8Y!:#Q_A7RKKKIe1.XKf䀱77BaBwQR#a:%ENKP7>%eT-Ho,nR:%ӏ`8zKO/`xIct>o Dl&˥7[J&!]z bsj&!ɄNK$oS"bܘEi{ũM`(>Tٱ-8`tKKEa0\j,,K 0%ɄtРؠvp%]('%A ؤP l5?fgRY-*X 夳X@\Q-@ my9i-t* }Nؠx\X @P$RK?R:pdL€ , 4I [- a+cXIa.3a, 2XtK@|tKZ a88藓DltKCA% `p%Ks8NKT)Pl ۀI2Ibj%F-MgzK%8''-%Q/) SBgaS 9Xt="N&-9&d +>X DJbvl퓑B?lKɁbʱ3d* (-Rٱ/'f(6LDٱǢ$$͇] LWq0BEKi鶜=/%|$>l=z"]u`H)fK =-'y1.LZ &hoa6< b2NP:Ă(_%Tļ*)%(L1RX\SȤ6۠P$/i֨@ԨY`K1MQ_d¾#x }N-eMQ_d¾#x }N-ّD܌E@<+0 8@LNV mMQ_d¾#XXw9ѭd@-L$t8D)-%cXj:%}X`=%#Zrѭ`jdKɁ8¾# 'qM0%v- 5 ,n !$DB(X>l1RX\SnL @i lMBfZ=9a,%"(|F7$'@X`R:"+xW`r@q$%b(|F7$'@0wD܌E@<+0 8cc-oLRBm8F2Y`lK\e'İk>T )ӟ֨k?zm`f*[`K ޛ! @i lMBf:%r;:t [e,Ȣ|F7$'@[b2(_xMmBb-b(_xMlf,E} nHN >7ā;b`&%k(sZb/&t7-BPg~BP4?rYXŎ%<&$|Hd"+4>(X>nik%K=6/&bߠJL([`j5£bX]E}q|F|ov8 qB;#%5Kk Oy03-BPg~BPi1,.D½X @`0&%ޢ\N+m9,ֺ%." ܐĜ@|ovӇ&E=ZThap4>D&JP&ĶŒ,q(|F7$28b0&%.1c@<+0 7Ā\FB"C'6)%Z0PL-By 'vj4T}#ܘ&B"&o($DƳJI.`f(=bfȗbPW@bht* =8֛KSKhr U|jPE_U]j|}NIr ωAY-poX|DTThT4F73t")W>o(('p(Q1'%H&> I V'5*J>L|!Gԓ7?ƿěPpd !gdeB%UcgoT'1&AC lfq-\B ÃbM ɜ'lb/p&lc8f0Ã#2*D quOU.4D|i\@|9 4(r&Y9"t#N.I@У'b1 kPU%ñGÃJ0Q`l؀#mU%ñGJ0Qpl؀#@pQ#vϖmxp Idf/As2}hֺOfxz& nF{DQ$~F{DQ$5bfEIG=ɏd"(fGՉC5*J>L|!Gԓ7?ƬOj4T}#ܘ&B"&o($ωAY,ԓX X-[-3NfEy;flvL;6bn[A$E*&5q?i"hCb&YK|E:X$p_XC(|F"r)'n$cLooptMH4=SCTh$L9 zzrH>)cME|@clAb7 Td-ȤH"Ŏ%1%[V8f I:pj&ю_!=*4T1}AIn9 zz)"n$MX$p_XC(|F"r)'n$cLo`ՎRN4cǦ F&&Th56OЈ[-X-I5Q6t+KS^OopeWW8~7Q!L[2N&>@SԱyo]l}=7ķM(IӾ!f5rpJ}A5#_N t8 @>b"$)}@rw)|ĩ@4'4|Bk%{;@qNrSNkY, )|ĩ 3Jo?fw)c-)c[;e7COS}9J:o1*DLқٝ oOYId}9:soOYAd[t 3Jo?fw);o1*D$)%>Iֲ]:&،|NE|od;ڊlׄJ{! 'PRD8ӟ41}AP O)QZZHp>F^̉fD3"cVdLlɩNE%Snߟe0b"e|NЊ Ezl퓇zĂ(Cϙ:fZfDܦjPt)P&dM>QMț7 P]NU罹u>MM:lE%Sf,C,]DSDJ-Y,?$B|6:d7ֳ"e`̉|mOE|z6Sm|*QH2'P3t͎'`Mf+禵5(?i"h2&L#P"h2&&5~>Ș֛L#ɔ41fDԒu?~5I8D-CTgOtZ "hCH>|; I= qx)FOSl~|NE|oEzcv_oyD &X.YG"Q^[;dޱ wΩt;Jqxޕ'smMZ_J2&]COSl~|NE|oEzcvL&\"ɿvPj+Kmb5$.V5`L퓇p7fEy;&d̒L͘LɄiba ɉA1*wM&#>!ak "(ŏ~ңD7͋Ps^S|ږ$̩$3M&Ʉ6&Xɉ T&Ir)$H"K$S `ՎRN4cǦңEMe:ޕ'vSؘܙDV5dRMbM]"j) 8VeW"Q^X5kA&qpoXEy;Li"cgHK zrE$M>?T^#R"y;HubZ@RDȡ pI־Dϔ@QW^J)1;+D_|B֚)Q*4T4N!M$LjPwD)c!oQNRwөHm,s-i"cWXNP?T^#R"y;oN,US#J7"r)'Z#)u_y*LDq9{SݥF1RTE,zM*4J|ct"+|؊I\"Q^XmE(ZZ8a,/؟Q2}I3A#j@fEIG=ɏd"(fGՉFfEIG=ɏd"(fGՉɚ%H&> I V'6j4T}#ܘ&B"&o($X5*J>L|!Gԓ7?ƬO%H&> I V'F{DQ$F{DQ$~7Hg|m7ΙNɩgMh:qOo~>罹4~Zӟ(N3|}N{ƽ uvPj+Kmb;d޲A!;;篪w|?ƴ=5[ThC{ZDɜCSiQS RDbU$L2ԴOyR'ӚPF'}7)y1S}$L3"d4SءOS}="L|CB(<Īo7-,s^T测`WU'oN/SM7ӿfw}="L|;TN9Xg}='K9LѶ^WJ7_Th4"JsxR=>HNkXIMJI:sqH3p=9M$L3"d4S|gGDW(XE%Rխ2sh;'?Ćj4T}#ܘ&B"&o($XK5*J>L|!Gԓ7?ƬO-%H&> I V'F{DQ$PfEIG=ɏd"(fGՉ(Q2}I3A#jRQrc>57T) :z}=Dq +KL/?_g_PF'͈fjDb}dHB"sjD?D ֺŠ\jpJ Y 5 A) Cqщ֠Rce 8Oa8? dY톉@ӳ`l4O;"nȳ24K2 2O@p'Ǡa8a}87݃ Am8a|vEg_pMyu ;Oa2GOQ%H&> I _vPj+Kgl?$B+3t͎'`ɟU罹zXO%S|;:F5֜)8ŚcT@r'ș`l ~B{>H3ZH[J>Ty5"n^kX~S–9(9a&wS};g}=7Z|E5S|ct"+|؊+KSm/^I"^p 厉>'hEdvIfExi2KLUٝ7}UwhKݢ5,ZeH]w:;B*4L罹wZsJN1f-v*4O4F~B|`fkXJThIݢ5"MH*Evya~~:S7iK}9PS7iM,Z#RF7&U3iMB>Zlֱt U~BCZңDO)'>1/}q^kXE2U7ӾRjԨ>ߎoiI%4sЂkX_vŦlo}O`F|4z|NE|n(Y,}N!NG2W,tO;B(5%N:f[MXT48ӟ8ŚcRD|ְ4ʿ|!b|b9`lңDO"MHWӾk*U֧U|ct"+|؊+KS[I*ؗc؟5*J>L|!Gԓ7?ƬOi%H&> I V'F{DQ$\fEIG=ɏd"(fGՉ.Q2}I3A#j5*J>L|!Gԓ7?ƬORF{DQ$"fEIG=ɏd"(fGX8~7H"; Y:fZE*_理F,{,*Nog'}ijP]ku_jmωЈb(XE%RVK4s"zvԳ?f)?Xj|Ε%>MM'DWq;ڊv|a,h(G1LERLPH"Q^[;d Ă(ClLtgrdXI2w"bZWLiMɓӱ)1uZ*I$OA@测_JӚ$Z'U֧ƪ|]COSba:1W>oQMolu,d/L&^bbdO;B(~7LgmK;lpXe2>MM'DWq;ڊv|%\Ic;a;B(~7LgmK;lpX/e&W|jOЈv[K:%ޱ1,ٱocǔ>A%W|jOЈv[tFv?&368yM,p>`ְ*>56ԟ_j)ڷ]vPj+Kmb;dޱ0'];ְ-*n!읎=|fkW 3~ϒ1\ֱp7FTIŋiCR5XuW类>)AiLyC}=8%5#,UdF~ϒ0kX}*4QU')}WAW类?E'-?~<?JjN|gkJCOF,LiQU'qbcD<^kXU֧U|jOЈQ6t+KSi08AՒ^biK4Su>'hE :jP)jo>7?SThCtF40΄ >Oٝo>%OSl~|NE|oSz&y|NЊ Ez`M]jƱmpoPEvm꽝vwT1`|JC(S'@4gOtZMU$LzNRDCGȖ kW!FbM*4Jv5WAU{3tSHiJ 8#Ԩ)g{;龞 !oOHX.qbcic P}`G-CF"*4E}9DkX*N(OgE5[ZThIZ`WZT" XF"4"ˈ{'?-^H/ic+%P}"~;kXBPONsN3P2'V#!CӚ~'WZ~E-4ӕ> ?E/XkXE_"|bwi8Ω@O'OH%X3dzsZThU]jp\ŏ|ְ2g|@>u!m:sU֧ D>Lg|NH!oON)S|@' ?"2I:qMAo">@"~;@ְ)>="^t b*3q{>HcZ8F1ުOT~)MӍjG>"XzsZ*4T3wv9M7Z•'WZj.S|N~>s-)H};a iQŴǔN6@&0ȵ?**4E}9n±a$*2Z5 t*8m14taHG}W W类8='-Cic P|" EELyI0D$B4ŴǔN6@&0SϪw)iH!oONF"]i=,sB9oIӍBj菐H(}FW@scϣ ? 1U;}o?fw)iH!oQMt|ґ 4>Bޜ7|ahְ._F流yu*4JN,[LyM$8D&1'<>kW类8X.)g{;57jD-9?m2dԒqlRIӍBjyX(5 *Cu>7gM N|E5[ӟPybA~SK8O` &5 W!%ZDU%Z=$``kXңE>Rz)F:D`^kX/UꫭNFB7jN>XMr(l'Od!**􃌦Nl"P=ə|:Dy3#*YW7e4ta |:Dx2}ְ$ )>l|:Dv4F 攱ɒ)oH8i$!5ܔMS'O`ְ$ )>pMc'#A`HIͩM,tdj ?E*p!DRzϣ0 ,oH8i$!5֙3q`tdlְ $\Nl"P|:EJjNn>rI:qMA(E '?Iߧ@cc ϣ ?  ֱP*>n968FyT}K>6n͎-UѼc@ I`=Iŋi)lMAa'h  k ~Nn M,swx#C%>Lg|қ攈YX_4+%47> ?PJ5 }W>=ц$R7g%:o2zI9Dh?|ً17ϐH_@F 1;oJOI'4֐qptBSZS|3iMJD, zkNɟU辶D-I?m2e4t`|ME(E$HD)>GOǔ>Eu_ӟ}o~>辶D-I#S}M" zs,[H/ic P}`.PJl)Q-CgȍU%%Og)J`I?@"~6@B"h*"SK80EHYp_AoI'Zsz=AOK%bC7~6!hkW!b'SjX#I`<=9c@ I`=M N|9Rg|z)#3=SϪwjoԈZs- US|zPi#R!oPRo7%KP)i;## V=>t4 `>>OMr4vm7dgюS60FZB'S1X_4 4F"~<>!babb#E&0MOgkXDԨFTM1"n# F*c&yLѣ/DsA~|"<}>!ϪZW类8P.{?LvGKFz}1ic}e}Ah %}9[M1cTǩ>4v>@S|#CcZpL{>HųZŃThIIacHSI'47 `> m"&OH O&}W)*U֧ S|܍c Pogcd F"<K/-Cvg|<5֜GM1,qlcTǏc}e}A?~쎖86@a*c47@)6coK?JIac*P54sCqo7`?nFx1Zӟk^7U;oPsU֧(ioK~!Hֱ4WnB+S|܍c3-C70KP<|ibVOOgG5!ңDO bDL74 #ȟCL5bU]jr7ߏF@JjN4|SZNh=$`dkXC iQU'|&}WcZ-U3"o{?LvGKF X01X0F},svr}7cg@:I86,z|:EJ?0H)nFx0>|܍c$?ȍ'5 B"A9{>HZu*oHض'M{A'P>k~Sinx25HtsGȍMk_qE{>HAbңDOLƵ@ZvfDߦ~쎖86@a*cͩc}e7$0D($D)@ĽOjinFjPfnFx1ZF流@ 1 kQU'|ސ m"&OH O&}W)j}Uub]7ߏFqJjN4|Ԇ@nV~ϒ045!*4Jo!ϪkXʯUٙ~c:X0ǧцUK/nO,l(GI'%OH@RI B KF*A)K|a•%R}'-DhֱT+U*]5 PiQU'|&}WW类9;>MMٝJoR!c-B-@.ŴNVI44+"P} GD|?XkX}!iIRE& _NR{ 91'ц8= ~=:s#DcZ1U`,?Og,ְ(ThIXI:qMAcOv#kdWZ%,[Ma A~SKlMA0D@1'h!W!#A`LIUdl=$a$ְ(ңE>Rz)F:Db;ְU]jqE-qdR2I9D&BGOǃ'0dkX,U}A?| ְ& ~B 䎣ZTThުOT!14taHG}W(*U֧PyboFME ) Bj*D|:DhF!P~ְ%*|!oGYbOJ`I?DhN5T3U`Og`L&ңE>Rz)F:Dh5AU]jrd o?fw)iHO6wzoBǧ[R*|^zo!oOI3j|^7)C-B,S{?LvGK8ؕcHSK/-C);#>tc/-C)#B`H\PR=$YZiQU'hְ_DhU5 _EiQU'{?LvGI'N6=>TǛRI B-/g,b@'cl.'h?>Y>!Ϫ5 ~țN6@a*c `>>"4,C_w"Ƶ%R{궍kqW k!rB{>HZBM*4Jog$ǧѼ$D)2I6~v- 2v6v, >A>yLZW̉M1,td F"=U,sCtl?ħȈsZگA@=$X^kXjThI5W ~B/Em*4Jog$ǧѼ$D)2I6~v- 2v6v, >A>yLZlW̉=7dtӍV=>t4 `>4v&-CNc3HFyjNOMkUf-?Og@%R{'|ֱLW!x=$Y aQU'{?LvGI'N6=>Tǩ0FZ_I&"Y!ŴfN٠\N~|'(>"|CɟUֱ>U_2&7;4BYMٝOK?J>Bޢ7_U|OSk_ٲ+Ų)&p&.EzcvZ67VIz%]]p{ωAY-poXEvn&h})ְ| iQg|қ慨}96|B_U流_ɟU罹zD, zzzi8m1Ӎϣ ?PkX=ԨR47 `>1/,t0FyjN_U流W>ߏ;龞 4>BޢԱ)"f>1/'S_Q^XmE6h^it@z.="Q^X5kY'DCz)8Ο"U浊Z>Lg}=7!f[aNOK80}AְxңDZӟKk5_#6FT5%_ȠŴ:qAa'q?>DkX*|! |Y`FaJ`I?Ǔ'F:D>k2U]j{jo~>S|ґ 4>BޞG"}86AOI'4">@"~< ֱ4*>DkX_a{>Hְ"cJ`I?@"~@"~;>a8ְ i=$8Dh?|5f&95}y`;U72zI:q~=0f&A>lkX*0{rzI:q~|:EJDjI:aH=$8Dh?>@"Tu, TǓN6@h?>0ELm33꽝JoR!jO7O[JQI'4'Oǃw2Zİ|sOMG7)'[SXMJD-Io|wT؈D(kʯA(=$`ְThIRwy`2WZqbc)c  O Sicg&+S};g}=7!f[RK%>:&ؠ|NE|oQ6t+KSǸ{et@z.=W Dvd(Cowq>EӾkA"f!NN%W!E1bThIFg}UuT3꽝OH!oON%RqbD=,td|"2SiD}`'c>D&,U)>~ϒ, kJ>!ta辶D, zzl=" Tqt01$HDTe[ӟϑ,ֱBU_"ְThުOT!$l" AO"O)#`,Ǣ`Dğ(>>IcOyKְ$U֧ O[L*I9DюS͓}A%2h"1*P4Tu#an. R3d|9DkX |! "̍kƕ%R{ְU֧}Kg}M7!f[SPMG7)c-)z'S:>'B"7D(Y,}Nz4DY%)Q,SuX I5퓇zBg{G}W3IN6r}'];ְ ~5Th)8))"=ߦMHְ QU'ٱ*XⓄ֜'S-)ȈE3Zt iQg|RN>P♭`BS|R-CoF7F;7ZxWU>"1|WZ$L(}Uu}^m$L3q?N(?q?ҾDBu_ңDO}WcZX*r{ꉉkf4R39>F?~bcZP~oaT͍_sZL$*F类rf51\cg/YA`&~S6q-n!*N,[L~kXңDSIřgZtR}'-fES} >Buڒ&lP>Ғ&8m1`>RD͜CTXFңDSN1Uw~5WN,Z̋REɟ${%uNB7 ASL~kXTh"f!*N,[Lz#Z}E*4O8^&>bcZPQfr}7L~$Ƶr齄jc(#ZDM#S=u&ߎu kloaqJv45Th>Хaѥ2}1?I&5"' oaU峔/OI&5"'>攒l#R"{9PS'M$ԈT&/IHB?O1$ԈT!2}1jI6=US'Poa|CC#2M 浉W}7IUd"꽜DXFȄHσK`6,ZXw?OeʿOR{<(|Nz4TǓ]g[N`E-`: )Q"l7?iDkXREIRPŴǔ*H}ANkXңDS)"j\C$L>)caְ{ƄJ~ `3U7L~E-{+oƄJ|Sb_R5(D"] kF0{Yޠ)=`8J$MK}APkXTh"f!*N,[Ly9`9zThU*6" jD-= iQ14Ϫ̉SϪzo'!oONuIimCjP2jI:wJ *D|:DyCAb@n&3"i龝3c[SY"&mCcZDΕ"(`E" kW"toEֱ41F1I?^-0^MkREH/Zƕ(ֱ@-FU֧ I&RbP2g k"UٝE>L罹zXq57ӕֆԒq2ߎVtt2Z@.U`I?pic]i2jDl'6>D̓e'цo?fw)ce4 k"龝3c[SZN,P;kU'qbd\w+ ijH}AJ5"qŴ5OF~ 6p4Ǣ5OzTh"j\CTXZoJ$M;}ALkXƕ*H}ANkX-*4T k5*4O8RkXvr}'&|_kWPyb`(z>kX<;U`I?fEi>NELyK|$,[H/Z?F0{Yޠ)=`)Qq?Rqbc k4RDӸ8m1Ƶ]J$L>EIŋi'5^*H>EIŋi)5S|L5RDS|^zoBǧ[ӳŴǔN6@&0(|BMk*>)N,[LyM,tdj ?E/ZZwU~N|<~>N}OMX zk=S;ԑ3av?15"lcT͍)A>0EHF Gц$,uGA 4)F"g|ޛ浈?J;S~B>%At D?OgZİF0}BI߯%0a&"(EIŋi(5F&>EIŋi&5J$L>EIŋi'5RDǮ!*N,[LyI`*oѽ*4O:"oKְ R39>F?"=T̓cg2ZgUM#S=,67~<`ֱ'U7LH8<Yl?~<_@55W51 2fIxv>#Z0*F?{2M? _ XFɚRD5(K9I5(K%,l#R5$_}Uu齄jcAǾ!Ym#_@`F?{䦒!ecCZ`F1; ZI6=S'3l#R"{9PO1zzI6=G/4aʄڙ>i$FDr7O1xMjDOg*2}1 $FDr)%RIHB<~ZS{{lthd}`?5EuW}7IUdR5(D"5' "|Zİ5U>"ZH^]gũӟ4J!)"cs7IUD>Lg}=7!c-ψŴkK9Y*ȏOǔ!!RkXE_"|bwӟS{cW1eOƄL}JwzoB[S[*odM)cag"O>OMYjccB#N6%XlE-htat2GtN,[Lz*Xqt0"Ct51$T"=7Ӎ; "=J 3RXTӍa') pֱq?ܦ"龜l!l} 1UF|:DMM'-qtt*I6>H "fXj>͎%S:q(n.!cSHltwJ;J&ZXK֚`W类wą>Lg|{M,l#RY-bAvMKzV'46>"tOZPkY*꿌EU/ӟǓF"6Y)jcci=~>i=jP> 8|E5S|Hq u?ƯuDֱ5U7ĊXF@B#IӍK q(O)Dy93joOٝ) >•&wĚo%}9B7ĪXF@B#IӍK Hɏi3c-)%Rǒ&l6cLKJHqv=>0D7䥍jP=FɟU罹zXF@[ҪH,l#RY$8D93Joa쎖:q*ǤPybAMH tcF:DPkY Wߦ<:qCcTM,l#RY$8D95|^Xq]7Xұ9'-& 菐H(}(5jq?}GDx2|BBK5>s=7LLvGK8N,q0 Dt3|}ȏH @WfwǴ$L>'Su7Ωca$%OHɏcS|0;T:jP> #=>@"g&97͏ 3uMXF@:I:qc&rfԱΩl}`oR5(JIӍK 3UKц:wzojP> 8|E!$F}W"o{ƄH-C3꽝OH!oON?L~M#S ֱ(MF],l#RB$S};g}=7!f[SXM#RE{94JM#R9aM#SA!>ỦM#S)t&ȠŴ}%mЉO4*m _R5(D"] k`J DkX m*4TְTh&*A~NkX ThA`,R ZXQ1SZXңEMwSϪw}=,l#RY-'OM#SNV'X6@:'5&Ubwӟ511a*c5(K'c X"}W)ca$%OHɏica$%OHɛg{;4B%6}W?S{dtӍ,z}`,sCtlAOS|P-C o|ФkX2꿦Фi(S(S|Q5BThjcHGMaǧS?c&ra7ٝ7> oCTJҁdttaǧTcI9S}7LLvGK8ǧц47@)63꽝4SK~|=:o?B;T:(3齄jcc:Xī"g%MBB_;i8 zki?q?ic/r{꽝7g|F?;#lcTǩhnSm()jo}AMB<kP~om LMAF1;7ZĐ*oa-}8CTǏ_917ٝ7> oCTJҁdttaǧTji$!L%511,td F"=M,sCtlAO>SM4[ӭ)3uMX9>F?;#lJ,q@1&rYo 4))3icϐ8g'~FwΩjcc:X=>0ELy,sCtlAOS|P-C o|ФkX MI)(3(|P?g|PkX 1FF?dtN6z} 1t7ٝ7> oCTJҁdttaǧTfԒsCqoa쎖:qO SmK/g|PSϪw}M,qitm LS|8Oc{KP>tr;7 cw o~>辶X-)A>)(wߑoa쎖:qO S9LѶ^ɩ(7 X>HhR5dom LMAF1;7ZĀFF?dtN6z} 1?c&rrS|~}|P-C@>)uKԠ}(GI'N6,z|:EJNhn"} b_M#SN6@a*cR47@)63꽝4SK~|=:o?B;T:(3齄jcc:Xī"g%MBB_;i8 zki?q?ic/r}7;4B]3ca!oQH 7CS{浀[J$M>Nɩt"+{3"kmbW>oQJq3k+XseωAY-poX6:(Ch]>T֚1cNg'}:&6"j)V<^i5땬9ZŲİrY_4"Q^[;dޱ ;L_Uٙ)uKi`P`w{2&S}:&6"j)V/4ĭbbVtFz%?&3?f)?qGM,p 8|=8ڛ1,qǧцCO>7ӏӵob%=.ܿ;B(~7Hgl~6:W[;57ӿfw}=,uY-|:P,Nl"Xtְ&U}AN7ӿfw}=,uY-|:P,Nl"Xtְjq?kJu>Nɩ?>'B"7͇j)ڷܱP%>'hEdvd(Cl4}憵8ZP_"’ThU]j|GSϪw}=,sJP,TOK zsotS}I`zThiLvGK8ǧцZ};g}=74!oQMdom*4TRkX>:&:񾨊+KSַ؛ V.Sب_JOωAY-poY ;篪wc~`J! ęM *4O>#g{;龞9(p zzsoSN6@a*c=>Bޜ,`-FMk!=*4TN};g}=74!oQMdoKJ7Ԛ?JꫭOjm_ꈢd;ڊmkr%Y$T/b%=fEIG=ɏd"(fGՉQ2}I3A#jϳQ2}I3A#k|NЊ Ezl퓇zP`͝lsN,.68w͟USϪw}='OJ zzl5.LkY$>)}K{JNkYWU}9JSϪw)iIҁ!oONM1,sjP<ֲ9%W!m7icRG~N>;i=}7;6~'B"7Ezcv٫cB ֬KKLs;B(~7;>4"C;>MMjP9Ƶ9U~NM M*4E};0SVSjoi|zZӟ#)g{;龞9(p zzl )g{;4}JIӍK R!oOM|쎖:qO S?hnSmKPoRJ5ʿq?i|쎖:qO SmK/g}M7Ԗ= kX2 U~N}K).dtӍ,z}`4 `>w}IjPMX_@F_ӟ4Rv}U7;4}JIӍK R!oQMBe7ӿfw}=,sP,^56ΏЈCv[4G2>@ ^v<4\I';篪wӾiJo,y` ~O}WMu>.|ֵW!e'OKJ̓~=)`W|JsCZ NP|B ȈTr`R{ֶB"U|S|;JT6q5PY=,s=+2N=~=)d`(U-$篈V}"ThCOqdǥS:>'B"7Ezcv+ M;B(5%N؊P|:I// UP^͈;X2I-&:¥7Ǔtw)Zӟ揑 ʯEb3|b`%R}7y3ְuW类=iLy;;n/\C 鸼Aq5PzoSSLK{:I:"&PNkY O14R"edƵ~" 5@V*?Og  ƕ%R}7y3ְ!U֧oSNoR^@7$#RDӨ5WE߾usZ@nw^揑憵AگMOg ւQU'qx>k"U]j|ȸxx:sZU| ģt"+qxE%Sk[SK:Cp:M|NЊ Ezl퓇zĂ(Cf꽝|E}A$|c Ps7Ω:ShR53iMB>,:|B /ǧ5'v5CFФkYLoR4|ФkYWOKќMFw|o}:'S_Q^XmE64S^idr q-Y="Q^[;dަdP`͝Ff̙l͘`aU꽝;|^zoP,ߦ#8Zo[rauO>4,lҁdttaǧTf[L(>ic` #=>@"I B Kٱ|>)??g{S{2?}&5>u_ӟϪ7͙i?;tf01 3UMg{7M?{R(GI'N6,z|:EJ?0HocX9>wocwc X01ic}eU|>)??g{*eK~LkZ >>}WfwͩlSM137@)`ofߏ;ٺo}9U,lҁdttaǧTji$!L%|U,pM;7wc X01Ա `>ww>MMjP̩c@ɍk"q?ϟUٝjo3|Lv cf `>b"g&ٷnjN(GI'N6,z|:EJmI'47 `>1/S4X9>woa;oPs{dtӍ,z}`T `>ww>MMjPR~~N>;6g{)͛|0DMU7oٝ7>GMmKY$8D(I9Sz)63?g|<6g|MjNZoӟ77LvGK8ؕcH47@)6PsU7LvF}1Ol?)c3H6>>-ϣ"=QmE77g|қ攱JIӍK R!oQHwzoP,Mgs{C]jt1,lF X01X0FyjPt1,lF X01ic}e}AN{dtlcTǛR47@)6POcb0ǧцUK/-C" Mk#|!K|Z7FTI&̟Uֶ W类8šoU)g{;龞6@[bjo`쎖:qO S?nnSmK3lo`쎖:qO S9LѶ^Z/齃c:X=>0ELy,sstl?_Uٝe>S{dtӍ,z}`T `>>)}Wfw͔e7ӿfw}=,lҁgjo8ӟΛ@qd )g{;龞6@[a1OS|ݝ4SKY$8D(|=6SMN6%X1*cԾ/P,t I'Rn"} b_MN6%X1*cRctl6@3*P54u&!L%1,tbUO"<ږ:;}eJ RRIԛ0H{dtӍV=>tTԾ/P,t U$IS}7Կfw}M,lҁdttaǧTfWY&S{lO"<t7ӿfw}=,lҁg4MΒNnn"|!&zd7S7~>辶gKILѶ^Zoftԛ}e:I:J7 `>1/oftԛ}e}9b],lΛ_)^} b_M 8ӟ;D>Lg|{M,lzg|O>OMJ>Bޞg{;7P,Nl"Xt zzl){dtӍV=>t,sstl?{dgюS?>cgKznS(-vg|Oe1,tbUO"=M,sstl?{dgюS6,qLCTj?_Uٝe=c:XīF:ELy,sstl?{dgюSl}e`Ζ8!*P5G[ӟ/ic:XīF:ELzX0FyjPϣ"=Qm:Xt@!oN;}-7ߏ;7P,Nl"Xt zjKMgOS};g}=7(p zBHMg|{M,lo>NɩOЈ+KSN f;XxyUB_1{ /]"zvԳ?fuLJocuTݍkOSmI:}NW?|NЊ Ez`M]3̙ѳN|7(CfA^ڠ{ȠT̔ _U痢Rdl攱)@Գ=g|ٝvwSϪwΩt|(R )@[/Z߳…$P^YJIΆ%OH@Գci"P,Nt6,z|:EJ?f6 )@:I9D(691c:XCd F"=S;>Lg}m7R|=$C꽝C6=@ dI֛0FZ_J/-5 ~PɃ>Lg~o=$Ɣߥ7!^(8n/C4A:XM `>w>=,u0F{;KMzXM `>w>6:tlO)jo}AiS=s꽝@g~  )u>MM}AcǓ>k U}9R/ڛOM}9be7!oG }> ?$/38yMR}$^%81\C#>HdIٿ|?H%T"z]B{vl؋w4&5.U;!dƵʿq?^H-CǓPA;JΛU:7E14EDL ֹESSqy"cX I"E"&PLk\P>MMc XN|{M,p zkX~HA|BDtZ5T5 UM8*Th;~0P0^YLhDwөjo-C4OK<~< k]W!K3ONZӟ&S}}9')g{;T^J zzszn/% R2Og@P>t'}&5psOMU7c>BޢĚn/%RT|E:oG }> ?$/)38yMb}$^'> MjN~K#S~4ߥ92@No z@M7΃6=@ Pye(p z@ASϪw!oON#>=,y؛) @hH IkSsޒ%!ȂZؙ*_ZȠ3J`Iߐm1':IUIU7~>M)c>Bޢ>:&3cDR(XE%RZFt֬K %>'hEdvd(Cf692OK17@}WFw|Љ SNZOKɍk>'SN7Pso-Czo8" ͍k"_=$f&jThIz_U*U֧Ňzi?vg'D> " ZȄ5_E7#|ֶ!&%R}7Ӿ!ϪZ`慨}9YMϙȄHsZ_Jnc3龜ֲ0ңEMkMXԒzMk@՝4RONPS/>Nɩt|NE|o"j)5¦) b|NЊ Ezl퓇zĂ(Cf6:d17^wvfDڛTIR&@eTfN̉a7өjmωЈb(Y,}N[1ҝ ʺZK D KGW8~7H";l3cfI3z꽝S|?&@ѭk*4E}A3 oʿq?hHѭq48q7΍k+F=)ȃ(ְ\*Ed@J>Nt5x>UAkX. U~B C"d@oJ=^kZlȃHֳ-UtX=$Yֲ!*4JykUꫭNMVk;_i ZCzo|BkY > " SZϖ*^%?Og浂/FT5pDUꫭNo|BMk;;U}A!Poɭg:E" *4JykU]jvokZ}JjPߡ:sZ@WS|>N`. I*|!E5iQU'I}Wָ-UꫭNѽ7Ӹ?ӾD sZh&U 1c|jMkQJ>OCֳ~WZok[W!wȁ)A`&U m{>HZp2FTI'^kY_)t9j*g|қ!:I9X)>D k"jIZUꫭOeN! J55=|!?OgThIsyk@WRZ5_U{>H|kYJ=^kZU@aN|dZρ*4JykAU]j|N}JjPߡ:sZӅʿg|қ!wȁ(fkY "CZχ4*$>kZU֧龝;JU&2OOg" @%R}$yd~WZ(}We>MM:lE%Sa}Uʈ7ZK,KRı4Kb;B(5%Q6upoPEv ϳc`͙&ى4f+H4oc`h1;iFwǯw͙7g|~xwֳ):cB$3OS}9jPtOK'~<ֵ>'Sjo?g}=7Ӗ4NZӟ" 5|!Q{>HMkNQU'Iwy`}UuF14S4-CΛ攱ƵCu>61;4-CihZocJX9g@W!wȂMk!*9F=$cZ`/J>MU浬_I7XM$R&ޑ^Z&q u?U]jp=7슛{(?S{"q҃OS};\5f _Nk\2>YMp՛P~<5|BBlk\W|ص?:occZA%*4E}A[M,3$r_;) oeFyM;dR~;Z UMְDv,tK *|:wm3‹3)!M78|8g{;S~JX3!oOI2Zo`Θ쎖0ELxzo`Θ쎖:,q#)g{;i92zP}k;7'odN!~vȜCP))mK/g}R|ޖ9ѺLѶ^>XF0F{;ڛ,stlJ|OS}QjP~:oJ5PHN X꙱24ϒ=T2Koa;7'PM;JtȜCPSX꙱B4ʣ7` ,gKS68FyT}K>,uLKQ0|CUK;HYqaB,p UM!ڛkP(q(}UuTS}S !CXUߡ>龵>)S7?LkXhxwė{;U7ӿ`-U}ARwĥ>PjM$?|I<89Sqsc|CXzXKֳHaBce/x7fIju_qbgݒOAU_dɩ"Y+}9PSͩg{;쩾ʑ O7zO잔 Nl"  ? @ k >'S}g}7R!Y)$}"!oN>D5MG s*4Jo|Cֳ UꫭNO%'OLy5,vCdTbXɊOLxNwW&֨$>4|/ k^|!Nvk\Ԩ*龝Z_(MNJ!UMdžM֨*>4|/%ּW"g#NkX,iQU'}; UU~S_" ăZ_C| ңDOw gyw;U&}W%7䥍:P,S{tdt X01Y6 c6@a*c{tdt X01齃:c:X ,z}`L|^7ΩcOB&}W\C'ZEM>r{(?ߦD7'T~JoR:7@)6TǴ7tnSmO9ѺLѶ^>6yK/g}R&STZU7Rߏ% C o kK~PMTӾ!'_`ְnȂ,ֵ!W {>HԚּJ>$7|CɟUu_}U1;ꩾ?ڛ_;i92jeM7ΩcO7~>M)c`Δ 8|E!$G&5ңEMhZ#S{ BThPocCZ@W!CꫭNLccG<'%LkX( ~ɟUM)c`Δ 8|=-t1,y=>0ELzwͩ:c:X ,z}`;1,y=>0ELy;o`Θ쎖XT̓lְN*O>[M!ɓa7ֳS{"q?ܦD齑8iAiM:Ա΍ `>w)7c}eSi?tnSmOR:7@)6Tɔ577Rߏ% %U}97RƏy)&ǒku_}U1;ꩾ?IoqLo?fwΩuKz|E5~Gߒ6 @[REo`?)6 k(OMnZOKk Cu>7?龞6SZ8)U}A7gK=$&H`M]W|>(ƔjPtOKNj{*>nc`lNxkXʯ齍P3zXLkXj*q?ۦzX6(~;D5_{P3zX~v Mk5_}=,l?|Cj̓bjkX*5֜EK;,䰦icg%:oe!*XUl䰤iNK T84RNK >NɩOЈM]"j)h3OkXZK W8~7!3g|Ffْq!,|Jİh7hU辶kXMU}APSo%}A5kX*4E}9PSoƄHg}:&r> 龞8y1`q?ڛOM}9b7ӖwȂ@ֵ`W!!{>Hdž *$Cֱ@UꫭN/i(i$]"n&R+Qbˮ!CꫭN/UaPֱ*4L罹w k =1)cg'}=,qDo$>!9Ƶ%3}MPM(?|:?%7ӾEVlqCZr7ӾEVlp ֳpR>YMp՛SJk73U&^LMpG,ֳq龞8vdnkXtIʼnvF>kX+I"Y}9PS0}WO>4"!oONS}='OJI I ְJs]Rۦg|қ攈VF|E54B3-GȂLֹu_F kV )QU'}; U浇lU~S%Rqd'ц4ӳY>UMdžMn~N>DƵW!Ȩ=$cZՋQU'}; U浂PWZ֛C9ߏ _`kY_揑ѭqj|!9rңDOw<kW类;B='OL~kZTh8 :ŃZ @U7>nc/v ;05z(ce_c}WfrXQS4Ӿii&(F?E7ӿ!4zkXtxs ]5nq-{>HӚ J>n5*^M@?(>! DZáC ֻʯP /FֹRDO}Wndz7L̓v&5*cψv YsjkY WN1 kBzThjPS|P|BBְU_ZÐW!&U_]~ϒ0ָu*4JI85:w$'ONj@*oN!*oTӳ‚)UK C]iTӾBK j|,t䰧MQ5֜EK;͜M7JXaI^56t"+}W>oQM)f1.W8~7%P`͝ЏٱB3$TɟUS|Җ(URg 5֠|Җ(G[t)T3꽝OK*@:I9D(&US4 X01ic7@)6Rɩ?X&58U}9=5 |zZӟ;DXi=|ФЪ8^ONЧM4辶>57B쎖9ǧц6/g}J&>ib<~<ְFszkPg|{MjN>) Jqm c_UoT7M4辶>57B쎖9ǧцNnSmOS}IjPM4B?LkX"*>-*7ǥ}9PS? Jqm c_UoT[M4辶>57B쎖9ǧцUK9LѶ^>MM%}AM7xy1cU~NMjU~>(}WZ:o_$4))Ŵ*=}W=SU7KPsN}OMB # K R!oQHI&g|қ攱B 8|E$%q?|0 ~B_`DFTI%xƵU~S|!R|NE|n9W>oQMɊq̴,W?;B(5%N;LYv̉fuKm$`n NfDtNɩ?>'B"7͈d;ڊlƇ2б\,9\ibi;B(~7LgmM'-|ָu_S8浜_ӓ'(~5 U~ONNԜX|ֳU}=9:RqcZ *q'SjN,X>kY|zru>6浜,U}=9:Rqj_k8~ONNԜY|ֳU~ONNԜX>kYVzru>6̟k>O87Z q'SjN1U|ֻq'SjN,OqW!|mIńZ U~ONNԜXA~5jq'SjN,H~5W!|mIʼnOW!|mIńgZ>O8>kZzru>6Cju_ӓ'_kT~ONNԜXJ~5P>U֧U|jOЈv ;iK7|NЊ Ezl퓇zĂ(Cf6:o~;֤ Q-C[I$CaǧT;>!XPT!jA*4J}odtsc*IZ,V~;֦ZTh57ΙOMҁg@-N}i쎖:qO#H$Xַ*ߏ;龞:P,|E5ֳcK8uK8S|ct"+|؊+KS[0r%>'hEdj&.N6";dPya-(3caE&“zfwϒu浇WﰦsU֧DFH0?{ !ZXQfi, %,l(cb1KQ%7Ly"6@:P3G+ zv#'"kMk6FDD `τ2`r ^_lCd'/$b&@*|C&/ ^_lCdP|!brF"cQn0{09~br{g|C&/s ^_lCoaDa(Z:oaDa-E}APw{ $h %}AP ;3꽝7֟!oONmMbPM,l(F:DyCD55_ӟ}oߏ;oc>BޢĪo? F";ӟ01N!'țZPSJ;,l(|@}ֱp>'Aa*4LM(+̯J,ِ_D|CO*|13%U /2U a4ֱh>SϪw•(p zzZ%S~JXR$c*P3G;F7&&wJIaǧTfv>nMk DTh=JIaǧTfv>nMk A*4LS~JXR$c*P3G;F7&FiAjP|?M7ϋPsO~>(}UuE>Lg|Lg|t,p/-C7LvF}1/OdZj";>6yK ,=SؕM)SV=>t4tl?•1cTǩ>XQ~<J5@b|qcR‹92C3T,cīF:ELy,p/-C7LvF}1Ѷ_K /ǒ@F_EX7wS};mM6YɒUٝzT•1,qؕcHUK<7@)6PM)SF:ELz/OdZӆ*pʰ;OS|~}|K TY-) "7}ANi?fwoJҁ!oQHI#)g{;ocaJ 8|=(Y)joaJ쎖8lcTǚ?uc[R4•1,qؕcHTnSm•(F|:EJ?|Dn"} b_M)SV=>t4}eJ R|Dn"} b_M)SV=>tjX `>XRϐH@ͩ$;0H{ TdtbUO"=U,uF0F},l)RdgTj$;0H{ TdtbUO"<KS `>>-ϣ"<~|El2L}ɒ)*c:X*ǧюS:;}e}A[M)SF:ELz+eٝ2dLM)SV=>tjX@nSmm7LvF}1VٱL!3$S{ TdtbUO"=U,uOv7@)6PR;#>tGVٱL!3$S}S[;ꩾ8x|=!$M)S,z}`.?xo)LXR$c*P54pD)@ľ6@:I8l"Xt ڒN0H•(GI'K R!L%•$[#l!A*c93Joߏ;ocaJ 8|E$>Lg|ڛԱJ>BޞroaA5֠|ږ6?(M(7%KP%•1,saO S6i@0F{;T:-Ct:#G`NΟ" @p]~ϒ1c]J>R;# KF:ELzI6i2ASey3ְ7UꫭN:-Ct:#G`&}WU֧ K)ZsQ#G`0ELzX@0F},vLoaJ쎖9ǧц"iʑ$0HcaE^Oc ,z}`.QC!L%ra"Q#G`k2}UuɅ*oaJ쎖9ǧц6P2ALѶ_K ,oaJ쎖9ǧц""H7 `>1/Si4v̵?M(8ӟ揑U~B֤iQU'{ /y3ַU~S"_FsGȃ> ߧ/5H$FTM(!ϪZPWZM)S6 X01XQ$}eOc ,z}`.?iASz&}WcaJ 8|=8MT͏?M)ST6%X1*cJH7@)6PJoaJ1*cԟFyjPϣ"=Im6@:I9D(I6i2ASz,o*P,֝ObU7FjP`Pq u?" k4uW K|k R%R}7>kL"*U֧ioaEdkZP(Fc>Dk*@|{>Hk M*4JoaE&}W֘8UꫭOaBR;#l6@a*cR( /-Cȃֱ_?Ogk @%R}7LvGI'6=>tTl("dqKgyf.WZi*c:Xd F"=U,l(ҁ `>XQg'{ Tdt͆=>0EIUM(!qo?fwͩmK TY-)B]7N,{(?RD!wȃAa_1E{>Hֳ@/FTM(!yi@W|3|0k ~BL Ogh4*齅<5)%W类>6Z@R'z'SQ:񽄂(XE%RW "s"Q^X5kY'Ev Ƞ[;69-&16{KX^;`τ3rH|!sMPNM햡65_{ک}' kF\>7t1b ;icU/$IhvS7t1bw|]5*ƄHg|OS|е?)KhLk[8OΛS|е?)KhLk[W!9u4jP-ZݕW!)?o<89%|Ҙ(s JnkX"*K|cZE*$73ַ*"kjEߧԨ*U浼9U7ө@FU֧-1QqsmMOKJ}'k/Xo-CF'qsK1Qqs JֱW'QOg"֠RDO4|ϪZbȁ)` * OEij5*4JynE_}:)Q}Uu7)‹{'?Ԫْq,ֲl8ޛ5*q?BS{f/FPtOLy;qs9M=S|FqJv9@ְ@KkN )QU'I5|ȁ+3ZW""iM*4Jyh*龝N!m*4O90MJc齉cmT̓>›؞:R2N'.U7Zob;@A5W'Z`3J>MD]WoZ U7Ӗiw'?M=S|Fqv9@F53_W"济ÊThImk * J$e_ߧZam*4JyaWN'WZaE;IVN#?|vkBwǴ$zTD _5&0U=^kYxoSY*4O;B꟧PZ |zPtq$ȁhֲpR{ֲWN$-*4O;LIuFU~S{R_fIZ@WjPiCQ0ָL~B|H~ϒ, k3ThIm&"K}W\SYr>eMǓ?ϟ"pB@uk|bfwFTI&ֲJȁ(k\h=$X=5̺%R{ֲʯ龝NHzThU]j{-}WJck]W%8iA|% kBCWߧThImkp~%k'U =$XJThIZ*u9 .FU֧*o-COLy;viLv\Cn؞6K8kYhO'T̓fe_{e}A=(q?ӾD IfE_7"ָB*4JI6qv_%k5WN-*4O56œt"+|V"Q^XmE- -VVZ9%DiU=lh:񄗢_ωAY-pnYB6wh͋LZfH"a}M,Z#?|zkX#_ѧ?#_ PO* TZThPsn5R{6-cMkJSٷ_=S@QJ;龜ֲЉJjrWZĺo5)Q-C9T͋A!`x UMgK:Z_7i,td=W|:zZ3Po58Fv9CꫭOi)ֲiQ-C9 :SALcSAjc}W(J;龜??}V@D 8L߽ԏZ!W8EUMfOfţzkXMf{L)jo>=?S@#J}A7`0 >b/D 8IF?U]j}M7;4#G}9lLkkJj(P>KOjl:Ld;ڊlХee^I&>'hEdj&.RMb;d#Ev Ƞ[;6!8̒9)U꽝!ebwpX|J6ωA$'y(ġx9}lABD8Ģ`rOBr($>%"|J6ωA$w.>IǯU~O}UucRMu8Z-pbP-?=|B5pMrC\3bP- f5W'$>Ei6% JkX*]:8Zӟ/wԩT' kJ;T3꽝JXO+68Mqp^Th')N ږ!8$nٝqjNRSp@5iQg}M7CA!Ш?ih%P-X Q-Cu:&t4gpJnZ 1'B"Fy}I;jtEj`W!CꫭN5Xϒ4p-_py1a(2U}A>H%ߤ^=N.U꽝n"%j/U; 4ܠYq?"TZ=$X)5•%R}7 y3ֱW类8߸J+ք*.S{ }9hoU_EZҁ-*4Jngye8WZSpK {L̒P.LkXnoaqN REMrCƵ%U}9ɟ/S!*4Lav]-CX]}Wz*bU2>MMh?)ʕ's^ҟn_;i:q?)co`k[abUٜ8TXɟU|ޖ8 zzq7ͩcC4ųH(50 U~Nn}7,q%|ޖ8 zs;BvkF ~B/F& iQU'IŷycW类8VpK[|C#2IA-kYZ_|ږ9`01ئ!9!8of )U}APSa&}W ,t0FyjPS|[N Iӛ0 7 ~No~>罹8K9LѶ^Zӟ%SpA/-C*٭mJThb4t!L% o~>>1/9*-bɚ?frf7q u?ۦ,sqIa*cCn"BjSp,؄.Z=iNJ4"C;&xZcdƵq?: SS|<-Cot2cZE_(|<-Cn)cm!fI /bapp>uMwZoR7 F"1y)>,9!+HY _/ZapW}n" #69!cZI7Z7Ly;qsJ9!aXְMU}A pxD|BBzkX^"*>#ZbB(O 5_>~ϒ,|kXdF"z=PBrC}GL浅*oaqN CThU]jp\SP*oNHg&H9"8BqZNJ|^zotӟF:-Ci-N}`N,KJ}A7źXϣl)ŀYJ;EMn:sLt% X$9:wzotӟF:-C#S|[5lQ-C"cB$3)jo}A[MrE,pS1apW!:'SSS|<-Cn)cǒ@ɍk_(S|<-C,pCjkYQ W|NPO-|H5CT6;U}9!9!lFyG"V*FZc@ I`=K͈NKQ0|Y~kX-U}9!9!%|DU>x@z!9!%0|?~ְ:~NNHf'p%|DU>x@z!9!KQ0};Bwk*5=~ϒ2ZzThIqm]kzU]jp-7ΜCNH#G`!9a7Z*$U浍U_@|^zotӟF:-Ci-N}`N+ZThC-N}`N+ޕ&w E>,tѶ%iJ(0źI:suMٝc>tZӟF9*Љ |jPpK<~<LkYPLO))m7 OdƵ8ֺ{;?NT-ĩA;uMrCƵ 5_ooHY_UzsM$̒#(n0}`=I$'$3$H1,Br@#C'vg{Fְ-U}9HjPS{ Ǔ?yLv\C9!ȄƵlQ-{>Hֱ[Jb'I$'$R&~L?ְңEM.)2FU֧(\-C oarw'?yLv\CyBpְ>*`{>Ha2F1I?)p?&|DɟNkX)QԨ>!f\-C6)'q5NboarcX\>ša(7UZvwh꛴tP"^uI%!Y5 Ub'~zsZơ*4T❕Q}UuJ_CSZjq?~ MjCDP Ο"9~B2k-(OU'HNH|!!$>"dǧ5S{ pThU]jqK͈N7%MKXlBti,G0Ա FLbZ ZooVNkXXW! S{ }AM.SNj1QqdP Ο"kY`IU ""ңEBI x>"dǧ5,Th8ThU]jpU P\<;I)S'?"^tZbI7"ӚE*4QOT!$H3&LzsZiQ'WZ&6 P cCSآ\<6)%eh~kX^ش5~j+U;uM:q?ԑ@/:J|N֡lBְREM.)RDSݡm_?v ºCDP Ο"u_Og!9Th=TCI!9!e/3k zTh81 iQ}UuܥNHf'4#I` |[|B&=5hq?'$3bHX&%,BrC42g{!9(ְbELpkY`ңDOokZ!]WjP{ r2ThU]jpڛ\-CoaqNF QSEMrE1\C ăZZ̙{>Het*$ִWUꫭN0_$xIih?H%T"z]B{Z`͈Jz(MrCƵc5_J'SpN-CGȄYc{TOg MkJThI'$>!ϪZƁW类8<(Ly;;SpG(?:nj'S%)?J{I$%22sZڲ%)?J{I$%22cZS%'7`)bv~) kh*HJzS>& j ~(MQ1>-HfkP*T5*9!.=f'6~CZ!wȄeaW$B[|F*$ְbU]jranȸ2f'7~<> k I'BrU7 mb[U`x%?LkXCk9PS7 ŷ;'fI d浅W|<9"8&d<~6E_!8kYXW$B|Z%*4Jv5f ~SS|3iKK z@JuO浖E_?} >BtCꫭNSSϪw!oONpKI'Dh?>@Oǒ@ k DE_JsM7ц$R'$37 y#AY:'2Qa9tߑ3%7䥎 zkC46*n&5(iQ-C!8kX\*|! FZk[j)QU'e&J}Uu)NH~<"ThPs3|N-ķ#VQU'aHU֧i7 ǒC]i!8kX\9Uh| e`J=]k I*}Uu-9 c6-C7 hf&&5l|!Fea*4Jv5) U~SQ9 a(zZӟ'$? k RDZӱ7ȁ1IciU~BF\kX^*UְWUꫭOcn)RPSpFx0P3| kʿ|! 䌼ְRDO}WcZ€W类=)NH~<֠ ~)>)cCSU7 DŽG+ f*C#ֲU}AM7 DŽG+ U~PE LZkX ~B *4QOT!$d">"dǧ5' QTRDSjP{ v#zThU|OS`|NE|nE$.D(Y,}N$obY,?$B6wΩt _:#_:a87` DkL罹wP};v詾;j>Dh@SDB$)F |^1Wǯa;zmkFqM ]-K"Q^[;dޱ uM&cZ"Cm)7ΟFD_ӟܦBAcJCmz&6"j)ZZ(!*z(doXEv :Ё||xxoΈΙOM!ɔS};ruNAYM!*|"1ODhJSDDB()z'SQ_7͇i鵭ƶQ4T/bl%vPj+Kgl?$B6wΩtR5&PsY2[M&ZaCf|{M+k sYJrOHECZu_ӟCOSl~|NE|oEzcvIcZ]6BE;B(.W Dh&gl?$B6wΙ| |ֲpHsmMR{6:w+*5`3U7ΟtkY8W~OV`kY8N?U'*c@p 8zEAkXXf#ZƢm*4QU'Nt{fԨ>ŴZf q?ZOf4|B&LMHEcZQz7־!0ʿRy;>0EMMf_TC<"7־!4NkX*0}BxwQa'PH:|1 k |! ŗ#流(I'Z{f'vS>MM:RŷM]"cZj :2Knd^cωAY-pnKNEv ͊U^znU-CI(EW"`!b'ԆLw};}9SMЊ}9PS"Q5 p$)R*EJcݡ7B*Sh kPzk[AWB*?{lv=5UԚeW罹wU֧Bh~@|B 2U,P;=~@ֶb߾֠w*OM!CꫭNwB|'5__Z5g}=7Ӹ;B;@~@|BMk*(EG`БMk5QW罹wU֧hв~@|B`WB*?{lv0ֻ,UԚ@W罹wU֧hЇEv.U,P;Z3UԚB_CWZ‹;_tּ *(EG`ВZUԚ w};}APSڅ>Lgt2St2RJJ=>BޞIOM WK2'/|`%|E ?{oƵ ~Zd1U;龝>(}Uun3))bT%!oQMt| 3''5%U,P;Uʯ߾֡,U~zoq?U]j|ص?Կ| 3%)U_);}֪*߾֡,7U;龝>(}Uuz'S|NE|nL"j)Va eJ>_$q|NЊ Ezl퓇pI!3gv{;ݥLԔXN}2cZơ%R{꽛=,ZR͋Jbҧ CO`O>ݠRťG[boA*O ?&)QgvF[%8=Thݡ&PJbЀk^CiR7iP<45)QgvIK=$ *15Oe5W}-7jG,XSdnԔIh<P|:DPj|Bپ•&whMSvkԨSvݠ-*>Bޢo}ְ8 QH56h|NE|n$Q^XmE6žu,d|NЊ Ezl퓇pI!3gv{;ݥLԔYKfcZJ=^͎-)fťTiSޡNJ&}WA7h[Mš֪U}9bx6@ц)5$JThݩ)F浅*4J| Uq5*4L?-CiF浅*nx}ݠRťG[SZ:o}ְ iQH56h|NE|n$Q^XmE6l(X%/YωAY-pn(Cf tP"Pqu U0q j~P`zPؚwizP>D _"Ia@MJ>_ZHU֧^mcZn:w/R6`֠_{MHz "ѭBWyA$*_"?"&O>56_Ezcv`vig^,Q;;<\;бz^>'hEdvBA!3g{S{CORI^l@lQ}hBIOMGo~;Ε&w}9c@FTCOSkωЈlE%Sk[VZ,,^;B(5%Q6tk'&(Cf ش 4gv}9NBJMԨ3PzqgOadְ.U.T=$aQc"M*4QU'vLnzsZ iQ}UuзMKP%4YKfcZ &w)JYݩ)R81 |^ݠ-H|=- t4An.F"~<%@B @jңD7h@5 LQEU/|6l}`&N!gOapֲpW T~ϒ1cThުOT!"kB $ґ]lqtD)~Ӛ%;]7)bx6@ц m*4Lѽ7)bx6@цL֠-Wݣw,SSa*4L^*SݥN!tݥOٝUMJX Cqu "~<)IJ_nҧ*bЀkP*>-,ZġKю? S4Aؔ7ibЂ}N5WXSңDC>4An.F"~<vTOKҒKADJpiQq u?Έ:|1k|!| k'ThުOT!"kB $ґ]lqtD)~m ǧ5 ֕'WZGM75)ThAgvnyK>Bޢ=S٢1:TI5Q6t+KS V"S4\a҇K(>'hEdj&.NL";lN?fĜ<%PsOeTN'R>">3ȃZ_|Fƕ(~;֠3)p>'SM'|֠IF1;K%-Su*4N!:)8xZDp0{iQN>%-SʿSgO Mk&~B ~ϒ-IcJ`I?N?~=9@fңDRw'qY@d9U7ӾR-*4N!֓IߏNkPH)jlNܝ9M]"j)i|M,k+Xry4(^}Whg}M'OLyC;3꽝JoRde'[Ӱzcic.Js)|_fI͍ju_SMG7ӿ5g}=7)?zP2-)@>Nɩt|NE|oSjVxK(!y|l;B(5%Q6upoY z͎|̓MY|zPM{(?ߦ;Je>YK;zy3;=~<*|z=~ZjzoL7_'g}J&}96^OhOSD`W {>HքQz=PsD9A~aPtkPG>MXY>J1,sI:s M*4T4?-C3ȃ#Zbz=$XX5OJ`I?R&τGB /ǧ|L kPG iQ}Uu7ϩcg'56ΏЈDQ6t+KS6򉥝`{,F8[/"Q^X5kY'!!3}WKYݦ "\&'SҾ2%H; Wj9AB~/_(5WNv|̕ɖGL6rm&92Ȅb)Qg}=7ӾI?O&[|VkY7iS;O>ݦݦiitgvٛ3LȠo{RX_Mk%1;Ru60;4LP}`Z5F99>攱i*O ?֠1ңEKݜ57)bT(F"~1IF992zoRŦdQ>0Dc0`kP-*4TɔS|Җ-0 B0D@֡h~AJ;ɩH}AA Ƚ_kɔR]cd j}`joRŦdQ>0DyA@`gJ,sfr{}J,sfre46<- *ْF"YBNn:XSvfwi7)bT(F"~1@^QlL攱i*O ?SZQlL攱i*O ?ƕ*X^iQgv)H}9B7igvSvRť[RI4}ֱx6F ȌA%*4L辶:ƷnƵRD+ iӟH:|jpUh)OgAUFTC@~=9@^ QSmMT-SϪwi7i,ZZ|=8EOH/ѾEH eֱt$F'}2nR}L}`7Ǵi&ϣ ?PkPeJ,q9>XlцABWJ,q92joibLF"~;j*XrdŦd?>0ELbt)L;›–-->Bޢܦ:ZɭJOjl1Ј"M]"j)k2̳04vPj+Kmb5$.V5l퓇p'ȡXKgq՛ٙ$r14rXWK\q0hr^ _7NQ09} OBr($Ģ`r PI,bR1;ωD8 PI"5NQ09}P|J @|J&/&>% gĠD @NQ09}OBr($#|!`%>τ0_$xI 0 _Pqu U8lpXܱ-7-C,G(߾n#N _-C,G/|?|S_߾nkX Cv5J78rXね7PSqˌ8SqfZSqfkPJ=XZ|ԑ@/:|1 jF|!1{>HijZDF1I?~=9@ZQ}Uu7e}A53~# TWr?Ա~Hөp>5|Bh~#NF }A5;FN_!X@5Y.FT֖#/£:"zZ57MjBThPs]ܱ*#Sq T+ңDSr POSrf/c*Dm _$[Syb3xӗ1*D$B)b7CN&w,r8ZӟJb>rljp ~ ёDW罹,5 &q? aaBңE+dd֠$ *SϪw}M'i@ɏ_%7R6@hl}`(|BB,qi@VIF9!j41,u#d"}W%g{;oic!oOI0MJXҲSCc(#`Oq?(Y},u#a816h|O"| 11\7 ?=}ABnAwR6%&Ա)qOhl|CLrF:DPkP2W|ҒN= "6i%}"nl'&#ș˚S|ҒN= "6}$HD MHɩ,qY)`\djj=> 8LKHN McSȟY唟F#' P)U7)cJM Oǃ' CZ )Ub'ӟ'ic ,sC*yXX}ȏH j`joRFȟOCjWNtXY?l'&ԱOb1\}ȏH 0loRFȟOC& WNtXY?l'&ԱOa0X7 ?0 7UMJXҲSCc',:Oq?:N,,R6jXT'^=f+3>GO/`֡\MJXҲSCc֠*_"{}9qaf:R4>>1\?>GO0`֡]biKzVJhl}"~<>!4)K!P M#`zR *PQ/h "CDFD)4`|'7 ?JlZ`?R6cH%c&roRFȟOA9iA !gIŅcXFpbmK Dfb`}ȏH>`֡YbiKzVJhl}"~<>!5!Ub'ӟ'ic ,sC*yXZlW,$F#'-6}ABWfwǴ6>Bޢ7OMCZ>F_;i 4d[RĪo5 5*4Tr5q9ZŰoM-r65Z|^o(1qaf:(16Hj~N~/lZr6~^kP3q?U]jp&}Wam7b9l֡\rXvi2cUFْI㑵'i@I%a16>@"|SңDNH>D&1U =$bQA'F1I?9?֡\ңDSr兴r6Zc_İ H x26̓oM#b>r 4ԍA,G#cz:DM,%F:DkPWr?qaf:(16="|OǬ1'Ǧ@>U7-CXY?lJ Mb9J|GH=f&ю?@1U7Zi8LKHؔRr="|OhzM,"~6@pn9 P-'icjXC3z:DzM,O"~4#Zfn9NZi8LKHؔRr>'YQcOL=5U "]AwR6%&ψV1'MjMJbrcjXT'X%F:DcBbW 4ԍc(`^@zjnX> rtY$F bl|:D@zɟUi=b3-1,u#bPbmKznȟSfbi`|"">b"~08o_;oibX zk%SqɱjP1,u#dC >"fd80g؆SZbȠaf]ԍA,G-F:DkXlb'~7?ԍc(`^kXn9n#`V )Z1grc}ASM-r65!r6-Cj|^兴ܰ#zP,)ޘ쎖%dr`\֡T*1Cn97;#l}:U~)akgrnX[Kɽ(p zkUpU7Կfw}M'i@ɏ WZ&~F!N~ЧM#gZ 2SϪw}M'i@ɏE'icjXFюW!lkXC;tܰ3-CyAkP1UA~ϒ,+Th=TCI#"i`fzsZPޕ*nX.Ԩ>Tr65U;grc}AlE Ȝ֠.b6~ϒ, @ڕ(OU'HmHXjp%FU֧'&"]AvLAwLiQɓ?u&S$M'i"ϠWYA[I'R6jcbl|E F:D 165AȠaf]?u5 0165 5*4Lw ?)td55 G*|!|a`֠F >1I"da16~foǧ|Lja^'WZ%(l5S)ܵ?㑵,G&浆WX?q7,roJ>Bޢ]ܰBޢtSn9&NTXY<>(}Uu@/:|2-5 W {>HzkPTh=TC5 @r%>Lg}M7af zzszN3(YlJ M|'>'ġ'$":Th%}7Կfw}M(1$ n9?RqafgsU֧SϪw}M'i@ɏq@. $F bl|J"|B5TFJo~>辶P2c-)K}WɅn9saV 4Ǔ8m9="^td@V ~B6=$`0kPF"z=Pǧ|kPzThU]jrfTr6-Cn9?N/5U֧&TɟU辶O,ҁ!oON Sqړ 4}$HD MH$iRDNH>D)5"_#jA5*4QOT!$!&'WZM/ٝ4SIP2c-), g &~>vMH.AL6@ Mj kJdg'af]?f`&dhcZRE+P H.>A֡` U~B _ `.F0a񈞪OT~&/ǧ|LA)Q}Uuaf]| jXFtX(F:DkPね  bl|:DLқԃrgJ954ϠWX16>O$Q>0Dx9@FfAw g+la'KYK#Oal?5u_ o>]cdC >"4=fI,ϣ ?C@D } &}"|DB=fI, ?qP֠"_ o>]cdC >"YKSOL=}.U 36@ M0 z̒X+F"~1x6 j WϠWX16>O2I`}`T5_"}7,GH}3%u@t(O>SM4,F|=9'i@ɟ@(169y> ב>'dD F:D|0Da) Mj*ob3-)E 4ϠWX16>O|ٙ$Z>0D`|!֠~]|  &цkc+C@ɟ@bl|E >kB'SrN|NE|n9ȬkȤ(XE%RLOoф\aҏ/|NЊ Ez`M]gl?H";lc3$t>Lg}=7=!oONmMc:XīǤ1#Zq?e7ӿfw}=,sP,%S}=,sP,gOf W'~ϒ,֠*FTCI=4~LzsZREMZңD=7ic X01ic}e)jozoR>~< ֠~CU}9N4?g|қ慨}9b7 P7ύj}J=1,td F"=M,ttl99>Աi@:I:qc*P54tqXi, %'S:>'B"7D(Y,}N G8iFB],:fZɟU罹zXi@[ӊ[LvGK8ǧц:7@)64jPS|O[LvGK8ǧц6tnSmiMB>([MdtӍ,z}`4΍ `>w)hZ4S龝3c!oQMhU|O>7͇iڷZp:\ICebzĆwΙ֩g{;龞:P,ꩾ쎖:qO S9ѺLѶ^7 P}7ӿfw}=,uY-)F}Wu>L6Sj:#h9Ceb"Q^X5kY'H&B7{;4^(^)3^)^*3^*^+>D&Ԩ3$oݍj'w)hu!m:sIgO`֡TZ~ϒ2Z$ңE>Rzdj֕%8Jc;⢟&}W^*pU^*!oOKFb&@Y-'mRHB'*|N+ *qu 3꽝Z'LM7 jP2- n6icRI Q 'Oe Ps=7 4rVKSbN,X?>!b;+%قe_pV~>l$5gqMZ')>BޢS|Җ!x6@ OyC27?Fb 43^)SpRq6" LH5 W!#(H djA*4J|MJX*O'| &U~ܴ>ĬkPʿwMjKJ;7 'zqgOa֠&0U,4~ϒ1B ңE>RzY{옖zsZx iQx}/i^*/$4}L5 zTh" e8 Qgq*n4D$l&?O&5+v5!Thh5A|$Py>D Z*{>H jmJ`I?|Ӛ*4Jrf//3꽝V,BP zzszn4/F0~}`$E8֛ц^3^)pU~>/ib[SXɟU/ib[a!O>/?zdgqMZ =7 ibbpLl%RфtOǔsޛ TdфtO`֠*{}97 ib6@ϣ"~;j˪>'S^+?fw jn6)gqMZ'F|E5/?zP4g[ӓ؊h5>OKτ0Aa'<.)~xkP-*4Th!xkP]J;7 'zqgOa8֠$;Ul{>H(FF0}BxH>P~=9@8*4Ow >MMU3^*pU^*!oQMC>LgpVqU7 jP4g[ancCZCu=J|^xMV!x|=8MƃZXX Tya>U}9oMƃZXP2c:'PkP U>sn4l%RF:Dv#d5_ӟ}nٝV,BP zk[MV!x|=9:iJh;q*H3D^?tE Wl%REߺ gro'^)Hx}/F!*4LT/CȠ:| F U~B ?Og֠$ThުOT! 4|GӚa*4Ow nٝZYl%SpV@џ!oQMCZn4l&7F⊟'SصI:jr(XE%Ro'4 eJ8!y^|NЊt͎^&}WiI&;iJ zzuOLy=,sZ,U}9YMǓZ_fIǦ_t4~>S};,罹'OJ zk_U|OSl~|NE|oSo /YM/ٝ4SKT!oQMbM7)@[ӟL}WfwǤPy>D &2U1(~ϒ, Mj:ThުOT!$="&SHOӚ'S}=$_~֡4OS|ٝzode'[ӛA|l!ZA~QKd j|E F:D#ajٝzoҁ!oQMbM'OI)}wkHɟUdɔ3iMzP2-ͩiL~~kP<u_ӟ}7ߏ;4~Rz$Ӛ#ZHMg7ӿ5g}=7ͩ?zP2-) "7Ǫ|OSlP>'B"7(XE%RV/ j/D̳<9M/EK?;B(5%Q6tk'";l>l;N,.6:cNɟUS|ړ'F|=-6ɟUdɍ4(g[ӛ|Ҙ:P<֡0 ~Nt7~>|w)oIҁ|E547"'m!oNyBsZW %?Og"f(OU'Nu4;j֕(Iͩ"@{zNln"6 L|E F:D#)5WY=$]HZkX.i"ϑ ~sM4rzI9Uk\7}9|H:|PZkP |! |cZ J`I?Du4zsZ'ȚZ]J'OJ$Dm192zo?fwͩw|ړ'F|E!$YOjm_(XE%RBF7ZK(s,&SKx: E<VG(?$3?g|k꽝)uKi`j OMXMk%R{꽛OSl~|NE|oSohY%9uG)"Q^[;d޶dP`͝36;'{;oM519E7өO>4,r5(GJh|=63꽝4SKJ>Bޞ iF;#lJcTǩhnSmM51cTǩ>4vM51cTǩ>F `9J;#S!u>MMr> oKcZU}9N7?g|ޛ}9b7PsNl:ߏNkP JꫭR}SM4ԠY-)[g|қ攱ԠY(#}:'S=>'B"7Ezcv٫l+XJ/<] u,"Q^[;d";bT|#ْyNt/ UP^ /%G*>5$zrv5 jTh83<~5RTCWZh*)g{;4Q(p zzF:&}WbT{JI%OH@h>_M7*=4"C;)joZi%,J$B Kߏ&5U~N7?g~JoZӟ&S~B>bbTzkX;i?S}M1\Cu8TFSϪw En-ͩ!h6% R}a֠U_ӟ}nٝv,p zkZ.R&Mj~B*_kJ>_5WkPTh%Gppi.bdT/%8{;SpZpFx12>(}Wfw*&D!K3=}V;ܨʊi jG*q?Zo}Q;Zʊ)QC}A[I$>Dj_UHU7ԿB0ңDE4*'TRZ2U;SrI$|3JkP~T5UIuKI:sqQi{`zsZJA5*4J|_"?|֣~w*(E!IQCVA֠jU'jpWgT*>7 `>%!Cj-*4OkP?T)KNJ!:)#$U}9R/Oa1^hhM֠ q?i#[$*r}AmI$-/rWyBR_qRǑVLNkP 1F]j^%=i#m*4Ltߒ(i9uMm>Sp[qJ9$[~SZʿgp\hPI E :$Du_U4U$S~Jcnn!p򛅢ۈv1ͩ$Οh֦C5_Z.Sp\q?i$" ZT5_)8Ωc+&|BlP~=9@* Q}WcZREMsQ1,sAO SmK9LѶ^>MM%}A,S}M1;ܨ쎖9ǧцNnSm=cXҁdtsAc*P3jI:sqoicg'}M,Ji@:I9D(ND)@ľ:lJi,${%be0ԱԳbT6#I`<<1 $;i?4 X01ic7@)6Rɩ?R͉Sdi,G7` ,4RZӟ) $xI~h"R=N.U~xJ F"=N.U꽝’E7Ĩֱ`3KPZ~o/'5龥.=~fRw I)$8TRkYhONRƵ$F_"/fkP/ ~I"$HRH|B |3j`jR{֡%bs"ob ?H֠` ~I"$HRH|Bbq@~O}W$ʿS蟾t"sZ0WߑqZH*>T|$)R/ U z_H%B'*}WĨ # K RRIӛ0 cg|~ɩ?i꽝b_&5 W- PsU֧hLy9c@@7 Ec؅"'jo?g|ޛ_"~>I ER~y9A~I"$HRH|B " ZIZHMbsx(!N-)'7`b1 ;>b ?tBD@sYGdt=>0ELx:stl7}9ibT{JI%OH@ͩ$B K*o??g'|{KK9>ibT{JI%OH@t!L%ԳbTXFyG"V!FZc@ I`=KK6%Ei,G0|Y|ݝ4-㐞*o-CHMʏic ,z}`,t0F{;_U57Ԗ-icZbw EZn}9PSt-i'7`cvhLy9c@P$M4}K\z‘@֠1Unt$)!IE)$SpPI IAPf*,5WyB@)U7 EZcآ ;SpU<1 }@$ FW!Mʏic ,z}`jX `>wͩ?-CSLKP,Nh6,z|:EJ?7 `>1/S詾8MjXYSKP,Nh6,z|:EJmI'Nn"} b_KK6%N|gіoXRR͉R24ʣK>QM,no-C%Gdt=>0ELx:stl/wRZإOS}M1jPwԳbT%|DC>x@z:lJ#I`<<1 $cw}M1jNXMjPSrc:Xd F"<ږ:stl8Mʏic F*cӛ0FZ_KP,Tf%SKP,Nh6,z|:EJ?7 `>1/S7*=;#h6@a*cͩc7@)6SM%}9YIt>zsZpJ'ԨS}M,Ji@:I9D(ND)@ľN$3#Ϫb7@$YJHI,u4}$DK#M}OGR"fԉsq<XYܨ쎖9ǧцSK9LѶ^o-C7ԑ7`?Y)g{;o-CM4qdǸ>LgpFHIҁ>Bޞ7REɟ")5*Co cZ >'SR#?fw Djn/>~<)?zP4g[SXM‘'F|E9m,u,ؕU1 $wv)8zc/=SϪw Dzn=(g[ӛqy1,E素y@^sOH})鸼wpG@>BޢĚn=(g[SR͉R4ʣӛ0ROaJ'<)g{;"E7 DO잔 zzy)")@Z4*>q}Ǣq?:nٝ‘"~SI$_E"&SH5 *|:lJX*NoXS}K;oKPsXMٝOKP,Nh6,z|:EJh|E"ЏMG7)bT{J>Bޢh<}Wu>MMЈʕEzcv٫$ wu$`j"Q^X5kA&p[Z+Aޱapo[dP`͝u̓mbfbP ),^`@ߡ!PkQ(*aBB(2U}9zE',zkPxsS$~:J;57gK)߹HkQ(f,J}W*4Lﰦ>E$"B-~PM|B3Z@-U}9E'N X(erJ4*XI!P  °nV>IZ ?{pa#}3tюh I:hF95sphKDJ@ L"iH $*XXØn P °nV>I\$?{pa#}|10jN hV94cRN?phǐ_:5CF'~'B"7b(ޱ`dzŢ+Ų)&p&.EzcvT]p{vPj+Kgl?֨%3cl8Mb(>4g}M7p71v1|t.Th57ĺcB$3P{MǓ>65C *q?ƯXe9ȈZNZӟ%|֡ RDgM(֡ ңDOS|K4"C;龜?S}=,q*N=~BޝQM,S|3iMJX4MĪE|v1:~j;ңDcZ,ңDɩ#_(Y,}N Uz%K@r|NЊT،͎%$c173꽝JoR@[M*8JI%OHj$Cu=>Lg}=7@:I9D(u1,sAO S?/g}&">cǒj$q?}}K jnX[ԚI>(}We=*cwS}jNXM:쎖9ǧц6/g}&">cǒj$u_ӟ{`x_u]Wķ5W!C)o?g}7N}OMP,Nh6,z|:EJh|E5 S|3iMJXu(p zj'}Wu>MM$S[7’ ֬K vPj+Kmb;d$'";l1#Y1dXb-A["7j# ThH߾ ^@B'*|/ DHSPqu U1:Z$n1Pj|EcB$3mMb>mKy1@ *>raB8 z7ͩƒk9FS~n1)c?H>sZ1U}9S|ږ#Q @ kP8Xs3j#mT̒1@5A UM",F"~̒1#?~H ʿSoSmMb>8Aj#Q?fI~<&5qW|^zn1iSM4d[҅U7b*?TF}*# E_ӟ6XEGSģZʫs龦HX|Z̓w)hZT,F"&5U}9n1CB(11^u@#J`I?R&ELc0ְ6!:)iKy(ְɝ'b|kU!:CjXO?5*'TbtPIuKVJ|BmӚ ZThU]f.FOb|kS!^%RӍMjwSqӈ}A',sGY)p$֡ iQ}UuzThT|/?5zC n1b1 #oǨ} jAʿj#Q?fIǟRƵ j9}$b >jA*j:<$D0:kR _ZɩX4"C;6-C7͈…7ԿTF5A*4QU' zsOmL~7͋Psĺo:#)jn1)7͋Pm7ͩc~<RƵH*>'SmLvC]i龥¢1@ 9F99,()7ͩ6jNXMٝRcA4OKJL|E$b1i@ɏ?i7Tzd!1BNn1b1d) @֠_jn1)7͋PS|ږ#QnHԂq?Mg05YW!7͟"?|~kTbuM'N!F'OA]/wj``kP1ThKN55|gq78RI>![@IGU=^kP_5Q"O/$ j#_|ژ(8ӟ>^Z@QW!*oic3‚KMjcKz|96}S~PEЊ&EG,N|A<ңE>Rz$ԉa&~1xkX.!:OM",seR2HF}&5_qK#z W|mMjcwͩlZӟrb1i@ɏ?b->E6#!zЬkP6"j#bN=|]f0}BْF"I@*Ojl1Ј"aM]"j)hNm2q.;FvP`͝cVlFcg E^ ^@B'*|/ DH~ Pqu URhgrm3I@lǴf6qdyIŅ}ASIņa"',P|VlkQ('FŔ,XZӟ唜gO 8 ?֠ңDS:A݋C֠ Q-C3ꆂ@ Qgrj)bL{HMAd `v< BB`R VR"#qy46)r\LM E%Cpd0W&|EߠN F5QǠՎl I95q4c8 iQ|BL|*4LR›}I@OiI}APS TܚI%'ϱ IOljʿgrnRzP>]7&IIBeQD0w)='!CNLʛQI$%.?L5grnRzP>7&f&?N0^NkQɒܤ崒JO_ P(Wy@"*P=Oc1G/'5 U~'ܤ>-RzD cZU~O}W $G)T:y9Jܤ崒JO_) P.Լ U~O}W u_rj"ħSAT*OiI}A[I$-"$/U'jU7&4!J&P*nMCħBq?Wm3HMɨ}Hc10֣_I7)=q?i$!Ke_U5_rA;I)5b)N/'5PXw)='!m$ S|5pT5? Mɨ|YE«>ĤkS6*SSrj"ħSAS*grnRzPI)=|B EgȁIKU_UPU7&IMXaUj%>7&(UflJE' G *5r ܚI#1\5}Uu/SMKP|ƴƄHg}7OM~< kP4u_ӟ؞f5~!Ӛ >'WY@"REMɨ|/֨EW!tܚ Ƶ1.F;rXPSjo?g}7 ܚ>^U| ωЈx vZ̤ZuK2(nZ>'hEdj&.NFEv ${2N'4 :֧P "8=S֥F'S{ Ũ}9POnM~Z &woa9NS{)-Cd|P|BhY~N*4N!(<Ο"j_OE|֢@ңE>RzߏNkQ$RD>t>D)ҕ'zu$Py>D(:5A{>HkQ 8F0}B֢: *4OU|XT>'B"7EkHd;ڊZ #:2QyܑNxq9z%;>'hEdvbA!3g|OS|?Jitl֠f*>-|j@W$C#SZ ]JZOVjc5_ӟ寑sZUj*?Og#Z%)%S| A@ *>-| U{>HB%;GT:|BkP2AU}9Z'# |! GF j9J)ta0֠d U~ND ZW Q~ϒ29@RDM&5 ~ND cZ(~B F֠p )QSI-"*>-|FP4UF j]*4J{| ZjCȁ8kPU_ %=:o>!X֦Gjq?_"⡭@/FƵpoJ7ΟNkS'U~ND Z$ ~B)`=$a@):OV(5BBCȁA9@IUhh=$`֠n9FOtbZ~ND L|!K_j@%>=֠ʿq?_"Hbw#ZFOD&:&6"j)GNljoTLqƌh(G1LERLPH"zĆv3c;龵JohyCA@ ~ɩ?>'B"7͇j)ڷt@;B(5%NH";Yܜu$3Aρܞh"FPңD BJCu>hΟ&g}=,IΩ$߾hJThU理:}hzsZRDɩ8ܜ؊+KSGiba2W Dvd(ClsdX篑bsZ |^zoI3SϪw)iKN32g τGB (17icRIӎ̙)Dt &a<GO!FP{}9{K('> |."QMI:zDrCP\"CDFJl%8D P\"CDFD a#D!.|K@]o?fw)iKN32g τGB (16wzoI(=|1 k ^56ΏЈDQ6t+KS6 8DL;B(5%Q6upo^Evl̓fى,}WuK7I&ŏcZHٷ j2[M!e$kT֣Z`>t(}?5~oq?)$_Tj8E_KOhSwŪoN!Pj"ENFP/ob8n*4QU'A;%,tѶ;{{AThߢOC~jkPx U~oq?)$_j"4K5jZ&}W{Mߦ鼅0\0ELy1|0DLM7\C(IO>=rdzo!L R!#FZ954=~>|92k֖6m S5 vSR&n6Iְ79M!Ng|O|3oM!N,t[N6bȃ2Zؒ|YS#?}K䌤֪'v8ږ6nM" UO`ߑ3!MtߑNCThުOT!DPJOM;D6'_cU_28!0F0}BEThl65 Q>V6m N*kOjmbst"+{dQ6t+KSk e}) NI$;B(5%Q6upoQ =g{ccdRM꽝Ǵl}Hj_""|ְ5{Ƶ~''q?)$؝^lZֱt _UNL6cD?|u¯!e$!!%Di@~kXI}We:M8cZÅ_齉CI6'|B6֠T U~kXwvS齏_c5'U;؞؝>,bw!wȍW测wvS7&g{S{8iA8A.)йM|43*>DB *4TCOmwj|⡼a-E}97Cx^Mh1t-S{oٝ|T7%?R-S{R}`j,mF6wJoT}h-R%F8=g|Z"@42F0}BHRDSiM|kP,JThlP5~jkPg{{唒lNN,>DhK5<5 e]3꽝SMR=97I0\0ELzsH`͟e1 3齊_;ئإ92k57C'?(>(`(SϪwM7Krd{STNJ񋠼`MR}4.!ɔSXMfwMP>cTԟF"g|Z(F(SϪwM7Krd7I0\0ELxI&eϘɊ/ٝSMRE5*|^))qLoԱų/ٝSMRE5Ƶ]WbzobwM "4( _.vS ll=}|}Wu>MMt|NE|oeDQ6t+KSk02^yT(IoX6:{;|^zo zzq7Ωc 3%A>0ELy5$ nGц&g|қߏ;龞:-)H'Sύa;zv2\DaDO|NЊ Ez`M]gl?H";Y=f>,sAdsZΕ'Ȅ±`dO>OMϏZoN2gJ ωAA>t.MMKȄk#>Lg|қ攱i$13&|ODt R!oON S}8LɟFpo# t^cOKA(">HA(">HA>@H >EB\zkXG$'7;4{I'NA9A>@"&>BޢS};g}=7>>Bޢ>Lg}=7>>Bޞޛ:rg('>Q*P2jA>tw@R*o~>罹zX[SX56ΏЈDQ6t+KSyD5=Y= ;B(5%Q6upnKfEv36(Y3$fgt#wBSt$g< R BjTh8C;Z&h O)Qgt#n~PvIgO,XkP1U_&F٭Lu*4QU'j9J)%St#h^kPz"RDZvUٝЇBFGm " -%>Lgt#n{K,ϐ *X >0DmAoJjParC),PzV>@蟍{ A!ZX#St#I(YG>'@ {@ְ1zu7B8St#XeI%P|?B#Za!WP57B?DyX"|4 D F.}W?57BʒJD&1'6!M%GBʒJD&tS@D?BZ@֕*N,QK#8fƕ&wBmMЛ8Atj#YW"rkPԨ*f*N1f(MjfQz=Pء6w5"RD~n~9@&F#R *I(Ga'MNm j=v'zOMЏ_;t#Xf|E!$SCs R5 U|OSd'DWXD(Y,}NПeG$8KA /;Q%Q,W Dv-!zHءd̒15~g|ѝЇ|^zotyt$jXeI'N6 >'eyCȔD!*4TXMc_-+v5 Qg|қ!(<Ο"X֠`105 )Qz=PǶkQ )Q}We: nٝ4RPareK8XhmK!"j3$dB τ8H}7H<|"PN|'3&CX('>KҒNl"P}ȟ'5[_t$jX攒Pm7cccZңEMБb$8Dhl|:D>!ExQllzm[@Ε&w)hN"% j@_MOg`kPJThުOT!A>Jnٝ4RPMЇ3&|PN|Fψ"& R4 ">OǓ(,U`b?CJ τ0 H:EH=ɩ7 3&llkP2cJ7Bx2gJ ϐ}`g;SMБb$8Dhl|:D>!E _=5YJ''|cgoݍjd3iMGZsIgO,֢)گC!|(~{fңD|XMSM.!Mвl,467N2c!}z}tib?MӾ('>̂ șɓSt!,t AiI'R6 >OǓo>Ƶ2 QCC>Nɩ3b(|E$)b9=^56Bz|NE|nM]"j)hLFSKyf"Q^X5kY'dPa;#>N,P"b?`01FI͟bxm[@)Qg}=7ӸӟH:|e&1~B~ϒ0֤(~{fN iQ}We;LF辶j|^XO4zXѲ5ц>#PkU=~>i= zk8=,tsiQgt!7B8AtR*|!F95aJ=_kTƕ*N1f(U I4FTClPBjңD{2wƵFJ3l j`)Qsgش>&h oJ;4q u?iF!REK*5~B/F٭G)Qz=PǶkP,JThUOT4|,$S|'?N֫ʫo?BpHN,QKNMFЇxPEK-5W"E{>H&1Ԩ*f*N1f(UFv(~͊(U?٭L%*4O4}lkQ7F^ɩt"+t,mbW>oQKVDkeEu/?;B(5%Q6upnKwB꽝3=g|ٝvwBAְgI*IΟͷnƵ*4L辶ZsIgO, |!c|R iQz=PǶkRJ)"7hڢ>IΟ4oݍj&&wo!(<Ο"XF5%_GF٭TQz=PǶkRSJ)&ݣwRţA喾Hh?5 *n93F7&/Ԩ3PsIgO,$ L~ϒ6j"ԨFTC5p?F]0MTj̑>"PN|J B @8U&}W?9oVo`$F"|>Dk)c:' l֣dq?)F"~;_Z*>'SS|'SS|'SS|D I39:*obsAaI|BBPkRlq? R!o0Da$0\!K0,q0>(}UuQqNݪOM8l,4SH|>F3}A J'+)Q",q\X~ef>+F|MiKT!4`NSA=*4N!Ч?yK~6@h?>0Ds@ֱ\IjD֐٢4`YM8j ԨS|Bޞ i9fHɟ('>%!1*H57FZ^>D'75V|^X$恘>'N|":OH@ɏ)h;2gQA.QMGĠDC"25>%$G|JH1't|JH1'FO#OP>D&TkXF'7ǯٝ7ǴRI'>'Td[S[ o?fw)iK9-}U,t浄RwhO>|{KO7`*h?yI'&'G'㰜kXݣn}AQM>SǯiBbYa B&}WiMJXϐS|{KU$32g τGB (1{ 9fHɟ('>@ B $z6 >@">0DhAѭG@3JjPZcl'"|4/|3ZpLSvC3Ȗ j!_w#FkP{jThުOT!$'N|":OH@ɏ)h;2gQA.QMGĠDC"25>%$G|JH1't|JH1'FO#OP>D&ֱTMOo_;oic>'N|":OH@ɏ4~>S|Җ:s-)[SϪw)iK9sЂ|:EJL|=8IʼncbfLA9AMǣa<GOdpRDSvC:|aD֪A>=$cZ@%R{l֥`J'L~ZpJ`I?fţX,?٭J)Q}We=|z}|{KU$32g τGB (16X恙#&|D1'P꽜57;4 zj8E,pN?Jr֕&wh|PEK N~B ҿOg֢oJ=_kTޕ*N1f- *4QU'bа{fJ'vSꩾ?~>?n|E f%}IjPFS|<-CTc| iQS|!->'B"7BM]"j)j񐁅7u+:8V^ωAY,ԓX8~7";Yݡ6- Zmc1]{;ۥCZI- Zn]6h""Q`J )CWjU~&&q?)$ؙaKMCְ%2}We8ėM>j"!e$>! 3Zcu_*)"]$6R:Z0Rw573}AYI&ψD/21@ U~kX/ؤ֠MMLPRI3L|_*vSRIhmHo/Ө5w573}AYI&ψDŏ2A@*ֱP1}We8L->Mj_CI6&|B ϑ1֠@3U`H zncql֡6U;ؙؚ>,bg |F_pm7h֫ThPKE{N֨Wbe>$)Zmإu@g{S{8唒lLLLN5ְ$.}We98RkQMMLPRI3JLR5+Ua UNN$Svϱ9I~&&q?)$ؙ^&*_@=])7*oae8AAKD":qzTh6JThުOT!SfwS|Z6g}8mw|<%!m:v8֛,q,A;⪟EM.8x} ٝVic!m:v8֛icH56g|QS詾KiSfwX5Hٍm VRkX@niQjThPkM-S:Th#)Tݦᄴ3F|KS*Xcﲦ.;#}OS|oKQjNS|o #S|G7]MA{;7}7ԱZI8(k8MT0;=7Ա}h#S|GFMV6ϣm;,qFN D Fh4o'цi#O#Dֆp]J`I?5 Q}WZnf֕&wC꽝$IC8֤!e$>!>DœZְ#WvSĵ>Lg{ 4Krdiy `>`X"D D-O-|`7o!L R!Ϯ";і|0DMU7}M7E5/ć>HMj*4N!pO>M7=:zoa$B"<"DăFCL*oa%3oa%92kO>M7=:zoa$B"$3cFCL*oa%3oa%92kc}S䌤֡IF>)g{;I\C'OM$STǪ>$3FCLoa%3oa%92kO>M7=:zoa$B"<"DJ56>b"g&&S{ /ٝ${ .!ɔSXEZIqIX3/Sڕ%@$8jJb''zHٍm Vְ~ EThPM-5z9FQI&SZu_CI6&|B "bF W浃vS-g{;I\C'4M)*D<[>`H>j.FZ96tKg{ 4Kre')jobN(>(`(SϪwM$&ONoM$STǒ Ay92E7o!L S).!&rb7}M7E54g{t #67})>&epңD$>&epʕ(U/D CZ 3꽝${ .!ɓӧM)*cĐ"&)F:D|0DLM$fwM$&QMb7E,mF6wB&}Woa%92zpI7$RI}j3!&rdoa$B"b"g&H_;I\C(U$ƯzF^56hݬI\"Q^XmE(E񐍄w`DM"zĆv3cSϪw}=,sP,O>4,sP,Nl"Xt zzl'S|쎖:q*ǧюS?hnSmt:;#>tc/-Cu>TdtӍ,z}`4 `>>joSN6%X1*c `>>KMc3HF},uǒjJCu>S|쎖:q*ǧюSmK/-C:;#>tc/QA%W!:)uLvGK8ؕcHSK/-CuLvF}1Ol:FaCo)T4~>S|Җ9(GI'N6,z|:EJh|E5S};g}=7:!oQHIU]j|OSl~|NE|oSoiV+XHKDKI);B(5%Q6tk'BaA ,6يUg|ѝU7I&•"m:E{ rgȁPkXm7v Mj7ThPkM)nZXQ~K`,``kPrK /6}֠UM(l E3@`:yM(R‹1dk96_"ϑ`ְ _UqM(Iȹ3@Z5CoaP?M*R‹kQp£F q?:XT|35O>) R…(p zzlS{ dtO S?}e|9jPm?OHӚ<=1;=7r>NP;# ,z}`jXLѶ^ɩ#ZoC9A=1;=7r>NP;# ,z}`4tlOS|G-CߍsZE L~M?S}) R…(p zjUqM):oaJ6_@1A_ӟ"Zzf}M(S ɟ@1A5:cJ;o PsIgO,,Ԩ ~BF٭QThުOT!*4OS|K Y̑>"PN|J B J ~g|FɟU)caB 8|=$7LvGK@z}1XLѶ^Zӟ{ dgюSl}e}AN{ dtO S8~nSm'}SCcZKJ,rE"n dA9dOtX %A>>REK fD ~BoF٭GzThުOT! Q}We8R%|KA35A9bOl6)@:I86,z=NyACWM(S=>0ELzXI8A9A>@-/g#E4%?fwOwjoaB쎖86@a*ctlOS|G-C-"8;2gjs814aME,l(Rdtql"X D KXOo"~;F"8 PN|J B ,ql'QKG>">>b">tcZUME,qX0N&8|D|P"| Af+z|"<1'i zkP ME,qX0N&8|D|P"| fbGF:Dm3@5W$R_ ωAA# j)cGU' s1^#ȏ"~4%ϠY9CUME,qX0N& ">tE*4T$R_ ωAA# j)cGU':f+~|"<1'B@h֣P|F~>Ա_('>} 1t57zcwzo}9I c:Xǧц6}e|9jP~m7ؙ>T A# j)caB #aǠa \4DdO`Z#Dv Hj5 UME,qX0N&8|D|P"| , {*>D}@Ǧ o)c/Ġ q5s#*X 1^">tA}H TKF Rς#ȏOc@LW#H&}֠D*X 5A9(14aME,q"< D!.f+i#H sNkP" ME,qX0N& T|"<1'hjkQThH TKF Rς#ȏObtWGю?tEW}c) "PN|!!A*cɟ92joPs+S|KA 3%A>0ELy3}9J c:XǧцSK?7@)657r>o)c#3&|'>KF R…(GI'%Ap@hȞ`4>D}ȟaJPUME,qX0N&8|D|P"| , {">tcZU_|KA|'>%!86#GTƐY>>D}=5HW$R_ ωAA# j)cGU'&f+ړGю?@L@ME,qX0N&8|D|P"| 3|"<1'B\AH TKF >!gG#ȏ"~6FX 5A9(14aME,q"< D!L{GF:DhA B_3g|FHA9H&~>Lɩ##|G-CHMS; 7M6)@[R|KkXBrZib&}W |AJ>Bޞ iH dsPbO"S|}i{PA5>Lg}=7$RILɟ'>'Td[ӈGbfL874N cFBĠDC"|"X@:D>B@:D "D}`*ȄcZd'7ӿfw}=,rE$A|ODt R!oQMl) fwo4G[SPME,rQbO>OMԟ!oOKIT3꽝 ,rQؗMq32g τGB (1{ 4$RGbfL PN|I:qMAa'Bj *4Q-CE7J ϐI'N6 >@">"*>h M(&R|W͟E3CZ.g|zT|L(%S|KI&‹T5;o\CQ|MGȶ _Ƶd8o)c$Q|X5|.g|{M}AlEKj7$5(~ϒ4f(I&‹&L{f)QNL%S|KA 3%A äGOA16̏H ?tT5xW|OS|A~>4ico~>罹zXO$oZMkɟU4icME,q3$dψ}$\KȄa`0 T3꽝OKI'C13&|ODt R!oOJΛgNLQAppME7ĠDC"25>%$G|JH1't|JH1'FO#OP>D&MkpɟU)caB 8|=- c:Xǧц `>wu>MM?|KA 3%A814ӕ#">tcZ_{}9=,rCTC1^τG ?E!F(SjoPsi#M(S=>0ELy,p/g|GSP7̑>"PNDK9Y(X9 r#H=54U_"`CtcτG ?E!F'b>6L~M?9jN…1,qlcTǩ}e|9jP"82gJ Ȃpbic+%QKG>.D}@Ǧ2~0}!:oSE {#ȏHZ`">6L~M?g|@K Y-) 4};g}=7$RILɟ'>'Td[RKiH ds FyjP 6j/J7M9( zIcjo PZ0}JOjma(AXEkHd;ڊP脜)Bޢĕ>Lg}M7>&>Bޞޖ97ԍ&0F*4E}AR)o~>辶XԠd[SXM?|)}JҀIrvg|~U]l?S龝>)}WfwCꫭzou>MMt"+}PmE;VK,Q?HgllsoNhDSZ q?U|ZsgB"ʿq?U|P?S|<-CwN#)5>F>U֧>6~wIEF>P|^S|zZZo}9PS=-C7>(}We>7ic?G&56ΏЈCv[(:8V^x;aOlF{DQ$Q2}I3A#jj4T}#ܘ&B"&o($X5bf h(G1LERLPH?F{DQ$ h(G1LERLPH hLӑrLd@\zjFpagi-&116D 6T> r`\> d@`5PX . MjpA)Y .n@Ɂr"*0 <@}pv :ŚI^ +%i16D 6TP&3&116D 6T1> d@`5PX t&5}. S16!?QYE7;'?\S60 O(3Q2}I3A#j‹5*J>L|!Gԓ7?ƿ}v/B|DPm@bu?Ԩ@2;8;?pdMjP2,Ms|mA 2;"nȳp2'?ǢD>Ocn/>Oq7'P1!;!c2& ;80" X Y,}N؂;d;`_4%Y,}NPFDˣ`C&j4T}#ܘ&B"&o($XSfEIG=ɏd"(fGՉFj4T}#ܘ&B"&o($XUfEIG=ɏd"(fGՉfj4T}#ܘ&B"&o($XXfEIG=ɏd"(fGX8~7H"; L)g{;龞 ϐZEK9LѶ_K cZ U!ڛT}$9Sznߏ;龞 ϐ zw)8Ωc>Jɟj|J F%>Nɩ?>'B"7͈mbW>oQKVFu,d%Z,W9gq;z{[XQ! .}-%?bc;o?OSύvdh!/h%QH\>N,-"HКu_ru4ƄKgpJnN PmMEC#=*:ccB3?}WJKP)1yٚԐңEMǴ0Y%SrqV|BҿpZ}*4Tܜ{La)3;ܜ{La);;i8Rw Gܜ{La)K;ܜ{La*&w M8Q;nN=0Jgp]c QJ›_T[%֤SrqPQ~:CU7'J*8ڛi%%%rq1c;ܜ{La(ru4Y3MjH ~N_UٝɟUlNNܜ{La(ܜ{La(d:wkPlq?U]j|^ɩ;DWȢd;ڊlտ *Eh"Q^[;dޱ -3t͎E}9DԠW$&E j*4JyIEW类>oM!"gƵ'ʿ|! ć"9CThIuZ,UꫭO>56DWW>oQMvRAՒ^biK7"Q^X5kY'n-)g{;龞 ϐ_ZzȠ c7@)6"Cu_ :stl.J~@52K9LѶ_Lv}ɒ :stl+L3Hӛ|"6^F,AŢPL~}eYK֤`j{f*Oqan:stl-_ZÅ_qan:stlce}ARLO>ܙX[,t0F{\ j.ʿ,t0Fy;Z (R{h~kQp>U`c7@)6Ѵ2-CO\ݡEWPyan_ӛ}eqh Mj.,t0F{[֢HANnSmEB j.uW/|d ٭E5_~:stl+EIԿOcZ@U}=9CꫭOMٝOHg[RCz'SؘT>'B"7&mbW>oQK]WH%Q,OE>'hE'gd$j͊7B54"C;+Rqb- _B7hU~}ϐ9PSTSݡX?gv>Lg}=7š` zzq7hUlJh?B1cOǔ\*q?_UٝTtN}OMhX>BޢĊnвNdTݡY.LsZ8U7hV| B1wŚnЬ-!jB\{"_vgȸ2Uav+>EbYCnЬݢZBjB[ݠ֡+>E0~3ZH* aEB1SgvJnЭLvݡN>IԿOcZU}=9CꫭO ЭMPsݡT֣@JOjl>oQNտ9y$t@E=\vPj+Kmb;d$PaiЍYB6FŨ}9PSqO>OMЍc7@)6PtX[<:sE}ABcԿKAC`W|^7) zzZNEK/ȶbh֢U c}epvkQj LK/|`05W֘Љ ЪɩBjPRqan9LѶ_KW2gF"Cu>6 ЫMKPsĪnЪZݡU-hWݡU..?{jJnЪݢZ>U7hU|`EWݡV(B7hU; lЩMi“;)N,-47@)6"?v@~U_!fijZ%U@EUgvGa;)va$RDNiC3BnٝJoR!aB tǓRN}`ְWZ*^i8CK53Jq(}UuN}OMЍc7@)6PsPS|!'>'B"7CD(Y,}N $.OE>'hEdj&.N9!Zgqxg|қGɋP@|iQq?7ș֤.B|`֣#:ThIZ_(JcԸSqxǏMjs&Ԙ"&>*鸼T|CɟUU]jq#NlH"Pqu U͙^HQcZ_M>4| j0ʿ|!!'~ϒ,oJ>G<^kQiU]jqyMc^#SqxgM3qOqy*cXEDL ֠U_^J<"$y*(}&5,3U(}Uu7'7`)b/vQ`*4O^?N֠MU$x>& BH U~E7CtE&ȖMj>U=^kP0U77ǏMj GCMJ};M;xP?"b9IT*~ϒ,350>FTML5U]jraQO>OMXf|=$qxEI'Nn"|Z^Ly1CWN~ЫM;P>ND)`<|7hLZӟ揑1(֤5_=$X*5$ңDOQ&}W9_4^*Ran7 `>@-/}Oǃ#ZJCGȘkR@W ]~ϒ,45RDOQ&}W9ʿ}UuВ)T=K}9E7[$B K@ǯǏMj @W!LR5b{>H#ZzThI^*>!ϪZJU]jt-qxLzn/)?JIӛ0 __揑1T֧e_3|`֤ʕ%R}7y3֢\WZE7ǒ)?JIӛ0 ҁ?"bɭNU~BOEZiQU'qx>j, ~S7b>aM1ض t}$9Si}(->BtȘkSC"p֤J>JA_gyC_UٝE=^*S>%A兺ANn}i}1\C n/)|Z^=~DkR0W$"C|aIjThުORtyL"2&L=ɟ֠ ~SۦQdkP+F>ΛB(罹zD,3>Bޢ7#S|>-R t} B K"afD7z'S^(_(XE%Rխ(K+vK7|NЊ Ez`M]jƱmpoZr(C͎*6}WnhjO}Wci*S!J|P꩏UME}9b&}WcY- g{;4*RdttaǧTf[wS|T;#lJcTǩhnSmڛ1cTǩ>wS|T;#lJcTǏc}e}A6LvF}1/g}7Jc:XīF:ELy,sCtl?)ϣ"<6aMR쎖:q*ǧюS9LѶ^ZjodgюS6aM}9N($S|Җ8 zzro `>Z F>6iC,55lY{>H52 iQU'IU}Uu)xZaK<}%?J5.bs;x tdԒsCuMR쎖:qO S9LѶ^>VLhDw)jo-CTLy(֡FU}9NUL~o-C)?i RxjkP~N>;[LNh}h:-C?#G`<N7q?ǯ,XkP~BOg\kQp$FTMVNhn"|!j ~SDzoP-7h %}96c$?:D3ZJ~B&/5}J>$D)C-/}W6_??-COw)?#G`,c P]@}9hA%W!7" jpsJ>$D)C-/}W6 M;xIjNt7`?ZodtӍ,z}`,sCtl?ć{;S|T;#lJ,q1cFU;S~GNMws%Z~B " kP*龜ll{MR?2dr'J}Wsu>kP ~S57}Aa8" tNh|ZA'S|~Fx1Ũ}9$Rc#I`<#+O-|1 $?fīA~MHFF'%KD/E5*4JwXA~MK6ѭa8W++B!ϪkQPW?#G`S}=,qP֢( *8-,q92E7测f 辶zrWZ% ??g|MjNPMR쎖:qO S?hnSm??h tɓRI-E}97hG  P2jI9:1Աl0KP%j|!?Og+5$ңDO&}W5_T)c X01ic}e}97YC֠8>)3'SGM;(:>OMKȖZkPW"dEJ]V8_R4>tkXU}RT!LƵUbw92zo*꿥?g%iiK~LM`^+\CU]jrafcw )c X01Ա `>wan2jI9e?ۦcAJMI'4>1TX[<9mxIjP>DE_Q%{>H`kPThI!ϪZ_)c X01ic}e}9SIvg&Nɩ?-C쎛4v#PyanqRI AӨ?ĊXlrAKX}k%,q69(Jԉh`zoX>DC_?Og9zTh"9mZ_|dT~>AX|}WfrdOKT58-,q92E7浄P g}M7ԸӔ> ??TLvGK8ǧцUK/g|MjP~='&FZPso00dԒsCuIŅcɩcF:7`$K35n|! ӿOg,5RDO&}WԊ}Uu)|T;#lcTǩhnSmM'Uٜ:&?:o0A兺AMI'4>@-G[N)cٱb4ϒ=T2KXlqJԉh`zoX>DkSa%W"bC|aC4*Ec5,sCF_|dT~>C@W龞8kQFU,q9,[MJXrdokXoq(}Uuo|~Zӟ*S|3iMJX(GI'N6,z|:EJh|E!ߏ;龞8J>Bޢ&>:&ؠ|NE|oV5dRMbM]"j)&jndX%'ωAY,퓇z"; L 꽝FwԳ=92zoƄ>) SgbzqgO,#V7U;|`5n"RE>RzߏNkQHFF]j4S|@7zrWZYSKPo4ԛ}e}ANR}SM?ۦKILѶ^Z)S}IE %R}'ّrjcɋPskM.!CꫭNL=1ԱԚJ RMk6_|@ _g{;6 Rg&}WoMzX(GI'6=>@"4>Bޞ S6 X01ic}e57}A[M1;o_;oPsjodt͆=>0ELy,sstl&?i??g|Mg|{MjNXM쎖9ǧц77@)6joPcwfwǴ)c ,z}`T `>w|>-7ǯٝ7}9b7ߏ;7 Rdtsac*P3C-)Jo?fwͩmK@!oQMH=7ZIJ> lȿL~ZӟZo\CWZ7 X bКONA兺A9R cZ!*4Qg'"a92gWZԚJ8osGZ~zo8ӟwqߧj(U}E8ړ?O8 U~ONNԜX|֡NzrWZic~kX@q7 X bZONNƴ)c&Czru>RkX:ONoM}ASMңDEkQau*4T֢*4Qg'"a92gWZ}9jP}9C/F,- ֡REH/ɍjTh>̋,3fEɩ'S|dct"+~(XE%RVxS,X^ZØ[.5*J>L|!Gԓ7?ƬOKfEIG=ɏd"(fGՉ[5*J>L|!Gԓ7?ƬOQ2}I3A#j|NЊt͎'`Mf+4E꽝:qdICjcޛic>pzzNl:o7,<(E$7>WcmOa*4J|Oc<8Lڛic>pzzNl:o7,<(E$7>WcmO)e>S|>6X#G}A& $ )cI'=MϩX@S*4J|OSl~|NE|oS{[D9j4T}#ܘ&B"&o($ωCdvΙ=Ԩ857_c5 !~P>MI_>ʛv叉ӓ>H5 ">F}o!Ʃ~/ӔHƦ$]AF|^S|7N5|MBHңDzoS:>'B"7Ss-Kr;I؟%H&> I _vPj+Kgl?$BOt͎'aMv:o?~2SJ;龜?S};g}:)cwөo?g}=7ӖD`U罹zX|ct"+|؊+KSm/9]sb~fF{DQ$;B(5%N 2b>Dɍj 4>ّ2e>MM'DWr(Y,}Nv{U,ȹ|"Q^[;dޱ Ng}=$L?;֡&&w};kAuMm*4E{'csZ%R{꽛=,tWZs&S寑1,֡kJ;龝5֜(}W"dψY;L֡,U=^|;KL֡VF=$n*4JX5'J}W"dԑ2e>Β&NZZH9C`F^̉Dɩ4q u?ǯ6FBjX=$dƵa*4J֡y"dƵ -*4OdLj(F&Lɩ?>'B"7͈d;ڊm#/4>'hEdj&.NHEm'57ǥ}9PSG2Zt1F,qωS?o$ψV)5*)lP|~( Q}Wai&ְTh|~>u!m:skM֠:]JN *|^ol|=#joԍ10PcwkU%*4TIckP U~ose>Lg}=7ҁg2&}WiMJXP,Nl"Xt zzZ~c:X=>0ELy,sCtl"&?iYW!zo5'FEVF8Q쎖:qO ){IL~B>tN6@a*c `>w|B>=:ǯnՁzCTkP[zThZTh?SmJ7ǴdtӍ,z}`NS?7ǴdtӍ,z}`4 `>w|B>=:ǯnըU}9j*4T jm*4T`KJ7ǴdtӍ,z}`N%7}9lh}4,q(GI'N6,z|:EJh|E!$Rwzo=!oQHI,u#d @>0D>!X֕*o$5UMwN~ЌɟU罹zXP,FSϪw)iK{JIӍK R!oOKO|{LvGK8ǧц6hnSmS7?=}p$q?}Q@poJ7ZWJ7pMFc:X=>0DM%1;Joi Ps|{LvGK8ǧц47@)6)joi PJX꟏jjCTkPXyJ7ZŔS|~ BTh=;#lcJraNJcw쎖:qO S9LѶ^OS{HZRTx PA*CTkPVS|<5+Th?SREM1,td F"S{IL~B>t4~>S|Җ8 #=>@"4>Bޢ)S};g}=7ҁg$MFcTh3ic!oQHS|<5IFwau$OQ}WFe3oap?ǤPy>DZ Z,?Og֠(~&Oǧ5 $F^BNɩ$\~ߧPkPNƕ">9G~25LQg{ t?-CX[}Wz&}Wci@[O>4,q(GI'N6,z|:EJh|=-|{LvGK8ǧц6hnSmS7Ǐ_ca$W!ZoңEM.-REM1,td F"SX%7}9doic X01X0F{;E>MM!jPS{Hx6BH,U}9:mJ7kXJTh=;#lcJ{)%7}9doic X01ic}ei57}AuM#G5 jq?|~h iQ kJ7ǴdtӍ,z}`OS?MG7)ci@:I:qc*P3C-)wzo=!oQHI)$\~ߧPkPMF? &``REMF ңDS|4?>'B"7h؊&.Ezcv!DKWu._$w/;B(~7Hgl~ѭ`d 4jPM>O>OM)@[ӛ|9(GI'N6,z|:DjE%_ӟNܦwzoiJ>BޢėWZ&6SBvPj+Kgl?$3tkXG;g|қ慨}AΛE}AɟU罹zX攠Y-,sJP,N"X 4XskMJc3OЧܦwzoiJ>BޢO>MM:lE%Sk[K \ZƼ:؟hF{DQ$;B(~7Hgl~6:d17KgZFŨ}9SKk@zjB@ңDZNPS]7=|Cəu/Ǔ2ʿ,uojB@ңDZ;U֧i=y2N=~<$h$ThiJoR[HclCH *4L罹r- (?U]j|^ɩ?>'B"7͇j)aBv:tU"z 3z͎|̓MUv$yA8ңDzoq u?U]j{>ơ$ jTh|zZӟ=I5BHDM,sr{ꉬjB@RD7͋PsU֧֛McPu_|ږ99>8] ;S|{K=dBHG UM2ZTh XOBH*4Jv}iҖ9'joR@|CfIǴjB0 Ǵ B5*4T6~=PK)Q7`)c}7͟h$qJ3cRIԩPJ}=9CꫭOS}:&:}NaK Kz%/;;azωAY-poXEmt͎'`ɩtkPңDzoq u?ƴdcsZ龝5֜(}Uu57־!bCu*4Jo~=au &">})_JEMǴ-*4TZkP )QZ 'z'S_Q^XmE6Co&Dcgl/Aޱ!;LYv ފo{F$#ңD{LS|:I; E~6=N/Ԩ3c>Bޠ(}Uuz&6S&l:tgl/A"zĆv3cfIS}}CU֧:oR[I'`qx}J;龝>U֧)OSl~|NE|oSaHs,r <^vv|NЊ Ezl퓇zĆwΙ־ D U:~'hEdvlȡ vw왒voQ@ _TI43?;6r}7CꫭOaFߥP?}nxkX BUv$yA( ңDzoq u?U]j{ơ$[ iQg|{MjN>7IjB)U7ǴX$ңD7͋PsU֧*o?I5BHB MjXǯ IڛȻL>!bI_DP_JcAKz IѨIJ=]@f4l Iڛϑv?꿦)ңEMg5 ^ Q7`)c}7͟h$}Q~=w}=,sjI:=%*4N!>QM|gDW(Y,}N! GKz% H2|NЊ Ezl퓇zĂ(Chݝlu;boB&ѭBFNNi8T!ɓ)};k9PSZ{OVhU~zoq?ƴ`{J{Z%>_iO}*4TZkQ0FF j&S~Z'z'S_Q^XmE6&Ri,Le]A:')fEIG=ɏd"(fGՉCj4T}#ܘ&B"&o($XlF{DQ$h(G1LERLPH?hHk@Wwөb#+_8M>7)CN3DшKq:c7ӾHh*5 Z Qu$_~IU꽝N' IL~PIuH1bӾHh/5 ZңEM"3}A5G~IH>P8Oib1߾h"5=W5%1}A'nhfoǧ|$YTh8im1};)>O>ܜQ'-ϐ$R~ nN(;*~IU}9RpԔ!tgOGӾHh55 "$FDOaI$QT_F,HBHD}Wɋi8}ܜQ'-ϐ+ThܜP~_c* m=5*8}ܜPSϪw'i8IKi@-Ē(n74|BN! BH*4OhP|B"Xlj@ңDC>A&1Ln6IB*4E}A)?pq` iQgqG}ASK^ I&7}hjB 2U}9“?q?ۤ:|M WӾHh=5 VңEM"3}9SM!e7 lF' BHʿ}W+>iOaRH<~1ơ$ >">龝>ȟC憡$!|B_CZ`h$38M!✤RDɩ$CMj@5F?ħN15DJThb?jPb?}W}$qA-_LnkX8ӟ5%1}AYIt&揈D$4$XZThHU'b1>}LnjEpz$CMjB@4F?ړ?q?ۤ:MA1$4H5 ",FOt5%1}A1;'$4#* Q~♨IThU]j}N>n4b#!K$4$X Q}We>MM":řM]"j)i %%Fx/# u;B(5%Q6tk'cI!=gr$M)%3Dgvg|U0F"xpPL_LA`τ2`r`>τ0HL@ĝBg鶩$z_H!2T"z]B6L@ȡuHD8W=mqNP&$WAFG18$ңD>6=|o1y`/FTzsOڑIuHR R+/B$jBHC2FeF$u_ps5 $^T'>W[0]ϒ=38Ε(OU'ғ&,sG 9SL~P4Mt$>Hf$VԨ?{ $WԨRq>!N#>5 "The''-N+ ǧ| BHңEIKiCi0~*SZTh4}A74|B##Q~ BHQ:|B&`zwX REME8ORI)_(~qILiQ_$$sge8ɍ*4LS|>%' IL~PIuHR !!ߏN#$ZSrd Ա)_L(>HӚJ_ ~wd;HJD&N')RqZFq93b)Qg|қ!sN>,:M)_ R[$`&jBJ7&N07 4浒u_ ~wd_,RI)_S'BHRqbw$ϱ';)!*4LS|>%?qx*5 ReJjN%RpԔ!m'"iHeax*|W*|Bǧ|PjTh$SOrq8$@J'%o'kTh4};nLa9"TaAFֱ *(AHkU_rIHoܜN5 P iQIbN'>&vS&w)hN( Q-CN>-:M)L/OOBU0$5 RңD$^ ơ$URqZFq8ֲP)FJo8ӱߦ&b/O&$ik}@$-cZ,ORpcv$n ! |^zoy؞RN6@F$U)Qg}M7Ĥ~|ANĪnR ~ I:q>I%#!*4N!:N>n4A|BB065 "ңEMI’NlNFAbI(?ƴܤP|5 MDb>)0KS4N}OM>BޢX/dPj@!E_qAIs Thܤ~ɟU罹zO[J!oON-;H oGeTJGܩ`ƕ(^N45%1}A'"iHI'N6,X"|B N"&$ F*nRHt`}eTu'"5`nRJ-C7)%>&$ik$j"1jPpNHO}W7ӿfw}='-ϐ' IL~PRq>+ƒhĝb)?E$ J7))$b1'5 FlS|>4$>rSBaAFֱ U_r?iL'RĤFg'=pNqc`O>OM>BޞX?i$8DP"%!-ӟ[g}M' IL~PIuI'N6,\&' ӾHIa*4TܤIL)$ʩ$ODkX8ʿ$>rSBaAFְpxnR#M7 Xz-7ӿfw}='-ϐN>,:W ИP|BzwF$ oJ)Њ|Ma9>?)CN3pP|M! EPm*4Tܤ@RH}Ĝְ/ Y4}9iMIE}A5$؄ƒ9`*Ũ}ASMa:%"39=^BpԔ!ړbzzw$ҕ*N>n4A|B'dzw RZThHKII ֱhJo8ӟܤZZnRJ}L(>HӚ HZ4&bR#3Uvܤ@q?hҒIHPRjBңDAIb*4LRmMMPiI"IIơ$Y)I!qbRD&ܤܵ?ibRn$nRJ-C|a@$MJjNcI%$&N'ңEI*IiIvTh4};ޓ?q?)8ΩJDv7"sGӾHQ&bfaAFְ !OJIXP*4TXI1I{Th4};$]JjNeIRS崜gT" \`^ E3PCTh$SL߹8jB*N1UKHbN' JTh4};nLa9"TaAFְ 꿦$>rSBaAFְ ʿ"1jPpNHO}WΓ?q?ۤ:M)_Vǧ|` Q'Sؤ|NE|nSIXEkHd;ڊPB|5A8!_$j4T}#ܘ&B"&o($XC5*J>L|!Gԓ7?ƬO>fEIG=ɏd"(fGX8~7;;68̓X"6 N/0F#3$j$_|9_|T>%J$,1*D#5 7U7cTAŇȖ;5 WWE/&ZThOM!CO:&ؠ|NE|oQ6t+KSk.a4GҰZCωAY,퓇zP6wT5'R|_Ɂ5*4L罹wZskIJ?qL'52CU]jv>(}W-p"4} 辶)Pn\CA\C(?Sjoq <^={QF35$jNF"8Mӟh }9Pb5HAqdC걒($c3ZH4Aq?USITN> TIT!t_Y;F35$)F9 (}WHf갱OPx"0/\CNR=|!e/ֲXHASp"4ytcOֲX>}VOp"4yw=|!cW{fkY-[|9 $>$c3Z`U֧:&:񾨊&.EzcvkLy)d'9=Ooe2b|ED' Uٜɇi谦U8[,KW9_U>L>oOEY=K*&꽜ɇi貙Osĵz㘨?>'hE:}VRw:w揪>8EX72>|gGDW;ڊ~ߏqGklO@fEIG=ɏd"(fGՉLRQrc>5b~~F{DQ$j4T}#ܘ&B"&o($;9pqVH8nu$mulgZ"Z;b%]㗍lS(!ıqVI3x@@Rٛ`|sƶige7]"J`nz&Kfm`|c̴E=DJ^wsJ ?P=6R`P9f>>j@@Rٛ`|sƶ%ܱ,\AՒE4n{,u,d+ZŲ-,]=ZY<P:05d-19uY#aԱLke ʴc٥ZO'Yte- `lyuecLfe[`{+kնu̮7ZF ͛[sVf$K<|crØ7:;Kk%py)g 8X2iK0e-SK<e" '2ps(֞ODRe41Y"!/Iy)g 8X2iK0e-SK<e" '28X2[: .  l2RdjyP9a JY;wnigb 6B_4ûY%Xb3y:-Pj\Y;<%n6[CkJgW,ͭ^cP6q)͐Ptی^:%PrP9a Jۍz.t\AՒ7tK4 C06nu+kw+`|s8n5먺Ӷ .\.ॸί5Y/6r._Cgvyf #d%HܒXYX!#`lV\Vp>kQun[} >gW,P9a Jۍz.tu+r^spn3xb񏆡rØ7:;>9]b\xw,#l#.2-uy9xtچ\V^\#A3tJڵV!,\rgW,ӶZ91 f|͜E :V׫mb%]㕵9hXZG269cH/ކ/e ls#-.X9bÐ|b1|Dh?FٛcW2՞.7ؖN>ܡ֬kٛcmjҶf@c!#`lV\Vp>kQun[<]$Olی^:%c/<]#`|z`u,^̎74LbP9:7Cq!xquHyw YBsKA˖.9l5Cp7|n7Q()P1e狤lcކ/e ls#-.X9bÐ|b1|D>j6ކ/e ls#-.X9bÐ|b1|D GƁrrpVHٲ)PtCNÅLf\Yۍzk;nu+j׭Zqq̲fYx#e狤lc햎OCClβ69斃ɗ,\rj1Fn>1@n> ځniJcH--ކ/e ls#-.X9bÐ|b1|D! .>9zCkշ=,\rsKA˖.9l5Cp7jD>fFx77SJcj 9s[]s[r/v/6BYAkJmu+j׭Zqq^kDN(pznu+fR̥Caz%;M2]s[k'n,AFK-gK+w\fmu/GmȖ4NJ-Xp-Xq2i/^Lo:DW:ɜl6f [Fe6̓9h1mƑ)iR^Y% Zy=Fz%^Lo:DW:ɜl6f [Fe6̓6Ų ^Uu+`~igb 6B_48b[_3tJ,dnKv/ ֬;{qr6q(/!K2 D98Y4nigb 6B_4ûY#fR̥Caz%;M2]sglz8o= ]+q^kD V\rHw\kQu^:%vABNw.AHbk%vAB2 R1<]$O? [K;e|%lu$mung^w\} J1fR̥Caz%;M2Y嘃,!xVHٲ)PtCNÅLf\Y;<%n6[CkJgW,u77]b:׎fP˃RófP. OI,ƾiglFRh.{j j]s[׷._Cgnٲ)PtCNÅLfyf #d%H^1;Ւ6l,T6Sd/;v'[ ҷtK0j-tuƽuXί5Yl(.7r.6Yl#.2!l-<]$O KPw\} Jrsd%7vK3w]#w/!K2 D98Y4nigb 6B_4u˗ĭݲ ֬;cwZF͗JâJv,e6r6q+wz^V:׎f^廮׮7tK4햂\K4햂e@1tei_4{j]s[/NV.lófnne)fR= &|,AFK摸r8AՒ6rpVHٲ)PtCNÅLf\Y;<%n6[CkJgW,u77]b:׎fP˃RófP#?ltpٌcHᴩ,цQ${5`P?ve@ld!z%L،`t3; | A(%u]bV>PHl;(%90Đ ʇaؚ '@ld"`!rb-!v+f`*Gc+/ *c 1"`/ ;$8J A)[ؙ: x4 >0v(";c A(%حO?-/mK6F/2<`8 8 8; /!kV:$f-zR@;%u+4"\ H@Va!T^RAx İPPB`vxTX ; D( p4Ca(!\v`R `Iv!XP;va avvHІ@uvP;`dc, MRv)v( R B;*QLdx;@@S@&`$ ا`8vD"0;ӡ!'>`r0L&S+:`)E S'@f,Y  ^!UHF!.9B; FZv8 "`tvz.K(TT;,ƀ( vh*# `X$ @>8D8VHq,`X`6k  Z1 P; wP & G`X) 1(]`EA(TPvh t%aز] A'Bv,$a]*`D2!<GdPBuQr;@)S * bA,t$~&T;G`H ?$4+x d V:"-lGbr'V@] Gb́ B0e`thA(œznUD&ز BY:RU@L=v,`[f@l!3.`;I ^"CAXز`D :*Zfv,“nإ@TbȞAb{ Ő# WpXIJ@bB>YL-1bEZ;0)p7#őtnv4L4`ZL;F Fgw0 B5<  P!FAH H;łX ;2G`Z<Y @0fL vva3t^v*b8v@7@%(`nd!hQi FFL| H H(Mt 2p&k;Gv(:h:l#(hv )أ4@;h `.0 -B0-捂AF T~'b9b @rV bЁv) 7`:&X <- pJp(" HpVP;`/@5`:`; #P:;I'@/ Z vn *pƅ@ZrT.}Hn*|?pjG$`P E:>prG;b;Qv.!$b#BN#.Z-)J(2v+ AvJXlL&sp~JvdBYH" !$?L uRώ!à>Db}dP#ð.p'34A؞I!v:;Dp>Fp0# OHpiEfcpvR.pB r;xC. (}KCZ#ufBH;ñt3 AE*PN vKH!Pl`v' ð ؜DF6&<b3bp1,PH x;IP#!EU Ǡ'zf( #GG D;`vCՀ8;vHâ)=.Bx"al36<bpP+!;F B0!E0;/'J#`A0V/]pWP7 1#4!0v@v A;i0~C2gMN@8 Ga a;+ph Cش/-xؘ& ã<;ŀؘDq, ` CxDh3v&GR>;#aDPv&hY;np+V] Z5d\Q;0 Đv-`6`5H0A#h"zk!GaشA+'hE BZ@'H;: E1شĐZ@lĺF `:h@l#/(9 ŠPE!!Av @2V`T)v-b`3D`PFh 3D`1 Ltbв|vAv0(-@h(4@U";xv @T]Lv I1v%d-0Z!lJN;C D`-qAhrTP.H j-v9" Iȶ);JP@$vF+bMa$#/@Dv$T; -;nNx/`^G ;?@ C/T P`%J@ð/INxvF'jvDB fxCaF N:V< `^*q;) @PIv$e  r F@0y|z;@d àv ``\./hAX7 G``p|"p=`2 <@5`X\dð0qN";ܘUh 0!Q5 l-10#0(OP;k !v 2`~XX; <  FL*PF<``=c~u.H G``'# P;<0 X/ Bp\`6;bb&8 C0!* ؅X!\v(B@@&oX a FO8; `d'pHFh5h x ^8 "b C1 -` $BڠΊ nɐ!;l2`$'%Nd@Xa`v4 ,z5Ř!0vVx Qض$-ր' Ű4; /Gb`* GbFR 1;Fy0H))CP; $d7cv*$G`"D!H~0؊  aH8@+Gat uAٰCxv \#;гdð%^ F4v A -;#!([bI @HI`J hV;k P)`T:ASa Rd.B# 0l`+20rD!F^P a *)cTm[&@5&U^`-H%'`b10JɃ [`XPJ%%cQ Īq bQ{1"pȂaPZ;6`@#&f:㰌*a 0 tvhP>c*N;6D}Av aJ8@v%!@FR/t@ta!pz,v90t>cCBq B# ` Cp"ðS/" 840`lbHL;H! v;dJ`H;PH)?B;4,Cq<$;`h#q (ba İ0 v ^ Ύ0^G 08p<;+ph CG D|IMN@8 Ga|jc6}D;80F%4!0vhn L;u\vYyV;/'J#8v)%VaZ A5;C\Up`:>ܜT'9arCB`^; ` 0D;1<; b;9$#"LAfbp1,p @4v'р #v' ð)0N#p; >p&4 @7`v.a>^;T@5}KCZ#堼PAwPPa PX^;Ձ` @OHLHb5b}6ð2AvI T#2 !8 AOjqXv@x@n;@Խ32 !5RA;#*X<Gð `d`$5LG`9KCaA`8f3Db G`;N/HȔt; e2AoX2`:&X <-J&f-{Bئ;!4 'b9b xNX,F;Z 2B`<&!``dx;vc2g;Ga$Q ~1أK@B lvA%L#آ 'aظ`ܰ"1/ #pfFz;ZGbPb7 P`v.D1V x|L&|Վ D3qa(db@F qxP#px.;@ذ1Aظ>V Ac  P!ظ? `G`C v.0>| @v) ظ\ D6<;0)p7##cv+b^DpAPFv)7`H@\(ROa@Cظ! TcJ*z(r\ɐRn b+ Hxv.`BbñHL  +A  #UD&ظ!Bd(G` PBGb! B@B7dTq2bJ;H@(:"-lGa 8nv b$@O#? HW*C* a  `VZ%#$h4dȄ@fð"N)! $<@Ft%aHRxG`EN c 2vDFJ;Ga &`70R;  @ `D+X hda  $PðbrG`F@b; G`F;,1@7 <h@b a F @"PvJ2"<="$Ȫ'`FH@BYva B1v >xT`; R2$ b]F6$i v)BBN|; `v)X?/@Va:Zp`0(lv)UvaYtئ&a3m t";`dc3 \Puvi`RdvvjR5(; M`f=%03@TDvc>z+(QB `l#K K(qaLApvE!$>B``㰃   ]``# (? GbO"@!X 1b? AX$ȠJ` EsQ@Y6L#0v%C,@@ `6v,~Cax A!BC Gcpt A T1A8(0  %T-ib}sv Jv<-\P(`>D)3AB;SJ@آ&`9@vG28h |A3&d;K,<@Ph`#:~Xv@2 BPq`v W ,ՎʀD,}X5" SL`\¡b; dE`8#5 QyX;#PH(;y@ r#2 A@ "v@L; ؆##`6Yn`\$yh= #2 / \`G`\)xX !$`^€`<;1v ZNAiTvMn#186n aLv4lV pvDVK+?*0r;`P" AGaH<Gl5t aR;ctgpdX E/p\>,bjB4 hE>XPؘ8:^;`5 au`Ip@Gbѷ@ pL"0<`TZa`8#ٱ(1 @qZgQNF̀v p xaش$xVP*a,v- ^0> a@,0v 8B߅@|B`>9Hd\LQ^Q08ZZġC/G`0 P^FX49NH"v@ܰ- x\z㰍 26@*)& ġ ^ a- *ASATaP @$@"^R3 Ex;&h(мRx@*aZ H;5 +=<Oa4 2ŰZ! q0;g1G% v-XH%  Q Mfp;0304A51ض@@vŠn@J5?v-'  퓳?x D0;d%0- E5:Qطobſ;v-[ض[H`b$ *ȠXGb/4?S;P!L@tbڟ @c N;Hb \@c @r!@&!868%6g^R0!h"8axb d`b bp`4X%0[#yI;t@L.xR-ű‘; *t; űdŃ0ιD0z;%8>A`[*`L;C-b)?>3űCAp;ə$p;g(v-*0Cq<9`]`"T Gbس0-)@v#"bػ@``$ Й: BPY1?@Z#0 EZ+N;6Ѡ!`# |+ 0@h!Ā/"(#Z;ž2x@DU)3!334/@5@; i be>P @;1([@\;j`^d+$D a v+//`a`|bcDP #Q`vHðF%C/Ja J `# ;"a ġ'0B2!ص[+%\t# ^Š0`0aP DaC0v-yhX# ĐnD;§J@"' EQ-0% v-@,(v%@>&OT;j;x, J h@@&r ũKb0`4 "@aGTE@CҋAH`8)r GbA'ؘ^䧂#C -EC Gb`.ðū t pT;BfGaQ(v@9ZP$E#ðu(? S5`@^; aJ0 ðx @da@)$`C@x(v T(1NV C=$JP;7b;}V;0E.4Jq+BGaQʀv)p;"PQ,ávG(z#2'vX.b2² @j ؞H! |, #€7 " !2p q*tAp#Ш$FH*7 + C@ &k`d?84q@D`B2:Ia ̇bP1#2=8`/pqXL;Qd(@^;"7Pl; a`8 p vB@ G`\7B *:r2#- Zbhf;!+±hYh `n`: :PB BT' ]0;!SƠT `Zl|A #`f!`0`x J 7; DPv ظO1 G`ZGT;.? 0;6h-"VXXb|Ca $% vМ.qOv;@0"G`@ AD"@\PtDv5p;V;87D#!  x ;|. A P^ Ba AbƢx^;E TB!%p@v,((ؤÁ4Bt0 9 Npv)F; b RIՋ!\5!HM(=1( Qv &0,4?6a ¥K`XBFhvDB+*,P@R0$:G`X`nBt Ą,@,dѸyHr;T|c#,vl  ]X Kð(z !%#"AH<0JIa(š:H|0!#a$$TئC@`vT! v)%H ` /<;0TP2g> H`f5;`R`bf@̷90 NEL ;7f A,1@B"|O.7 Ka5!vcM AD@V@Xvg^V|v`J`;]?;p;0. `fFCPv`.@'ApvZj;1ð+afGa+p#Xvb7A Gi@@ Fz^X)<;bn*Pah&V  ñ\vd:E` uð PCG`f*x@tvkIA#B ş v`xv@Zh@dvb;D ``H8 b?CP@0L!X+kx[c+ `!4-lnj+FZKq?' #$ D$v|F㰈E@2P;05QTPp,Tp hv;!# @@!܌( hGDj@CЍxvX8PxG`h xVvL #بL0f;J! J8:;AJ` %#PP'@`()+H`h*x`< aV!q#Ic Ё 4|fvS@8v.R'A* 19bkBmmm Fl?3Cx3m3}1[,txx1jZ2GՇz?8a,/C,]B=+a2+CsD&z&zû9e69C,]DRC,]DK,s< 4ls h-upeyhZŲpeyhlVGmȖ4NJ,]e`5,N6bgyԦ*"^La 0mo:3( liG@<цIR^Y%%#[=R0b qvjÈ֞OD8gN,LbVx2u dfP$MSUGD/[&s-Gz${=PaNZ8 LgK6F%Huyg 8 8lLs/ί#Zy=i:1[uԁ4ͺ@_Dhm։tf$z=d JC\_;dw/rފ&]sx^KA w/6ܿw/rܿKrO,w/rn_7Zy/Zs5q$ߐn_KDO7Zy/< ֞KO%lVuu-/Z28rGMz%/)޼,IJOt,^ 2 9 Oay!I\ʶX%dfbkw.Z99^fh!/@%&eK<ic^AbKe ʷ/ KիZt:%dޅzم:'* @Zy=ˤcQz"Qu_&~M]uEO]u#)3u_13u_įhr?c]u뮺7?GDoho뮿6S7o뮿Bo뮿"e뮿G뮺ܧG뮿܏Ou_So_]u'K7]uxo&J_k]uxB:h}]u<ɿ뮺<=ɿ뮺[a BW}]uV s] ɿ(2?ɿ)1ߢE~5A] ][v}뮿5M(!bɿ뮺}~M]uḁ뮿L?G'(뮿뮺o)뮿W]uߢ͐?&k7u_3]=aG뮺z}2u_H`?]l-u_2G)}뮿!oЊ_D,Q뮺 bD.뮿?_뮺ԟ뮺z#W]?&-'/?u_I뮿5o'?]į뮺9a E]ue뮿b(o*]u/ c]uɼ^H+ɼ^JrGk]uɾ?]u$:o뮿~MM]uḍ}]u J$o뮿MMG]>)u_"߇]u߈]uPAu__`?]I?]Tɿ뮺7)u_4뮿)_] )u_2]u7~M]u6~Ru]u>u_R>u_ ?G?뮺z>u_27>u_?뮺뮿BF)Q뮿/]up뮺97]u?뮺뮿^?]ur柔]unmG뮺7&] &뮺:g7]u7]ur?oô/~u_]uٷN&~MG]l5ɿ뮺ɿE7u_Oߍ&N)Mo뮿E?~] ,뮿B?ߒ&T(~M7u_l(u_d뮺8]u#]u%o)~3u_@ O]u!~įhVu_N7]ux#Su_gd_]uL& &ɾoɿ뮺ٿ뮺P7Y7u_?&&Tso뮿{H&]uأ]uy7]u >u_d]upKr]uy8ɿ뮿P=oR=?u_B뮿H?]l,Ϸ]u~r뮺՗bɿ뮺7GEu_뮺7&x7u_$xAqSo?&D$~MW]ǿ/ 뮺~(? 뮺~+~͍&]?]뮺ԕ ?c]uG؏뮿5]u#@]hQ]uḭF_]0#]uD_]up(MEɿ뮺WބZE?B-r?c]ueOu_2ɿ$~M]u/]u"$?P]u$& ]u)WNGu_#ߨFoh7u_mM207o뮿 ɿ(M)[-?ao뮿MQ~M]uYЍ&ToB6&-M]uzɿ뮺!ބo뮿L&.~M]u?7G7u_#~MRM]uM_C?]ur$~Miqߔ~M]u?c]u#i뮿U뮿7?]l Hc]uЙo]urЅR 뮿 c]u7 ~ſW뮺`6u_&0D(JÁcQ ?]??]u]uOoȿ]u~u_ou_?̿oǢWG뮿aG뮺z)~u_?o=뮿KoLoB?]uY _]uJ?oÂB]uKo?&"?S뮺8[ c]uȷz_]u?h뮿i/]u%&)&6/_u_`o&o뮿3뮿/ &D[7M]u[染]up{7M]u/M]u[k]ut07M?007_ɿ뮺:G[u_ &o뮿M]u7]u$o J&o Q~M]u&?&VC]u{7]u*M)o]lY7~M]uo QM]ukTdxJ%~M]uwo Dɿ뮺?&L7ߓ]u#o Eɿ뮺 ?]uɼ%&Rm7]ʶX蚅{̫K̫KkWvte2k/g2k/wHc~IVļ2W,tOD\le7]D.e@֭_kն9ڻ[,ކ֬]+c^k11 Q,ˮf|ͯ3ɥ_!Sļ#9e̲bdl#8nf]u4m|qM,I.9my+:'nglw%1ŧJ 11uK2nY_3kidlw̴Dd#9e̲bdl#?-/ /u۞h$,ՇՇ(֯YqvjÈ֞OD8gN,LbV҆ONm@o GH$xJ,~>XGFoB#?tfN"?Aoɨ'$ћ8 oh?(b#ћg1>Y;l5 h-u쿧-&IgKm2J-Xp-Xq2iVP_^3VFz%:uygcR$f 2"h wo9rχ@}) hVjtFv)iOX-[,t|AY oDAY oD(3Kz&zûYY=[45ekfF?aDFvj0a,s*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fFs*fG(Y1yBū(Y,ޏ(Xe %; dz?]sb|KI)I)T/uZ$ e`{/*"|KI)tB/UaFK8d+k+XsexÀqp6Pn\S0@DӞb]-%"oh!/]p{ ֬K()Y%%)Y%+vK4Su ֬Kh!/]p{|u$hK#@2lxrB Q,gn;mr8뛞Y]kkbc>Wr06<^vvxdwb͆먖ewV36} \+gWB敻$8 .XΥVN,nlۜJyޅ6u̮Wr06nu,Ҷv/nyf VsfUPtk,,^ewV˖.9sf{s1dr6lK4'U6|6oz|LǍGK8e9kO'Y#-YBg [gq-Y= glRJA -Z;2l7\AՒ6>_$捂̀kmr%lg#䕰v'[8ld-t̀c/uY#a%l74ld-_3sV@pR1l:YD擶vy= JĴs`s )nld#NZ8 [lDJpTWpb(֞ODQ_$ HAYKYk'mra2̴K#t/n_$7Aԭ_$w+k'lm >2lYmdʲfmr/VK(:n5ggGz/\K2+rJbdq7<VG+aknq*N7B:^K'nB띬嘂9[ ͛[sVZ91n;mre蕺u6/R WNy4uzVb mm%Z^n5M,t6p} KYt7u7Anfv^vvxdwbͬ]D+r$.F׮nJ^1Daw`C_:3}6ܿ3/6gps'u,ߏ"Xh:o,aK7H0Mk]Mk^6P=_3C? )4Rl>c|jyfYu<,`xpd<,ߞY]o,.e[e[kX`xpd<,`xpd<,ߜK'uyԇȃsoR" ;yfYujа/V^|KW/_Xr|+$_$s- dW4:=^I&Lz%Lz%]*-E%?4K~yf ]7^yf ^z.C=]!E%e.e/<VG/=]!Y+#Jh\S1p&18!|j>`>:2rvEy$/4]%e 3ܭ9*(*(Zy=MBw=Nz%]GiOD֝8՗;YPArh= C{ʺY;яAjas%1CP52k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/g2k/a&PhsOCJs`%n>74jD>h?륢!Q'hs5K:ɣ;YמMޏlμh/|kfuG)|wҐeV^2ƶig^y4rz>5K:ɣ;YמMޏlμh/y̴D\KuΥ,Q% eJ>_$qK:Cp:Mj: b0BCq!ð9 t=`CndX<8]-̫J>qF&1|ZuK2(nZh Q,ke7]D+r땯9u̮VZuK2(nZh Q,ke7]D+r땯9u̮VyQ%ZnK7@Y ^,k+Xry4%5Ca,T/Q7koEEB+_֮l%^&5|K 08x7c荔#J> NJ pF>AX,\AՒEyg#D((!A&P0DABD`50Z# Zy=Ltz'ͦ\6m2ûCl:YDVIz%r%b9ebXr|,/SWKA |ah ) @qkNj/D^KYa ֬% Rwu$`jwu$`jwu$`jwu$`jwu$`jwu$`jwu$`jwu$`j̴DtEy$)KGwu$`j̴DtEy$)KGwu$`j̴DtEy$)KG̴DtEy$)KG#\b[k ttgdSu^rC4dPYמM2K1drKA |h `r% >2<^vvxdwbנ5^dX%Q,@Z96yr%KA |\VO:#J#\jfl:YDu,d% .:b 񄗢PC2%7^p 厃05C@FA!!gR@5;)'!D~_$5H2h̼)%?9h0\XZ"M̴E=DJ^wouY#j@ $<s8)lcq ׭^rxw*'9<`dwV/V\RnC VGz%mr%mu/s-,]-^I&\➉XhbhI4J^wMDKKDWIW2󸧢h0Z"XZ"M=D2M+yKKDWI9h0\XZ"M̴E=DJ^wo;XxyUB_1{ /]VIz%c X0 t@@nQ2Ã%ld\r1._CwF3k4lͱ̃]r7y$ls;Lf1 ֬K,`AMh!/2ZC\➉Xa ֬ewV\Qs-,]-+Ť8̼)%9z FrBaze#кrĮeq,]-^I&e%%w;X=Ds-,]-+Ť8̼)%9z FrBazuK2(d=ī[Sd._CkJ_5emZŲ9c2l}-%6y ?LhKA |3} ^xBԳVG+acۜJP9)cj 9qVHh;@pR^15CFnu$mtr`s8)/-XV-Zڂ -[/Ya ֬B_1D(c2M+yKRı4WIZ"X%s/;c X0 I75V.Fdڂ -[/_ j/D̳<9M/EK?0Jf^x~:ɣ e_]-wa4ĶU4DxK.Z9%DiU=lh:񄗢]trK扄ҫX{Wu /Dqc1g9sqc1c9s?̴E9hҫX{ıtEy$Z"tDiU=\XZ"M-XV,hz&XpyB6^dd?ij$igmZ6|͎g/2mDM,} ^xFկ3nu$mb%]2[sVA Y_4 Iv/kHڵ69ck4恵I46yVf3 f|6xy skbtK`|s8i2-5j֬]+esa/%lZC |5CFnu$mҫXzWt( K9̴DtEy$)KDJ^w Vl9Asa ֬Jake\sA`s8)/2h<8]-+yL&Zղe%+$NxpZ"W2M*e]DKKDWItDeq0UkVʻ9.$E9h\a4v><;8f׫mr%lVאe̅._CrJZ%ls;k\a/62 Ǘ\} *h8rCLf1 C06 W\lн3@y^1 j 6 gXB띬%leYAb]j2XE9H Փ1e 3|hٛcP>4lufΥV'[ Ҷu̮15CF%]sBמ.Fh7;c?fVHh;կB_19s813c9s813c9s?rØ l7B3|9kls;c>!#`l6Ų JvկgVIz%eyiz/gDb UٛcP>4my+: ǀ8(7(7 #eqcJrggGz/\ٵ:n폗(KA |!KA |3#t/ls9xkZ,͛l}) L|(!>_$7:9Asa ֬wy V9P9p9Asa ֬wy V9P9py)g 8X2iK0e-Q\aeՌ"zkpy)g 8X2iK0e-Q\aeՌ"zkp9AsgpV^ܒ,kJigklg9AsgpV^ܒ,kJigklg9AsgpV^ܒ,kJigklgJ en-vt@mZ]-%^1pV^ܒ,kJh;կB_1V^2fRY6bPCl|I[ 6nu+cՓYdY#fJacWtڵ6ZK 63񏆳LhQ%Q,~vKA |!ly qx f|6>~vKA |!ly qx/mr%mumZyޅ6u̮( K8{k+kw+jk,,^ewV@pR^1Y_4 (`?;kbtJvN6@\cu,d1塌 JpxrR [X ॵlu$r0eel2(֞ODS/Y;kڵ狤/q/V\Vկ:u _$ͭī[IxVgm]-FCkV.̍VڵegU8[+t/nIhcmtrjHM g/-֭_kն9ڻ[,ކ֬]+c^k11inj^̍vbdn6b[mXQqKuWmdlD#wJF׫mZŲG3X^cCf8_eJ^1Y_4 bB_1l%ls;k'mrsf!c2l}-% Ca+cY;k67A # mb%]2Y+#ٵ8kkw+gk'b㑏U8[+t/nIhcmҫXzWPڵ6Rkbc>2l}-%-!)蝵V^ZÓɯB8k4恱@ZK 7A gmd_Cwl|qpnl6pich!/vio! OVOD\RMz/\^1Y_4 bB_1l%ls;k'mrc닃sf!cLh Q,ZK 7A gmd_CdK8x/;;<\;бzuK2(dK1dr6=ī[\կ<]!xxrBXfWxn;\ήAuy!^i[M,Z|ܰ6CODס|͆u˗ܧ,`gW,ӗ<^vvxdwbͬ]D+r 3l[gWB敻$9x# mb%]㕰P9._CgW :4I&y?K4'U6|6lg-u˗2vί4++wIr.YXskQ,AYͭī[]-%VO:%2勎`l9uG+g3/<`ۑ|} \+w\Cl|Ҷ|ͬc|ofJake\sAjnlALۜJv'[Xnk9Ps> K>7ٴҫXzWtڵ6S6lV.n[el:\ς 6m4U46|͆ͭīglz8V[:़cJ:K*yYniNאV.9me ysK:ɣ0lrd+̹bKA |!XfWx U˥:dn킁œ7lfsb fKA |:Jake\sAggĭ\R5(tן%Hn>7|͆ͮ u+l&Zʸ惦'[Xnk9Ps> K:|oa ͈)[]-%VKA 6vy= Jl0k6 <`` C|oa ͈)[]-%VKA 6vy= Jl0k6 <`` Cj 9@lgȾY\=Y=l[+sʶXn뛔d,\rh!/^16yNniX-k@86iK3k\ eM0K#q 2J shaY+#ٵ8kcK'lq,Sdq;^AX嵔6em,&Vf^xœ|9uG+`eY;gWe\ҝ #) -,&V/NڹMz/\^1|+wIvկo5ކW0ZY 7:Ґ;^e lZvNÕBG(LǍG,\-ylv[>liX6F5r 7r> [a26X\xRJA -[GmȖ4NJ,]e`5,N6bgyԦ*"^La 0mo:3( liGmȖ4NJ,]e`51N6bgyԦ*"^La 0mo:3( l--c"X%8m*C8dadakg`5k'5eًɜmRW1y3Ҝ6h̠0Fٰqj 9Lnz/5 u+qy܍xq9z%;/-ܧyDG,\OEylv[8ZK ]-%V3v/l76n K&R^y[M,|͝Ky86v_4P9a ƽr'^6[k.՗Y6^Be*s)pih!/ڵ6S6v/0_5^1 C06S6ZK 76rgM,\ܫ(:f h:`R^ ~ikbtJ^1r T̃(CR8T8#(CR8T8#(CR8T8#(CR8T8#(CR8T8#(CR8T8#(CR8T8#(C)䕱퐯;s5K#t/m+_1wm,ӬWPJnlۜJP9uKymzz'/lZCmz[a,ӬWPnlۜJw\ĭ*뛖6|YiK3kb{ak!/<[#kV%nymt&K4'U6qҝ ܧ'bK4'U6nnHHM])xéfYu.YXsfVG+`s8)nf۔dN^1eֶZK NK2rkJܒVG+l%eֶZK 6Y\IK!Գ,KA | ۼҶzPoq\XXsgBUB^K;k'n+ z%ly Yl:!Daɦ_3kbxh v4O5;MB`J)vϻb?3KNiH=xY,tqʶX;s>rg]EHpCb I‰$RpI&(I;' $oI‰$RpI&(I;' $oI‰$RpI&(I;' $oI‰$ba2=Pa 2d2Geb|wKA |1Aeeޏ 2d2Geb|w2̱Y ;fX_ ,VC/yY+!z<,Aeeޏ 2d2Geb|w2̱Y ;fX_ ,VC/yY+!z<,ZK FvY9m 1̅ 2d2d/^9:8r%3‰$7\ g[;4_5X+Yy̴U' $oe48Q$~s-I‰$h /' $oe}) NI$ߜ@S(I:8yY՗󣈗e+Yy9)8Q$~s-I‰$h-u쿫XHKDKI)@qs]?ƶ[WZv!#X|w 00/x  00/xx 0000/x 3^b:8V^~ΰtGG]jϜDS4KE9hZ"X)KG2MNxpZ?9h0sÅv39햎g F?gls;chpcv39햎g F?gls;chpcv39햎g F?8rAv!#X||(IZ&],g֭Q%a,ӶtqKgl s-I‰$eq@S(IZ&],g /DNwyIvK7DKKDJvi%s/;z&c Z"XZ"WsHq+yS4Kg2ZC\➉X^@Xh!/vG2#6Zk4恱._CgwZ|e]ka/Ǘ\} jkuLh]r6wuW^190 c h$DeqOD,a2,`AMh̼)%V0iۺ%:Õrx=֭Q%a,ӷutK3wu+]D p耱[\sakbc-kuLh[;4m]-A֭Q%a,ӷutK3sd,\sV0iۺ%@jzz.9cnu,ҷyls#w(i^䕱 |YnJF%Q,Ӷsk+cԳJ敱̍KYmz/V31sf+caDNͮ_$gcR+wV27y.‰f\I[e%+$NxpZ"W2M*e](Iuy`n;[,_3wIv3shbhI4S.̼&JaWg2h<8]-+yL&Zղe%+$NxpZ"W2M*e]ƶ[WZwZYVfKA |3|6Zk4恱._CsKyRx._$3@cxK,GG]jkbcY;kI)c?u+:8V^vղ eME6fhpcY_4 .r[ڕt@l6Zk4恱._CsKyRx^KYfx Eֶ2lyu˗FԨ˥b`8/G $`p%XM,9mb'斃ɗ p]ka/Ǘ\} -mJpmy.‰fl6Zk4恱._CsKyRx^KYfx Eֶ2lyu˗FԨג(fp^1kuLh]r74*h!/#4 :h!/f9F/U;s;jƍ<] 38^hJ{BI4 7ZFIz%l76nI4qZK gm@ѵu3ځjGB8!률bv\IW\S16tt,^yf \6Zk4恰J en0Jڕt@lx^1]ka/*-xK+jTkvK3cŷrע[ f|6 W\lн^[Rx. y>^l5e@%]sBIz%mJpmy.‰flx^1]ka/*-xK+jTeB_19xLJK# ,\r֬Ey$+wIxls;k'mr j 9 /DEu/< ^gW\s+k6sayw-;-.2>' $h]) .s-OhRpI&E^[M,9]-wvK\լdxpZ9)8Q$@w]"/DI&y eM@ls;d%V_CjPtv<8]- ?--c"X%8m*C8dtakO'Y(֞OD8ًɜmRW1y3Ҝ6h̠0Fٰq(Iuy`nI4v.ly[^䕱̍tKYaD69bZ9gls;ecpٌcHᴩ,цQ{A  L|(!0YolKY^翩P< f^xf^x%;f^x%;f^x(Ζ-AM*󙗞0uW jfҫ]֭8dM*f^x)& %a*%]*l%֯)%aPCa/c%a*%]*1-_RJUJ2 ~Q7u_dBW?A~VO c]ug_] ?]ߔ~M]ugߔM]u?~%?~ ~M]u뮿X~"o?c]uhK~7숣u$_]u xɿ뮺"&g7u_dFW|f~u_dB7?]uD*_] ?3뮺"K0 o]ub]N"?b_7ӰUXGFoܛ \_%? ic - w9Ƽu_Bd?UGz.y|?%PXx=PaRxJAu$2,^Xt,^~Y_4KD)UE!סbe8[,Qy~iVމdG?*#Q뮺3}뮿B7}T$~ ?kP뮿T&뮺 7]uةE>M]u*?))oQ#ƅ>M]u*Cp뮺xE7u_`:Opk?]]uj5뮿tƢ]u*?&k7u_`:&T,Zp!6Q2=ћܿKvI?7Zy/z'[,t|ҭ ax?^,̱ ^lоejTh'yج@?]/]u+?G[Xɭ]uجRɭ]uجLt_]u+&k7u_b#o ߓ]uov&V*NYu_qG Ŋ\_^z/5*c.6wO,Q;X&/j;y|βid6βidSybYM,,;؎;Ԩ1Y%d ?Pba2bL9W5(XwuXL9{ lGrĮkȏ'̱\$Y"a2\׏װaexe ,B׮YBaBûr'\׏GX׮YBXf o ?c]u0_k]u 3[oi]{A]?{B]ߓ{B]_D8ooh7u_a#ohFɽo뮿ÁgohHhIu_ay7o뮿Ãɽg7u_a7O7u_a?ɽ ]ɽ ɿ뮺MG]u zoɿ뮺?Bo뮿Ņ? }]uر?L*~M]uB# dyO{'tf_;uz&zû@86YמMKgƿ~ c]uɾ?]u8SvXGForCa/O%yV8r=PaRxI4$(u_h _`ɿ뮿 ^~ G{?ɻtћCa/o ֞K:=b^翩P< $YמM`?c]u3 c]u3O ?c]u3S#7]uB#gQ//:3w93s?g9l&XAJhj;%u*Ih!/z.=s-OD,aıtEy$ic]D+rKnq*\Q2mDM,} ^xFկY_4 0Z;+kQ,ۜJY_4 K4]s[Vf:֞OD Y_4 JAYXVN7; cXd6|͎g/Lh4<`dwVsf$K<킁ॵHr2l}-%]s[\Zڵ6ZK 69c\q RB- ފ&XpyD\v^qWr06KE ZK 7z(ascۡ{c8^eu-,\rh!/eJ͎gngy,\saԴPqkbwQ+k699cLhб[Y+#8l\̲[]-%1 f|6hxjD^iWV$K<킁ॵHr/ͥu*-._CgswnyfYuY_4 hXl_$ HAYīgmzKA |3picŧ,ͬ̍OCgs4Y_3r˭n/2l::AYͭīgls;k7"jU6ZK N^1iaFb l76mm%Zvio! %Vt6sk+c>2l::AYͭīgls;gW ܋iWPnligY8k4恰K#s1dr6\+r,VY]CrJAYXRY]kf/YXiqr6bV9sE^1 f|6<^vvxdwbͬ]D+r9lV׮n,.B_1ck4恱# l7]D+r9r:V搅ynI4^1icggGz/\nfWxls8bw\} JݹeֶZK |5e@tuy嘂9[ ͛[sVvήA+W,Ү! JigY><^ZÓɯBY;k6vkбzFlVȱZdlu vkбzNk-K>pٌcHᴩ,цQz&zû؎e|\_HlG2tzkw)|n[H^[t2F2F]H 8IWPZflͱkb9pC\ISpGr0 56KDakO'Y)D 5A8!_$s ) %љdlG2tzkw(( `mZDrv3~דWc)vݮ kb9pC\IA@@SqK1 s1̃;63u6 <ap GAn(7Sٛcۺ^p 历08x7c荔ulͱt8rCfmpQn NJ pF>A i䭙9Xlͱ#J> NJ pF>AlG2tzk(( `ls;k'n(mr%muƶ#h:_=5d069vNJ6|r# 2b5, dQr玗6]3clG2tzk(( `ls;sJYnͭī[1[̴/J 2ۻfR̥Ck+kw(5A8!_$s )kJ2(֞ODS/s-K|̀34ZAv^nlۜJ[,^kHS/<9:n5f!gR@XZ# Zy=Ltz'ƶ#h:_=5d06<:2-ƼrBm:ls;kն|9klFtqc :_= ܣs-K|̀LJR@Xם.YXtMgmz/V3|͝ވΖ.9lxCgK硵;cpò,S,\Fz%2:gl&2iK1yӍu)us8m)nui 0HڀNZ8 ]}/u0*C8dadakg`5A8!_$;`_gL)^uL"m׃'S68GW]U]U]U]U]U]U]U]U]J뮺OL뮿7| ]u뮯ڮ uW/u_뮺>SB62)`>&W]u?*tc]u]u]u]u]O]u]U]U]U]U]U]U]U]U]a[]u]u) ]u0+w]u]u뮯]u_뮿D뮺Ѝ|L~p]뮺ou]u]u]u]u_o]u?:>y`Y=SJi蚅{Gkl*-%D, ej1Q4b|EDȲ{-)ΗDTMr13h?bA # L!S؆&b* bgb?bbg5O؆&o L]bg;13i?7c_H'^FH" ? U~""B=@w-= ??]g?ccaP-O/݀185\?3d^GɅNϊ]{$]`D䝏vO<>5>kOcR7a?`N.`T#]H"`aoo& _Ԋ~P~"#Yp6XӄNoZūNofr97qc x%m ?0~ǂvcx)m ?0ǂcY%&x.m ?hAc F%C1v vc S m ?](c N{C=P]؂hf1؂o3JHAU3v\ %Ovc @hf1 Y ?b38Y؂#m ?NDZ+D͡v ;C1"c1K"cy$XAc'$|DC1m ?N GBshf1q; hf1p,B6&'B6c #`?؅Fc3T ?!2&@&3L {` Bc b3L;=`7Bc/v! C1G}Icǥ;C1hz6bhf1.cv=O3 {vcװ!ܽGC1B?c6c dm ?2K3jC1v=$m ?2C1z%m ?2蝴3>z)m ?2~Ǣc!賴3C1sdeC1 k3ȗ؆Y3AWb=!{C15;C1E؆o3C5[C1{ ?SC=؆3@!ICvc(;m I(~ׁ?_~ׁſ~ׁ~ׁ?~ׁk?~ׁkد:Y FدBbk #_q+bk#bk)bk.bk~ל)~ל0~לد3^p,bk)~+5_ددďW|b+O_!o+CoW|د دW|+Q+TدN_~%bk__bkՏ_~׫_/Wzw^r+O++@~לدg^tS:^t^tF~ם دS^~׬-~׬6~׬=~׬$bk د+_?+bk[?Wx+_V~א _د^@^@_K^@_[~׭SZ^@~׭?_EWyO+WyگWy^v$bkOWz^^^^\(bk د_Wzد_د_įWz[^^+^ŸW{^R~װ_౿Wx,S?_@~ׂ3^ W|?د~̫_1_0T~bk-~m_9#_8[~5~П_A+دW}+^x^x?~מS<_炗+]~א[~אTbk,?_^A?_g^B)~א~אbkDoWyH~אOWy=-~מbkO_礏Wy=_1+^C:~אbkbW++bkWxz^_?دF~ׇ+=_ൿWx-S?_@~ׂ3^ EWyO+WyWy^|$bkυOWx._ื^ _^ د\(bkp_Wx/O_د^^ įWx/_BWy+?~ב)~בoWyR~בW}-bkS+_HY~ױ)~ױ^W+^H~ױ?_+^~m?=~ן?_+[~בFد*Wy^Eg"_د(@'~נ#~נ_bkoWz@_دO+>aWx|&bkg^ _Wx0UoWx0?_T~׀2Wxbk ^dWxد_a+^F:~בbkW++bk?+~׃+"7+_دb.bkWx)~׀#Wxد?_,bk^bkW+Hد?_ *bkدEدFدGدDW{!C^[~׃!+'~׃#Wx2gBW+ دfOh_tbkb+د;د:Wy+ bkg+,bkٔbkٿf^̍f$bkيدibko+bk+?_P~׃Ao^_Wx'~׀1+bkJ~׀0دj^ GدkO+دj)bk~ׇ_Wx~ bk3^?دlSbkWx6#bk§+Wxbk^د$bkP~׀8+bk ^ _%bk V~׈د+@bk _/Wx.bk[~נ~נ~נد3^,bk$^/bk%W+Hد ?_ /^ _3~׃?د^!_/^H?_*Vد(kbkģWx^% _د(V~׋_~׋X^.Wx{Wx}WxO__u_gG+ ~`I~`L~`]?دد_دد7bWv bkX bkX&bkX,bk)~`8+_ددWv+ Wvbk]د5$bkP~ah]OWv M_~`:F~`:$bk?_mbkط]د6=~a#]‡+ Wv د'~`]د _د دbk^]]Wvlkͧ~fο_ٶدؕ͊د7'~a?Wv_oO+ Wv_دX]دX$bk`ß]%د96~a+Iد9?_r-bkbkOx]?WvW+[]?+دد~`>#bk__ش]Wv Iددد:_O_Iد"+ _Wv.?_ظ]ſWv د'~`] ]"G+;bkد+:]?_o] _!o+%?_)+?د`#bkaW] ?د]]_O]_+AO+@#bk+@K~hI_3]1]1K]1w]?_+#OWvFد='~`3~`O+_|F~`F%bk#?_ؗ]]?دbktF~cq/]WvWv_?Wv%?د?>~a]0P~`NK~`T#bk+ دpK~hWv]'~h?_2Wv+NYWv]GWv/+N]Oө+N=~iӏ_u_~i~i]aӞ]>~i?ӑ_v~iWvA+NH~iok?+N$]_q38ӊ?~i/WvT+N*bk_qg]Ӌد9/G](~j]bk ],~j+P]@g]S]7~jk _ڃk _ڊ?bk]@~j]g~jWvWvF~jkO+P%]?_ځC@ ~jOWvV+P,bk_ځo]_xODž?~c_دx6+7Dž~c?_/_Wv,~c9_+#k_ҕ]+]_h|=Bk+]~dyܡ֬¨IJpY嘃,i<5Fu,de|3c DĺrıqVI1dṴKndUؖNrıqVIҭz(ܾDKĺZ\_@nfWx +_r3c EםS Y ꉖ.9⼒M,D]oe%%w;X=DDKKDWIW2󸧢h0xdw$ya̴DtEy$)KDJ^w Vl̴Dtz%]DG8$yY̴E=DJ^w,`AMo,!+$69BıtEy$³hbhI4S. #;ao e)%"tx52DS4KE!_oDS.M*+yKKDWI*Y3-nD`bdsRwI7y230Lr|,,= 7y1&G9l>MyĹ|nc0Lr|i5bdsy̌29a OX,XO4:f [+t:f [X#Ŵ,"D`I %Hf [k&m 7H`&G9l>^f;"c0Lr|k$2@n1&G9l>13.H+P,TACeb{P `L28Qe Ԇw(ySKW$SD3LW$,xH7$M >+) 03u/,;* 2|i9ƽtD:srnwL~ SďCA#_q#$z|c:f|)3G hLS%3G !0<`gyŽL!.{“ί4TAC&e4+Ť83xpPG 8]I s<|d $Fg;Ke].#qgJviq{%8guaQDxz㔏ED$x̹~Gy$* "C3 O"|ABC2)28Q%C3S,W1WIHn:W1ROEh#q+y%h#q+y98ďB\ǑD#V+)/EHn$zS ]3G aTgV+#p$H7= qE4N#q#W7Jw+%V+%<*GA3;̎pBa8(1t#)\G 8S$Bc#;̎pI sS 3G %x dp2XK&LgyŽa.{pP#)\PP;̎p`cFc]&FgyŽa.{,ΐ1ܑ.ܰ&F7 G ܑ.]-\ RNr q,W< p3HNA\L= ܑOA%3&JďBw$Ks&1yďBw$G s Qq#Н耹 R&q#Н fdJ+θb= ܑ.a,ӬWQs>HON>= ܑ._$,\}2W= ܑ,Ӭ^2L㩡;#Ai/]qN㩡;(ם@ }Ǒ&AG 8S%Ac;̎pK s3;̎pc s3w(Lg 28Q™,%m Cp:\I`70tsWGXx̰\y*4n$z牄Ґ`0yǒyďB\,]$:S%q#ЬWS&w(u&4w(u!.{z&X&/a,,x _3"eZ^BH qdùfYWHdt㩑N\J>ϸ$zԱgb y$zzINV.%5Y.}nj8aoΑQ4q(Qs$yďCѸ+#rp3%knsrGyM J-:+(EIs:(JB8bO8bZ2NP Hf1 ՗;C28QXLSI28Q반x L28Q40=(2|YsLdpL2QFAC3V3(| u;̎pBa((u׌՗;C3G x u)a(u;̎pBaH(uw(u.{ƐP&w(u.{ƐP믙dpןACdpן בdpK y;̎pa s4^x#/%AC$3G a.{ƐPL28QXK:G 8^0M s4^LgyŽ^~*^13G G.{pPϙdpK:G 8]yK H#.B\LTh֞OD@nGLyY$J7= SK<eQq#$zkJd$z@4&q#Юܰ:gyFW/U;]1qS#qiyclV미O84C<ĶR b;]2q#%qiycUCaBun%x33L%u* u\J:D|IJIuJ`<*8NK=._$,Qq1dn$zKA |I<O84:Xru,DZK DHF%FG[yuK'גcyTp,9:z"eIJHFQďBuu-Qqf&8cZy=YXtJ_JGY嘃,4:S8fyf #:+}+$zӸ<8d:񃎣}n<43E V.9r4:dn$zbdLDzՑu::#Ю_sebޅ@4:WH1 2Jr.:y2XcZAc@4:"gH1 4^j/aB링i\u*ThH+,R/!.IV܇ҸTq#Ю_$PU@4:*d$z;_D) "Wx_4JR&q#ЭX ^yDJL}ďBvxNb[JL#q#НKy8PCa,02yǒ:+er%r@4:3\H'K/S W@rYuWJ3z/%i\u*gq#Э`wK ^yDJL^FGZ& ֬8SuG]-%"W%:+>= E*-HFLJďC$;_$:+>biX/#KҸ遒4$z׮V*ʼFL &q#Э iU4HHL >? s,)/)M,^j"9 fXHFS#2LGRe]D/]\XFS:$z|extG| H[pPDw(uL3R&3G a((u!a:;̎p&2R.vCQdppx JG 8]yK:;̎p=蠡ԩ 28Q7B\ ԩL28Q\PPS;̎p%xULgyŽ^ACLL28Q\brø JFK$i\FGigb @4$yďCz#:i\LďBrW\2L= y]yFo$PCa,JΘq#аP:#<tX^kT:*4n:#Мxi\uԦ H'G^`uWu+︑c!ƶXF]0yky@4:遃$zWQ1*l%Ԧ:\uXWJ{DG2eA :3uXWJ{DG2eĺrStFg8^yB0:+GH0 Jdf:u+Q#3VS(| 0t#)0:`a(t!G 8L!0:`YsL:``gyŽLSdp4&4L3G ? s4L 28Q\ 28Q\ ΙdpןAC3G ? sACdp2XK L#)\PPc;̎pc s4S&3G ? sACL28Q™,%x LG 8]yKJpmy.‰fFsTq,Qq)Y2Ҹ= S5Qq2W= 6&qit@'uuG\IW\XLǝLQz"[sVg\H:#Ы<] 8璸4BIWPZf0x3#trJ၉g G hL`g8T]D+rܰ:3F= WZc R\IN.QqhѸN{֬Ҹ48gYDw,}ѦJ= >2LQLeP鋦j1G28Q8LS3G &2LL ՗;w(u&4LLL28Q\PPw(tidpןAC3G ? s3_t#&0=T:w(t*_HgyŽa.{¨(uw(L*_03G d=ARx.c9&G uWbY嘃,:+q#23V\>2.vAC3V\>2.vACΣ3V\>2tYs u5e((yԆj˝PPL՗;L ՗;S.vACΘ.vACξf|e:df|eGH0 xt|(D&3עZ/n:Dw9gM Gl yxΦI7y*39x+#WIz/s$yďBAi/]s&JGPPWLO%G8(y+w(v侼:eGOW@nTskOW.ܰďB.uď8Nd$z/E1p3\:>GY嘃,<LaPPTc2՗;!ce f|e %PP*c5e((Ht*o O.* #2)9Y$TACϣ3x9Y"KϺg;%d^#qМFGH0((y28Q0`rI: 7ys.GXE: .J㩑a$J隲a$J"W|e .vABDIx $13V\>23$Hc((HYs $Lf:HPP"S1D<)뢢 $x̹EGW9L* "DfeS$3HPP;̎pB±\QIGd%.H7M d)\S8hU:GH0Wh^‰7HsV3񁋈H4F)]$/<`bGH4F); ,+Dw<+[DθdďCDl"\IV܇s:$zG@\뎦FG6-^Bj񁋎= ıqw<d$z+yz^2<`bIH+,W'z(Xw,8d&K >;dDsz 7H鉜qOE##'Y嘃,$u3FO8a$u1GL|+]-J{DHg:Dm39LFdV%ήX2q2W%b0 &#ϸV+cz"aD$uLďBZ`+5p$HO8V+Lĵz<ǞJGa$#8g= >2%3$y',]D$usE悇%3.0<`df:xABDo.vABDfFc$FYs #13$FPPS5e((Ht_ABDo.vABDi I((Ha$F"4~23V\>2O?((x1a2>f:y1@nc#3ijDwy$H7= g-y3#q#((y2c1Ɍg;L F\θďC2臰<bg;`rF|n$z +_VFCHĴ%0q2W= Ȗ.S؏'5@&q#аZƺ|^}ďBek;u((yO>c?WQ1wLLy9r%R8ďj"9C+$}+j"YO 倹#]L㩡\kySC5+[sxĩ_q#DK'ďC5,WxLGe\wy%y\H3Qի+_Dq#DSg#}ď#j"9!L`x }ďC5,l$p27M %Ps,θddj"a2#y+j"9Y"Փϥqf H3Q .J}ďC5,]D:㮼ďC5HxjuH,Y bkyuҸf*4θΦq#DQ^ZØ qגGxyy'yn:DK&ɥY<GPP31ϙx#`wAK'w23˥=ďBA q#$za/+{ f  8a4X4GghYCG !G 8]2|fxu (Hs4X+$Q :f2?]h &xty$q "dw(0|*dp%KPTABCe4)L28Q) RxTy:* !e>ABC28Qc C|*  LHqxHn<]$ H隲a$}5e((HC5e((HS5e(HD$}1]0P5f0Lb >se 23V\>2H՗;!jK!j˝¨(Hd#.BO !S;̎p缮3c D\J-yhbղl\XY%;>EINbVeWl\EۦNQ̴E=DJ^wsJ u"MWih5KsW}̴Dpx\E:Xb|'8Fu,d.عY4@+ق?tR2XxJB Y')Srl\ى#[;;Ւ@;%8<9s,lK'eY2Kع YkbXOD;DPCa, u$3<OxW$'+*-H (.(̝ΥۜJعFt@ZA[|'%g($ފ5.ܱ,\AՒ@;Rs-(hgLQQJGPnDw(hb|(%g(LRSy$aD@;((%g(LSyI̴.ξcDQ+<]Q@ 4G2vI` (.(2IShj%ewXb|bI|z&c$@EۦI,iVIz%)df>ƴu$u: HadkO'Y:xdo&5k'(8Y$C$Õ)Y2 |OgR@;r(]gW })qj˝v)L28QИx |YsL2՗:BgL՗;2C;̎pe soԷY7Lw+#b]<.$ySCws \J%kh$q2WL}DGsh Gs_qu41rUgM KիZ .}ď8aQމtFsSBSC9L㩡 q#$z9q2W= >!1I,̱ 9&S \FGuď8bW$ q2W= GR@$$z QϸbZ{s:(מ.\t= LIs[wH(1Hfb#/Ac5e(113V\>2՗:>2#5eλfj˝v `L28Q1>a>Ys Lf# |Ys 23G 1#3G XKC,]Bb]H2sW)S@:0_:/]sق_peSՔ@;1.vBDj˝0P)a$LgyŽ$=10λD L|DLzb]: &9RJh3 BDfw(M `#cRx gyŽ^~*Fw(xԨ˗,Q`K$"gbY嘃,$LGH1Oע3&q2W= C 84B$}]yFH7Zy, yyW\IbY$ 8璸W/XE3^0LG 4"g$z|c ^3V\>BTw(10P)a(J`gyŽaT%LgyŽ^~i LL28Q•#(K(JG 8R\BS#;̎pB\PP`#.%x 3G WL.{*(s}1hID#q#41Y Hď8b9DgP$Ld$z@3IH+w, S8ϸ4B|Y=%1qS#q"D"󵋮9`JFTp}DTKS'%}7G 1̰#q"WF= ܳ /e8&q!D$zj&}ĉ#G >1j˝˜(003G &S&w(y&AAw(u.{pP`dgyŽL!.{¨(L#.%xU 3G ? sS 3G %x $3G =8(L#)\`Rx.132dq,FGigb @3q#? h!/ H^}j]s`LR:H+ܰ&uǒ%J= ֬&yĉ S8,,ZY7[D$J`ďBvrܴ/Hu՗#$@+:u/1Fj˝˜(1FgyŽИx ]3V\>S/dp䐘xU)28Q\PPbbgyŽ^~*28Q\PPbdgyŽ^~*љdpןCdp2XK>G 8S%C 28Q%xU3G ? s3 28Q™,%xU3G ? sݢRx^KY7|w]J%@3H1M,AH&q#$zk 8+ `1LgFWKA | L\uןqir%]s`1}ǝLQz"[sVbdGLqiYXtq+%qidb`g G h;y<$>&qԩaXfWx]s`}+F= WZ)L^pp_$ ID>7= b՗YHѤyďC:%]s`}3LQz|c.v)$fw(u&3'L28Q™,%x 3G d=8(2HgyŽa.{pPd#)\#.B\1G 8]0AG 8S% L 28Q™,%xU#)B\PP 28Q™$%x u;̎p\PP뮙dp2XK uG 8S% fFw(Le|t3ACw¨(uS;̎pK sACdp2XK FG 8]1 ndp2XK F#)\ `r%9^F\. FGXx\XFď8`8V++$Ksq#ЬW4]23G a.{ƐP28QXK y;̎pK sACkZCԆFr;{Sxen=Qn)Q576PMn> Mu%*"z hpx=JA7h`9 H>AC3G d=T:#)\PPDw(L*RdpK H#.B\PPDw(L*RGVIqH3JA8$zu:`<ďC=^r鋏&q#DWaܱ.}= DwBù`tď#q#DGt,;%:CH3t,;L\HW= E tθ$ziu:`ĩ_q#DG W@S8n$z舂zl% yďC=U8`+z"XL$zU:#Gyf $q2Tn<蠡28Q7B\PPC;̎p$AC)L28Q\ ;̎p=H(t1G 8]yKPP鉉G 8]FHKPPw(u!.{*μh#9J`K$"gbY嘃,$LGH1Oע3&q2W= @W 84CA :b`㮼H+w,qS#qiu鉋2y2z@3= (_4GrtH1}]JWta:31Ӧ&^2_ttSAC3V\>3_JgyŽL0 |#& !.{0PտL28Q8L3L28QHL2xYs y!a4|#.%x x#.%z((y"3;̎p䐗=H(y#w(u.{¨(y#w(uK H#. s4%3G ? sݎ˖nC9LID#q#41Y Hď8b9DgP$Ld$z;}$:#,N:ϸ4Cy$ `Hǝ1LGazy"7y>аׁ䎸4Ѹ4Bs5uԦ H'G^`H]J$zquNf 88e]D8!<㮘>QtDs*fYTK8멟}QtDs*fYKw,$J㮘<= G(XuG;<[BȧYD-u)dn$zo5ފl%N:K %)WaD:3\H'K/S W@rYHR0LG;^e bHR}= q._$PU@31yk/Z2#qԦ&84BZK DJ HLFIu$ 8QdtGktH3J|X&q$i\H1\aT,;y$LI8VNa4idio$:Iqן9Qz視z/5x剄,_$ 8dfIH30R %;D:ןq#((x!e%3V\>1 Ep`tD‰xn$z]Dθ= GX00q2W= G]#00p3%knsrGyM J-:+(EIs:(JB8bO8bZ2L%q#@lCX(x23<`cT<`dgyŽL.{øɑdp:7= KZ'ď8hbZ{q_qĭbղN&J㩑r‰7y3s+\b7M Gst.:SCj疈 q#$z|(DɒO- \b7M K;x \u3#<#q#w9@ad$zθdďCɌuH1O-w=LďCkQs:d& $y+%\x3ACɌLO&M5bI&|>11ƐP 28Q%z((yfw(u!.{AC&Fw(u!.{L }9F)O%'OBr}'}'Ub:㩒>ďBZ\u2WS8h!\u2TNDgP:㩒ďC32R1{-n39:S;.un$zy\X \Hz&<\뉒WJS p3UGy= kOW0u27= 2yďBu$Q>fԐDS:Xҙ:0P|c 3VcABDf&j#K`"3#5i!$ua$u5e((Hj˝ƐPԆw(t |*3G =u,d/L&^bbdOl\3/<`>ܰ0M<μhQJGPo#M ,gl (.(ҤQ,gl (.( 0k+Xse6.wKu;r:X ø+|c9H ܧq0h |eDl"aDQ:%\Ig$);L<(SW]"`.w,;D K< ]A%LJp;܃,KJv%Ȳh |X^ZØ[,KW/XeOl\^i5땬9ZŲĭb"iK4s3XIOb|Kw,G"KRxQJGPnTrB.Sb|(%g(LJ{ \IVIl\.S<r%Ԧ1`8KDQJGPo#{._$$,]$BJH<DtqEv4R,] iK4s3\xwU@;b\xwμh :%<;]<s<;rù˝øKA | ˝qK,eJøZy=v\Ov\P>;H7"4~#[45qG: :q̲l3gYD$]<rùHuB_1xr%+ƴz%+,Cŧ,|,)%WsŴE悄Ɍˌ3dpe&ع|bvr`\/^@!/H (.(M)u@wgMr5|*8A׎PFB\ȢUw<[DQ^h(J2 Ԩ}-% 7y1&G9l>t|n0Lr}G s$`xdsx=}-;XC9Kx=JA7h(|}7ؔ|(q&7:{Sxen=48<ĥDC @pA4JA0h$rBDw(Lg 28Q™,%x %3G d=8(H#.B\#w(tg 3G d=8(H#)\#;̎pa s33G d=rb&3)˥=\FG]s`y<MN3L28QHK ^I&9M=[*&q=WsHp&1q{%.gua3G d=NDwDrb7= WZ<= WI!\LďBuWus&q#НEy$%'uH0 LL՗:>S/dp0J)љdp0>#)\w(LgdpK>#.B\PPG 8^0K sACdp=8(|#)\G 8S%Aw(H%X ̒gYD.ܰ#q#uK .u\H3X:$zQ,K/Y.uq#βb:<O8*7F`;c`2H㩌8`8gYD1̱0bPCy*7= >)QtxpZ 72Lg:8| 3G З=8(223G d=EwQ3o?.ܰ>0y1 .u\H1Jrpp$SH2:3#9"XAlGsWLg G rE<*!b>`ΤL? rEGH/XIs<`9"[yr%d<ң9":Xru,D|IJH q*dH1DKbK$q*cyTp$GKNKA |Is&1y9":s&10yďCFz%" Nz q1\H1,dv&}$zigb =rW>= rEgS8XgXl._$NB b+$zYB)`22p30y0 FhgHgyŽSBa((uS1ӨQ-^#Q03.KH(uG 8]yK:;̎p=H(uG 8]yK uG 8]0 ]3G =H(u׌28QXK:C;̎p`i#/%ACdpЗ=T:鉝G 8R= s3]|#/B\LTh֞OD@nΙ7IJHF`7= SK<eQ8= S5Q8+d:$$z;Qqןqir%]s`uH3Ke ʶQΙ<= H2sFdGJ= …@Jgyg8K4'U@뮸#\u[yr%d8לyTp,9:z"\IbY$0q1dn$zKA |I<O84:Xru,DZK DHF`钣q#ЭE:%d\}1<*8NK=NbY$0qf/#q#Н]tef:= kO'Y 4f:$zY20qoďC41Yf:HKNE@:Ѹ3--X*u$H3"a #!멜u#'uG\/ 2k# f:WH1 2Jr.:y2XcZAc@3J3$z֐ez/5b3J7= KKU!3J#$z*ʼF`RJGSK%w@3J3jXw* u0y= E:%lp:R&FG:Pq-蠆XuJ`d%uVK+f:3\H'K/S W@rYuL`ďBvrs3JH+XĹ|BùWQu)H+XzՑu'Jb`H+bJQ8q#4Rdf:`Tn$z%w]%f:`$z`x,0q$i\H1\aT,;y:L &q#Э iU4Hy&}^~YDR^S뢚YDs5&̱|:S#2LGRe]D/]\XF`㩝y= >2^xt y!a:S;̎p&2^03V\>3^LgyŽBaH(u;̎p=T:w(tiFgyŽ^~gt#&0=T:;̎pa sACdp2XK H`gyŽa.{@86]-% 7u"c9&G uH1M,AHF`GH1Oע3F`d$z;^1p3H7uuןqןt@d:^}j]s`u'H:#ЮXvrDn<*WFneԎ!g%CuK1`u&q#Н\Dw-Kԏ8+u/3Rdp0:a:;̎p&4R3G ? s4RdpןACSdpן Ԧ&w(L*RdpK:`#.%xU:gyŽa.{ƐPw(u.{* %wLQIJHF`7= SK<eQ8= S5Q8+ `u+&qit@ԩuןqir%]s`u*Wu27FV0m%[LH:#Ы<] ԩJ\uGY$Xd@S 0L]-w_p3#I42q3Iu*XV.Y9W\X0FdQ4Btq֬:`)L^pp_$ I}4n$zu/<3F= (u}d:#8(t#.aPc5eλ;̎p&2L3V\>2L ՗;՗;Ι.vAC3V\>2S$3V\>2S%3V\>2S.vAC.vACL՗;ϙ.vAC՗;fj˝PP鋦j˝PPj˝PPS5e((t1a:bbf|ef|e.vC3x }5e((u՘0P ՘(ude`f:u2_Lf|g:GaD:7bu:GH1^y`un&JG\ap3%knsrGyM J-:+(EIs:(JB8bO8bZ2y$z|( qkdf 2Ff:u/ 'L28Q%xwԷY7t9~#\FGtSDM SA`.1q+:ZYt%qPPC1ӦOxi,(wL ~#W/n:9[* \u3%->GH0 2Lf:t͢O-dbg;E<._qu41.s.1q:@gGz.yRK103VAC&3V\>213V\>4|#.B^ACdpЗ=hΥ=īCu7` wrb`'P>λ b 1(.(xyht@Q4W(6.u(aD@*O Y2h!/h%Ql'DtqEv?(aD@IrIkO'Yol\ՓQ5,0u'lLy:Eۯ%u$hb}h\XTdQ= ܑ._$,\}2W= ܑ,Ӭ^2L㩡;#Ai/]qN㩡;(ם@`'qf pP!G 8S%BW28Q™,%x gyŽLa.{pPG 8S%BC#;̎pK sCP6/X b5t@V+%;N$y±\^I&X p3b⼒MTn&F#b:MW\uןqԩaXxKA | qןFGXxKBWu#8`8V+*l%*G}#<Q4<b;YGXx̰y*4n$z牄Ґ`H%HbXIO`.uǒJGXxy .uǒ&q#ЬW>G“ί4TABc2OxbTABdi< dpi 3G &K sξ2h|9tFsĶU&0q<+Ť8&q(&g QOS)L28Q&3;̎pK s3w(Lg&&w(Lg/dp2XKdpK>#.B\PPw(x,%xUgyŽ\w(H% 13G d= N`7}9},(%;Ҹ:%d:T$zQ,Jx F၊g= (%˗,:dogYD]te8*7F`;c`|S&ppβb;cba2,skZCn\JTD> M D GƣFC<ĥDC @pA4A57ؔ|(q&7y%*"z R @74# 3G d=8(213G =8(203G d=8(2HgyŽL!.{*"KA | ̑ΔҞ#q#ЮܰďBxz.pXK2@\ ]yďBxz.pX:YΗ\Hb+)QtxpZ 7usPP4cQ8(uS;̎p sAC 28Q™,%hBK7H\X LFHIs%JGH/U;pp$SH2Q&pp$SH2s _qΦpp$SRb /]:31 fdJF&J? rDr%\y*4n$zH qq#$K+\y*d$zu:L8c#T<`$zr%d: c%/XI<O84HK=._$,\J*7= rDh!/'JF1Óg%B_1%@\뉌^FGHE\뉌Lq#$Q7= rDvxNb[\Ld$zbdLDzՑ}#pp$KYD\)_}ďCN`|Vt@'\100yďBdD\S.uG LJGHKz(!Qp3y,3\rX/X!]\1L= s,dw[0:ϣpp((uie|Ys FdgyŽL0:35e8(uL28QHL= >2^|Ys x#.PPDfj˝pPGL28Q8L< HG 8]ƐPDw(xiJgyŽ .{PPC5i`ԉ28QšAC Lդ~C3G PyL:G 8L0:5e0PW28QšACR.v)R3G &2R.vCSdpL<*Rdp)% Ja(u)G 8SBaT:`#)\PPw(Le$3V\>3LdpИx 003V\>3Ldp#xbMP遉q.(t7L |fxu (u232htWI L雩b$@ngKAC 28Q™,%yL:#)0 LdgyŽL!.{ƐP3;̎p=H(t;̎p=8(t;̎p\PPC;̎pa sAC)L28Q™,%xUdp2XK 1LgyŽa.{@86]-% 7ttɑIJHubY嘃,:$yďCz#:_q2W= p3H7u1:𮖂,]}^}j]s`tuFW,;]s`tH+H7Z$Hba`juAu%0LG;^e Z)Hu՗#$@W&u3#V^x"]-w&%u"g G h;1LT 0y+%w;Xჯq#О.-&̱|:39X4WI7t9Lx+$:duǐd-[,:Gd)bMp3c h$@#qן`AK^I&LdpP鑉G 8]1PPjˌ!:ddgyŽLa0<|g#t#.PP7՗C8(yC;̎pC 28QxU#LgyŽa.{ƐP3;̎p`a s4gyŽ !.{ƐP3#;̎p`a s4FgyŽ !.{ƐPdpKdn<+((y#1ο8(yL28QXLAC&3G =(y5f0Lɒ=6G\u!<,+,<L`ĉ#G uH`d$z0CɯBuH`g= /If# 2 O%ŷu2MLLu㻜\FG]%θ= YXtθ+CL28Q%}xuDfskOW.ܰďB.uď8Nd$z/E1p3\:>GY嘃,Gi<`뎦FG^U:O8N%q#z/&q#Ы\yH1M4<ďC(ďC(.9%u3#J3K<e\y*d$zWIVGs<3\d,\|`Xy\XJyTp2 y+<*7FW\Q&q#Аnd:W^}ďC<%JWS#q#(x5f0 023G a0<G 8]yKPPgL28Q•#(K<;̎pCɒdpi&JgyŽ^~<#)]22ڕuKɓc$,]}n$zyf $q##)B\PP&w(L*|#)B\PPFw(L*dp2HK3dppx #13V\>33G 0x=PQ@8  #23y*_ABGQdpןABG]3G ? s4gyŽ^~$u!G 8]FHKPPԦw(u!.{*μh#sI7= SK<e]}ď8b9DgP:&JG9y:$:#Ca, u]yFW\X::H$<q#O8OBHuu!$zPh|$u+>((Hc1GL<f^x~>_$6n9Js2ďC=0Up= Z,0Up+]֭8dM* \2LG\I`1qןq#аbPCLďC07!tc0n$z0ҫď8Ujfҫ\H*i DiUbg= >vf^x~:ɣ܆X <9y \FGYמMKq#,&U룖%q#,&XIrW 8aPPw(y.{PPj˝pP;̎pABGdpKPP;̎pp=((Hj˝pP#;̎pG "Dfj˝pP#w(yL3gyŽRaPդ1M# 28QhLn$z]Dθ= GX>\H1+t HW 8bV0$qןqĭb`.HRhbz$Xd:㩑bt#,.:d% @3<ďCn= `#>a((H#$};̎p䐗=T$|#)\PPG 8S% !w(L*Odp2XK $3G d=T$2JgyŽa.{¨(Hd`gyŽa.{¨(Hd#)B\!a$2|#/= !G 8^00EGW9L* *4feS$3J+/(J4RxuQ Q3.N,TABTiLңI+\@(J̹'':_5Q Q3.1dQ QF“ED%FTi<(^\TABTfFe|iKW9L* +˝b WQTp" WQU ]HgyŽJ'`WR멧)% #q#DK/*7Hz";_$%F\H3 J$:ZۜguM DxH1qןq#DG+$*7u27= E4`J2yďC=N=̜y$z,;L\x3z" tθ︑g#.$yz";aܱ.33G 0(J鉚]pP28QHLܣë9xuJ3z/%_qԩ}ďBK,T,;y::n$z`jp%H10yQzB_1%rQ}ďC$J e]}LJďC$;_$::`$z`x,#JGzkbaܫ(_q$H+H'q0Ur4E48遒gueE%;^)DG3^9ba,㩑&q#@X)H2xs,uH0 03Vc*Dw(u$&2 L՗;*G28Q&02μh7`7Jw^X20qGq#$z%q# lJw^X20qG= S\뉒a̼|IMpX ҥtw^X20qG_q#$z%q#((J5e((J!a%JYs 03V\>2S.vABT&j˝PP+j˝PP)a%0Ff|e L3V\>2.vABSj˝PP)a%003V\>2 ՗;)a%0|Ys .vABT՗;*gL՗;*g՗;*dj˝PP2S5e((JYs Lf|e S.v Z>_$n3s|Ι8ďC@\q#((JYs 3V\>2..vABSN%%1Hf|e LR.vBS22)ILL2f|e _23V\>2H՗;PP;̎p(^J¨(JdG 8A/%IT%2HgyŽE RxU LdpBTABS#;̎p(^J¨(Jd#  dpBTABS'28Qy*O )G 8A/%IT#FgyŽE RxU3G"<*odp(K#o$@n`!?VGs#q#ĺ)x \H󎦆)M J-[,#y\u28a#Jf:0FH9aD#039\hb;l.1q:W<@\q#((0Ft`͢O-#13עZ/n:Dw9gM Gl 0Fď8b; }\H0 f:0FcwW$2/sfFsMܧpďCq#ĮH>bd$zW 8bZ 0F):㩑by .uLq#d:%q#ĽZۜ\&q#((0u-;$:陃cf Ԇw(P'PP`S;̎p(^J¨(0t#  LgyŽE RxUdpBTAAdpBTAAFw(P'PP`3;̎p(^J¨(0y;̎p(^J¨(0y;̎p(^J¨(0y!G 8A/%IT<#  03G"QHAAϙ01Q Q.u$>1 (0J]0P`!|c R1gXP`̹~2՗;`)|c _3Vc`)|c՘P``隳 3V4>2d]%3$JAAc1WR L՗;5e((0023V\>Q H>2Ι.vAgդ0P`!|e .vAAc5e((0LYs .v(ϙH>2Fj˝ƐP`b#.BAAw(|jAՒ^b\IbX)` u偁Ptpy )y,dK,K+_G_(.(ҤƧ2>@ ^v<4\I` |dZ;>QVOD Fc%%; ND| h;ah!/EDoxɄ^I&61ȯ$@*vi|d+$ixig^(nWI z&c$@ _+$&2(.(;YE9H Փl(KBHQ-Y=$xVx8;1K|kҝ ʺZK /aB #tO-e;^A}-%ua p0.wɥ;^AHKA |@S<;iN]- $ "YԩZDtK|b])$3W<saKx;(Zz `\DtqEvTƽt֬K %xb|'H:‘@\XSAB_1'|f._$ODǑވ|xvq,XZK Os2Al@( #77 Ѹh `AjQuW)Al._$$Cp:7^v,ap|xvq,XnFÙNאe /Xמ.|t@y .w°[:ÕȢKY.wM9yPވ sİ|*SWKA |b|*xz׭Y%*D>0R NiNאe]-%"%ع "Yf^VAՒ^bX%)]-% Z9>2\u偁v;Yu V^u``cR/:DM,LJ VFm2 :eZ- cbQJGPn%|KA |b|*kdKA |偁CHCh!/>ܰ01B՗Hh>@JBYBh:_$ |,4YE5Ca,T/Q4qDtqEv4#:2Knd^c '+™%8<9lVˆVx8;y eJ>_$ql\W/X<闌u偁̲fYxy7DtqEv3c  G3/1eɌ|ZK(}s`1(.(02uH2# :عƼNEy$^/\X11(.(1MSh/;;<\;бzkulc * wkQsM-.uxYD,>DtqEv񉗅sKM(tg6.wK>ܰ01HC wko<$FeBHK*ՓPv7]$;DQ+<]Q@u7KM*ṟYع|5,/8p%HˆVx8;JTxK(!y|lNlnXNRD<>Ptpy #0#QJGPi;9`{,F8[,s1 eT1X‰A%G%j G:h ]lK,;2pybZb}/)Ke ʶ0;XdMzs3Rr<eƇw=jN=29# :$~4;$SS2I%%@\Dfb%jey4Ү%29Q,/I|':;(מ.|(:;);^A|e:%]s`1(.(}'k2nq*uY wy1ı\ `@ KNiH1,W;?:Ohb@ "Y"4~@nK(la@6HWK@ni|(%g(Zs-ԳVG(la@6HDtqEvoYD̳0/\aɥs4]),9:z"Y$QJGPi0K< 1 /De̳<9MpPO%6.wˆVx8;H7ZK(s,&SKx: D|l\1<]DK,; eW\s,;A.ܰ$HˆVx8;H' VIz%eyiz/gDb U;@YמMë9H (.($Mhwu$2μh46.wˆVx8;H*XJ/<] u,l\ $=KA | G|(]-%"Y$P>DtqEv*? CY%{W/E z"Xv$g8!ı\ Hwy&2K'PeA@ 'SE2 (.(%{+İ|r q,W;?; Vl.wƓ1dry$Y1S1dr9h1|d$E9h1w JQu |)XV fZK 땯D)I4 xQJGPiD]p{x̫J>61c(d񮖈;臷:^Qw, |f,\;``\z>ܰ;Bc=tODl;/xQJGPi ]DY%)KDs_$.ܰ01򕋘Q >1]-,|)t@ˆVx8;HbDKĺZ\Xb]wX$1M:ø,;rù`>^b ,,0HbKA |r0Hbe+bKw, |*zkb󬞈;rgYuwX't@\h;1DtqEv|,9u̮V!o(eD akHb•k;,\s<8]-$2w™)KD %" xW=DZ9)@/tE!xQ=DTJv "Y# 4قW|FdƮ(8Y$ف̼μh7`Ҥ2򓙗07`ҥGY_$8[,TiNאet@;8h|!JE$x:Pϙx JfԐSdpBDfc]oGLHL(\FG5@\q#qy%q#pxU0 8bV0$qןqĭb`.HRhbz$Xd:㩑bt#,.:d% @<ďC5wpP#.B\u-h &3;.un$zE>;<@n9z)r \F㩡tGsqqvH#h=LďCqGz.yRKf)>3dp$%xQ5;ع|'9@%0w%@S$;LUܰf |E"AC)LˌxΦI7Hw^;.un$z^\q#Аeu@\뉒a(HG 8]/bHg;ƴrH+J\HIH뉒d$$zr@\뎼igb @LaLxw3*9Vvrb7= 6\q#ЯVyh%q#ΰ=\2LGZq\uH1[FGZq `.uLq#Н/[$@b%q#ЯE\x3igb @\>q<&3#%9X#\FGmuď8gc`{,θ+te; 8e[)8ϸcZz dn$z%]s:dIH<ďC%.<`ďBH qq#y4Ү\H7= s,= YDθ$zYDLq JgFfyf $θT\H2#\y)g= >x=PQ@8  3x0P5oC0P!G 8]v *S;̎p`*w(xY= +_Ts<5u;\Fң9QSF#J+.uĨ̓8H7ZH q+>Gm\Jdn$z|c LL՗;BW28Q반yL#3G a(0xYs .vFg:GaD&q(Qs$yďC&JG\ag 8bV0$qןqĭb`.HRhbz$Xd:㩑bt#,.:d% @`d%q#n= `3i %3G P=Ky%tsGw9YθďC觖.1q#:\bWu41+Xl@+dp";@n9߈s.1q#VʺL㩡zsDϸ= >>;<@nbw^yh\hb]3\b㩜u411q#w9@a(E֯9Ige(_4/Α4Grb7= Kw,.$yďC L󉒸b:ɜ2LGyhy= SA`.uS#q#@\뎙隲a>Ys 03G %yM%Xعƶc@(^p 厉`񇔜DK\<1y `(Zz.V'ZqIXPus2;ՓsS$b^p 厉 (.(ҿr5;Vx8xdox)%WsŴE悇^Jf\aNDs%;N՗Y}ď8NMA :d$zʸ惨 p3+$-Y=>>G0P񁚷0Pc;̎p)28Y$d~"IUmFuyˌ=m5[)$3-¨(H#/B\ #w(u!.{ƐPG 8]FHK\Юܰ$u2y2z[z/]s:#\H+իZ .uS%u3 `.uS%JFus:+H0q:&9x+#WIz/s$yďBAi/]s&JG`;̎p r_ZQ2#ŧ7y9~5\X \FG^U:GH'RMɜLďC%.&q#Ы\uH3K<e\u27%q< HcNV.+#c[y]s`1q#$z:'Xs&JG]*N.u$$zVw\uH1=\u27= 2yďBu$<ǞJG^0LGW$θ︑cS L28QšyL$|#)!y'BC#;̎pS Qdp4/$(JG 8]S ^3G /$(J#/O)L28Q–yL%03G H^I0P1G 8^S LL28Q/$(JG 8L!y'BS#;̎p < dpyL:gyŽay'Aw(vyL$3G X^I0P`#&`#&pP`#.S&w(zyL>gyŽм`#)ay'Bdfw(zyL&t#&`3w(1S dpyL&JgyŽм`1G 8^3Ɍ28Q`1G 8SBO)ϙdp4/$&23G O)fw(1S.dp,/$(1x#)!y'!G 8]~yL3G `#)y'Ac;̎p3;̎p/$gyŽ^3#;̎pyL>#&`L28Q/$(};̎pO)dpx JgyŽBO) 28QŽS3G 8RyL>bgyŽp0(};̎p!CFw(G C)$fw(G C)'L28QŽSOdp) < dp) < dp) < 28QŽSI28QŽSF&w(G C)'28QŽSFFw(G CCљdp) 6RxGJplaC:oP< %Q,B5RxIyN׮!@t@]y/T/a99TAגz%*< =e*K9ܴ/xu!u|+Rx0a4qB-RxG3 /X 3-µ*"KA | ^3-)QtxpZ 7})&G9l>R<[y)&G9l>3Xt@ndsRwI7t&G9l>Mywyd`f [^E._$d&G9l>4WQ1wdsyL29a OX,XO4<&G9l>H 0x#DtGghYɒds'g7x)&G9l>\#Ŵ,dsUa 2Lf [daY;<[B 2|#CR${ƒŋ(y)s,* 7NrHrbg;ϰ!Drb7= L/<) 1q#$z(I&JG`Bd<$$z(e|ϸXddn$z(:j \t= >S 3G 0(H#.pP#)\#w(tg 28Q%x 3G d=8(J`gyŽLa.{hjKWL1ysĺS JH+T$y±\^I&X p3b⼒MT&F#b:MSuu*XV+%B_1\uѸV+%кr3u G sA %1q M DSt<{Sxen=)r@|g3G d=8(1|#.B\#.B\eTD>g:SJ{D)FG]s`1JG0y710pyWKA |IrW Qq#М^quw,)1H¹a`y$ `.uLLq#j:\u;^e Z&FºZ9q##ppȲxKDθ2WH+%w;XHn$zsY/\Hb$zsAtl:C\H0TDAhs`w(z%CEw3o?.ܰ$J7 G rDH p*W= rD|ܰ$0p3#9"XAl 83$<yc[)UsCLg G rE<*!b$}ǝH^~ycNz%]D y\uH._$\%FďC<#$zrs\%LďCN=\y)g= rDvx0F>GH/XIs<`9"[yr%d#<ң9":Xru,D|IJH q*dH1DKbK$\JF1Óg%B_1%@\뉌^FGHE\뉌Lq#$Q7= rDvxNb[\Ld$zbdLDzՑL`c$\0y1Q,:Wq#$SX ]pn$z'%]-%'#&8VsÅ<8b`W= rDu-[A >Φqαqb\Ibv%p2WH1̲lS)F0Pd[PSNdpL< dp0PP4w(u!.{ACdpo$y2 7u#Lu4#qLui\}'}'Ub:㩒>ďBZ\u2WS8h!\u2TNDgP:㩒ďCiN0ŷu2MsVGs#q#Ю^\H,Ӭ^\LďCh28Q%}puDn=\rb7= ďC(.9f.%u3#J3K<e\y*d$zWIVGs<3 ǃut `ox(\r訂Q% u;̎pa sAC3G =T:S;̎pa sACdpK u1G 8]0 LL28Q%xUG 8]0 L28Q%xUG 8]0AC$3G =H(uw(xi`gyŽ !.{ƐPɌ28Q%x x#/B\ ן3G =H(u#;̎p`a sACdp)%mF`7u#sdXI̜FGigb @3'|iHgyŽ\ ԉL28Q%yՓбrsƶκrD#qiQ(ԉ\yTn<+<;2LG j .uĮ5x Jdn$z|eLf:u!PPC;̎p1B |wLd:n$zyf $2q#$zk2q2W= p33z'#3ACϦ3G HK;㥊;<[B$Ӧ J%k&}+H0 }5e((xYs }/AC&&j˝9Y"Kκg;%d^#qМ8= > u;̎p/:z&< u!y'\FG9Y$<$y2z|e:t=bXy)bwV ":@񉃈H+ȨŰG >2#3<`e8(x1G 8Q\fj˝£ŋL* ec^yAw-8GH+,Wz^2:>+c^yAw<&q#Ь`\R,5먡aܰ:dϸ,0E E䯙ϬW^J22zY2L\22yďCFcJk)OhsLZXz#:`tn&K i[ye'%q2XV+c 0hJd>GX%OE艅@S'LďBZ`+5p:dbO8V+Lĵz0uǞJGa$<`ďCE9Lf\cAKQ%t̹ O"ACILˌ2.vAC32 yG 8d|*3G d':_5Q#03.1ΗD<1<+#ūz* f&eΣ5D#%Ґ7ysG1KW@ďC1Gt@34%KP ˝𦅒ED((yO:cMĎy9r%qK Dsz%!\$zidY9X4WI7HwS&I4 q0 a 2Lg:DK︍ǒ&tBMHy)gLIx#&0LGq-eixǓ>vx-_ aY;<[B 2|wʸ+$WWe\wcS dp԰x .v)dpL< 3G Ba(J隲a(JG 8]0`*S;̎p&S L 28Q%yL%|#.\G 8S$ ;̎p%xUdp*SKGWWPNsC9%JQz%CSR pסQ1\0JQqt3$0},0 ՗;Ac;̎p)28QXL1c]LAj˝0Pj?`jSC((})]PPc5eΤƊoUWQl\N9aD01^``\.!L%]s2Y+e]sك4M-x:6.w9|e-tOJGPiz#Ige1ع Y#3] y ul\eUG^b|bpx@WIʺ|M;` Hb|c=0h!މCR 6PsM+4z&^C H2@;HO L}#$z"\IbY$θd$z";+_1YXt.>dSBw$Gk/,Ӭ^ ySBw$Q;;:'qf ¨(0|#/% #/%BgL28Q™,%x $3G G.w@84enwK:%u3#ppβbY$θ`+uK9Q`bďC:%rK<θ$zQ,GW]"g2G%FBtGrs, c$<Q,Grs,L&Xe.uǞJďC!D\b/\JTD> M D GƣFC<ĥDC @pA4A57ؔ|(q&7y%*"z R @74# RdpK3G =8(1x#)\G 8]0˔}-% 7Lbg:SJ{D qu1ppފ&8ºZK DH b+j]s`1u0y+ܰ&ppI&X q'H7Zb_y+'k,|A 1JF8u/7= rDvxNb[\Ld$zbdLDzՑLIR`8c%ӬY.uGHYD&LቃH+VODKĺZK Og100yďBdD\S.}&q#$GRj%Kb<.9[,K,SJ9P;cyϣppTQ-^#Q% |#.%x 23G =T#3G ? sAAw(u.{`;̎p\1G 8S%@86]-% 72132dq,\FGigb @q#ďBZ\u2WS8h!\u2TNDgP:㩒ďCן3:-h yws\H+ACu|x3#%9X#\FGmuď8gc`{,θ+te; 8e[)d>Gi:WLďB.uLq#НI4<ďC%.<`ďBH qq#y4Ү\H7= s,^}Ć8WG2 .uďq#2'e`u'Ǒ~Y2s<2W= +#JdďCZz.VwR#3䱭ܰ:W4e@<*7FW\Q&q#Аnd:W^}ďC<bWS#q#H(u#w(xexYs H#.pPDw(u$&3@nWu2V42qIX+$: 8a%HTACR?T:)G 8RBTDu(u)qPPTw(1Ԧ33_|#. ̌28Q%x 2t#.Ba8(t;̎p $w(L*LdpK:d#.Ba((y35e(yc1q`7ysz&M8ďCkAC 28QHK H#/ &w(Po 䏙dpB멼*dpB멼uQ%Ff\?C]3VC^3VcACRu*8|e%Jf|e%03V\>Q%Lf #CtPPcR#<`񚴦 0Hf|e.vC դPP񁉚a<`a<`df|e&Ff|i&t#.B3/ dp.{•B_13t;LL|bZ&>v'']-Iz.OQJGPnxS!L&Xb](Zc3ժ$ %x:/+,Q<]D %|(%g(S&ZҞФDMl\KA @g<8]-rΣig#@~3M,QxYHK,WIx0{yΖ+" \ &Zؖʺ|*a4ĶUS@oOD,a)<*9ʤDMl\X$@s..S;^I&/<^I&yt gh<8]-:`S4K@_(]-% tEy$Y" 49$ %xb|(%g(LL|q.Iz/Ruyd,\ssS4viz/l\+,R^JKkQ_M;vK4R^O(e̼(\IbXIO`.wˆVx8;uio4GG]jl\̲fYxHˆVx8;u"OEyXr#e6.w+;d01r%5狨 /Xt@5狨.;+bR^dj]<KR\Iby .wN{ %x +Yyt'w`DMl\y4Ү#, |iJKA @JB WJBtr |u,Kh!/ D=v;dX$K<0@y4Ү+$1L:0PDeλ(JfԐQ&w(M oCj˝IPdgyŽЦ:t\OAC.u$>CdpRu D:̹#Ruw=(tԾ1Lպa0P3;̎pBƐPw(ySKW$SD$3LW$,xyn&00H|(W$SD<PX;I'5뤞* 2}  l>g;bXy3H4by0L&03G P&Lf| dpSx >f| dpSx Q.v)L28Q‘SyIb ^3.uW9f/x R.v);̎p07:_=ss%;L\FG:V^ygH+$Ks&JG:lh: 8NMՓϸaf)#;̎pe oC՘0Pw(tS3G ›`;̎pz3dp+=(|[0L>G 8]vRxu (2t̹)'28Q&Nb$ED$32w.I4ILKFsZūe'FhV0 I4I\2LGg,]BG ?0PdbgyŽ&KPh##2Cљdp#/DuD:2AC3G  `7uC3S&I2G21q'LhFn:&I3:V.Mh FwS&I4H7ya-[,<7 B,WI2Jg= ^I&i\F? >5X%)MLf3Č28Q‘)gG 8R#7.Qq.(uԆnRdp=| ^I&b twSNtKe]D#qgX%w;XD>αtLDS8hgX+$%q#$z.=e:W%q2Xa(ί4:c2y$%@n&s&lu#qgX4Jvi]L? &S8hgX4J֯!,\|IHuEy$Qq2WygX4Sƽ,'\t= >2]|Ys t#)›PP՗;ם3G BPP.vC$3G aM8(uw(I s3^LgyŽQ›¨(u;̎p2CdpSxUFgyŽP=((u#j˝¨(u"S;̎pe03V>2R wPPGN1: J| JRACRu+ JY>2R11PPS5e(u)*oACN2:`)AC ՗:>2L պa1s< 0|Ys!(tYs!(u235eΤ0PgL LG 8]F/9.$DeqOD,al\y$ ]OD0u7I:X$M,%1(.(K'r=^I&6.wª%;a Ey$<*KKDWI g``I&z e%+$+yGKu6.w•/;e#кrĮeq,]-^I&6.w•/;dGKul`\Ey$ ]ȧXq^I&sDS4KDeq,]-^I&6.wu,aML|*YODN=dWI`)YhX|-9.$E9h6.wuNxpZ ` E:XsÅ|(Yh;%wxVx8;0IDKKDJvi%s/;z&cb|'YOD0u7ıtDk`KEy$<'%g(Z"XZ"M %s/;ҫXzUJ_+$0J"WsHp0.wVDiU=[*;K V%|,9h0sÅl\_MNxpZ `鏅K"X) DWI`鏌DK `鏅3.9=h<8]-&I890 c h$DeqOD,al\"XT" X)MQQJGPne8E=Ey$عI&v]1gu "YםM芅,]DsEۯ$dG^I&6.w֞ODDu: H" @LAn> qnn LOsx)%WsŴE悄^3.0<H29akwLdsRwI7t0Lr|,,= 7t# &b\I`7u230Lr|i5bf [`wAK'w_x#,`)ɥd@nL29at@n 29atI)@n&`Xx;=:nF``|dbUK$$Lf [X#Ŵ,`I 103-µDvxS0Lr|*#^wF`Ie#Ŵ,#0Lr|c`f\OC:`28QhL<*28Q%xb%(HrG*<]:Õȑ(H"O Nt: M3Ӭ9],BTfi DP2缦 gyŽR"t u5 j ďCBùb;Y$ \H󎦆rt+" NzM kW@yAdGK""Y嘃,%Fd? kW@yAdKWJ~87 >,* *S4#$zQ*d>2WFa &3G =8(LbgyŽ!.{¨(LG 8^0M sABc#;̎p`i(28Q7a.{0Pbt\ 7103#0h ]q(Qs$yďC\LďCWH\2LGZۜ\^}SCe#J㩡)b@\뎦FG%Ґ/<$zWy+( qk)L< L28Q&AC28QhK t#/& 28QhK HgyŽ !.{¨(})G 8]x* 28QhK>Ys 23G GaJcH(uC;̎p`a sފ F#.y$%x 28Q7B\,wQg;% i82z;QqLqLiVޅ@\뎦HW= j疈 q]LGX qRG;@\뎦J7= >xΦI72Jg;dp:7= /E.uď8H2:.u\H0L&3G %,\r1]FfCfCf(]Hff0 u)| u1RCXz:0p1:鉙2]|YX|edf,>S#&P y1SH^Hf/QkO'Y]sb xגJ$z* ד;+Ph^13.IT:w(z^McDT.yQƽr1PU@ɜFG\Iby tRJ8y3q#Ю_$PU@ɜLďBbT,;y:g 8c[)U:gy= C|\F+vI`.yS>)%%w@.:bSB%*([:^i`uFvYuy&EAם]PDfneT:;̎pדxDT.i@nGy,k,,^#Ks#qfyf 4(5xxHR/ԉ0 HbgyŽ#(K9Lxyhd\θ= :d$z\IH0 Hdf@u#4R3G !u!ԮcDθďC$.uď8N.%q#Н\2LGPPWwƐPTw(y$.{O"Zq:)s3PS2 Jvi* ԩJaT:#.3y$wRg;Ke]LFxbL? KxJb㩜uס˜$ED:`dfc7yVj9RqzkWHQ48ďC\sPC2QRxz(x) <*13G HK;((y1ϥq-ei@nJ%k&|n$z|e>tx }aGXbsʼJS#q#Ь`\JB@T:dcVbRq璸V0X%L:+&q#Ь`\RJaYRqq#Ь`\KWu(ԩ\H7= ľIa,:+ q#Ь`\SKyl@T$}+cW5N]D@T%u3c^kʺu*W}ďBqGu+0:+_FGXb/yT:c )`i<JT$z+7\I& f|Tq#Ь`\AEyRq27H+,Wn8Q$Liu*W%FGXb._<JcH+,WDORb+cX;C @Rp"g= ıqw-T}ďBq/<;C @RqhH+,W/hRq8V0X%#0d u*WLďBq/<;C @Rq$$z+Eƽu,;L2y%Ȳz"Xbw^}b@3dd3K<eᑓ$z|IXtE)``g:Dm39LFdV%ήX2q2W%b0 &QϸV+cz"aD<7LďBZ`+5p:`dO8V+Lĵzuy+KJ H0 0Lf:xO"|ACPyACҙ?IQ^h(t1qLN#2LLN&:dYs 203:dPPC1ӦbZhfsu]s`1qb,$ySB\Gt@T&JGX%kns<Jg= qPY.H>㩡X#hdp:㩑V+I2Փ t= q,\2uǞJGX%0<L8g= qOELyH+"鑋FGX%l8= qM,q#\H+BHq+H+ı KD:TV+dLi.uįq#ЬW-\GX%2 q#ЬWk֭Y:맀 S8V+t@郮&Fb!L8*7b$-t&q2W~:e&0LWJ{ L+±\Ko=]q̰:dcLXpCY.uH+ļD\)q#ЬWø=\돣FGX%qz'Hb&^x q\H+Ĺ{ о\|3b.y$עX pH+yI2T&FGX%]:XF#'H+:%M87hV+igb O uTn? NxsՇp:`Q}X)Oh:3byf $7q#ЬW(_d .u]ybN|&u]0yďB\KPz.u]}+IH+d:H1]t&J%}ďBY qןFGX#Ŵ,M<&LyďB\T]&}R%JGX*.:道1LGX+ign:$z&/8TH+y,\1JL^q#ЬW뤁0FLbZ2\u1g= q-dKW@+b-dKW@+FGX+$VODKW@+LFGX%PCa,#JF8V+m /$NLOq#ЬWβidJǑďB\D.z4h]- .<8hV+ W@WH= q/VjThH+1`tǒyďCNPS5eλ1Ӧ { I&0yby$R8ďB]z/$@S'7= ˢaq#$zDqrG%q̺#@F̺%kns<&q~Dy2Lha L#.d~3<|ED:̸O':_5PgLc\Q-^#Q23.uiZ&Y.(Jcؖ<2qc؎Q:fa<`|i%23G Bc- $Uz'fs*$Ua= $bFy@i؁D-}2W= $z/DSK<e8g R&AC_3G !u1PKPGL˝5l{"y<G]$Fi[zN:tDy:dtEξ%q#ЮHPy&q#ЮHl<>tM,r %q#H+z/Ar\n$z y*7,0 HdgyŽp;w>fx-_<7= q-_%q$( FGZ2K=ďCV,]=ʺd䉌y*"z&^"䏸aZ%kns<ϸ+igb @C' 8bZ2]qןq2XabвwΎ n񉁜ɢ;<[B })13Vc#j˝PPj˝PP5f&0U |#.BbƐP#;̎phK c ":_=.ܰ>K%;vK4K+_c*c)bI* \Xʺ|s],c0Ĺ|ĺrl/<._$,&x\Xʺ|s], _r%bk0I9[,tE=,\sd1:_=._$,|'\Ib]s`Lcr5ggGz/]GDn GAkxQz<cԩ<,iK4GQOs"7xdi2Y,JB\K(QK< /X ^E"AAeS L28Qa < >gyŽ^I8(HdgyŽ^S Qdp) < gyŽp0(JG 8Q*TibZ8td8oT@86)P< ƭbbTA#)P< vJm5[)C T;_% x=PP)%WsŴE悇LyL<`gyŽSBa0PG 8]0`#;̎pc BGL28QhL<)g;Ke]C3%w;XD>x!q^ `*3;̎pBaT%LgyŽQξ2hE<LLuiDU$0q9b 89^q>a(JG 8RB\3ԓ@n`w]K4^I&)}+𰼐%}ҾG,Ӭ^>7M kQrG2L㩡pP`G 8S%AC;̎pe sAAS;̎p`a s޶r Jis9&ѯX 8SBCa,u3y+S 0yď8`8W;$qбz 8gM vH󎦅;z%}SBܰ+%G >yPY=<ѝI4FᓯC9҂ pלH,0S<b #3.K(L|)`{,TABdeΣQDxz㔏ED&03.u_l &3La(L3V`>3w(20 '8s1|'hODsJ esQGl\ʺ ej1Q4pλrElNtj"h wOsĵz㘨8b]y5LHb|u/$@ Y"OF89Ivb'9-!&Fw9ف3&;~t? J p*}l#}?@GC~8J^8h#EA* h%^С+A*,x"ztB.$ y2? W7@GC+A*a+"U—a,&A*}8$x?d~XLU|%S《U* xJ%ya2 W%^N=EA*sT |pPJ&O《U1a+?* WQ"x"7* WE_T |pPJda2 WW #B WD yGD("yCX5A* y@#G JI W >8%^P-xU?r Wo,xN W #T xPS偂 WoJ(f|(=EA*~P#x"xP?f|(,A*%^?《UQ J*: WT"xTH xT&xJ*p%^4p%^4oUD8z ƒy`Ƈ8%^4XUAG%^48%^d , J,/4GCb_D xX%^8%^Q X4A*《U`:4GC` , xX+x"x&dhG J 8%^/D xQa2 W%^6}#񱿢 JluD x"xFd ~t>ya2 WǾX x^#Us,%^7`̎DH%^_XJ0O%^`A* W`#z A*U,%^8S%^8<x}=#T, :,,>U ya,a x*|rY})&XJr}} =#ȍU#yc%^?@GC| W,&A*>y`A*> >t>!G| W%^Z WXJ| W@GCϖ I S`A*lGCע Ot>@ UG|tM}Ma2 W`A*y}@lGC7d W g x}O,%^ B* WG}o,%^~XLU%>UXJ_H}DH%^G| W7%^\ WXJ:.#z A*y?/,d/ W}܎!?@GCJ WS~t> 8!GVUᐳ厠z6p%^%^A)щ~X WY {2 WAJt ~)8J! W'x|U >84x\ ~ }0Jğ0 yߊdt>b*JA*_Ct|k WJ>9 y?H%_?H%^(Apkğ„ FA x,V# ǏJx? xj_dt>8J6EcO%^|U$%^G9'A*B_dt>z W@ xnFU?B W$„\(AG%^=| yߊdt> KLé8ú |;bR OGm(|~*(|) P 8)?ik?J?ߋ$t>?:Ţ:ŸiA*OŒ:\GCिdH~t> @h5p8Ţ:mPJ3)C8)R/8R,|U+\ P3 P,)`t)C6 P6pJŸ9aJ90RΆaR΋J:_ؠ~Y W|i|pPJ%^ KPGC^Xy W/Ay7%^w7ؠ, JpPGCKPGC٢:^}%^t>VLU,H%^PGC, X x,K《U?%^ cPGC >͑,?`GC"EA*Ab W̛ؼ`:EA*%_0}#?0#|%_;f~tb:O Jy<}b}R8J>P_baRJ<?aQya2 WM< PJo WN>â: tGCK!Dt>B PJ=q@:#־x)C磯hRCJ=~”>zg>zdJ=dJ! ŸA|y`AA*Z-O x- j, x->ς #o,4>`ЎϨʐJD yD>|`:A*kx.'Ab Wᷖ J)p8ď,J_`@GC༳ W`Ўz,x%^ y`}>0 x/dJ" ~ƁJ"= >De!J"RȀ> PRȀm(~`NGCf~H%_M>0Xäb} }QeTb#yc%^KJU)JYR WP)ya2 W ,A*w%^ >t>"+J>d |?٢:DUNAb WS%^ Jc:4^XBA*pGC?d5,A*%^l`:A*R W}#1O* W?J#58%^FeDt>FgT#?!W٢:#_D x1s%^ CT4yc%^ D,q }|XLUZAb W'D@pGC[ W$c:@W8# R W ! W+,A*`|ht> H%^("JgdmDd} Wed_c:d)U%8$x2Uɟ (%^ PJ R JxU͗ H%^ pGCZ)t>G7)PJ)xUϱOR W?1Jf'y`ً~0 {064 pIA*huJ WA# H%^S8#|pJA*jQ`J~,A*%^~o We^L/A*lUQAb Wa[%^ ?r,&A* XUmDsJ~,A*) W@a8#O W@ J ", x0 x[?, x><%^ X4A*NQ M&8% xUJnU%z $Q WH}|EJc:<.J (%^TtUc:+G%^B JA(pGC H%^ XU , x xtU }|ApJA*\Ab Wr, x7K WppGC,A*p(y` Wc%^, x#JBXUDJBXUD$_c:$%z o, y @D y J W?(`:A*I J%^I$xtU%^IXBA* 004GC"A* @JOVU0a8#xU0J Wǎ (%^>8$x~8$xxUU&xU49t>#|,! xc:D x Wx WxG: XU%^xtU UDt>ٲ:Eh@ x*>U }%^; W xQ x}t>$7T t>$GC@, x%tU@lāOx-JJt>G^X Wx p%^@+8#G=ĢoJJc:z WGcr:z!Ġ c:?,qġoA*}|<ppGC.[ x 8U.m x  !\pGC.`䎇\?B* W}|O,q\\J?c:,q`}|JOŸ,q`}|$Jyc%^pGC0%xU0~t>ߎ H%^7+A*_٢:D《U[JK(JK >t>%c%^%fX W`pGCZ,qIJij,qIJ78UY#0UX }|KpIA*,\%dkJ WgJ WʯPJEOPJE,hR%jGC%^ϱ?J8$x 8$xGc:NpJA*4E&xUh}|| W8$x<~t>J~0 x=@(%^'̼pIA*8#|U H%^|pIA*a Wؓ x X Wأ x X Wر x ~X W/A*@A*BOJ$x3JJ,q_=|A* (| "-#?et>:BJ UHq\GCIO H%^ H%^츎@츎A/?,&A*%|pJA*%|pJA*&7):soJ x]: W9q8J W8aEQ/A*'|`:A*T*.#T^.#U?FUw\GC })~ | .NUPYhUPm WA+UP(J _D x ~X4A*)'d8t=XURF WI#;O}B=h%^!H%^ W!GUet>+xUOJ xUyR WXW%^bߌH%^촎?)ű+|pIA*'B2J#>8% xF%J#xJ#R Ws oJ#X J#^8% x|pJA*2X4A*6<`:A*6lTAb WDqt%^0 xAb W J J ^,A*7hUn(xtUn) Y W W<e6PJ%^K7 Wμ`:A*Y%^K|hU# )H|$~8% xI}XUy`oR W xU,A*, }BH%_Y (%_\8$}ta2 WJ%|pIA* A*aK8$vhX)<.NU A*G%sX J#%0%]/J 8$v&lGC^OT츎}\GC^uR Wax3%]⧌H%]]\GC`YR Wa,A*0`OJ U`JAb WaDKc%] J`:A*N xU؜J)8J Wbqk%]o%]f`:A*?q`AJO v &VU&8$v K촎P+y2I? v TU)@Ab W`@ W`GR,?/Uإ$PJ8$v)pIA*3(%,T1qa:27 H%]b J ş, v JAWq`{R W`W JTy`TPR W`QAb W`V W`]c\GChS v9J Wa (%].џ v8% v ,A*4hUh-xtUO H%]z 'hUJ"[J WdDoPJ"|4ȄJ"pJA*YAb WdD, v |`:A*ydh%]촎X)U,<^U1AoJɅ%]kjUj=az WaaR W`az W`(#^hhDh Wb촎P}t=DH%]F#J= v܎-@4UrGCz A*A?{^JQ`:}io":t@@4U3#DDH%]t GC^J t=J z A*6'@4Ul:` Wa` #6=@4Ul aiaiO{ DH%]dt=ϢjĢ:q7qWE#7i\# ?DH%]H{DH%]"-# XLU/dh%]O,^ xJ-#WG#V t=B* WbwR Wa8% v>X J ğPJ ,H%] X4A*J&%]|hU0y Wd^X J& }XU|%]oT Wa}#>=XU|-y`#E《U#UpU?Dt=p^U>8%]#/ W`F,ق W`Ff{~,A*l%]EA*li#Sh JFpPJG< v`H%]" JA$ vz W`5rR\vG8%]d U9J hr z r#`r)x"vE_,%]pJA* t%]GH%]+ W`TlU:}XUܣ%]Bױ'A*oO JX4A*n#tU8UxJS%]+/ A%pIA* D,%](7 Jc_Ja (%]~8$vďPJbg Jb JbnjH%]*!PJ H%]P%J|%]`OH%]꼰D vhU~ xtU~% R Wa W`L5Ab W`L J` JcD vhU<`:A* OD vז Jb_H%]:/ v|pJA* )' Jq%]8《UX J W`P H{}UT&z O%] ~8%]7ik>Y WkL%]+xv8xUPJy0UPJ3%J WcGώ (%]&PJFYJ WhU1 (%]>%b (%]%y0U1Oы~8$vJ Wi%|pIA*! (%]%xUAG L$vҚxUSo&PJJ҈8$vJa%H{+_`#<A*JTUXPJ+pJA*rv9OJ Wc(%]hUv9$yc%]E,J=ZGC}y&UJTUQ(%]J,E倩,q WeX We`U`G-# ? FYgӠvil+=XU W`VF+$xJ+ W`V*\vb׌H%]8$v 7ib呠v LU؀,`*A*@|C߲:I^X(%]٢:DD vZ*y`sUr:eXh%]| JXLUO4GCQAb Wc[%] |pPJ.R WeaX' WeŸ H%]p v^ߎc,&A*쾟,%]7٢:D v^#`cwA*H{0􎇳;mhW%] ~X4A* J/|/< Wb!G Wb gPJv"y2 Wb 3:Av" 8@):ԓdh%]2 Wj@JR`xGCڑ+ԋ^8$vbH?`xGCى+DJ1o<#~OJ WcJ<#~pJA*~`xGCR%R Wb({RU؊oR Wb(+:QQ+P :>8$v@7)+: (%]J @%U>,J{X W`}`|#U> v~8% v<# _`xGC'E0~D v |hUpPJ>0`xGCPJYt= 3%?`xGC|pIA*`{J W`߰<#bߎ (%]<#Fsd`xGC،m呠v#2%1}`bo<# DPJ :xU8J2_Dt= ~,A*R WfDT A* xJ!{ :!# D vD, vhpPJ2<# ٢:4:OT3߰<# `f?`xGC8%]64GC؎=Ab Wb:, v#x"v#< v##O#X(vf04GCٙG J3o%]~8%]<#wfWA*fbg+A*0h1g%]hU"v}`hxU 8$v (%] oJ W`@% >8$vacut=׎ (%]3:J%~A-#8% vDt=O Jb, v|pPJc,q6pJA* ,qet=[A*삟M ٢:'^,A*}D"* Wdck](A츎xUUxAA* 츎p vu\GCEO,>XJS_f{Q? JP%])hGC"v8% vJTUBpJA*HpIA*HxUؐ (%]Ă٢:ăD v$3 Wb@ {TĀ\GCؐ.`Uؒet="G H%]" (%]5}i` :_et=,R Wa }hoז JlpPJdPJ`5\GCC:A*J ˈ{O:ģJ'츎(}%٢:ġ;%]B JT _\GCD: }*.#"}M v: Wa V/A*$ ~0 v~6t"op^Udhx"v~XtU {yP5lp%]LeH%]LRä&,xR Wa$5Z Wa$'H%] Wa% H%]'kI FP%]PeH%]Pa- %]PS x؈Uy`6A*Ǿ'A*§ vaoZ Wa)z Wa(Pyb" W`Dt=`]EA*o,:A*%_et=:ZJ g^8% v'츎ˈ{ a츎Wq`xUGet=d츎 ?q`/:2)xU:4ˈ{Ԟ8% v|pJA*B? H%]EZGCL@%ULpJA*& X-UM Wa5J UM_et=#A*&q`x#A* .#K촎<>H/A*GH%]|P vWNU? @S W` sU6" v7%]I(%]BYJ W`!aJ W`!pIA*)_et=$#^‘Bװ`\UR%y`PURDt=!G,`Kh%]>X%]?,bUl(v⟅tDMq%𸎂Ul#v&^%]A ^6Jp^UJ7tF[p^U|./A*ttU,1A*bF.\v`:A*)񰎂US7/A*) WaNPJ b vĿ ˜ WaLXJoPJJ~NU 6TU ϳDt=《U XtU ~8dNU f{~8%]gH%] %] ׎et=Bװ'Y- W`$>U ^X(v@4GC D vAK%]YEA**~X%]@aPk£X4A**x"vK촎)UT}XUT%`U K=XU _ W`%U Uz DJF)>,A*G J(R W`%=XU E, voL%]%]3)z IDL{R W`&eLH W`&|pJA*‡ J0DL-U ɽXU ƾX4A*xU `xU ϽXU `pJA*W J8D¨a`*8% vB?ڂ:P5xU r`U >8%] #+|.J PGC! >6PJ %]b WaX{p^UV#yc4°J ,x J %]yJ2WGh%]呠vbǎMJ1w#A*@ >6PJPp^UXEpz Wa`~UX=/A*,p^UX< W`MJA+#QJA[lU" 6tV6/A*gj W`,<. J $8$vj{h":Zo$\jH{p$E$ydh%](9_ W`Ϣ JR_ J HpPJ Nya2 Wah%]3^ H%]HJx }{x7٢:^+z X4A*8%](t=k vpPJ H%]#A*)#A* H{&U @`1XU E, vT/ WalG)*ydh%]H{ b W`}#z F- W`F|ph%]0R W`FU#`䎇G7A*}#Ab W`F W`HEA*NxJgR W`2?t=4?,4whz %]7* WapXU$ ~`SH}# H4 W`o《U$hGC$yeH%]AH$y`U$ >Y W`_cr: RA*`KAb W`3) W`3-EA*j|4fxJ W`3~t=Ο,%]~2G JDf'x"v0 t=TʐJ《U |JA*t=2:h%` v@h ,A*ߖ J 8%]nGC]K&U]}#. uD>8%] Do,! vDVU]oDt=[%]s%]ԣU CJR W`58% v`lny`vrGFU  Wjya2 WjW٢:I`DTpIA*rGC~XJ14GCbD mX%[VK《U`A v*A*ڱ׎* VՀnGCb_ϳDt;M XU?, m4iE v7ʐJi'/,Ji i #ip?A*B+x\mx\/A*&-/A*&4mx\m2^UL$x\m >aoh^Qp?A*/A*dyׅyz VмG/A*xp^U0'񰢂U0sh`uJXh% h%6h%[A,Xh%m V9#A*'|p%[D_hV/A* %[C>9hd5ɢ V/MJA m x JDo: VG/A*(rhUP+xh'|rhU94A*  mxUSO H%[E" H%[C0PGCya2 VT5d3%h*6%h*pJA* J8$m9J VSPJPJPJoFUVU6:%hl#U6pIA* UUY V\-xUڟ,&A*mfvXU77 VޏTJ VJ VbJ)%hr5)hrmJ V[Jg8U?,&A*XLUZ~UZp?A*-J+)C: 8pi¯ (v >HRi|pphT)C\_a()C\` Pa,)C^4/&(vW'7O#/|pJA* Dt;A8%[A,:A*F_v:` vGC7ai<4Tdh%[N呠m;OFU呠m:%ydh%[N~Y Vƞ8xm< U呠m8$m8$m~Xh}:@[$4@ (%[@}vd@a8hv Je,A*~X4A*|`:A*U;e#%[C+حP5O\i8%[I`i:J>8w=i8iGA*P5񰎂U3/A*P=iA׎ (%[J|iA#%[J, m(|`:A*QWO# 8% m^,A* hU0 m'w H%[AZ V' <.JD m`hx V:pU<=XU<hUhM VѠ_v h%[F|`:A*4GCh%z hQ VѠ Vj}:Oº Vjz h5aDԕ Vj%a2 Vj_a t;AȏL Vr*I h9%tU |&h:GCGC ,A*7' Vѻ~0 mGCn >yѸqw%[@J*_J)ӠmdGC7O#cv&z h;hU^8%[AػH%[@JyO#!;0UBA V J97+A*WO#ﰞGC NA*3N :N z!hzGC DH%[@t;@T@4U qs V([ mO#X V(#yc%[@KJ@v@ mSA*O(vWB;A})C ;@0 t;@4I)a U O hWh ~RGC A*DGC °Rh ~9BU VE6PJOtj!!: V@WHv5Ҡt;J|r m\0 AJ:yc%[W`0#8(>Up[%[G,%[G &yhGAb VDOUpKJo%[Q Vj|`:A*ڌA*ڌA*ڌ j1wejBD"mHi8U ejC,qjA;#A*ڐTB* VԤoJ|Do,qjQ' qiZ_JJc%[Jx m+pJA*V.yc%[G?8UrQ8Ur$ydh%[G"wPJ)h mX V# qic~8% m,K m,O m, m,|pJA*X+yc%[K,qi`8U <V#c%[@L mSdVw%[D, m |pPJ |jU@U Vѷ H%[KQ m- " m-pJA*Z( m-<" mUvu8UwGDX5A*\6UA*\,UQ)i[ P0<hU |hU $dX#d|8jj8PJ|jt^XLU:PJnU9ז mN%[SX V8Uy' m2h VRd%[D$^8PJE8PJ@ HvBO+A*! ~8o(%[G_,uh3h%[GxJOqZ V+0Uz*xUz,ya2 Vd_PJf9mh JlrJЫ.ybd66GCU9GmW8UX Vz)yc%[@0p-_ap)C fRhO ;@}aJQBhWBhk|H(A ߅#]Wk|~GC fvph V.O V.#A*˾.>)A* msdt;@>Kh 8(%[@[h%[@,:^8%[@_7Dt;@?EA*G (%[@S9A*Sdt;@ >?T &#"&v0#"pJA*"k#"fvpPJ vG (%[D@"vǖ mPJ'UILGCH t;T`UH+:C߳Dt;T8%[Tj/@&#ڤ =j1)EA*b[B Vo,m1: iR Vv٢:"* Vw PJU~mhhh~99A*^GC 4`x JDt;@T`hhhh8%[@b:`^h ~99A*ǖFU Z V0oDt;@O《UeY V v ?AJ Vk#0WhhϼpPJ @9A*1h,hRU`gdt;Da٢:0h V{rUF#A*#.$t;Dc0%[D`sdt;D`4GCFpPJϖFUF`̎hKA*%8(%[@39A*&Y V1_`䎇h)A*$o,&A* dt;@#"w* V1<4b1JkrUxm$1+v v JC:QA*@ :Dt;@-"m%^hJ|pPJ Vhhi%hYAA*Q J=b:/h`GCϖ (%[@ W2 >2siiiB/LGC}ihi《U 8(%[@_LGC h`GC ǵ uhh >8%[@ 2pPJG V3 b:fY3Whhx"m0qdt;@}#bw* Vh_dt;DpAhh=EA*#~GCGWhh{《UGpPJFU̟dny`iBgXLU?JfGCG)A*f'Y0hi《U pPJ~Y V4}:hAJ V47dhv4g《U ^Y V4_`̎h ^Xh%[@X9A*bo/:fvhRh' PP( PU~PGC Vj V5 AQ5@ mQh^8$mQOj- mh,#h?+V)xV']O+ TV'r±<±<3±aXW±±±<^+><+><+߅by_ื±<\mXW.=O+<+‡by_[O+|++^~+±<^+xV'D'O+±< ±<%>o Ȃby_Aw±<[O+>±<+ g±<`SXW0±<`±<`FO+ S±<+2 ±<=O+XW~V'F:O+±<0XWVO+V' QV' G|+"7by_RO+#~" by_ xV'gby_,V'>+* XW(XW/±b e^b7by_HO+ ?XWV'9by_HO+ [O+B ±<gXW ^@XWOXW±<XWOby_XW)xV' XW XxV' xV'&xV',V'%>KJ $XW$ ?by_3O+)O+B>O+B#xV'H+$ g+JkkLBW(V.xP.4+]a@hWG___>o B^aa>`I"T&{a_+a_+ XE`R"V.a_,o bl2+=ȯdW l2+϶OdWȯdWGEaEaodWa_jH"P"["Z5"Zi+⿰U+7xD _⿰ž⿰7bW|v%g7ؕn%n%J+AOĢ7ĢĢ__3bW o_3n%`]<+h+±<+ ѕ±<)O++7by_~`F(xV'~`HOXWC? r±<xV'7by_KO+`JKO+d` +±O+`L%V'0XW FrW8 畁Y_]++ Vehɼ ѓX(++FS`VWY_rBEiJӣ hW/_pɅi(S͕(7dei%iy0<%i0$+ND9++N}Wɧ+NFQ+Nɩ+N(|$~(8WI` +N%~(+I%bHlW %bKJQ+D I%bW >_؂)~(" AJc+E[U+E%bW!JrDBE ^W! J&W!~(Nxҿ _؄â3Q+4lB@Q+xԯBgW!4 !DB%x]9_؄#~(BGIQ+*+PQQ+?9_؄*~(BB?J!k4BJ!wD7?_Y__mb!_o럊%cԾǯ(S]_Dz=_Dz?DcD{'mNJǬ<.c?Jǧ?%c7W=eW= cDzH8cW_G9_HQ+^5 Ǣ__N _PQ+^5Ǣ_UW=JǢύE"W= %bDC7#c W¿O o 6%bgߊ%bdo bW!>8" W!88+ I_؆%~(bg⿱ N|W!+ J1KQ_؆)eb_؆* 1[دCp7A_bVQ@ľ7ohkEɽxKrh<>2O3ŸhA}+Bv4--ag.c_BOzz9_ohBE>ބVo&b|_9? >L2dG)&a#&a300L,c& G ^u7/0vP^-c <N׌aG |`.pW1/ MQS,W(QO |%'wq'7'0αǓc'#`Ĝ\1qky8\f|&s{e:_ o f>02<&%c Gv22o(o |'1)^P?( |h@¿( c ~ xN0'xN(RN,e>Xqo '1r^QgPQxP?_[~SxP a:H(w|( Zo \‚^RORi)QJiHڟ)IÏ)4ͼyJo"f |N3M2l~4Eh[/h#hBV>40 񠵈>42G y'Ɂ'%]:Dވ+>+,¿ Ͱµ?b5Lƾ[XyWW9IXo 8X-_~8oxw8(5&F;QP C藓x1gabl% |l6l'\&&(,'vSaG5?pgn-𸍡H\$ 7¶/^QyO/Ϸ2o+qxK?퍻{eS}|gW}=pp9풰;x]7xSp)3*Yp7p;q#y0 {x``>c? WcO p8IL&ݼpYp[^84ƞ8p}~8 X>Xmnyepy`,1Gk-OC<&+p4cOgCxADm]v<6?*>cO갳<`w/wSlQ?-WO-gс->/XŸ |XxU <1sXxcNb e~/"oxS㡶SxC*Ѿ4 )?p{^4YQpq/aOz\g*yz,yz|A^.ȟk"Gݼ2@&ȕ2B^d(a7B1U (e8SƹO-~>1Ul0ӆ=}F%eNF(w]; :4N0 xO)V> W4:b/޴ZsyߓFy,OmGe>v[ao;@<_dab6yؑyة0[޹>׮S770 p¦/O논cxדGEGp׏^z /l TŽo`O=N{/k Z`*`,d <&X,6^0X'vX-h~bl_ |2 ~`4|+,|ž®6/kqY:)?o{ɡVI/HPO+m}"և؞4}{V/"F0"vOEL&"2"{k)"3p?76??{y*.EGGo"^N( 4>5ɽ(/^ k[|ϷčFM>2(`MN_N x0aaFx0> ̧^ x17 +1# L̼ 4sO# pCfo#aב0KaH7K0bSLņBb}rx1$g D|x1> E~u/!#6~ <I'#T H؅ HI ȣ}{$ },%bGB$2'S\|*[Jd `/Nc<p}р1bV(3#fK?#al #bϰ(8OL!yU ,Xfر*l1kو1w x44GJ2_FxIhHh&u4-oxX_ aof1,G0g``^E_A>G>Jz`u"G'O` ( <d<D ~"Mg$a3((3F3 QXRm`#Ÿ$Dk D/E ;WsK_u > ū__N|#x86#aw`6p+Xx^!Hп&m! H |hU "A!#fI,h/IkC$|zoDf^e# rZYI4ckbo4>!roqhirǸM2 ?OCp1cxL0%y*M%-J@_%9?&Q/xM"9>"S^"A  xO)?c * pbx6_1W00F4k<M24Ahg-rM>K7<ywwYi|Yo2r.ៀp O1g ]̛8S¶6^#>#?~#¯ k8>#X?U E c0e<@J>^1q׀ xe KOB,Ą$)̼H6 $ o"^%{"=66'ٿE xx&0O"-KG> { yǀHߏIWO#܁$3!]$)k> <6L@<|&&d/1K=2$`ĖRĕ9đO4_Y$x#đC~$x4)f #@pm(?RL(CA$dA+$ +P[__R<F*Yp Oox G8 +TYcT\[Xb %cNeax X أ,*?Sxx&(N^%0P ߀.  y/'Q[ <"gY6,oX.-%_Xg`ıKدij7]oĴ Kg`ıßkě*X1,a׀vK92ub e2 ȏg|D=2+Y'5 la4x 'ѽ:gh|V3l<[(<%5v6h; kM<~豷إ`GZػ`MaEGl [~lx<%Xx<7n=e^Q饏.z}`_=l`QT0z-Xwf^'"39-'?8@68Qx,X@|ݐ|X|S`| B|#XGQ+a./ܰxg` <<9=m''/ ⭄Ż`X<ܰ<߰6i`{6?6‡slA6$X<ĻءaKlS?^bՀl]=(7`)A=l~(w/倿pe8#p{`4][`6=Sb_+x pQx 58,4tfu;Dohe:͢t?OOtVh-Z*6,h0}F>ր?=#E̚ |Ħ/!~«OxNOJ0D(hͧQ2FFEF(hA)";F(-( E4Z5=,h8F|~#C>||Fhm~CmM>Kh < Z< |6xH4 Z: ~[DIUKx%MBWByB !"[G"@Sh<ImS;@"ƈ)#i _S@"3@ ␀3H`^4>/9?/;CS\%~,dOCKv1,a5?D)">h>g |&F*v#o1s2&L2L(L 0 | p1x@2'#7G@0< Z/~)( Qd@&()O@ 6M8Q YN)q))phXY E-DF_ ľEdQ ɶ"A|h26[A( rBo2HxyH1Cx~2_mJ2mFؿiԸil%unO %cDe諔m:-a>Ӥ(x ve;O9 i4x =ƻO2ݧXi' iCm<+eO Xi!6i -H[;I㭤H=H?˶I$>-{Iݤ6A'ILm$Ao2H.p%i)Fi)ni*fi1m&m&@½6 y^a[oi0 Yfasshkm-4{F4omM+Kb*fF$6m̶Oi3~LxȇO}iw'2(Fёfm#v=*1ёhʜhAFB6m x_d)e{FBѐ& jͨ㝨{jP0v>jsj#.ڀJڀN6P m@Uj=B dPj;mB*.gA 4xh36[AFfNfJ{Ambv1c 1od2|sf6њ50a=)hz[ g3CVhz)bTv rNqF!؉Sfp#ݠNp,`>'}0 `'>q'h|#`+>q+h|&`/>0m<6¶&4X<n`hG&{@A FJ{hXŬ6#%h؟-g0#6ѳ m Xl*`Ol-ѱ/HO@+A,mBDmC"Jqkh8A+ mH.rYrM.A| 07P2^r#a'h:'mmmIlM'h:a&`k-S,S VBmB݂r v+7:{Flmqn سhKhVU6shv%[`hݠJg++mQ%%cJ)@\;@`@EA=6h;e.v cF[Aؕmbm6 hWMshh*p;Bm@%c}p=B {C&3γ g?CY@my?C?u;Cgm} Ͷ3&@6h`hQ <ČaI ]LK Ƽ{@&'9h͠N{@ u@;'e䬋 čhYhX1@]PQ h?6(6(0ha(@}P @h > @}P'b(F(2N( !s%m^"xPiE^E"އ / q"\%$7ŸFO#`LČ,&4~†?Not xh| /=8MN rFSN,e>4T oRbL1*02(JBFSL~<xB!g |! m>xPo a#'XKoLcⰭxQ+~+xU⹦slxaoWl#wV,m-ܳQCK> {C!ѻ {$l \K#xiT | CTSUN_# Y'P>BxM~,9ŃL<`^,-`U#8`G`T`XμX, &" v 0YW7CGBFQR" y!/dX}V.xd <  XXX< a+| , 8,rO$S~,)p e>#xmw,1ŒF,x#Z?# E .-\;.gׁpŽ~¦(x \K)>>KqK)"ӁQ#D E%,MŢWh~-SO Zp/h[šs 0^/⏁{ < qw€Wx@o $Sw<[s [Ol{űŰKڬŵggx -kء-Obkحx-a׋bo3Oa #xFa{1/fyׄa+~l969??w2tysLN |#vyq#xGp&` Vqg~ŬxGp2&'!x9<  b"23R!W22r<xO`+%x `/+<$`AF&xRmxHg e H<$ 8O R|$ @$ xW d3 3L/3ᇁɁ1x[bv]f(h M1c[̼ | x| x ;x27 ah&a/).\eu^.x'`ss | K0;jxcP,5uj# DR| ؟Ol6O` | aklV < ;6>xx< x~곯u+7$g~▿~ iP0IxIexIgCVxI09$QƾE,-*ggxI0-㟩>[aԷ}G2FWw323?;Ǻ >a[=O#$߬SX>6mE=[ ??nvlGOlPWlYvߵ]o:]Y~s2k 9 vv;4M{44=f7fc٥ie٢6GГn hR#B;4.d| F$vBYd/' |Jd2`n=?d"N&B)`W?1>}bbaƙ1sؘbd &%a0'ba[nļU/S^Y.x^}C/>~; l"vس^,-%7a\0^  ]%n/`3?``KE=Vvv DQBG`QO`Vϱ8N싱:[l5N=NnX9N}abzl8Nŝk⅃̓.1m q&Ob0G`Kj, A&%XӰL'X K0`Ec}b6#1~݆&,,a`1?1 E*2& >#{Id?av0{ _d هa"ȕi Qd(؅d,=2-?bʻ l {%AbV>؍ءb ؠJ(ϱ@`k' {;謃'G` l z,;H6$ ī_`S'qn'% ݂?PY`# v ; =K,P) 7`[ɻ FK)ov Q?`3ŽH {!S):~MӰSNR$sR%w`U"9RO)b̿J},4Yi{v)"FeؤQR)`HR.杆h߰kf3L}fmv`@Þ2Fvn13.1K݂|<H}`<λAT ೰T#v ~O!va"%>F40eh} `hH'K+\a/"']7`]QdL숕dB6 8;"q/!cX0`N( KV ϱOVF`@VJnX? I?,o`>`< $xK,X(c` xQc>pk]f4q& 2q60%mF7q`8*`{ǰ`8.݆ejGj=5; d{ i5evgjH.QOj*aa;i-(nh=E-K Sj MӰZ Y%xw-`]7 'vTuبCة&TR?P۰&[M`;F0Y/`:#衄݀豌{ el6; ~c|(6a=̲a Ul+cNb^\5¾r\,`s\u{2q|) ` Ͳ~{ &2~xQ/‘WجkX ;{c>hӱY+ xYجSbvl 6}ob>vlL0=ٱW1f{ rlm]p˰{i; 4an#oyan)cf{ ="1`R݇ ;ÞÃL߰ {;8081b~ņ(X;Sذłf{ }$ܝ%:×3Ñ?$oaȍÑSE7vŹs! F "v> `>xsWv]e} ;V݀^ţ\v-0ZH{1E~8b`ŖHy'b+`tS}Ip:6^ã;F:0 :0sIiKq&$vI' {(`>|P8og!8+bg {8.`Mظ~Qظ -Ŏs,Z\%bG݋\#.2^;ӱxn ӄ} }VbVv/,/^Kðd/`3˰d ?`@S2S23 v B킾lvFs3k۲1F(Xoadb=(m{:u`7V/;#"tGݝ,ajx] xþQdxTo!=du!ݒXIE$,vH,߲An!.Rk)(h)ZrnC%씑ݒDzQ[)[®Wv0o #` ;qc籁v0#c60p`,0t%NɘpL{옍;&$ad^=Q݌I籋%bi}Gyݔ ae  q@vP$`{; 9oe:ZhMv r m`M7`h pv ~}AG ?a6v9݇j{Laࡇ=ox.`Fv4,OcDx*h';u}cCgcJpWЍ;2v43Ƃ6 ; <ݍ~ƂGcAOŎ\ ;$p0">/`D @žA˰" B/{v5o =MՕԕf5l5,1j-ezMbқX*=+=7װF^jw`pO`p;݃6  lY8@pF6 {]]N8`\w`b{0>Kd݇ƖU Q|)Xy#-o#۰#[`I`F%; `F)XvbŁ?`F.  '`H,Y`˰rYf}{7`U`۰r}`9, "Ł`Z'tM`  !lJ9at:Sat:[`s:a`Q`u:$v`L v =N):bW`\;{9`nXv7>Iv7{^¯`JQ`) QW R U6(W`. IVL7`J)X\ EvNm۰vi`7] [vz]`Ah&M {b[A?`Zh(E- ;kAg`  KAo`TW`fD݀Rh.BAo`"[Cvamf{a?$4]~#4JieŶ;bfvȚ1 &`LzgCIa10i4<  v=8fo]= ;qU'Z7 Ŷ '%? ݁AK@H ]@vfS U!<6n _<==x˰x a?`R ?x. IL)/`Ro{ 2nyH7T{]HvE8*/`T' =Q2 O*) ݁P ôB21hz.ʑc^ʄ.]_'Rݻ]v<%rVON2qG(qO {\Y{\\}<*pQ} 0|v86UL.p}  8aK=<v8?? {FQF.hh{ksѠiFH{F$f];F'f}pA1wQDXiA.v=U[.i}A}n sAoH.iFv?(ݥ0QS<+.Ӫ(ߴNqQ;/iEM_iEl@o+ein1ejp˲' +e+%aWebv4U¾Ŝ,s^%[弫ʜ9n!v9>Y_c,r#c>"vyocW | 'ɻbJp e  a?cXϱ+  ӱЫ},e^n 0lX{e)]t=Xir~xOSϰ++0 ;`wmnVbv K؀)7b{eovZOZSfQv쵖Mks}I I}㬕>=^g`Kno`Y`Z``Y``m<]``+`-hf v3l:py`x>b'1w;FKb0yb1v# x# @Fp%F' IW1S?`c&+v,1_1$a1- E {s. #`g/'uvF}' vA+{ a`AjO`%gF *{}{`9GQ]FE(a`,vdQb̑X{2,wfIl_ْ{]Ỹ$ʛdd#X3I`dM`Ӱ2(! ]evG} >Iw v`2, {!Zvm3 `f+adbEvb]vbgb95v#j;lCGK`[؎ict S؎^q"Uq.؎*Xٙ5ff^Ƕ>؏ٙfF4̕`k٘`Jvf)X3 H +4'`iM^A 6З`sv`?`e`]`$v6.Զ' v` E`g`b_ݻ6`R>݃sv˰66ž<{eZ.ٖv;a+^†vž¶Y X669vpw`{vqkk"ɻCx/`6nc&QaG`0;v3vCE0)Gn]|vM@g|f@{vAdl(OJ0 NAEA=F۲ ]o o; =H˻ eIIn=$әvz^#i;H[QEyӰ)` ;R ;P](k. 5Oa]:y߰ I;"Ʒ.௰7೰7K`n>C ,= <7;8E݁epg* pi 8 x6v]"lBo$q{Kp !B ! xB0! 8  + ~Ą v$gbA;(b@ā;{;|;I!)Ě;v$ӄ$(I0$Uv$Mؒ.,-6/OnFl=-McYG` QC({e8OCG3LvǸװ `w$awa Qį )v%(ģ췱(?bP% xeؔK"yGa7a.cR_" ݻn ۰)vL_D1a[8ϰ YEN+ *"aoa@ʻEo ð'ie݀0/eh`v^OF-##70۰%v&# OF𣰌-aga[Cn&` :ɻjaOǰSE ` 09o`r]v#.h+P1`r ;v"NYxSǰx} v H8{ppp;p–5Uðޛ={y0ϰ3# #:8}q'SG1aR݄qk6#x$#%wþ`:7`$a`xM_`t::-y`t_pY0::p_ { ? @^ }Anϰ3`p=@I=@R/ \F@Y;H,G>DHaa" l; A+ F]Ow F(v{; vXA"+V]DR'`p+"H$ )Ů$$$#`e"v!/^$,o̗-n&5߰ X eͬQά53 ;s 1.`l8b`%uIna%M; +l;$qI݄a$NuIlBk`(&[~(݃( ']QM;yh K 3(%Zn(* v Rk XMO`>``gb7`l {`ŀ ϰ vX۰  {+ X 0,H}X@+ ;a 6=XV},nQ_ga(?<%,{ Ba(RJ݄j`E`l\{aO X ;KXu~.S ..Hċ \LD⅀ 61Y;a l=` 2`K_`m5 ~7h& 4!` v_E}-7%48% m[K XYAa,ǰ[KIK2%mAKZ+4;%m(% v 6N2d2Fh۰ hvKIM`dVhvm C@iW`JԽhzҾ4n` -LhKh6{Ъ 4-4D5O`v5h4 ;͠chvc;T߰;MNhE' b݄4=aLe %?a0SŽ`=w)&aGa4k&¾jvDqM=?݁ॵ xK ?`xKn] {ԹO`zi8O+Xc^v`z%~T賖v.'a8vvp{&FaN>{ eN<*ݻCIvq`| d{K(('N{xWO-ƽǰ+'qOa`sv992`%a`'`2/` {‰G(iQ:N { (.‹<{ "D(`QpqQ%`o$n>Ĭ`0k]m%k`yS@@ `  }[`!(`!sNBg_`!SBmsL;dl2V {߰`#; e9aLm) kv26 ; l; bFA)yaLZϻ b `5Ƚ< 3r?`=]{gkm` ] ;{`FA;AqCA%`= C_^݀݀k? { '`$=;"vFxS  *N4ދ װSAUT7 y4?%v* z * 8,cJO݀c M0Q i}@®J%_`%[ rL 0 3 o a |s vag {?9f] <݀Aq'0e nDOx=<:ɼ0{^xHFoDy <y3¿ p*9qD$.A-aIygC\y-c#L|?]"6_ /#G!{7-x-mx-K_k,'ZHK|ݯ>Gyg<:< v@{Q[QB>X iRJm*gTHJ|aH]BOR;J\ep zvCpjm;GSpYƛGhVIv)ݣ6m_p+c}c 6h];Q`j2vnmFmFhI .g0NQ[QZ&ڐH5[R jDNԉԃ*ڐ 6=Ԅlk#,-ڑvqԂmH-㍩s*,J v[=jQsjRV](J%ԢԢ:ڔZ+J4J3fJiYҺpi[,iX}biXJxh49EG.`h>ɦh;G!DhR&ȫ;G"ouӘhm0Otxyt hFVЙ:pMt*q,&XS˴i`g,Sm,7m,[6m,@m,5KWKm>+6X ~+G{@Vo ϶[,@IȻ@P6X V,` ż @]g-#4 2GT#ii6 m-)vN Zi;KCm-: dP[KE,r0۶SSeS-jamLJmL#sja/L(a~žW0ScjtSeSN}ڜ?̶86=xMAf1ڡ.Po[T*ƛT`wjxjVmP${T Xa@;T xj[sjg.Gm4;G0<hH+ |j+khYAs *q( SA)Fh&mmE h >mhm - h=,eh= 6ոW`sh=gvFm8h=2͠Q;A詁V|aV݅Sª/*1v]bP?VO (o*;P,v懰݀>/4Z{HvEvF.~T B;vB0lGaXk¾²|v[VU 㰬$坅a;݅aC°]b^a]6; a].gW6>º?a^Ga\+xkW0EWqa\Sθżvx'5]89{4+3 {͹5`} > Abf!1,;WGE4N` B`*1`*T,aG`*%=l,,9L}㰰{ a`G, a`Q, zn`柰D "4 `O"0`NFy`H݂ v ;AWAkvx*iu}Ns j[-`+0Y nnV%Sy`+%a>{ -g݀> bt{XHVvS>X-ǰ Jv] I݅aeMYadPE-a7vC N`-v' hN2ǰ\ e]H`.2"`kEgQ {QCvQZaGah<*-cN̫F{ BWZahl{z|i;{^JvGvS4` |v8I )*v#; T T&ðэ;# ;vG|.-Ƹa[,; cs[:al?-˰$lðF.FS}1;Ly#!,7l{#a`StY`G[FČG;q;W#Y`2'λ\ 5;F]!$ =L[DD݅m>va?ap { qapE\g { /. _apZ  lq$坂@y"Hg=@v 6HWM$ `3Gv7ϰf}Lv3?`3e@ǝQnf-zhO{vFGtnh۰=і3?@]AvA {݀SNatk; au>]]6I]3.葎 vELy Qa`5j{|Qm O`5M EQwس;]ه~mFu +† :l-;/!rvw0_ nn=܍'`7˰8qs;{Ƹv%q ,lؖ-d$%JS1$w$`Ig` `?$ "f]H`-`Iڢ {T[ݪ6ŎGBN-vLǵd ڵ8vV.?۵bwV[c 6amNOSb{ ՕX+ڳ V=jXG]aFVlm4OaHYқطi;M `iE]Зb 4*X2:_HMm! 4aF!' vxiHEm h.:& v.5mcmD^m ڝac5&%м%xm 0S/m /=мx6f 6>м]6 ϶h`c0#m N vvCSvRD FFJ=Gh%UJMJ h%3h%7h%yX= E\'0N6h< mp%'0('[-vxN `YN#b88mqk-qs6ܗumlLd;A0aL(c V v=v% v!m CCCfIm Eݡ5:-C#m G2L]dC!R;Em hC4(6(:!(@@`EP#Y>@`h`K; }UFOENNmMFN(AB+m m/ Xh(#Z}c͠F ]_ɌyFR$a>R*=|*)ES&)1HE%hfYeC19:sC1KT3rdmHT[mF _0 mL͠FK-PBTK6зhho{CEYCD 33m 4 hh+fCAk 6vjv#}JpESVe"#a -BF X(D&k6 ݤBw|AYy`h+@vV$`h+&VKA`gAa{Ae8mvh,0g<m|ĸ6 mSvq5%d^Z6[Ain"m6 0 Y8: EH*KQ$ x <6% v荃:$DN8 ء6aI\]N[Ap{ApM].{Az| v8- αgh/Z GAy/ Ej2+[}xV#cV&X)+l3+,i۰]ybͦXm6#ػi*vcحh6%hnOcMMm hn}aPw7l ╆{CqjN`Oi6VW9cUA;0  l;ݡ›m؉88쁴8, vVhhk`,U`eXF=Vmh`mX$X6[E͐v( G!;CC,{9w9$YnPEn] m vhӍ6<,5A~E6Ot;EMZ ' E,eZ*eEměEh1,͠3bim*~6U۷k{XK0oy̱ a?&aO(>^=^a_a3AA' } AG )62J[SMW1$h(~YJ.sn306ƞEa/'ddQcFG?̄Q| le  =k'ɾxKy?i~XQŸ3O#cOA|"4Ek[;6xfQ63~^ؿ1# |3qbQᘱXQ`'36cΰa7ļ(1O |U~f-W|,@SlkU  2¯6߂' < xaP< @.`do2٦x @QƾZʽ@P.o _gᡦ7N8iFh}AG᠑p_<,2o'< xu|.G<y{^h[ClaM(BFS>3A+ym<5K|5O`wQxjo' D^z ELaᨱ8M/lMxllm^i4^ORᰩᰫxl, %B!K_Ÿ#*BhɅVsԔzMSRiV2,ԈQD|ԉKE,Ԋԋ/R.g8w0w Ͱ;.A Čq'qk <7 x"?toLoB/DH_B^x"!G(Vך/Qy#C^Ovx\G{x&g|z( z |z^=$hz#_DxJƾ=pǢ|8&w\/-V߇ q 1LJÊp=q'8{x/xř?a?e>>#aW̧¦xU 𹍼.1ׂ5XK|cIbf#0 `Ϸyև͖6=mN^l g W 8aO [6r6% 0"-~ Hx$4pAp?_oׂAgCZ?$×0ÔO*q&/C+nxr{OYoD /J9Ñ;r({_:Kå;^h|:1Tc0â61?<:á# <:áG)V~ 8áo .ݼt>n@n /?8MGRl'۷V( Dl( D_X^ E' <;)Ÿ>^ƞV"gm4;G2m# 8M|-com N.&{@l-h-lo lm+@T\-c\.` ݠ^O i6yfhm1pmhӧm;@J/{@N&/0 x}!?}!o.WD:v?m] ϴD6ͪJr--C";E#`=EqGh#`?E1Kh&`h*GE1O Qi 0iK)]*`wh>@A,.|h>|({h>p? n|-@k[@G 0I  aNc ;@H{@SkQ 42hƸmcl94xuchhΰMh'6X(2Fm Q1ghf{Dbnh]F7h!mF{Da+v®}F] I_ QdMb6(;@?*p!@e D m{@Q[@]h kh)[@?;h(}g~0uHAGpAw=N`)+ m)%m(=͠#bn<Q@ (bvX>R^'2(oi\6;VLT?ɖL2p%d'`MX]B@țdS-dY@+ {@6   d c |[B3shF3o=f@.-m3{{@K[hY3ea~3ga3lQ {@QS k1j=f.*#XiG^Dp[Ds{ X0#b͢8a`=Gev⍃8aVvZ>ɶca=f3fXm3:}dkLbU3=f)8f.X3%hmDVm hX $&XA4 v`U +E K*ե1Evkc,͠rh;MQʬyv65g+mQ# vQG v/mF~SA)_ϻm v; K 6S)ŌgXh'½lo@Lmfh[@؍ݠlbFma+ma;,Žl,cl.`@S@h׎?hn@-mx;m qЀa4QDp2Kxo_(X_ڷ/8ojV%ZūKEVo_i/M9gڷj1V. Vcտ&@jb?ڷ1&zVc,^qտ/An> j1իڷW4o?k4˗Vc򞬣1l1kJհb[j Jj;s-[D?տMBſVc'a?hΦB[Ejv,]B1DkW/Vca2+jZVcLu ڷa2+^y Yeѝڷo10a,Vceڷx_o?Y_7o?y^9Ny YiVcJBXOjd5?j?1s)o?v,]Gտ1s^s[*(_[sտзdiڷ;3տNVc#Zy1 JNB10o^BZ,[ ?ڷ^UW[Ƶ|^sտ1տooڷFj'1_!f/11Uտ.j]տ1mտ1Vciڷ1j|r2[4sL 'ڷh癁j5f!o?nǟb )u L&s ._b ~M4?9z%;1Ckh Q&MCoɿf{= [oN;abא-7b ~M4?zCoɿf,1ckh ŝ [o Z& {Ž [o1skh"An&vi&D`khd5>khY̴O`א-7̴J{^@3Ca'zyߓkh)vD [ouzH&1oɿfw,._=oɿf^菵 ~M4?2^@3Cc~蓵 ~M4? Vא-7V{^@3C_虵 ~M4?.蝵 ~M4?5=6oɿfz(yߓξ2`R&jz)yߓX7 ǝSkhSՔE] [ouz+myߓEckh א-7֯!K7=oɿf^y Y践 ~M4?}skhNj?^@3CF q` ~M4?]o ~M4?^@3C! Ioɿf,kh; ._`ZS ~M4?/ QmyߓF F^@3C7`Z6& [oh-,&MyߓK6oɿf;Wj= [oh= Ryߓ@˰-khhg ~M4?`Zkh{M [oh;^@3Cvݯ [oh m [oB1 Moɿf g`Z?&)khКoɿf }l^@3CkhБջ^@3C;^@3CK h& Eyߓ^@3C4Mm;^@3C5 myߓ f6א-7M&Y9 v^א-7GK7`Zyߓмy Ykhvא-76 I^@3C2}i+khx|Igkh"An< D} [o2 D [oB,vNא-7%]`Z%myߓjK&^@3C륢3^@3CX}h ~M4?@߰-voɿf/X}h ~M4?h ~M4?eWh ~M4?`Z*yߓ`Z+myߓQ4gKא;ckhɃ.Y&:7Pn;kkh-oɿf,\&:7Pn;wkhz&3 ~M4?`tn7v>oɿfoɿft/^@3Cd %;a6oɿf.Nא-7EѺpyא-7?khic >myߓX7 ǝ&c>ś^@3CbŻ^@3CL9 ~M4?oɿf攄t.א-7coɿf[,4&hΤ)&h癁|=&:7Pn;myߓskhN [o]]@j/VlP &8&oL#_u{/;]^2eWWc]^:e'W `;]^=]^\>rO&&e(0|̹pP)q]^˂:&3.0pPe\;(Jf\W2_Ẁ\]^˂ceA3V_W?_ pPc1ӦEeWfcLi]^j/_@e@3eD_h?(e_K]^!u{/Ѐu{/Ɍ?pPt_-e1u{. f:H ]^`eBS1T&_u{. f:.w_W^9e_/_e]^xW^u{. 3;]^˂Ιe?/pP)2O_ TW% WW%c]^?eLu{/`eL*W&_Wtbu{. Ff:.0ea]^]^˂ҙI]^ Wd2Gu{/@c]^o_W0eBo_(7eB_M]^e@5e@]^e@>e@W"W ? ?W'@@[]^?]^W(/_ ?_@]^_@W) W)2eR>eRq]^HW)DDJe e }]^@E]^A?u{/±u{/°X\ u{/¹ u{/° eVW'u{/*ea]^8 u{/:eu{/Wju{/ƠsPew]^u]^u{/ƧO_!eQOu{/ʂ_;]^A]^o__0eP}]^____wu{/ʪe @u{/wu{/`]^Ge]W.W.orO_ÿ__W.pW.gu{/e\ p]^#W.xxx{  ǿ 7u{/ e_Ou{/e]^gu{/'x]^V]]^Y]^_]^K`Q]^_lDe`#]^gu{/O_77 ?7spu]^?7_]^]^Ae`*e]^s]^e`W X?9*e_ce]^Wr_u{/ o]^e/_]^?/u{/O__?/u{/ W?]^>ehU]^=]^_ C?_ y]^gu{/u{/eb Au{/$eqOu{/ˁ'u{/ˁWu{/Ɵ/o^__W/#WAexW^^)W ?^/O_D JJ_0u{/_*e`?]^u{/G]^¿u{/@u{/AWu{/Au{/W_]]^2-e2?d eGu{/́u{/ gWW̷we_W?eWff7u{/]]^@u{/u{/&e ;e c]^@ 7#Wv5es]^ؙ]^W87u{/ӫepeq?o__o_WB/_oeu{/WB_pPbd@H&m5ЉW<_׷o$!U\cw$#wҺ^q?7_,u{?4᡿ #Mu{uyoBHg .-y;m^^L/B%_hЉ/8WOoG:?4?G1=u{uy.WW|ULvm6JBm5+ B`ɆDk & &|/z9y?᠟/_*[AO_b% ɛB%_h<^ m_01cd .wJ=1M9y?}:/_* {|7ͼaOm{xJ ~Lšg+`#vm`z&{]^{~}]^e5 `_YscO>#</_*Gݾ[Wk,a(WЉ<2$WW<_!/oOMs[K|4ctWW'^WW&+Yy| -_/rGm񀃄 .`IKq9" -_4 5?ym]^u Oy+<@YcO>#<Bκ>gʯH|hDMN%Љ<>=ux3Wo w, '=?x%9uyO]^Vu{\F?9y?:/^pqԑ@iU;Nm]^/o@|*o#O*$via(Ry4Dk THyy¿ʄ-;?U\cO>#<CMux}?]^/_Bo k)Py5?Dkux3Fݾ[u偁uyO]^/8x}]^GiXWW|U6{|B's}k)<0g+. |Cd^q?if>gʯ[ mɐЉh[u/8WXg;?Uy?|^>gʯOo *m5!ϓg/ lm@euy3rWf>gʯ.-ЀmXRɄ"_ 7^p׷o 13ruux}?]^/_q;o!mYRo/'ux3 {|B*H꺼@ =u{uyߊ_,u{С]^eWW`0k?mZQ]KsW<_㑯o A_Ug/hVgr(vmLs<}kO F`]/Pa{yy¿.-Ɂwk`u#zjg+[/Ϋ4W'^WW @Yy|-%vmL.XwZ&vi>@"_Dg+U ~u]^j??O]^/8x}]^G6C:/_*oy7}rÿ[M,a(ЧDk /8Wb.m/jWWhcO>#7ux}?]^/_oxi[M-(9xgKjg+tK^/Ϋ4WhcO>#du_,u{=ux}?]^`,9f׵o?f1t{^տ(p:]) N{Vcx$:jߔc/i~Q1ӪG?v~Q1,~M1!/nӞ{Vcxt jߔc/{Nkڷ3׵o?f1~Q1ƶc䗴N׵o?f1iͯjߔc0&8[WiMjߔc0+8[ݧ~Q1Br^׵o?f1,;^տ(:\"G?y$\P׵o?f1;P׵o?f1>?[^տ(`^տ(a7jͯjߔc0"kڷ3zeU]Z?0Ʉk )]^˂Ɍ˟pP2FeΤeBS2RW"S2u{. f:1\:ZH`e]^_`'eCNW_S]^˂2eAu{/W?@ @F_R5eBDc_WJo_(H!u{/ԁWu{/ԁu{/{W7 ?W7_u{/p'en /_? u{/pen(W7_Y]^ ]^DQ]^D5e"\&03&K]^D 3&1e"pPbt樿pPb_u{. R1;]^P(eW$Wzu{/ǡOu{/ǣo_KpPC5i!e e5eWz ?=?eCTd`m5(Vߌk^p;o=gt@e]^:]^@?䁁s W$WW`\;5uyuG?@+WI?0.wĪl ./8=#=$WW|U vmf`-x+$vii% μ`o0-:yy¿XAUuy‰`cu``\euyz:ՋҺwu{Yy|ZHĿ;mg"_Ud/8WOo'`k@j>gʯϷo%ڮm5` =Ʌjg+o ?8 :?հGyuyqr>gʯko %m5oky" \o>ÁkG+?+'gr-}q#MPG 8!g+pBV00.wǠWWk? ~Kgx %2gm @G`[xJ ^*vmd#d01꺼/8=#/uux}?]^/_ ;|g)Ump# 8|%^p-qb``c1VwD əWWs3:uy Ʉ H;50.w&$WW`\LJ?``\L#WWP0.w&0.w&+Wa& @J?K?հ#m]^]޺^q?{]^G|0JgQJ;mQq__W<_N_Ϋ[]^OW;]^eW??[O]^/-`/_WEѺpyא-a"ɠG]^r+avܮW>| n>| WW7ux}?E]^>ux}"}j/! ._jjߔc0 ^տ(`.SG?(õ׵o?f1 F~Q1Jjݯjߔckڷ3cjߔc0iڊv~Q1X_%v'(%C>(x̹pPe\;(Jf\W2_Ẁ\]^˂ceA3V_W?_ pPc1ӦEeWfcLi]^j/_@e!_1u{/e#-e#2e# 'u{/)e#Y]^˂jC]^Fy]^˂0O@fsoMHP8,xJ?27ux3J~-sU gFcOJ:#_,u{g4sc׵o?f1k'(%?C_0&e#_5]^b_;]^cO\:̹'u{. 003.(u2\:̸) ˝w:f\eAs]^˂eu{. 3.H]^-ewu{. (Lf:0\pPpP35i!eu{/?`e3:a]^__ Ou{. Ff:th}]^eD\eu{/?;___%Wxu{/]^_'u{/מWx2e eeG_ `O]^wu{/;]^u{/<W__O__F A_0u{/ ]^]^B?!u{/@;]^Ae"W==Ae]^-eWW(WWAu{/__? Hu{/h]^Z'Wu{/Ͽ_"e>K]^?>>O_/u{/τ_|$WW?|/WYe]^]o_W#eBd ?]^*yn+c*m@9qux3oq~Lu]^w$#1O]^Ǎy .wɓWy1u{a.@aB>gʯ~-zK?Ol갔jrZ ?7_+?? `+ z?Yy|?o|(3~H@kXJ5?k#O]^ =['$/8G# ux}?]^/_oI/]- 5yPpuNA\bEux3EE8g-#D01Ϋ z?}WW|U vma+o my8L+WW<_N-? ~W .wpWsWW;: {]^Ǎy .wz(ͫ+#/z?s耹򺽏་]^Ǒ%<&ac+vL]c+zL]c/WWu{a/&>go-Md;#WW?13o$Ncq1|hSOo@UX0[a9xzk^p ;|&;z; xҺ^q?0]^Gד?]^eWWKGwh@PViNA Uိ]^ [d .wJ9y=uy"?&+Yy|D~-N -ɓ~*WWD:U?@\ ҺBkD?kȀɋ+Yy|oO'WH@kЛ+j|&{@u/8W ][(W@\pWscOL#W"WW|U-ϼ>m5qg [ ASˉ/8WvmL,}jȇ_aYsc Һ@W u{Ȃ"Hu{z'?5Uu{|r,?YUc!Eu{uJ&Jc]^C?矊@Qc~)WWN^q?0]^G6OB,W|U) ['#?mxM/9_dg+{|& :?uh.wW'&#+Yy|oq##M GBGW͓W<_K~u]^\cOL#WP~/&g[^ImJ:&mµux3C-S0.wEy]^OL#Wbz>gʯ"| @m%(#L ?^p"| Hw, Ϋb =u{aРWW|Ubo(6p0#;m%`oNA!߇*^p#;| @CحYscb ?S]^/8G#]^eWW'vm'ma(|&?:$WW<_kJJYscb ?S]^/8G#O"Mux}?]^/_o[:7Pn<y4-y=uy!>>o]^~3ں>o>/kǟWW?Wg]^~{"ux}7-ux}:"ux}?]^.-'&uux}WWBkȡwPz+WWM?Y_cݯjߔc,gl>LJ^@3(3c^@3hljvo?f1'ݏ^տ(O{Vb(u]_O^տ({6~Q18?x#{Vcq[[DZ[oॵ[ZŲМ`(aȠ%3.eC ˝wf\eAs]^˂eu{. 3.H]^-ewu{. (Lf:0\pPpP35i!eu{/?`e3:a]^__ Ou{. Ff:th}]^)u{/Ȥ_I"u{/Ƞ Iu{/Ƞ=]^˂&`A?15MmJ!-F?Eg+IGoǠ耲H?ȡG`\{]^Ȓ``\Muy! +"1n>gʯC-F qcR6א-/_1n/_,u{>5M>׵o?f1& ;m{Vbu}?]i7 լ[/2 5ա9C1P?)e{]^_@\:d̹\:rO\:f\?\$3.1pP̸eCeλ]^˂^3.KW̹eBS2$weWd\&3u{. LE(|tc(uW WO]^˂S0e/u{/h#3:e]^O_>eQWu{/Su{/?Gu{/W>gu{/e|(xto_·u{/  LW31GW?u{/\%Hf:Ju{. 3%I]^0U]^0 F W @[ @ d삿_eu{/dq]^@S]^A) F/W&e2 pPbtba]^dBwu{/Ae2Bu{/K]^fU]^f]]^fW?_e3$WtdpF&c$#epe(`e `]^)ewu{/_T_u{/u{/$e5W]^j  YW(Y]^j"Wu{/@ W?u{/"e _W*eeRy]^m]^ W]^e]^ 3e/_PW_u{/(]^_PW+!W_PWR_PW7u{/u{/_!u{/_rOu{/]^n? u{/Ce7_r_u{/M]^pW?WW/_e8W_eSu{/ʍO_e8u{/WO_]^q_u{/!u{/ 9]^?_Bu{/ ]^@S]^@+e W_B_JI$_$Wu{/ c]^ &eWWK!]^ )eWC??J' :e?"_]]^?"U]^([]^s]^__(J!'E@?1by#M02Sg+ľ-d^q? ,#7-g!oy}V_M#PmO]^ d,mEyab>gʯ -6m%py2_(}yy¿ioo"_@Y]^GE=>gʯFoLH_p~2!b]^ :{|euy o@g2?~Q]^eWW#%vmi&bm!emg'yy¿i/o7`wk|{]^Qz9y}ux}?]^/_{ i-= -a)p%!`5x]^ QoΫ3yh{D_,u{&v 5a)x e2_Q^p|Sw0ЍkںYsc c~0w =Z00?7,W'da/kYy|-вa ~d?aG /8WBo aסW#zuyO]^p;u{`5=V^q? ,##OhҺ>gʯOo1Mnd Qd!#SW<_ }[s*OO]^Ǎy .w~i]^/8WW;Yyy;{|_yO^?cxg@V[wh 9|%%v-ʯviJ`- ?Cok!>&WW<_1auy1 uyCMu{4 ?O]^ WW?S]^r4{]^\I`.wںZ .w7c)W'dd>ں>gʯ[X7 ǝ [@O +ux}9.p>N,WU2z/]'d5''WW7ux}?]^؂Q[Ћ]jߓ_CF^տ(լ[/4A_P?e9_]^ru{. H̹'u{. 023.: Lˌ\%03.u\%Jf\aW2RW׌˒(23.wpP̹eCee.eA F]^˂1su{. 3u{. Ff$?2eu{/WcL?`]^u{/)eCNW_h]^˂ey]^e6l6?lJeW"S5f0We|a]^o_t_eu{. >f:Hc]^˂?]^b ?7u{. 3;]^u{/=u{/<We_ ?u{/@pP)2O_ou{/āu{/āu{/ĀI]^!_u{/Ā]^ $W1ы?!u{/D]^ WAu{/DWI_eu{/D  _0"B_$Ÿu{/0E]^?u{/Mu{/&EeNW(O]^ _u{/PWJu{/Ġe?%wu{/€e_u{/Ġ]^( p;]^Fe e pQ]^a]^@e pe*?_WW_u{/]^u{/?]^gu{/.WKWKWKWK{Xk]^,WKW]^,[/_d_`]^,Leo_`e]^'e _?_u]^W]^? "u{/ƧAWu{/hW?_#e G]^!W4!WL3e&_WL?_]^0?& _FQWMWMWM$WM__ ?u{/u{/m]^x %e<=e<'u{/]^xSe<_ʿFu{/u{/ c]^z}]^z ? 3_Ou{/''vWOu{/e#WO'_ŏ_u{/l'e ('u{/ –]^@?(/_#8Be Wn7]^o_u{/?u{/t]^ o_!u{/e&WQ(ou{/Wu{/|s]^>m]^9e?[]^ g]^ ?1]^!Gu{/"gu{/ WE_]^J_C_I)/_@u{/ e)_@I]^HZe?u{/Y]^.e?]]^~WWu{/:e?_e?o_/e?o_O]^"*eW__'e/e W'D$W_WWSW1Y]^L#e,WSo_2e@ _ &e@De?_eAe@ȟ ~__]^/eA KTW __ D__eA_]^Au{//e=]^$ J ?'u{/?]^%ʿO_0]^&Ou{/O]^&o]^' o_ru{/N ??p eu{/Oe0e WU?*EO_u{/e"eW ?_@o]^(?PPe ?)eo_K_u{/q]^)RW o]^)@iW<_Ul.ܰ01lIasc Һm`.wMu{Űym]^/8+#-WW|U*{| b>*Sm6 (9 Ok]^ oPFo1whO]^J?cW#G^q?@W]^G#QDU_,u{gʯV-b~*;m LxP €0 Vyy¿Q+oW;$uyO]^:aD&K]^*Fcx ^ ^W'h `Aux}?]^/_R,m@}kS@`6uU/8WBoU8az=#r?_,u{W'h p[gK8=)c+v-0?u]^/-1o(O }WW8!| BOo)gpW8 %SŃN%X#u{SŁso{_)J?/_^Ϸo ;X/;ma)@p*9W<_^*m0,;WWUz/8+#C/iux}?]^/_`O%0Om%)R9Mux3ݾ[Bd"uydj2 {! #+AkLW  ޺d@7y]^2<^)WW Uu;u]^p*mu{9y]uy@Q.>g,;|^pq}|^$WW8#}K$K \U¯x]^ot‰Ly"^pq-./%WW8 .%?Bo)/s[qWo_Isu{SgoG| vm*]!WmvEux3;|~{]^&2 p ;=u{?WW|\k4uW /_*- d灢m5# S)K.GHyy¿o~u]^&muydºp+O]^/8+#._,u{m5a*w Ok0zg+m/_`\]^ܰ01y]^F.*;z:@\i]^Xv$Mu{W'h ЖW|U{|R~m5,%A ( ? )yy¿R-`\WWw, Wa]^4uR_,u{hux3- 'h &U]^eWW ݾ[|k/.;m MI)€'CW<_.{|_IΫ߭?@\r?hU[go/,W?حm5X MM<( ? ^Uux3m;P?+ ?kaJ\H ͫ?W@\8+9U]^ǝ`{,]^4W 'U@U:s?c-?{u{}]^4?^q?@W]^G ?Ѝkz ˝9]^eW?boO κh߇@0@ck.W?Òn%7{]^/%ȿop /88 }K?%;aGWW8[Z/_+}[2;%Om[PF%@iSMux3GO.tWbzWWL LW +._ch7{]^tPں9y]uyt"xZ{]^eW?,|BG5u{So!yco_ y*_)3;|U1wo2~im%G OkP]^ c5][5DjԳe]^3?@cDMi]^ǡyR==@D?=cOWQWW|Um/,W?:~m5t C P_g+'aȉjq uy\ ` b U =u{b .w4c~h W,;^1ںj~o]^5 򺽏j"Z .wj%~u]^5W EoWW @"B19%.WW ?_avlur?l Mux}?]^/88o 6ֺls 9y4;|1(]^ou{S\[dct}K00cx ^S?焧 s&Kuu{S%{| q%pe_*(GN*v mFaoC46?@$WW<_m_D0.0꺼/8+#0Xggo!SxmKPNߔO46*yy¿xoAO u]^OWbxR)WW|U'o.E ݶk; A8w ( ? ^p [E@ƀ/"]ux}?]^/_vm(I Dm5oP_o]^ `R*vm_`꺼/8+#"5ux}?]^/_QPqO`TH_Б<€ܧ Vyy¿*;| ocuynk?nKu_,u{gʯr.vm?P}k#()4/ Okr_EU/8W:ou偁O]^XZ01Mu{L? .w+<]DJK{RWW'h (S]^eWWX#vm';,m AHyI/( ?<]^ eoH^0=?%ch7^q?@W]^G/_*oH B {me@i Lyy¿@)KOuy|O]^X=Һ"Mu{au{ƀ,#xT,WW|UvmO( ZM16NWW^=u{I5r?$W|Uso*_bl%L4>Dg+MGoY7*}]^Ic+5r?&Q]^eWW-± ]MGJ_@i> /8WT~{]^̼< Z JTch2Һ:XM^q?@W]^G$j/_*TMFU@g@ioW<_؂5iJ? P?'W$_ͫP~o]^WWW^x W@\º .wڢGr?]^X%W|?+X+yM=;2cf>:?B9|b#oʯ P;| hmj a)i1/( ?yy¿7o!o!xk]^ܰ01r6? ]^`!|r[]^`I+ |r㔵lxC:x=uyҺʚ#j1wMx]^GuGu{?W`M]^Ǎy .wS]^ @\?W.V0cz?kWX0Scu{au{u{¥u{82{ ܰ`g]^/8+#P#WW|2,[fq .wrN??[f Wm3o(m5a)#`C1$WW<_?#vm?#~{]^h}]^,?*]schi]^٢7u{ƀh<)[]^eWWs-¡#װk N^34xW<_-ƁWfUbW=u{1r?٠ Qg@s8S@mP_h |MO]^ ao?WW[]^FWW'h f¡&>gʯ =[ ?'nm50xTd!7^p [Q_WWֺ 4n$"Ic@Q]^l%WW usGsx]^ǚ8 JScƼu;x]^YspWsxYD Mx]^/8+#~m]^eW?"o|]^/Bo/_ؒY v$_AP_B?$WW<_ؓGo耋Hu]^I[]^c?W\i]^/8+# F_,u{gʯ#vmbGm*b`CVyy¿$mbΫ~ؘ0Һ^q?@W]^GxT W|U7+'j~m5a*aQ( ?MEMux34<+ߑ~ʺW4p;c&WWWw?b`~m]^27cOW=@>gʯm *_HS@32Eux38oyʏkyQuyO]^\H +c&?ǵ0chu{D?@Uy]^\xxU +s?[]^|^º$"?/=c@k]^~/>cx?a|/@cOWERux}?]^/88go` E?az Iur:ooFTO]^oE<_)%SS=KK^pqWoY/nr_)D%eKayD ? Ir -aW‘B^#!J^pqAopΘ@/rN?,6[/y| h]^/|8%ơwyK&[k;H]^ǘGc\"Eu{S;U qtv-5OUر 'c}kaT€xyy¿oc^_axz&u cм* WW +cOWYyy+aWux}?]^/_0-Q8H k4Y ( ? Ejg+Co90*2M]^au]^,P? W 4cv5c`u{ƀ_,u{]^F.]^ A?EJ cr 0]^NuaGcWW R؜xRJc'‘f؜=+K ?a}SEu{AW#)>cOW GGeux}?]^/88ď)#WW#)+1ko:{|+P+ otF/_ [/ƒ.IiM@( ?zg+ ׷o:*z?bpu{8y 1kWRں 1]^/8+#Ƅ/_*Got$P ; m5O=P_ =+WW<_T|01ƀ (+Yy|N.m6#-,r} [do E^q?@W]^GfL}&8 &}r>51'슺>'/]-2:/WW0mux} ux} z/Ckڷ3@V׵o?f1+^տ(dO؂{[Ab ׵o?f1hkڷ3aOu}?Y{Vci؂ {Vc*A~Q1IG?s- "f׵o?f1Ejߔc2}"׵o?f1/_A6~Q1I+Ejߔc2AA%{Vc;_"sb>׵o?f1 (~Q1 { ^տ(d-v m{Vc]jߔcPi؄kڷ3_ jߔcP}Nm{VcBkڷ3/b׵o?f1%h}~Ot_# }F^տ(' kڷ3g؄u[b^տ((-Bkڷ3v!2G?@s؄ m{Vc/Vl$ա9CBɄk(003.u'u{. >f\]^˂Lˌ\f:1\:ZH`e]^_`'eCNW_S]^˂2eAu{/W C_a'eC&c_abBe(Ht_agu{/ LIW u{. 3$2e _(J+ W*S1Tؠ W?_b2e _`g]^8c]^8#e ?gu{/NFjae(L隴Wdf _' {Bg?Pi %J=Ya'/8Wou]^WW'euy/_*-]@ml%CODYa'+^p_o ]s``c{]^Ƽu;z?`4cO"?ߍkYy|! ݾ[, [ _ΰ=ɫNu_,u{? RC {IwHN'>gƽ uz?G?s-Gz$C-jߔc-D*VɄk8W L˟pP!q]^˂˝w&e?\(u2u{. ˝\%3.{pPrG_ou{/ pP`f@.{eBc1чWt\]^˂F?]^˂QIu{/ `q]^u{/(u1_"Wo]^pP31Ӧ_h4eC_u{/ W'( (1eBGI eBGLIWu{/R1eBDc?pPIu{. 23EDVux3 ~-s+Euy+o`WW .wrDj/^pq-K10_)ൗo_*h }i&>W<_m^@e2?ciuyC%e_*x"An< 6ohmh'?#%W| N ^տ((6~Q1PPJG?^bʺ'((`(aV%W)spP`sW#eu{. (x̹f\eAs]^˂eu{. 3.H]^-ewu{. (Lf:0\pPpP35i!eu{/?`e3:a]^__ Ou{. Ff:th}]^\e]^7O_a]^7_aWe W00?_0e 0W0/_a_]^8wpi]^8/_ağ(x!'qF qoI-yb}uy8aۮÀgyux}¥ux}Dp,Z{]^ZHŅ~Uux},?]^ ŀ f`tFŀ]^6𴶺>^!ux}EJ9>5#WWaȗvr 9GzGu[x{b5ux})BUux}M債ux}iŸ1+-J'~_R?}L|CЍ]^ 5ux}'jZx@Ŧ>ţJ.WbY:Z k]^@;]^E Z+qR>n>#_ E ]^ux} Wyux}?]^ ^վ/u}?.m{Vb"W@m׵ogh 5]_O}j` Bu}?RBkڷ3_]_O~H}? EtW^վ:WMx{[Z/ã/h=3a[Z/à™;{V@ -aWRB>= -a7bV׵ogh]_OH8l.{V).^վ: A`kڷ3__]_OHAn%m{VWR݁([Z/u}? k -`R{V򐻰&}? EH- +BrRL#_$3.u\:r_Feu{. =(t̹#u{/(03 =W1pPbf:.{eCceCդ_8eO\:tu{/`7eE?(y/_Wu{/?&Wjae#eCϙIu{//\&Hf ?o [[fҤkS O`/8W*Uc`\U9 g?aW"m]^eWW*;|ou'vowOXw]^G88>8u]^eW=>G?^bjМP?g_g? W8 $W8 ?u{/c]^\WW%e.__?_b?u{/q'ظJe.rO\&13.uu{. :f\cW)sW+eu{. Hf\]^˂^3.KW̹eBS2$weWd\&3u{. LE(|tc(uW WO]^˂S0e/u{/h#3:e]^O_>e.WeCϙ1eCFce#2e/_0I]^^Gu{/??{ؼ 7u{/>_]^3eWeW%]]^u{. 3;]^0WDe1_}pP1W!u{/]^˂I^eto]^W^ _\f:1G]^AevW;9eJ6e__]^ W% ? W!_dW1$/e0(|tA/u{/O1ȳ9gu{/o_c!u{/u{/]^dpPddf:2u{. FI(213&e3 W?W`S]^_c1u{/Wu{/u{/i]^fW(_W_c0k]^f#Wu{/Wgu{// #8w]^윁]^잟_dc]^윗]^젧4 @e u]^W4'x /_a/_gGu{/Ge4VWK?"e4WO_cA ܗ]^pW_ƀ%]^h'Wu{/j?_`5_` d_`Wį_`He _`Te8De _`Ba;_`B ]^@wu{/>e5W)WIu{/O_e @H*eR ?gu{/)eW),ez?p_]^{]^/u{/n W'u{/@s7/_`WK]^wu{/oWu{/"%e5E]^u{/eWe?ƪAGu{/|&W6S]^!W0}]^gu{/#wu{/U]^lW]^lu{/u{/u{/m]^lW*e6;e6"]^lu{/';!W`S]^Je e W]^?~]^?_`LW`a]^ 'u{/& WpeK]^ ]^ _`P@W/eBgu{/*_h?WD>e?_h?/u{/@ y]^Ae PU]^W*PPW ?u{/_^ ?_c_cu{/$e8_?#De8/_ce8_`m]^pu{/W1'WU)ݫ_a)?kф/8W^-5,#+{]^eWW\G! )q[M %> 8)_2g+.vm/4W'jY]^Gx_<_,u{gH9zFG?O,Qz{Vc3#kڷ3}D}jߔcR+=~Q1X_- Br@)_oG!u{. 03.u'u{. : :u{. ?Wˌ?\<`f\O\:r_Feu{. =(t̹#u{/(03 =W1pPbf:.{eCceCդ_8eO\:tu{/`7eE?(y/_Wu{/ڋ?c]^ 3eBeHeWH(Ht\$Jf:HR_iRWJWJWHWK'u{/_iOWJWJ"W L҉_Ҁu{/Q]^(FeV/eAS1тO_eg?en_e`]^CeVsX@eV(LtXGe9C]^rW2?\f:1wW_c_c"u{/ȍ]^˂#5f0Wfjae9pPjae9?E_c%eWz ?? PM]^˂'Lդbf _Go [4cm5S?D_9g+ ݾ[uH;WW@AD?LrAWQkA/cWW'-WEkYy|X'vm2m5035kFeU/8WL68` %k@"_:WP01W$z?cou{үWb k]D WW'-WG_,u{m5-V QKj g+ooKW$ Ϋ"Omuy$I?=u{uyt߲g>-gck X^5ƠĊg+-0W$ Ϋ``c?Xa]^,$IcWW'-W]^eWW [͢mp,FGc'ꫫ^p {|䁁suy[]^ΰ=ºt릖@\kD/ϫYy| [hH_XJ~xֿ_:u/8WD-u]^: ?jø~^q?h溼p]^eWW[=!Sm%?>+Ge]^ ``/F?=Uesu .wW?C+~<`H{]^Ǎj Hں$V &/^q?h溼i7kYy|` kTZ9Ge WW<_vmYH;WWD0Ha]^9讯?=u{uy/_*h={|h"An< m [#Z/ G5ʺ>,U/0蝵[eE-jߔc3E]jߔc3}Ejߔc3=Eͯjߔc3]؇{Vc-C(G?6]c]jߔc-)]]P  Wu{/o]^HeX#13.I]^˂R?]^˂: ˌ\%Jf\aW2]eC%pPdf\W)s]^˂L˒;W`]]^˂2su{. ?&c\>f:1\:ZH`e]^_`'eCNW_S]^˂2eAu{/W? g]^?W/_`V=eqW>0eJ]^ _`V Ws]^ gW)*o_`V)W]^E]^?u{. >f:Hc]^ __eg]^˂1G?ˣe\Be?/u{/q]^ppW2c1c_e_]^ WGu{/]^u{/;]^]^˂ϙW0/e3WevW;3> eWP+WP.WW_cy]^"W~ l?/u{/u{. 3WE_b?u{/.e!=]^B?C?_by]^_b_T_$_co@W_P[]^C)e3%W?8`؆1[=Wu{/z$Wou{/z>e ]^|_`\??u{/.??W__`\ ?pWeE]^ W9]^ xu]^ W[]^ u{//_b e]^D ؈ ?ԕW_?Ԇ_V+WRIu{/ً_f وW_f ebu{/]^$W]^pŸ_`Te? ??O_cK]^~q]^~y]^~W@ ?W?__cop؊M]^/_W.?_b(eu{/e\ _b)gu{/u{/u{/ i]^_X W ??u{/O_`Fe]^?eQ]^ ]^u{/0W=e6u{/0u{/0Fe_u{/0]^ e0Wo_`4e0I]^`Ee6 x5e0s]^`-]^`/_`_`_`O_b1Gu{. 23u{/- vUv 5 %"T ʃkf^p*-Fwb0oz?b0J9y#D_,u{gʯo/} [@kɄ|%#Q/8¡2 boxgБ zU`;,a+ЇKsu{S]^ m]^BWW'm]^eWW!o*v![M%!ҟ)yy¿|i%@$j?O]^CMu{d=c@2ںBWW!u{Ur5uyПWW|U-¢`4Umd&a(A` zg+o[ِп]^d?O]^\I`.wҺِMu{W_ͫ]^z?f@u{ ux}?]^/88v-מ.~Mu{Sh(|&//_ [_S 5 a)x9*?0$WW<_u]^ P?[]^`+z?`f4cO+Yy|-6dm5\%f3?0O]^ R%0 `faF3 Uq %+C=u{UҺّ5yW07ںJ>?c`+]^G k,]^~Jc##WW+ Dj?oEZ/^pq6v-N~*WW8o0U7&@zd>Pʃkuyy¿h[S%k:/}]^#_c#i]^FS]^/8:#WWp[?]^eWWm/ *M ?Ab8]^ io u8WWqj9y#Ǵ>gʯ Xvm/F q狢א-P$_Dj?؎3k!T>ƅ5_,u{?_ ~Q1Ac^@3q{ ~Q1X_/WWc?a0٘a]^٘O(2Ff\]^˂L˝G]^˂(y2u{. Hf\\=(x̹eCeΤpPt\]^W1٘(ef@efBefu{/2Gu{/0efpPc1oeC1ef??u{/4 e]^˂ O%e_`h(xtf_WA+u{/4pP̀7u{. >f:Hc]^ U]^ß\%tt7u{/ Bec_` pPt7u{/_]^R_`ji]^WPWZ?0eVWPw]^ E?_(W??_]^eu{/~!W]^u{/~?W]]^pPbbf:1M]^ /u{/6_KWze]^ ]^  Ze3:eW9Ou{/a]^u{/W8W8W8]^C]^u{/K]^7u{/ĠY]^(W@gʯ[]k @_sꫫ^p-+Y]^O]^L9yUuy\a>gʯm#k^8al  g+/o> WWOa+ cO^WW >̫Yy|2:4[Dm5(xKk4]^  }[u]^DWOaWAUp;?]^eWW][%m5$a(6^NHyy¿{|(꺼 W"X ]uyd^q?xU]^GsOu_,u{]^ ?@+YscO^WWĀFgR̿_aC @(x\Ikā3ʺg+z5[{+Hb@"Hcм*M5z%;a?ϫ .wW'/ bH,g8gnm5(O_$:+WW<_;A_]^$W^^q?xU]^Gx?W|%Ў?@\쫫>;|BU2~-Ц@1?mQQx\&WbH/8W#m7IuyؒAU:/ !/kڷ3B׵o?f1v=m{VcN2ͯjߔc46zM[Ƈ}kڷ3ݏJv~Q1v! ^տ(h!Okڷ3nǥ^տ(h]*v~Q1"n4{^տ([؂{VcEB׵o?f1Deu{/,Waou{/W`$ers]^Wau{/F?f2u{/àe?u{/ W]^c]^#_a__`r_`rpPb]^\SW ?:?_`!WpWp]^']^7]^O]^?eWpWpWOu{/9eepWtdG ?W1ёu{. 3#e]]^˂$c' _ @WJ Ge e eew]^?]^K]^Y]^W /_a k]^$C_a!7u{/5e_a"__a ]^$_a WWO]^W]]^O0e_a<l0e6W(e _a@? eGW3ekeAu{/EeAu{/?e_u{/W ER$W @O]^)u{/?u{/? ?]^lWu{/?%_WheBgu{/ eG ei]^_u{/?_`~˜W_`W__`Be]^S ?/e ]^@/ u{/ABe"u{/_`$_`$W u]^]^ou{/ ?H?F 7eyu{/J6eyu{/eR/u{/υ_`%g]^u{/_`%NeP]^S]^ keBd ?]^>y X/>m(8<2/g+;|b`&"=uy DoW2+W04LI&L~L'8]^Eu{d8]^ǚ8 *?`&Sc`0޺#:򺽎^q?`W]^GH?du_,u{gʯj{| ]o`tn7v^@Fa*> 0¨i&uU>¨{8]^Pk0]^P]^eWϴ׵oɿf/¨ W0"h}~MAE&h}{Eo 5[^տ(լ[/'(cZs2/L#_E_`(u2u{. ˝\%3.{pPrG_ou{/ pP`f@.{eBc1чWt\]^˂F?]^˂QIu{/ `q]^u{/(u1_"Wo]^pP31Ӧ_h4eC_`W]^e A/u{. $3${-pPc1Agu{/Qou{. 23f:1\:ZH`e]^_`'eCNW_S]^˂2eAu{/Ws-_`?u{/Z pP!#h]^˂0e* ?pPpPS1? WeC_`)  pPW0O츋u`,y/)_7WW 7>gBoa[Z/9/Vl9 ֝\ _`(u2u{. ˝\%3.{pPrG_ou{/ pP`f@.{eBc1чWt\]^˂F?]^˂QIu{/ `q]^u{/(u1_"Wo]^pP31Ӧ_h4eC_`W]^e A/u{. $3${-pPc1Agu{/Qou{. 23g/׵ogh rkա9C)U _`(u2u{. ˝\%3.{pPrG_ou{/ pP`f@.{eBc1чWt\]^˂F?]^˂QIu{/ `q]^u{/(u1_"Wo]^pP31Ӧ_h4eC_`W]^e A/u{. $3${-pPc1Agu{/Qou{. 23g@Zkڷ3_`/Vla-uhNPVXɄkRu{/[o\:r_Feu{. =(t̹#u{/(03 =W1pPbf:.{eCceCդ_8eO\:tu{/`7eE?(y/_Wu{/Z?e SW =]^(y1_bب%3<بpP1!u{/_` 7e*eBTfjC]^˂ ?W,א-h'05Y.{Vլ[/5ա9Bux+ZŲV(a]^f\eAs]^˂eu{. 3.H]^-ewu{. (Lf:0\pPpP35i!eu{/?`e3:a]^__ Ou{. Ff:th}]^_`h%eBDcWu{. Lf:xب,e*-eCFceCLO$e*\$Lf:Ha]^@_VRWHW*35i!eC`qF qdbא-?>g=j`լ[/uhNPVXɄkRu{/[o\:r_Feu{. =(t̹#u{/(03 =W1pPbf:.{eCceCդ_8eO\:tu{/`7eE?(y/_Wu{/Z?e SW =]^(y1_bب%3<بpP1!u{/_aX#WHo]^ U]^˂դeX7 ǝg ~F_uy+ux}?]^):m[Z/¸w]_N^bV`i/L#_gu{. L?\cO=#=,g[d;@m%@wa"EEjg+!-y?_W|U@oXmBm5J"8/a"g+!WoÀ޺>gʯ;|`*Gm%@D~L $vm^q? e]^eWW@?hnm5J`LHyy¿hn-uy%ux}?]^/_o0𰋴 7m:P pk0]^ Ѐo,/O]^/+8k`?g[`tn7vk -y?"]ux}?]^."C {KJ? @VS]^eW,kv~Q14gRMLVVƂawu}@3x,|}ya0 QBz&>@3|M={C}y`{ ?j,"QBz&y ]of0蚅ht%vOha+V. a&X~x%v-Lu J[?X_?ʺhSc8@ռC9ZqP ~[1vCo,V\@/'? *c8V{Vk ?j,k ^s %io [?dK6Ӄ^ռ@rb|k _=Fu7~@3|MӉ{Vo ?j,k pI.yߖao,ha+V. `WQB m ]of05\)v ?j,+ pP.{yߖa wo,X_?)]ENED}of0ED}y`C9Zqbo"yߖao"{Vrb|(BsyߖahռV\@/:5Iyߖa5I{V3ՋXPNz@3JvՋXP/Fvho [?z&] y`C9Zq5+%=of0ռX_?傥u!9j> n@3@xڷ V\@/('9|uo [?y~뷵o,_ha+V. `C'9{%]A~@3{%]A~ռ X_?Y]ENr_ЀH ~[14sL ' xC9Zq3QByf=P ~[14s x0 r{]ENЀ--jBڷhrb|Auu!9-&A--&A0 r]ENrY\ ~[12Ooj9V\@/뮢'?W'o [?Ы䓷oZ|QDp2(;yh#N疎(;y\(;y\h׮V:h|d;_G(t|L;_?=. |2// "ȼ2// )28_8dyO,Q\aJ- W/XNjO'YybzkbVl,9\ibi>O,Q\aJ-%kIkO'Y*ĺrw,T/b%=.Sب_JMr%Y$T/b%=[Dh&^9A::_5^9A3c nq*ptbp\C,]@ZK eDKbWaF^s-.^&]}(֞ODE=\/!LbzkbVlh!/h%QؗKA |EEy.Œ2%5땬9ZŲY%%%/9rm2K+$|νiP6$e0s,NA%'/bSWKA |(Xv_1s]:$y.‰f/SWKA | iNאe]-%"%/ j/D,`AK.y+!}t@ebhXx_4K4;iK6_1KI+/]-wa4ĶU4DxK.^vE[z(*ĺZ(!/jhX_l5|KCa._Պ!*z(/X,\AՒEyg eJ>_$qu,dK:YDK>_4ZA(ם.YXtL/Ay̴.YXq:5땬9Z9%DiU=lh:񄗢\|ƶQ4T/tPCa/A P+DkoEEB+^5Ca,T/Q74ZA(ם.YXtL/A̴.YXq:Iz%3/<`?/S{-[8!yK~5땬9_$b^p 厉$K\>s-/8rDy+:'[̴/ƶ#h:_=5;RxFz%!@tjTiMRxNbTA֥@86Ք1̱Rx._$Rx.Rx.Xwz:* %!@tjTi/)<JpmBc!@tjTc%x=PZiZ^xK,GG]jϗDKKDWIW2󸧢h0Oz"Mv%+$y̴DtEy$%s/;|.ܹy̴Dtz\X̼%+$y̴E=DJ^wlZ"XZ"M /9.bJ^wMy̴DtEy$)KDJ^w Vlhz&c<8]-z-XqM2h#e2u]srh|Jq^I&e)KDL&Z̼ؕ%+$z⼒M,D]n^x_+$̿/z QMHxv*ıtEy$/X)e2ZC\X%)MDS4KDeq,`AK^I&e%)bX+$+yS4Ke񝰊z&I6_=E""|KQ!+$̴DtEy$%s/;z&c d.Y+$gl"XZ"MDKKDWIW2󸎗B˜DGKu\XZ"MDS4KDeq,]-^I&e%+$NxpZ3hbh]-!ĮeqOD,aDKKDWItDeq0UkVʻ9h0sÅѬaՇK4+<]s-,]-^I&;Fs-/WQ%;9DlZ"tDiU=\XZ"M+$U8[,KW9Y=K*&d8[,KW98]Dde./|M_=Fv/Gz2tlyykװ! (,;/;y\S/8e~^y %\*.qιP/=KuWǗi͗a2+/zXr/Yj2We'Y^U|wZ'՜Dz֯\Z%\Aw uYr@5/:9zkO':NeO; ._ʵy^9r>_=Hx/P/ez֯!K6_BR͗F_=OD|MB^eWQ4gKא2+$z|JdK6_=Fu6^r/zGK6_B)fw̴Dde;\Փї#狨5||qFuu2ļ;Z"Vieѝwq/8yz⼒D+/a*콄kW._=/Ze J/F|;YsdKDWIhXr%8!I&ecr4ѝM(֯X[yt/Jv/8XLrՋ|A3brv/XZ"]BKDK^/9$+_Yo$,\~^s- w*5 ;Z"^p !,]&_؁aid|G<yz饌eyzh|d;/5el"'#` lzo$?םa՝a֝a&bm./usr/es/lib/libclstr_r.aSystem$$  1A;  8A`acerst,.@HK_dilnop| !0:?NPTXbfghkmux} $%(/4;׫AL02 Haaa3  1aaaN!aaaa3 aaaaa C0aaaaaaaaa3  2aaa4 0(aaaa8aaaaC3@(3 Pj;3aa1aa@PhC 0 0C 4P!~Q(!;?`G{O<BtjßzshW3w A׮?z=\ռ.M ZD]|UBq6P|ZQ/aǪ[M7Cs6; ` :P}tKӥҸQI{]:1t.axt1TdռҵdѵSЁ,Dy?$`ØR{[%_o' 2yLKI'$>aT.B[~=lwːuDT {)=Ӭ#|"k?S0AuDo#@w_ pڸK`wqRne=  IZcSg[ЇQ7Yɓi2g6`I2{ȡqڷ\g3{ \z^I{uDo#@w_ g*VS6buDo#@w_ \z^񻸩Y`Ք *O},Vlg+or'eI6Ϙs$˰[~"Ǫ[jr#ugq{wE%}xY|5 cጟuDo#@w_ gUǪ[?9'or} eB$qT{>.?OIuI|Øg\zr/xt\zv.By8 gǪ[m}xY|5 c{tuDo#@w_ q{gXIZcSgVrz?&+92}-&\l~W&]/x-nv"gq{wE%}xY|5YO)?t>-0¶:'GWI^7I W쎶_V"wt(̎ Kxtf JE'teFG%Mq|? uuS5zg|&+92}-&\l J$˰[~bTջF< @K`׻͢t>aI2{!qڷ\g3}5Ǫ[mYF:D gun*VS0IYF:D guz-J_jx7_oKLVl7g?Q7Yɓi2g0k\zv `wl UǪ[jr#uf6x0WlyR^g%Yc|IYF:D guq{zy?c{(fS5vsDg&Oˏ]lm0ƸI2%^0+TջQ"f p9:@9lsz,ZaQʃ9Cę_x>D=Su޸Nt`xXmӎx 2C,ܟ_h"/(Xb\zD|wU:Ϣ7 KxSbN;y~0Wm}w\ur<~}x[ۧ\$&O4lHF2},tbzS/H&{`NJW֡&ّD%FɆǪ[$ݨ0L+ 7l/{>2vd7!y.2dBkTBC{7UǪrqrr噛Xi9@S㟔s_u惟%u|=L_.FN}7OuߴnQ2=RLC|n޲:=P7:[.7z4o5Ǫ[x=+ ׻̉И E.y:nj19]|ǰ1|n"_cS2ЁeqK^*2]W)>!:td#s)@[^KrW/)s ۧ&<qFrLU+4aqgu >@)'6/I"sb ' (U 0F7^@i\z]:2gLKG,oyd`OU!E_hV{qgu4zE'jdѓ8̤reZ=nc{<r'6a.ЍDU+s\zD{pQ\z]:2gLKG,nYx 2NlWab,.EHV3a:H&s=TR^ ӣ&qHzBl'ø _VhHG,pƸQl)0ðO+Vj U#?^ÞǪN ӣ&qHzB x 2NlNa?] *D0ρ5qgu[_06buqsd9 z' !Z*Db F=Ta7lE'jdѓ8̤reZ=ncq '6Xg.IY \zoَ+UFL72ɔ h~eȜ؜"?%f !0R3୯YLozxBZh9-YLU&ԟ/eU 28=T$}{dZE'jdѓ8̤reZ=nct,"3*DHGװ UFL72ɔ hӡG՘fBd6Me?W?o,$&ҢNɣbDZ3ɓeۧ 0 w0\ PIdQ7.]] %~<+|Xפ! &@IzlXr0ٌU0ǃ =h̘D=dnXF!D_\va > (ݨօ?`ZF!sS{yЮnZ@wZbY?%X?\J,0\zSˬ9QU݆f*Dia%qg Ô\z-7v+"׻^WloUv׭{]׻Ū-{OwB[| Y?%YB݆z +U#?_{6qӫDom"ܼ w0<,\6u$fQK+&R~IH1K+&7XĕXg?c{H]IY5~obgVMa~6qK+&'n.,?%Y !pb?aF H& dX=S×O%YEkU#?_!Ln} 9O%YE%WF06Aq< ! 01UuE WF0 qa*D2 U*:!pbj"UǪ/e<θLn0b 'W$2\ d@U\zSˬ0T !Xg`FO⯴IV!pbVaH]aUq9: !gaԟ_h,BDR3X`::1p; *Dc" WF0  T$@Bƌ2l.(+_h3 :Ǫ/ @UǪct者d1FO⯴IVgb"0âqg YO.*Ln vU\u`lwE'uc(@Ũa}J\K0<=Ta)W)1V2:D o%y㫗`xXӒ+?ˑ BA0 ^q  lɍnb]b^Ś1@̘ uȄN]m{ ?TIcԙa$YL0-eK`Q!I>f fjxL׉1Ka"_[! 4d*7dOK޽ G\zzw()| UђFR#@s/nw_ r0aŊE'gN72";.axt^ >(0O*DaָR3z+U!Dne":D o w0<,\6u'\Pc{.*7d5Ǫ[7O+r$})D)?"IX͆vR3zJ=TRo)td%Mq|? uoQjɥ$I鞂Dg2},tbzS/#uȘ&xPlȢotݨ*k8VXkL} MȅLx'f %Qȅ$1N/J[ֳ6[_h-wYa@K`y'upQ'A/=AEq| |r8|׋%NF+Y[n|a_ǀC 2i\z!9w"분ɔ q#ܺ[:}N^&8 *9=S)xE&vН:ٹ2-VY\da#)7분ɔ lorpNK*x'fKj*uÑHI%bⵞ#mr O3qꗈRpWm ӭ(yI 5ˏ@)8+ɔ lna{%VtNqBL TK|)55Btf7O+D$ 5ˏdwUǪMMvН:ٹ2-*pxfd#\m4#\z7O8^#I[7&P%z8k?:E&hNlܙ@kY-7|1\!& TG͢1[7&P%-$O20\zkɔ ln0 |)1vН:ٹ2-BI ˏAZE&1[7&P%…rBI LUˏAF +UƻhNlܙ@)3'N( KxSbN;{o:Т7GH-N^&8NG0\zօ":D o w01Ũ^3牸!|?*?P"aY4TIҵhɓeۧ 0 w0\!7ܼPԛfEp\K`Q"_1s`,'¿.x5ȕǪ[u E;E.ysT<{݇Oi 1=Sۓ쾾}^<{IŶ7\ tBF$GH-w.玮_xSbN;ӥQ"N;Ꮅ63:'DeKf&OnmMWaǪ[ߍUZaR{_/J(&X,ta"N;;8aA'u^[ۧ]RA$nP,\ IdQ7Z7y:OO7Q=R>7x!U^ɅaT}x[ 0~);"kǂq?ˑ__ag+E6x U4օ":D o%y㫗`xX{YODd~= hKzyR^uĕ+5ATC& PD 'oDsTH(hڤɓe{֨lb^w_ Bnk#ϊ|Es&T3NɎ K=PRs0:P=LM2@#&N 8 VAcwIUYB9@wZDgN$U}d-C gu4J6t4IUYB9@wZDgNTU}d-C gu4J6a!_= mӊGLKt/$2( kbubě='g7TgBnzAr{4]qK^!7h$&:^!]rSV)t(kā^Ä6[[q[zdRvH)=j^!$Ǯ0-nчJ>:u'!v)$=i?[_|tC䦭TRQ:׉`n%zz4Oe:1Hƴt.axtbt"#s KxXmӎ+b0'IO7w;:߷fm)dB!2:?ܙ>PMtIdQ7Y 5Ǫ[i\RKg >b?>s^gF4)A)$(;>s^fBWq̊Pv]{ *D=SYF:D onw_vK骆Lʦ6owLKIHIu:פ)0m^Z6[^b'KaUnly '1:Фlk|RvީӬY|1Ie(tKӬY|5Jf9?['eVt)E'o@?."8eMT2:?tboɓu|OmM%f:ke !7`lvl$&6!7#۔q&BoJM6mI6HVU^[^miK/ X]]+u[.pHII32Ot7ґ KxXmӎNΝb|FR:D o 0Mq|5"` Q}Q{={J EEvI!Nh(1w(3ɣ@GՔ茩M2}./M[9)&D_ѫT.AI!ˇI6הI ôql/)JLkb LBRe#we 'Z`kkͣwG/ˣ93|n@Ȅb)+aE|lmlީӭ"#~tNΝi@w_ ^`4]"$"k'+dITtH߭"77;Ꮍ;”eMT2h 4pHh:?W͖= B׻ǵ{{oXE'hI>)<)=%GWaJ 2@RS$ 2h;d 5e+6t2},tbN&U%y&ّDE.O֬KCDž=xHYa7DŽc'}ѻQ yk!!ن")u1\zTB^i'㑶kw-E."WӬOJGH-/PMt+M"@+EliV#<=Vezoö<g+~^Nzo ޛ, s$j1͓<)r1b?znb@SMC|Gg/M@b՞#~ .$JLQq=1EɊ.)(]1E).ZLQt-(u1E.aLQ>)u0lwE'tb}:D onw_ I_f# ?Zwqm)UvqRVl螚YU:5HrdZw0 / .Q˅W-%P&ّDQ}(.[=Kšoy^!Geh[ĬbCPy_' xc`7!1п*ڗ|ZATN(3$ 2hzJ͝YZcb,-ׁlR)AK>1 *DWRy'nQ{ ~!S>=FE_W%Qt;Co1Z9Gm!N,3FQb8CrϪ) Ry|1Iu*corR^uW"b˱vC9%.Bp'@F/X98CrFIQw_¿ü+AMOS)Y( 8tgm'&+-mEM͒ [^m{'oc_ٔU%f3rq:Ϣ7 K;"ƾ)W+}nJ=SYF:D gu1DTdޚmS#S)Y&On[4'%$2+$`lmzeaeqU & c_O`ln5=R>awk^7W)=ӭ"#~t&8kJvlN7 T.u8SkT֐]r"7xtb&b7;¨뵿J=LTd~JdTI!S͜;[wxHrNR {-^mUIxz s$ 2rN')Ȟ$  CNA19.q=$Y@1ܓ@'fixBCW0 BhNR=4H0 C' BI#rN')Ȟi$xHCW0 BRjNR=5H1@܃(br] {3H@1ƎID y1@P %HITNR=T0cTP j!` :("t;  Pvr NTq`")>OKw_ ^d뗫ڇ"t19*q$w_¿aw PgFVld4A62~A/:&OdzZvDQ#:$2@+E/J^'F, >RIl7r•z sp#Or`KIS>c&橆9a a9L1 x u;0>L1L1Г w'!} 1Jb?)Xā+#ٳ@b՞(Bb(I1Eғ\OLQrbi.WLQrb]11Ei.]LQrbS|naxSdD1%]O:1=re\F'bN;b.d0$[lŤ:1='LKc{׈I_f# ?Zwr޿ վ,: 2hz Jѩ) SU 8or'e.VJy &d/?Q'j,l+M`UYuDo#@w_|a#G ?e=2@Em7ۧ 0M_&O w0\^%zA+>AsgZfEruuKdw$6 ulO!V6  + X 蝜.#{ egb1Nj6LS˜)&)צ)&)ɊyIw'az)$ HqJbB,<! bL ]%2 Rd Y2 i\)\ m2 S }2 S by!Xĵ[H,GgX"X1"DX1> $S;9sxzpFWQFP%>2LS)͓))s7xh"GnC Wd f . !!1v"Ƒ:|n$:t@IZ;P玮_xSbN;)v9[wqb)LO&g8r>7y{ k\z=xI7YnTfѻ.pk[zE)0^REYE=E |TfgLo+`7O"CA!9ɔ loqR^$Ht$'DnVwnc{EY$a`7OII^0'n0I^0'nP.4eMT2h(>1i6rXj 7-2=oCvjco:hl^l9'c`~`Zʒ< `̜a@2rO`If s7)D Bc.R"B!f4rO`,"H8D"(I#rO`4 9H'a"@DQ=5H@1nR" BƉ9H'cD RH'a*@H:)D R@R5rO`Ʃܓv PvrqJ E'|1I{: =EbvR^j PvO;_?Nz4m=LfΆTrdYDqMmK֭j !#9 Wd fr×Waɰ%wK5K#}y|2 o,|ȧ-mm QbNl"7׹@zHa|? u?XL=LM2@#&2},tblr~l/&c6&[!$^l2~mntrN"8 h4g]IX*d/e=¿X_U$")$& % +T.lYO^޾ajՆ$u00=TR{ZDFh%,\6u& %1=Ur:"7GH-bN;1"xXў&b7;¨}=ddѴ2: P5Pɣɓe{O<96,;IJ1/ZC>7|+L|p* ]@r )fI{o;DM`E Z:u^LvY"u1ר)a: 2BoMMD 4m=LfΏܙ>PMq@s `_6rM R ~BA?Ie{W1l-mLzl?L7x9'yyR^ 3Fgu.*$n5ra_,k)"m0F $˸[Sׯw_,ڱ;5a?]{ W)=ӭ"#~t.axtd}j+U\N KxXmӎCR^ 3FguUo: 2hzJ͝ (n 56ܙ>Q7]&2dzwwBQtLuꖈ[Lsh>(I#}y|1(̢JXfuq:DoGH,ڈDa=S[%qA:E2#MOS)YrdYA6%W/QD-/$2(nim B8^.!汈ZO;);BM5Q2#NLz>C%:wIUYB9@wZDomӊS35x 3ۓ'3RٲwYK 3Brg 6̊&JG&XsA'·=i "ns9&Ð^=94&p_pq0`NFÚd(@z(2c˯NKnX2vb7=QZ,i:Ò2Npr0Bps9/N1w:G)'C`;xӓB` !t#p8 KN  zq: :PFAzt&Azvd9N Ӕazt^cuK /1Ye00Iņ j66amNbZqb0BVxXK/=;,Flj;^ӡrn;P-N t]v" &En&db7NhxX& %MJXҁ)O)DoN:E]=re[ۧq{q&H*ۧ{U}d-C gu4J6t!$Ǫ!jK;D?W gBI)NĘU}d-C gu4J6t=IUYB9@wZDgNU}d-C gu4J6t&=UfY PeYj!Ϳܠ^hE_4湉$舍&=UfY PeYj!Ϳ{,z=+IL= H''xxe"i4{<О-2"7z@Q:$7/!*5`-2"7^yїjVy ^1Z2Fy8R<ầ $pS ^aGC6^f#fPD̃`#rK(qcLўh,vb Ȇ;R!dCw#4d;1BhCwΊBf (a L$;P!y QziZe7| Do[&D7gi N)ӽ &=UfY PeYj!͝;ڤǪ!jK;D?W{U}d-C gu4J6t&=UfY PeYj!͝;ђcViFP%֢+ɓeۧ 0 w0\#r&dfE{/uU '!ZC{/x+fSPMq@s IdQ7RK R-q{'w0Ǫoֽ9=SC1/u_hOaGǪVV'X0Cy?Kӭ #~Dt.axt]:Т7GH-mӎc$"P\ 0$?Wla(θQI{t4FGH-N^&8\ʹ_tRV6 |?%gƅW+:t4FGH-N^&8X=Us|N<W0IaO⯴IVqB1U#?UVO "IR^ othp[ۧ\awPgshy~VfeB^{O^oօ W yYjZ&f.NBD$~M /OCa+VfKD7yr脜1 5&~b)prq0`iuqdtݦ]ykܸ;^Krur|5˓sFx[B@ ̫'D$@𷙱і̣w ={ctb!/2\RA<̘幠U=R={h4o M*cb\L_Z-Qمk3eBf7sk뱠𯩭f9skkY-7z7=Up}g\6׺17+UX ).=SZ4FtKrW/)s ۧ7Fcs'2&75q|Xx=Up|U/&.AqLnS=TBfBDWNh Ky-\s,ow¾qq꫃?J9Ϙ浬t:Ŧ7j٢׻VTݧXbq꫃&kw~wucp|*L75q ,16u\z' 'MN\ `\z͝e<' |¿(ǪaDj1Ϙ+UX k)ā\zɺZ1? u&dPޏrdYA6.M"A$DIt)sĒ%5D=!CZ1l)sfy\zzyR{J"7QZ:D gu@TIC>*젮UnVSPt5@YaAi$ue jP,cԛkiq`PMNPRT8aU:P KxXmӎc/2f~↍@&+E^'e6Ϙjg=R>)={m\c*V+$"YF:D gu13?@zrd]`_+MW[a&:H^; ` ᐩ 3Ǫ gNܳh%ϭEgu1׿5f~↍eL2@h(&90LKLͫ&RmVTQ7]ksd1cjER{[%֤uI$$&8N%uI$$7ױUu`$'uGH-$I&$l)fPѵLFiWnP,\!7NܽY32)͊&pIuوB1ֱ/Ufח}ѾY{]iԹiӬ[xSc~$c׎uѾF^#:YS0-7{ɚž9ZEpbηYv5Re?t-V7[f:7ڼu6Ǣ3yA7d"O`= \zɚǪt)Do@[:}N^&8gs1]KNe<[xLy..ۈFε?(K 7Š1̤&ce={l^=9cHx'uC%:wcViFP%֢+ӼOr2,_ΝLz>C%:wcViFP%֢+Ӽ[IUYB9@wZDgNĘU}d-C gu4J6tRcViFP%֢+ӼOr2,_ΝԘU}d-C gu4J6t/$Ǫ!jK;D?Wy}&=UfY PeYj!͝;U}d-C gu4J6tƉ14Z#(QhlݍRcViFP%֢+A'F{!D=~7| 1cD@chw8]מ\i"pbM&wAf/>*G^|pŽOQmñHt!ycYm{㯁,%sE{aGe^%)Cw҄Qe/7|!DGv! !s7"-ԏ tI=nCuJS؆!PY؆CuJ;ľ~9 UQah֤xe%or_*{BU ;U}d-C gu4J6t14Z#(Qhl݆14Z#(QhlݡIUYB9@wZDgN7IUYB9@wZDo&OMWIqIٍ#WӭFtcnz(FiW' N(.aLfE{en[+TW[k)7lY=R՞P{l}x[/nw_ ϊNnFr~}x[/nw_o)ArdYA6&@xl/&O^* 6c7@rO붽o͢J7Px[pJ=TB`D{ n-+U<=S1ۧJ7Pxz"g{@6u1k8O2!?d4W PYNҚɓeۧ 0M_&ّDhc@a VU˯ -[Yo,pe\Do4D#97q-qꢒt>ue^Ze\oB|n_cp` WqQI{uDo#@s ۧ0=Ur7Ǫ]yiXʌ,D䝞W5"jhW1՟lSÀ;\z:Ϣ7 KxXmӎccL$hٜ̪nɳvsg' N(.a(`x\_m-Y{$ˏ׺<*XbhQ}r¿h#9T)0onZu'`#{iXS<##h9T)0qja_:Т7GH-N^&8:S&ҢNʦ6g:7wYRdF OP"8rWyjkDcpX\z>)(cr=TUPL7*9?J̫&{4%f0&|S`EIR^eӫDocTtݖ.6\Ǒܺ[rثU,n Ǫ'f7D0΀>:͇|By~OzKTn@XQ-7y x- ۈU_n~P vĭz B7DZEZ $cq4I?L7O H `>)"IdψHB)HdψH}TSX!cpZ$g$>7kn JrY3b7ǪIɟZi0>?B&zL0~k&}j W g֠~>,`g֠ĄՓ> OR`?`D O&z׻pHgX]U@)V/y@VcqxN9g\~'.s*٣l weU5(^/VLh67??WD1M^Cb_nQq 3ſwVlְ{'EՍ7Ro@ti^Z巆.<גܼ\w_ ns&7E&Yt"e1=SDΩh=S¿Ha敹7+UXQ-{` 1vELn CjE%豖]:F5GH-bnEn FuǪc{scp[j1ʑE4 0(7OUX!$5:jd<68mlG 8#z#}L'~GB³S&9uܥX 5a4/#%]X9FDŽbdz=NOL-r'/<=2dm9Br%燯MN\1RȆ*sɄ|/=+9@6<='9@6 +cp $)#э0I@V ɟ$cp ,Idψ ) 2Y3;c?f> +0cɟXQIk&}aFBIúɞ#g½L1RY3q X)?cq`Y=UbOL@;IjEY3`dϭA !VL`g֠łLL`g֡IL>LHId[a1 _bbB}XQ$Ocp O\`p{ұ/Ăwc|zzĿ ݌9hR<濈J|~ $\OO77|nChj׮#<5r&!R&CꜪ"oqb" .ɞB<[OEIJE|o4 FIQ K{rIORKRJnT1(VLbnG1`\GR9Dsh'&$©p@(9`+UG5s Ty?FfU( |[cpPAEX 5 XnRr.NPrbJ]X hW1! $lmY3Ag0Tj1!I={wY3A;n`+;7qK@Tָ LDe85qꜳ Qŧe<7-R~s]+]| liut ;沌IdlB`H\~4'b2 HPTJ+ךD!foqQj7fgI XڰP9}! sPÈƸNYg  GV(S ZnTaKnaI)@’X%7*:$4|Xl#[d6 6򔟓ppll6ҫ 3&czz]Iz% kQÑ d$,qY3܈PT>,oXIm9-~lĽ{XS%|~rs^xdϒJxmbc09c01p/T豕pSq#016Bx6gDQYpX̀ISZ$LpnKUZn*L:)/lql%7ƺCcqX:|nԗM{DOh#)JR9a0WUW6|Lr_$rZ?S7xlh"f(n jڲg5X2@#\%/[Y3d*>&K&}pX̀eUsg/uɍ K "#&}pXU$i珡lOi̊bN+&}pX̀eUsl #.Zk?CGyJ|FݚoWՓ=iYEg*B)- ~7zɟ\8s U\`gUW621 r!^rD|#}dϮ 9ʤ[-?<7- >7y@yC dϮ 9 l2妿I? 1|$LnY)E~Q7Ǫ9dZkÖirwmdϮ 9 l>%.c2U͞ F\;&4.O7HsϬc8Tke>峙>a2(o9a8c2ULr_$rZ?S77'gG5DcpHA=Q=&z_+.TRZn>,p@2 Rɟ\8s U\܄/uɍ K "#&}pXU$i珡l6hEmʯؗ !di?U|uaG!DdQ=UvVUkGre['EhmGv]ٽŇqܲ[@yGu7aEq]q1@m PXS!={LÔ$)R~~?*9+J+MȮ VLIF'c  t>6 i9-J]? W5g`fm$*T<l9 _9gG"]X. Փ>O֩6q4& VLÑ5ɟ\8r/VL<aqՓ<##l'Zu*Ñ4.c3> X(Sױ, 3 Tjcp,I={jg45o`)1g4v7Q$ß1;8)fw'n57q 3ſwVlB(׭{Ⱓ{UaFB[e2cpDT.VPYh W(VTq57@FU׻ϫ 6 ^k aF?[nv9"q&VP[эa\z7[S Lot7j"J|lHx>6cq\'n DQO\E_h/'kU#?a;+7ǪϱU[S"uqꢒtX5ΝYTF5reZ=nw-ŧnZvSti@[;{*Œo%Y )/wEՍ7:D nLcpb.Y7=SܯXQVb'Y1=TR^eӫDocTtݖ.ĥ4.=S{Ln0{-!q{)#W c7Ln $gܙ>PMsaaM({V{IYl"7ף@6u1gǺLn $gdz'e=7 N(.a(`(:|-](ܸYk'&fE{Ec NX Ǫ[6OGլy5ӇE!NO s'2R8w\zml5!|<_(ֳ }yaNd@R-59tBߒa7 Kxor]&FKrW/)s ۧE'9?OtBߑ".<גܼorSN( Kxor]&FKrW/Q 7I?OtBߑ";.axtΩĴS;&IoB*j._Ln.2},k.#ׅ](Kr hPl/RQ7 c$x?Qe;2I1$ϙD'fCn]fUY;PV1̒D-DB@,ɿXSlj^C|[^Co\MnXi\zڲo&XS&]ՋC/c&=SPNJ#`QF'̜*#S*_U+P(/TL0QY$&iXf7)?"ai)Uʑm)$&Ϙ&@VÈXID[ğJ[ LnܟJ79?b@U74J|8cp@OJZc)$XZŪ/ oo`PW׺vsCI?C?[JĨb,0Z䩞d2TF rW 9_^TBh#sX`!9*g`Dp91 hJƣI'`I d~lmZx)>b{YR#})ɔ hbn.o \y˯%x|TRc;\zzwq1mŁO⯴IX^Rh咝qgIJcrН'I{lOt*Do92-P%]=ӬzB{aVfIm=D![F)Rܙ>#&Tr=xX#XdG urЌPlBoJ&!WSDzd[r2.OCFyD$P>etOQ:r)>vc$Z]{XOkXSLxVl}Rs´DL2FcpD\zœ)>*&# G5Bm'2ՍZ}nk D|n9qUkfz/GEpSuGCSр8\ W4հvJYOaz*>7a*KWl٭e>5gJ^4Vg2{AdZ>O܄B~B bv$U90~9onğ#*>7cAti-#MÔjLC%DiN\+T%^!4c{RؗOɚVsXT~@kqOI d!>7c2FJ`&GnR#%R97a sOb4RDdCW&!4Ƨ.Rrׯ5GzfoqP v~ׯt'f9!f'O9nE$NeÒ0%LNLC%DaNJR`ҽzNjC%QYT^#wE=")uqН y?`9xF'&!0'%pTBmI0<*B;3* n(OD# I[{Jp@][6^#EtV $%V 'ɃTmx^BO\5׺i-#MÚժ#Oj@^A>s$b>hf'x0X,G-! ;- s!{:8G+U[m8hE&B@E`ֽّZ0$djX,qvdxͫm9%pCĮ}Um0$[n)}k,pGj`Lx#.&  oJūyɭCFhu~(x- >7jKu˹)QM&]˘=}zSY:OE?G{9MCW&0yTTXF*&ITI6'X(|n$W^EC4I/nli,l %V#9Gs[<TT< *'`*IuTS뎰~$&YjR%}aN?I؎'0Z:\Gq4%D1BOI ZgyrN+ZwcDu|nU͟9lx9ϔGډ?rbe^Bx뻘]:ˑ&P%u 'Enn*;,;rZήZ;"c O⯴IVSk#kU#?NnE9?ew'W$AfǪֲIڱS2r0NJUi{"q]tBv(;3ͫRcp)>O܉.r'$N1\IR^.u"7nLKGv70 eHV7qÙl +U}d9ڪωeΓnELcqH0VM8U#?RE'f7+$Vdv0$IUlpgj>&<1Ę4/5E_ht\z4qX9¥DfppQ˜*UHܕQ Z7Y?K޻eNFmɔ hBCʑUn$j-׻+Yc2;U\W$ɶ8s3U͞˝'"&XIU+ ƋMU#?RE'f7~P xYc2;U\W$ɶ8s3U͞˘LD?^SIY \z4qX9¥DfppQ˜*UHܕQ Z7T%]Yr#|wncpzo1,X@\zzyk,pGj +U}d9ڪ&<:OױD̘ }JB?=T!KQUdVdv%WMÙnBcsId7b/ W${\z4qX9¥DfppQ˜*UHܕQ Z7Qd)/z]:ˑ&P%u (cp6IBU+,n U#?m'Jʢ5cqT(]t.Doܙ@,n bX%'`*!/TX'`7J&XOcr?%`!yH )\zcl)=c^Q%n*~TX&7'zRJb΢yQO"vKcq<Ii-#3ⱶdFR2ˑ4/Ts3J)JE>"eV zy^!X,cppT2n Q,$?^1"IX7cpkU#?m'Jʢvˮeȍۓ(ݺؠGLn , A W$1Ǫ6bܥQ ؊|<]t.Doܙ@,nQ8ܟ!/ 16L9#8IYyWFX5OrD'XxIR^.u"7nLKGv7B1(*ݖċ`D?["k OwY"I%^`B_ؗUi2}bjL Gw#؟'TI=i$i-rQ#*G''5#NjrVJT@S8TS؞cq<0=UclՍ"c7@/QW$dlJ=Tj ȑ5RUD=UaNznUǪK޻eNFmɔ hBclՍ=ˑ f@Y?^θQI{l\-2-ۨXX ȄRH7uqꢒuӬ[reZ;P|2n( R14%`ՍnR37%]Yr#|wncr2XP!yAR*D67+O\zRvcqMO:)NFn)=";&9$)xX}XKoAwZg-S*T+b\2},orSX#`&7,-:u^Y|? ufrS2#y da;_5骊q=9b:m҅[(ܸP҄/ ή_x ,ɓi6̫Y&JnR|D{DzXDGOW3AEr F}CB-[&fDrtGq \*TGȆs0)TMPI= ̇Oh?#iGrt!jO#jrlYpQ4(*꜊yTH٤Bi''̟`1]!W,BJVW59s8T/,#f\yTBh8=|<c敂 0J|3kUօ":D nLvqu[xor]y-}uMn$ ^1bJUcqEqg )>#<%օ":D nLvqu[xorܣ6Ǭn)?W$o\zœ!Ob03%pSLnZF%,]1mזmˌoul:OS"IX=T)="ğ%օ":D nLvqu[xorV_L&IOXc!qꢓ:Т7GH-N^&8!|? ukDZ36KzSTrMDNmcqQN K;Ꮍ2#&OnP,\P)PurR}nM"n4[X-Qo%>:+ /*170'V! v^> ĔnaaKǪ-׺d64TD+3"vG1 az;,p%S֛E S@}}N&y]'᱑7_?܄,8{8Z]\e]0dyBt970F7܄,8z8Z]\e] r2_͸_"Ig%ur 0Mq|1l=cq8I@A*DaʸR37a%}x[W/)s ۧ18cq8'w}J|`WSTG+ pQX661#3}TR{UNK%L1d)/wNt:}N^&99Ox^}x[/nw_ D ܨ0@"/_hWBņ k5NpQE#?r)>!g56F7+i?K{YF:D o 0Mq|5(1 Wnx^&7IllId*D` ^d(1\zR|I[nV%IR^g%Mq|? u THFr;*ZU;*j._rdYDxb'f61([%^cKJLK(ܯ٤D&7Hr~#}z:D gu1׿nymӫw""v&ّDv7KY3D5`fk|d"7z7Ǫ['6ta"N;-l]cp.$CeW$"P-1X\zo''fn?KӭFt&8)p'-%` D2NctqF!R^l"7ף@6ueM nS$CeW$6 Dby\zKkY Ota"N;Ꮋ'Zg-S-5OC*j._ N{'6̊&+k'' !kTH&^/lˎl"7ף@6u}M!-n0n!?[%Dn(L/@O v2݃cq'`FƓ |B]cw '`/D?["d[%,\6uLln$41W$ \zN KxXmӎመ H d!xTU+F7Ǫta"^&87OGW$ 1WӭFt.axtb&J $!x#B%e7Uq:DoGH-bN;"aqCU+KT#}z:D o 0Mq|1 7ԟ/ W$\Ǫta"^&8`O8}Jf7 :u^[/nw_ DAIަBF*D+T#}z:D o 0Mq|1 n IBhVOcq(U=S[%,\6uL4(OW$Ecq(B=S[%,\6uL4'1OW$ C=S[%,\6uL4OW$Dcq(k\zN KxXmӎመh͍@OEVln$:u^[/nw_o,"R^#EE7Ě٘gXb$:| DX}) NOA=}1Nd5LS&)LSS x牊s!JQ%!!K=g$:wAt.I])2 \4.WL.ZL鉐\˩\)xbHݙ%33h'SC/`b'"i蝜<=\G#O+#(bLS&)SɊxS9b$:;9b1O"b 1NO7:SuHth'E)R+% Y'q  wAt.I])2 \4.WL.ZL鉐\˩\)yAy&CiV,7^1D1ZsuǪI&XnpO.p\z|n%)1=T< Ɖ~HLj Reϒm!f$sP&\&AAM8H.& +nb+˯I?Q`/MC!Tf)fK(Av`Q x$(=TN I={}Q#hXlڃj}Q#q:7@zp'VS̯G'`-Ď3+_BVbd&rRp 1J1JU3+Y@Sczm'g K}1J8&LoQNOTR"E67?i'g KݾYcqH@"i\zE812cv@O|PFfW֌MERRczR~^ab)+&7$?[wv~q꫱cFF楤6,&(u ݜ@C_6U1*ZE%IkTXܔ +U$6cy?[ |BZŒctQI{P&=S!,hL7#?Ocq$g'n)w F"IrRx!/.SD4q:tj-njZre[n^xzBs/nw_ o'Wf#aO cW0I_ Ռ_~j=DOBNAlxY帴B9N=xX#.#]r܄ߐ^jmJ6,fCS2V3`LY'qd0G.zdHL)\ғ ɐ\SLt.YL.i\\™dZ|nl^))3Q!@O={ڰŗ9k[]B!7p/?{._'YczHǪrgUܶrMAkdh-ZN%Fa'';浄,xݾQwO ~Oh*@۳o׻Ѣsj XЫ'9&7t(LgЛw] H'? "V%D&7쟭w޴&[(96Wc1=ӣ2FiNLKG.eܷiN۲]lHDLng'f}0>"[j@g9?b{FeHҜ@[X1!YC|Dq)un@3䨉&7|,n~ FOLE8(ɍɢXw.rֽyr)u:1`r~^Lcw3ױF~^qb).r~^8s8PZDz0W ɀFO(I{ R#lW v7&O'&޽¡ӄHu YR  ˌn)/v7zLozݸθROKٍρTwsȑu YR Y#@QI{Lou&W4 U#?3yMlYQ{x݄v3:3*Dnfi^ZzBǑܺ[ኳI^0'nꊳI^0'na¡a#\#AM6ҢO#](Z&O \(GrB[Z+:}&ٔքQ7jXxLx>IHIu%=$iM'E\COoct@Q'`!xx,<l'Bw":1ttݦ]ykܸ;^Krur|.B忯uGou&`-6?*/weND6T֓''>ZLndž޴$lӐ}x p< 9 KkwՖ^!dadg!Ag_]ne RUd)uF7jSi+`g޴$lIӬWGH-mזmˏ#uG P)-ݜ޾!POcw<6'#eE.8rLL\MS\wq=H,b_.X`OuwroZm6TʌothQn*DocdHHFr;*QOOWLK(&8XS(KrB;Rm9J$I'G^)<6)uWc  2s:D^:՟'uDz'!Mk׼Y7PإױOi.b|FR:D o 0Mq|1 x,i'otiȟįcp3=Tx$VZ6Ce[1iRK`C'֍{V|nB[yZ!_^$R_Yc'L_' !m׃jE.z-q:tGrn^x;.axtk)uWBU7:uH%גܼ w01+\_T9uu"?q =K"1f"?|nˬn*1֤ϰv-SQܨmӊJ; _aB[ܺP7q&ّD˘bpNINNIbSld#ZƂ4vT#Ս-$xS^; ' /X OMKQ%,D$V+7B!>7x)b!&,nI=o`+*aP)ҍmaJRLDIQE;nB(K+A7= /ɂ4A7 4hLnW"^]-@Ǒܺ[:}N^&84ᱺObM") ~ ?I m‚nBIz/ɑ#.s7AU>]-@Ǒܺ[:}4OpZ`>7w=ct&)w 8Wy)i0XJjZ? ]ILln 9f׻'1123Dr-R%"m"bɓb1NAq=,n(XG7#qLG urPlBo Q7&b a  Hh)lO! {qO+wfbAc30gAcbz'g'iFP%+>2LS)͓))sCI`&' ϮP`lhsYL&F?IM I?=J`Mm3ĒLL.gh F}e0Du/?`s'l_u ]0wb``T9˯ZF)'|@ OHoo3?1lrQFrFxk7<#gQNJ9T2UTɃ?%Y!tqgIF01'IٍRqꦃ.{ :#V|9#-4&r䩞3ɈdN6PTrmg `X,=׻~Lnd5U͞9`u2'HȶY]\Ns&D߬Yis$  ؛"^jR9S2 XsPUYL&H8rjZ !E=yIE޵Gwr2jʝxmڹBaA2DSje HڄA2Cbc ^[\25nbp60=5e0(L:.btBuJa5r~]c A1&P%u F1}NGEn(;);⛹n*W+Wop6J߈`B#t׻L12NR~pB*DH!cy I?.h3859^!H!1-љDbzt9Pxx$ Hr8H#OrK( . . 0f 0cp`\5 \3p` \7!D700+S3<=9=*q 20X3# H I ) ˥ ˉrapqL\.\..Y - ˦ ˖ˢrps\ f| kфDfj3 fr9Pxx$ 9BA`>=R܂8d. 0f. \3p` x0l< \9B ğop;} "A`$"HS `OJBA`$A`$dP\.] \.]$\.\....'˕1pr\d\.\....[ .˗"s.{ (DsPNJ)LO"ɍW'r4zfIJf}L*L,l;~pِ$\X?[IH,/JE JX$-ѪB4$fH~NT c9GA{GY@Wp`p`̅5 \8Ep. B 0g  0hBiz"wXD©ⲦqH{rzT ¤rr"r!ptpq<\.\..)˕"rptprظ\t\.\..a $!/F%ʋa3U5gAaS@S* z/!H,*C=R܂8d. 0f. \3p` x0l< \9B ğop;} "A`&D3Xa2SH,̈́Lܠ+\@\H\H\.](\.\O + ˊbrqprȸ\h\.]0\.\..] /˘E,q[!@yUsg+>7yt+71y?sPNJGQP}$̊V5YHJcpRBIf&Q6 nE 9){ "tf}Z)U!bdR)n2~k~矼JƟXc%B"qYtn/$}$2Iť\4Xf!aKB_^]8sPU["` _.!ċcp'i QL$2)[ HJ;7=2)EYEi?s8NJ^Nϫ s(TR>dR)n| _'^|bc_c/ +ˣv@MÙ+h\5X ̊H @Ǯ9*$V`L*W-n4Z`濉BTvg?kC`yv~i~L Ru!(Ib6CcpA|nɯc5BTaN'5 桰or[za1H%F Qz7Bi?[wqAzMţa6Z|m{?vb?W'!xX^`3SɆ 桰oqmzMNaa>j M~OɁMz\O O'+onR~r[wjE& `q/IO."1+S"sV#<Ib>l$FTOݧX*csU'^z^C[C[n\>7yW̧\Նl |bs8]2&NV ;ctK1R7\$ȜD?','n_K޻Nc%M LKGv7'$*7NT~-I (KB?','nDT*F1%{ A2PX1ĕ3 ~e+,kʫg9N-1|nCM[eVN8\MÙg͞9'.r1]Z9*XϜ띉8ctR{ܭY;<&-ne &+lV5blRYXc3U͞91\P^L/"BcH5n);1`θUe!̀yUsg41\`XLNBF !!9`'37F,I>:JbyG!1r*rTnNBC؄yaOgIn'nqIٍ ).*L0RVb1+f$!UbJ ?cpx)D#b@C674ܒ0L":r!&Mcp kUܚkThbBHKSF7'n`. !csVO7fr"Fb)=" ,#a"B&ױ +UܚWyzH9*19-nɕc\f$\>7`*ᳩ?[qce'g DpjsvNHi3-IrO@_.D$H7%);11Lng⿱IK`Ak kCVd!1K7d?s8NJ#sS݃n'! !$ n?#?Ocr@E'nC/"FDcrP#=TRvctpG\z859cptN]Un)?s8NJ#sS݃(xOgInS7CǪcpnY$a`7jҵhZ=nV$K,$[nHX`Ƴ!O2vs[3"A!{>.?IuI|6 +`À\['uDo#@w_{QVTInDӏ_dGЎqlG,]0GM+Z巀^'ǂV>p<-BjmMZO/{H7y+GNjf|d0Ht'Doqܲ[H۫-,]1m?kᬧs(i =>qcWfM5ܤa 8xWT_h ZnqgD}bﱹ "^eqY7LDٍ}J6 Z1+U#?TZɍqG"y{6?J֞kVk' /f92T(bVqXb'^1`8c{*&x1y}x$Dٍ)U*؁hZxqg+_X1(\z^Mwtĭi쐆%fr`yS%Lopa_Kxp#aa"VTInDӏVS!!z &)irdXks{`"<& Ply'Mp7ˏ^j@޼FG'BO^!>89kD0)S?'|aï-#OÓOD~N"nx&MŨ|~rD͇ݜxJiibFiɔ nr{B;]qh:h䝢r`M'W$Ѹ)Ǫ٭`%ސ;\z]{ԟ֏66aaFiVlGr;#676<v9okʜ 1|I>ͫGGmXQDIcnOdžݣO/z\$|Ɇ";3G/5\|%x?־<'! ۲>'Zi?G6,3Z9>͘$iU*ȅЬOctFR3zz7O/z\$|Ɇbh櫂op!F#9"fnM:n0Dк? 7ic&l>7Sfs IhZ"OKtZ&-R fɓeۧ 0 w0\<-`^M"Ҟ 9L%F\աO5+dyOCcv1rR L?= UǪP2'Z7n !hW|uQICAi(bu O-LɍUǪ[ZPxr3i|NۈǪaH9=TUE;/(Z\ٍۄUǪs}|nN/ϏП׺Z`Mi]oECuO7* \u~<ȣ"\-qךI\ {8vkW||[> \֭Q`Ɍ'a~Ț0159r/TCH`4>i'!pl'4W׈b>jrDX_*G" nW(Z\ֽqðZ$q8PW@Ȣr9 ujƇ%vrZ?`S5L=Á„7xs''aFO'Dwb=FrF)J"8rrxFȚp3^59s ^=V!4c{QJ \)2)t7= R^)nzIB1<{W(Z\B< |uMsS}+sI|NځL+v:t9=O@.w*:,\OtqAݮVvoqIwqP:\!O⯴IZxZcp0&P\zVGr[dVO݌&Ar U6p&֭6јajȉ!t_hHy=T!X!U3^q꫰ӡ%MrxzBrIgfqMܷሚ26cp4V ^4+1A=RLimυZV+He$--Aq FFn| *D ͆n5ǪI-XA=UbčVQ\-XY=SJ',&$m E,(Pa'lՍ)`!Y1%{ ?jȉ-ψr}J"F7=T!YEQ5nT#q:D o .Mx _!'U9z@e \@h?=ZO-Dd`~7 Õ`"uܼay Ry|1Iu+z"A!Ӈ ;KzsSYj׺kgc#(<#W5uO73W-Nkgs +'|5}Õ`"uZs0r<w0rlBw[;9\!;O;)<T Q8"npsIoBnP,\!7S ./#vB2}-6Qš?0lε 6̊&JI)V8}'!}nnIG;ȎC6ʑ[ꉃd4OxD!uñO_hՍqg#)CJ=T¿r0WhNl7reZ=ny˯%y㫗`xXmӎ#iY6q'*3i?^11qWhNl7reZ=nct'VGQ'!J;S%' N(.a(`(:~A3֘M"ڸx+3%>7v!VLğ['y8 ]+Ek!5qI޴Ig%ur 0Mq|/\xm$D1mȃ /&UnGF7_zwWJqꢒt>/4)OLG#"ecÖw.@7WOWE'H WX3V7t 97\z5_M+TFe0Woy\zOI4O7Bq꜒rTD{g*8O!LucvCDM3.0ʠvQW-cp +TפgR՞֐h׺|]xy&70J70F=TW7=T_75ǪsX"Q`cs J;u t7 ]qe|h>*/cs@On_=cpJO$o@?+ՒfI=awasbm)>!+XǪrI Kܩ4ᘕ\z|@P{\ WxrZx(IGH-N۲]ykܸ;^Krur|5 c\z^njUOct/\dՍ FO0}JV7!UǪ#B¥DrR3&9>5aTBفx)/wN)DnJ:D nwݖ.6\_0A2#]cp0 Tv-1z?!VO]\e#,I@&"IXJ U\z:!~k*TG E#?rc9aH65U|7_0"7>kT(IGH-N۲]yk=v|.LKx;.axt]:|(%)s ۧ5#wNc!։n -ZU=?mӊJ; _rM R ?YlȢnZ*"SkT_?n;[vTθROJ1b KF޵Ci|3ύq{E(b_Y)uǪ[6Xߊm|DRcr9q:2at:}N^&8bOJثUcp U#?_0nFuǪKbc d'ZQbK`ww0z:D lorsFG0z:D onw_ ai4di'W$i/6j4\zBȹ3^aq:28tɄFK KxXmӎxi#s%u1֡]EݲDZ'ihJF)Rdۊ=W,ܲ#qh:iɓhd3J'3BM"5TJcs$ɈFF7 ~$2rMXńdOtlRuIya&vRu6±NI Zr(I9Xhm):& X&؂m&)&:M &I"mDoRmI6i6`a&آl 6MU&زl6BMTl$6Rm 6Mll6M&1II6Dk maM$BMnkm`& m`& m`&i6& 2N΢DWDX:):ěX; '$XbM XWI mi7k4):~YH,>&RmdTXk#MRma&m`(k=IXk 6IX q&6k )6#I2M m`TkěX$ɩ6k4X$&6?I ? & BLLLSfn^IP^Ȅ*=18 %G!p^)rssꉳ^HSEhzT> ܈aRԵ뜓%R!N#ԸCW%7#9T*BPʗ9_U<գ}bZ~zT> ܃Q螽sfuQq>o3QCsdr`Q貽sGd`Qj`SUmj"Et!|9s0^Y^zd2s0^Y5s0^Ϫ`VVaqliY֙O=8/Tz,\=N'$QjrN}TDVVar R{a"%Ln<, EUntU#?Q7_?P"OLPG×"pnz"pn2r'xCW"s݉*QI{aIӡF#qK():,\SG.n*;,;rZήZ;)nz&RE=CZ5z:GidVM5s"LSӇǪ[|n9cppeȉFeF79R}J8`̤ U#?N7qꢒrCrFt&P%)RtX[]&TwkݛXw.帴\w_ o^b=5ԟ׻0Zfj^ 1?/<r"QECi?%`z X n$:H&JcpW)/z7):t7(n7Ire['EhmGv]ٽŇqܲ[@yGuaIӡF#qK():,\SG.n*;,;rZήZ;a7gB՞х!r?Gx7#5{4*TG׮s8dN8 R8j` LT2cpg'`x.< =:#f7Za7c0"^لal݋5j"v݊NF޽ݗjT! LO5{`/Tz1^Ȇr2r,xCW"܄J=RJ7w1Sa(x<0a7:dlw.Vk=}wL|agC0ˑcx ?)1W${qgj"&!3>=1B\%뜉#Ȝ= \ϪcpkUv:b72-Nⓢ4zB6⣻\øYw-Š<壺OdB|9 9G'QІEQ(eg Z,ҧ 7dmDP^&چ7OsZ7b +UZ6(/tmC)2o\f͍PQ'ȳ}J3cqc\zD|wX Uv:b72-Nⓢ4zB6⣻\øYw-Š<壺Re<r"Q9?l"IVMcs9\zD|wX1p"F npUv:b72-Nⓢ4zB6⣻\øYw-Š<壺X`kne1SܸJxagLgndr~~+on'`}7x[B˚ժ# 9f#ʷCs'0Jv-CRbRNIeSS  cf}x'I={vTP3 a7t72cu_h\/Ɇѻ%kK~~,|oC/l˕a7)Mզj"J׻L 9Xq^h<+_ }{, n#ϮuK^+oݿv·5Z׻z ^Om[@U$&7 @q㕡wd7-7vUZ7$"hn1Vm:}Cʨ Oh6;Cs'2L0={\s)r̘f`lޓF Zgt&nS>iOCcp'`7yiBɌ'wVndM ^ïf,L+O+^'9)W(b2c@F7f2 ,oqП׺Ѿ 81!  Ҿ"rق!֍DE8H'#r5 9*U $:Z^#1xYT2QL$B7OfUHA J$L7O$S)!1 g~UHOݦ{"@U"k~3aʩ|Sd&7 ?vn0\f?cpq'W$S ܱjWF7_0nkUv:b72-Xܿ $0cqn{ZέQ8 5s"LS.=RJ7)RC˜*TzT^*=*NpQRaR)fڅtFNR$#'"_9Kg{Sqꢖ:ױO O)y7#`^l2TF'^A*# ` .}_ ue'`v)Z2S*G'=QDV7V#I>7ozd,Dn'`ݾk"H|n.dTXYO񻰟ѐ&"OQ=4ĉn&|n'H'`'DV7 wQ=4ĉn?['1`;'` Wmyɯg&i/G fڃ \xsH\xrQ @\y'@G<{`orKU72~JEGYJ%p#Y?c{EGY$#ٗr9+@1Z fKU\Pvr .c{EGYJ%u$&7 @쟱yn!f()HLnR~B-:ͽQ-TS!1ZO=!f()!1[n٤ѻcjBmӊCh~Bg2}-2(kbMRxz8)u#j0R)لUL$ IrRz؉q:ױVIR{JP7S":D o 0YJ}(MFu'8ucp'oqI0L67 _hD 8\zR|@S?Kӥ(Q"^&8NDnDt.a;$ Lba $lX7x'!Y?['qǪ[\1T\zP_|'Z7 qӧ"7~tGrn^x;.axtb%Xh Bo+n#_>cpA=PU(/EkZ:D o 0Mq|? uBd2+J;nzܙ>#.#](Z岁ˑW#t- ή_Id<-Da"&W+?QǪxX}zЧ׺#'"X:T<ǃxx pTD< kT+ \z=r~"ǁyB^*#'"xGPN59r,ʃhPal O1b2ɀnO2aNO47Ǫ[1Ot߭"^&8:xd)C" N(.ar!d N ?IdQ7NI^՟!F>$9O$c@yYmO2Rv@#)'`&J2J^n bRv@)#|RD% ݾh@' 7 %)|RD% 1€' 7  ?[/b,K'`&JWQ&(!E+ln6^!29?<73R~M+,,& W76r!3,"ȏ g n2 ܳg {X,&L+4N}TBf_cqOώ("34U}S?s&;= -/v01ZcCLV"W.?cs$I?ݤ[DF>\~D9?[&jީӬ#|"kwi+N%̂?t>}S*/5&Q=q\z*-wNqy\z|niK{7o$9XLlj6|![n^q&7v'V6-7y@c{CC.$pfK|{`J}Y'`㸜BT1X|nNq!*7ğ׻&Q=TR}v4Lt[&P%u F慧E;.'M+;7;n帨\w_ a"G2(O(}J7VJ=T"n!BMDB01XC=T¿)/zhѠ SM .LKGv7Q#$1 bIZ7V5=T);1TIR^1ӣAl\@,oqNq}J-v$s',n5)@*8%arR3⬟%]:4*ieɔ hB嘑̜1;pУ}JֱLҸR3 %]:4*ieɔ hBbG2fQ V_h0Q\zRvcsqğ%]:4*ieɔ hB#1VOZU+ WFY'I{cDNJhYreZ;P\Ȅ?B*DXB=T);1",%]:4*ieɔ hB J![J͝D*91-.IXz怪O?[Inv4Lt[&P%u '9E^Aeq% +7"$H%d*D` \cp +U#?OT1U'I{cDNJhYreZ;Pqn$qLnIU*$@j!qgI 7X!IR^1ӣAl\@,nf#aO # EH}li7 T݇i ={}{(/q֍>OɁ2N~7$7)Τo`uÒ8"nxG'&!8'%uju9 E>h#9񿱸BIy>`@8 TM\I+F7ȑ"#}J@TcpWF~87 C ?K޻&:th-TB˓(ݺ QKI.9J7O.~<$l$ſKد~G#ف7!O!ԟ¿ݪE6u'59\׈L? xAǪ j0Oɡ)u`B(?j攕`eJܱU7'[-eNq!*Ŷ)Q|nNq!*) I>7x'8b'`̢{~77~a"GY?U*XR-qgu 0E]7\zEaQI{cDNJhYreZ;P?qJcs ;'n'0G׭W{5r[yN_!+'1?ctb'/1$yX+)'`_$?R'!O<+g@ք'otȉr'/m'np >7z'!q /vRo6[wqt+)K`,:0G̘?P<">7y '9Q8'DDnZاe|NrnqBOܨL")1"Q Oba $l m`NjARs`E k}̘G#_h@(fAqgI7VIR^1ӣAl\@,nK^<~^$ 8vH;,=HE.RJ}x>$l6HX,qp,=HĎ1*1DIU+ n3R3~87 IR^1ӣAl\@,nj\~771d1qM)wG;OCa:-/vФxm!={x M{q@`.&( `F~BT  ׻HX,#ϳPRs`hILn`W|+OּVwXI-6^!浣XZ[hO[wmaioF!  <_ ȤcmZ4¹2iSP3dl"Lb r~^ 8[cp'9R7av֛|R/wquنaEqH݇ݘl! b >H7 1.њ84b;Q \9Pxx$PE;qiA e2 \3ap` r. 0q \6 |.  O78Z^> +5h{rzT  _ˤ ˤ˔҅pr\..W ,˖brpr\\.|Nu SO܈!9*7ynd[^m+ ZE-x"ME1UW12b '%/wsucf)9l1x;% ,Sc9?'9?BՍ nOzְ7Db⹽zpy?AkyN-kاI?g1DZ#XANO⯴IV " ̀qgI 75v4Lt[&P%u ab)F-"cW0I# @m'W$,bU#?O?{Rv4Lt[&P%u `+``mEՃ),5"G2_h@f?cq(=T)7xް2[wV6ߍ"ߴnoy\z]Nn#|zB;^KrW/)s ۧ0)'orai"&Lc|Nzv*DgnF"D%7$ ^JQW$7PR3?csA O}5ǪKӭ2#|[]y-\s/nw_ ¿اEY?nYx -$D%v)$ ^:0E_hHuR{ O&QxV^%X+U#?O7E?Mx )/wNȍ:D o#u/i'(LSĩ?˱W$#nR3R*aQ7YK1OO$ ZU*R3cs4Y?1ا-Z*D` H́' #E%]Nn#|zB11OAD @BULoaR3cq3cJhިUlo`7\zR{& =qꢒcXZreZ=nct <jF#dXQ-e={ڭ7Omaio{L+b?}{_ZV8{^8zy¿>br~$DKj,NaE%]Nn#|zB? D)I)=̃?MƸQI{m1Ӭ[-92-PA5Wb{NO%VO O*Ddv)uǪ'XʕS O 1*)'D(UO=T)>ab(D,S -Z*D` >Ǫ'O}ǪK޻ibFiɔ ha_uSس'>"XɊx@- QW$#OʸR3R*abc'n0ԗا9'a%X=<F0nID)S?"IV%OOǪ'*O}zA=TR^Lt7NLKG,nkJI1O.>7frOZ6?IF'oSQ'`ңvaHx$ѷBN{naqR!SXz% z8t̚&HT2},G[H`qlG,]0GM+Z֡&ٔߐKzUgAW)WS-7v$sMkw-Y{5qⴞ,)ҫGOl׻ۍģXeF>e g*dWH l9paY3JXȆUjsYs`W-nTzd  )8Ϭ)}iv!7݋~(ļEɚQj@%,XsS"!U[<Õ`B8,ݫGK{NϜ[vlxmda{ʸ>Wx -%k,o7yYo{q5I| *DxdxAM=T)> AOBt7LKG.eܷiN۲]lMd*D|HS -qgI QO vQINYFɔ hNb)ǪVix' ~\-1O?Jd*jrUN9Pl$}h8s0!U\`.a7O* Y3J(3S?s !U\hnX=DAx=d Xr6%a3!W8#[V/iNTgqNTgF~N}TR}bvȜp!;PvVgreZ=ncthF)LSv \NLC%Da\'%ujq?_^jT E>hsW`W8 sh9r౪׻1U\%EA)s؄)Ox莛E.zG2)D/cR|OI$eI?0` r^#XR/8y㒾xrf,ǰO+Ǫf,ǰO+UǪf,ǰOPs\z(pb{UǪZQ/n逎?`h͢=-a<[#vKUV8Mt@ʮCvrqerO^H %rN`%#Pj8rUY;P%L~!u N jī#k# ՉV8&}djī9fX\<63*\J=^r <9Bo^$x9? EA])[v:Ef-׻|E.f-׻}mdšzv/ 96JjY"ŘFJdS ]Dp#3h 3 V l/pB;HܙuDoqAv|Ar95΀]N9%:v8G : r K1tptr#b]2tc\~ ϑjL7zA~4#) 9SG-3PlӰ@.NnxWZg: ٧aN]'DppletSJ v~} E7g *UX2ω!9ARaÐd*guc  U`ːtXt*U:Ճ,~!r-N4.:cpt?Z^l`Oݧ8 ҫ ,wk<)B^Tb-~a+6TKʌSŲwqQSeH<[l1…/p<ZR/x U!+ '#8? 2f&O;B1b=xX#&Troq`G[@B3BM) D=$x&[(Iuc$SlkXeTzOQO]<!yIbʎK{}k(ro}dVS0W-{בٰZG#<9<9ɒBxTFcS(6J|HĥBOo?-`O֌Oּ7$$PPsRw&jrTs0RO'gĥBO$o?-ğyPsRw&jrTs0RO'r#- >7|!O:\2b ?Z3?Z׈xްԓ]@WaQ|=$)VM.CPTr;uFc v2GC+5rQ>0MddlOc 2ѷw뵔-x}be$C=-=b8sxz&D &*> >rr׻V!l6\+* -{ ʃe^_v3V#{8re['EhmGv]ٽŇqܲ[@yGu"iEx1d*DxJx4U#?NՔd<?c{B7oj^+VMY59r`KdO,\F '+}Õ^zlas0rמC[<Õ^z•l:n*9rk^!IfZ׈v+gs +2s0rמCZcU^!ERyX59+m`1DLH^(# ÁB}y:O7|/\˫8rUX"##}'Vpzp6]X/ÐD"8Xplep6]2V p>R6uDn\[di?s]ɩrbW?܉0LzPrBo"a? )$DNV2[w/js[Dd $N5[nhQiլڿOֽm~:4-ĕSš >!L5H K mӤCt -~7zhHvKn l.ZnDb%ΐ=r:@.ZnDb%ΐ=r r#\څTM"\! 6Cw1+#D'v^G&?w7g0x)=ӏV_Mʫ*-{Ubʄ^ BJ\ b# K?vG k&ŕ⸌ ɶ8s1]r8#.cpNc3 kqsd9W1?g LxMB#D YQ:#rDބ6*hݷmӊJ; _L&v2(ܬ<TGJ`T/i+8r<# &@kb="/RV"mSţVMؠ܅x%$#^k,pt̀SY<#VMdh'A{ >Oǂhe%e'uDo#@ w0<,\6u!e,J\zɶ[qMZSB#frd]gqDxlI?[aN:߅x.*lY:2b \_?b\8}g*G]O:Wb.?[aR:'OAt_?^:<]d*lY3tQ}g,]b.I?[aj:x'W`:p<]Oێ1OHr~Ũ<] $*lYˬSТO2:tO]Sb.i?[buLSU'W`\!x*U>cp<\*lYן1OY?[buا~,SOIתta"bta"5Eܙ>X!{m쒦а[Hкu^Y|? uń3M[7vSCz?rdX"<B9N؎X`qtVb3BM)ooz Z(X{ 9䞺 xǐ簌G{8L0Y\zVY Q~r>pFXhK:?اPOu|lZN{ɒ- ~OQ)? x",In>7vB_/wqvX\2R/T#w'!OB wctЗ*u ]?2R/T#w'!OF[~WwO ~OPӒr>:A<l< <63Z}Oe[nR}v:2-PrZve;nLvqt峺b&1O?%j)F))U7Exdl&?) /v:2-PИPOܮO4׻O2~^&7}XG(3&OnP,\P) IM"•(("S0:Dc<91ч5 fcv'Xp<LjǪ[waNrBb F?yIZ4-?)@)Z)IR~ ?WX~<?ow!p\z/^^s8D͆ -wH&v[wqjaاZ`8׻̢:} #wGH-N^&8:} #wGH-N^&8gqqD=fbGK`Tc{|R7 $BC7]%x!D=P [5q\)'>_!VbOucpا\z|n&<T9~auxX`\1 Z 1IrB0k'I:ױlW4'%L/w*E%h $SkاT-W3fO'VO-?ov8{+T7c 9 nD֡&ّD)%<~#[`#!8 9ZԚN6\Pѷ ѷeD́SdI?[vD_O- U3.V`<?Z׻|aا~Lw\ OTdJ;$69\zzvT7֬!q꫶V[ђBk)-xHSanb޽$)j)>hΝuDoreZ=nxor]y-\s/nw_ ^=I lZc{B lor]زH_ O%fS |nH.Xd?%dpZTb WF0Sr߈"Bb*i?[*W.'wD% SPM'`&YEnh ID+u1O)?J3Q301O=S"G1p<?VxHاğ'mӮLKG,n96)IU+_. )\zR|@O붌TF&P%7O|x#~x -$DPo'W$}/7!1OAqgI\IR^h Ky-\sۧ[7Q!O9??[ o/V|MFE VlOQ%LK(&8XS8NJIe{$_ ]l&~KIO!$3)tN=R>a7w`O :'Wl0><Ǫ[[Ci+aD%ش<2~Ksv S|B]#wW.xGzvk!D%S~\7y3}xd&)3=R>'ZW.xs݌':ױOI>k׻٭v0<"jIx@x`*E_hMbZ+U#?OIOxS]:Т7GH-mӎx -$D"{J *Dbl@0!1O-ZR3y?KO=tBߑ"N;0TW/VZ%XCb Hx?%x%OㄈU&)\zR|Oy?Ib C?hUS9R3?b?KO=tBߑ"N;Ci"Xb@#1OdاhOxS]:Т7GH-mӎcEMY"VT8$4pH Y6Kzܙ>#)ŋh`qPG9Ł;Dyn-W-ε 6̤O ypS{ < ?^(<)JN=/Yexka[\& uN[R`jf& b)uQg&P%u 'Enn*;,;rZήZ;/bP\& loqO=mbH 1ObwsS9?c{gme"YC&dl0i?^$مl&`bi?[<0 $MC@ZLx򿬛c3O3bxW^#bW.ӄ:`6js[~7ORğwG2zЗ֔;FA.bT8#ExI uք' w!QxI>7y X?@C*/wtÚ{- ut9Ե]e^&B_Zp} "Qيx0@Y *D)呝qg :yhg'տucrY6f*b|M^#bI̞r ѧFa~1ƃ0-/"mI uք' {''DOϫuZ2wNH5t{9 K\uުYhI<63]Pf>"VOCbU20`ݘ޴&?ـzLx -$D).VqgIF$)/znbFYɔ nLvquPo \y˯%x| !sHOCbU dXllgDBwXnz7>cpv=GՄ_L06IoBo'_?̳ Sׅޒ.&.._w*ŋ2m+x)TWj]wgܙ>¿ p=R \El.8E9 \ p \υ \Ѕ#.OO78>4BA`ĀF'g"A`8  0,x/ \. ) ҅~x/ܬ. ~qp_d\Z br/ܾ. 05A1O'R#od(x#IBFBZן! x7ѫ%hݾ1 Jr Q+T QЭZ!#*-ODF"?PաG\pua>a ➳)??اpQ'&l2\>Ț Fb$sREŹKGJ8  1Oh~zП׻Y;-j#a)byݒe1pk,LOtb7dLO'Y%ш~+B^j=xVS1!e4J gL |y7R^31ma'%FB ݇C)/y]Ÿ8ȖE;::,\OtqAݮVvoqIwqP:]A*m'u@<^U+9] E)|Q=T)>ix!X0{m1ٍ1*,6ta"ńNܑ;i$ z(&8Xx[Nܣ&O%y!ˏ"M"ѻX,q׻x*У׻za:Ϣ7 Ky-\s/nw_ R>ZbR%qꜹ Q5 ¤nɞ|UZbP' 1;J|< 9?('|g}hQuDo#@'1O QIيx"5Ǫ[)?MS)dA;=B^ }x[o0%ǯ xc`7!DoY<%f(R;6T&dե5PMq@smL&OUX4fEp!\uc(LRb"qG-k}""ƒi砋o^|7|`b1Nj6LS˜)&)צ)&)ɊyIw(OCscna)MDX13yOMI0 BdIL$..VLd+Ard-&At.[L._L>"f )X^ N}pfR~7vB[kߌCi+ҹZ)x' ZȥljE.*}2OH]|UW12)83k HyX'R%Y x-qgI CRy?Kӣ>#st.axtb&d&)x'I#@s ۧZH SIU*q< H)|R^#@s ۧDM+5obU/<eU9E=T)> AbRF"|F)H%,\6u'tb'nb['uĕVb1a`7L?G[nԑ98"͝LK(&90=&ٔ^Ddv 6ױO)#>vјdl|nr'g K[ﭯ6}X!YOahyğāǀO):=TuDo#@6u'uDo#@6uaYlSܟM74.Mb $F< )=Ӭ#|"N;E6;b IYF:D onw_v_\PVlGMPnLK(ܸP҄/ ή_Ie &I=&\~ݒ^,j^K~^'@%Yy'z[C'P< M{Y3<&Z\wUˏ)eF)Ok&l -6{BrwAg ]E'uDoGH-mזmˏ#u/W/\"Tb?~ިx}wXF!tFp[ۋ-r{GrܩY3`Miwt7rYQxdlU3lM{oqb)=ӭ#}:D o w0<,\6u&$OCb%c|n՟'u ]xeVzW)1xx+XCa yD\z|n.uDoMt`xXmӎcdjgz% 8 ~ٻ9ɓeۧVI?D9&ّD<xW'ZSH]^E'V>Lj%!76=RLa0SʀNX"x6u1k ""i44nZ 46B- \(GrB[p+:~Bo=ɓuczM"W+YeGqoYho`S\b|n䇖 ׻Ag*:Z? uRWNh%M-7qw.>b*1O($ˏ,׻ZmVW$U:WxWYe1ТFVC%:wjcViFP%֢+ӻ#$Ǫ!jK;D?W>M7C4MGi\B6HZwD +CB8$pR:~l! u#ȑHOn.(q*7w-#vS܃#NP O+'v!v k*y2s0y8\xi?^J5dy8\xi?^ZN*jP D*GZxwr8\90DŽXapH#hIwD${/ws|?+iӻ9IUYB9@wZDgNZLz>C%:wbrLz>C%:wdU}d-C gu4J6(&8Xx[j ; _;K'ܼآu"*'BzX聨3q ngΆpPwOC =Zg-3I?^v ni x$t}iws9r?m!΀o3`jSvdg0|u";S)+TIhmأ\4a|uv$":*Oاm|UE'(+?ӘaVb%dlv~:x*r|u҄ȍ Kx;.axtbtBdF H%ur 0Ms]WDD<?X~a]:xREK$ ؊< i?X'K$ ^< ?Xb_'WDN|ъxd*V")ا?[]X3~Պx(b_׻+abs((OAD#  pFe"tDC)L3W$M`ɂ)P(ɞrB< dR{J jcGIYe+9\U= VĹ֨HXa9_ƒfɴ[ІʚlKɓeۧ 0 w0\~Pw.+VIdQ7xz) m'w5PVzLv<Fj DHGz׺Px >QاV]`-nxQ!?]Ÿb5 SbO2ROا&ak36˲~Z[I,>Zl< R~՞x\ا]W)=Ө 7GH-w.玮_xSbN;)/wN2 "ܺ[:}N7gK\x@́*)8c' Z)rM쟱OƲQKdI?b#O2RIBf`(,a['IIBeE+~:ˌn$O(ǪOt( KxXmӎcKfɴ[ІɛDT+b\2},tbN V1.$2(Rاd)sǀ^5!V+{q!+6VDBv{Q Xڱ[HOv3=TBW b-2!;SD%czoWbOt\zsXJ8S:D%kk)_!:)qꢔc%b_f/mUY l[1&$oԛV+}f0$DV`&y'J13J<I?a:ɾ ݐhS'2(b7yv @byE)Kq Ku*E؄va)F0OW @1/ TD%q$#XR12IŅb$1!VMRl1<^I, Ok F&6V/ E4XR18I*D%E24)L`EaH]Iڲ`TIbXR1+ˬ1-e b>y4I_h` .ld:*DSױOdӣ(728s&;GH-NOTcۧD;b,$DU1,deY=$R IIxIdct:VlL5Jؗ/'b!qM,n*\G7#rȏ-Š@֡&ٔߐKaZGtxCNjiI<{V'z^?Y6H䷏݂$(pO`-{8݂8#8Xm̞BBxsZ/uNl+*rV,g՗3rB"rB !sdid)9PJىÐXD:mVN#-7v8ux BOّX6R$L?Q'p7'`EْCqBO.֋sH -{ "X·0=Uz@`ly`\8csT,8w-|n"bXD A½(c!l){mZ9GU[ʄښ_O7 "X +=1SD @iÅjGkL~7f%D4U|u!:}hETc/uUrB'VsH -{R@I`Œ+rq[{X̂:9!rvPZ|n`SPX,q*Ә+׻? b@&ÙEa `%8'I jK ·%Bs|n)H])-$qF) O⯴IV77bqvYR$DN[(I3&7mVNˉ VsH -{R@I`Œ+rq[{M×:*-{GГw+c0P9^{!\bAd/ c:>:);In$F fLoqd9x#Ȏ0$.Z|n*VsH -{R@I`Œ+rq[{ 5lpɊB忯wS2Z|n)H ,8 ܕ @iϘ+)a쟈/ Hlv5t=hIkc0P9_q,J@ `8xA%)O⯴IV7NbPD=U`SP.xH 1O]DȁIOu1O?dM×:c{CD ~:Mben Bhx(eH&P%E;N&TwkݛXw.帴\w_ R^:ʑNLKG,oqb"X9*Da@@݊xJ=T)> 1OvNFS(u ݬD3bƲ}JU+RRb#Ǫ')X0'u"7Ҝ@[Xh@ 1O$l?d{"&)('W$,5b#H]C%]=ӬzBD/pc!FcqH 8u:b`x*Dcx[)0u\z&\~H 19' :?⓴OzI3$a 31(&.|_OKr~at@¼JmmDB.x6r~݃+F޽?"ElSAOfNbIV6)%:HYc6TRuRObRd)/zeH&P%7\Hx8UD U1OI U#?IS@.O[na+- >7w+"f) WU_f)s\zsS rx2vNFS(u $XՊx?Jh<%WF~F)= bD?K޻b{YR#})ɔ hӄE'&&z(O݃ꇕcp|&R!#*1O={z`H Vq\cpz.H)HIU*<@ax5Ǫ'SIR^:ʑNLKG,nK)UǪ[vjcpzhwTn 3 TnW 3%F cpz;Zz`k}XJbjHFr;)jҚvb~W3ɴ[ІZqWn$oL=LOQ%lJWnP,\!7ǂS/#tor'օ>lȢnb)L+-v1J+YC~*?T^yB)#(7J%Fi;5CrEFTE¿jX)'`ݩg'#pfK}ѻRxEsfN)2)[3 QK6)y'_Es&)<I/dzf'rNSZO&+WljcQhlaWQ/??#ܓK'j%?[wX ,81׹*D!b*@`c Boا FOݾ}7!V$}k6 ^9'DNLS?[wanwc=Z)ťռҜk,9[nZl7z=VGOg#cn:hMjآ{9PvI 1l/ˢ:1,nbWGH-ˏ#u/agا)/wNK1 Kxor]y-\_7!V${qitD7i(U*Xq< F0Sq%щf#s:D o \y˯%y㫗<>*1OU*ʢ$&)DQ=T)>agاnOtij]".<גܼn$|agا%щf#s:D o \y˯%y㫗<$|< *Da@V) qgI >7yR"n"ODǪ[MUbG'DNV)i?[v0#)ğ /E_h1OH U#?  )>![f^/]21OI )/wNK1 Kxor]y-\ؑvOϔbIV6b@R3 Nb܃%Z)VOtij]".<גܼn$|=O⯴IV O)kU#?OY))/w%GNK1 KxSbN;&S|BU#*Cb #?ObOsF%tģ]N^&8:1,nbWGH-N^&8|ֱ74"Vاé?cp~Y&"n"1Ov IU*$@)\zR|ϱOhsF%J%,\6uI*{4?[vHا}J@lS;WF0S%Ĩщf#s:D o w0<,\6uI=Ѝ' QW$lS!:R3)('I{tbYĮ[/nw_ceL#hG)[Ln.ֹm&ِq~O&{/bvIIoCy{=zwrR{PDo:D n\qmbn.\w_ UQ]{vOJX{ 5 u~q''j4:gr VQځ7.֣Jsq֏s2`csOgKf)R} /SbJr~؜P<R^@m%urӲŷe;ME.BBi?#S_\B+.E6nD"t<d)m=bW'DN)Y'K`cXIey 'e_^KF'KqĘ|CbH{'L01O$? YDRy 'K"CI?kai&ϖkE+ƶ-$j}Co'33@c'WؠbE=}g)dli7O+E+bW'DN!b$)l`I1OE$)_Ą,hHM|#-1O-hP7|j#|gVf+.l'7'`ݧ;Z?5\V]QZW:įrN+.`B='KcBNz( |C_PP!5=$Q=R/xݙ@I`4S4&6Mބ6T+b\ՐtzLz>C%:waA&=UfY PeYj!͝;Y&=UfY PeYj!͝;Or2,_Ν“Or2,_Ν9&=UfY PeYj!ͿlorB;Jܼ+:}eLKZmM՜<p7zɛ3W-׻͇xr3_]oqnSeF)?[wtɇ֍"7U6f,[X9lјnSeF)~oqn)/wXu1dflOS&΍[(ܸP҄/ ή_Ie!7(W B^)qDf}x +T.Wh-"faK~ݾR)Z$?[v1Z6G|[O7)l)EK6QSe:[ZnI@@-7qw.>b& 6R2c{8#:Dq!3š?Ƨ$ժHϘQK@ܟF|7vg)b+?[wcRh DL )ab#>c)b(*=T>quf~^OHǪK̢&c)b(=TR{P$Doh%o \y˯%yheȉP<5}J S]\zD)2=S@\zkاqu b.|B,1 Z:D o-r{Grn^ct"bELB4ψS|ņ6 E'uDFV[\Ǒܺ[@k~lIT/a¹lTb׻3B}\اy?[vg Rڲ,(E_O݌QKchhLSYO݌"Ք'X|lS~^eR'Z3I={"NYxI={!>l)1O Ǫ[RڲՖ,)E_'g Kݙ :LSǠbO݌E؝k{9zc+붽o7f%uRl(1O+U!36Y?b?[vb=ulehТuVXV%f$s-ѾB\diKgέYc#-勦JlorB;JܽX!|VurM) t(&A/ǂUFQ 1Ouq .0@L)B/?1nbj?Na!Nb7m D ϋjx ~T'!INA_j͵QRyrT~T@?]űmؚl 0U'Bbwj<jP=ՂbDJQQ6rM O7"auq6SFT<{V_5rM JQTV_鎝h KvSti^Z巆.<גܼ\w_6M6 *!1_]ИQ7P)Cj*[VU'Z` j븻XQ[X"ZAzC되wE%XY浓5sïuE'gN( Kxor]y-\s/nw_ .{:uDoȎ[{Grn^x7hxW&/[c{Յur:/dl!B?dٻ9LVjr`Ko5 9/ToT|u%[CCn]r4+ <#AѳSO' N(.ax_mMj.ZI)D$-$*|ϰ@'Z)ğa'`.W..OZ@}vׯv͖׿ˋkݾ;bCWI)s͘O,r:l]*mk)# i { x][=rN’XsvnEI6МI.v$g$$˹IZK\[YOLa"wI\:kA{Od?sWB\)$˞U#?\]bBǪ\]Z0 *"a^X2)=Ӭ_GH-bN;"`H`.SŶm:1t.axtbFuVk')l<=7=Uv׭u67=";c& s=qgˋSV=Ss0Յnv-"TRvt0o KxXmӎK2&?['1Ha/@s |5؉b b@NΝf:D o 01QR~qmz,Ǫ4_091$'1z'#b<~R0E'gN F}"NKP"c1O ~R"Y#|['u1B$;gG6B- \(GrB[gW/2VA+&Iˏ& K5#={5ɨW9u?'W.??.|{ 7)l~9*ְQ\xmM:<{@$TMA"?r60q&"`ȭ[~1Ih Kvqu[xor]y-}uIVGx Z;:cØ3;8/TG15sTGxm 9˒p^έSQ KJ?Obl@Il8 /`0By:Ѣ7#@6\Ǒܺx$&HER~laq& պ5b)=ӭ#}:D o w0<,\6u12 B6t[t' N(.a(`(:~@AM)+y]&[ ]Xs#?’XCa "u[ ا_׻D\YNzO Y?O;\<,d'Y׻|\O ?[mx^l;\OqGЦ*i?bp jZ[q[']>Bto/d{^_'!bMT#pz$ĒB#vI1xzN0]g'n-a 1&\&ҹfbLMI]]vVX+)箭峇8& /T[8Ixd[8mO ?[?_b"k~<"I ⓳Va@ w0<,\6u-X?Ot"7t:}N^&9-I?& Eb2~ð7yFG#@6u )u52BaJ=TNȦױOh"ӣ#̏ Kxt뱕3N(hگɓb9Ł;Dyn-Zwrtۋ%+Z崛fR =JMӜH/{.<<_2g$oYĀDꌤ7Kh% |l<7uǪ־N+ۈOاUǪ/[~~J<>6w*G'#C')3J^B6<#F9%G /Tz#3JLa \FLJMNb_5rL)rlS\LENJ<9r4YN7{@QK?@2@4)ṍqu0DS-)@K`J~7zc^i96J\C'0U{ʿ@LN)DoJ:D n,;rZve;nLvqt峺HɲR1#0qj`QꈎLO R˒~jr`}SS$O;,I)tNNMkǪc{^ =?E_hxzkU#?=qꢓP7%"fr˹n-;urlRF)jD_Y`e['SQT OwWh7iR~{^"8=15s0T59F|$=Ȳly#2rwO!??y:?bWx$ct\اe9?⯴IXT<<ǪMb8=TRvtF$@øYw-ŧnZcta"G xvAp]%aS@=T"o ]qꢓP7%"fr˹n-;ur%:E 9f?rdYA6%W/;IdQ7NII蜙V D$)qSxjD")لE{qIq{Mn+E_+2I)KZDžޅW-EKg1^:J!I?01 U0}rwaM|qvK)|<B*Df}{0\z.-0 *g 9ߴSXR^Nbq&XX9?bIDbOاdac?ܱ\z|¿U"_xSbN;'6^< !t!IXyǪMb~\z)FǪ־yqu<);:u4F8GH-㫗`xXmӘv< Bȝ}JbFU#?/D- PJ**w8ՍoX~F+a^#0j)Z1\8rxs'f9㑪G>>&68rNI\\L\$?wCb'`X #qBO {6IÒrBrb'Dw'>&.ǭ >O'%.V&IծG.&.Z|OQr!O r~nQ8'DӚ{V6ӓ[#,rK֞a9} u@?ZzEd[w_4^ʉyTXZ<`اસQI×N7й2-P)RtX6⣻\øYw-Š<壺X5q(j&1O^(܅ DF)Г׻q8M4bOք͘> 1O GǪ[a6r3E.N&ϪF 1O^@ QbMױ)D'n ɂt@ ?cq~5|D(BeXn]f>"N؀zd_2[wD'D ?ct2姀.DbIU+8skU#?bFǪua(u r娍 JV7O^[a\z4)*th\Jdc#0/r*#{P7{+X`YS2~<{V6×+W6%浍p@.q\S\#7Ư\9rU+x 1=T"o `=TRvtØ :D nw.)M+7;]qh:h.DaMy@Af*D<%WF7xv\zՇ1tܸ;^KrW/)s ۧ0W xO0 SO0 #H W9# 1ȯQ`GL5TGSj@d<|DZQcpd(.!/*8bQl%!/O3>7jE8!/8bHr~ڔ!/x $l)UaB])$(|nԸ Q oO&2~.9F T{0$T~\7F'x׻#nM\uhQV;tFB['Enn*;,;rZήZ;i'YYy(=SPb7t):,\StqQݮWc{~'YYxt THKӨ1 :D nw.)M+ "1S) =lو$U(b)",d(s*-7jJk P&[zT9 /D TſuF*-3 G!j]@lk(ȊMTT~&@Gn *&Rʤʨx뻉cpZ#9'%/ud/A (En[buI={DCZ4 Na2mZv#Ϙu*aU3T ~:J9 {#TF$#й1 a*#3gFpqP䈢{9 RX1p;uhk?9D?PD'fn\ a]@l4@z R-{r4QT@ lGLO77cڰP"E"U#9u[9(a)eR~W]-{$w+y/9 Fs6**~'P1\z}gײxXPJ\?rkqlؘDeDvWmy01eR~W]+?Hcp*WlG.DLC%:vLz>C%:vU}d-C gu4J6tLz>C%92}-NZQ7]lmsX F^(~á֚}szמ|LqB!`H,yʧ=G([\zN K;#}y|)~纀 g5zw-1ſ:/S1TM׿ocViFP%֢+ɓeۧ 0IYJ"[IdQ7Y&\'!ڸK`Bow1O W'ĕv"[67w+Yn/%=C10 Gq|b9V41 fԠFf9>F!?O?+f)0Ӭ#|"^&8 uJq,l|UKӬ#|"^&8 c@T|&;t>X!g5+fHt>/wp7רݔ<׈w`ßyj _O?+҂}w!o㸁~e[V3aYL/t>X$g"xLuDo#@s ۧ}x[/nw_ R^g%,\6u1SD̨iܙ>PMq@s @sA~AWǩ6̊&JWX$aQW`V&e&# ID̥WD$ :}&X9?be',i2ȕ1O O&e(U\E*:uDoLv[W/)z.axtu1֡GfTN+rdYDQI:~m /5I`9\z,DϳZF%_:hͪ:[0y|? sVm)욷lʪ&8<͛Je?k;*PS*}`$?k;& 0y|? sYJ~vT7UQ7vU}d-C gu4J6t 14Z#(Qhl14Z#(Qhl14Z#(QhlQ7S'ehL; T\?^X%fW1OǪtBߑ"bub0񬟭u^=\?b2$l]؋)v%f}Wk\zN( K;)=ӭ #~Dt\*%oO uq:Т7GH,:sYA&~Jm*$^14Z#(QhmPMq@s#'_PlȢorsj{-Ǘ޽jɚཨ[-Yڲfx/j{7#}z:D o 0Mq|? u1 vrdYDJ ueWauq{m|nwE'tj#sU%NtՄF K;x޸U˯[1[^EZc{u&%G֠޸OfUw^>x̒B&%$Uu7=T!h]]d}Aj T@{ъxTU\Bݧf֍"i^Z巆.<7O.'>y.uxXО&b7XZ̑H QiB[(ܸw.%xVurX&|W2]ҒSt؈#GDc}%&=RL2KIO$wSF$2ct+ &ٕ`C2IF<6kXOI6̫HV$fS&`CT1ya>$2fI(٣'$fU %4'MZjcqP]j")fLS~ f$V5&)a>$2cqUk5#fL2~N1\N( Ky˯%y㫗`xXmӎj{nde[>jPo\z(9*7i"HI61qn)/yaN( Ky-\s/nw_ R\0̀ZF%ur 0Mq|1Is WN( Kx;.axt22A3g7ּ5=)=}y#*<W z3&OnP,\NJx ЏDSRmMWy;\/[ⓑ 42 T *"7}L3 \z^~WFӭFt.axtk?~h_\- -~I;bAF|z259rds 䑍ϖP_-1n dh} ,op c7w1}djrɂ)# oxk'v Frc=#Ꮅ6"ElY"3jҚmӊd& w0\_(KrB;dN8̜>P7pfS1Rc$Aj T _I֐%e01$&kڃ$r'%L'|n.?bO?}o=jwC oP WNh%7qw.玮_xSbN;7]:Ѣ7#@Ǒܺ[:}Z(~֍".<גܼoqB# NI+FU21sosX9̜K?֠޸Nh Kxor]y-\aYˆ$~SAU21sv.h Kxor]y-\Ad ΋?nP,\<-@sA#B[ܺP7q!}' ~lȢotoIUIoV}cosYw^!cl4ތ5Ρ+5 s1Aj U3ϙZ@Xy;Aq ѷwtN( Kxor]y-\s/nw_ W3$s&.f?Xy;Aqy1kH5u7=S/֍{tBߑ"70hww os'DžxXٞd u+0AeL홲DAO-SoIUYB9@wZDgNpOr2,_ΝZLz>C%:v9&=UfY PeYj!͜>PMq@s >A3xOmMW^=< l'A7|)!Ou^[/nw_ k=ӭF Kc{}sw<,q7j5'8K]9 u$NF.:dr #9:"-D%Db*Udȝexxl"7߲v`V޽Շ%w{?9ЇUՍWuf0ӄ0P~T'8Q$7)u'O[%ٯ5?B^S$-5?B>=lN}iN2wOʟY'`L!r_d(IoS??*z>7o;5'8K]9 u$NF.:jr #9:sASd jru&ySauq.*، =qꄂ cvqꜹ Q}TR$U!{K`R$U7.Izw oZ);IXxr-`@GucCJROfpPD?Cb0 NlDU|VB^N^|Lx'Z*nO7# b">7yuG֪?؝b%d1jQ?،7NlU|VB^@8]GC=3Zyn)q*xX(lx3cvSASBqꢓ:|s@6⣻\øYw-Š<壺kfS<7jDy-#be6oc{ 3!1OTAVgbl WF7_O`9Q Ky-\s/nw_ R{Ob7~tKrW/,\6u13q 2jiZlݜDtbo;G^ɚfE{OOb- DDB^d<0dlSa8&=P07X݊xD"Bo/u9( C/q{^ PӢ&kX\_h ب<UǪ'14 E'uDo#@s/nw_ dliY3P)3*ɚ{{IX/dVxF S€M'5 SuǪ( DO4q:Ϣ7 KxSmӫ&j.a;"f!/2bO naا"q&j:Ϣ7 KxSbN;Ꮈ?4̜KE3;|Or2,_}~E:ο ,Jy__ -5YК Al?蒵jo@jҙM3TF̺o4eԸiA7TC?-Rg- CXz%jijgm=]4h3ZZODWM-Z Vv+UKV;i蕪饫AJtՠz%jijgm=]4h3ZZODWM-Z Vv+UKV;i蕪饫AJtՠz%jijgm=]4h3ZZODWM-Z Vv+UKV;i蕪饫AJtՠz%jijgm=]4h3ZZODWM-Z Vv+UKV;i蕪饫AJtՐjռРJѬ9 nH A jռРJѬ9S0zGM}oOzOHw OTé7?N?u=#>7u=St;a􎛟'pޟL:sD:S:n~zS0zGM}oOzOHw OTé7?N?u=#>7u=St;a􎛟'pޟ bDZ3) WĉZg iQ'-R3-hҢOZ8-\g[%jќ-DqHZ'0Uᘁ -L"9 @\!h`G#9 @\!h`òAMTÆb .q0ZgB(9"a1Z8-3AlHFpgk9"vkDP-5OC [3k8.9}+V3PވPga.x[BѵSЁ,s"V C+6tOM0ByDH0O iQ'iL'eltMR~Ѱf=uDA"vl-gN:E?hu3TZjL:zg;6D3"@zGTl:-5O@zQ=3H"Kzӎit~Ѱ-\80!L 8tr@+V@0@s xB!l-)Xh$NKz3+V婣diaS -- 1ȑHFDR 4Z3a6AqL(l #"F>= H#?V[93 @YѴ(3zRЗ8.33qI iQ'jh7xfBfz)33ڵ "-5B<2 Y妨[YZl ҢO "-5B: FВZT ̅-TBF!9"z<-DqH[ U+Fѱ"V2K5SJ? )m*$BfnکZ6P`̅-TR ҢO ҶlިOXh$NKztg FЎ)\fg@s xB!l37mTS HSͽPfBfz@"!'STI GݵRmL5!O 9iB- fBfzDH0O iQ'-R3vJѵ0EDB R,OE+c4jhCR7jչ%dfBfz)r8.33E zhZ煺-U=<-B=LP'- sB18GtV WT.ҦB8f' @"OH|A;"'M p Bj7m Y4TIҵhFRO p.3 )m*$BfnکZ69fOZ-d)hjqp8B-Zpޖ4n5=H6hȊzD C2 2+?Æ譙& a\7Mpl4OR- 6AD"2"'`19;=vEefxp8Bl2 vЎEF0FDS!2'gNȬòA7El[ B-*hݴ#kazhlѲ $!A;d+ ~@"Ggjќ'38HjҊ iQ'@oB$57)@nիrKF0CJ&f [3-L9#T.ҦB8f' @"OH|A;" !G#"tV GGt2 vЎEF0FDS!2'gNȬ'dhD!Ȇxp8Bl2 5KEP@hl4OR- 6AD"2"'`19 Y'Y'FD3D"$COP) afzalިiZ*Ҥ([ԅ<( ڵnIhYa q耸=Ba$RU5NCiE 腴) aiL2DA"vp[l.-32v ԅ=uzVC f;3; ХV㦭kMTjҙLa  R5[q9'!dp㐬.w0f;?vK=#Lu3TZjKaAj1J( UpBA'hq %hvp'm HS=3H$3-J-3€Ѭ鞂Dg-R-3€ѬB+Bgĭ xB'z ކtOxP5CR=3H,XOxP53z(EqRL8YSx[5!O[DA"vp[ΐr) FވjB'z K FҘfoE*] k;8jo w) h$NKzZ?@hx[ HSDA"vpa?@hxZS K3㐬. Qb1&4)gtաCU%jќN l(R̈sV5E[jK=,AtcGafҵha$RU5NCiE 腴 "-5B<2 Y妨[Y6 +fp+hfnکZ6d)hjG!azCX-*!S>8 a.ZfٜS3z'Z- 8YJ9 C.] p%jќ-DZlٽPg,'38HjҊ =IoC5jќ'38HjҊ iQ'DZjxeMPm<3!KDU=m[AVVݵRm R,OE0Cl2.[ dTC|p\9fOL#ZC+fp)rh\$Jգ8[J<23Jٳz?XOgpIT:! 7'z ކk#Jգ8OgpIT:! 7ҢOL( T-gnxfBfz ڷl 4jhYaцe b\ȨL#0 i+fsL螘G!k .Vg-(S- йt1HFpxekKxffB97$C"tBJ(oD4OL'g % FFp7$C"tBJ(oD-DQiᖨZ-5Bݴ̅-Tn[3i[C3vJѴ3!KDU=9 հl-Q碘G!`q ag=މ iQ'i[6oT'm %HP dTCV&zG MSQCz!zg;8I-g ҶlިOXIhҢN#Jգ8OgpIT:! 7ҢOL( T-gnxfBfz ڷl 4jhYaцe b\ȨL#0 V YQ[3foDrc47Z6Ҥ(e*!C+fpfxܓ= #Jm(=3H$3i[6oT',$Zg iQ'\gjќ'38HjҊ iQ'DZjxeMPm<3!KDU=m[AVVݵRm R,OE0Cl2.[ dTC|p\g+fpG(E37pt1TIV͛ -BIiR2z!8e38 a.38BAl#V碙8\m*$+ft$ al=ٜ27$C"tBJ(oD4OL'g % V͛ "VTI6+zOX?}` T\_J8\hV짢H0ÊDP%hvpm +ihݴ!Ҥ(gC3vs8fg!X] )`v3BzGML:-5O@f=  l!b;Q Pa'?428 Ncrðd +8aC Y5h~:jf@f2EZWL)fDpCT-5 PTw C1'G'5&ҿVy @d%y1\Ib< ::t3438;ٝ LN;ð::s o΅;ðNð;"Nc1HGΈņ%u< DPTQa΋=%X6 laɥPFp:oDj@xVVt ;=<obN  *Ь,avNץ R Ebt ;ðx+ a1\M:ER:jtա rJա"O'3N#39 b`VZ<$Gh$Fb*Fa1d+0P# P ð: `@N% "dӠb/a"* \΁3,!b*:OxJ(0VP3Sef Ht+ w@2,TaX[c"y26$<X[+` F F- ^+ beŰTN@V}h"29+0+ l p Wa% VIq2") Hq-O< !R1%QHV!=@ɣ0%p=9$$P`  `y2\ i`VīR4!Jр0 g@ȤF2Gò8NP4!+a8=;'@ȬEPV_fg@tJ& 8@(- `v@`Iᤂ)d ăhz+ON5Cpb)_ |!XɅPt]a$*`Ra BD9¬V0T +:.8 /v!"B8 TX='C1P px+t(L"(J}4Qqt \XWywGE ! KL1:."t34qX/FDȢ(# /Evǩ"jŐW΋Dc@@V-Yt  b_t$0)IOEnMAX[+I3`%0V-2O& 'ED@`2+ز IgE BD+'E^Z I` A%jE`NW2 AH:.PMj"'(dt !4c1XЀ\:c4IA+RAeu0@/@x0Vhp07h*$+ZwP $1a&TVb- :g2+bsf  `LM pS3h,dJ E`Lt@^!cDqXZxfx$?+ -42@aj8HG@IP`+ GC3(~+ [Cf 9 J  1\(V+ZG@̴`d+SΓN., `K΅f  `vf Z\+Bi$!4:0l0X/Rt0@fj:'ptL:HPj+1Y8G@pU}0 Ϗ 3i D+3| )4 4 u8Y?/!4"0Y@@ѐ BŚԅx :KGGbexE@4%I p~Q@h)!V~4( 1XƤpt c DJ$V#hb "s'΁( ,~.VRD$t`+*Ȟ@ EVGAYX춒n+ 7ph ]@t\ Ȭ>@`3CXYj0фz -΁b@ G abR@Q hcj  4¤Kj>@XX:OhX P:<r+  bBt @rym, ¸FeN<:@V Ea^ 4 ǡ` º\!1:z+ r5hV"h.Q4`E`CZ9 4X^: bQ 4cЈK)`VA8N2!Qpv,Ŋm0('@]V,/ g@>apWAb9(pW+QEi<±\E@nYxx,0,+΁B:<ǂ_%?E>ʢM3*C#xAXVc \IgE`~+ fk KaT iEXUNͅST#aR0n(@:/%`.P9L#xcxI |a"t^DԋpzVrnt^bMԐ-:/A`Z"XL3FDqXSs"hF)R0bXT-eDppSž~V/``H&5EMy6 Ib8H):h?6^QR v@p@:`|aVBh;: |XWB`clضqBıx2!hMiHt E0! rYو0: v `bܘnt $ "/Pt ")+5p Qa`EVl$ g@# XVdvZ>``)b+/@N9 8l ba ;}, lF OSn\HF>!pQfEp@d:%!AXF'@z\T aCV HB+n D2; :d Ahl@iDX jX":!kP~n AI]DNG@ܤ%a: QH+@` v4|'pDt: :08Ju΁*(`+|&rlOR/ s `'Ⱉp @8T+ WCdtP #V. ;G@+#r+=|d1DBX#@h XUqI$#18`k`Ft^_±G J" "#H\r0yR dȸt+O"zXDR $݄BPWlpB NRI .L-􃣠pVP)<@;-pW^bPh+#`lr㣠pZ P 1Yx8IfjL&YyP VC:jB΋t<(!̬bN(9$P6?:F GEa OKDۃ T~ m˓ A 9 FjN A| Љ'~#|#â}d\:/BtN|t F4 brtQ`0.:/2Ptx΋U!ntRBI'EB)PHtuCҙ(S΄`|A2 #3*lD˄jN@`~Ίz}|`h NH:J0,{wQ h,t&4h\MAӡ;@r>&D!IНpv@nt_pT&!㤻 b1΄&:  E`f f'@cP. |Z  @PQ1@, )D 8:5l @X,;%sG N@Уpn uGE|B|@ cr~`\x譚itL"xd `0*@( AzztBa)&?0C6 d儳rLJ@ \F@2&g@CI9$̳A1nL7:#x`tH@2hR&ԤS:!:FXt)\aP,^: 8/"@r p΀A΁t  :jz; 8 f!~Nt] @lN&5EMy9 dOSr#AD2O:r$2Ea wNdM9*.I7X: pF9:"P:H RBt*'h9xN7: B hH-Pd4p,E;BhD2!$T N0Ep*AN:uSalRB40:&` * fkyd9-΁f0ĐVt&t.2:A  $vtt+nx`BGQ*t@>QNЂ*p΁f1:+Hàt=*bXtWAS"Iax/A3:G`آ@sf6t| + 'ԣ'*CBM:@=?XtWv/@I(@#r Ay:r^ 6:"h. //NW̃p>8p EpZ^ 4s3HU qX xtX`dW>cBt) L! :'@ PHiH'@WpL: hBt,]t lE :`'! DSnZNP˒h~`lC@ܿm|DԊ2 w85aft_`\!XKVV@MCK,+`aY|<M q $04 |A+㐂Q8I8:/$LYG@0& i̓@t+`Ѐ E:/΋t_9"519dN2΋xH*IG@  @p@-xЌ8"8. vpt_BU `jtPAJEo  :[Д#%A}#Cc70!NrL | F:ശTLD5sn*o8+ "|SN⟍-:`)5 ,Q@flt_,!wb`lS ΄!<2gEHhALw` v<Bt()+#PFQb<G@ƀp dB3 E΁ɷD; E`lIzvƊCl09@3^3%@T %tp@FdtXxB΁Pav<:qM| # @G@B!۳Ф'CBWJ:(^5\!%S8 .G@q6NBLK@ ԔaA9HRjy6ؕ&qXn@2:%/ h9:05SSL :" ,PFP:"΋~p  09,&=:/PxS>b) @4dtS<t^`HA1xLE'@桀0:/Pb9B&+0|% x @ST-:F^5zq  ( @ӠtmGQ @:*Ht> x3 $i:P9 \L#,l '@釄t^\' tX n 8:Gl|T:̈$tX&#t!PP0,Ht$ ΁FN,!`bW:I ΁MI( X,:"P=A:)xjW 'B<$a:5@8I x5 )`S:Bj1Xb܀|3j $;BPL#àt`::$2`t,ރ]Nw@5TybFt, Ű$-чAsh0в׌JXxL ]0hfcvmRKhZ*P~@( F.πqI4ф :RSwt !x) (BɒVz CbxBtE`%;>&:qP44N 4H5:h^l0@l.E& (o4!6X 0Ј- xL@DSF!`V hf΁8x A ?Ճt @:x Ӡv)Լ]:`%f Ϫ)#0`4CJPn I9;La|<:`wg$0z@nt˾3dA N(=1l|&K(14\ A= f/2|@;:xJCH :`@& G`4jĤ@Nt ? #a3"0DD5N1DgF6Dcf Z,<`Rެ ^ ΀,J":0!z0nD#:P U73L&c#NA8\A`Vt`H`DKG$W:`@ ^jt]RU:-2 рO EF^DgEvLrt`*‰tT%:-*P CgƂtM Zz|tZйEӣg@Yu$9@6:-m? NA:HFрH;ht]*A=&^[:^`t]>:D+àPMNo*:. )B{1$9.@s K΋#0:ЮLB<զgEpKcẍ́N q]3:1b Vtò7:" 3!xF@ :%2(Bt Ab*d# A'@ 9pt A`%@,Pzat|tQ+/b3zdrdt @s@ @h|jFM:$`` :bQGBxCbW5<@Vt ayh|*b,W'@@l"rJ'@e`| Ԇt G\O:h:1"p7H'):( &N1MDd)tx !$.:l`R2:<,!  |1#:L.à|}p*n ˠ&- (t+GC/ =)&HFt Z: @JN (pty#%g,{s<|ɣ?j7mSBDZi$I%?WnvM襣vfDm=H҇-Rm=D!ZPidռ4e=43)駚Zɴ j!RHÊ&HDI&W7?S& ڢN?hi8<̚H$JPk-52lݜ3S*ZU;&ꩫF,h?5$OCfm*$"*ZU;&~!NHH4~͔3iQ'c$%TOF>!3%6z[c3̋CJ_<̧m54nfN';jf $jIA7DDn٥Md=HMܑ=Mg$N7B & Z6iTRݬ4nF>!8*axVU-(tQizMh$Lf= 3$7$OA*9hݷ'"z QSFnHTsTѻoq+J'$Tzv}52g=3PMflEk;'ԅ#(n+h%m* RJ=cf\KD zjdٻ94g4ABRҩ4g"z)hݶٻ93nIlɜe%l#)pեHЃ>ښ?k;'ѻ= [UmMRvD橽B#'Nͤ>1 JPE?OD7$OA)Tѻm ٢SFRҩILiQ'$M3TZjT7k>͔3-3ў͔3iϦJ;* F{9%EkS*"NfO5MeQ)I2eMRS*yYZjeK hKg:jeSDIۢݳi橣v̪%8qCBDNrRFeMބ6MDꝓݒTޏZ6Ak;&ʒL?ڸDdٻ9TvդB?dz%cOJ$!7gO3Zj2dĬ1 m)CU?SK*,>'"z Gڴ*3F%>jMSCͥ(l6@oMLEpRʖȎ?љv2hᔬ1 )Ѫe-UQ1 ݪ*$47EqDOJ&D枊 4ZdѬ̆oKJJ2A4Dtj zLɴٴ Z5|C<Z??;Yjhݵ(M2m*$3e;jTJeQ)3&%Qge-UPɣ?љnQvRU 3* Ek;&g:jd5,К OMLOQ%l3E"z 4Z7mIQ:Q;6TO+?EmMRHTOJvnHS'7AdZ2h٥M%jЗ-MvԴLJ 6Rz*$FљJ;* F~͒#vhge2 $gflʩBdџ3eMMvUO2&$FPކH47Epɣ?Ff7 \2hљJ;* F* ʦn͔骟@oDӲfTNyijHj\7qSFiT6iSIZ%SFQ5i-36h↌fNQ( fN(hz*<;3(fiMH48љDnFiS$Vh7q(;)jUO3dĢ ,쥪6}&%Qge-UPɜͳTV2z%2+jsJ֦TOULk)+g:jeDPJe3tVl@L LRV↌fNSZPɣ:fN(hz*q+J4gO3IQ;Yjhݵ(M3eMMvH٢F"7fvSS$V3eMMvTtFM3eMMvTtFM3dҊ6flQCz $FFf7 \2g"42A+flʒU5Nɣ?flAEUC"DQgax͓w($JP8e9"vRɻfHF>!#3eMMvRگAdͥ5P2pݫI_I"g(RҚm1)1 *joD3Dn͕57TRJ6Ffʚ* %ST茉$ͽc36TމPgeI*DgfrJdĴRvҟfA)WK' ڴTZmSIv̑ݳzgDp5ʉ8 V3͒#J(oC$d↍iQ+Rz*9 & \S3ݳ9h%2jZ)eR҄ݫ?螖M;)Zo44nٓzG#J;* vI_MLɺ#[3eDevԡ4qS*'QZQ=,KR$I[J:$驕(7YLzZU;$驕(7ٲhکe3vͧtflȑ;fmd٠;&flQCz )5NbWMLEpRfiMS?ax͕57T"7fvN(hH$FPކH47EpʉnHS)fv3flAEUC&s5 TѻnjTɜ7lʉZ*dDN4nc36H( hn4vѻogSSz%A3G 4nflQCz $"S褓+SFfʚ* %ST茩iT@@hդ4nF>!#3eMMvTtFTʉSF$FPކH47Epȑ;fmeKhfMڦ 'љDiE dCtW N'L"pVͧfʦE6G柨G濨~i/~;/~_.i{_cO{?Q{>kܭ OK_?{ȟ柺`7F__IbTG柨"Q?{?U{oiṇ"z7>˿cO{>+o|Y >{r)~O?Q?{zU{W{؊_}{`__{ ?u{x~TG濨=-~_{b>Ɵ5`$u{ ?_{ ?G{5G{o=_$~6G{柺!?u{xu{B0{E{n&~k{E6G柨_{ñk?u{E[{ȫQ?{ð(ooI?ac{EIG柨"*G濨"Q~om{`߷{nG4w?{j}~7I}m{0?9U{A<?~{?GQ{ABGߨ ߨ I{ u{@F b b`N_o[ _{>LcO!{k?D?O/7{ sYE{?23{K_i'b{w~8"_!5bG~bTG{nRo>ƿ/}~~m+6[| >;(Oo~i(k"?(:Q{?ğI`__5{7'{iSS3{exDG{pRO 4J?`!C|y 柺 u{-g }G{v7_!W~k{A0_b?7a{r?IG{G*Q ?!_/Q{Igԉ?o9IR?4G{~k~90~oE?~6G{G{QSqCj_;_#{?O?bď|g#|W/PQ?{ñ_{ò>ʿQ{|co _ Q{?{#~}|sTG=i{ { ?I 24{s̈^=NB{Ã_{B?DE f~7_?7z78_ ??{~DyW?{_?{E{~BbG7O_?`_?_C5{#{ ?{~~) {  QQ{??{s/?u{"k{~OÏ__4RGحS)~k{B<'?{>)HG{r }'~~_{~{Ȫ?Q*G{k?{|o˟!G{t7G7G{s=_m'>?{ϢG?{&bQG_?{s~i*5{G4{ X?u{AUSb7?{Bu{DA{"'{b_1oDKm#R%~|)){p-L{tPR"{o({ 5-6'?K-{/{Z?/{ !/_{c|Pg-{_ ?-?5{_~(~U{|o{;b>?{_Q?{ؘ?@?{W[GQ{!~X~8bBG{ ?ozOzw%_{q_7|a}9;dym*$,7|;3 QCza"KD BSP$O 6;j C+6tOM3g(0TBќ#aDEOz! VзYZSxN@-ބ8[J<-)4l z!hک@iMe?#W@EBA<0JHm'vB- 2<2gD=&(0\5i4O f焂?0qL(R ᘁ gcC0KL$#b(0\5i4O f焂?0qL(R ᘁ gcC0KL$#b(0\5i4O -*L0KL$#b1…-0G~@>n٤ѻhH- f0+h[7ngam=D!8٣dG[4Z7m SЁ,8m fB)"xP&Z'Vl螚LE 9|IvА[U=<#aVжoT'ݴ4CIZz-CqI塳F'0""i44n jYqL3J RDKC2LO =4Z4ls O Jalgi BSIiR37DDElijhݴ-U=<9Z4ls O Jalgi BSIiR37DDElijhݴ-U=<9Z4ls O Jalgi BSIiR.';jlݜO!k)a!FvX-4uIFéTjhեM'u3VS2jҚSH6EjBE 9ؑ+V;nxH#C1Bٻ9pg<$0"T'=Dm|8f C+fpÆb(0[%jќ$VO |8f BވiiTÊD8H*Qi?L>3!8C1׎B@S1f,6u3TZjQiz!-AC ve*(2 VN idp0!'"⇇O70ev`*:8= ]?812212121_8u?G8ga? ßjܓ>8X8 .rrm~M+|8@?nޯ?nޯBh 01 /2C۷OKJCÐ~ypvxw8hԅ=4q!OGM=HSGc _ nZMCIZ3VIi+_zJ鞆g})V}3VݛD })V}3VIi+_ Z'gKD |ȂycDϦzJ"i75M v᜵Oۆr?Alމ fO(e+6tn(hH4$KT9%EkVt QZ՟3s&r/LM>ↄjz &[3?%t+fg~ɜK"ZPБ-SA!+fg䮙$4~l@[iQ'cq#!>lglNÒ9EV塟[347Epx@\#ayKJc-*KJj^z)iMSjҙ@]73Lo#Jft3TF2齄c \{3g47Eq#hnF>! ǰ|Cw=D!D9qIRݫFr;)YqI$ĉZg 9 &qVT7j?ҵhZ=nV$KFFr9w ڷA%_4Z3[nպ (-RjќNzvICj+VsnJTiZg-SpݫtPZ#Jգ9j[/ 2hzJ͝ E?m=_iZg-SpݫtPZAMOS)Y(+VsnJT3ɣie+6t2S&ʔSjѴ- ԅ Sw=D!TIDiM- jѴ- 4 z!"۟@9"'`3Ҷlި[Dd=LG[6oT-٢2AMZST#L7 S&)&xV͛ vhgV<9lգi[B$gR .39lգi[CVHYO vsⓘH-hIoB2U jg5PɣH7Dd vɣ@jVleMT2h 4pHh:<9lգi[B4+Fԉ-(l4Fdv5!2EpZOR$oC'NY Ԅ9jR8qHa#&R8qHaÊG)ATN(3$ 2hzJ͝3ʔS4FdCtFMOS)Y9lգihJj-MVPރcfΉ+fp7+ QCza:'[7譙€ވG3qI$ĉZg FOBN:k)as?PރcfΉ+fp7+ QCza:'[7譙€ވG3E 9fжKzᨔsB!i4lrգi- QCz!;nxCIAw@s "V#Bv5!B)3ɣie+6t22@#'Na $Jգ8\Q:DhZ(C"=z4m=LfΆTH7Dd#5=L6RgC*QOOS$ 2qD AMOS)Y( 8tgmS&ʔS茜Q:DfQnzaVжoT'ܑ=3Jٳzg;Y0?RHPވ@\#f[6oT,k=S8>y[  pD"$CCҟD9ᙬĭZ$OD!- ?%6Нg<'4oCJ_d9Zo4$ (oD-B*Pvl$LɫJj3Xc;TIp)3$Z qOS<( T-gnxZ6z%s?B rD9;m)Y᩼([Ur?!3Yi+ 6z!DZ3"KJ( 腴[Ї~8q0ÊG)L8q0ÊG)L8q0 Vgg MS fqL( qL#LD"$CCZ557qL-070)3ҢO qL1n~皠>Hd0><vݜʉ8|IvОKR579$N''sIoB#a V3)\gĭZ$OD';O(hކ;nxH-=BJja $Jգ8[OR$Q:DhZ(C"n٤ѻhZ6z%q3Hi4O!k)am*$4L;m)Y᩼,z6NABBrL-ބ8G37$0։fJtfL-CRݲDZ%vˌ7$ -IoB5OZS fC,'mj%8q@w=D!8Zn٤ѻhZ6z%xC"3JٳzB<2…- 2<2gDҸtDDV&BѵSЁ,)!V͛ )hfIᕛ:'OE-)vBٻ9 BS)!V͛ )hfIᕛ:'~>n٤ѻhZ6z%q3Hi4O!k)am=D!Q)4WyhlѲ $InDƒCtW0o=0oT(R'VĨQ<-Z6K`A;=9#Bv5!BވH'֘Qih[ |eNNaCzD{ !z! X[OQ%pԅ<.(4-glR( m HSDg> C2@\g 7 5[Ї HS#Bv5!BMP Fԅ<4JxC0 C({ !z! pKz x[OR$ˆMP .>\|*r} FЇd\O [OQ%pԅ<-ZPDEOZa .>\|B9>hC2 A.\g@"!'sIoB!h␶mtfԺO-3Lgem )d[OQ%k(n~tJaw edXF>!L>yҤ(Q\33RD6nx\KD=gi BS8 F…-0;hh"vkatF䆍aiT(7DnDƒCtW!+=-hx@e \B8 F…-0;hh"vkatF䆍az[4!0P@hD4nqm?ᕛ:'P Q &ZaÆ'f)m9&FTވQ' 8GҘZ oD|2"@aZihC a'qU3Y3 s 8B! 6pGL$"k!X] )`v3BzGML:-5O@f=  l!b;Q Pa'?428 Ncr g4)gtѴéTkMT" й l (2 V#)PAjsNHC#169 !XX>XX>XX>XX>XX>XX>Xvs8LKhvpЀބHeE$4TBH &. 0=U4l %V RA57q 7 w YOkL5!O '@h Y ԅ z!m=H҇ "-5B\|qG'дm|pAh =.'ڒ'g0 脂xHS HS#Bv5!Bވ[OR$ˆMP|d BވO.>\|-Bht4OK橡"v{ !z! pvRtе HPԉ-(p"T'!fˏ-r} FЇd] yhH)q@"!$6Ѳ 4Q% t!z! pvÊDIiC?\O3D[ z-C>R BҘ[BA<$Jq:?B rD9 xX͝L!+hZ6$Jգ8[ fC+hH'2gDҺ)`+6tOM0"T',$Zg ;Vl螚WDH0O Yzi>R BҘem FĉZg z!lިem ;Vl螚WBz<,xefΉDZjxe+V p͝J? zJ=4l s ҶlިP6g 9jBٻ9RfAmT K4) Za?v:#rD@$5!O 4AEZ7lB rD9 xX͝L!ٽPV& XefΉt'S7Vl螚a@oD$@k "-5B<2IefΉq@"!# -M$@k YOj::'C"2 oT$Z;QԬ=4ݴ$@IoB!ٽPҊz*? v QhB w YOj::'C"2 oT$Z;QԬ=4ݴ$@k i$qH JalިiEpNq@s 4l '@h Y ԄO -e?!l.(4-gA DZjxiq<Nl2 i$qH Jan ;Sa7ljhݴ-! XZ;QԬ=4)!el u+6tOM0m ;[Ї|8@0oT4pފfa7ljhݴ-! pvYzi>R C-0 5Jٙ* -e?Vl螚an 5[Ї|8@0oT4pފfa=B2gD|8@0hBٽP 5Vl螚WBz<,xefΉDZjxe+VElii 5Vl螚WDH0O Yzi>R BҘem FĉZg z!lިem +6tOM+=B2gD "-5B<2HFpi4 +6tOM+E 9膦͛F0 (R;8iCIy YOk Mm=D!8l2k [4Z7m FOBOL-CR=O (DZjtfԸ T8 FPhv5%C,(D-!S!!R8aa x[7g<3Jٳz?sŠڦaiT-)'g  ! ZS3۳0"T'Dԅ<.%4q-M ٻ9jҚn HS7jչ%dHP0΀މ?dh"vpPf=&cL'ars %jn -ѻh[BA<$vYzi>R C-0)Vl螚aiL- (7ٮ3=BQ\8oESxH a:'Z'v!OD-Z6Cyk z!EliiqL͝L( yhyj-0ҊVjBFTވQ' 8ZS f=PFTކa$ Z\fz8S >t QZոZSTODWM-Z Vv+UKV;i蕪饫AJtՠz%jijgm=]4h3ZZODWM-Z Vv+UKV;i蕪饫AJtՠz%jijgm=]4h3ZZODWM-Z Vv+UKV;i蕪饫AJtՠz%jijgm=]4h3ZZODWM-Z Vv+UKW2!*g5PɣH7DdѴ2:? QCza;o FOBN:k)am*$ys l=4ٽP7ElB8q (oA#W ZM-SѵSЁ,ӎ;XG3E 9 z'0o iQ'ԅ<35E3 QCzaHi44k<-)z4@i;8P (oA#W ZM-SAjMS FpˆMP TCRoD3(.3E 9-$4xH'v8fz'mT-ބ:Ws  Z'g 3Hi4O!k)aS hVdY΀Ѵn~@EBLM<$Z;ZaS fz'mT$efΉzL7*Ngi BSP$O 6;jg9!€Ѭ jan -ѻhZS FТ4AZ7m 47Dn͢IŠڦaDhD4n3tG gu~r g4)gtѴéTjMSй l (2 V#)PAjsNHC#169 !! 4k<ڵj7mi50"5- {@PleiQ'@iQ'F>! LѬcoO`aE"`S߿&,Fh>1 dFh? =E{LV!qCӋ^|a\%~qC ?V:8= N(vXqU0:8=ҢOI ^1 nDJq?i_e}Q{D 1IGcxJ?D%j?5NDg螖L@~`B?qCV=v ?%8Z+TYhښm4#Y=-hVm{Vqu{؟? N(y'~يG)>8К oWAeH/"S5-=JPЏ;iQ'cvsJ֮l=OJl$͝Jl$͝Jl$͝Jl$͝Jl$͝Jl$͝')thJ]4{i$ )D4@%.Z=  K$OCDR饫ijD4@%.Z=  K$OCDR饫ijD4@%.Z=  K$OCDR饫ijD4@%.Z=  K$OCDR饫ijm)CB?DEkSLpp5Æx5ÊW3LfΏg7͝Po-3?:?AZg`6t~=A6lzyil ΍Sٳ;gG3w:5LfΏЏ7$OC)ZЏ7$OC)Z nH A Ah2 Eh. @ @pd 4\4 Ah2 L2 Eh. @pd 24pʔS 24pʔS 24pʔS 24pʔSG80G)qL#aSqH\gG80G)qL#aSqH\gG80G?P #rE 2! 0NgJl ԋCi8j6rz)fe2#?g7͝=H6#LzFl ԋCi8gFTFIL(nʚdƃ=L6H4jJdCtFTC&4dѴ2@RS$ 24qChj[ЇG#aqKTa QCzaJٳzDV.3%V(0lٽPJիy+XHPރGҶlިQ%jռˌgG& )Y SU 8d vɣ@jVldCtFTC&=zSU 8dCtFMl8$fΏAMl8$fΆH7DeMT2hgG& )Y SU 8d vɣ@jVldCtFTC&=z4pHh: P5PɣAMl8$fΆH7DeMT2hgG& )Y SU 8d vɣ@jVldCtFTC&>Vcg-N'e@z!Z DTk9jq=*S $"pd[7m IoB#aĵJ7'r-R+F3XSP*ioEDfѲ ɟZZOE0ʁTCKz* #4NLPxexG ᕜ*anⓓ?=Bᖉ3Vrz)h[7g<#NL z'Z'pYlݜ)93)h8eg+[vs8PxexG ᕜ*anⓓ?AMOS)Y( 8tgm͝34ZC+6tOM0)3gFVleJ)idCtFN(3Yh3ɣie+6t22@#'NdѴ2:R~z P'@hvgHGjZNaVgg z!m=D!8Éj$ (oA#[6oT4O+8XF>!6nxC q+r;$#Ri-'0KzS JahٜЎM-[2B?e+V ҵk;8I-*B4Fm(9Rq-RE 9}+fꆉg 3IoB!%V(0lٽPfCD򳅄ci$~C\g͝3+6tOM0)zhZg[ ԋCc<8Z@>fCD򳅄cqTBkZk sV͛ gSr?!3Éj$ (oA#[6oT4O+8XF>!JWOD!%V(0lٽPoETᕫIid~Vl腥0)]xIIPފ'Q%l+V[ci$ qQ0?:aV3ᕛ:'GIiR-ZPS %V JhS (s?gtj͝0+fmT͝L#a$ ԉ-(p)ѫVPm HM)S !X] )`v3BzGML:-5O@f=  l!b;Q Pa'?428 Nc6t[ts =48Ex[vs8g +9\U=WOD#fc0)qL#a) ?㐬.w0f;?vK=#Lu3ZjKaAj1J( UpBA'hq 9j)ZfY€ވ[OQ%p)9ejZa?RӒaD8GQ' 8Gr g4)gtաCU4iZ-AC ve*(2 VN idp0!'?W vsԉ-(a #g+IoB#a̕ ,-ZP$@.8tе HC 5 $Jx[B8EpZ`~w=H҆P6rzalݴ@)Elz6AVrz) RD iD1; N(4-glRxH BM vgA3Jլ@oD'<2gDI-*B"KJxHçNArA<$t#a8iE?m=PlthG %p6l9ZPI\C4g-S+6tOM0)ԅ<3"D[ tG#V8.ԅ<-$Dgr8h␸Dٳlͣ9jYziqL-)ZBp +6tOM0@@z#BIiRFԅ<3"DVl螚aV38$8.3%p6l9i[3hZVl螚aS JaiE?m=P@@zS +6tOM0@@zS %HMCR̋EYzi[ G(҇␸EpZ`~w=H҆P6rzam=D!8)iX[OR$H'\:qD k;d$@jBH,@qIvٜ5%4l qTB8)i"KJxHçNArA<$t#L9j"KJqCtH9[ЇPam=H҆9 ap4FjBO ] "V&afsԔѲ 2SPԉ-(c vQ:DhZ!Ў)3a+VpoT( 3VТEvp͝L( yhyjXejZLnIoB#WT=;4Y)l=@Vrz)hjBiL-ބ36C:3[3)m=H҇ -DoD͝L4?Zo4N (q@s Zz@hٜ2-3Vl螚a@oD(SEGT$+Vg vжKzR̀Ҥ)膉٢<5!O dTC腺2SL-CRJam=D!ќJٜ5!O iD8io #z'Vl螚gm իyvpiE?m=Kx+ cb3ht; ХV㦭kMTkU2VWL)fDpCT-5 PTwb(Acb#6DCD , fCJ+ vk㐬.6+k40vK=#MZ֚L֪&]2PjMSж1BzYP!b: !!hrg#ӆg0Ւ !7SiQ']2D!pb11 `tp;p!frj3Fat0c1# Y4m0f=T.B[ UAFT)@Pd82 a8 CCOzVCpe 40vK=#MZ֚LՒ !7SiQ']2PjMSж1BzYP!2 G!59 }{%(4LHVCg҈S:aQizS5hx+ 3hRHiS5ELr@Pd2 G`*6RJ l!Gc lrBxC׎B@S1f,6u3TZjiD!-AC ve*(2 VN idp0!'?㐬.88+ht; ХV㦭kMT)AWL)fDpCT-5 PTwl: G!f!w?/-@|"o _E!~qCi"⇞d7%6:8= N(xp[yptp{@P~1'=OmĝoK85_qCÃπ>ϿC柿qCbW+'<:IGI:8=:܂g [J:閒! W+!l31 NN3e +F #8or1\ 4L:hRHCV5TSu- Y.jf= a C)g(1!lB29 O|?$cv27C=7B8Rs xfjMS 96Z'mT .[3@\!Na QCz!yYl 4AEZ7lgTIp)Vᖪh~T[OTiQ'8[3Z-Sm=Rg@kZhR~Ѱ 4A00;CL-OPk fE[[`~r g4)gtѴéTjMSй l (2 V#)PAjsNHC#169 !?=_?W(REU'Eƾ$"I-xLEF6E'v+#kci'{:_g='v5 ;*)vcd.ͻ݆.Bge~靂ab*Ob(؊'"]af\cїe/Og~'4;&Lso[2oL 4j?YיoyDzיoO^d9^gיo?zU!7n&y טoC܄A;?^c%jռիy^g(^g(tf?MT5? T?3V-MNijA^ggvď+_יohүיojd*?יojnיoj^gqCF -S5oL TTZPיoE.(hڤ^gPѵHMڷ$G5PdG3E!Q?ҔW'zיoiV衽Jiq,rLU \3)4y*nJ?יoj^g$?I*יo?Ѽ5יoU3E5QN2#[??ỉJI4iyiI%É䖭3Oיo ?횷Ayzgjיoį^g?yיow3y ?2יoJPhRKf$Y6?ynE ?-9 ?yy?y3,?^g54548%cH/;3|)k|fc 3|H31>Kf|ͷf? |fcWl31b݂1찯3135f? '|fc2k|fc#v%~y31wf? [3فO7f?8Rwf?dz3]8!oAuVM:|fg{B&;f:*o@:+ofͳDO 3?4DtYЈ٢'o|fg=M"`跾33`轾33`þ33؈|fgC]mhDlݜ݈؈|fg!7b! |fg!b!@gb#=}7fb؈|fg$D8"[3?1 AO|fg X؈Z0Dwf3ijg؈]?q=733b/33SM2E6]} {N7fPѵH {XoKSPJ"ɾ33!b+]FEf v"oH؊\C33"b*vԂǦ[3?R{%{!gcջ3?b֪&|fgcDǡ$Ǩ[3?ǵob%v=|fgz"ob,=)ob 7f1J3?2cS|fgCNǥ {3?2 {fdDz^za?`F̄^ٮ̊6`s33 C;f͢?;_33"`셾33vs`|fg/v|fg#Nۍ 4@nwf2 i3?e])v(od=3?<f2{;wf2=Eك|fg k؍cM;ffv# ffw،q330،=/һwff)v#I330S،|fgedm#.bv،33P Wb033s،'!# [3?cF+!=Ffv#&o!%#7f7pJm*$"/b2vs-%u[3?AGb<;3?Ab:%xfv#fhg؎y33q-dp|fg;зfhq؏Vzfh˱D/b9K|fgYOYj_\kWƨ=YֿrY?׈g_g ,=I=E?{egY}_Y|'eů{{=e/{_/O#,@+e g;=ßy{rWY,eY#oK!eI=d)e-ee{!YgW{ {!k,CYe,Wg򔿲+e]=?5=?,OYgYYß?F=+,bYfgeB=f{S=f[=,sϿ,q?,rYe8=@)e g&g1e{{V=AL=BЇ?gGgHgI_gE"YCo!eI=h)e-e/q{Ͽ}g=%W{JEQ,Y-Y-Y,{K+e˿g@,E{$= g@{?gG?gO?ܣeJ=rY=r_=G6=G_{{{)eɆ_gÏaY2`{L-e ?gɬ?ɮ?ɥ/i_,]=,,geeF=t{{{,h_g݊gg e>=y_Y?,k,,Y9Y9Y8{N+egYY'Y{!$=?gY{!ee {Fg, ',?-eeeeW{'e ?gF",=%/"W=%$k{=Re$$V=Ige,? ,ҿ {e,D_{"!e?g {"S/,E>=k=D{"?gMYq{_gL{˿g_|_g?gY=3,'=IeeeeKg1Y,FB=aO,F-e_g9Y}{#{#g9k,G0e!=(0=(8=( , WYH[=)-Y{{$I{Yegl, e7_Yػ{˿g6=qY8gppg_=={+Y8'$ 5=g{0,aJ=K?g ,<,=YzYzOYx{[=Y?}{z'eܵ{sY==K,e헿a=ϭ={E{I{$eeo3,gs{O?7Y1J=%b_=MgJYR{gIo, Lw{+o, , ʿ2ȵ{FgY3a{=ue`,Qe`O$e`{$g#e`,hg#J=g,ee`Y H{AO,je{N?Y5,gS=C_4, $=A, _g%0eePeeL?gP{ ge`,t/?,eccol,5=g&,e`{Y ea{Y gc찥{ gak,{=gܭ{n]=YY ѿV{Y goe`a=_=?{/>Y^/g{?e_=/q쾯e==gyG,/J=ыg2Y*=,=Y %e`[=o,0U{C{'g؃'YRo,1-ebC,e` g:k{{oWt"I?g:)BOY=П{t)e`TYg:,BY`3,E`{t_=чg:N=E=C/D5Y"*=ADeb g؉Y"/Y"D<=Cb {{_g؈g؉WY"9Y"W{=A, ?=BY"% g؈( g؈)OD?{D-D{D. g؈`Y"Y"=SOb)Y"Fg؊7Y"g؊;=QY"Y"g؊}{Yeb+_b+EFY"=Rw#,R{E{_g؊'EE{Y"{Y"_=RY"EE.Kg؊_Y"?;g=Ǧ_=ǦgWY=go{Vecؿ{Ggz,ecgOzz,z{kY='ecg',{DzTY=[gR=Ǣ_,{Ez-ecs,{Kgz{=ٗY{_g;pe`s=g;,k{Y_=YϿ{,l{/Y=۟`b'Y?=K,i_=S,bvV=اg;?{Y_=ط{wg;-e`v`Y?g؍eb1,{oF?g،qFeb0g،,_g،{F>=i?{Y##eb1;g،{?=bY# ?=dF{‡Y# _=aO,=ac,b1k,?{Y#?{F/g،Gg؎i{{g؏o{{g؏{{b;G[v|q{g/Y>=ucY>!~{?,ecUcc?"3%c/V{,8,Y>ecoլ9b}_;G"g'g||R=_,?AY> {Ж{߆ =—BŞcSgY>,{|Z={? |[=zw,,CY>0~;Y>0=Y>N==, xg<6*Y߮Y!g<|{ſ=E=,x?Y~g!6h|BEcQizQHj1 vs"|lz'eDA"vl-gK)0|C!FE"ayK*DQH3axCtW (Ȥ_ XF>!3tFd>!FE"H1 (Ȥ_6ayDEi%8Vg螖L@d>!FE"axΉnDӲ"|h1 Lݫ! 2)Vg7qI"jYQHF>!QDORvt"|ՄcL|BEL#&$OC! 2)l#'dDCdR/#)$L2"}S3CdR/#&d>!FE"gMQHj1 rD(Ȥ_ # ڢNCtW (Ȥ_ Bd6M 4k=3ɣjjYdռҵdѵSЁ,"z S*g9!AIoB2g+9\U=gB$qTxB=RSY=3>jMSVeff=i3Z&jMSPgf=g3YYlݜg3TlݜfdZTJdѱ"ViKiQ'dѱ"VvNfjɥ$M%jџLjٻ93eSvM3Z6g:3*lݜFTITݓFFfs2&ҢOKE3d,5FLƎ%LݲDH 𸖊ge3v Y 4k;&-;)衽f*%8MKUTxE2#TC)YƓ5m=UNʦ쥪"OKtZ&Sj?tW pCtWm{)YgD"OH +K 4AEs ""i44nZmDjH[4Z7lĵ!S𶞤IiCdކN(3&A +r?,"vIoBw4nD-5OGAhٽ ٶKz'$Jգ9jG& &IoBhٴ@%6Kzk3vԷjќNVrz)'m=D!'DnH[ІAEi=^Q=-ڒ' YY3ɣid*#FH7DeMT2hnؑ=24pɚ*#U7dѴ2:gACz_c"|oQWCz$zUOR_a>P-OUCz'<2zO}J~b\=W$!>1'z7 <ĭ%zK> 1a>1-^1z7I ԸzԇB| ԡW@~OԔDUCzԂDUWCz#RB|17b>=WԡW/=W_Cz̕zUU$'G 2>>2!z^$/P2}J~d` WdԡW!ϩp__!>J~2`z^GCz@[W}J~fi\=Wj4U=W}J~h?f<чd_}J~h'U~ yPޫ@i`O W"2(oUDP^ԡW\=WO(oUDf<"L=WԡWf<#4=WCz4/RB|J~ '=WPޫ^|}C'$7$a\=W!HOF~ 'J_Cz@=<$+^SoR_.S!>5aPޫV`OQDUOCz@QCL_!>j_ޤj_Ï^~3ԢW:I-zUsIUУ\=W@E$k1zƅR_ >_p_RMzU='ꀗI ^EOR_I-T\.KԸzƥoRzk~U#~ x~d<IxJ$Hz9oԸz@ԍ^/U< MO='!'1zASԢW S$ ^~ ~RKz͕z/UԢWz[~l|l1z͑J+~lIoUIyWşR_&z[~~~*(UL9$&/ULԢW1%W13HOga> =C&}J+~ ^_Ǩb_ɞ _5 ^cR_[~=`;='/UoR_I$X$'zOՊ_+/UoԢW˞_枡~Q^Ԓޫ@K~6S$'cRPzR5z—b_> _~6N(UPiIoUPN ^Q^P$(.g)I~zg)8&URԛ=WL \z/URN(URR$)C)=J+~^_"b_%R_I-XkWY%Wz/UԢWz[~PXQ(U?Ԓޫb_J+~IoUb_£ԢWz[1zWRKz1zԢWI-꿄W꿄T$P75(UԒޫr'zOнI-7|nQ$ }_+y_A$:XIA-) _Ԁ$_ޛx-@ʯ7Ų|Y>ޛxhԸzG>JzZH Aଟā+'"ש/UȽOdžޤYzǃR0 =H_ ޤW-Ų| xoMAଟ_@S~2zחH zט}I~>!s~?B.z=WK%7~,x=W0O`{+' oMFO2z_@> O$R ?$<x d= yd<-);(6?鷝oM:=W! #ԍޫ"7A~DJ0zȥ'#oR=W/T#w`_b F_e7@K~F+z~F=H_Ǿ1/=WpC`I$ϡ#\$'Al$ρ˄<< ?$<=ԀC~zz30'0O >> \'p>T _ .{6 = {2'f,xW|/|z >y?R&~H>t$8BH>p{@ }HS7ހpI = A@턐z@>Ah~BH=_!~ͼbBzx UԟCJ+~~Ӽbޫ3_8|b^0jO=C Q^9=ECNOUQ"=WNƤ=?PjQ^^_+x=WK)z?Ǫs~@~Iz#PDJ+~/U !z 4{a# =K4'1~,r|OR5zۥx!nV_0z|_|_>_)z|_|b#W 1^sA~ A'$uVA+ H>}?I >Q>W@w*'Hz?`@!E]QԁW>P-ZORH=W襟R_=Hz@SDEa>$C@!$ e<@!$}J+~H.z[~H/~HN _Uz[~IԕޫKoTO%OR,WD<)zs~9$w@~Q F=H'zр#RTOKI9%߰TOI`^ W䱿ޫXD< HzGԒޫ JU^W]||Ac~~| >p&&_`$ɁpIH<~IOvA BH<} h y6y4 }y4p&O$}H>$ԛa'cВv`v?cvBH=$["~{@!xw=(WRUğ|MzO"'"R(oU+zU,7<߳|Q3~< %xH=WHHUL %ER4z#G/UW~dϰ'&z >4_L_sԑ0z_^h_R4zHH^h_z~"#zeT|"DUx;=W*7/UQ!;~"?zޫ'ޫ&ԇUB!~^?z_ԇU-zeR4z:5'LA~O_FUD=$L_ zM^g%~ODOQ3~.~FUZ$GF.z/Ua(UԒޫRW:ޫCG+^?zrߩޫCԀ6#GԍR4zh_H(H(}H_N yFOQ3~Q+~R4zFU/z~ޤj_#?RsFUH}H:zER4zER5zަzWXԄUB!~!~!~ORWXC =H~_bޫ,*z =HHR_ޫ%'ԅ/U'!K~%H~_n=HR_i?zƾ=W`CLH >h_z~Sa/UNOR5zeR4zb=W1SԇU2!~ͽH~_qϩޫ/ޫ.ԇU'zRW\C ^?zB =C }J+~&$MԇUԇUCM+zERWiԇUQGޫ!>*z7D<ޤ_gzN_ɞ_5Ki yTiUU ԇUT } yTHUTFUԍ>R4zR4zh_瞤h_z~'#GOԍ_EPR_B(W␱WgEz|QzR5zP=E/PEzg^8`#W 1U0#W$#W* ^H(U=Ek1z Q^NF~1zWO}E>~)>C^ CK|Qz1ޫLw^Lԅ/UN ^LQ^L/U8#WCzW=Eߩp_^~>|Qz^~=J+~|QzԸz1zR_^>Q ^>'W=Eޥ~*~*8(UNT=CT-zWU4U/UԢW?|QzTR5zQ?ԍ^TW⨷Q^T/U z~~~ ^~R_Ͼ(WWⱧEzaϾ(W&W7b_'Eza?^X'gWԍ^c|W4=WsR5zORWqO1zשEzzORKz =H~__z[~X='>_ ~XJ+~X,~X//U!QQ^B^BQ#WWн0_䏲>^~+__j_KOłU-/U](U^dwWR_-}EDPJޥJ_ OœU"ԍ^D ~|z:HO)> Ix0 ,C'Ez.=E,z/UdR(Ud/U#/U#>(U#(~F,zl_2ߨb_3Ez!(WR5z FU% | Wa7!>d| \U%KHO(W>J,zW_T~-}J+~-W^^~-^~-=J+~ C J+~ /U*=(U*F ^T"zW| oؖO\1V_>W'+VVeU+a>1z5WEz4oIoU<O}CPJ+~ޤ_.['>ϳ| IbY>/RNzh@~ K>_/z=H:zƾbWG=WSNp'OU[;~.bW>bGzؼĀ_ޤYz/1IbW[HUY#G]a>ޤj_>b>zqKCǪœ~ R%=WIoUԋUkD^ z_/R/=Wb=W|Qzwy+ԋ/U)yt_Ǿ(Wg^x!~/'{~ }H1^;_b=WϾ(W'C{~ zOyԒޫRޫ7[=#zm>M ~Ix0 ~IxqFU(z~/j_=W{ԍ^h_IJ|\@IyrR5z˅OR%=WWԍԍؖOR5zc%FU16#G||_CǪ!~ I_'ԅ/U1+'=Wԍd6#G_bY>CR4z瘲zR%=Wȝ 1EOR%=Wȳ,da#W6~]CǪy,=WoR4z˩h_DR4z˥RKzˢשg{@c~ ̽I-jH_1ϩOU3I#zm̩FW#W+~ k#WH//+~^<#W~IJ| }K/#W5 /R=Wح\=W]IJ| ~~ N_z>IJ| ޥ~ }H'z_ԉOU7/)/R4z_ؖOFU8HR5z@#Yz{OR,WmFU9ԍ^r{A~k#G}H:z7['}vF<&zۿ|ؖO#ǩWR5zPEz|Qz>^zgz_=H_o1U?_g#zm:z|Qz?zO^_gR/=W򿘇OU|/U|!}:z_hh[}ԋU ԍ^~b>z/1!}E߰h _h ^zԉOUP@c}3*(|$[} >^zK@c}:z߾(WAԋU1QF۲#쥷ؖOGzOWJwWbT ^1J+}%RKz] PFCRKzFU2J ^d)zW ^_aF'dIJ|B_zOȿFU31zGEzW%W̭FU30}j_`O ^ kԒޫh;Hԍ,`bzFsOF?g$;a`8Iv ޤj_`E1oU5ԍޫjqFU5_Ƭbj!}DO_adb|j~|n=H2^3+WhzOԍ^4<#W R4zS#G >h_ao!}SOǪޡ}V*7HOU J>_`FU K>j_`W%0W*Q}CIoUTB#W*gFUTL#>| >}J+} _ab_a>U1!=WjԒޫ5> ^5kQ^5F R%Wj'QcԄOUޛva1z2(UoRKzR5zv6_a>—b_cbϩEzoԒޫl^!}gj_`C+IJ|>|z/UVԢWXԒޫԇUV@}s`~IJ|qb_`ԢW'Ԓޫ_`}d;='',/U R_`IoUO1>GFU }IJ|OR= %I/U Y_`Df_`OOUYUXB N_e}H'z=W`A}H'z*IЍHЏ}H'z$/R ޫA;}ԃB$=W?!}+'zN_cqϩU7Ԃw zIv7+z/U7=J+}=I-Sa>Qb_`mQ^z[}[%bW*`OVezU U =KhޤW+=H zV$t_`3ԄOU ˾j_aB' }H:zo\=Wn=!}OUH~_a}; ?PqkԢWpԒޫ8ԄOU0 Æ~j_a/='q_b_aGԢWp-z[}/`Rbgp_`}IJ|?a>ip_`oBwف>h!}RKz[_b_`Q^_`S#G`×IJ|*~|&}0WG~_a)9',`,z$E-{OUZIvZԇUZ~|C-=J+}~_`Ԓޫ }; >_eƾ1WsRޫX#G#G/R4zFU8}*#G ^h_c=W1'z}=W2|!1zdQ^I- ԑ};m}CuWeRKzf[c}o;̽CޥóRKzhkFU Rޫתl_`#Iv Uz/U G>%W5.z}WC=' CJ+}Q%Wo`W ^(Z$RW)=H zER5zmFU }bw=W6H_c^h_cH"ש ޫ<}}H=WxV#GR4zFU#G@?zOmWzqQ^=[}RDz@K}Y^ͽR5z H,FUij_`_#W Wa#W ^j_`<#W WR}H~_`-z}FU:6#G0#G3#GWFU:}HB=W[#GHz}zU^ԃ/I!;}=WxBw//zѨ!;}U\=W3RW0Iv7vb_hR_h[}=H_hſRW2 ޫ?v g$;||_a!}ǩ/U b=W|`#G?ؖO1?8}bY>P/R_a|QzF۰Z};v I@&}d;}H'z+ԃ j_bgOU H~_` 1Ԃw?zq'ޫ $;10)vH'z < 0FURDz H0A}aԇU`k_f"z =HD_f=H:zRW؂g%A}1z}#|x_bFU #GQ})>h_b W=W؂({ǪER4z[#GK~=Wz}j|x_`ԍGh_`=WFU=H5ϾIJ|z}?,`K':z}HW:?bY>@'rO d;>ZDU"}HR=W؊)z}RPcO!}Q}J^'zSGU/1|Ă_`FU1W;0`2'؍i=HaCԇU# ~}שp_b8XW؎ԍ^Gԍ^GF#WO^Ga>qw1zQ^|iIoU>6CW3}C ^Ǿ(WW0z}}(W?ԍ>kԍ^ ~W@}1b_aR5z"z}W@b5z-z}[ CR_`kIoUo^z}u~h_`Q#G?ԍ^~j_fJH̗w2k\=WّGԍ^ȯFUd`#GHԍ^"PWH/UFUX#WH_ ^*R_iMEҏHҞxWZc;}<ŋ}L#Wj_cWBb=WT1=W};}CzWLԒޫ4>1W`='c13?RKzӎ}CN=(UԒޫ<1Wq='t19SԒޫ9[#WN |}CN_(U@2$ *?a> C W 5$ #xj_dWWQ^a j_dWǩWIz[XW@K}>bGzC_R4zAFUhq!}/4<#G4kB4=HR_f^} ^ >_f7݀yb_`6(U_`W=WCEz=E=W W=W oW/R_d6_d7}=K!O|_bY>Gj_fh_fR4zQkXW}=HȀ %$/UD+zW"}EȂߨb_dBEz"w(WٱFUl?#G6#}d;6C6qQ^#^أWٰQ^T6,j_fbY>̽Hb>zr/UnN#G7)z}=C7J+}~_fP> =E C8[Q^{/Up#W8qW;ԢWK^WQ^/Up-j_g ޤJz=#G.|=WA|Ď_aR#G"טOUE|Qz]yt_j>_j~1Wډ=H5 ^E~ >_jPJ+}ECP`(UG(Wړ_^HԍI 1z2zWR^HWڔR_jE/|Qz%Pԋ~ԗ=Eԗb5zCoR5zGj_j8'L_dZ>IJ|ؖO"PĄR_b@/U$C ē/|Qz$ԇU$}IĒ/U$BK^}%R_da(WWOR_dd|Qz1wԸz*/PĢEz*O|Qz)#1z(I(U%EĢߩp_bXWؖQ^K/{}P@sQ^_`!Wp_` -z/UR_g0} ^?(Ur^WȡQ^/Ur IJ|=H'z;g$;}R4z5"=WؚԑMԑM}I"#W(%za$a[WE?c|R*O' W ' DUk>Lw%z>h`&BW X`&J_`&H|Q+}|GJ_`&b|%zaH`&,z^_ vb凞L2|J_bz'؞i%z<) ;W_ '؞=W؞w+O=W؞$;^O&}|Q+}K'%,aԍ^#IFUޤj_a#WO,aI ^#J+}qc^#+}roM{W>Ez@Gv(HwԍP/zTz}+}HQ!z}.h_`H:z}Js}AzԸz+#}BR=W d;h_bԍRpOI"'bFU)}H~_bg=Wؤ^}zUzqE=HKj_gPXԢW C/UÿR5z=#Wfh_`,ԍOR,W >}[ԢW EXW 'zW _a {FU^}=J+}EBWWHC R_a ] &j_a&OPM^JG(WI.z}=WJ4#G JIJ|}C CR_a)(WJԍ^%K gb>z?"S}R%=WK@v#W b'WK*z}Sԍ^%zUbWL5}b_a0ԢWLk/U ^}CԢWL+}b_dԢW)W(W)b_dR_d~_dPEOR_dK^/}d;%=C%}J+}f_bb_bR_b|QzLWا'EzN|QzM+C}ibWئ~IJ|iޡ}Ez}ؖO= ^нJ+}|QzbY>\O ^OR_`.Zqw1z/W =Eib_a4oQ^&/U@wؖO!}o|QzRR5zQ?K',I#W%^h_dטUK.}^j_b>h_bR5zUU*>b=WتW#WS=KKy=WOԍ^'^j_`0ԍ}_R`D#W=W pOo,`0*z`2qFU#PdԢW #WԇUR5z=H(/UQ^(WPN(U }E€ԍ^(z/UW _aA+1z)zW |Qz}/R5z)}wԍ^=Hho,^~b>zqFUE/R4z*xj_`4a.H =K+?R4z>IJ|FUQK'RH IJ|R ^R_`}EcR5zX}d;/U+#zWO|QzXFUb> -ؖO j_`_FUw>h_aIϘzFU^?R5z<#W=W'd;@WOR_`-{} BJRWFb=WGb=WH^_` gF۰d; `; agؖO1zԢWS= eRW}H~_`:1z=(U^_`:FU~IJ|U%zOKv=I|o@K}^)zB$H_`>N %|B >¡>¨,^*}HR_aTO¨@K}T1#WU?bY>©1z 2(Uo|Qz }v=CwEz ){}B[% ~}ԢWV2 /7݅`%%+=H°# ů1^+1>sOR,Wخ~;=Ht/1WFbSԍXH#WHWH¿\=WWbY>¹;ԋ/U>}rϩU=H~_a`CvzOiA;}_aeǩW_b`I`D~ՄvT}v@[N C _dAزA$ K"v,7 v,r|آO#_FUbzO#I$1'ԋU`='I-;ԋU|)"=W@K}+_`J}R_ahHUת @Kah&zf; B"- ^W B~O\W0!}1ޫ wG'H~_`LV!}0C`EvRWŸ` 9>9 ^cR_` !z[},ԋU=vC(fR^ }HsFU/R4z'qFU/R4z'>}8FUR4z'0}Fh_bԍZ_FU-z}Ha>ŧ}ER4zi;ԍ z}BR4z(}A?'zOUz}AKԍ h_`P-7=W/>[=W!#Wa=W}1#ԍO=W ޤh_` ,}0]#Gaԍ-#G jD; g}RW[=Hkԍ-H#G^h_`Tԍ }Q=W!z}Q3dO*(OUBޫ >Wa`VB"}[?R,W"}YGԋ/Ub^ ŏR,WYzH zHN_` )ze)zeɆ^Yz`ԍyFULd>}ف>ɅPɂ=W # #Q'#W ^_au 1zԢW]I o|Qz.aUb_`\*zW'=WEG/W^./UJ+}y'=W{}xWJ+}j=Eŵ}kJ+}g_b~j_bؓWضV(U-_d}MJ+}Vs}H^_d_dҗ3}E/PɥR_d(W CR_``?~}7Ez0IO1z0J+}s^/z}H?P7Ez"{}KԸzp7v.;v.'zUϰ'`k,^0 )z*xj_aZ %sHUG'h_`bi\=W$;=HĥFU"ǘUAآO2sW$W!?^ =C"EzwGb=WغyWغԢWغ/U.}Ezt/Ub_`fԢW}E1z3kQ^ 1oCG2p_`heFUoPԢW{}Gb_`h$WAc^ }Ez5{}!}_|Qz5-z^;Rb_`ja(U/{}G'ؼԍ^^= ^^B(U/9G'ؼV ^^=J+}߾(W9>? ^ zWbw(WO6+z/UǩEz6E }$;q/# H z8q U}}v/PFU/}R4z}=WؾFU/z}h_bKԍ_+s}R4z|v/}C'OR4z9z}^_z9qFU"=Wh_`r["}oH;J  بA" ŐߩWԍ^`=H7B|E2'9OUzO<=Kߩp_`zԍ^R=HS"}"K>1K1UR,Wa>ob_`|ԢWz[}HOU^1Uޤ_c1zԢW'%W~`~B_`~@S};HUOSHUߘԸz@HUy z@<ϩ ^bF1oU5W boU)1' K '1 5xޫk zynj@-׌@-R%=W=W|:zb=WH^?"{[Ըz=H^-}1Ǫ$e}H^:z}b=WOU"y1|] <:z~OUC|:z~kCb> H6z}Co$'b}I> R 1@|G~j^ԊbFUJ>1oUJ1oUI\=WdV.3;B|ur^ )1cԉOUy z|!*xE/R,Wh?#z|ό@-Aԋ/U:z|"z}oޫ|:z|"'yt^F oryh^H>ǘ/UWb5<=Wj))Qo@c{1KCgbߘOU =HCƅR/W4*z} ^Jԋ/U1 jO]ATJU'z{?=W}7 ^^}!> Sԋ/U@?'5 i^1`g='["{˾W;Ԁs?> !{8 11z|'B(Uޤ^O_HOU>1U^^NZ ^ ˞IoUsW6W/RKz|l{{f~1U$_='6C§Ez|l-z[{A U >{BwW$G’ XN#G}HOR4z}`FU=HYz}a{ԍ߄FU'{~h^%R4z~R4z~^7HqOԍ7,{鞤h^wԍ70{Q^ #GR5z|pqFU+#W ޤ?z|,_CR4z|,B#Gw=W >{`FU/R4z|-a> 𵟨b^ZQ^ DORKz|-Iɯ=W9a> b^埩Ez|sW%W9oS ^^ȻIoUoR5z|.{rW .z|/_Bcԍ ſR4z|> `O|"_ȟ c{$Y> \ IR=WFU=HߩWFU =HmFUOǪo 1z|>|OUb}o1x:z|1a> 1z|1gQ^ j$>1!=W1U"O%WObZ ^ KIoU)1!=Wx W I-ȅ\=W}H 7"b^d,zW$RKz|3 >f9"{ԍޫ ='>{[ԢWI-}73b^ԢW;z[{㳿1z|vQ^z[{aH7C?o[ ߰AaxhŲ||{&U O }7Rߌjz|50z|b> Looc/߉_ؼO~$xl|1ob> K$AؾO|Z %oML>h^ԍ|bLz|xTǪǀ['= ['=``O|z >$|I $|cI I^ +xĦ^ =W˞bW&1Kz|O `zA  o 1{RU >7׎}J{Ŀ' > Ĭ^eRUo@'>bVz||ԀC{{PO||\ ^/ԓz=W@B!K{ HR^m4ԓ O@'d|0{D7bG@{0Iz|}A> @!PO|7 %" ^b= o ^7I!{> A/} 0 $1<&{7oA4'/!{Oԍ^"FU=> ooU}DUx3z|EDQ3{>j^vԍ^j^W^#}DUH1ԍ^##W'ޫ#?z|*zU^1V^@{+{ᯩW3 E+ ޤ?z|<-z*?V~U=AUgKV~AUgwV~ AUg#V~ AUgg*~9UPUYFUPUY,qV~V~**O* ?d[Ue ?V!*JAUg ^ >aUV+PUY/PUYPUYPUY*/PUYPUY[V~~ ?U9Uy ?V2W*bϨ*b**PUY4/PUY4PUY1OV~̷ ?V9Ǩ*sPUYAUgAUg}AUgzz ^* ?A5U ?AV~ ?A+zS=AUg_*s ?B<U#zВAUgEPUYV~V~**O* ?h[U/PUY8UPUYV~PUY-zyV~* * Ǩ* ?C+˾z ?j ?jVULU~AϨ*V~ ?DJU}AUgPUYcoPUYe^>Ÿ*oV~V~V~V~޿PUYq?V~ܵ ?naUV~ᇨ*ÏPUY*_V~ ?M}AUg ^OPUY ?Jޠ3VG ?s ?VB7*PUYPUYPUY&ޠWBUғ ?SU[Ue ?VQ*AUg ^>X}AUg=AUg=AUg/PUY)_V~]U }AUg䈽AUg=AUg䄏PUY ?$&z?*9UO=AUgoPUY%+V~I,%PUY1** V~ ?FAUgſPUY(V~J8UAUgAUg?V~J-zFPUY.PUY-*V~K)zePUY, ?!*I ?  VUPUYV~s ?ry ?r ?r ?rYU/ͽAUgAUg^tPUY8 ?G-Ɇ^aǨ*} ?&W ?& akV~L0ɰɬ=AUgiKV~M+ɥPUYfU'*PUYeoPUYi_*V~V~V~+V~ ?t_U6U_ ?v ?v ?v)ݖAUg AUg=AUgAUg+UAUg ^PUY:PUY9*V~N)zPUY8 ?}AUg^ OPUY ?ޠ 3V~! s ?=AUg7*CJUePUY_U* V~I>AUg[Uz=AUgޠAUg* ?H0>"V~\zKV~J"]U#_PUYV~U$PUY+zg*PUY}AUgy ?4oPUYz ?2*D6UAUg"*DIU*D-S/PUYq ?OAUg-~OUPUYaU8}AUgM* U2* AUgL ?'zzy[V~OLUϨ*$V~ ?IJU}AUg%PUYm ?d/PUY ??PUY[U^V~#zzAUg8 ?^ ?(C ?(0Uz/PUY!{*QUTPUYH[U~,V~U"OPUYb*gbߘgl@6q Y>, Y ?b* }AUg6U8V~!|5%Y8qJqW*7*ßU V~ ? ? |LY@F1g"bϘ?Ob&,$j#AϲUe b V}1>#1>'b V}Qy5Y1,5Y1/5YRm gJ1>P)IjSj줷 gbe gb;>1_ }gȷ }gde }gdq }gd} }ge_a }gdZ>20Y3@ϱ1>uyg_>>^b+Ry$yWY瘊>7>W>gEu`"ϰHm"ϰHEu` Eu`'Eu`S]g$-je"ϱǘ>Ƨb+"ϱ j) |}y $Yb V}/1>)A*ϲ|*a gS1>ʄ1k>ʄ1k>Aϰ_ gy;Y>b}8!g| yAY6_!gٯg}L >1m"bϲϘ>8"bϰN"bϰIUa >@ |}0 YX@1gaK@1g`"ϲט>yo'>b.,\Y7|_Y7.yyy|_Y 7AUg}B*ϲGY^y}ueޡgx}}>нB:ϲg{P쾯P#/EeP}}AUgzW*F-ϴePUY*Ua>?=Ua@(ϱ+V}oV}ߨ*0U >!Ub *dU`QU` >EPUYb[UbPUY! >g\Yg:keg:X#~YY}w啟`Dµ`'ϰtR >Гeg:*{jϰt'YY\ _V}S+>_ϰtY`Z ~g:Lg:.~YYf,F|4Y,{)g؈eeg؈k>E_V}o|xDϱsb"+>A߾tDϱϱeg؈B>C+>C|D,1g؈eg؈ *DsY"Weg؈}'啟b!GV}/+>D|D*~YY" vD+~YY" ~bGY" V}Ǩg؈YD-zK>Aoϱ] V}Pg؈^D0{jϱeg؋5b*+>SO|NY"YY"{Ub(ϱob(ϱϱweg؊=b*+>VH_V}Y"~YY"ub+?+>VEqeg؊+>W?V}|R?,R|"Y",D1V}_V}}啟b(b(eg؊W ϱXE\E-~YY"{g؊.YY"=՟b)wϱ>S啟b*w0,V}LdziegW }M, >ǣ+>ǫ|4Y=8{&,g啟cπ6Y==z1gO+>Ǩ_Mg啟cھ9gϱ~bgegDg'ϱKgIzTV}D+>ǥoϱegT}JV}K?uckϱ+>ǩV}K:ϱsϱ{+>ǥ+>Ǧ}S,j>g;2`W啟`mE`+>*k,c ,q~YYYV}(gV}V}ϰvk>啟`>_V}?Y|ug;?,ee/+>W*eO+>ء >[ϰv)`T,eYYſ+>ػ5`eg;.r,f1:Y?V}ߘk>eV}ƞb@Y#YY#yk>a啟b0G>a啟b1ǘ>a啟b0Y,YY#0F!~YY#g،}eg؍'>fV}|ĂFqeg،!ϱ啟b1;Cb2G啟b2O}+>a'k>d+>a?}‡啟b0՟b0eg،WrϱXF@ Y#,=@`F,tF.YY#A g،`FN+>s/1K>sO+>u^}ߖV}XGYY#ϱϱ/P }+>qk>vV}瞠,P }~YY#yfGkeg؏W}ߖV} Y#,O1!,^b ,ğ+>rg؎'BY#Y# }>qOϱT}}b9ggY#_Y#@Y#~6Y#zϱ]nG-g؎]&k>r >rK>sJϱY#~}1AY>Q,~gY>5/Y>Ug}߁c}@  >ßϱcQ:ϱK>~}||?%c >/,~r|{:ϱ}}OY>g >_K>8g%coUc?WY>'~",$ ϱYg'Ig|R|$8|ϱSc?%cCV}߇>—՟cO>§㕟c䅟cc>şV}|,}1V}?", ϱo=@|]Bϱ{ecUc=g-g; }՟`G }/}OY &,#,߇ >C e`s-}Ï,Ek>`,:YyMgϰy'e`񟘊>+>_1>1>^b}o1V}>gb0,/P`I=Y=Y bn V}Cg<+yV ^b8Y?}SB՟` >,Y ?Y:ϰxZ`[K>gJϰx.rϰx[ϰx\``]gV} _}OP}_Pg=UZϰzm`m`P&,ϰz9Rϰz` >`/͓&Go1yo~f_m/ o?/dV2dVa߷i~[??Dzgo-C~o-TLݺ4n1߷?~'a1IZo7ojռ( QCf3њU3jg N8j?Lս3斦'moijAT3jD?&B߷-Mogj?-S5oL?6g QiB)qCF o T?V߷MT63j߷ҔW'~ Si[ OE ?3nIgC4W3L?*n?MSR↍߷??KV?3߷Ѽ5g -UGotILս37q;o߷ҒM.%o䖭33 g7C~wj~[;V??3Ŀ'o~gO?_~gg蔠1#߷J -%RɴQ1Pٿ'?ß??o߷k3g54?+~ o(o9MCOd7"zAv#7ߨKg4mRb8vGIT:'#oDVb9[zR;~pb8vGqSCYb9_ݧb8vGCr)gb9gj>qkC4W؎Z;~pb8vGCr)gb:f3r8C?g QCf؎[;~pVG.oQ8? {˻oov#ߨ#7ߨ$G0Q8?#oQ8? ;{o(;~p$"8[o*n|ivG '3jޙ|'cmC?g~mC?gcwߨ>}C?gf@wߨ ;-;~p!33 ȧGݏ{o ;~pv>Q8?ijzg|KSwߨoQ8?{ߨ4 U?cC?gOc= Q8?.(hگ3SKf|Q8?U,OE;~p$ZAߨc-C?g8j>wߨ/| NoQ8?f#oQ8?YC?gս3nC?gq;f~C?ghF3Þ&3;oC?gc3NN3V3ݏoiLѧO;~p= C?g U?>+oQ8?zlH–3R͢ Jž3V[>7ߨѼ5_4vG=;od7"zAv>ߨnE=>|Z;~p>ߨ↍@ɛo3ݏ{oɽolݜ"8wߨ ފ|^;~pO|_;~p5QSt?|`;~p5QMTc3;v3yQ8?܊{}C?gRDďoQ8?܊{}=4;~po=5;~p%(4g[omC?gߨa;~pM}C?gR=_=Q8?d*>C?gOc= od7"zAvG{o5ſvG~x?\ѬE`o oC1 po|'~/ 1iWۅ{?;po|'^b 1=L=_6?_ DOo "6h2po|'\=M"~2-~O%/3+~O k/ TJpo|'G_F 1Cۅ{?Apo|'&3-~OB Rpo|'1xN/ Izpo|'$o _ / I/po|' K rOz/ Hx po|'%?[~O@n_]_n;{?!3T G=-~ߚ:߷331;Uf ?t"of$K߷331w:*of"/`譿OٶhS߷334DtYF? {4Sf:-f/{E~ߚ{F~ߚUDQONC]~ߚ3mOhDlݜ~ߚv"~i3?b"~ߚHE؈BԎ{~i3?!b#=~ߚ$D;ofHw~i3?(]4!؈Q[NID~ߚHD7~i3?\Ѭt?H>Po@6z!_w1 ]_&3po|L L_&ŇWۅ{gHJpo|LJJ34./?bk3"7+~nE=>#Lc1 }~ߚٟ؈` ؊iOH=4oOP;N7~i3?f~↍@Efgb+ ~ߚb#"fYU`1o@6e~އo?z(FiW_ OE/SH#RwߟLcB%(?؋&o?fg5`3oCJA?-~,(WYD/d/YM="/d ]_ ?ȥF/d*Iۅ{̅*pd =-+ Y@̝P! Y!n;{C‡o|m=S"8Iۅ,~PԴyx$ Yvs̈!_ Y"?X{p2qo YnE=>$ÿvvCo ݈̆w~i3? ۱Z̀ob*fo?fgdv"7~i3? ؊_̉]4Ǧ[4 ~f?ٻ9Dq"o4Vo?fg؊N;~i3?m=S"8QKO2#vfY "w|4TM}_8d7"zAvwߟLc5z?~f?%=0oGrFO?'bo?.@ױdۅ|Iۅ|~ۅia`S'n;|`Rۅid~{p ?qnf;+¿n;|=Pf}=_ۅivk!3v091gi;~k9ǧ4ⷄ{Q30zfYE `!?o@6O_oCԯ /D_/-<po_]zd=_/%-v~ }_/"_/"σ_/ o %v1_ۅ|B+ %E]ۅ|N/ƕ~hDۅ| D=_/;}_/gei]_/&%v~hapo_I]_/Cne}_/AaWnKonK{7 %؁nKd)C"_ %0+~^/ %po_^Ǖ~~ۅ|D ;E/r#vm)$ "_/YhOڢnKNpo_"6nnKcE %{؞[  SD ~2v~]C/b`+~%po_.io %]B#D  % v~W #ۅ|F}}_/baR/sJ͝jpo_bo %eW  $ { p|;~i5܊{}DŽ/  ;HvO K߷33@cҦo?fgzVcS߷33@co?fg.Ǣo?fgh v=-fñ{߷334L;4Dof>jvݜ8?vkOA`mOBcw~i3?v=B"cط~i3?_{Vo?fgٴ@c~ߚ"o?fgf0;!ofB#fo?fg]{4Fn7~i3?A`o?fgFo?fgG߷33>Vo?fg"4@ءO`Sv)f;bo?fg[Q3v[4F\4@hA0Ho@6 RzJ 𐟾v~ޠG5~ޠB/HVpoPo !ۅz VN/H wǩ]_7d7"zAvro)Lc`Yfo}?M2Aa'߷33 b0O4LΏ8wb0OoOb0O3߷33 b1s߷33 .oC'/AC/m_n?j=ž(vCr)gB-1g`gϱOJ?b1߷33 D jB m+v .IҾ/j"x-~ޠ@WW@nE=>_&15Oo?fgj~ߚ 4k?t?/$E o|ۅz܊{}wc/ S{~i3?\Ѭ6`Pu"|K}k_DY8nծpoPAeD7Βp#~ޡr ʙ3 B?ۅzb/#}Wnfw‡oP3(v3?;-~ޡbsn ȧGݎj&1A%(-:~e1G쾽~ߙLc/H{xfc3_؎߷33 ˧ 3Zj.UP ȧGgчcƻ =ocɾ7}O6Lc7}~a?yH=Nocl=f$^=kإ=f-o&1.]~a?0W~y=f ;w}`ൿ=h`k=hv o&1=jNococw؆k= 4k??5my;~[Ϸ nE=>vyv Lc4;rF BЧoއo4hwè{poP/J1poP/Jȅ~/ {Rn @V| !3s&1'v#S.x~i3?v#~i3?o؎yOhvS v#4@h.d?%hS`vJ I(vC!‡oQ @c o E%wCۅޢ0C(vo}P/(0%vC|n;zoE(vAH[‡oQTo_ۅޢs5 EPiWۅzQn/&/_܊{}pqv+Lc'{DC33PAEߚ 4k?b$]? hS}. :-~bC"n!4po1 ?QgBn!~po1 ?P=0طۅyaPRpo1 ?j>ۅyaY{'n!Q_5<Rpo1 ?j2n!@3po1 ?j]ۅyaQ~bx _ۅyau_ۅyaۅyapo1 ?:J0&y/C⧞_grv~b.n;ya ߍ&Oc= jv &1,;zsBOb2No?fgQF'ofb:o?fg=[Os-~ߚP>FFƠ#~ߚjƣك߷33v#ofRWb0߷33ƛ4{ofQoo?fg5}kƩ&o?fg^w߷33DM~ߚ،{Oso߷33?S8،qOti7~i3?*#~i3? {4@hīt? ƅ?Oc= o1_1ocef ^9oc\Ѭ?ЧoCr)g[o_o&1 M`fSH#2 v5}gEk 3woCr)gc'o߷{1@hOfSH# [ ?v3q= 4k?b Oc= C v$o&1 m``fSH# ߉.v 7}gA}`cOc= o?&1XWLc51WOA͐?nmnE=>oLAct~a?Yqt?ء3woCr)ghgcg; rF 0!33ocݕ}got κonmnE=> ;oLcSLc5R1 l nmnE=> oLc[ ͋~ l }3 woC&UKR}HItHuDo_ٻiQ'RASU8%~;} ]MTL߷5&DpR.i_ `{U<u5Pij.oԅO4]MT6+1oo'A]O<q!.srAHS#rD>oRDgBȓ"7$O {{!O$R}HatHuȓS=_'o~ߍ.q.z~]gԀAc?mžއoW]|[‡oRM7]PC@JHc {z8nE=>) rFHOAf1W4SeLcU)oLc-Z6C]O@m A&,xއo?3S;zO T'o~ޤW VSj 륚iafziaԖ?գd5]<u5P—oCC4W ]zM! &j`Y{{ S-Z6C]OE˧@nv[5oCN٫t&ԀoZlԖitf;~9]:3Jl{"ZlԌO4_b'oC v"vS?գd5]<s6Ljs6L߷?AjѲR.iAs.އo?3S[W'2ԃ_}Oh u?0]<u5QSt?9oCEMzZlԃ@L nއo?3S۷oR??գd5> 멪jN}ju5QMT~ ϻ{!S-Z6C]O.ixjը+oS}Oh u?Li-[g|4>vs5?-[g|4>*??գd51i[g;2vs5?[g;2#/}Oh u?FO4fᬝߎfYk'o~1?գd51O4aWb]ߎfXUسo~1 ?գd51]<s'm=ߎf8nvC߷M?գd517y:5oL`D÷5oL`D÷oAjѲO4]MT6`D㷡jȎ;'x* VS<u5KWKj"o~1 ?գd518y:iV`DWvs5?f{}Oh u?CK@b̝ߎfXfNbFkbstHVɥ.އo?3SJ]x5 VS ɮ;zO&#}Oh u?GO4azO xZl$@&zO&{S-Z6C]O@G{zOG{{ VSċtHW_bGoCW_bGo~1?գd51>y?IY+v;~9i=%nb{!tHuDT}އo?3S멪x< VS LzO3:B ;S-Z6C]O@1$;~9`c:I3Fkb O~S(_AjѲ7O4\ҔW':-;~9\ҔW':-O}Oh u?IO4bjՊo~1S-Z6C]O!tHu54.އo?3S멢j(if]xē!wO4]MSCV 8vs5?&q߷\Fkb!]<ՖwYoCVYgݽxZl J Yvs5?_%b!FkbOy:饩x_vs5?ijnv {FkbQy?- zOпoFkb c^އo?3Sc^b??գd51i;j՘w+oo}Oh u?Dۧ@Nc]ߎf'1Ůb&Fkb'<pvs5?8Zl" A"RDď|9JPh2v1!]<r%(4g)ߎf"RKf~r߷@Zl tHu7C|9+v;~9\St?Òo~1}Oh u?EK@Dz3JPPgS;{!b 멪&B|ju5QDTo{!"y?n_oC b?գd51O4\:$Ȏ?@gjr$"8o~1}Oh u?KWO4-oo}xZ VS]<qhejqhe߷AGZl ߎf'; ;{+ VS<soC Ͼw=x\ VSĹtH ʝߎf'*vZl ;zOOO`#Zl 멪!?j}O S-Z6C]O{O4𞿝GoC vq L硾ɓ$I)s&L'DzL"Nܑ>&H"7$O3v eA U-Cm*$*IT:#)@hD4nۤK)衫Jj鞦敬j'CtM*%iL쑦qm=Lf΍idڦOS&7qSiQ'hҖѠQ!FE"[7vTOL'fȒކt ygOKtZ&P[7vGmQiz6gvCdR.1 ZT=3"yYDm=D!jɴ[ІZqV1 QH3rΈݵ,(Ȥ]cT|BEF>!LMMQH3g= (Ȥ]c-*d(Ȥ]c#v*oC! 2)axѬ7jyhݳ! 2)ax2F"vg"7gSDIQH3Yvm1)|C<V2g;3ĦCdR.1 (Ȥ]cvCdR.1 ɜ (Ȥ]c+:'-N|BEF>!R҉d>!FE"G7g;)hGjZYLm=D!̈?!7l{DNȨMf9m, LAeD4pvSêjjRЗ> Cɣ=råˇK.SDáf,􎚴?5h3Zju3TF̺l;8Nے! pG!mdp0܇ $OCS<$m*hݴ( 2 HKF .8\q`Bd6M 4k=3ɣjjYgVJՓFOBO$OC$eL"7g>zOQ%zY*uSѮAYL։鞡TZjf}teff=Љ3TZjtPgf=͛fLքFϮ 6n}tYS<ȴ4ɣbDZ3LՓJ[J;&h͕vz隲iIFĉZg y5v隲m*$6$Jգ=tYLCJe3v Y 4k>VlJWOC*j.]tٲm=D![J͛&IoB&mSTrf͔QizSTrhZe36MZSVz6KzKUT2*S=LOQ%lJWkBd6RSѮ$Jգ9jQiz5PѵGsIoBVl6KzSTr8 CVCråˇK.SDáf,􎚴?5h3Zju3TF2<;nH2pprpC#1\HFr;&ɣfT i1(2"CF:鐧 fn͕(tMr [U=9}r 2hɴ6}q"VTE?m=ZODNw=GrODr-R%ˮ#Jգ9j[.d)C;npݺ+fdY$4}qVTInDӏ]q"VTInDӏVS!!z &)i%jќNDM8Ze2&N9jPz[4粟+TYĚU9z@e \@h?u3ECIw=D!g[7g8pރ$\ܑ9 SڞI-]D%S\3e \g9gQ<ȓ(n-R먞f 9SӮy@hD|ԍ=  Z零@hDmϮAtDDV&KRnԑ;)""i44nٓjB]2!ZU9vsӮ#ҩ۳r?!Bd6M%jћ)hA]3VNʦ쥪55eSvM*%8]3VQ)nZ]3YjU7dz%8\z% z8t̚&HT Rʉ'm=D!qSF"L\=M)dz'e=7];62B:5ҳfz-C%jќNɣ@GՓi$\ݛDSi$]3vԷjќNVrz)Q:#rDބ=u7$Nz-Cd s4W Bٲ3&)]DjHef΍r R$7D7g>z[4Z7ly-HKPŐdkBd3 ۢfECI_pLråˇK.SDáf,􎚴?5h3Zju3Ztvp$B8898 Ga!dîP V&eD3)UCVzm)욷lʪ&3iLgeJz*eUkm)Y5nTMgeJz*eUk..\:\tp&4)gtաCUJPfkg]3wҢOASKS5)c\:\tprêht; ХV㦭kMTjݚ"+iM6M|UNY7?U:d5T..\:\tp&4)gtաCUA&~Jm*$LՒ !7SiQ'..\:\tpr4L:hRHCV5H+",҅DY SFzAO-S[8d6Hڴr AE}r fFAeL홲ѮDYMD;)衽vp$B8898 GcC#1aySw&|C!FE"#8fCdR.1 jiD2"vg2"! 2)ayI"g(|C<;jhd>!FE"#&d>!FE"#Q=-2"vg%d>!FE"# ڢNCtW (Ȥ]råˇK.SDáf,􎚴?5h3ZjuL8 iQ']6G'mCNN#gdp0멞7Am*$åˇK..\:C Y5h~:jf@f3TIM@yfٻ9ͥD7Dq-HZҢOSv΍AM[+VMKE3\tpråˇT0vK=#MZ֚L3Jդ\ѳ6MFF"g-S?;IiC(n9\U=I\0?:5Է3Jjh\z-CƹZKK)k6nvS"8 QTh\=GsT6l!͝3g7͝g,PѵZ'r-Rk<2B?e+VӮEpZd~V%]-4AlZKNpråˇKa3BzGMZ?5P:G jh֕kRIRgF,D&RgFdͽLnɣj"8eMT2:53ɣ@GՔ茩Mkg5PɣH7Dd vɣ@jVl S$ Q5%2@#& MVRgFd&h57lHSU 8d*hzJ͝攲lfΆDoiK)YzieT"\=LE?m=LQ:DfH7DdѴ2:53ɣie+6t22@#'N3 5NڦGRgFz!7TɴgFVld4ծAMOS$ Q5%2@#*jG5h~z(dmr 24pʔSծAMOS)Y(\=LM2@#&ѮAMOS)Y SU 8 S$&TI PFVl S&茐SiQ'LFVlLݱ"z*eMT2h4TG nɣie+6t/8 Aprá3BzGMZ?5P: \.\tprvK=#MZ֚L։nDӮ\tprvK=#MZ֚L֖NѲuk..\:4)gtաCŰMMM\:\tpt; ХV㦭kMTkL'tåˇKC Y5h~:jf@f4 ..\:\t:hRHCV5S5z[4NmråˇCf,􎚴?5h3Zju3TVtOK&s.\tprvK=#MZ֚L]6prá3BzGMZ?5P:;jMK2#gVSFMK2# $"V.\ɒ+JEm7MT6ZSU pJ]NpråˇK..\:G"@i5h~:jt%t h@l T!fr!kdpNfkAhٴZåˇK..\:\tp&tMtաCA#*?k=+Qg)*41 NC04 u-PѵHS=LKRf靫tsFVl8 fљ"jd=sVljV!jd&O:zjZ"7EmS)M: S&)\ݚ#*7?J͛&?\ݚ#$ 'VծnE 뛳De2gd뛳Dd=LQMZ攒iq,RIEpz57$nIsj'CtMsdꥼmD]4Lս3멞敬OE )A4ie+6tkg~Jm*$hvsf΍svhjޙLZi4m=LTƹidڦj53+6t4l\D͝  7 SiQ'h*%iL쑦qXaaaaa @4 baaa3 aaaaa8aaN!aaaaaaaa8d3 aaaaa3 aaaaa v 0 0 0 0 0 0 0 0fE 0 0 0 ' 0 0 0 0 0q 0 0 0C 0 0 ' `?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG. y4@dѬS&VggAM[+VMU=>= g3̈ݜm=D!fVrz5"JWOFzg+]+6m"kBl]B#fl]3Z'zQizJٛY59TkkB$Qiz55ATkk+6m]3Z7g>f3ٻ95eL"ҢS&h]3VM)m*$6$Jգ6TNTijɥ$M%jўd)CdSjɴhؑ+V5e2!6ALՓJH=ّ]3VM);r4Z3Q:#*\K4!tS̆ɣj3zRЗ>zSU 8dCtFM(A36 y4@dѬS&VggS&敫& f$OC$eL"7g>=Mބ>Vlg+Vrz4ꕜ*Vl4DBlDMz4DkDP-5OC [3k?3YY-5OG3Z&jMSzjMSVl7g?3Z7g?3TlݜYS<ȴ4ɣbDZ3jɥ-DFĉZfʉʍ;>fRAĴS;)@hY 4l͔Qiz5%LݲDH Ϯq-f @hvM[7vSCz)Bd6Ğᓊ4k;)њSU;fh͕M4ltmfs2&ўTITݓFF6g:3*m*$hvS7lF@hٛ)Tn%LݲDH ϐP[7vGmQiz7Ln $gdz'e=7tjnfQ6~Bnf9mPQ8r]2!?D Oe?k>CJe3v Y 4k>VlL5Jؗ.z6KzKUT2*S=LOQ%lJWkj稒ބfOQ%lJWtS&IoB)jRZDZ36nvM2\xݫIA6ALfDCtWj]D7lȭ*uݲDZ'ihJLݲDZ';n}r ""i44nZOKvLIv̜KR:鐧 ҩ۳tS̆D= *9[#d)Cdѱ"Vu5hQ)nZ]3YjU7dS5m=UNʦ쥪55eSvMSȍٴ@\z% z8t̚&HTYhNFtFOQ%mTѻmu]B$Qiz53M[7vSCz53tٶKzĉZg-Sh;d 5dz-C"7fz-CPtRݫFr;)Y]DKzNܑ;i$ z\2 Z'fʒD̚uݩ"rpE:5(e+6tkgz% 8 ~ٻ9ZLJ PѲ2!U5NQSЁ,Ӑ[ 7gDM3jzDDr-R%ˢg-S>"OKtZ&Sj>᜵N(n9e?k?D"OH +KݲDZ';n||9g|Ivǒԅ=-ڒ'e3tDDV&2q-HT5hQ)nZUC*hQ)[OUD)jfU nɴTJq>ݛD vԉ-(l4Fdv5!2EpZf͢=)eDKz۸vf= 4@D蝔Pލz S͛i$$Jգ9jG& &IoBݛDSi$!RJ'vCdR.1 vs"vgބ6CdR.1 DFCdR.1 VrzQH3rΈݵ,(Ȥ]cMRHCdR.1 (Ȥ]cOJ$!7gK! 2)ax2"vgSL'|C<QH3I8qḊ(Ȥ]cTC! 2)ax3! 2)ax̔ډn|C!FE"멞7Am*$3-D\DͳvsJ=MnZͥD3\=LV7g;iQ'8ge2DͳvsD7Dq-H[iQ'FFgVJՓfm*$hvS kk<2B?e+VӮEpZd~V%]-4AlZKN,[4Zje+6tkRȄBe+6tkLʦ6]2#TC)Y\=L8$4pH YJ͝ (nʚdƹzSU 8dCtFMl8$f΍r 2@RS$ 2h;d 5e+6tkM2f]3vĉ評5PɣLQ2&ѮiK*[̆VldK攲:'UNR,u3ʔS4FdCtFMOS)Y\=L6RgC*QOOS$ 2qD \=LTd~Je+6tkgzjLLJ>z4m=LfΆGKMZdѴ2@RS$ 24qhV짢H S*jG E?m=ZdѴ2:R~z3ʚd$ 2hzJ͝dѴ2: P5Pɣr 2BoMMD 4m=Lf΍r 2hzJ͝ (n 56}tȎ4m=Lf΍,[4Zje+6tm)dB!2::j62&Dpʚe+6th3ɣ@GՔ茩Mh3ʚd$ 2h;d 5e+6th3TFIL(nɣ@GՔU 8d3vĉ評5PɣLQ2&Ѵ-Ce+6t2%C},fΉ饕ST+]zR~z8t̐(nɣie+6th3ɣie+6t22@#'NdޚmS#S)YAHMv2?%2m*$ 2hzJ͝ 斚dѴ2@RS$ 24qpɫCSC$Vh3ʚd*QOOV=L6RgC*QOOV=LM2@#&ѠS&茩Mh3 56vH7DdѴ2:4dѴ2: Pzjm*$Ȏ4m=Lf΍c \2"vg bS! 2)ayB &dwg;iL(Ȥ]cd>!FE"#)iT 7d>!FE"#&E茇(Ȥ]c3HCdR.1 f7|C!"zY3|CPލsvhN% ]MT5ijAu(hڤ sJef5 N\=T&jޙ3;bF, ]-MkV[ͮhjR↍4>7RJtrTZPԸj54ӮLս3nnv[FiVie+6tkPѵHU*nqR͒"-S2Elռzj8 fљ5o2-[g]Sv3ѮEC Q?MOQWYz"%+=ESUZ[]q{'GJVjw Bu s9s9ĆBC#9s909s9s8$29s9s@˜9s9s9s9s9$Ls9s8ɀ9s9sas9s9q >!%sC9s9s9+9s @ ~Eu^F[_/9Pq~_KH~ /J#Vű~p s'BTy8EpdDШ* #ͶΜ"P6EJT @|\ͶΜ"T N L0d U2TB@TB!ppW'jb\TA13m(sADHdJ.+) [[SӄiWH+.l4F2yѰ(?j*̔ G+eJGDM BȐJ# Dpttrc$2E%  cq*{m~R5IDNYP=BtJ# Bfb#̓qPQ"ʅHձ= 8FE V]Xh"t0yz6el#Vű~L G+YRcBP&2Rt<98e!)(`X1llR5ln%Op3`vc$2E% -Fĩ\ eIڢ0G0@F ! @xsf#~d.&lŇ9ADHdJ.+) [[SxfSfg8xƆAR# 626`9ŲPd"8::xBf9ɛleӄiWK.,4y:fJeeލ@h?-Tb5ln1 [a)́RӜHȉc%&ln9PN"ӝPQk6PQ N C#VT|4uK.BL:|W˽ 2Ѷb5lnd2Ӏ; 1heJG.TP:dJ+8#*Rk4T5 eC¡P6T9̅}g6 @@Jd2&l9txD*ΎL X9 B$Ce#VT|4u |eޅ@t˽ 2Ѷcqhaw*R<2"lhJBh{Ͷ̜ʇp'?"SܜdG#3cd̀/9ʅADHdJ.+)79eB% .(XٓPLeIg (GGNps&l3$2E%*bcq*{p:)uze3+.l4F[CN 0bP880'[9Ź,*EhP:3`r,9L"e!{aHbؤjJ#NY_a {Φ{̬ХHN*4mc'= TJ#V H7Npw2J Iqf s%R~!hr B\0,VR5ln%OwNPS]Xih=V]R'6-Tb5ln1 [2z2g9RqcB0'D1f2*EB&l4 "C$RQpYHbؤjJ#N\:$0<3L%4mbC<"t0-Tb5ln1 [ B1C`89[JGDMJ$̓qI-Xb#:pJL7- ؍=R'OP.sZu$@@'j"n&l68-PBF9DDptt< 2Tdp\0,VRP8) C#VTB$Sb̤1llR5ln%OqTdp\0,VR6)7*e!{a= 8Fpz:(${ ,"'L M +.im-Tb5ln1 [ B1C`89[JGDMJ$̀9ŲP DpttNIp89ŢaPJQ' I)#, pfXSt(N j#h;ar(3`nxe`XpR-Fĩ((FHe!{aHbؤjJ'%`X1llR5lnT.B1*{p8o а L@$0<3L%4&2B!8?J#VVd@xDpttHȉ3`-_DHbcq*{p:Ywaȉ4VO]iyRձ*R<2"!|P9N"8::L @ 9̔IJsD̀B$Je#VT|4u  .,44 C .ȉ4SF-T9N2"lhd ҥ"Bf$2E% SӄiK.,4*JȤQcHaey:fJh?-T9N2"lh"8::THL6PQ"ĩi4?.SeHaey:fJhWJ#Vű/l36 щU)6(6(Yӝ9D2sLO {IBpZ`'O9-:S"B S:L'upR&NAB,FdJ"8::L t" l6 B2űHձ=N6JBPPQ N ʅHձ= 8Fu_d+.,4u&QHYwDNgG+[YR9*2ĆJ$9Q6ÜD\Bs T8L&s("PT.+)7Ө YwaIDѶSoq\.ˁv\ \\e\39o 2ME 2 9,+܀ 9 d% 2kr ryyܿ/4K>/6KeĹ6e._Y||2@eѦ_"v_" ._#e2%!>w 6Q"'L B3ȉ4R0<H 8$$ D"7 BAyƘLHH:1 3x0EN3/ʸ11P3/41P3/0)| ꁧC2H̾XU̾8?ĀH[O!|pb3/+FxiV3/a|_!|p6з!|2K̾< xd3/a||{̾ |a̾C2l|6pp3/o2<p$-N| e 2>a|p ̾x0Ë`3/ !l8*f_ 89{R3/˃||2!j*3/Y83/Czxf_z2C2QjeD"|@|f_aN 1P -@f_=!l eH0FeH| eLCˎpI.DC˃.yp!ypMD<'8 zr\ Hyq\9Q.$"]~<\(q.+!i.sq.\*ఇEp0!B\+༇ HypCˌ8lc!\yp'yp<D<p@C˂h!Ú!D< 9\p<. r\2ypm\DTU8P,ʩW8 \5 ʗ*_ҥʩWwNrq`DTU8W2Z*_|*\Xa\X HrʩWP .㟇 &j8O  a@ZN~ x&<(B\-㟇 `uTÃ8; qÅp.2  e*88\. n\z(S~-!ˁu]U8o ˆ88lSeN9pྮ7pA6\ 㟇 2®7p@˄5qBso UuTÃ:2˺(S~-"˃jp%qBsogWUN8?x(S~-x#5uTÃ7U qÅ&uuTÃU qÅV@US KW)?<y& <N9pT<(S~-yp@1%㟇 :܀EWUN8?Yp 㟇 :7p,ˉ*8QWUN8? 2 qÅ]U8ojN9pⓡX!Rt+>lQW)?UuTÃ<|SW)?d]]U8o 2EW)?m]U8oʸN9p * "˟㟇 hGp U\P8[E9SheU qÅ47 uTÃN\UW)?dJpګ㟇 G7p5 8>U?+ qÅ|US28ߑi)Pf<*FJA[ )S|U?G|{U??SUO>T?STSOT3UOU?`U?`UOK?X ?/T UOoT S6/U?`ll_S<?UOx+UOx S220###4Oa(|*:`"p"sȂ3șF!0}T+ +C!#BpR0}H%pB3)H#1#{Φ{̬Ѱ( XOFLаDa+'+.l4FّаDa+'yz6el]XiOJYwaP6̍eޅ@t˽ 2Ѷdk.,4gE,=V]i#YwaP#:)`@YwaP6̍eޅ>ҽV]i#Ywait˽ 2Ѷdk.,4!'22FL4m˽ #H}gE, Ō=V]i#Yw(+.l4B˽EgYD {̬Ѱ( oyxeލ! XByѤ>če'a3IR!YwH}Fّ&i*Bv=z44m˽ 2GBF#Yw( ˽C+.)RXOB!8FBL@2B!8Ѷdoyy!yDa)k<i5z:(${ ,"'L M +.im˽ !JT4 C .ȉ4SBc+.)R#Ywaȉ4VO]i#YwaQHYwDN6̍eޅIYJ,{ ,"'L MfFe1YQ=]ir5z:(${ ,"'L M#YwaIDѶoyyz6ek {̬Ѱ( fBL:|W˽ 2Ѷk.,4ϥ{̬Ѱ( fBL:|Qeeލ@h5ze҈+.l4F٬а(YwaP6eޅ@襇˽ 2Ѷk.,4gE,+.l4F٬а( {̬Ѱ( fBH`^+.l4F٬а4:|W˽ 2Ѷk.,4!>@YwaP6eޅ>҈+.l4F٬а4FtRX˽ 2Ѷk.,4!'22FL4m˽ #H}gE, Ō=V]iYwai襁8˽ 2Ѷk.Seeeލ@hWYw(+.l4B˽EgYD {̬Ѱ( .Se2FL4+S=z44ma OFgBF!<b): 6JE'B!F Pk.,4*BqS(${ ,"'L M ХHN*6eޅHN*ey!yDa)1z F٬аDa+'C .ȉ4SF٬аDa+'C .ȉ4SF٬а(${ ,"'L MfBL@$0<3L%4m˽ ):XYwDN6eޅIYJ,{ ,"'L Mfe1YQ=]iu{)β$0<3L%4+аHF#hLHaey:fJm˽ Dh=Ć]iيNk"'L SE'Bi.,4!㨙>6eޅ$'2B`7D,4y:fJ8OJ <^'aP>}(L0bFȞ@t "ze3i襀>`č= 2K0|"ze37D,4!'2K0|"zFΊX@t0|"zFΊX@t "{)>(`7DS>})YQ$oxhR7D; J`7D; J7D,4!`7Di X`&1#yOe24:+: >`č= !JT'D!H}IPL0bFȞ>&1#yO@!'EA0|"yHz B>`č= !JT):* Hy%aJT):* HyаDa+'`7D,4y:fJ'aRVE'R`7DSDNeL0bFȞu$y:fJ):* HyаDa*`>`č=VyDa(&1#yOBH:0| @us9s9$2 9s9q Hes9s99ss9sas9q9s9$s9s9sHs9s9qL@&$s9s909s9s8ɀ9s9sas9q9s99ss9saq=?O?O?O?O?O?O?O?O?O?O?O?O?O?O?oyyz6ek@YwaP6̍eޅ@襇˽ 2Ѷdk.,4gE,+.l4Fّа4:|W˽ 2Ѷdk.,4!>@YwaP6̍eޅ>3P=V]i#Ywai襁8˽ 2Ѷdk.Seeeލ@hW#Yw(yz6e\:Ѥ>kO"z4ؑ&i*Bv{+.ih25x%HNBF#YwaQHV]`Ѷdk.Se!YwH}Bu3eeޅ*BqQk6:2FL4mc'= 2BGi{̬Ѱ( fBGi=V]iYwaP>}+eeލ@h5ze҈+.l4F٬а(YwaP6eޅ@襁eeލ@h5zFOJYwaP6eޅ>҈+.l4F٬а4FtRX˽ 2Ѷk.,4!'2@YwaP6ec{̬Ѱ( .Se2FL4+S=z44ma OFx%HNxeލ! f `@V]`Ѷk.,44  ˽C6ec{+.ihW{Φ{̬ХHN*4mc'= T˽ 2G˽ TFٽS=]iH`'DN]Xh$L@$0<3L%4&Ѥ>k.,4*BqS(${ ,"'L M ХHN*6eޅ"'L Y>YwDN6eޅF#Haey:fJh5z%dRu($0<3L%4m˽EgYDYwDN]Xh$L@4&$0<3L%6eޅ$?QWZ^qwjz~]{} 4cG%aaaa 0 0 0aaaaaO0 0 0 0 0paaaa 0 0 0 0GHaaaa#Ǐ 0 0 0aaaaaDDDĤ0t 0 0aaaR26aa0"rcSh@ G@H5þ@fK ]l-w0b 6k@fKqNT ~F0m=Y0-+£%ږ/+o1RZՠ.+ڔqk¡fxIq:6缨ZZ}xf +&-B&V_ f(e[PLpq[PY| ǑGkVe[PLk¥mA2K( 1p%֭\j+/cȌG! )JR&<ɳyǃ!ZՀmBN8xf<6JE|8\=){@ͺB'"JͺO32hnbx0, Z\-1/\f5 QIHLV::+ZLW<%|S+]rјfxHX6Zq:̯>卺:&*BnjahhbRb*1/ee[PLbV_ G Q¥mA2QqmBeLx/"k@bWյ 1pt%ցJPVR3 %"v>`Ne1#җ*. %z$ڏxf CeH-1/<_) GEkCp^W qY})⵫ QڥVN5 UBbZҾ(yP[PX+ qJ9UN@ fh@+Z[P*-BumBucH@/clDֆ!1XhnU8Pxl3<$FXÌ ծei@i*W$N N>蒪Rjf铣le1!) +ǃ d . [FAb /\+pVrf(땞jR+ZHAqk@p@1Gh-<_)<.@+Zp5+qZ@f<61j- Ŋ|8Y>卺dc:6ʐcC0R- W@F-%3T>jVZkh|-.:)< '\x&+< G ր!_D zg'!xVr)>Z3 ơXÌ ծ6q6 :+L}'FR?cC0R- WE&-A9|LF[PNkj i_)< 1Xh PW<H f @S+^dž3Ip6Zq:#>Ժ:[{ɏzd*BcC0H41^)1j+j+څG2l+ch @rW8⑘fxI)+uu)G=- q)+xm 0- WLZJڅJƺQ̄G\x&+\W8⑘fxI)+uuqKC&J>uąC/1!) +ǃ"\b%1K+Z\'V姑6q-茜1iqJ!Bqا卺:641l`8<}6 nj`6Z <-1CPt[CƺKOIV@Cµ3A_D zR/ Gk@fR): dž3Ah6Zq:'31CL "f CD3dRx2AP4:V8qZ JVZkh|-< E'ZLV::x րt3<_)|S+\|f<6Azj5 v>`N@q#HѨ%{@ͺB.CsiPNb_01Sm1Vڂs-< bZ_D y'јR3`#mLF`PH E8hxl3<$ Ce]\mXۮ$i5y\HT0-+£%:6q -茜1j)VRhndN4 ڊM !8lSյ-<ɳh |R41jsjږDdrZe|R41jqN8Nho [RS&bh3q_1jR)ͫjZxj@bq" GEkAe|ũH+ZũH6iJ9Ɛ&+`%+-JE8xZզ-JU)ׅC1-+us+">卺*.dy\HT "\b*1jZb_Jiᩐ%HJjFHQN4A1Xh_1jR)ͫjZxj@bq" GEk@a_1jR)NJ֭1jR[Rz"qZf<6Ev>`NeM@DR[P7Lۮ$*B^ Bbx|BbB_A!?@LB؈"@A6"!~"+Iq[F=q YSi^@~e)OO ei6ddyi2O9i;Oyi+OiYiOz$ڇ@@Ѷ6]#(LP҃dΒN)Liȼ+:HLLŶI4t!)9>Ϡ{F˧0"J]idsBH'@* 6hs 'dAk'M@.xNxXA`XxX ϊ$4}D`P)@(AP(d犅ApƏ]itᲁ6D [d^p@Vt$ U2l6hBRr|*DZ҇˧R41q(\Yt!A<TgN]8LP%&&yru]8x6*q3G^.8P%=LPYt҃0@gEYHeKFC'N6h9>2"'6NLNp D4yåYU %Tʗ=+i8Fh٣RghbP$i5F&(##tBB11>>ˤ JJP|}IH8O)҄bb|}IM$:FOJ$q3H&ޡ:V6%8 B(d)* ބ)@(x^'BDt B<B^)* ބ)@(xRp$2pG卺FPJ>uąH\d:JXۮ$LŷLۮ$*B$d*FOycn3C^=3n >卺:6FCxm!qRbu@#'uąC&I>)hdӉI^=3nd19>$ITJZuEO6%8sX+ 2lsX. . (B)B EB3G " EB vI tT0RN˧DOfz$ڄ [d^Dl+:HLLŶI4t!)9>>˧x!B|V}'TdgI Q@S)Si+HѨdLh٣ȍeCc4j#8lȍx!"|OzmyeY@%TTJ4j:Fh٣OeCc4j:FhƎ铣l dI^:6&$'T R2} uBuN@ѶTO'T R2} uBuNJ@ѶTO>卺dc:6ʐRu@#'=- q+L}'FPɓ>}'T\6]""(,PQrf-/"#( Β"*S41mcF6HJNO\I^ҸԲ/"$(lJq(T,tfzZXT,<)ˤg Pl9r3x.J']49rC Ȅ>ˢc (6Nlq)>ˢc (6Nl9l+'T\ȼLl+#:D蒪RjFȔfeRǖ(N#dJpDGI2)c41mcDf$%'T$.NAs$D##4DtS(=K(uQs˓q\! M'T$HTMyrt" "$4tƈeRǤi*QHǗ'J "CGN4DtS(=K\D2DHhceRǪRڇ'J 1F6HJNIKP铣mK"Sȏ":NIK:65,4FFpgH2)c'FԺӭdLp!G #'T$Lb NB&Բ%8huLJX NB&6DMM%".d^Dt+eӇ $$&'ìp℄uN&(HteӆJ]8l >eӆΔ$'UJ]mC"0+$#<D%T8)F'T$֝m1#eTOR`֝m":NIQˢc JKd^t+$"%D ULJ蒪RjFfeTORNf":NIQ=JZuN":NIQ.B' >卺*.oyg=UJ]mAR8lP%H,m$N6}%T!qɉT@.PťspDR[PTN蒪Rj L8leӆȊ1.>˧ !1:˧(H%8OÇJMYt"I ]8p Np)@X%;YtbDp.eӇ 8FOp͓"'ŊS FC"g T@S*ZzV2pѳG2hbP˧"c.:x7âbDxeӄF# (6Nl8>˧!1eӄDEx."$(BS."%(8DI"bJw#6>˧cp@R ]8FpJpeӄDe #'ìpBA)|:˧Ȋ N]8FHP8{2RDp22SuN(Gìp >eӄbbSuN(H%8OYt!„SuN(H%8OYt!BA)|:˧  N]8HHPJpBRSuN$'ìpBA)|<˧  8OYt)SuN(H%8OYt)҄SuN$'ìp >>˧ IJ9Yt)1@X%8sS)6>˧ D Oa]8JHPӄuN(H%8OYt1ҀDpeӄ  N]8LDPJp2b2S .&%(G a]8LHPJpbbSyN(H%8pa1BA)|:˧(H%8OYt  .eӇÇp.eӇ N]8xBCKyP&J#'.8p{ԝdm/y\HTI^\HQ!}3nBL@JI\F!q!{R6}%T!>p$DR[PPQ%T2\p@i*W$N N>蒪RjPJKRq%T Z.døN%{>蒪Rj L`>卺\J*. `qUJ]mC.8lM}u @IU)uH\d6蒴JT3%bl JK*HȘMXۨRjF6}%T!q-/yX:'"J 2Tx>X:KĘ#>卺X:$N6}%T O@ !q):X:,  Z.dL T1ybꋔ%9=2tm!>L+'F%DyXۭ%JdϠz$ڂi1Lh\dJsLjY."9'FŢN"ʆ/LjY'<\L;x(N VB۪&d卺dc:6ʐQL{%iJ-BfKd*H1.#>Ժ:[%{ɏzd*B%G}D*P .Jҕ([uR̗;O{Z4RWLۮ$*2THM@2iįy\HT2d,mѶcĄy\HTJ0}D*P .&74Jc"S >卺:641l`8<}6 Q&蒴JT3%>卺:6FA+xm!q16蒴JT3%ĤX6di5y\HTJމ+JTmJ2\Js`641l<}6 QØ>Jҕ([uR̗`qč#FXȔ#>卺D [{@ͺB.2Tp蒴JT3%Ĥ<\H4j ^=3n }D*P .%"g<\H4j=3n #VB۪&duąH\dQ%T0{" !7" ! D̆" "1x1aj08c`b  DFA C̆ D4ሃLn0cab AN6" $ q1d6" &A) o 3%B>@ 3 D#YP1̂A | 0̌|fR3̀#2G2Gmf@k$G|G< |B90G#ِP#d>!  ̀ #2# B>!c2f@G!.dÀ.#y|BG#ِْ2B| |B)̀pG(812&UZ#Mb>!-̉|B]h#s"a5 ȘG \xG&0C p@2&e@#(̉|B uG 2&k "a p 3"aqh@2&kG 2&4@2&k#kX3"aّ0-pGD0-K޸">"#̉|DkGE90:dL#!~>" "a끈D>"KQfD>" uq "a|ȘGF9<# 2&@|GAdL# Y!-̉~ ~Wu ~WQ3S[agǠp U_\ um4"s9cy9xd d4ضgѼl a|(6 6 l #'WB t7A:e3:Fa  x6W#l 4kz;A70p=s c8ø8C8@dkoǏWDž8&Űo G0M0UpG.>?(a[|B," űp|"0CѼQw :cp:p{`t p < X+_z fp3'-|  #oi0> a""= ̏xD &p=0;gFA 40kѼ@f@8 0@ `s|a5I$$xHDHG @!@#BH$G`?0$h!̐Hg cy@ 9Dzp#[`plo[ ]__ "!Fӭ|4̖#*m_ A ?}j$3GVfj*3 .(j?YfaeR)֬?3^fa VfcVfY\ՙN I>fapjzՙN Ifap =jeVf]:lJ{Vf j7Vf̉=j֬? j.3@eVf̀֬?~faeC֬,Lp!!?YYtLP֬?fae2R)Z06Z06&3bZ06Z06^fal>faqZ08ՙ֬?c֬,H&(HDOVf]$%(HDOVfzՙzՙICfaeBBBHGVf]$6PN}j6"3 .(GI=j6j˧IJϭYY#3֬?ՙfa8Yzՙ֬?oZ011@"$;Vf}jˤNJb_Z003 .fa:13 .#޵fa:zՙ13gVf{֬? }jYZ0fa߭YZ0 }j|֬?>fa> j}?YYtLFP ՙDąLGVf]fa# =jFfa#Z0YYՙ֬?>fa@fa@KVfCVfZ0 +3޵fa@֬??Y֬?3}j jZ0 ֬?֬?mVfkVfAZ0Z0Z03 jH+3 WVfDfa$SVfE~fa$7֬?zՙ33 fa$ =jHfa$oY eVf@43 ՙ7Vf=jzՙ_Z0@֬?w֬?֬?fa-3#3&3ՙ[Vfՙ=jˤGVfADN߆ =jHF ? k -Z ZH[I_&\{ &!֬D`0\tKVcO pLf4kUMWd [i? D`U_m2",51Cnt+Ve29_m22S^? pk?djHF ?_G-qK%d\*Zji!m' ƾ ?clWd`?=?l-Y' !Vƕ,*՘Rf_! ?Uk2%9'Z/06 +[Ip .8W^?qZ=p_B8Vf $# _t,pji!m'&pe^?ⱖ_B 1df $#Ҿ \FEVƟ@Jf4dJՙ|MW_\+`3]{LR2=?֬D`_-qK%IuVƟ|ֺU1K%ćr՘ҡY8s+Ve9J2gǰ9=?"Vf $# (O㤸Zf4 |ff4dխY*u17V#F2>:)Z/F/U3aH5|ea՘(0K\Rq^ ֬Ɵ|`f4d+VcJdV#F|Zf_!m'8&\gLH~g> +ZOk)d/-ZT\H{VcJd2>/ ֬-k/ Wd-Š$̉g> -Y' +oZKի1K%ćJf4mH)Z/[_m_/ O &p>?'p~9|oF=3?\/G fp~/#`-Y/ ՘-Y8Tfp~9|o (&ti38#S9{7 ,_~bs9{L &p~9|o{Ks+[3:B3̯߇u1+s@d]3:~!9{/|/?0̯߇t 0ø2̯߇@ p~9|oW /?67ŠXj̯?mN@s8X>7LW L8X>7 g2~pK/?8_85b0̯߇ 8X>7LWn!bs0 i3_8ɜ,_~;9{kLbsA=|ǀAC8X>7v"s+8@g2~g 㟇xDng2~ qE3&̯߇8sLbs؈S3_qB/?p_3_pB&p~9|oÀb"=|À4!,/?w%̯߇|8/?DW> Bng 㟇|.A|e~>?'$s8X>7 b#=|8X>72@O3_t%38X>7 b Y3_t! p~9|o.D\̯uBdEwSl?We+@(2t+@Ye_:WF-Q+2x_<02x.2x+_ _<WWCW@/et_̯?̯#et_+_ ̯HTWf̯?WdW62FBBHA #R##"-i +F$W$NB~Ѱ,N2`Ͳl$d6tPR3ζC[`P\N0'FRt M!7e'T6 AN>N} D#l-.NF\Mjn&DR6T8˔'Nm86 IN|ͨ8FZ\C8P)PL*m5.q1a lKyP) җLۮ$*B|$Lۮ$@JI\F!rB8lJK*B|I^*.B}u\L;T-8lJKBN%{>蒪Rj RXۥ.{>蒪Rj !>卺dϠz$ڂ.HOycnJKqpDR[PT җ,PQqR%ybꋤ'L+'F܄6IR"w*.ZL}'F$'<\L;x(N ▆M8&>铣le!>卺dc:6ʐ!>Ժ:[%{ɏzd*BRm&>铣l ▆M8<}6 R▆M8<}6 RX۩m3Cs ^=3n X۩m3Cs=3n X۩mh珠zfq!R$'卺*.dy\HT ,mIU)u#{@ͺB.Tp\ Q OuB"*E{R>uąHODuė/y\HTI^\I>卺:&*B6TJ7 /yg=UJ]mAR JIU)u/yg=UJ]mAR JIU)uXۭ%Jdig=UJ]mB')hdӉ^Ϡz$ڂ6r-( Ϡz$ڂ.Oycn(pbҀ8lJK*B6뉒'{>蒪Rj >卺dϠz$ڂ.OycnJKqpDR[PT,mIU)u#{>蒪Rj {R>.*B|$,PQuiKx(N ȒBuEXۥ.q2Dyg=UJ]mAP,PQr'L+'FiKL}'FRȒ2tm-ζ#HS:ڄ"mL6IR"w*.ZL}'F'卺dԺ:[%{ɏzd*BRm&>铣l 0mKuN.O{Z4RWLۮ$*O{Z4RWLۮ$*O{Z4WLۮ$*O{Z4WLۮ$*OycnN [$%{@ͺB.OycnN [$%{@ͺB.OycnN [${@ͺB.OycnN [${@ͺB.OycnNPJ>uąH\@Lm#F<}6 >卺:6FCxm!r}u2tmLۮ$*B641l<}6 >卺D [%{@ͺB.Oycn3C=3n Xۮ$LŷLۮ$*B6FA+xm!r}uč#F<}6 >卺FP>uąH\@q#HѨ{@ͺB.OycnJKq+xm!r}uUJ]mC^=3n XۨRjF>uąH\@DR[P7Lۮ$*B蒼RDW7!z$i*T螉*.bq!rJDR[Pٹ %zE IU)uWUJ]mCC&JHDl܅蒼K81i@\HDl܅蒼Q%T7!z$,mIU)u#$"6nBI^T卺\J*. Xۮ&H8lJK*B6$ڇ @IU)uH\){@ !>yW(NB}tBuE&H8lJK*>.BiKL}'FRȒ2tmOycn+'{>蒪Rj =2tmrB}u珠ybꋊ!>)hdӉ^c:6ʆRXۮ&H&>铣l 0mKuWN.HOx.Nc:6ʐ!>)hdӉI^=3ne!>)hdӉ^=3ne!>卺:641l`8<}6 !>卺:641l`8<}6 !>卺:6FA+xm!rB}u2tmLۮ$*B641l<}6 !>卺D [{@ͺB.HOycnh珠zfq!R$'<\H4j=3n XۨRjFJ>uąH\@DR[P7Lۮ$*BKyP+җLۮ$*B|$Lۮ$@JI\F!r8lJK*B|I^*.}u\L;T-8lJKBN%{>蒪Rj SXۥ.{>蒪Rj >卺dϠz$ڂ.OycnJKqpDR[PTҗ,PQqR%ybꋧL+'F6IR"w*.ZL}'F'<\L;x(N ▆M8&>铣le>卺dc:6ʐ>Ժ:[%{ɏzd*BRm&>铣l ▆M8<}6 S▆M8<}6 SX۩m3Cs ^=3n X۩m3Cs=3n X۩mh珠zfq!R'卺*.dy\HT,mIU)u#{@ͺB.@Ժ l1o$םaW՝a֝a&bm./usr/es/lib/libnetmgr.aSystem$$+2 acet 08@HIM_`dinoprs(,.ABKPTbfhlmux{| !$%/124:FG]~'=JQYZ^z};?W[뇋&<-`eYeh+@|X,!ZYeYeYAX& P2,YeYeYdX+@l,ȰX|V,,eYeYeB,@X&eE`YeYe[,,,E,,l5H9VUTǘRؼ7 b!oqXO}T:!n pQ&} )ZտWW2,ؐwå%z۫LW@FBm ⹛ C!ɑϾ*yhp8IjK^o#]6d\2@(}&F>,mp<>'޳$0[TģT҅`^̄_W! ^yxoyx:^jnzmHI]϶M`TPN&3- ޲t ڋ=Δ>Hrdjz}/7ЛEh5xfq M>LP&}S(U ڡ#]6r\l5LP&}S^j܀5)L^4O5hm#$ iLP&}V"+ 7 ^`FBm ⹛ Ch&F>+hp4C#W&+51yv(>Bs7l4q!ɑϾ´V P=]2bIL^o#]6⹛d6P&F>+ Iw4E Y"Bm L谆/51xn @08BP.}&Ͼ`/M$0y(JEϾ"@kf51xn @08HCEϾ"@icgi7x@ h 1$\M$ }}F|6`⹛`lC#T }B62=0_FoYgl~>0;F C5ufBtx{Np?It?P/k$]`HY"cidІY"17܁{Qz҇zL^4O5hlN\2@(|;Hrdj3n57yHhMo(ezgE`P= 0Hrdjz}/7ЛEfW3x8&C#T }XEyЛEf(P&RLtQHPL^4O5hl'oC;C#T },e#(|`+Hrdjz}/7ЛEf +FHe7Hrdj3Ϣφ&xfq<=@(|c&F>,mp ^bZfB><>'gI`#cP@'q("4U˜Tя3!:<h'|:\jZ\7^=?P/k$]&6/5./5.Lm>Y"ciR,(yt k$]ɍjZ@;`q.}&ϾhR׍&/ޘ< >hgEhhR׍&/ޘ<}EϾ"@kf5-xb @08GlHЛDH>-2,lR׍&/ޘ<Бs6&}YYه^+Fh&C#T }B6?b63!FoYg8IJ5H)2ei G*]h3!:<h'|:\jZ\7^=?Ma{T X&6ϼԵb;`qY"Bm L3⹛`l3*C#T }B6?b63!FoYg [TģTҌt*X8&NcVN?|"bB ږ4/ ׏n/51^ P|6`v\l3&F>,=a(| Hrdjz}楯7ЛEfoC9ZC#T }B6?b63!FoYg bg;FF:u-[`~E^Ą4.W-^i.^կ^^jbz&C9&Hrdjz}楯7ЛEfoC9925@d(k#c2RכhM⹛d6PD L dR3z0^+FHe!ɑϾ!@\O1#73l "g;F*P^R s2,ؐwå%z۫LW@FBm /(P&$925@eO5@rn925xZ>RכhM⹛d6P @gEM'GLJd6?X-NQDiBmFLN?|"bB ږ4/ ׏n/51^ P|6;xfqB6P C#T }TT i-^ykk&A⹛d6P TgEM'GLJd6?XN'q("4 U49BfBtx w"$!p?jIrޭxbRE1楦HhMЛD5-hgEkKMۈHdASKMÈl4&F>-{KJ`!ɑhMBss5(yk0 $925lmblC#T }/ychNT1C#W.OC VIFd#yHAd.6;F C3hə 64|!bB V\H2^å3^=!(|L^4EGhM7oC#&F>(2x6@M P%6{Y|tSbAqg 'oYE j>rjs69yvLmBc+ j{Q{Ɛֽ<k ڡx:קXLPԡ2D&FڌhMB;xf8PɄ&F LYM>0925@X<`'!ízyӫڌ4/X>yjP :{R5j>:W3\B7>3D&F LYM>5 LP&}Z>0!ɑOCZ ڍ4/XiƐֽ>B|6:^+P<57| MB M>C&F>,m&d#{ZoYg6?:AwTģTҍT.pj9RF<̄ *$!u{S5x7@%$925xn>SwhMs7lLP&}S;Ɠy u!*\fk$]Ad`WeE k$]ɍȰE8LmO5.I#E`/Mg  E:EϾ"@X3@4:קXLS&z`qEϾ"@XM:Iíz}/Mg  E$} D3Pi7xuOL^4:ψX@ƊEϾ"@`i&YL^4:ψX@Ɗ̑s6&}Xb4#^ƓwZ- |⹛LMAs_132Spe925@d(kb2=0?L aBwTģTғ+V\PHr֌s2,ؐwå%z۫ƒy u!*\fk$]`B>R׃ Eps6&}Z$Zs7y P Ă瀾bfd! &!ɑϾ!@\O1#73lB'q("47J Xճ2l! KKWKkǷW.ɍ46@M P%6đuchl>0xfq<ԴJN$<0 % !ɑϾ-yiC!ɑhMB|l\pqe楯7>!ɑ`l<he925@bgxb>6Rf&x|#cbd6;FF:u-[`h'|:\jZ\7^=?ԸvLmLvx.*lH.7HJA(F$1^|6-xfq<ԴJN$<0 % FgE z@P?C#W&+51yv(>W3x8&%Hrdj3W>:{T} 楯7.ɍB}kNRכC#Vy,&Hrdj3ů5@Iíz}d#P6Rf&x|#c6;F )uņd'G7|"/bB ږ4/ ׏n/5.$]Sxfq<ԴJN$<0 % )Hrdj3= (|?925xb>ShM⹛d6P~L楥$925^"Bm)yk䋲cj>楯7>Pհai4 LkP/j/xb^yE1HTUOMlfB><>'hnDgID6;Ffd'G7|"/bB ږ4/ ׏n/5.$]S!ɑϾX@L^4O5hl>^+!;K^o(|>925lmblBgE^j{Q{ƓZU.ɍGxҭz}m#c2< Cw ?LF='qIJ5H)R 68[`h'|:\jZ\7^=?ԸvLmLvx.*lH.7HJA(F$Rchl>^+DO5-7| Gayl1925@e5-(| r{Tk&!P|>+,ԵIL[a昳@(| BgEjIFd#yHAd!Sڤ%F/Vd`̄EHCA;u{RZċch楦HhMg۞#] &6>/5-7$%C ]13MB;eC#T }ZR҇$925^ T +,Ե`հai4 $925@bgxb>6Rf&x|#c0;NQDiF .hr5ub#|̄_W! K^Ե楫ڠ#]6<϶k$(yoTؐ\fA80* eQX"n@H&6T7 (|P`J 5@rE1yC $925xҁmzy, y"P<܀Ii@6< jchPT7 E8xҁmzy,n@H&65@rQi@6< dСn@@4@^@>T7 $]Yy> $925xҁmzyKJC#U'GLJd18QDiBPnG*]hfBtx ױDePЛHQaP<޽uci#dIGɍk$] &6"Qijck/5@r^&FP MO E^jck/5@r^hJ {L^b̄|x|OB3z=a8QDiF ՗85u h'|;^g@FBm!EaP<޽t| k$]&v^k$]`}EӤҤXPY"1HA,@y.ɍ HrdjX3y.ɍCP<܁(&ק"jchPT7 E`NXbT7 $]By+xҁmzy,P<܀vLmen@P/HrdjPz(GLJ#73",XF&VCm:RKwõQ/j6y{Tk&XbzC#W3!Ќ޳$Xcc%F.T`fd'G{Kڍj6^ $yء!ɑQFoYg1 &,XFwõQ/j6y{Tk&Xb\ f&zbJ5H)R 68[P =.}z|_||x;}_| $/H_| }2Bd#}!}2Bdf>!}2B Gd  $/P>}|x > '}||@^, B| E_*, J%M)v8%_(-9JJ%< B.HC FrBLA!o   !0H[ì6pH[8;!o0,!oAF H[ 1!oaB  H[R(!o@pH[#pH[)$- #7!oa!V }  VJ,e-TbD`ʷHʗAPn^#*]C{P!XV["hX °EV9d+%> #N-uBUe䭪/FU223T Y +bp!pԩXZ8ۣ6dR`^๑JIy[̊V]XHݑJ޵Պ̊VCȥoTV ms"yX(qF.bȥh?R`^Vs"V(R7dRub#qs"Pn)[t\ȥnzG"E+xAz.bȥh?&VCm:RK)Z)Ot*X8&NcV)Z)OF:u-ZȥoVL:2)[F ]q`J4`7p\ȥo*P^R E̊V[AV[AE+q˚]XHݑJ(ZՊ̊V8ۣ6d\բK J SL|/+6͢+i;%`^"JIy[ub#vE+E+jCȥhl/+6r֌Y SLxnŌVVֺB"E`dRR5P^K)Z)Z*1JܙZ JF.bȥhhRT|Rct*X8&NcV)Z)Z*1ѫ&NcV)Z)Z*>b)1VL:dRR )uŌVVLxn*0R(hn""n  dRR*P^R Y1+r(lpJJ/Vd`"" մ8ȥhl`j#WV(R7d\բK J SLc U49B"q'~x<ӐĠ%Lp{^Bp{^N`t&8=!8=Ҟ'0"F?9 L cDp{Ïc@'<<c{`x5'<xRp{7Lp{?!8=>c{`|5'> Np{<n c g\#s#ǂ1Bp{ _ǂ1B!8= Op@)ǂ!8=x.@<$F?9' xRp{3q1( 9 (1(""8=c9 F(8= !_!y ) .I|R x"8= cR ƒ$DdE<D1'".Z#d(d)wp{(8=OdopFp{0[;8=NdhxFqA ~(8=!!o$"$\+ċGx2"ǀE!${E 2. $pH@ӃR. ^\pH;^E /1˃. . D\N׃. . $<\H$|\pHxpH|E >d\pHy) pH9. XEń\ H9aQp%r.? ȸ("JG.XE_\ P.p%r.] Q,"Jp%OqU|)r.|("Jo"Jr.aPȸ.XE.Ӗp%Ћ(yTE.r.,"J qP>.p%1"XEx rA7LE~XEd\Q!'NE.H 8>"(.skAዿc`%Nӭ|a! JVo?X[αEbkcc_?!:c%T:VՎαqrX* Ł_?Pȭ)b:c%,X*Unα/uA `/α?;| α?;uIMuI!,gX䟝 uI<:c~w c~wauI5c~wα?;wuIbAE:uc:$ΓuIM!:e+9'tPgc:$΃ )Xα?;@uIV'1c~wAÛ9't9'>% uIFgX䟝#7c~w#v3rO|B9'wH[;Ģ?H[;G|x$. rģ>q(8$vw1?wCp J?aC9p J?:#ӸAX$N9Q "!8c~%$A8$_;G<A5 rģ@m@[;Gq(w1?x$gq(w1?Fw8c~%`9Qw1?F 8c~%& p J?f p J? 8c~%8$SA0`9Qw1?Fp J?> {;G# 8c~%$'q(.  u"J{@! Dα_OH %X/ħ$I(w:~%= ('α_OH:Q;cS8) E%u"J{@`JU;c@4u"J{@4w:~%=(Jc;c p%NX/ħ% %_;c6w:~%=(%gsqS (3α_OJ %sqS(:α_OJp%8) @a(;c9Ep%8)!"gsqSB.ӹ8)!(α_OrBIE'qGB1D`ʷ T4ABl,Yd(PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>| ZN T-rJ P_%R`^,VA|[Z..TܕZJUŋ,VBU(O%VAxI|RK8[[.ij ]qX*V(R7[%qKjjP8ۣ6ܒIJ5H(^V mѨK\Rڤ%FjYsQʗZ1IJ5H)2ei G*]hJ'q("47J XղW;FF:u-[%qKjjPQ\Y%qKjjP(hn-NQDiJT+[TģT҅ IJ5H(BeFPo%NjjP8ۣ6ܒqIJ5H(^V mѨKSڤ%FjYsQʗZ1qIJ5H)2ei G*]hJ'q("47J XղT6;FF:u-[%NjjPQ\Y%NjjP(hn;NQDiJT*wTģT҅ qIJ5H(BeFPo%,XF C5u)bJ5H(Az.c%,XF&VCm:RKK8QDiBF ]qdc%F 0%,XF*P^R n)mRwR#Jtf{;F C5uģTҍT.pj9RF7;F&VCm:RKRڤ%Ff㠩R2tZ'q("4Փ'Nūn)mRwR#J*0R.)mRwR#J  ܸIJ5H)R 68[qKjjP[A;F(ZՊmRwR#Jtf{6;F C5uwTģTҍT.pj9RF46;F&VCm:RKӸڤ%Ff㠩R2tZ'q("4Փ'NūimRwR#J*0R)mRwR#J  ܧqIJ5H)R 68[NjjP[A6;F(ZՊq("4yX(qF.c,XF/V\r֌eq("4՗(mT*R5ubJ5H(\K,,qģTҁCFw%q("4J *Pm("0J[E\եVUPn'q("4yX(qFmqKjjP8ۣQʗZ1IJ5H(Az.cqKjjRej˔6Ӫ)Tэ-NQDiFn: ,'Nūn)mRwR#JY2tZ'q("4r.'q("4Pрˊ[TģTҕ(/pCc;F մ9qKjjQ˚]XHޝ'q("4yX(qFmNjjP8ۣQʗZ1qIJ5H(Az.cNjjRej˔6Ӫ)Tэ;NQDiFn: ,'NūimRwR#JY2tZ'q("4r.'q("4PрwTģTҕ(/pCc6;F մ9NjjQ˚]XHXR#Jtj9RF2Ŏ8jQe G*]hXR#JLYruB#QʗZ1,qģT҅ʌbJ5H(4`7rXR#JT¥ ҍR#UP(BX&,!Z`V,eYeB ,,bV YdX YeYeY,,!XZ,,ȬX#QBJ[IU&<}%` 6D(~V 0eXJ.Aδe_JZX8m" $kVNnD^Ą4;\{S5x7@^Jz ą=Hrdjz}/7ЛEh-x<FHe&F>)ko57y{T(sC#W"o#]6xq M>&Hrdj3@T+dYE7ɍ51yHրv .}&рTAppq#y7>!ɑ`l<heLOEk57y5hm+(ezC#T }o5 {@;>Hrdj^>Q{k&A+Cj'Hrdj3(y51/7i:|4C#REϾ0 \<\Hjb{8Hrdj04ŚCh&F>,:ywEM$)08`*$\M$ }fQ{kcikL^ox/xuCh1HrdjHЛFP}č/7P C#Vy,&@!ɑϾ!@yi Cw ?LFIJ5)JūZN?|"bB 5^ԵyxoV{ux1yڠ^H>Lm^k$]&v^k$]`}EӤҤXPY"1HA,"<ԵIw4E`} D3, ԵIw4E`zHЛDH>,;EGi1x@ hR.}&Ͼ^7ykƓ LiƊtd} D3"5-xb @08BSEϾ"@gdgf+ zLP&}Y 2ȳ|x|O)gI`#c-NQ!JR`3!:< kآ^l 闏iׇך ӼP="Bm LD CV4ay t\l<f&z8IJ5)J:4p20qkRfBtx ױDy1^/ӯ5<<=x?{E`$} D3ϠM:@l SP&5<>'gIlHRڤ%bŮJR0 9 h'|;^exoL{N?loLZs6&}Y"ӡTF<:j.x6xuI&b̄|x|OB3z=(qKjj3HR thjq*RawõQ/j6^i WǴkFi`s6&}Y CV4ay 騹H'@y#2=?L#c)mRwFi R\thd`R)̄>ױ! 5\+&k{DZn6 "X@; i1^yk&Aف#p2@(|@Hrdj3yMo^ C:&FE5FBm +C:LP&}Qo#]K^jb{Ƒ{í0925$\M0F\<\FSo(| VհW ŚCf4&F>)5{^y Δ>`Hrdj^>Q{k&Aفkp2@(| !ɑϾtZQ5Ќ‡ʛ '%3LfZ><eȱ",D!E<^yZS4hoP@fԑs6l'7yC9925l1f6P@:gEa皋=]+ڢ@;(| Hrdj^>Q{k&Aقd6PR$925@X<^yZS4hoPA C#REϾ0 +Hjb{@$925l1f6PDzC#T }<^;׃}&`L4REϾ"@fo5F&6"Z>$&F} `fW. ~@(|" L 逴3z<@DRڤ%)̄>ױ! 5\+&k{DZn6P/j/@u!ɑƓFBm 3x<FHeBC#T }!iMOPЛEfcpl"C#T }:yhpć&FE5FBm ǃlC#T };E7ɍ51yHրvLI>h*'7yC74Hrdj+blHrdj37zo^@<LI>hgE5F&6"Z>`4HrdjHЛFP6`W. R ~@(|%Hrdj3j/@vSwj0@;(|Hrdj^>Q{k&Aـt\h*7yC L[{`LYM>C#T }#E׮jnqJc&FE5FBm oǃl!ɑϾ;y51/7i:|.}&рT hgE`PQ{kcikL^ox/xuC*.}&рT +Hjb{$925l1f6P$925@aEx7j/xn&4E:2EϾ"@fo5F&6"Z>QC#REϾ0 CprL^oy$925l1f6P ML 逴3z<@Fo)mRwFi R,iZT#fBtx w"$!p?UKWKkǷW P4^izHP hIjK^o#]6Eǃl!ɑϾgzo^LiP ,ԑs6&}Vj/yvLm-ykE(|HrdjHЛFP|u ppq#yk7>@$Hrdj04ŚC4925@`޼5i1x@&4(|!LI>hgE^yZRכ4hoPB LI>h*W7yCL[a昳@(|!8gEMlfB><>'hnDgI;F4)A;K )ON?|"bB jIt?Mj{QyHy  ą.&FLWjby P|6:xq M>L7.ɍ5B@08@.}&Ͼ<( ^C $925y׵@Sw/jnHBl-@\oYg$8IJ5)J XNJq2l=|A^Ą4.j KWKkǷW޽g}5 0+k>6$PN&y q1hfVi1x@ h"Bm LVK^4 Hz`L4P >hgE`:E`9ykƓ LiƊB"Bm LhgE`O5-xb @08I>hgEaVwi1x@ e} D3, ԵIw4(|.}&Ͼ`楯L^$0yC "Bm Lwi1x@ e@.}&ϾL<ԵIw4E<EϾ"@gdgc+ dgEMlfB><>'hf&xFM}-NQ!JQ@l)H0ZfBtx{Nt%z۫@uci ,K^(0y,Бs6&}YYǃC q!ɑϾ!@\O1#73l`>'q(f(^%#Ù`h'|v+&k{DZnw @.XBIL^o#]6WW#$ d&F>(jQz뷚޽҇d&FE5FBm +C2C#T }|^T+dYE7ɍ51yHրv$925$\M>: +L^oyć&F LYM>925@N7" ܁{Q P|6: ^+(e)LP&}S`>&FE5FBm d6P T$925@N^yZS4hoP A2C#REϾ0 x8Hrdj04ŚCRL7zo^B<$925$\M$ }7o#]K^jb{Ƒ{í*ԑs6Ax.$o51y 61f6P!ɑϾ ƑzMn"^ P|6: W(P&)LP&}X9y$hr iO^y P|6 x<FHe925@fo5F&6"Z>*ԑs6|L\<\Hjb{ 61f6P@FgEMĴ̄|x|OLf&x|#c8qKjj3HRjYsza $!p?U_jZ\7^=?P L Ri-^ykk&A|P\XL@;(|?C#W&+51yv(>^+C!ɑϾt޼5i7x@`q>HrdjHЛDH>)җo#]K^jb{Ƒ{íC#REϾ0 /č/7P>C#Vy,&*Hrdj3^z7 ^ C7Hrdj^>Q{k&A|xq M>$&F>+<^yZS4hoP>jC#REϾ0 č/7P>L[a昳@(|>D&F>+'=]+ڌJVHz}hMd6P|925@aF d^k$]`Ht$Ed(o#]K^jb{Ƒ{íԇ&F} `@}-NQ!JQȤ`s2,ؐwå W-^i.^կ^^jbz=a>PHrdjz}楯7ЛEaǃl1 RL谡.}ci ,mp<>'޳$09[TģQBAe#Ù`~E^Ą4.jjIrޭxbS׵@rIL^4OԵ5hl> ^+C`C#T }HT d3dDHY2ȳ|x|O)gI`#c4[TģQBPґaNnD^Ą4چ xoz.ɍ5 MېЛE5 MۈHXBm<5/5 MÉ PH.xC0`|#<6PzC#T }-yjnBF1P|6o5 MÈlVgEX@DPzRiWjFBm p2@(|P925@GcCRjC#UPЛPABx.$o5 ^o(|P$925lmbl@4gE@T چ7/j/#]1y{T5!#]6j/7n!#]6j/^j/7$%C ]SpoC RLAE js6^y"ڄ*'y` 61f6P <gE:RT+ڌ4/^H&6bxqD6P Hrdj3 yjP65@r5FH#CW 925lmblILP&}V5)^ԩHr^@ +He-Hrdj3ךPe i ,LT7#^1EjLbP{QڅeP@8gEyjpt}+ p-yj7eL hnDgI:wTģQBZ̄ *$!ژ4 /K=!(|@!ɑƓuFBm p2@(|@$925@NLGi犛 ĂqԄtq`Dbt1Hxyt1d!1+hX^ƓwZ+ jb|@ zL4Ss6&}VNj/xn^E`'yƓwY@08G$} D3Pi7xuOL^4:ψX@Ɗ@"Bm L^4{QƓwZ,/Mg  EbEϾ"@aЍ{TOMk'bx\,K^ x?{EaEϾ"@d(k#c2,K^ x?{EHЛDH>,mp<>'޳$0;NQ!JQ ZT#ÙcG$!k{Py/ ȑvLm.yrn܄v(yrnBFh5!1# ^j\.f`)7Gaylv&F>(F;E^jLm 7j CLP&}Pk n$925x j o#]6h\LW@FBmB`5x.]#yryC !ɑ`l4 L^n&^^F&6'׵@Qyr5hv5hskI/y8t;3MB;e$)LP&}RE$!ɑI>iKE7.ɍBlНHJհW ŚC!ɑϾ>^j{QƐh^E>x<Q M>!ɑϾ><9xҀs(PHQbgy$Xڌj2^ك5D7nBFBm<q  LTCNP 0TFĄx$< ٘0>Jn @@(|<gE y"a!ɑ$} 樞o$]P@$#x.] jT&F_,&PLGo5)^ԩH4xuO yJ5Ќy q33LfZ><eȱ",D!E"`^\iKF7.ɍBl+Bwo(|5!ɑ`l4 Х!ɑϾ橗N<:ק`5x<Q M> LƔkBB<׵.EjLsK-#]PԵ{T5-x gz`q9"Bm LA$oǃ$ zC#T }rE H|6 p-yr7e RL d#z-4|!޳$l~ 46;F4)JF3!:<Ə5HCA;5\y <^A"ڙH4*l  RJm"&6φ \Pry P|6 d6P !ɑϾ&y4(|3Hrdj5jxtP=Hrdj+blu!ɑϾj{Phq251@y{T5!#]6j/7n!#]6j/Jn @@(|&F>(FnQyC(925^  T TˡCE7>@fհW ŚCiLP&}PZT%925^`:קbJxqD6P9C#T }"<xqD6P Hrdj3j 43\&XnFtXeS:dЄTڠycv$k&CSЛD5L;nxt1%/5LnHJAs! RLBw(|LW-$\M/5Ly"ڄ*"gН橞o(|(Hrdj+blp&F>+楫ڗ+o5Pe i ,LT7#^Xe]yګ#]F5Vx^gz`q>&F} D3E#'C!ɑϾ^j 43\&XnF,HPhq2o53^čvLmBSPEϾ"@ib spln LP&}ZG䋡"W$>ǃo &!ɑϾ!@yrfB><>'3z<@J26;F4)J4*Ra3!:<{Np?ULWL׆cdcisLMېЛE517n!#]a LSskBcjrSpBT< %7 O M>(Hrdj3"ů517n!#]`(> C^&F>+ k>Hrdjz}7ЛEb\jC#UPЛPABx.$o51y/925lmblL</7/j/#]P^4 h;.}&Ͼ,P|6!ǃ$ Ǡ!ɑϾ51xҀs(PHQbgyX/7/j0y{T$kchW@T/Mg  (|z%HrdjHЛDH>-:,P|6+He`1Hrdj3м9" H|6,<7/jvLmX@lRi1^yk&AB ^+C\4&F>,lTL^4X@PC"EϾ"@d51yrL^jkڠ$]6|m#c2< Cw ?LF Njj3HRB% ]d'Gzh'} W~j W=!(| C#W!ChMᰄv\ H=aw(.}&ϾtD4{QƐֽ>Cyj9xu$;ؑs6&}V 4/VCY@08Xċ} D3f4$^d9xuO桫Ɛ|@ zL2 y"Bm L P&ڔi^k5 ^4/z`q>0$$\M$ }&jT9xuOCW!ì @ޘe0.}&ϾD+ڍ4/YCW!ì @ޘhAI"Bm LiC!íz}l!ǃBTq /f`&@Jn"~yl$925@d(o173!?LЍ qIJ5)J5H ) LN?|"bB 5^ԵyxoV{ux1xZ;OAp"yrn %@' vfd<6P4C#T }# &萡h&FAAk&AB+Cć&F>);yrP4zC#UPЛPA!W7/7> !ɑ`l<heA*C#T }^n&^^F&6bQzj/7nBFBm<^nBFBm<^;nxt1pBT< %7 O M>xL E9HrdjEϾRQ{䋲cj>x$925@GG^`<:קj{Y"B Eǐ)/Pe i ,LT7#^1EjLbP{Q0y{T5$HrdjHЛDH>+(>+He04Hrdj3ZPJ5̡Bm!EjkڧEjLw^1j{T5Ln܄v&yaskc橍É PH.xC0`|#<6P3i!ɑϾO5LP3H{R5j><^+/5LyCRհai4 Hrdj3^jZsƐh^"ElD\<>'3z<>F };NQ!JQeRfBtx kؐwk{S5x7y"ڙIhL%!ɑ >iKL^o$]P@ /ˡ;L^o(|ZC#V^/heRL^^ֽ>Wd#P)kJHr>P5hlx<FHe@Hrdj3C&Fڠ#]6 6:x.$o5 ^o(|:zC#Vy,&ԇ&F>(P/jLvLmBQzj/x h;!ɑ"Bm LhA ǃ$ >L5 ^43\&XnF$yjq2BF&6'^P!#]6jݸv&yskIl:ypBT< %7 O M>BgE:6y>925^"Bm)yd!P|ppq j RC#Vy,&0)LP&}V#Q/j2x:ק"`6^+HeD&F>+桫ƔkBB<׵*EjLSJ)#]0JW@Rv$k&CJMۈHhMg۞#]:Lm@|6<Ԥ8t;3MB;exiLP&}V5)(|%Hrdjؑs6ԥE1T+NR+Hrdj04ŚC/Hrdj3Fچ/CZ.ɍH1'yt1H"QdAD/x<Q M>L/5 ^n.rCᰈl\'q(f(hdR0 9 6 ؐwkjbf7{/53$]Sx<FHe&F>,<ġjs6E1TO'yC#Vy,&-C#T }i7xuOE1HT^^yd|B @yi Cw ?LFNjj3HRh4Z`s2l! 5^yxoyx:^jfH&6xb;O @!ɑƓuFBm Ap2@(|4Hrdj3LJ js6E1Tppq jbyC  61f6P@*gEj{Q{ƓwZ^$]D5@^H&6k$]`"E&bZfB><>'3z<>mRwFi RBJF3!:< kآ^lQhM(5@rE1yCRi@6<nBH&65@rX`T$925y#2=?L?)bJ5)JūZ3!:< kآ^lQhM(!y׵.Go5./5.Lm>Y"ciJ,(ytHA,=y.ɍCP<܁4@^@jchPT7 EJ P<܀vLm ji@6<6y.ɍCP<܁G(&ק"jchPT7 EƔkj6(|x&F1DfB><>'gI+ŋq(f)H0ZfBtx ױDePЛHQhj"E1(yN#ƔkO5><925y#2=?L?bJ5)JR0 &d'G{Kڍj6^  ^jE1y`&FP MO d^j!ɑƔkjBE1y``J GyvLm jdV Ɣk5> 2C#W3!Ќ޳$XcBbJ5)JTiRfBtx ױDePЛHQe5@y"P

g(&ק"O5@rE1(y><Xn@H&65@rz`Y#P<܀vLm j@@>5!ɑFd#yH?L&,XF4)FT#nfBtx ױDePЛHQaP<܀vLmen@PiL^4@^@T7!$]Yy>;C#W(&קDck/5@qC㶒i@6C#W3!Ќ޳$Xc,XF4)BK\)d'G{Kڍj6^ /yd^jfi@6>QC4&F1DfB><>'gI蔱c%  F̄4b{QFڠ#]6ď5>H~(GLJ#73%,XF4)FEF̄4b{QFڠ#]6ď5>H!ɑQFoYg1 JXFi RBJFÐÐÖ_|9>rF#x'}_|‡x<} |_|}f>3|GBT!>G"55 }jB=}v| !|@f GP(>>cXCX>~2}~\>@X>@>?c%GA Zv=>UAkB#V_|"|"EA9=6EӐvttqNtӂ8kpN tN4Np(#!n +37 7{pnp=??bV XHb(+! LbPy?CAXN 2!ebH+9X#??+`C u?(3V CA<2 A^eb9X0w?AV +LAf ,V Q?rebrX+ A~V E?XdXa+i6V 0"AaX-/(+(Z; CQBJ[I[$eKp^7/t.xܽШX}T+ EAhX\,[*V9d+%> #N-uBUe䭪/FU223T Y +bp!pԩXZ-Zs"RŪ)2)[Hխ dRRT^^`CE+}E T:92)[8kCw-ZE+E+|`-dRRs"F-tN.dR) VV*X VӦ E̊VH0dRRXRJJw E̊VF"R0 +#\ȥo+XkVk-p\ȥnT``2)Z)[ʖ4E+E+x.,P%ucJ̊VRƕR`ȥhoZ(lbE+yRƕR`ȥho*XҰJR0 KV JF"BE+`dRR;K )NȥhovRdkE+cTVSzE+E)jYszKT\ȥljYsz)Z)[P.trȥmBwȹJ/V\^,VVƪ ՗8qK"m-Z ,Nȥm[KVKeRȥhl..T‘`.dRƃG"`.dR48E+E+}Z (tr.dRƃG"`ȥhoVƝPHJ48E+E+|h4Z` BJFJGhn%m'e断*X^*P\ȥhRT|Rc8kCw+i;%J#V7qJJ.,ZRJNe-Z*,TT8JP8ǂ-PK"ūZȥh)qb s)wJG,˚ZTXaxBqs"JqQIE T:9dRRHխ dRE T:9e R#V7qJ:.8^t-ZE+H $2)O+r`JJP8ǁC Z%) VVL| tfዣG# JF""8Z+\#JJQIŮR`ȥhhF%m'e断*X^*P\ȥhRT|RcF%m'dRs")[E+E+}c]Vv[.ijQb ̊V)GE&>ŮU E+V88J;.8^}ŋ,]i˚ZTXaxBqs"JqQIŊUE+E+yH0dRŋ,]i\{]XRJJw Y+i;-4hRRE+EB"ŊU SbȥhoE+\XRJJw YpF"+.pRB\.p.F"b$2)Oʖ4E+E+EGE&8nT``2)Z)[RPJNe-Z*,TT8JP8RPE+E+eKV JF")uŊ(Z.8^yRƕR`ȥkCw ZNc.8^x.,P%ucJ+i;-4hRRE+EB"n(llVV+#Jѻ\XJƕs)v[,P%ucJ+i;-4hRRE+EB"n6C`Ս+dRR*XҰJR0 Z(ll\{]+#JT Vz\.p.+#JR 8 J)NHk.8^|cJ)H0dR+As"'ia:)+i;-4hRRE+EB" XNJvJNbE)R,'P;" XNJvE+T^.8^pNu S)Z Z.0q /qKNu S)ZF,As"B% ]d\բK J SLx'ia:)J[I,T\ȥ?vRdkVVn)[R`JR0 )Z)Z*1zE+E+EB"/V\^,VVL|R/V\^,VVKTsKV,/(N.dRT)N*>b)1ŋT*RȥhoT.p/VE+AKT /qK;]P咶sKV,/(N.dRT)N*>b)1'qK)Z)[ƪ ՗8qK"Ypƪ ՗8qK"Z PK.8^}[KVKVv[.ijQb ̊V)GE&:J'dRRT.p/VE+Uh*T;.8^xAzn)dRZE)..T‘`ȥhhK\) VVȤ`2)Z)Z*>b)1╸hdR0 Ȥ`2)ZՎ8˅ޭbK:9d\բK J SLuk*X"h4p2) VXRYpVƝPK%m'e断*X^*P\ȥhRT|RcTō:RE+E+qȤ`2)Z[uB,\{]E#J0 ̊Sj`ȥhhNJVAe#JJE+E+EGE&%-Cؕx%H#蛐`x]C :xB yؘH#Bp{G`'b`'H#wvF yH# Dcx@8=A( @OPp{>(*Cؠ8=`F?+!b`blXBb3ذlHp{`u¢͂p#8=@"<# aP{ŧh8=Gc:blЃ0A |9}1B#05`pFp{<<#²xPp{ ścVaX۞8=`)!X{°!,=xF??,rCXYxF?X rS`@$h@ ywcZCćxo` G|\.!$8=Nx4=1kcP#<#ƨ9F?@`*sGglE\쨷;cPe@Ӟ8= c` v Dc`` pFp{N&`6N`Ǟ8=6`\p{.8=@q"/8=E7@p{,Lp{:./8=cМ_e\98һҎPiŽ.8=y04Lq~.8==+".`&"l d;t"vě|& Ȼa>""Am(dGȻd.#"vȻh6!l_HECJEl"v[.NVE*@El a` ivv Ȼe.ڽ'"c.ٞȋ̋:)" ```vMl5l$]`a1l9+"-]` H`ӌ`ׁ9l;"퇜xE\dE|xEfEx r.A.CB.D.ED]?r Ⱥqtn6"~<""xEӒpċ?DŽ]:"._DŽ]8æ"qNSȺr<"MDŽ]9o,"˸wtyE+α_OKg;c8pw:~%=p8)nsqSe;c87u"J{='sqSpX/ħ]w:~%=0MgqB?(WG*ZJs J)PY ղ,OgL (PB (PB (PB (h2Lld\\Z ϲ'qb |VJ|XJ|ϟ?%VV7%)V \0/+XJĮ,XdQX(+XJ'q("47J XղW;F*P^R d)mRwR#Jtf{W;F C5u*$'NL-NQDiF .hr5ub#y* ŋ\vJbb* Ŋ'qIJ5H(ARd8l;NQDiJT*wTģT҅`^;NQDiBPnG*]hJ'q("4 U49BRK8䔱c%FA{J-,qģT҅`Tэ[[.ij ]qX*V(R7[%qKjj3HR#V7rJ'q(f)H0[%qKjj3HR thd`R)W;F4)@Fn4p20qkR +[TģQBPGTkR +[TģQBW88ԩJF-NQ!JRa%qKjj3HRcJҥ)W;F4)A;K )O%qKjj3HRB% ]IJ5)J5H ) d)mRwFi RRR0 $)mRwFi RT.p/V+[TģQBqr +[TģQBAH0IJ5)J4-VR0 $)mRwFi RBJF;NQ!JT-Z*wTģQB#l;NQ!JP(qѣ]J`ISڤ%bŮJR0 $mRwFi RCZR%JR0 $mRwFi R\thd`R)T6;F4)JF;NQ!JR+J`ISڤ%,'P<;NQ!JPNu S-vJ'q(f( `6J`-qIJ5)JqIH0qIJ5)J5P^[dmRwFi RʖR0 $mRwFi RE#J'q(f(hYH0qIJ5)J5 )RŎ8j3HR#V7rJXFi RRŎ8j3HR`IK8Q!JR+J`IK8Q!JPNu SK8Q!JPNu S-vJXFi RRdJF)bJ5)J5P^[dq(f(\\k#JXFi RE#JXFi RU )bJ5)J5 );F4)R8kCw.)mRwFi R;F4)@FF-u*RaqKjj3HR tfዣG#)H0IJ5)J:4qjJV)H0IJ5)J5qѣ]J`\Rڤ%);F4)J4*RaqKjj3HRB;F4)A;K )N2Pۊ[TģQBT*R`'q(f(^%#'q(f(Azn)IJ5)J*ZH0IJ5)J48 [TģQBAe#'q(f(/0t`Sڤ%Hխ ܧqIJ5)JR0 Ӹڤ%88ԩJF;NQ!JP(qћ. ZT#'q(f(8Ū)ZT#'q(f(FF-u*RaNjj3HR`Sڤ%*XҴJF;NQ!JPNu SӸڤ%,'P8BimRwFi RRdJFwTģQBz wTģQBU˜ ո'q(f(\\k#'q(f(hdR0 )mRwFi RU wTģQBPґa,XF4)R8kCw%q(f)H0[,XF4)JFc%*XҴJFc%,'P܁{PڠyJxb1DfB><>'gIc) KUP̄_W! K{R[qڠxZ6jrU{Qy"/ykƑ{YCLWe|!ɑ`LLfm&^ԵċchhRv51^Rᴹ\P!ɑ쵰o>-Hrdj8'l-\=Cj&F2}0q>Hrdj{-l4f"eK^jXz}#c2< G#73GQ VXK}w`E"q,2*Zcn N54\\ ..-R^TڢQrR\Tk)t@RȬVȬ- EXZȬX.  ;J211VȣdR\F?c"8=I)1Hp{axF?v#" v Ȼ  ".CA`AJX7c~J.;N>[>]X\?U(Rg?WukV9c%JՃr?,Rc1/}wߖαw8cijYq(< rģ= rģb_`= rģZ ],ӹ8)~Bα_Ol3#֖XK T4ABl,Y (PB (PB (PB (h2Lld\\Z ϲ'qb |VJ|XJ|ϟ?%+UP*Ԯ,X$-VBK$ZZb.RZ ],ijX(RZ ],ijX(E`,2,,,VXeYe, X,eE`YeYe[,,,E,,ϲʓb U&<}%^>l`qW\1w/T:$G$kVu>u?NA;KW1^i3^yjM^7jf; {(}$925^ D6w.Ў(#LWB<Ŗ}{T/5BiM} |ͶOj0y"EKEFmv/yͰ'V樏ڢy"ENQ{Ƒl$]>j4&FP/O<k&Н P!ɑ,to@3ƔK\DèͶDڌ4L>:}D %MLTHR##^i׵1x҉2ךQ.Ɂ[P<Ĵ̄|x|OL3z=c b >N4łEKU,mP\ ƢƋS¥KՊT^*.PV*PRw P^J )dVJ+dVQT|-dV,  P7.qE"#".‚.At JX7c~J.JZwc[}XK..T*,qUn]:1/W3q'w8cR`^,VA~> rģ 6 p J?b  u"J{㽁w1˿!)0/+X^RT}J2(VYeZ}+>!B (PB (PB (PB :FI P\PV|Y,ZROO O>|JqrL Ŋ(/R`^,VAxQJXb@,geYeBhYeYd,> P2,!`X Ea`Z,k,,"YeYeYd+YeYeYeE`XbUI0G@]Q|q ]>T:> 71?%+Zwkؖjbf7S0թ^S51LSX&q(svcC#UPЛDHhTؐ\PLWЛBw(} LP&GP&׵/j/7 ^EڌjIìs4#Cy'&/kB2y'ʓm&*l'@KQn@'>݅Pi)y'dLJ,HTO7jR6SJa{R65^ԥ$k&σ皌4<K^d3m2 ^dT'۰>܁{TO5Bf0(j"RJgyv(y5a!ɑP>9Hrdj6hT7/j6@^ L^n@'׵< ƓYhGL"y'&/kB2y'ʓm&*l'@KQn@'>݅Pi)y'dLJ,HTO7jRlQڕȘobQ ڌjj6xTv|t%D 2yISa &nSa ZHrdjT1-3! ޳$G|Ub > >(DIX.dTQj*,h8\\*ZXEb U'pAXQX(+X@RȬVȬ- EXZȬX. Ak+Sn\#l>6'8=tEG c\|@IgsqS 8c~B?2TV (/%nmR eYd-@, υŇŨPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|*\\*P,VA}*P,VAxQJ P^(EaP& eYeBLBYeYd,eYeB,@`&eE`YeYe[,,,E,,ʥ ҶrJ| @>l5D(~:$bCÜw*vk!C[:j6wåFږԵPu M %&FڋhM$ XxT۰Tؐ\PHrdj5hNQyCa!ɑ-{PiO y" P<Ե ڌjHf(GQF7iB>T'ې/ja{T5n@4fkBL:|^R3z=a !* Ҷsa"N4łEKU,mP\ ƢƋS¥KՊT^*.PV*PRw (NcVK"Q["-bk"`X\->(8["mNu|<'" 8"""B.ˁ.ۂ"))b?ݏW\1w}1%Nӭ}3uj#){Eʛc%,X*UnαpĿU(NccߝTC;Ģ?(Ncp J?`a;GT:VՎ{sqS8c~B?(NcVyIQ*X ZYeBiZ|X|!B (PB (PB (PB :FI P\PV|Y,ZROO O>|U(Nc@R[V9 1XXYeYd, ЬX,,b,XXX, e`X-eYeYdV,,,bk,,"첩BtpRcP)7l_%u{;~*vkuG#R``d'G{Kڍj6#]6ϼlrE1LQ | L^j6(}925y#2=?L?2J,X~{B'Ns"6.QQcER%M/(+(Z; J'JX [$,ElдZ*>łbpV(8["'Ðp>Ey q!'"(.skA_ዿcw;NӸuj 䥋sc%JՃr?~%ﱝc;/ ޝ Q'JX;ӸAWSAJ,Xw:~%= w1˿!*P)b%nmR eYd-@, υŇ(PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>|RK8* Җ,q@RK8Q [,,YeYd,`T-eYeB,@bYdX YeYeY,,!XZ,,X,pXi*cP)M7utJ.#s>CIS_ì#>A&R "wõQ/j6^i W5LH&6jk$]YyuchNY"ci ,L<1(}`g!,0^"&6j6(}D&Fڠy3!Ќ޳$G;U,V+F32,ؐwå$^Եy$kPE5-ytZ\&x}`5D&F} D3M$ykƒVEϾLm jZs6&}X>yqq E1LY"z,<ԵksșDH2HrdjHЛDH>,"O5.yvLmu7/jvLmԵJd} D3<׵@HBlhgEM'GLJdn Jс̄4/b6^ԵyT ڋj\nBBn &V^j\n܄¦Aa PZT: `DbTHE}ö烦㶤kHGRG"p_ړ%MLj/>݅EEȊ 5Oړɍj/>i@f$НH>MLmIʛ V" ">;jNT ԩ&ړЛ> j/>݅E5-ytZ|7x{D(|"=!ɑ"Bm L GLJd?`խJ (uĪ2Nt{RP/j7/j0$\MiB5>T'۰V/5.dFQSa 63Ɣ!}Oa{T(v}3BQ"6>Ɣ&kBuDQSa 63Ɣ!}OڡyͰ'VvLmjJ5̡&>Ɣ&iq!Sa &nSa -x7x{Df}>925$\M$ }m楯.OhL"}>!ɑ"Bm L GLJd?`DJ֥K:RFa;0?aïΧ0_FEi;̊0XۂEE KT6T\Tj(++pXi+dY(XZEG±QX\,@.ZrdQ!8=pq@`l/#uGan"8=a2.>FE0i!$"wHFp:E0sppDE0.FxNE0JE%,P\ ]ccéi־SBo%+Z|cO+uZԪXRu`ܻuc0:K}I ݌p~wcOc1ğc1ğT0w1DFN9Q%`w1?F 'q(e`w1?[kE#q(qau"J{i`w1_O8F8)`Maw1_O~[kE#gq5 ո,V^RT}J2(VYeZ}+>@ (PB (PB (PB 4d&F6dl2d.d.T^AsAYdjJY>+%>,%>|SϟZnZ+[%V)aq*֥hJbZ01IUJ (uĪUJ (uĥ)pXjV j+ZeZԠb\J=ZԠb\J\⚷֥hƭbZ01UJ (uĪխJ (uĥ)b+eYeY@+ ,XXYeY Z+ k,, ,,eYeYeZ-eYeYdV}UMLy>J t'l\u:%usJZ:l eIJ֭nd'G{KڍC3FQCըbTTX@C!ɑhM$ Y!QƔy PJY!VV7:"q,2*Zcn N54\\ ..-R^TڢQrR\Tĭ*l@RȬVȬ- EXZȬX.  ENҁsLU(Bp{\x39Nx5B/<'"(.skA_ዿcpiֿq8)Zտ-䭴\\?TX7.c~%ﱝc;/ ép%ĭ*oSAW8c~%[Z..T8)op.\ĭ*l^RT}J2(VYeZ}+> PB (PB (PB (PB#$̍L̅ʋը.q`+>|,w-PK'dńϟ>J|Un%hStJqrUn%hSbDV ,(,2,( eYe, *"Z,,ȭYeYeY ŢYeYeEge[\XRUI0G@Y˅0` w!ዿs?IS_`l"şBJVoKؐfBtx +ؐwå@kK^ kHjZTؐ\fgaPɍ'E -|lro-(}`հolfB><>'hf&x 3q+*Y\gUN4łEKU,mP\ ƢƋS¥KՊT^*.PV*PRw ŋ,%l+%+ BhV*>+ c+Sn\#l1Ŋ2~*^:ʢK/TsjZ`k%jhR`@)qb֋uA{]XHHqb'dn4\n'e-ub#eie^VfZeZP \dRumR0mK,T ZT`z:k*ڥ+]X`۪zF,/q;*Cʄ)uAbR4\Xa{+PV(R7 6 6l"*w`5v{s? V,TJwcg<D^ :B/ss""Es8""Esx""Fs""F\s<s\sn v?q䮸bwT:}uJVoKU(Rg?TX7.c;Kc:~wP^qGbw;G|9Qo3An%qbK82α_Opi;gU$VW,T^RT}J2(VYeZ}+> hPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|*bJŊ JŊ!CJĮ,X`QJĮ,Xb1XT|-eYeY@-  eYeL-@,,`X-PYYeYeEl,,V-,,*JX US`>HL3laW\1w u?*vk A[:kIJ֭k fBtx /jZEPmק<"+KMۈW.ɍH1EӤYK^n&#]IjZp͸Q"&yk^/ykڋd7nF|5Bv|RכH&6jZvJ|J楥925ȳ|x|O)gI *,qv aP'q`RF pTqTqpjb-Tbn%,XㄭEdEahZ- GEbpZ2;J211VȣӐA`_r.vHE)9As\nQ+>i־ }:JVoX>JX??TX7.cፄq)b8ʂ'qG,q p J?`_;GVRŎ9C;c9w#i[K8+pm ,eP[,!h`V|->,B (PB (PB (PB#$̍L̅ʋը.q`+>|,w-PK'dńϟ>J|JXUn%,XめF+ YeYeXX,(,2,!`X Ea`T-eE`YeYe[,,,E,,ϲʵ ŊL U&<}%o:^7/^J.9*vk/_YkIJ֭:&h'|:^Ե楦$k&3K^n&#]6KP&>+jZqFw%X^@X<Ե"5Ѝ lRכdСIj&}XjR3zzBbb`5a2"q,2*Zcn N54\\ ..-R^TڢQrR\TbbVK"Q["-bk"`X\- ZrdQ/b.i`5".-1`9|JX7c~J.T:_;PJ֭?Vw l/Kc:=Ax]J#Z& q(`4 rģXX`5α_O{8c~B?.VAxIy+pm ,eP[,!h`V|->,PB (PB (PB (PB#$̍L̅ʋը.q`+>|,w-PK'dńϟ>J|UkҫXXP(VAxIxQXV,,X,,,XXXfYdX YeYeY,,!XZ,,Ȭ,XXBrUI0G@d.B7A$b΃d;N:x,В[V>U2,ؐwk{S᜹{T517n!#]6eEkch/7.ЛBw&(BU S5i1xuș{T/5@rE1LT7 (}&FX^`Q{Ɣ&kBu^nFhNi VƑy|Յy0yJ5̡B ;Ɠ &X3x/7O6>:/#]6|SiBf(GPm{QFM>v <`fj0x/7O6>:/#]6| $ z'xv><3ll1ƔK5D}aCFQ/O ڢyJ5̡&>HT b2=0?L 1_!VAxRAt~tDB'Ns"6.QQcER%M/(+(Z; J(/*P@RȬVȬ- EXZȬX.  BVi@ܹF&*>#!8=\:|HE΃H}As\n2 ]cc:cJZs;d#R*䥋sc%/hSUn]:1su~wP^:gqG Ŋ'΃p J?+΃p J? Ŋ'΃E7Ӹ#k(NJ/)*>@CKd+V,Z->X O` (PB (PB (PB (h2Lld\\Z ϲ'qb |VJ|XJ|ϟ?%VAxR(/*PP(VAxRDV YeYePjc,,+ YeYd, h, YdX YeYeY,,!XZ,,Z,XX<}%d7SqSዿ:8,KIS_::|jΈd'G%ژM> jvi1@uz}mT ې&FڋhMg&(NOi@<( |925EaL^n&^  ^jݹj`T#烦NSBH&6G7nBnie hNT#f'3\chI ,,PB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|Uk"@ZȬP(baYeYeV,>,eYeP >eYe, * Ye`X-eYeYdV,,,bk,,"청bb%T| @>Ft&<(tJ.p$uîq`=G$kV`[Nvcv5 ;Ƒ Xb6n&^^H&6y"⇚>݅P<^r5E䋴&σךx6^l|OB3zzdZŮ;:"q,2*Zcn N54\\ ..-R^TڢQrR\Tbb%l+%+ BhV*>+ бP7.qE^ 8 >E%,P\%uué}:JVo c*Unαpα~wP^SJ#ZŮ;ép J?+w1?bbw:~%= s;߂ P^,Z㤭 T4ABl,YVB (PB (PB (PB :FI P\PV|Y,ZROO O>|(/-qUkQJbb !PX,!h&> eYePjc,,bV O"Z,,ȭYeYeY ŢYeYeBYeZb US`>Hn!7(sïP ]J*vk(sB7В[!x̄4/b6^Եyċck/5-(}0HrdjHЛDHhBi.>\t.}&+ݪsHZ; C#UEk&НIj ViDH$\M(5DۈW.ɍgX&6`ZbT$} Lhz}O5BHB yk$]CG܀vLm jZr(L3B:4MkHk ‡D^: QG >i ,DQz,LQyCh4&Fo1#73Ӭ~u  Ch!ɑ"Bm1$]YyE&#ƑϾPnSa qSa nSa 6@Qpt ;@j6yt/@@(nԑs6ly"hHhF>37j/*NPͰ"1*l vCmťM dXv\T dНHk >,v\TM0t\P#%}m(GLJ#73Ѝ֥XIҨNfBtx /jZ\RחO v$925$\M$ }1T ڋʛ .ɍ @*^^F@w%NOLzQy" &׵B^v|t"EW3yk˧φPB4&F} 楯7.!64M &}Zw*m )P$c6{T/EgO/$]cPi.^E4 L#EK&b63!FoYgX6jU4)sy h'|:^ljIrޭ楯7#xҬͶDڠyjx!^^FBm L'yIrU.}&rQyr5imЛYy!ɑƒ V5j楨.ɍ5!#]6^;nxv^P m ^j/x҅zyP܍{T/5-@P{Qy" 㲇ePƒׇR35Ў;ƒ *Ͼ<ƒׇR35ЛDHh{KP=> WЛHJPhQ{Ɣ+jkڡ(}wGLJd b%kRq[ToJ p(X:J^qrXUJWu[K8?TX7.c%c;-Ύc89&!08c;/ 8c 9 rģV)p J?{8c~%w1?Zb%A6Pk;cp8)`$Py;/ħ;w1_O~Zb%s[!"VXVyIQ*X ZYeBiZ|X,> (PB (PB (PB 4d&F6dl2d.d.T^AsAYdjJY>+%>,%>|SϟZZIUMU+q+F2UkRqT'Zc'J\*V8tRh[Z01Zc'J=Zԫi:RխJƓmRkEJсZԫi:U ֥XIҗ8jU4+jb,,ZA`V,,ac,,bV EȰ,,,+eYeYeBhYeYeYYV+Eʛ%T| @>NtMˆQԕ ]5yJZ5l!j 6wõQ/j6@J|iLW@FBm M~JjV7JjV6(RZMXV,,ZV YeYd- ,XXX- e`X-eYeYdV,,,bk,,"청jW,TRcP)m0` w;ğ;%u:~?IS_`w >~jΡΡğ 6 bB 5-x6`s4#KJ 0Ll"^"y[+B7φJ|$925l1 Z=|AgI:*֥qbK?˃LPƓ\ȩj* 8TXqp*pTIzSjE JNrR\XRVK"Q["-bk"`X\-@(8["bbŅʁS*aŅʁS*\⑻^`*/pRNʢK9NʢK8NHݗ ]qJwaNʢK8NHݗ ]qJw\⑻FBlTKm:~Jw )P댗8nk*b.2Xa}/eŋ,a۰($&.wE!Ŋ2)O0ǐx/Þx21\HEӂ".w:A:C:"pDEΉ""B~У".uGD\D\'DRR| q8W\1w};*vk>jΡbOUPUn]:1wu".?(kRbw;G|9Qo3AkRbNX/ħ 4 lB?C bO@!ZԮ,Xa+pm ,eP[,!h`V|->,HPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|*\XRUkRbE*\XR(iUJŊ ֥qbKυa[,,ZBc,,aPX,!`X Ea`Z,k,,"YeYeYd+YeYeYekR--%T| @>;'oW\1w|9c쒧iֿWO|)UJX\`Zԥ KEUkR-- "hZ,,+>| ,`YeY Z+ [,, ,,eYeYeZ-eYeYd-eUJX US`>Hv?l]p`%Nӭ~㭀`:G$kV"x̄4b{QF7.ɍ;F.e׉g| L^b̄|x|OB3z=a0Zԥso_N4łEKU,mP\ ƢƋS¥KՊT^*.PV*PRw JX [$,ElдZ*>łbp-ejv ˜dbbG"xNE<&">$"~IK95 ዿcusJZ\>B?%+ZD䥋sc%JՃr?%V)b8ʂ\8cV)bsAvw1?jRŎ938)_7 rGҵK8+pm ,eP[,!h`V|->,hPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|UkR,q@ZԥpP(łL eYeEgŁb,PX,,`X-бYYeYeEl,,V-,,+2ʵF:`>HÌ|l:;GdbΎs?c쒧i־twEIJ֭|) UHCA;L^jbnBvLmeE NA,=yKڠE PFE%,P\%uΎ*vkGs:jc*Unαptw_c3;tEc1~wP^:; Qtw;GgA|8c~% 38c~%8΃)p J?Cp J?9#3w:~%=5΃p~%=A8c:q_#`NjQhi+pm ,eP[,!h`V|->,PB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|*F:UkRu*UkRu)sj֥VխJ7qԪխJ7qԥ)Z)V\iUJ7qԭ *֥.qJUi㚵F:kRu*kRu)siUJ7qԭ 1X- eYeEgŧc,,ϟc,,`X-еYYeYeEl,,V-,,2*֥PU1(|gLO 6߰`'%uOÜIS_`' tj v_wõQ/j6^i WǴkC5hNl4z}gEO5NHB 㷃bQƔe|Dڠ^Hɍgd"- }i M ^@hjJ6/j43NNl/dbeo5NH&oMf&z"5kRUg`B'Ns"6.QQcER%M/(+(Z; J֥P@RȬVȬ- EXZȬX. cNҁsLU(O]. (PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>|+>l,"X eYeY`X,,`X-,, ,,eYeYeZ-eYeYdV}UJb U&<}%6 F: ]_vo$u|u> )Zտ'3!:< kآ^lQ dСgIe׉dY QFoYg1e!V* ,"q,2*Zcn N54\\ ..-R^TڢQrR\TjUkJ )dVJ+dVQT|-dV,  0P7.qE$'&"x""">yRR| q8W\1w}iֿW;PJ֭#*UnαpWu{ʂ\8cV* q(;GV* 38)o9w#kRXVyIQ*X ZYeBiZ|XB (PB (PB (PB 2t#2622*/Vł XB,>|)UJb)UJbUkRX@+XT,,+>Ō,+>-> eYd, h,YdX YeYeY,,!XZ,,Z,Ebk<}%8n7:vJ.wÜEGIS_`:ΘjΕgJfBtx{N{S5皙Ljt皘ЛDHh/51y{TLL2LL2 ݩ7*{Qy D6 P<܅Hzxd3P!ɑ,nB P+ X(8["y  !8=Gw`px"LE<("(.skA?%upS_`q#R:UXV%i:JX?αVw lĿC"b u$.; QXZw;G]y;G Ŋ(/EM;߂Ebk J)PY ղ,OgX (PB (PB (PB 4d&F6dl2d.d.T^AsAYdjJY>+%>,%>|Sϟq+Eʛ Ŋ(/ )C"b V ¶YeYeYP+eYeYL, 2,XXX YdX YeYeY,,!XZ,,Yd2+-ua*ǘR@D(~+s*߲JZ{|uj[d'G{kڠykڋ4e 1Pi Mȳ|x|O)gI dV,Z̓```(DIX.dTQj*,h8\\*ZXEb U'pAX2+-ua+dY(XZEG±QX\,@.Vi@ܹF&*WNpi#9`".$" x"!JX7cw䮸bsJZsujQ}Mα^ڱ*Unαp_䡑Xk?c: ;/ G;Ģ?"bV{sAUI;G ŋ]Yα_Oa 8c~B?C"bV J)PY ղ,Og*B (PB (PB (PB 2t#2622*/Vł XB,>|)҆EbŮ )C"bV X- eYeEgЬV}YeEg°YeB,@L e`X-eYeYdV,,,bk,,!k,,Xㄪ0G@BB7ዿs?IS_l?%+ZwõQ/j6yP+ *ejv ˜dbbG9 0t;99B/\x4JX7c( ]ccJZw;PJ֭Dc%Xxd`)bXRu`ܻuc8/Pȭ)b8MAx]; QZRŎ9p J?ςp J?dVcxs;ci;߂ȭ)b%nmR eYd-@, υŁP&B (PB (PB (PB 2t#2622*/Vł XB,>|)҆EiK8QJ,XめF+ YeYeXV|*2,ȬV,XXX YdX YeYeY,,!XZ,,Z,p2Jt䪩0G@:E 6߰6ዿ`mÜ}T:l ;΀_В[{2Nv%F!ޙ桉 'x6@uz}gEG$]D5<'^3Fۉ@zE143\ i W^PLQhdo5P1hA\LQ{Ɛzy-Ϸ#^ڋhM5 ^4^yg!CC4Bs5ɇQ3SnƑm(GLJ#73?a%Zdm6tPƓ\ȩj* 8TXqp*pTIzSjE JNrR$'NJ )dVJ+dVQT|-dV,  0P7.qEہ.cr.nv!a_ Ȥ v?r]p16?;NӸujc*,qUn]:1oĿV%i:c;/ 6 Q\ ?`m;G3AIZNw:~%=+W;߂IZN^RT}J2(VYeZ}+>AZ(PB (PB (PB (PѓdّɐQz,gϟeNŪ)dO>~kV )V%i:q@,"X* YeYdV|- geYd, h,e`X-eYeYdV,,,bk,,"[,p2Jtꔒ<}% "o]pîc쒧iֿu[m|#R`[- h'|;^exoLQ D35 HhMCFS C!ɑ,ZlxN^Ɣ5L1^F6Fd#zd+\ :> 89t(DIX.dTQj*,h8\\*ZXEb U'pAXkVT@RȬVȬ- EXZȬX. ak+Sn\#lˑ` jbrE51y{T':FP]>JEWVTi`/xCILWhCﴐհqO36/j j0x҅2ךP.Ɂ[r逴z3z0S_a}O%+Zc%Zb.c%ZαVw l3OcߝTfw1D 9Qo`Q;Gl9Q[8)a8c!}i bO@!Ū(R [%Ghic,jeY E i`TB (PB (PB (PB :FI P\PV|Y,ZROO O>|UPJ֫XK'Zb.PP(Zb.P k)uRUPJUPJCB,"X&bYeYŁPZ,!`X Ea`V+eE`YeYe[,,,E,,ϲV .pRcP)3` qł`Z. Vi@ܹF&*| 9p:oĄ]Y`5JX7c~J.S_a}:JVoH#* ;uU(XRu`ܻuc6Kc: ;/ 8cZc=;G{p J?V .p`w:~%= ]!k8^J/)*>@CKd+V,Z->X O(PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>|k8_JՂ / )VXsDV, 3,,ȬV eYeX* Bc,,`X-XYYeYeEl,,V-,,+]X,T9*cP)xS 6,ܕ ]߇;d;N7`IJ֭6N?|"bB 5-xBPC#UP.u Mw+:^ˏrdR3z< O VXB4㽀^(DIX.dTQj*,h8\\*ZXEb U'pAXk'%l+%+ BhV*>+ h* ZrdQa xy  ȼpDEPE 5B/DE%,P\~J.JZwcIkV?˿c%JՃr?u`Rc:~wP^?(*Pq(+d8c~%i9QֺXB 'sqS w1;<1+]X,T9+pm ,eP[,!h`V|->,B (PB (PB (PB#$̍L̅ʋը.q`+>|,w-PK'dńϟ>J|U8\}*V (N(Ru`RPҭu`RE*V (N ŁS,,ȬX|&>,"X&bYeY Z+ k,, ,,eYeYeZ-eYeYe,ՂkIU&<}%<%CB7Db!~*vk@pwcl$1IJ֭#{ h'|;^exoL{NQdНgjvL $ ZgxҘs4 "yeP<1x6xu<>i< '3lLfBtx /jZ\7^=RכЛKjbJ)LW@FBm 4M^@XDTKW4"^@Q{ƒ/K^O!^$E܅J5ЎIk'R48{T/5-y$chm4@/4>:WEc11Cjԇ&Fڠ#]6KP&OL5@zyƒד L#/OgVzxƒ d|O)gP HV*n)NA;(/4+zew$]FFX^C#e'#gKjHzy Ƒ+ĈXTċ S>XHrdj5hNl4}z}gEjHzxH$kchNTCzbzԇ&F5LlJ^{j?*ouc*o)bXRu`ܻuc2/U,gXw3p;c88cC;/ SJ#kV✀: rģ; sAJƓw1?5 rģ>@9Q 'q(]XRw:~%=ry;ckq> qS@qErw1_OxFC;?+ZJ/)*>@CKd+V,Z->X O(PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>|kV*V%Z ]Xc'ubPTCIV+eʖZī\t]krՉ[.TU+Z(V*0WZĠb\ubV˕-rk֊Z, eYeEbX& ,+heYd, h, 3,, ,,eYeYeZ-eYeYe,ՂȬRcP)sfl`W\1wt1GIS_`: #R`?wõQ/j6^i W5 O>~{Tk&,<1"ڭhB{Qy 'yC#T XhQzE'/OiMO<1x/^BTE&F^j{r(O ^yEPO/O<=x"x6x7+ǒz)L^j/y#2=?L}BEE{6~'q`RF pTqTqpjb-TbEdEdEahZ- GEbp-Ac+Sn\#l?Nq!8=sGcPE𤋰ȻRE%,P\;W\1w}S_`>B?%+Zc%/hS䥋sc%Phd`){αVw lKk_gXwʂqGV "`8c~%l gq(]X, 8)" rGV "VyIQ*X ZYeBiZ|X-PB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|UEbE*V "@+A[,,ȬX, EbYeYeYd, h, ¶YdX YeYeY,,!XZ,,ȬV*)ZN T-pU1(|[0` ǎ!1%u1/߲JZǘ;'В["?d'G{KڍC2:Z%Հ`eP#Bp{""PEyz v?tዿcs%Nӭ~c;PJ֭cXRu`ܻuc9_>u".1 Q7gq(|w1?RV9q(=S8)9w# UsbO@c'*J/)*>@CKd+V,Z->X OZ(PB (PB (PB (PѓdّɐQz,gϟeNŪ)dO>~Jk)tJR'*)V \V9JpRkD ZN T-rX+IJ XX,,ȬX @}YeEbX& ,bVhe`X-eYeYdV,,,bk,,"J@ Ei*ǘRiO(?W\1wJZχ; )Zտ0'q`RF pTqTqpjb-TbbRJ- I[$,ElдZ*>łbp-ejv ˜dbbGyx v?tዿcu?kV3Un]:1P^qG;GNA;GXIp. 4`XmR eYd-@, υłPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|PbRJ- EPbRJ- EX ac,,+¡k,,łV,eYe, ,>,k,,"YeYeYd+YeYeYdj3HR UPUI0G@$@#ǐ` 15Vዿ<9d;NXc\XA[$kVOx̄EHCA;%MךAb޽x/Aa"\Ssv$k&CMۈHXBm!ɑϾ>+Hrdj5j>W7P&F LYM>6Hrdj35@Cj&F57y{QyـP<^n܄v(yݸv&yvcj!<^nHJAs23MB;eILP&}Sf5Hԙ!ɑI>iKE7.ɍBJ^yCj!Hrdj04ŚChd&F>)СW.ɍ(1͂B LQbc4(| B(>0/xRqD6P$925@XjnP65@r5Q"ď57y{TO5DvLm3y{T5!#]6j0@!ɑϾ͇3HrdjQC fcr$ (!ɑϾO57xҀs(PHQbgy(#Mn&^ԥ+ڌdO5/jfrPEq!ɑFOʞ4X@Ƌ"Bm LXlt\l)LP&}Z"(HrdjSw䋣A\l9xRqo &$925@d(o113!ՁhnDgIe(RQ!JT-Z2,ؐwå{RZġIhY"HLmL k$] E:LmQX>|3`=(|4HrdjR׍eO E`ċ} D36 C<C#Wk*x@=aw)s6&}VafE(| L^jZ@ޘhrEϾ"@` gDE-HrdjR׍eO E"Bm LX3> $925ykƲ z`q.}&Ͼ)E>eKKMAs_)@Cq vpgE RM'GLJd6?:(լPԣQB#o3!:<h'|:\藵-^i.^կ^^j\H&6xZ;O,ZR׃z^5< hG"EϾ"@d(k#c2)xRq<ԴJN$< C:*C#T }-yk[ۯʞ4hK>hgEM'GLJd6?Rb.bŮJR0 N?|"bB %KWKkǷW.ɍ46@M P%6đt1^|6:KDRpo!*8\F`&@J;eRLkK^ xT{EaEϾ"@d(k#c2^"'y P Ă瀾232Q@@(| Hrdj3ů5-x7x{uYS$} D3P&Fd#yH?L+XKF4)F:4p20qkR2lhC^Ą4D CUZ7׏`x^j Id皆HhM$k!6j۞#]P /5 MÉ PH.xFF`)7Gaylć&F>(Fbך$kEc桩qM>$925@B1CR `{Tk&!P6:+]#yjyC925l1f6PDLP&}PdT چ 5y{Qyj/^EHhMۈHhMgm&6>O5\.SpoC8iLP&}Rj|3 dpC#UP.}&җo$]P@|P\rNQ{925l1f6PC#T }d|3iBP !ɑ,P|6@\lLP&}R桫ƔkBB<׵D<5y{TO5DvLl5/jv$k&CF$k&3FNP ʞj07$%C ]! n L1!ɑF$925^dHЛJ^j0yvLmBaW.5

c&F3(|$925EcC6 ŧ1tP )LQb=(|!ɑ,L|3FEN(>^(&FgE:/yjP65@r5JbG7/jTRJHdЈRP<Ԥݹ  PRv5h#NP /5)7$%C ]! L/>>)L^jRPC Rj6$\M/5)yvLmBbW.5)yC#V^/he!ɑϾ'2ƑC +Hrdj ^+Q M>r&F>,!<5xҀs(PHQbgybG7/j橗 HdO5 W@|3 .(| L^jk*x@=aw(hs6&}Yr,P|6 yKC"T&F>-C,$925yjpt+ o^"ךxN6P @VgEM̄|x|Ox Mc73Bek)u(f)H03!:<Ə5HCA;%_j4%:^=5<.ɍ4#MqSbAqBT: @Ͱ"1$]y؀:xRq<97|dfd<6P XHrdj3/5J jvڄ*rˤo5^o(|!ɑ`l4 h&F>(H j{Pi!ɑCɍ Eڠyݹ  PQyq  LQx5Аڀl@j/7$%C ]! h)LP&}PP|3B$925^  T 1rˡCE7>ZհW ŚCLP&}P< F< C$925li郌&FA#eKC!ɑϾ9xҀs(PHQbgybG/7/j樗ɍ'@|3Д> C#W5< h;vԑs6&}R(>c'/He.&F>))# J\$925yȡHrdjQ"Bm)yE1T 0JН' $925l1f6P!ɑϾ> jTt$&v^k*lH.3Lp q1hf[0>ELQn 0rPJC#TZsF $LQeG0>@ Hrdj 0PT&Fi$>@B(>B$925Ea IQC3C#TXlW)x8@(|``gE: <9xҀs(PHQbgy,HPeC+ڍdЈQj67nBFBm1ZC#T }HC3&F5>1*C#US.}&җo$]P@$GLP&}V$ ^4(| u!ɑ,P|6 kr$ L5^43\&XnFj,HPeK^jZr51dTڠ>CV5< h;%HrdjHЛDH>+DXl/He,&F>,!<9xҀs(PHQbgybG/7/j׵.#]Q<Թ{T0!>RԹYS08G0HЛDH>,(>/He,LgE(|aZC#W/7 BD H|6 H+E5^lHrdj3P&b3z<@J ek)u(f)RƕJR0 32l! %LWL׆cdcisLMېЛE517n!#]a LSskBcjJ/yq!* %7 O M>!JC#T },ZSv5 J&B6P @lgE`ġC#UPЛPAJf\pq#y)L[a昳@(| Hrdj3fT ژ>V/7/j/#]FO5jf‡b)L^j/xTzL2bԇ&F} D3&E(h\lRL谆S( 2 &yj0Ejbq2BF&6j{T0> !ɑPk*x@=awC.}&Ͼ.E(3xRqD6P!ɑϾDP&F51yNHu+ Pt\-yM> "C#T }B62=0Ad΃(VBRFi RvR̄EHCA;DjIrޭxbRE1楦HhM&yh5!1%5-7$%C ]! L谊ԴݸuchlB"yiqM>!ɑϾ/5-(| Rjvڄ*H+$o5-y~925lmbl~&F>-ך^Դ~&F5-y{Tch5< h;s6&}XnFEg‡`m#c2< Cw ?LFVBRFi RvRdkd'Gzh'|:\~jIrޭxbP~ L^46@M P%6{Y|tJL ⇚϶M`Tn-3LfZ><e2yCC#Wk*x@=aw+EϾ"@XVcb楯ʞ4X@ƊB >hgE`ZfB2(|?925ykƲ z`q@ZHЛDH>,AEbP>RC#Wk*x@=aw(L >hgETX2ykƲ z`q> ؑs6&}X,E U>HrdjR׍eO E.}&Ͼ)E>+P<ԴJN$< 7@(|>D&F>,HP|D&Fo1 Z=|AgI:|+XKF4)FT#l̄ *$!p?^ԵyxoV{ux1(|>925xZ;O6Hrdj5j>!W77>(Hrdj04ŚC`&F>)5@jP$925yjq251;Eڠyݹ  PQyq  LQx5ӤbpBT< ё0>Jn @@(| LP&}Qf!>q!ɑE LWBHЛJ^j/yvLmB3r'y$925lmbl LP&}Q^j{Y"B " 925EbP>$925Ekr$ $925@G‡Pe i ,LT7#^,HPeQ<51Ay{T5!#]6j07n!#]6j0FgE`5xҀs(PHQbgyH#CW*yR$kch+ڠ>AC0C#Wk*x@=awC0C#REϾ"@X"a9xRqD6P !ɑϾ/5 ^43\&XnFb<5y{P桊b51eP!ɑ,P|6C#T }B6s2=- 73e,9ydk0+YSbAqgPN&3- ޲N|30Hrdj "C#TXfx>+Hrdj 0Hrdj P>ILP&b63!@3z<@լPԣQBqrfBtx w"$! xo^{ 栰vLmLvx.*lH.7HJA(F$chlx W)x8jnn %@'  Gayli!ɑϾ@(yC.4Hrdj5j><^+$o57yA!ɑ`l<he!ɑϾ>j{Sr\L^jnq251dQz`lDP HrdjQ{Ʋ z`q>!ɑ"Bm L娱A +Q M>925@G57xҀs(PHQbgyX7/j0y{T$kchDyP< r5hMۈHhMg C#T }j|3cbR CiLWDHЛJ^jE1TW^o(|!ɑ`l<heÄ&F>)3uJ"C#TXl^+Q M>Hrdj3jnP65@r5JQbGLKJWɍ)y{T5!#]6j27n!#]6j24&F>,ԩ{Y"dE5.&6ŧ06JLB->|P v(>P f&>IQC,jC#TXl+r$ X4&F>-C,C#W'$]B aN\-yM>C#T }B62=XAdVBRFi RE#̄EHCA;DjIrޭxbRE13ƒy u!*\f.chl"$xRq<ԴJN$< C+C#T };yiC+C#UP.}&җH&6 +NRכX925lmblRL{P/k$\Xf")(|`B&>P> C#T GLJ- 73UPԣQBAe#̄EHCA;DjIrޭxbRE13ƒy u!*\f.Iᰈ1xRq<ԴJN$< C!ɑϾ5-(|T&Fڠ$\M/5-yvLmB%oW楯7>R 61f6P@`gEj{Y"&yuchN O>R1C $925Eb JiLP&b63!@7|" ޳$l~c(RQ!JQ^`H0;}0o!|@/   ąb H|j |H"GC}9>ȑjH5r$}#Եj |H"G<}ҷϾ:}ys+X:`!Ⰻq`3 1b X0Ņ81ŅX+  w?+  CVBXcb?LXc!*aA+ ??Xc1!bJqXc+ }  -EڢQrR\T5)(R+dt 2T8/ ah-+\,XUrVJ}"F* IZ0Z$ [T^,d (dfdV+ ŢbBS"-?Z˚ZTXaxBqs"JqQIHխ d*X^.dR8kCwRŪ)d\բK J SLx)qb KTJJ.,ZRJ+Ghn"ŋT*R˅ڢ*Vv[.ijQb ̊V)GE&6)Pqjֆ2)Zڢ*s)vZ-ZE+SL\{]8kCw# \ȥ?%Xd`cw\1tp20qk7qJŪ)ZqJŮXҿ) Y SLx8ŮR`ȥhhFn4p20qk`2)Z)Z*>b)1(qѣURJR0 1񫎍 Z%) VVL|`2Vv[.ijQb ̊V)GE&<`2VvK,/2)O#JJXd`A*앴˚ZTXaxBqs"JqQIp20qkB}c])Z)[F" Z%P /qKŊUJNe-Z*,TT8JP8qbK*Ztobk:`JJޥPbK.TNoT50lf{[I;EzN.#1J|`2)ZŊU\.p.,X`%P;,˚ZTXaxBqs"JqQIqbK*)1bB)Z)[H0dRŋ,pŗ /qKCEeR SR7[F"+.pRB\.p.F"b$2)Oʖ4E+E+EGE&9RƕR`ȥhoqK,VB+i;-4hRRE+EB"qK,VB7k-qJJإnT``2)Z\Xb2s)w7qKeKV JF" R%i:u\{]wC`Ս+d\բK J SLq\XJƕ.,P%ucJ.N5uT,w(R8*J|B`hPHcj -[qK,VBmAbJ|cJ)H0dRn(ll\{]Vj 6 ]XҶJNe-Z*,TT8JP8Ƶ[,P%ucJn6C`Ս+dRRʖ4E+Vqi[.8^}U^*XҰJR0 uA{ke R-,PYsB+#JR 8 J)NHk.8^|cJ)H0dR+As"'ia:)+i;-4hRRE+EB" XNJvJNbE)BVVNu S)ZpdR\`.8^`dRXE)'ia:)J[IlEE'2)Z*1Nu S-uXaxJ,'P8BYJS*ZXB\X4p20qk -uŃGTkڢlqTVV)GE&:˜n)) VV)GE&>5P^[Y1Azn)dRR \XB,˚ZTXaxBqs"JqQI.,ZR)qb )Z)[ŋT*R E|R/V\^,V-PK.8^}Bw%m'e断*X^*P\ȥhRT|RcNT:9 RG,VVJjYsz)Z;]P /qK;[X[)T.p/VE+SR\.p.J'd\բK J SLum-Z ,OU˜ ոJm-Z ,N˅5P^[Y# J -p`2)Z)Z*>b)1K\) VV F@O0RZKq8'qb lpNa{NTڢŊu ]qb+*Y0t.mT*R(.0XƃG"`ȥhhǍE#JJZ`VE#Jզnq\.p.k*X%m'e断*X^*P\ȥhRT|RcXR}Z (trȥhoƃG"`ȥj,P /qKn,i Vv[.ijQb ̊V)GE&5JXӪ)ꕸT*RȥhnsXI%ßXIX8>48E+U+qcNT /qKȤ`2)ZF J~4-VR0 1j`ȥho4cJ|j:R0 1^`H0dRRT^^b⶛x?f#|\ cA#NBp{`/cBp{`!ӃeF? 蓐Πcї΀KP:[Ng@oc!8=Hp{p>p{ <> x> {1| cNc;F? 9 ۀLF?170GO0 wcF 89CF 8 1HcsH1< cJ,b1%CNa(1%w!| cWcÐJ1 xcp*&b1B2'( cgx 0' xPp{|Lp{^B1g!8=ACxF?xRp{NB1L-'0 q!>N`p*`!8=(T#c }Nx('lja9xF?"T#ppwsN^B1 p Bf#{N`IN`Qp*eGD `!<eF? N`@2CG#`@~B1^Bp{ 7w b1( (9 (yB1Y#'!)1Vwc.“b1) 'H$8= !)OxF?"ȂN"!숟#Ȗwcd@wc*@7b1Bp{dMs+8c&&8=!{15T#w8pp*p1'ĜNB1##)'F[c#GF N$8=ӃNB1qy x@`DOA!8= rؠbx"8=/F?oϐ@>cؠ c"ؤmćIgxF?Lx *_N`FKc'#*C|k8#3'#'8=1T#`N#Pa3 9 P`>#Bp{#1e0ljdeLp{#3c,cd`k&# cK$.'${8= c('n&8=-c>&8=|sR.+OD\V[͈qZd\V\Vc.Ef}y2EcqYqZ9qXk "[d\V;ซ\VHE`˒qXuHaNTEaqXyʈp*"{qX{ʈ@.+<qXDD\VxqgqaBEł.TEłnNEŁ?*"x 8qaTEň:".,.,pqb.TEŅV8c~%+1 rģ>7fsA[ӸAcp J?Vo;G|Y;G|,Vw1? qXi;G|x5 rģ@"`w1?+9Q b_;G+gq($`w1?30..)ia~+q(G9Ew:~%=`w:~%=+8) ?8) O9EYE,!α_OFq`w:~%=3;c_ 'sqS1b Enbu"J{3,XS;c\XX/ħ#ذw:~%=qc8),zw1_Gj3HR UPVyIQ*X ZYeBiZ|X B (PB (PB (PB :FI P\PV|Y,ZROO O>| JpRkUk[\XR* ŊL (/*PJb.Ff㠩R2tZJb.FA{J-XKF C3h*jP8ۣQʗZ1XKF(ZՊJsKV(Z[)VB*j3HR#V7rJb.) d(RQ!JP(qѣ]J`IUPԣQBP7 ]88ԩJFZ ]J5)J:4qjJV)H0XKF4)F:4p20qkR *j3HR`IUPԣQBKV)H0XKF4)A;K )O%VBRFi RvRdkUk)u(f( `6J`-XKF4)Bn))Uk)u(f(Azn)XKF4)BK\)Uk)u(f(hdR0 $(RQ!JQja%VBRFi RBJFZ ]J5)JūZVBRFi Rk)u(f(8ŮJR0 *(RQ!JP(qћ. ZT#­b.8Z+\J`UPԣQBW88ԩJFZ ]J5)JR0 *(RQ!JR+J`UPԣQBXKF4)A;K )N2Pڵj3HRj0%JR0 լPԣQBz j3HRjYszլPԣQBqr j3HRh4p2)k)u(f(hYH0XKF4)Fy#”j3HR UP@ĭ4irոrk)XKF4)R8kCw*(RQ!JR`b.88ԩJFZ ]J5)J:3pѣ]J`UPԣQBPGTkR j3HRjG#)H0XKF4)JFZ ]J5)JTiR j3HRBk)u(f('ia:)JVBRFi RRdJFڵj3HR/V⒑aVBRFi RT.p/V⚵j3HR..T‘aVBRFi RE#­b. )k)u(f(/0t`RFi A*(Eb`YeYgŇŬ,+HeYe, ,"Z,,ȭYeYeY ŢYeYeP2 Z ]%T| @>7t;ğ!%uAſd;N@s_ )Zտ.3!:<h'|:\9" (FM (G:6Ҧ^DchNg3$]DG8xՒ.ɍC`E ԍvLm>g.$]qC m.3bc0`|L|>&F8<>'޳$1c(F U--`~E^Ą4.Y" Hg3$]DG8=E o3<LۋJx.ɍ85#]OˉhA\Pghz6110>&>ACj9Hrdj|39q" D|3R!@^WuorE1H5P"Hkڠyxgup<>'޳$1cI)V^fBtx{Nt ږIdМgH@^Qa;̑vLm | HdrEW<0pF&3P$925yj(%@έp<>'޳$0ØF T^̄_W! K`jIsY"B/4@ jy^KW.ɍ5.LmeEӤEci ,dThEx7 ^PEC#UPEiL[d`3m2d5@|6bo.(|"A!ɑtElfB><>'hf&x?2RC|̄4k"^АlH ĉDׇB 0$.HGQ`@АlE Rj/E`Ȱ4y"#28?L尐XKd'GXW! K`g1$]Bd -EՒ.ɍC( Qe/s2E1D|3`Dɍ ċ (x3SG11C=a!ɑ2ȳ|x|O)gIb()VBE|̄ *$!p? ċ&̀mxguxgVg.$]DX^,D6^Fd#yH?L:J UPg3!:<h'|v ژ" J!ɑ-皘jݼvLm.yvըݨJ (O!6ĆEڡE&*l$gh3 Spf} 83yv5gjĴ̄|x|OL3z< 0p̄4b{QF+d^k$]`-yt1>H3è9(| @PPyCj6y{Tck/5@PnFEg C;CQFoYg19k)2l=|A^Ą4p?7^iX^j0x dL43\#5k>  0yoB5EIHɍ;dF)EXh3j^^7yIPp7o#]M(XbQyC:C#REi +HrdjHBm j07o*l$>F&6QbD P"‡a{QƔ&kBL:Q.}chE13dHQN<nuQ{TGfX7L2iLQNj 4dL}P82}yHh# S5n'j0x҄s(P3yݼuaZQybLm<`ndj2>݅FH 4&!}#^dQzE1[d"`W$yt/ytBLmHx‡@1EĘ"×#$ a}#^dFHKTFG۰Hj>Q/j2E݅FHFH] S5n$XPd41 S5n'a{QƔ&kBL:PXQفAC9LQaAaa8qP69L^iD2@>Q/j2y(L2d|6`07P0 &F`(|"L[d`3m2'a{QƔ&kBL:|݅Jj/>݅Ek,v5PPQy/j/7o#]dj2$]D5݅F5Ddà55.ɍC Qb#C+ڦyQفk1C ć&FfTۏ*L^i/4 M`jyQ/jT6'( 3B:yjC JԑvLm Mj"@}{T5NTHJTJa{R>݅Qi ,:(|RTchf{Qz,D|3`dP> >pLJRjs651yvLm!El@B{TDk&{Q>vԡQ`Ip.KLGLJ730d HJT3!:<h'|v ژ4 /O51^GDchfuP"G6 @T ڋj"$yڡEl:^`gfx`P!ɑLdG܀vLm jb|6`f0>كr&Hrdj63 +:᜹p ^bZfB><>'gI` Y|̄ *$!p? l,(| V J pvWpj?b63!FoYga )VYb,p?-@^ƒ/ xg3^^Wuk9r2>'޳(^a?$ Yծ?|"wå0x33 s(ISpfnF1<}xgohf(GO P<AՅ#^2>'޳(^bzjug3!:<h'|:\K^ 07e Df-E chPf-xZP 2C#UP"5-(|bt&FڠyE1LT 6kKWlldR3z< K@ x NCl'g 00 `?A?`A>p@9{?>@<&@]?h0@<Ux C3'N(DIX.dTQj*,h8\\*ZXEb U'pAXXKEdEahZ- GEbp-HZrdQ тqjL2%#$aq1R0g0NLT18>p_H{gA"ߙsR =bH╬){bH#BPHbP0 )O8k"c'TSui$Kȥ?PJ A(%=Dc#7'#΂Bp{:.;H.c|Dp{yN#?!8=`>$8=BӃ !?p{x#|ą2.̋\ w )\qnlEcȸ Mp@[.Ew^E.<d\ԋ\-"߀E,Ӕp@ y.| \gŤ\NREw².RE: |{\ȸ <H   <.REq7p'$\'g9  ."8paD\'EHNSd\'*$\'Mi$pBCi". H!pZEQ!As\n]p10@-T:}w)Zտ,c%,VBK?αVBK?αuasXW?RfαZڗVc%Pjs cXusuXU(N,T䥅 KXV8qrα\\?TX7.cJQ_c1 C()V`9'j 9'-D3rO%.7yc:$PRb.c:$PRՊ9c~w)ZE]YuI$_c:$PRiibAJJ<&c~w`xuI䠥Zk]Y}c:$PRb.I䠥Z ]a I䠤,P#,c9'mbVa*I\Ef rO* 8c*! rģjAR>N9QK )p J?)VB|9QJV(R7w1?VbVp@6 rģ#*R3ARiibN9QJJ O;G*uf gq(Zk]Yt8c~%XK9QJ,p J?)K:p J?-ugsA.N9Qq(ayp J?U w1? U-- _;cT@ gsqS߂-@X/ħ.79EZ ]@X/ħ+]XH߂u;cCŮX/ħ& G U8 'sqS߂f KK@sqS߂j+@gsqS߂f KV gsqS߂jug ӹ8)J+;3"J{Rb.8NI;/ħ b\8cSn p~%=QYg3"J{ l!k,1? k)t^RT}J2(VYeZ}+>aj(PB (PB (PB (PѓdّɐQz,gϟeNŪ)dO>~J(RdC]qkUk UP^,R`_%VAxCUk(O%& G U2PRijVRk)tP(*(R4Z ] )AJ - ŨeYeEaXZak,,šiZ,!`X Ea`X e`X-eYeYdV,,,bk,,"[,R#(R*cP)6QF0ԕ ]5d;Nk\|5Ĉp|BJVo>3!:<{NtϯjZ\7^=?ԸvLm.yir5h楦$k&3KGmh/yiq!* %7 O M>!ɑϾhkKMۈHdAjZnD(e1Hrdj3yiCjvڄ*(yk!Hrdj04ŚCjd&F>,* P>/Hrdj8'CjMlfB><>'hnDgI&VBRR#Jtf{ 6 bB _jZ\7^=?>i-*l  RJm &v^k>6$PNJfA8̴|x3z,gRԵX@ޘh0$\M$ } fg6 @925ykƱ{08NБs6&}YJ- ـy P Ă瀾-32Spe`gE AC#T GLJ- ޳$VBRR#Jtj9RF&d'G7|"/bB ژ4 /KCiL^46@M P%6{Y" 1E!1H&&6`^Y"NLmQXD|3`ZPE0HrdjS*&Fڠ$\M/51yvLmB +\BwPE925lmblRL2|3aƔV>2(|6HrdjSz&FfQC=jC#W>$925^^FBmB/.!CL^o(|C#Vy,&RLP|kE2Hrdj8'C=&FfqC=Hfå!ɑ- ك7(jbn %@'  MB M> C#T }$(|;Hrdj62=0Adγ(RQDiF ՗85u2,ؐwå}{RZġ&FKGi犛 ĂqԄtq`DbtBLmk$]/5.Lm>Y"FLmL k$]rY"蔘 |fjPC#Wk h;EϾ"@XBv&F5-x/x@=aw(D} D3@6v&F5-x/x@=aw)EϾ"@` lE L^jZ^zL4P2$\M$ } fg6C;&F5-x/x@=aw(HBEϾ"@e('fNJ(jZn %@'  MB M> !ɑϾ> u!ɑ2ȳ|x|O)gI`#c+XKF&VCm:RK2,ؐwå}{RZġ925xZ;OD&Fk#c2e楦BTq /LLv'& L7>925^"Bm)yk䋲cj>:-xpq jZyC9iL[a昳@(|%LP&}XN|3:0xҀ LP&b63!@7|" ޳$l~QXKF )uœ2l! K%z۫KdKGi犛 ĂqԄtq`DbH!&6φQp925@a9,xҀ!ɑFd#yHAd >b.FA{J-d'GXW! K%z۫KdKGi犛 ĂqԄtq`DbH%&6φWW@q<ԴJN$<i C7a!ɑϾ<Դ!ɑ2ȳ|x|O)gI`#c3PԣT҅ N?|"bB KWKkǷW.ɍg!#]6jZ;nxtڀltԴ8tZf xv'&%Hrdj35-(|!ɑ2ȳ|x|O)gI`#c2k)u("4 U49B}||||''';}||||''';}|||pppn Fq# #8 ă HS0 k# ʱkJ k;a5DDZkL0  ,BYmQxAXBI.PV*F UPVPRw 2T8/ 2X}T,@* E E±`[ vcBS4PZJтT)%PV^Jڢ$eQc NC#5@"XV- 2 Ji C3hJNe-Z*,TT8JP8Pn/qXaxJx^V mћE2)Z)[֨/V\ҵei PT;tj9RF,VV)GE&=Iy[5&n,dRR)Oub#}QX(quE`dRR)[^!T.pj9RF,VV)GE&=8mF ]qdnр {K :LYruB#QʗZ1dRRT)N*>b)1)uŊ\wn: ,'NūY SLhՓ'NūY1F ]qc""*0RI  dRRT|Rc2)Z)[L2(lpJJQIA{J-dRRmF2)Z)Z*>b)1񂅪˚]XHݒsKV,/(N.dRT)N*>b)1;86~Bp{^Bp{x.x#1q< cρӃ΂.󨸘tF?6@atrk|pN#:p{Lp{ xNp{>>y ć'dLp{ A"17 y  ddωdY"#e1A'FY88=aa!@&ሌ O"1$x"1$8߆"1%|"1% F? %p>p{ @qNd".&8=.p q!WNd/p>p{! /؅?GN#"1#ax!8=pyO "qy^HEĞ/"BJEĂ./"A7>Eā?q## eJZ5X?j|ciu,:XU(N,T䠥Z ]c%*XAJαjXAJV(R7:J[?: f`\\R8c>u(07c?; 8`Xα Pec:~wd u(:c?;g%Qw:~%= H&α_O3;cQ 'sqS>|,w-PK'dńϟ>J|R%i8)P* Ŋ'q+*Y%VAxI}[[.ij ]qX*V(R7[%VBRR#Jtf{Uk)u("4yX(qF.c%VBRR#J5P^KUPԣTғ+V\PHr֌d(RQDiFn: ,'Nūd(RQDiQ&NcVUPԣT҅ʌ*jP(hnZ ]J5H)R 68[%VBRR#Jh20rJb.F`j#WV(R7XKF C3hʵjP8ۣQʗZ1XKF/V\r֌j(RQDiI.PNTj9RF5k)u("47J Xյk)u("4Փ'Nūj(RQDiBF ]qeZ ]J5H(4`7rb.FA{J-XKF մ9VBRR#J0PYsC)ҍR#(RQVV˚ZBjV9JՊլPԣT҅`^Z ]J5H(^V mѨKլPԣTҍT.pj9RF5k)u("4՗(mT*R5ujQKӬqjڵjTjɓXյk)u("4r.b.F 0VBRR#JT¥ լPԣT҅ XKF(ZՊFUk)tP(XT,,+ PX}YeEaYak,,`X-`X,k,,"YeYeYd+YeYeYeYrWZ+.qi*cP) ?Ő` ዿsT:Έs?%+Z,܏z. 8w| ``1G'-W`l/ 6n/_`l]`l̀`@[`"H?z(DIX.dTQj*,h8\\*ZXEb U'pAXYrWZ+.qi+dY(XZEG±QX\,@.YZrdQ h?. e^R4F bp/z1TPk0d21بgA0#0'Fapƣƣ0H5PʂX9PkɁ0b3*(q:1b3H2/!/p#"'#"7^B/ 9)ϑy|żȼ_ϑz.|\^Uϑx۟"ǟ"ȼ"|^>E|^s^^ y/^ /y/\\>|>E%,P\ ]cc%NӭΈGkVtERu`ܻuc?/.?(;GnA;G?! rģE;G$ rģM;G~9QAcٝ rģ_X:sq'#:B>w:W! w: w: BsrG"w1- ˒YsI[%Ghic,jeY E i`& B (PB (PB (PB#$̍L̅ʋը.q`+>|,w-PK'dńϟ>J|n%/hŲ断q+e-Z\kn%/hJSVS*Irո.q+J՗(Z[K1V@)q*Irҫ.JEe- *J^ыe-[VV˚ZBjJ^щĦ T ]q){F-+V]VV.PڷbbSVUk ]V\֊˜Z(aRXX,,+ b ,+ д YeYd, h, 2"Z,,ȭYeYeY ŢYeYeBYdCU+ZJ| @>xQ%!𔄕 ]JCÜuJZJC<a(uωjP CwõQ/j6^i ^j6x ݄V<5hNl4ϾeJt^f60j@y#2=?L݄jJI h'|;^eg!/@E`W@FBm 4&^@b(j/e7dh 5OMf&zu0CUs2Nt{R皖i.> ׵@FBm 4M^@bך7ox/3mkchk ڡE&׵BT/1#73Ӭ7u+-w3!:< ױ-^yxoyx:xf/3aJ0`h8ʁN$>݅P<^oy WBFBm j:3n-*lTH&6j$y( 1yq E1LY" NjbqƔVFkC @$925^  D6tLT/V/7.ɍ'x7 gDPRA"&xb6<(Ejbq1CL^jI3FLWjf}LW533N30tiq#+* dƗjb dLIy {(|"JC#UQЛDHhE`)Vf  P0 D۝x҉zx樞n"^`PE925x҉zx樞n&#]65DP@hm jgxC=RC#WϷaJ%;Ei•fcBN8N$et%@lxLO/j2y{RE1nFJIhM/5Dd>TO.j03m1}B62=0?L¾fBtx /jZ\7yiq E1LY"Ե:4<:ךEkqEi•fcBN8N$et%@lxҭz}楯. 1RT`Hf"cEo@fN$^EԵeP.ɍx\oVP{Q"y< ׵BHBl:@ȳ|x|O)gIp+F<̄4/b6^Ե楯7/jm{Q{P.ɍy hM/5ɍۈW.ɍgX&6a;E3E9EԵ#c2(")J-.PET+%>,%>|Sϟq+Eʛu+-vCU+Z(Ru*kEV+eYeEa`X eYdV ,,`X-"Z,,ȭYeYeY ŢYeYeEbYVAx*cP)y^7uy+d;Nl_BJVo  kڍj67n!#]6j6yvLm'gPak kß2"q,2*Zcn N54\\ ..-R^TڢQrR\TbaasCrVK"Q["-bk"`X\-̭NҁsLU(LE^xsAs\nW\1w}T:q8)Zտ&Un]:1_>u{ʂ|8c :p J? w1?8u"J{8c~B? P^,,.hnJ/)*>@CKd+V,Z->X OGϡB (PB (PB (PB :FI P\PV|Y,ZROO O>|(/47XXX\ޕZEZ(/47 "b,"YeYXYeY Z+  e`X-eYeYdV,,,bk,,"청baZIU&<}%:g F x I]pSß쒧i־NOl9?BJVòy2Nt{Rךk$]D5.LmRכ@F&6ykKڋdҗ7o*l$eP.A\'xZ4 OMkE}tP ďKW#ƒ :,Ij楯7/j0$]Q<`P5hm-xZxNo< !9dbe;F7#^`HBlvRטGLJd ~ ŅjS\(DIX.dTQj*,h8\\*ZXEb U'pAXZµH YhT|+ YhP7.qEOv " 𘋰[As\n2 ]cc`T:)GkV<Un]:1?{gX;/ S;Ģ?լP^,+PL8c~%N9QլP^,+Pw:~%= 9w#k :J/)*>@CKd+V,Z->X OGňPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|* ŅjVAxCE* Ņj "L, YeYeEhaYYeY`&>,eYe, YYeYeEl,,V-,,YZŊLy>J 9Ql<5ğዿ<9?*vk<5)΂/ )Zտa$N{Nt-xZ6fԑ楯O5Ў;KJĆmJep[\o-(}!ɑ`ȳ|x|O)?L JŊZ/s!BN4łEKU,mP\ ƢƋS¥KՊT^*.PV*PRw bEdEahZ- GEbpfVi@ܹF&*xbKxN#('H8"܄{$^ #"Nx5tþ&"sAs\n]p18s;Ns;Y[c*k)t*UnαJŋ?α?_Xpc:~wP^3J#9 rģ82 rģq(G+Rqb q(w1?k;c\9# k*XJ/)*>@CKd+V,Z->X OGŨPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|Ԯ,X\kU\XKEVVqb-Jŋ, )VbP֎Vqb ]JŊZ/rk*X(RqbKbXeYe`Z+@eYdV @X,!`X Ea`Z}YYeYeEl,,V-,,+Ddʷ<}%#`4B7=ዿ|9H|쒧i־as`BJVo X x̄_W! \Έ7^izh?kڠ>i@/@ǩL^4O5hP|66P LP&}P^Qz뷚7jtiO^y (>AbCRLp ^y"Z>!ɑ"Bm@^Swo(| @lհL6PC#T }<^6>P ڌhMAM>!ɑϾ<`@PU!ɑƑzE7ЛB M>$925@@E7ɍMox/xuCj R.}&P}^jn{Hrdjys@(| vgEך=]5y J@$925x/^y5hP|6`L6P&F>(E7ɍMox/xuCh$925$\MGyCh&Fg4 LP&}P6j/@vP%FHs!ɑƑzE7ЛB&3Hrdj3XQ{kchbSw4hoPE C#REϾڀ*LSwo(|"i!ɑalhgEbzo^5x@`q>@ԑs6&}S d7i:|.}&P|Moy!ɑalLP&}Sç" 7/jRFBm eLP&}S'{@;> $925x/^y5hP|6`M>L览^j/yvLm ^jn{Ƒ{í!ɑ"Bm@57yz%Hrdjys@(|hgEj/@vP:HsiL^4קj/yv P&RLE7ɍMox/xuC<0HrdjHЛPAН7P&Fg4 xLgE!j/@vPBd҇xiO^y (>M>$925@HW^y"Z>925$\MKMoy$925l<9M>VgE!#ywECW )08`ԑs6&}P!^y"Z>Bԑs6 57y925l<9M> !ɑϾ^;׃}!P<)LI>hgE J^j/yvLm ^jn{Ƒ{íG)LI>j>:nSwo(|AC#V3C!ɑϾzo^5x@4(|ALI>hgE o#]C^@;}t&F} T57yt4&Fg4 t L"'zo^5x@&4(|F LI>hgE 5F&6/57yHրv-HrdjHЛPA7P C#V3C:LrQz^ 4080925$\M$ }#VQ{kchbSw4hoP$925$\MzSwo(| )L[4heLP&}P޼5i ^"e&HrdjHЛDH>);y511yE(| ;HrdjHЛPA7P@^հL6PAC#T }޼5i ^(`q> $925$\M$ }E7ɍMox/xuC9C#REϾڀ*57yr925l<9M>JC#T }|^;׃}!^<&F} D3y511yE(|"!ɑ"Bm@jn{C&Fg4 +Hrdj3^;׃}! `L2 `ԑs6&}S d7i:|R.}&P|>2y7>925l<9M>925@N^;׃}!`<!ɑ"Bm LJ^j/yvLm ^jn{Ƒ{í!ɑ"Bm@57yp&Fg4 p1Hrdj3^j/@Q{Ɛ0yC8LI>hgE`:y511yE(|/HrdjHЛPA7P FհL6P C#T }O5yHj&4(| LI>hgE`HQ{kchbSw4hoP ԇ&F} Tjn{925l<9M>p!ɑϾ^j/@Q{ƐR<!ɑ"Bm Lo5F&6/57yHրv!ɑ"Bm@7P )L[4heć&F>,m&&d#z- ޳$& u-NTң,u`̄_W! %LWL׆cm{T(Ew>ZIL^o#]6az6PCC#T }'=]PΔ>iO^y (>4 LGo#]C^@;}!ɑ"Bm@'yC #Hrdjys@(|LP&}VcƑzMn@v &9C#T }= 9C#W"o#]6bC& LP&}V5F&6/51yHրv$925$\M/7Pȝ!ɑal8gE/5yI0yC5&F} D3ռ^y"Z>P!ɑ"Bm@51yjhհL6P KL 逴z3ziO^y (>hP&]ć&F>-[E7ɍL^ox/xuC .}&P|y7>!ɑal2D&F>,m%d#z`- ޳$}IJ:TjɓX1Rə 6 bB ^/jn ǰx P&׵@|ҁy^q!Cd!ɑƓuFBm e2C#T }%#ywECW 0yCd%HrdjHЛDH>(Hj/yvLm ^jn{Ƒ{í R.}&P|ךyC3 C#V3C3 L!E׮j܁{T(s!ɑƑzE7ЛBF P&D&F>(H-y511yE(|`!ɑ"Bm@zSwo(| !ɑal&F>(Fj/@vP+ڌJ #Hrdj^>Q{k&РlT LE7ɍMox/xuC R.}&P|57yRi& HgEď5{^yjqJX iO^y (> jC#T }^y"Z>nԑs6 1y7>C#V3C 925@H j/@vPEFHs,LHz}hMA$3@(|`BgE ^y"Z> 925$\M$57ydi&LE׮jLJC2iL^4קj/yv @j6P !ɑϾ>0y511yE(|@Hԑs6 =y7>! C#V3C1C#T }zQz^ 40yC1 LI>hgE: j/yvLm ^jn{Ƒ{íR.}&P|WyC1PհL6P C&F>){E׮j(^ԩt"C#W"o#]6`(@(|,$925@X/5F&6/57yHրv*HrdjHЛPAJ7P&Fg4 &F>+<^z桫^lw:P^Hz}hMA% M> RL<^y"Z> R.}&P|Swo(| !ɑal LP&}XxQz뷚7/jΔ>@Hz}hMA% &Hrdj3ռ^y"Z>&F} TMoy i&t&F>,m&&d#z- ޳$%-NTңV4T`.2l=|A^Ą4;\Έ1^i3^^=t P4^izHP?C#W&+51yv Pv6P?i!ɑϾ>fQz뷚޽҇&Hrdj^>Q{k&Рl$ Hrdj3^y"Z>!ɑ"Bm@$/51y925l<9M>&F>)޼5i7x@&4(|?0HrdjHЛDH>)wo#]C^@;}!ɑ"Bm@$o51yBհL6P~925@NQz뷚܅{QCL^4קj/yv Q M>@gE`<^y"Z>(ԑs6 ךyC Ri&L'ywEM"$eBԑs6&}V j/yvLm ^jb{Ƒ{í!ɑ"Bm@&51y925l<9M>u!ɑϾj/@vSwDw:P|D&FE5FBm !C`gEy511yE(|>925$\MHrdjys@(| @hgEMĴ̄|x|OLdA[Tĩ*mX\JVy 6 bB DKژ4 /KP/4=a$(| C&FLWjby (> 925@XNQz뷚޽҇ń&FE5FBm  LP&}V5F&6/51yHրv0HrdjHЛPA/7P&Fg4 2Hrdj3×zo^@<0&HrdjHЛDH>-[E7ɍL^ox/xuC`925$\MB/7Pz&Fg4 925@d(o1-3!hf&xF(N'q*DdF#uc7 F*]X9N?|"bB %KWKkǷWjv %ejC#T }2yhr!Hrdjz}楯7ЛBᰄl@rgEM'GLJd6?(IJ:Qhŭd'GXW! K%z۫LW@FBm C gEj$(|QC#W%5-yv !C C#T }B6?b63!FoYg }-NTҍG+BPn`~E^Ą4.DKږ4/ ׏n/51y{TJi-^ykk&Рl!eć&F>,mp<>'޳$0@}-NTң,`~E^Ą4;\Έ1^i3^^=t P/j/>i4@!ɑƓFBm l&F>,䋲cisPi7x@z`L2^.}&Ͼ<( ^C/F^o^Mn@" mp ^bZfB><>'gI`#c`u-NTң,*h2,ؐwå{RZ/7jC$925xZ>RכhMAlzD&F>,mp<>'޳$0@[TĩFXJw LN?|"bB %KWKkǷWjv M> L豓P {@;> i-^ykk&РlyC u!ɑϾ!@\O1#73lP:'q*DdQ Z2l=|A^Ą4.DK^ԵyxoV{ux1yڠ@w:P!ɑƒFBm Ǔ M>$925@aP/k>`WeSbAq`TGǃ7[hYj-:-2,1EeHX0EEhbYY",(E|6,dT925xZ>RכhMA=@(|RL dR3zP&C#T }E HtH>Lm"Ĉ4X e&&F>,mp<>'޳$0Bw;R#'J9z#WZtnfBtx{Nt/jZ\7^=?P {@;(|0!Hrdjz}楯7ЛBB6P rgE/5@uck/5.&65.D",(E|6aC, L dR3z<>'gI`#c`u-NTғ:TYsd'GXW! K%z۫L^o^҇$925xZ>RכhMA RL dR3z,mp<>'޳$0A [TĩFhKKʔٙ UHCA;{S5x7@^zJX@; @(Hrdjz}/7ЛBᰈlt925@fo57$]KjI;`q> $\M$ }0yP<м 2!ɑP޽܁{SrEgjĴ̄|x|OL3zRכhMADM>C#T }B6?b63!FoYg -NTңVLbeԧpfBtx{Nt/jZ\7^=?P {@;(|!C#W%5-yv @l!ɑϾ!@\O1#73l qKj"2tՓ'tL:fBtx{Np?:"^yxoyx:^&׵@^҅BRRi1^yk&Рl"eLP&}YMd皡xnexs6&}X/7i@oB0@ ڠy7$]6|MKLGLJ73l~ IJ:TjƊPnTYs2,ؐwå{RZ/7jCiL^4OԵ5hP|6(eC#T }B6?b63!FoYg -NTңV4T`N̄ *$!p?:"^ԵyxoV{ux1yڠ@w:P9L^4OԵ5hP|6:C#Hrdj3P&Fd#yH?LdIJ:TjƊq#PخfBtx{Nt/jZ\7^=?P {@;(|C#W%5-yv  N!ɑϾ!@\O1#73lB'q*DdQ*0uĎ:Cbə UHCA;~tDjIrޭxbS׵@t!ɑƒFBm pl6P ,gEM'GLJd6?!qKj"2tՍ:GXfBtx{Nt/jZ\7^=?P {@;(|!ɑƒFBm plp&F>,mp<>'޳$0A [TĩFh8 fd'GXW! K%z۫L^o^҇Ri-^ykk&РlT Hrdj3˞j{Y"GNE5.BH dXH#El 3x7@(|<C#T }B6?b63!FoYg}-NTңV4T`Cna $!p?:"\%z۫L^o^҇!Hrdjz}楯7ЛBP&9Hrdj3׼舘5mʛ 'RכhMA&M>=C#T }\T X&6,mp<>'޳$0D)mRwFNcGU$P3!:<h'|:\Έ-^i.^կ^^jbz=Δ>Hrdjz}楯7ЛBL &LP&}Y 2ȳ|x|O)gI`#c,Rڤ%H)SjƎHюfBtx{Nt/jZ\7^=?P {@;(|a!ɑƒFBm 0v6P6PgEM'GLJd6?qKj"2tMHш\J UHCA;{S5x7@^zJX@; 925xb>ShMA&P&925@fo57$]KjI;`q>>hgEjb{Ɣ/ .H^o^Mn@" mp ^bZfB><>'gI`#c`-NTҕ6.TISEes2l=|A^Ą4.DK^ԵyxoV{ux1yڠ@w:P @8IjK^o#]6`A@(| LP&}YP/k>&qCg}Ă0* 7`TGǃ7Ϣ"(z-,Z>$EO13C)LP&}Y Fd#yH_FoYgl~Rڤ%H)SjJT]i9 UHCA;~tDjIrޭxbS׵@tjC#W%5-yv b ZgEM'GLJd6?8IJ:RՅʔ*mKd'GXW! K%z۫L^o^҇7Hrdjz}楯7ЛBᰌ1@(| G)LP&}Y 2ȳ|x|O)gI`#c,;R#'JTڰR#G U,vfBtx{Np?:"^yxoyx:^&׵@^҅BH L^4O5hP|6M>@925@fo57$]KjI;`q> >hgEjb{Ɣ/ A!ɑP޽܁{SrEgjĴ̄|x|OL3z(,ZL"7n!#]`(> O4#p!@(|$925@Dd zTP-Hrdje`ly (> e&F>(< ^iO7>x!ɑalHrdj3cP/iO7/j/#]AEڠyݹ  PQyq  LQx5Ӥa!KEĄx$< SpoC"LB js6j/yvLmAi&RL0W Ee LP&}Q4'( 2 &yj2EiO7/j2y{TDkchvTKڠy#v$k&3Q۞#] &6> 7$%C \tHf xv'& RL0TELW)#]6BH^jBT&Fg4 B`gE kJW*xсízy,(> "C!925@BbaƔkBB<׵ QbGaچ/5 WɍeP &Fg4 2C#T }24`l^B R !ɑϾ<43\&XnFr,HL"y{R皗/jZF&6皖j楦HhMЛD5-pjs6jZy"- (jRכ8NհL6Pq!ɑϾ"Zhֽ(.y $925^܍v- :<C#V3C i!ɑϾxڂǍ<:קaA@(|&F>)0J5̡Bm!Ejkچ#0eCGگ#]AWjېЛE5^nBFBmILW I>ho$]EP|CGy!ɑal925@D%O5 W06xuO aA4 >LP&}QDP65@r5Az,HL"y{P^P^vLm5j棳v$k&CGf$k&3GcNP zQٸq!* C0`|#<6PgE!1y5!ɑ"Bmi&0iLP&}R^jj 4`l^"ƒM>` L(CyL!0J5̡Bm!EjkڃXDq2{PrF&6jW@PrgYH08@HrdjHЛDH>(F aA &F>(FDP65@r5A,HL"y{PxPx;#]F5kڠy;xсì>08,)LI>hgEȰl lVgE ^iOPe i ,LT7#^=EiO7/j=^ɍP<h|@P=awCJC#REϾ"@H aAL&@(|!ɑϾ@DP65@r5DXDq2DA0y>^Aƌ g X@P1 LI>hgEaALlb925@G0J5̡Bm!Ejkڄ$XDq2 {PF&6jW@PgY/@ޘeJԑs6&}Q,(> M> D)LP&}Q4'( 2 &yjbGaڄGEB0yC^Bƌ g X@P@4ԑs6&}S et2Hrdj3 ^iOPe i ,LT7#^"ď4'5ڈ$kch j h|@=awC$925$\M$ }P `lLP&}SaƔkBB<״,HL"y{L< bF&6iiƌ g $X@PrC#REϾ"@X"ƒᰘM>$925@X-yhgE"ƒ M>P!ɑϾ@L"yNHl<!:C!ɑϾ!@y>dBqIJ:Te.a $! xo^{ 栰vLm.yr5h$k!6jn;nxtHLm@|6jnnHJAs%7 O M><925@G,ZSsv5  ^jnnD(e925@GP&舡`T&FCU7ЛB&Hrdj3yC!ɑhMШ>Mo(|4հL6P0HgE:j{SwɍP<^n܄v(yݸv&yvcj^j/7$%C \tHf xv'&(Hrdj3.y^&Fڡ$\Mo$]EP|j/y^ i&C#T }Wl925@`Pe i ,LT7#^1Ejnq2CFkcheP`> <M> Hrdj3P&bbfB><>'?LЍ u;NTғ:1Rə 6 bB yp?:"^5^ixx ׇ栴vLm.yjn܄v(yjnBFh桨5!1j\.:$3MB;eHrdj3&E^jLm B6Pn&F>)"=>$925xO9yv RC!Hrdj3'C#UPЛEP|5y Ri&!ɑϾ> j{PeEkcj׵@Q{Ɛ@ޘe*ԑs6&}QXP|6 n$925@G<5xҀs(PHQbgyX桫ڌj0^ j{T5Bn܄v(yv5hGm&6>dT&Ąx$< SpoCLAcP>&Fڢ$\MyvLmA ^jc&Fg4 fLE5DHr^@ "M> LHji@f(M(3P<܍{RX桫ڕ<ԩ{R51`RP<ԥHr> HP=awC!ɑ"Bm LƒNF6P' LP&}V ji@f(M(3P<܍{P$yjq2CFkch>y{T5!#]6j67n!#]6j6$925@aFpLWLHЛF5,m&d#{Z=|AgI:FCmRwFNd TrfBtx +ؐw\ΈWB*݊ ^jId皈&HhM&$k!6j ۞#]P DpBT< D`)7GaylZ&F>( Qbך&$kE`B} qM> E)LP&}P6k> @C#W!^y^o#]6`B2@(|925@@ء C!ɑhMШ>!D  L[4heć&F>)^n&^^F&6y{T5h 08 0HrdjHЛDH>)X liLP&}Sj i@f(M(3P<܍{Q,HQeF5/jvLm5B7nBFBm< q  LT#NP rT&Ąx$< SpoC&F>((Hj i@f(M(3P<܍{WQbG/7/j]^Yj{T5Vn܄v(yv5hm&6>PUfĄx$< SpoCC#T }$#y6ԇ&Fژ.}&уUH&6BO5VyC L[4hel LP&}P{S7!xuO"ƒ M>L ƔkBB<׵"ď5^n&^tQɍ/j!#]6jq  LWm&6>jWÉ PH.x! 4&F>)Dyh7Hrdj"Bm<dhT9y7>!ɑal JC#T }{PX/dXP|66P*C#T } ƔkBB<׵ bG/7/j<4^y0yP<{ƌ:ψz`q>!ɑ"Bm L  2CL ƔkBB<׵#D5چkch>yjHhM$k&3CQskIBĄx$< SpoCX4&F>(CRLW.}&уCWdhT5 ^o(| C#V3CX&F>)vQF^k„XP|6 &ƒLGo5^43\&XnF2Ej L2y2^9#]ACP<97nBFBm<97n!#]6j۞#]:Lm@|6 CpBT< D`)7Gayl !ɑϾDyrPCt&FڇD} `PE1Z@>yryC i&925@X5o0B^,(> l T&F>+5^43\&XnF5Ej L5y5^ɍ{T5HhMCv5hvcj<\.:$3MB;e`!ɑϾj zC#UCEϾ0y4yvLmAj o(| Hrdjys@(|HgE;^ eC#T } rEA\P|6ZQM> LP&}Y B z3z+ILW@FBmARC!ɑalA*C#T }=yCɍP<^n܄v(yݸv&yvcjRpBT< D`)7Gayl u!ɑϾ@6y i!ɑI>hdhT%5PHrdjys@(|Hrdj3^j{QƐh^E` M>q:C#T }|9xҀs(PHQbgy$Xڌj2^0y%P<Ɛh> H=awCC#REϾ"@GʑaA)eXLP&}Q5^43\&XnFR,HPeJjTIjR!#]6jRnBFBm<ԤvcjRjRnHJAs%7 O M> !ɑϾt<ԤX&Fڍ>h/7.ɍШ>" jRyC!ɑalX LE5/ji(lDlX$925@N<9xҀs(PHQbgybG/7/j׵LF&6j{T5L<:ψ (|?HrdjHЛDH>+谠lDl925@X.yrP65@r5KbG/7/j\RKHd|RP<Դݹ  PRv5h楣NP o5-7$%C \tHf xv'&925@aKJ4HrdjEϾ0yk䋲ch*K^o(| TհL6P!ɑϾ-y]x kĈlD& 925@hj'$]ЂlPPM>`Hrdj3P&bz3z2^nHJAs%7 O M>n925@X<^P!ɑI>hdhT2j/y 9Hrdjys@(|~gEbT+ڌ4:קaAN"@(|LvS( 2 &yj2Ejbq2'DF&6j{T5D|@ zL25!ɑ"Bm L貤XP|6@(|!Hrdj3<9" (> ӼM>l4&F>,m%d#z`- ޳$} 'Nj"2t.d'Gzh'|:\Έ-^i.^կ^^j\H&6jZn܄v&yh5cjᰝ{KMÉ PH.x! ́ C#T }Դ`!ɑhMШ>GP+C#V3CiLP&}X4OMlfB><>'hf&xF6;R#'J58̄_W! K%z۫Kd皖!#]6jZnBFBm<ԴvHLm@|6ך\.:$3MB;efgEDX楦$kchljZnD(eBgEjZP7Hrdj5h*/5-yѢC#V3C&F>,^WIdН $Hrdj(|t925xb>6RdӸڤ%H(r/+61 6 bB %KWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥ`F楦Ąx$< SpoC뀥!ɑϾ-yiq (>5o5-7" "C#T }&C넩L^4O5hP|6fe!ɑϾ5-(|LW@HЛF5-yvLmA# ^jZyC!ɑalP $925@bך^^ֽ>Udch4^@ȳ|x|O)?LЍ`>'q*DdQ YN{Nt/jZ\7^=?ԸvLm.yir5h楦$k!6jZ;nxtHLm@|6`楦Ąx$< SpoCHrdj3HԴݸuchlך C恂C#T } ԴBd&Fڠ#]6BGP!ɑal@8gEO5@kڠ$]CD zBP`IL^o#]6`" M>RL豳PFd#yH_FoYgl~<6;R#'J N{Nt/jZ\7^=?ԸvLm.yir5h楦$k&3KGm&6>/5-7$%C \tHf xv'& ,gEbԴݸvLm KMÈl LP&}X:@dL^4O5hP|6$e`!ɑϾ5-(|3js6jZy"- "VRכ925l<9M>Cԇ&F>,ZT ڋ4:קjvLm<ƕko1 Z=|AgI:qIJ:Teԧp̄_W! K%z۫KdѳKMېЛD5-f&FMקjny (> P&3D&F>+jbPHrdjEϾ0y䋲ch*€/7>d&F3C@+Hrdj3P/j/xn^yċch4>T ϶kx5mʛ '<PN&3- ޲ QnբˑeȰ6E"Qc$Z$X/EEQgd4XP}ށl !ɑϾ!@yi Cw ?LFF*wTĩFXT9V̄_W! K%z۫Kd皖!#]6jZnBFBm<Դvcjᰠ楦Ąx$< SpoC925@Xů5-7n!#]EaAKMÈl Lt5H !ɑƓFBm €X6PLP&}X,yiC㓄&Fڠ$\MH&6BP ^jZyC L[4heC&F>,ZT ڋ4:קjvLm<ƕko1 Z=|AgI:H'q*DdQ$t3!:<HCA;~tDjIrޭxbRE1lRv$k&3KGmP 楦Ąx$< SpoC-$925@aKJ1H{Tk&hT K^o(|925l<9M>bRL3PyC$925^"Bm Li&-$925@f5@Iíz}.ɍGxP/k$]`dI;d",H#El &oeLP&}Y KLGLJZ=|AgI:qIJ:Te)Ӧ s2l=|A^Ą4;\Έ1^i3^^=w.ɍ517nBFBm<ݸv&y5ӤaH/yq!* C0`|#<6P LP&}V bךɍᰤ8P&tILP&}V@&FMקjny (> BCY!ɑϾ51(}C#UP.}&уL^o$]EP|)51yQ925l<9M>&Hrdj3j{Q{ƓwZ^$]D5@^H1NBwGɍDXF">Po@6P925@d(o1-3!hf&xFX Nj"2tn,Ӧ y 6 bB %KWKkǷW.ɍ5-7nBFBm<Դݸu&3KGm F0yiq!* C0`|#<6P925@X$E^jZnBF1P|62皖 Ct&F>,AyiC,{Tk&hT楯7>!ɑalHrdj3ç^ԵeP.ɍ=!(}`$925xb>ShMAhea!ɑϾ<Ɠ z`q>2EϾ"@d51yrL^jkڠ$]6} GLJ- ޳$ymRwFNҦ˜3!:<HCA;~tDjIrޭxbRE1楦HhMЛD5-=yiqM>$925@`k>L^4O5hP|606PLXR҇Հ=!ɑ >h楯7.ɍШ>e楯7>NհL6P8gE^j{Q{ƓZU.ɍGxҭz}m#c2< G#73B6?`9ڤ%H)3NfBtx +ؐwå{RZċch楦HhMg۞#] &6>0(yiq!* C0`|#<6P<gE/5-(}S LW@FBmA<ԵԇL[4heRC#T }&y&+o1 Z=|AgI:"Bt6;R#'JLIhi2tZ3!:<HCA;{S5x7y"\Sv$k&CLMۈHhMg۞#]:Lm@|6asLMÉ PH.x! &F>+X&$kchl&B6PxL &CHrdjz}7ЛBCLP&}X;yCHrdjEϾ0y䋲ch*0@x7@(|$925@d(o1-3!hf&xF( Nj"2tՁ:)2l=|A^Ą4.DKږ4/ ׏n/5.$]KjZn܄v(yiq  LRskIb'\.:$3MB;eC#T },ZRv51P|6#@Rp!@(|p&F>, Ma&FLWjby (> M>8zC#T } jZPLW@HЛF5-yvLmAwP$925l<9M> vgE^j{Q{ƓZU.ɍGxҭz}m#c2< G#73B6?`96;R#'JXƌ **s2l=|A^Ą4.DKږ4/ ׏n/5.$]KjZn܄v(yiq  LRskIc\.:$3MB;eC#T },ZRv51P|6#o5-7" !ɑϾHX@C#W&+51yv C)LP&}X,yiCHrdjEϾ0yk䋲ch*K^o(}@&Hrdjys@(}@!ɑϾ&/$]D5@ZFd#yH_FoYgl~s)mRwFN-/*P^fd'Gzh'|:\Έ-^i.^կ^^j\H&6<Դݹ  PRv5D5-%楦Ąx$< SpoCy!ɑϾ",ZRv5 <Դ8P&LP&}XR҇*Hrdj5h*K^o(|n&Fg4 LP&}XtT ږLE14@%$925xb>ShMA P&$925@cgxbzL2FHЛDH>,/7n@P<܍{T&Ϻ6Rd };NTңVL:¦˜3!:<HCA;~tDjIrޭxbRE1楦HhMЛD5- x6PC#T } jZPHrdjEϾ0yk䋲ch*<Ե&Fg4 FgE^j{Q{ƓZU.ɍGxҭz}m#c2< G#73B6?`96;R#'JY2qQ#R 6 bB %KWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥ`$5-7$%C \tHf xv'&Nԇ&F>+X楦$kchl 5-7" ӈRLt5H lL^4O5hP|6 BC#T } jZP`!HrdjEϾ0yk䋲ch*!SK^o(}VհL6PaC#T }-yEL^k5VH&6jJ GLJ- ޳$ mRwFNd.IYN{Nt/jZ\7^=?ԸvLm.yir5h楦$k!6jZ;nxtHLm@|6/5-7$%C \tHf xv'&+i!ɑϾ",ZRv5 $^jZnD(eT&F>,AyiC`!ɑhMШ>K^o(}925l<9M> RL-y{Tchh5HJh)L^4O5hP|6CY!ɑϾ<Ɠ z`q>EϾ"@d51yrL^jkڠ$]6} GLJ- ޳$y)mRwFNT)4V\̄_W! K%z۫Kd皖!#]6jZnBFBm<Դvcj$5-7$%C \tHf xv'&L)LP&}V(kKMۈHdA E5-7" "C#T }&C鄩L^4O5hP|6T(eC#T } jZPP925^"Bm<ԵE1ZJRRכJ i&J&F>,ZT ڋ4:קjvLm<ƕko1 Z=|AgI:qIJ:TjƊqb5)1a $!p?:"^ԵyxoV{ux1yq"\Rv$k&CKMۈHhMg۞#]:Lm@|6Uo5-7$%C \tHf xv'&+Hrdj3E^jZnBF&6J;yiqM> 925@`k> !ɑƓFBm J P&!ɑϾ5-(| @!ɑ >h楯7.ɍШ>PtRכ$925l<9M> #Hrdj3ů5@Iíz}d#P6Rd wTĩFh8 d'Gzh'|:\Έ-^i.^կ^^j\H&6<Դݹ  PRv5h楣NP !<Դ8q!0>Jn @@(|1C#T },ZRv51P|6$ jZnD(e#&F>, Mai1^yk&РlHl-Hrdj3cKJ E)LW@HЛF5-yvLmA"'P9Hrdjys@(|@!ɑϾ&/$]D5@ZFd#yH_FoYgl~s)mRwFN\H6,a $!p?:"^ԵyxoV{ux1yq"\Rv$k&CKMۈHhMg۞#]:Lm@|6$-yiq!* C0`|#<6P@ZgEbԴݸvLm W C Lt5H Ri1^yk&РlH &ILP&}X,yiCH{T} `RכdhT5-y C#V3C925@bך^^ֽ>Udch4^@ȳ|x|O)?LЍ`;NTңV4T`ub© 6 bB %KWKkǷW.ɍ5-7nBFBm<Դݸv&yh5ӤbA楦Ąx$< SpoC`4Hrdj3E^jZnBF&6LRp!@(|l&F>, Ma Hrdjz}/7ЛB%>6PLP&}X,yiCc&Fڠ$\MH&6Byk)L[4heiLP&}Xi1xuOY"$y*ק&b63!@z3z+ bךɍ%517" 8 L@p925xn>SwhMA(ep$925@a %p$925^"BmPxo@6P`&F>,m%d#z`- ޳$Ӹڤ%H*5cEFT9V 6 ؐwk/׵1^i3^^=w.ɍ517nBFBm<ݸv&y5Ӥ`J^jbnHJAs%7 O M>T4&F>+kLMۈHdAؔ&B6PPRL Maʀ8IMo#]6bQCF LP&}V51(|&Fڠ$\MH&6BlJTS*925l&*&F>,&H&6jK5@oF"&qCg}Ă0* 6 q1hfZYJ,dD"Тj,,F">o@6PBC#T }B62=0Ad΋`;NTңV4T`+:a $!p?:"^ԵyxoV{ux1yq"\Rv$k&CKMۈHhMg۞#]:Lm@|6%5-7$%C \tHf xv'&U!ɑϾ-yiq (> C@!ɑϾHX@Ri1^yk&РlJ&&F>,<Դ LW@HЛF5-yvLmA(Cyk<iL[4he<LP&}Xi1xuOY"$y*ק&b63!@z3zSwhMATM>RLgE7>R Rjs6jby"- QsL^o(|/D&Fg4 925@aP/j/xn^yċch4>T X&6<>'?LЍΈ;NTҕ6hbấ-/3!:<HCA;~tDjIrޭxbRE1楦HhMЛD5-  aC#T } jZP@$925^"Bm<ԵE1Z^jZyCL[4heC#T }-yEL^k5VH&6jJ GLJ- ޳$&Nj"2tM:"9 6 bB %KWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥc⇚\.:$3MB;eC#T },ZRv51P|6>2yiqM>2 Lt5H A!ɑƓFBm ӠM>2925@`楥!ɑ >h楯7.ɍШ>>K^o(|L[4he!ɑϾ&/$]D5@ZFd#yH_FoYgl~s'qIJ:RՍT̄_W! K%z۫Kd皖!#]6jZnBFBm<Դvcj5-7$%C \tHf xv'&p LQbךɍjRp!@(|Hrdj3= (|!ɑƓFBm C&F>,<Դ#HrdjEϾ0yk䋲ch*5-y&Fg4 925@bך^^ֽ>Udch4^@ȳ|x|O)?LЍ`y;NTҕ6#F!r*fd'Gzh'|:\Έ-^i.^կ^^j\H&6<Դݹ  PRv5D5- 5-7$%C \tHf xv'&DLP&}V bךLm d5-7" !ɑϾ^jZP 925^ Z´O5-y@Hrdjys@(}C#T }<7/jvLm & CIL^o#]6aYjC耑!ɑϾ<Ɠ z`q>x >hgE<1yjvP&b63!@z3zT ϶k\PY| q3Ͱ03LfZ><e}0EEhbYY",(E|67z Hrdj3P&bZfB><>'3z<>H Nj"2tM )R5u\d'Gzh'|:\Έ-^i.^կ^^j\H&6<Դݹ  PRv5h楣NP ;KMÉ PH.x! Hrdj3E^jZnBF&6O5-7" Lt5H =!ɑƓFBm  HgEǚ>0LW@HЛF5-yvLmA楯7>!ɑaliLP&}Xi1xuOY"$y*ק&b63!@z3z+X楦$kchl,O5-7" ,gE z@P9C#W&+51yv ltLP&}X,yiCjC#UP.}&уK^o$]EP|,^jZyC&Fg4 ɀrgE^j{Q{ƓZU.ɍGxҭz}m#c2< G#73B6?`96;R#'JTڰR#G U,vfBtx +ؐwå{RZċcisKMېЛE5-7n!#]a LRskBcjTԴ8q!0>Jn @@(} L"ů5-7n!#]`(>C C@BgE/5-(}n{Tk&hTIjZyCMi&B^gEO5@kڠ$]CD zBP925xb>ShMA*yl y!ɑϾ<Ɠ z`q>.}&Ͼ$yې/jbT7#^" MlfB><>'hf&xFN'q*DdF#uc7 J+.s3!:<HCA;{S5x7y"\Sv$k&CLMۈHhMg۞#]:Lm@|6 8q!0>Jn @@(| bgE`tݸvLm jSp!@(| @gE`k> L^4O5hP|6 CL$925@X<ġ&&Fڠ$\MH&6B*/51y&L[4he0!Hrdj3P/j/xn^yċch4>T Gɍ/5./5.Lm>Y"ci,(ytd1'EDY,Pdl-!x7@(|L 逴z3z<>'gI8TңV4T`.NA;(<>'gI8Tҕ6.THK32Nv%F5/jvB d^jaC#W(&ק<>'gI,XR#'J1nZ1Rə h'|;^g@FBm!Ej6(|+&F1DfB><>'gI1)bJ:Te3LNA;( QJ $]D5@P&/HrdjT7 ^" FdL^b̄|x|OB3z=aHXFNaSEefd'G{Kڍj6^ $yءh Rf&ząq*DdQ#R̄4b{QFڠ#]6ď5>-C#W3!Ќ޳$Xcc%H*2¡ʷ9 h'|;^g@FBm!Ej6(|Zf&zbŎ8"2t:`fBtx ױDePЛHQbG @(GLJ#738Tң,&N^H֝0ZfBtx ױDePЛHQbG )L^b̄|x|OB3z=a`xc%H*2[ٙ h'|;^g@FBm!E7.ɍgyvLm jTch a!ɑP<܁{T&χO5>, f&zØc%H)3M9wõQ/j6y{Tk&Xbł&F1DfB><>'gI0:XFNeԧp̄4b{QFڠ#]6ď5>+ f&zbJ:TjRTd'G{Kڍj6^ $yءX&HrdjFd#zd Cŋq*DdQ8XсsEC) h'|;^g@FBm!Ej6(| f&zbJ:TjƎ4A{d'G{Kڍj6^ bT ڠLH&6jE1(yЅJ $]D5@P*C#Wy hMj6(|Td&F1DfB><>'gI&,XR#'JY2t +.s3!:< kآ^lQhM(#FZC#W3!Ќ޳$Xc ,XR#'JY2qQ#RfBtx ױDePЛHQbG&F1DfB><>'gI0BXFNd.IY3!:< kآ^lQhM(^fE1lT7.ɍCP @!ɑQFoYg1 ,qĩFh8 h'|;^g@FBm!Ej6(|L^b̄|x|OB3z=a`c%H*5cEFV(lYNA;(<>'gI0@XFN\H6-d'G{Kڍj6^ $yء%C#W3!Ќ޳$Xcc%H*5cEFT9VfBtx ױDePЛHQbGQZC#W3!Ќ޳$Xc,XR#'JXQT꩙ h'|;^g@FBm!Ej6(|&F1DfB><>'gI0,XR#'JXQ d'G{Kڍj6^ $yءH&F1DfB><>'gI0c%H)SjƎ&.X̄4b{QFڠ#]6ď5>3HrdjFd#zd Cq*DdJV4uRE LNA;(<>'gI8Tҕ6.TISEeLNA;(Tch 1C#Wy hMj6(|)L^b̄|x|OB3z=a,qĩՌP7-*h2Nv%F5/jvB>>=}>}00001a^"}Hx}rh@zh@} }G->j'->iK>hC-L|K|| B,1>1#}bHk E P1>1DdĥSg)| > > =}X+/+o+_|>ox=}=}>| `0_p1$# Jp1 p1- ^`bb 11 A |$[pel>O4,>|a;Lp|"OF_X>*l`ì/-sg.L?A ?)p?{f~ :k?X~ L?#p~2~x?7i?8?@E U@.X@_[ < \@!6 3L@xma"7{RBc8{8{H p{9aPC=|L=-#`_°@U& AA~,=_<"=!aqF p@A^g_OU aFCB= { 7a+1 p\=ha{~O`&_džx{9*ad03p4{=a._ðxC& 8-6@0 B&@1{tap ED{';*<+ L1 ={8{l=װ Bp; a{e`ZcE!c$c5IeKE ZV,R$ӬqjE̊a(ZJ,>|*̲T| VH ϒ B$FU250RR!c'łiq FL@bՃs*eQc%X9#Rs*eQc%X9і Tr[IZd`2)[ -mc*uCE&Ӫ)d}A`ŭ2U2^z`K,F)ms"rs*eQc%X9*]X9dp20qKn 02U2^zFX1R%m'ek[p\ȥo,u`咶-.dRV'NūYPC.P6PK%(.[,)-&NcVT`*/pRϣ,u`咶-.dR'/PjN-2U2^zFX1R%m'ek[p\ȥo, ոjN-2U2^z2VY+i;+\ RۂE+}`K,F)ms"bՃJN#๑JFX1R%m'ek[p\ȥo,u`咶-.dRі Tr[IZd`2)[*]X9dp20qKn e.VvV8̊V2VY+i;+\ RۂE+}`K,F)ms"bՃJN#๑JFX1R%m'ek[p\ȥo,u`咶-.dRі Tr[IZd`2)[ΌTr.eQ,dK;N,F;"U:ʢK/TsΌTr[IZd`2)[:RZ9ZL:eBh@uB,4nӥ%Ӭqjs*eQc%X9gF*]X9dp20qKn gF*]X9dp20qKn jɓX1RȹF ,Փ'NbՃJN#๑JP8KNሹF ,jɓX1R%m'ek[p\ȥoVL:VY+i;+\ RۂE+}Bd.IX.eQ,dK4jɓX1R%m'ek[p\ȥoV4T`.T`*/pR\u`咶-.dRV4T`NሹF ,jƊpbՃJN#๑JޡXQ$qՊT`*/pRFh*]X9dp20qKn :GX`F ,jƊpbՃJN#๑JޡXQ$qՊ ̪0uE^`V4T`.VvV8̊V Ɗq#Pش\ʣYTX{z5cEF1R%m'ek[p\ȥoFh*]X9dp20qKn :P[U:ʢK/TsV4T`.VvV8̊V ƊpbU T`*/pR\u`咶-.dRV4T`w̪0uE^`V4T`.VvV8̊VՅʔu`\ʣYTX{n.TH֝p\ʣYTX{eM )R1R%m'ek[p\ȥo*mX\JVY+i;+\ RۂE+{ )R2TE*:.eQ,dK2Յʔu`咶-.dR6.THK,F)ms"Յʔ8^RcU:ʢK/TsʛV*RbՃJN#๑J1nZ1RȹF ,uc7 FU:ʢK/Ts.VvV8̊V.VvV8̊VQу[Xʅ*Pr JY,iAr58U:ʢK/TsV`F0eBh@uB,4oG+BPn T`*/pRΌf`^Vs*eQc%X9,*hs*eQc%X9і#Rs*eQc%X9і ZT)PꆋMT*RcJ 2[X.eQ,dK:2¡ʷ̪0uE^`,*q֖`pP*RjժRE̊S2Ď T`*/pRϣ,)-&NcVJT4\m:RKP\FXRZ9ZL:2U2^zFXLB:`\ʣYTX{}a2r FKZZɂ•@K-/VK]2)OFXq`֝0Z.eQ,dK4ez ]i#*R[T^R.dR&t̪0uE^`&ub5)12U2^z&tr:u-Zʅ*Pr JY,iArܙҒd8hF ,5`N`*ibu FU:ʢK/TsF ,M,NHݒ֖`pP*RjժRE̊SՌ,hҢF ,ѫ8*0t\ʣYTX{z5dӬ*hs*eQc%X9ѫ&N1R2jSb.eQ,dK=d.IX.eQ,dK4jƊPnTYsU:ʢK/Tsѫ*0ueԧp\ʣYTX{z5cEFV(lV.eQ,dK=\H6,2U2^zXQ$qՊ ̪0uE^`V4T`ubŢU:ʢK/Tsѫ*0u¡ʷ̪0uE^`Fh *d))T ڢjs"\)XBU:ʢK/TsFh V*uS%-dHJTT.ѫ*0uaU:ʢK/TsʛV4uQ1pRT`*/pRTڱ(t֖`pP*RjժRE̊SՍTBs*eQc%X9ՍTs*eQc%X9դh.THF ,Յʔ*hs*eQc%X96.TH֝p\ʣYTX{eM )R5u\d))T ڢjs"SjJT6qJT`*/pR̩ar*FX蹕F ,XrҦ˜2U2^zՌP7-Ӯ T`*/pRόFn(]i-ik& G U,Z.)t\ȥ=`K,˚ZTXaxBqs"JqQIFX1R%m'dRs"U2^zbՃJN#๑JPXJw Y+i;-4hRRE+EB"VvT)ůVі TrzT)s)v`2Vv[.ijQb ̊V)GE&=A`ŭdmZ FE+h*]X9dBժPX0qkkpPXT9V%m'e断*X^*P\ȥhRT|Rc *dRw і TrzT)r\.p. :`[IlEE'2)Z*1$tK X.dR,u` VR7eAbGLpі TrzT)js)vr:u-Z[IlEE'2)Z*1V'NūY+i;*uVBJތbՃK-ZHݕ%Ӭqj\.p.)Ӧ Y+i;-4hRRE+EB"d]i ]pns"`K,ZB* R5uLs)w, ոjN-d\բK J SLuz ]i ]pns"bՃK-ZHݕz ]i\{]e.^j F,4и#wp*]X9dBժPXH^ۮ: /qK2VY/Pj#vT#R6JGe RFX1R%PnʂjFam-tp\.p.*]X9dBժPXHBXk.8^}`K,ZB* Xb\.p.*]X9dBժPXH`pP*RRSs)w,u` VR7eA`^`^ۮ: /qKe.^j F,  ik#Vs)wFX1R%Pnʂј`K]): /qKe.^j F, (ZKe RFX1R%PnʂъŊ-e R`K,ZB* @2qK.8^z2VY-ik.T{JG,\{]ZF, J~LK,˚ZTXaxBqs"JqQI&tbՃJNbE)Q,dK<ъVY+i;+\ RۂE+}Q#RJNe-Z*,TT8JP8ӨN%m'eB\\ȥo&tbՃK-ZHݖFXJw Yptr:u-Z[IlEE'2)Z*1tr:u-Z[ITۮ:Պ̊VgF*]X9dBժiҒd8k.8^y3.^j FIXլ\{]gF*]X9dS%)s)uiTE)d Tr[IlEE'2)Z*1jɓX1R%m'dRs"U2^zY2t*]X9dp20qKn jɓX1R%Pnʅd*]&Nc.8^j'ub5)1d\բK J SL}Bd.,F;, ]pns"5dӬu` VR7eBd.,F;,\{]ѫ&N`K,ZB*'tfZ8e RY2qIikӬd\բK J SLu ɓTNK]&Nc%m'eB\\ȥoVL:VY/Pj#vT+&N1R;m-t:u\{]jɓX1R%-eJ/iH /qKHŠH.dRѫ*0uVY+i;-4hRRE+EB"\u`咶XaxJ~U2^zXQ Tr[IZd`2)[ѫ*0uVY/Pj#vT+*0u]e RV4T`N%m'e断*X^*P\ȥhRT|Rc:2jSb[IP,2)[V4T`.^j FV4T`N.8^j:GX[%m'e断*X^*P\ȥhRT|Rc:GX[%m'eB\\ȥnXQ TrzT)XQ$qՊs)vXQ$qՊ2Vv[.ijQb ̊V)GE&>XQ$qՊ2VvT)ůVՍ:K,ZB*:GXc.8^j:GXsKV,/(N.dRT)N*>b)1 Ɗq#PT[IP,2)[V4T`.^j FV4T`ub¦\.p.+*0uĎ:CbJNe-Z*,TT8JP8+*0uĎ:CbJNʅ.7q`J\u` VR7eB\H6-e R\u` VR7eB\b%JpPh *d\բK J SLzcEFT9V%m'eB\\ȥm\u` VR7eB\*q /qKXQTJNe-Z*,TT8JP8Ph V*uS%m'eB\\ȥoV4T`.^j FV4T`+: /qKB\&lEE'2)Z*1cEFL7qK X.dRFh*]X9dBժPh 2s)vXQ TrkKYuRKR9e R1Y$2)O6.THK,˚ZTXaxBqs"JqQITڰR#.VvK,/2)O:ʢK/TsʛV*RbՃJN#๑JjJT]i+i;-4hRRE+EB"ՅʔӮ2VvT)ůVSjJTTrzT)jJT]ipʛV*RbՃK-ZHݗ[V*RdXլ\{][V*RdU,usKV,/(N.dRT)N*>b)1mX\J.)TJNʅ.7q`J*mX\JVY/Pj#v]mX\J.)T\.p.Յʔu` VR7eՅʔ8^L:e RjJT/)TJNe-Z*,TT8JP8mX\J*:[IP,2)[6.THK,ZB..THKe R쩵ar*F*]X9dS%)s)ui&As"b7V3q@ܴbՃJNe-Z*,TT8JP81nZ1R%m'dRs"YTX{xnf⁹hK,F)ms"uc7 F댕˚ZTXaxBqs"JqQIWZuJNʅ.7q`J1nZ1R%Pn˃uc7 F댸\{]Fn(TrzT)Xrd2s)wՌP7-u`֖Lr˅դb$2)OG+F-mc%m'e断*X^*P\ȥhRT|RcG+F-mc%m'eSnV(R72)[Qм8ۨ ˚ZTXaxBqs"JqQIV`F0d*X^.dRƣyX(qQ+i;*Cʄ)uAb fn,d\բK J SLte32VvK,/2)O:ʢK/Tsі X[IP,2)[ +.qsKV,/(N.dRT)N*>b)1 +.qXaxJFXTYsF)ms"U2^zVv[.ijQb ̊V)GE&=b5)1d*X^.dR:ʢK/Tsі#RJNʅ.7q`J2[X[IlEE'2)Z*1e\uk),*qsKV,/(N.dRT)N*>b)1eCn2VvK,/2)OT`*/pRFXT9V%m'eB\\ȥnrKZZɂ•@K-/VK]2)O:`[IlEE'2)Z*1і$tXaxJ}Q,dK=bGL+i;*łE+z2’d8k%m'e断*X^*P\ȥhRT|RcFXRZ9ZL:dmZ FE+z2d]i˚ZTXaxBqs"JqQIa2r FJNbE)F ,e)Ӧ Y+i;*łE+z2d]i#*R[T^R.dR/V:`sKV,/(N.dRT)N*>b)1іX5uLVvK,/2)O:ʢK/TsіX5uLVvT)ůV2[KZZɂ•@K-/VK]2)O:TYs˚ZTXaxBqs"JqQI&t+i;%gJ+.q-.dR:ʢK/TsɝFXJw Y+i;-4hRRE+EB"3N%m'dRs"YTX{y3N%m'eB\\ȥo&tr:u-Z[IlEE'2)Z*1ɝ)-&NcVVvU6뎭ub#qs"'T4:#vJNe-Z*,TT8JP8F ,M,NHݒXaxJ~U2^zXX XB%m'eB\\ȥoV'PnkKY0R8R)eE)qKE)j4`\QPɒsKV,/(N.dRT)N*>b)1ѫ8XсsEC&JNbE)YTX{z5c 0.td[IP,2)[ՍiiyR:[IlEE'2)Z*15cGZ^TFVvK,/2)OT`*/pRFhKKʔJNʅ.7q`Jd4V\%m'e断*X^*P\ȥhRT|Rcѫ&NaSEe2VvK,/2)OՓ'N+i;+\ RۂE+}Q,dK=d.,F;,˚ZTXaxBqs"JqQIVLbeԧpŒXaxJzYTX{z5d*]FXJw Y+i;*łE+tjɓTNK]&Nc%m'e断*X^*P\ȥhRT|RcVLbvZ2t+i;%eQc%X9Փ'tL:JNʅ.7q`JFh FM8[IlEE'2)Z*15cEFR7*hJNbE)Ս:Hܩ+i;+\ RۂE+jeQc%X9Ս:2jSb[IlEE'2)Z*15cEFVvK,/2)OT`*/pRFh#RJNʅ.7q`J\H6+d\բK J SL}\H6+d*X^.dRU2^zXQ$qՊVvT)ůVՍ:GXc%m'e断*X^*P\ȥhRT|RcՍ:GXc%m'dRs"F ,jƊq#PرK X.dRFh8 L˚ZTXaxBqs"JqQIV4T`ub¦JNbE)eQc%X9Ս:GXK X.dRFh8 Y+i;-4hRRE+EB"Fh8 Y+i;%0uE^`V4T`ubŬ ]pns"5cEFT9V%m'e断*X^*P\ȥhRT|Rcѫ*0u¡ʷ+i;%F ,jƊprJNʅ.7q`J5cEFT9V%-dHJTT.Ս:JNd\բK J SLtjƊpbU2VvK,/2)O:ʢK/Tsѫ*0u•T[IP,2)[Ս:JNd))T ڢjs"5cEFL7qsKV,/(N.dRT)N*>b)1jƊpn%m'dRs"F ,jƊpn%m'eB\\ȥnTڱ(tsKV,/(N.dRT)N*>b)1M:nbKK+i;%F ,ՍTL\7TC앴 ]pns"ՍTL\7TC어#*R[T^R.dR6hꤊVv[.ijQb ̊V)GE&2ՍTBJNbE)F ,ՍTBJNʅ.7q`JTڱ4b[IlEE'2)Z*1ʛV4uRFY+i;%:ʢK/TsʛV4uRFY+i;*łE+ySj4b*RsKV,/(N.dRT)N*>b)1դh.TK%m'dRs"F ,դh.TK%m'eB\\ȥnTڰR%M8[IlEE'2)Z*1M )RTYsK ̊SՅʔ*hJN#๑JިU2^zTڰR#WZuJNe-Z*,TT8JP8*mX\J:%m'dRs"Q,dKb)1Fn(4V\%m'dRs"nf⁹iSEe2VvV8̊VeQc%X9WZuJNe-Z*,TT8JP81nZ5u\d*X^.dRT`*/pRՌP7-Ӯ2VvT)ůVXrѫ:%-dHJTT.;1q y!l 941$8=Ѕ|'#`> `>q!Þx00bd\L8= b`ćIcq!`|q>x ``(`x ``B'BcN`B;`B!8=$|&8=(<)(8=  !)숏dE1OC؜MU1N N9#FF/ `Dq!": cxB@8=gA8ؠ(9ؤN#.R y΂qbBp{0Ǟ8=4,΂qLj` s: c8=tF6d`$΂qF"1   جQ`΂q+Dp{x,vtcDp{xN#¤&aP5Ţ'Dp{x-<'"8=d\: c&<9V]8=`5΂qDp{ A8 gA8@h"8=48=4YN#< : c^"8=GtA8BhC^x sF?'ah'gE\o!-hlF?g8=#8=Oćf<s,΍cnFp{q 9x F1DA3|Hp{`':6.xQoR$8=5 x#8=2`{8=|58=|p#8=DHp{~x<w: cNtl#@o@ yg^xh"`&΃.>t@"`g@dEA"`(΁$"`>Hb.x"`>p0c>p0RE~>d\ \|PEFEwp0$"`\ >JE:ϑp0x4Ť\ >p0\ |\E.b.BEc\ >0"`NEc舸|dE!c2.)"`1*"`qNEǏc"bC$\ DX8p1pp1 d\ Y"."N3"b`fE)"b/p1q[2.% p̋y2. p`fEx̋vd\>WD\>w`fE>lEd\>7\>2. ȸ| ȸ|;ఋ`fEe.E`fEiבp ȸ|p p ȸ|hEy3"{6E}3"A̋E`fE.6d\$\ 6d\vEQ3"Qq{2.^E`fE>C3"H>l ȸ>*ċ̋p|`fEw0{2.xtE̋4}3"4p| x> ȸ>x4"l ȸ>|\M\2..̋{ò.݁.̋.&̋LE̋<pE3">̋tEF̋.pd\? ȸ~0,"-x<"V̋ql ȸ~[˶d\?w;2..d\? H~`fE׃.݁\?vd\?Eg3"52"w3"9`fEyȋ`fE} ̋d\?2.8 ȸ?!p~$6̋𣁙 ȸ?# 2.ż\p~R.2.\ H?)p~6ؑp~ ȸ?Ot݁?w`fEHE2.H?2.M\2.{".~̋ep~l ȸ?B.̋`p~vd\1`fE{ȸ?2.NEBp~6̋PE̋RE`fEOF̋F#"`fEA݁#"̋[d\ d\ lB.2.lp`fEv) d\ "`fE`XE̋.M`+"w3"9@E2p \ M`fE:b.̋{`fENEAp\ M` ȸqa[2. E`fEvD\@l ȸAs\n3 ]ccdJZ{%+Z_g?c%Zdα αEbkc_?%:?:αOu?V..T_c%VAx2+:X`kuc cu?UJmX(dVccou: c%,X*Unαα?=%ГgX; t3t_'u:3t_N]c:EF3t_Bk:/6(,gX;;:/A͌t" 3t_#lgX;"! > H lgX;PuQ63t_ A> α~wgX;ggX;α~w,Ac:E,3t_;:/ hc:E7`_c:EV3t_3t_3Xα~w ahu ,-V3t_F{:/#_c:Ea^/V3t_Fh/c53t_Fα~w":/#Zc:E`'Xα~wr{:/#0Xα~w u Nα~w (Xα~w +cE+:/$lgX;8/c@kc@ cQ(cPCcRL3V3t_J43t_JU:/%mc:E fn2cP`Vcc:E&`/cP`α~w(C׻c:E0α~w E`3cEeB2{:/Vpu!}BVu!6 ,gX;0au!p\gX;α~w\xgc:EQU!k uOAuc0 rģ<='q(#Ѓ;GŸzq(B8c~%Ip J?> A rģE rģ 8c~%? p J?>0! rģ8c~%7$8c~%0"M;GL+' rģ&(( rģ&`8c~%1p J?`00# rģ&A ``~w1?x gq( N9Q|8c~%<, 8c~%<8c~%<q( SA0) rģ q(-m;G'c;G`w1?`w1?x9Q`];G0W;GN9Q001 rģ03 rģ p J?|8q(`o;G d8c~%>< 9Q;4 rģp0 gq(, l8c~%@ 09QO/ rģ!s;G*N9Qw1? w1? 7i;Gk;GsAE< rģ03ArL 8c~%a; rģ8p J?;p J?8p0gq(w1?Nv8c~%``gq( w1?N| 8c~%B``'q(w1?!``gq(9p J?>$A $3Ap1N9Q!"Ip J?`b&α_O!;cB I'sqS@g E&01NX/ħ JgsqS38)@Olu"J{bu"J{eӹ8)C Adu"J{8)@_;cD p1sqSU5α_O" w:~%= Au"J{`bsqS;c w:~%=@6 E>NX/ħ (α_O>#α_O8) u"J{S8) 8|6α_OPX|w:~%=@p\u"J{€w:~%=@e8) 04α_OP w;c| sqS>8) w:~%=Cw;c!|X/ħ@ u"J{.;c!E*w:~%=B8)cDu"J{u"J{>X/ħ@gS8) x>*α_OR4u"J{“>.α_OR38) @éE.|u"J{“|E `9α_ORfu"J{‘E NX/ħ)0|gsqS E9E"X/ħgsqSD M;c%X~u"J{Ȁ$u"J{ȃl?A;c w:~%=@gsqSDX~X/ħgsqS8~u"J{aӹ8)ddu"J{Su"J{7_;cAvS8)dx~ gsqS X/ħNX/ħNwu"J{u"J{~ X/ħNO E#$u"J{0~NX/ħN|X/ħN[;c8gsqS'S8)/u"J{sqSĸ?W;cFX/ħ78)eX? 'sqS0~;α_O#X?S8)f?8)aE0~sqSu"J{ ŋT*RY)a)ϒ>|[Z..Tܔ ZN T-rJXb*bW;FI\Rڤ%FA{J-IJ5H(\K,IJ5H(ARd8l-NQDiQ&NcVUb \ :2UkZ&T6;FISڤ%FA{J-qIJ5H(\K,qIJ5H(ARd8l;NQDiQ&NcVUP^,TFF~ ?K]pKst *vk2_Nx/,R!~Ba $! B`yv-^$$]Ki3v$k&C0FnBFh#]yÉ PH.xA0>Jn @@(}C#T }JHf$kEh-yÈl)LP&}Q L>!ɑhMШ>7`925l<9M>hgEO5@P925yn&^^F&6׵@Qyr5hv5hskIvQyq!* 53MB;ezC#T }H >HrdjQyCj!ɑI>hdhT1yRi&Q C#T }F OlP>6Hrdj e$925@Dki7( 2 &yj$yn&^Q/j0#]Lj0^FHhMgmP `nHJAs LSpoChLgE !̈́%HrdjQCh'Hrdj  M>q!ɑϾo4ƔkBB<׵)Ei7)yJ"51 dېЛE5ЛD5۞#]:Lm@|6`(L&> dPE&HrdjQ"BmDL[4he Lp:>4>925EfC=ZC#T }i7( 2 &yjď4چ/5 WɍePJC#T }DOgBz%HrdjQC=js6j6yvLmACF7>925l<9M>C#T }DJbxԇ&Flu C<C#T }D#xҀs(PHQbgy#0Fq25-^92yuP Φ(|jC#Wx h;&F} D3 M>925@@rLi@f(M(3P<܍{Uh#0Fq2j{R51ڠyqr5höH Mj\nHJAs LSpoC;C#T } gAC;925yqC; RƒlRL见0FP65@r5LQbG`eL^jbkchAyڠyHhMnBFBm#y7> "C#V3CHrdj3A}Ɠ2tLQaA|d6PfgEך`J5̡Bm!EjkڎbG`eGO5/j^jjr5hЛD5xvcj5x8t! tԇ&F>)C>$925yRjnHЛF5yE1Z^y3C#V3Cf&F>),>&!ɑ,(> LP&}R4ƔkBB<׵^<o7/j׵kch栱{T1P=!ɑAcư@ޘe!ɑ"Bm L(z $ $925@BP#xҀs(PHQbgy,HLLjP{PЍvLm<4^̀ZP@@档ư@ޘe LI>hgE E谠l@l925@BV^i7( 2 &yj;Ei7v-#]FO5ڠ>'(|"T&F5÷ z`q>lԑs6&}Pƒe@$925@BGi7( 2 &yjď4ڇ/5Wkch栽{T2ZPD k4X@PDzC#REϾ"@B0 l RL>y43\&XnFt<o7/j<:^ɍ'%P C8ZC#W'a08.}&Ͼ(l@ M> $925@B4/4ƔkBB<׵#0Fq2{PfF&6j ׵@|3EVXvzL2p%HrdjHЛDH>)5E`'@(|4Hrdj3i7( 2 &yjď4ڇo5׵kch{T0^P 0XvzL2n$925$\M$ }(E`lHrdj3^i7( 2 &yjQbG`eAA2yxFfP lư@ޘeiLI>hgE3E`ly!ɑϾ>#xҀs(PHQbgy$yn&^jdѓAa2(|HrdjPt;x@=awC6925$\M$ }z 5@(|q!ɑϾt;y43\&XnF=Ei75ڃ51dPxF >@XvzL2.}&Ͼt^ D@(|!925@NLi@f(M(3P<܍{P|<o7/jjHdѓCP @%HrdjPXvzL2@lԑs6&}Vj,(>e!ɑϾ4ƔkBB<׵(#0Fq2{QvLm<@^$*(|2HrdjQXvzL2@ԑs6&}XEE`2C !ɑϾ4ƔkBB<׵h#0Fq2 {PF&6j@|3 EiL^j5o (| HrdjHЛDH>,1E`zC5C#T }Q!ɑ0Fpt!qA$o4'@(|C#T }B6 d#vZ=|AgI:D(RTң,u`fBtx +ؐw׮hH,^ׯE5y,$]Kjnn܄v(yq Mg۞#]P @Ąx$< %7 O M>@ $925@GHkMۈHX&6)MÈl#Hrdj357(|!ɑhMШ> BP C#V3C4a!ɑϾt 925yڋdЂQzj/7nBFBm<^nBFBm<^;nxt1%@Qyq!* 53MB;e !ɑϾu %LPB&F5>{T$} `Q{䋲ch*R皋o(|! i&@q!ɑϾz|3 M4(|p925E` M>~gE`:yƔkBB<׵D,<>'?LЍ$Jb.H)3.N{N 7^izh?5cisMېЛE577n!#]a LSqskBcj 577$%C ]`)7GaylgE "ů577n!#]`(>jnnD(e925@H57(|`!ɑhMШ>!57y&Fg4  RLP/jnPARC#WLvLm<^zPA L^j/x h; .}&Ͼ>,(> ILP&}QM43\&XnF$yڌj0^ ^j{T5Bn܄v(yv5hGm&6>D5BnHJAs LSpoC !ɑϾt (JX7HrdjT%,&Fڢ$\MyvLmA^o(|gi&XLP&}SboQ>Z .M>!ɑϾt(yƔkBB<׵)Ejnq2/5)^dF&6j2^B;(|@(HrdjQư@ޘeLI>hgE`5Eat6P ZC#T }7i@f(M(3P<܍{Q,HSw>pEiLW I>hO7.ɍШ>D6P Q925@hJZ7 HlxlRL z3zo5B6PC#T } ǚ҇ jv- i&#Hrdj3P/jJC#Wכɍ'׵@|3b"!ɑE÷ z`q> ԑs6&}S,(>l L觃׍( 2 &yj0Ej^n&^`QHdЂT+ڠyv$k&CPЛD5B;nxt1 j8t! RL规06C!ɑP>$925^"Bm< 䋲ch*^o(|L[4heJC#T }B /x҈~ƒP&vgEj^43\&XnFJ,HPzq2/5)^dF&6@Qr5h#v5h!skIl)=> ԇ&F5>T&Fڕ.}&уFO7.ɍШ> j2y|L[4he925@H]>J+Hrdj $e925@HQ<i@f(M(3P<܍{P$y=y{P桊b51 lېЛE5ЛD5۞#]:Lm@|6'y8t! !ɑϾᘈ4(|>D&F5>!ɑ>hgdhT{F7>Ri&<gE P AƔHrdj  r6P|hgE DO5Pe i ,LT7#^Ե$y=y{RךjvLm/5N7nBFBm<9q  LTNP AÉ PH.xA0>Jn @@(| @ZgE  ࠡ1925yr)LW.$\MyvLmA;+Hrdjys@(| C$&F>(FO`pIqCb&Fle!ɑϾ׍( 2 &yj,HPzq2Uɍ׵@UfHhM7n!#]6jvcj&F>)hPzP65@r5^Ej^n&^皼2ya0L^jf;x@=awC.}&Ͼ@$E`P6Pz!ɑϾ>j^43\&XnF,HPzq257^tF&6@Qѻr5h棣v5h棡skI1KGFĄx$< %7 O M> RL菆a1C u!ɑGE*ć&FڂEϾ0yE1Z1GO7>zC#V3C A!ɑϾt@>H,(|Rd&Fl(e* RLAAƔkBB<׵ bGכ j/jvLm/5^7nBFBmD&F>)G(|L^j4{Pԑs6jE1Z1#WP iL[4heRL'1!C0ƒᰌZ6P lgE`J5̡Bm!EjkڎbGכv-#]B Ajj MېЛE5$k&3Ah5ӤagpBT< jf xv'&x!ɑϾg1,(|ⴇ&F5R{P^HЛF57.ɍШ>57>@rհL6P=Lᘌi$925Ea4@(|!ɑϾBP= L^j^n.B ᰌ<Bt L 2<;?LЍE>b.H*5cEF1Rə 6 bB yp?ECUZ7׏`x^j Id皆HhM$k!6j۞#]P 'Ąx$< %7 O M>ngEDX桩q AH桩qM>zC#T }#LPԡ {Tk&hT jPjC#V3C RLNT چ(5y{Qy^j/^EHhMۈHhMgm&6> y8t! \&F>)H;(|ƉL^j/(| LWBHЛF5H&6BH<^yC.925l<9M>ZC#T }P|3(Jp!Hrdj @x6P 4&F>(PJ5̡Bm!EjkڢEjL'^`F&6j0^K(|HrdjQư@ޘeLI>hgEu d ZC#T }|lPJ5̡Bm!Ejkڔď5 ^n&^ԥ+ڌdЂQj27nBFBm AC LBPe i ,LT7#^1EjLbP{Q2y{T1(P`*HrdjQư@ޘe&&F} D3ƒᰔA@(|0 925@X3yjP65@r5Sď5 ^n&^;SjvLm/5L7nBFBm<1q  LTöNP S\.S0`|#<6P !ɑϾg0:6(|(HrdjTLW-$\MyvLmA-yg`i&`!ɑϾ.>w%&FlAbC,HgE(| HrdjP9"F`: jBt XL hf&xF լPԩ*mX\JVLN{Np?ELWL׆cdcisLMېЛE517n!#]a LSskBcjjbnHJAs LSpoC+ RLLbךLm |HSp!@(|aC#T }'>l{Tk&hT#L^o(|!ɑalvT&F>)P/jbP; L^jbq251 ^ېЛE5ЛD5۞#]:Lm@|6EĄx$< %7 O M>*C#T }g01(|&F5>C#UP.}&уE7.ɍШ>wo(| 0Hrdjys@(| $925@X |9x҄@ | M>L|S( 2 &yj$yڢy%FkchP |>2C#W5o (|!:C#REϾ"@a,(>A@(|4Hrdj3Д> 9" (> 51x8e"L 逴z3z Դ8t! T&F>,LR҇T925@\O1#73lP:b.H(r`a $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Аڀl&-yiq!* 53MB;eJgE(kKMۈHdAL<Դ8P&@`gER҇ jv- 0tRכ@Hrdjys@(|i!ɑϾ$ 0=y4P:Pm#c2< G#73B6?`PԩV`F0a $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥa0zRpBT< jf xv'&@ILP&}X/E^jZnBF&6x楦B6P $925@jjZP js6jZy"- <<Ե&Fg4 925@a9 xҀ!ɑFd#yH_FoYgl~UPԩFX30/+qa 6 bB 4^ԵyxoV{ux1yq"\Rv$k&CKMۈHXBm<Դv萘ڀl5-7$%C ]`)7GaylL谆ԴݸuchlԴ8P&@ LjR҇P&Fڠ#]6BԵP4&Fg4 P L^j{R҇Pd&F5-y{Tch5o (|$\M$ }(yjv MlfB><>'hf&xF*"2t +.rfBtx +ؐwå -^i.^կ^^j\H&6<Դݹ  PRv5h楣NP jRpBT< jf xv'&-$925@`-yiq (>楦B6P9LP&}Z>A C#UP.}&уK^o$]EP|K^o(|3Hrdjys@(|-Hrdj3soP>p925@ȳ|x|O)?LЍD(RTң,F;32,ؐwå -^i.^կ^^j\H&6jZn܄v&yh5cj5-7$%C ]`)7GaylC#T }&yiC&C#T dR3z<Դ8t! LLFkKMۈHdAjZnD(e!ɑϾtHR҇ js6jZy"- <Ե he 925@X5@oF]϶M`TPN&3- ޲sVP8&Hrdj³1(| fE:C#TV O`|>LQXB|3Cᄇ&F>C EC#TV0>>!ɑ+ԇ&F|3 LQ`f!ɑ,  LQa  ã d2Hrdj ƒן 925E|3J ՟ "ZC#TZc *(|<925E bPx%HrdjB|3$925E>J6HrdjdlcCLP&}Y Fd#yHAd΄8Z ]J:TeCnfd'Gzh'|:\{RZċcisKMېЛE5-7n!#]6jZ;nxt1O5-7$%C ]`)7GaylnC#T } bךɍ 5-7" ILP&}Z>#HrdjEϾ0yk䋲ch*AykxRi&&F>,'>( )Hrdj6Rd2լPԩFXfBtx{Nt%z۫KdѳKMېЛD5-=C#T dR3zh楯7.ɍШ> ^jZyCZհL6Pv)Hrdj3ydYyt1PY"1->C)LQhOa8-(|!ɑ,'`p'Oe`$925@d(o1 Z=|AgI:PԩFXLB:`a $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥ`<Դ8t! ILP&}VHkKMۈHdAjZnD(eqC#T }^jZP&Fڠ$\MH&6B5-y. i&d&F>-皠^H1NE5.Hb!>$925E>%LQgφ`C%>z J&F>,m#c2< G#73B6?`"2tn,Ӧ LN{Nt%z۫Kd皖!#]6jZnBFh楣D`BbRpBT< jf xv'&4Hrdj3,ZRv5 !Դ8P&#Hrdj3KJ!ɑhMШ> 楯7> AZC#V3C2Hrdj3yKJHrdjRכ@H&6jXvzL2.}&Ͼ<׵@HBlxPC#T GLJ- ޳$%VBRFNҦ˜a $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥ`BjZnHJAs LSpoCZ RL^ԴݸvLm EyiqM>@925@jjZP b{T} `RכdhT!3K^o(|!Hrdjys@(|C#T } (  RMlfB><>'hf&xF >b.H)3N3!:<h'|:\{RZċch楦HhMg۞#] &6>!kKMÉ PH.xA0>Jn @@(|`!ɑϾ<Դ!ɑ2ȳ|x|O)gI`#c2k)u*DdI)-&NcV2l=|A^Ą4.hjIrޭxbRE1楦HhMЛD5- C#T } ^jZP4C#UP.}&уK^o$]EP|P4i!ɑalh!ɑϾNT X&6k$]:Lm b"%@B|fCB׃z C#T }B6Rd"2tՁ:)a $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥ` Դ8t! LP&}X/E^jZnBF&6@HRp!@(|AC#T }楥ILW@HЛF5-yvLmA"ykL[4heLP&}XN|3׍( dm#c2< G#73B6?`e(RTңV0pJFd'Gzh'|:\{RZċcisKMېЛE5-7n!#]6jZ;nxt1 jZnHJAs LSpoC!C#T } bךɍך C!PgEyiC! js6jZy"- 5-yRi&!ɑϾ φ`@^4(|!ɑFd#yH_FoYgl~XKR#'JXƖ(/qQ 6 bB 4^ԵyxoV{ux1yq"\Rv$k&CKMۈHXBm<Դv萘ڀlKMÉ PH.xA0>Jn @@(|L谆ԴݸuchlԴ8P&8LP&}X5yiC!ɑhMШ> 5-yFհL6P!ɑϾu-(| $925ykڠ$]F5@;x@=awC( >hgEjkڠ$]6|<(|ZC#T GLJ- ޳$PԩF:uM93!:<HCA;ږ4/ ׏n/5.$]KjZn܄v(yiq  LRskI@楦Ąx$< %7 O M>h925@`-yiq (>Դ8P&4 Lo5-(|<{T} `RכdhT jZyC C#V3C ZC#T } €J@4&Fo1 Z=|AgI:(Nb.H*5d*]FXJw s2l=|A^Ą4.hjIrޭxbRE1楦HhMЛD5-KMÈlLP&}Z>$925^"Bm<ԵE1ZB@Rכ$925l<9M> LP&}XN|37( m#c2< G#73B6?`eJ(RTңVLbvZ2t N{Nt%z۫Kd皖!#]6jZnBFh楣D`!$yiq!* 53MB;e}ć&F>,!ů5-7n!#]`(>bRp!@(|ⴇ&F>,Դ C#UPЛEP|&/5-y!ɑalfgET ږ>` ԵeP.ɍx h;䋟} D35@r5P.Л>>aC#T GLJ- ޳$XKR#'JXQʚ+.s3!:<HCA;ږ4/ ׏n/5.$]KjZn܄v(yiq  LRskIBԴ8t! <ć&F>,ů5-7n!#]E`!/5-7" ,'>$P> vm#c2< G#73B6?`e լPԩFh#R̄_W! K/jZ\7^=?ԸvLm.yir5h楦$k&3KGm&6>$/5-7$%C ]`)7Gayld'Hrdj3z,ZRv51P|6 P<Դ8P&,LP&}Z>X js6jZy"- ऩ楯7>XRi&,ILP&}XN|3 ]xҀ(m#c2< G#73B6?`e լPԩFh8 2l=|A^Ą4.hjIrޭxbRE1楦HhMЛD5-,'>"ƔMlfB><>'hf&xF :"2tՍ:GXffBtx +ؐwå -^i.^կ^^j\H&6<Դݹ  PRv5h楣NP RpBT< jf xv'&$925@`-yiq (>5-7" Ð925@jjZPr925^"Bm<ԵE1ZBךPr&Fg4 Ð$925@a9̈JÐVm#c2< G#73B6?`e լPԩFh8 Y 6 bB 4^ԵyxoV{ux1yq"\Rv$k&CKMۈHhMg۞#]:Lm@|6"<Դ8t! C#T } bךɍKMÈl)LP&}Z>SLW@HЛF5-yvLmA/yk i&(NgE2 J 925@ȳ|x|O)?LЍBuk)u*DdQ*0uĎ:Cb̄_W! K/jZ\7^=?ԸvLm.yir5h楦$k&3KGm&6>\.S0`|#<6PVgE`-yiq (>G C L谈R҇ js6jZy"- D5-y`4&Fg4 0Hrdj3kP/k$]`HY"ciGɍךH c$$925E > 925E>/(|LQgφl HّCJgEMlfB><>'hf&xFVBRFN\*rfBtx w"$!p?E_jZ\7^=?ԸvLm.yir5h楦$k&3KGm&6>2KMÉ PH.xA0>Jn @@(|LDX楦$kchl楦B6PpLP&}VO5-(|8C#UP.}&уK^o$]EP6dԵÀ925l&C#T }G^}#]SbAqg'oYE!C͑C#TX;>ԇ&FfD(|8D&FfE(|8)LQcᘞPp!Hrdj^|3> vN"(|!ɑ-YN$(|!ɑ-1N> PR|3P.C#TZᘜ\ԇ&F1:qC#T['a:z qC#T }B6Rf&x|#c}Z ]J:TjƊpbUa $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥa9kKMÉ PH.xA0>Jn @@(|7 LP&}X/E^jZnBF&6p楦B6Pn$925@jjZPn)LW@HЛF5-yvLmA<ԵpJհL6PnRL谜f'/P>m#c2< G#73B6?`e+XKR#'JXQ N{Nt%z۫Kd皖!#]6jZnBFBm<Դvcjᰜ<Դ8t! `!ɑϾ,ZRv51P|6W CL谈R҇`925^"Bm<ԵE1Z(yk!Hrdjys@(|6 LZT X&61Cᰥ!ɑ-#Lo@6PlL GLJ- ޳$w*(RTҕ6hbấ-/a $!p?EKWKkǷW.ɍ5-7nBFBm<Դݸv&yh5Ӥ`F jZnHJAs LSpoCT&F>,ů5-7n!#]E`F jZnD(epiLP&}Z>925^"Bm<ԵE1Z<Ե8&Fg4 8925@a9( RMlfB><>'hf&xF >b.H)SjƎHO3!:<HCA;ږ4/ ׏n/5.$]KjZn܄v(yiq  LRskI!<Դ8t! hRL^ԴݸvLm LRp!@(|$925@jjZP-/HrdjEϾ0yk䋲ch*楯7> @հL6P-D&F>,'>'( T&Fo1 Z=|AgI:(XKR#'JTڱ4cN{Nt%z۫Kd皖!#]6jZnBFBm<Դvcj jZnHJAs LSpoC5!ɑϾkKMۈHdA^jZnD(e!Hrdj3ռԴr{T} `RכdhTP!ɑal@gE0"OP>9C#T GLJ- ޳$Lb.H)Sj4b*R3!:<HCA;ږ4/ ׏n/5.$]KjZn܄v(yiq Mg۞#]P :yiq!* 53MB;e&F>,!ů5-7n!#]`(>zRp!@(| LP&}X5yiCHrdj5h*AykJC#V3CL^j{R҇iL^jZq2 dуP0 L'yiC!ɑ >h楯7.ɍШ <ԵiL[g4  Lj{Y|t0+k>6$PN&y,3LfZ><e φbR  ãᘡyCiLQcᘠ5(|`9Hrdj^|36&Fb !ɑ-YP J8HrdjL|36&Fᘠ>`f(Jϟ CiLQl  ށl 925@d(o1 ZoYg6?:0k)u*DdJV*RjNfBtx +ؐwå -^i.^կ^^j\H&6<Դݹ  PRv5h楣NP !;KMÉ PH.xA0>Jn @@(|@Hrdj3z,ZRv51P|6yiqM>)Hrdj3ռԴ #HrdjEϾ0yk䋲ch*%5-y &Fg4 4925@a9R 4(|4C#T GLJ- ޳$+XKR#'JTڰR#%M\Rcd'Gzh'|:\{RZċcisKMېЛE5-7n!#]6jZ;nxt1R楦Ąx$< %7 O M>&F>,ů5-7n!#]EaHvRp!@(| &F>-[KJ$925^"Bm<ԵE1Z楯7>Hrdjys@(| *gE1HExҀ, MlfB><>'hf&xF :"2tM )R4pRs2l=|A^Ą4.hjIrޭxbRE1楦HhM&yh5!15-7$%C ]`)7Gayl $925@a -yiq AjZnD(eeć&F>,Դ =!ɑhMШ>4O5-y i&925@nd#HrdjRכ@H&6jXvzL2ñ)"Bm LCP<܍{T&χ`LP&b63!@z3z+ ԴHrdjEϾ0yk䋲ch*:ykC#V3C)LP&}X9ydךGɁ]X&6yt1Z k$] &6k$]ɍeG0#e  LQi`FJILQe'0# LQhO`FLQgφ`FLQl Ax7@(|PVgEMlfB><>'hf&xFX VBRFNb7V3q@ܴjNP > #R&}|"HRT)N)uR:}^)oR|"">>\>.|pD(}H^d1}\,}_|A> J_|AL ^}{#X=kk :ֱ~`3zuXZCkY֒kPkFҝhc-ֻ{Z 5Ch5փh<փhBֈ;MУtt[te6OPK>/d2_*2_4% pPKl2_X2_Z /1%4!aЃ,2_8,%XdyKq/|2_0 P6% 00 R&%<=%FdyK8d/ 0R0FXdXd _Kp8d 8OK.d!/Urȴ D,df;hs+Jej]qbd:u-ZȹXZ,% IEϒ@Y# $YAhTHʢF YsJYd,d\->.>ԩaQ Tr[IlEE'2)Z*1e.VvK,/2)O*]X9dp20qKn ԧpŒsKV,/(N.dRT)N*>b)1 NAb5)1dRw S*]X9dBժPXJw YpPX0qkk+i;-4hRRE+EB"`Q TrzT)`2s)vrJNe-Z*,TT8JP8U,*qK X.dRі TrzT)r\.p. :`[IlEE'2)Z*1$tè,H%m'eB\\ȥoі TrzT)# \{] q=`K,ZB* q;.8^j KG+IXլ˚ZTXaxBqs"JqQIAaIhi2tZ,u` VR7eAaIhi2tZ /qKAa2r FJNe-Z*,TT8JP8Ơ9z#WZtoPXLB:`K X.dRS*]X9dBժPXLB:` /qKA`^ŃWZtk%m'e断*X^*P\ȥhRT|Rc, ոjN-z ]i ]pns")O,u` VR7eA`^ŃWZtk.8^}A`ɥŭ)*]X9dBժPX2ikqkJF2s)w#R뎭і TrzT)\uk.8^uԆ ґëz2VY/Pj#vT#R6JGe RPXH0m[,u` VR7eAb5#0R8uk.8^uԌ-m2VY/Pj#vT#R0P'Z˅PXHbK*]X9dBժPXHbKs)wPXH`pP*RRSe.^j F,F0R8R))XKYph*]X9dBժPX:뎭e RA`^``K]):FX1R%PnʂR8uk.8^uy0R8um`K,ZB* Fam-tp\.p.-me.^j F, (ZKe RPX:1XRŴe.^j F, Xb\.p.Y2qQ#RBd.,F;, ]pns">Y2t*]X9dBժP8KN.8^u ɓT3qԍ-hՓ'NbՃK-ZHݕ ɓT3qԍ-2s)wP8Kd2Vv[.ijQb ̊V)GE&:d*]'m'N+&N1R;m-t:u ]pns")OVL:VY/Pj#vT+&N1R;m-t:u\{]jɓX1R%-eJ/iH /qKHŠH.dRѫ*0uVY+i;-4hRRE+EB"\u`咶XaxJ~XQ Tr[IZd`2)[+*0u]V4T`.^j FV4T`˅Ph#RJNe-Z*,TT8JP8+*0ueԧpPh#RJNʅ.7q`JRFh*]X9dBժPh#R\.p.+*0uĎ:CbJNe-Z*,TT8JP8+*0uĎ:CbB\H6+dRw )jƊpbՃK-ZHݕ Ɗq#Pح /qK Ɗq#PرsKV,/(N.dRT)N*>b)1 Ɗq#PسPh8 +i;*łE+qJ}\u` VR7eB\H6,e RB\H62Vv[.ijQb ̊V)GE&>XQ$qՊ Ɗq#PT[IP,2)[SՍ:K,ZB*:GX /qK Ɗq#PصsKV,/(N.dRT)N*>b)1 Ɗq#PطPh8 Y+i;*łE+qJ}\u` VR7eB\H6-e RB\b%JjƊpbՃK-ZHݕ Ɗpfየ+e RB\*qsKV,/(N.dRT)N*>b)1:P[ ƊprJNʅ.7q`Jإ>XQ TrzT)XQU˅Ph V*uS%m'e断*X^*P\ȥhRT|RcV4T`+:+*0u•T[IP,2)[5cEF1R%PnʅcEFRSp+*0ua˚ZTXaxBqs"JqQIV4T`w5 Ɗpn%m'eB\\ȥn)OV4T`.^j FV4T`wpFh*]X9dS%)s)ui ʛV*RbՃJNe-Z*,TT8JP8*mX\JVY+i;%M )R1R%m'ek[p\ȥouar*F댕˚ZTXaxBqs"JqQIjJT]i=ՅʔӮ2VvT)ůV>TڰR#.^j FڰR#WZu\.p.[V*RdXղՅʔu` VR7eՅʔ*md8k.8^}Յʔ*mKd\բK J SLw[V*RdU,wmX\J.)TJNʅ.7q`JʛV*RbՃK-ZHݗ[V*RdU,u /qKՅʔ8^L:M )R1R%Pn˭ )R4p:u-Z˅Յʔ8^Rc˚ZTXaxBqs"JqQIڰR#G U,wuar*FX%m'eB\\ȥn)O6.THK,ZB..THKe R쩵ar*F*]X9dS%)s)ui&As"b7V3q@ܴbՃJNe-Z*,TT8JP81nZ1R%m'dRs"nf⁹hK,F)ms"uc7 F댕˚ZTXaxBqs"JqQIWZuXrѫ:%m'eB\\ȥo#uc7 F*]X9dBժpnf⁹h֝q /qKn('N#uc7 F*]X9dBժpnf⁹i2tpFn(TrkKYuRKR9e R1` ƣsKV,/(N.dRT)N*>b)1ƣyX(qQ+i;-4hRRE+EB"5 C`[I,T\ȥ?G+BPn2VvUu R,2)[+te32Vv[.ijQb ̊V)GE&:2y[+i;%fn,dRw J}aSEe2Vv[.ijQb ̊V)GE&=aSEe2VvK,/2)O +.q-.dRі#RJNe-Z*,TT8JP8ǣ,F;,K ̊S2jSb[IP,2)[і ZJNe-Z*,TT8JP8ǣ,*qsKV,/(N.dRT)N*>b)1eCn2VvK,/2)OFXT9V%m'eB\\ȥnu X+@,KS ԂS`&,mXS`&tŊ\t-T`T [Z^i@Z ]T8qI9ޡj0%uP#E F >, ){J}k,4b\TϤ'Pb\T>Ch[-iJ :u\ҲZtV [ib,q[V ZOVA{K(֧SVRJTR.\XaP[#*R[T^R.dRі$tsKV,/(N.dRT)N*>b)1,H%m'dRs"2Ď2VvT)ůVJ}aIhi2tZsKV,/(N.dRT)N*>b)1,&N^H֝0Z[IlEE'2)Z*1і'/PjN-d*X^.dRFXLB:`K X.dR+ӪJ}Hތ9z#WZtk%-dHJTT., ոjN-d\բK J SLtez ]iK ̊Sez ]i ]pns"`N)\Z#z2[KZZɂ•@K-/VK]2)O:TYs˚ZTXaxBqs"JqQI&t+i;%gJ+.q-.dRɝFXJw Y+i;-4hRRE+EB"3N%m'dRs"3N%m'eB\\ȥoɝ)-&NcVVv[.ijQb ̊V)GE&4jRT+i;-4hRRE+EB"'T4:#vJNbE)5`N`*ibu F앴 ]pns"7iSCj5`N`*ibu F어#*R[T^R.dRF`cFΕ +i;-4hRRE+EB":TT2d*X^.dRV0pJL ]pns")OV4qJ T`%m'e断*X^*P\ȥhRT|RcՍiiyR:[I,T\ȥ=-/*P^Y+i;*łE+qJ}d4V\%m'e断*X^*P\ȥhRT|Rcѫ&NaSEe2VvK,/2)OՓ'N+i;+\ RۂE+}d.,F;,˚ZTXaxBqs"JqQIVLbeԧpŒXaxJz5d*]FXJw Y+i;*łE+qJ}d.IX[IlEE'2)Z*1Փ'tL:JNbE)5d*]'m'NK X.dR)jƊPnTYs˚ZTXaxBqs"JqQIV4T`#r˜d*X^.dRXQʚ+.q-.dRXQ#,F;,˚ZTXaxBqs"JqQIV4T`N%m'dRs"jƊqb5)1dRw )jƊq#PحsKV,/(N.dRT)N*>b)1jƊq#PحXaxJz5cEFV(lV[IP,2)[SՍ:GXc%m'e断*X^*P\ȥhRT|RcՍ:GXc%m'dRs"jƊq#PرK X.dRѫ*0uĎ:CaS%m'e断*X^*P\ȥhRT|RcՍ:GXXaxJz5cEFV(l*dRw )jƊq#PصsKV,/(N.dRT)N*>b)1jƊq#PصXaxJz5cEFV(lZ[IP,2)[SՍ:P[˚ZTXaxBqs"JqQIFh *d*X^.dRѫ*0u¡ʷ+i;*łE+j-qgP\=:6NV4T`Cn2ZLJYmQzJ\R蹑J~XQTJNe-Z*,TT8JP8Fh V*uS%m'dRs"\)XL ]pns"rM]Ըxܽچuq\]bu A*ŠBڅF7X,F7W(jƊpbU2ZLJYmQzJ\R蹑J}\&lEE'2)Z*15cEFL7qXaxJz5cEFL7qK X.dRʛV4uQ1pRVv[.ijQb ̊V)GE&Tڱ4b[IlEE'2)Z*1ʛV4uRFY+i;%ʛV4uRFY+i;*łE+x>Tڴʔd\բK J SL|i1 )R[I,T\ȥTڰR#G U,uXaxJySjJT/)TJNʅ.7q`JRՌP7-*hJNe-Z*,TT8JP81nZTYsK ̊SM8[IZd`2)[Fn(]i+i;-4hRRE+EB"nf⁹h֝qXaxJ|b7V3q@ܴjN[IP,2)['.sl20PC)T ZՌP7-Ӯ2ZLJYmQzJ\R蹑J )d#|!8=p!iNl"8=rQ@B1='ć#$#F12Bp{0p#0sH"'| cHH xa {Na()d#S~Bp{ AoPӃJx.Bp{! cONd 2!!8=$8="n"8=H BbBp{\Hp{wB1B"8=B'!8=)C p#+AiNgB1 8Pp{bBp{k F?69 Db &F?xPp{;Nb wć#A8&'8`p Bq `pL$CL#c(8=\\Hp{ !`Nb2$8=%AFr،!!F!  ċ$'!$Pp{Bp{Cؔ BRĮؔu“ؔr Aug!G\A!8=uB# ~| _N`> Dp{Nbaؘ2`kNb`wć0{L  #ݓ_N`xw“<'"1_Bp{A``('@-1Bp{B$8=$\,'D !8= s“"|$d#rQ'Mo„\&1(7CPcPFp{ !8= g!&< `B:p{sG!y B'’Bp{ Aw!>Bp{ Ay숃dA?!8=cÐȀǁ"|p:p{e*'K܄'\ cx'p:p{Nא'd#o!8=3>$8=3~N`qBp{bN`DUć"+F?5'@ 9 P6Cء?@iG@sNbbyNb< cBp{Hp{8=A"!8=B/IN`F x#``F:p{`` g` r:'"1gF?'0ӐÞxFxFD1 #F?!w!8=#Hp{@Y &8= E'H6C$,F?C`| c'% x5#.Bp{P`Jy [ćB~c!WgCBp{wBp{8 F+Dp{ G|Lp{ϐ(y“%\J4F?%Dc x`C'QNaR(8=Cn"8=E܄ ׉aP#Šd#ť܄-ش:p{Dp{< Lp{ d#0>'MNaYp{pxAP(#'( y :p{&8=@BNBp{D xAaF?\Bp{F-t?ј5Lp{F^Dc c^Bp{p2t`|PCQ(G(܄2rȏ8=qd@F? Ni xA3F?@fqfh3< &d#y /*'Ӄ^/\Lp{)>DcH2 A!8=Dp{xON`?cƜ!^DciF?5'2t4x4|5!cp#Ơ2P}NeBnBp{*#tT6#Qw!8=T.Dc`B10 y 0_Na/t"8=?` MF?p{N` 6x8=SGf|Lp{ xAb~B1lUNcc~Bp{Nc`uG>'G.d#  $ӃQq!!8=D9cA"x{>Bp{#1@.d#|rb:p{ Qq1 y 1xN&8= 牎a=cbxD]Nd]oxYu5"8wF\tE)VEsb.cwKxwU""(.skA~J.K΁wi־/& ?j_c ?α?PRiouh?PRb.αPou1: αXAJJ?4:wXRu`ܻuuAXp/Kc:%JlgX保Oc:% Xα;+0α;| `4cw# lgX保1¡uK gX保3r_Xα;-Mc:%Ό1y:` V3r_ ͌:B gX保'3r_ec:%΀3r_>wc:%Έ:$3r_|IlgX保$3r_|HXα;1kc:%VR&cwα;uKXα;63r_|x`uKV3r_` ,gX保> uK +9/@hec:% uKsN/cwn;9/@71cwPlgX保=\gX保F,ԇ63r_* p%Kq(edN9Q Yp J?2A0WCp J?- _;G#; p J?d q(`cA8c~%"a3 rģd 'q( 8c~% p; rģ7 p J? 8c~%Xdq( 8c~%d'q( 8c~%2gq(a> rģ 2'q(< ;G%B rģL2sAT8d'q(!w1?JYp J?(p J?(XA;G%p J?(=q(6 'q( q( q(w1?X8c~%`w1?sA@/$ rģBk9Q!&[;GzAB_;GB9Qa;GB q(I)p J?™p J?XU;c Zӹ8)NX/ħB]au"J{#`w:~%=sqS!KX gsqS!w:~%=X sqSx E`:α_OVX/ħ6@α_Oᦰ!X/ħ^"X/ħ38)<hw:~%=;fw:~%=瀷ZI;c kPNX/ħфu"J{w:~%=lkCE]ilu"J{Zu"J{^α_O1ւE kCYEc8)`ZNX/ħ k;c6h9α_O&փE};c:Ѕ;cNAα_OnNX/ħD[IE3NX/ħDVu"J{@]-α_OgsqS"{)Ew:~%=pOw:~%=p-W;#N8%VBI[%Ghic,jeY E iV-B (PB (PB (PB 2t#2622*/Vł XB,>|)J@ B$(/-q*bUkUPԣTҁCFw$(RQDiJT*jPQ\Y%VBRR#J3qT`:u-[%VBRR#JY2tZJbb UPJո断.P*"2t*]X9XKR#'JLK2Uk)u*DdQ&N`K2Uk)u*DdQ*0uVd(RTҕ6.THK2Uk)u*DdF#uc7 F*]X9XKR#'J58Uk)u*DdFyX(qQ$(RTң,Jb.H*2¦˜XKR#'JUPԩFX0qkk$(RTң,*rJb.H*2ĎIUPԩFXRZ9ZL:XKR#'J9z#WZtlZ ]J:Tez ]iUk)u*DdI*h*"2tΣ,F;2Uk)u*DdI)-&NcVUPԩF ,M,NHJb.H*5c 0.te%VBRFN-/*P^d(RTңVL:¦˜XKR#'JY2qQ#R*"2tՓ'tL:*"2tՍ:Hܩ$(RTңV4T`NጕZ ]J:TjƊq#PخJb.H*5cEFV(lY%VBRFN\H6IUPԩFh8 d(RTңV4T`CnIUPԩFh V*uTZ ]J:TjƊpnZ ]J:RՍTL\7TCUk)u*DdJV4uRE d(RTҕ6hꤍUPԩ*mZFBJTUPԩ*mX\J˜XKR#'JTڰR#WZu*"2tM )R2TE*;%VBRFNar*FXZ ]J:QXrҦ˜XKR#'J1nZ5u\XKR#'JbՃ"2tΌTsVBRFNd TsVBRFN\u`b.H)SjJTTsVBRFNb7V3q@ܴbՃ"2tQу[YVBRFNj9Zu­b.H*2y[*(RTң,*hʵ"2tNZ ]J:Teb.H*2¡ʷ*(RTң,HZ ]J:Te%Ӭqjڵ"2t R5uLլPԩFXq`֝0[VBRFNҦ˜XKR#'JL2jScVBRFNҒd8mZ ]J:TjRT(RTңV0pJUk)u*DdQ8*0vb.H*5dӬ*hʵ"2tՓ'ub5)1XKR#'JY2qIikӬXKR#'JXQʚ+.rb.H*5cEFլPԩFh8 (RTңV4T`ubŕk)u*DdQ*0uĎ:CaUZ ]J:TjƊq#Pضb.H*5cEFT9VZ ]J:TjƊpbUUPԩFh UPԩ*mXDuK:Z_VBRFNcGU$Pb.H)SjƎHэZ ]J:Rդh.TMZ ]J:RՅʔ*hʵ"2tM )R5u\XKR#'JTڰR#%M\Rck)u*DdJV*RhyJլPԩՌP7-*hʵ"2tWZuT*(U断.Pڵ"2t*]X9XKR#'JLK5k)u*DdQ&N`K5k)u*DdQ*0uVj(RTҕ6.THK5k)u*DdF#uc7 F*]X9XKR#'J58k)u*DdFyX(qQ*(RTң,b.H*2¦˜XKR#'JլPԩFX0qkk*(RTң,*rb.H*2ĎUPԩFXRZ9ZL:XKR#'J9z#WZtmZ ]J:Tez ]ik)u*DdI*hʵ"2tΣ,F;5k)u*DdI)-&NcVլPԩF ,M,NHޭb.H*5c 0.teVBRFN-/*P^j(RTңVL:¦˜XKR#'JY2qQ#R"2tՓ'tL:ʵ"2tՍ:Hܩ*(RTңV4T`NZ ]J:TjƊq#Pخb.H*5cEFV(lYVBRFN\H6UPԩFh8 j(RTңV4T`CnUPԩFh V*uUZ ]J:TjƊpnZ ]J:RՍTL\7TCk)u*DdJV4uRE j(RTҕ6hꤍլPԩ*mZFBJTլPԩ*mX\J˜XKR#'JTڰR#WZuʵ"2tM )R2TE*;VBRFNar*FXZ ]J:QXrҦ˜XKR#'J1nZ5u\HXKD OYeY XYeEhV,eYe, - e`X-eYeYdV,,,bk,,"R#'CU1(|A@ FዿsT:9"O_BJVoP[|<! @6+ @<;= N"q7N-q:o'.s?'7p ~_N p8=p$!`( E!E 5sg  "BB&B/pD&8"?!~_"`JDDw @@@@AA @-a;_2@@ ,(@ |(A& „XPU (a@i (P!BAp!? J!M ^#CCA E‘RG(0a#,) >KR C\): AR aHC‘"!Ȅ"$ȐH!D"w"3ȍ%"r k=ȁD? $ I?E#cdedw A;!d!_NAğ'NIaʿ8c˿;uf'pLNpuN bp._# 0FI1~Fnu0a&_p" "g"O!E_8DCf@ e5`DD"x8q@PG 1@ @"887у[YG+]pWG+BPnVVy(֎V ʔ֎Vy(U fn, ]qacMW +.rK,,i=A`K5M8J+ NA`K$`T TrJ, * TrJu0 *]X9%Un8bՃPMV'NūzVIB9z#WZtoPX1R(YX5uLVIPu&n,u`-  uV *]X9%#R6JG *]X9%ԌZHպVIEbAb5# [ibubՃQXU,Fbbu.źjC#*RT,u`V y{nڂVIEa^/0t0m[,u`Vj Fam-tpڂVIEh5y [ibuA`K$PX:1XRŵ. @2qOPX1R(WSEeZtW:1RͧJ+.pWub5)1:1R(Ihi2tZK$ӣ7&NcVNTrJu RTBQ_V0pJ^Y(+Fhn(.- BPI V,ToP[RL:Ŋ-+%ޡXX :cEj~Z5!•@IJN[+% =BjF }BTZ5# - BP/0thd`V Egay [ibuBQXV:3T4T`zdgPhKKʔBQXU+8񣁒uY([+8nY(u Ǝ4 P\+%}B'X/([+%B'X P\Y(P 47 8Ӯ-ޡY2t +.rY(P:u.+&NaSEed*]&NeBd TrJ+'ub5)1+&N`K$ΡY2qFn:Bd TrJu ɓTNK]&NgVL:VIEBT)4V\Y(W+*0uV}BT)4V\(+*0u]V4T`. Ɗqb5)1+*0uVIEcEFV(lWV4T`.ZcEFV(lYV4T`.u Ɗq#PUV4T`.mB\H6-+*0uVIBB\b%J ƊpbՃPPh *ܨV4T`.+*0u•U:K$nXQ +*0uVIEg/VJEuՒ Fbb}CeEգR0qk4jCeBCeѩ*P^Ŵj/VJ-6^TVdPzjFy[-[/VJ/VH8۫j/VJj/VHŲKj/VJPzjF-8ndnhԕ(/qk[/VJ+?PzjJ֋ՍVd]Ceѩ&NbF6^V,lZ5$ӬHku %U HndmCeF+*XlY(T6^/0t`C+iյ %u *P^Ŵ}CeEaeCeJZX^RQZPzQZ ՅV6ZlY(-lX^`8۫}CeE/V:1lRPzQ`ayU VdeCeJ֋խ/VJ, /V:TŮ^h⵾dmCeIXdMPzd$ihh⵵ %w[V4uQ1pRmY(ڱ(SmY(ڱ4cmY(UmZFBJT[mY3n.RudڲP \ ոmՒ}Փ:v-ڲPڱZ+8VuaqŃW-uՒ/0tjnjEbՍucJV\mY(YڰR%M9Vn.THK>jJT4V\(uar*FjJTTrJ+mX\J.&NcVmX\JVIE )R2TE*;.THK$VjJT/&NcV[V*RbՃQnjJT/)TՅʔu`f գR0iֆ/['VJ+ ՌX:Qg0NŊ-'VJsF :cEf Ւ{uhԤZ7[%ѩXbۃudX^`EuudWpn/0tbb}Qopnf⁹iSEewA7pnf⁹hK=M8J+7V3q@ܴjNnZ1R(Xrd{uc7 F*]X9%K_+% ]qacM/PVJ,;+% yzQoPz/PVJ +% urdgpn^^A/! E/l^&}ZEF$^ylrE݀bE6 ";6 "[̋[""hE[$"5"` 6vEv/.1$^ H`y$^;" `x,q^l]nx`x/^^ dEA"gD^ 6]xwȼ<E` ȼ$^6xE`"x{^/3H H!gBB/y/^ DD^s1cv3tCvY>EgBr.:>t("Фu.:ȻyA`:d]2.: 3]~t:|0΋.:v sYq`mvvgPvIȻс`:]yD]s"FD]<̋t:΍Ң.,΂r.؋g@"E s`@$ESv~tSvtgKH: :\E$]:gVvu.:΂.;Θvtd]{3"*"]:jE9`!gM:nE+"9XE s.t:.t:s,ȹ&t5"DȹП: HУ:I:tvEΊ3#΂.t:<"OC.t[$\ 2"E9苝g@ "QgA:2΀)΃B.t:B.tm\c.u6t;"S@-·\vt\9"]΀1΃.t::ts |<"Aft\="CL :s:$\:_\se:gB : dE΃LB"At\wd\y:sY3"AtA"At\=΄R.t=΁:: cHЃs  Їs"\|I$\|M.>ċ1"⍀2"{lԋC.>0l2.>Sr.>Uay-.w` ȸExE Hq $\|R.>;R.> .>41"t9.>!{1"@ HBΐqtrPE I W 1"rYd/΂2.@gE\5091" $\@L HE rw.@2bE! R.@ gOr.@ ċ\p:,"tZE1t+"`:"91" $\#$Π"踋b輋h6 ",pe.l p6jE5y1"1"t Fu Yr.\# rbE0[.p9Ρ"2Γp: Fċa@ HFLE0wBE0y'"= FrbE0.LpAΡ"EΓppI. bE@:\$g:9 B.  1" :\$EBEAt; dċbEBp^u  Γp`4"!@ HH 2bE@:\$ sHH s\$\$bE@g.\p;Ρ" y'" 9 HrbE@ $\$3LE@BE@'" C K H2bEQt J$Ρ"(:NEP`4")@ HJI.sFET2.󠐋v6ERp $\% s.΁9 SQp`p $\%3 GYp:2"(,ΌȸJ`pw.pgJHJgF\%yҢ.Mpċ $\%NEP{p=΀D`$\%y1"(D B.t1"< u1!!! bEBrFtSrLa!?  r@ H:ZEJsgK`\ $\ $\r.Bg'"/l\~@ Hi.B sLEGy$\Iȹsri.B rbECrsBEAtЋr $\!g@<.B3\A  $\B"LE!>u r.!g`4"1"n@ H_b.!CBE# 9 m.! rbE)LE%$\B]'"{.!dċAft ~u r.! vB.!rbE $\B LE :AtCЋA@ HdċCq>Ρ":NE!`4" $\BrbEgTs9d\:lR.ysŒsę&"Ps9<`4"dċdċ*΁1<6Ρ"9<`4"ċw $\t 糨Ht7  $\-< LE9$\2ΓshEy1"̀s:\;Ρ"t<rbE,s:\BE\9}Ћ&@ Hdċ:lAIbd{\E p6/c ȸE3"le.v "m6@ HO.˳p6:jE۹f;"l $\ ̀p6gM s\ p6;ȸbE3`:atԋ::"ld{.܀p6 gAaa:r.uya` ȸ." "!&t4"!6td\D\DG."$ s ΀EB-"$;.")dċ\D:jEI."-ċbEC$\Doq,΂."_b."ċ~@ HgAyY:FE|a\ll $\pOb.$\˳\\@ Hp_BE|4Γp vB.@ H,py&"> 3H\9`4">bE|dċ{}$\ p;bE|A.& ΄".&!΀ԋYІEM\Eċ1"bL ȸt"q0:d\L`q2,q0 $\LUxR.& s.&M.&W.&w $\LgHu\Loȸ5܀q0/μEtԋttEH;1"`uR.&x>tE $\LbE:\L Pq0EΓp= dċ6@ H 3LE9$\ 3\\ p<0΁1ȳHgIȸ) M.ċp<:s\\ċY.Lp<Pp< s\B.p< bE5΁1u tsp<rbE{. p<sHYr.hE $\dċt gPp>&Γp>\ċLp>-A\.ȋp>U.|𘋁݀^E@ H3|HE>H@ H1"|g^"|:Κp> .Hy1"|"dċ $\\pA1" $\bE $\ bEO.p@@ H dċ<p@I.ċn@ H v?pW\1w};Nwc%+ZAlc(dVccoo?u7:X-uc7?_cOu αα?#uSuαt%:ЧBIuX:iucX:αt?X:XXXc|X[u?X#?Ou1:α@α@ ?α@Ouα@]uα@c:: α@X ?2`CuYu αGfX5uX?0wu@:Fo!?Ag?A?A?@Qu αX Auc$X ku((?X Cα:J;:J ?α(?αBc?αBKu:gu cc<:c_XA/? Qu oG?Xccu7:_@焿X<X<cX<瀯w?:c?α?c α_Xc-:w?C:Cu#:]uau auwu ?α"?pc αcOp_X? α??α αOw?`?α,:L_?`-:L?`cFCuSuUu?cF?`X?`+: α$;u cH-:eu#XW?Ā:?ā PPGu(POu*@+u(qu( α%w?ġt?TX7.cT:RŎ9u{ȭ)bc:_Xα αXα1:=tXXwu{?:=tX?αα?w?cwccXUu{|?X:=`Au{¯&&Ku{:=`_u{$:=`αo&?s??g??αc<c<=u{c<α?u{'?XG?Uu{αXO:=| ?αXc@α #:=c@X:=X?α α _X? o?X' ?αNSu{rcu{pccXα!":=Wu{α!Qu{ ? cBcB/@:=>:=A:=Ku{cDcD?X/u{ cDiu{Su{?c -:=@c ?eu{c ?cc?? :=@-:=@X(_? :=BAu{(:=B-:=BQu{!?XA?c! "αRYu{'X); ! <:=BODGu{Ȑc α?"]u{ȃ_Dw?"GDX;u{??Xα+α _ α! ?α(:=p?α'?o :=pc8Xu{":=*:=eu{)u{α#30cFα1P^qG Җ,qϝ rģEiK8N9Qb! rģB" rģA?N9Q %ip J?D/<8c~%"I‰p J?DWٝ rģF gq(q(#w1?s;Gʸ2 rģcN9Q3^ q(4 rģ`ǃYp J?F^9Q0yp J?F3ASA; rģ%w1?w1?= rģӸA> N9Q`A rģSAosA8D rģ{p J? .gq(0 63AěA 8c~%0M" rģF`I;G;ip J?e<8c~%0* 'q( 8c~%1w1?6q(v 'q(`8c~%0- rģFAE/ rģ3A p J?H N9QE[)p J?H`w1?SA8c~%$G`1 rģip J?H69Q&l8c~%Hv q(BMsA l;;G?`w1?$Og;Gq(@ 8c~%H;7 rģ , rģ Uw1?$i;Gk;G B}[;G Ep J?JQ q(+{8c~%%2SA;8c~%%;w1?~4 rģ/A8c~%@9N9Q$=s;Gw1?!V; rģH 68c~%CM{;G5gq(q(}w1? =3AB rģ BM;G'q(P`A rģ C ;GY8c~%J 3A(:C;Gy8c~%Jw1?%tM;GC q( 'q(9Q%*Ί'q(Hq(ΒN9Q% q(:- rģJ3'q(:/ rģ* sgq(ф8c~%P9SAEYє8c~%RL8c~%Qtw1?7΍q(t1 rģ*K:w1?9A@i- rģ|gKq($Ϋ rģ|:8c~%l8c~%9p J?N9Q>gGSAπ:o;G 3w1?q(t4 rģ+gCYp J?Nt9Q8c~%X_AngCp J? A8c~%Xs8c~%X1΃9p J?tN9Q: gq(mq(s8c~%c9s;GX:q(; rģ,gA8c~%`= rģ,w1?A8c~%` 8c~%at 9Q s w1?T'΄9p J?P[A¡tA rģ3w1?T9Q n>A;G*>C;G*V>" rģw1?Tsq(@k0ŢL9B! `pBEIUE`ZJ/)*>@CKd+V,Z->X OB (PB (PB (PB (h2Lld\\Z ϲ'qb |VJ|XJ|ϟ?%T:RŎ9%,XF )uŒRŎ8jP(hn䔱c%FA{J-,qĩFX1R̔c%H)3.K8TңVL:Vdq*DdQ*0uVdq*DdJV*RbՃ)bJ:QXrъVdq*DdQ Y%,XR#'J$q*DdQ#R)bJ:TeCnIK8Tң,H鄔c%H*2d]iRŎ8"2tn,Ӧ dq*DdI*h)bJ:RgQ#R)bJ:TjRT䥋q*DdQ8XсsEC))bJ:TjƎ4A{,qĩF:uM9%,XR#'JY2qQ#R)bJ:TjɓTNK]&Ndc%H*5cEFR7*h)bJ:TjƊqb5)1,qĩFh8 䥋q*DdQ*0uĎ:Cb)bJ:TjƊq#PU%,XR#'JXQ$qՊK8TңV4T`CnIK8TңV4T`+:JXFN\&%,XR#'JTڱ(tJXFNcGU$PJXFNcGU$hJXFNi1 )S%,XR#'JTڰR%M9%,XR#'JTڰR#WZu)bJ:RՅʔ*mK,qĩ*mX\J*;%,XR#'J1nZTYsRŎ8"2tWZu+[TĩVZ*wTĩVZ*"2tQу[Y%qKj"2tQм8ۨT6;R#'J5 Ca%VBRFNj9ZuJ'q("4J *Pl;NQDiJT*jR(lpJ'q*DdQ Y%Nj"2tfn,XKR#'Jf`^V+[TĩFXTYsT6;R#'J$(RTң,*h+[TĩFX1R̕;NTң,u`Jb.H*2Vd)mRwFNb5)1qIJ:TeԧpJb.H*2jSc%qKj"2t-md;NTң,8Uk)u*DdQ Z+[TĩFXT9V;NTң,*rJb.H*2¡ʷ$)mRwFNbGL$mRwFNbGL$(RTң,H鄕-NQDi@T6;FIUPԣTҁCFw$)mRwFNaIhi2tZJ'q*DdQV'Nūd(RTң,)-&NcV\Rڤ%H*2d]iT6;R#'J9z#WZtlZ ]J:Te)Ӧ d)mRwFN`^ŃWZtl;NTң, ոjN-XKR#'J/V:`J'q("4r.J'q("4r.Jb.F.T`I\Rڤ%H)3M9%Nj"2tΕ4V\Z ]J:RgJ+.rJ'q*DdIu`J'q*DdIu`Jb.H)3.\Rڤ%H)3Nጕ;NTғ:UPԩ&ub5)1IJ:RgJKG+IXղT6;R#'JLIhi2tZJb.H)3%Ӭqj+[TģTҌt*X8&NcVSڤ%Ff㠩R2tZJb.Ff㠩R2tZJ'q*DdQuKSKR7qIJ:TjRT(RTңV'Po%qKj"2tՌ,hҢ;NTңV0pJRUk)u*DdQ8XсsEC)+[TĩFhKKʔ*wTĩFhKKʔ*"2tՍiiyR;%qKj"2tՓ'N$mRwFNd4V\Z ]J:TjɓXTYsW;R#'JY2t*]X9qIJ:TjɓX1R̕Z ]J:TjɓX1R̕-NQDiQ&NcVSڤ%Fd8lZ ]J5H*5dӬqj+[TĩF8KNጕ;NTңVLbeԧpJb.H*5d*]FXJw d)mRwFNd.IY%Nj"2tՓ'tL:*"2tՓ'tL:+[TĩFh FM9%Nj"2tՍ:Hܩ$(RTңV4T`#r˜IJ:TjƊpbՃ*wTĩFh*]X9XKR#'JXQ Ts%qKj"2tՍ:2jSc%Nj"2tՍ:2jSc%VBRFN\FXJw d)mRwFN\H6+qIJ:TjƊq#PخJb.H*5cEFV(lW%qKj"2tՍ:GXd;NTңV4T`ubŒUk)u*DdQ*0uĎ:Cb+[TĩFh8 RT6;R#'JXQ$qՊ (RTңV4T`ub©+[TĩFh8 dmRwFN\H6-XKR#'JXQ$qՊ\Rڤ%H*5cEFT9V;NTңV4T`CnIUPԩFh *ܒIJ:TjƊpbUISڤ%H*5cEFRS(RTңV4T`+:J'q*DdQ*0uaT6;R#'JXQ ܒXKR#'JXQ ܒIJ:RՍTL\7TCT6;R#'JTڱ(tJb.H)SjƎ&.X+[Tĩ*mXI)qIJ:RՍTB*"2tM:"2W;R#'JTڱ4c%Nj"2tM:#F2Uk)u*DdJV4uRFd)mRwFNi1 )S%Nj"2tMHш\J*"2tMHш\J+[Tĩ*mX\J˜qIJ:RՅʔ*h*"2tM )RTYsW;R#'JTڰR#.Sڤ%H)SjJTTs%VBRFNar*F*]X9IJ:RՅʔӮISڤ%H)SjJT]i$(RTҕ6.TH֝rJ'q*DdJV*RdU,vJ'q*DdJV*RdU,vJb.H)SjJT6qJ\Rڤ%H)SjJT/)T*wTĩ*mX\J*;%VBRFNar*FX-NTҌFn(4V\;NTҌFn(4V\Z ]J:QXrҦ˜IJ:QXrъVdmRwFNb7V3q@ܴbՃ*"2t.\Rڤ%H(nf⁹h֝rJ'q*DdF#uc7 FUk)u*DdF#uc7 FŎ8jPQ\Y,XFK8QDiJTbJ:Te.8Tғ:1Ṟc%H*5dӬu`XFN\u`XFNar*F*]X9,qĩՌP7-u`XFN`ŒŎ8"2t +.rXFNb5)1,qĩFXT9Vc%H*2ĎK8Tң,&N^H֝0[,XR#'J/V:`XFNҦ˜,qĩ&ub5)1,qĩF ,M,NHXFN:TT2,qĩFhKKʔbJ:TjɓXTYsŎ8"2tՓ'ub5)1,qĩF8KdK8TңV4T`#r˜,qĩFh#RbJ:TjƊq#PخXFN\H6,,qĩFh8 RŎ8"2tՍ:GXlc%H*5cEFT9Vc%H*5cEFRSq*DdQ*0uaŎ8"2tM:nbKKq*DdJV4uRE eq*DdJV4uRFeq*DdJVR2Ŏ8"2tM )RTYsŎ8"2tM )R5u\,qĩ*mX\J.)TbJ:RՅʔ8^RcŎ8"2tM9,XR#'J1nZ5u\IJ:QhŭqIJ:QhŭXKR#'J58;R#'J5 CaNj"2tQм8ۨk)u*DdFyX(qQ.)mRwR#JT¥ Ӹڤ%FA{J-XKF*P^R n)mRwFN`Ŕ6;R#'Jf`^Vʵ"2tfn,IJ:TeM9Nj"2t +.rb.H*2¦˜IJ:Te.Ӹڤ%H*2Vj(RTң,u`'q*DdQ#RwTĩFXJw j(RTң,F;7;R#'J`Sڤ%H*2[YVBRFN`ŭIJ:TeCnSڤ%H*2¡ʷ*(RTң,*r'q*DdQ$t'q*DdQ$t­b.H*2Ď\Rڤ%F 0NjjP(hnZ ]J5H(4`7r'q*DdQV'NūimRwFNaIhi2tZb.H*2’d8m-NTң,&N^H֝0[Nj"2t R5uLլPԩFXLB:`'q*DdQX5uLӸڤ%H*2[ڵ"2tn,Ӧ n)mRwR#J*0R)mRwR#J*0R*(RQDiBF ]qe-NTғ:TYs6;R#'JLSEeUPԩ&t.)mRwFNъVimRwFNъVj(RTғ:1R-NTғ:Ӹڤ%H)3NZ ]J:RgQ#Rĩ&tr:u-[Nj"2tΔV'Nūj(RTғ:RZ9ZL:IJ5H(ARd8m;NQDiFn: ,'Nūj(RQDiFn: ,'Nūn)mRwFN'T4:#zwTĩF ,M,NHޭb.H*5`N`*ibu F;R#'JXƌ **Sڤ%H*5c 0.teVBRFN:TT2IJ:TjƎ4A{qIJ:TjƎ4A{XKR#'JXƖ(/qQ;R#'JY2t +.r'q*DdQ&NaSEeUPԩF:uM9qKj"2tՓ'NbՃwTĩF:u.լPԩF:u.Rڤ%Fd8m;NQDiQ&NcVլPԣTңVL:IJ:TjɓTӸڤ%H*5d*]FXJw j(RTңVLbeԧp'q*DdQ&N1R;m-t:u6;R#'JY2qIikӬXKR#'JY2qIikӬIJ:TjƊPnTYs6;R#'JXQʚ+.rb.H*5cEFR7*hˊ[TĩFh*]X9qIJ:TjƊpbՃ"2tՍ:K7;R#'JXQ#,F;46;R#'JXQ#,F;5k)u*DdQ*0ueԧp'q*DdQ*0uĎ:CbwTĩFh8 (RTңV4T`ubw;R#'JXQ$qՊSڤ%H*5cEFV(lYVBRFN\H6,IJ:TjƊq#PUNj"2tՍ:GXb.H*5cEFV(l*IJ:TjƊq#Pض'q*DdQ*0uĎ:Cbڵ"2tՍ:GXm-NTңV4T`CnSڤ%H*5cEFT9VZ ]J:TjƊprˊ[TĩFh V*uU;NTңV4T`+:b.H*5cEFRS)mRwFN\&Nj"2tՍ:0ʵ"2tՍ:0ˊ[Tĩ*mXDuK:Z_Nj"2tM:nbKK(RTҕ6hbấ-/IJ:RՍTBwTĩ*mXI)XKR#'JTڱ(SqKj"2tM:#F46;R#'JTڱ4cVBRFNcGU$h'q*DdJVR46;R#'JTڴʔXKR#'JTڴʔIJ:RՅʔ*hwTĩ*mX\J˜XKR#'JTڰR%M9qKj"2tM )R1R;NTҕ6.THK5k)u*DdJV*RbՃ[Tĩ*mX\J:;NTҕ6.TH֝rb.H)SjJT]i.)mRwFNar*FJhRimRwFNar*FJhRj(RTҕ6.THSmX-NTҕ6.THKqIJ:RՅʔ8^Rck)u*DdJV*RhyJRڤ%H(nf⁹iSEeSڤ%H(nf⁹iSEeUPԩՌP7-*hˊ[TĩՌP7-u`'q*DdF#uc7 F*]X9XKR#'J1nZ1R-NTҌFn(]i)mRwFNb7V3q@ܴjNVBRFNb7V3q@ܴjN,XF )uŒŎ8jP(hnc%FA{J-,qĩFX1Ṟc%H)3.8TңVL:Veq*DdQ*0uVeq*DdJV*RbՃbJ:QXrъVeq*DdQ Y,XR#'J%q*DdQ#RbJ:TeCnK8Tң,H鄱c%H*2d]iŎ8"2tn,Ӧ eq*DdI*hbJ:RgQ#RbJ:TjRTq*DdQ8XсsEC)bJ:TjƎ4A{,qĩF:uM9,XR#'JY2qQ#RbJ:TjɓTNK]&Ndc%H*5cEFR7*hbJ:TjƊqb5)1,qĩFh8 q*DdQ*0uĎ:CbbJ:TjƊq#PU,XR#'JXQ$qՊ8TңV4T`CnK8TңV4T`+:XFN\&,XR#'JTڱ(tXFNcGU$PXFNcGU$hXFNi1 )S,XR#'JTڰR%M9,XR#'JTڰR#WZubJ:RՅʔ*mK,qĩ*mX\J*;,XR#'J1nZTYsŎ8"2tWZuˊ[TĩVZwTĩVZʵ"2tQу[YqKj"2tQм8ۨ6;R#'J5 CaVBRFNj9Zu'q("4J *Pm;NQDiJTڵjR(lp'q*DdQ YNj"2tfn,XKR#'Jf`^Vˊ[TĩFXTYs6;R#'J*(RTң,*hˊ[TĩFX1R;NTң,u`b.H*2Vn)mRwFNb5)1qIJ:Teԧpƭb.H*2jScqKj"2t-me;NTң,8k)u*DdQ Zˊ[TĩFXT9V;NTң,*rb.H*2¡ʷ.)mRwFNbGL)mRwFNbGL*(RTң,H-NQDi@6;FUPԣTҁCFw.)mRwFNaIhi2tZ'q*DdQV'Nūj(RTң,)-&NcVRڤ%H*2d]i6;R#'J9z#WZtmZ ]J:Te)Ӧ n)mRwFN`^ŃWZtm;NTң, ոjN-XKR#'J/V:`'q("4r.'q("4r.b.F.T`\Rڤ%H)3M9Nj"2tΕ4V\Z ]J:RgJ+.r'q*DdIu`'q*DdIu`b.H)3.Rڤ%H)3N;NTғ:լPԩ&ub5)1IJ:RgJKG+IXմ6;R#'JLIhi2tZb.H)3%Ӭqjۊ[TģTҌt*X8&NcVӸڤ%Ff㠩R2tZb.Ff㠩R2tZ'q*DdQuKSKR7qIJ:TjRT(RTңV'PoqKj"2tՌ,hҢ;NTңV0pJUk)u*DdQ8XсsEC+[TĩFhKKʔwTĩFhKKʔڵ"2tՍiiyR;qKj"2tՓ'N)mRwFNd4V\Z ]J:TjɓXTYs;R#'JY2t*]X9qIJ:TjɓX1RZ ]J:TjɓX1R-NQDiQ&NcVӸڤ%Fd8mZ ]J5H*5dӬqjۊ[TĩF8KN;NTңVLbeԧpƭb.H*5d*]FXJw n)mRwFNd.IYNj"2tՓ'tL:ʵ"2tՓ'tL:ˊ[TĩFh FM9Nj"2tՍ:Hܩ*(RTңV4T`#r˜IJ:TjƊpbՃwTĩFh*]X9XKR#'JXQ TsqKj"2tՍ:2jScNj"2tՍ:2jScVBRFN\FXJw n)mRwFN\H6+qIJ:TjƊq#Pخb.H*5cEFV(lWqKj"2tՍ:GXe;NTңV4T`ubŕk)u*DdQ*0uĎ:Cbˊ[TĩFh8 T6;R#'JXQ$qՊ (RTңV4T`ub«[TĩFh8 imRwFN\H6-XKR#'JXQ$qՊRڤ%H*5cEFT9V;NTңV4T`CnUPԩFh *ܸIJ:TjƊpbUSڤ%H*5cEFRS(RTңV4T`+:'q*DdQ*0ua6;R#'JXQ ܫXKR#'JXQ ܸIJ:RՍTL\7TC6;R#'JTڱ(tb.H)SjƎ&.X[Tĩ*mXI)qIJ:RՍTB"2tM:"7;R#'JTڱ4cNj"2tM:#F5k)u*DdJV4uRFn)mRwFNi1 )SNj"2tMHш\J"2tMHш\J[Tĩ*mX\J˜qIJ:RՅʔ*hʵ"2tM )RTYs;R#'JTڰR#.Ӹڤ%H)SjJTTsVBRFNar*F*]X9IJ:RՅʔӮSڤ%H)SjJT]i*(RTҕ6.TH֝r'q*DdJV*RdU,v'q*DdJV*RdU,vb.H)SjJT6qJRڤ%H)SjJT/)TwTĩ*mX\J*;VBRFNar*FX-NTҌFn(4V\;NTҌFn(4V\Z ]J:QXrҦ˜IJ:QXrъVimRwFNb7V3q@ܴbՃ"2t.Rڤ%H(nf⁹h֝r'q*DdF#uc7 Fk)u*DdF#uc7 FZ+.q*DdUum֊˜J:U-"2pJ8۫E8"2tCEe%H*[J8%TV mբF+ac,,ȴ& eYd*`Z,!`X Ea`ZYYeYeEl,,V-,,+ dj%TV mդ0G@.΋"o]p9*vkÝ_В["$:7>pw8CP)qPQ(TJu mK=B\XIEyxܽP)qQf኷(/qKz.KZKNP)qQn\Xb-X넢LEy Ƚ ȼ_r/Cr/pp\'"yW ȼmr/ xNENENE%,P\ዿcu"JVoRu`ܻuc?/.?(w1?\w1?rp J?gē9# # pD`QX(qV J)PY ղ,OgP(PB (PB (PB (PѓdّɐQz,gϟeNŪ)dO>~Ee%FQX(qVhģTҩhŴT*Pn .V\QDiUum֊˜J5H*[J5H+6@ Ũ3,,ȴV+@l,->k,,`X->}YYeYeEl,,V-,,+ ec'TV mդ0G@)lj~H?6 ]WÜ_%Nӭ| ڽ_|F_BJVopM6H?d'GXW! +ژ4Ւ.ЛL+=>  (@fZT v/>φ)9qiS`/Ek'9ۋJx.ɍ$ Vuo53$]Jjfy"0xf}ԁ6*$]DHhrLo$]6|܍{ShMHX^P6*$]DHhz6>ҁy^EאJmJvLm3y51ЛP<`tF ^j0y "$@b$ /j/yB51LQk&ςך>݅P.L:|1yvk b2=0?LXcki:Pnd'GXW! KKWKjZ$]EϷB|6׃yiCh1Hrdj6X@4LW@FBm M^jZK4^@>n  u:uJf"eEMirWzBx7ʁ\f P&?b63!FoYg:qT^̄ *$!p?kK^oE &$]H+nmoׁPE RMʞjZ>n  u:uJf"eP6$l כ/jRz$925^`H&64&TQ>iLIdҔ FOPMaz}樊!ɑ/P:/O`H&64&[5Dtkڌj0$]DFICTFDkch'ЛDHhrQ^ox҅z}^n@dB@w-(|&F5.ɍo5nz\a tF&(|&Fڕ.u MOPx7F&^yȑvLme'4i/O< C;C#W2<;gIJŪK̄ *$!e{Sɍ/51yua L^n@P!E5@Tؐ\fgVPЛDHh6$]AP܅{TO7j0xb3\+&aEQ< h tF&x7 DŽbB`$> !ɑ"&yXbS4 3&6j5h}^n(^ L^n@`T: dLP< " jp ^bZfB><>'gIa?`BFfBtx{Nt^Ե楤kchάv"@EǍ%p_`HTHcS6' + d{TkciKP<񤴡q!ɑ"-y ڠ#]Yy4>&F&σǚ\O1#730y!uEFfBtx +ؐwkL^jbPA{Tk&3LJ0925EW흯j/xҁP!ɑ^70pհqO36/j/y4xu!^i<:ʇBAqlBS4fcH҉2ךQ.Ђwφޅa>h|3 R4f"eE5B}^4L>:}D`V/x(>KLGLJZ=|AgI:PX;̄>ױ! (kڠ$]y&׵Rq ⸠ͶIWBF&6ךyvLm56*$]B"i@PQ925@6`W}pq y C9925l04Ś`> C#WyP51LT/7Л>fT۰E׉O^bZfB><>'G?LAZWJ˒0/WnÜ < xX06?m_(AڿC j:>o8Wi;̊0XۂEE KT6T\Tj(+,qC@RȬVȬ- EXZȬX. ak+Sn\#l?Z+xJ T-T [mC®YruUuF)Zi(m\eQX(qYbjmu (R%PP%mD;@RN`Yȥk"V;Dcqy F?)@ B15gAŜh#"1|\F?x@q _c4C>t1#@𔓂#JR#@c ~(8=Pp{!) bEƂ1BI!!؄xAxpFp{<xANEۼlEُf|1"m".]1fYӑp6p6r.^ b.Þ|egń\ N\ |ZEyu².b.@E{< |^EDLE^XEA qC\D9aAs\nJ.p#T:ڹ}_"Rh>H?%/pkα+XKX[hS]Xj?U Sw+NQα^ڱXU(Nc^uαuasXVXKXUP?Ul_*V6s:J[T*+8cj $)c~w(Ac~w* Ŋ3rO B (PB (PB (PB :FI P\PV|Y,ZROO O>|]X,p*k)uRU4QX(qVT^QX(ዢE`J^+eSqT^c'J[4QX(qVt*su4*ܬq]rc'TV mբE*N8۫PqC^+eSqT^c'J[i:Pn )V8uE`Z+ Ł[,,ȴVg¶YeY[,,`X->+eE`YeYe[,,,E,,Ŭc]XHi*ǘRNF:cJ.IS_:cÜ}BJVoLs?<^py6v~Nc]c 6~5 :CgEч0"AX&ElڢQrR\Tc]XHi+dt 2T8/ ah-+XXNϕub#qs2VQs)3Ne-Z*P\Vv[.ijQb Nb򶓲K X.gE`eBwCNʦqծPn.g4\.g+i;+\ RۂrE֖LrZV֖Lr˅ռ))T j .gZZɂ•@K-/VK]3PC.P6PK%(.['eJq8ۮ'3-ZHݟT`*/pRuRKR9e RK,eֆwSKR72ያeRS+.PN{n,Zʵ-qKRbU^A^C^"b/q1~&"𣉈&"Gyy'y&"oz&"z&"z.&"yOyWxۉ1b))b?ݏW\1w};Nwc:c jΘ?TX7.cK/ J#q(1'q(~C;c?rptI!\c]XHi+pm ,eP[,!h`V|-> hPB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|Rub#uV9JՊ֊n+Z FiUrk) !hVeYeY, eYdZ+ YeY Z+@|-eE`YeYe[,,,E,,ŌIzXUI0G@l=*OH+#9|*vkG#ҬJG?В[I3!:<Ə5HCA;{Qy" ؼW (}0Hrdj5hTPA1@@P#Hrdjl<9CLP&}RCP>!ɑ5ij/@Ѕ@ &> L[6g4(| @fհoATCǚy5RC#VǛa07P925yL^j/#]6&}Q^j/>0yCj9HrdjE1g4ޘ<5HgE:+^o$]E5k>eHrdjQyCj!HrdjQWDzEchEЌbt樞n@ ڡx䋲ciFO7kef1H3j'54O<:E:^j ڔ܀4 jTzg> Hrdj} / Ch)Hrdj}mo򗁄DPć&F5)y k!q3d1ԥeCE1T$925EjZr(`{RUAvzUo7>A2C#VǛa07B"@ Zd5)y6;4X ^jRyC=C#W#c;x?HC= L[Qb׊aPqBhC= <4iP@*zD&F5BfB><>'-4|!޳$/UkF4)Ufd'G{%z P<Ե{Qy"ZT۰%k6O5޽׵< DUoFH5܁{Q{E䋴&ώb63!FoYgXĥfBtx kؐpz ~Mך2 yW޽7/4,(|jC#V>8!ɑP/k>g}Ă0* L'oYE`vLy ڡ@u{Q+^r׵D6xѕkBLm@T/Q<:ș{T/5DzjFW:e gP.ɍe{ `{QA boB|X(|` HrdjQC;925E&VρV!Pn$ ^i7 (|aC#V>8@lB@ġ)LWB3h ^i7 (|A LW/jRzE5> &FHB4Y27j/@@ W"ʐ&VP&| "¥!P6D J@ճm_sL "t&Fך N6j/^ԩhHjT}b|H QaFI$ /j0yMϚCz/t4&F0ɉ`ZhCgI c-uRFi R`~E^Ą4P!A!Hl  /j愆/Ep(|@!ɑ"(y!Ɣ(p(|@!ɑ"Bڌ=%ƂGfkJO @n$3x{@f P!ɑ#摁Cf4&F5@} ڠy<:3&> 4<|8 mhHf|2(| ā LGLJD73 e68JXbUe'N̄>ױ! X…_j4v{r xtiX&6Y"ck/5.YEMa{PR4,`4{PT*!@> $925ll}5(|& LP&ʄ&Fڠ#]6&}Pi C9F{Qy D3b BrLWBFBm LXk CiL[zd`@;PD 4o@4  Ɛ/^ (^ @񭗁~|X^ [ WiB$925ll},$)C8iLQNyء$925^lPԑt 栽J"А\f$"C#W%K5*y{Y|t%&qCg}Ă0* 7d q1hfXPJ"А\f$J"FPJ"А\ eiL[d`@;P FIRXAyrPH.3mRn&FJ"ǚ/Q6BC#W%Kan&FJ<9x҈t$*ƒRZg%Hay,T*M J$925ll},$)C6jC#W%Hay,(xT4z}IRj@QƑJ4< Dk&#J^4^"yvLm<ԥHzyJW</j樞43&P|}gޘ< WH&6jY w4(|!!ɑr Rjv/xF. !ɑf`L0925@EjH2x7H0 925$\M׊aR0 &>$925ll|&F5N2݂R1C V{Rך(|!1C $925y!ɑK^bnfB><>'1dDQ){CFi Rp20qk=}/a1}3CPh | >>bD?$1 ;ā$8A=>HwbGG!7ď# $> "QXT-/(+-R^AXjiUk2b7/T.xܽШX  BhZBL"`*S"\- :-q(f*8蹑JHխJqrVŮ%Vc2)ZV%Z \J5)J:.dR5kEC؄RS>)[ibFi RiÎdRk8j3HR\ȥhE)x*% EdQY(XJ+% P+% EdQ(VJ,O YJ5)J:.dR\"%Xd`E̊VdRÉF4)UE̲)Z.dR^ģQBlpYdZԭ*l r%Vc2ȥk$k]Xk+C`>X#Bp{tDp{c$zS_=;*JVotG8X䥊(Rg?:JjRŎ9uou2:_X!u[K8?PȬX՟䥋sc%Zb.cc_XXVc?R+XV?c%Z-:J^zc%ZwuMαu`2+c%Zb αP+j?X`X` αKUn]:ՉU+qO?ҨTWXÿX ZX_uAISV`7: c1#߉gX`lBgX`8ca ;M pOAx]H8cďN9Qֺ*n)ăp J?9Q`!b@Y;G5ċq(@w1?ПA΁.$A΅w;Gb@_;GJQ_@w1?@e;GSA po8c~%b@i;cq y;cp~%=W@w1_Op~%=@ Ă 8c`=t;=XG@>XGtR^*-p^RT}J2(VYeZ}+> j(PB (PB (PB (PѓdّɐQz,gϟeNŪ)dO>~JjV7%R]Xk+Z,VV d֥qbK$mRwFi RqjֆIUPԣQBZU \u*U5%Zb.PJRQ!JWV4JXFi RqjֆIV \J5)J ZY%T҂(hĮU%qKjj3HR#V7rJbZ01ZnZ+[%ZĪjRZƝpn9ibFi RiÎK8j3HRc]ib(Zk8j3HRJk*XYhkIӬibFi RiÎ8j3HRc]ib(Zk8j3HRk*XYhkIӬZZUm,ZQXd`V˚ZQ!MZԥ)JՍ:sVŮ%Vc8q(f*#VŮ%.PU,q(f()ie%,T*֓YJIzX@5)JŮ4ԣQBZ,,,EдYeY V,!`X Ehge`X-eYeYdV,,,bk,,"[,hj3HRJ| @> !F~; ]?s}T: ~;BJVoMi2l! K{RZ Lj"MA6x\o1(}925EyPGO5VH6BmN{.yCY!ɑcͰL`BBchBT&РgVbP&Fg3x\o1(}J#c2< Cw ?LHZ.%-,;`'BF@H|*BYmQxAXje KZ.%HɈܽRFT rBaFB`X AhhV gdVJ@ȥidLxk dR;9 u~wP^`' Q q(;N9QaE̓o!+Z)q(f^RT}J2(VYeZ}+> PB (PB (PB (PCFNdcfF&BBE8T>}A;TSSϟ%>|*.:Khj3HRRQ!JPRUFi EցKF4)AKK)V \J5) 1`& BYeYeh, ϋeYdZ, +eYe, [,, ,,eYeYeZ-eYeYdV2rCiKU-tU1(| al H>ዿ s&$uO@ )Zտ8s`~E^Ą4.5-(}925$]$èm:@^"jZP Xt ԇ&F&r/ O5@T\\HfJА\f"g E5@} ڠ$]0mp<>'޳$0FƖ6ZRT^3!:<HCA;"^y% .aԅ&׵@{T$B:j(]/Ćm11y LT+ڋa,`T%IĂC6 ڠ#]6yiChC#UE䋴&,o^ ڠykƔyGLJd lRL}>0q:0|'БhVJ2jE KT.PV*.Tp`)jHʗAPn^#*]C{P!XX|TapZ.o@p#$"JE.>I?‚.>\|_‚.>0AAs\nJ.S_ q:RcV?]Xz?UmXu/u*V ˿X8c u&c8ov1MAx]|' QQA-‰p J?9QN9Qa|w1?L|w:~%= p~%=c p~%=L8c!cH@!`2J ҖZ+pm ,eP[,!h`V|->B(PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>|BJt$w-Tұʖܒ*T80VRd\iceKU-uKEIZN)jhrCiKU-vƖ6ZRT^ҖZꖋܥ.Tp`)jʕ -T(eʕ -TXjRK]R{JZkZ/rR(R*T80VRPbЩ,,ȴXŢYeYi,bVV,eE`YeYe[,,,E,,¦Y.Tp`+IӬ%ULy>J 3Fu˹W]pî ~*vk\`m=IJ֭`(_2,ؐwåK^jZCLW@H&6^4xu>!ɑ,p?ԵC#VcO2C#W+#c2V*E`\+g_B18=|ۈrx<u‚/|)"i"k|LE%,P\ዿcp*vkwcB?%+Z>*]Xڱ c%JՃr?_93q'wu;Ģ?N9Q9p J?q8c~%}A;TSSϟ%>|(KU-trt$U.jJ\PZVY.Tp`+IӬ.Tp`+IӬ )K*+Jt*T80VR*T80V ʕ i:uP¡iYeYdZ L}YeE+>,eYe, YYeYeEl,,V-,,+J5)%ULy>J 3o΄;?ЂJ.A@:쒧i־t B#%IJ֭|=x̄4:^{DDڠy撓^+b삀;|iLWjRdoBP#Hrdjc29H?L?8)J5)J;wkؖjbf7{i)xĈ08Pp{T$`W<^} ڋbG>^d\#5ɇRX( 3&>( 3Bm LbZfB><>'gI1 ykSX`(f*8̄ *$!p?-@eP!ɑdpzE'> L׍aBӡ{aywB!ɑ dМgt44Hrdj3‡aB:O:Rk#c2?t B0"C2jE KT.PV*ZF4$2b7/T.xܽШX  BhZBL"`*S"\- 2 kiFi RTEVlpkiFi RTs,RG’.>I\|["88JX7cI+>t ĿJZЃ;$KkV>;?4:*uW* m?U8*,TuB*Unα'΄Ŀαc: ?;}1(.t ?(6΄p J?Ѕ;G:q(Љ;GvtA rģgB,8c~% 8c~%%N9Q*J³>C;G|E;GS'q(>X>uC!q9E lu"J{p~%=) pY!uA 1αğGISV`7uAkS J)PY ղ,OgPT!B (PB (PB (PB :FI P\PV|Y,ZROO O>|l,T_%VŮ%VcFi Rp20qke-u(fJ)ҬqRj3HR[MvJuģQB,vJJQ!JUm68qJJQ!JUm68qkiFi RT)F4)UeX85)J;J)ҍFi Ef*KR^*wXd`V˚ZQ!LQBubƣ4)]P^k\R*)F4)Umq\J5)JRklVcZF4"Dj3HRZ֩/V;]bX,,- Ł[,,EhZ-eYe, k,, ,,eYeYeZ-eYeYdV2dj3HRՍ+%ULy>J tQ 6^;ዿ9$u^5В[6x̄EHCA; ^ԵyxoV{ux1 pZRRC#VǛa07ռ4bbPHrdjRf&x|#ck@ģQBi_kB+% eEbK՗(+IF4)]XҲVR*$eKp^7/t*d+ ["L.EՍ+ecŊR Y2i h2ZE)N{1-'۞8=^x-|HE࿁))b?ݏ/ ]cc%Nӭ~q܃J֭}(Rg*Unαp cߝT8cO gq(=l8c~%5E8cB? $QBiY+pm ,eP[,!h`V|->B(PB (PB (PB (P'H21#a!s!rj X* ϟ> ŋT*RY)a)ϒ>|BJMIV \J5)Jƕִ \J5)Jƕ҆IF4)]Xұ@RQ!JWV42J5)JƕYhZ,,- 0YeYBeYe, L,k,,"YeYeYd+YeYeYL5)JŊ-%ULy>J [`? 6ዿsT:;|IJ֭x=!{߆ !B+%̲ڢQrR%˔4)\XRŤ2T8/HʗAPn^T,>V* AhXT.> S.,Xg*TZf <삖GNʥ%Þ)Z`ZK0Rу(Tō:RyyxI^&b/ Ž&"(.skA]p1?T:}d?JVo{Ru`ܻuc?/.?(w1?w1?wgspB8cOG(f+*X^RT}J2(VYeZ}+> L (PB (PB (PB 4d&F6dl2d.d.T^AsAYdjJY>+%>,%>|SϟFi RbFQB,Xb@5)JŊҍFi RbEV 2,,BeYdZ OYeY Z+@+̲Ȱ,,,+eYeYeBhYeYeYYZY{F䪓`>H΃7򝂟$b<9΢d;NO))ti9$kV`w,p?/jZRҦĂ0'<ed|O)gP $u){F-S,Ed[T^*.PV*ZYrR%Z7%l.xܽFT rBaBP-+X& SXKm)RU+qK)ŭP XFEN:بAZT-n`pP*RDd9V綩bnm68qm*U:ʶ-qm68qڅ Ů TV mT'qK 8TDd9V),PӇ"ll'1&"ȼmD^𘋰gaȻȻvg]vNȻ][As\n2 ]ccT:309kV?Vw rĿ3sߝT3J#nKZ73AWʧq(wJ^ѿNX/ħ[;A!je- J)PY ղ,OgPT B (PB (PB (PB#$̍L̅ʋը.q`+>|,w-PK'dńϟ>J|Q/qhޕje-T/qhP( 0YeYdZ-P&>,"Ш eYe,  Ȱ,,,+eYeYeBhYeYeYY/PV;[%T| @>X0` L< ?W\1w39ā_%Nӭ|&{ K$kV$*ą[x̄EHCA9p?W$1x3hM((0>dġVQC&Fڠ>یII4@JfhȘ5O MEPX^i@fhȘ5O Lڡ@^`g WDH&6!Po<o l!ɑcͰL+HrdjHBm<-y{TO5DHBl2@y!iH Cw ?L ~OwJ:Ws3!:< kآ^lQCjP.ЛD>,H<^b̄|x|OB3z=axnR#'J ZX9V̄4b{QFW@HBm MbDXn"y#2=?L?H+s2Nv%F5>+^" H6"O5@{QFoYg1D7qԩR{ UHCA;jZg.ЛHQB0!x3+ڠ$]PԵJZ)v$y"y@T&σ22ȳ|x|O)gIa?ȐRQBZ/s3!:<h'|vūژċ&R51(|"$925^ D|3Eǚ(|"Rjv">Q`j/$]CGn@PE925^  'y(%Hrdj|3"xҁY=xy x(mťM dС  ^rY#E7/j/yv^j!ɑέp ^bZfB><>'gIa?`%pՍ6Q!JU-3!:<h'|vūژċ&Q5.Lm!EX^^ &^^ Ma{Q{E1#73DwJ:Rʷ&d'G{%kڠxZy}zyK^n@H&HQa;KJ925^`^yvF5/j/$]݅7o^`QE#E䋟} 4< M@j#c2GE LO)>W>925^  %7Hrdj]TPA4@C:C#VǛa07Ϗe%!ɑ)hT'%hAY H@$7hHRF HQN>Аm )>=>R|?BR+b0(|@!ɑ)(|@q!ɑT hICfL[d`3m1/jq1Cf&Fڌ@QeFG)(| F'(c#2RPq!ɑ`LLgV dLr'(<` ȡ3zC#REhJ /O!E`Z}%'h3(| !ɑ" LӫQXi I J6.ЛDP M^Bm  .ЛDP Mק !ɑ" LБzy ,4>> 925$]64@O!Ei IILIhMg(&O!E+ > Jȭ!ɑcͰLǨJJHrdjϾ<ЛD5@3(#Ph$)(|vL J%Hrdj5l%d#rZoYgc㸕c'J^*wҲ h'|;^ecvժ&Pݪ !ɑ"@PD925*l$`ժviCR.ɍ9P!HrdjTHPc^lPv Mڠ74kB$7jvv !ipHFd#zd?J`Սd'G{KڍC3FT5 MViT0HrdjH&6P>d&FML@n-(|!ɑ" J!HrdjTHPc^lPv Mڠ74kB(7jvLm jobE0+|ݪsHZf'<f&z>B`Պ[/WwõF!ޙx桉"+5NHBm Ma j6yJgYPq"`(y)fkBu Lך ^lPobTې/j϶ڧybH&oyrE1$@^,D3jFoY/H H\.p+e&00{ # bFb4ؐmY~==У = ~=F =~&g A=L#&{БȬ-e/V\T^*wJ#&#rJIR*  EPX  PZ,dV+ ϋaWSiSVdV)Zȥk"&n,ֺB8ۺ.Kjݣ Js,Vx(4pwGP#|> xLp{~Nd8= c:a1#+1$Lp{ Pq1%1%H  d("8=Aub1Dž'Ӳp{!<B'g<gxV#. 9 ^ `lC8$8=@˂C؈;<"<=pu"1$\&ċȸLs2. L {\&R.:"0s͈L  d\&|pp p\&.ZE`sd\&|+"0<2. p q p"qy 3"?b.# 2.#t$\F$2.# 9fEb0"2>3"3 ȸ[d\F/舸q..#qq̊JX7c~J.B%Nӭ|&zwc`@J֭HU ?%ZՎXV?]XXVXB䪔'Jڱ?c%JX)bXVc%,T??Un,Xg+:JXb.c%Zα\\?Ul_)ceʖ:Jin,:J@şXRu`ܻu*EuA a3߉ 63qg/`:c?;4΅3qg6tu,αş|}Y}Y%ᝌYc1ş X qg&Psc1şJ`Ս,X8c?;/ N?(a3ӸA-a8c~%cyp J?a0, rģp|8c~%~AA /Jz&A8L; rģ 9Q`a0s;G0ZN9QKe: rģ 9Q` pN9Q 8c~%*E8c~%󧰘<α_OpX/ħ&8):0Aα_Oa0Dα_OsqSuN#NX/ħpa,,,eSeYeYd+@,,"a[,,bYeYd,> P2,!`,, E,!`& k,,ahV,eYeP 2,(`ZYeY@A`YeY@-  eYeXX,( E,-@,eYeBXYeY A1,,aPX,!jX& eYe- YeYdV|& eYdV|X >,"`YeEg0*@,"XZ|X,"XV,"hV+>,"XT,eYeXX ,+AhT,eYeX Bc,,aZbYeYeYdV,`Z,"`-eYdV, >,"hZ|*,Ȭ+>,>-eYeXVZ,"XeYdVbeYdVYeEab,+@| ϲ,Ȱ- Ō, BаV-eYei-YeYdZ| l,-[,,EaPV|+eYeh* YeEhZ|,,E`V|X,"`Z+YeYdZ L}YeEP+eYehT h,ȴ* 0ZYeFWG*ZJ5)UU(Ra*b UUb UU(NcUUJ,Xㄪ+ZJĭ*lU[\XRUUn%,Xㄪ(/)0/%UVAxR䪪(/Ed(/-qUUkE%UV+Eʛ%UV+*XJjR֥,Xㄪ֥V֒ZBUUkRXUPȬXbUPȬXՄZRŎ8J+IӒp2JtꔒVBU(NJՂ /%UZb UVXi*V "UUc'*JJ@ Ei*fXKZ ]%UF UPUUe]hŤjJZUUk XXVUU,Xa*DdʷFN UPUT*Pn%UF Uui*N8۫IUUrk)%UZZUm,Z*ցKF4$ʕ -TURJ Ҵ:UU)Nj3HRJ%ucJUF4)\XRŤT/qhܕTAZT-lTVAhYeY>,,,E*eYd,,,}YeYeY>,,,eYeYeO)g@000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333xy`tX!*J2;]`.H h0,X+ lH , `P* '' K,11X ˬ.DKMUWz}')y@-m`Q2c!PyHAaIBbR*1) U!zf/UP\/* 䊁qD'BnF+Ovbj8^*.(* b8 ,0)$JSRD!]:X2X`FT+{H'Te_h[%y"&S8P<PrH_ ł8 ڡ#n\;QJrdD eWذ I!҄19prHtOՉ%aF$O[U geSŃ%FPyJKQ1ID%) "rx/EЧj&NQ S:py8_+BPaҀL(CNK'$Dytb0D$O[&qP>H#eS A%*e-D%,B␾)B9D%ND|RP @!@ &X`RI!ĉˇCRD#˧V& =o$OW(L㬊ugd J̣pVmm6LP<ĥX8}:X(CNK'$S"41Chc4CW cCBhcdO  Ǚm+\m3)Wy":ˎޕ^HA7L㬡H}SgdVӨ#?mIl<ןqQ+e@{x-BHmEHḷpViq:ޙYB#o H[N@,pRlRӬ3:dᓋ4l-Fy#`J pyv$3 # J@%X  ̃Č`|q(> @%3  ĀXHDx|LN%LRA(>aC1#2tys@o L-6J`JFhRFQ4$m !2:lxРq̒@:lGGHM8yĭ mq #\GH Pq P8VcM4 "#8(¤l.:lЄG lT#D&M8(¤`P)qX.h(0N4Aa%\a4 :\a4Ftys\Є*ysk%\/uO0NCdTY`$ YB#o Hu#˯D(0N<4JM<9eQR6ege C䍼"6Em:3˯D(0N<4JM<9eQR6e qP>)"J}'_%H&` 2ˈP'` 2(lHBgS8.:GX_0)P`y|h#yr4.!BsDB 4$m! 8Y4ϰ.aS<8*GQ48i\B;戄iIEHeB #Y%#mX &mIl<xN<4ӧѤ`y|4$m (AM8yƛH*FY%#mX >̣pVm2iIEHeB2,G2Li NFk 2(lHFAMH#eS+7$:yDl`!\"L㬡H|$FȭQF}u8qge C蒟`!]qDYqR:B8"L㬊ugW\D̶ y#+ȏ-BH(0dC6 P`!_Mi8hP8mEHl<C=m2NddO4B>̶FdW2o >̶(0d0@yy|4Ǚm̈>kT\[&T:;T X.-Ųꀔ\[,P/ˁ^ql0jEŰ @\[C P55(.-`G ` @f.-2TŰo, _S׾QE'C}N4 }:C/}N4}N4׾QkSCf}:/}N }: k}N }:}:׾Q29 ut>GuƆ:@=}Nѯ}NЋS4G uƅ>GGOuƀG~G=:@.?Qh/?9}N}Nƈ@:ɕƆ?O>bp>(%3Wq_`j/S>0wD}Ŀ1 U]~/L㬢Jk+` 8__\) 7Wq_= qo{qmO`׈SG 8OoˆcT]~+ *WBϋ+o˜|L[,+qlv 0NC9 '! ql|PS> #%)Kv ? 2*.Qp>(%T]~0>0%}N-9w9 <['699?}N-U3qwoϩˆc*<]VR¼ۅW`; S1A/+Qgb.`;ql?}N-`Kqlrо 8E6(>/Z(sOVRVc6wL|PK+h8/ſSm:}+D>(KTϩ #%)Kz7\EVRVleO˜t5w`x8t/ſ_Ŷ>^"}NQ%g`1> #%)K-Q aZJ6Z0L|PK0;Wq_m)}N-_StV x9D|PS%8Qq/9L}_QWq_l01X_g Z?"L|PK0 j+7@ꉟScℿL]4&ˆcUW uk+h o˜4 +/S> x2}NGK}NSp4 *+ VRŘ":/BY8S*+q3qo%}N-U3qw 9Kp>_r+ uk+:Wᠻ·L|PKx ǗgeWTR8y`@o}N-U3qwsӾ #%)Kd]}P *W)+/w> c_!-]}P#Eϩſ.4L88ql|PSp>_rAU]}Q *W|T_W d.}NA]}PĈ0N<> J[%gூD}Ŀ1 H*+TXdOVR~/+"wL|PK2⾨k 88'}NGK}NSpdW}Ǚm *W@w8|2> c_A6> 88 #%)KhUW{P Ɔ22pFq) ٙ\]PC.%$P{0#ɕEW*858W&W8[ \kT-ɕ3)`M+W3)4r2ߢL㬢J eSL㬢Jҹ2 srÃ_@W&W8[o S@m++-Cyy\ox R<4eU@wST 8ɕW*85Blh.ɕNeUM{tʀfW&W8[ʁ`U ;ɕkKeUB?}NP1a++-@RUx* c++-TLU^_>u}N`4 reyÅw0U reyÅC-W?{tqg++- +ʫ a.c++-nW*/p1:9/++-dU^7pkn`fW&W8[ òUyÁ@I,9\^_o6 PDUycY6 PreyÅ W*850ɕʫ :}NrA++-ù_+W02\6RUyÁ@S\reyÅ&ĮU^7pk˳r2]6r;.,L/pQ\o 2\8ҹUyÁ t˂\^_o.ـe+W2J pcU^_c`S\3r2ߢmPUycd>=m2L/p$pU4>>  $+BbJ D( L㤁%L㤁%nXH2ƈ2e&6F&Z @* %o8;>y#X#Q0#@#G̬<<<}ǙlT䈙L Bxge C䍼"6Q%?L㬡H|$Fˎge C䍼"6Em:3:%?L㬸qEm:3ePqQ+ePem2d2#z>L3'ym2Nd̞iyn mɜ<<7l(ZH#eSIu)6D3!F@.:Giu)6qR;DYB#o Hu#Iu)6qR;L㬡H|$FȭQF~YB#o H[N@ge C䍼"6Em:3Iu)648(RD3!IO&qP>)$:%?L㬸q\uԎ&q\uԎ&q\uԎ8"FgdVӨ#?DY4&qEm:3ePx-BHG2D(\m4x-BH2[-BH(O(D(\m䎲ePe#̣pVmm6LPqQ+e6&p(Qq[h#igSGyl2[-<7l(Qq[i-YeYeYeYeXђDK,,,,YeYeYeYe2,,YeYeYe,,VYeYeYc+,iuYeYeYeYeYsDk,,,,63`}&D+,,,,VYeYeYeYeYcFMYeYeYeYe,,VYeYeYc+,,,YeYeX,'kYB$uu#:ȭQF~>̶ y#<7l y#=mP#L[BoGiR2v&dO5mIl<|2[-3@z>}ǙFୖeG2VeRW"e3% )$:%?L㬸L㬸qEm:3Iu[N@Ǚm".6Ghget() ) { print $node->{name}, ": ", $node->{object}, $node->{value},"\n"; } print $odm->get(-q=>{name=>"nodeA", object=>"VERBOSE_LOGGING"})->{value}; =head1 DESCRIPTION This package provides a Perl-like interface for accessing and manipulating AIX ODMs. An ODM object is a 'handle' to a real ODM class so that arbitrary operations can be performed on it. The operations currently supported are: new -- creates an interface to an ODM class get -- retrieves data from an ODM class error -- returns the error from the last command, if any or undef. ODM data, as returned from 'get' is an array of hashes, where each hash contains the descriptor names as hash keys and descriptor values as hash values. =head1 COPYRIGHT (C) COPYRIGHT International Business Machines Corp. 2003 All Rights Reserved =head1 METHODS =cut ## # # Developers, # The Programming Perl (Camel) book, 3rd Edition says the use of # prototypes on methods are not honored. They are included for # documentation purposes only, and can be easily removed with no # loss of functionality or safety. # # Also, as the need exists, change the 'internal' document format # to POD. ## use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); use Symbol qw(qualify_to_ref); use Carp; require Exporter; @ISA = qw(Exporter); # AutoLoader ? # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( ); $VERSION = '0.01'; # Preloaded methods go here. sub stream2hashes(;*); sub buildquery(\@); # # Name: DCD # # Description: # Returns a string containing the PowerHA SystemMirror ODM Default Configuration Directory. # # Arguments: # None # # Returns: # DCD path # # Example: # my $dcd = ODM::DCD(); # sub DCD() { return "/etc/es/objrepos"; } # # Name: ACD # # Description: # Returns a string containing the PowerHA SystemMirror ODM Active Configuration Directory. # # Arguments: # None # # Returns: # ACD path # # Example: # my $acd = ODM::ACD(); # sub ACD() { return "/usr/es/sbin/cluster/etc/objrepos/active"; } # # Name: create # # Description: # Creates a list of ODM objects give a file containing the # the definitions of the classes. This is analogous to the # odmcreate command. # # Any preferences passed in as extra arguments will be applied # to all of the objects as well. # # Arguments: # $: filename containing the class definitions # @: optional named parameters # # Returns: # A list of created classes. # # Example: # my @classes = ODM::create( "classfile", ODMDIR=>"/etc/objrepos" ); # sub create($;@) { my $filename = shift; my %prefs = @_; my @results = (); my $ODMDIR = $prefs{ODMDIR} || $ENV{ODMDIR} || croak "ODMDIR not set"; open( PIPE, "ODMDIR=$ODMDIR odmcreate -c $filename|" ) or return (); while () { chomp; push @results, ODM->new( $_, %prefs ); } close( PIPE ); return @results; } # static function sub show { } # # Name: drop # # Description: # Deletes an ODM class given a valid ODM object. If the object is not # valid, this routine will croak. # # Arguments: # $ : the Perl object representing the ODM class. # # Returns: # The return code from the system call to drop the ODM. # # Note that the ODM object passed in still has valid data, but there # no longer be an ODM to back it up. References to this object # should be deleted. # # Example: # ODM::drop( $odm ); # sub drop($) { my $odm = shift; croak "drop argument must be an ODM object" unless defined( $odm ) and ("ODM" eq ref($odm)); return system "ODMDIR=$odm->{ODMDIR} odmdrop -o $odm->{_classname}"; } =head2 new() Description: This is the constructor for ODM classes. It takes the name of an ODM class with optional parameters and 'ties' the class with a new Perl object that's created by this method. Arguments: $: an instance of an ODM class. @: optional parameters Returns: A new object used to represent the ODM class. Example: my $HACMPcluster = ODM::new( "HACMPcluster", ODMDIR=>"/etc/objrepos" ); =cut sub new($;@) { my $proto = shift; my $class = ref($proto) || $proto; my $self = {}; my $classname = shift || croak "argument 'classname' is mandatory"; my %args = @_; $self->{_classname} = $classname; $self->{ODMDIR} = $args{ODMDIR} || $ENV{ODMDIR} || croak "ODMDIR not set"; return bless $self, $class; } # dump # utility function to write the ODM data to a file handle sub dump(*@) { my $self = shift; my $fh = qualify_to_ref( shift, caller ); my ( $key, $value ); foreach ( @_ ) { print $fh "\n".$self->{_classname}.":\n"; while (( $key, $value ) = each %{$_} ) { print $fh "\t$key = $value\n"; } } } # # Name: add # # Description: # Adds a stanza to the ODM object. The parameters to add must a hash # which contains field/value pairs that would comprise a complete # stanza for the ODM class. # # Arguments: # @: A hash representing a stanza to add to the ODM class. # # Returns: # The return code from the system call to add the ODM stanza. # # Example: # $HACMPports->add( # node => "myNode", # tty => "/dev/tty0", # ); # sub add(@) { my $self = shift; my ( $key, $value ); open( PIPE, "| ODMDIR=$self->{ODMDIR} odmadd" ) or return (); $self->dump( *PIPE, @_ ); close PIPE; # TBD add return code handling!! } =head2 error() Description: Returns the error from the last operation, or undef if no error. Arguments: None Returns: A string representing the error encountered, or undef, if successful. Examples: $HACMPport->get(); if ( $HACMPport->error() ) { die "Error encountered: " . $HACMPport->error(); } =cut sub error() { return $_[0]->{_error}; } =head2 get() Description: Returns a list of hashes containing the results of the query. The arguments for the query can be one of: -q => "string containing query" -q => { queryterm1 => value, queryterm2 => value } # they are ANDed -q => ( queryterm1 => value, queryterm2 => value ) # they are ANDed undef # that is nothing, in which case the entire ODM is returned. If there was an error encountered while performing the operation, the error status will be set; the error() method can be used to detect it. Arguments: @: A hash representing the query; please see the Description for how to form a query, or the examples below. Returns: The results of a query as a list of hashes. Examples: $HACMPport->get(); $HACMPport->get( -q => "tty = /dev/ttyS0" ); $HACMPport->get( -q => {node => "myNode"} ); =cut sub get(;$) { my $self = shift; my $QUERY = buildquery( @_ ); my @results = (); # clear the error state delete $self->{_error}; if ( ! defined open( PIPE, "ODMDIR=$self->{ODMDIR} odmget $QUERY $self->{_classname} 2> /dev/null |" )) { $self->{_error} = "$!"; return (); } @results = stream2hashes( PIPE ); close PIPE; return @results; } # change: # [ -q => "string" | -q => { key => value, ... } ] # list of references to hashes sub change { my $self = shift; my $QUERY = buildquery( @_ ); open( PIPE, "| ODMDIR=$self->{ODMDIR} odmchange -o $self->{_classname} $QUERY" ) or return (); $self->dump( *PIPE, @_ ); close PIPE; } # # Name: delete # # Description: # Returns the count of stanzas that were deleted from the ODM. # The arguments for the query can be one of: # -q => "string containing query" # -q => { queryterm1 => value, queryterm2 => value } # they are ANDed # -q => ( queryterm1 => value, queryterm2 => value ) # they are ANDed # undef # that is nothing, in which case the contents of the entire # # ODM is deleted. # # Arguments: # @: A hash representing the query; please see the Description for # how to form a query, or the examples below. # # Returns: # The number of stanzas that were deleted. # # Examples: # $HACMPport->delete(); # $HACMPport->delete( -q => "tty = /dev/ttyS0" ); # $HACMPport->delete( -q => {node => "myNode"} ); # sub delete { my $self = shift; my $QUERY = buildquery( @_ ); my $count; return system "ODMDIR=$self->{ODMDIR} odmdelete -o $QUERY -q $self->{_classname}"; open( PIPE, "ODMDIR=$self->{ODMDIR} odmdelete -o $self->{_classname} $QUERY |" ) or return (); while() { if ( /\s(\d+)\sobjects deleted/ ) { $count = $1 } } close PIPE; return $count; } sub stream2hashes(;*) { my $fh = qualify_to_ref( shift||"STDIN", caller); my @result = (); my $hash; while(<$fh>) { chomp; /^\s*$/ and push @result, $hash; /^\w+:/ and $hash = {}; /^\t(\w+) = "?([^"]*)"?$/ and $hash->{$1} = $2; } push @result, $hash; shift @result unless ( defined $result[0] ); return @result; } sub buildquery(\@) { my $array = shift; my $QUERY = ''; if ( defined ($array->[0]) && $array->[0] =~ /^(-q|-query)$/ ) { shift @{$array}; $QUERY = '-q "' . hash2query( shift @{$array}) . '" '; } return $QUERY; } sub hash2query { my ( $key, $value ); my $result = ""; my $hash; if ( ref($_[0]) eq "HASH" ) { $hash = $_[0]; } elsif ( 1 == scalar( @_ ) ) { return $_[0]; } else { my %hash = @_; $hash = \%hash; } if ( ($key, $value) = each %{$hash} ) { $value =~ s/'/''/g; $value =~ s/^\s*"(.*)"\s*$/'$1'/; $result = $key. " = " . $value; } while (( $key, $value ) = each %{$hash} ) { $value =~ s/'/''/g; $value =~ s/^\s*"(.*)"\s*$/'$1'/; $result .= " AND " . $key . " = " . $value; } return $result; } sub parseclass(;*) { my $fh = qualify_to_ref( shift||"STDIN", caller); my %hash; while (<$fh>) { /(char|vchar|nchar|longchar|binary|method)\s+(\w+)\s*\[(\d+)\]/ or $hash{$2} = { type=>$1, size=>$3 }; /(short|long|long64|int64|ODM_LONG_LONG|method)\s+(\w+)/ or $hash{$2} = { type=>$1 }; # /link (\w+)\s+(\w+)\s+(\w+)\s+(\w+)\s*\[(\d)\]/ # or $hash{$5}= {type=>"link"}; } return %hash; # char DescriptorName [ DescriptorSize ]; # # vchar DescriptorName [ DescriptorSize ]; # # binary DescriptorName [ DescriptorSize ]; # # short DescriptorName ; # # long DescriptorName ; # # long64 or int64 or ODM_LONG_LONG DescriptorName ; # # method DescriptorName ; # # link StdClassName StdClassName ColName DescriptorName ; # } # Autoload methods go after =cut, and are processed by the autosplit program. 1; __END__ QUER k/o.םaW՝a֝a&.bm./usr/es/lib/perl/DataWriter.pm# @(#)86 1.4 src/43haes/lib/perl/DataWriter.pm, hacmp, 61haes_r714 3/21/06 16:42:30 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/perl/DataWriter.pm 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2003,2006 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG package DataWriter; =head1 NAME DataWriter - Perl extension for displaying complex data structures =head1 SYNOPSIS use DataWriter; my $xmlWriter = DataWriter->new(); $xmlWriter->addSortingRule( "CONFIG", [ "CLUSTER", "NODES", "NETWORKS" ] ); $xmlWriter->writeToXML( $cluster, \*STDOUT ); =head1 DESCRIPTION This package can be used to write out a complex Perl data structure in a number of formats. Currently, the supported formats are: XML The format of the data structure can arbitrary: a hash of hashes, a hash of arrays; an array of hashes or anything with no limit of depth. There should be no circularity, otherwise the writers may go into an infinite loop. =head1 COPYRIGHT (C) COPYRIGHT International Business Machines Corp. 2003 All Rights Reserved =head1 METHODS =cut ## # # Developers, # The Programming Perl (Camel) book, 3rd Edition says the use of # prototypes on methods are not honored. They are included for # documentation purposes only, and can be easily removed with no # loss of functionality or safety. # # Also, as the need exists, change the 'internal' document format # to POD. ## use 5.006; use strict; use warnings; use Carp; require Exporter; our @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use DataWriter ':all'; # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK # will save memory. our %EXPORT_TAGS = ( 'all' => [ qw( ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw( ); our $VERSION = '0.01'; # Preloaded methods go here. =head2 new() Description: new() is the constructor for the DataWriter. This allows the developer to separate data from its presentation. XML, as an output format, specifies that entities be written out in a particular order. This DataWriter allows the developer to specify 'rules' as to how hash structures should be sorted when writing out the data. Arguments: This constructor supports named parameters; the following are supported: Indent_text: the text to use to indent the text; by default it is four spaces Show_nonexisting_tags: if 1, tags specified by a sorting rule but having no data will be printed. Returns: A new DataWriter object. Example: my $xmlWriter = DataWriter::new(); my $xmlWriter2 = DataWriter::new( Indent_Text => "\t" ); =cut sub new($;@) { my $proto = shift; my $class = ref($proto) || $proto; my $self = {}; my %args = @_; $self->{_indentLevel} = 0; # the indentation level $self->{_sortRules} = {}; # used to store the rules $self->{_indentText} = $args{Indent_text} || " "; $self->{_show_nonexisting_tags} = $args{Show_nonexisting_tags} || 0; $self->{_show_null_values} = $args{Show_null_values} || 0; return bless $self, $class; } =head2 writeToXML() Description: writeToXML() is the method for writing the complex data structure as an fragment of an XML document. Currently attributes are not supported. It is up to the calling program to write out the XML declaration, DOCTYPE declarations, and so forth. Arguments: $: a reference to the compound data structure (hash of hases) $: (optional) the filehandle where the XML document will be written. If not specified, standard out will be used. Returns: 1 if successful; 0 if there are errors (file I/O). This routine will use Carp to write out the errors. Example: $xmlWriter->writeToXML( $cluster, \*XMLFILE ); =cut sub writeToXML($;$) { my $self = shift; my $data = shift; my $fh = shift || *STDOUT; return $self->writeArrayToXML($data, $fh) if ( ref $data eq "ARRAY" ); return $self->writeHashToXML($data, $fh) if ( ref $data eq "HASH" ); Carp::croak "Not a compound data structure $data"; return 0; } =head2 addSortingRule() Description: If part of the compound data structures are indeed hashes, the programmer can use addSortingRule() to specified the sort-order of the hash data structure. Hash structures without sort rules will generate XML with no particular order associated with it. Arguments: $: the entity with which a rule will be associated. \@: the list of indices for the hash structure that will be used for for sorting. Indices not specified will not be listed. Indices which no data corresponding will be listed if the Show_nonexisting_tags parameter was specified when the DataWriter object was created (see new). Returns: Nothing. Example: no strict 'subs'; $xmlWriter->addSortingRule( CLUSTER, [ "META:DEBUG", VERSION, VALIDATED, CLUSTER, NODES, NETWORKS, IPLABELS, INTERFACES, GLOBALNETWORKS, APPLICATIONS, APPLICATIONSERVERS, APPLICATIONMONITORS, SITES, CLUSTEREVENTS, NODETTYPORTS, PAGERS, DISKS, VOLUMEGROUPS, LOGICALVOLUMES, NFSEXPORTS, TAPES, TIMERS, RESOURCEGROUPS, PROCESSINGORDER, SETTLINGTIME ] ); use strict 'subs'; =cut sub addSortingRule($\@) { my $self = shift; my $tagname = shift; my $indices = shift; $self->{_sortRules}{$tagname} = $indices; } # The following are not documented with POD since we do not want them in the # resulting documentation. # Name: pad # # Description: # Internal method for returning the proper amount of indentation. # # Arguments: # None. # # Returns: # a string containing the spacing for indentation. # sub pad() { my $self = shift; return $self->{_indentText} x $self->{_indentLevel}; } # Name: writeArrayToXML # # Description: # An internal routine for writing an array out as XML. # # Arguments: # \@: a reference to an array to be written out. # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if successful. # sub writeArrayToXML(\@;$) { my $self = shift; my $data = shift; my $fh = shift || *STDOUT; my $rc = 1; foreach ( @{ $data }) { $rc &&= $self->writeToXML( $_, $fh ); } return $rc; } # Name: writeHashToXML # # Description: # An internal routine for writing a hash as XML. # # Arguments: # \%: a reference to an array to be written out. # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if successful. # sub writeHashToXML(\%;$) { my $self = shift; my $data = shift; my $fh = shift || *STDOUT; my $rc = 1; for my $key ( keys %{$data} ) { $rc &&= $self->writeTaggedDataToXML( $key, $data->{$key}, $fh ); } return $rc; } # Name: writeTaggedDataToXML # # Description: # An internal routine for writing out compound data structures as XML. # # Arguments: # $: the tagname # $: the data. Currently only is allowed are scalars, references to # scalars arrays and hashes, or nothing (empty entities will be printed). # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if there was no errors in printing, and the data was what is # supported. # sub writeTaggedDataToXML($$;$) { my $self = shift; my $tagname = shift; my $data = shift; my $fh = shift || *STDOUT; return $self->writeTaggedArrayToXML($tagname, $data, $fh) if ( ref $data eq "ARRAY" ); return $self->writeTaggedHashToXML($tagname, $data, $fh) if ( ref $data eq "HASH" ); return $self->writeTaggedScalarToXML($tagname, $data, $fh) if ( ref $data eq "SCALAR" ); return $self->writeTaggedNullToXML($tagname, $fh) if ( !defined $data ); return $self->writeTaggedScalarToXML($tagname, $data, $fh) if ( not ref $data ); Carp::croak "Not a compound data structure $data"; return 0; } # Name: writeTaggedScalarToXML # # Description: # An internal method to write out a scalar. # # Arguments: # $: the tagname # $: the scalar data. # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if there were no errors in printing. # sub writeTaggedScalarToXML($$;$) { my $self = shift; my $tagname = shift; my $data = shift; my $fh = shift || *STDOUT; my $endtag; ($endtag) = $tagname =~ m/^(\w+)/; return print $fh $self->pad(), "<", $tagname, ">", encode( $data ), "", "\n"; } # Name: writeTaggedNullToXML # # Description: # An internal method to write out an empty entity. Currently, the # the format is , as opposed to the format. # # Arguments: # $: the tagname # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if there were no errors in printing. # sub writeTaggedNullToXML($;$) { my $self = shift; my $tagname = shift; my $fh = shift || *STDOUT; my $endtag; ($endtag) = $tagname =~ m/^(\w+)/; return 1 if (!$self->{_show_null_values}); print $fh $self->pad(), "<", $tagname, ">", "", "\n"; } # Name: writeTaggedArrayToXML # # Description: # An internal method to write out an array as XML. # # Arguments: # $: the tagname # $: a reference to the array to be written. # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if there were no errors in printing. # sub writeTaggedArrayToXML($\@;$) { my $self = shift; my $tagname = shift; my $data = shift; my $fh = shift || *STDOUT; my $rc; my $endtag; ($endtag) = $tagname =~ m/^(\w+)/; $rc = print $fh $self->pad(), "<", $tagname, ">", "\n"; $self->{_indentLevel}++; foreach ( @{ $data }) { $rc &&= $self->writeToXML( $_, $fh ); } $self->{_indentLevel}--; $rc &&= print $fh $self->pad(), "", "\n"; return $rc } # Name: writeTaggedHashToXML # # Description: # An internal method to write out a hash as XML. If the indices have # been specified as part of sorting rule, then these will be used. # NOTE: I am intentionally blurring 'keys' and 'indices' because in a # sense we are treating a hash as an array by indexing it. # # Arguments: # $: the tagname # $: a reference to the hash to be written. # $: (optional) a filehandle. By default it's STDOUT. # # Returns: # True if there were no errors in printing. # sub writeTaggedHashToXML($\%;$$) { my $self = shift; my $tagname = shift; my $data = shift; my $fh = shift || *STDOUT; my @keys; my $rc; my $endtag; ($endtag) = $tagname =~ m/^(\w+)/; # Load up the indicies (sort rule) if found. if ( defined( $self->{_sortRules}{$tagname} )) { @keys = @{ $self->{_sortRules}{$tagname} }; } else { @keys = keys %{$data}; } $rc = print $fh $self->pad(), "<", $tagname, ">", "\n"; $self->{_indentLevel}++; for my $key ( @keys ) { if ( $self->{_show_nonexisting_tags} || exists $data->{$key} ) { $rc &&= $self->writeTaggedDataToXML( $key, $data->{$key}, $fh ); } } $self->{_indentLevel}--; $rc &&= print $fh $self->pad(), "", "\n"; return $rc; } # Name: encode # # Description: # An internal, static method to encode the string. # Currently all less-than and greater-than symbols will be translated # to < and >. # # Arguments: # $: the string to be encoded # # Returns: # The encoded string. # sub encode($) { my $string = shift; $string =~ s//\>/g; $string =~ s/\&/\&/g; return $string; } 1; __END__ $ k.|o$lםaW՝a֝a&lbm./usr/es/lib/perl/MsgCatalog.pm$$# @(#)46 1.2 src/43haes/lib/perl/MsgCatalog.pm, hacmp.libcluster, 61haes_r714 11/28/11 15:09:48 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/perl/MsgCatalog.pm 1.2 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2004,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG package MsgCatalog; =head1 NAME MsgCatalog - Perl extension for handling access to AIX message catalogs =head1 SYNOPSIS use MsgCatalog; my $cluster_cat = MsgCatalog::new("cluster.cat"); $cluster_cat->dspmsg(1, 5, "PowerHA SystemMirror"); my $utilities_cat = MsgCatalog::new("utilities.cat"); $utilities_cat->dspmsg(1, 27, "Could not detect node (%1\$s).\n", "$nodename"); =head1 DESCRIPTION This package provides a Perl-like interface for accessing AIX message catalogs. A MsgCatalog object is a 'handle' to a real message catalog so that arbitrary messages can be output. The operations currently supported are: new -- creates an interface to a message catalog dspmsg -- retrieve a message from the catalog =head1 METHODS =cut use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); require Exporter; use Carp; @ISA = qw(Exporter); @EXPORT = qw( ); $VERSION = '0.01'; =head2 new() Description: This is the constructor for MsgCatalog objects. It takes the name of an message catalog and 'ties' the catalog with a new Perl object that's created by this method. Arguments: $: the name of a message catalog @: optional parameters Returns: A new object used to represent the message catalog. Example: my $catalog = MsgCatalog::new( "cluster.cat", LANG=>"en_US" ); =cut sub new() { my $proto = shift; my $class = ref($proto) || $proto; my $self = {}; my $catalog = shift || croak "argument 'catalog' is mandatory"; my %args = @_; $self->{CATALOG} = $catalog; $self->{LANG} = $args{LANG}; return bless $self, $class; } =head2 dspmsg() Description: dspmsg() retrieves a message from the object's message catalog using the AIX dspmsg command call. Arguments: $: a reference to the catalog object $: the message catalog set number $: the message number $: the default message @: one or more replacement parameters for the message (optional) Returns: none (the message it output to stdout) Examples: $clstr_cat->dspmsg(1, 5, "PowerHA SystemMirror"); $util_cat->dspmsg(1, 27, "Could not detect node (%1\$s).\n", "$nodename"); =cut sub dspmsg() { my $self = shift; my $set = shift || croak "argument 'set' is mandatory"; my $msg = shift || croak "argument 'msg' is mandatory"; my $default = shift || croak "argument 'default' is mandatory"; my @paramlist = @_; my $cmdstr = (($self->{LANG}) ? ("LANG=" . $self->{LANG}) : "" ); my $params = join ( " ", map { "\"$_\"" } @paramlist); my $cat = $self->{CATALOG}; $cmdstr = "$cmdstr dspmsg -s $set $cat $msg \"$default\" $params"; system("$cmdstr"); } =head2 getmsg() Description: getmsg() retrieves a message from the object's message catalog using the AIX dspmsg command call. Arguments: $: a reference to the catalog object $: the message catalog set number $: the message number $: the default message @: one or more replacement parameters for the message (optional) Returns: The resulting string. Examples: $msg = $clstr_cat->getmsg(1, 5, "PowerHA SystemMirror"); $msg = $util_cat->getmsg(1, 27, "Could not detect node (%1\$s).\n", "$nodename"); =cut sub getmsg() { my $self = shift; my $set = shift || croak "argument 'set' is mandatory"; my $msg = shift || croak "argument 'msg' is mandatory"; my $default = shift || croak "argument 'default' is mandatory"; my @params = @_; my $cmdstr = (($self->{LANG}) ? ("LANG=" . $self->{LANG}) : "" ); $cmdstr = "$cmdstr dspmsg -s $set " . $self->{CATALOG} . " $msg \"$default\" " . join ( " ", map { "\"$_\"" } @params ); open( MSG, "$cmdstr | " ) or return undef; my @retval = ; close MSG; return "@retval"; } # this is a module, so it must end with a plain 1. 1; __END__ 1 # l4ko*םaW՝a֝a&bm./usr/es/lib/perl/libcl_disp.pm   #e $ainorst_cdflmpu"().;=N[]bghy'-/01:@AEIOPRSvw{}&+,23BCDFGHLMTU`kq46>W\x| 59vl.jR* k]`apxq{f=`dܥy>! b(  kM$59c+աup|/N<)+hc2jrp8H%c|nS7D0h2yATAO6Aa,K]z* 8&&UUUUUUUUUUUUUUUUUUUUUUUUUUUUUKS'=#t$k'Rq&ssYM8?3t]mzܓ8t$y]UUUUUUUUUUUUUUUUUUUUUUUUUUUUU-j4Lޓ:JZՍa0#MFml*Grexrt9ɭuVWqq$Vᅮiς+8ZՕM!@Eņxșktogq&!Q< ()Dą 0F7#K|zJwGA>Z"s;->'9﹍!cP栄WyǤq_"sTP"tL&N'5E4fGAAepљNjNF;NGAAeS8=|Εi܎'5E'D6r>.RgAएD樢qqrM1iH"sTP"tLNi4ŤD\F}LZKNtNj/N8i+k;:jGggAIYN*bSl"q+)W)vt9B)vt9ϝk;:"_D模D_# 9(t:&W{R=T;5$5q_HRlԒ'L^.]3e`z6v,)9jI@j=2/FKE%ςr0QC2MҸ89&8I-|l8HŌͳqR01`ojn=\=%e;Vk`@L/` _Jb$Q ` *E`PLL_Bb`(00,0 A`PQEX_ A1R$(22&88 *   /!A0xPx@Pd&p4"(p0\(FD'EAQ8u$(22&8(2(0pȸ0T*( _B#"`C@TPB"EVSjv@jԒ88f'Jm@qJqLN;_IYN36VSbSlMQI/@VYVka+j ͳ/IB 6&R0ryB 6&E%X!rDME$)MfQRr,ؚ/JWbZbҐ"j)% "j)%x 3!dDRKE\vQI/I`=|n#N>,I5&W$0f@bj()\F}36 _#Jğ,S/,Tx%N|(,X!k}n HYUB2_cpZBȌF}ZbҒĜQi36 6VZĜf _ͳ/I1D,36$N"j)%Rr+`PPp"A`ĥqq*QI/c5T"Ԓ^6؋RHO Yk]c*zzMf>[c{jw(\w?4s5f9Jk9Zgd05Sz0cr4AIJsрţ挽5`AIJsрţL@ "MrT!r98$\1GA>Y&*c{S|( 05S:O c\17'9C &*cjHI-)NjN ak7(t:Wg$&*c}n Ni4ŤAIJӃ8FGAD䩌N8i+d$%LrggAHҔ♘"MrT)vt8$\1SggAIYN@5SD $%LrggAQiA"MrT)vt91D,A"MrT)vt9(t:&H1IJ.G) 9Y'5E'D05SD\F}LZDD䩎qkgdD䩎qkg`e8&'9ă\1n<k5# 6&*cB>dDc & E VQHÞzJwֺIYN4KT"  p a O`Px R"L&'I6vc@QEX@HS ipՆ\R` a{O0Y+)yM.Pv bc0 &T( X)!j$%40&X  bASB"#' cܚa+ 7>^Y+)y\F}loipՏ&5{ 3QsZzMMa+3MVV3QMAY5z5 loMYO1|=(1q<\2 5)5RlR762]bRzj9( l<1l-PA#cc3l5XRzj9cRr$c@nQ&X**8dX(0 &5r =&ųt-^f@o7l8>5q%nGM|\jxbJ/F j{f>[q湚atԜ%X=%e;VdRHҔ♘)vOؔjGMkzJwvO a+)FU1)vMkؔjE`jvMkĚ&+I8=ӄd,Hq' ,ؚ_$0f@bj(Oq' #I IlME एfPq&;5XJFNA2V\fPq$ZP!dDRDcJ4U@LZRDME$Oĥqq*;? }n HYӏLZR&+JWbHY55XCFd,Hq#&d,Hq$\ܧiY55XHSA3qq!dDRDָ+IBʵ;? |w"V8X4q'>wZ}lc9fml$"" dO }n ͳ_$$ 6VY5#|nPV'f0UMH$r\M &+$5qMpV;jIiax$ָ+I!zLxkĞG#^S<ꪪuyt"]l[;].mI]5o9]i!l[8Dסk~8FYN<-r&ub̹sz5|<3MeE|ᘾp [tI"_5z*|^eVQY򰺶,0D3k_ZNMӄe7 0᜜eD۞gϔ Zۦi_ᅃ6 0f6 /EQӾ!Fųw?1sy-teTuËw=Eg1i, _+Ql.j6-"EuËK9;7<稬-'& P]3M $behsVo`IueTS_frWUUUUUUUUUUUUUUUUUUUUUUUUUUK9=5`1hh/҃wݡEnl1s~0`,HT'[7jFlKXIF7#@%zj9,\5X9W7A+=5`1hh/MG=.X6|\XLr]jwVz.J>6ꪪrT'-܍4e "8Sl؀!5o`PPp@SaŃ˓_a8Ԍ 9y$* y5y+)C%f;ȒG|&i3\nj`BNY+)tMYO|&^%\or|jnKтA;cz08f\5z_ ^3Wܴafsц7a(@,фw?Bo`0"  * yLx Q   I Q!@B1!EʃLx Q   I Q!@B1 I!Bɯ3{ʃLjI$ $ H$ H@y5o`2LjI$ $ H$ $ <7`pLL&(p,`L0!LjI$ $ H$ $ <7LcceA)$ $$$ $ $ HH@$$ !qRc1Ihsy<-#;/iU$o43VS\F}˷V,Ur #2T$.*T,pP'rIf/ԙסbIf5|&5q-<4Sr9e`PPp@$ֿ_`3W>5z WKN =0`H\&2(ܓqF?dm8N JJѭEʃ**8X(' & Etr=(g썧 X!xPPp5L 80&Tp`PPp@=0`H\&2(ܓqF?dm8N JJѭ`h p,`L0!>!qRc2{`,LdP9Y'M ҍV~p  a[ʃ**8X(' & Etr=(g썧 X!xPPp5`PdXP`C}%BBA d!pXȠrrNAǥ;+/**F   02T$.*T,pP&O`@L+7$zQ*NB!qRl4kaQ@,0ʃ**8X(D`9Vs1kITX(M_@7 YςDq*& Bk_nj1P(McUxOMG= Z1.h$=4*].mI].8U;|"*?3WY\|mUUUUUUUUUUUUUUUUUUUUUUUUUR䩎OMG= Z1.h$=4* #U6- _f  , 6X<5'N卹$+CFmV.odZ U2kdZ U<̄Z085qr.=tg+Ѕڔm tNJaQFidZ U1GȵA3yMϙ`p9kZ>6i䯜8f> נ**8d0*.cæzj9M6L^9\/ [p#dH\T8X`LykR.|pO@a H\p=T y5>x8\'`@L 0̸4Þy5>x8\' EF 0 & E\p< xkR.|pOKX * 3H=Ð窒@KǓ_s烅xgaaP@i<`P*0( 8   &  Aa1QbKǓ_s烅xg1@iAAdPddTX1PP' (*0( 8 A%ɯHx8\'X * gXg,5#ivV^{cp[}%BBA `KǓ_BV@."M7)di8!%BBA Ecȓ_v**8d0*.D/|ݡ8r܏3Wӄ|VPIYN4] /TwOA<2`f`PPp@m%Rf nK4ѫq7𙫎!kr$0c2T$.*T,pP&?"8#^>n/)_Mɯu꨿2!qRcA1IuD1*ip՜!dG~R` &_L":]`^|.G9t#&\I&"@!r,\ԋd!dIX|Xꪪuyt"sqE܎|.X6|\.jۤO<^Op~u!k'*oW_8yqjv\1GA>Y_f'>wZ}Ț7B,\фm79BGŀTG^S:y l=$N|$Hd{/A 0MGHd{ |8 aX/qbN|(#aX.M)^8"C ,/_cl| _}ǑQYĜQi F,&uD1ϝr,\ԋMcUxN΂'9t#&X#c;->iJ@*29LHz7*2y5Fy3{=$H,osrQ'Lp69D59/A 0MGHdX/B`6Az%b9Dqs,\W;RqDAz%1~,dXKO9ŀP `a@*0Zf9; 1&@(DA|(9N s,\Dq`P `b@(6S& @((XG ` Dq`75bz%˓XX_ԋwZ}Fy3{=$H,osrQ'Lp69D59/A 0MGHdX/B`6Az%b9Dqs,&_!c`Q~ GHdX/B`6Az%a}|(#_njKɯu㽥+HdX/B`6Az%a}|(#_C)_0Zf9C 15# tzGHdjG=1r9*25LW:#b0U`S"8Ջ9_W:EϞ2 aT$r3Iȑ, 8%@QR7>wZ} JrBa %sqE{,xTWUUUUUUUUUUUUUUUUUUUUUUUUUUKϛcpX"s9!܏X\^"6[,, 1x BxɹN :1Hlӏ5;->fK'*oW_8yqjvań ~6nR]UUUUUUUUUUUUUUUUUUUUUUUUUU.JsBAAc/3{/)ɯ3{Sań _`E)皳еV7gs5{z;->;|#z pj6iǚ27g8Ջ#m<֙| Rr$GS799(@8CD܉ Kb>Y 1D _(G"8Ջ9&HB`A*NFy)9=eAXx+**T#O0N\^r $~=P~=<*McUx)#IYN]`ۑrt"n>5{ڝ˂;RKj$7A]/@O7)a'F0uʩ!]UUUUUUUUUUUUUUUUUUUUUUUUUU.Jڢ:8$/3xTRYL*0$. VnIu8#XiD0By&$5O5ocTS $s!sk2 j'75bI)"k]UUUUUUUUUUUUUUUUUUUUUUUUUU.r>nW_#QC2]`ۑrt"k-7fjIo.f=;LK#j$7Ar>1.XLr]vj$7Aڝqa\ukL$!raV!pXȠrrNAǤff*avD!r _栚Țфm >\L%4rQ'Lфr OcSeM5 pDq+#Xng>\&:O5odng>^@J73.Dq ͮ|273,nW_Fdt9(t:&WKr>.RnW_5bmtfJyU%RlۦkkN=t]bq2vEuË(ljvań 3ꪪrT4fGAAdDql8yrkLșl8rkJ-_P=bG_ 0L Q3ojvPB!CAq@L Z܉Da|yQbȎ/75b3xљ_òU0`H\&2(ܓq%(ܰ쉜 %`^zQIPMM_f!2rQ'O Á"M皂jbCFdM6i4g $4fDq ͮ|0hxsV/ĆȚWUUUUUUUUUUUUUUUUUUUUUUUUUUKϛ4fGAAet#&.RnW_5bmtfE\vP=͝tm~IǶnKN&UN9q`;_Eq훠N_8q&w;]UUUUUUUUUUUUUUUUUUUUUUUUUU.JrW#r#QC2A"8je6X<5odL6X@5ږÉ(Ա#AV&f熅cT(ș7;( 8LP$? BAXaRk_ ș/*,TPy_oFD:`@L+7$zIJ7,4;"ga@6T5q5oFYNJ$8p#aIPMLI_0Zf#FDq ͮ|1$_#"k]UUUUUUUUUUUUUUUUUUUUUUUUUU.r>nW_S8=|Εi܎'5E'DunGMxb_-N#bSσgϕiܗ_픠{;Ctmڢ8zuʩ!,\GkN=t.#kS->}3qq#QC2A"8je6X<5odL6X@5ږÉ(Ա#AV&f熅cT(ș7;(&* 1bE3EH0Pd~r>¤ֿ"A3_TX#XL$:`@L+7$zIJ7,4;"gaD0By&É3{?)Dz(lXLr]vj$7Aڝ%Lrc9)3QB "87AV&f熅;(Ë`#W5od)Xbc":nRk =,_՞' @D*M皂jl_ \d̉5_SlfMcUxS>.RgA )7A+񋚱|F8s5|9)>z(lXLr]vj$7Aڝ%Lrr: #3xO)`fnxh_{S8y| & 5q _fJpS)Xbc":nRk =,_՞+ @D*M皂jl5ϙJpP5_S:]`^|qqrM1iH"sTP"tLX6|\.jۤO<_+ӏ&]Eq훠SB+X¤ֿR8ť"kLɦ#N>-1iHH2&{ ʋDqiE-)/Ǖ*(-1i'75bJWaMcUxNi4Ť]`ۑrt"˙EnRWzM1i.XLr]v8iIuUUUUUUUUUUUUUUUUUUUUUUUUUT*crAqqrM1iaO4@H"8 JiN l85M5 /i8 dPy~X<$G~ɦ`5uEϞ2 aT$r3Iȑ, \x L`PxV#N>bAe^4gq$~=.<*McUx1D,t:Wg$unGMxb_.f}n s6iǚۨǪbi*/b҃teT.#iޓLZKScpX"t#N>I-" "8ai Rr$GS7M52I !&# ɦa8G j/_ËDsV/4, .M_s猄U (>.Rr${g**T#+ӏ&f6hW:Y+)I/aŃˏ Xꪪuyt"NtNj.X6|\.jۤO<^IǶnN=V6#TQ'ٺ].8U;|"aŃˈ~IǶn;]UUUUUUUUUUUUUUUUUUUUUUUUUU.JӃ8FGADql8yrkJ-_P=bGZ 0L ȰP`(pLXQPס5%l0$.!RkaL*0$. VnIu8#XiO ~ƨ<5 @D*M皂jl87'pI`pFÈ_栚p{Țфm78=ӄrI#"8B>d$IXNtXꪪuyt"3s98=ӄNjJunGMxb_.fjJ)65x@LNt&FۨǪcpסs+;].8U;|"aŃˈӃ8G{S, \Gsа)uUUUUUUUUUUUUUUUUUUUUUUUUUT*c3s98=ӄNjJ078=ӄr,\7BË&{Rq5ږ$q5( S о=8=ӄJ18=ӄv N1\aY & pT71¬ B1@f7\I)5E'pkD0/=Ysа+ @D*M皂jlLi_ \bcMH5_1McUxSl"rP=zRS3܏XX7 X礬qqq-Vkǹ>n ].8U;|"|k/ I75bi+r]c|5cX=V=rT)vt9(Ԏ=)N)#=)ܢ5¡aa@f0$. VnIu8jrzRS3A5O5obN}JF7(_s(<LN.SJڃg4ܔiA56$5oje9(9D܉ j/_zRS3Ap0 ɦ`Q~7 X$G~0`LT_W~R` &UUUUUUUUUUUUUUUUUUUUUUUUUR*xL(01P#'"GxlH+%@QR(JBqMϼ<٫"@KDžI75bk_WUUUUUUUUUUUUUUUUUUUUUUUUUUKϛ1)vt8+ )7A+񋚱|J;3WteT}X%'JՋ񦤭EuUgmX_)V=ua+c]cgS1)vt8$/3xPфm %'/JiN5&ǞeS3lx#r9M5 K ` Dq bARk_'#dP$P _njFBb`5ғ2iX_(SH/75b!10XDPWiI4, /))_P``X`WiI4, /)@sV/0( *_ԋYVr,ȗ"8"A36Y/)H/75bArk_'"A36Y/)G~hTWiIȐcͳdK `I_QRk_'"A36Y/))_"(&EJɯuEϞ2 aT$r3Iȑ, lx L`Px`3l`+=>chcf5& M@Kq`¤y5ucUxSl"s;->Kr>.RnW_5bs5|vsqE,!].8U;|"aŃˈ/{S, \Gk>wZ}jwl %#ȮX%'JՋ񦤭EuUAzx=W\1mNsqE07B,\7ϝyM.MΙ/)_ )P"s;->0 8p@$F 94nn 0Uh;)DYF.Kf %@Ԝi+{e'}^OP_s4{_YZM>#,T_jF"K+#XPB29*5(M, Dpqkr$vǒ$H~l; À_> r;->ֿsqEVyL gAQiAOF=܎F $VF';WONɬO4@JOMG=_f)S:xp , $MD&ǵ"ZbDqD&ˑ_&'p<885 j/_c;->ʵ;"89L=MB)rLj2iX.IMB\y5LW: j/_E-!GH2iX _&Py#Ã_ ɦ`/_c;->ʵ;"89L=MB4, .IMB)rLjǓ_Mɯu_WiJ7>wZ}_bj,L\VZ0|5qgSUbPB7)/sjD9jD5ynJA9t6U>jũ/JӷZ1|^f1i@oJ\~W.fW'ϔ Ԝ<jƠB-1ia!P^4عKn6@`|`a+@6J'M+(HÞzJwҒjJ i$͆Z7ϝeZ03ڝNsqE>X#c;->$r9*XQYĞG#^#c;->ʵ;&aiRzj98N|(9NIÊ_f)S:xp , $M`ojO)D2HCQisڝ.D܉ j/_ iHy 2is;->{S sqEVdH/P>tͩyMMB[ p>w<*$JAg)d)4,'3Ns5z.#SjF%L > x4, .OaUcc 2iYW)q:)_W:obs̜ 3xPB#3lYLmBA3l8I$r sgLڗ)x 5"36G_d栄@lMMAͳe315"36Áz0"MFk $;oje9(2AֿϹ3j^hZ.} OAFrVQ<8!ǥ$@8OMBI $exۦykۦy6{ey8B@*܎A2sPB 1s I3b@Az Wr rjKdP.IMB1rLjBX`P_܎AMB̩|LDsV/  &SMBB DsV/*E:ҕaI9u#aBͫr99NM5 KdP(&M5 2iXG_njr jeM5 `$~hW4,ʚjR$~P*,&uW:MCAɯMCSdP \H2s6nR_0> yL@瀍MB_088M5rL{&9BLj@> eǓ_܎ASɦP8Ջ4,ʚj$I75b` 2iY4/)I75bB TX*M_W\!0hBJ'#< @<1K1A8Q0lsqEr Ba %sqE{,xTW\!0hBJ'#< @<qK1A8^|ߩJy66i_`U<^'9#f %¤:]`^|6΂'>7Kr>.RnW_5bs5|v﹍!bK 89y䭣Ny+'*oW_8yqf|N_8qf{SsB˪/ I75bi+r]cPz=u<=+hӞdzπǮJ6΂'>71Gj[&Rzj9)I}`My6/Fi6-Ħr_`FS}﹊x#﹍!erWXRzj9Ôx[tM%soD/lӒ ;)ӑ%'/JiN I_!dPy~ʵ;G jKǁ#qaHr#cbܦɦ`IrkI5uDs `pDqEϞ2 aT$r3Iȑ, >< x{L%|﹍!l0^kfӷz0mY %8yqRkXWYX 5djAn=f;_٧%dvS#36&Re2k_|*F-C\_)v"AͳLDq _)9 }fm `)_,&Rr$;@#X`aRA:JNDsgyB _nj"`$T0UBBf@J7 |``ͳ026 ܁36ȓWXLӥIO43 r; ('s4`iVI$"@r VX;>xL(01P#'"GxlH+ǁ/ *= 7>Sl;TQ'ٺAǰDžI75bk_a wϙ6#QD{f?i#.f={Ti:Ӑsסs3WE%m\mg)_f>\(S&|q#ɯ3{.G*6M6*X!c3lDGH0LDqӗyB^e(j\pzN}75bB"E u)G Eɯu))Br >oɯu)G <.ɯu)$G Ѵś:JND`r;-1yM{9P0ԹM1W~Aak_܉>\iu]<_L Py5Tya%Rv0(*ñAa>\(PA>0UBBfܰ> DsV/,EJ_)9 |q#)eFPw,"8Ջ _)9 |J'0UBBfܰ> DsV/0(*&*3Vl27L> s7A6Ջ 1Q` 5X9W7A+# 9(t:&WKr>.RnWK񋚱|:S3W\ՌmHޤ`4+j$7A'*oWKX0UAPi5o*X!c3lDJ7%R3xPe =2T$.*T,pȰP`)yژmU|n@U ;o*X!c3l*MĦH2&{ ʋDqT"E_njnJ9_lersрd+5#$I6iؓy)QFG%4rQ'Od$s$H3Wܸ#-jVS_dҙ*d7{Ry^J|6zs4/І2?5qŞexnI-J̶f.y3Wm˂<^!rьsцס9V7gX-C|Mig$EDM5 _!eZ"8M5 'p<885_IB:fA{&E2iX@k_djPn`6iǚsчF.pڢ"DiIȐɦ` r U#dP(Py#Ã_ ɦ`Q~"d>0UAPnSdPrk_$HסgrmMm:S4;zj92\̑Rr$24,\a||n@U gc`6AMB6FPTG"8J7 |``ͳ6M5 ɬbQT+.BFɦ`Irk_/*Rihs5{3;,U#s̆K37<%%>0UBBf܈/HB`A*NFy)9=eAX< x&0TT\LШ4, \ 9qS)D<8 l|Pif>Y@5_r9M5 >0UBB* , \8 TVF' #dPyrk|:SԒ.\6{cyL5{TP2X?k_f5{yMI$79L<܁36Y.Od@r#r$>0UBBf܋2%0IxnJ96>\2%ɯur$ *X<7%RcʋMXT"kZ ]~5{ %LF ϹmzFڒV`ދRJW,aAeuX9W7A+HRlT\\Ԓt#&4m60fA3$RJWDWKN&UN9ꪪrT{R=T;5$5q SLX!d/(ԶO&ijK̥ KF0O1ny`ҁK<^f!r9Hi9NjNm%M$oXo'\{_ YOlwgZo=XĬm%4j[y9RҴ$Gς#d模D ƨ!2DX0՞m<yB^0ь8ɫJw)Fϴ-%5x?rIijÙte=MrM0 }IDjM#ՌJ #yO4@IB,#r$2Sl"sa{ l{V1+,yr9_aɯu_njEXꪪuyt"]ԏU&őE'>I( \WKr>.RnWK񋚱|V|!|:S!r]g7* Hi_3WEq훠#*,TP~y<2|dK#f.ՕфsVS˙lo(/SB+]UUUUUUUUUUUUUUUUUUUUUUUUUU.JjGgbȢ`椔$/ȐcY% _nj>\2X@k_+_njE_WUUUUUUUUUUUUUUUUUUUUUUUUUUKϛt ђunGMxu*MIr)3UAx $5q]lE$ahXLr].q`8 ꪪrTcEhȃ/(ԶDSaŃ˓_i4aX  Q3!s1`^f6)3UC&JmP^6S & Etr=#731S <șmrXh<5 "&26 M "M皂jlmk_lje0L cT(ș`U0/3SE%F _jI@j/G)Xbc":ngdL_6,4C՞ "&26 ZP"M皂jlE%mk_lje0L cT(ș`U0/3SE$aR6T؋RHO aV!pXȠrrNAǤff*a8ͮK gj!Rk!sk2 E$ah&A56"Ԓ0IuuUUUUUUUUUUUUUUUUUUUUUUUUUTʼ].jI@js"sTP"tLX6|\_5bs5{6iǚ(lnI%-I( \w#٧ktK=X4k,w#AXyU7IuQIϽsV/3W_3M3WE1* ZPwO=^⛟h"]bq2vEtaŃˈ~IǶn;]xuUUUUUUUUUUUUUUUUUUUUUUUUUT*cE%ςr0QC2A"85E2,\9M.M@XZIs5yah -3 zP=gkܗjXڒj)@Rь[g=(1q3{R4י/ȐdLǕ*(\'5E'D5E $ΌbIj62 & SFjՔ|z0_b#"D!AA)3UAx9Lx8LzN}~)ki|)3UAx9Lx@zN}~j !|)3UAx9LxQ,%iIB6j/G) Es I3])^ 8k"rqQrԒǜ7=Ht^5֋RJWx9Lx8( *.?I( \p84ڛ E6jI@j/G)\\<E'>q#_l Ѓ'Ԓ7Vz-I# <-7<̳ 5qf؊E$ah1AVƮ:-I,O /ZFxX^6SʏsRHO a8a5qE7 "Ms1"dA2DX<^.Iϵ3lEhfDa}B"E2#r9JmP^6a|xQG\!0hBJ'#< @@^&8~r ZPys7(+3*6iǚ,=V68qU$N[˓U)dYXh$5qܒ\=XcTPxTWiIȐb-I( \EhǂŇ_njE_)9 E%mqQrȎ/75b {R=T;5$5q SLX!d:JNDjI@j/G<Dqcڑ49%Dk_G=%e;+ӏm@mriMǤq GhTiJ#t=V#dUhNj DqEϞ2 aT$r3Iȑ, X%j(l ť8mr>1cfyσqchs_RKt\95R_pVI%RJWm%Չ!5EIu"Ԓ^6a|x,Xy_*,TPy5ғ ZP/EǑ_njz6v *..jI@jA2DWiIȐdUhNj m$5q_*.Ty_jGgbȢ`椔$:JV8ՋFD 1Q` BAEJ_WiJ~Iϱ|E'>ÕxYxSD\F}LZDDq+ӏLZYM.M 3{&MCiH7SlҁKajXJOMG=e0!qRcEL ojDť 1 !fmIvW.OMG=KQY9"D#m<֙sсo&I2A&%S<_+ӏ&H28,_=!"#VWg&hpDi esÏIYNzRMP)D4$G_h\ڂsisа)2It4A`Ir8l GdPbl&T\h_$qM5I-,|l$\wQqdPbO $xpqkr$49& iE-"#򚨣nf<Sޔ s+cl&ɯDf_< OaUF|l(=W#/S)c$|lRɯu_dj+3W4I--. xK&m<[e%=5"tͩyMa=$:fԼ|l$\uUnF fIϼ>ms<_%|qQ|"Kr$00 ɦa}PDqVQHÞzJwM=5 &oFй)7AjxRV"C"5"tͩyB D 1!mK@ XAA3j^P R XAA3j^P HG\!0hBJ'#< @@ǁ/[4I-"@K+ӏLZC¤_W:%ғ!8,_=!fmȎ/MAQ||l \фH&oaUb_<l&||r84c4$|lRɯu`W9ͮ{g6#X?jQU&|od5 r dPT_(G"8 g |l$qW#8M|lyq^@GqgyM`H$WH2Sl(S_njEJ_W:_(r >oMcUxu8I܏ԒHhaIDd3> סlj_zt%J%:[B͌zеƚ.Sm j`hKxՋ 5q]ϛn3N`f-OZ$|#>i] 5Ui%SB+,\Gkp#j-$j b?I4EuUUUUUUUUUUUUUUUUUUUUUUUUUT*cZ$_ Ë/G_nj:od&y5ȐaŃǞǑ_'I6nU (>.Rr${g =YN _)9 8y~TDqZ$ٺaT$r3Iȑ, lz _)9 8y~ 6GůMBJ'#< @@1@m¤:JND,_=W"8N-|l0Q9|\H b Ugm¤:JND,_<ps#Ȏ/_$7AL*NFy)9=eAXǀ{dxTWiIȐaŃǥms̏"8N-|l0Q9|\H bzVѧ<5ғ Ë/UL%cȎ/_$7AL*NFy)9=eAX$C6JDžIuX6| _)9 8y~7 X#d&~S %GNDl`V 7 X5ғ Ë/s|5cȎ/_$7AL*NFy)9=eAX$ǹ>nRk_'"A/_#d&~S %GNDl`V L|c¤:JND,_>cȎ/_$7AL*NFy)9=eAX$qE&Rr$q`EUgmȎ/_$7AL*NFy)9=eAX$)9πDžIuX.Rr${gP~=t\#¤:JND,_>6NyGůMBJ'#< @!mdxTWiIȐaŃǩr#d&~S %GNDl`V ԌHxTWiIȐaŃǾr&Ǒ_'I6nU (>.Rr${gP+Mț&Rr$q`$5qDqZ$ٺaT$r3Iȑ, @.=#¤:fF %.Rr${gǡ Q uXo$^_)9 8y~FBb`DqZ$ٺa"J56R(=Wm0 P#'"GxlH+c| X %0WiIȐaŃ2E2#d&~S QIA< $BJ'#< @ m0 Q uXDxT`xMH0   #d&~S QIA, xH*NFy)9=eAX$σqRA :J58a5ғ Ë/L"qkf?)(HT %GNDl`V 7 X %0WiIȐaŃ*TL"qkf?)(H=V< $BJ'#< @c7 X %0WiIȐaŃ,T"*TS"8N-|l0%)pAT$r3Iȑ,  sxT`xMH0 "E2#d&~S QIA@mpAT$r3Iȑ,  ( %0WiIȐaŃ& PT`T?"8N-|l0%)6JǀᄂIDgr#<6X$<.$^_)9 8y~"c"Aqkf?)(H_)V< $BJ'#< @!mdxT`xMU Osm0vXՔ"ϙRtcpiJEEb8LӥE-5| 3W+d+5 jR.|4P`c %GNDl`V %@QRqkgdm{RJfPA٧kt{-|liX<5qkf?)ɯuk!sk2 Z$ٺ"MkXd&y5X9W7A+&pLNsunGMxu1sV/3W̤\t*UMJ5b}cT )3U@ZP.jIinW9dIteTuËmP9!ȵ$4++|`i%Ls_$;+)19$Dq8ItMkr$q`2Ȏ/_$7AL*NFy)9=eAX ]Oh\L%{ _)9 8y~`QGůMBJ'#< @'{zFDžIuX.Rr${gѦ&J 5ғ Ë/*<8It¨IDgr#<6X$.>p`T"E7^5zNDžIuX&nc¤:JND,_<,<8It¨IDgr#<6X$6<\<E'>?,xTWiIȐaŃǕǑ_'I6nU (>.Rr${g1ﱫ5ғ Ë/G_'I6nU (>.Rr${gqG4&:t"/1g;Ѧ&JDžIuk!sk2 Z$ٺ"MkXd&y5X9W7A+fKr>.RnWK%>5|ٸFLAY5y+)s\euf[3WC5qSB+]UUUUUUUUUUUUUUUUUUUUUUUUUU.JԌ X7@jw =%e;%%Z0`,LdP9Y'M JG) ?aA8j!Rk<Sa+)J;&26 VSjvDؔjE`jw¬ B1@f7\J#-N¤y&Ġ{R+,Sk!sk2 J"Bʵ;"M>YVr8Fjw.pG.[礬q_jw,|zJwk<S|NM#mN|(,X!apH7lb|j>wZ}˃iYJdpGܶ?P$!eZȒĤ|ZS|NMĚ: kdry5rWaNF)DqĦL O!dqkF y= ʚjxDqsqE܁f ,ȗ,6M5 0B>dO͕Y.Y"Md@rk4#mNR@e`v-7frPB7)\#O5f\O5Y,&in3WɩޓMYsqE܁f $a S'ϝr+,"\yr{"_0sqE܁f ,ȗ,˓xDqr+,"\/P"s;->1Bʵ;fD#c;-> 6VYfDf\"MA^k!sk2 r+,"\.DVF&d@Hl̉r<5u#mO!i "*FA ݱMGsB lӏ4EnR q|*/7-(<̉a3NŦKsMNn lX;-> 6VY%dry=|(,X!e˓8фH0Oc;-> 6VYfDf\r#ccpZBȊ&fDf_)sBAAcjw"̉pF) YB2%0I ͮ|11D-!dETAȳ"\.DW:^鹩8.XTR@N#$!ڢ_TRYL yǤq D{bCd 6& ݱMGڢ8|f .p8[TQ'ٺ_f-(<̉b q.fSĚ$a S')"̉r{"_T`h: ƨ2%ȓ_0jyr{`͉fDf_)GŪaɯ ͮ|0`́fP"\.DW: n#>\fP45(1i5{>EUӐyIǶna3WEq훠F7% %qSq3`7-C|sςJ5{cĚ$)Ě&a6i^Ae9r3Ĥ|Zdry=d 6&hfD=je03"sTP"tLa ,ؚaIDa*iOap9B 6&hfDf_)iY&26 ,ؚayr$:MafWnjN%)3r,ؚ/JGŪe1&a6i^Ae9r3Ĥ|ZSlg#' Y5,ȗ`iMD模D\̃%6r>.RrQB̉r$ȁ:^鹩8.X$|\ 6&jLI)"kdry5rWaNF)DqएfP"_)8)#&t9(A&26 N HIlME 2%ȓ_"_{bR8P"QI6nŦPMOt?S(\vjHrfPG1N<3WE3fDW[^|U7>\fi4bґ%HL$5S&NJ ;)ӑ%#/D#3 Y5,E2%G_S)qqrM1iH"sTP"tLad 6&hfDkF y=MB<=G\F}iJBȉ0r̉rTť!dDREhfDf_}ʋDqiتDME$YdKaNi4ŤA8P"QIayr$B>d+ӏU$,H ,ȗ,ˑ&ua+U">7,iE-)/D e0{ ` ʕiت,H@p9q$Od#N>Tť!dDREhfD`=Ȏ/DaJ4U@LZRDME$YdKa<"8"A8P"QIay}*,TPy1D-!dFn#N>-1iH ,ȗ,03cpX"t#N>I-" iت,H ,ȗ,ˑ&26 8ť"4\"\.DW:#sRp\!2DME$ۂc3WchcPIT3*[e(3[uRlv|#zypdyJ3.p$a 5jH 'Dq$O`͉f.Y.Od@r87M52h̎'5E'D5E$Y.`͉f.Y.DфH0OdP.Oap9h̅QIay|ɦf\\̃Y5f.Y.Y"M_{bGLY5#n Zo<^|z|665NYU%Rl m5QU&jg1)y&A2KF YL<ƨ0r{ G"Aa ,ؚaD#/3xS)<2::$fD!d 6&hfDkF y=MB<=G&d,H ,ȗ,6M5 0B>dy$̅QIayr$:WnjN$9 "&m@ݱMGrW#r-Rl m5QU&jg1)y&A2KF YL<ƨ0r{ G"AaG lME 0r̉r{"Jiȹ+NӑD模D ƨ2% 3 Y5,E2%ȓ_0ja<"8"F;NBȉ0r̉rwZ}ͳ͕ۂAc3Wm˂<^On~$O͕^鹩8.XcpXfmv-7f;y1D--ğsBDUA4"Aa>YVr,ȗ' p9Bf܋2%Sl"scjw"̉r$"A0{Qi YB2%0_Qi36 6VYfDf_)6΂'9,SdK69@e`dKaȓ_sB3lEy|;:" *E!i "*FEyr$:ްaaOcTREh=r#F 0{ lME 0r̉r{"ƨ;f.Y/қggAAd,E 3 Y5,E2%ȓ_S).GAAd,E lME 0r̉r$"A0{AM4'8!rQB4\"\/4,˓_zÑW"Aa ,ؚaD#/QAw"4\"_)6΂'5E'D5E$Y0f@bj(YdK&)S>\R0ryAd,E lME 0r̉r$"A0{AM4'8ؤ`4%`lME 0r̉rD"ՔJkpjIh$5q9BF9(t:&x?k3M_,I-" iت,H KdKaȓ_W:ްa75b7|5k]UUUUUUUUUUUUUUUUUUUUUUUUUU.r>nWK.ms]`ۑrt"]F>6fVx[6W'*oWKX<4عp^ͮ}\1sk2 #//8 &XPKRxSlibcljni/MsgCatalog.classmRMo@}4㦴M)8N@ BXB!Uzc99vv88QUPx3f~ PƑG' F&ev T|N,Z%[]?M\$HċSLKIn┡rc(5öCJOYkĄRQg M}ty)ۅ0]h~T+,E.4jja,i cg_/LC3,WWvo8ϴt:DC\ >r6oEvW7x-uu=c8m6(&oZD8c؉S1@ d8 = lp EV'AbB3o`_) V ULF^5o}Gi=c=С3PKt⥱PKxS META-INF/PKxS֊=>=META-INF/MANIFEST.MFPKRxSt⥱libcljni/MsgCatalog.classPKV{ k omp םa՝a֝a&p bm./usr/es/lib/libcljni.sotaint.mmaծ,H0 RE.text@ .dataN@.bss.loaderL|`~``!AHDL8Pf| FN!AP8aTcf| FN!AaXc8he| EN!A,aTA8H}AHLXHAa\HAa```c`e| EN!A,adAc8`\@h| dHN!Ac 8e| EN!A,ahA@8 8`dc`g| GN!A,``eAh`cdpg| GN!Adalc\e| EN!Ach\e| EN!ADcTf| FN!AcPXf| FN!Aal8!}N 8`8!}N A Java_libcljni_MsgCatalog_catgetsA L| N A L| N A L| N $Id$([B)Vjava/lang/String@(#)48 1.1 src/43haes/lib/libcljni/libcljni_MsgCatalog_catgets_impl.c, hacmp.libcluster, 61haes_r714 12/3/03 10:09:15;=strlen@ catopen@ catgets@  /usr/es/lib:/usr/lib:/lib:/usr/lpp/xlC/liblibc.ashr.o@VPDshr.o/5765E6200/520!Java_libcljni_MsgCatalog_catgets %*bBj  strlen catopen catgets TOCkcatopenkcatgetskstrlenk_$STATICk g.filegNhk@) _$STATICk  glink.s" g.catopen@k(.catopen@glink.s' g.catgetshk(.catgetsh#glink.s g.strlenk(.strlen(../../../../../src/43haes/lib/libcljni/libcljni_MsgCatalog_catgets_impl.cWed Nov 24 00:03:25 2021 IBM XL C Enterprise Edition for AIX, Version 9.0.0.0 --- .Java_libcljni_MsgCatalog_catgets k> oA םa םa֝a&bm./usr/es/lib/pythoni.soAA k(5 o*םa՝a֝a&*bm./usr/es/lib/python/cl_utilitiesmror_E#---------------------------------------------------------------------------- # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # %Z% %ci% %fn%, %R%, %t%, %G% %U% #---------------------------------------------------------------------------- # Import Python Modules #---------------------------------------------------------------------------- import os import sys import inspect from datetime import datetime try: # For Python 3.0 and later versions from subprocess import getstatusoutput except: # Fall back to Python 2 version from commands import getstatusoutput #---------------------------------------------------------------------------- # Global Definitions #---------------------------------------------------------------------------- DSP_MSG = "/usr/bin/dspmsg -s" HA_UTILS = "/usr/es/sbin/cluster/utilities" UTILS_LOG = "clutils.log" CAT_FILE = "scripts.cat" #---------------------------------------------------------------------------- # Functions # displayMsg #---------------------------------------------------------------------------- def log_message(logfile, msg): """ Function : log_message Description : log message to log file with file name and line number. Arguments : Logfile and message. """ filename="" # stack utility of inspect Python module returns the list of frame records # for the caller's stack. First entry in the returned list represents the # caller. Fetch the caller details for the function. frame = inspect.stack()[1] # Fetch the file name of the caller function from the stack frame filename = inspect.getfile(frame[0]) file_info="[" + filename + "]" + "[" + str(inspect.currentframe().f_back.f_lineno) + "]" date_info=datetime.now().strftime('%Y-%m-%dT%H:%M:%S') msg_info=date_info + file_info + ": " + msg with open(logfile,'a') as log_file: log_file.write(msg_info + '\n') def getFilePath(fileName): """ Function : getFilePath Description : This function fetches the log file path configured on the node from HACMPlogs odm. Arguments : fileName - Required; Log file name Return : Log file path configured on the node. In case of failure, this function returns default path of logfile as /var/hacmp/log. """ # Fetch the log file directory configured on the node from HACMPlogs odm. cmd = "%s/clodmget -q name='%s' -f value -n HACMPlogs"%(HA_UTILS,fileName) status,logDir = getstatusoutput(cmd) if (logDir == ""): cmd = "%s/clodmget -q name='%s' -f defaultdir -n HACMPlogs"%(HA_UTILS,fileName) status,logDir = getstatusoutput(cmd) if (logDir == ""): logDir = "/var/hacmp/log" logDir = logDir.strip('\n') logFile = "%s/%s"%(logDir,fileName) return logFile def displayMsg(*args): """ Function : displayMsg Description : This function displays converted message to the user and logs the message to the specified log file based on input argument. Arguments : args[0] - Required; Log file name to which message is intended to log. In case logging is not required an empty string should be passed as first argument. args[1] - Required; Set number of the message in catalog args[2] - Required; Name of the message catalog args[3] - Required; Message number in catalog args[4] - Required; Default message to display args[5:]- Optional; any arguments that the message may need Return : 0, On success 1, On Failure """ utilsLog = getFilePath("clutils.log") # Validate if set number, catalog file, message number and default # message arguments are passed argLen = len(args) if argLen >= 5: logFile = args[0] setNum = args[1] catFile = args[2] msgNum = args[3] defaulMsg = args[4] else: msg = "echo 'displayMsg: Invalid Arguments!'>>%s"%(utilsLog) status,output=getstatusoutput(msg) return 1 # Fetch full path of the log file configured on the node. if logFile != "": logFile = getFilePath(logFile) dspCmd="%s %s %s %s '%s'"%(DSP_MSG,setNum,catFile,msgNum,defaulMsg) # Capture arguments to message, if any. msgArgs = "" for arg in args[5:]: msgArgs = "%s %s"%(msgArgs,arg) if msgArgs != "": dspCmd = "%s %s"%(dspCmd,msgArgs) # Execute 'dspmsg' utility status,output=getstatusoutput(dspCmd) if status == 0: print(output) # Log the message to log file if logFile != "": msg = "echo '%s' >>%s"%(output,logFile) status,output=getstatusoutput(msg) else: msg = "echo 'Command %s, failed with reason:%s' >>%s"%(dspCmd,output,utilsLog) res,output=getstatusoutput(msg) return status def displayMsg2(*args): """ Function : displayMsg Description : This function displays converted message to the stderr and logs the message to the specified log file based on input argument. Arguments : args[0] - Required; Log file name to which message is intended to log. In case logging is not required an empty string should be passed as first argument. args[1] - Required; Set number of the message in catalog args[2] - Required; Name of the message catalog args[3] - Required; Message number in catalog args[4] - Required; Default message to display args[5:]- Optional; any arguments that the message may need Return : 0, On success 1, On Failure """ utilsLog = getFilePath("clutils.log") # Validate if set number, catalog file, message number and default # message arguments are passed argLen = len(args) if (argLen >= 5): logFile = args[0] setNum = args[1] catFile = args[2] msgNum = args[3] defaulMsg = args[4] else: msg = "echo 'displayMsg: Invalid Arguments!'>>%s"%(utilsLog) status,output=getstatusoutput(msg) return 1 # Fetch full path of the log file configured on the node. if (logFile != ""): logFile = getFilePath(logFile) dspCmd="%s %s %s %s '%s'"%(DSP_MSG,setNum,catFile,msgNum,defaulMsg) # Capture arguments to message, if any. msgArgs = "" for arg in args[5:]: msgArgs = "%s %s"%(msgArgs,arg) if (msgArgs != ""): dspCmd = "%s %s"%(dspCmd,msgArgs) # Execute 'dspmsg' utility status,output=getstatusoutput(dspCmd) if (status == 0): sys.stderr.write(output) # Log the message to log file if (logFile != ""): msg = "echo '%s' >>%s"%(output,logFile) status,output=getstatusoutput(msg) else: msg = "echo 'Command %s, failed with reason: %s' >>%s"%(dspCmd,output,utilsLog) res,output=getstatusoutput(msg) return status def executeCommand(node, command): """ Function : executeCommand Description : This function executes the command on the node Arguments : node, command Return : status - return code of the command output - output of the command """ # Fetching paths using cl_get_path all, this is set as PATH while executing command status,PATH=getstatusoutput(HA_UTILS+"/cl_get_path all 2>/dev/null") # Appending path to command command="PATH="+ PATH + " " + command if node: # Fetching local node name status,localNode=getstatusoutput("PATH=%s get_local_nodename 2>/dev/null" % PATH) if node != localNode: # Check whether node is reachable or not cmd="PATH=%s cl_rsh %s date 2>/dev/null"%(PATH,node) status,output=getstatusoutput(cmd) if status: defMsg = "Error: Failed to communicate with node %1$s in a cluster\n" displayMsg(UTILS_LOG,44,CAT_FILE,3,defMsg,node) return (status,None) else: # command is executed using rsh only if node is not localnode command=HA_UTILS+"/cl_rsh "+ node + " "+command status,output = getstatusoutput(command) return (status,output) def log_stderr(msg): """ Function : log_stderr Description : This function logs the message to stderr Arguments : msg - message to print Return : None """ # This will work for both python versions 2.7 and 3.0 sys.stderr.write("%s" %msg) def check_config_file(path): """ Function : check_config_file Description : This function will be used to check whether the given file is exist and it has data. Arguments : Filename with fullpath Return : 0 - File is not present 1 - File exists """ # Check if file exists and it has data. if os.path.isfile(path) and os.path.getsize(path) > 0: #If file exists, checks the read/write permissions return 1 else: return 0 def rotateFile(filename): """ Function : rotateFile Description : This function will be move the file data in to new files. Arguments : Filename with fullpath Return : 0 - successfully rotated 1 - failed to rotate file data """ filenames=filename+"*" # retrieving the list of existing files associated to file which is passed as argument. command="ls -lrt "+filenames+" | awk -F\" \" '{print $NF}'" status,output=executeCommand("",command) if output: filesList=output.split('\n') # retrieving the number of files associated to provided filename. command="ls -lrt "+filenames+" | wc -l" status,output=executeCommand("",command) if output: # Removing leading and trailing spaces count=output.strip() for file in filesList: # Rotating files count should not be exceed 8 if ( int(count)<8 ): newfile=filename+"."+str(count) command="mv "+file+" "+newfile status,output=executeCommand("",command) if status != 0: return 1 count=(int(count)-1) if (int(count)<0): break command="touch "+filename status,output=executeCommand("",command) if status != 0: return 1 return 0 dspC kp6 oXםa՝a֝a&Xbm./usr/es/lib/python/cl_cbm_utilitiesr_E#---------------------------------------------------------------------------- # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # %Z% %ci% %fn%, %R%, %t%, %G% %U% #---------------------------------------------------------------------------- # Import Python Modules #---------------------------------------------------------------------------- from xml.etree import ElementTree as xml from xml.dom import minidom from collections import OrderedDict import os import sys #Retrieve python version version=sys.version_info[0]+(sys.version_info[1]*.1) #Check for the python version,import imp module depricated from python version3.1 onwards if version < 3.1: import imp cl_utilities=imp.load_source('cl_utilities','/usr/es/lib/python/cl_utilities') else: import importlib.util def import_path(path): module_name = os.path.basename(path) spec = importlib.util.spec_from_loader(module_name,importlib.machinery.SourceFileLoader(module_name, path)) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) sys.modules[module_name] = module return module cl_utilities=import_path('/usr/es/lib/python/cl_utilities') from cl_utilities import * #---------------------------------------------------------------------------- # Global Definitions #---------------------------------------------------------------------------- odmdir = os.environ.get('ODMDIR') if not odmdir: odmdir="/etc/es/objrepos" cbm_conf_file_path=odmdir + "/cloud_backup_configuration.xml" UTILS_LOG = "clutils.log" CAT_FILE = "scripts.cat" #---------------------------------------------------------------------------- # Functions #---------------------------------------------------------------------------- def prettify(elem): """ Function : prettify Description : This function inserts new line for every data in a xml string and pretties it Arguments : Element name Return : Returns a pretty-printed XML string for the Element """ rough_bytes = xml.tostring(elem, 'utf-8') rough_string = rough_bytes.decode('utf-8').replace("\n","").replace("\t","") reparsed = minidom.parseString(rough_string) return reparsed.toprettyxml(indent="\t") def parse_elements(inputArgs, elements): """ Function : parse_elements Description : This function parses the input arguments Arguments : inputArgs- List of input arguments[attr=value] elements- Used to save as key value in dictonary. Return : Returns the parsed input arguments """ elemDict = OrderedDict() error_list=[] # Split user provided Element, value pairs for entry in inputArgs: value=entry.split("=") extra_list=[s for s in elements if value[0] in s] #If any extra input arguments adding to error list. if not extra_list: error_list.append(value[0]) else: # Get user values in "Element=value" format and save the value in dictonary. if len(value) > 1: if value[0]=="Resource_group" or value[0]=="Storage_name": elemDict['Name'] = value[1] else: elemDict[value[0]]=value[1] else: elemDict[value[0]]="" if len(error_list) > 1: defMsg = "Error: Invalid arguments %1$s entered and ignoring those arguments." displayMsg2(UTILS_LOG,43,CAT_FILE,72,defMsg,','.join(error_list)) return elemDict k6 oA םa םa֝a&bm./usr/es/lib/ksh93/cl_cAA kꦯoםa՝a֝a&bm./usr/es/lib/ksh93/common_functions.ksh93erpris#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/common_functions.ksh93.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)27 1.3 src/43haes/lib/ksh93/common_functions.ksh93.sh, hacmp, 61haes_r714 7/7/12 14:59:27 # Load the common clmgr/clvt functions library . /usr/es/lib/ksh93/func_include [[ -z $SCRIPT_NAME ]] && SCRIPT_NAME=${0##*/} # Name: abort # # Description: Reports the error message indicated as the first # argument to this function, then exits the shell # provides a single point of exit # # Arguments: errno, # # Returns: n/a exits with errno as exit code # # Global Refs: None # function abort { typeset errcode=$1 errmsg $* exit $errcode } # Name: critical # # Description: If command fails, prints the command in the abort output. # Don't use this if a special message exists for this case # # Arguments: command line to execute # # Returns: 0 or exits program on error # # Global Refs: None # function critical { "$@" && return 0 abort 1 "$@" } # Name: errmsg # # Description: calls dspmsg with our catalog and default msgs # is tolerant of empty arg lists for ease of coding # # Arguments: [msg_number] # [args] # # Returns: Return code of dspmsg # # Global Refs: MSG # # Usage: errmsg [msg_number [arg ...] # function errmsg { typeset msgid=$1 shift if [[ -z $KLIB_MSGSET || -z $KLIB_MSGCATALOG ]]; then echo "Fatal Error: KLIB_MSGSET & KLIB_MSGCATALOG need to be set!" return 1 fi if (( $# )); then typeset -A arg index=0 for a in $*; do if [[ ${a:0:1} == "!" ]]; then name=${a:1:${#a}} typeset -n klist=$name arg[$index]=$klist else arg[$index]="$a" fi (( index=$index+1 )) done 2>/dev/null dspmsg -s $KLIB_MSGSET $KLIB_MSGCATALOG $msgid "${MSG[$msgid]}" "${arg[0]}" "${arg[1]}" "${arg[2]}" "${arg[3]}" "${arg[4]}" "${arg[5]}" "${arg[6]}" "${arg[7]}" "${arg[8]}" "${arg[9]}" "${arg[10]}" "${arg[11]}" "${arg[12]}" "${arg[13]}" "${arg[14]}" "${arg[15]}" else dspmsg -s $KLIB_MSGSET $KLIB_MSGCATALOG $msgid "${MSG[$msgid]}" fi return 0 } # # Name: logmsg # # Description: This function will log a message to a log file pointed # to by global KLIB_LOGFILE and to the console, # if KLIB_OUTPUT_CONSOLE=true # # Arguments: [msg_number] # [args] # # Global Refs: MSG # KLIB_MSGSET = message set # (1) # KLIB_MSGCATALOG = message catalog name db2sa.cat # KLIB_OUTPUT_CONSOLE = true / false # KLIB_DEFAULT_LOGFILE = fullpath to log file name # KLIB_HACMPLOG_ENTRY = HACMPlog entry to obtain path for # log file # # Usage: logmsg 100 "abc" 123 # function logmsg { typeset ARGS=$* if [[ -z $KLIB_DEFAULT_LOGFILE && -z $KLIB_HACMPLOG_ENTRY ]]; then echo "Fatal Error: KLIB_LOGFILE and KLIB_HACMPLOG_ENTRY not set!" return 1 fi LOGFILE=$KLIB_DEFAULT_LOGFILE if [[ -n $KLIB_HACMPLOG_ENTRY && -z KLIB_HACMPLOG_VALUE ]]; then odmget -q name=$KLIB_HACMPLOG_ENTRY | while IFS='=' read name value; do name=$(eval echo $name) if [[ "$name" == "value" ]]; then value=$(eval echo $value) KLIB_HACMPLOG_VALUE=$value fi done 2>/dev/null fi if [[ -n $KLIB_HACMPLOG_VALUE ]]; then LOGFILE=$KLIB_HACMPLOG_VALUE fi # Return the status code from calling errmsg (last statement is the ret code) touch $LOGFILE >/dev/null 2>&1 if [[ ! -f $LOGFILE ]]; then echo "Fatal Error: Unable to create log file $LOGFILE" return 1 fi if [[ "$KLIB_OUTPUT_CONSOLE" == "true" ]]; then errmsg $ARGS | tee -a $LOGFILE else errmsg $ARGS >> $LOGFILE fi } # # Name: dbgmsg # # Description synonym for logmsg, provides debug logging # by default this function ignores console logging # no console logging is enabled # # Arguments: [msg_number] # [args] # # Global Refs: MSG # KLIB_MSGSET = message set # (1) # KLIB_MSGCATALOG = message catalog name db2sa.cat # KLIB_OUTPUT_CONSOLE = true / false # KLIB_DEFAULT_LOGFILE = fullpath to log file name # KLIB_HACMPLOG_ENTRY = HACMPlog entry to obtain path for # log file # # Usage: dbgmsg 12 "foo" "bar" # function dbgmsg { logmsg $* } # Name: require # # Description: If command fails, calls abort with the rest of its args # # Arguments: command line to execute # optional about arguments # # Returns: 0 or exits program on error # # Global Refs: None # function require { eval $1 && return 0 shift abort 1 "$@" } # Name: require_dir # # Description: Special case of require because it is so common. # This also has is a special error message. This is to # simplify calling and reduce errors # # Arguments: Directory to create or ensure exists # # Returns: 0 or exits program on error # # Global Refs: None # function require_dir { mkdir -p $1 || abort 1 21 $1 } e l0$oYםa՝a֝a&2bm./usr/es/lib/ksh93/func_include  =e #ainrst"$_cdhlouCDEILMNORST[]fmpv()-./:AGP\bgkwy%&*,012;>FHUx{}!'+4BKV|35?WXYqz689Y Ϲ${UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU17*FoIE&!Šuո[\s=x 2~ W%St,nVLe9P h+Z<7|I@jK\SR%)|@fj>٨oI[tmsȬW W5ٵ۠2f-Dg4nAk!&,9crMhXsnkDŽ9c`sUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTK)hnU6<(\"YX`o| ̙,/00K?ުxzvt> ?=|ccUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTn?sEʺ&7rJ/97W9n]{K\V^ Q 1\ i-1j05@41ſ.\حX+Ih'.kc|[4o7[s'A[OY+i˫9s[VNAk(7^@vj^r+%r5\riWDsŅ6\حX#>Pݪ㒹1ӗVr5/9K ;X5/Ix5FX>ܒL9c,@H˩|-+nW(7yj^]{/x[ì;sbc\ZO4O,j"קiӗVy-aaП5Y8- @d9IwroZbyeeەTgt'`^S:Rc Nj:{UyrW,.0)BrVƱ[?f\Խʺ&KskMKx/ w!j^;`j^|m.'7p]U[.gY޴aSv3K)h1oix%7 .U6c rܖ7sQԸppsa*.9Eʺ&4EW4\oiZKA9E3a ykUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTK)hr]xQ`n9pZ<c?2rsPԀ19reJ ˕,@H@3c'.WbL`h&TޫA ɐw5. ,@H+Rn`pji-*Pi41ŏ gY uX`9+2d32dK?g h41Ű ,,23naJ[ -@0&T tʔՁf &g@ɐɜʔH -VaJ[3Qm|lN·uU(0h,%3ȾWAE {?ުl &"G@LA4?0C?07>63c'.W<5*34#n9q ,,23X_qˎ``;Lџqˋ?7MyP-׌4%7My0*1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULnMC%mEʺ&7rJ/97 CrGK++ix%7 Z./OX1"Vn85<ۆuv[nI>j15/Šs>kr]aak!,@H# czrsR ?6V 0@# 1Z201aqѓqOXzJۢtM1kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֱnMCu|-65\M@Cs|.[nUyNbpӳOj>\e;6Ʊ^r~B 'NGOr/35Q/EU67K905/3B5akHC5IU;i)z娴3yj\o|-Z| vl9cZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵa޴7jwi?ô"$HEJ.'aa4\t1˕ Q,4ybgre /^V5{IUdOԸ+^|t[Is?Ȭ*k0El=c\Խ%W:K@ŗ0iۅ0캗IYN:K6',pZ.+6wYpi)i[vmh? gm]Eg$59Uz+tܪ iۅ6^S˚حkÙ1+@u &lZ 5<""4J)ph<=;:T1RBMaVH<<* ;@fd;`ƀ$&T1C6-&AԸ397!l6ZH*a$$UE`@yR p[IU;i٧@5HJg,nkzHaaD1׌43qOX{5U;4ZaakZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkqUadcs^0D܅7rJ/97 V:[6mh-nU./M|/^ktޓTgM8e<01, &4pjRp\mVn1j\nSZ/5/,9U_lJoZk!_u/IdnY޴Y,nkXa7tv59t7$tQUj_8z\حX5-ܔrՒt޴7Úix%7V0SEU0N+lo9yۈ U tTdG9.j[Dx@ \Bg󋒹\ح[IxvƱm/u/6ot\,ƱEqyC kUaag[|U[ȏ"cK(LW n' [1wkeTv@5/\W|,ǚz  cj\9|nkK'{Y-EÚb㇕*Ʊ[?ЊG|ZO4OxIdcZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵa޴5VF75M[ 3c'.W<5R˕4 gN\zNU[*\oz@ c?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULn"ug'[ix%7 ςmryo||j^Ţg'a9eԼLZ&='B OYwEНlnsQt ,kWjppvmVgj h p@HH LGRc?@^n&p@#4 j gf aDTK"PK2dK?k0cB)`5`@ ,,22"O \)Tشww9^1"nBOn {?=51V⊯l 0`A7>bLfLpgȾW@0|46-Whj,nk`m-Usb-K(8݆ @{?= h| X$, rV dfdfz `ƀ$Db]V VM`jP 6fd?9rE|'!`"T1E@pD&<@rQU,g@z@(P$\ Uadcs^0D܅cֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkX7&v!,ƱQyɽhn; G^oU/+O4qk|k.)^,-n=;\[7r;5/g}|^ViusKGNګZ ޼=楱WkNW|Nò6-I׾Zo\3iC,\pCIF7ܤk,lӒc㇁A!! "cQ&"Hx[`:kBZ Yۈ+|9yd6jpJ|=w VU`snkʍDHho5a,kGeyQ*TP5kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵSzŮhNU,m\(QR 7 g=XXa "~m63c'.W<5HKP$^urύxÔU` fd;dUdNc?Ղ!U.,= [?Y[?2rsY'+<{1+)RF&(ɱ9rH*T$\Ly4 "HH$J `hiI DA, p DTH̙sRI DA*=Y3b<4pq^oVAʬ-ιU HMU9Ug h "HH$J fLF4!"(%G^oVAʬ,{?&qhDTHg-HȔ$$U%AhH\aNZK8Uc,43_ 0Ǔ(d-Ɣ&8`-sEUrd7gzH*^EQ Uam%t?Y'+@, T (Xz$J &%G\Ud0Y; DTH gȾ@a$ &PZ(Lq` Z披$QnD40;UdNPY'+C$$U%K6'亳gf h*NV '}V 0`BG22"O=XXa&9M_Kr[IhIm\UyhU:ZoNv+i9y^Iӹd΀M8ܥr-I-O\~0k Nܘs qyC),7ыx٫+k񆛦7wipY;-s M9+tݚ|'qrWio&[/ƱEqyC+s^05/|'q4[K),7ыx٫+cj:xå^[snkʍDHho5rWtK/ZY^Tj#ʕ(T9cZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵa޴1k/& 3;@""DTB,q@~zHpM˕ 8D gN\|Nk?2rs M9+#1+)RF&(ɳc'.W=tG\Ihx)nc?@^;%y8 rWG` ,FN"Ee̙sRIhx)nD`NiK@Ŵ M9+? "HH% ($VVIhx)niK@Ŵ M9+ g,/@uYQ 5l4q̙sR0h03FB8 ."af03FB"\D ."afPri{?= c?XY׌7!l"@cɔ=hfvk/&,01kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵcrn7bNr/n:^roZw;)sR ONUQܪXfSd7䱩:7XNr/|޴7!BLZ&C?˩|nsR,[ak^g?kBØ7+s^0 k NE|޴ZxX ƱkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZְJoZ>xQ$ UadnzDۂlgN\y23c'.W<5eǕ*@qIswX1%GoփYh EDJ̙gԸ3_ 0Ǔ(d-Ɣ&8`*%NUK=%W!4Á" "HH% (%Up̵VXٷA934 ?!f H㒱&C04 PAq@HW (4D$B,(S0RIU;pM0I<=;:Wڲ4ReהC_dØjg8&p$꫃Ac?=9r `F9y D1 @ ,!%NʍЊGzH*rBdJ {qF3-U6mOufڲ<aa"@e Xx҄ ţg0@Ba4є֋JAeV?@12KCEDJY3gzH*rBdJ 3h4g""4M4e5kFvYUD,LDLDq1D12ÖL?ɗTLOgȾ@a$ &PZ(Lq` y2ʉ XxeǕ*@x=I D!2%ig #&-eǕ*@Ǔ({?s^0 qOX{>aakZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkq71n:^roZ[_)BEc{,5/XY;r+zv5I%AN<zvi˫675/UdƱ\ԽWzƴ!yfpV9wd9cr5 sR,QS,i梱VV0KtݾrM1k!ܿ.w.j:y ⷯ+Onq}7Bn5q%|q|ZaKvtK]Yۧj%J#K_gmzo7%|Gkn8yZ|s^0Bo黚0qvcnroZWޱՕ\YsaEzotoFur棧^0Onkk^g?kBØ7+s^0 ]`湩zoaI\iuUs ֋Z.ⶴԸ>VƱkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZְJoZL  3;@""DTB,q@~zHpM˕ςܩc?2rsadc'.W<68D 1+tZ7tu{>orwUs*ɟd*@BDe96d&.#Lgf a"PhI?2dK?k0c?@)UE4"Ee9 j\@A$Q&Pp<aa"@e Xx҄ הC*#O$$UȔg8D !W=Y:Hf<aa"@e Xx҄ ՑøZY; ʍЊGzH*rBdJ 3ՕC/Y;ܒN7}%rI\iuUgd|4Y;xx(? gȾ@a$ &PZ(Lq` JAd^Q?DTK"PI``4ZH,Ђ!W=Y;A$$UȔ gR3?Ez Ly2B,XFϚ9gJD <NhA8u +gɗ  j^ؘ@s?#G+jNh+7 g"LQ: p igY&\@tF7b$&ïLA]w ̙sRUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3u/IyMcwV:=vu_w5/6گpBӸMq/QW)>j^miOXT^[t֏56=D!v䲧n\ݦF7 B&PpW5.lћ?GOԽ%5Cڪ*TTI@A$&nIM^ : L` ]w&\@H$A]w ̙gԸ3E*e'KyW[ gX^Dxp"IM8݅p#@(ԝ8up#pB$ɏ+H+¬gYl4tDק&\@H : pLj\"exѫ-3,/"B76crn7bͱn:^roZorܪ`U|G梱7q|[mʼܷ*Nn{lo(܎9+i-nO㒼61nB?r |ԾS-GO|8ٻL9cr]K7i_ms^0.8HsnksUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0JoZxQ$ UadnzDۂlgN\ybHgV*䯛d c  V']Y gЛŗYyr8XO㒰.T1*@(XRă$qX!UǪo{2Uշ& c >w#JXRĩbHk@$qX!V3C;{W\_laGq[?*@ ,\b@p8`9+2d0*<47=ʐ&${` `aaD1׌43qOX|aamUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSn?nJ"r+&5\M@C))r"קi"ˌrד-Kҋq{goRR܏tcX܄/9 ^#\n _5A=Ғ=yd(1&;tOS g5[nx‹J:WooIӼaGOܭILUڣ 7bkngS-i"D$?8@VqtY޴1gn j^yȬr7܏tMi1nVa!sR[åtH1{sR[=[L9cjix%7V褢'"ˌrŒ (Pz #pFs'c?2rsa/Rd9\f gN\xʐgjIWFA=|^:ªܙڪgN\xknJ\*@BDe96dsb3Y**]v8'i4\D^kP1+tRP r`0 ^I@/q}$Wy8 34RܺaXh49Lj\ڪdVX^Zܧ[X+tRR:YȬu`MGIMc\IKv5hϚO۵%ڪd"ThDyj@/q}ɟW</q}ɟ9r8 ^?-^@B#gf hrUh2뤈CU{g ^I{3G:Wh*{?= gg<'8)R_)Ec Ţ- "ˌr:Wj35~|5KnJiEګ,qy,/B)uYQ"ThE#aj\+p?=mUUUUUUUUUUUUUUUUUUUUUUUUUUUS?2|6+q5tRYx'\`)w+nj[?8.lVk))r9ٳ\ԸsR[?3Nzv:չ5/qÑX^ްm)5R%ڪmIKF/ ၀j\ih3@V9qF&B5Y3` b!e?{J `c7g/c=V 0"P Lp(0 ş1&C8g(J x d`'2eR+r+# ɖ{?Z+@ xDʔ,aXU0h ̳&AԸ3c'.W<5t ghcXo gf h UL849<g(J ?@QX$Ã@Xh@1@p`o| h3(&8xMϘ!ɖK?,[?-t ̃AT?k0c@^zD^A9 j\ie+p?= gX^f^ ၘ  \Xo@^Lж{пn> \窲"UHL'pgX^Q"ˌr0 2/ )RFX$4hŰ4 Tj%D "@43UxrB),,0& ϕ)(Ȭr7܂cڪcXܛ؇ȯ ENw&5\M@CqKEcN),7ыys|-9ing#rNZTgZ*[Ja\sR\_mN|6+qևnIMӜ^*|-=yY1'yO6{5/MvǚsR{TgZ*[J{Kt 楛󋞫,.lV\lm0캏dr7+ۖ*Icg7Wg|6tNAk!QS{%{1p5[&o c]+6o4McW ڿ5/U¶5{4kX5woR.lV-9o5/tbur\&"Hyk^g?\oto݄*=eqy5Q/Ʊ[?^+9i<=W ڻYx'ԽыALo5.#,I.@H5^ MC9h N"@ *PpVF8 ?=O͸&dQR3c'.W=W ڴ50c z V̙W ڴy1CgN\xkHHL&j&B?၀j\1+P$Lih3@GIC!Pv0c@^zBx dfdaay@(K4Hp 4#J3 V6v-y,/(bL f &g@ɐg/c=V MϘ! @^p 0`A7>bLfLj\uʯtQGIC ɐ?ׄz,y{ LRX.< ` ̙sR{2f &g@ɐ?t0P^BI@^j2MϘ!S4*iMh[?WP#ƗDi@2V Ը3)RFLtBD3jQ,4yb43UxrB),,0& 9h N{UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSn?|o7rJ/97 sqW MsRKDۦ!$?,$ 9cr8!MAʇeԾ7zƷpY;quUSc5 5 i+(ƱEqyC.B|*OZbzorX)ÚZ&j^&AijOVò^2VYAć+bps?ۻI枖:oZ%޴Ը c j\5|tU{gY1+0% V(8YYh (8p4 (8zŢEptQis&Y5. HyPAć+H .Ać*OgAć+H $< DCUk1MZ3Epp`(.)R7.hYiel@i:47VGpz "HH% ($7U`ѣԸ3'O@@`h?'/:qr;MfȾQ7_@קtZ7lօh Ef@@4Re"X=%Q!y`x=I D!2%7ў+@p5Jel4ցp3@@Og51l ,e|w#ܮMzޛ/,V7$4<"@Љ ѽ\\*C|1#^zkpZz;{HW0«a꫊fLd9:zpg+gi 3Mᦴ #?k0c 5\ 6ZMhp@# p72dK? ᆻapfp3@@.4{!Z3/3|7f֍ªmЅ;.Fq/&f) )$F/g^q+)Y& 30Z0hLɐw5. y6a⯀xlw<& \ 3&AԸ3'O@@3Օ'O@@`o%<4\pgW>&Znp|UV3UxrB),,0& U)B =cjcrn7b4BfEӜX7rJ/97 x[i/^w,^QX7O|9yȬux$GMps qyCK+ԽӜ^*Qi^uʯ{lV׌-07ǑHy2RV'GOIhMτ|ZO4Ot;c#K` հVtJx$GMpv]G|kbK|/n8—旂Sz-'*"@e7(/9Խ%6-'*)!}|*OZb㇕+SXbIG쁮j^*汰f%7N`7[<5pnzH*b#@7+s^0 knH_9f[禵˂cX%' XQae7$/D11mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0JoZXaM Fd熿"L$J3,/$Dȓ PV3c'.W?$ gN\xk#I_Q ɔDTK5`$qX! j\r/as5ʫnH_t_ ځa"[$ E$X, 竆r/&<%bLDc?E$X, 竆E0վ6$ i𰼈e#x`fi- ?E7ksR2$h4ehe|˅v5*䦒,m67Xٵ7 aS8,-GOMIc'C75KcNØ7U%i,lzN,4 ֏5^S-O^.ր+qÖɍ|0A*qJrcjw%W:K@ŗhzJ|nv/ vƱ^r6l㦧*<a"G3 ck:oZMMc\Ծ '|t˚oӴØ7`r 3 cv'75ť(&\Bb$L%8X)Fx]i59>wYJVs!a3'Yy^r֚j:3bX7r\toRxNcXܭxBu/ugk9qt޴6Szܚh"䒹K 3;@""DTB,q@~zH 10r3c'.W=%8H1+'k?2rsg 4$$U%ݦLG+H*3.J󎋍\&3UUUUUUUUUUUUUUUUT u{>orwt^UnLmUUUUUUUUUUUUUUUUU3c'.W=%D㦢0qr'у~n1+͢qQg;J*50,@MQiOA%8驁m,l'56m͢qQ,l'5y8(*@-%VLص 5 HM%W!gj!f-DgIT6ͯhKY;5=7%Ft V"O=XXa&  Lx cǵ*0h L~deZ@h LyMh[?,@V 0`BG23bǖȔ"Dڲ \yj= >v J|ZO4Ol4{ڪg]KcnLgv4DGIU;grVR!k:oZML+{N5/"" %W;<4$;qgj5#Cudw5,N·uUF-98ۢ3ܚqK4x,XٴN:j#4@<aa"@e Xx҄ 9i<> '`6l㦠+r+{N5/"#8@iBEQ.HLA&3c'.W>Oq7G\ŤD{?2rsQ%W(KG,@,@5r/@cɔ2aJX0C"5$hnUyNㆥlCn@Ori,wIcf8騌n¢H*rBdJ 151XqVyDH2|<ۍӳN]Y˚ܟ;ꬓw[U4 .<%H<&p@# "5$hnUyNㆥA.Fg]Y'Jy7K T3``;7qVr%W?={yj^U0E65E.@KX5(P^S *qgԸ3#Q"F%W8jX4꫁@Vx^m M8ܥZ<N,l'5Tp dK?1ݤk:oZԍ< '|U%|',,0HL PlnJaU%~4!"$&D?frS ,m<@iBEQ.HLA, |',,0HL PlnJeFhE#x=I D!2%,KXR DyR 5K*5!G-pgj :7sy7 U54t6mx='MA1dܦZ"+ګ,s4wb5!=gj9rT  =[gnq} iq01"O y5PXٴN:j#C6mx='MC{PFCx=I D!2%%KtXٴN:j# riJ 6crn7b6Nr.I+7rJ/97 XwV7Kƈ*qQX5-2$h-O^.ր`s qyCXٳ`8bS,e^ͯhg55sR,Q.k1+|lm05>w(&\Bb$L%8X)Fx]i59>w[+cXܢ8!R{|&qW/3ZRGCt{VRp˚mOiakHC..sR":..րsUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0JoZMJ,(QR 7 g=XXa "{?2EhX\6l㦥 gN\|;gH*BD uXn&p@#~ܤ%yEU{ڪg:UѽO|7Wκ/p&1+͢qQ8N?J7ty|'b)RF&([?2rsQ%W(Xٳܞ͢qQ8MA IU6-sMpqaDFIU;c?k^QU*q|UyNpgdF"D ՒJ)p԰h<=;:WE-98ۢ3ܚqK4x,XٴN:j#4@!kj_#>wx%W,mUUUUUUUUUUUUUUUUUUUUUUUU30hIɐw5. nIcwqVi:W1{{ᤴdkIU;1mW^gr.,梱ܟ;t [f;iQ%W KkIU;s?Ez Ly2B,n\M -' VW_ 0Ǔ(d-Ɣ&8`4HqQ(*T3rQ%W8l4o @(͢qQ8݅OI D!2%*qEeH",\yTJʕ 8} ܴIU; wP $htF7aP*@3<aa"@e Xx҄ ʍЊG~$\L9yQ%W(§o;5H*rBdJ 1a|RjʍDHha *@G*P?UyN5@3$$UȔc?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUULƫn5/Icf׃t޴9ryG˂j+U% x,krsRK)p>StgȬtXo6o {fZSy棡͜V٨ܔgj"O>SX䢖-%RXgzH*rBdJ 3SX䢖-%RXx<$\X43,(;xa5Y#Cue(IT6lcMlK?cngJݜMh[?k#Q"FQK ,m< ţg0 o;`j\r/5J)aKIT6<$\L9(-%RXx<$\X4{rݛZ7Z)YY6[5|')3ReKL@iBEQ.HLA&ni*.<$\X43,(;xa5Y#Cue(IT6l%7w5. ]+vs35lg0k?Y[?3Icf8騌n-ܘԼhw*@KX?=1"nBE#Ǔ({?s^0 =cY6Nr.I+cڪcXܛ؇ۋ #^IE&!M 5/9;O:Wki& k|˂/H9nj^ɽh9\~qqo0Lovn %g&Uo/K:W-hŁ\,[Z 8`s qyCιU^uʯ|t˚ح\t05Czr\#>nuʽ> ,^|$ ]7[w'Y[Ӵm|&Iq|qѾj_Iah<y*Ac H*3UVŝ7 1bL`@ ,,2?@^^d?pgo;|6+q|Up951uʯx X`o| b@Y Y2d03@#grV(0 ş1&C0Xp`o| Quʯx X/2eԸ3T"TZJ-I DH*"E$0Rʕ(TC< BG/K:WH @@^ gi yR Ri*r8nBl$$U "HH$ (8*PN+bw;qy_$` UU{]k<1s?NIy6ʕ$XK2dK?a98 *Ta*@(ܪV^wkCahcw 4Áa.\2-ܧjaSb*XL UeqӍAJV5\6g\ܪBa+/;ahcw 4ÁaR*ri %+Oܮ 8m4MoZiܞ-NZ\+7pAHp,8u/*@O;qֆ Ţ7&nRR-MC^O5/*@O9K+mʫ 'aѾ+/;ahcw 4Áa_EDhɧ>kr' $TOKDۦmʫ $TO-hnsZ"Xln !Xp0%=h`,N+MdW!;K7L1$8 'w+YyrMHgY%cph4 Á  d -vcph4 ÁD2' ad!;.xV\IpOY% cph4 ÁoUeqIep2' h @(3K7OLӍLn !Xp4" NW$zNn7y[ʯ7 ɧ CagN0E7xV,ӍLn !`p_Kb+`Ңa0+ܚqI$8 A_$WDG>I,v34rAHp,8?!1'N\t$;qܚqH3i@cɔ^heg@\qK=U{=az*5!G-`GQ LiBG.ba"gj!ko5/6zNUUUUUUUUUUUUUUUUUUU3c'.W<)SCU{!V`ƁSEds ,,22HHLvC(sw]k4hx4y,/@`5`00K?Up܅h "HH%DTI- ^@yR o*k7O '4rx.ޓ=ɧY ;qy_$Mޓ4\qH,015ɸ݈/.ʯ;D㦣IE&!QXٵ כ|sUoZ޴3no^V5;qyj:|ԼV:<^|7 eW53KDۦCzr 8Nqxaו 棧bZO4Oٷ 5/hRpv5o6o^ViuCVKӹ>6+rޓޒZ;U S%zꬓvƱ^rU{.\GO|uʽ7NcX9~#g\ 'Mkt; S%zJZBoQeOr[7icӗVr8ak97*R8Ux*;L9cr#VV>,z\xc? @Y8@ɐ?a98 ,%GH8|' @a!H*@HPQK@H?=y,/9aj\Y ށ*Lpg"TZJ-I DH*"E`,8)J*!KryyM@OVֹpZ{G݄)C< BG`pb|U"Ee<1 RBEp , rV d`U atɜ$XK AӜCgȾWHc? Tj$D P$Ls?=KʍD$L &P0@#TQ ZK6Zzuʽ7MC4ֆm8n/43GO^rf^ V:0S\nI+97 y*;.坸t޴7ɍKDݧ+ |%pt!qfg"MWb097+aw9;O :1mAX`+݄: .ksRuʽ<^òKt; l5/^Wc'.LoIG@Zc(꧊iQL:.7sOͺi(Լ |ni5/5--)*et!B\Խ%5sXӽlUˬ2 >K.yM%3v~ssZ"3UUUUUUUUUUUUUUUUUUUUUUUUTab]e26*e^Tz6*e^@ \:Wjb]eGuʽ4NU+'\{?=\D^UnV5|ԽhYr*)RF@҅J]Ei4/ۏzƹ\U{c?k VTj%CF,[ sRab]e2*r8nBl$$U "HH$  TBpb?|CqW.ιU4s$x+tYuSͺi):ƹrғU^ )Hr:s0_ ᫃s&)4lUˬ {?Y[?IU{Ƒ& O7וƱ^r ieԾ7`L 8$ ;X5/M棦5[ιWakCzru/I林kg.&j^uʽ7MAրv:9ug.ksR٫+wai<Զ7|:n /ƱEqyCr+ fYxNiQpNK|༜*UV7oM8m=heTsnkxX 5/Mt1[ו ֏+o5zN05^ MC;qyS|?ô"$HEJ.'aa4\ t3ەic'.Wܡɽh9Vd爑"P@!"8`ff a8 "P@!" փc?UUUUUUUUUUUUUUUUULZJ7 *yEVUUUUUUUUUUUUUUUUS? صNJTQdrl|'b#iQ ɔ1+Zxo)Ey˕ 8y2-G*@I tzgN\y2 =9r㇁IH<2c'.W=cFs𚮝- 'G](1+Da!@H4ygf a/@q^d;*@I,X1$H g+gh &Ppٓ8 (8yj@-%`w#H Ly2s.9vz@(L$qX!TːT%:$ ,=MHfъ]VTj%CF,[ sR|'@pe*X gjnO< &"H~&DeG ?361KʍDHha 1@p0! j\Yl"#ˍITS|ћ2pgj^\tnJsR^oZsROV( O%'qzVKG^W38d9Ş*.Q|/u .HLqP:zi ?ţg0ӸFƇ)BVSFh Ef3%熚j`>xUS|J/c?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUULƩi [\|!}GKvmC|/r6ogyhr˩zN]^68WӾj:|Լʪ-Qem).nGO}5[nJZyn 0TfwtFA[p[6o X+t3|o+4t!ykFrrJ"XT09`ƁQe"Ee̙sR  *DGKFNTӳ$<1@T.#H4R!W=Pd5L=;:a1CzH*rBdJ 3r/ $< "\D4QYA3 5l hp>Ş*.Q|/vQrzƍJ礴'pUӶ?jwHjv֊V`ƀMWNKBw A9,!Q-ȭ;Jv.[וs?UUUUUUUUUUUUUUUUUUUUUL˕"\yRb%`a0c(T#&p@#"\yRb%IgJ-I DH*"E`Rʕ(TCO!pVxPိUVKG^V)H*@I g"DK?*@G*P?cng5lgaazKʍD$L &P0@# &X/ gԸ3\q h *< LVDHL j\8`-} -sIh,Xӳ$<1,@h "TG@2燯(4qZ%8=;:a1CzH*rBdJ 3!X0@#$" qQe "HD"XgaaxKqd,@h X DB 3j\#-@iBEQ,<$HlJ9i<=7\!#$x`+|->xUו @R>zI?=H "8`,Y#-@iBEQ,<$Hl ʕ(TCO!pVxPိ@Vrx V*kx1`p%@V'* 䀭aa1C@RH X ?= h @e8$" qx HcJ*Y޴4\Ծ 'y(/t'l7KR.j^9^ 'zLn'g. 棧\..RYI,l۠5[ܺJZBKBu ӝ9>kq^Ԋˋ)JsR6mOtև5/&|9q4Mak.7sɍd+d4qZ&zJZBo ,\Ep :/1xá>ki)i R$\Ԋˋ)J1. 'r|&wZ8IM% Jo:+=Wz75 OԽ'*9RX5/&* Q/t'm%rs]) -sRkr5jd:/(x(νbV7d< BBcTCD$(~g\Ʃi R󋊪{-P84Q VZ1δ1CD$(xv5KH_4w@gahkGʯ7 VVZ9Ȭ*p@@0E" P'Lx HJgJ-I DH*"E`09!iM_1V1w P80Q dtE5/fm1H22`$D@O@5B#Ɓh( (8xxx(? c'.W<"Hj$D@i4<BzJ)C{a3FxDDyqrwLţ<""X NהCA|UyN!W>DD$\ۥ{+O|3nδԸ枭Ry/J$lţ<"".@j^QUIU;zzLţ<""< Lj^QUIU;}NLţ<""4Arwqda3FxDD@(܃*>N Z3" p$(=yD>!W=%W!4\^xM4RU찙ţ<""rA! *q |m)WJ^oVLţ<""DTBrUP@#1+8x@D$D%@XTI a/@C̙g V< ""] Uţoa3FyQ XbH&<ƀkqG-'}9|ͺi):na3FyQ"ThE#PqgkoZåi* J'De8g\1E,kq-+7uʯ{MG/)lţK8gix f853  )8g&P$D@ ۀP`7$2gDD@H`_@ @+.,,c[1qe;6Iւ;JNXH]sl|֋Lk|79qUyNZ92wA<%W 5|4r#t^S1$.6qi>kE-ѽyZx"6,ZO\O *T1nix%7*2gB !`R%B#@%G,@Bc#qD$XyTJ,P$Th*7 3QXHD*Tyb"GιU|4^S)zƷ$" U vaUyNA.y62:WHLў4HqQ.D冟s?`ga3Fx!"ǕD G v8g",\yTK1y2Oܜ?=^k0cA'g4"%uY*q?2eRaDy01E"c̅s&AԸ3gBE*p&>@(`b"%D.DǙ U3CQ*$gX$S.Dȁe`ɐw5. ţ>$CLMGR_TMPLOG fi fi #===================================================== : Update the call stack, and the PS4 trace formatter #===================================================== [[ -n $LE_INV_LINE ]] && LE_INV_LINE=" at line #$LE_INV_LINE" if [[ $LE_FN != *([[:space:]]) ]]; then CLMGR_STACK=${CLMGR_STACK%%+([[:space:]])} if [[ ${CLMGR_STACK##*${NL}} != $LE_FN* ]]; then CLMGR_STACK="${CLMGR_STACK}${LE_INV_LINE}${NL}$LE_FN" : If we updated the stack, we should update PS4, as well print -- "$PS4" |IFS=: read LE_SENTINEL LE_TID LE_RC LE_FUNC LE_REM LE_FUNC=${LE_FUNC#*\[} # Remove old function LE_FUNC="${LE_FN}[${LE_FUNC}" # Insert new function PS4="$LE_SENTINEL:$LE_TID:$LE_RC:$LE_FUNC:$LE_REM" unset LE_SENTINEL LE_TID LE_RC LE_FUNC LE_REM fi #======================= : Update the FFDC file #======================= if [[ -n $FFDC_DIR && -d $FFDC_DIR ]]; then print "\ ===================== clmgr Call Stack: ===================== $CLMGR_STACK" >$FFDC_CS_FILE fi fi if [[ $CLMGR_LOGGING == @(low|med|high|max) ]]; then LE_INV_LINE=${LE_INV_LINE##*\#} typeset OUT=$(print -- ${PS4/\$?/0}) if [[ $LE_FN == *\(\) ]]; then OUT=${OUT/\$LINENO/1} else OUT=${OUT/\$LINENO/$LE_INV_LINE} fi OUT=${OUT/\$SECONDS/$SECONDS} typeset LE_SPACER=$NL typeset LE_LAST_LINE=$(/usr/bin/tail -n 1 $CLMGR_ERRLOG) [[ $LE_LAST_LINE == +([[:space:]]) ]] && LE_NEED_SPACER="" if [[ $LE_FN == *\(\) ]]; then print -u2 -- "${LE_SPACER}${OUT}${TAB} ENTERING FUNCTION \"$LE_FN\" at $($HAUTILS/cltime)" else print -u2 -- "${LE_SPACER}${OUT}${TAB} ENTERING FILE \"$LE_FN\" at $($HAUTILS/cltime)" fi unset OUT LE_SPACER LE_LAST_LINE #if [[ $CLMGR_LOGGING == "med" && $LE_MIN_TRC == @(low|med) ]] || \ # [[ $CLMGR_LOGGING == "high" && $LE_MIN_TRC == @(low|med|high) ]] || \ # [[ $CLMGR_LOGGING == "max" ]] if [[ $CLMGR_LOGGING == @(med|high|max) ]] then unset LE_FN LE_INV_LINE LE_MIN_TRC set -x else unset LE_FN LE_INV_LINE LE_MIN_TRC fi fi k"oA םa םa֝a&bm./usr/es/lib/ksh93/aixeAA k'oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_ODM_fields_differ72_Non#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/odm/KLIB_AIX_ODM_fields_differ.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)70 1.4 src/43haes/lib/ksh93/aix/odm/KLIB_AIX_ODM_fields_differ.sh, hacmp, 61haes_r714 11/28/11 15:13:43 # #=head1 NAME # # KLIB_AIX_ODM_fields_differ - Compare two ODMs field by field and # report the fields that are different # to the third list argument # #=head1 SYNOPSIS # # typeset different_fields # KLIB_AIX_ODM_fields_differ "HACMPcluster" "/etc/es/objrepos" \ # "/usr/es/sbin/cluster/hacmp/etc/objrepos/" different_fields # echo $different_fields # #=head1 DESCRIPTION # # For the specified class, the ODM is compared between two # separate directories # #=head1 ARGUMENTS # # 1: [scalar] ODM class name # 2: [scalar] first odm directory to obtain the first copy of the ODM # 3: [scalar] second odm directory to load the second copy # 4: [by ref] list variable to add the differing fields to # #=head1 RETURN # # 0: success # 1: failed # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_ODM_fields_differ { . /usr/es/lib/ksh93/func_include typeset -n list=$4 list='' typeset -A ar1 ar2 typeset strip_quotes=true ODMDIR=$2 odmget $1 | KLIB_UTIL_LIST_array_load_by_token ar1 $strip_quotes "$IFS" '$1' '$3' ODMDIR=$3 odmget $1 | KLIB_UTIL_LIST_array_load_by_token ar2 $strip_quotes "$IFS" '$1' '$3' KLIB_UTIL_LIST_array_fields_differ ar1 ar2 list } ere k~(oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_ODM_get_odm_fields2_Non#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/odm/KLIB_AIX_ODM_get_odm_fields.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)71 1.4 src/43haes/lib/ksh93/aix/odm/KLIB_AIX_ODM_get_odm_fields.sh, hacmp, 61haes_r714 11/28/11 15:14:41 # #=head1 NAME # # KLIB_AIX_ODM_get_odm_fields - Print value of qualified ODM fields # #=head1 SYNOPSIS # # ip_label=$(KLIB_AIX_ODM_get_odm_fields "name=SERVICE_LABEL and group=rg1" "HACMPresource" "value") # if (( $? == 0 )); then # echo $ip_label # fi # #=head1 DESCRIPTION # # Prints the values of any field in a stanza that matches the supplied query string. # #=head1 ARGUMENTS # # arg1 - predicate literal scalar, string to pass to odmget -q predicate # arg2 - literal odm class name # arg3... literals field names extract # #=head1 RETURN # # 0 - success, found the fields from the class # 1 - failed, unable to find the class, or invalid predicate # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_ODM_get_odm_fields { . /usr/es/lib/ksh93/func_include typeset -i result=0 odmget -q "$1" "$2" 2>/dev/null | { shift 2 typeset field eq rest arg while read field eq rest; do [[ -z ${rest} || " $* " != *\ $field\ * ]] && continue eval echo $rest # eval strips extra quotes (( ++result )) done } (( result )) } '  k꺅)oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_add_vg_by_diskl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_add_vg_by_disk.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)75 1.4 src/43haes/lib/ksh93/aix/KLIB_AIX_add_vg_by_disk.sh, hacmp, 61haes_r714 11/28/11 14:54:59 # #=head1 NAME # # KLIB_AIX_add_vg_by_disk - Add a volume group to a list given the raw # disk device /dev/rd* # #=head1 SYNOPSIS # # KLIB_AIX_add_vg_by_disk listvar /dev/rdevtbsp1 "vg1 vg2 vg3" # #=head1 DESCRIPTION # # This function adds the volume group attached to device (2nd arg) # to an array of volume groups if that vg does not already exist # in the thirds argument to this function. # #=head1 ARGUMENTS # # 1: [by ref] list to add volume group to # 2: [scalar] device name to obtain volume group name for # 3+ [scalar] list of volume groups to not duplicate in the arg1 list # #=head1 RETURN # # 0: the device was found, and the list was updated # 1: the device was already present in the provided list of volume groups # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_add_vg_by_disk { . /usr/es/lib/ksh93/func_include typeset -n setlist=$1 disk_device=$2 shift shift existing_vgs=$* VG=$(KLIB_AIX_get_vg_by_disk $disk_device) if [[ -z $VG ]]; then return 1 fi for evg in $existing_vgs; do if [[ "$VG" == "$evg" ]]; then return 1 fi done setlist="$setlist $VG" return 0 } p k꾜*oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_get_pvidsdiskl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_pvids.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)67 1.5 src/43haes/lib/ksh93/aix/KLIB_AIX_get_pvids.sh, hacmp, 61haes_r714 6/13/13 08:23:40 # #=head1 NAME # # KLIB_AIX_get_pvids - Determine the pvids associated with a volume group # #=head1 SYNOPSIS # # vg_pvids=$(KLIB_AIX_get_pvids rootvg) # #=head1 DESCRIPTION # # Function echo's to stdout the list of PVIDs associated with the specified # volume group. # #=head1 ARGUMENTS # # 1: [scalar] volume group name # #=head1 RETURN # # None # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_pvids { . /usr/es/lib/ksh93/func_include VG=$1 typeset hdisk="" pvid="" rvg="" state="" PVIDS="" lspv | while read -r hdisk pvid rvg state; do if [[ $rvg == $VG ]]; then if [[ " $PVIDS " != *\ $pvid\ * ]]; then [[ -n $PVIDS ]] && PVIDS="$PVIDS " PVIDS="$PVIDS$pvid" fi fi done echo $PVIDS } funct k+o.םa՝a|֝a&.bm./usr/es/lib/ksh93/aix/KLIB_AIX_get_usergroupl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_usergroup.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)74 1.4 src/43haes/lib/ksh93/aix/KLIB_AIX_get_usergroup.sh, hacmp, 61haes_r714 11/28/11 14:53:55 # #=head1 NAME # # KLIB_AIX_get_usergroup - Obtain the group name for a user # #=head1 SYNOPSIS # # group=$(KLIB_AIX_get_usergroup "mattg") # #=head1 DESCRIPTION # # This function will echo to stdout the group name for the specified user # the group is the parent group, not the list of groups the user belongs to # #=head1 ARGUMENTS # # 1: [scalar] user name to determine parent group (pgrp in lsuser) # #=head1 RETURN # # None, echos output to stdout # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_usergroup { . /usr/es/lib/ksh93/func_include user=$1 group=$(lsuser -a pgrp $user) group=${group/*=/} echo $group }  kn,o םa՝a|֝a& bm./usr/es/lib/ksh93/aix/KLIB_AIX_get_vg_by_pathl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_vg_by_path.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)73 1.7 src/43haes/lib/ksh93/aix/KLIB_AIX_get_vg_by_path.sh, hacmp, 61haes_r714 11/28/11 15:26:04 # #=head1 NAME # # KLIB_AIX_get_vg_by_path - Get the volume group name for the specified path # #=head1 SYNOPSIS # # vg=$(KLIB_AIX_get_vg_by_path "/tmp") # if (( $? == 0 )); then # echo $vg # fi # #=head1 DESCRIPTION # # Obtains the name of the volume group for the specified file system path # #=head1 ARGUMENTS # # 1: [scalar] Filesystem path # #=head1 RETURN # # 0: success, stdout contains the name of the volume group # 1: failed, unable to determine the volume group name for # the specified path # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_vg_by_path { . /usr/es/lib/ksh93/func_include typeset path=$1 typeset filesystem typeset tmp typeset free_mb typeset pcnt_used typeset inode_used typeset pcnt_iused typeset mounted [[ -z $path ]] && return 1 typeset logical_volume= if (( $(df -m $path 2>/dev/null | wc -l 2>/dev/null) > 2 )); then df -m $path 2>/dev/null | tail -n 2 | head -n 1 | read -r filesystem tmp free_mb pcnt_used inode_used pcnt_iused mounted else df -m $path 2>/dev/null | tail -n 1 | read -r filesystem tmp free_mb pcnt_used inode_used pcnt_iused mounted fi odmget -q value=$mounted CuAt 2>/dev/null | while IFS='=' read name value; do value=$(eval echo $value) # strip the "" from any values in CuAt name=$(eval echo $name) # strip any whitespace if [[ "$name" == "name" ]]; then logical_volume=$value break fi done 2>/dev/null if [[ -z $logical_volume ]]; then return 1 fi odmget -q name=$logical_volume CuDv | while IFS='=' read name value; do value=$(eval echo $value) # strip the "" from any values in CuAt name=$(eval echo $name) # strip any whitespace if [[ "$name" == "parent" ]]; then echo $value return 0 fi done 2>/dev/null return 1 }  k-oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_add_vg_by_pathl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_add_vg_by_path.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)69 1.6 src/43haes/lib/ksh93/aix/KLIB_AIX_add_vg_by_path.sh, hacmp, 61haes_r714 11/28/11 15:23:49 # #=head1 NAME # # KLIB_AIX_add_vg_by_path - Add a volume group to a list given a # filesystem path # #=head1 SYNOPSIS # # KLIB_AIX_add_vg_by_path listvar /dev/rdevtbsp1 vg1 vg2 vg3 # #=head1 DESCRIPTION # # This function adds the volume group containing path (2nd arg) # to an array of volume groups if that vg does not already exist # in the third and following arguments to this function. # #=head1 ARGUMENTS # # 1: [by ref] list to add volume group to # 2: [scalar] filesystem path to find volume group for # 3+ [scalar] list of volume groups to not duplicate in the arg1 list # #=head1 RETURN # # 0: the filesystem path was found, and the list was updated # 1: the filesystem volume group was already present in the # provided list of volume groups # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_add_vg_by_path { . /usr/es/lib/ksh93/func_include typeset -n setlist=$1 typeset filesyspath=$2 shift shift existing_vgs=$* [[ -z $filesyspath ]] && return 1 typeset VG=$(KLIB_AIX_get_vg_by_path $filesyspath) if [[ -z $VG ]]; then return 1 fi for evg in $existing_vgs; do if [[ "$VG" == "$evg" ]]; then return 1 fi done setlist="$setlist $VG" return 0 }  k.oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_get_user_infol#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_user_info.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)68 1.4 src/43haes/lib/ksh93/aix/KLIB_AIX_get_user_info.sh, hacmp, 61haes_r714 11/28/11 15:22:29 # #=head1 NAME # # KLIB_AIX_get_user_info - Get the user group, UID and GID properties # of an AIX user # #=head1 SYNOPSIS # # typeset user_struct_var # user_struct_var ( # user="" # group="" # uid=0 # gid=0 # ) # KLIB_AIX_get_user_info user_struct_var "mattg" # #=head1 DESCRIPTION # # Obtains the user group, UID and GID of the provided user name and populates # the data structure passed in (by reference) as the first argument to # this function # #=head1 ARGUMENTS # # 1: [by ref] user data structure # 2: [scalar] user name to obtain info on # #=head1 RETURN # # 0: success, structure was completely populated # 1: failed, unable to determine part or all of the user # info given the user name provided to this function # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_user_info { . /usr/es/lib/ksh93/func_include typeset -n userinfo=$1 typeset user=$2 typeset group typeset uid typeset gid if [[ -z $user ]]; then return 1 fi userinfo.user=$user uid=$(lsuser -a id $user 2>/dev/null) if [[ -z $uid ]]; then return 1 fi group=$(KLIB_AIX_get_usergroup $user) if [[ -z $group ]]; then return 1 fi gid=$(lsgroup -a id $group) if [[ -z $gid ]]; then return 1 fi userinfo.uid=${uid/*=/} userinfo.gid=${gid/*=/} userinfo.group=$group userinfo.user=$user return 0 } $ k?/o{םa՝a|֝a&{bm./usr/es/lib/ksh93/aix/KLIB_AIX_get_vg_by_diskl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_vg_by_disk.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)72 1.4 src/43haes/lib/ksh93/aix/KLIB_AIX_get_vg_by_disk.sh, hacmp, 61haes_r714 11/28/11 15:24:58 # #=head1 NAME # # KLIB_AIX_get_vg_by_disk - Obtain the volume group name for the # specified device name # #=head1 SYNOPSIS # # vg=$(KLIB_AIX_get_vg_by_disk "/dev/rdevtbsp1") # #=head1 DESCRIPTION # # Echo's to stdout the volume group name for the specified raw disk device # #=head1 ARGUMENTS # # 1: [scalar] raw disk device name # #=head1 RETURN # # 0: success, stdout contains the name of the volume group # 1: failed, unable to find the volume group info in the local AIX odms # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_vg_by_disk { . /usr/es/lib/ksh93/func_include typeset disk=$1 if [[ -z $disk ]]; then return 1 fi # If the disk device is /dev/rdevtblsp1 then the CuDv entry is devtblsp1 typeset CuDvDisk=${disk/\/dev\/r/} typeset name typeset value odmget -q name=$CuDvDisk CuDv | while IFS='=' read name value; do value=$(eval echo $value) # strip the "" from any values in CuAt name=$(eval echo $name) # strip any whitespace if [[ "$name" == "parent" ]]; then echo $value return 0 fi done return 1 } ${uid k,0oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_get_fs_freespaces2_Non#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_fs_freespace.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)75 1.4 src/43haes/lib/ksh93/aix/KLIB_AIX_get_fs_freespace.sh, hacmp.assist, 61haes_r714 11/28/11 15:09:59 # #=head1 NAME # # KLIB_AIX_get_fs_freespace - Determine the amount of freespace for # a filesystem in 512 blocks # #=head1 SYNOPSIS # # freespace_in_mb=$(KLIB_AIX_get_fs_freespace /tmp) # #=head1 DESCRIPTION # # This function determines the amount of freespace for the # specified filesystem and echos that result to stdout # #=head1 ARGUMENTS # # 1: [scalar] name of filesystem to determine free space # #=head1 RETURN # # 0: success, freespace is echo'd to stdout # 1: unable to determine filesystem freespace # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_fs_freespace { . /usr/es/lib/ksh93/func_include typeset fs=$1 df -m $fs | tail -n 1 | while read tmp available freespace pcnt_used; do freespace=${freespace/\.*/} echo $freespace return 0 done return 1 } FS=' k62oםa՝a|֝a&bm./usr/es/lib/ksh93/aix/KLIB_AIX_mount_fs_for_directoryn#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_mount_fs_for_directory.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2009 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)60 1.3 src/43haes/lib/ksh93/aix/KLIB_AIX_mount_fs_for_directory.sh, hacmp.assist, 61haes_r714 1/13/09 16:24:51 # #=head1 NAME # # KLIB_AIX_mount_fs_for_directory - Determine the pvids associated with a list of volume groups # #=head1 SYNOPSIS # # KLIB_AIX_mount_fs_for_directory vg directory # #=head1 DESCRIPTION # # Attempt to mount the filesystem on a volume group containing # the directory path # #=head1 ARGUMENTS # # 1: [scalar] volume group name # 2: [scalar] directory path # #=head1 RETURN # # 0 - success # 1 - failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_mount_fs_for_directory { . /usr/es/lib/ksh93/func_include typeset VG=$1 typeset DIRECTORY=$2 if [[ -z $(lsvg -o | grep $VG) ]] ; then varyonvg $VG 2>/dev/null if (( $? != 0 )) ; then KLIB_WAS_log_message "WAS ERROR: Unable to vary on volume group $vg." return 1 fi fi # Look for an existing FS on the volume group that might contain the directory and mount it typeset mountpoint for mountpoint in $(lsvg -l $VG | awk '$2 == "jfs" || $2 == "jfs2" {print $7}') ; do if [[ $mountpoint == ${DIRECTORY:0:${#mountpoint}} ]] ; then if [[ ${#mountpoint} == ${#DIRECTORY} || ${DIRECTORY:${#mountpoint}:1} == "/" ]] ; then if [[ -z $(mount 2>/dev/null | awk '$3 ~ /jfs2*$/ {print $2}' | grep $mountpoint) ]] ; then mount $mountpoint 2>/dev/null if (( $? != 0 )) ; then KLIB_WAS_log_message "WAS ERROR: Unable to mount filesystem $mountpoint." return 1 fi fi fi fi done if [[ -e $DIRECTORY ]] ; then return 0 else return 1 fi } hen  k21ojםa՝a|֝a&jbm./usr/es/lib/ksh93/aix/KLIB_AIX_get_pvids_by_vgsctoryn#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_AIX_get_pvids_by_vgs.sh 1.2 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2009 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)31 1.2 src/43haes/lib/ksh93/aix/KLIB_AIX_get_pvids_by_vgs.sh, hacmp.assist, 61haes_r714 1/13/09 16:24:52 # #=head1 NAME # # KLIB_AIX_get_pvids_by_vgs - Determine the pvids associated with a list of volume groups # #=head1 SYNOPSIS # # vg_pvids=$(KLIB_AIX_get_pvids_by_vgs rootvg was60_vg) # #=head1 DESCRIPTION # # Function echo's to stdout the list of PVIDs associated with the specified # volume groups. # #=head1 ARGUMENTS # # 1: [list] volume group names # #=head1 RETURN # # None # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_AIX_get_pvids_by_vgs { . /usr/es/lib/ksh93/func_include VGS=$1 PVIDS="" for VG in $VGS; do lspv | while read -r hdisk pvid rvg state; do if [[ "$rvg" == "$VG" ]]; then PVIDS=${PVIDS/$pvid/} PVIDS="$PVIDS $pvid" fi done done echo $PVIDS } sage " k3oםa՝a}֝a&bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_lsactivefsctoryn#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsactivefs.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)20 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsactivefs.sh, hacmp, 61haes_r714 11/28/11 14:56:49 # #=head1 NAME # # KLIB_HACMP_AIX_lsactivefs - List all active filesystems # #=head1 ARGUMENTS # # None. # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_lsactivefs { . /usr/es/lib/ksh93/func_include typeset ERROR_IF_ARGS=$1 if [[ -n $ERROR_IF_ARGS ]]; then return 1 fi LANG="C" FSS=`mount 2>/dev/null | awk '$3 ~ /jfs2*$/ {print $2}' 2>/dev/null` if [[ $? -ne 0 ]]; then return 1 else for FS in $FSS; do echo $FS done fi return 0 } ; do  k8o}םa՝a}֝a&}bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_lsvgivefs#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsvg.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)24 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsvg.sh, hacmp, 61haes_r714 11/28/11 15:00:50 # #=head1 NAME # # KLIB_HACMP_AIX_lsvg - List all LVM volume groups # #=head1 ARGUMENTS # # None. # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_lsvg { . /usr/es/lib/ksh93/func_include typeset ERROR_IF_ARGS=$1 if [[ -n $ERROR_IF_ARGS ]]; then return 1 fi LANG="C" VGS=`/usr/sbin/lsvg 2>/dev/null` if [[ $? -ne 0 ]]; then return 1 else for VG in $VGS; do echo $VG done fi return 0 } do kx%<oםa՝a}֝a&bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_varyoffvg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_varyoffvg.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)28 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_varyoffvg.sh, hacmp, 61haes_r714 11/28/11 15:07:10 # #=head1 NAME # # KLIB_HACMP_AIX_varyoff - deactivates given volume group via AIX varyoffvg # command # #=head1 ARGUMENTS # # 1: [scalar] volume group name # # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_varyoffvg { . /usr/es/lib/ksh93/func_include typeset VG=$1 if [[ -z $VG ]]; then return 1 fi LANG="C" /usr/sbin/varyoffvg $VG 2>/dev/null if [[ $? -ne 0 ]]; then return 1 else return 0 fi }  k7oםa՝a}֝a&bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_lsactivevgctoryn#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsactivevg.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)21 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsactivevg.sh, hacmp, 61haes_r714 11/28/11 14:57:43 # #=head1 NAME # # KLIB_HACMP_AIX_lsactivevg - List allactive LVM volume groups # #=head1 ARGUMENTS # # None. # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_lsactivevg { . /usr/es/lib/ksh93/func_include typeset ERROR_IF_ARGS=$1 if [[ -n $ERROR_IF_ARGS ]]; then return 1 fi LANG="C" VGS=`/usr/sbin/lsvg -o 2>/dev/null` if [[ $? -ne 0 ]]; then return 1 else for VG in $VGS; do echo $VG done fi return 0 } do ktF;o^םa՝a}֝a&^bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_mountvevg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_mount.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)25 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_mount.sh, hacmp, 61haes_r714 11/28/11 15:02:07 # #=head1 NAME # # KLIB_HACMP_AIX_mount - mounts given filesystem via AIX mount command # #=head1 ARGUMENTS # # 1: [scalar] file system name # # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_mount { . /usr/es/lib/ksh93/func_include typeset FS=$1 if [[ -z $FS ]]; then return 1 fi LANG="C" /usr/sbin/mount $FS 2>/dev/null if [[ $? -ne 0 ]]; then return 1 else return 0 fi } GS kh6o~םa՝a}֝a&~bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_varyonvgg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_varyonvg.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)29 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_varyonvg.sh, hacmp, 61haes_r714 11/28/11 15:08:15 # #=head1 NAME # # KLIB_HACMP_AIX_varyon - deactivates given volume group via AIX varyonvg # command # #=head1 ARGUMENTS # # 1: [scalar] volume group name # # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_varyonvg { . /usr/es/lib/ksh93/func_include typeset VG=$1 if [[ -z $VG ]]; then return 1 fi LANG="C" /usr/sbin/varyonvg $VG 2>/dev/null if [[ $? -ne 0 ]]; then return 1 else return 0 fi }  k:oםa՝a}֝a&bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_lsfsnvgg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsfs.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)22 1.4 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lsfs.sh, hacmp, 61haes_r714 11/28/11 14:58:49 # #=head1 NAME # # KLIB_HACMP_AIX_lsfs - List all JFS* filesystems # #=head1 ARGUMENTS # # None. # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_lsfs { . /usr/es/lib/ksh93/func_include typeset ERROR_IF_ARGS=$1 if [[ -n $ERROR_IF_ARGS ]]; then return 1 fi LANG="C" FSS=`lsfs | grep -v "vxfs" | awk '{ print $3 }' 2>/dev/null` if [[ $? -ne 0 ]]; then return 1 else for FS in $FSS; do echo $FS done fi return 0 } 0 } do k5oxםa՝a}֝a&xbm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_odmnvgg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_odm.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)26 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_odm.sh, hacmp, 61haes_r714 11/28/11 15:03:08 # #=head1 NAME # # KLIB_HACMP_AIX_odm - List volume group hosting the given filesystem # #=head1 ARGUMENTS # # 1: [scalar] file system name # # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_odm { . /usr/es/lib/ksh93/func_include typeset FS=$1 if [[ -z $FS ]]; then return 1 fi LANG="C" /usr/es/sbin/cluster/events/utils/cl_fs2disk -v $FS 2>/dev/null if [[ $? -ne 0 ]]; then return 1 else return 0 fi }  kt4oםa՝a}֝a&bm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_lspvnvgg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lspv.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)23 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_lspv.sh, hacmp, 61haes_r714 11/28/11 14:59:42 # #=head1 NAME # # KLIB_HACMP_AIX_lspv - List all physical volumes (hdisks) for given # volume group # #=head1 ARGUMENTS # # 1: [scalar] volume group name # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_lspv { . /usr/es/lib/ksh93/func_include VG=$1 if [[ -z "$VG" ]]; then LANG="C" PVS=`lspv | grep -vw "None" | awk '{ print $1 }' 2>/dev/null` else LANG="C" PVS=`lspv | grep -w $VG | awk '{ print $1 }' 2>/dev/null` fi if [[ $? -ne 0 ]]; then return 1 else for PV in $PVS; do echo $PV done fi return 0 } "$VG" kw9ogםa՝a}֝a&gbm./usr/es/lib/ksh93/aix/KLIB_HACMP_AIX_umountgg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_umount.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)27 1.3 src/43haes/lib/ksh93/aix/KLIB_HACMP_AIX_umount.sh, hacmp, 61haes_r714 11/28/11 15:05:48 # #=head1 NAME # # KLIB_HACMP_AIX_umount - unmounts given filesystem via AIX umount command # #=head1 ARGUMENTS # # 1: [scalar] file system name # # #=head1 RETURN # # 0: success # 1: failure # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_HACMP_AIX_umount { . /usr/es/lib/ksh93/func_include typeset FS=$1 if [[ -z $FS ]]; then return 1 fi LANG="C" /usr/sbin/umount $FS 2>/dev/null if [[ $? -ne 0 ]]; then return 1 else return 0 fi } d k~9oA םa םa}֝a&bm./usr/es/lib/ksh93/availabilityAA koT<םa՝a֝a&T<bm./usr/es/lib/ksh93/availability/cl_amlibuntgg#!/bin/ksh93 #---------------------------------------------------------------------------- # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # #---------------------------------------------------------------------------- # @(#) 7d4c34b 43haes/lib/ksh93/availability/cl_amlib.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #---------------------------------------------------------------------------- # Global Definitions: #---------------------------------------------------------------------------- PATH=$(/usr/es/sbin/cluster/utilities/cl_get_path all) export PATH # For Availability metrics tool, log file by default is /var/hacmp/availability/clavailability.log export CLAM_LOG_FILE_NAME="clavailability.log" # Fetch the CLAM_LOG_DIR from HACMPlogs ODM CLAM_LOG_DIR=$(clodmget -q "name = $CLAM_LOG_FILE_NAME" -f value -n HACMPlogs) [[ -z $CLAM_LOG_DIR ]] && CLAM_LOG_DIR="/var/hacmp/availability" # Create a log directory, if it does not exists export CLAM_LOG_DIR [[ ! -d $CLAM_LOG_DIR ]] && mkdir -p $CLAM_LOG_DIR > /dev/null 2>&1 export CLAM_LOG_FILE="$CLAM_LOG_DIR/$CLAM_LOG_FILE_NAME" #Exporting the tags related to Availability Metrics # Tags related to ROHA Assesment, acquire and release export AM_ROHA_ASSESSMENT_BEGIN="" export AM_ROHA_ASSESSMENT_END="" export AM_ROHA_ASSESSMENT_FAILURE="" export AM_ROHA_ACQUIRE_BEGIN="" export AM_ROHA_ACQUIRE_END="" export AM_ROHA_RELEASE_BEGIN="" export AM_ROHA_RELEASE_END="" #Tags related to application start & stop export AM_APP_START_BEGIN="" export AM_APP_START_END="" export AM_APP_START_FAILURE="" export AM_APP_STOP_BEGIN="" export AM_APP_STOP_END="" export AM_APP_STOP_FAILURE="" #Tags related to Service IP alias & dealias export AM_SERVICEIP_ALIAS_BEGIN="" export AM_SERVICEIP_ALIAS_END="" export AM_SERVICEIP_ALIAS_FAILURE="" export AM_SERVICEIP_DEALIAS_BEGIN="" export AM_SERVICEIP_DEALIAS_END="" export AM_SERVICEIP_DEALIAS_FAILURE="" #Tags related to Volume Group export AM_VG_VARYON_BEGIN="" export AM_VG_VARYON_END="" export AM_VG_VARYON_FAILURE="" export AM_VG_VARYOFF_BEGIN="" export AM_VG_VARYOFF_END="" export AM_VG_VARYOFF_FAILURE="" export AM_VG_SYNC_BEGIN_RG_MOVE="" export AM_VG_SYNC_END_RG_MOVE="" export AM_VG_SYNC_FAILURE_RG_MOVE="" export AM_VG_SYNC_BEGIN_RG_MOVE_COMPLETE="" export AM_VG_SYNC_END_RG_MOVE_COMPLETE="" export AM_VG_SYNC_FAILURE_RG_MOVE_COMPLETE="" #Tags related to Filesystem mount & unmount export AM_FS_MOUNT_BEGIN="" export AM_FS_MOUNT_END="" export AM_FS_MOUNT_FAILURE="" export AM_FS_UMOUNT_BEGIN="" export AM_FS_UMOUNT_END="" export AM_FS_UMOUNT_FAILURE="" #Tags related to Network Filesystem activate & deactivate export AM_NFS_ACTIVATE_BEGIN="" export AM_NFS_ACTIVATE_END="" export AM_NFS_ACTIVATE_FAILURE="" export AM_NFS_DEACTIVATE_BEGIN="" export AM_NFS_DEACTIVATE_END="" export AM_NFS_DEACTIVATE_FAILURE="" #Tags related to WPAR activate & deactivate export AM_WPAR_START_BEGIN="" export AM_WPAR_START_END="" export AM_WPAR_START_FAILURE="" export AM_WPAR_STOP_BEGIN="" export AM_WPAR_STOP_END="" export AM_WPAR_STOP_FAILURE="" #Tags related to site_up start & stop export AM_SITE_UP_BEGIN="" export AM_SITE_UP_END="" export AM_SITE_UP_FAILURE="" #Tags related to site_up_complete start & stop export AM_SITE_UP_COMPLETE_BEGIN="" export AM_SITE_UP_COMPLETE_END="" export AM_SITE_UP_COMPLETE_FAILURE="" #Tags related to site_down start & stop export AM_SITE_DOWN_BEGIN="" export AM_SITE_DOWN_END="" export AM_SITE_DOWN_FAILURE="" #Tags related to site_down_complete start & stop export AM_SITE_DOWN_COMPLETE_BEGIN="" export AM_SITE_DOWN_COMPLETE_END="" export AM_SITE_DOWN_COMPLETE_FAILURE="" #Tags related to node_up start & stop export AM_NODE_UP_BEGIN="" export AM_NODE_UP_END="" export AM_NODE_UP_FAILURE="" #Tags related to node_up_complete start & stop export AM_NODE_UP_COMPLETE_BEGIN="" export AM_NODE_UP_COMPLETE_END="" export AM_NODE_UP_COMPLETE_FAILURE="" #Tags related to node_down start & stop export AM_NODE_DOWN_BEGIN="" export AM_NODE_DOWN_END="" export AM_NODE_DOWN_FAILURE="" #Tags related to node_down_complete start & stop export AM_NODE_DOWN_COMPLETE_BEGIN="" export AM_NODE_DOWN_COMPLETE_END="" export AM_NODE_DOWN_COMPLETE_FAILURE="" #Tags related to rg_move_acquire start & stop export AM_RG_MOVE_ACQUIRE_BEGIN="" export AM_RG_MOVE_ACQUIRE_END="" export AM_RG_MOVE_ACQUIRE_FAILURE="" #Tags related to rg_move_release start & stop export AM_RG_MOVE_RELEASE_BEGIN="" export AM_RG_MOVE_RELEASE_END="" export AM_RG_MOVE_RELEASE_FAILURE="" #Tags related to rg_move start & stop export AM_RG_MOVE_BEGIN="" export AM_RG_MOVE_END="" export AM_RG_MOVE_FAILURE="" #Tags related to rg_move_complete start & stop export AM_RG_MOVE_COMPLETE_BEGIN="" export AM_RG_MOVE_COMPLETE_END="" export AM_RG_MOVE_COMPLETE_FAILURE="" #Tags related to rg_move_fence start & stop export AM_RG_MOVE_FENCE_BEGIN="" export AM_RG_MOVE_FENCE_END="" export AM_RG_MOVE_FENCE_FAILURE="" #Tags related to swap_adapter start & stop export AM_SWAP_ADAPTER_BEGIN="" export AM_SWAP_ADAPTER_END="" export AM_SWAP_ADAPTER_FAILURE="" #Tags related to reconfig_topology_start start & stop export AM_RECONFIG_TOPOLOGY_START_BEGIN="" export AM_RECONFIG_TOPOLOGY_START_END="" export AM_RECONFIG_TOPOLOGY_START_FAILURE="" #Tags related to reconfig_topology_complete start & stop export AM_RECONFIG_TOPOLOGY_COMPLETE_BEGIN="" export AM_RECONFIG_TOPOLOGY_COMPLETE_END="" export AM_RECONFIG_TOPOLOGY_COMPLETE_FAILURE="" #Tags related to reconfig_resource_acquire start & stop export AM_RECONFIG_RESOURCE_ACQUIRE_BEGIN="" export AM_RECONFIG_RESOURCE_ACQUIRE_END="" export AM_RECONFIG_RESOURCE_ACQUIRE_FAILURE="" #Tags related to reconfig_resource_release start & stop export AM_RECONFIG_RESOURCE_RELEASE_BEGIN="" export AM_RECONFIG_RESOURCE_RELEASE_END="" export AM_RECONFIG_RESOURCE_RELEASE_FAILURE="" #Tags related to reconfig_configuration_complete start & stop export AM_RECONFIG_CONFIG_COMPLETE_BEGIN="" export AM_RECONFIG_CONFIG_COMPLETE_END="" export AM_RECONFIG_CONFIG_COMPLETE_FAILURE="" #Tags related to configuration changes in a cluster export AM_CONFIG_CHANGES_NODES="" export AM_CONFIG_CHANGES_RG="" export AM_CONFIG_CHANGES_VG="" export AM_CONFIG_CHANGES_FS="" export AM_CONFIG_CHANGES_APP="" export AM_CONFIG_CHANGES_SERVICEIP="" #Tags related to split-merge events export AM_SPLIT_BEGIN="" export AM_SPLIT_END="" export AM_MERGE_BEGIN="" export AM_MERGE_END="" export AM_QUORUM_BEGIN="" export AM_QUORUM_END="" #Tags related to FFDC events export AM_FFDC_BEGIN="" export AM_FFDC_END="" export AM_FFDC_FAILURE="" #Tag for process monitoring export AM_AIX_MON="" #Tags related to SAP Smart Assist export AM_SA_SAP_START_BEGIN="" export AM_SA_SAP_START_END="" export AM_SA_SAP_START_FAILURE="" export AM_SA_SAP_STOP_BEGIN="" export AM_SA_SAP_STOP_END="" export AM_SA_SAP_STOP_FAILURE="" #Tags related to ORACLE Smart Assist export AM_SA_ORACLE_START_BEGIN="" export AM_SA_ORACLE_START_END="" export AM_SA_ORACLE_START_FAILURE="" export AM_SA_ORACLE_STOP_BEGIN="" export AM_SA_ORACLE_STOP_END="" export AM_SA_ORACLE_STOP_FAILURE="" #Tags related to DB2 Smart Assist export AM_SA_DB2_START_BEGIN="" export AM_SA_DB2_START_END="" export AM_SA_DB2_START_FAILURE="" export AM_SA_DB2_STOP_BEGIN="" export AM_SA_DB2_STOP_END="" export AM_SA_DB2_STOP_FAILURE="" #Tags related to Verification Assist export AM_VERIFICATION_BEGIN="" export AM_VERIFICATION_END="" export AM_VERIFICATION_FAILURE="" #Tags related to network up/down events export AM_NETWORK_DOWN_BEGIN="" export AM_NETWORK_DOWN_END="" export AM_NETWORK_DOWN_COMPLETE_BEGIN="" export AM_NETWORK_DOWN_COMPLETE_END="" export AM_NETWORK_UP_BEGIN="" export AM_NETWORK_UP_END="" export AM_NETWORK_UP_COMPLETE_BEGIN="" export AM_NETWORK_UP_COMPLETE_END="" export AM_NETWORK_UP_FAILURE="" export AM_NETWORK_DOWN_FAILURE="" #Tags related to Synchronization Assist export AM_SYNC_BEGIN="" export AM_SYNC_END="" export AM_SYNC_FAILURE="" #Tags related to RG Failover export RG_FAILOVER_BEGIN="" export RG_FAILOVER_END="" export RG_FAILOVER_FAILURE="" #Tags related to RG ACQUIRE export RG_ACQUIRE_BEGIN="" export RG_ACQUIRE_END="" export RG_ACQUIRE_FAILURE="" #Tags related to RG RELEASE export RG_RELEASE_BEGIN="" export RG_RELEASE_END="" export RG_RELEASE_FAILURE="" #Tags related to application monitoring export AM_APPMON_BEGIN="" export AM_APPMON_END="" export AM_APPMON_FAILURE="" #Tags related to config too long export AM_CONFIGTL_BEGIN="" export AM_CONFIGTL_END="" export AM_CONFIGTL_FAILURE="" #Tags related to AIX shutdown and reboot export AM_AIX_DOWN_BEGIN="" export AM_AIX_DOWN_END="" #---------------------------------------------------------------------------- # Functions: # # amlog_trace # amlog_warn # amlog_err # #---------------------------------------------------------------------------- ############################################################## # # NAME: amlog_trace # # FUNCTION: Writes INFO message to CLAM_LOG_FILE # # PARAMETERS: # Trace Tag used to generate AM report # Trace information # # RETURNS: NA ############################################################### function amlog_trace { [[ "$VERBOSE_LOGGING" == "high" ]] && set -x # # call clcycle to cycle the log file when its size reaches # maximum size limit before logging the trace # clcycle $CLAM_LOG_FILE_NAME >/dev/null 2>&1 DATE=$(cltime) echo "$1|$DATE|INFO: $2" >> $CLAM_LOG_FILE } ############################################################## # # NAME: amlog_warn # # FUNCTION: Writes warning message to CLAM_LOG_FILE # # PARAMETERS: # Trace Tag used to generate AM report # Trace information # # RETURNS: NA ############################################################### function amlog_warn { [[ "$VERBOSE_LOGGING" == "high" ]] && set -x # # call clcycle to cycle the log file when its size reaches # maximum size limit before logging Warning # clcycle $CLAM_LOG_FILE_NAME >/dev/null 2>&1 DATE=$(cltime) echo "$1|$DATE|WARN: $2" >> $CLAM_LOG_FILE } ############################################################## # # NAME: amlog_err # # FUNCTION: Writes ERROR message to CLAM_LOG_FILE # # PARAMETERS: # Trace Tag used to generate AM report # Trace information # # RETURNS: NA ############################################################### function amlog_err { [[ "$VERBOSE_LOGGING" == "high" ]] && set -x # # call clcycle to cycle the log file when its size reaches # maximum size limit before logging ERROR # clcycle $CLAM_LOG_FILE_NAME >/dev/null 2>&1 DATE=$(cltime) echo "$1|$DATE|ERROR: $2" >> $CLAM_LOG_FILE } RIFI l. oםa՝a֝a&bm./usr/es/lib/ksh93/availability/cl_amutilstgg    etacdinors "=Tfglmpu(),.:ADEMNORS[]_hvy-CFGILPbkw#%'014UV$2<>BH\jx{}+/WYq3589Kz|!*67QXZJ^; 8p#Pq# 0 $a=/*(:IN֔Tc?GnOLBEc2r *3` ,`0, )陹ԍSy8Q(8I HyG8@%%(Ex&"HX''a^nu*gzFWg=U+ng=U+G%(VkzFWVh窴ez53G Uj٘5RT U)00%La|`ap 8f!vf٘5RoUh\˧iJ*1j70,sU)0|Vz /oQUaE18&АST0G`` `Ge٘5C } u):wZ2ZCIoUh,2%fYCNV.]J1+Zf1fYAЕfE5Z21{z&4RR\b VU+QcL#c y6Ŏ V.]J1+BfE ;Xu+CzFV/oPbrQLMjhMw֦R,uHe ˩BUR3s\2˩F h\wה5bԯڡ>SAYfD2e7fc /oQ(QJ*튊Smey9:NJ*PoUhV'p FCئ>|o&p (qr!t32i/;e>S>k(tKFV3 ƙV";̰oT"%FN|Cm;uܞ;V# js1m0d-!FOZ R;DJ^fu;֯*hLQz>֣|Rlhz*zV#+\ު[!Q^j;V#\{o#{c c'Q֯*kԎ3R}F]Nʠ;^ϳ5%}Z;ޭv ޭlUB7TW—mY*@U GՒF T.bEVTEsU Gy|f (EIСy/'o1&_=%|aGEO5ZT>3)vfMuj?U(ܔaGyΔHd"$iEI @|D`@B:Q!5PΔHdX1k{m8;tCc1l`u%VJF2,@B&tBj[tءy/udc!r T.ymַ/m0b  jsҌV#]cvV]F]OXd Xso#x[.b1B:IB݆LN-_qӨTuIqKU ֯*jgtV] 9̺.wJ(?;̶hjF"1'¬F20Nj<_:Q!g-LNA;̶ [ NHd"$h @U eU(d 8RZudc!U ҉ anekbyo?ՒF T.gOZctLzKkRz88J2υXd a h @|D`@B Egs-Q @â#T.gkP7a#)KFWt&]l5RbuuC\RBʠڙ]welBs.RyC ;;̶hjF"1'¬F20gJ$2ub,ŰIз25Gai҉ ]D;tC!V#\s-ʭyC%Qӫ*"Ň9]HLDIз25CN< ^ tʈabR js;}Mze^ XԌD T.zQ|X9kw֊˨˩bsU 2F̶ٝF\XŮѪMuj?5Rbue)hB˭LN.}K]_yTS25#-;d̺Pst\k7%QyeCR15P>b,XŮx1Zyj[tأbeDB.LV:Q!bÜŮ=a^PFqc1l`U ҉ anekbyo?Մ =4c23'o1&_=%|a)=H@@Bg =4c3AYuu<&0I {m$o}ae =4c>T.gkP7a#)KFWt&]l5RbuuC\RBʠڙ]welBs.RyC ;;̶hjF"1'0I阸‘g<_:Q!g-LNA;̶ [ NHd"$h$ьCcǽl;Uk(³u%V9hLDIз25CN< ^ t< 5P>=k|a2/ QIF"=(=L:"0"0E[bLLD_;4<|a7NFZ+lUiOZctLzK{SvkU-x<\Z*jgR:5P샹R5Sn]e]LMuj?0etGծvVâ#T.|aEuO|6s}*ה?nծvVqkW K:"0Bww#AGW7]nT,_7tDaѪrziʝ1xEվt0FV"g5뷫\튭>)s}чDF\{3\+j>v0FfksJ*k|;zت=J2q@%v)pM>m&TCzOZPmli=^;+UٚfjZRGد @w[b,@M5ACNzI Z/VlUaI*A&fxYqw06+(0ޖ&=%`(i0Js |b, ;^T0aN3Zx ^;LeNj>wzj}ZlUa_;*5R wה;kgKZT%E_tP=)hΔH[ T s._;4<|a7ZT%E_tP=)hSl0|m[LfzV%*|ar,N-jA>)s}хs}чDF\A2[7Uu-Bo2F:IB݆LN-_qӨTuIqKU ֯*jgtV] 9̺.wJʭyB{5WR߹-H"3+8]Bj2w'yJڟlâ#T.|R.<U[Lf%}ZvkT4-F]N֯*jg8F[dFtjssʷtƙ*n{m$la}&+HNHdtI5'J$2uL2}i"0Eֆ/V08;̶h`pwl-7b]8;̶1Z.X(ai*0ˠΔHe1J{-LV<#"yt<҉ 4WetIrǕDqҌEվ" |i*{3]Z|*|R Ѫ7b F"1'FXs}&+BPU&'Bˠ[ MD,yTGDQt&rl-e]ޭqKZPmqK.F=F _fxEվ FJoȽZHÿޖ@LtX{-Qq@@,iF\Z*k|9[ B.(ĊwCe".Z-jA\,묋բ2"8FV=ޭj>>)s}чDFY}[R15P>o0s}&+BPU&'Bˠ[ MD,yTI\".t=Ћ2Wfk\R֯)T\R:5PF _fxEվ FJo[|`wԨ ZuƝeŭ^R6ÛZu!F$Pӿzt=ЋhUr"0Ek}uw#+_fk\튭>)lQNj=Y[|`;o,Мet+աG@员QHec+vkU-)ҔB#^n{m$lF;N\튭s}ãU 󌮜_;Bqӄ"0EУ3BtC*/VZbg]9v([5(:w7]nT.{l%_t=ÿz,.tY;mCAʘ w"AuzZ\.-jAl-7b\QQ˖]EQ4LQzai*∞\".Z-jA\1E,ӿJ$2%_t=}&+EUSl0|m>>[5iPٚڣ'3I5ը\. VU(ܔaYyΔHe1IE=Ћy1ZBubwD(˩H`怕*b:Q!2vR&XRN؁bΔHbh ]ӝNj,X@ł˝:Q!2vR&XRNNu9PcCO .q*{3\q^M9Eu0I*vlV8F>ٚH*\%PÿJ$2U0Eu J.Ћ.wyWhgHTa i+.uONQ]` NT#f-^D.LV;e1rNhPM^&*8Ijwl4RDf1S[Ly6֞pn y|Q1', |'sYH1Zw('1ΔHdar@]EQ&+EВs5}p 8RZҥ*%PMB+:Q!l5Rbt-̺ |Pӿ<—miR̕&r{JRѕ>=k|a2/ *vkQJ2UJ2MYZPmO\"0 utDaѪd*e|5WR߹&n{m$la㤚.W+Bjs._;2ӶJˡu9E)VyU(Of[=Z0b|`_fy%}ZkT4-F]N֯)TS.;]Fjsuyªg5+;]Bj2w'yTS;.u]nT/d*{d]ClHÿTe. ۾ FJ S$kd.LVI5ը\w#)\ZKza͊ÿQ&+HNHd"$hE=D T.bO]FXppg-LNA;tC)2J.]D,yTGDB.]D8FV=v_oVAݽZ (QS8ʠڙ)pâ#T/d*{d]ClH{-)\ğ:"0<\"$h\"$hYanekb(cL{-Q&+EUaǗBue"$h0sJzliFZ ŭ^UqKI'7lTRo7æ4(ٹ P[R15P=$.LV.LVx1:]v(҉ 4(Zub\ACO."ahEIsZ:Q!ƙ%P[ B.LVw-iR̕&)KFV&tBj[tءy/ҥ*(L R6[ nIx6iUfkZoQQ.{ TڅkWA>)e C4V;)Ltjssʻ3Gl UԷz 0b|`w& v1:2e}NReU&'\T>.T/Z ekxFZv[t.2*ה?nHqy'J$2ubwh ]=D T.bOLW|g.ub,ŰIз25G-JD4QU ahEIqXƝ:Q!2vR&X9%wʇ؄eW|e"$h`YsL)L5P b  js|e%JS'GRbO|(l5Rbt-̺ |QKR&Q2+T:sZeV`ΔHbh ]ӝNj,(`怕*9BDzw)ӝNj,{-NHbue"e:ըX=I>)$GanekbzZ2)ӝNj,{-#;tCeL)LsVd T- D RΧ5j=ÿu%VR&X:sZcԘ҉ &[l5Rbt-̺ |Pӿ<—m:2ӝNj,}[Sl0|m[L3]Z|+|e0Ҍu;sV{ƀ*.T2t0Muj?Z|ag >g$|(LN-_qӨTuIqKU ֯*jgtV] 9̺.wJZv^թX]Zy&X@BDz؁`Q phh(X,Ex9):;u!:Q!ޗLg >xӿQU F"1'. xE.u Ċ, .(F[L XsVsp]PULtS jsAH@@B$D 2sZ,.g-V"e:ը\ŞxҌEM^R6Ä]D T.eQqnbE ;u4T!QU hE\"&֯)TE˝AȕBu5P]EB.mjA\ \DNu9P^" ,9B*e&XM^R6ÔLtS js-s(i4T%,9B\B.,&֯)TE˝LD5fj]|U':ը^e-Pab5PphEa;]FXbU]FlUYJ;m3ME[b ]@M&"T\"!"T\eM&"TPӿ,9Bz* DNu9P2ЋiD Ur&X:sZU DMDuv'%zZkW )e CNu9Plz*ҊqEx9dwZ|`դgrkW ,&I̴".0BH&XMj-IBQ2kTo\B.,&֯)TE˝LD5fj[W|Re-Pn^O}|ʠ.]F"hU.&|*.u*.Q2kToMD&XMj-/VL&[2ЋiD Ur&XMj-Z|`@BZu-(a6yJ.X.wlh ]2JS'Y,B/5 0(pJ*TH HFE0ؕԱ @&jTeBrcmOc@Jq*R:֔q)&9Bzwe:ըZ/V`A DNu9P^" De֩2"hDX[-(`Χ5jQrsVhZE-( ;>TZ(aU aKU,&=2L{-S`y/Yg1>=k|a2/ V->oV|+|e0*WkNQ]nT.xoV|+|e0*Wj{cwU8&֜$Vso$Dzلc|`_f{z[d-}\TDzلc|`_f{z[d-T⼛[ ;Zǽ7iGº5PJ2UÊ\q^MV,;5Py0˦4P/U Ż3]ZQKN+ɵѪ-u1 s(iLVդ˫z2w%Й&=σ .X\^ J" H H(&V/Vs.ܖBd[ >4` B.D  *0(Q-u8*eS`C|T%hZA̺C'rZޭ L{-P\, B.D  *0(Q򩕸դ˫z2w%ЙTDzYuH r (h$IQBavf%`wz.U8&V#Uv^;nޭP,^$!ٚPy䣏evMWfkJ> FJqKB{3\( u1.L+lhLVՠIխw$%hZS+qY@<+qYB7E @Lclw[@y(ie] TDzZo;oʦ=xQt D Dz   %/`(^PSa5FNyJWh.Q]aynR WX6[eڣ'<'[5iPAKct8f_=2s^}m2QLiN+ɵ+w[5iPq^M@Ycʐ( `4p@4F2zKHX`t =5NP,SmL2&"@YB`>w,VEu0I*vvfg*Wja(X@ATH<L|RžL'ٚq^M@YcD0#>w,r(m.QQJ =5NP,SmL2H( d;H('ٚq^M@Yc8p "@F2xSl`^TeSm"h\q^Mi$HZ1m0d/9FuAоU8&&֭w*WkQz5;_f{z;blz* T"h^U&'DIG‘zc|`_fs"|q^MM[ U8&+GآcTvkT;BpQ^ &J>լ#H"2wѼ#]Pbw=/XGoV`@SmYb1/VB.9d&H1e.YX1m0d/'=8E+Gآc|`_fNz7cCG"L$"L(a2FٓQe0Ռq+Gآj>w.ޭL|a?ue*q^M@Y*Ye)hQˤclQGy|f (&Iж1:]v(iyKn`0`6[ nIx6oQSneVL]2s;t]Z@ VI]welBs.RyC <(&ILJ$2U8& P-8;tC%SmL2T@x`I@sJ$2U8& P,a$ &<:Q!y6e TDˠX*Wja(X# &H,\҉ N+ɵ0 ,xȆ$`2A(yt ;tC%SmL2H(,\҉ N+ɵ0 ,xP!H](ř+{^-L]S@sJ$2uM6b0|j>w-fJ׬|Tٗ(wb=EʧW9EuCH'('(&IZe iUY ޭv e ;bqqQJ$2lP|)Hyq(M$|)HyV#"h\*c!i$HZ9z*R4`tó/P/|(E$|(G;"h\2btM$|)XG5oV`C|آ>*.+=v*ftó/P/|(E$|(FŖQe0' Eж,k-4Q^aW]ZOblYe[ f_<_(PI(Q @|)Hy;"i8;tC=HZ@;tC!V#I% EpwDN&'DIG‘z:Q!Ye[i$HZ@;I8(R/V5RbtM$|)[so#xhYJWkkPN+ɵodb5Rbuծ!PҌ}lU0Q2J>wD0I8(R/VJ$1LN"i8;G*Wh|)BT⼛DIG‘z{7=7 V*q^MM[ U8&+['Qvi/[ٚ|}튭l:Q!y6G‘z:Q!y6"i8;2pQ^ dIG‘z{7=7f;9اA{b@0Q QޭNت ޭv $G‘zΔHd&J>դ?;;BpQ^ wbIG‘z{7=7f;q)ծ!PҌ|`@)$GΔHd' Ep:Q!NlPI(R/VF.dHZ.dIG‘z{7=7f;▣.|풾T/ZQP/|(E$|(҉ QSpQ^ ΔHbI% Epw#l5RbtN >աrMLN"k|n{m$o}j>w-LNz*QP/|(E$|(҉ l5RbtN >դ<҉ l5RbtM$|)Hy*WhrzwQÝ(E4b: PPӿJ$2U8&8(R/VB.y*Wh|)EQrǕ P@h$iJ$2U8&8(R/VB.  `,0pqJ$2U8&8(R/VB. TDˠΔHdq^MpQ^]E88840$r!<pwDJ' EhE\䂊]8;tC%Sm"h".X8C<pw*WhI(R/VB.y*WhI(R/VB.*@<0$IˠΔHdq^Mi$HZ-<L4DǗ@(T⼛DIG‘zZu,xP`i $]8;tC%SmI% EhE\ッCG"LSˠΔHdq^Mi$HZ-բЋ(UBHZ- ;tC'qpQ^]E:Q!Ye[pQ^]EwDBF2&J>բЋJ$2w1:&J>բЋJ$1,|`M$|)EQtg:Q!5RbtN >բЋpwD0I8(R/VB.J$2Ib]YU&'DHZ-<G$O.:Q!5RbtN >բЋcAH (Lyt<҉ apQ^]E@*'@(1:' EhE\ッCG"LSˠΔHc T"h".XAEO.:Q!5RbtN >բЋc8p "@yΔHc TI% EhE]8;tCjI(R/VB.J$2Ib]YU&'DIG‘zZu,yR$ H]8;tCjI(R/VB.  `,0pqJ$1LN"h".X@ATH<pwD0I4Q^]E88840$r!<pwD0I4Q^]EH(J$1LN"h".X8C<pw$G‘zZu@(&M$|)EQt<҉ wbHZ-$6 "h".ΔHb"h".ΔHbI% EhE]8(&U&'DHZ-ΔHdai$HZ-ΔHdq^M,F0EhE]8;tC%SmYb1/VB.9d&H1e.w# Q]m0dS<2ޭj> FJqHGL֩%+NUsز=;tC2'Ga,D44@1"wʎ0ŖJ0ΔHcTq@wD(˩QmkTo'TmwD(˩Qn+Z|a= R{lHJ$1LN+lZ|a= R{lHJ$1LN+qX&[ d8{bETq[d&[ d8{bEgV5L*pĊ;A(L֤%iy|ddŖQe0;eGb G4FTAvfj--,|aAQ @;ٚ7U7RJ2V0o:Q!Lv $T7DI2LVTq[d&[ <ˠXAEqƘf,T{ 쭲W{hgJ򣃷v6.wQn+Z|a2Ǖyt H(8ޣ4ŞVTpvNzX(IPWs$1ZwQmkTo&X򣃏.1-PpTAuË *xޖ *TDI2LV(TDI2LVTq[d&[ <ˌbT$W[燮xIӿʎ+lZ|a2Ǖyt ;Re0cʎ<g0>ٚIzԔd;7(8$4jWs|b(1e@elX풳ΔHd$h\"Lj[tأGy2CH4cLZ|`=D T.bO(풳ΔHd$h\"Lj[tأGx$ FJiFY@0QJ2U҉ dHZ-b  js||(s$1Zx1:]v(".w#[S;J{z[d-e J> FJ:Q!LI(R/VB.)\ğ$J>x҉ d ]B<[ T s._;Zu8Ff!3RR4=OMySó5 ;jTΔHdq^M@Ycʐ( `4p@4#;tC%Sm"h".X H  <pw# b]F]vkT0}1r#OmabdAܩX03.Ҍԍ=DJژd <G$O.4cLy6zVت@lUUrΤil,0;C6LUUpت GΤi9@08dQ$EbAWeX(g`UVAᵓu#OmfY=أ3R4`s!:HdexŞx2RE[bM#pqU R4`q4Qԍ=:BE,ŰIз25G.uoLi8&/VZc(Ċw#"Ż3\F5P/=eK(ѪTDz؂Yg1 (&N >բЋcLy6zVت-(T⼛DHZ-<G$O.Zu#OmBU1w1JT⼛HZ+lUib  js|F 1*R:<_:H_x1:]v(.2RE[bL`CNdXfkHX`wF eLDI2pQ^]EdN+ɴբVhE\VwDJ' EhE\ッCG"LS˖bBU1w1JT⼛HZ+lUib  js{X+/b PU&'BˠEվ1JT⼛HZ+lUis(ilYe[T.xfY|Rjs;U1 YL{-gJ$2II% EhE\]1JT⼛HZ+lUi]E:Q!y6"h".X# &H1e*[;b&jԳQQukNQ]imzkʝ_KR&tC%SmL2&"@YB`ˊ4Kj2뷫]BEEխ9Eui7 2F[ 쩸41xE0FX\ٖO&[ բЋcLy6zVت-(T⼛DHZ-<L4DǗ-LixYrǃ <eKj2뷫]BEEխ9Eui37JYHa1xEw"X wT3\Z*jzQFL$bjV ګR15P "֯)T\Rn 4(;d+$+TaUe*;5g,`3ŭ^R6æ4JWiEm2ЋҌM')N=fJ3 -jAw E)3piE)'_&aX )WGyF]0Z*k|92 Е*mUQqnbE 4/VE^R6Ó R&X-s(P.XZu-j 1yJ.X!ګšQr֪1Ur\iƙ)Sm"hUZueА9umUQr֪kW xPPLi8&/VZeQq] P6X-VE^R6|@h@w|.uoLi8&/VZc(Ċw# 2* {m$o7.%*q^M^*,[4-wdN+ɴբVhE\PӿJ$2U8&8(R/VB.  `,0pqSd\@A ˡLi8&/VZeQs2RE[bM#pqU &bT2tx |"yj[tأޗæ4JWiEm1nbE ;bݙT]ZӔW[U "3ٖ_}\L{-*Ŗ|`҉ dIG‘zZuLi8&/VZeQqGΔHdq^Mi$HZ-<L4DǗ-LixYt%Sa0||ZORnwJ|&V ;'S7;fb*9ԙҞ ~ d(-yITYtW yUd(Pԩҳ4L =J+1YGؓ(ҌcL 'S7;f4cLy6zVت@4JWiEm4D T.bOJfG2T_x1:]v(.2RE[bL`CNdXfkIW3sWU "3ٖ_}\L{-*Ŗ|`҉ dHZ-4JWiEm2Ћ҉ N+ɴN >բЋcƒHQ D婍2Te;cLy6zVتAH@@B$bT2tx!EEYanekbz\"%*q^M^*Q4FEvfs7;z5P/=eK(ѪTDz؂Yg1 (&M$|)EQqtƙ)Sm"hUZuwDJ&J>բЋcƒHQ D婍2Teޖ@LDJژd  Lée"(F+Yanekbz\"%*q^M^*Q4FEvfAEz5P/=eK(ѪTDz؂Yg1 (&M$|)EQqtƙ)Sm"hUZuwDJ&J>բЋcբЋcLy6zVت-(T⼛DHZ-<(`$.Z 8qBJ=ÿ4JWiEm4D T.bOY1;Nj2Ç.g-LNA;p|:cLy6zVت!F$Pӿ-ٚ8p\̲ٞ BwclAV,[ΔHd&J>բЋcLy6zVت-;tC%SmI% EhE\8qC yrƙÊBU1w-QˤclQBgJ$(iyKn(e1(գ'o1&_=%|a5uu>q)ծ!Pl5Rbuծ)tƙSm샲8&(㤚.FwJ(<.uo:Q!y6G‘z0BHP:Q!L|)EQqnbE bªg5mvkT4,_(V;}QST/Wլ҉ wbHZ-:Q!L|)EQr偅(u;' EhE] ҉ dHZ-, .w@LDI2i$HZ-s(P 4FV=lS]Belu;B%}Z;tC$ء4Q^]EН(&M$|)EQr偅(u;&J>բЋ$ɤ"h".X\,L|*k,Uֆ@LDI2pQ^]EQ+;(˦4Z*k|9҉ dHZ-;IMuPdS]P :Q!L|)EQrƙZPm, .wyJbªg5IoV`CJ2񂏅:Q!MLNG‘zZuBIMu@4Z*h4Q𩮪Uֆ@LDI2i$HZ-s(VwQLiUs$ɤ"h".4&M$|*k&J>5$ɤ"h".Z1kW 偅zBb֯)T@@,PӿU[Lf1:liFY@)$GΔHdai$HZ-$ɤMu@4Z*hҌT6oX8CբЋiT6!F$Pӿ6 T⼛DHZ@wءJWhI(R/Vw!T⼛]ZO  `,0pv#Ym0dSҌcLy6%e@A vP&Kw(LNG‘zZu-*&֢Sm;"3*HKMkVe  `,0pqƝ:Q!5RbtN >բЋiT6-*WhpwQyJtC%Sm"h".ZU4MEJ.0BH.U4M[<L4DǗwءJWh|)HlW ;(ˊ&[mjADJ' EhE\hZN+ɴ\Z*h 71"9ø3Mg=ܟso#{ 7jٚg2kT]ٗlWJ*fRe0&֯)TX[XWQ'ٚj|+CբЋiT6-*WhhUIӿhz\Z*kA 4҉ ' EhE\:Q!y6G‘zZu-*&֢Sm, .X\ʦA H  բЋiT6-*WhiU&'DHZ-MkQrҩy6 ;.-jADJ&J>բЋiT6-*Wh 71"د @w֯)TZ`ΔHeء4Q^]E :Q!y6"h".ZU4MEJ.X\0KMkVH08 xӿJ$2b14Q^]E :Q!y6"h".ZU4MEJ.X\0SDՠxբЋi҉ dNHc TI% EhE\hZN+ɴ\Rt4҉ ai$HZ-MkQrҩy6 8R[X`ա3U&'Bˠ ;;)x6زc^>=k|a2/ =wfT⼛CX`խm0dz> Ed񽙮T/re0:IB݆LN RyImO]T/δ.*Z2ekxFZv[t.2wJ+ĊLi8&/VZh)\Ğ=k|atL{Tdd|f*R;Ix6La2|RFNxS];J23y6Euf*R7N+ɴ6qKN+ɵe ʐ( `4p@7y0qq88840$r!wy61Z2LVٚSm$k^b&^=|T⼛X})'>w2Vf[(a̕Y'.K5 ;E4b: PV{ሙ{L77ϙQʧ' EjvVvkT4.U8&qk|(SmI% EjvVvkT4.U8&qkI(QI8(R/Vqޭv eʧ;bq TI% E5Rbuծ!PҌT⼛]lU)$GwRm0iR̕y6RѕyK0a}0&tBSD.U2LVIз25CN< ^ sكOZctLzK|obfks-}JgRmQ㤚.T⼛Z&֡|q^M{ TekxFZv[t.2*ה?nJ0<҉ N+ɴ T6:Q!y61ZBU2LVhDq5fj\q^M$ו;|2|e6/;ŠH(CZ "*Wk&<c)T֌',(d[LӶA6S5fj]e' ..U4MZg* @eʦA AEOwb=EʧWC9( +XJʦIZLV6LUUpت G*9ԚL ӕ-y0qYB`Q'P&+Gk\W( tUd$Ŷ*8Q$ik/c&" *&֤  `,0pqʦI$hUd)EʧWC8| ;43ӔW[N+ɴ 8T6 LGk\DI2LV6LUUpت GªeO5+{^-O]Sf_v&ubgJ$1fJ׬|%T |.:m0_;( T"h^U&'DIG‘z{7=7 Vy66 T⼛\l!FA٦(oU&']Z ((vZ .)$GΔHc T"i8;tCjI(R/Vry6G‘z/N+ɴM$|)[so#xh^RDղSmpbxf}GٞޭNت ޭv *Wh|)Hy*WhI(R/VJ2VsGAwDJ' EhE]@PYsJ$2U8&4Q^]E, $  ;tCj|)EQtgΔHc TI% EhE]YΔHbҥ*)Sm+U&'Bˠw-iR̕y6Rѕ(1:]v(iyKnfJT⼛E)hSl0|mb!=(ˣU mQf)w;}ޭv q'ʧ .)$GkP7a#)KFWt&]l5RbuuC\RBʠڙ]welBs.RyC ;;F-O]Be*q^M*(QK(T⼛HZ*@<0$IƝ(QU @ԍ=a+TyI% jh:JN;{k k|j{zN{C 4Ǩ7̲x`v:U9V'{k kTwbvS0"$2k(xLD;3ZORnwJzkʝ@EgY;s*WhҚ;tC%Smb(L 3+2Xҙ1Z;%*q^M^*R15P|(J$2U8&&+BE,ŰIз25G-JcLy6zVت-s(V`.uoLi8&/VZc(ĊjTdN+ɴբVhE\`B 4.-j6æ4JWiEm2Ћ 71"ʠC;qkWAx,^"e3L2fkQSޭv *Wh|)EQt)2RE[bL".X\BpQ^T)2RE[bL".Z-j6;tCj|)EQt.6 G‘z 4JWiEm2Ћ 71"w1JT⼛HZ+lUi0ĹT⼛Z&֭*ftCde^I% BUӧg1ٝHjx^_ UZ)E\ D:U8&Ly0˕NٚSmvmjU8&+[Νu#pqU K(T⼛HZ$T*9S$CSm`*[["LIA #Nl GΔHdq^MLVטk/hPM^&*8IlUUpԋX B+ɬI(0ɬI, .w1JT⼛HZ+lUib  jsQ/R-bb,_x1:]v(Rt4cLy6zVتAH@@B&)$D T,_:Q!y61Z.g-LNA;jTdN+ɴբVhE\`B#;p|:cLy6zVت!F$PӿҌʠ%*q^M^*B.(Ċw#3P֯*k|XDgV e>֣.}ZޗyTZ`ΔHdq^Mi$HZ-Li8&/VZeQrmI% EB%*q^M^*B.֯*h`asJ$1LN"h".ء4Q^e*i2RE[bL".0BH_KIqU &֯*jbTaOR˺ʧ$h[mַxˤ<\Dz4<|a7IqU &֯*jgOZctLzKIt3]\Uó5žg Ukj>w-G§uCS;t]ZK,"ԬZ̻Cd3\q^MyOZqK5ѪlkPG^Pk|R|+ԧ.-jA32w'$P 42؀ 5}<w"T2]J7*ם;ckױMY&6SwM̺BT2k(H #@$ p@e(,Ź& Ee1BT2k(H 4B$ p@e(,{.Ctd P,@$hIf@ˀ P(Y狡w!io:2|*s,5IB2|6c`{}ԊgQwWfkQvf}0eOd^(>T/|;3\hzZ4=B^;}H] ; vf}0leʙu+2sZލT/s.a=FGٽHw uvf ޗfkl` V[LA E:ҋjsBó5ʖP1ADz5"t4/Gjg|9Pğ>BVeJ 4.U8&&+Zg45P¦1-PpP`IӿS<ʧ$hiKR%G†MebO Ɲ* C&'IsS%S=a .GT⼛DlT'o2ւq^MLVA۪mַPѪ1Yj4J=.U8&&+CNzXTkAU8&&+BFT1e: w(T'o.OZoBFT1e: wה:5P¦qΤ)/VlUa*>(iyKn%:E튬wd7D礼o5)3]ZU{3ZlU(LMuj?OQU(UkdN튭OzQ6z%R6ٝWM=iS_7ʭyCu)lq(bt(Im3ME[b J9B*(iyKn4^*mַ/m0f!jo%vAAȕ;;>|*L< eսZ;hH}&"T^ J" H H(*L< eսZ;hMAȕ @%Ȃ@#A%FR ;T-m][ա-oVѪT^ J" H H(ޖI&SoB*L< Rae6Ɲ* /GғʭyC b9ԖXs.PFIСy/ua̻@6[ nIx6oQSk2 ;:5P V$VsoF*ה?nJ0IV&ĩJd$ $ Di@I(@4$ @ÑDBZ9yH(40yT804PȢ@- <$F D<H*@hPqBAҏKU $kA &aX h ]Ɲ $`8r((KC<  IƑ& `pH „$ @ÑDBZ9yH(40y@ 4!A  `8r((KC<  IƑ& `pH „  w(5PLVϒf0AxӿaE hg "4X$ $@h@,0y 09H%$ҁcH0@I ;(p`h8ÑDBZ9yH(40yD 804PyB1ZC>IV&$ $ Di@I H;!"3rP,i`HwPqB"3rP,i`B;z]Y&+ZgFX$ $ DiPH  H;!"3rT1AI  ; HPqB"3rT1AB;!09H%$ҡ0LpiH (@ LéeNH09H%$AEF 8%xH H;!"3rH( ;(p`h8ÑDBZ9yH$ThQ DСFIւ+2F'l4$Xa#ÑDBZ9yHÊ *∍H;!"3rÇU@ ‡09H%$8Ҩ(СFIւ+2F'qX$ $ DhPiTI H;!"3rÇUaHwPqB"3rÇUaB;z]Y&+ZgEcԏw@,0Ȣ@- <$F &Pƕヌ89$ @ÑDBZ9yH$AL*lX+4$Xa#ÑDBH$ң`$Æ$ @ÑDBH$ң`$Æ$<< E x@@#JTpq804PyB1ZA&5J1;d$ $ @<$F4A! DqDF$ @ÑDBH$ң(8$4(804PȢ@$DiQI@TGDhPqBAҏKU $i(+4$Xa#ÑDBH$ң(8$4 $wCE x@@#JL L8iC (@pQ P "4 `$Æ  w(5PLV@'l4$Xa#ÑDBH$ң@cQQI@A$# vT'o0}MzÊ]T/$Vb25#-;d̺Pst\k7H"3N 7|q^M VA鱃 7]'RҔUaEg4l |9cLVeٖ_yTG7mN}Z (˄]F[7.E ?J2||ZPmQB8&DzXE <`Ys<ޖ&ub(i5!Q&+Gғk\" |C6LUUp{T]Pbxޗ;e143c)N5.GxEՂf 3"aPr!L w햼{Y{ tUd$ū4] *@Lwk.ٚ^ 絊)N .p :"0;zBhB1Z I .υXd a ;%V#5Pw):wJF2 jh1I6(JWjcl=m0d_ft)!FO]\lcbodʠມ#i/['ծ!Pt;(Rژ[ҌEվ" |dQ$.wPN+ɵ1]E1JT⼛Cl=|`cl|)QLiu(kWAuC[ ^Ϸ]B鱃w1JT⼛Cl@lW ;]I]WLmSaޣޤSz>0٬[ںJ2Ԋ{ɐNŀ(-H wL)R0<0<f 10=>͌R)q0QiE0H"D8€ j4Ǩ61H03N&u JLPaoKIW@ks;přfF>i=JS z(iJNOC {xWfkYu);;3]_+GV˺Ѫb(eCt |a4COH3+|˭wPv]og-J25@@,iˤˠ˝*\ˠ 4ˤˠ Ѫb|X9]H2B1ZC=OL&uCSa/8^ǨU @BOY6yTSS z, HpQ PE-6[t=B=B85Pmj6%H(YCE ]BSl0Ct.ct(5PM^Uĩž (@pQ PE-6[t=B=B'CNaO3\Z*jbT|+Ԧ+J27_Pp>|  c^UѪM jsA' T,Z R)=J $`8r((H\d uMz]eйeУ jsA' T,Z R)=J@ÑDBBS$h[mַ{.{. &TC}iEjPwF=)E^PqU g dz,>|6AA^ت2lR0qӨTu-_Ѫb{tD`xi XFY)J!@B(PӿҌLQzLt%J\ w js,i/E#2Ƙqi bT&2Ƙ\QPqU b,MY&+[>u]cş:"0|xZ2@B.$ T/|0M c^T@Bgĉ4U @M&5P[ M1H^^R!5P(1/* SdF]1H^u1/* jsޖ$M1H^m^Ri7bi2@Bj8̰,EsQKd 1/*BU*BaBzZ!Ǩ&+`F -JxXcNIF''CNIQyPLWZ$ T/J22@BIQyQU K&$ T/6)4@Bl4ƙ jxyH@BX\P9(tjs*֕Nx}XT0Mutjg-JxXcNIF';G1s[ l&=E[u*vwQ!PqU R5BZB js, .(bh'CNaa.j>4oJu" ມ-)E]H(M |) kf'VBTaOR^Ri7;<S>+TBd>)p81Z;b_2Ub1U 4-J"qU ӿ7Xd }&2k( P'rzA@\0P|) kf'VBTaORQGJF2AG†MebA@ X\dOXH( wIc!8Xd (i*`i53CQ*E0B)\ˊ;%9;U Ҍ3X}&tjzQ^ٚ%%V#5PwPpkH y0zJ%:E튬$>|_ wAȕAfJtթXMA ;ޭ" բjvVTBC7D2RafxYt o%EդX!PPr%KT1ZC<,MY&+[>b1|_ 5}H(Q`.2w'$ ;u#OmzokC&  ,B'rzA@\0PUdc;3?{h;v^bR41+ZbxUY ;u#OmA{iYGؓ&x8$sŮ ;u$;v^b $!@m5{ '-Qƙ)Smeb,7, 9V#s{j VRI1Z.w):w1JT⼛Cl,د .`MDz*DUB hѪb{cL)&xѪ75YGؐP2'rzA@\0P2RafxYt o%EդX!PPr%EѪҏKFIւxa↝Li8&[ 6+ˠX>|*.ޭ" *\QbhB1ZC=̕60I(ig5yJ*Wkl`^Le =5|a0I! {m$olNҌٞU8&'o6Al`^L„T|))\ˀPay6$ו;CSmL =5NE3@mj |) kf'VBTaOR w*C ThI2AAg nPpkCs Ufk$ד-񆔢fkN+ɵʛ$ו;Q⣛$TR652k( P1qYGؐQ0;[LfP'o4{3\q^MT'ڏ l`1PpkHB۸PɬH(ABqYGؐQ"Pe*crLRtwR> 'G9ø3Mry6 =5|aZl`^L,J1Q͌zf* |(VT„[$TPCN60Is-B[$TQe*b$TPNs#%Rt4Sc2؄Tsc_ ,@L(EOLA \dOXH(X(QJR2^44C5ʛ$-}\e6w*C ThI2AAcG( A ;e*cpӿN+ɵ0'ŏ9d.OLÙl;QoJR4SmL =5N,xȆ$yt%Mzfa*C ThI2AAcJ( A ;e*cpӿN+ɵ0'ŏ(@0q@] Sc2w21]8iʧژ: zkʜX  `,0pqЕ60Is-ҏK<# *`IQ$ *~p654ޖsNU8&c<(04 $] Sc2w21]8iʧژ: zkʜX "yt%Mzfa*C ThI2AAcAg nPpkCNoJ:4SmL&0I*qcAH (Lyt%MzfaҏK|Tҕt*Wj`60I*qcAH (Lyt%Mzfa*C ThI2AAcJ( ~p654ޖsNU8&c<.OLÙl;QoJR4SmL =5N,yR$ ] Sc2w):w Q!B*>A0I'AdN+ɴ=͊JHB.U8&c N+ɵ0t$ו8iƙ)Smeb,7, †MebO; ;mdYL>T.xpwqܺtj|ObT>wѪb&bfL±5G|*.ޭ" M |(dQ$ |*.ޭ" M |(dQ$ |\;;mC|,LZPmxX2P w|ғ9=mJoKV2̲a]A^Ex;J2ڼP>|:5P[xU;OH oiNԊzOR F1:֯)TS;(Rژ[ B.SdN+ɴ=ÿޖد 7ŭ^ULWw|ʭyCby6=Î9ԖBˡHg ]Aزө |^]v(iyKnBˡHg>=k|a2/zm2f2FAڴdl^lN-֦'Ӷ,k-:5 E)ּl[0%Iz0Muj?5#Q)p}lTR{lZu#AKb(spb>*)Mfd0s._;4L;ds.AA̺;bfd0k7%Pÿ<زөfHQ -:5Rh^i/Z"fP[408|` 7. V昢¬Ue+s`yeYJ?F2F8Bm𺐼^5jQk(df $ŃAϛdcTIFWWOX12M=ԊaORc4|@Bɵʠژ"Sԡy8 @C Tx-:y{.ˡG5#3(֔W"*lde7|92 Е*X4P0RO@%S*e{Yo%iEJҋu VJ! Hp82VMcL|(JL)PH\>4Ԋh*e5YGؐP;  wLr [_ 5}H(Q`ܞPPYGؐV X\G1-Hʛ;|F.̾{[HHeR5 H9eG1-Hʛ;|Fٗs.2 *+w &05R>LzzzOU ˭(V^` cA``XtKԎR)e\Ă,4 .(P1ADz5"] ; KR&P t=XDzi-^R)c#h9†MebA@ X p ;H Yt`kC&  ,B'rzA@\BR) Yt`kC&  ,R'rzA@\BVOl,SDUұjE0pJˋR) Yr¬Ue(b, `w#!jE='Z-^4E=ЋeYJ;̶b)Hy.ujF+*aP[`F wZu#Cl,ŖHt!P[]Cl@d )lYnu#U-Hc֓b@LKZu#Cl(u%YFVǩN)KFV&Tecl[(i~wRm0YFVǩN)KFVwd7D礼o7>k(sVǩNiQQo-^vd%Yc$Vsi*Z2a2Fٞޭj> FJqHd:5P2Is-Q^0^2پ{ 10=J H(^ ޗPf4Ǩ(-Ϛ0P;s-^P(Ž<c5a=Jw*Z2ٚםHa4 j|eZ|aRJ2V7Yw5a3LIE6\5x#4ʖ{-&@C <ޖ[ w *∘D0Õ-X[Q4RDfke&^:j|Z*w7YwKFV=džDTLDqDL"D$ k(df >mֹk,` H*Z2<4r$ `#"a$.(9Q0a hDz0BH.Tecl,xhHD!HDp$y|cNu$Fiz/V`CJ2j2wѪ@(i#J gelygͲz1e,-ԑ-1*Z2<4r$ a$ "8k(df >mֹk,` An1m T60tшRѕeᣑ U a@ ; ;ԑZ (˳5˩F gelygͲz1e,bIbD9Ž'CNu$Fiz/V^"e3˩Fŭ^RpH0YF#4Ğxh4YlcYg0XRDfCDpIh8IoV`CJ2M_yJڟpH0YF#4Ğxh4YlcYg``RDfCDpV(In|QRѕ-X[ w矝o?|QRѕ>=k|a2/ Ϛ0c`{}KFW=u#(VXÿI5ը\wʖ{-F= EgZoQR;T/Re0;`TW-̶oLzRR)=J8ٚG^P(Ž<c5a*Z2ٚםHa4 j|eZ|aRJ2V7Yw5a3LIE6\5x#4ʖ{-&@C R2^Ku[;-^u8H fjB/5Rbue)hB˭LN.}K]_yTS;ˠ2ӶJˡu9E)VrQy.em^ ˩/V`A8;E, ŭ^R6w# Q]TeclH+bpwhDzX򡈐<whDzXa D0#ˠyʖ{- *∘D0ˠyʖ{- D0r.,Rѕef "@##ˠ ;Tecl,y0qB *ytg5@wQ7o7e`CNs-Q^FŭyWfks-Q7]mw7tDaѪ-J7et\`CNZPmL/P7et\.0BHG.-jA2ϺT`}ҥ0Y4/V`@/QSZ/V>R.hZEϺTyXWQ]lS]BvUtau˛:"0Bj2w'yJڙF]1Iʠoaig*\i]T&oaig*\1Iʠ.X\[5+оޭv e˩yJj뷫]Bs}хs}чDF\gQSZ/V>Rbxc0x{-tre NQ]a"QS^" g*_CZo.YJ, .X\MHBYJ溠-jA2ϺT]Tgғ}ҥ0a{沌7[j'-_qםH7<#"y~2`TWUaǗw"3M} fy|Q1', |'sY H7 ;|Q3]Z|*{d-eF[U :*Z2 FJqKN+ɴw$ו;|8Ew&X=#H"3ե %Yo8&@T2tweg]G>Rhz-lzTe{© T6f"^P(³R(Ċw֯)TS,KF wl qg*_CIiT >R,u;+lh/y2vդX!P,Kgq%5uuٚ6;z*lUYJ;. \"0ãU e˩Z*jgtƙ&֯*k|72Zu,K;kTЋg*\1Iʠ.X\[5+оޭv e˩yJj뷫]BplEaF>0.e쭲VբϺT*-D0`X-p -̶]E>ReˊE.hZEϺT[ B.tr偅az*t}k֯)TS,K5@w):wl qg*_C+y6oWA O-J!*l`u[8-J!j4RѕeÈa2G5RzOk--J!3piN-X[ L8AȆ$y} L0x2wt =7USwcbh^ zfQ ; R%̶]E>R X10fkZO|e0ҌSc)ry6b/<"ҌUSRѕH@.A,;Ϛ0$ŃAϛdcR(Ċw"3M5P2ɭRe0֩%+NA,;Ϛ0$ŃAϛdck(df >mֹk,`IbSm ;ԑ*q^M VA,;Ϛ0$ŃAϛdck(df >mֹk,`0u$Fi]Bz[l qg*_A 4Rѕeᣑ UQQ y} F]N%hZ,K*Z2<4r$ a$ "8<( IHĨ˩/V`@.(X (Rѕef "@##rp,K &դX!P,K ;Tecl,y0qB *y}-jA2ϺT|QRѕ-X[}ҥJNF2ǕDqDO/\#{l qcʢL8Nu$FixQu gelygͲz1e,Qn1pQ10fkZO|e0Ҍsz5P:(u[;][j'-YK|ձSђ4RѕeÈa2G |`^Ǩ Dz,Zוw`TW<$`ʖ{- *∘D0j2vV+Ec‚\Rѕeᣑ U a@9Ex8JJE%F]Nz* yqBaGʖ{- 0a _CWYbXi4^" c‚\PQ+acɄ H$SqkW <((xIs沌6RLhDz-̶Ex8ACO.(eo5խG§ FJiF\"0_qםHRѕeÈa2G+l{T^wRԍ=3z[l qcʢ8'C;Tecl,xhHDTGD!H_CQSZ/VU<+acG"@& "@##rp,JiT U<`0KFV=ǎD0r/+RR,,4/V`@QQˊ -X[ L$$PA$ _CZPmLQQ˝el-XRѕe[l qcʢ8'q{沌7֣ٚS%Yo4.utDaѪyԎ-X[ L8AȆ$y} /;|Fڙ-̶Ex8Q&y}0XӿKFV=džDTLDqDL"D5u;+lhQ&ysKFV=džDTL"DG9G))Xu;E,<$Ï.(X (Rѕef "@##rp,K &դX!P,yTI\PVwhDzXa!  TZ*je*0˝el-XRѕe[l qcʢL8;|Q3]Z|*{d-eʧڞ9ůeӎb/<"ҌUSRѕ}[;A /CNu$Fixlz-Xs沌6Fi<`h=kƲ`-ԑ(FV; Ϛ0fkJ>>)tƙSmi+8EwQÒs (Q4RDfp%W fy|Q1', |'sY`He= J.ЋӿVǩN)KFV= u$FiyJWk W[` 3s沌6Fi<`h=kƲ`n1rLQ-^e >j-C(w)l v ;lz┴ecl,y0"L3T⼛@^_(Q04֣.dHZHodٚS5O^yKR&Ie.1F]NG‘zZu 4US w))hDzXȐ*C0 H%%"$DzZI$6 G‘zZu,w))hDzX a@9Ex8JJE&Ie.2II8(R/VB.⅀Žu[8-X[ 9Q0U0a[ I2e|)EQrBs沌6>RRK))hDz-lzEx8Q-^e$|+&[)lP,US w))hDzXa D0#gy69Eu)$GLD;3ZI% E2FτoV{ 4rxzSzZ2L{-q2vM$|)EQqXcNu[8{-Q^gRR{- D0r/+RR,2L{-qNlPI(R/VB.⅀Žu[8-X[ 8a$ "8<( IH1eI61:&J>բЋ`0VǩN)KFV=džDTLDqDL"D9&=Lu;&J>բЋaYFVǩN)KFV%lz┴ecl=Jp[(emO(L %wʶAܩJds-QLiu=JqJZ2h`pw)l v ;P(`[ B.c@JsVg,icԧe*+,USRѕe8;lz┴ecl,y0"L3xΧ5j^O`^9%wʏ;lz┴ecl,xhHD!HDp$y}Q^eL{-QrDZ%wʇNu9P˖,w))hDzXȐ*(C<(`[ B.c@JsVg, .w5alz┴eb]VǩN)KFV=ncԧe*+Ž;p|9D0BHv@Lel-=+TyqXƝ=Jp[RR{-ycԧ+acɇ(9d/P8 4QRR{- D0r/+RR,2e".X4Q  ;lz┴ecl,xhHDTGD!H_CL{-QrDZ%wʏ.X\USRѕe)ZV26 .=JqJZ25eE=JqJZ2,(VǩN)KFV=K ;F2t<ޗ(`[ B.c@J\ _;F2tДL{-QrDZ%wʏ.X.2Tm    R"5!"MebEեc#g#:cNu[8-X[ c#`Na: iX(P@0K=iE9 ^#:cNu[8-X[ \],#:cP$ڜ/BzY!韾d;lz┴ecl, j˂#:ec'LcDC ;g|v(aiE9S?|1w))hDzXi`Qtc'Ld|@hQb[Se0Pass沌6>RRK))hDz-lzEx8Q-JDZu,|JdtS <cNu[8{-Q^gRR{-ycԧ+acɇ(9d/P8 Nu9P/r|2tycԧ+acG"@& "@##rp,Lel->T2t:sZ\0`0VǩN)KFV=džDTLDqDL"D9DZu,|JdtS <`Ys cԧ+=JqJZ2 u[8{-Q^w.uo(`[QԨ L{-QrʔN.+0XӿVǩN`TW0USRѕe8;lz┴ecl,y0"L3yJR:աxU&'\RIG»z0Muj?ɇ۞{m$o}(1Zbmƙ( h]_+To00Q2J>wRyC k(df >mֹk,` Qn1m T60tш1:E1 w):w"3M1:liF\ ֯)TSn <>k(df >mֹk,` H@r Ȏq: Yb1JZ2%ɇۘ&ط{Pӿ<—mϚ0#+;}Mze^ 5af,k-`3e.On=Jw*Z2kP7(2s1ڏK5 TdSҌ3\"fRѕL5#3Y@T]r+;LQ(<#@P.zQ^8}o(q7U $ד-ÿVǩN4doK^u.kS^xCo)N:FMzFqZRyC ;;F]N%hZ@QS^" pw &դX!P@ZPmM8;̶Ex98;Fأ"3\hDzٹ KFV=k(df >mֹk,`Ib9d2A(;(˄][ &Sne2P,ř+{^-L]Sw!iuo@k{ٚHط=kJ-v5#ޗ(L< SdYqy6,CN]E*q^M,F0EɇۙjcL .2U8&#"h".wQyJuy6,C(ĊwQŖZPmoT⼛CX`բkW (Ċwb=EʧWC8z2@ +d$"L@@qV;kR# &H( ?K4 D9Xv,Z*h-yV0DԅbxUY ;sZw"3M,k-`H0fkl`^Lw5a3LIE6\5x`0-ԑ--yJw#s沌7P|թ͉"f;YGV0}[%[cl_x 5$("mjC=iE94/Ge]QJWhrzZ-jA\Z-jA\`CNu$FixQu gelygͲz1e,Qn1oTQ4)Smpb fy|Q1', |'sYn1lYhUУUdR.U:"@ ՌqL[ V&H1e  Lx+dٵPȆ$T%b "`;Z-jAw햼ūbbxUY ;sZw"3M,k-`H0fkl`^Lw5a3LIE6\5x`0-ԑ--yJw#s沌7P|թ͉"f;YGV0}[%[cl_x 5$(RDfqY` 3s沌6Fi<`h=kƲ u$FiV0$hQe*+pwZ*jet} JERc^ZPm,ŖZPm,Ks(QKZPmL/,ie*+şt} w &դX!P,K`e쭲VբϺTy˩/V`@/yF]1Iʠuy6,E֯)TE1e֯)TE>RN5N+ɴ9eZ-yJ.Y-yJ.YJ-Limj6;F]N%hZ,KrdI#yQJWhrzZ-jA\Z-jA\.X\,+$Q2vդX!P,KpN+ɴ9eZ-yJ.Y-yJ.YJ, .X\MHBYJ溠-jA2ϺT]Tgғ}ҥ0aKs-Q^,K!Ɲ*Z2<4r$ `#"a$/˩[dEtsKFV=džDTL"DG9G))Xu;E,}ҥ *Z2)$Gw5ae)hĔ &Snb2P,\"L;UVA\uxD0g(샸1Z@($Q2 <~i/X8$tq^MV dXl.2uI iUY I% Ij-I% y$|(M;ʦA H  xɞwRIGŠܟ<+Ty4JF2zH*TW fyK(L< SdYq G‘zZu qZ|a|`G;Ϛ0$ŃAϛdc y[ǝdm̵1JŖQe0' EhE_,i49e{Yo4^b@(i#J7YwIA Gw5a3LIE6\5x`,-ԑ-1( (L< SdYqYe[pQ^]Eŀ… ; ;Ϛ0$ŃAϛdcV&HRHen ҌG¸Re0<V<>Q]37 >N3PžL;eɇۙjcL .2w1:' EhE_,i4V&'Z/V P4JA,;qZ|a|`G;Ϛ0$ŃAϛdcj-ORnwJ(J>N3PQukNQ]cޖP,xM4@'qi$HZ-C;ԑ\ dE$ "4Q_pH0.+To4ϊI(QNs沌6Fi<`h=kƲ #4Ŷ05RF"e%ɇۙjcL .2w1:&J>բЋPGғ#4< [hZA,;Ϛ0$ŃAϛdc xcmtySDՠxP!H4GŠܟ'x{'NZ0fI2aʮOT|ҊDEOso#x!FO4L ^O;(W;qs沌7NTec;m> 쑸,T 0  7@yFYɭRe0 Y02s-LieJ' EhE\hZN+ɴ\`CNu$Fiy5L$%i fy|Q1', |'sYn1n{l|(LɭRe0.(L&[ ĞP&HCNu$Fiz/V^"e3˩Fŭ^RpH0YF#4Ğxh4YlcYg0XRDfdm̵1J*Wh|)EQrҩmj.ZU8&rƓ&I`YrH{沌6$Y02s-LieJ' EhE\hZN+ɴ\ɭRe0.X\0Qzتs沌7i>S-j6]Z (IFk(e*q^Mebm[b H{沌6-LNzGk(bc5aoV|*|Rز=bsU{YGg.U4MZg a2EOeɇۙjcL .1*8XӿҌMj-eɇۙjcL .1F]Nʎ+lZ|a2Ћ 71"H@֩2kTpH0YF#4Ğxh4YlcYgRDfMj-R1$(Q4ELyj-yJ7Yw5a3LIE6\5xh4["3LY@ae6Z%ˌQS%d֩2L".ZkZ|`\,Ihծ!PҌ3\ICHT$ bOk(df >mֹk,``RDf> ;ԑ*q^M VA,;Ϛ0$ŃAϛdck(e*q^Mebm[b H{沌6-LNzGk(bc5aoV|*|Rز=bsU{YGg.U4MZg a2EOeɇۙjcL .1*8XӿҌMj-eɇۙjcL .1F]Nʎ+qX&[ ]EQ4RDf\?&IZd;A,;Ϛ0$ŃAϛdck(df >mֹk,`X -ԑ-1( (L< SdYq2vTq[֩2L".ZkZ|`\0PG#4)e*q^M.Q]l*Z2ӨTt(˳5:Tp<>k(df >mֹk,` H  E92E1B2P,WI Pa&iLQdM' /g-4swQLi{P.cNu$FiyJWh.Q]l < f|#{coԸ|FL0xSj ;J2(noYF#4Ğxh4YlcYg["3L]1J8In|QT⼛E)hբVoVel[ T"i|Q ;;)x6 y6Rѕ>=k|a2/ Ϛ03YJWku[$VsooVlUl#S*3ZkWAwդb=YF;z*˩yTG T"i|Qqޭv *ה?nJ0k(df >mֹk,` H@r ȎwjH{沌7,i4j뷫]Br/ZPmOCHT` 3s沌6Fi<`h=kƲHJcMa^#0ءGғ#4k(e*q^M)KFVwd7D礼o7>k(se*q^Mlz;t]Zq^MMXF\q^MU8&02s2ae6 x>U8&+BLQz>!e6{T⼛S5;bw*Wjg^P(³<ޗ*WhxM;ԑ*q^MkWpH0YF#4Ğxh4YlcYg0H*WikP|(M;)$EnOhy.U8&&֭3ʐ( `4p@4 >V&{&yI% +r|@MQJ=.U8&&֭3D0";0Q'4+lwRIGŠܟV&H`yI% +r|@{$n)$yҏKN+ɴA @ATH y <> x: xYJ=.U8&&֭3 x2J>V&鍷eJ=.U8&&֭38p "@ >V&mI(Q[yF\q^MSm)1nbE ;(˄][ʧ&SneSmGAw"3M` 3s沌6Fi<`h=kƲ(RDfE(.+To7,|`G>)$Gw"3MɭRe0֩%+N` 3z\V2h!(QNs沌6Fi<`h=kƲ  u$Fi|(LQU8&8(R/VB.OQҌe튬.ޭ[*Emq^Mae6ZU8&qy6G‘zZu, .wZF#5a%2y6ۙiT⼛EJ' EhE\0Q5Rbtդb=YFBQ^*WhxMN+ɴ\c T"h".,w):w5a3LIE6\5xh0["3L\RIGŠܟSmI% EhE_2>wQZUի`@hUN+ɴL< J.2U8&4Q^]E˝oVem Ex8Lq^Mae6ZU8&qy6"h".X\X (1:E1 ( N+ɴL< J.1LN"h".,w4)Smpb fy|Q1', |'sYn1ry6elN+ɴRMZ+lUavi|QŰI/VelQ04 o(eUU ޖbqJWjcNJ22R 48&ƝH@8& >fj\#{cqFR0O쁼N+ɵ+y|Q1', |'sY Ib2Rw:PMB+-VǩN}MBMw(ŰIз25CN< ^ xEP=)hSl0|mB˩mB+;n|QGkP4EQeӸEը=Jw/B-lzum\Teg1Iн(˄aR. ʖ̫j'%^E)Rur{yRѕ'Bvf"td ҌRѕ*L Rd%Yg1Iмtw T7)KFWt&]l5RbuuC\RBʠڙek7-;d̺Pst\k7%Qy5"3LOd^tOMySwQÄ]A;Q2]E,ahE\h ]ˠX@łŞHys,ahE\h ]ӝNj,<844`g\DZu,|Jd<844`g\DZu,|JdtS <$ w0I*vtƙҌ|95YGؐPPCl-7;˜zZnOoפow Q2^F\h&]o2ZQ˜^NԄ_:;jRѕ:I[ Tp]P5P-j6wAi%neкˢRyC <i)d*{%Za>k(zKԈ{Pkg.UbtQuLdQ$g;IvbP.h.w12̌| <3N8$x*9ɏ"<0R.U:!-9Eu`P!+~ ; ;UVA"SӔW[ "ǝw햼{Y{BjA1UVAO<[b*b4(@edQ$.; ;ԑܔr8&(J =5N /; (no( bOk(x%=Z؝b&j#y6EuU0I*v;5X(_bAb;e1HԄC=(xӿkh1E Rt4e\(1YGؓŞ(Fbs-O|^s;-Y{(=s\>u|Rآ@Cla7E7e\-bՉ|^VάKP\ ;IvXe\ ; ;f;, "e3U70I*vmQyH{;:/@9Չb G2M> ( , L5|Lľ /e("ub_LQ(1B; &Sn{so#xP/(;xM1Edm8;X#)4<.%Òa;Y02s-Lie)Sm+&%ŰIз25G &Sne2P,ťK2TP,-X1:]v(dm̵1J(e1(ա"(9em̵1J@N+ɴ(cL U&'BˠP,r ۙjcL .1,F0EЖ1:]v(1 fm0d)p%I£%Yg-5CFKӿ08;(˦4@kcNc-Lie2c-Lie1eP,xM4@ sf ;Ϛ0Z)KFV&I{lQi|Q.OiJZ2%ɇۘ&ط{[>R(c) YFcebJYb102s$_;bq@;Uk(Ž9ԖBˢ8&JZ2* NJ.|^T⼛HZ /e*q^MMw(ŰIз25CN< ^ t&]y6Rѕ>=k|a2/ :ISKFWry6.U8&&֣I5ը\IйT⼛Z&֭v|RSmO(]welBs.RyC 3PU8&V' "3`nc( }8| /e*q^MDjBEh!j*.i+튪@*^ 1Z@L4D ^%( "*WhLl.IW yUd(FWٚzk̓kO5ʧӔW[UdR.U:"@ PbP`i $샴@0Vi/X8$tq^MO$h-yJpbbxUY ;8472P$ו;|2cP!ҩy6%aA #vf'+Bf!.,y6Pó5*ft&< "*WkJ2e=.ifkIT\E)ouJ-_JNF Kdmzkʝ1p(pIT⼛ZQ@*'3\֓ԩҸS;J2KFW81Zx ; |^T⼛[81Z5}p 4eN+ɵLIӿ8&ֆi2LVޖ,y6FÕN+ɵ04{T⼛SŖ8KRwq^Mb"Q3,y6(#X{T⼛S(q^Mae6{7=7y61ZNCJԄ_:;jRѕ:I[ Tp]P5P-j6wAi%neкˢ^P(³<jD=f'=JVyϚ0ޒm0;A(*Z2n{m$li)d*{%Za>k(zKU!hd8{bEjJ.hd8{bEgJ.hd8{bEgpd8]S5}  w[ B.LV`pw(Zub_Cn %P[ B.LV`pw#[S;J{z[d-e=' wPpU! b  jsy{Yo1Z1Zyj[tجU"Que"$hcTˠj=Ћ0E9샴gJ> FJiF\e<o0Mu 5Rb F"1'fQ!ppg-LNA;fQue"$hcn <Cl-1Z.w &05R>= !e62XTd,”bzhzw5aRI((U(d ;|QN%Yo4.<";ԑ\T^wR'e)hƞw5a3LIE6\5xh u$Fi;Ϛ0(j'-XU"QueX`p,)Ng10޴ڜd-eg]G#4< JYSpiF[ -Xs沌6Fi<`h=kƲPHw5aQu.OiJZ237{-k(sV#kr+;Ҍ3\"Lu< 2sl& ;t]ZxM#xM)vfQu.OhJk7%Qy4J.$ bO"0 js-yJ.X\Q4EliF]T/CHT` 3s沌6Fi<`h=kƲ E#4Ŷ05RF"aQ02c!V#\E^R6(Rt4RDf1F=( <>k(df >mֹk,`  u$Fi;;jT.ae6BF2,@B0BH@@,iF\Z*k|8EL< UB\Q4RDfp%V#d7Yw5a3LIE6\5x RDfEL< UB\E^R62u$FiyU ,&[ jQ$ bO=k|a2/ Ϛ0f9]JT/-YeٚV"f3!e6Y;dI5ըY㤚.;]Dm2Fٞb,[cԹ-~wJ(<@eo5ElsFʖRDfp%W fy|Q1', |'sY`H1ZwԨ ]Dm-u!ms(P wQyJu)2b,Xsԇ0BH#4< *C$kn <>k(df >mֹk,`An1pxMbÜŮ=kW Ih@B&IZd;n <>k(df >mֹk,`0 u$Fi>b,XŮxIhխ{Lj|ZN` 3s沌6Fi<`h=kƲ-ԑ.u)2b,XsԇZ-jA\,B[դ%))XEL< ɈabRhUr⅀³Ihծ!PҌ3]^$ "4Q_ gelygͲz1e, u$Fil`jeiDѪBH@]I&61Z$ bOk(a1OM60L]DmwwRm0YF zh!d T,6[ nIx6n|QYF zh!d T/-YeٚV"f3!e6Y;dI5ըY㤚.;]Dm2FٝϚ0L`F1  j|3U(ܔaGyk(}&0I8l`FʖRDfp%W fy|Q1', |'sY`H1Zw"3M_d֩2kT gelygͲz1e,an1g =4c3*aQ02cc1l`Q(;(ˋZPmo$ьCcǽ0BH#4< L`1q#5P Vn <>k(df >mֹk,`X u$Fi]Dm zh!c-yJ.Xˊ;ԑZxFŭ^Tn <>k(df >mֹk,`IbQ02cc1l`E^R6wYz%%"$ьCcǽZ-jA\0`0Ihծ!PҌ3]^$ "4Q_ gelygͲz1e, u$Fil`jeiD.ae6 =4c1mZPm, .(Qi4 zf.10`F=(w5a3LIE6\5x`0IbZJ0u%YF4|D`@B.ae6 ;;)x6 x>"0 jgOZctLzKs沌7=Ϛ0灣#ʖJ2p32{Ν{$,Muj?Ɲ.ae6{o#xelsU lٝRyC ;;=YFlx"0BRѕ5@w"3Mn <>k(df >mֹk,`0u$Fi]Dm]D ;ԑ T/kTo5IFJӿ` 3s沌6Fi<`h=kƲ0RDfw TlW@L"&Sl`灣#ms(QKa 4.-jA"&Sl`灣#ms(i]T&u)0sE^R6;ԑZxFŭ^Tn <>k(df >mֹk,`IbQ02c< {lZ*h`YqGѪHJ+RR,0xMZ-jA\0`0Ihծ!PҌ3]^$ "4Q_ gelygͲz1e, u$Fil`jeiD.ae6x>"0hUrH@ƪLNz*Q*mBH0wyJڞ$ "4QX<>k(df >mֹk,` Ibjb,[cU++M4b&k(Qғ#4k(df >mֹk,``u$Fi;Uk(Ž8R[5a/iE )KFV&u)1p5CN< ^ w>k(d_6Ҋ2R;}Mze^ 5amd*+ϕ-YokQOsJPϚ0ޒm0eٚRѕ2* ӶOY)vf_6Ҋ2ʖ;t]Z5#_;i="꘽yԱB繖(u)<#H3\CmJ2p{.)VrQyH@.c! )KFV4 bOE9H@.DX9ZYU RiYF#4Ğxh4YlcYg@HwQÄ]A;Ϛ0X1k5P0xM]E f =3R0O|e0ҔUl4Ǩ7w"3M =3R0O jsRѕ<>k(df >mֹk,``,["3LQF\"uv4>k(a1OM60L]Dm̴".(@eo5iDFd-񆔢fka=FGٽH3Ihp`[#T.|hƞw5a3LIE6\5x`0IbJ2Vp5YF4|D`@B.ae6Zuwה2QKNReͥ)hĪ1:q(-LNAwwRm0P2Ҕeymַ/m0ӨTu=WʹEy+;n|QGkP4UbtQuO_;i="꘽yԱB繖(;jRѕ:I[ Tp]P5P-j6wAi%neкˢ^P(Ž<]A*1:q(2k(  w#]Dm|n{m$o}W+['Qw2{'bxMp|8EӿQ02s-EiU J.G.ae6ZuY*@U 1:]v(EL< B.%V#\İIз25G.ae6ZuYQ,9ZD T.bXj[tأQ02s-N&0I 5Panekb]Dm̴".1:GF T.bXj[tأ |J(TWJZ20xM]A;Uk(Ž@ k*oA םa םa֝a&bm./usr/es/lib/ksh93/utilAA k. oA םa םa֝a&bm./usr/es/lib/ksh93/util/listty/AA k(>o םa՝a}֝a& bm./usr/es/lib/ksh93/util/list/KLIB_UTIL_LIST_array_fields_differ#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_array_fields_differ.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)18 1.4 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_array_fields_differ.sh, hacmp, 61haes_r714 11/28/11 15:19:22 # #=head1 NAME # # KLIB_UTIL_LIST_array_fields_differ - Return a list of fields that are different # #=head1 SYNOPSIS # # typeset -A array_1 # typeset -A array_2 # typeset differences # array_1( \ # [test]="foo" # [abc]="def" # ) # # array_2( \ # [test]="123" # [abc]="def" # ) # # KLIB_UTIL_LIST_array_field_differ array_1 array_2 differences # for $key in ${differences[*]}; do # echo "field: $key is different" # done # #=head1 DESCRIPTION # # Determines the differences between two KSH93 hash arrays # and places those differences into a third hash array # #=head1 ARGUMENTS # # 1: [by ref] first hash array to use in comparison # 2: [by ref] second hash array to use in comparison # 3: [by ref] resultant diff, this list will contain those field elements # that are different between the first and second arrays # #=head1 RETURN # # None - see 3rd array as output # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # # Name: KLIB_UTIL_LIST_array_fields_differ # # Description: Make a list of fields that differ # # Arguments: First array variable # # Second array variable # # String variable to return list in # # Returns: True if there are array fields that differ # # Results: String list of differing fields # # Global Refs: None # # Usage: KLIB_UTIL_LIST_array_fields_differ array1 array2 string_var # Return: list of fields that differ function KLIB_UTIL_LIST_array_fields_differ { . /usr/es/lib/ksh93/func_include typeset -n arr1=$1 typeset -n arr2=$2 typeset -n errlist=$3 errlist= typeset keylist KLIB_UTIL_LIST_unique_key_list keylist ${!arr1[*]} ${!arr2[*]} typeset key for key in $keylist; do [[ "${arr1[$key]}" != "${arr2[$key]}" ]] && errlist="${errlist:+$errlist }$key" # clean append idiom done [[ -n "$errlist" ]] }  ktE?oםa՝a}֝a&bm./usr/es/lib/ksh93/util/list/KLIB_UTIL_LIST_array_load_by_token#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_array_load_by_token.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)17 1.4 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_array_load_by_token.sh, hacmp, 61haes_r714 11/28/11 15:17:24 # #=head1 NAME # # KLIB_UTIL_LIST_array_load_by_token - Loads an array by tokens name = value # #=head1 SYNOPSIS # # typeset -A array # cat file | KLIB_UTIL_LIST_array_by_token array '=' '$1' '$3' # #=head1 DESCRIPTION # # Receives text on its stdin and splits each line # using the second argument as the delimiters. The # 3rd and 4th arguments are simply used as assignment # descriptors to save data to the array using the 3rd # as the key to store the 4th as the data # #=head1 ARGUMENTS # # 1: [by ref] array to load data into # 2: [scalar] IFS value to use in splitting data # 3: [scalar] single quoted string used to determine name field '$2' # 4: [scalar] single quoted string used to determine value field '$3' # #=head1 RETURN # # None, see the first argument for the array output # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_UTIL_LIST_array_load_by_token { . /usr/es/lib/ksh93/func_include typeset -n arr=$1 typeset do_strip=$2 typeset _ifs="$3" typeset key="$4" typeset value="$5" while read line; do # ignore empty key values IFS="$_ifs" set -- $line eval [ -z \"$key\" ] \&\& continue eval tmp=\"$value\" $do_strip && { tmp=${tmp#\"} tmp=${tmp%\"} } eval arr\[$key\]=$tmp done } R k-Io{םa՝a}֝a&{bm./usr/es/lib/ksh93/util/list/KLIB_UTIL_LIST_hasharray_datadumperces.txt#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_hasharray_datadumper.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)12 1.4 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_hasharray_datadumper.sh, hacmp, 61haes_r714 11/28/11 15:13:43 # #=head1 NAME # # KLIB_UTIL_LIST_hasharray_datadumper - Similar to the perl Data::Dumper module, dumps ksh93 hash # tables as sourceable strings # #=head1 SYNOPSIS # # typeset -A data # array(\ # [test]="foo" # [bar]="123" # ) # # KLIB_UTIL_LIST_hasharray_datadumper data # # #=head1 DESCRIPTION # # Dumps ksh93 hash tables as strings that can then be sourced by another script # to internalize, used for persisting data between ksh93 sessions # #=head1 ARGUMENTS # # 1: [by ref] array to dump # #=head1 RETURN # # None # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_UTIL_LIST_hasharray_datadumper { . /usr/es/lib/ksh93/func_include typeset -n array=$1 if (( ${#array[*]} == 0 )); then return 1 fi echo echo "unset ${!array}" echo "typeset -A ${!array}" echo "${!array}=( \\" for key in ${!array[*]}; do echo "\t[$key]=\"${array[$key]}\"" done echo ")" echo return 0 } `$"" kz3Jouםa՝a}֝a&ubm./usr/es/lib/ksh93/util/list/KLIB_UTIL_LIST_is_in_lista#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_is_in_list.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)14 1.4 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_is_in_list.sh, hacmp, 61haes_r714 11/28/11 15:14:50 # #=head1 NAME # # KLIB_UTIL_LIST_is_in_list - Informs caller if a value is in the list # #=head1 SYNOPSIS # # typeset list="a b c d e f g" # KLIB_UTIL_LIST_is_in_list list "c" && { # echo "Element c is in the list" # } # #=head1 DESCRIPTION # # Informs caller if a value is in the list # #=head1 ARGUMENTS # # 1: [by ref] array to search (haystack) # 2: [scalar] value to search for (needle) # #=head1 RETURN # # 0: value is in the list # 1: value is not in the list # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_UTIL_LIST_is_in_list { . /usr/es/lib/ksh93/func_include typeset -n array=$1 value=$2 for element in $array; do [[ "$element" == "$value" ]] && return 0 done return 1 } == kvKoםa՝a}֝a&bm./usr/es/lib/ksh93/util/list/KLIB_UTIL_LIST_remove_list_itemser#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_remove_list_items.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)15 1.4 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_remove_list_items.sh, hacmp, 61haes_r714 11/28/11 15:15:49 # #=head1 NAME # # KLIB_UTIL_LIST_remove_list_items - Remove specified items from a list # #=head1 SYNOPSIS # # typeset list="a b c d e f g h" # KLIB_UTIL_LIST_remove_list_items list "a" "d" "e" # #=head1 DESCRIPTION # # Remove an unlimited number of items from a list # #=head1 ARGUMENTS # # 1: [by ref] is the name not value of original list # the original list will be rebuilt after its contents # are saved. The returned list will not have the same # order as the original list, just the same members # excluding those listed on the command line # # 2+: [scalar] Any number of items to be removed from the original list # #=head1 RETURN # # 0 - success, # 1 - failed, # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_UTIL_LIST_remove_list_items { . /usr/es/lib/ksh93/func_include typeset -n orig_list=$1 typeset -n remove_list=$2 typeset -A keep_set typeset -A remove_set typeset key shift for key in $orig_list; do keep_set[$key]=: done while shift; (( $# )); do key=$1 if [[ -n "${keep_set[$key]}" ]]; then unset keep_set[$key] remove_set[$key]=: fi done orig_list="${!keep_set[*]}" remove_list="${!remove_set[*]}" }  k]Loםa՝a}֝a&bm./usr/es/lib/ksh93/util/list/KLIB_UTIL_LIST_unique_key_listser#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_unique_key_list.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)11 1.4 src/43haes/lib/ksh93/util/list/KLIB_UTIL_LIST_unique_key_list.sh, hacmp, 61haes_r714 11/28/11 15:12:31 # #=head1 NAME # # KLIB_UTIL_LIST_unique_key_list - Remove duplicates from a list # #=head1 SYNOPSIS # # typeset list="a b d e f b a a b" # KLIB_UTIL_LIST_unique_key_list list # echo $list # #=head1 DESCRIPTION # # Removes duplicate entries from a list # #=head1 ARGUMENTS # # 1: [by ref] list of elements to remove duplicates from # #=head1 RETURN # # None # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_UTIL_LIST_unique_key_list { . /usr/es/lib/ksh93/func_include typeset -n list=$1 typeset -A array while shift; (( $# )); do array[${1}]=: done list="${!array[*]}" } th k}oםa՝a}֝a&bm./usr/es/lib/ksh93/util/KLIB_UTIL_word_countniq#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/KLIB_UTIL_word_count.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)19 1.5 src/43haes/lib/ksh93/util/KLIB_UTIL_word_count.sh, hacmp, 61haes_r714 6/10/12 14:05:15 # #=head1 NAME # # KLIB_UTIL_word_count - Count the number of words in a string # #=head1 SYNOPSIS # # typeset string="HACMP v5.3 on AIX 5.3" # typeset -i word_count=0 # KLIB_UTIL_word_count word_count $string # echo "Number of words: $word_count" # #=head1 DESCRIPTION # # Counts the number of words in a string # #=head1 ARGUMENTS # # 1: [by ref] counter returns the number of words counted # 2+ [scalar] strings to count # #=head1 RETURN # # None # #=head1 COPYRIGHT # #(C) COPYRIGHT International Business Machines Corp. 2005 #All Rights Reserved # #=cut # function KLIB_UTIL_word_count { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max : version=1.5, src/43haes/lib/ksh93/util/KLIB_UTIL_word_count.sh, hacmp, 61haes_r714 : INPUTS: $* typeset -n result=$1 shift result=$# log_return_msg 0 $0 $LINENO return $? } # End of "KLIB_UTIL_word_count()" nct kgo םa՝a}֝a& bm./usr/es/lib/ksh93/util/KLIB_UTIL_runCommandGetHashey_l#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/util/KLIB_UTIL_runCommandGetHash.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)39 1.4 src/43haes/lib/ksh93/util/KLIB_UTIL_runCommandGetHash.sh, hacmp.assist, 61haes_r714 1/16/13 13:55:20 function KLIB_UTIL_runCommandGetHash { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max : version=1.4, src/43haes/lib/ksh93/util/KLIB_UTIL_runCommandGetHash.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n data=$1 shift typeset headings="" key="" value="" values="" typeset OUTPUT_FILE="$TMPDIR/.clmgr.rcgh.$$" typeset -i rc=0 try=0 tries=5 if (( $# == 0 )); then rc=1 else #================================================== : Run the command, retrying a few times if needed #================================================== for (( try=0; $try < $tries; )); do print "$0()[$LINENO]($SECONDS): $*" >>$CLMGR_TMPLOG "$@" >$OUTPUT_FILE 2>>$CLMGR_TMPLOG rc=$? if (( $rc == RC_SUCCESS )) && \ [[ -f $OUTPUT_FILE && $(head -1 $OUTPUT_FILE) != \#* ]] then rc=$RC_ERROR # Found unexpected, error output fi (( $rc == RC_SUCCESS )) && break || rc=$RC_ERROR (( try++ )) if (( $try <= ( $tries - 1 ) )); then sleep $try fi done if (( $rc == RC_SUCCESS )) && \ [[ -f $OUTPUT_FILE && -s $OUTPUT_FILE ]] then headings=$(head -n 1 $OUTPUT_FILE) values=$(tail -n 1 $OUTPUT_FILE) while [[ -n $headings ]]; do key=${headings%%:*} headings=${headings#${key}:} value=${values%%:*} values=${values#${value}:} data[$key]=$value [[ $headings != *:* ]] && break done fi fi [[ -f $OUTPUT_FILE ]] && /usr/bin/rm -f $OUTPUT_FILE log_return_msg $rc $0 $LINENO return $? } # End of "KLIB_UTIL_runCommandGetHash()"  k@/o םa՝a}֝a& bm./usr/es/lib/ksh93/util/KLIB_UTIL_parse_argumentshey_l#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/util/KLIB_UTIL_parse_arguments.sh 1.9 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)60 1.9 src/43haes/lib/ksh93/util/KLIB_UTIL_parse_arguments.sh, hacmp.assist, 61haes_r721, 1607A_hacmp721 12/28/15 10:52:49 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ #============================================================================ # # Name: KLIB_UTIL_parse_arguments # # Description: Parses the "name=value" input pairs for clmgr, and stores # them in an associative array. # # Inputs: list A reference to an associative array. This is # where the parsed results are stored. # # The remaining arguments are whatever pairs were passed # in to clmgr for this invocation. # # Outputs: Nothing is output to STDOUT/STDERR. # # Returns: 0, if no parsing errors occur. Otherwise, a non-zero. # #============================================================================ function KLIB_UTIL_parse_arguments { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" max : version=1.9, src/43haes/lib/ksh93/util/KLIB_UTIL_parse_arguments.sh, hacmp.assist, 61haes_r721, 1607A_hacmp721 : INPUTS: $* typeset -n list=$1 shift typeset OPT_ARG=$* ORIG_ARGS=$* typeset name="" value="" value_regex="" typeset -u nameUC="" typeset -i argCnt=0 rc=$RC_UNKNOWN ORIG_SIZE=0 NEW_SIZE=0 typeset -i brake=50 # Just to be *sure* there are no hangs...! while [[ -n $OPT_ARG ]]; do OPT_ARG=${OPT_ARG##+([[:space:]])} # Remove leading whitespace (( argCnt++ )) #================================================= # Search for the first variable name in OPT_ARG. # It can be found by simply removing everything # after the first equals sign from OPT_ARG. #================================================= name=${OPT_ARG%%=*} if [[ -n $name ]]; then OPT_ARG=${OPT_ARG#${name}=} #================================================================== # If there is another variable assignment, the current values ends # where that next assignment begins. Otherwise, all the remaining # values are assumed to belong to the current variable. # # Starting with an OPT_ARG of --> abc=123 def=456 ghi=789 # The line of code, above, extracts the first/leading variable # name, then removes it from OPT_ARG. In this case, that is "abc", # leaving a remaining OPT_ARG of "123 def=456 ghi=789". # # Case 1: # OPT_ARG -------> 123 def=456 ghi=789 # Match/Remove --> ^^^^^ # Remainder -----> 123 # The remainder is the value assign to the current variable. # So on the first pass in this example, list[abc]=123. # # Case 2: # OPT_ARG -------> 789 # All other variable assignments (if there were multiple) # have already been processed. Therefore, whatever value(s) # remaining in OPT_ARG must be the values for the last # extracted variable name. So in this example, list[ghi]=789. #================================================================== if [[ $OPT_ARG == *+([[:space:]])+([[:alnum:]]|_|-)=* ]]; then value=${OPT_ARG%%+([[:space:]])+([[:alnum:]]|_|-)=*} if [[ -n $value ]]; then value_regex=${value//\(/\\\(} value_regex=${value_regex//\)/\\\)} value_regex=${value_regex//\*/\\*} value_regex=${value_regex//\]/\\\]} value_regex=${value_regex//\[/\\\[} # The odd quotes are for ksh93 -n! value_regex=${value_regex//'|'/'\\|'} value_regex=${value_regex//'&'/\\'&'} ORIG_SIZE=${#OPT_ARG} OPT_ARG=${OPT_ARG#$value_regex} # Remove the value from OPT_ARG NEW_SIZE=${#OPT_ARG} # Make sure the removal was successful if (( $NEW_SIZE == $ORIG_SIZE )); then rc=$RC_ERROR break fi fi elif (( argCnt == 1 )); then value=${OPT_ARG#*=} unset OPT_ARG # Kill the loop. All input has been processed. else value=$OPT_ARG unset OPT_ARG # Kill the loop. All input has been processed. fi if [[ $name != -@(c|x|d|h|v|D|E|S) ]]; then nameUC=${name//-/_} # Convert dashes to underscores list[$nameUC]=$value # Store the name/value pair in the return list fi fi if (( --brake <= 0 )); then rc=$RC_ERROR break # Avoid hangs, please! fi done if (( rc == RC_ERROR )); then typeset CLMGR_LOG=$CLMGR_TMPLOG if [[ -z $CLMGR_LOG || ! -f $CLMGR_LOG || ! -w $CLMGR_LOG ]]; then CLMGR_LOG="$(ODMDIR=/etc/objrepos $HAUTILS/clodmget -q name=clutils.log -f value -n HACMPlogs)/clutils.log" [[ ! -w $CLMGR_LOG ]] && CLMGR_LOG="/tmp/clutils.log" fi print "$0()[$LINENO]($SECONDS): ERROR: an internal error occurred within KLIB_UTIL_parse_arguments(). Original Args: $ORIG_ARGS Problem parsing this: \"$name=$value\" Unprocessed Input: $OPT_ARG " >>$CLMGR_LOG else rc=$RC_SUCCESS fi log_return_msg $rc $0 $LINENO return $? } # End of "KLIB_UTIL_parse_arguments()" the k;oA םa םa}֝a&bm./usr/es/lib/ksh93/ezupdate_UTIAA ktboםa՝a֝a&bm./usr/es/lib/ksh93/ezupdate/commonarse_#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/ezupdate/common.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/ezupdate/common.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM typeset scriptname=${0##*/} typeset scriptargs="$*" ############################################################################## # Global variables for log ############################################################################## export PS4='EZUpdate:$scriptname[$LINENO]:${0##*/}:($SECONDS) ' # log level, by default 0 export CLEZUPDATE_LOG_LEVEL=5 # log file, by default /var/hacmp/EZUpdate/EZUpdate.log export CLEZUPDATE_LOG_DIR="/var/hacmp/EZUpdate" export CLEZUPDATE_LOG_FILE="${CLEZUPDATE_LOG_DIR}/EZUpdate.log" # log mode, either append or wrap # append if CLEZUPDATE_LOG_APPEND=1 # wrap if CLEZUPDATE_LOG_APPEND=0 # By default wrap mode export CLEZUPDATE_LOG_APPEND=0 ############################################################################## # Global variables for accessing utilities ############################################################################## typeset TOOLDIR=/usr/es/sbin/cluster/utilities typeset CLMGR_CMD="$TOOLDIR/clmgr" typeset CAA_CLRSH=/usr/sbin/clrsh typeset HA_CLRSH=${TOOLDIR}/cl_rsh typeset CLRSH=$HA_CLRSH #CLRSH -n typeset CLRCP=${TOOLDIR}/cl_rcp typeset CLHANDLE="${TOOLDIR}/clhandle -a" typeset GET_LOCAL_NODENAME="${TOOLDIR}/get_local_nodename" typeset CSPOCDIR=/usr/es/sbin/cluster/cspoc typeset CLI_ON_NODE="/usr/es/sbin/cluster/cspoc/cli_on_node -N" export PATH=$PATH if [[ -f $TOOLDIR/cl_get_path ]]; then export PATH=$($TOOLDIR/cl_get_path all) export OP_SEP=$(${TOOLDIR}/cl_get_path -S 2>/dev/null) export OP_SEP=${OP_SEP:-\~} fi ############################################################################## # Global variables for msg catalogs ############################################################################## typeset EZUPDATE_MSGS=ezupdate.cat typeset CLUSTER_T_SET=1 typeset NODE_T_SET=2 typeset CL_EZUPDATE_MAIN_SET=3 typeset CL_EZUPDATE_USAGE_SET=4 typeset CL_EZUPDATE_USEREXIT_SET=5 typeset CL_EZUPDATE_CHECKNIM_SET=6 typeset CL_EZUPDATE_CHECKLPPS_SET=7 typeset CL_EZUPDATE_CHECKIFIX_SET=8 typeset CL_EZUPDATE_INSTALL_SET=9 typeset DSPMSG="/usr/bin/dspmsg $EZUPDATE_MSGS -s" typeset CANNOT_INT_MSG="$($DSPMSG $CL_EZUPDATE_USEREXIT_SET 4 'Cannot interrupt, please retry later.\n')" ############################################################################## # Global constants ############################################################################## typeset -r ACTION=( Q="QUERY" P="PREVIEW" C="COMMIT" R="REJECT" A="APPLY" B="BOOT" QUERY="QUERY" PREVIEW="PREVIEW" COMMIT="COMMIT" REJECT="REJECT" APPLY="APPLY" BOOT="BOOT" ) typeset -r MODE_TYPE=( H="HELP" A="AUTOMATIC" ) typeset -r MSG_TYPE=( ERR="ERROR" WARN="WARNING" INF="INFO" ) typeset -r UPDATE_SOURCE=( LOCAL="LOCAL" NIM="NIM" ) typeset -r NODE_LOCALIZATION=( LOCAL="local" REMOTE="remote" ) typeset -r MANAGE_MODE=( ONLINE="online" AUTO="auto" MANUAL="manual" UNMANAGE="unmanage" OFFLINE="offline" MOVE="move" NON_DISRUPTIVE="non_disruptive" SILENT="silent" ROLLING="rolling" NONE="none" ) typeset -r RC=( OK=0 FAILURE=1 PARAM_ERROR=2 PING_ERROR=3 SSH_ERROR=4 EMPTY_DIR=6 PHA_CMD_ERROR=7 NOT_FOUND=8 RG_CANNOT_MOVE=9 WARNING=127 QUIESCE_REBOOT=200 QUIESCE_NO_REBOOT=201 UNKNOWN=-99 ) ##################################################################### # # NAME: DSP_MSG # # FUNCTION: # Display an error message with internationalization to stderr. # Log the message into the logfile with the right prefix. # # EXECUTION ENVIRONMENT: # # NOTES: # # RECOVERY OPERATION: none # # DATA STRUCTURES: # parameters: # 1: the MSG_TYPE can be ERROR | INFO # 2: parameter for DSPMSG function # global: # # RETURNS: none # # OUTPUT: display messages ##################################################################### function DSP_MSG { [[ "$VERBOSE_LOGGING" == "yes" ]] && set -x [[ "$DEBUG_MODE" == "yes" ]] && set -x typeset msg="" typeset msg_type="$1" typeset msg_set="$2" typeset msg_no="$3" typeset msg_def=$4 shift 4 msg=$($DSPMSG $msg_set $msg_no "$msg_def" "$@") print -- "$msg" if [[ $msg_type == ${MSG_TYPE.ERR} ]] then log_error "$msg" elif [[ $msg_type == ${MSG_TYPE.WARN} ]] then log_warn "$msg" else log_trace 0 "$msg" fi } # End of "DSP_MSG()" ##################################################################### # # NAME: WALL_MSG # # FUNCTION: # Displays the message on the wall. # # EXECUTION ENVIRONMENT: # # NOTES: # # RECOVERY OPERATION: none # # DATA STRUCTURES: # parameters: # 1: parameter for DSPMSG function # global: # # RETURNS: none # # OUTPUT: display messages ##################################################################### function WALL_MSG { [[ "$VERBOSE_LOGGING" == "yes" ]] && set -x [[ "$DEBUG_MODE" == "yes" ]] && set -x typeset msg="" typeset msg_set="$1" typeset msg_no="$2" typeset msg_def=$3 shift 3 msg=$($DSPMSG $msg_set $msg_no "$msg_def" "$@") wall -- "$msg" } # End of "WALL_MSG()" t k&aoםa՝a֝a&bm./usr/es/lib/ksh93/ezupdate/log#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/ezupdate/log.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/ezupdate/log.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM typeset scriptname=${0##*/} # This integer to be set to 1 or 2 only for log debugguing typeset -i debug_log=0 typeset -i debug_log_max=9 . ${EZU_LIB_DIR}/common typeset DATESTR=$(/usr/bin/date '+%Y_%m_%d %H:%M') ######################################################## # This function to init log characteristics ######################################################## function log_init { (( debug_log == 1 )) && print -u1 "log_init" if [[ $VERBOSE_LOGGING == high ]]; then set -x fi log_verify_and_init } ######################################################## # If append mode, we just write at the end of the file # If wrap mode, we just wrap log file and start anew a # new log file ######################################################## function log_verify_and_init { (( debug_log == 1 )) && print -u1 "log_verify_and_init" if [[ $VERBOSE_LOGGING == high ]]; then set -x fi if [[ ! -d ${CLEZUPDATE_LOG_DIR} ]]; then /usr/bin/mkdir -p ${CLEZUPDATE_LOG_DIR} if (( $? != 0 )); then print -u1 -- "$scriptname: ERROR! Cannot create $CLEZUPDATE_LOG_DIR log directory!" >&2 fi fi if [[ -e ${CLEZUPDATE_LOG_FILE} ]]; then if (( CLEZUPDATE_LOG_APPEND == 0 )) ; then (( debug_log == 1 )) && print -u1 "CLEZUPDATE_LOG_APPEND == 0" (( debug_log == 1 )) && log_wrap || log_wrap 1>/dev/null 2>&1 /usr/bin/touch ${CLEZUPDATE_LOG_FILE} 2>/dev/null else (( debug_log == 1 )) && print -u1 "CLEZUPDATE_LOG_APPEND == 1" /usr/bin/touch ${CLEZUPDATE_LOG_FILE} 2>/dev/null fi else /usr/bin/touch ${CLEZUPDATE_LOG_FILE} 2>/dev/null fi exec 2>>${CLEZUPDATE_LOG_FILE} exec 3>>${CLEZUPDATE_LOG_FILE} print -u 3 -- "### $DATESTR - Running script: $scriptname $scriptargs" } ######################################################## # To wrap log files ######################################################## function log_wrap { (( debug_log == 1 )) && print -u1 "log_wrap" if [[ $VERBOSE_LOGGING == high ]]; then set -x fi for (( i=${debug_log_max}-1 ; i>0 ; i-- )); do /usr/bin/ls ${CLEZUPDATE_LOG_FILE}.$i >/dev/null 2>/dev/null (( $? == 0)) && /usr/bin/mv ${CLEZUPDATE_LOG_FILE}.$i ${CLEZUPDATE_LOG_FILE}.$((i+1)) done if [[ -e ${CLEZUPDATE_LOG_FILE} ]]; then /usr/bin/mv ${CLEZUPDATE_LOG_FILE} ${CLEZUPDATE_LOG_FILE}.1 fi exec 2>>${CLEZUPDATE_LOG_FILE} exec 3>>${CLEZUPDATE_LOG_FILE} } ############################################################## # # NAME: log_cleanup # # FUNCTION: performs cleanup on exit # # DATA STRUCTURES: # parameters: # global: # # RETURNS: (int) # # OUTPUT: ############################################################### function log_cleanup { typeset end_date="" set +x /usr/bin/rm -f ./CMD_* 2>/dev/null /usr/bin/rm -f ${CLEZUPDATE_LOG_DIR}/lcd.*.$$ 2>/dev/null /usr/bin/rm -f ${CLEZUPDATE_LOG_DIR}/clvd.$$ 2>/dev/null end_date=$(/usr/bin/date '+%Y_%m_%d %H:%M') print -u 3 -- "### $end_date - Leaving script: $scriptname $scriptargs rc=$rc" # Since this was called from an "exit" trap, whatever # return code that was exited with will be returned # to the shell from here. } # end of log_cleanup ####################################################### # Write to stdout # All what is written to stdout is appent to log file ####################################################### function log_write { print -u 1 -- "$1" | /usr/bin/tee -a ${CLEZUPDATE_LOG_FILE} } ######################################################## # Write to error ######################################################## function log_error { print -u 2 -- "ERR: $1" } ######################################################## # Write warning to log ######################################################## function log_warn { print -u 2 -- "WARN: $1" } ######################################################## # Write to log # Filehandle 3 is used for log ######################################################## function log_trace { (( debug_log == 2 )) && print -u1 "log_trace $1 ${CLEZUPDATE_LOG_LEVEL}" if [[ -n $VERBOSE_LOGGING && "$VERBOSE_LOGGING"=="high" ]] \ || [[ "$1" == +([0-5]) ]] \ && (( ${CLEZUPDATE_LOG_LEVEL} >= $1 )) then print -u 3 -- "INF: $2" fi } ######################################################## # This function to display log characteristics ######################################################## function log_short_display { print -u1 -- "out CLEZUPDATE_LOG_LEVEL=$CLEZUPDATE_LOG_LEVEL" print -u1 -- "out CLEZUPDATE_LOG_FILE=$CLEZUPDATE_LOG_FILE" print -u1 -- "out CLEZUPDATE_LOG_APPEND=$CLEZUPDATE_LOG_APPEND" } ######################################################## # This function to display log characteristics ######################################################## function log_display { print -u1 -- "out CLEZUPDATE_LOG_LEVEL=$CLEZUPDATE_LOG_LEVEL" print -u1 -- "out CLEZUPDATE_LOG_FILE=$CLEZUPDATE_LOG_FILE" print -u1 -- "out CLEZUPDATE_LOG_APPEND=$CLEZUPDATE_LOG_APPEND" print -u2 -- "err CLEZUPDATE_LOG_LEVEL=$CLEZUPDATE_LOG_LEVEL" print -u2 -- "err CLEZUPDATE_LOG_FILE=$CLEZUPDATE_LOG_FILE" print -u2 -- "err CLEZUPDATE_LOG_APPEND=$CLEZUPDATE_LOG_APPEND" print -u3 -- "log CLEZUPDATE_LOG_LEVEL=$CLEZUPDATE_LOG_LEVEL" print -u3 -- "log CLEZUPDATE_LOG_FILE=$CLEZUPDATE_LOG_FILE" print -u3 -- "log CLEZUPDATE_LOG_APPEND=$CLEZUPDATE_LOG_APPEND" } PPEND = l“coםa՝a֝a&9bm./usr/es/lib/ksh93/ezupdate/Node_tarse_   e #-ainorst"$E_cdlmpu().:=NORSTfgh{}'/0ACDGILMPU[]bkvy &1F\wx|!%,2?BVYz45>HKWXZjq+3678;*9Q(!c}% JJNQITNYGb+jK+c~^ec~^;XVKƨ ;iJoe 䢂H]E3iJV7WΨHsloҲYՒ1ƵkZֵkZֵkZֵkZTekעSՋղ' k@mi&xhyCa)IUe4 D@< D4<$acZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵnX)ek.֢>wXZU*QֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵeFV]wI;FF+].wGgFV]w ʕl#ʕF/VȜs?2% m:BQgFV]w#$1]QkGΐQ\Ȝs?2!(F.tDQ]p\ D#'!(8ekq PΐB?#:BQ"qK8@0IJү8ekq 0,/_[iWȜs?2h3&-0xf)Zhe1t"qK8BJ/JڐB?a!J8ekq"ԁ )y@HRڐ1e-gFV]w`1y@HRҬ-gFV]w-H(qP#ԁ )h('t3=*b5Ҭ-0DQ]p;ԒOR{ D#ԒOR{ D Aab,,y2C "LQ]pA:na`*8ekq xR%I'G ;*I"'t3B)\I/4#[U!J8ekq ]u!J%zIyaK*B"qK8D  W/9+K+9!J8ekq"x W/9+K+xQ֡gFV]w K׬MQe]d["qK8Ax)t;B?,-4T*DQ]p;FzH4P3+]./wYsd1a !"qK8D \Y XG"ŭDk$aU(DQ]pRu-u}oRI xүQDTB*B"qK8Ax)t;u$ /pGiU$Hs?2$#W-d<ЈY &D"T`5lK8DZU|^bdiU_UvDB!dÐDDj$hyRbE +].ՒvEY'dN<ЈY &D lekq"ԒB]zz(2/r*I!xD/YeHs?2jI!xD^ ].eePEI$/Fv-*8ekq pyyOPY N"qK8@U!J>2NҕT*DQ]p*'t֐6eR3'tEinf^R'FGkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?P! ,Y ,L Q=Lޒƹ)'hא )2hC$""$LH3nQ`j옒$AgpвyR @Yz[3$,3vY(a2(? kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?˯ GNYG()x@0T&H800dTWz]w()xj`r"$P;"G8fv*+A=.gӄkdslǚD|^gӄkeJzD"<̩Tbl?֜#]_["qJmNgdN<#{ѥ_[6s.tD"i$a^xP‡@1Q@0 ңiIU_/UU4dV^3s±ÙS7DDvyȖBʖ@%*la(L )*p >e-1ȄgWs  (?ԒOQ2bl*2^/VuRI=N2N[gJD&L@4<TTOQ;ճ#Y+³ 8PH&*4$Tq֒%S!M/UƞP3i< g0f <(hC HʠLiQ4|4ҒvC>i$a^xP‡@1Q@0 ңiIU_/UU4dV^3s±ÙS7DDvyȖBʖ@%*la(L )*p >e-1ȄgWs  (?ԒOQ;ղ'hzY+w[MNޘKI9x(3 dV¦z/)QJ3yyO׌()4[7n,D|^<ҒI#'qzm$a^ <(hC HʠLiQ3">/V͏ղ Ï4[6 8XE+f^x5ޤ࢖86k^grQNfRNѮ^Sf-i@-=zaS=L?%5_XJ9yO׌c7+`OJ:BQgw=xf)Z|"^rUS7$?I1)n`/JQ/ &"8{?ۖ3xΐx|SVZҸx/9+ͳ^'zLse[Ғ)џUdblfۼbPO=->ggg0f <(hC HʠLiQ:1zDqUdblqITȜx`qDCCw$U&T  TYd5CɒD ` $\s$<#lRFޕYDž (xy$ yT *8`IzޒITgJԉOIT(AC4IFzWg4p$LTiP &H4RUW>wUiI;!4g0f <(hC HʠLiQ4|ԈA*2^/PѹKX?J""T;<ЉPKH@CyeK Qȕ@0 &PUO8CdB3ITg9hBgx33,M/UeHoODyRވU=үAiьDDvyȖHo<0,T ` ɐ2N`@(pd0 >ǚD|^;8H_[6v()izo"G<ҒI#'qzogLY$ԀQ"yDPD@`Xx ,LabjR$ԀQ"yDPD@`Xx ,L,?ԑk7x+8𡣅$"bO*a2AG4[6=I$ H<#ԒOR{ D0^o Z1je%yڲwxbm*WEQKg0f <(hC HʠLiQ;ZKLzJs?E%SU4dV^Ǥg3i< g0f <(hC HʠLiQ4|4ҒvC>i$a^xP‡@1Q@0 ңiIU_/UU4dV^3s±ÙS7DDvyȖBʖ@%*la(L )*p >e-1ȄgWs  (?U4dV^RFޕ†<@<<C<#lΐH<#r#:BQ6 8uש -\ G/9+Օo/VǣlITȜ&AhD&tJ0* BRΐNg0f <(hC HʠLiQ;ZKLzJs?E%SU4dV^Ǥg3i< g0f <(hC HʠLiQ4|4ҒvC>i$a^xP‡@1Q@0 ңiIU_/UU4dV^3s±ÙS7DDvyȖBʖ@%*la(L )*p >e-1ȄgWs  (?:%TF.tD񶑙ghzp{A< 69H5ҼxP‡@1Q@0 ңgD|^:%TF.tDq:%TF.tlqgpS7:BQJe[$մ?U2'IB!*QE!NťA(+s:RFޕYDž (xy$ yT *8`IzޒITg#RzJ8L"'lRFޕYDž (xy$ yT *8UOyƚRNg##Y+³ 8PH&*4$Tq )*%"zJ 4n|r8V8s?fҢH4"T9p(Px`RD%P-L! !%U|SG०<U3;yaae6g#{Fe%#\(@#oJVqCG  IDFUdJ!izlzOz#:BQ" 8HIDbHJ&3x0\ G\YV;m/V̈́n/\ Gtp"%'g3IFzWg4p$LTiP &H4%zJC=%S9IH"*2^/\U34IFzWg4p$LTiP &H4RUW>wUiI;!4g0f <(hC HʠLiQ4|ԈA*2^/PѹKX?J""T;<ЉPKH@CyeK Qȕ@0 &PUO8CdB3ITg9 @?1]QkU4dV^RFޕ†<@<<C<#l!(yG\ E0()i0MHn,ITȜx`qDCCpgK+D3IFzWg4p$LTiP &H4%zJC=%S9*2^/R'=%S g"x$a^xP‡@1Q@0 ңiIU_Wi$|9H5Ҽ+8𡣅$"bO*a2AGҒ)^/R!hzBg F,#c3n, *$PB%C, =  ,DK"U(PBRUW< }˾ Zc=%S98(/V͏T*Dq3 T0^ g#ޕ`1hs?^Scs">fR&dN<0@D8!!*0LD D0 J (XLH I qBbb@I"aJLhY@80 5{;VuL#Y+³ 8PH&*4$Tq֒%S!M/UƞP3i< g0f <(hC HʠLiQ4|4ҒvC>i$a^xP‡@1Q@0 ңiIU_/UU4dV^3s±ÙS7DDvyȖBʖ@%*la(L )*p >e-1ȄgWs $  E 6gfY*2^/\ʑ!ޞƨIJӨүW[h[!J1;?`#m!~w psү3q |PS8U^dH P2b?J""T;<ЉPKH@Cy䉆dJ[`+@BeeP8 pJCy6vqWz9D*hDr%$$L5K"UHL$)үS7W>wY3wUE mgd Tǚ!J5KJQM9n pFf) WzkzFx;ford!,|PS>}WDq2B;gLY^S$s^s;grg ₙw#izogLY#Y+.qCG  IDFUdJ!41YfX Z31MHR3JfbO4X Z31ByG*bљ͞jf l/. )=RљjBkzFx;2Nԅ+) @YKE)E$F jB]pƸU󮴔C90C^S$s$HRNL|PS2NfS<#ť* T;yɀl7B)/,LhkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?P!egpX g^wC9)'hM{?%H (LgYܑ2 D bH ,LBK ,&Qgnt !e%%#I*Xũ;F}Waүg HYg%$nQe !j9hBnĤ p)*s!ǕLywKM&?ݕ]$gYܘa!2ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵgua(3PS85a2" L88/V͜g?_ϝ4JK^ΙF #JTU3qg0f <(hC HʠLiQ;ZKLzJs?U4dV^OzJ@ D-H5Ҽ+8𡣅$"bO*a2AGҒ)8JI s?ԑk7xVqCG  IDFUdJ!%U|SV^BITђYzs±ðH'y<@@-P(PClg ₙFIkȑΌTPTU3qgfY*2^/\ʑ!ޞ!(ԁ|PS>v^wC()-y9ђv*CQVşghzp~ *D;zz#WGJ=xf)Zhe1tgKgfY*2^/\ʑ!ޞU=үAiџ$a^ <(hC HʠLiQ3">/V͏_[" 8H_[6 8#oJVqCG  IDFUdJ!izlzOz4dAi=үs?ԑk7x+8𡣅$"bO*a2AG4[6v^wC()-y9ђv1jFIkȑzn,nufc^rW*'|^F/V8%zL$Z P=% JhzsITgѹ^±ðH'y<@ర2g#r#:BQ"zJ՟H5ҼxP‡@1Q@0 ңgD|^aǚD{DbHJ&3yB!(%yڲwxbm*Wh-ΉT&^"ЈJUDzJAOITђYzs#c`O;yaae6GΉU!(2N$s">/V⢬?Ff(DHzUţ36y Y0m/ gүW["G8XY#QVşzUŢ#iJRRD` IEմLNK@$&'%6gx39F^ NQ#oJVqCG  IDFUdJ!izl{Ҭ-aǚD{Ҭ-a3IFzW 8PH&*4$Tq Hճcޕ`1h( Ï4X Z)J)"0`0L+a4BT9II)*%(0c8L9+;yWs  (K\QH`5%(0`yGڐ1e-0l. V灡L|}R5g#ޕ`1h('8-qE!`O' 00dB0IN?^0g"a#Y+YDž (xy$ yT *8yGٱJRRD`aǚD{Ҭ-0lq/h`` ?Њ|NdhkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY$"k?ۂ&H?f p2NkpQfVKj;2NUk?۠ ,L 4<2B(,AgrD T?Hͤ/NSIՐʦn{Ҭ/}/{?ť*1k?۔@0@;&$@gY4,^TA0e*A|ޭB o뢬tR/_+!8teS&ՀŜ:RSNJ)9)!gAjD $T6(VIk9s9s9s9s9s9s92^od;Z"cz'$s9s9s9s9s9s9s3AM4X Z31C~**}뢬B!dÐDDj$o]dH $"$P"L @iUFvW mёrB6lᛡب3q`  BSzU1L/|wX _'}L3)ڐ1e/kՐŧC>v^wC9ђv*CBIEY [?4n|r9& 3n,7>idH(}lDq2B;">}lDq"eBEYS7>ȫ$B 0 m ₞yGүȑ& @TU3qg#Y,NȞhD,Xr @y"d6g0fg4p$LTiP &H4fҲYdyGҲYds?s9s9s9s9s9s9sC+Y-w6s9s9s9s9s9s9s3">ȫ$4"H,9DI<2HEYS70iyGF.toತG󷧁nP"#l0Xx .t™sex+Jno1 ƺN!6oL^^SV'3n}%fr4bgYѹ `c3n,gyO19E)E$F grgiQ$DJg*`8If Aȕ@ kޕ`1zRK\ !=[VIdB83%S"pJMfQ1x ^/\U3ѹ^±ÙS7DDvyȖB Aȕ@XB (C Z}e*bƸCGӄz)vȄqgѼȑ4P0y0o;yDE mŮyNNXE{gx39F^1g dЉJ@ۘ QzV1IyGټ B DHd*;64"%CD$@y䉆dJ[ak%LbR8^ҷ>1%t2N`@(pGVI3">/V͝yGҲYd9* (`oJn2N">/V$Hd B DHd*;6s?ԑk7xVqCG  IDFUdJ!`IzޒU3zJ@ g"x$a^xP‡@1Q@0 ң%%U|Su^qHs°H'>i`9.8vܱQSҒ)8@ :O/_8&S7ҢB%C7;N'oLgNQC""DE m-H& y FI4gx18&ۡΥd1kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֳnH,E*՟gpX g|Hszv8D(3}*VIH &K@P!  "e*A& H;UyՒv;Noy~2S7$'|*´f;LJx)HszJ/J\ |1k?۔@0@;&$@gY4,^TA0e*A|ޭB o뢬t#gz|Wz^*/1gΑrB6s?VCp<( Mu8u ƧΜR0s?RBP?)'h՟gr(H l#QoP0x,,<@Ls `Tť*=*IJVj@aF gă"Bnm>KB&,@JtP(POwX+i^IIŔ(<ݕ]$gYܘa!2ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵgua(\?3P(*"Ã#f OKs?3 @ DDjdH EpH'p9K8ekt9DEQ]%SFKeDQ^VItTUvDQ^KeD㙂*2뤥+5LMU'#Y+.qCG  IDFUdJ!VI*+A=뢬'DzZ*;6#oJ xP‡@1Q@0 ңvNS>VI|PS>VIDyAa""L5 7n,k9s9s9s9s9s9s92-)W$<#l_ >wJug\9s9s9s9s9s9s9D|ZRrU{)JS@DO4n|r9& `O;|gx3s9s9s9s9s9s9sC*3Jگz<|뤥+5LMoes9s9s9s9s9s9sL+a"ЈJM%)Ybh_7G (=%'C(|8L+5LMU'>KeEKNx69|PS8fJvzUŝn, *$PB%C, <<,y"a"Y.VaJ/J_ՔHi)JS@gԉ3%S"pJH"JuM%)Ybh9II)*%=%S9/9+93qgiQ$DJg*`8I(o<0,T `a(L )iJuQzVM+5LMI @dB8Hճg3i<@ర2gx3g?ԑk7x+8𡣅$"bO*a2AG4[6>ȫ$0">ȫ$0ALHd*;7#hD,Xr @y"d7O;yɀlg ₛEY'x<`z$"G<ЈY &d o3ϰ=tUw#hD,Xr @y"d *PLHxx?>VIDyAa""L5C$X g<`z$"G<ЈY &EYS7()iEY'f$s Aa$"H,9x?fU*;"yAa""L5begyGҲYdȑ4"H,9DI<, Ix?fU*;"yAa""L5!d ԁ|PS<#Y,NH $"$P"L @**|ꊲNȞhD,Xr @xXbf^ )l_:'*;|L_`z$3sm uůZ@ۘ Ւv9$a^ <(hC HʠLiQ3">/V͏_: Ï5JuEY'f()9TUwn,D}*)n`/>|ꊲN4`#3,H|Ȍ\ DeHoO@ܡLDGa+ f'oϩQ஦n=*ש pՒvG %=u}obr93s-#6(3)?ƍ(S+93qg\9s9s9s9s9s9s9!/]V(5pMW(5Ւvs9s9s9s9s9s9s^S pyG*bJQITIJ"X@xy YDPD%P-&VXDҔR^whq N)4ƺNǃ" gnj9*Wh->c20s?RU>KezJs?_7< r8V8s?fҢH4"T9p(Py"a"Y+@Be`KO]wX ^C`@(pMW(5Ւv<c?<`7Y9& `O4h`XXxD ҽ/) Ҕkl/(?gx3菝tdJwU{t""ԫQg?ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?ے @JuDJ@ۘ gY&H0y2DS7ϱu_'zv8D"LJuՒv=gtReɒ$&HEE3nHd gYܢ 1$ &H?e (R on:gՒwz|Wz3oaI =B o䤝V XL"1G3@ర2nsU"c$&?UJFɉ,AkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ^)VJuDJ@ۘ 3PS85a2" L88.5|^b礥*biWx;4[7aS8Y s9s9s9s9s9s9sҢH4"T9p&%*lp|Ĥ p%n}.cJi`9+s@P?S7ҢB%C7;N'oLgNQC""DE m-H& Ws?Њ|RQ6Ǝ9=kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZCHͤ. ҷ4isWDfcgY&H0y2D B 3zJ/J\ |"cz2Ndzn @0Ly2ZH,R k?۔@0@;&$@gY4,^TA0e*A|ޭB k?RBP?D $T? kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?˯ GHͤ. ҷ4isWDfc1ₙǁ Aa䃎ȑ3NEpH'p9ₙdž ""L5$snb$ekITȜs?2zHs?2ү808∆Hcs[iWIITȜzJizo|Dԉlagx _["xH̳V^?x4_p/!Zpsaupg ₙү#HAQVşH5Ҽ+8𡣅$"bO*a2AG^A+޺5D(w4[6s?J[?ԑk7xVqCG  IDFUdJ!(+ssWM9c/VS7ү>}lDDvyȖB7HjD\ $H8ϥb ^ޜ2N }8GWQ Fqf>}l?Њ|$fFIE[4A+3^1L v͞kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?P!fEM e8P]gpX g^}o̧ 1qMYu3y)'c@ &X<-@hyBdP$X?䉖@ L @@Y`d3nX/*Xaa2 >oVs0 XL"``#ݕ]$gaae݂(ȅ3+].REBuH3+].NFSZueN+ A:8ek2(.L3+].JDK0`0Q]*DL HD)Tek(.Hs?2/2(.TAtV|&]u!J/ ӡJ/JdN ^ Z IE[JTZIXb hzH4O0$9H[ѹK(<7wUEpCCQ@Be |4SNOiq*2^/S/  -8Fa#Y+³ 8PH&*4$Tq HR2zp9GHճ|)C/pXb 0^SӅG<#̧ `!91Lɧ`$I‚j iIxԈ\ NbGeOITђYzD-|hs LgLYTIJ"X@z $L5K"UXB (CGӔx; GӅ8ʻJH )cTNg ₙSѥ_[ȑzUŝn,ITȜ**FKn+Sыճ *2^/\U34/4yɀxGiQ$DJg*`8I(o<0,T ` B (CŔ^eK }2򞑛H^1JU$^Ş B2NQ(Yjwケ 4<4 N;8Hճg3TIJ"X@z $L5K"UaJ[}Ʒ=L)‚yO >ǚD|^9Ws  (9s9s9s9s9s9s9s3aH_3y}ib yyOPY ?iT*wNS*gp>¼)i3qVPgt+aS=rҏ1lk9s9s9s9s9s9s9sq2h  ȑqSXb TU3qg 4"%CD$ 7HjDIEվQ(g(.vq挧 -)U8P] (.*l(?u^q4P0x,,<@LRJUN"xH̳"/VyGN6s?dNR `mrF GeOITђYzD-ѹK(<74"%CD$ 7HjDa(L 1񌫗S)T`e8P_x; 2!ǚD|^98(< &Ql/3rF "e8P\m#2ITђYzEKNx(@4:RHKJQaLQaU0A|Stp?3oOtpQDzJNQITM/Uq*DO9JRI "xH̳U4dV^?x4_58Fl sk 0c^$%A%u( gJD(|*Dp)86s?RU=%SFKezJs?REB}c gCA~gyONH2(.mɟ*]RK@B%CZJv0zpDzJNQITM/Uq*DOe8P]@)*2^/V#oJ†<@<<C2(.C=8P_NFUzNFNF6#oJ†<@<<C-*LpH;!izo>Dp4g1gKpH̗Qs)T`4x?J""T;<ЉPKH@Cy䉆dJ[P+@Be`8P_MK:|zrF fS@_YTʦnyAph`XXxD Ws LgO|B)1sqL wkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?P!ť*n $X<" o,ZR:2N) g~2S7$'`K?k\,-)T ,ZR>n=(e[?k\(1ϥ->|ޭXJR駾=Ƴm>Fn0^-v-)W8Fi}y* Vi(묛} Lyf *dfk(9zS1+Wwd fs|yo@JpZ>^<@H,;)2hC$""$LH3=E.} u|^bd:W~7ic(a05vLIeɒ hY`ba T?[΄D:\ #KP>1%`PV}W0VQ]ֹI-#6{࠮Q^PfHwzYRKJJzYQ^}l:^)4|՟ZuWΨ$Y'}eWκJRT*tزՄDز9-XJ9yOJJ<# YRFޕ8𡣅$"bO*a2AGЍnv;s?()xj`r"$P;"G8fv*+A:v,da(93/ gDzI@}a(ȑ4Hj aeɒ L0,@1NyGҲYdr9B 0&Ix?f?G >:O/J(,GRI=N2NCJK 3z,Md[e/9+R?u,[QVQQ b-e;fشV?`#s-#x?>b8H5Ҽ4p$LTiP &H4ZuҒ0&oH2*-VQQI">/V͜#oJ xP‡@1Q@0 ңe+ҨRQ4[7œ 3"KeD M/UAg F,E o93qgiQ$DJg*`8I$,#y䉆dJ[PHYBA䃈a]Dʸ5+ҨRҒ:,Md[ԑr'd0 }34[6s? _7>idH(<7GCp1>n:S+Wwgqg.*_;M/ LzȑX?m!}54Ϭ&L# x)|#:"cQ]a _ 'oLg3q.7if3<# ƳgYbvtҷ3TaT&L# S "'lRFޕYDž (xy$ yT *8RUW>wUiI;!4c?_7>i`9+93qcGJz|ꊲNzYt^oIE[K3S/|tKf\ |x1şҒw`e^vnw)p+WwgEkzw:O(+ssWM25DJuEY'dO4"H,9DI<,L3lgxf;L $]Ƴ-7G>|ꊲNQVŌ1;[pu띄Jҡ7TaV6UV aZYH[?ԑk7xVqCG  IDFUdJ UOyƚRNg#VdN=rQ E+ &t "ҷ0!X]RQY7TUwF0/IUPbk&J,Md[t# pc? 0zJ Y7Pbk&ۡVsgfY L# DO#Y+³ 8PH&*4$Tq|4ҒvC>idNTc 0^-Jҡ7TaV9H5Ҽ+8𡣅$"bO*a2AGuoITy*ITђYzKeD M/UA*d8^ /C2K 3z,Md[e%yU1[Ԭ#J9JdNIl$a 2X%&oMH*#J>a&^MXɾ=I9H5Ҽ+8𡣅$"bO*a2AGuoITy*ITђYzKeD M/UAg F,E o93qgiQ$DJg*`8I$,#y䉆dJ[PHYBA䃈a]DʺRXg@cԑŞ[Q7XFFrF 3K׬)v%FrF 3ITȜ**FKn+Q4g)T`&Sg0f <(hC HʠLiQ,i/[U2zJs?U4dV^OzJ@ D-H5Ҽ+8𡣅$"bO*a2AGJJM)'d3RFޕYDž (xy$ yT *8UOYz=%SFKesѹK"G<@ర2gLYTIJ"X@x (Hy"a"YPy dQ>2.]J430cx;!yGٳ^ g^ /lk9s9s9s9s9s9s92qf$$ vYj/1}Lޒҷ>.5g W.||뼽n|ZRs9s9s9s9s9s9s3">ȫ$DyAa""L5$ ⢬?WΨ$B 0&m-TUvDB!dÐDDjB gx3 3|d& @ .Yg ₛJuEY'x?f 3i /=Ƴ_CQzVaS<^^ PPW l'oLg3qf|)\n-)}mƳjf+a4BT*lU` 6u 3s#c3n CO|{f3`zuS7R aZ[/,{?0 B!*Rx`zS 4nx#c~Yz?fAf3I V#R aZX k(G&AhD&j¯_)LWQL S?/9+94"%CD$ 7 ,LH4,DPVBoYsd1x >ƳJ7TaVK_AȄ:ޚx >Ƴ,&L# x)|vC<c?GYz2N/;i8̗|y*שĤ p%n}.cJ 1@#k0gc?ΰ=s5'clx`qDCCzU'yf$F2!dÐ"}*d` ^ /?9s9s9s9s9s9s9s?e,ZRS7 g\9s9s9s9s9s9s9 *$PB%C, <<,y"a"Y)bҕad@(<">/V͜$a^xP‡@1Q@0 ңe,ZR"cHճcgJD 3 ^ ";s?RU>KezJs?ܱSY 'Uůum>QԒOS\^v-)Vg FxG /P5יּشP'IIΓW1u?fҢH4"T9p(Py"a"YʼZR'x ><#ly<@ర2gKg KI+}`Juf|شQk`?K\v-zЉ)cǏgY^Sƍj ܗ_ ~v;Uk$8s?ӓ?nܐ+p4pyf u 3h/"G  Zvv8F<֜NNN >?Ӕm/|##c?S7DDvyȖB Aȕ@ !e ! |-e;$GӅ92e/^dB8Hճgg-9H5Ҽ+8𡣅$"bO*a2AGm>Kwizo5RǜWs $H9 &P?H5Ҽ+8𡣅$"bO*a2AG|x$<#l_ >o'kRt2e,xk?xѼW9[~va@|#jݭsgrgtUץ):E%SLzrEpk^N>ůNYGl<0,-@>D|^, `%; )@ gѹ^DA8kgsgӄki)9FѼW98V8p3qgiQ$DJg*`8I(o<0,T ` Py `z^S2N }8S#/R(D 4[6vqah*g0f <(hC HʠLiQ:[OŬ|dD|^NvYK%'C#g9*TBgx3IFzWg4p$LTiP &H4Oy3IyGټ Rt2<3AM~qA+ب?fDEjRK\(11u-{Ҭ,xk?U2'IB!*RKs~bvxЕ0hD%:, tC}wS`V8yگr9%W8€G#|#Z '.Lޤ)^EʻҬ/*i[UII)*%=%S9/9+93qgiQ$DJg*`8I$,#y䉆dJ[d@HYBA䃈ae\ץ_[" >.cJ%ozUŃ" g1gizl#oJ†<@<<C/\Zw1A+(wizo|zUŏ9-H5Ҽ+8𡣅$"bO*a2AGsWL\ Ӕx;4[7w*bǜgx3IFzWg4p$LTiP &H4dD|^bҕt]m138&ۡΝJU81kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZCII)*?2Aɒ :^JJ;$>v|dgY``d  @b k?ے&YK&t "ҷ0!X]RQ^SjʷI L @@Y`d3nX/*Xaa2 >oVsQ a!2ezKeȿS7%U|Si/XJ,oQ |Fu7u |kiE(floaI =B o䤝V XL"1G3LޔUOyJI? ҔjFL%_Ғ)kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ*QRt2JgqjePD@ppy $sQ\ ugqaȈ @ᛡب 3Zua!2O3`^t* Ki*3IZuU4dV^N9*IT(AG3ₙzXJ&$s&"XY`d@Dd ⢸$dN<0@P9fU0#Y+³ 8PH&*4$Tq֒%S!9s9s9s9s9s9s9s9s9sC}Lޝ.`"c;ŔKe뗜fպ|(RUgZU3Օo|SԒOS3i 23zRn5]9Ҥ+)G|Jx;i)zv,/Rgo/^QԒOSޚv L:}a(0H 3W}/yڲv? yWS|y/U(ꑝM4FM.rmRYs!4ְm4|3sk9s9s9s9s9s9s9s9s9s?_P &UD ;"G8 ;PÑ&97Cب?f]p3M/UIT3%SFi< c B/RYs!>N(e-=i$,שҔiWYzALnqjePD@ppy $s<<50L9a#3t;n,p9#oJ†<@<<CJJM)'dITњG3IFzWg4p$LTiP &H4RUW>KeD M/UA&&XHLU4dV^y=%SFi3ȾrJNQITƎ9kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֳnH,EJAMgpX g@i/[ߥ%U|SIr;VU2NR(IH &K@P!  "e*A>a+a7@ B!)(+s JI 21vD bH ,LBK ,&Qgnt !,$&[S7zyf}% E !IU_˰um)!gAjD $T6Ғ)8I;gYܘa!2a!2R_өV^3zRUW6kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY]xXJ:JAO4AL ʠ0AdH'b$ALPÑ&97CQ\ ug?2912Be gFV]tLǁG3+].h&ekITђYz8ekת#dO4[7xi#=+8D?()iI'=o"G<"a" L0,@<&HyDI@*+A:JD&IDP4[7i%S6s?#Y+³ 8PH&*4$Tq֒%S!*-ii5yV=LޤzdIU_yG$D0XoVsQ a!2ezHRu[V JI5gYܢ*Cs? HdAd$#1sҔK` AȠP2ʺЉ0WU͟ C`[WzI])e-&?eWI+&&XHL&&XHLW4f!J/Yn^i[?ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵ.R%#611s3PS85a2" L88rq{Bo@dB8;JǚD|^98(<2Ȃɉ 6g?ۆjQ8NҬ2L+a"ЈJ'iVS9II)*%=%S9/ gxG ~|gLYTIJ"X@z $L5K"U(pPy l'iVSQNZ Ȅg'iVS98(="r! Ws LgO|B s?kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?P!fFf(O*b ,L6SzU=L'zO-zQU3s$gtReɒ$&HEE3nHd gxS]nf>et3w%5_XJ,o/9@] @YK$zUŁ;nyM8Qe3inQ`j옒$AgpвyR @Yz[3$,3vY(a25D0,"e&}u-(P;I񌫋^-6(<ݕ]$gYܘa!2ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵgua(љ"⊲?3P(*"Ã#f OKs?3 @ DDjdH EpH'p9K3N9Zu$["qKi>(!"t3UEY YekITȜs?2뤪hzHw,JJzYQ^2NRg?u׌HR!O~WnwYf;QzVITȜx`qDCCpg$a^xP‡@1Q@0 ңv* LhzH4O0$9H[?ԑk7xVqCG  IDFUdJ!%U|Su^qH#oJ†<@<<CJJzH%9/44"%CD$ 7 &T,T `@BeiIU_Q;.)iD#8Lh` `j((L?$!J=%SFKeHzUţ36Uő gyObos$!J93PS>2NыռHճx J5Wtdԁ )h ǀi08xqQVş/ y$}*ټd v g<j2Nүȑ$LXب?fUő3Zvv?6ƍ|QVC#c3n, *$PB%C, <$o<0,T `ʺK+ç%!關$G -LX ^,[Ȅq`ǚD|^90OeTUŀS?6)>1QVCpp u^q4P0y@C&Y`j;yɀlgO|BIEY X1kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֳnH,E0DKJI/4gpX g 3i 3z-Ydi%'iVSgY``d  @b k?ے&Y(a05vLIeɒ hY`ba T?[΄D5YIy| UY’zI;Fo𭪊YK!Jȩ Ugr(H l#QoP0x,,<@LxŔr$Ҷ(<eWI+&&XHL HRLI/4kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ^)Vb+jK+3PS85a2" L88vs?II)*%=%S9H[?q^/S$p}g88?fҢH4"T9p(Py"a"Y0 &Pg(Iyc%-#61h`XXxD ?ƍϚY8+93qg ₙJ$s A e-1Ȅg$a<踵+3;yaae6g{x6S|Sg#[U!J8/UDyx)t)R'8R^/SgEFk|oprcZӄkfaALIyy9ăB Rbe L0,@**/r*B"xH̳5%6p?x4_p/!f"G9٭i5ys?J[?ۘ/v^rWs%S"pJMTƻ́nEQiTK" 9HRK7wI/4C ^/\U34sD/r*B"xH̳5%6p?x4_p/!fଉf< 1D|+j)R'8HmTT*l">EHRRҢH4"T9p(Py"a"Y@ G)xyx$Ҳ >I dB8SCggizl"'(< &Ql/?J[?J""T;<ЉPKH@Cy䉆dJ[ !e !G)|+j%zIyd0 }9GBȄqkJ<#lDO4P0x,,<@L^ RFޕ†<@<<C<#lRuEHRAiꊐM9H5ҼxP‡@1Q@0 ңgD|^")R Ï49!Js?ԑk7x+8𡣅$"bO*a2AG4[6>QRaǚD|+j)S`Îg9IE>E]QmZ"^rUIycGkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ bDхmZ#Y#үQFbd $A ^ 'B_/.^_\ůiW#JE֜PS0)];Z(3{ԝ1^^ ].?ΐh=gtReɒ$&HEE3nHd gYܢ 1$ &H?e (R on:gԅ+ȾuүQF0RNѫ?,&PRF`XXxD7w9x63K)/wYp*gɀvUtQgrbegGHoJ5|#NoR"-Z&?ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵ.R%Yx(0Dk$aU)gqjePD@ppy $sQ\ ugqaȈ @ᛡب 3ZuV^N9ZuU2't4h`` ?Q]I$N"qK"&DQ\.R'tTgFV]q"C"qKV8ek,28ek %8-XJ$N9ZuD$Dt/qgFV]u-j8ekׁxQ֢50*"qK"ŭDk$gp*"qKy"qgFV]uZ$2't,*I!{Lekp_lKGZekgFV]yږYgFV]u_dN9ZuDQ]pүQKOGF.tDQ]pүQKOopFvDQ]pүQKOUn/WԷ8"_3+].^^83H5Ҽ4p$LTiP &H4%$DхmZ#Y#үQK9|PSts">EHRQVş菁xQ֡FeyGȩ T}~<g"a#Y+YDž (xy$ yT *8yGٱ/r*oR"x)t4S|S s9s9s9s9s9s9sׄiWK8%zL$Z R, 9II)*%=%S9/9+93qgiQ$DJg*`8I(o<0,T `0 &P |1uKR(vCGc?<#ly<@ర2gx3g%;0RYR';oR"x)t;yOJJ s9s9s9s9s9s9s=,-4T*DHz) M!J#"=,-4T*o6y\]MPS84SK|S1/V͝yȨԱPP\]EMDE mJ5Wڐ/j\ DDy!(gLYjvo<oEYS7s9s9s9s9s9s9s9sC |c**K}/<.Rk"#WR-ACpRu6s9s9s9s9s9s9s9s?J""T;<ЉPKH@Cy䉆dJ[@ .R >)I -(vC үQNo/.]Ow|#ږY Dc?<. ].<.l">/V͝yȨԱPP\]EMDE mJ5Wڐ/皝oȑ5gj[fÙS7hPEW5)YgUn/Vo;t+?jF+7iW5)YTU3qg ₙǚK9Ҡ4PTU3qg\9s9s9s9s9s9s9s9s9s9sCBsny./)녇ɾœe^[O^%=u}ms9s9s9s9s9s9s9s9s9s9g?J""T;<ЉPKH@Cy䉆dJ[@Vɾ+W-)]dXDFc%$`gR-JlDO4P0x,,<@LXE{gx3sA_f$s*F+7A9栉xy )Fgx3t,<"!$6()zr9Gb?YdTB[<.QR'G4Q$Hi*EI$/i)RyG4Q$M4 K?9s9s9s9s9s9s9s9g -4Ru.oR"-Z&?9s9s9s9s9s9s9s9Dz,d&"=EFEu}li,5+fgK?9s9s9s9s9s9s9s9g ש|^a[ud=,%o%s9s9s9s9s9s9s9s()jv*,5x.X)tȑSQeŇtJKTDpب UyEY'dO4"H,9DI<1A()i/1h$DyAa""L5 7NXE{gyȨj%b*o"G8; /1h$B 0@cl4_Uvo"G<ЈY &,o )FALnq)t#ҷ1A\ζvǂvDrJ/J.5b$=W-d<ЈY &D"T`5lNQ#oJVqCG  IDFUdJ!izl{YHZh T0"=,-4T*lqRFޕ†<@<<C<#l H^EHRAiiU$M9H5ҼxP‡@1Q@0 ңgD|^үQDTB*B" 8HiW*I!{M!Js?ԑk7x+8𡣅$"bO*a2AG4[6=W-dyGŢ`Îg?_7>i`9EÙS74^ g?9s9s9s9s9s9s9s9!DHRI!xDe>^e]Vyx$"c]Gs9s9s9s9s9s9s9s7G<#U(H^EHRx?ts">v-*RTU3qgJD0 B!6|!DzJNQIT/Uq*|h/X?J""T;<ЉPKH@Cy䉆dJ[ P20[१Yyԅ+^$4T*ogLY^Sӄs">^$4T*mɟ菁xRI &z(2DHxRI &z(2@49$"a&gQeRI cx(yz gr/r*I!xD/YeH63,HxRI &z(2oaȄ`x0o`W^_]IH^1`FzZ{*}a(EGZHU(D񶑙gi/r*I!xD/YeMD|  0dB0}%:xLx@2!F9nH_}jbҕw>^oW-dI)M8Dƒ,/)/wD| H^0YAlNLITȜ&AhD&1=n=/qDzJNQIT/Uq*|h/X?J""T;<ЉPKH@Cy䉆dJ[@BebqxY^;`@(e%H`@}" gg;ZTe14h`XXxD )FgZRFe|hx+"G8a2e +"G8(iKNx3bҕr$snb?NȞhD,Xr @yBb䃍Zvv?Ӕm/4yɀx?u^qϚL/?ԑk7x+8𡣅$"bO*a2AG4[6>EI$/E,aǚD| H^0YA`Îg?9s9s9s9s9s9s9s?`bQ>oR"yxe4Q7>^oUyEY'| bҕxS;Ms9s9s9s9s9s9s37]GZe;oxQ֦,xʼ#ȨkQڲ|IU)iEGZH4Pm#2<#^TxdY YHxQ֡YF F)7r?dB0 s?۽4<N_^dU)iEGZH4Pm#2< iWP/r*Kevx4_<#$Ð vii5`w/9 B ^vW̿k\/ gD|Q;+Hs2d\ȑΌEYS7ΉUB mёrB6D񶑙g%;'kn D(TD pIbƍ$ppş菝3'tEinf^R' ` #Y+YDž (xy$ yT *8yGٱUFvW mёrB6Dq:%Tg`5xN̽.#fgx3`#s9s9s9s9s9s9s9s9s!3xx,<ti0_")]X3])FX!Lf ӗW%e#:H],$]h=|z}tKf^0^ iJ5|#qjVpl)_S7%U|SԢ-zH].6 )|i`?o}L `e\Z]Lޤ)^E;Fz09s9s9s9s9s9s9s9s9lbD񶑙gbZxEIJ6` s6Hͤ/=!wU)i%S"pJH"Ym5DzB1t9II)*%=%S9_SJJ|aN*s1zWN\e^^L˜yxѹ^DGZOi|   vii5-j^i^Dy1 в"T@7n,n^5y$Ҷ=udj`33h/(<7A<9 @?g\9s9s9s9s91/x$"c`2ҫ?9s9s9s9s9|PSts">v-*RTU3qgyO/N4 H^EHR9$"a DHxRI &JHxRI &JgQeRI cx(yz gr/r*HxQ֢53d1f8%zL&ЈMb{0{3^ ^/\U3ѹ^±ÙS7DDvyȖB Aȕ@Be/\<wWJQJ(D x>v c'3i<@ర2gRaشR'8/U=| VDqDdA9VDqD&Qf#\69/ gť*H EYS7>v-*NȞhD,Xr @yBb䃍Zvv?aH_|P jZ@ۙ-|R/ gD|Q;+Hs2d\ȑΌEYS7ΉUB mёrB6D񶑙g%;'kn D(TD pIbƍ$ppş菝3'tEinf^R' ` #Y+YDž (xy$ yT *8yGٱUFvW mёrB6Dq:%Tg`5xN̽.#fgx39FܔW{>7iy(3#!)(FRFޕ†<@<<C<#l9$"a Dq"L#;M9H5ҼxP‡@1Q@0 ңgD|^"ŭDk$gjbȃ<#^TxdY Ya3IFzW 8PH&*4$Tq Hճc`2Ҫ*/1h$0">v-*N̓9y>i3ȾpQ4a[VH4PhkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY$" Y/*k?ۂ&H?ZI'=Y/^i_(I' UY@ &X<-@hyBdP$X?䉖@ L @@Y`d3nX/*Xaa2 >oVsQ 8OS7$'iVSץZ^5f$Ҷ0RNѨ֕!YLegr(H l#QoP0x,,<@L<f ^aLH0URIEYS7dN ^ "*rϝ*BDzJNQIT/Uq*|h/X?J""T;<ЉPKH@Cy䉆dJ[ &P')}e,4J`@(e%z\.d0 >3N֕!YLdǚD|`*98(< &Ql/>0URI0URIs?I'^wI/4yڲHVSgJD0 B!1) wKzI'?QeVDҤ+)GeOYzƍ4"%CD$ 7HjD( P218YK-)$[Ydi%敐QJ\`@}" gǚ*Bɳ4TU}+s6s?u^q4P0x,,<@L^ N"pMUX$SHVS6*nfg?ۥ;}oԒOSN)zv c,ITȝOKezJs?_7< r8V8s?fҢH4"T9p(Py"a"Y( P218YK-)zpYLgGӔx;!Q @1i8LǚD|^9H @?J[?ԑk7xVqCG  IDFUdJ!;}m=8NҬ3i8L(vC<#l/^5kJ3;$ӄ*c,ITȜ&AhD%Y/D|`* yG ;*I#y擄͜GeOYzƍ4"%CD$ 7HjD( (PB^,uYIyd0 }2.c2AȄqkJ2l">0U_J͜Ws  (?ԑk7xVqCG  IDFUdJ!%[OQeVC0U_J'd3">/V͜4onS_9Y/*GkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ k%TcQџgpX gVKƻS7;sRI>tJ@ &X<-@hyBdP$X?䉖@ L @@Y`d3nX/*Xaa2 >oVs0RNѨ֕!YLegr(H l#QoP0x,,<@L6(<eWI+&&XHLkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY]xXJ:xTgt3PS85a2" L880U_J%; )@ |n81+a4BW^5RI=DS3)x1p=%'C(|8L4nxppşD*hDr%$PDPD%P-@ P218YK-udkK+!關s(D 5;ZTe1ggi񂨪Vl"'(< &Ql)lRFޕYDž (xy$ yT *8U񭧨K+!jv c&.c2*nfGfgx3ӷ=E$|`;VL+a4BcRRE${K+"|iRNg#Rt2JzsITg FxG gLYTIJ"X@z $L5K"UL! !_YiRI>K+!關s(D 5;ZTe1ggi񂨪Vl"'(< &Ql)lRFޕYDž (xy$ yT *8)$[OQeVC0U_J'd3">/V͜g?u^qϚL7B)/^5F0U9kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZCPY ;,La`d3\j3|ZRүt^A+^>rQAg/=L'lk?۠ ,L 4<2B(,AgrD T? &Pɉ P,y2D ,,PL0D g7uЃ?RBP?,&PRF`XXxD7w9loP0y0ʮWJ3nLLbZR:2NϜPY kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ*Q%zBť*` PS85a2" L88v-)W9*T=fT"'l7>i`9EðH'y>iC\9s9s9s9s9s9s9!mW =AwJuR&]7ڲ?9s9s9s9s9s9s9giQ$DJg*`8If Aȕ@p|QzVMCIJVjG C?V^N9*WEU&i)JS@DzJNQIT/Uq*|h/X?J""T;<ЉPKH@Cy䉆dJ[@Be`KOU󮒋ҷ=W.zoe%)Ybh2N`@(" gǚD|^9H @?)#oJVqCG  IDFUdJ!izl}+%VIaǚD}+%VIٰa3ₙJdUvo"G<ЈY &D o wUE7Nx?>VIDyAa""L5@ g<`z$"G<ЈY &D"T`5x1~}뢬B!dÐDDjʇ Hx?>VIDyAa""L5 7n,|PS<#Y,NH $"$P&HD,XrQVşTUvDB!dÐDDj6RALHd*;7#hD,Xr @y0X,@<QVşTUvDB!dÐDDjB gyGҲYdȑ4"H,9DI/V͏d*;" 8Hd*;6 8d,D"4SucnE;/9+֕!YLegtReɒ$&HEE3nHd gYܢ 1$ &H?e (R on:g%HVSjQz’zI;FoHVSgYܢ*Cs?  (9M&?UJFɉ,CR"-%敳kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ*QU(ӱX74AL ʠ0AdH'b$ALPÑ&97CQ\ ug?2֕x(ekגYz8ekq䤪x63[ϬFzj,4JITȜs?2"t#43+]. DQ]I$N"qK"&DQ]sU)Q)%U|S;U(%y9(s?2t#JEŗj^^SRRSD'kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?۹k,.|)I5i5ҭ9O]d[S:;.Ԯ D{?c0]G|qkץaS=Lum8<{?۸WYi)ts)0iJ)\֜]*.).^kYp+;~X)Q7r=eOQgwZ.>)^ _AVզ 3snwœ#E˗PעJN]LүQGaNKV`闂fi>(/9kaQ_E} t}nLzӐao޴WY ŏg%*S/ 𦴩H )}e8ץw> S❧=LGyx)}i[Vk1<#JEXJ#Ԥʷ#uϟ qwY*'β)i+d׋ w@ fr<kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?#Y+.qCG  IDFUdJ!RNѯүQDVB3ₛҦ*+Af$U`Xɾ Y7ǩ#x)yyOVS;"g?_ϤW#hLH4,&&P1M⢬?U2'M\hx)g3):E%SV^Ǥg3s#c3n, *$PB%C, = &%*l.B$C Z}ej]o//GӔx;!Q @1-/,">/V͜gxD| d#JE ⢬?9s9s9s9s9gr^o|e/xNfS=eLxSe;Ms9s9s9s9sȧ 8ҡgudk Iyl|PS>^i^Dy1 в"T@7n,Dz^5F0U5$E8MFxG<@Ap u^q4P0x,,<@L"&D)$)fmS Ydgx3D*hDr%$$L5K"UүQHD^N!`Y'|I Aǃ" gǚD|^9H& #i/r50*6L+a4BmSy^S̈́nX=%'C(|8L9+;yDE on-teut+?Ӕm/4$s LgLYTIJ"X@xy YDPD%P-]$Ӵ˄iWb t2N`@(D 4[6s?J[?J""T;<ЉPKH!e $L5K"UB$C Z}e4SZv1 r'd0 }" gǚD|^9D*hDr%$&%*l.R˩F0/IUPbk&J,Md[e=YN C?n^5y$Ҷ()I/4"G<ИhYd*LLbEYS7=udj`33h/(<7A<ȑ4P0y0o;yDE mg?u^qϚL7B)/үQDVBGkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZCiW/YeY ,LүQMEJHVSgY``d  @b k?ے&Y(a05vLIeɒ hY`ba T?[΄D:Iy|iRqZ^0RNѫ?iRq/U赥3nQe !j9 CwsLKU)Kה9&?UJFɉ,AkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ^)VүQD^ ()x@0T&H800dTWz]w()xj`r"$P;"G8fv*+A=.gFV]yҡt^/R't*gFV]wCDO4P0y0mZuԒOQ2't/r)dN9Zu^'t3UO¦u7uүQMEF^iY*gFV]w΄iW]GULiWȗQ(D@әQ]sU(,SR*Ţ%॑83IFzW\†<@<<CB5䤝^^e9kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZsYH]9FOVS/PkzӒkZrɾAc0 u3zv]]VaL1ׯKO¦zey޲ zRUXWI5i5ҮɾLxFzZc?I->U)zRUXT f˨׬}`PgiW9OJJ tZҬ-A%"w9&U)묛te;`5xRr/ZҁxZ}$^$JI->jbOJ$^aL1zW =Eyڲr;ik\S֜3}^I5ouc8ʸԂx4^ L3{yu`{?ےlX)Q7Io^UOQAeR#\i&5Mi.5oVӃf-i@-=u}o8ʺӺ\j=S.i=z]:6 W]d[,ZFzZyyO~b]@iS7;;]Je/\i&5Me>oռ]yGU(Qմn]etӹS_8&)(s"cZrMtL"cFzi}e4 BAc0]G޲B* < =G=[UjӬ,#9x)}i[V4 p.^ B^=+-9u3|#JEXJ#9-XJ=|S^ _AVզ,Z|qG)}zW)}ҰUu2NCNņz/PkzӒk]g.=}L+šҥ ,`/^0(e/Nҽ5^%.< 3{V]GNZP/ L g-iA(3*|DƔOrϊv3}mZi8D*}a(g R*S/e[K3Jڴ|c*9g;L{?۸ 1;u;vI5H%q1;n5^S"wX*™uc9EAaA< f?.gwet*(Ox. ].}L™uc/9+XWWTU)No/.]#2|S*3yx)tөUH)z)`O̗3)RC[rNj>|)U޽d:˨ Np '^,3e޺pl*fKש ˨ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵg\9s9s9s9s9s9s9!:W!ԒB<ܣizms9s9s9s9s9s9s3AM49$"a&QVş>HxRI &z(2mɟD*hDr%$$L5K"UL !D^ >I i`9EðH'y>i3s9s9s9s9s9s9s3 묛t2N">/Vͳs9s9s9s9s9s9s nkJ B'֕!YLe/ nyGHoEYS7()I/4"G<ИhYd*LLbEYS7E4KK"pMUX$SHVS6*nfNjE3:]#9MRg ^/\U3^SKHQe]d[6L֑g< Ţ%ड़GeOYz7< r8V8s?fDE mD*hDr%$PDPD%P- (PB-R-)xMKK2N`@(D 4[6s?J""T;<ЉPKH@Cy䉆dJ[` >f$U`Xɾ Y7ǩ#x)yyOVS;"gr%S"pJMTƻ+#JED1B'4QdK%kU ƗB#7MYdi%救^"]GkJ#Y"ɾlȧ 8ҡ/iQ$DJg*`8If Aȕ@` Yea&9G >ǏD#8Hճg3g ^/\U3ѹ^±ÙS7DDvyȖB Aȕ@` P20[१[YAu}nI AȄqfgiQ$DJg*`8I(o<0,T ` p^]L0zJ Y7Pbk&$c///)wu|dB'RI &0]7ڲnwYyN86ʼ䢂H]f[X~VX ^Է_9ch`XXxD TIJ"X@xy YDPD%P-aWI+>޲ 묛t2N`@(D 4[6s?}$ҼBbAeD12$"ogLY:jE4KK9II)*%=%S9.4nxppşD*hDr%$PDPD%P- HYBA䃈`KOK@(r'd0 >3Ţ%ढ़yGٳ^ /?9s9s9s9s9s9s9s?a^yxIyGٶs9s9s9s9s9s9s7G<#^k$aU(ogLYs9s9s9s9s9s9Y7fR9< fަoY3X4;:VSs9s9s9s9s9s9g?^SȜ|iP/ gK+ȑ4&$YJ(A&QVşVKƨ ;z h/(<7A<9 @?^SȜy$E8LMba+,/i<@ADDvyȖHo<0,T `X@|iW"c/uӔx;!I dB8P/q4[6s?63%H ,%I @y x?fGQFwF9+sDyɀx$"'(< &Ql/?u^qϚLgO|Fz"PdhkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY$"v-*n $X<" o,ZUU)i{YHZz-=L'{S/޴S6;ZTe1k?۠ ,L 4<2B(,AgrD T? &Pɉ P,y2D ,,PL0D g7uЃ?(I/4*B6KV JI5g*B6ʽ^ XL"1G3@ర2nsi)|ZULe| %t? kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?˯ GJ gP &UD ;"G8 ; ] g&0ȑOKs?Q^vDG3+].ԉ3+].%%U|Sgn}e4SQeVwJDQ] LgFV]x83H5Ҽ4p$LTiP &H4%$iTkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY)`2ҭ7E(E |]d[S/ޒƪ Ye!i׌%UkiI/Pkz& siVU3s"w9&UeF;ZƼ¸ڙ}xP fT/PkzӒkZu2^1}LE(E |ZrMt ^lv),Z i2<Ɠ^->g`2Ү%_X$ӵ)kE |]d[d)E8S=H'aS=L;r<5=c.v/ E | f˨׬}`Pg!)iVv;iȿS7kJiz_;X1Q8S=H'LuiTS7Q)Ve™ucz%_X$]E);.Ζ"c]d[֝^Qfm8?~o֔ Y7S;ƣ2<Ɠץө`ۥuMůiW 1qK g3sUԬR.Ζ"c]d[^Sf=[Kהz^%[NUZwJ];:ox5"bRW8&5$J˾ B&:˄iW\#Jj+t3 ey,.Yaa+S}nc+.V:˰rϊ{3fiL者r.5ҾӗS74Q=SՄ9g:emZbϥ:Kw|xg{H+_[S/޴1*^UOQAeR'}8WuůӲ]J863%ykZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZxNjb$"cx>.v->HxQ֢53d1fTIJ"X@xy YDPD%P-@VRՐ"c/q NQ$G9II)*%=%S96()9R*B7n, *$PB%C, <<,y"a"Y -*&7Mr'd0 } FqfgJD0 B!0*[tnyGeMGeOYzƍ$ppşD*hDr%$$L5K"U *I]i;uMr'd0 }" gǚD|^9-D*hDr%$PDPD%P-@! !->`2ҮɾNQ$dB8Hճg34"%CD$ 7HjDAK/s.o |L%V @a(5}lz1e;Ӻ Px2! DO4P0x,,<@L^ /4{t""ӰiThkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkY$" )**,La`d3IUa]NޘүQKO|S޲BYnQf;e;ޥ$S7֕!YLd{?%H (LgYܑ2 D bH ,LBK ,&Qgnt !K+kJ3Մ3$,3vYkJ3~2E(9gr(H l#QoP0x,,<@L< Ғ¬oP0y0ʮWJ3nLLb kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֳJtiₙǁ Aa䃎ȑ3NEpH'p9ₙdž ""L5$snb$ekם*<t^/R't*gFV]wCDO4P0y0mZug9)* L>oVs.^,$ҳU2'#oJ xP‡@1Q@0 ңhFV N_]ib xS7E |ZrMtbdzoׅxSZTeһ,‚zW4Qǁ~op ˨)kJi,oE(=ExS7<oҝ)YNoռ4M5^%ojR\e[evyx)}i[VOe\Z,igwet*(Ox. ].}L™uc/9+XWWTU)No/.]#2|S*3yx)tөUH)z)`O̗3)RC[rNj>|)U޽d:˨ Np '^,3e޺pl*fKש ˨ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵg ₛiYe!i)Sx?fҢH4"T9p&%*l.%UaYHZz&9G >ǏD#8Hճg3%S"pJMFz- nyGeMGeOYzƍ$ppşD*hDr%$$L5K"Ul %vZRUXW]d[(vCGx2!yGٳjRTIJ"X@z $L5K"UBoYiIUa]u}nI AȄqv^ҢH4"T9p(Py"a"Y,Ϭ$a 2X%&oMH^ ^^SՔN)AȄ3i<@ర2gx3;|g?Њ|%%UF9kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֳnH,EJ[k?ۂ&H?bS7I?⬗zJuA<^i^u՟gtReɒ$&HEE3nHd gYܢ 1$ &H?e (R on:g HYg%$nQe !j9 Cws%t?kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵk?˯ GIK|W[4AL ʠ0AdH'b$ALPÑ&97CQ\ ugfs $HdCDDqy"gFV]y/UgFV]tL3+]."'(<6()9")Sx$I/4"G<ИhYd*LLbEYS7^*xשIyzpYLe]Y/*DO^ g9IE>ER8c,\0,jH1lM'< lBkdo$Zםa՝a֝a&z5bm./usr/es/lib/ksh93/ezupdate/Cluster_te_  #e norst"$ERST_acdilmu().:=CDINOUfhpy{}'-01AFGLMP[]gv&/Y\bkx!,2347?KXZjqz|569;*+@8 at  &%( H:2KbZnpiYgUS@(^x0g_OHh`ԆHPX!@HX e, ܮ"SD0((Ȩ`sՒDy@Q0զ]lKU +6UL0ՀYunJD BE`PV eh("6aug` )TƁ{X{ [k ¬ c[$nud $|/VlA곁ɇܥ*vrB&HPX1tX/9hܮ"VU,:oVWhܧy v2͈?wVYIӵi9 0vټ8ED %(2*&Հ ] 1p-`( X][)t  م՝2ܧqRcd\$ .7 , BAXUUUUUUUUUUUUUUUN56 %1ίZ6FvؑU23j *(ѹuUUUUUUUUUUUUUUU92bsX17Տ6umQ{4үTRQ^m]v*;k\L+1޿h We:hz*֞]lK}r3[[oU|YVYڹ̻փF VbN ړn1̜PkHmQbfw65v$aLx>orH*0;N`h܋XiRd$PȾA;VjZ!S$P0@% M1Lh$9.eȾY6 #ګneY;ӿEPD12E w;!i&R E; Vww#_eNN*4b|;H $U0GX~eY#Uaer.9^ 4&Z'ӿ(U1wUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU;oZlAlnEN<A8H(P880(\LOy\{Ą"T9AP;?8LOy\{3&.W=fq+iJsn+Ka8ɋϛFɈAǚPkj͝yj͜seM4  -^sـ^xPG&2bI H`sfK]H73 yY$B;+<; )8YDž $xy"h(&, PփM*ۋv|V9QIU <(X#@A1gȤ0viWncYԃs0wb±2HEA$`&I4Q5A< EփM* Y;, A=f9by 440yTP6;^eLy4nfXuD;eM4  -7(7AH; )8YDž $xy"h(&, Pk7;iq4Yԃs0Ǟ,_@($,c3ـ^xPG&2bI H`h4ү_͸Z^gcUZ…<<4 zH(LCkAz< ]H73 [/>+`8+1/owTH;<ЂA& @joۋ⳿Z6XÜw;af2..waILBc_Azڄ|ր@T'L$BbLs( w~J{r`U k,rer,ʑ|#ڄ|֊ " bdwdC M* w\2,vPb%S s^73 ρneZ 4k76 H^z^Ĺ| s/{̽AzڲUs VwY`Z3̽AzQUds )TeQ&[2UA{w;S*Pb%Sփ2n| s/zi^ꪪzbf2./wqA@ĉ]Bbbx$焃$%y"nGbbx$焃1r/LDc wZ` 1rjǞ`2bsiq3&.W<%fR+;fL\z.{8f# +;w#_eNN*4b|;H @@E0ZI#,ůBLN3mi&v%F&e@hha Na ,mw?Nk-r*T;Y6 چ# +;;HK8A@ y@DÎǏ.s1< sA<qP @x7#1< sAw̘\DyDž1r,Jc]3&.W=fq+Ka81KiWnn+/j=Vy;fL\xi=1r$w̘\z#92bsH8;P޻ʲ/[{K$$D  6[@fzDI#e" gH9Db( AM*h"j$x^c Ůmi&wՌؗm\h1͸<$*Y;UVe8ee³/VG./ G{U|%``$%xi=Gbbn{{"ID.enL$G,"D#L$AGD.,ÝY;-щb6.`$%ų,$3=2$v&&B*$hA 5Q7@Gea\h1Ǭ;76HH<(wfY۝YhGV/a2Ħk@,1k0Y_|;#a~xeHww!,$zdI" < &&# ڏU~{ཨ׃- giAeYQ^zY~qG՛;wyHD 0 ڏUzdI" < ۿ-~B*$hA 5Q7@|q#n|Ŭc<޲^ʰq?L/zi^av/} qUeYxHNq4nfD<1BTAJ"mwཨiu 77;; ^k2_Z 4YYE!4 rPHiRMTMDO , {X2Ў+AM/r4h1-O,JfN/k70lzi͈?- ۿF o\x[B8|dxP4hA  0c׃iqA@ / Mg;A3Qf7<{=f9ŋV0c^s<)ڠ,ŋ8x{{ٌ-w}ر{Q` wE!4 rP( U$EDIEʽPk7łx70lz̭փM6VlA  c34/fwnm 440yTP69;a6M~Z|ӿO<-Xq2<(yx`Q4I  1E ? ~{@=%UG՛M kZ ^AOmp$BlX c;emA{ +6 `"a| <޸cjl[/Ln;e7f0a b'` wE!4 rP( U$EDI3AJ";*A8b x6 }fVKA{ +6 pvϐ1ǚ|g;76HH<(wfnwTH;<ЂA& @i"aI4Q5A<, #fVKj_|e_a2~6+{W)*)r x1͸<$or`rs9ΰyFy&*&I@zdI" k doA םa םa֝a&bm./usr/es/lib/ksh93/hacmpte/ClusAA lPOokםa՝a~֝a&Dbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_appmonitorey_l  = einst"$CEIMNORST_acdopr-/1:AGL[\]fghlmu#&().02>DHPUbv{}%,3;BYy!*+467ѥ_umV/ɣ4- OG#AQ rcJujvm)ƔiiaH(84p# dδ5H+8|15./Z4nsZEVNnx̛jv{ܕ2 үɺP\@@K]p٘;:uTƐ5=_x3G#H"K*IR,,##A~86 0 ai 0cL4٧bIY bL㌴Ɲ0 $ a(8 `dE0@ ']#`rΙ2)mhgXe}m%2VOL11*ef8$I&| u܈`Xa\ٛ2g YB `@DH -8-lh 0h4̅l@1$A1&ZqZyNUuflRAX8Q/AÁX$ dMx Ypr.ٓEqͧ3&ڬ&iʮ8I}Je!6,eٗ|)iVGj`_)IePEu^xӳ pPӳ!j"Ɣt_fmyHBD@ *ɂy| 8<!`5"Ir $p03!er"aDb 1era IU,ZnEftV/r(AQ8v !Ev,J0iVp03!er*@`94XTBѷFѳv,;+O@$MUm=QtkfbͼvW)+AfED,,m~OTm]iVyXClɢ8mVN͓NUu 4W_C`$ntRj#b]wrpFixvUDUd`EQ 8m~OTm]iʮvR<$ JmU1)y6cmٖsoY;=թ?:S?tPqnOyR.rWz2d! 1k)a~źgSz/Y;=OӫcF3mJ6fYx/ganٷߋÇtz-ȴhێ㱧7k* mf\qH77!tws7\jRx`@k9MumnQ\܋ћ`cNn׈!*V?knE:E1jFbWsMUS5V 19d 9d:Y;6tJiىN4u0  LHZ4rF-* 0jlgV'f@"hGbIY bL㌴ƝF!6*u1R+0#76'gUNStEPdwwi6dU;9Uv̛b۳-"jvaF7Z#EDl(,챹Y;0VУ D5Mu}עefTufZ\ 1ٙ_7W֛O_}Q/u0sR.by.E@#Z56?}E~Or5u1R <`vcL_whɸjmh]b9"-Nn#EDl(,챹Y;0VУeSqߍM8nU&A2:ٓE D.X۬$ dD 2ӎ2vr$a$ $ YUXeu|xhPYǠHb$,YAd(4P0f$ dD 2ӎ2vrP+V82ц$@; n$?($&hCH=z/Q:Fg6F4EC-PgC-XCH= )2Z3'64M/Ӕ2mcZ4) ڛۯƛ2 )2;8NmNjvshF&@` *4\pxHt?nYRQVYe%؇iBFO=gލ#]ͣQAF2[O&Rgg >qZWM  J " -(CEdxȮAQ5*/!,5] 0j0T_o‰ʣʕ ʕLFpnƹGP2L̮L̦Çg+,G>߈nOƛ[UA\XFM0LdW` cCvz2*Ƞ)($&?fEd'#I&Rgg0$v8<$: J " -(plɪmF*^wwwwwwwwwwwwwwwwwwwwwwwwwލ#]NYLja"KlN8vpj6yg6F+&¬0PŞ&@HHHa%T\ѠC(UK<ӳ]}7\? !5d $x Y0jDIUIFX JxI AP?dW`2j1g^ɓ4W_`{*Tgi890̰F}J]~2ο8ܟO6j3:jc~-8#혋`".C"7'YT]tWj"?vR$ JY *&0DD $C>_߈nO3qȶL0^8㳌!٧,4$"j",5@ DV*.t?4{fĖUW]Nj&Rgg1A J " -(C"9v4ib:jOǣnEWvҮ;9Űdvrz=BMRΦ#8CNYǶi5TIVep6n|C"?@[g_b;O6j3:jc~-8#혋`".C"@r~.|,Q&Y4XTBHa%TYQA"Bk"AUCP{ѤkjT^aY/y7'?[&OsŞ&{O*/* b3t|h5" 4ƛͿ*M]Ed4PRΦ#8\`BɞI%QRG X8vz",&$IR>2en4ܤ?*ќ9۳ ?)38Fj9͚p apdxyL̰%HF@>KhSs~46fFg(C‚ooYWAW_ u1eUh7GƊJc\ƨ_L &EfWE &EfS\phEeX~Y]~-V9C#BIyg6DpxHt?J-nYMu1*nڬMJVj+UEEeq4EugS?[ $QXax"'$ȬY|PgS?%gIDTWĒ"Aę/vrj 4<ӳFv(҇iC"YESxx{T܍bb+yEdz:j9x= /VNΐȶ}޲ 뤡RPHMsoAAUEIA!60$')ɓ@dVd]&>4G*++uhu|Re4RSi4]NiJeο8P;sA I8mVN͓NUua I $j <$YR*M!-(C˥~565BǾdžy$EENP4fl I k"$LIqxӳ]|(,0 k7Po9םa՝a~֝a&9bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_appserverey_l#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_appserver.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_appserver =head1 VERSION Version Number: 1.11 Last Extracted: 1/31/14 04:40:48 Last Changed: 8/6/13 16:54:47 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_appserver.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr add application_controller \ STARTSCRIPT="/path/to/start/script" \ STOPSCRIPT ="/path/to/stop/script" \ [ MONITORS=[,,...] ] \ [ STARTUP_MODE={background|foreground} ] \ [ CPU_USAGE_MONITOR={yes|no} ] \ [ PROCESS_TO_MONITOR_CPU_USAGE= "/absolute/path/to/application/process" ] \ [ CPU_USAGE_MONITOR_INTERVAL="1 .. 120" ] NOTE: aliases for "application_controller" are "ac" and "app". =head1 DESCRIPTION Attempts to create an application controller that conforms to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. appname [REQUIRED] [string] The label to apply to the new controller object. 3. start_script [REQUIRED] [string] The absolute/full path to the executable file that will be used to start the application associated with this controller object. 4. stop_script [REQUIRED] [string] The absolute/full path to the executable file that will be used to stop the application associated with this controller object. 5. monitors [OPTIONAL] [string] A list of application monitors that are to be used to monitor the application associated with this controller object. 6. startup_mode [OPTIONAL] [boolean] Indicates if the application should be started in the background (default behavior), or in the foreground. 7. cpu_usage_monitor [OPTIONAL] [set] This attribute controls the monitoring of cpu and memory usage of an application configured in a cluster. Default value is "no" and valid values are yes and no. 8. process_to_monitor_cpu [OPTIONAL] [string] Absolute path to application process for which CPU usage shall be monitored. 9. cpu_usage_monitor_interval [OPTIONAL] [integer] Indicates the interval at which CPU usage shall be monitored for an application process. Default value is 10 minutes and valid range is 1 minute to 120 minutes. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_appserver { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_appserver.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset appname=${2//\"/} typeset start_script=${3//\"/} typeset stop_script=${4//\"/} typeset monitors=${5//\"/} typeset startup_mode=${6//\"/} typeset cpu_usage_monitor=${7//\"/} typeset process_to_monitor_cpu=${8//\"/} typeset cpu_usage_monitor_interval=${9//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset existing CL=$LINENO KLIB_HACMP_list_appservers existing 2>>$CLMGR_TMPLOG #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================================================= : Validate input. : Must have a name, start and stop script - claddserv will do the rest : of the checking for valid names, etc #======================================================================= elif [[ -z $appname ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $appname\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$appname" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $appname && -n "${appname//[a-zA-Z0-9_]/}" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 105 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid characters include letters, numbers, and underscores only.\n\n" "$appname" "${appname//[a-zA-Z0-9_]/}" 1>&2 rc=$RC_INCORRECT_INPUT elif (( ${#appname} > $MAX_NAME_LENGTH )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1463 '\nERROR: Application Controller name %1$s should not be more than %2$d characters.\n' "$appname" "$MAX_NAME_LENGTH" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -z $start_script ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" STARTSCRIPT 1>&2 rc=$RC_MISSING_INPUT fi if [[ -z $stop_script ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" STOPSCRIPT 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $start_script && $start_script != /* ]]; then MSG=$(/usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$start_script") MSG="$MSG (STARTSCRIPT @ $LOCAL_NODE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $start_script && ! -e ${start_script%%+([[:space:]])*} ]]; then MSG=$(/usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$start_script" "$LOCAL_NODE") MSG="$MSG (STARTSCRIPT)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $stop_script && $stop_script != /* ]]; then MSG=$(/usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$stop_script") MSG="$MSG (STOPSCRIPT @ $LOCAL_NODE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stop_script && ! -e ${stop_script%%+([[:space:]])*} ]]; then MSG=$(/usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$stop_script" "$LOCAL_NODE") MSG="$MSG (STOPSCRIPT)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $startup_mode ]]; then case $startup_mode in @(B|b)*) startup_mode=background ;; @(F|f)*) startup_mode=foreground ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" STARTUP_MODE "$startup_mode" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "background, foreground" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi # Valid values of cpu_usage_monitor are yes, no. Default value is 'no'. if [[ -n $cpu_usage_monitor ]]; then case $cpu_usage_monitor in @(Y|y|T|t|1)*) cpu_usage_monitor="yes" ;; @(N|n|F|f|0)*) cpu_usage_monitor="no" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" CPU_USAGE_MONITOR "$cpu_usage_monitor" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "no, yes" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac else cpu_usage_monitor="no" fi # process_to_monitor_cpu is a absolute path of an application process to be monitored if [[ -n $process_to_monitor_cpu ]]; then if [[ $process_to_monitor_cpu != /* ]]; then MSG=$(/usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$process_to_monitor_cpu") MSG="$MSG (PROCESS_TO_MONITOR_CPU_USAGE @ $LOCAL_NODE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ ! -e ${process_to_monitor_cpu%%+([[:space:]])*} ]]; then MSG=$(/usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$process_to_monitor_cpu" "$LOCAL_NODE") MSG="$MSG (PROCESS_TO_MONITOR_CPU_USAGE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_NOT_FOUND fi else process_to_monitor_cpu="" fi # Valid values of cpu_usage_monitor_interval is 1 minute to 120 minutes. # Default value is 10 minutes. if [[ -n $cpu_usage_monitor_interval ]]; then if [[ $cpu_usage_monitor_interval != *([[:space:]]) ]]; then CL=$LINENO verify_numeric_range "$cpu_usage_monitor_interval" 1 120 CPU_USAGE_MONITOR_INTERVAL (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi else cpu_usage_monitor_interval=10 fi #====================================================================== : Create the application server if no input errors have been detected #====================================================================== if (( $rc == RC_UNKNOWN )); then [[ -n $startup_mode ]] && startup_mode=" -O $startup_mode" if [[ -n $monitors ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/claddserv -s $appname -b \"$start_script\" -e \"$stop_script\" -m \"$monitors\"$startup_mode -C \"$process_to_monitor_cpu\" -i \"$cpu_usage_monitor_interval\" -E \"$cpu_usage_monitor\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/claddserv -s $appname \ -b "$start_script" \ -e "$stop_script" \ -m "$monitors"$startup_mode \ -C "$process_to_monitor_cpu" \ -i $cpu_usage_monitor_interval \ -E "$cpu_usage_monitor" else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/claddserv -s $appname -b \"$start_script\" -e \"$stop_script\"$startup_mode -C \"$process_to_monitor_cpu\" -i \"$cpu_usage_monitor_interval\" -E \"$cpu_usage_monitor\"">>$CLMGR_TMPLOG # Always log commands $HAUTILS/claddserv -s $appname \ -b "$start_script" \ -e "$stop_script"$startup_mode \ -C "$process_to_monitor_cpu" \ -i $cpu_usage_monitor_interval \ -E "$cpu_usage_monitor" fi rc=$? print "claddserv RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$appname" 1>&2 fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_appserver_attributes "$appname" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add application_controller -h" "APPLICATION CONTROLLER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_appserver()" IN lLQokםa՝a~֝a&Bbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_cluster  =aeinorst #AEIRST_cdhlu"$.CGLMNOP[\]fmp-/2:DUVYbgvy{}(),01;<>BFHw%&*3KQkx|!'45679?WXqz+8@Zj^<B!`mQUMkL"A"k*Y8Stw7Yu`hW|_7Uf&&;??ج&p@NU=]APv pP`,`X`, k٭9U4 U2JYa*88 %PB  5@qœ);:]4+/3sR~Z`0k@)>m@H, e˚6H I䊬Yv_1g3wƏc$psT²΢ gVp^c$psTgH K88yB)@$jՄ氃t_Jd0鏔͎` 6q 56kM7{d$(\>4J iM Vfڂ%S?b]QYzHW ue6fVt ,U2JYa* `(2- dAlsF) ԫ^FrfZ.٧Ʈ%؄D6&&VN?;m1%pE"(@ r`2/)Dx\)|()y0H$$<ܘ fMH2W%I|Xvux<-Ŷ@0㭗fMHvH I䊬Yv_3^$Q%;]Bs7Jys9v_5p2eRʕ*x`<8pmQر5ea$PMP(*%QfJj]Ԩc.w[D=EQMd9" }(eiT*Q4RBh<($ͬ(C1˝#PD&) F?1;-AeUR) F?1;-@$YT#g~c.w[$ Y2 LTQ"dU"H矘˝ÐHE!*Bv,\$áG 4s؂)Hz P#b2ڨx<_1;-"AE (`Ã~c.w[E4)ATX9y !bM=<:pO`_1;-A5B&u(_1;-A&HʤI88p`0p`P˝ȈXhQM4CM97'!(D2IMy L0?1;-M%VAE **jA4TSHuc@X?1;-UdD&S(=H MHr6-Y<˚(!j'() t0]!W '<"1AqVo콌{MүoH6 pkչ̧P؅*Um.Q iT Ğw0w# kǴ*[i/u[3u+6׫sx+sGOjQ؅*Um.Q iT Ğw0vLe7J}EM]ь?5& fcWV_t™hTyEnb3`^=!Wt߹ 8EQ "EFf+- Oۣp;n|#8jw1A(!*QD(H34^QhW~YݮtTPxÿ;',Ԧ9$Z @xUd*QD(H9p5yHVS؅f+?aa|3t8EQ YDUTD,DE]Lzӛ&9ɳt;*tټܚ⼌ EEHNtpOɇvLe*Lb q3EAUT8+W7ZuvVA7$*D9z7J}Yuu2YueR =޼ wVu0 Ly$I`ٹX>dMf]FyɃЎRKՀNnp0f pV^w{9 ]ğnq{e՗빦1O&hRD/p-ʹ+]Yn|v16>5V]\'&ci4+ٶz˫/2+t0|XJ:,I|X{/[7fqDW:plZnnBe՗ ѧEl4T=2gx|) o}^^7/mua(6m:eĞmuJm`nM|Su9.s; ׁ=oؓUBri2$̛`PoI77&ۮu3P!3Fz6p+sz4&S cpyŇq]>e]t)S 0{eiui]u\qֻu8_?F,r3(fS4lIv>5ua(8<<<<<<<<<<<<<<<<<<<<8<78N2œwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgznfSa=RqV_͙R}fT|k1[ &%ƤUpn|̩Z6eJgƳ$lʕύf++`H7/mabPXo #ɹt ]v9G{gx#)hO 8, .6`x .6kTiy`ѧ WNU5^F8a봳6jxU1Ȓ "4yDX iP-\-v_0*V"*MH HɌ 0@#79 4T  08{/\ Uٕ+CϻTxHgكO1H ݉E"hb)DE,[E"hx,X6ܻL `@(mH64XD<,Cn] EEQ"*EUCH#bQ~ }W fTEQ"*,EUC .&%5"&3 }W fTƀ^ oV_*m}tSL,a)ӌ"&sPc|k1^BD33;B;Y80fe=]2a#՗*EtR#՗W3;1^2aY~"t$Fz̦hrEV@894TP `q0~P$Q5IIyqqm<4`,p  2G.+#O$iЈksfTZ{yFaE j :}e՗dR "}e՗iO5ɹ+/7Үu^F 8,080Ҳ7IS]ioFx`7]:kTiy`P٪ TƏ"Hk(IMbJS 60j)IB0peJ5"' QRhGQ`xw y`I`qݝe끺/#LrnRn,kѦXJ'wwwwwwwwwwwwwwwwwwvw Fnri e;-L.PZNc&B!lʕ? @X08 8A ެ'T覙%XÀSDL7]ь#Fu_\dpaq.0v0WٹIp=Y~K*CN_ѹxPm0(h\`{/\ ү5(sua(OV]]Lz+ }W ]W.lʕ豅*V2i~p}32&Nn|h5I( >|JuD~!0ӎY©47Oy0Үi5k0pÿif(lcG$A5E\h$&%)@5$@a`ww 79 4T sO5L ;E8 79 4T^ zQSo뢚d!c',$S o}^^(f&;(g^MΏueؓU=˫Gyn^wХ@R- e( oɸY7ӫB >o9~}`nYusPf/h+&M43)W0nriw86鿫/ڒk }W fT7E-\-v_0*V4a8U;y7f:ӔzUe&N)miU*VO&n]17ҜmBcnj`6eJqe=]2a=Y~MүV_*V4ooV_Ws M+2M ̩^.4VљN2x2.0n|w9'- ^FKNm0+tX˫¼)՗&A(D-vstžg9޻KLNo6q_32ٖkWN"2o37ѐO#:/#Lmݯ#F64VF5k0 o ZM|*/#L0(lcG$A5E\h$&%)@iP{Ty l008&VPO54I`X 34D&Pa}[q$|18N2qwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgq7xoE $*aen|\ 6(-.hXE $*aen|QV0+ @e0V `Xh Lz@£ucATq`&K,s&K-0.qcG$A5 A"d;{0c@wBfߛtksM}ݝ=v7# @t&Cϻ*m}ps^Ʀ=``Y2(6>R7}#cHMe0,AH$Ua7en|֋? Ə"Hk*H'}ݝgvMү njos3V)NwwwwwwwwwwwwwwwwwwwwgXkR7~`7/P٪ TƏ"Hk(IMbJS E4&՗6fc޽w57]t)Zh\ax`ׁХa2n405jcE4&wwwwwwwwwwwwwwwwwwwwwwwwwwwwg 7QR2a xg ;7t)Vyڬšm6\lλi z+ue)p*1Ρ$wwwwwwwwwwwwwwwwwwwwwwwwwwwgs_Ʀ=``Y2( zԗsQg,[ ɇ0`՗} 5%ѓY =IjKɇ Lh$&D$0(cSDL7"ˌ}0޼ fe>š7J`ܢɇ*84$y{Ng0AZUrpaq.0FcL>3ϻt7KGiUObp e\id,Mү(&dd N3 ҼdG/څ*8€n6.4oV_*m}xɇ,hd.w\i0Xld88 Yv_1Cf'S<" *G$A5(AL00 N0oHEwӄu3s{2ڮӄMbO/)#NsM h\ax GYbj : r+)7JzExDu+WeĞ!H0}6>nTe8>4YdI,d,%J(I 7!YNʐ,,QSo7TD64YdI,d,TL 9bTq*`7/뺏ƏTD<"w$"%QGh4N~9XJ=YupG}ݝ8 ޘɁdx$ w5‚A`IaR&2TDyBaCu5&jl\iPK 762a.0fDTR%y +M ѧEFR£? aFc&A{N78F@$)DC"<0! JLxn6kȒ ʒ*D?Ai!=y4mw F6kzcP7&'A>Yn| u1':{[(1]S{#F}^ϻ;qN"2@64D&S}VjK&N{@ˢ&zi*r(MdQTUb =E^Qb̹w5H7JaVa5(7ҮVz8IɃK艿 @y"*5h ;;p@#5zcP;7{+t4Ю꽀0noc]WliLH I䊬}^7Jx<-Ŷ@00;;p@#51(Yv_<{Tymao]n|۬`dn3#08#<뙜ufmua(7Sco^+8`<-Ŷ;3ڐ}[V5A<`ٮ34 "4IwVh 8_?F,r3ȤX$EVs ,Mү 0@u lRo:Aםa՝a~֝a&/)bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_codter   =eainorst $R_cdhlmpu"1ACEILMNOPST\fgv#&(),-./02:GU[]bwy;>BDHV|!%'*3456Kkx{}+789xjx䉑*<QSCS`HAAf䉑*<QzstgAOİ zM(=K:V[;D"O?\d?*/ ~MDZA/ 8q\OpM[)aǟXvXEHqLTs$L[s,|<սρqIe1q vGF00?v -;<սR{7)3ssU?Mt0YkqeWK,\"ɤ@u3zm3+|ճ0E a" εfot\?̪gZ7\̭N.X®M^L#=-7A  a2KQɶv`Nyx)a#|t_>%[>Mm֠f^h03)8Ö[@r1N,qv2Nn;|վ7(3920WH 96~8e<RÏ?s$&qLTs$L[61cq^ | F ܤ{,. N(b|egyG ^/f6nyj[Xag&ٺ? -q?̪e$Py4gZ7z87[ HD$HVfKϜ0p`Ny͗rŦn6nڶW!iv,AZy` 8C1, ],VfKٕUɫɖgef?;9nqesn%[Sb0N'<j[W/yqInOfu?03)8ÖX:ܠS`m8Nn;|վ7(3920WH 96~8e<RÏ?s$&8*XE&-?Ⱦwjuћ-[ \RYx \A2Qь#9ejA6p5o|^7mt0lZU2HiZ7z87[?CR0I VfKϜ0pʮu3{ R* B3ڲMt`Nye7XvLx7?'rs^ XqH5]-ρ6Z@K|'ɳt b e;\Grsh|nPf)r0e6FO|^ob#X5yXag&ٺӃ,ǜ6V XqҶh2(S-1e\oRiV1qlale;x2w)ecpջaV˂iڇLZn6S ;ԅ|'L3to{"\eѵ7=g6Z% ޥӝ3Jg%mjNplWku6}+mPv@p!0iI L;7A['>,SUϹd!,0D@pYmVrѹ\NڇI3#"8˖WljjA6Wͳtye~$ H!ÃraPnA8\< UxL- h I8(%C5Z6Rtm(10 UHqC&+r1.W=0l8e4 "hhx"X\ei)rtmJ@C O+&ڲK 1.W> M˵da@ O+&ڲL3H`xybsܻVH O?TW@2hL"}Vj ?2XgZ6-_:ՙEUUUUUUUUUUUUUUUUU%-57=sVp b拭r?"+)HPT1.W<5$$T< bEH<?c,\xkH$H8y2@ċXBI08y1B41.W<5$$T< bE,A!AD 2a$Hd1 pbLPX\hHPpdD 2a pbh <IJ `vn۩fSMfe;vV 8>n{7:j}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTt2EH-DfS,۟jxPV`-hHL<շH$P "\PaAUUUUUUUUG`;UUUUUUUT~*+Mtp|jfQsԓ - &t(&E cM<(DKna4^fSb0:-@O4PHNDE 0HD2+?:@"JdiG(]'I 9zMa\Nq5rm,i7h։  D,,[y!xzaye@A4R0D΁eH3iEȉfÍ!#Cu!r alyð=Ҙ i7Xag&ٺI8>q\FA"'(Is eH: E"c hrZ0l -qxp($D2\Eֳ *Dl &H4yYҚMa\Ne\Eֳ8PV :,uTA;:?Q]AZ.`GkEDS!a`XX[yEϞȎ4uYXFmEϞȎ4iNDEKH* &ڲL3-bcEpAv<$'B M˵d-bco иa`jfQsԓ - &t(&E 4ȢdDÕk17.ճY `Λ^OfWrtmMk;kfy2، k… HD$H5ٔ{s Ұ44,8A"':A *@( e"EK?ۏ6͸ij>jލ ;17.j`WuYYsr[ajoԹso Њ}V K 歼rbuYf'YNfV'FśŅN㱸<Y5@i⢸k ܻVI{_ ЃrY%|@8@CBu1:&ڲKpx?\EpAvl3Avl3b!:e SЃrY$dnbt717.Ւa ЃrY&Z1ao ,nƄj0 1:?TW ~jcBt ܻVH X,-K1:ЃrY# x?:Yi>xhn5T *Da`  X0Xɫ+65rm,,\A2M 14bcpP) ɖ?5VWl15rm,j bh.Yf&K13 G>xhn5T *Da`  X0Xɫ+)Ln  @A4R2P2gxPVSH$H8y2@Ċ(8y1B8XX' *Dm5RL/#l(&F L)0&c8O"%bn]m^ | XEHzxei@8D 4OH$HȢD.(dg‚"UA"EAɒ$]*HɄɊ<շ@ LR%Kiaye@A4R0D΁eH3qEK"%[ܻV#RslӖXEH^2/{uZnakoi7DOt$$TdQ"@D2yAZO ".b $d@a`j N&HII0a L)"g@2hPxO"%bn]oeq{{w)96^ ,\"ɤ\P/]OֶxpͼWw)B9GP{EַܤVfM[5ZaɋMjy  YH2" xPVSZ B1yo?:@"JY%$9@2h` Cf0xO"%v'mϽwbn]&8<\Eܳ37Vئs7憀&[tY6;i74֨U X$7eH%ʏ(Dn8"y@QcPcqƠLR%K ?76b<2/ShL- h I8(4@ lSoRםa՝a~֝a&4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_dependencyey_l   e =ainrst"$/LRcdhlop)-:ACEGIMNOPST[\]_fgmuy#&(,.12;>bw{}%*+04bCY0P .$=2lAc(H8 _"B#*\tm}Xb`XfيЬZƋ2N+8[_C.; -Y]7jU' ڛa}9 ʕP GpNaa" Wk& 6b$M,} ,r q{nd!`3b l6iPbCh {{{{{{iZk4|ʶe}SZ$&16.]X3fӵ[_FB'\{{{{{{!k*U F"vq^<6CpX 8%{{{{{{ ܱP`íL+[_]VR 6'bԨ5?͕[$ Pq2. \>+[$ Pq2. \>+[1fPA'ip*}PA -X-{[w YBp\;(8;$L.%bv.HG;["Բ\ph)ڐr"յr`0ra  ݩ W$zIp4 Bc>RT3VٸR5,!lY0P .$=2lAc(H8 S82۹/rY'r1WfO׶KܖCwXr x.gCsNǃI( z 2 \D444.vb϶ KܖCҰSZoŻYu%0TDʘx.gCsN&*\ڍ- ũ`nd8Z2ЬZk2|.r^ӿ㉐xB;"PqbD3!2 EihV-K[w%K!*b2ЬZk2|.r^ӿ $$ P…A I\xMWZӸVhK.j|4i5ueX-{nd!v M 2TEJP)J2ѤZit, pb1fihV-K^۹/rYg /B{<Үa:onqjq;xʷ3a[̕,`R7Rw/fV6Jjw y鴁uke˄JL+mܗ,3D!|e[^0ꁽũƨC\'*X"(og6 ^mڕO>ѤZit, pb1fihV-K^۹/rYg /B{- *V s V̕,`R7Rw/fV מH+Ŗq+VnwՋݭG&*;H&\'\R (9Cx+8b`%l y鴁BYgkksn։#GѤZiav v`Rɖ98r^0 R4f1 ɀ@S.7H wK'rM3H*nub,;M3H*nu d4b\@)4"ꅻb'zB 4"؉l؇V.NM&dlc)=BdU8\!"eȗÃ:&AUJ7f+27kDm|S"4 "7"4 "jF\q2)R8D(=頤^e4L 1=BdU8L f+27JjH* $`8pP{TyEUR$P8ÿɜdB8iHlwd2ZFaAZF`+ (T@"\ǕQB$Tlۿ頤^e4L 1=BdU8LxpvURmܗ,hT-i0qiS3.Fhj_'Yq+j7ծ ѭ{;_ 4#[4r^R2n ũ#yb!AIQ*U]v.wNL%H(+tM 6os&q'J?xPV2ZG6!ՋAI%&?CiPN cHzȪpr%R UծX 314 ~F^#mܗ,3 wwj_mܗ,>įvNV/.8$KhԿjy| מH}+_Fh#^ERV i8pP{Tyd$PE ;\̙KH@0#itWs&FѸ-cM͈ubRiFIF2C&ES2*&\|8jDTzm7sbԹ3ubH%CHg$R5$r*/k=%G&HrE$P8ÿɜd0G-(ʷ3a[!dhO6o ;2gH< ~ *G0HDsfV.NM&dlc)=BdU8\!"eȗÀmR U^۹/rYި[ `IP;gp]%w.;\4Կ%\N,ɪW)&o\Zv2Wӷ;y4:{MK˫i+jFF#k=%G$PyUU dNif$tfg~_5wwPtjFw(W$LcJ^۹/rZ7M{mHҮ:/q(iS sbAX vdΐڑLb 8x*@r >lԫ NR wK!E#JJ&]!H, 26klذ83)bx8i7 mٱ\K`T-.)UzJ(@\ Pp8y2*rwFMk=67Ng*O HZB3~_5w,9R  $1nnqq4R2(TZE*P\X hqJMffy{nd8H<H!o4Mw*Gib,;QDR2*0LHN98!G>~^H8`Y^۹/rY2) 2RnUb),Y^w$]5ws3~^H8`Y^۹/rY2) 2ŴRa:oE(g*/mܗ,Tx)"" Te*Gq̉ 6Z=Ty/sY*<U*ae K0@X(TxW3E HX)(HM\ō$tfgKܖCi42sHzm nGHzȪp2#8D-hIz; hqJMffy{nd8`X8cH@wz@2{uGҚ")PN&YB|'Ȝe? /聚,/Jk`+G.~^H8`Y^۹/rY2) 11Iad[E(ʷ3a[GhBhk= WEffy{nd:MdqL ,R>dNift@]5@|X(+IQ*U] 84bQkѳ= Tr4L "_mR UA3%g$bw;ݭMHԑÄB5$\"N(XaAgMmpW/ AI%&?CiPN cHzȪpr%H5" UQXpZ۸NZ؀B6i8pP{ {{{{{{{{{;AK6mO5mp͹ѣlu==tZ{{{{{{{{{X^Q .\B' ,1B:S[{G$PyUU 3Z&WBfLuR / hMH)GPk2|0qiu8HԠnrb'zyf`t4'ͩ-l@!xܸʕ,dh٩E hqJMfO1pE4bQg-fOE.YuJ.^h0CkPR5$sNF mܗ,: (<5L *TA#\Z$םa՝a~֝a&>$bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_efsnden#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_efs.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)20 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_efs.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 4/28/16 05:58:28 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_efs =head1 VERSION Version Number: 1.4 Last Extracted: 5/3/16 18:54:04 Last Changed: 4/28/16 05:58:28 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_efs.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 =head1 SYNOPSIS clmgr add efs \ MODE=ldap \ [ PASSWORD= ] clmgr add efs \ MODE=shared_fs \ VOLUME_GROUP= \ SERVICE_IP= \ [ PASSWORD= ] =head1 DESCRIPTION Attempts to enable EFS for securing file systems. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. mode [REQUIRED] [string] The manner in which the keystore will be created. More specifically, the location; either "ldap" or "shared_fs". 3. vg [OPTIONAL] [string] The volume group where the keystore is to be stored. This option is required for mode "shared_fs", but does not apply at all to a mode of "ldap". 4. service_ip [OPTIONAL] [set] The service IP that can be used to access the keystore. This option is required for mode "shared_fs", but does not apply at all to a mode of "ldap". 5. password [OPTIONAL] [string] The EFS administrative password. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_efs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_efs.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 : INPUTS: $* typeset -n properties=$1 typeset -l mode=${2//\"/} typeset vg=${3//\"/} typeset service_ip=${4//\"/} typeset password=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -z $mode ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" MODE 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "ldap, shared_fs" 1>&2 rc=$RC_MISSING_INPUT elif [[ $mode != @(l|s|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" MODE "$mode " 1>&2 rc=$RC_INCORRECT_INPUT else typeset -u modeUC=$mode case $modeUC in LD*) mode="ldap" ;; LO*) mode="shared_fs" ;; F*) mode="shared_fs" ;; SH*) mode="shared_fs" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' MODE "$mode" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "shared_fs, ldap" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi if [[ $vg != *([[:space:]]) && $mode == "ldap" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 "\nERROR: conflicting options were provided,\n \"%1\$s\" versus \"%2\$s\".\n\n" "MODE=$mode" VOLUME_GROUP 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $service_ip != *([[:space:]]) && $mode == "ldap" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 "\nERROR: conflicting options were provided,\n \"%1\$s\" versus \"%2\$s\".\n\n" "MODE=$mode" SERVICE_IP 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $vg != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_volume_group $vg if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$vg" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 160 "Available Volume Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_volume_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi elif [[ $mode == "shared_fs" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" VOLUME_GROUP 1>&2 rc=$RC_MISSING_INPUT fi if [[ $service_ip != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_service_ip $service_ip if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$service_ip" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 156 "Available Service IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_service_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi elif [[ $mode == "shared_fs" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" SERVICE_IP 1>&2 rc=$RC_MISSING_INPUT fi #=================================================== : Enable EFS if no input errors have been detected #=================================================== if (( $rc == RC_UNKNOWN )); then typeset mOpt= vOpt= sOpt= [[ $mode == "ldap" ]] && mOpt=" -m 1" || mOpt=" -m 2" [[ $vg != *([[:space:]]) ]] && vOpt=" -v $vg" [[ $service_ip != *([[:space:]]) ]] && sOpt=" -s $service_ip" [[ $password != *([[:space:]]) ]] && aOpt=" -A $password" print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_enable_efs$mOpt$vOpt$sOpt$aOpt" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/cl_enable_efs$mOpt$vOpt$sOpt$aOpt rc=$? print "$0()[$LINENO]($SECONDS): cl_mkefs RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 40 "\nERROR: failed to enable %1\$s.\n\n" "EFS" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_efs_attributes properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add efs -h" "EFS:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_efs()" [  k2UoNםa՝a~֝a&Nbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_eventen#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_event.sh 1.2 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_event =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:42:01 Last Changed: 5/8/13 14:25:05 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_event.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr add event \ FILE= \ [ DESCRIPTION= ] NOTE: an alias for "event" is "ev". =head1 DESCRIPTION Attempts to configure a new, custom cluster event in the cluster configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. event [REQUIRED] [string] The label that is to be applied to this event. 3. file [REQUIRED] [string] The executable file for this event. 4. description [OPTIONAL] [string] A description of the event. If not description is specified, a default will be provided. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_event { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_event.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset event=${2//\"/} typeset file=${3//\"/} typeset description=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset existing CL=$LINENO KLIB_HACMP_list_events existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $event ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 '\nERROR: a name/label must be provided.\n\n' 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $event\ * ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 '\nERROR: the specified object already exists: "%1$s"\n\n' "$event" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -z $file ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 '\nERROR: this operation requires the "%1$s" attribute.\n\n' FILE 1>&2 rc=$RC_MISSING_INPUT else if [[ $file != /* ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 '\nERROR: the specified path does not appear to be in absolute format:\n%1$s\n\n' "$file" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ ! -e $file ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$file" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ $file == *[[:space:]]* ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace, which is not allowed: \"%2\$s\"\n\n" FILE "$file" 1>&2 rc=$RC_INCORRECT_INPUT fi fi #========================================================= : Create the event if no input errors have been detected #========================================================= if (( $rc == RC_UNKNOWN )); then [[ -z $description ]] && description="$event, running $file." print -- "$0()[$LINENO]($SECONDS): $HAUTILS/claddcustom -t event -n \"$event\" -I \"$description\" -v \"$file\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/claddcustom -t event \ -n "$event" \ -I "$description" \ -v "$file" rc=$? print "claddcustom RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 '\nERROR: failed to create "%1$s".\n\n' "$event" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_event_attributes "$event" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add event -h" "EVENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_event()" nt lVoDBםa՝a~֝a&*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_fallback_timerl  =aeinrst "$CLRS\_cdhlmo-/1AEGIMNOTUfpuy#(),.02:;>DPY[]bgkvw%&346BFH579^`1_I< i.iɚ\>>uxPVNrӧg :3C,\ C78RbcOl8m›;!Ӂ>X ~ vUk.&`rSc*b?PvUkji.B}tl!F`a勘$ըf BLCtVLi휇 SX ip}iP͗]K*\LB刦-U&,󻦺 eV.Fb'ѧN6/2tf XAZnp$7Muj4ƞqpq7V^p7֛ʭ6t0`fήTL[LX CewMuj 3 uj4!>:qqxqӣ0d03s!&!kQ4Cی)\>Ά~m:rx E b`1 am:rxPVNrӧg :3C?P(!!lV2!1c5 a uj4!>:qqxqӣ0d0=P9:cp6aX1X2!ըnX-Wv5 ^C1 P!(Mݞ'82~1Q->5Gv_W}CH zE(Lc)*r}b 9HU5BNf qxpwwwwwwwwwwwwwwwwvN!\tyhKEp+$K^$ /"&H^-xe;ș'z.$SHW*\zHx{461@͆Rc@.U "nae^t, 9 $adN aeبYgFĠ ?*h"TcPNP%q nT52E0$l 2D=RBytex$ ?M9 "YtҴ@%p+oV847 BT]4T?M9DMCt) ʑ]4Ep+oL]4$ct) )Ve3t) ș&iZ$L?M9RBk!3t) ˤatҴK`7 BJ,\ ?M9HK$I#t) ,$DR J $$XDE/02DE/(PH0eA""N!\HHx{461@͆Rc@5NI *yг!F^t, 2yг yаt΅/:78ʸU _8=S%eK")2IQ""HH%DfTTHPMR& $DSPSt) 2XHhdCt) ʗ,$DQtҴJ,$DP7 BI*$DQtҴL$Ct) BE*$DQtҴ@BE*$DP7 B**$DQtҴL̨Ct) "(iZ ?M9R& $DQtҴU"`ʂDEp+㲫V85㥢㲫JxV#kqUk>"b5 Ņ: XHN㲫Jx0H'qUk<v!ըHeVqUkob8Ɇ3 Vp^^30vp:.Bhh"V.BcNJp"8:2 ŢK,u$2`Ma!: pEb&:%H rJ]2EABZfܠ:)&THƊI&U&@ p(usl] "'CFtlv7:`Yi{5"%*It&`@DشTIr.0BfLj'X8hZr/fܠ:)&THƊI&U&@4$in}bNCYAogsbZH`TC.T,Mr̘<7XN"b5 Ņ: <&<^2 Au4RL5T*MEʪM\IE COn,Ol:53vz,@?@4YŤ̩NHqbQ%HH 0MbdrŅ: <&<^2 Au4RL5T*MEʪM\i IE ըt&s9Z #EZ"+Ťʔ,d,$8hJ*B(XLɃq50x f#xV,,!ըH)1hm ceIhRj.URj-"J(]@2{qg{g!ӳ@Adh呢-%Tc& h"drC " ?lZ*$BQBI\a3&5TW-|H'D<^BEECوj,, uj?yLxd=rhRj.#)&TT HP?Yƞt7"j0g4Y, 9dhIi!"'`6-\d$.P*+>x ⢸㲫Jx 8ήvUk$x{461I2]RF4RL5*5r7AiQB  4Yp#8SP:nCd@4 ZKI P4 ,`\9r6-\EU(X 0Ma!;ʭb7AX$F/:qUXXCPRc!۔SE$ʓQuII2\`IE  d9NC4m7 n]M@r1i-$2DE.\rHqbQ%ʔURP*+/:Ual Bv^uwM.7 Fuj?yLxd=rhRj.#)&TT HP?Yƞt7"j0g4Y, 9dhIi!\9p0 +A^uwM.7 Y6-\d$.P]ݟ8>3Omw3.B|Mrw iP l°bdk ћޢK,.‚: X:Z'`Zr/fܠ:)&THƊI&U& Jp}c!ػ!>>0r;& ?*h"*e ,\X%I$\A &LMQ7X uw쳎옆:Z58>x4\vUk΋/:qUsZ-:rx.FG+1RL50TM2#"mэ\qf"dDu[q::{b:Z5;vsEeVs:,]eVsZ-:rz87XHN㲫XPPV#ǜNjC١(1I&1eIUI Nd14{=b'է׀Vl``b@shHP),Hq`U$rJș0Q5Gb&ms:y>mKFr9㲫XtYy4ʭciӓr29X!eIi'vnl:㏓4?y& &\ͺX;~Y?lb'qUc΋/:qUc֋N+dr? *+/:qUXXCPRc!۔SE$ʓQuII2\à Nd14{=b'է׀VvUiI28v!!BP"łQTE *"dDu[q8;*tk!LAL(nr6q`9gXOelb'iӓ?t\Vb#2 .Bfn,H?Fl!eIi'vnl:㏓l5 f呢qVm`X ZKI c{,b`ezO) "(Th"eIɖ"THqy0SPcA!!Hh"Bċ@§'-<2Rgtր@j)]첹ػ^r @@i{ kjhWoI(םa՝a~֝a&I(bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_filecollectionl#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_filecollection.sh 1.9 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_filecollection.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_filecollection =head1 SYNOPSIS add file_collection \ FILES="/path/to/file1,/path/to/file2,..." \ [ SYNC_WITH_CLUSTER={no|yes} ] \ [ SYNC_WHEN_CHANGED={no|yes} ] \ [ DESCRIPTION="" ] NOTE: the aliases for "file_collection" are "fc" and "fi". =head1 DESCRIPTION Attempts to create a file collection within the cluster that conforms to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. fcname [REQUIRED] [string] The label to apply to the new file collection. 3. files [OPTIONAL] [string] A list of files to be referenced by (a.k.a. "included within", although not literally!) the new file collection object. 4. sync_with_cluster [OPTIONAL] [string] A Boolean-style indicator of whether or not the file collection should propagate its files to all the cluster nodes every time a cluster synchronization is performed. 5. sync_when_changed [OPTIONAL] [string] A Boolean-style indicator of whether or not the file collection should propagate its files to all the cluster nodes whenever any of those files gets changed. 6. description [OPTIONAL] [string] A description to apply to the new file collection. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_filecollection { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_filecollection.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset fcname=${2//\"/} shift; shift typeset -n files=$1 files=${files//\"/} typeset -l sync_with_cluster=${2//\"/} typeset -l sync_when_changed=${3//\"/} typeset description=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A tf tf=( [_DEFAULT_]="no" [true]="yes" [false]="no" [yes]="yes" [no]="no" ) typeset existing CL=$LINENO KLIB_HACMP_list_filecollection existing 2>>$CLMGR_TMPLOG #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $fcname ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $fcname\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$fcname" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $fcname && -n "${fcname//[a-zA-Z0-9_]/}" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 105 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid characters include letters, numbers, and underscores only.\n\n" "$fcname" "${fcname//[a-zA-Z0-9_]/}" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $sync_with_cluster && \ $sync_with_cluster != @(y|t|n|f)* ]] then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" SYNC_WITH_CLUSTER "$sync_with_cluster" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "no, yes" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $sync_when_changed && \ $sync_when_changed != @(y|t|n|f)* ]] then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" SYNC_WHEN_CHANGED "$sync_when_changed" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "no, yes" 1>&2 rc=$RC_INCORRECT_INPUT fi #=================================================================== : Create the file collection if no input errors have been detected #=================================================================== if (( $rc == RC_UNKNOWN )); then typeset swcl= swch= if [[ $sync_with_cluster == *([[:space:]]) ]]; then swcl=${tf[_DEFAULT_]} else swcl=${tf[$sync_with_cluster]} fi if [[ $sync_when_changed == *([[:space:]]) ]]; then swch=${tf[_DEFAULT_]} else swch=${tf[$sync_when_changed]} fi print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o coll -a \"$fcname\" -\"$description\" $swcl $swch" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o coll -a "$fcname" \ -"$description" $swcl $swch rc=$? print "clfilecollection RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 109 "\nERROR: the operation appears to have failed.\n\n" 1>&2 elif [[ -n $files ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o file -a \"$fcname\" ${files//,/ }" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o file -a "$fcname" ${files//,/ } rc=$? print "clfilecollection RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 215 "\nERROR: an error occurred while attempting to add \"%1\$s\" to file collection \"%2\$s\".\n An attempt will be made to remove the file collection, since it was\n only partially created.\n\n" "${files//,/ }" "$fcname" 1>&2 : Clean up the failed addition print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o coll -r \"$fcname\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o coll -r "$fcname" typeset -i cmd_rc=$? print " RC: $cmd_rc" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc != RC_SUCCESS )); then print -n " " /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$fcname" 1>&2 fi fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_filecollection_attributes "$fcname" properties fi else /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$fcname" 1>&2 fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add file_collection -h" "FILE COLLECTION:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_filecollection()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ ======= lOXouםa՝a~֝a&Kbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_file_systemonl   =e inst"$O_acdflopr12:CEGILMNRST[\]bghmuvy&(),-./046;APUz|#%*3589>BVw{}!7DFHKZkqx'm0(K.X G;X9܆AcGG;O9k"\3 XO9kPX5 [bŹ!vݵl%CrkE`7];r7Z+~ h&\ s4rfqO(ۻlc mg'.bY S6ycr 6#l?rsPB7S~&c 2MB¥fs8'/m\<'-x3 cCN[Z"yoAg:w h6o3+عۨ!~@bH;@j hi ~ ;:wi,Q厣߀JPn2(,dJJq.r~-eۼH;@l'6k0 v PcDHnCB8[a; o vcn-# {`~ۓqiAc$,*PjW32~Z]ч;m-;c@m?*۷ۍ'Yv9k[t.qHA!ܐ-h$0cŝW˰6C87y\hz ?q: lg-hc0-h;v\g-.WS{֭P1 sYTO4j(s5+r׃0s>`EMd5 N ;o@#5cZ,mA'.nlgQ?{0j#mmŝBb4n^ۻ-\ѹr̟li [H=,,-4nVnyиP[nN DŽ=A# '֊5|vA~4H?uVٖiAc$,*PhmkDv;\+jrpn;-%G) ,`0=,,7l7u֋H~rpn<%j aLq>WS{H Uem g(,dJmh8֝vk;=H ]vpg-5|v7bY SOsoaAfƉf܇l7Gr{(dg-'\[fE{aH;A &ǐ\f1yPC#30ar~`G) V<>PΣ=5(D3ǐ\gliM,HD'G;fM6 5iso;z4N~ll;hu֏+3ǐ\gƎ ƈ vĄAysكWh knRtm!9kz.y|1{l4pn4Dpn۸ fuA l˛x4L=,,HD&Ǝ ƈ "?KmZGY1ۼXY5v8VH;A Q䫖갋l^iAc$,*PjW32~Vgf _$r 9܃yBع⻶(ۻlQnl[ʼnlZҹs?|ۚqB˄u`տH;@j hi ~ 87"8H7"$ ĄAa0h4pkh($`L  ACD@Q~4M[BⲀ2MB¥fs8'iZpn9'[B( ^Aܹfl#lnʼni eu`G) em!~m4F=cXU]im ^X,O.OXౣq#q"@HD&GD@'4L~4Dpn8DHDp`hh($` ?"$ ĄAa0h4pn4L  CQ0`n& HD&GD@ 8`X(L7 "{ 54K4?DpPLIƃC=iTM2MB¥f7a+JpAu6ͽwmi3;0j#0D?&^ aAu6ZӶiui{?k07.Dȹr~"?}n۷sl s?{n[N Y-geͼȯ;wHW^&PhlYusKmuкpnNZfɴ.{ ܸ>Jan붅8<춆,? ݰ1 8E3+KA JGppn8h *G ;cG Ǝ8aas&^rsãn[ʓrsكVv 6MFm(-SζL$ 6MF5I ѹrc ʓ  ѹrŪ庪tHL@@B7+庂0 m!˕kmʓ  ѹrZmp-Y@b04@@B7+%YmZl&" m!˕τZmV<1tHhi4n\xs]UiYm N  m!˕kuT BUCAB hܹ\滊ZmRa!B hܹ\! -U]1"z H@&rsuc.3VPL$4L@@B7+uJna!(o7.W=fmuO:. H@&rslYQ6ID {h֙IT,K `gaA\xԋH ,k]h0jY,uUUUUUUUUUUUUUUUUTrsá&\倒b7.WWyMh북nRs<49&\Pr$ L ?obN :Zd $]SL(TuJ$c"7HH.q[n[N v0v 69gan)f@8h8(sؓ${IT:d $]R ZA%CrNFn)i\OSZ,,q۔%e*TTaas/fg4kM4&B9JL2K)% HVT ag*6=iTM az`ːTL9 ahi Ts8pSvb!a(L L Lɖ]ZHlYQ6aۙ *G$]AqaK P"*,QBODHPZm Z`@y2 RiM4&B@" ysH ArrEcvb!a(L L iV,`SMAuUm!Az&BζΫ6hi TpI`rd $]S%E(Ii Tr "m(-Sζ8PR9" FŗO:)0&BN,8p38pSvvYicYp&كn6g!r Pʠ:gڕ~Jmn?z&Bζ4MyиrsÅtGm?JL2K)% HTTMyиӛ:w-4Myй<,nK&@RE2TXعRa$Gm, DككsF鴉V[uV=8)g4kMJ۪"e,E,Ng/ R(L`IB`@REF*.Jm(/MJ۪,/L`%e*`\& a_ĜA#t*H P"0H4Dv.]BiNFnŹ86a)n)i&%YmZlXpP'H-2 .&t*HL1DXWlY HP\{˕Yic[,DP=P TQeZM4&B嬉h4֯(P\IP\ZDHPZm ep")h4֬$LS)h֘IdKAfV 4h|Y{pfp3#<9#sL$%ZIM'm;B;I'2,@ufffi6{&X2R~35ڭ6yY@bh8WكWhh1uՔ/8s δZА4MӚ7-Vs9H֋ :[0j#Æ4uc.3VP0V<5e!hÆ4iTqY@b0fmuO:.4k:w%\U[b(+:w%\U[bHD&j iKZNg> JKf _$rXpƛ.yjpǐ\f1t 9ak4kyи1yØPVM6m @5 iG;[-~pG;[-t 9 MQIaknRROh֜ѹjUPNs9HΞ`G)5 iM[BⲀaAZ4u.+( ] ?Ѭ8cL9ܕrVm09ܕrVm!h-nQʒÖγSu `ꪪ?&uݖ}dWם<a-rZpn/UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU? a{Yr K(a_4n\y$G'IaȰfIhrtZrQI`:NÀ|[9:I'+vJ9:I-&ҎNKiNKjJ9:I.eG'I$rs-e$lG'I%G'I%ǔrt\N$$˕aG'I$ѭ9ri~'8pSh֛.yj`Fŗg s?q.yjBB 7ѭ4MyйB'^ǜ89grt{Mm!Aju.$FU?pQXr,ِh֛0jՒ9N`%`FŗyØPVG'Ia4كVv'50HYC?‚1䣓@b41rA J X X$,ѡqeyÁp4ܷPBRqXNÜFrpn2J!f/c 0&ܜ6ܜZm"UU`%`Fŗ~pG'Iam6z+ MJ۪h֝cZ̺$w$‚fJ9:K[eHI? abYuC'9ѭ6! -U]1"{GrK0j9:Km23G'IaOf4kNjZl%`Fŗ~p%%-@b8EFiӸuT BUJ!f/c ‚1 sYG'Ia`b'qXV&eՏ Y@bHYC?0V<]X&˫AqŤFΣW-aؼh8<‚r 9:K[!IG;[-i?ѭ5i+DŽe5j Mvn&L2L@y8#iamHA ; Z: <鴃MVOlm @i\#BN4;c7qK6a5jh0isHd $]Qb,*TXpP* Ui&i&"e "YD |XgH (L*@0¬VH;@UUUUUUUUUUUUUUUUUUUUUUUOOm4F<P[u{lB'5α,"~%b4P[EUUUUUUUUUUUUUUUUUUUUUUU<X۔$>G0bgH}-&@^x Mh kvSYoMםa՝a~֝a&Mbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_groupys#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_group.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)48 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_group.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 4/29/16 05:30:52 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_group =head1 VERSION Version Number: 1.6 Last Extracted: 5/3/16 18:54:15 Last Changed: 4/29/16 05:30:52 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_group.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 =head1 SYNOPSIS clmgr add group \ [ RESOURCE_GROUP= ] \ [ ID=### ] \ [ ADMINISTRATIVE={false|true} ] \ [ USERS=[,,...] ] \ [ ADMINS=[,,...] ] \ [ PROJECTS=[,,...] ] \ [ KEYSTORE_MODE={admin|guard} ] \ [ KEYSTORE_ENCRYPTION={RSA_1024|RSA_2048|RSA_4096} ] \ [ KEYSTORE_ACCESS={file|none} ] \ [ REGISTRY={ldap|local(files)} ] NOTE: the alias for "group" is "gp". =head1 DESCRIPTION Attempts to add a new AIX group to either all the nodes in the cluster, or to just those nodes within the specified resource group. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. group [REQUIRED] [string] The label that is to be applied to this group. A group represents one or more system users who can access and work with protected resources. The system uses groups to control access to files and resources by users who do not own them. When a user starts a process, the system associates the process with the user's ID and the group IDs of the groups the user belongs to. If the user owns the resource or is a member of a group that can access it, the system grants read write, or execute access to it according to the access control list of the resource or file. A group name is specified as a string. The maximum length depends on the configuration of the individual nodes, and can be queried using the lsattr command to view the max_logname attribute of the sys0 device, but all AIX systems will accept a length of up to 8 characters. See the documentation on the AIX mkuser command for more information. You can use letters, numbers, and some special characters in the name. The string cannot start with a hyphen (-), plus (+), tilde (~), or at sign (@). The string cannot contain any spaces or any of the following characters: colon (:), double quote ("), pound sign, comma (,), asterisk (*), single quote ('), equal sign (=), newline (\n), tab (\t), backslash (\), forward slash (/), question mark (?), back quote (`), or the key words "ALL" or "default". 3. rg [OPTIONAL] [string] A resource group within the cluster. If specified, the new group will only be added to the nodes that this resource group is able to run on. If no resource group is specified, the new groups will be added to all nodes within the cluster. 4. id [OPTIONAL] [posint] A unique ID number associated with this group. If an ID number is not specified, AIX will automatically assign one for you. 5. administrative [OPTIONAL] [boolean] Indicates if the group is an administrative group. Only the root user can modify the attributes of an administrative group. This field is displayed with False or True as its value. True indicates that group is an administrative group. False indicates that it is a nonadministrative group (its attributes can be modified by the group's specified administrators and the root user). 6. users [OPTIONAL] [string] Specifies the names of the users that belong to this group. The members of a group can access (that is, read, write, or execute) a resource or file owned by another member of the group as specified by the resource's access control list. To enter the user members of this group, type in their names (separated by commas), or use the List box and select the users from the choices displayed (the users are displayed in the field in the correct format. Note: A user cannot be removed from the user's primary group unless you first redefine the user's primary group. 7. admins [OPTIONAL] [string] Specifies the members that can modify this group (for example, add new members to the group, or remove members from it) if the group is a non-administrative group. Note: The group attributes of an administrative group can be modified by only the root user; so if the group is an administrative group (specified in the ADMINISTRATIVE group attribute), no administrators can be defined in this field. 8. projects [OPTIONAL] [string] 9. keystore_mode [OPTIONAL] [set] The efs_initalks_mode of admin allows for root or other security privileged system users to reset the user's key store password. Otherwise, if the user forgets their key store password, they will not be able to access their Encrypted File System files. If the guard mode is selected, then root cannot reset the user's key store password. Allowed values: admin, guard 10. keystore_encryption [OPTIONAL] [set] This option specifies the algorithm for the user's key within the key store. This key will protect the encrypting key of files the user creates within the Encrypted File System. Allowed values: RSA_1024, RSA_2048, RSA_4096 RSA_1024 = 1024 bit RSA key RSA_2048 = 2048 bit RSA key RSA_4096 = 4096 bit RSA key 11. keystore_access [OPTIONAL] [set] The key store will allow the user to utilize files in Encrypted File System. The selection of file will create a key store file associated with this user. It is recommended that file is selected. Select none for no key store to be created. All other EFS (efs_*) attributes will not have any effect. Allowed values: file, node 12. registry [OPTIONAL] [set] Indicates where the new group's information is to be stored. If the group is being defined locally, within AIX, than the value "LOCAL" should be used. If the group is being defined remotely, on the LDAP server, then "LDAP" should be used. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_group.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 : INPUTS: $* typeset -n properties=$1 typeset group=${2//\"/} typeset rg=${3//\"/} typeset id=${4//\"/} typeset -l administrative=${5//\"/} typeset users=${6//\"/} users=${users//,/ } typeset admins=${7//\"/} admins=${admins//,/ } typeset projects=${8//\"/} projects=${projects//,/ } typeset -l keystore_mode=${9//\"/} typeset -u keystore_encryption=${10//\"/} typeset keystore_access=${11//\"/} typeset registry=${12//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -u registryUC=$registry typeset existing CL=$LINENO KLIB_HACMP_list_groups existing 2>>$CLMGR_TMPLOG if [[ $registryUC != *([[:space:]]) ]]; then case $registryUC in LD*) registry="LDAP" ;; LO*) registry="files" ;; F*) registry="files" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' REGISTRY "$registry" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "files, LDAP" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi #================= : Validate input #================= if [[ -z $group ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $group\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$group" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $group && $group == [\-\+\~\@]* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 103 "\nERROR: one or more invalid characters were detected in \"%1\$s\": \"%2\$s\".\n\n" NAME "[-+~@]" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $rg != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_rg $rg if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$rg" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi if [[ $id != *([[:space:]]) && $id != +([[:digit:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" ID 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $administrative && $administrative != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" ADMINISTRATIVE "$administrative" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT fi CL=$LINENO KLIB_HACMP_is_known_efs >>$CLMGR_TMPLOG 2>&1 typeset -i EFS_ENABLED=$? if [[ $keystore_mode != *([[:space:]]) ]] && \ (( EFS_ENABLED == RC_ERROR )) then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: EFS is not enabled on this system, so no attributes related to EFS may be used: %1$s\n\n' KEYSTORE_MODE 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $keystore_mode != *([[:space:]]) ]]; then case $keystore_mode in a*) keystore_mode="admin" ;; g*) keystore_mode="guard" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" KEYSTORE_MODE "$keystore_mode" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "admin, guard" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi if [[ $keystore_encryption != *([[:space:]]) ]] && \ (( EFS_ENABLED == RC_ERROR )) then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: EFS is not enabled on this system, so no attributes related to EFS may be used: %1$s\n\n' KEYSTORE_ENCRYPTION 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $keystore_encryption != *([[:space:]]) ]]; then case $keystore_encryption in *24*) keystore_encryption="RSA_1024" ;; *48*) keystore_encryption="RSA_2048" ;; *96*) keystore_encryption="RSA_4096" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" KEYSTORE_ENCRYPTION "$keystore_encryption" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "RSA_1024, RSA_2048, RSA_4096" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi if [[ $keystore_access != *([[:space:]]) ]] && \ (( EFS_ENABLED == RC_ERROR )) then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: EFS is not enabled on this system, so no attributes related to EFS may be used: %1$s\n\n' KEYSTORE_ACCESS 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $keystore_access != *([[:space:]]) ]]; then typeset -u kaUC=$keystore_access case $kaUC in L*) keystore_access="LDAP" ;; F*) keystore_access="file" ;; N*) keystore_access="none" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" KEYSTORE_ACCESS "$keystore_access" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "file, none" 1>&2 rc=$RC_INCORRECT_INPUT esac if [[ $registry == "LDAP" && $keystore_access != "LDAP" ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 '\nERROR: conflicting options were provided, "%1$s" versus "%2$s".\n\n' "REGISTRY=$registry" "KEYSTORE_ACCESS=$keystore_access" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $registry != "LDAP" && $keystore_access == "LDAP" ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 '\nERROR: conflicting options were provided, "%1$s" versus "%2$s".\n\n' "REGISTRY=$registry" "KEYSTORE_ACCESS=$keystore_access" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $registry == "LDAP" && $keystore_access == "LDAP" ]]; then unset keystore_access # LDAP is implied fi fi if [[ -n $users ]]; then for user in $users; do CL=$LINENO KLIB_HACMP_is_known_user $user if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$user" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 162 "Available Users:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_users available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi done fi if [[ -n $admins ]]; then for admin in $admins; do CL=$LINENO KLIB_HACMP_is_known_user $admin if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$admin" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 162 "Available Users:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_users available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi done fi #======================================================== : Create the group if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then typeset rgOpt= adminOpt=" -A" idOpt= usersOpt= adminsOpt= ksMode= typeset ksEnc= ksAcc= regOpt= [[ $rg != *([[:space:]]) ]] && rgOpt=" -cspoc-g $rg" [[ $administrative == @(y|t)* ]] && adminOpt=" -a" [[ $id != *([[:space:]]) ]] && idOpt=" id=$id" [[ $users != *([[:space:]]) ]] && usersOpt=" users=${users//+([[:space:]])/,}" [[ $admins != *([[:space:]]) ]] && adminsOpt=" adms=${admins//+([[:space:]])/,}" [[ $keystore_mode != *([[:space:]]) ]] && ksMode=" efs_initialks_mode=$keystore_mode" [[ $keystore_encryption != *([[:space:]]) ]] && ksEnc=" efs_keystore_algo=$keystore_encryption" [[ $keystore_access != *([[:space:]]) ]] && ksAcc=" efs_keystore_access=$keystore_access" [[ $registry != *([[:space:]]) ]] && regOpt=" registry=$registry" if [[ $registry == "LDAP" ]]; then print -- "$0()[$LINENO]($SECONDS): mode=LDAP $HACSPOC/fix_args nop cl_mkgroup$rgOpt$adminOpt$idOpt$usersOpt$adminsOpt$ksMode$ksEnc$ksAcc$regOpt $group" >>$CLMGR_TMPLOG # Always log commands mode=LDAP $HACSPOC/fix_args nop cl_mkgroup$rgOpt$adminOpt$idOpt$usersOpt$adminsOpt$ksMode$ksEnc$ksAcc$regOpt $group else print -- "$0()[$LINENO]($SECONDS): $HACSPOC/fix_args nop cl_mkgroup$rgOpt$adminOpt$idOpt$usersOpt$adminsOpt$ksMode$ksEnc$ksAcc$rgOpt $group" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/fix_args nop cl_mkgroup$rgOpt$adminOpt$idOpt$usersOpt$adminsOpt$ksMode$ksEnc$ksAcc$rgOpt $group fi rc=$? print "$0()[$LINENO]($SECONDS): cl_mkgroup RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$group" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_group_attributes "$group" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add group -h" "GROUP:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_group()" dm l궍Zo]yםa՝a~֝a&Fbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_hmcpys  = einst$CERS_acdhlopr"-AHILMNOT\fmuy#().1:>DGPU[]bgvw&,/02;BKYk!%3@ , pQS-䈃 a(~+v))M wb !@UΫEq="E(c7jrΫoRo4`b[ L`za5kdenSypm[wL@\jN 1Ԝ"/3FlLo2N z6A<'qgJL&0YYԊ[ A8޳(iqx[zzg*=n.aCLO LlBS1wjS{a LԔV MbaCLOa,lX5)N,j|'qgԔV Mc01ŕ-7ن[3JL'c>k&=KT,II`޶3 iō= fԔV N R|{,=dLs]*I1~`|g O5ߩ)21~,{{#m,s]1~1~P08U}|YRnV Jooa`1 *V~3پldɨU&f_33͝aLmWʵ8z R (-!3{-='c : Ǣ"&Msͦi("I}v>:*Iaf^W)555>kڭIm`zR83MsgQc2@"dQ@@WۄE] ٔ⡗췑Yf)fo<1! "C0fT6KQ4L7`PfX4 "TB#1Wee욟'f9gԜ^`KxiO[s0A R:̟wq4lUI6ɬeHϛ9=5߬ b|e욞0ԟ5ߐ&3QPYiF2v[ͲkUH4q4̣8Œ~eFYMfkY4hYg([*$XR ␌]4dY|ۃَ@-='c e~@-='cW/d1gms^hȳ1_ aMjUfOŒ6xEh*ߛd2g͜Ԟy 1=ͳz4O3>[J6mZE'6ɦFc(e`/R2Ͳk5']0&`3EȄ@(TH!4ړ117>c/|y˓3Z{jN A/ c 0i%4'<1ZA.3Z{jN ^ ^ɩ b|ۃ(D D\M{nLsk  "LAC f+K|^QU6͆;2kUH25ߎ `+AU&&#>l|~(im{ `>zj* 0m(چ_7 NyMj|<&0gQO̽H6ɬԟw<†cp̡Q "TB".*؄c+>\Rxc5'^<1@f%,DAqIMD\Ue߱ Od(M溓`?@ᛲZDK S1.,Q-eM)ml Joo P"QBo`Ԧg@zd ,DAq@|2]1Yb7>c/|x̚g3v[̚g 3%ޤY mI󁗆`z0'wB<%^f1z&oUw-fbIc/aI#qUvٌz1/ s)M Pb%J$+Jm"e[<3w^A&S1,ʑYIټ-蠑lxYI=mVL5*qM|3嗄4E2ɡxK3b foI"zڬ2j0UI0g9h,3@aTD1BE(<))RRe &xc$=$¨l83b foEcĈIjdɨU'ck "c@aTD8K3Ձ=l-蠑`N3ş&Z2Ғ-sg|f%![X1YxK@aTD6Z qfxŒAl-$CRO[U&MF 83f_ L: *PDyb%J@1RQ`]{jM~D00yM7"+<9C5V ;r/6.㧷%3mM~pRo/7Adےz[hгWnJ4hX,1c[6ɦ 1pg<KI"aÜ43kVf`0 LIpR-d/7 f D 90z5T0Pd* &ܔ hжeQg$&LA'`Pg%ZS2(3&@ mf (jk{L"r;fq0T̴ LĄɃ$e)džrUY oVoXwԜM=F͝u=iU_)4ðL]{j1o]Ilzڜz12i_řД;-i+>*eJn8v& ArzaH0RjzMG: *$DvyQ $DHon*N F0qB/j*"gA0 `,4;0^r|s? Њ&1"2ٕ'7ʦ3Rpf!qQVpf8<rdLI5Y5̫$D f@y" J, atop,(,n4 wv0c@`PH_*P() 2\@T@y" OٴdgN@((\h(wʹ>{ofY(n`P(Pi|؄N@8(\h(wYYBSeg L =6%:p@A@{ Jt6P؄ AXi|jB)eZpA@A@{mIC/( .4f|=%![Z@A@{()y"b(H=2*+< Ń|QW(چq496mmmmbU~VN 1aF࠳mmmmm' iȞ@yBaGO玆y@頊%Q' UިEȞBgI9璧"QxH JolA!‚^]HLI,,,wNDɑI"%S@I< smmb )7Fmm;\ʩwʹ>ygHx9U1 c~rUM** S(B&3!|t$LE@q䉈4RA`ix%QԎ2T2#Yf)fMJxdb =`/hx է"zdȤ)($&YbOwĈ@\H92&$$F,5̫eTPY;0ۢzi z %yTDJ P &_,E4-y"b(M!`0cKQ*w5ɧz"goQc{t%9eƁ!Αq^#q.eTPY C9"P򨢁"PHLĞLr˙U6{13m>O:JL@I ʔ(`Xec":8/Vpf)O*l\- yR,Ca`k.PSR{qP8G9%![[]wh̅<1SIǒ&"dK F]K B%Cz1)M !$DC qfxRzن[?U Ǚ).\hax4< w;=wMmm/dmC/wMmm',DDW()te욞** 3/dqF⢠k.,DDQ{1 gN^ɩE PrÅEBQPowI2K8DQM$ gH)HE,V4PEl-Ym"0[UuQYc/mϛ՛$4.7 .4 :EƅxAnhEV ,o.4piq-m3(N] 0i^#qN^ɩƊ cPcV(yTQ@ɑ($&YbOwb$*&Z8{&wؓX4 ]bwMmmͳzmC/wMmmi|P,A3ʉ-]:9;mMVMFx7cmljj3Ǝ y "Le Q{1 g6m5Y5E PrÅEBQ^k.ZM:Yǒ&"i [8DQLB)`$(D;f/o2oګڊ{o|ެ޷Ɓ!ΑqQqH0.4,0Kb pF*ig{yqK`[fP3x` ļFNmljj3 PC9"P򨢁"PHLĞP,A3ʉ-Nmljj3w;IEȄpñ‚$D ( Xv U%!է*x<<E2ĉXd_U&To'0WzOzi z %yTDJ P &_,E4-y"b(M!(KQ*vaH0ćU -Ɓ!ΑqgxƜ@@4< wjӑ=4D.{1 c~sJJC,)) ݸ J*QPTTw璧"QuXMi4fBgH)lE2i@^("TC A͞O$=$¨fo.4 .t<0Kn4LrcV(yTQ@ɑ($&YbOw !N iFy)) +=Fb1A mmmmmmmmm] J{J6ŃxŒAl-G mmmmmmmmm]PVsj螘@yBaL,,w1 gJ{" (PP:M(ÅEBQPo5()y!4 eHvJ$xTTw璧"QuXMi4fBgH)lE2i`nQ*w5ߤD-N DŽ=Fm~a8:PX5)/mZr'DQE&DgA ڽ'&PPS ]wMmmmmmmmmm(MBSQ om.&X7mmmms^n 0"%(TA s]YYwwWf1zg2'f,2޳ō &mmmmwʹ>zDK P WePӋ+?s 8 e7;T"UMVc8 BfN,BoN,Lr@Q$D <<E2ĉwPkU5Y^1 Lf]8 8=2C"YDK8M$Lhg I 0"UwDp wM3ƪSUa5Ӌ+?:PӋ+?83$<-"%(TA,B%9UިEH)&$Hc UwD/ ]w<g(U woP"w1y@頊%Qpo56.{{"YjDK p9"%KΔ&f/wؓmmmm;~XQ oox c3m6!))"YYwwak=FϖdɓQM&5߮ePNVōA~%=YY," jDecM"~1՜!3zP'3R,,eg0j/ c 7~P lŃ|eJ{&8bg5߮eWmmmmmmmmmm'(TA:9eg O]w[貳؄ e璧"Qpy" N mmm]P SbA w91g6n鉔*|]mmmmmmmkò&8؄(MBS-ZN,jx&=UިGR{öbgL,M6>,HxK\ʮ mmmmmmm1 c~tYYBSpΔ&!)⢠k.(+8L3p,,w6@z * wI"$Bp*'7wd]jx-A:[UHI;cU]S\ʩbgLc0ŕH&P ! g@z * 8@A2Dy"b(X".UwMs*1՜!3ikV~q"$Bg&zd%A&Pi eC8HzIQwP'Ӏ[n8v5UިE5̪/Vpͦ3 YYĊoVoY6mmmmmmmy@頊%Qa`k. mmmmmmm;yE~@ qgUrPag;&mmmmmmmmmmmmmm]7)lie&k L`zwMmmmmmmm6*2NjwXSNjuₘ@@*+ īSqq*ts=2CALp,DDb ̫Sqcp8UѸ"MePS@!*&P*+eZW;lSq"dB TLaP,A1 b UѸX:7r(D PSIC/Ep@#4Uѣp8jtn8q=e]()CH **+EZ7N5$=$¨ sn8v4XPXĈ@QP@ aE\ʹ*ΙVseZjg*hSy"b(X".UYs*DS:eZ͕jg,UhS9MNniFxӁaAb"QEBIʔH,;UYs*DS:eZ͕jg,UhS9OmZsj<1S,LHQ'ʆȾ&L#LM(+9p"螚BgIaa`k.<8+&_,E4-y"b(M!`,7^("TC A͝EˍCK"C ļFN L Hn;iȞU=6mmmmmmme45ŕ-`züvaYYeRiJ{&5̫-Fz&mmmmmmm‚WD<K ]w b* X7mmdeeg6mk2P#P uwʹ>yBNNf|{EZju6bB g]3m>Ox(Pd wM3Ɯ 8**rHTAaڬ1)Bo%cp$LE$TG ǰ2l2/ɓ*Eg&(,gN U%(M䳒"Y8cNHD  9$*PA V7Hd6է6<<E2ĉq n[ dʑ[m4PVsj螚BgIy-牢 &@#x(Pd 7Y,d 8 Y= p&@@E L31{Ą@A2J,d p8LH@yd L y ! ;N5 wNY=!iFxӁaAb"QEBIʔH,;UW&抵<Z<<E2ĉw*74U*ڴg8(q"%(TT(Sz͸&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_interface $address if (( $? == RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$address" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -z $network ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" NETWORK 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_network "$network" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$network" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 150 "Available Networks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi if (( $rc == RC_UNKNOWN )); then if [[ -z $type ]]; then if [[ -n $network ]] then typeset -A nw_props CL=$LINENO KLIB_HACMP_get_network_attributes "$network" nw_props [[ -n ${nw_props[TYPE]} ]] && type=${nw_props[TYPE]} fi [[ -z $type ]] && type="ether" elif [[ $typeUC != @(E|XD_D|XD_I)* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" TYPE "$type" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "ether, XD_data, XD_ip" 1>&2 rc=$RC_INCORRECT_INPUT fi [[ -z $node ]] && node="$LOCAL_NODE" if [[ -z $node ]]; then node="$(hostname)" node=${node%%.*} fi [[ -n $nw_interface ]] && nw_interface=" -I $nw_interface" if (( $rc == RC_UNKNOWN )); then print "$0()[$LINENO]($SECONDS): claddnode -a\"$address\":\"$type\":\"$network\"::: -n\"$node\"$nw_interface" >>$CLMGR_TMPLOG # Always log commands claddnode -a"$address":"$type":"$network"::: -n"$node"$nw_interface rc=$? print "$0()[$LINENO]($SECONDS): claddnode RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$address" 1>&2 fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_interface_attributes "$address" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add interface -h" "INTERFACE:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_interface()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_interface =head1 SYNOPSIS clmgr add interface \ NETWORK= \ [ NODE= ] \ [ TYPE={ether|XD_data|XD_ip} ] \ [ INTERFACE= ] NOTE: the "interface" may be either an IP address or label NOTE: the "NODE" attribute defaults to the local node name. NOTE: the "TYPE" attribute defaults to "ether" NOTE: the "" might look like "en1", "en2", ... NOTE: the aliases for "interface" are "in" and "if". =head1 DESCRIPTION Attempts to create a new interface object within the cluster that conforms to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. address [REQUIRED] [string] The address to use when creating the new interface. 3. type [OPTIONAL] [string] The type of interface being added, defaulting to "ether" (Ethernet) 4. network [REQUIRED] [string] The label of the network to add this interface to/within. 5. node [OPTIONAL] [string] The label of the node upon which the IP label/address will be bound. Defaults to the local node. 6. nw_interface [OPTIONAL] [string] The network interface associated with this interface (e.g. en1, en2, etcetera...). =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  k4\o םa՝a~֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_clientonl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_client.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)90 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_client.sh, hacmp.assist, 61haes_r714 8/6/13 16:54:51 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_ldap_client =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:41 Last Changed: 8/6/13 16:54:51 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_client.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr add ldap_client \ SERVERS=[,] \ BIND_DN= \ PASSWORD= \ SUFFIX_DN= \ SSL_KEY= \ SSL_PASSWORD= \ [ PORT={636|###} ] NOTE: the alias for "ldap_client" is "lc". =head1 DESCRIPTION Attempts to configure one or more LDAP clients for the cluster to use for federated security. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. servers [REQUIRED] [string] The label of one or more LDAP servers that the clients should connect to. 3. bind_dn [REQUIRED] [string] The administrative distinguished name for the LDAP servers. 4. password [REQUIRED] [string] The password to use to contact the LDAP servers. 5. suffix_dn [REQUIRED] [string] The suffix distinguished name for the LDAP servers. 6. ssl_key [REQUIRED] [string] The full path to an SSL key used for communications. 7. ssl_password [REQUIRED] [string] The password associated with the specified SSL key. 8. port [OPTIONAL] [string] The port number of the LDAP clients (defaults to 636). =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_ldap_client { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_client.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset servers=${2//\"/} typeset bind_dn=${3//\"/} typeset password=${4//\"/} typeset suffix_dn=${5//\"/} typeset ssl_key=${6//\"/} typeset ssl_password=${7//\"/} typeset port=${8//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -z $servers ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 242 "\nERROR: one or more LDAP servers must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi #================================ : Check for all required inputs #================================ for PAIR in "BIND_DN|$bind_dn" \ "PASSWORD|$password" do typeset ATTR=${PAIR%%\|*} typeset VALUE=${PAIR##*\|} if [[ $VALUE == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" "$ATTR" 1>&2 rc=$RC_MISSING_INPUT fi done if [[ -n $port && $port != +([[:digit:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" PORT 1>&2 rc=$RC_INCORRECT_INPUT fi #=============================================================== : Define the LDAP client if no input errors have been detected #=============================================================== if (( $rc == RC_UNKNOWN )); then typeset port_opt= key_opt= keypw_opt= [[ -n $port ]] && port_opt="-p $port" || port_opt="-p 636" [[ -n $ssl_key ]] && key_opt="-S $ssl_key" [[ -n $ssl_password ]] && keypw_opt="-W $ssl_password" print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_ldap_client_config -h \"${servers//+([[:space:]])/,/}\" -a \"$bind_dn\" -w \"$password\" -d \"$suffix_dn\" -S \"$ssl_key\" -W \"$ssl_password\" $port_opt" >>$CLMGR_TMPLOG $HACSPOC/cl_ldap_client_config -h "${servers//+([[:space:]])/,}" \ -a "$bind_dn" \ -w "$password" \ -d "$suffix_dn" \ $key_opt \ $keypw_opt \ $port_opt rc=$? print "$0()[$LINENO]($SECONDS): cl_ldap_client_config RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_ldap_client_attributes properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add ldap_client -h" "LDAP CLIENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_ldap_client()" ACMP k6]o*8םa՝a~֝a&*8bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_serveronl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_server.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)32 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_server.sh, hacmp.assist, 61haes_r714 8/6/13 16:54:52 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_ldap_server =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:41:43 Last Changed: 8/6/13 16:54:52 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_server.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS # Configuring one or more LDAP servers for the cluster clmgr add ldap_server [,,...] \ ADMIN_DN= \ PASSWORD= \ BASE_DN= \ SSL_KEY= \ SSL_PASSWORD= \ VERSION= \ DB2_INSTANCE_PASSWORD= \ ENCRYPTION_SEED= \ [ SCHEMA= ] \ [ PORT={636|###} ] # Adding one or more already-configured LDAP servers to the cluster clmgr add ldap_server [,,...] \ ADMIN_DN= \ PASSWORD= \ BASE_DN= \ SSL_KEY= \ SSL_PASSWORD= \ [ PORT={636|###} ] NOTE: if more than one server is specified, they must be in a peer-to-peer configuration, sharing the same port number. NOTE: the alias for "ldap_server" is "ls". =head1 DESCRIPTION Attempts to configure one or more LDAP servers for the cluster to use for federated security. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. servers [REQUIRED] [string] The hostname of the LDAP servers to be used by the cluster. If a replica, referral, or proxy server is used, a comma separated list of the respective hostnames is required. 3. admin_dn [REQUIRED] [string] The LDAP server administrator distinguished name (DN). Examples: cn=admin cn=administrator cn=user. 4. password [REQUIRED] [string] The test-only password for the administrator distinguished name (DN). 5. base_dn [REQUIRED] [string] The base distinguished name for the LDAP servers. The suffix, or base, distinguished name (DN) to search on the LDAP server for users, groups, and other network information entities. Examples: cn=aixdata o=ibm. 6. ssl_key [REQUIRED] [string] The full path to an SSL key, to be used for communications. 7. ssl_password [REQUIRED] [string] The password associated with the specified SSL key. If a password is not specified, it is assumed that a password stash file exists with the same file specification as the SSL key path, but with an extension of ".sth". 8. port [OPTIONAL] [string] The port number to connect to on the LDAP server(s). Defaults to 636. 9. schema [OPTIONAL] [string] The LDAP schema used to represent user/group entries in the LDAP server. rfc2307aix - Sets up the LDAP server using RFC 2307 and auxiliary AIX schema. It is recommended that you use this schema because of its interoperability through RFC 2307 and full AIX attribute support. This is the default value and not editable. 10. version [OPTIONAL] [string] The version of the LDAP servers. Must be at least 6.2.0.0. 11. db2_pswd [REQUIRED] [string] The password for the DB2 instance, which is always same as the TDS instance ("ldapdb2" by default). 12. enc_seed [REQUIRED] [string] Alphanumeric and length should be minimum 12 characters. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_ldap_server { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_ldap_server.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset servers=${2//\"/} typeset admin_dn=${3//\"/} typeset password=${4//\"/} typeset base_dn=${5//\"/} typeset ssl_key=${6//\"/} typeset ssl_password=${7//\"/} typeset port=${8//\"/} typeset schema=${9//\"/} typeset version=${10//\"/} typeset db2_pswd=${11//\"/} typeset enc_seed=${12//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -z $servers ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $servers\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$ldap_server" 1>&2 rc=$RC_INCORRECT_INPUT fi #================================ : Check for all required inputs #================================ for PAIR in "ADMIN_DN|$admin_dn" \ "PASSWORD|$password" \ "BASE_DN|$base_dn" do typeset ATTR=${PAIR%%\|*} typeset VALUE=${PAIR##*\|} if [[ $VALUE == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" "$ATTR" 1>&2 rc=$RC_MISSING_INPUT fi done #============================================================== : If the VERSION attribute is specified, then the customer is : configuring a new LDAP server, not an existing one. That is : the only operation that requires the VERSION attribute. #============================================================== typeset -i newConfig=0 if [[ -n $version ]]; then newConfig=1 fi #==================================================================== : If configuring an existing LDAP server, the SSL info is required. : For new LDAP server configurations, it is not, since the SSL key : is automatically generated. #==================================================================== if (( ! newConfig )); then if [[ $ssl_key == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 '\nERROR: this operation requires the "%1$s" attribute.\n\n' SSL_KEY 1>&2 rc=$RC_MISSING_INPUT elif [[ -n $ssl_key && $ssl_key != /* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 '\nERROR: the specified path does not appear to be in absolute format:\n%1$s\n\n' "$ssl_key" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $ssl_key && ! -e $ssl_key ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$ssl_key" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ $ssl_password == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 '\nERROR: this operation requires the "%1$s" attribute.\n\n' SSL_PASSWORD 1>&2 rc=$RC_MISSING_INPUT fi fi if [[ -n $schema ]] && (( ! newConfig )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 37 "\nERROR: option \"%1\$s\" is required when any of the following option(s) are used: %2\$s\n\n" SCHEMA VERSION 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $db2_pswd ]] && (( ! newConfig )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 37 "\nERROR: option \"%1\$s\" is required when any of the following option(s) are used: %2\$s\n\n" DB2_INSTANCE_PASSWORD VERSION 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -z $db2_pswd ]] && (( newConfig )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" DB2_INSTANCE_PASSWORD 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $enc_seed ]] && (( ! newConfig )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 37 "\nERROR: option \"%1\$s\" is required when any of the following option(s) are used: %2\$s\n\n" ENCRYPTION_SEED VERSION 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -z $enc_seed ]] && (( newConfig )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" ENCRYPTION_SEED 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $enc_seed ]] && (( ${#enc_seed} < 12 )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: %1$s must be at least %2$d characters long.\n\n' ENCRYPTION_SEED 12 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $port && $port != +([[:digit:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" PORT 1>&2 rc=$RC_INCORRECT_INPUT fi #================================================================ : Define the LDAP servers if no input errors have been detected #================================================================ if (( $rc == RC_UNKNOWN )); then typeset port_opt= schema_opt= version_opt= key_opt= keypw_opt= [[ -n $port ]] && port_opt="-p $port" || port_opt="-p 636" [[ -n $schema ]] && schema_opt="-s $schema" || schema_opt="-s rfc2307aix" [[ -n $version ]] && version_opt="-V $version" [[ -n $ssl_key ]] && key_opt="-S $ssl_key" [[ -n $ssl_password ]] && keypw_opt="-W $ssl_password" if (( newConfig )); then print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_ldap_server_config -h \"$servers\" -a \"$admin_dn\" -w \"$password\" -s rfc2307aix -d \"$base_dn\" -X \"$db2_pswd\" -E \"$enc_seed\" $key_opt $keypw_opt $port_opt $schema_opt $version_opt" >>$CLMGR_TMPLOG $HACSPOC/cl_ldap_server_config -h "$servers" \ -a "$admin_dn" \ -w "$password" \ -d "$base_dn" \ -X "$db2_pswd" \ -E "$enc_seed" \ $key_opt \ $keypw_opt \ $port_opt \ $schema_opt \ $version_opt rc=$? print "$0()[$LINENO]($SECONDS): cl_ldap_server_config RC: $rc" >>$CLMGR_TMPLOG # Always log command result else print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_ldap_server_existing -h \"${servers//+([[:space:]])/,}\" -a \"$admin_dn\" -w \"$password\" -d \"$base_dn\" $key_opt $keypw_opt $port_opt" >>$CLMGR_TMPLOG $HACSPOC/cl_ldap_server_existing -h "${servers//+([[:space:]])/,}" \ -a "$admin_dn" \ -w "$password" \ -d "$base_dn" \ $key_opt \ $keypw_opt \ $port_opt rc=$? print "$0()[$LINENO]($SECONDS): cl_ldap_server_existing RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_ldap_server_attributes "$servers" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add ldap_server -h" "LDAP SERVER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_ldap_server()" port ! l^ouHםa՝a~֝a&,bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_methodr   =e inorst"$R_acdlmp/1:CEGILMNOST[\]fghuvy#()-.2>APbw%&*,0;DU!'345G0(⊰ȠDL HE5Y6.g lp p &(p]`' `I55UUUUUUUUUUUUUUUUUUUUUUUM ^nynb;[]ϾjVm 5ZX3ivkgy&902j Jpf8Sr9@@YQMA!aHj 4& HρD@0"“Not7<#ܦ>CWZ P@b'قӰFxb"8! `t L@0X8_G$8=Yֳ+M@P J Z yÃb9j,/& Hs[$:``B)ɱs99j,/G$TBmnd?&u+"g3ŊŊ` `,`8nEIOqGP,ŀAH0 EI`0}`+^ԕr6z QTPR)w p( HtSQebr 782LAg' ,kh娰LRZU7EعMuppfG!<,X#jKfHb X̷Uv Qe.g 1s9]A+\?0":\\ha@NA%3N^ JR:)+30Oy@qQ,@:+37AUv Qe.g 1s9]A+\?0": R "XBt-rV.fn GP`vj /iro42KP \SY."MEA*[\Y|CU%9e-aSൄ@k xx4444g0F~g0X!% ~eɔ,8g3jbr !Z Zm kD';a˜5cjN7؞33NٜRzyEs3rַ&mWrM|Z9j,/HxDeݘrˤ8B$38qF[ IJ IF*3~&qʜRjj @Rv ZQ񹝋nprT]{k[Qˤ8B$32/]A+_'\^mǭ㥱s9Z }ˤ8B$3gپ.g 8bWRvk[(ې|&GL29 > rW.PDqs͙oXkع[rV.fnKf0<`kru+;80ܪ7o;X5ӗC"A!9uʓ8eNA%4'u+lH3 kpEgHpH$8!eɔ,@ 8̷Ճ梳P MxnIOGŽ_Qer7eCwX{nC{=oP0,Y2`q<ٖ9}*A|r׾q* @n&r|Td Yr%& G%(Xqs͙oc \R|^MƜtu+oj0`1t"!nx.PDYDe 9va'>f[X:ǁnbÕng/|&NUIĬ#ysY kq`nbvyr%& G%(X˳ 92/a@Ecy< r`QS7rM~%f͸o:k[b P (He_3Y/z|s|^zNUIׁ* z݂6٨$朽*MIX zښޣW^ ,(U ]QR' kr;rRV.f`%w EH9j,/Hq`D3|;abwֹڳ_n*M~,ڑ8g=xU[]}EaધcYpNLڮ4[bBt X]m%yzq@kn{'g-JNy@Pbvmd5%1gjn`Fֶm[? OEқp3S6:jES MS?kh娰iA9"h҂ rDMzJ*qϹcaCpp8  N6rrҹ\OZm*vmsk( 5kkAS[4u~遂I&& Lq2聂Ht,)xN8D#H댝XT 8RQV遂I& nC 7Q8 ,x8 A؉&*3D7+rEgٹ\ pF gٹ\fH(67+ZD 0M>rH@HF gٹ\`H a@NNq3Z\EgHJQY mnW>[*D@P'7?s9oϳr*DF NNq3Z\7+O (? n4br K>fs.gHB…@P'NNq3Z\7+(HBŊa@?s9k˗D"PxX ŬfL_+ =s⢷Tc;CS˗ZU&TV23}Q}k/mq}N^\20ɐ 7љof ᆱGeW!Rs*N*J0!Ln*J00Fy-{9{GeW!Rs*N*J0!Ln*J00Fm4&3,q.g/]ҟ\#;[˙'Zc|?R+7f>pUwJGm j^<ܻ떴7z{j-`'x %`+R|&r|剹ux"yA1;(zf0<寙'yra 7+T"""Q" G,Vo൦u|ր-ie5`+|րV 2-ie5ઋ Zk@MT]֙S^ jW֚zkUMX0;o൦ulBw൦ޜmN-ie8e{൦ޜmNV 2:vN:vSV 2:vzjWgYMx*t5&ׂ.:vS^ jWt5&ׂ.av:vS t5&lBv:vS jWӴրӍ jW["us@ր"uՃ s}NZoMX0;oe5QMFSQe5`+*tm9\O9[MET:sPGUw q&oic^VӔԝn^VӔԝnV 2iG.;jVMh 9 ok:@zgj_Ӵ(=qM|fzn|&VV4iqRnV 2ڰyN7(]omX<Ӎ[MEAjޭ`N6nP;m56X=e"}`N6nP;m5`+jm8ܠv*jWr`Ճ8q@Ukڒjm8ܠv*qIZfjm8ܠv*qIZl)Ճ8q@Ukڒj)q` MX0;ڰyNpf 5#6׵%i676+NWVQe׵%i@>z⚋-MgHMonP;m9MIjQ7(5N(vavM؁MEA&b5`+؁Lս[oMZqI[q=qMh q=qMh 5`+򸞸Ԍ8ܦfav:vԛnRnV 2'Nbniq7i^m+iq7i0Ԍӕſ򚑚gVbNWpe3FVڃ[UUUUUUUUM.唝{'f𚪪oeF/Eˌ*+c ̙9oo'[vnQsaX!%aZE!&4IY2B%ioT%g@X&Pg=ooehHcZ (qeEla!h|Qr$ʊ&B-{E 9▓,H-II2h"HzI*<,hx([@,20oN6Ygkf9U&?br H4= Xx,9"KI$o $QŴF$=$Wr;rx(Yda%B""%,8 4q2PŇÛi@҉$8ido7h>˗|uX0(qeEla!y g-|R$J "2m óZo6:.4'ԍ{&Z7+T>;Qu|&j^ oG|BE`?Z ._CESkhuX0Ƌ൘8,;mo-P>֤T/փƑH&8L ML|ޛ"-ha△žuuXx ZCS*4qRXX?{"Q$ ,b!Qu|&j^((IbFh"HzI[DiCLQq`E@,20.[=FY#.S04|1asփq(+u]7kfuaa`g-vQ$ZL#xdF$=$ʎ-4!&H$^KN \y7gٹ\(^4"D1`  4kSMZyG.PR Jr /eA0~~Yr r /eqOk.2L2d/2d彿Ϟt;@ \ aEˌ*+c  i4וƲU梳ZEˌ*+c ̙9oo4)kI$o $QŴF$=$W0$Q!h z+3dix (L`8Du>qXs"Q$ ,b!4ƲlrZEˌ*+c ̙9oo4)kI$o $QŴF$=$W0$Q!h z+3dix G,W,n4 oURcJ$ᥓ LD"Y\k.2L2d/2d彿H$HL&X2Z#HeGD$Ty\p$Dh$6?į;+[tha6L@q\": Xx,9VHjd (CL1fs[Yr1 .\dQ[d^d?{ƑH&8MUZL#xdF$=$ʎ-4!&H1I"  FHl(?^vV&#$L[ ̙9oo-H*{&}ωFg\3:orccsɜ QdQ'orcf.g3|3:C 3sAϞ8(,$HLJP@X0@"X]=q b!-AJC ~a_F EX>j+3a"iل0 FF%3(D,HDA.&kެaG&K"TRn8cF- ŴZEZaa=U梳C00ւ&oz|1(љFfNoU@ Ϟ*њ1U <=II2ĄH8j znGW[XPVUZPѣ[i9$$GeBNx7KDiCL#Hd+x(Ҏ^ XړfLAPUbk%'*,0-AHM Py4l"l$uvBzwbe&@ ,[$ Ȋ$(LLAA@H0 "*Px(889]W0FQۚƦۮ`ƣ95M\ZK,Dk.4($>+VM/'Wd'TDǤPyR+`Uj P+)@ PpprwbDX6!&r"f&bf0]bɐK$V$$2" ( $Px Ȋ$ WU2ѩg6汩1mcSm@K.2cK@1"IH$0N=MO0!ѥuqZ\!3!F!g+D_0HnѥuY5ngOD_CqcE!QƨkMHR-CXQqÁyiLC.X.˰ D`e. !B/#C,K=-S@pX{ƻIGe4"HzkH$IMbEG\1vbqv]08Pi `+ns:~8H,=1h& Q4D E? Vr9 n=iB[ґcC`s*r]ɶbdi:) KP2 /\yⴄ N BrZQƨkLB@kLiX4xkuR3X(jl$az8ns(xkgQMRD-S@Sp4N =Bg ΢K4NN=MOh:,`13ewz Z\'UQ'ijr|t[iGe4"HzkH$IMbEG痒IQ1281c8.ã11<8.x<] <8X/$LbqPɓ7i0jo</"iU esXcJ^Gp Š+&DI&(*Y Qc-&,1 035ecݓhhSpƻIGe4"HzkH$IMbEG0^xe֡nA/#Aa!HW\eqf`HHHL "@ X&!E*u,jm5/Wf26  @"@J1 8hhoE4+^,,B*HbQ@AUCuUnt?/$LbqPOaSuƕmύ97]~k6#Ap/ FznKF㄂3h@%M$K,@gkhkqSA$Th"D$Ty\p牜^,,1Cgi Py Pj$H 0ƕZlF 8ʸCf$m$ LaP2$=5[A$"(iLCmŹg!CӜ3-y33-aەr iyH0!Сy#&PHX/$LbqPɓ7i0jo</"dXU`i^y!%s5ngO f-X4J&HX1AR3&uh:;3#$S-tY_UQ'됤+edłSBėjy,<? Щ!#$ ʱ]ƋFCXP2$=5[A$"0 $(xr?isrd- A!CËȼ/ZM Up؅C0{S hIqf`В=qf`QL`0ܩVnT+ V; }tY8ՋPm꫅賲q۵ c>aUg!3{K=);#{K=E44N=Bg#$}tYŹƧuUtYŹƧlPb.{L)ѥuwxC N7Hչ TGI)賓sN꫅賓sN6{"/b@ƚ c>aW  V^0{SmX^lBϡ=)#JUW 7*Fgƫ70nfZj _U\,/64bvoQL`qxhbva{k@%U۵o c>aW  b}bvF؜E1Bp0L꫅Bglݫm/X=) 6?U\,/i!g} ʑa*꫅#JU‡DEf/U4g͹ۮq3ɾ2q۝3k-Kb]ݿ&p XTL'7 ?\!\ # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_mirror_pair =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:41:52 Last Changed: 10/24/12 17:26:21 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_mirror_pair.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr add mirror_pair \ FIRST_DISK= \ SECOND_DISK= NOTE: the alias for "mirror_pair" is "mp". =head1 DESCRIPTION Attempts to create a new mirror pair. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. pair_name [REQUIRED] [string] The label that is to be applied to this mirror pair. 3. disk1 [REQUIRED] [string] The first disk in the pair. 4. disk2 [REQUIRED] [string] The second disk in the pair. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_mirror_pair { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_mirror_pair.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset mirror_pair=${2//\"/} typeset disk1=${3//\"/} typeset disk2=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset existing CL=$LINENO KLIB_HACMP_list_mirror_pairs existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $mirror_pair ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $mirror_pair\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$mirror_pair" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -z $disk1 ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" FIRST_DISK 1>&2 rc=$RC_MISSING_INPUT fi if [[ -z $disk2 ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" SECOND_DISK 1>&2 rc=$RC_MISSING_INPUT fi #================================================================= : Create the storage agent if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_create_mdp_director -s svc -n $mirror_pair -d $disk1 -D $disk2" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_create_mdp_director -s svc -n $mirror_pair -d $disk1 -D $disk2 rc=$? print "$0()[$LINENO]($SECONDS): clxd_create_mdp_director RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$mirror_pair" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_mirror_pair_attributes "$mirror_pair" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add mirror_pair -h" "MIRROR PAIR:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_mirror_pair()"  l괊boRםa՝a~֝a&3bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_mirror_poolnl    = aeinorst"$_cdhlmpu#-ACEGILMNOPRS[\]fgv(),./12:DTbwy%&'0;>BHKUVk{}!*34@T<'E@8]2@㇔.Q%9i1),Eq gfN 4zGU󃖦7/90_ܐ8ўљҳuzGU󃖧# qM=1勁 dW.%-"S(Մ_L|v"  Fc[1֙>6&r2>wƸF3g3QܝqhU\8>S`;hh̐8E&XD (8ј H@*Uɮx@ r@I(4$\@(n5 4Mg:BQ @%0 !W>@T<'E@8]2@㇔.Q%9i1),ECp "Cq$IʸP x ,DCq  ˔oHp-덎X>.sbRZ @<*>,HP6xUa}u!@-mԅtBB:V]YMǞMՄh xy­[^J> Ph[QvGuI5^6xUa}wP^)U*,N xy­oZ#ɔ"a"e$Twz x̴V7&Mܳ/[2%57# @>«>wwwwwwwwwwwwwwwwwmjϟ4,o#W|BF 0rʼn!wwwwwwwwmNZ :]w4k9i1)-8 >8pCBsbRX<<ӆ@ 8oh"&xPkpFÓxÁÀΪ-Md 6#ɔ"a#$4G(DE 3& 7 0%/=yM"}AM5]7'WΘGp A!FUru|)ʏ}j7+t 6bD7ӔV7qh"'9M&%%D('9M&%%8h 4XӁT1h$E,ʲ٥d9:/+Uru|>o\7><L ,PaM0L(HT [Y7AAG7E(EGƯSNKF<&@'9M&%%;)ax3$"{ܚUru|wEMroيzRS_F5PLI yBi0d<<6lNg`NcdG@!~cdGCAJ/ob|k :ru1W;os޵'k": ;(N5qAv*<$Hpz{.Ɏ2f bpqtG(DC(8 ࠣkJQ{M0#ɔ"a"HXF@JB'B ˿;)S@ 7V#Ɏ2e @ kij*[_UU_sS(Μ*.>vPy2L$謅e_7US^"yN5lqtDyA3qDPp9Œ,~T|j4jϞJm;)ax3$"6#%Ɏ 3`h4蟒̮NL8 >X"TN N&H2@㇔.(N2KsbR[A9i1),cw G d '7A0DS^,H ?%]b ̮NL0XU+#ӓ,Z!CYޑɖ;j=$ T&HyɊ7y;D" PGTfWzG&XIլ*_MOfWzG&XC>yɊ7sFB191CFE (BF 0rʼn8(ÀΪ-덆 '&c[> ;):!C瘜,a"2p<<4? 5$FWcMGg`NIɘ<01J/oaz$pm0`,L IJ0cip_ER S?%]ɖt(twV]YlUQeE8T888AZ !,H75==y),ḪNL8LNDI5d"NLQ$ T&H,U9,NLF?%]a @ oӴLH#&I""";ѬltWuUonW[8f}OAt̆QAxcpJ0ci,U`R!A>,Uh8p` jI;5qAg HWMGg:5Ʋ#n}Y«<08A`%5Ʋ#杢`zD,`*\"(o5;5/MɪIwL'8 d*[>PQew 躂M$ܚIQdtxǪyObT`}#W|5d"zz+) GUÓ}9ONK7sFѥe7zKI7Vp hҲ=% GsFÓxÀ>4Ii&Qi8qUok$^L  )yba(UܲU{Fk.zx\p?:S%p]^5>Ղ޸Q4g^5p K~Obœ"vS]Մœag4g9ryMwT7tTtqWg;,zl<џ\YIjfdx"{'>LXS:S%U2ƴguj8D즻 Gt$э>k)$( $LQZ3ؒ5x 5<   TqB֌$^O59(   TqB֌$]l   TqB֌hY0ު^Sؔf}U8D즻 G:g¼)bk.z}e 0VvS)Q?L>n%QWMwVU@⥋$eNxSfQ?XSa*<;VνfoŝNSE,/vz^F4OuUÏ?NkC|} rQ~VgSbP^&kWWSWzs4{FlҲ]󦤸ʺ>U-W;<آo џ*GQ>*>)򎻣%ZL+7'WgwV f3uYYs˪́K2HGXJ:ҭ٣UP93.X⢂Xn2y(¼)v7VWWh;)Q™8bI_xGShZWtvy"vS]Մ+NBzU!1>rљ(h%e4cFe ւ_YEљՙƂ_C݅U*=N_'zїwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwm:S%GxQX6j <|YYlD kmWA  L9 x IxNrLJK5ܠd*XFZ5==) SIIl bRY(wsmEJH=.nm<2Hxi f`ARL`44888YB 2 ,VŠSiMMGs+Wo[=ṷ\U%0$堦}2nĵṷP΢ Bx4;o[Py(bℋLj"x~'9N=% ks%%z 5g(ɚrAx3@$堦}2nij qQ qQnP^)U,4X"G9g8E_˿Ax3Lya5_#Mg+;)U^)-[4~vSAx3MxNr"x;U=ܳfW~4*GzВI5_]Ҽe^o^),M$ܚIQdty *8#S2Ӂ>U~H<ܚՁqgU] b> uUaM# nMW x3y2sY UPC0@P"`[ĸ|)|ߨ:@gU_ɇՄӬ\}C@Kvy|ܶSu9&3n"%N`9fiROWx *zree8ʸf*7Iwx fz"5ŝMxRHI.Gp u8E9NoN#Kpp%K0{b}8ʻT)VKwFt{AgZjf 2S|NI ִeFb;%"x7NKZIV]Ӭ즛"{]5)*Vh oRz;zNآ* .*{U~}3ު;}U~!YOqs**p-_e7їwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwmn[ :ppϠFpF´x,ѝ\*4Z UQ, h̄Th˻q.dŁ=ڋAJ`Nâ\*їwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwm(P2Z kj!co.םa՝a~֝a&.bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_network#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_network.sh 1.13 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_network.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_network =head1 SYNOPSIS clmgr add network \ [ TYPE={ether|XD_data|XD_ip} ] \ [ {NETMASK=<255.255.255.0> | PREFIX=1..128} ] \ [ PUBLIC={true|false} ] \ [ UNSTABLE_THRESHOLD=<1...99> ] \ [ UNSTABLE_PERIOD=<1...120> ] NOTE: the TYPE defaults to "ether" if not specified. NOTE: when adding, the default is to construct an IPv4 network using a netmask of "255.255.255.0". To create an IPv6 network, specify a valid prefix. NOTE: the aliases for "network" are "ne" and "nw". =head1 DESCRIPTION Attempts to add a network object that conforms to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. name [REQUIRED] [string] The label to apply to the new network. 3. type [OPTIONAL] [string] The type of network to create, defaulting to Ethernet (i.e. "ether"; see the HACMPnim ODM for all types). 4. netmask [OPTIONAL] [string] The netmask to enforce within this network, defaulting to 255.255.0.0. IPv4 only. 5. prefix [OPTIONAL] [string] The IPv6 prefix length to enforce within this network. 6. public [OPTIONAL] [string] A Boolean-like flag indicating is this network is public or private. 7. unstable_theshold [OPTIONAL] [integer] Integer specifying the event threshold for network stability. 8. unstable_period [OPTIONAL] [integer] Integer specifying the event period for network stability. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_network { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_network.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset name=${2//\"/} shift; shift typeset type=${1//\"/} typeset netmask=${2//\"/} # optional typeset prefix=${3//\"/} # optional typeset -l public=${4//\"/} # optional typeset unstable_threshold=${5//\"/} # optional typeset unstable_period=${6//\"/} # optional [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset args= typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset -u typeUC=$type typeset existing CL=$LINENO KLIB_HACMP_list_networks existing 2>>$CLMGR_TMPLOG #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $name ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $name\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$name" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $name && -n "${name//[a-zA-Z0-9_]/}" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 105 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid characters include letters, numbers, and underscores only.\n\n" "$name" "${name//[a-zA-Z0-9_]/}" 1>&2 rc=$RC_INCORRECT_INPUT fi #========================================================= : Check for maximum limit of networks allowed in a cluster #========================================================= if (( ${#existing[*]} == $MAX_NETWORKS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 1448 "\nERROR: The number of configured PowerHA SystemMirror Networks in the cluster has already reached its maximum limit(%1\$d).\n" "$MAX_NETWORKS" 1>&2 rc=$RC_ERROR fi if [[ -n $typeUC && $typeUC != @(E|XD_D|XD_I)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" TYPE "$type" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "ether, XD_data, XD_ip" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $netmask && -n $prefix ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 "\nERROR: conflicting options were provided,\n\ \"%1\$s\" versus \"%2\$s\".\n\n" NETMASK PREFIX 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $prefix != *([[:space:]]) ]] && \ ( [[ $prefix != +([[:digit:]]) ]] || (( prefix < 1 || prefix > 128)) ) then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 113 "\nERROR: an invalid IPv6 prefix length was specified: %1\$s\n\n" "$prefix" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "1 .. 128" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -z $public ]]; then public="public" else case $public in @(t|pu)* ) public="public" ;; @(f|pr)* ) public="private" ;; * ) /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" PUBLIC "$public" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi typeset Eopt="" Lopt="" if [[ $unstable_threshold != *([[:space:]]) ]]; then CL=$LINENO verify_numeric_range "$unstable_threshold" 1 99 UNSTABLE_THRESHOLD (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT || Eopt="-e $unstable_threshold" fi if [[ $unstable_period != *([[:space:]]) ]]; then CL=$LINENO verify_numeric_range "$unstable_period" 1 120 UNSTABLE_PERIOD (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT || Lopt="-l $unstable_period" fi #=========================================================== : Create the network if no input errors have been detected #=========================================================== if (( $rc == RC_UNKNOWN )); then if [[ -z $type ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 114 "\nWarning: \"%1\$s\" must be specified. Since it was not,\n a default of \"%2\$s\" will be used.\n\n" TYPE ether 1>&2 type=ether else case $typeUC in E*) type="ether" ;; XD_D*) type="XD_data" ;; XD_I*) type="XD_ip" ;; esac fi if [[ -n $netmask ]]; then typeset nodots=${netmask//\./} if (( ${#netmask} - ${#nodots} != 3 )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 115 "\nERROR: an invalid IPv4 netmask was specified: %1\$s\n\n" "$netmask" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "<###.###.###.###>; \"###\" must be in the range 0 .. 255." 1>&2 rc=$RC_INCORRECT_INPUT else typeset value=$netmask for (( i=0; i<4; i++ )); do typeset octet=${value%%.*} value=${value#*.} if [[ $octet == *([[:space:]]) || \ $octet != +([[:digit:]]) ]] || \ (( octet < 0 || octet > 255 )) then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 115 "\nERROR: an invalid IPv4 netmask was specified: %1\$s\n\n" "$netmask" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "<###.###.###.###>; \"###\" must be in the range 0 .. 255." 1>&2 rc=$RC_INCORRECT_INPUT break fi done fi fi if (( $rc == RC_UNKNOWN )); then if [[ -n $netmask ]]; then args="-s $netmask" # IPv4 network elif [[ -n $prefix ]]; then args="-s $prefix" # IPv6 network else args="-s 255.255.255.0" # Default value; IPv4 network fi print -- "$0()[$LINENO]($SECONDS): clmodnetwork -a -n \"$name\" -i \"$type\" $args -t \"$public\" $Eopt $Lopt" >>$CLMGR_TMPLOG # Always log commands clmodnetwork -a -n "$name" -i "$type" $args -t "$public" \ $Eopt $Lopt rc=$? print " RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$name" 1>&2 fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_network_attributes "$name" properties fi fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then print -u2 "" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add network -h" "NETWORK:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_network()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ be u lL.doםa՝a~֝a&Rbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_noderk   =eainorst "$CR_cdhlmp#-/AEILMNOST\fu().12:>GP[]bgvwy%&,0;DHUk|!'*34569"ơ9ںPn0A0r6,-r7ٸ H 8oC``h$LR7قӰFx1Ô2%H" pf -6 H 8ѷ7A.$w~5(n`6 =[kN: P`y2@raMଡ଼u-mT7.ʖ.Hj.v+x+b= 05̦UI)1F*bdOH"U0y"MLWxdO"rE*a2BTʑ0 }b $T @P`p@P`7 IĀCC 'fN$a2S1@+ &3'xbH0b0A# N&&iB[E*5|f׫69MHnNq){&XH"H8‡A{k.zQxq𞫤#6j\،u(ngx܋k,ja of<0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTpӆZŇɄ"PI6opӆs3tY.k^\ffIg[/.NU۾ 8sZ7)u N7xfH5|8o۞-Um^pJnx34muu N7WQsr pe7!NboB,ZWQg5y -b_k^+|<`5D Ew8oAFVMURﱍV0:lo͟5-ۀ[f0R g(f޽\Ŝ7ٌW8(QsrǐZ0{Kf?r_KpkU^k^+|k\ܧq 8irOdWpb(~hԛfX aN76MAf0f7\%Kf ]C3 _3k\x&-^3c\k5= -]Ws75w4U{jrjJ1nW95h\$S.E%a`k[^n/M g)$\")ȉ*"U~zР&H;73q~;ӎ;mUUUUUUUU ]ʶw웙jUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU7X栺sűVwܧ-T|#d>YGwV/kԃ {lk4ᡛo+ok:a[5cw+j;awӿn5^-s۩eXo`q7(./|ֳamϜ6BS{Xg5_5ЌP sZД/l{୽XaNn5|-]ڠTR 0f3kY|v `>+|nP\]fb= ;iƱXMm୽^׫R 0f`.mPf֠HfϚשe[tܠEW̑V/t(7ܠEWf׫ O 5Xԃ 2٬ ;o< Rf͖V7ڡ;mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQF1 ;Ʊ1

^9 Al]5dKAeRL("e ÀpFx~kV-]ڹGΖ+ag9u[j_5f0r`ܣf?eX BG9VqaϽ11sg{Vnpar]q/R 0f<ܢ łFCpLk|Zp102,y%8^VwbBh"LI"cAeRLqp`1I"炃P67(./j<ּBS2~aT0Ⱥk\vcw+{u 7Al|#ɛQƆv_5>7(./r mUXܤe> )*d";ווk\!-R 0f MP0nWf$%Ucrmԃ 2٬wwѹ%c@yYj`ܣf>[-͖+v^Fyy\NUUUUUUUUUUUUUUUUUUUUUUUUUUUTw`.M'HBSR 0f =[kUm0 `򻥩LmUXLo;EVL!lt(j.nS(XF 0mQt-l)eXڻ 2Sk \Tgי=hJfOԃ 5y)eX4@wTE2EQ,DQ0"AUUUUUUUUUUUUUUUUUUUUUUUUUUU^En.ܮ`ܣf>[-Q+n7f=ԃN[-ٓR 0f񅜢nP\^!-'a2BIUbd/?=[{X| &U)eX &HI6ODaJA$S$U$E *$0wiqwiX9x;'H$TRL@%t >MV|?y;ư h$e(D|,,k~wrWz J@^2~ ;yDx=Y2ąDA.DƂ$B%#<jWjA(42/?>q7`WÎHH%H&$TH"`N8}b bk[D LR%K`y2@raML$ =7!zB!#ظ]|8@waAZkI˄QDrXX; )*d";yDx=Y2ąDA.DƂ$B%hvyI"OBFOՅ|'mJ`)y>1Da<ܢLK ַ\㍇gE*@L8`; 6\J2vMVHE2: FZV;Rvj7+fMWH%GwaAZSE0P<`+o8R 0f((浼UUUUUUUUG;wڪً şÎ;qLOtylN"3HFلd]ʟ*‹5׎] IӰM9:*As(%'EH.wi6l@]!N7lj;k\ܧql#|t3ql7l=sgj6q(+r"@$U4HMxXX; _#qk^+{xsz$j.nSX9a$tX;'H$TRXMF6Z AlГg'H$TRXMF6Z Al;ӎ4yY.e c2)&\II2K`^E$$ky÷U{ԃ {l炃P^e6zg8N;ӎ;mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQ f|Uy{5Qsrtցfq<[tw~`ܣf?eX30c0w`?otd0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGً7 FemH0^Qw[{Xss|7 FemH0^waAZSkI˄QDrXX;ǛGՓ,H[-II2Lh"LI."_ ^E$$kųtm8k4^Mrayh,8H$dRHGqq5hENI˄QDrXX;UUUUUUUUUUUUUUUUUUUUUUUUUUUUQ#\ ͓sF sYųt6\lNq/{wڪ;ưi"p(._ sZwaAZ$ E 8r8X^ bx"LI0a";'H$TRL@%+isM垃୽Y17wiqqj\ܧqqr.W9.7ɛQƝj6k[/Ζmc U[W|f,^ y\sZgfnnSoVWFԚ<kcୃ7OtNw~R&g9 Nk^;3y|n.i\񸭨rk^oY Rfں8#mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUG:$S.E%ax,wbxF6xL'~`Tlx(jZw$d*[ɒDq6tgymuD LR%K`y2@raL^C)!&4|nq(+@ZH\"$Kַ1nW> 7WfU+Y5㟠ybk[QsCs ИNa`8_fsp8 P, u%ܚwbbxF6x;lB7)3(4&2XKn@fXhAbfi@AII33-x jAdwsb D-34Ѓ3LWB 7g>y.M d23t-$C)("f ,#r 4fZԃ 5^gًXhAbfi@AII33-x jAdwHCAV/@ @"`2]6e'f>XhAbfi;@(UDEzsb DI ~ $D܂  znFיw+;t2EH-jɖ$-$r&4&PE$/ NyI"sԾk_!`~i^sZ7r )36f<*Az{7 FemH0^Qv㟞୽Y3q;| THzB! n2toxxz4 Nf.|]+zHEC&PE$&XGh̵-kr6;ו<ܢGk ЊV)$\")*$1zSE2EQ,DQ0"AX^ NLOAeRLD"Kp102, # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_node_to_group =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:40:14 Last Changed: 6/10/12 15:00:19 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_node_to_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_add_node_to_group "resourceGroup" "nodeA" =head1 DESCRIPTION Add the specified node name to the HACMP resource group =head1 ARGUMENTS 1: [scalar] resource group name 2: [scalar] node name to add =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_node_to_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_node_to_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rg=${1//\"/} typeset node=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset startup= fallover= fallback= nodes= typeset -A newnodes typeset -i rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -z $rg ]]; then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 121 "\nERROR: missing required argument: %1\$s\n" "resource group" 1>&2 rc=$RC_MISSING_INPUT elif [[ -z $node ]]; then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 121 "\nERROR: missing required argument: %1\$s\n" "node" 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_get_group_policy "$rg" startup fallover fallback if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 245 "\nERROR: failed to retrieve the policies for resource group \"%1\$s\".\n\n" "$rg" 1>&2 rc=$RC_ERROR else CL=$LINENO KLIB_HACMP_get_group_nodes "$rg" nodes if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 246 "\nERROR: failed to retrieve the node list for resource group \"%1\$s\".\n\n" "$rg" 1>&2 rc=$RC_ERROR else #============================================================ : Make sure we are not adding the same node more than once, : clchgrp does not correctly protect us against this. #============================================================ nodes="$nodes $node" for node in $nodes; do newnodes[$node]=: done print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clchgrp -g \"$rg\" -n \"${!newnodes[*]}\" -S \"$startup\" -O \"$fallover\" -B \"$fallback\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchgrp -g "$rg" -n "${!newnodes[*]}" -S "$startup" -O "$fallover" -B "$fallback" rc=$? print "clchgrp RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 247 "\nERROR: adding node(s) \"%1\$s\" to resource group \"%2\$s\".\n\n" "${!newnodes[*]}" "$rg" 1>&2 fi fi fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_node_to_group()" 10/12 kꄉfo?םa՝a~֝a&?bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_novato_#!/bin/ksh93 # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_nova.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 SYNOPSIS clmgr add nova [NovaLink] \ USER_NAME=<###> \ [ TIMEOUT=<###> ] \ [ RETRY_COUNT=<###> ] \ [ RETRY_DELAY=<###> ] =head1 DESCRIPTION Attempts to create the specified NovaLink object within the PowerHA SystemMirror configuration. When creating a NovaLink into PowerHA SystemMirror configuration, it can be associated with nodes that belongs to same managed system. Each node will try to communicate with its own NovaLink to perform Resource Optimized High Availability operations. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. NovaLink [REQUIRED] [string] Host Name or IP address for the NovaLink. IPv4 and IPv6 format address are supported. 3. TIMEOUT [OPTIONAL] [int] Timeout set on NovaLink operations. This value is expressed in minutes. The default TIMEOUT value is 10. 4. RETRY_COUNT [OPTIONAL] [int] Number of retries set on NovaLink operations. The NovaLink operation which gets times out then will be retried this number of times. The default RETRY_COUNT value is 5. 5. RETRY_DELAY [OPTIONAL] [int] Duration of delay between two retries set on NovaLink operations. This value is expressed in [seconds]. The NovaLink operation which gets times out, then will be retried 'RETRY_COUNT'number of times, with 'RETRY_DELAY' seconds between each retry. The default value is 10. 6. USER_NAME [REQUIRED] [string] User name for NovaLink. This USER_NAME option is mandatory for communication with NovaLink. 7. PASSWORD [OPTIONAL] [string] Password for NovaLink. This PASSWORD option is not mandatory for SSH based communication with NovaLink. =head1 CONFIGURATION/SETUP 1. If necessary, generate the SSH keys for your AIX node: 1. cd ~/.ssh/ 2. ssh-keygen -t rsa This will create the private key (id_rsa) and public key (id_rsa.pub). 2. Add your node's public key to the NovaLink's SSH "allow" list: 1. scp USER_NAME@:.ssh/authorized_keys2 /tmp/NOVA_PUB_KEYS 2. cat ~/.ssh/id_rsa.pub >> /tmp/NOVA_PUB_KEYS 3. scp /tmp/NOVA_PUB_KEYS USER_NAME@:.ssh/authorized_keys2 4. rm -f /tmp/NOVA_PUB_KEYS 5. Verify it (i.e. ssh USER_NAME@ date). No password should be required. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_nova { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n properties=$1 typeset nova_label=${2//\"/} typeset timeout=${3//\"/} typeset retry_count=${4//\"/} typeset retry_delay=${5//\"/} typeset username=${6//\"/} typeset password=${7//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== # Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i CHECK_NOVA_ERROR= typeset -i checkRC=$RC_SUCCESS #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY fi #=============== : Validate input #=============== : nova_label typeset NOVA_LABEL= if [[ -z $nova_label ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: IP address must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_nova nova_label if (( $? == RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$nova_label" 1>&2 rc=$RC_INCORRECT_INPUT else NOVA_LABEL=$nova_label fi fi if (( $rc == RC_UNKNOWN )); then #=================== : username parameter #=================== typeset USER_NAME= if [[ -n $username ]]; then if [[ $username == [\-\+\~\@]* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 103 \ '\nERROR: one or more invalid characters were detected in "%1$s": "%2$s".\n\n' $username "[-+~@]" 1>&2 rc=$RC_INCORRECT_INPUT else USER_NAME=$username fi else dspmsg -s $CLMGR_SET $CLMGR_MSGS 1143 \ "\nERROR: USER_NAME must be provided for NovaLink Creation.\n\n" 1>&2 rc=$RC_INCORRECT_INPUT fi #=================== : password parameter #=================== typeset PASSWORD= if [[ -n $password ]]; then PASSWORD=$(print $password | clencodearg) fi #================== : timeout parameter #================== typeset TIMEOUT= if [[ -n $timeout ]]; then if [[ $timeout == "-1" ]]; then TIMEOUT=-1 elif [[ $timeout != +([[:digit:]]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 809 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid input include either \"-1\" or a positive integer value.\n\n" "$timeout" "[-1|[0-9]*}" 1>&2 rc=$RC_INCORRECT_INPUT else TIMEOUT=$timeout fi else TIMEOUT=-1 fi #====================== : retry count parameter #====================== typeset RETRY_COUNT= if [[ -n $retry_count ]]; then if [[ $retry_count == "-1" ]]; then RETRY_COUNT=-1 elif [[ $retry_count != +([[:digit:]]) ]] then dspmsg -s $CLMGR_SET $CLMGR_MSGS 809 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid input include either \"-1\" value or a positive integer value.\n\n" "$retry_count" "[-1|[0-9]*}" 1>&2 rc=$RC_INCORRECT_INPUT else RETRY_COUNT=$retry_count fi else RETRY_COUNT=-1 fi #====================== : retry delay parameter #====================== typeset RETRY_DELAY= if [[ -n $retry_delay ]]; then if [[ $retry_delay == "-1" ]]; then RETRY_DELAY=-1 elif [[ $retry_delay != +([[:digit:]]) ]] then dspmsg -s $CLMGR_SET $CLMGR_MSGS 809 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid input include either \"-1\" value or a positive integer value.\n\n" "$retry_delay" "[-1|[0-9]*}" 1>&2 rc=$RC_INCORRECT_INPUT else RETRY_DELAY=$retry_delay fi else RETRY_DELAY=-1 fi fi if (( $rc == RC_UNKNOWN )); then #=================================================================================================================== : This NovaLink should be reachable and password less SSH communication should work from the local node. : Get associated managed system for this NovaLink and build the list of nodes from this managed system. : If any error during the connectivity check, just break unless we ask to force. #=================================================================================================================== typeset NODES= managed_system= nodelist= nova_cmd= print -- "ssh -l $USER_NAME -o BatchMode=yes -o ConnectTimeout=3 $NOVA_LABEL date" >>$CLMGR_TMPLOG ssh -l $USER_NAME -o BatchMode=yes -o ConnectTimeout=3 $NOVA_LABEL date >>$CLMGR_TMPLOG 2>&1 if (( $? == RC_SUCCESS )); then nova_cmd="pvmctl sys list --hide-label -d mtms_str" print -- "$0()[$LINENO]($SECONDS): ssh -l $USER_NAME -o BatchMode=yes -o ConnectTimeout=3 $NOVA_LABEL $nova_cmd" >>$CLMGR_TMPLOG # Always log commands managed_system=$(ssh -l $USER_NAME -o BatchMode=yes -o ConnectTimeout=3 $NOVA_LABEL $nova_cmd) checkRC=$? print -- "$0()[$LINENO]($SECONDS): ssh -l $USER_NAME -o BatchMode=yes -o ConnectTimeout=3 $NOVA_LABEL $nova_cmd rc=$checkRC" >>$CLMGR_TMPLOG # Always log commands if (( $checkRC != RC_SUCCESS )) || [[ -z $managed_system ]]; then CL=$LINENO dspmsg -s $CLMGR_SET $CLMGR_MSGS 1164 "\nERROR: failed to get managed system for NovaLink \"%1\$s\".\n\n" "$NOVA_LABEL" 1>&2 rc=$RC_ERROR fi else cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1165 "\nERROR: could not communicate with NovaLink \"%1\$s\" via SSH from local node. Check \"%1\$s\" is valid. Check the public key for local node installed correctly on \"%1\$s\". Check for any network issues or name resolution problems or firewall problems.\n" "$NOVA_LABEL" 1>&2 rc=$RC_ERROR fi if (( $rc == RC_UNKNOWN )); then for node in $(clnodename); do print -- "$0()[$LINENO]($SECONDS): cl_dynresop -n "${node%%\.*}" -C 2>/dev/null" >>$CLMGR_TMPLOG # Always log commands if [[ $managed_system == $(cl_dynresop -n "${node%%\.*}" -C 2>/dev/null) ]]; then nodelist="${nodelist:+$nodelist }${node%%\.*}" fi done fi if [[ -n $nodelist ]]; then if (( $rc == RC_UNKNOWN )); then for node in $nodelist; do print "check_nova_connectivity_with_node $node $NOVA_LABEL NODES=$NODES" >>$CLMGR_TMPLOG check_nova_connectivity_with_node $node $NOVA_LABEL NODES $USER_NAME $PASSWORD checkRC=$? print "check_nova_connectivity_with_node $node $NOVA_LABEL NODES=$NODES rc=$checkRC" >>$CLMGR_TMPLOG if (( $checkRC != 0 )); then CHECK_NOVA_ERROR=1 break fi done fi fi fi if (( $rc == RC_UNKNOWN )); then #=========================================================== : Define the NOVA if no input errors have been detected #=========================================================== if (( $CHECK_NOVA_ERROR != 1 )); then #============================================================= : Define the NOVA if no connectivity errors have been detected #============================================================= #=========================================================== : Firstly, update the NOVA object #=========================================================== typeset nOpt= tOpt= rOpt= dOpt= uOpt= pOpt= mopt= [[ -z $NOVA_LABEL ]] && nOpt=" " || nOpt=" -n $NOVA_LABEL" [[ -z $TIMEOUT ]] && tOpt=" -t 0" || tOpt=" -t $TIMEOUT" [[ -z $RETRY_COUNT ]] && rOpt=" -c 0" || rOpt=" -c $RETRY_COUNT" [[ -z $RETRY_DELAY ]] && dOpt=" -d 0" || dOpt=" -d $RETRY_DELAY" [[ -z $username ]] && uOpt="" || uOpt=" -u $username" [[ -z $PASSWORD ]] && pOpt="" || pOpt=" -p $PASSWORD" mopt=" -m $managed_system" print -- "$0()[$LINENO]($SECONDS): claddnova $nOpt$tOpt$rOpt$dOpt$uOpt$pOpt$mopt" >>$CLMGR_TMPLOG claddnova $nOpt$tOpt$rOpt$dOpt$uOpt$pOpt$mopt rc=$? print -- "$0()[$LINENO]($SECONDS): claddnova $nOpt$tOpt$rOpt$dOpt$uOpt$pOpt$mopt rc=$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then CL=$LINENO dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to add \"%1\$s\".\n\n" "$NOVA_LABEL" 1>&2 rc=$RC_ERROR else #=============================================================== : Now update the nodes objects : - for each node, we must update the list of novas already set #=============================================================== if (( $rc == RC_SUCCESS )); then if [[ -n $NODES ]]; then #============== : Loop on nodes #============== for NODE in $NODES; do typeset NOpt= kvOpt= kvOpt="-c NOVA_MANAGED_SYSTEM=$managed_system" NOpt=" -n $NODE" print -- "$0()[$LINENO]($SECONDS): clchnovaparam $NOpt $kvOpt" >>$CLMGR_TMPLOG clchnovaparam $NOpt $kvOpt rc=$? print -- "$0()[$LINENO]($SECONDS): clchnovaparam $NOpt $kvOpt rc=$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1144 "\nERROR: failed to associate \"%1\$s\" NODES and \"%2\$s\" NovaLink.\n\n" "$NODE" "$NOVA_LABEL" 1>&2 rc=$RC_ERROR break fi done fi fi fi #========================================================= : If output from this operation was requested, retrieve it #========================================================= if (( $rc == RC_SUCCESS )); then if (( $CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_nova_attributes "$NOVA_LABEL" properties fi fi else rc=$RC_INCORRECT_INPUT fi fi #============================== : If a user input error was detected, provide some helpful suggestions #============================== if (( $rc == $RC_MISSING_INPUT || $rc == $RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add nova -h" "NOVA:" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_nova()"  k.go<םa՝a~֝a&<bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_persistent_ipl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_persistent_ip.sh 1.10 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)40 1.10 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_persistent_ip.sh, hacmp.assist, 61haes_r720, 1511A_hacmp720 2/25/15 14:15:07 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_persistent_ip =head1 VERSION Version Number: 1.10 Last Extracted: 3/9/15 17:40:44 Last Changed: 2/25/15 14:15:07 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_persistent_ip.sh, hacmp.assist, 61haes_r720, 1511A_hacmp720 =head1 SYNOPSIS clmgr add persistent_ip \ NETWORK= \ [ {NETMASK=<255.255.255.0 | PREFIX=1..128} ] \ [ NODE= ] NOTE: the alias for "persistent_ip" is "pi". =head1 DESCRIPTION Adds a persistent IP label/address to the cluster configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. ipLabel [REQUIRED] [string] The IP address or label of the persistent IP that is to be created. 3. network [REQUIRED] [string] The label of the network that this address will be bound to. 4. node [OPTIONAL] [string] The label of the node that this address will be bound to, defaulting to the local node. 5. netmask [OPTIONAL] [string] An alternate netmask to use for the service IP (the netmask of the underlying network is used by default). 6. prefix [OPTIONAL] [string] An alternate prefix length to use for the service IP (the prefix of the underlying network is used by default). =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_persistent_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.10, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_persistent_ip.sh, hacmp.assist, 61haes_r720, 1511A_hacmp720 : INPUTS: $* typeset -n properties=$1 typeset ipLabel=${2//\"/} shift; shift typeset network=${1//\"/} typeset node=${2//\"/} typeset netmask=${3//\"/} #optional typeset prefix=${4//\"/} #optional [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset NET_FAMILY="UNKNOWN" typeset ADDR_FAMILY="UNKNOWN" typeset ODM_MASK="" #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $ipLabel ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n" 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_persistent_ip $ipLabel if (( $? == RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$ipLabel" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -z $network ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" NETWORK 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_network "$network" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$network" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 150 "Available Networks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi if [[ -n $netmask && -n $prefix ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 "\nERROR: conflicting options were provided,\n\ \"%1\$s\" versus \"%2\$s\".\n\n" NETMASK PREFIX 1>&2 rc=$RC_INCORRECT_INPUT fi #==================================================================== : If the specified address and the targeted network are of the same : type, no netmask/prefix is needed. If they differ, then a netmask : or prefix is *mandatory*. In the latter case, make an effort to : infer the intentions of the customer, in the case where a typo : has occurred, such as using PREFIX instead of NETMASK. #==================================================================== if [[ -n $ipLabel ]]; then # : find the family of the underlying network # print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -n -q name=$network -f net_family HACMPnetwork" >>$CLMGR_TMPLOG if [[ $($HAUTILS/clodmget -n -q name=$network -f net_family HACMPnetwork) == 1 ]] then NET_FAMILY="AF_INET" else NET_FAMILY="AF_INET6" fi ODM_MASK=$(clodmget -n -q name=$network -f netmask HACMPnetwork) print -- "$0()[$LINENO]($SECONDS): Network $network is $NET_FAMILY, netmask/prefix is $ODM_MASK" >>$CLMGR_TMPLOG # : find the family of the specified ip or label # typeset NAME=\"\" IS=\"\" ADDR=\"\" REM=\"\" LC_ALL=C /usr/bin/host $ipLabel | read NAME IS ADDR REM ADDR=$(echo "$ADDR" | sed "s/,//g") if [[ $ADDR == +([0-9])\.+([0-9])\.+([0-9])\.+([0-9]) ]] then ADDR_FAMILY="AF_INET" else ADDR_FAMILY="AF_INET6" fi # # Check (any) user specified netmask or prefix in a foregiving manner: # accept either input and just match it to what's required, e.g. # if a netmask argument is provided with an ipv6 address, just treat # the input as a prefix length (assuming the netmask argument is # a decimal) # if [[ -n $netmask || -n $prefix ]]; then if [[ $ADDR_FAMILY == "AF_INET" && $NET_FAMILY == "AF_INET6" ]]; then : The address, $ipLabel, is IPv4 if [[ $prefix != *([[:space:]]) ]]; then netmask=$prefix prefix="" fi elif [[ $ADDR_FAMILY == "AF_INET6" && $NET_FAMILY == "AF_INET" ]]; then : The address, $ipLabel, is IPv6 if [[ $netmask != *([[:space:]]) ]]; then prefix=$netmask netmask="" fi elif [[ ($ADDR_FAMILY == "AF_INET" && $NET_FAMILY == "AF_INET") || \ ($ADDR_FAMILY == "AF_INET6" && $NET_FAMILY == "AF_INET6") ]] then #==================================================== : The network and address are of the same type so we : silently ignore any Netmask/Prefix provided, as : long as it is the same as whats already in use. : But if they do give us a different netmask, let them : know that their input is being ignored. #==================================================== if [[ (-n $prefix && $prefix != $ODM_MASK) || (-n $netmask && $netmask != $ODM_MASK) ]] then typeset TYPE="IPv4" [[ $ADDR_FAMILY == "AF_INET6" ]] && TYPE="IPv6" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 779 'The specified address "%1$s", is of the same family (%2$s) as network "%3$s". The specified netmask/prefix will not be used, and will instead be taken from "%3$s".\n' "$ipLabel" "$TYPE" "$network" fi netmask="" prefix="" fi elif [[ -z $netmask && -z $prefix ]]; then # : Caller did not specify a netmask or prefix - we do not need one : as long as the incoming address is the same family as the : underlying network # if [[ ($ADDR_FAMILY == "AF_INET" && $NET_FAMILY == "AF_INET6") || \ ($ADDR_FAMILY == "AF_INET6" && $NET_FAMILY == "AF_INET") ]] then typeset TYPE="IPv4" [[ $ADDR_FAMILY == "AF_INET6" ]] && TYPE="IPv6" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 780 '\nERROR: the specified address, "%1$s", is of a different type (%2$s) than the specified network, "%3$s". So either a netmask (IPv4) or prefix length (IPv6) must be provided.\n\n' "$ipLabel" "$TYPE" "$network" 1>&2 rc=$RC_MISSING_INPUT fi fi fi # : Validate the netmask and or prefix length # if [[ $prefix != *([[:space:]]) ]] && \ ( [[ $prefix != +([[:digit:]]) ]] || (( prefix < 1 || prefix > 128 )) ) then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 113 "\nERROR: an invalid IPv6 prefix length was specified: %1\$s\n\n" "$prefix" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "1 .. 128" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $netmask ]]; then typeset nodots=${netmask//\./} if (( ${#netmask} - ${#nodots} != 3 )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 115 "\nERROR: an invalid IPv4 netmask was specified: %1\$s\n\n" "$netmask" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "<###.###.###.###>; \"###\" must be in the range 0 .. 255." 1>&2 rc=$RC_INCORRECT_INPUT else typeset value=$netmask for (( i=0; i<4; i++ )); do typeset octet=${value%%.*} value=${value#*.} if [[ $octet == *([[:space:]]) || \ $octet != +([[:digit:]]) ]] || \ (( octet < 0 || octet > 255 )) then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 115 "\nERROR: an invalid IPv4 netmask was specified: %1\$s\n\n" "$netmask" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "<###.###.###.###>; \"###\" must be in the range 0 .. 255." 1>&2 rc=$RC_INCORRECT_INPUT break fi done fi fi if [[ -z $node ]]; then node=$LOCAL_NODE if [[ -z $node ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" NODE 1>&2 rc=$RC_MISSING_INPUT fi else # : If a node was specified, verify that they it is a known node. # CL=$LINENO KLIB_HACMP_is_known_node "$node" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 151 "Available Nodes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_nodes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi #================================================================= : Create the persistent IP if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then typeset netarg="" if [[ -n $netmask ]]; then netarg=$netmask elif [[ -n $prefix ]]; then netarg=$prefix fi typeset NETTYPE=$(clodmget -q name=$network -n -f nimname HACMPnetwork) print -- "$0()[$LINENO]($SECONDS): $HAUTILS/claddnode -a \"$ipLabel\":\"$NETTYPE\":\"$network\"::\"persistent\":::$netarg -n\"$node\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/claddnode -a $ipLabel:$NETTYPE:$network::persistent:::$netarg -n"$node" rc=$? print "claddnode RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$ipLabel" 1>&2 #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== else if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_persistent_ip_attributes "$ipLabel" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add persistent_ip -h" "PERSISTENT IP/LABEL:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_persistent_ip()"  l`0ho\vםa՝a֝a&Hbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_repositoryipl   =eainorst #$RS_cdlp"ACDEILMNOPTbfhkmuy(),-./12:BGKU[\]gv%&04;>Fw'3HVYqz{}!*5679> bqkj P3`Pp8Px(<  1.7+ͮ##㉘LqUKXa%H _?9!L2J$UStKknY0[;_f0b8nJr nA8i@iu2dUG(]Va'N>#xp`xGG&bX^^0f3 dJh##,\ Lc$^ٺk9)e>叄Y AA 940nrӹ\Fm}}qE1( ^vd3AAEKXa%H ZD'2ീYm5 9#` 6Վ&LH V6$'$l++aʴ@0x gL<8e 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH"9V2dUG(]Va'N>(#-37Ans7yֹX8Nh֛f=':1j7|i־p+se^ˁDfRe8wftnnlOeff0rqSm}ϓL3-3wff0f?=4Kk9۔1rmθ`, E Ʒø޽֝=Ұ11sgh#ی1zK_ki٫8s7xȘLV3w^HA`Zn³6YG6v~73z"5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH hh=?Et($ *%`9\H'qjײش2\CCC!k0ׯÀ[4$?Ѫ?} 3qH7++RITPR(>煻unW<%L"%*8PMRQ"$VqR֙ϳrt3v7 ګG(h?} 7+YҝƁH7+c$Ǫ(TL`UfsݵuuY'Ս P)fsݵuuLcV6%@nWnybUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU!<$LR%KnJwiϵ81('o!4Hu&bk]tCM5X C&Nc eUB&4($ScEE4&!-a-`fqZGJBD֩N\U]9I,:1s߅0arㅚZ,:gn#bSuf6ӗWtuZD (&p( \\ݽUy2vC\($1c0-6ki,0Y.A!jI1,aPqaB%hDe(H2;YW=f/h'I$TRƏsJ \ $@n5$ȃ DndKQR "WV+R@%4:[ǑQL$$ݽ#|UTt D*`8Cؕ%VCӐ4?9bVV:Y1CӐ^%hu#r@x!<$LR%Kc2 q.HbT D@DSQVJ5i,uubU=U"HH3zϞH%L"p, r!ھ@jP@jPMQABD4ȃ GLD?EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEqcsu]9Z [oft?EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEfsTm.*b o͘0fcm9qc-`H ɖ3 CƱQ])3iˊG:"TH.. nއ*;!.ZCɔMULjPIL88|hȦd1ad,7tN=_lu]957n6$'#xjKGHzZLz,dGTR3i?9tȗ, UB@Gt\?4y*"d*[WtcR IA5KD ƤqRLr*PUT$dPXjHX@FWV+uZcPPx*)9ptOzH%L"?$ՊrĭI,uubcm8!hr*+<,Lx\\ݽ?kғ}VED$Vqp\\ݽUy2vC\($1'N ^C^yq #H ǪTS s7oC+RITc  d0i&PI5T"cHy2IQA%0P~4YSLb@pR Ok,cJ`YJNÁ?ד'd1Hy2ICɔMR )@ 20,^rxHz7+іbN&H2dUG(]V)'NeaX?B8@F7Z20,XpfqTWHh\Lb8\` TTBLk f.|i4eaXT.CӐ^?ً<,~4j朇 X;` TTBLk qTWHy1E MSYr8i1qqpg3v?aU arLjDƐeTJa;ŞE4&!a9k0zS0rlN"fӰG=km`qO^9msZ![l0zS>5%![΍ل8Ds57}n0zSf ޡ#x37A11sgyGK0y|,b"FHzZLz,dGTR4?9?Ѫ?0*GlwH`\lmt?Ѫ?kҊVE ,! fE ,mw2qTWIwIXFZ×l 9jtn~rAA ׂ+@jLunW<,v@jLuN&H2dUG(]Q?',ڭ'rƤpn@jLu1,@Pq #HD%.b 1p?XHH3{Eٌ\6qI&=REGM2#*HqC*+JNf«ɓ煻4F(5.Uf.a?Id~ \Y˘tr݂POCPư `$'qQ\-K5.Uf.a?҈k2;k;X@F `$$ݽF `qͶ[zEAxTT "cX$iuXvi,ÕȘ$$3v?fPXHki.NCNCCjC.4]9,X'~UUUUUUUUUUUUUUUUUUUUUUUURwH.3^2 q.HbT D@DSQc X@FWV+uZcPPx*)9>xX^5"D0HHj h r!ھ@jP@jPMQABD4ȃ GLD??ps3w̱rp|ɛYƝk'NkL8bz"e&RfX8$ '$G"lJ̰qY8 H!foL8bp҈m6F\՘=)Clf9j*dg 3@jPJ*+FX8.. nއ\R$劐P$CY@ftPMR X'ֻsH%*8ʊ&`ۥZ篜3Ms{ aFCjCɔMS ,%«ɓwHzNxGfb 6,ԈPMRHA!ZLz,dGTR5Abd#eaX #,VNoU@N+'* p~ nއ\R$劐P$CY@ftPMR X'ֻsH%*82d6³';Yg,Y.ṯrp| `=_eضiϾf]91YgkX98 4eTB !«ɓ4YcDC{L|ھs]njK\C?2F3wɛYƝkG%7.q5n>HUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTaQ[Q2Q\$$ݿQ2Q\FYUUUUUUUUUUUUUUUUUUUUUUUHds7xõ=)smO3vhgkaHk٧>M7ل8Dp1jQ]):w*@j ..O'N3:'NơզUwH$. !eXHnW>p­ZnWtRMZnWt!rTrHզUwHg`3|޻s5n)rTrH!eXH ŵwzKG% A4T TDp1BDe0nA-R**"8xuS"\L0?nއbCɊ(`jˑ걤ǍYW'd1Hy2ICɔMR )A,)Y1 y_YҝY|'\6AHne<ft\n<;&nx>x@zRj3ل8E _?=8m]|h JCs-Xx0,gԊjT9Q $`d7TER*"8xuS"\xj@qQJJ&(]Tȗ,7C%h«ɓSwK5yn:f`1қ1j3ل8DX):w9XDG.dKRY.tb煿 7@t;ՓfZ̫ft8yBtV(? bLrRA 1Ό\f-XU :p (",a# &jJBC1g^ٸf·n@ڇ;:Qь#kZ1rʹf7oM1knxXņ0H0tb8YaD# =(sNАgGJBw?ta~v&,gŐlN" 67$``XjCɔMR*8p4X@FVǪTS Cf*+<,Lx\\ݽk\u>mK ?ד'd1Hy2ICɔMR )`jZ#G`׵[mIӄOG3P'Nad,40YqIӱm]{]S-XU a!8$d0i&PI5T"cHy2IQA%0X,;喹H?u~7j3ل8DrYGx@pR,Ԥ?ZW^Ub}X0A(&Nc eUB&4($SP\h ںݘb :pwH`ơuuLcV6%JɓmKke<ʱa,$'P^L-! &Li&PI5J($ ]`fZYbzy f?6$'#J,5fG\Oa'N>,7qa0tb8ˬلgل8DgCӐC +SƥRƤLR%K C73~ @Ƚ~dP]uclN"| $j UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUURUlC{!Er%fErǦC+b_! |ᙽ\%PFG-` 45{ yvòA L!@UmIӄODSPb!W:ʞ:f! e< Zq@hpÀ@ɶSǛk-qXhxphp@@<2e3aXf+Nضv3l!+m!$lڱCDɒT pZ×lͬN# CK:W^7on# ͬN=Q"# !NfOOt}Ŭ0|'ɦ3Ҽnއ޻p"A;c|i־˖;yD ͮD$1?{4OktĬhbQjdL &U0Pw2׹ӵn-m6ћݿ喹HÄ6X1sm=ay3k8ӭ~7(ׯ OL+uyy@C9@0k{','f렏\iXW7}8=19Vׯx=1mpAkعX o\fAg`os#ͦB^f0Z^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 2fS4 mƦr7@c-zi@ lkioםa՝a֝a&qYbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_resourcegroupl   =aeinorst "$R_cdfhlpu-:ACEILMNOPST[\]bgmvy#(),./12FGU{}&'0;>BDHYkw!%*344tƓPePϥf`p?S>.<(m8%;HC@ާ}\Xg6z b`p?S>.;Yu}- @ާ}\XլmOzI*~*O>Nr'&ڴ(pqCPC!I &BD wx f`p?Gg"rtw<[}C&C^SݬtnՔk# &/ C&m"$ &S2*^"PV%P]X|PfGI1 XbJGL-T>9}S>,oJumw2̏>zenT *ն)V@q4P0PLբPM?LբPDi4P0PhfFEMZ%QC-&ܨB0 5hIb V1b(5hIZ빖dy?MZ"$ʓE$ʓ5h*M?I5hIE†aDP A𛻻CfA}?~?VQU7MW'&ړ0V鿣OV !3U֙}^x2aRͩ3`k}X~ta_0cE!IPqJf)WNhTbB8Д.YШą&qCoaǡ)]̲mʄ 4!V?qCoaǡ)]̳#ϙDQ?qCoaǡ)]̲mʄ Z$A``ƊB8ДR[hШą&qCoaǡ)]̳#ϙQ LÏBS0dەG (1Ѥ?(m8%3V5h4(ÏBS0dەICx ŀ>BV0(m8%3V4*hUѠWV?qCoaǡ)]:ѫHRtF&P{4z^V btFP btF&R*C bE!E&ܨ@B8Д.Y6BM 4 (m8%3 MPHQw2ɷ*0 4*٣mU*2(m8%3 MPT?qCoaǡ)]̲mʄ ZM^Uŀ>Bdy0(m8%3 dy4*hUѠWV?qCoaǡ)]̳#ϙHQw2̏>f&P{4z^V aw2̏>fP aw2̏>f&R*A𛻻Cf9הduV*6^aenT ͩ3OX~dەuϣXDj7wwwwwwwwwwwwwwwwwwwwwwv aw2ɷ*4+#?\tZ۫`Di 4+4X|PUGhsM!I &a$$ pb=4&3VQ]+XD& FE~z =`=*#|4@Qi#DCӴZ۫`Di 4*$AGVLD !5m$(@≦gZBϡAت_0c!HgSL\ѠWV?הgdb2Y4* ֒ h FK>g x gJ2Yp4ke-gSLE!HgSL](gҋ{4zϡVBϡgЪ(?%CzΙVdbVQY>h880;C}^2Y•R} FK>t#%C N]3t#%CzΙB,aJAOUi FK=R(iʼaAaLWzJuŶdم+i=V%),aJ$Lv*>!J'F"@e0(bᣉQRMsU'&ڦ2"sDj$TA$ ?`[ΫEMݡ1`3q4hՇHqBIXy}!I &"EH'DGDneuW6zbf(8VLr,@ .A/1(m8%3V4+?!IPqJf)WNhW/@`iA҃FJ J!V?֣GhsM!I &a$$ 8 GDp3eix=myODJ@Qi2Ʀ\LB8ДR[hЪ8x, hb8!$,<$Pa"-s-0eHRg6z2<K(DR`h4P4P/4i;Ci"HI5 /8!$$XH b=4&3O9-s-OV kz (zTDg%DCL"D==&qCoaǡ)]̳#ϙTpXAHqBIXy}!I &"ED s0[<[}`(yf&b210i208x, մc& Lt?ׂ|(g W`Q*;Ci"HI5 /8!$$XH b=4&3&7V73pՇ耡Qլm4L( [c$@bĔ Lt{4z(/K>EF >p\V^<FAϠj(O닆YR2YQy7=>2Y#,aJ6Ǔ)DH H##%daaUpXAjIP1Lx&TL !9T?ׂ?P_z T|ѧ3Ϝ?ՇW?oF=3U C%/1(p6_C=B#AȚK`Q*S>H5h Ruk8nM H5KHRjت>ṖTɸaO눐&4-hH5:TTkIi}r#A(8D1`QG*(B2J>gԃZ)R # G,mqX=/i^ ṦVMƶ C}\\74EF5J+&[S>.h좢n5J{ktTkI4EF5J+&[8D1`QG*(B2G43ϞNipXr<gPV%P]X|PZ]4$$Dj,$[`1eDuqw4>B A)9`q?此Q4ǎ.eDˡYQ5EqZ(=4EF5J+&[H)Vdӏ,bLybir(LrIseGvQe<4q"eVS"-?‚4EEdkKGe|sM(p?‚4ҊɸL,-ҋC AX TsMQEV]X|PZ]4$$Dj,$[:#O: /ƴ0UՄk92Abf(8><2lm"$ &S(8U*jΛ: /CyO `W%!@tq^`4* & ֒_0cHQǝ\mJp(iʼaAy@>(8F4L!Gtq^a(EҋjpqmhA/i9VMƸ/HPLLybi[ C>(2B=P nYg]+&>|~喦vSV=X/yOsM3]XJ:g&Y|;nj996n]qg3(8Uh.}InjA`7-૫ F1&[s4m "@8hET;%&Imр?nYQj4v1tDj_HqBIHl<1ea[:m侬77R7MW(2fbeMbz[ipفT(̤^sUɶLJ 8ir 82"DzhQY7! a騘<([I1&8i]BʉCx!‚Geq $4T,=5Xc7wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwv̻T!›YuJɮ?neՇGOV l*yOsM3]XJ9F;nj996n]qg3(8Uh.}InjA`7-૫ F1&[s4m "@8hET;%&Imр?nYQj4v1tDj_HqBIHl<1ea[:m侬77R7MW(2fbeMbz[ipفT(̤^sUɶLJ 8ir H2&Niɸ UMDǖ(&CjIP1Lx&TLCx J2 g_jEF >p\V^<B2=&[:T C%/1(p6_CYB"d$A2p(iʼaAy@>(O9y㔴Z۫` (DL(&Tpp`v*O>neɸaO닆xɸ()pkIm"$ &S(8U!EF*-z'&HpXr<gPV%P]X|PZ]4$$Dj,$[`1eDuqw4>B A)8 !5m$(@≦: /CqHcɔ$$UFaJzLuj: /CyO `W%!@tq^`4* & ֒_0cHQǝ\mJp(iʼaAy@>(8F4L!Gtq^a(EҋjpqmhfC&'ѹՔkb]Oۣה i!wwwwwwwwwwwwwwwwwwwwwwwwwvO>TO@DPI2eQC*Uӫmwz%&h)S>P4LYB"d$A2p6_C&cɗP (DL(&Tբgm0"&HzI*jE<oěemY3f [p(bᣉP얂ԛ&NMFP ?eEHqBIXy}!I &"E 4LziLf]lϒ8޶JI75_@@Ku7=nudwfaP2{O7MW'& 3t@DPI2eQHq:) ,PM1"մc& Lt?ׂ?P_^ Ui_7ix=`ͧN θ فU?`ƐYu} "</^3 VODD勏$':t{NaJeѧ*iu^(0m!GVIz)S C(+^+&P0?PVY ^(?Y^ ]X|PUGhsM!I &a$$  CDH(3q[C̤m3]Wgӄp@Tم*eXy1GE%ʹKJiC AZKEdk UMDǖ(&尰WV?nv!MVC7,.]X~> ?rS;)FفUCӄws}$~rrmܻՒM=nCf P4q"\}$yɶhn6'Z WV67bMi,3]W8D1@pĊvKAsMsU'& 겢hb8!$,<$Pa"x&b=4&3.t}YExno[C̥NoP e% :^ :2[;P I`ϛ&m:)/E*}QY7! a騘<([I1&8i]BʉCx!C&qڜ%8TԙL=X/Fڲ:ӫl]̳#ϞԙD?nfͽwwwwwwwwwwwwwwwwwwwwwwwvuk8ne*.PB$ ^029W4h/(Bgm0L4zS Q2(Dy_KY빶j?!E2{Rf 3侈4TpD\2ݡ4Z۫`@h @d *P LR/F4?!E2eHQw2̏>f aw2̏>fM %舉IG4i;Ci"HI5 /8!$$XH`1eڜ%8TԙxSY?GaV7kdyړ0T}0i2HdyW'%%8T!abf <CjIP1Lx&TL?nqڜ%8Tԙ/Jz'eJfix=`?g\}:779-&` Wa%{ѧP ?`ƐYu} ( TLpzJ 8hW(iʼaAxCuk8ne*.PB$ w S/u**4X|PBgm0L4zS Q2(Dz&@sB029W4h/@buk8ne*.PB$,92KC>(F.CMB"HI5 - GDn%8Jp3O_EGNʕGM3Ԥ3f tVpjeFۤ"s3&P=B( "@p=BÓ T<%13F !5m$(@≦g"!Iب+ZH1})4ke-?`ƎR1]L\up4hՇHqBIXy}!I &"Eb=4&3Ղz܍kB=*"f&bJg"Gc LqD8 .f b3qp>.:) L\u,Ƌ,4*h+Q9$PCMBEa ziLg(Dڬ:nV0gp ‘D!abf [ڬ:nV8EV[Y/_:ql΁V|謦r'LA)L\u)3qׇp, HPp8x, մc& Lt{0_  ȸp^! 1Dy1",,ՇHqBIXy}!I &"E @f#Lc4I75_NM_Smʹe7aQar|f r.:tR$4T&4&$\ !5m$(@≦VY𛻻?5{1 WV?`.:T^Rf 7!Hg|Юh+ bJjLSXzI*~r2jptRHcɔ4a ˖XŜ̢E^eY) FK>g GR} Q+:g G[2BV0(m8%3V4*hT8R]̳#ϙ&qCoaǡ)]̳#ϙSBQŃ3((dەHRg6z&ܨ@ЩS(E*BQ3OE HqBI\R%'E#:uZ˖XŜJg"G2) FK>g CX),ՔVtϚG2) R[hB8ДR[hЩTs()e|$)3{= Le| G2fBMP&qCoaǡ)]̲mʄ G2hHU5&`P{4z># V} 58tϚC b,0p8!Hg|Юh+# VJ2YaJ FK>(e3QCx! 0Ǔ(h)"& ,3U,ɵ9E)8QJ2YaJG[2BV0(m8%3V4*hT8R]̳#ϙ&qCoaǡ)]̳#ϙSBQŃ3((dەHRg6z&ܨ@ЩS(i"HI5 *DY6dsVGN+QYrX)L\uP%F9?ŖHRtF btFM CYMs,a!IPqJfs,hTЪ9?Ń4R]̲mʄ $)3{= LenT hTЪ(?此h8F)B$D1 H Ke,rmi5Q`$$"PKq\~29#]TPVKa1Ç-5m$(=4&hb8!$,<$Pa"؀$?(wAZ{=*"f&bJg"GCf9;mnNs,՛W77sUɶF"@e0(bᣉQgInjZ)L\ux:- h?nD*}$~rrmM_WΘEF CfgIY-૫ GU-իεT?uG׫:bzPZ=m`Y,êΊ WnB?n/1p6_C1Ts9968 x `4^0ѠѠRaCqHcɔ$$UCZ Ro996X>)L\ugmH'9MCm"մ /iM\18ybXX+VLrLhF.CMB"HI5 -CAM2tze7CҢ!bf r.:pXA?c{Ve8޷7MW'&CqHcɔ$$UE&Imh3qףÖy8,Cx!C&_uiGz riua(SүX38?ׂ?‚^ eDj (iʼaAyHՇYQj4v1tDj_HqBIHl<`O;)Wκwuye& FCγ>f(&\ʲt=*"虋V~?+ ?J(Nruqaǟ{4epf(&\ʲtlG CÍ!]VN!acGjה@QaУL2bf enjCmbGE1 8~$A2HqBIU2Dƒ !CRoshsE)@tR"@eCos+%@$$UG,}$yɶAn @'&d(YQbM^yY 6j^fin*V]̳ՇtKۊNZe_)~޲Yfwܫdp"p7.)+g]XJ<)LWO9RyL+j9[:mqm8O( )3@ܴ=a8q%k}X5ۊT4Z?uի3%xP 6V"@cIIa -\  Dy1 ^W,ZY"@cIIa*u  Dy1 @'Շe7:ԧWFt~ՈSWκxS? ӧG?ӓ-hQ\~5p)b׃/QO D7.EyL Gze YVxSnY^S)ڕb{߄]NSE̲֙yƯYnά?:8EyL D7H"ϘgՒxGP (F[uëՈSsMNNU-YzٷVY|.2Ï?Fs,aGi@.7n@'ͷj.{OϊG:8EyL GɶVuaWa쵮U90ܴaMʬ ̡q2(PL ("4Ph`iA0iQ_Y?$JcӱAeI"`e@aA_Y?$AGV(LDI̡ɔPd &@=BEfiםUi7Р@ e@ӲEeL4zS Q2(Dz&@{CuXA̡ɔPd &@=BPC Y?adP`7Gzh$o`,SOVpjnqV \mRb,>o`,SOVpjnqV>9ނXq(Dx?#)/ r2^Vo]]3hUVaBCʬbŋ0hUA Bh80hGGtV,@ "@p=Qdda ?VQ^0VtLq: GtV,ǀ&A1YF9sHRJՁ¬B8E*Ƴz?՛WoVmV]X~e A @7ȸLx"d 5g4vofe?]Xynj996PCxg0D&<k0è7i?f%gӫVsUɶg6M>ng6z`R DaQo\cu`y7ë+AWUUӫmkdy ]̲mʄ6?ՇW7MW'&ěem0PCYu}3 P& :szԤ9V]YFi*TZ{ G;%ua(Ӧ㯫MyOIA v }eXupeljr=Yh\7MWrrmCPCސjLSK(LiYVpH]YOXHURf ,40zeՈS&ms5NM(TƑ5g4oi*noëe~uqǭ?ՈS&m,+r_EgPPAr?^L "p3VGN5ͳ%BWj-^SUZ9ҮΚ,>=X ׃/MB[=o:iy ˱ fْ CҪni{Շ3<9O޴+)2W^[C7En0eP @'#%\pq_AύE,x0e6,#@' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvNzFuqVMXш/PotVwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvDGOP\bkwy%',05;FHKUYx!*+34672X .@BJ $&Y#$?;̬on=6oMˮ7\];Sf,.EFO "^qt2L`~ @Xx ^qiˍ~ .@BJ $HFH GGd (*(HPd;2[:7.rqtM:@_(:drgY& DNQDq>'>Ka=;Lq{En3W&;;/r^Lq{¹0,Q`rb98NMAY>)e\υ"Y`@(@ ; wZrܮ'MQO,qzs28X+P+7MCb;Gj>IďFܧ;S  fZkd"`YTHa4;XTqu9w `,β(L H@QdJ}Od|`H p$NYH 1,@?!`/*֎h8 "TY'(RzvhI@G2\ּV dz CΞomL`oMs"67(WNbzS^p]782zr|ֽ, !z @Z hOMӐM^k^)n-}Z.7 .-jnGڷv 7.Xf7ܷ 0z|ֽ}ZG|mMԽw~+5'\ b XMI('ޝA9 &eA ˊ]\'Aaah"D d!@ J:`012ι.,`圙C i*,Q)\O;I쏒 XxI8 X:0X3" [#,,2`GDk6f,3qT{6}OfD1nW>1"3H0pp{6u@88]?06U:D  9f 1nW=a(i4@8s A˷clܮ|;@$88]?3{roZ$J.AQABe:vA\x ج'{.ܹ[:#k7 o. yE^UUUUUUUUUUUUUUUUTH"D@-;MwF0rc|>'+i=\,/DYr)"H00kԓ'ds E `% HC"$\qk_&m7S``N{Ao#FH ^eq>'$ H"2EK$DD LWWW4k 01ٰo5 RL6Z$J.FtH*(]" a/Eˊ{`ysZ Ӝ^0zv<^xP"\EI0LD LI9DB0HΉE T< }] Z4Fd"/x!5fs}] ȔJ,H(L H@Qd|.cLDf[a{oG @n)4sa{4P 05Hufɗ'b&͆f̓ypo1|' ka{4́7WF!mf/5JR% $XW& DOC0`j B4Fti)gàyu \,/DeȤ`"D#0o5 tr),DTrDLLDԓ'ds E `% HCx,Crt F.\YG)b'A\ƘxP[;#lH*(]#(TPEL 0cLDfB"xP6)H&Xa\ P<.M(\Ƙ̷spX`R hsph6w. aW4kD q=w /fy?.NM ͛ZbO -@P?@dzZdx $d X q0ĂR&Xr䈙Ha`uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSrjZ3iWڛR7)n־n˝4FwFqo1l3s1^.jZjZW5\κC-؎mW :lDl5]ӝMҰVu76# y{;%5Lۈ+|9znK\ow1XogPknzOX q0 Nܦ¹bFJ0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMzXl4eq>'6 #)kq׮75=.+8\Ƙ7Di,*l-0# 9saF1"3撮:y%Esb#(bBH(TPFJo Mv:r >;t.cLDg W%\uJB4FC:?6mZČ T@ @2Č^VČ T@ @2Č7WTLEHR!i‡N\anitpy%Esb#!f/D2ċ D""cLDgF1"3Z%H@2 W Hd9گ T0CDB2TX[9㳮GzˍɅϸa{-V#x؃7clܮybIRdRdeoB)(R1)}Og۔*K&c &&_.Hޮ^pok;#lH*(]#(TPEL  "$\qF-qFWN{"ibx0P~EkLg׾ )oɅMCqqπxteq>'7)%ȤXT@Pa6oKz:J؆rqrD &&] q䉖$dAW4kD~B@q(YXh6.< 4 Fǀfa` fͷk\@LL@I R,H UUoa Hg6,xO6lkޮh։12&P%h$L#(aAZ%H@2.@9"e͛Z׹E#r+FWN{ ɋsFY4#&\66 ticj&cj'H ^W4kDt (&X! (+D#)&P%h$L#(f̓ypoekܢH+i=Vdŏ zZ0tp,ѡ2Dٰٰo5 f6t.g]!uoosFH H@2.@9"eC‚K28Re]VrD2fػ &&] q䉖$dC ,H@I uZ,Hfl㪪#Z\Ƙ)E#r¼־N;|پLcVO^5\κC!ѵ^ًޥ &{k㷺XΜ/r{ផoyczg~ݨU'ukg[#k:|ַ|==-9=㪪sFhU<(+Eگ hHaх3hu:*Rmm2%H>FH H@2.@9"e͛‚!!bT1cB Mt'ds E `% HC,ekͦ_jnQHܥFHa^k_'WzxX An 6}uf6x_/=+P cO]}c7 Xw@#$'ޝPDHX4FPok[ HfAxNA꽭ޮhtas: AXhf6yxPV.ѭbe*LK HbFPČ T@U@2Č`pbe*LK HbF@0Č T@U@2Č6poٹ\be2%H>FH H@2.@9"e͛‚be2%H> rHHX LX,H@I uZ,Hl$e#!!bT1cB zZ$ˤd$,K&,|C6lk]%$eDQB$gDB*`P `x.\T56}E#r+@o»xX AsYfz8\Ƙ+@#$0@6cj'p95b&͆fp𰽄svsX07k\&N-% H#:$J.S0f "KrS&,|s: N&m7PG!x .g]!0 I9DB0HΉE T cz.z#ѐ wufɗ'b&͆f̓ypo"P"`" :`Pfl7&N-% H#:$J.S1 "$\qk^ =!7˃1aӽV#Msҝǘ7 A <^ %IHHXxP"\D.\),,2W4kFOh<6 JR% $XW& DOC0`j Idr|:]W xYr)"H00kԓ'ds E `% HCx,Crt F.\YG)b'A>v$ $eDQB$gDB*`P tsp|B"xP[1nW=0JD2ċ IwiIn>,/}@>l@\00ޮhֈz^"`~4#&\66 xC@^h>/6^Oh :D H*,&^^^oF65Ӽx1 q1w K;Q㪪peȤ,,* ak\sFhu͛ZraF'*D 2.<8o@йt@7D br Z$eDQB$gDB*`P "$\q]dŏ.g]!iͦ_jd/xt2$ $eDQB$gDB*`P`1˽L=r^C8p8p n.ÅΞk_@x@ $ H"2EK$DD Lוclܮy.z\κC-Ua{ ( uoٹ\ΑOsr箑Os8h}V4#&\6v.Es:PFTyDٰټvx8Nw\p@z2:PÇ8xÇ8H8pt3'$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTҸ'bqKRilŃR0vvU<#\!&\,/F)Yr)&`2‰,,3vSR&Xr䈙Ha`03 Z$J.DUfɗ'b&͆fͷk\)&N-% H#:$J.S0XAG:o|b']7 z^؄ANCp`qL(`95ΜFHKtq ޯ5`j!W,G:lYJn]{Px k^{ Zw;;ƘΫ׼ig|)qX;k]):t렣G4vN  B9Sd#{GňV,])ha! B9'7 %a7'(Rzv\,/F)Yr)K B``7\Ѭ5]%EɗMs"< t>gY9`k\zQ|tL&\95Μ=xdz(AB =( >;d2ɮtG#E꽿&""KWdº A+ i9EӴXb kGUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU4sGevԳl&ܓٛ؀eg|pٰ1au@V52T؇5=˯khMs#Ꞃs{gn qƳԾΌZZՋy޻>V|V"u{-Y^'j4w:邷AM7Cj +8nY>;ŅD`cOGMBZGϖ'7LaQ0֎XNv*Nobb-uO,@!&XPBv$XRBM찠'<5<456 (H;aAu| (H9՟y#{βfO=+b<|V"u{.k:ml215Μ65&Wp5&&ob+^*Nobk0,*,`9Zs{,FX5-eXϖgxӥ|{βNh='5:lD ?5g ݦ—ϾƷͣia𝩰z|tner/Mg@婌Zn=+hLی~_םt6\rVڬF[;=yKc{κ.9{:齈cL]Lb6k[GMֵշLoa]5ΜּHf9Zs{Ξ;/=+S|%;r9QaRH2#7#a^k>@-Yo?|tm ؆sY &cfٞrm>ksZˎ^*Nobigl Bh`oדn:=;'ONB?YXhT=9嘅hF. O|'pR1{}P1:s{Գl'(I'Rχ@AAm-nP?,@&& DNQDq>'"¢ kt:r;SӴJ}OdKoX*\!@T.cLDdKokK2TB``0x0<رr@`ALJf %@T;J;bY,*d5rtX'ޝP- =m-nP?$`rbIkHNvu˛qNrzwƟ5k^;UE{֭nP? \P"Tc&<~Xf7ܳE "L!3y%ڦB&{1p4cK=57n`mN6ڛst1s=Zu#@+i=r@.HLjSp̭y1m)#_a^k_+y1nk:{͌bn=a.cLDg4\$˒76+^-}y|.cLDgΟ5-)1x6?32LTR_Btyk_+y1l.k_ HgaVkAKo1"3YZޥ0{[xO4*,db 8 7/;;ٍzWy|'ޝŰ{1^o ZRsizV07j @OE,@ԧZ8+k67JL&Nnk>\'ޝb䌄KkpX;X\9ڀk^7MCs,ۣ.lk8py4RTwg./bu-=ڍwrfz8ܘ=Q'M+b:l]N OVAF0&3ύ 4g_)><;z;Nv2zxӥ sLim;|mMKf1F.\a7mܙޫNV覶͌릚۠7鹭M~;%6RωXb kGUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU4vekau|:vAU[]bvw%&;BDHk!'349KYx{|}*567K`HjT!ai*VYI:v% B( (^ 0/À+*H*˯y0\Az6n;[aϾfVGr^bt.bK;[sq <"afyN #%fc.Zk#`s-zh3E<3( f6ւ ٺ Se5W)ŅI#$xG'`t"8!G0XBvO4jZHLL#?, ͱp@bd d՛k\?GNLăVלa@Hy`!ǟH HYe$Ճ92 <\d?&pؽGȶSӋU#Ph8p@-kZ?4aD<"l ҁ`|l$/#cPhېk p, ]d4 "@8M"ETj)'N$^U6ce'Jax]%"ϥe XX6j;V[xoi( Z;൉ wk ͜bnUYhܤ%ft$PL Pd &@@y!2bdA@@ųc,@D-@gH$*ڨ<*,Ăcɔ.8G@ U N{q{J]5rS:3E$%.x>`qA(\pc,@D,mx=%kc.uX9)yf"NFB` iTLqR(űv8ftmq{ֳ.}q;t%;aՃh&@r xfٜV63Ӿ jtsz'vV38s^c-krfq*ٺaՃ4NJLc6cn3uLp&8-/̋&sf2+U6^V6՞_ȾkޫXbyg'Nw8B e8慏.4^g\Yaַ8s^'N -0Zt8B e8慏.:Sg|s]\1q}ﱞN~rtG3*\BbdEYN.ycgl+er8g%yGy:vy jbuFbE;*\BbdEYN.yctXwָxkެ 8*ٺ?]7ZmY|t\r^:Bbx˘`{3W%q{Հ'N13pЋwtN4[;jt3ֳ-88ipk]gwKϜ0q^׭{2׽{3Ybkq`1q2潟e| dw{;U/|^{?N.׽ ܧ ^@2(gft\RK(LL+)4,Gtg1{ڲֶqa'N;˦{a%є ~s^7 _ft{^f 1<ܶja'Nu3'_E (T  Q1J \d?]3ل8E-lٸt0ϥ.(3Äwø3qk;X{ųtm8kb{8)8xվ;av˂mc\eַE[օ|'L/u`qx`q" $ +*7r a.!SlH HYe$d 0  &Whx'À@8@?DC#rʊ,#?b'TUN*I4ž Z\hurCnW>NCL 3ܮ{൰N' [=Zt'7+'Ns4@4?gY\ڰQt x 0h"γra'Nuʑ(hiAlN""ل8E а*H"D1nL 20PI,[ ^USIBD  LzG&yUUUUUUUTÖls93*aqQ\h ѓoiŅ|׷7#XhD,8DIMBEà G75-bgq3qk;[sC##a&FF 0MajصYeqkع dgJ7.`azӷݡ'Nv*Ѡ4LhÆj (a@"J&Du*(\.<Bt@)@#aPP/֓&k-H!H؀xhx(1rt[c{Xcy9[tsjrSFFD ##y`s7<Шp" }ΔBx(@HLgq#3 \fqZxN]潝ka*+-l:S**#&Z bkZLlR"Hzj_E"$"aaLb ZYk[_5lFڱ3 ^mYk[2`.4^{V[k5;g|5X9)qznKZr2˞k|kekoå0Ճ眳̸`qun =ȥi rS:S׭zwiY?5lvUǙoV~n~`j7)sÞX9)C6}`jGr8)7aFʒt/}fʏm0bw}'NM}2mIE 8vz6lܫf<0gHbPTwUE$1al BtBH4ĕ`qƫ c8!Hr0'N e\k]Vo?qQ]0` $TTFL[ Ņ|׷7#XhD,8DIMBEà &Dypfٺ`0rCђg8\0<Tb&@ql-{enpfՃ̸f^Ojm|&}ל|3xNz܎X{`q?2൨Ֆ<4avfZ:xN1SklV <ks:*+B&p4@Hb(_X٫4h=oiwV1t"靠0pDӰXX{y8VJwgYXz D1 XrE KՖziT1!$R"Hzj$TA2Ӳ؁X6׭q8HNUzIB‰$8l(({yVM%&D2̸.?h>2qTWڰQtkqTWF6.'Tf.]3Va$a@^mX \N]gh;2MyƱՀÌ⢺1`1q:1t"z $8a`_5F"@e5XQi2nFH!Xq}-`AM2xXrX9|\eֶf$}H2@01CT*.#V3B.0 PIr5DIMBËD$Xyl Mac `GFFah&(&D/ āBZE4 M"9"&TP\+?L*+~JAcfxL&FbE;&FbE;HY:v {ymX \N]gh@ˏ2qTW:vŅ|׷⢺),\rjJz"/#H Lq2(7#XhD,8DIMBE(vx(N6\&[) Yhܥ\a9l#mVJwetX9)qZ̹md%;^2_;p mbgl+ersmrSXŰah#'Ns(a@"J&Du*(\_`)9f|;͜bnUՖGF"@e1QP&[)ՖZ2tG2HNzIB‰$8l(+IiM1P22̸gƿF6$.`V4 [a`_5‹Ir5DIMBËD$Xyl<88 elN"mx=fqZی-Lڮ2X0<āBZE4 M"9"&TP\y3_ft\P+E""MBiQZRC^(7#XhD,8DIMBE$`AM2a'Nu6Ӽ^3j˭m'N?nÞX9)C <`qk yFFFڨ<z D1 XrE KՖziT1!$R"Hzj$TA2Ӳ؁X6׭q8HNUzIB‰$8l(({yIr5DIMBËD$Xyl@8?@&Ds-s8j; 0 a2t7ha@"JM2eq^M% $Ű ?Q].95 GuZ$,,׷UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUG׾N-#r0wjZwKX9)C]5|׽VJwgYp8^6eV|l:w#vgZ̹aUUUUUUUUUUUUUUUUUUUUUUUUUUUUUT1s砈pHP$HLJ%$P4PlrtFBUb 5sƙ͜bnRN¸8M"EU`q CE"$rEH1s砈pHP$HLJ%$P4Pj 4UG6qI:v q0C]5x`4U HI"PyϞ8M"EU`q͜bnRN´pXګ &"rS\"*(,a& ,#8ܤ;QzX\sgj0HUX9)BĄH!\R%(7#XhD,8DIMBEÃ' ؎ ]ӽv~ՖÚN{`qul{98lܫX`y[36fnp8^ 022PYNa'Nu/qÕhEUUUUUUUUUUUUUUUUUU8HNUPPL 'UPI,[ ^FXx0ka4Ֆ Ux0Fg\g*+~mIӄ]r@h э fx/g }U ^γrDŘDc$$UFa'N;, A0䆂2t7hi8ft\CBAɖb"X/#H Lq2D1@pDejFل8D |mIӄ]rp;{MZDeq\yUUUUUUUUUUUUUUUUUUUUUUUUUUUUT@d1k\nˍ×)|nqu^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUGz4,(C‚|׷8HNCPLP(+ TWe˦[^Di$ &S(HU \ԓj6sN堌;{M17eqUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQ9;s{''c-՝ 9kwl2d5rUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGz4$@bǨ@QB h^M%HiH /`V`EtR"Hzj!` $TTFL[ Ņ#H Lq2(7#XhD,8DIMBEÀ0~xц|mz܎m釘AprKQ!19my^ٸb`3q vlG6]ݿs6ŬهAprKQƮ0a & rQ sM5|Uw&2 rc=$RC_MISSING_INPUT fi #============================================================ : Create the snapshot if no input errors have been detected #============================================================ if (( $rc == RC_UNKNOWN )); then [[ $description == *([[:space:]]) ]] && description="$(cllsclstr -N), $(LC_ALL=C date)" # clsnapshot can create a .info file with the output of various # system commands (lsvg, netstat, etc) - there is nothing in PowerHA # that utilizes this information, but for compatibility we force it # if called from the gui or the user requests it typeset iOpt="" [[ $CLMGR_GUI == "SMUI" ]] && iOpt="-i " [[ -n $misc_info && $misc_info == @(y|e|t|1)* ]] && iOpt="-i " # Output from any user specified method(s) goes in the .info # file, so if they have specified custom method(s) then we automatically # assume they want a .info file [[ -n "$mOpt" ]] && iOpt="-i " print "$0()[$LINENO]($SECONDS): clsnapshot -c $iOpt -n \"$snapshot\"$mOpt -d \"$description\"" >>$CLMGR_TMPLOG # Always log commands : Provide escaping for some characters that are not safe in an eval description=${description//\$\(/\\\$\(} description=${description//\`/\\\`} description=${description//\"/\\\"} : Provide character entity replacement, a la HTML description=${description//\&apos\;/\'} description=${description//\"\;/\\\"} description=${description//\<\;/\<} description=${description//\>\;/\>} description=${description//\&\;/\&} description=${description//\&excl\;/\!} eval "clsnapshot -c $iOpt -n \"$snapshot\"$mOpt -d \"$description\"" rc=$? print "$0()[$LINENO]($SECONDS): clsnapshot RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc == RC_SUCCESS )); then # command succeeded, but check the file was created anyway [[ ! -s $SNAPSHOTPATH/$snapshot.odm ]] && rc=$RC_ERROR fi if (( $rc != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 '\nERROR: failed to create "%1$s".\n\n' "$snapshot" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_snapshot_attributes "$snapshot" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add snapshot -h" "SNAPSHOT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_snapshot()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose, even if the man pages are installed. # As a result of this, it is imperative that the information in # this SYNOPSIS be kept in sync with the man page information. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_snapshot =head1 SYNOPSIS clmgr add snapshot "" \ [ DESCRIPTION="" ] \ [ METHODS="method1 method2 ..." ] \ [ MISC_INFO={false|true} ] NOTE: the alias for "snapshot" is "sn". =head1 DESCRIPTION Attempts to create a snapshot of the cluster configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. snapshot [REQUIRED] [string] The name of the snapshot. 3. description [OPTIONAL] [string] A description of the snapshot. If no description is provided, then one will be automatically generated. The string can be up to 255 characters. 4. methods [OPTIONAL] [string] One or more custom snapshot methods that should be executed when capturing this snapshot. 5. misc_info [OPTIONAL] [boolean] Collect miscellaneous information from various system commands like lsvg and netstat in a separate file with a .info extension. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== $rc == kmoG#םa՝a֝a&G#bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_storage_agentl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_storage_agent.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)91 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_storage_agent.sh, hacmp.assist, 61haes_r714 8/6/13 16:54:58 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_storage_agent =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:41:41 Last Changed: 8/6/13 16:54:58 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_storage_agent.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr add storage_agent \ TYPE={ds8k_gm|xiv_rm} \ ADDRESSES=[,...] \ [ USER= ] \ [ PASSWORD= ] \ [ ATTRIBUTES=@[,@,...] ] NOTE: the alias for "storage_agent" is "sta". =head1 DESCRIPTION Attempts to create a new storage agent. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. agent_name [REQUIRED] [string] The label that is to be applied to this storage agent. 3. type [REQUIRED] [set] The type of storage technology that this storage agent will be working with, from the set ds8k_gm and xiv_rm. 4. addresses [OPTIONAL] [string] One or more (maximum of 4) IP addresses to be associated with this storage agent. 5. user [OPTIONAL] [string] The user ID to be used for communication with this storage agent. 6. password [OPTIONAL] [string] The password that is to be used with the provided user ID. 7. attributes [OPTIONAL] [string] One or more storage-specific configuration attributes. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_storage_agent { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_storage_agent.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset storage_agent=${2//\"/} typeset -l type=${3//\"/} typeset addresses=${4//\"/} typeset user=${5//\"/} typeset password=${6//\"/} typeset attributes=${7//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset existing CL=$LINENO KLIB_HACMP_list_storage_agents existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $storage_agent ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $storage_agent\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$storage_agent" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -z $type ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" TYPE 1>&2 rc=$RC_MISSING_INPUT else case $type in *8*g*) type=ds8k_gm ;; x*) type=xiv_rm ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" TYPE "$type" 1>&2 print -u2 "" /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "ds8k_gm, xiv_rm" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi if [[ -z $addresses ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" ADDRESSES 1>&2 rc=$RC_MISSING_INPUT fi if [[ $user == *([[:space:]]) && $password != *([[:space:]]) ]]; then password="" fi #================================== : Check for external dependencies #================================== case $type in ds8k_gm) if [[ ! -f "/opt/ibm/dscli/dscli" ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: the DSCLI utility was not found in its expected location, "/opt/ibm/dscli/dscli". DSCLI is required, and must be installed in that location on all cluster nodes.\n\n' 1>&2 rc=$RC_MISSING_DEPENDENCY fi ;; xiv_rm) if [[ ! -f "/opt/xiv/XIVGUI/xcli" ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: the XIV CLI utility was not found in its expected location, "/opt/xiv/XIVGUI/xcli". The XIV CLI is required, and must be installed in that location on all cluster nodes.\n\n' 1>&2 rc=$RC_MISSING_DEPENDENCY fi ;; esac #================================================================= : Create the storage agent if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then typeset userOpt="" pswdOpt="" attrsOpt="" [[ $user != *([[:space:]]) ]] && userOpt=" -u $user" [[ $password != *([[:space:]]) ]] && pswdOpt=" -p $password" if [[ -n $attributes ]]; then for pair in ${attributes//,/ }; do attrsOpt="$attrsOpt -o${pair//@/ }" done fi print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_create_sa_director -n $storage_agent -s $type -i $addresses$userOpt$pswdOpt$attrsOpt" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_create_sa_director -n $storage_agent -s $type -i $addresses$userOpt$pswdOpt$attrsOpt rc=$? print "$0()[$LINENO]($SECONDS): clxd_create_sa_director RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$storage_agent" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_storage_agent_attributes "$storage_agent" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add storage_agent -h" "STORAGE AGENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_storage_agent()"  lfnoEWםa՝a֝a&6bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_storage_systeml   =e ainrst"$R_cdlop-/1CEGILMNOST[\]fghmuy#().2:;>APUbvw%&*,09W.1avB^=POO /8p p4p Ã|Iuˍ-kB^$LbETL2T T "?Цd Xb*$*"- |t7 7C\];[f,.օ4+c:@ *@9\Q)O9SɒTQ,\vԒNφ84p5M ɽ[lq{3 f`H (Цc "Bw:ob_PIK(O>,{d7ЬIutrZ hV(_"%qqzt%`d ]7 +YUv$78Yتq,H 'T{DZ |d"kBJ(&be@ACDZЬx@!rFx#0f8A%y804ÁñĊ4*Yלau|5X>~;[]qragBMYZX3ϖqvkbv, hV,p4y&.z}tC}ќ*Ъ+/7F{12Nv ?p _bHMBA n+¸<&@B- XX:v1\ TH,,; 0b-x<&@B- XX8ϯ9"d  "ӈ 5X ¸TX ]|8D9eDkp, %@(HyA5JlEmI![GˁK $]\YnSb.;jI g|\vԒNϩh ֐P@&e"|7.H "$ /@LD0 CCMHMBA kq8+@v" kR -jAG7og0a2@HTH  "d*$PPpD ͷUsceM$2qRHe;>~sMd)i%WAe7.H ɨH!@p>#og¥h.WYAwjAH8MF &H 0@ʉ ""bLD 1BA y|w,)$S>Sb.;jI gԃ؎i4LHY\|;7L2tP@ztP9Ad ^L CCM&`bw3G4PW8ČL(`z(@D"Dʉ ""bAmn`[Z1U@*BHϺ;gIl5;-lEmI!؋ڒC) #o` !RW4H Lr hrD5aǦHL"Z)ϳ9scV6/lEoNφzܰI2"0]ņn3}2 L@d{6(nUůtb8y=SΛ |[Սv] VF69W.5Ãy!q̦@B 76]¶3Ξsc̲nls[.g"gZ@@ICJ>> O<YPfx>7qۄ,&`bDe8M/b9#|\vN\ot¯tl]=lEoNφ|2XL"Dq|og>g.Sb.;|vzⶻ;ַ̀af"̖0HQ"f2_`H!s˔؋$2 kpf *$LfSt b+Z-yWy6" gZ ,&`bDe8MDx es-Yw,\|wfKHo]z%;n]qo.q\Ŝ ~^}B ܀&kppn喍W,a3&o3):m#1(&=y!=-s=ypUJwv#Z' lz:|2e#AAmwN b 7/;7^HOrF&b<^\"?UtUoNk0uσo)[ Lk;[|A<]XmY&.-?w>6pZf.\a7m~Lگ8[*9Ϻj:Λ=nXv<" Qya052D@(NMAJ >)eb,h]}7=9iܮ"ֳ[JA+!be1mf@~7M@5iVobL$8DI&=BEGM2(Hyɜd4R6"㶤v|h.D 0cAsf@̙H؋ڒC)FA QZҔ؋ڒC)ٱg ZLd(E5 11 ƒC IH!` !гhAAj Dh5i2~GqL.@ƐeBK>E˽lYˠƒ:+H (t3Z@@IGUYCT|ܩ9 * oR'U"&$TLPrrmUҽ)f4,HY_ ]EKHy2SPCɔ" / 5 Y0r[r/6>1 ƒC IH!` !гhAAWQi2~GqL.@ƐeBK>E˽lYˠƒ:2Up(9T`I1*- $*,MDfl؇3d0 \b*=lٱg Q* ZLd(E5 1w6!PJ#E_I;er4(E5 "_ jLa>[ ]76 |n\^iHIH;8U4 A#1 ZI1$\"T$TLPs2g )>w6!3'I$TRL$<(0/$ފR|Dj,6_oX^ZqA/`Wi$ǨT9aB0(iPc r…B``3A(|&O2ZCɔ"L(\|p4;D&dHGJFbetyM jR|p(9PJ#E_I;er4(E5 "_@DHY]«]#5BY]«Ǔ*@l &H P PME)'Y]«1,/}D7œ,U,"! 5o:@{*Id|rlfl؇31vY]«ٔlEǷf!mf/QoǷofL! 6lC1n =nѠ"!Ǔ*@l &H P PMG@qQnInE9\1 nֳlEoN<-W[XZ?{4A#!j6B8Ps=1v$.@HѦAPEoǵUUUUUUUUUUUUUUUUUMǞBY#Nw9}kfWܛUUUUUUUUUUUUUUUUT]+Қo|O73&psDk kOZJIUގl؇3'I$TRګ?#i&Pj cHy2SPr%p8cP ezqh&48A|MVv ob31>5i*ƭ%Wz!@dˍX gJx׵ÙO]]7 n]}UJw -r 5P ZI1$\"T T @5,O73&psDk hM@ D!5Wz9b\<$LRKjd% HtP 8.@ztP7PJ#E_I;er4(E5 "_8jLa,޶,_&mW}b9A#%#HA!ƒCMA2hq A(|&O2ZCɔ"L(\|w9t 8R5PGEMB8DI&=BEGM2(H7[k<$LRKjd%L[6l36obΑ i \b*=d[dΔX^d|rlfl q,dt̙eќ.?̙.V͛ ͛@Α3ˣ8\Qo:B̙.V͛ ͛@\3qB-ofL! 6lC1Yˠv9  "7řY!g.oBqofL!/A;l؇3b8A{sPN4h0nk0 39R)0Y@xAcFa"bks2g ',nRf͈s=poгrdu"CxܧHbO3E',nR# ^modvCܦ&q{#fP+yfgHG"&q{!ٳx(,a-'=yɜd4Jٱ 7fgHi ?h\I*3={n!3x)B LRK H劄 B@ jQXۧjJJ,ڳb8iJlEmI!2ZSB'',,qfg$YH3J%Lfi0Y$8Cɔ" ,G±%܆Z`Ai7 (Ha Up+tIIEVlG )M$2KJhYdBřB噚N,34fiD3I& 39$3oU+ً=aR&H\BW NԔYftLJETq(E5 &XbK ;nHy[ً<`aR&H\BWQQS9e؋ڌŃ^HqR?t\vԒNϚG4y&4iI\`I ?f"HMG,nRѹJiq(E5 &XbK ;o1"h~**}G,qQqމy IJlEmI!:%\vԚnmI\`I ?hQ-',nR"IVz)B LRK H劄 ꮢr))Ҋ")&Pj(&L ėrkwUܐ/=pǨ\Px၂\54U?#i&Pj cHy2SPr%hP e9ՍwD8R4i:)JlEmI!8Ps$&dqoUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU7?$saA # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_tape =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:41:46 Last Changed: 8/6/13 16:54:59 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_tape.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr add tape \ DEVICE= \ [ DESCRIPTION= ] \ [ STARTSCRIPT="" ] \ [ START_SYNCHRONOUSLY={yes|no} ] \ [ STOPSCRIPT="" ] \ [ STOP_SYNCHRONOUSLY={yes|no} ] NOTE: the alias for "tape" is "tp". =head1 DESCRIPTION Attempts to add a new tape device to the cluster configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. tape [REQUIRED] [string] The label that is to be applied to this tape device. 3. device [REQUIRED] [string] The name for this tape device. 4. description [OPTIONAL] [string] A description of the tape device. If no description is provided, then one will be automatically generated. 5. start_script [OPTIONAL] [string] The start script for the tape device. 6. start_sync [OPTIONAL] [string] A Boolean-like indicator of whether or not that tape device is to be started synchronously. 7. stop_script [OPTIONAL] [string] The stop script for the tape device. 8. stop_sync [OPTIONAL] [string] A Boolean-like indicator of whether or not that tape device is to be stopped synchronously. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_add_tape { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_add_tape.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset tape=${2//\"/} shift; shift typeset device=${1//\"/} typeset description=${2//\"/} typeset start_script=${3//\"/} typeset -l start_sync=${4//\"/} typeset stop_script=${5//\"/} typeset -l stop_sync=${6//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset start_script_opt= start_sync_opt= stop_script_opt= stop_sync_opt= typeset existing CL=$LINENO KLIB_HACMP_list_tapes existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $tape ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " == *\ $tape\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$tape" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -z $device ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" DEVICE 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $description && $description == *:* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 103 "\nERROR: one or more invalid characters were detected in \"%1\$s\": \"%2\$s\".\n\n" DESCRIPTION ":" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $start_script && $start_script != /* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$start_script" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $start_script && ! -e $start_script ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$start_script" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $start_script && $start_script == *[[:space:]]* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace,\nwhich is not allowed: \"%2\$s\"\n\n" STARTSCRIPT "$start" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stop_script && $stop_script != /* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$stop_script" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stop_script && ! -e $stop_script ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$stop_script" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $stop_script && $stop_script == *[[:space:]]* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace,\nwhich is not allowed: \"%2\$s\"\n\n" STOPSCRIPT "$stop" 1>&2 fi if [[ -n $start_sync && $start_sync != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" START_SYNCHRONOUSLY "$start_sync" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $start_sync && $start_sync != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" STOP_SYNCHRONOUSLY "$stop_sync" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT fi #======================================================== : Create the tape if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then [[ -z $description ]] && description="$tape at $device." [[ -n $start_script ]] && start_script_opt=" -p $start_script" [[ -n $stop_script ]] && stop_script_opt=" -P $stop_script" [[ $start_sync == @(y|t)* ]] && start_sync_opt=" -s1" # Sync [[ $start_sync == @(n|f)* ]] && start_sync_opt=" -s0" # Async [[ $stop_sync == @(y|t)* ]] && stop_sync_opt=" -S1" # Sync [[ $stop_sync == @(n|f)* ]] && stop_sync_opt=" -S0" # Async print -- "$0()[$LINENO]($SECONDS): $HAUTILS/claddtape -n \"$tape\" -D \"$description\" -d \"$device\" $start_script_opt $start_sync_opt $stop_script_opt $stop_sync_opt" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/claddtape -n "$tape" \ -D "$description" \ -d "$device" \ $start_script_opt \ $start_sync_opt \ $stop_script_opt \ $stop_sync_opt rc=$? print "claddtape RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$tape" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_tape_attributes "$tape" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add tape -h" "TAPE:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_add_tape()" format l2pomםa՝a֝a&"~bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_userge_   et=ainors $O_cdfhlmpu".AEILRST[]gwy#(),/12:CGMNP\bkv!&'*-0;>DUx{|}3468rH<uL=gMP `< &H D &*.MgR5C\tv*2"؀ Iv(6 "$A qkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵig^d@b4fu# 4-YW|V`P^0Jv|n#T2oIeM=(]ǵkIfgu!ekbO]7oYofteگ*NIdWfu! 8/%Zլrt6AV;hyg3l3s+[+}OUW|"+:1ek7թqffTp_-zfڮwVT&<ೂlԣNRUWI]&?Bթ|;t70ĢĞ룂0u(nY>Ul)R=XKJ I[*vcR -Aڑj;ttV̠p_rקA3=HIeygkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵi3$Eɦ3a3ɒ",DqYd X=hFr7<;x1cu)0hxrH<uL=gMP `< &H D &*.MgR5C\tv*2"؀ Iv(Y!apbY೎lTd6%*VO;ͱSٝICNlTi0<<`pxT6Nzm<& fةTnwR.I*xL fةMw7;$Nm<& fةTnwR+:i0 08<*wbWܲ4NIW@408<*wbWƨ2j H0xxm^ gQR5m|`bS:Tei1S:ڵ zN <& "08<*wbWYbm<&  fQeE&NlT$#m<&  fةMw2,M xxMw2,Mܚ&eXxxp~;ͱSm<&  (Si9Ejxxp~;ͱSi:O PS:lfQe08<*wD̢i9E&NlTb4;ͱS,O CNlTH𘈀xxm_A&'[;ͱSkE!M@@S:L <&" fةŹREh|xLD fةIZM@`S:wQZEh|&b <<`pxT6NrD&ٹ08<*wbWsF≧J <&"NlT9Dm=7[WV)ͧ@hxxm^ç3Qh6NlTXtj2Nm<& fةgHצ@S:h5mgi0;ͱSpI9Ei@08<*wbW"ç3Qh4 fةd+T ڭ<&PS:w9E0` 08<*wbW"ç3QhթM@ 08<*wbW,:s5&uh6A§ٶ*uz,:s5&oQJBxL;ͱS]i0D<<`pxT6Ns)IgNu6@@S:EZ<&§ٶ*u{z\ͪ`(;ͱSIF Fs6O 0xxm^ĢͧP 08<*wbWܚrunxLNzrdE "MABB›[bECAyը:^=ZLH=Nf$'c"8ʀ]bWdBlT9i0 \x1QB@PPQP^` $wbWU3H‚V24 fةw,M"ç3QhfxL wrdE "MABB›[Y$ί Ac}Vä,LֵkZֵkZֵkZֵkZ֝%)%*,6=+T kZֵkZֵkZֵkZֵkZwbW&PM,,wbW$Qٶ*ux1TeQl:ON&ɒ",$Egfu)|3牓(aQrh wNgʌw#a=;@ʌw#mL @\w@ʌw#m֩(ʌw#m֩L|Qo7.%6 00Zsay&*(QKg(QB7 @B,,sbz#,p>cp>c@"(Hb~8Qlv 6<2b*Dx1QB+( rOrİ | 1V9GSɄ $ HXMDD;nHֵkZֵkZwga;-kZֵkZֵL|FNz`fxCrh*W v@3'<P%H&*(QRqh (%bvj|#{b.I@ ##x$D3'<P%H&*(QRq 8ejT̒RQe @bx$D:nzZ&ɒ",$EgѕN,*fu)spwv [2 a82nsp\ ĦÒ#sݫP;> Y7 8ej.{GN0ؓx1pM<"D @",;G;-kZֵkZֵkZֵkZӿİ5=7]nYn RzXۖfw[ZֵkZֵkZֵkZֵb  q P;;pD H$$,T(z "&2Lv0w<%D PX(zn74n(t;;p!dE* P T(z,:s5'1"bBBʙ#o^c&D!$C֊CQfNqH"" (D$FI4;;p!dE* P B!C|aә4\fc$,@ &DXP=w9EjTv0wRBȋ*T@AB"ç3Qhftc$,@ @DPd1jS8T".@P9J"@"`YB,:s5&uh1I ".@P9B(B"ł"ç3QhT,q6N XF Hc@XT6NHi1rS˗H\rT$`n` F3G2$pCp@0q$e$`n`;jͅgOԌ @ D1V8< L"Dv ^fpdɊDdE "*TP`5=QZ,0q)HwjNl/382ydE "Tl2b*(WpP(A-woT|=2  | @x$D3'<P%H&*(QRpYnY *\vڮEx;UȍcǏ"'&PMREJDD<ަ\{jo0CpXarSaPըfةw3jD{jozrfnL v@3j-:4q0qӣY3'<P%H&*(QRpC"PzVž0j[Ӥñ @Sfx"|XE ,Pi/DDX!2 ,ͫP|a"'&PMBh(DL$%QӣͫP|`QֵkZֵkZֵkZֵkZֵkZֵkZֵkZw'*uj[aRjWI]&w[ZֵkZֵkZֵkZֵkZֵkZֵkZֵiS ϒ[[D",  aըfة2ŷr [w 9-1mܺH1mƩ-H1m;ͱSͪ [vb۸ [y,lŷ&Pb۫-ٶ*u|եAn)a- ŷZ&PbhAo4Aim^ ŷ6;4݁b۰ [usH1m [NlTgAnD [ui-: [u 0ӿ:w V4$QAnz ŷe-Aoh1mr [NlT-ŷrk1m8g7.%6 01A<Ŵv JlE, 3# /CpXarSaP$4ޛOzc._Tewrfը[u0 aˉM%BF  `NmTʁKifը[u0wreXn .\Jl9*0`70cs(1mYbm<&fQearSaPQ/Ğo7.%6 01A;1mfL4$#c._=ɮ"fQeĦÒ#s0H'qܚeXO 5L,0 .\Jl9*0`4<8*8x!,0q)H [Gr6VarSaPQL|},Υ J v@/3OEԶ0aK  VwAhl;6Pb;-QNQ/6Q3(CpXarSaP$͓(1m͓2,M&eXxx.%6 0wrz aˉM%BF  `NWՊՊ8,n .\Jl9*0`70cyK,եiVXq G7.%6 01A;Pb;3IFm{F;| 0:`ĦÒ#s0H'1mIʦ$|`8/RCpXarSaPը2֊CTl)awjY!ܒQfHjmɚw-:;db;rIEZ+E!M9iyi+I`ĦÒ#s0H'JŴvLm>i+I;|EG=jMen .\Jl9*0`70cuY-e\Si$zԚ+D1/喉Ms aˉM%BF  `Ovm-siYhѻ71/&(`ĦÒ#s0H'N Ŵv:PM=77M:Pwr:s5&ۖznVSn .\Jl9*0`70cvAhI$56ç3Qhg|`j9;|9EGu)ĦÒ#s0H'aDzVg{FIֺ\z,:s5'<\rT$`n` b;Ut|aә9;|S3mn .\Jl9*0`70cy2گIʚ|6q͢,x!,0q)H ӥm-&֊CQfNq/FI5 J  wAhwi"ç3Qh;|Xtj2Mm\\rT$`n` 1m-Pid+T ڣ._=w9E0 J  w*ŴvU=w9E08|aә4cjԧ J  w V4|#jԚz,:s5&mZ\z "ç3Qhʘ]&JS aˉM%BF  `NEpJT:pI9FT:4RUҘ˗]ENf$M)R^n .\Jl9*0`70cuQ-ޢ=w9E7Jc._=1\rT$`n` ŴvOewLhq織h:n .\Jl9*0`70cw$ۙMΜm=̦E%9\}ə&pCpXarSaP$ [GvíVrfwIíQ/Ğm3jĦÒ#s0H'a1mTA'Eڣ._>t`m3jĦÒ#s0H'b;s6O%&Eڣ._=Di+n .\Jl9*0`70cv%AhDi+ObQZJ8/!|;u0Z:u|;uaw&ۓ]mɚa ( ܚ [GnMw9ip8;Gw˗ϕ|F"{[& .;0`ڵؓx0<\d `0D ׊taY2 .K"3#(1g4Ɯ{x1gtbԤ{Pb2{1g YY,|2z^bϚ1g E, 0z ŞLş%e, Y먲 YfbN Ş1g Ybϓ(1gK8 Y$@ Ş@ ŞNzUA=w V4pHzA({(1g$,|܃{Ş|bٝHv<P%Eɠ(wNL @_< &T]0E3>cȮ4G YM, Ş Ş4 Y]$Ʃ,), ŞmT̠Ş Y2|A>lş6LŞW, YA>L ŞCH1g(1ghA>i*z,}ٴӳH1g6 Y(z Y6z 3H1g3H1g ŞAftb]BթM,(ŠŞz Ş YI,A= ş7 ŞĢ1g5Τw-:;>&HX*DM`P,,QtxIHE%\iԏޚ YNA=NAlA=XH1gZYd"}A=dbZ&Pbϒ2|U,Y,h1gfb`mtQ,sH1gɔӥm, fb] fb]'PA=w*ŞR Y$QA=w A=ܒ Y{A>nA=DPbrk1yΤ;&*(Q¢;,QtxIHErK"3#(1g4Ɯ{x1gtbԤ{Pb2{1g YY,|2z^bϚ1g E, 0z ŞLş%e, Y먲 YfbN Ş1g Ybϓ(1gK8 Y$@ Ş@ ŞNzUA=w V4pHzA({(1g$,|܃{Ş|bg:<$w|/x404 @aH,*%+3:PLK>IɊD4;aK7(&PpwjNl/382ydE "Tl2b*(W`(QZzԟqҕ:+{3O(&(qmkZֵkZֵkZֵkZֵkZֵkZֵkZwIMFI>lROQw:ծkaә3ֵkZֵkZֵkZֵkZֵkZֵkZִYyr!"j$ . 0mn * P 1jٶ*uzSb) ŷAiS._C>FsݫP;JlE$MbdE " PLA:Sb) ŴqMw\x1QB@PPyGf `N؊H1mzSb) 0RAhқI/ϑPyS._=%]4`(%h/RwjAh48w˗&*(Qh ̪ v@𼴍hZfw@:s5&8/ç3Qx!,0q)HwjbODqNjD@B,Jg6" YH1yΥ;ğ *gd $YaәJlE$ƐbٝHqI`*"TZͅgOT٩&w[ZֵkZֵkZֵkZֵkZֵkZֵkZֵL03>ImnPM12%Jᡸ$/喉Xtj2Mt  Ayըğ q$,DY"&@hx@"X2,ӖZ&ti<gR牓(aQrh x@"X2,ӖZ&ti<gR;I4ğ q$,DY"&@hȮ89eiNf g!<x1QB&<ֵkZֵkZֵkZֵkZֵkZֵkZֵkZ֝%S67(گ*NOvjwIrnmkZֵkZֵkZֵkZֵkZֵkZֵkZֵkNz`f|ܠ%B"bdJCAݫP;a1QBJ(#@\ x1QB,X\wj&ɒ",$DZ,Τn=ԇlJ,T3y<qmkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZִ,gR(4WIlJ#oNzեQdNL𶵭kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZw3$T!aDI Ka@|ܠ$(PdI Ka$rdE "(%,0q)HZ,say&*(QKg(QB4@TeV).|af,=g \X$܍@qYbDʇe18~B{1-u(:7AZjʛ⯔-wCajzf;rRa7ĉIe*6; A/z˙N$| FX"|oj֛7IA+194gRJ($;x1QB@PX؀<"w8eU("㏒CǃCGc&HX[2x y'LpL@LT]&,Τ8 kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZӂ Ŝ CapYxBž0*7R\A4 I-Ifj3j,j˙ ,3ԽBÌwW].3II7 pKRQ_9*։/e_=R2]|ԽB3jFK÷A='Cmj \fLӍfo]q>ydNOR2WQ%oS #%wIBGTN)`@HbALF%x1,",@TutI&\̻7ڵ--H˵_=G@b|`?,oڵ* .TQ+|a{3 #.|*SVi'|ԽB3{V R2]~ ԃvST65 N_ }Ws J.I]W'qU3I43;)DŽoUuwvZt6f+R#*p_i  wCak|u0EeNZ8/w[եԧ[2*i,ǵk* T^t0fvp_=ӓpYHT] Ow*+_;U{v*NjV #%o7õ_<,REqƩfڽZÌ).|`U+|MB8/7ڵ;.<ೂPaF<ೂх8,༥[2Ŀ o|.'qRaֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵ(t6XL,MI`l> "sU&!"qL@LT]&,ΤqV(T)0ř\f%qɺw \b^`B ( ɺwĿ@<@DP$N;uv# e)jt0;'Cthx *zU.xL@LT]&,Τ>jj%U4dDD@A\Qj2xI8%3-ɧ:3:0r*DE h*YTE|Aaay`@ *HXR$hMG-: \c;/*T@A`CFIQٌ`&"ȋBȓ@PBw&h(s|\!ReX1D"ZY`,@\83(X<8x3|@T"hfQeyp ̢b ǘc"UDˇ"U8$3(j2"E8@~ĢJS˔""HC)=)8iU+vᘳ}G*u|F@'CUlqZrTv"?fu,B $0w h|89zW^SWfu-%a|aڵwek/:j\wu}ZQ+o`BtܒU9IoZ#.խԴٓgZ&_Cfu.^ϛ}'{ܟ#e}jT銂sխ(GfNTZ6r"L;ttR}'7jִw-(qFVEhw'uNծf ӡA7e/<[rISwm^*lpIWI]JcWj֜Rezqj &3iEu#-xʷHw[ŝ'CfuWu)peq÷A>q^I=i*9+O|kek3B7+>ݪmj`04;afghq002|f`+\O'B(nl9*j֤VZ&:JNJSҊц$FV0phqE'`vwR|ưXhw7ՀvcuCc0,V13 Xhv2䆦0t泦fo5!0A˒;1C˵ky9&8(V;3@\$12`qfIVfQeWõkIfgu!%9I=Gaݫ\(GzqܚtqZ}WϕN,*,{V<)|;VfwRq ?zyt@X3v#7 <Ztrtf;8]fjw3nI( ծft%{X*J+PN:}\|BխԁS;CQ,j:I>ܞ0' -]z77sqf\qhnVI]GkS_>,[ eg@hy`~5Fq"䒩.bH &c/:V7*=e,MvlΥvm<u{ᑂR6OZtΖ5fR]nƨ;QQtij{3^򤢺>u=j3KRWI%|# ԌG|2֔I,jY(JMXnէ|2Nf$ûVi-7ᕫI*V,.YSs_QTǜw%;V,I:>t%twj9F7B7ʧWڵ:*gQwVç3Qc;D'fjb[]̲&q?rD+:E%]5@\$1V@䠛uگ[ej:Jkksʵ8ƨ2j H.bH &c/:Už0$SZܱj@To4U;լjʇ|7zlJ7I_jPJFط5Fgڵ:S>|;V0JFغOeMqAejܳ51,RD@PR@P;(T (4PD .@"HcTlH"" @}4_yB16wBAۀ  HcTlhGH-]rĐ L^ufnPJFغOQVJtnF HIS֬.wbsbznXdU}O^)fzJj=j;[t 5InY@TD@tD0DòJ QDÎ D"E"`Hv@TD@ &"U"DL 8J "&&6%I`o2&'}g6vboaZ5\>u8J "D ېLmJ)bemMO4W5FmPȭI\:k^) D"E0$OnA1A*O#m|aA7I<\@/jT ڡችjXRs׊t<*D ۠'R6ž0۠i q5FmPȭI\:k^) D" DL ېLmJ)bemMO4W62ƨ@ͪV+E!MW>xC;@"`N܂cnTF H+nnyڸ5FmPȭI\:k^)/]rĐ L^uf%ޓV]\(@qq&tG“֊NYca٧گ@vڴwۖf Lw5b5:L~INխԷΝ(Rgʗøõk& /Τ7RZ8@jŕkftGfը[u0ˠ.X άX}Zj9ɕsJ%{VgRfvwju͔FVX3JFUsܒU9գnwK+ZtZQzQ]^&u>ur2Ģ&̪y3ZYh啩RiEv{Z&x"3OrIT{V;eX]rĐ L^w'Ƀ+YE'^[3oz\f?Yb{G:UפsUҭ%SmXoģt|qfIT⒋,OIkR2^ԌgRiX䒩ϵk0u0jItN,*vIHs޳ۦ502pszYT#-R2]~Cfu#t1ݯKԷe.fQe+YE'rҧ&l >w\qZ<ؤխԁS,ά;lVw'Δan|'ڵYc,֓[0̫g0:kjEu02ٝvd;b;O-I_j/SԔWZV/Jxc'Ζ;k3N^zo 8'ZգҌI^d4~ILYӏ6)'ot eXwj3s\No3 lΥ{VG2eX6)'O|;VfrY!󤙓zLΤ=:Q̭zZv ؓt,Iber| ;YcխԳOYmW iZjZ3=ԌkQ~)(Jԕ06gRjjTwJ=ڱqؔnON,*RQe:jFKglΥ<ұܒU9srzN-WI3N*YU0튒޻ttƦZo]:\*dwdZN3[qlp,1q5Cu Yt9I=C|`0=wHfQeHvC;yI=C}[z̢vmZ늛IeX-jMf!-O-I_jfQeIE~խ%bgcJfΜxFI=C|e,0ծftfZٝKlIFG2eX$IjAt2}\iԇJ9QP ɮ"fQe,Iber| ;}Ok` rk,=H4Wkfu-ܚruC;Of|T095xfeXt1׊oQ2l&ܝqA>ծQΤ?,zoQJBUZ;rx7SnMw:7YE3J%t f}';0Xj(gRq6gRt1Zܚru\T׌]0̢eX3JOj3s\yPjfQevm O(>{V2,pr3+Yc'CJ0>a]ǧVwSs']v/S>Ҋae:Zɾw% +Zg(ڵ^OMagO7yԕvs>x|6qO|;VK'ZQ+Ԍu;):qR-g@fQevs7;ڴwtZX}ZA󤙓{3j=jԌG2|;2ӥ ^FsxڮխԵolru]|Nˊo3(ǜv yt@X3y՘;WkU+TUگ\X:yگWVRU;Ҿծ,To'ڮխԷrD&wbd 5InYrkڮF,jW"64q؀%Qfu, ,@b:*$SZٝJ{^qqڵ-ԁSܒQf<ԕLvlΥXxnfՌ:O4IP2;twB6Kfu T$YԕrӡZٝK|os6d}Ǚڽt#jԶgROrIEXqD̢ˠ.X άX}YE'ڮ'C8d>Wfu گ@䒋0uo4^fQese%wOvfQe]ɮ>w'[$Fja+WqܒU9:*{J, VgRO/(,Ìt 8[n,L8'3S-X9z]0̢N6{Է$Y+YE'-*rf >w\qZ=B\,0ͱ[ờ3[jfQe^w9%s2,priFÌ+*2n`täգyںQ]wL4;g]Y7񘄷A>t%}\L%Vҩl,t:Zծw'89z7Ij֣dõkJ2%zŝ'C7ڵQQyd&ue2,OrTwI%_ IFMٙE89z|գ},q$̧[I=GY`yS7t7.Zϝ̢ZnwKYhjeXtҎekfQejV|&d6G4I^گ[J,O{VtqZ&,LKt ҏ'Y`;VI=cnY&Lp0XYt@X3uYfj;fqYZǵkٝH=XZo%qGV[.bH &c/;dXխ}lJ&dA*IҵխԶ*JFKkD?,}a9e,ĢfN\;)+xx55Gv" ?|]rĐ L^w'ɃʱI=Czu4-u FKn7ڵ:DGau0ˠ.X ˎUu͛`ROQ=$|aH˵kfu T9ٛgh#%xQPAUW\ٱcxqX w:Avtau0uA&*wjY3\Rgtt jڵd@AHjˠ.X ˌ+S`PM:yjթvlΤ 䒋0֊CTviWĨns;խԵ%dg|ooISZܒQfzHj;Okfu-'Bh|SooISZܒQf|#g=Okfu-'CZ&_YWϋ4قHkv@I( W^i֊CTU6V*w=h|7]\ǜwnقHkv@I( W^i֊CT3I9uzzԞLZnwKMw:-'@fuڵԁS=jO'/'azw/GXFu)t;V2}8Fu)q؈ ?Z&_  ,@b:%ޓVZjZNLǵk/}ڴwetq؈ʗ+D@\$1V@䠛uJիRZٝKI։s7;%*^7\q&՗@\$1***68X}]z⦛zn7>*vfVgR3ܲ5Ih|;j3s\~B]_qܒU93s_77\TZv{7ejV,oҊ:auzϝSMA>޽lT?!I,ob/ IFNծ޽ooISZٝK|FrD'ug|4ٓg]}zS_=rx7[6wؤ0խԴ h ׹ez1JR{VIVgRҊ &W[eV1 Xj'@OtvW]II>wMKt"51#.**e`1UW\ESL0TU4UU*;ypA拃 0$ UU;ypAEUU*;+RTW|kWak@ttb RTH4;M3Zq*vkvڵeNխ7wjֻ;Vb̃A޽t nYhǜv"G$zԚ+D< ,@f,peq4 Lfe$sQewKsZٝHrD&?$j|\f}NZܒQfzHj;Okfu-'Bh|͊I>WRlʷ7 I8h eԁSܒQfڮӧwL`>{ڵIԹI=G{گdtйI*j䒋0ڵNŀuﳿuL~INծftޣwZJvlΥB6w3ǵkrIE^ju%,ݥphЖB|Ռ&naݛbõkf$M:]g[,X5qZnwKcnYF][J,ÎbT[ŀTjj($]b/I,u%k>wNr}L~ŝ'CW|(kQei3sQA'.Caf קB};ܲb| 8ej=\}'CrITگGJ, %L^eݛ8JfΜxFԷk>wLm=<`>aݫ\}VNs+\%VI3'ٰgRz< ?MN2 $f2;}Ok+Ըsؓ.ڵIÊG:*{FI敨n:P| 5{6i1ekr:Im3Rr| +Z9natӒWGڵ:L|4ٓg_<ӥIL;t̼nڴwn+PZٝH=Nf$ 0TǜvG:s5&ۖznVS]rĐ L^w'ɃɾwMɮ>w'\d ,0=zb#-%i!j@ 5d2| tj2OIW@+XۖfvW]ÿL:NOY*lJ&d9zviW3fI=G{3| fnjví^Tupg 2?$j:s5'޽UrK.|TܲݫZj96)'L;kaә=%]5zp5ejq ?aә4TzR]rĐ L]FVYZ&4ޕ0t=jan|99IЄog{FI~YZܳ5{Ntt|Tz0*fw6)'Ofo3l:Ճ8"ç3Qsˠ.X ˾`WqSbT6=Nf$ڮխԳOYnfpyS3ekrӤ 5.w'wu&%V|aN|,kޝ1PO;V,qShJD!R#],)wϛ}&%Co3;Nf$ fS3OZ03}XB%HXڮ&<ʙ#o^ $f2;j\TU O]z94e[gR=+Wq;Tvç3Q{ts+Okfu TIJ{FI+Xۖfv$ܶ]s>CtZIEu |\fLPɼ%Z V|.Īo8گ6噭wӦ* j6噮*v,HrJiHʹS3rx7CJ`;lROQvؕ ,aә='CT=֌ bP$M+ T@\f3:w'u5P;nGc;QHj,)7@\$1|,啮 3Rjj{j@:s5'Iʦwd+SspI벾4̟9^[3i:,wJkkaә1%;UIOaӝO4V,tj2OIW@vlΥ$/u5--S։g zۡ5댹Tڵdfk|$ܶ]s>G͊I>։y3G*]'VzڵdA&*0C|}&گ:ٕoᕩ1%1¤rJ"@P<,u Rz*=aRc; waә4\f $f2;!J>>խw+3Xcᚪneڵ:*{FI;Vڵd*rJUfVTft x)WjZNLV,oӤ 5.w'͊IGvNeGzoV|Yt9I=C{2KRQ_8d.3Yt@X3w jֻ_q Pu#.խԁStj2LR2c5fV,o:Im3R;w'͊IGvl:s5'c5fgz?Γ͊IjZ7Dy` "ç3QhP3j,Ibe 0wek]zj\TUrWRjVgROaә3fw[ekrӤ 5.w'wjJݫRw벾@ͪ?ΓΖqeq 8?8d.Y]< ,@f,k]2KaW ս-%]'%u)]3G ,tvlΤ ç3Qc6噭ݧI=w,wtfS7yԕっG]zj\T;0jޖϕv_*L~ŝ'C-I^ 3R;IE|py` "ç3QhթO.bH &c.Y+Ze~ 3R⦒ڵ.t7,®UrWR]3[̧Ij@:s5&?,cnY=I=w-Fj\O%3qg7w벿W8ڵ-%]'%u)*T:N:Z\f(w78Phwaә4eLSE%]),Ibe 0wek]'\fN޽O]{tԴ fS4UZٝH=Nf$啬m3[Nz[|.Ԏ2?$n,bz87j\TUrWR)Is+jZ78Q,:s5&oQJB $f2;=vW5.*i*9+Ov_*O|;VgRO;Nf$UךWvqY=Nf$啬m3['K2?$n,bz#=vW; 3R⦛RP%]'%u)*T:N:ZjZ78Q+cYt@X3yܟ&ROk*wiZz1 ̦E%9 $f20q L4Xu@\$1YʱI=Gcn2vN|*}[3$s=Gܙ{G啮ft}n2fvlΤw>qծ,nL=E*øԧڵΒfUo17 A*qZ&Lv&ܝo ,@b:%ޓNխԷt7&ܝoԇvaFI,Iber| ; 5dq =\ؤ=ԇvt 10Lt@X3qjt J ']OzΥzc5ʀ;/'tt jdv>G‚W/ -Hd)* ,@b:%ޓN|gR=-TqU3]Oç3Q|`w[kSj֒C9ӓ,(,q4Kz)UWI]&ZIs S>j͔FV;ݙTReI&e*LDKw6)'ON,*ӍOoaeVOoHA.q^Peo4s| \iWI i)RWfl n@ʓӦ* 7A'a-ؤ>t$'ui+n8NLC@\(HP ,qh ePo7§(nns+PWG[oO{]O?,猭WfvKucu#}A3ڵ;VMf#z{;ty3[2ǜֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵiy85{V ,n1xB\}diڢX p^F ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵix3R=;U/A&'kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZp5zp lRqomםa՝a֝a&`bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_logical_volumel   e =ailnorst"$_cdhmpuACEILMNORST[\]fgvy),-./12:;GPbw#&(*>DUVk{|}!%0346@BFHKYjqxz'578<+9?WJXZQ ψxJW XH&@ XA,0S`+(o^UzN77V֜#aWdټڕB`PCD@;BmJӝr0x $Bd "8=?`+ ǁdQ(L1D@ƒ"X`VYG}7Grt w7q  JKO"S g%u;< #e.ҭunot)< #cI.CףtE(1؈ ""XC(jVK姰a\ƸB:e.ҭy+L7R4ZI|{ZoPVoJ,w*3ʤ/(nJ< # YEJ LQā)@P_Q` u`@xxJU`8-4`"4ф'Au (b.QD DC H@XSZֵkZֵkZֵkZֵkZֵkZֵkYe/5(BB)*ƶM+|MҮntԸQ>yǻ8C kZֵkZֵkZֵkZֵkZֵkZֵ`+8DjVK45QwU X$\,%E]:5kZֵkZֵkZֵkZֵkZֵkZֱ]:5uki%ո|_b7t 0\8:1w zN'%ռ1Rɒ@^l?)|$m:Auoe/N9xW钔l9唽WOUuz<Fy \3- L@D%7%[RcuRHt3f&^-=݂^qt-<}Ҷ  P,3[?kfpOVS^uבK>+jU/'C9(.<^v٫+c0;9(.nr]lA3f2_+|uRnr]nܚ}T}8HtrP][ 3HtYӫFr(8g/J6e唽Wꮯ5Fޓ|NI'VYuRHt3vYK|^UzW"\N:=TWOUuCk(vID䠺LA3f2_+`5KPV ,Yw>>'C9(.v*='C9(.rMӾVzN5sM G\wC;׋]QkvYGӋJ;[?P|NFpg%հT}TWꮯJx/JQ[qwNUR7+u;,(=#ӑǧtnҼp gꤗ9NҒϺf=$m:Aul9}Ӣ֓> ޓt꣪SU;='C9(.u:sӽ),E$ŭKaTWꮯ5='C9(.џJx/t^YjJ :zt5:h?uz@Ϊ^JύiUKO;ʪ\7+utD`? ޓt꣫KP|NF36 䠺I/k9sMWDhV麚ҥ- (okMWE+ qjQgE$ů^.%t-98Y}Nc3$m:Auo}8ʺRY觾=NTօe:AunT9t3ޔW>/YCzNWjrW zNrP][N%ͩLI|$m:Auokкstq^%U p$WU ;U+&4cbYrb$0[7s2ZuR\ =U⺢>F;Gg%պf>6.BI|RI/kŮqlq]Qk#Zt37ǪVs1 gN%t˓,wrSn#oIJ zk7SUgzӒWJ>&ØA-U,3YԣXg#F@D;Νh-dV9L1Rɒ@^S,+p,ԡ Y*$GZPzGCYFpk:u}_(:1z(U/e: 9(.1nsH*H_wJWt!$W:҃:YLԧ'CYӫGI裧}TV;G3䠺nsʮΕҩe!!}ZҳzUI'U?֔UӫF $yOoU󜧤U裧lvh 䠺uR:iUK9L9O8/t 3\Y*$[˓,H_$W[?%nҒByO;8/Me: YӫGRWU/|z˪*Q3 ۓ|@Ϊ^ޫwJKNvñ溩|ɳK\W;.WJ^T6 WJKNvò[?֛tIcKi'kEe|qwMGM1wN$G֓>gKt!]Te:vq^rn.oJuU/|sRC='A:u}_(|wpk:u}_(U/VðRx[|]Te:Ν_W=Tuz%tgTzJJ KgU/|Y;A-gMЅ3+j@3Yt!p+j@1B9/Yc1 E2K&Ha9z]L֓>鋩uRY˛b}neK#oIgAuo}Tݚ!!pnL;٧/ Ӭ90vBI:QUeɊLrΪY>(ϋo$䫬='CYӫFeN3U/NI.ƮQꄠsJJ觚e;gjSU|:[4]@úVoZѣ;˓,&4\<u_(UOzqr,oN|eV;hI 7D|>&x{ 3nMi+-=}^deJYh='U4_CMOMptӗKng.ot z)%-}Wm>F`4Zu1viQ "|2K&Ha9qiJg)77usnr]juQ_(oIպ3:T6 䠺(r- $qy$gTJВA.F|$m:Aul;,JvKgrW9p/5)Yh='U򎛪f+N 3ZR)Icrb$0+7ٖn4:WJKkFޓV˪-i<=Wr섍'C9(.Ig:ԣ-گ=iJQЄuoYӫF59+KPV=Tuu_9zҔ>Zr8Tσw+7^^U]'C9(.IcN,9@pU(":#&*Xy2Cҳ|MgQN_KJQOJKkFޓV˪-i<=Wr섍'C9(.Ig:ԣ-گ=iJQЄuoYӫF59+KPV=Tuu_9zҔ>Zr8Tσw+7^^U]'C9(.IcN,9@U(":ɊLrfY2yӪG=),w_ zNrP][.[?赤O_9zҔ6 䠺%t꣫vR7Ojs(b9FwBIսgN3U/YCzNrP][Q|)JP(3iӺuR >޲tޕzzoJTuw36 䠺%::3ٹuK&Ha9zVo,*Of%ǃRU/'C9(.Z{|,9@k(.LTd3?iKܒWJk\}(Gۓ |ܘlgEzyA{xY[:{JMk(;ra}l;g4}eҲRdk'ƼuRO;JڼGU𑷤g%ռԧ^٫+c1 FI\a g/J6e9٫+$וּ}e(;kIi(vIgAunf"aC Dq!Rɒ˓,7Llv"0D2<ڕRs9iIz+OT<4Ԧ[ONI.Ʈ1U|hEɦ$m:V?$86hɖq@i%$*,TK@Kik_tj ծ^6NJ m@&"`?uk9(.nr]fgNt𑷤"WL0xxU:묡='AL<<*Zuukj0$<H䔰ZRfff$l3 PF6o·h~  Dy!4# 3LMG$Oc?k._ J h[2dOE6H(QŴ"(Q%E 0y(PA.>y"tD !Cfea"b'dG"(P@WY4ATB$*,-H5$OF "*J2'%մMKrP][D8=;8 h&7(5G+R`3|N:M;貴7@i"*8E "D\@1 (%<0 +Wr[]O@C19(.nr]cp,Eeho E "TqmDQBg8м#(.ⓒPHLD@ c?ukq>i@y!ĉqZ hEQTNJ hZ9p-< Ox@& q> ˗  Bˠ!\n .%E22'K?֛\5q@&|- .̅Og9F᫈&Pj$D &$c?b^_'tJ}T䠺[@䠺uS].hYj3i@y!ĉqZ hEQ7uD䠺uuk7/[Aumsg KQwF8lVrZ*d*Og5/Ae:V2'K?IJq7ifw@7N-i<>%Xge᠞d2dO/zQw3|dƌ "` q{tt-5/Bvj2N&DqgE+流kIiwAqw@+4'f$ ̙şH5$OJE6H(QŴ"(Q%E b#&PKkIiW;WIfx  ӕӌe-IRT\snr]`E b&"Н9(.nr]cp,Eeho E "TqmDQBqσy)'t1?YS].djS$|tqw@*'&7Ƹj9*dg|k#{?P(5䆓(Ppȏ$*,Og–٨;j ADYr8;xx`~F AD`ɑ>\Y;5'm@''t@PhWX%5)RkCi4{?=y|4Є'A:i2'K?ӢMDH(qCTdf$0 9GP,< ) hRժD ᡹$*,~ǁZs',X@ ;&P8?k._ Da  aХB  LR貴7@i"*8E "D\@@1 (%'tZO4O5)D !CyQP"~z (~zE6H(QŴ"(Q%E >xEzyA{B"b'L.VAz:  4$nl._ |($m<ɜ gP^BIn놂9rJ t$l4֝ro 4$nlJ 0S|ڀM(/WˆFM <<U`HV3(/WˆFڀM(/WˆFM P:6貴7@i"*8E "D\@"8Be@ܽT:wӌui'x "a w B@ܽT:wE>w5KҒ) R px BOVS; ~z ADA(/WˆF\- FέThJui YM@H*Ty!DAG$4g4{ kZֵkZֵkZֵkY%]U/|V^g)kZֵkZֵkZֵgNt*Xp=,XO? gNt 8Tz$ȐgOHT [|rx) Z@T &,o@!#aF"R** Pyaȍ&HH RhV)U,1gR9a4k0…L%G (0EB%@ Z#(KYP ;t (:VoJF "*LxREiAt\)` Yt!pFqŝ7Bg%3gTA⣑*<c)YkF a@$ @$@0"80CHC1$`"D0 b,NLZop? c­ۓ,S 4pa3`ѣKG @? 8Tz$F,8Ky jS#oL"0@pxx`~ӓ?#"@kP ˗ @`ѣK@haDaH LR貴7@i"*8E "D\@@1 (%'tZO4O5)D !CyQP"~z (~z$@x= 4(X0$@x? şH5$OJE6H(QŴ"(Q%E >xEzyA{B"b'0h¥&Pj# &PᥑHT YcS].l7/UVꤓF 5/UVꤓgerQnI< иZ)Zu뵹~ \\- FέW;[@áJs&DşH5$O9sy(zU$z^"I&?<%gis9uRI h&7(5G+_4A$4BDy!Pf{ kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵ#sy 6tYԥέW^̙gTOADU$&DşA貴7@i"*8E "D\@&Ht3qJgVz>&@ܽT:unI>v0D07Vx+;K X &D#"8L}*<|)p,EI"e Hpz$,)lծ]iJ޴Ng|k9ۓ֔\JPD)AڀMiJ6 0 iJ6kJPDXUN+Cxm4"(Qh DP$J@0 3P2Y(?1wGvkVsg(P14V~z JPDp,EICI(8idGglg`fHpz$-R貴7@i"*8E "D\@9p/"Se(PHLD@ c?ukq>i@y!ĉqZ hEQTU|) n8м"L@E  &%gO7 qσeB{=93n8вů|w RP^uDD0 DOAЄu_(?Y4A$4BDy!Pf3Yr ރ $QEW-2'K?ƐjHN+Cxm4"(Qh DP$J` 3P2]TZO4OYP\Yz JgWq5ibl|csEW,/q5oTLMnhf/Z? v?gL݅kUg^p֫O]ige,q&AˉQg%bFLLRKX3tMW5? h_d֫Oo16?=y}yRJR;Ĩ#&B&DqgN RhVgx5~'?֫OE16Z? igeAgNFQF+7 JČ ̙ş::EZȬrо֫Oi?h_BkUо֫Oig3˗ТJZh(=# .\J9+2d/2dO^REiAZ? OXg,^WMj5>?t\+j@/&Z~BSFr|BɭV316?=y}VRX7 JČ ̙şZ? [JKj )Aiy}VRX7 JČ ̙şZ=\5m),tE*RDOgZR)Ic>7 JČ ̙şZ=\5m),tj )A{\ ٨;̙`5ҚQv{S].Fέ[MS?ıKrP][K9-sJv&|$m:Aul;g+gNt3g%'hD&%Eլ,n%մMK6+9-FDn)LմڀLYjHi@zJtRK=G6/SV#oIJ }e|Sz|\5r+{Uu)i3[?(VkNK\rA2# #oID䠺p9D\j0 rV$m:VڀN6NJ aVi4\дn)L| :X7BFޓAuo2eRi5@@C2 @ʅiAhRժG v꣓O $m:VӚ%մMKSY5d֮MjSp9DR<ӄIU](#qp-S:_(ܽTriЄ'As@䠺u*uk&tLtI]5i5gn.qJgV- ~ 4B"*@qp)*;? ! D@hJax,/E3VC&DqgtYZi4B[@i""TP P b 0!1υ[OrRWQJyQP"}'GB a eÃ?D /nd$m:FP][NJ(a jW0YkNGR/U.5zN0溩zӐ-]kJ3Z^W%\xG-)8OB6NJ gMVIϢNA?Y{?5/qp-S:_(#p(t)Pn Є'Ad >Dn)Lմ<ɑ:qgV`8A:b 0!JgVԧVsfD !Cqp-0YzRHt3`D0~q{S:m00.RS:_(>6 䠺b&}'GBp@BHVkw{}!34674zGU󃗦7|ꇒ iM^Ьa`0!PqjՄk4_JeEJl  X.>hЯhV.c'|}+8)Wզ7õYax(Q=ZʌJ UqSم=VW~BQܥp*{$ ) J&,\2©*(B``Po#0`8 yϠ08!Cy`p&H8yɹUSA%>LC"b"8=7p"f (DCa!'(ִ+1WNŋ ZS>FO5ua(<#ӯa(I_溲SDȕP-_ĕT,2%G" hW%Dj:1T,2%G" hW%DOT&DAmYXJ:@)%0İ( V5X,r@:," klܨTyB-nɒ@nUTIvO3,5yTC0,,`QsgUt]L @v.>^s6aB&-*2UB*2UB Aೈ&<1rLZ R@(@h8 VÃ#ok2 њ(0Wy('ͷ5"`rS.X\ZL.@b aa̦`2 2"2FDDdD@(Ȉ@ Ȁ(D 3meXeEHmy$̑LTˑ0dys6Y5/ 3m` \qr"DP6^2yY3"$dl((+9ok(HT$Sǒ&DQ1BF9 ,E,JKZ9Y䌒 0܇ԑ1p-sfʊ>YC;Wuudqs@p |afs|j0uy5=ڒ>~Q]]O'>Qo]~2UCΉDSЧGְ*X-ܼMiOEd;92<)!m{ \EWb-ʫ: .g&Xklܨ;I)Vsr# p({Uv3^&U/R0o3.|D?A%>L,,dbɜRNopyN.Md,*z۵^^zF ?fW {P"0*f䋑9g8)7񒯧YjM4]L!n f䋑9g8)7<\0ayzZW}ua@:uwMdUW]OB .g&Xkp 2HQfY'N7B-~vreԛWjg2aeZp;tC ` .\8r]u! hE&s5J:qfj?;92YnU^Md,uw);^^{u^^$  .\S@M͗]O?&f,pԛW!zԑF ?Rou^nԔTfs|jfj?;92Tt^ !Xxn0:@~hE&s5_32y O?`AG/M=\# z~K}ɖs+;X˙$db$dl$P 8p " " mnC2hE&s5_32yO'>J@z˩SA%>n)X u_,,dbɜ JK8QV :~K}ɖ:+?rUZS膕yœJuzn e6O $Xg3CtN7UO>>S*e6O[ pSIvO;92齿{ze:~K}ɖ9ExEn S{E,Ty3F:o֝O?^G`7(L{øG'>Ka/!5}@D??u_,,dbɜRNo(W}O>|U-GX(CٺtzBo{z.%9zPrC:>NQ}:~~}t'>KlCH(:°i)<d,l:c Ӓ؀(D^,a@~D .çXVC@ϸMt2HQfq\aG.ގK}ɖ:aЇu= t}k`u<<dO>|ב(]領]L=g2h@{[@ ߚ,,dbɜRNoSs%%Rou^@~}YJhE&s5J:q!9{+8)X'GG~YoҚ}+8)XJ4o)JKHNrĤJ V/5?_n%אF:ߠr쾂\X;C2H~X(E,Ty3Iw'J*GUSЧ nԜ+K}ɖz=^‹!yY?k0Ͼ5%r.<{[(YhCOF2D=(~3znRsE,Ty3Iw'(өRz˫bQו)m(S~K}ɖ{.o9zq`gGt>gZ@`ϾhE&s5J:qZ}:~+-=Fj߭`"yzͿgAvfV u|ި{[`".\eȏ2HQfY'N72zZ g%+ɇՄL"yy~? Sؔ{'NLVԂ=jI=IG){Nn%0Ner|z2ev[ry䢌oU=H-3Q}8ʻRܧ&WW?ZLV0I7oWXfE”NĺH_WW,3\"pޥxG p%a7_*JtaAh=^t=.z>{tP꺮kmFjОŋ ZS>FO5ua( hSB>/L50prK}靜aM E'+ DK2zNt"b̃œ"A!\ٴ+-ʫA%>e0 ү*)Y(h% I@ubHЦe ւ_؜|<M0̞(O>| ֛|)J8󫟁Uꇴ)YwՙƂ_ro:n_WW# <;tw0꽡_Dh@ s}Y^~]>}eK2.\=a(+SU$`j:JQ1$֔J*j}YZIW/ta֔>va hUVf*Vɒ@nUTIvO3,a&$ .XofE P`j:)&Ĵ!(00(7s0K}靜b m6CZoP>di6%_KH%* QG X}]XP!KH$"8qG(VPpMBB 8qGT,>3H8#mGaN{ 8#mG>)A ph X}\j:@HoP>5MHm6 S{ 8#mG?u_iCDpMB&ii6ꅇϸMtB#DpMBN.>H$ m6 _>tbR DpMBWԜ+DpMBWtfoMV6ꅇ*d)}OI[H$ m6 77[H$ G6ꅇƯ*M i0oZD .2¢x>@pYhܣ79v_F*%=E7# ~Ӄ}wwwwwwwwwwwwwwwwwmGjZE&.T,GתY2V%1[ŋ1[bYꅇb,of+x,oqf+mG$TX\̙/x:"u D"Tɒ@k•Md;927Хa,eKd2­oUIJ?3S膕yoY!Wtߟ}[wwwwwwwwwwwwwwwwwwwwv cWS] @AR(,L" o4o.A30c yo`i@AR"gH2(`T6ĉr勉gJB'y f_GKD 7J.{{jZE&P(DXQB%HZ oUݷKx*꿄Xf lѬlt dBa(N2US֔WJ2U88vՓ*Dl$ L] N&HL50p^q]ZS8X(OH)0N0ɿ[4kH$]撁 4hJ9G88''ȎrAw .I@M(N5[-5 .vre,/GH$:"t$OG&IvO3,9Â}O>-Vm4(*]3L&PTe D@6.\q.чy ]U:h Ch .vreqXX楤\d,\S$TX\փ[F~BÂ}O>-Vm4(*]3L&PTe B&Drĺ90y f}:~m@mլ0^n&,  <`1[5-"(HEES$TX\޽𫻻cWberU~؜AW (y+&jJ(:<#YbBҙ q{z oP>{VR &<ɐLy2vCHC6hyG> }W_(񒯧*Aђ9uzBB oS²S+ 8SqRr:~vxR%_A&7+a˯4J oUꅇɒ*F`y!KoaඒC7/7T;`y!F8FѺ)-75a@M"z ܮLR"zo&HIXP o !W)[H0s4u!.*f^9E5n.>lpp 5[4k*BMxRÂ}O>-ZS t 5JY72U•3I}PbүkX>^J:@Ҥ*qq^688yԅ^-5ckdׅ*3f1;7*Cs|[LR6ck{VQsms4DqٽhGE%a@8mf1;7E(WE*BG~u oփՔ^G"m '7E%(?i1{ЎJq&8bvoc~QG~u ooX$Tp ZA"d QGBmZ oHXHS8pOſBR<-z{ız?IXP!aF'i$TRڋ?Ci&PTf Lt16ӌ"tKf.]e|\ iP<)7s: awn:oW}B/|zF%_@ iP!⎊JtR}ab-<4h7YEZ oUݷK$oL]L>!+ra+Lm\a:<CP!)ե3V/wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwm٣ZS;C QG < fccJgG4x 88&pSϋգwM" L:D .C1P7%˖.%/<@஡MU|ߪJ^͢6 D"m*D4*<;d·g: oԴLR"@d oG(lѭ#;7U x$0ѡ*0$pnpSϋu~f꿄[ Xf!}q16$2  W(QCs;7Uq16 vn1LMvn1LMɌ vnHn?Ci&PTf Lt1Mĉr勉p/t]aAh=]iO6 @T6D"m*D xr^ͷ \D$X(9z<:eJ"0zdJ. $X1'IbArѿɿN4nD Gf,Wd|<qB%F&.G &.Go!FV  wz ^٣ &)Ba(<`iPszUɿN4nD Gf,Wd|<lѬltɋyov2EH-jу;eK`" LS 蛉a(JNoYޮ<Ku'i$TRڋ?Ci&PTf Lt1yzZWa<9h.Y>e]0OХyGD" PMhV !LzJ2LaB(KHʖ2X\փ[F*d)}OI\hЕr8p78s oc@%' G/)8V 9~,3Npyov2EH-jу;eK`" LS 蛉a(JNoYޮ<Ku\U3G2.,bdb@I09E4 ;92ť3c[]:lM` `5[4kHf .d\Y1b;ǕG8pOſZor酪g&XoΧJue؛ִFEAA*X=v&9^or%9x+|eP ne)чC]ݷ fi|SܨOo4%FĎ yo[4kH1sHL,G*`9Â}O>; N&HB"\Q.*"d*[@d))Ƀ&,\Dr""-r *@rHLQas-hmZ𫻻d-L?{JSv洦aua(*[ Қ\b@9R+<ѭ)[! Q(#s?bL-4kId;92 4hJ9G89azVId;92-4kHLFÔxÁßX^}&S `X.LFM:ӻaBJ*$pnpX^,Y#EM:5}rkw0FTH5ɮѭ%' G/#5 aybVY5 :uNߜ9X_BVM&t 5}[! Q(#s? ,mia8oX>*M >*M #5 aax@F4(Ѭlt&Q&Q`dFV aax@F8-5}YJ 4hJ9G8a:VpR})#8|[PF>tbQWwwwwwwwwwwwwwwwwwwwwwwwwwv,jQ}8GB[wwwwwwwwwwwwwwwwwwwwwwwwwwm 0ѡ*0$ph䊓 d5BBB84%FĎ '7E P`i*Dc"@QCZ@QtτƭPWFJ2U61]$% 1\h<)p ͣX(Y0YWr~ΧJue؛,tbAWHXHRZD . V=p^Gu$|8yi"]3qccT,<ͷQ)6:Q9S,smbT,smR>)oXͷ(Y0YWr~mΧJue؛ͷ,smbAW6HXHR/HAaBE( r:M5Hi"d*XbF,TPh ; %5`(*]3%z!HE^o+տ:FJ .9Eϝx9{Uk®Y%A%>\}E0WCчCV>zɿZ~Sd}Ղ]t;HSoUݷ fi zgg&XHaBTa 2> &8bd"\هpsUPI,D H22PXaP2> 2<((o@t&AGA!AGBm٣ZB̏[! Q(#s|[K}靜b@u!AGc!?[HAaBE( r:Mo4\f"`'-5K}靜c! Q(#s|[K}靜b@t()KHȗ.X[wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwmH1XJ45MO?Qt<tU-(p=H--W9uQtτ.FTQ̮(ҳeJPH -I>諞|𫻻oׂ٣X褽NHH fSdNR@#;7U177Ts|[LQAf+hQb-oX/S{?𰼙f+h'NHEil!h'8s Af+hqb5+f,/qf+hvdgqf+hw[h6:Gvn?,/szUF 42EH,p1#H*(`4KH<4Q.ƩF$mҌ} LWJe .vrepX-" LAbe|+Ei#>}VH<4Q.ƩF$FJ2W6Af+oG1\ҙf+oH$'ޙɖ5- ok(04D"TČ X-EPrZSQ H22PXa_ ǮrktU2[-iML D44OſR.A2%˖.x-5΂JQFqҌ}=%s|[T,>oX,.ޛ%,/Yֈ<1rS@"m%ٛrJ2B0'2,)iFUS>N4n@I$TR0DbD̒&`ry0~Q*HbԬ=5@,(ﴐIvO3,#i&PTfJ ,+X.CMyԑo@I09E<?( $dt́n]V]y |vOqH$'ޙɖ5- okyܹ-) @AR(,Lc 5wRGϺ*}^Z o4\f"`'hH20DΑeKPD!n$K,\KY]6 @T6y:) zgg&XGjZE&Dr𫻻oInLՆk9zQ.7zY­ z=[ (*]0yᡸh6:D .&Kyo D"Tɒ@g_TIvO3,&pfH$'ޙɖ؜|ѿAAA dݳGτXf9Oԫ؜AW瞻 2FN}+ F l03Jjwyr $`"*,.gҚ\d,\S$TX\ZD ..4%FĎ oO>- N&HMZ0~q Lt3@AR0*c \+JgXJ;$w tpa(tU5phM)$L>vx @T6~>n.^]X xw~- CJHNr}q<*z"AR2H.|G hf1>.|͢n4{DD"m*Gz~(Bzy9UIvO3,cO#,L\Taqa$tR Ltŋ*<qXXփ[7ՙ3;GE P`j:)$TRȷo3'db%@92@Mʪ .vreZЫfO?ZK "t;RGϾ5ziMGRJ'ZҮ'Mh.ެ*tvwwwwwwwwwwwwwwwwwwwwwwwvЭUJB0Vxâ\0%Cjᆅ]ݴS lrsoםa՝a֝a&abm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_backup_profilel   e=_ainorst "$CRcdglpuAEGILMNOST[\]bfhmv#&()-./12:>PUky%0BDHKw{}!+,39;Q/q伖JL f1z$W(08v" 8(@ AB D" _7Zs\ڡxOLa' &L1H?xNXHgC@e\t^CŨl ͽC1""ze19C`>" DsͼD@(|PAB"(0<_:5>ud'.5}a(`t,ѕV .k%0, @i!FIQ!\5L GHagTFW S RJ $03*"n4y&yba(d`XZ58zt>,"& y7oTC$0 G=U\e 2ØA{t3RDDp 8TQF4 Qy2\(Tc q!F ҲַE,LҲַE,$DL0˟TJ#Z̲y4HaQ4 V+)D Pj`p!'eDȊ&4A4!qyPEXQWB9[H*(51Ti$C@Pppp:c.c 8@ѠRZADH2ly$ 8TQjc@;@Pppp93: ˟Dʏ@AAC ʰ4.'˟層L LB 2"(~z,VVSzי}-\e#8e 2ØA{\fj[`L@G.$0@kc 4 /tc \"5Ó&*(ЀugE,LYy Ã#Ɗ£ALiBb4B\jwI35,L^ >t3RDDp 8TQF4 mԬO.*M1#ZYM[&Xe7nXH`#?d#JIIA`h\O0yWh8k^,9y|e0%19y"eFof=]&XC4qݽQ 4I*<#VqӬ'o̽AfX؜A{ԔMAffQJ|fj^#Hs Ҷp'9L8nި11¤F*Pɋat&4Lh0Xo0~2;I)o|| py(oU~2fMd;RfYm^n0C$Է-92Y1TzcA2Ԭt3R&Xo"&fNL~0V >M&fNLN$Fe[8F9JV̽AfXQ̽AfX؜A{󗾜*YNF.֜c^hNRՐ<ƒ 5E2ɍ 1g`̽AfX؜SQqyaG^|*nLV׺+jJ&3}a(~ð8R#\92bdƀqQRV0~IvN^^rV^O8 vKr&Xv0V >M믝윽iɖ);MIj޵PHl/[WLKMIFn* NLyc 8Ҡ`̲c@8ƃ eY+?*n|f^,s޵T8&\HadƀqQRV0~V[+}MJoZ`lJ&w/&z+9ꚋJ~X@\HadƀqQRV0~ eAkŮ̽AfXA{7zɕC6S)eAkvjNnFeǟ!QU 0d &HajVpʛ5a;RW7L"/PY3P^*7to찼ZɕC?i&* qA&(Ty2CRV0~ P7zɕz\K؜[7sUCreus7z֮8/'t}aNqDȊ&4AeL2Ԭ7zDȊ&4Aj>9/2z̯j`}[4W (+ڡǟ`E4$*νvnx+$ C?Xā¢(4h0Tܱ1Bɒ@Zskk\s/PY91s}a(E ڬ}`rñR "D8ճOez^7˜($sV0Xymxq ;I'$p&(Ty2CB5f(ne{'g.5z,>7bԁ)/ks:Ïʛ3]N't93:7zi\fSc^@W:ٺoல$ <@d#JI2 &HajVp)81^qW2c_ViU(Q<@cI$*<,1Bɒ@Z"d(+qRbV(^,f̯}IXJ8>74֔Sg(~T٧s]MXQWizcJHPw9t;պڕ@7Νeyǣ*)tW?߭q~9O6rQFg;TDKF-H&fU*򞤙]^2fRf*]$r'j R K^ԭ,3\pJIs%vqV⠾e^RKF-H5 ^>}W'y MJgZںQC<%kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkO <'$% <hĈ9/PYj 'ˢ%7 pSw|"h 1Rz}xSNZ̋.qiU̽AfXs/z,XJ!Sw2qU]xT_8D셭S.|_W_58qaK]7z d C4T%nɎF3P^Ï <'&Xfʛɋat;SbL2jeM(/ʦ| ֛g/).zN\7\V<$;3 .9Nz[RvN`R}gesu|)ji٫Yu7z **$:ZxOSwI@3LJQ^﬘kS55)7}*%o:ٺZOQsL8ZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZִLJQ G=U\e 2ØA{hF L2g\k1}AAah" Ex4*Um@d,Q50+ Vm4R Drn(4DMJ)@F4ıAzsҹUj=B+f^,ffv^% &"YӺ8Fj!(,1 H$44ՙFjjֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZP[5)ճP4;%.7jXE3^QZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkOHQ t3R e QbF OKZֵkZֵkZֵkO_[ӺIxɖ kZֵkZֵkZֵi5-0MOQw+FQl6)"97WE"G&%@d,=wҹ؜[T8K @L(DSIG(<$(*T^ ehA뮆`7q?m,XJ=K0`f Sw]у[ DMHɸA1 #^#SLbYW^$Խiɖ)wU޺ڡ^(baB'FNI"i5"HPTgN[A 4 [RQQ^wI35/Zreou%A[/PY  ](qjXX^4'^vN^+j=1F^(h#5„Ol6:5f Sw]у[ DMHɸA1 ï2td&Xx„ObppDta@SI$M4ƤU ?61ך+YP?ׁmtV=u‚ŴWQVt92HQ 7ẕ9@ ]@8K U:A{C ?j5pIM1pBO5 }o)YM[ ea'F޵/9yr`i#qAtR Drn"PqLD /M1,)HEnv ڻ'.5Hth^(e L`$0@L(DSIG(<$(*T^OVVSzKT j`E(04y@l^e{@5 $O p4bDE 8Z2Ԭl4e@@1 p& 4@nN(*CJ0DH*(DɁ V ̯hf ]MOVm4R Drn(4DMJ)t jiLK.$@4.e]1oYvBKļPFY @L(Dh-E"G&J@D☀z (/J x Eغ]w|y)\e7yAzVSRQ5+<eƧAHi"x8["(J޵2౉E O P D 2F WYYb!|y00V,a*0,H+NȎzyw^#5ՔlSIĉpLT03j(y8}WẕɊQ?Űqy^,f Sw]у[ DMHɸA1P+@F4ij!'j̜K"ѡx$0@kc baB'FN"|;bTI"@y<!xpf`7q?Eܭ9Eh@Pi]S0^#SLbYWk}a(iœe\ׂآ^v u^]y(QJzɕs/PY3SrT8K#Wk%10QM'$4W$(*T^Ű WFW/%XJ9r`i#qAtR Drn"PqL@D@G%54ɦ%bԁZ 5et*a|˰B(DQE^ Ak]\}a(i DP„OE4)84$D)O DeQCv+ҍoW7:g!k,[ cr?'AHi"yۜ tY9s&L@ 8TQ 5聛[ ҅0nD䆒'л˜tAs+=Xā¢(4h0T,/D V₩$4L00 QHiH*kE4t3RQ5- Gtfj]3.h-E"G&J@D☈(^#SLbYRfwfN\j%мPН}mWN&f @L(DSI$M4ƤU ?ׁ,/FjmnN(*CJ8\fj[c7q5-[C0`@y!nH*$Ե&X2kQv.]9xRA.Y,J,/D 4PU$)SwJxX_Z!|yX06?ŴB:.+ۦd``#YbTaXt92HQ <"j p_58' DY $LZ%L0`P=Utf)"97"(@'=גڒ8qWѕ ըHsR]8窮wI35-NLf@l^e{q, F+یAfX@]&Xj'V@'l/[UӺItj3$Ժ!RַP^F޵/9h?[* ]]eZ,9u7%Z,9u7%P._5^J>Z_5^J>PIy2s;-UԹsJGҐZ8- 2ÍNn* /PYjvqP] z̰(ne{j&^,:Y^.⣌AfXqae 2ÍN4 J4.SrUUw?RbVQ1v+ EQbppAAa *2O,/Fj`+tqATPT' DY $LZ%L0`P=UtfBHLdXfFLՆj&&DMH&; .x5䶤|UtezVm4R Drn(4DMJ)` ^#SLbX/jGeIDfo%/10QM' M2ijkZֵkZֵkZֵkZֵkZֵkZֵkZֵ?Kk5a#Mœp{n@~wY ֵkZֵkZֵkZֵkZֵkZֵkZֵkZִᩂɔ`#-E"G&JS0`@y!nHe19ֳktFk!91s.5MIRHiB`a7q?ŴLAfXq˩+ /&UC0`Vm4R Drn(4DMJ) "k&AH\kҲ־u]Wuג%кeҲ^,fx_5^J>P„ObppAAa '^ԔMAffQ/C ??i8I (S ?'(M +#qb"AfX؜A{"ѧ oU[W*)tW\\8K fP5-qy^,mn nKZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵiZFAn MIDfv)s"ۜ +`щLK5XX,b@QG $0@h3b)*/Rv ֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ̰!JѨ8 "Xā¢H`,f03Zre5Mg^7HfjXa5-,:RnNT7 :.+ I$ԾYUc 8i!A`{7/8~2f'&&ϤM޻^ dᛞUqS̰*B^JZ놚1""IaaUچeA\= CzJuc=g^(hhWAVjpGFk0G ?wҮD,-J 8Fhn ȐHi"f(5"d" 8TQI  5щLKԧ5HɸB᡺щLK/Zre5ĽbXā¢H`,ax׮ʹ] Ľ`Q]#SUS؜#\47APXadH$43h2@[V[H*(ᤆ w_phĈN&fTjSњ6&&DMH&8P?5ZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵiX[issM[[T؜[#4Yka(𖵭kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ aaz3Sktq $9 GFjmnNI"i5"HPTem ,%F00MOQw+FQl6)"97WE"G&%@@ L Gy3]_e{a(|U/\K4`Q ŧD Bc)%s52# S>;ZyDŽiW YxAhRQsO 6t\@=L<"q\.`^4Cp٩O.$D4.7z ^`CļP˟W2aNFE"G&DɎ$010@גΝՙ(3Q AAah"@y!: aqWqF$DQUWz̰'#P^<𖵭kZֵkZֵkZֵkZֵkZֵkZr5%א>Xԑ×ںRMI+xOJ*j7 fj¶vq-kZֵkZֵkZֵkZֵkZֵkZֵ`pJ3JɆ1*MX ^dJ:O kZֵkZֵkZֵkZֵkZֵkZֵ<^ k꼐to(םa՝a֝a&(bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_add_backupp#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_add_backup.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_add_backup =head1 SYNOPSIS For creating a cloud backup: clmgr add backup add => create, make, mk backup => ba, backup =head1 DESCRIPTION Attempts to create a cloud backup for backup profile in PowerHA SystemMirror. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. backup_profile [REQUIRED] [string] Backup Profile name should be single backup profile. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_add_backup # # Description: This is the main, FPATH function that is invoked by clmgr # to add/create backup in cloud. The cl_cbm_backup utility is # invoked to create the backup in cloud. # # Inputs: See the "devDoc()" function at the top of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the top of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_add_backup { . $HALIBROOT/log_entry "$0()" "$CL" typeset -n properties=$1 typeset bp_name=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset available_bps="" # To store the backup rg's typeset backup_type="" # To store the backup method, which is cloud or remote typeset cloud_bps="" # To store the backup rgs which are configured for cloud typeset output="" typeset bOpt="" #==================================== : Check python is installed or not #==================================== LANG=C cl_get_python_version 2>&1 >>/dev/null rc=$? if (( $rc != 0 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1315 "\nERROR: Python must be installed for using backup feature.\n\n" 1>&2 log_return_msg "$rc" "$0()" "$LINENO" return $rc fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY elif [[ -z $bp_name ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): cl_cbm_list" >>$CLMGR_TMPLOG # Always log command result available_bps=$(LANG=C cl_cbm_list 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_list RC:$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS ));then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1197 "\nERROR: No resource group configured for backup.\n\n" 1>&2 rc=$RC_ERROR fi fi # Get the list of backup rgs which are configured for cloud storage. for bp in $available_bps do backup_type=$(LANG=C cl_cbm_list $bp | grep -w Backup_method | cut -f2 -d'=' | sed -e 's/^ *//') if [[ $backup_type == "cloud" ]] then cloud_bps="$cloud_bps $bp" fi done # Validate inputs if (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) then : # Checking the given rg is configured for cloud backup or not : echo $cloud_bps | grep -wq $bp_name if (( $? != 0 )) then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1204 "\nERROR: The provided resource group, %1\$s, is not configured for cloud backup.\n\n" "$bp_name" 1>&2 cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1208 "Available resource groups which are configured for cloud are:\n\n" "$cloud_bps" 1>&2 output=$(echo "$cloud_bps" | tr " " "\n") print -u2 "$output" rc=$RC_INCORRECT_INPUT fi fi # Invoking Backup utility for creating Cloud backup if (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) then print -- "$0()[$LINENO]($SECONDS): cl_cbm_backup -b $bp_name &" >>$CLMGR_TMPLOG # Always log command result LANG=C cl_cbm_backup -b $bp_name & pid=$! print -- "$0()[$LINENO]($SECONDS): cl_cbm_backup -b $bp_name & PID:$pid" >>$CLMGR_TMPLOG # Always log command result cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1221 "Backup process has been triggered in background with the pid %1\$s for a backup profile %2\$s.\n" "$pid" "$bp_name" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $rc } # End of "KLIB_HACMP_add_backup()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================  kuoK םa՝a֝a&K bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_are_pvids_sharedel#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_are_pvids_shared.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)32 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_are_pvids_shared.sh, hacmp.assist, 61haes_r714 6/10/12 15:00:28 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_are_pvids_shared =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:23 Last Changed: 6/10/12 15:00:28 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_are_pvids_shared.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_are_pvids_shared =head1 DESCRIPTION Searches through /usr/es/sbin/cluster/etc/config/clvg_config to determines if the all PVIDs in the list can be accessed from more that one node in the cluster. =head1 ARGUMENTS 1. pvids [REQUIRED] [string] A list of one or more PVIDs to use for the search. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_are_pvids_shared { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_are_pvids_shared.sh, hacmp.assist, 61haes_r714 : INPUTS: $* pvids=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i nodes_found=0 rc=$RC_UNKNOWN typeset conf_dir="$HAETC/config" if [[ $pvids != *([[:space:]]) ]]; then rc=$RC_SUCCESS for pvid in $pvids; do print "$0()[$LINENO]($SECONDS): /usr/bin/grep -c \$pvid\" \"$conf_dir/clvg_config\"" >>$CLMGR_TMPLOG # Always log commands nodes_found=$(/usr/bin/grep -c "$pvid" "$conf_dir/clvg_config" 2>>$CLMGR_TMPLOG) print "nodes_found: $nodes_found" >>$CLMGR_TMPLOG # Always log command result if (( $nodes_found <= 1 )); then rc=$RC_ERROR break; fi done else rc=$RC_MISSING_INPUT fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_are_pvids_shared()" es/li kvo'םa՝a֝a&'bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_cluster_rehearsalsl#!/bin/ksh93 # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_cluster_rehearsals.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # #===================================================== # The following, commented line enforces coding # standards when this file is edited via emacs or vim. #===================================================== # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #===================================================== # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_cluster_rehearsals =head1 SYNOPSIS clmgr manage cluster rehearsals RESOURCE_GROUP="[,,,...]" NOTE: The alias for "rehearsals" is "reh". =head1 DESCRIPTION Retrieves the Failover Rehearsals for resource group. =head1 ARGUMENTS 1. resource_group_name [REQUIRED] [string] Get failover rehearsals of Target storages and mirroring of resource group. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" function KLIB_HACMP_cluster_rehearsals { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset rgs=${1//\"/} rgs=${rgs//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_SUCCESS #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? else # : Check the cluster type, return if not Linked Cluster # typeset -i cluster_type=$(clodmget -n -f multi_site_lc HACMPcluster) if (( $cluster_type != 1 )) then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1163 "\nERROR: Failover rehearsals are supported in linked cluster only.\n\n" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi fi #================= : Validate input #================= if [[ $rgs != *([[:space:]]) ]]; then for rg in $rgs; do CL=$LINENO KLIB_HACMP_is_known_rg "$rg" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$rg" 1>&2 rc=$RC_NOT_FOUND fi done if (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLVT_SET $CLVT_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi else dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" RESOURCE_GROUP 1>&2 rc=$RC_MISSING_INPUT fi if (( $rc == RC_SUCCESS )) then print -- "$0()[$LINENO]($SECONDS): cl_get_rehearsals -r \"$rgs\"" >>$CLMGR_TMPLOG cl_get_rehearsals -r "$rgs" rc=$? print -- "$0()[$LINENO]($SECONDS): cl_get_rehearsals -r \"$rgs\" rc=$rc" >>$CLMGR_TMPLOG # Always log command result fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT )) && [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "manage cluster -h" "CLUSTER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_cluster_rehearsals()" E kꂿwo^םa՝a֝a&^bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_collect_logsrsalsl#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_collect_logs.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_collect_logs.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_collect_logs =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:41:03 Last Changed: 10/28/13 16:42:16 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_collect_logs.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr collect logs \ [ DIRECTORY="" ] \ [ NODES=[,,,...] ] \ [ RSCT_LOGS={yes|no} ] \ =head1 DESCRIPTION Collects the PowerHA logs and various other service information. =head1 ARGUMENTS 1. DIRECTORY [OPTIONAL] [string] An alternate directory into which the collected logs will be placed. 2. NODES [OPTIONAL] [string] One or more nodes from which to retrieve the logs (defaulting to the local node). 3. RSCT_LOGS [OPTIONAL] [string] A Boolean-like indicator of whether or not the RSCT logs should also be collected (along with the PowerHA logs). =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function on_exit_collect_logs { /usr/bin/rm -f $TMPDIR/clmgr.KHcl.$$ } function KLIB_HACMP_collect_logs { trap 'on_exit_collect_logs' EXIT LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version= @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_collect_logs.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM typeset DIRECTORY=${1//\"/} typeset NODES=${2%%+([[:space:]])} NODES=${NODES##+([[:space:]])} NODES=${NODES//+([[:space:]])/,} NODES=${NODES//\"/} typeset -l RSCT_LOGS=${3//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset dopt= sopt= nopt= [[ -n $DIRECTORY ]] && dopt="-d $DIRECTORY" [[ -n $NODES ]] && nopt="-n $NODES" [[ $RSCT_LOGS == @(n|f)* ]] && sopt="-s" #============================================================== : The return code from clsnap is unreliable. So we are forced : to parse the output information to determine if there is : enough space to run this operation. #============================================================== print -- "$0()[$LINENO]($SECONDS): LC_ALL=C LANG=C $HAUTILS/clsnap $dopt $nopt $sopt -p 1" >>$CLMGR_TMPLOG # Always log commands LC_ALL=C LANG=C $HAUTILS/clsnap $dopt $nopt $sopt -p 1 |\ /usr/bin/tee $TMPDIR/clmgr.KHcl.$$ if [[ ! -s $TMPDIR/clmgr.KHcl.$$ ]] || \ ! grep -q "kb Required" $TMPDIR/clmgr.KHcl.$$ || \ grep -q "not enough" $TMPDIR/clmgr.KHcl.$$ then log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? fi print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clsnap $dopt $nopt $sopt -p 2" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clsnap $dopt $nopt $sopt -p 2 rc=$? print "clsnap -p 2 RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_collect_logs()" == kxo,"םa՝a֝a&,"bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_compare_clusterlsl#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_compare_cluster.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_compare_cluster # # Description: This is the main, FPATH function that is invoked by clmgr # to compare clusters. It uses the "clccv" utility to # generate a json report. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: None - generates a json file. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_compare_cluster { . $HALIBROOT/log_entry "$0()" "$CL" : version="@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_compare_cluster.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM" : INPUTS: $* typeset hosts=${1//\"/} typeset DIRECTORY=${2//\"/} typeset DISABLE_EXPECT=${3//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset MSG="" typeset dOpt="" typeset eOpt="" #=================================== : Validate inputs #=================================== # clccv takes 1 or 2 host names: # 1) if one name is given it is assumed the local cluster configuration # will be used for comparison and the provided name is a node in a remote # cluster. # 2) if two names are given, they are both assumed to be nodes in # a remote cluster, though the clever user might give the hostname # of a cluster node in the same cluster as this one, thus achieving the # the same as (1) above. # # no matter what they must be comma separated, so we begin by checking # for that if [[ $hosts == *([[:space:]]) || $hosts != *,* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" "," 1>&2 rc=$RC_MISSING_INPUT # additional help message will be printed below fi : Directory arg must be a directory if [[ -n $DIRECTORY ]]; then dOpt="-d $DIRECTORY" if [[ $DIRECTORY != *([[:space:]])/* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path/file does not appear to be in absolute format:\n %1\$s\n\n" "$DIRECTORY" 1>&2 rc=$RC_NOT_FOUND else if [[ ! -d $DIERCTORY ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 136 "\nWarning: the directory in \"%1\$s\" does not yet exist.\n An attempt will be made to create that directory.\n\n" "$DIERCTORY" mkdir -p "$DIERCTORY" if [[ ! -d $DIERCTORY ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "ERROR: failed to create \"%1\$s\".\n\n" "$DIERCTORY" 1>&2 rc=$RC_NOT_FOUND fi fi fi fi [[ -n "$DISABLE_EXPECT" ]] && eOpt="-E" #=================================================== : Invoke clccv for the comparison - clccv takes care of : all additional input validation #=================================================== if (( $rc == RC_UNKNOWN )) then print "$0()[$LINENO]($SECONDS): clccv -n $hosts $dOPT $eOPT" >>$CLMGR_TMPLOG # Always log commands clccv -n $hosts $dOpt $eOpt 2>>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): clccv RC=$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then # clccv will have shown detailed error information dspmsg -s $CLMGR_SET $CLMGR_MSGS 109 "\nERROR: the operation appears to have failed.\n\n" 1>&2 rc=$RC_ERROR fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then print -u2 "" cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "compare cluster -h" "CLUSTER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose even if the man pages are installed. # As a result of this, it is imperative that the information in # this SYNOPSIS be kept in sync with the man page information. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_compare_cluster =head1 SYNOPSIS clmgr compare cluster , \ [ DIRECTORY="/absolute/path/to/store/results" ] \ [ DISABLE_EXPECT ] NOTE: the alias for "cluster" is "cl". NOTE: aliases for "compare" are "comp", "diff". =head1 DESCRIPTION Compares the cluster configuration on the cluster nodes specified by host name. =head1 ARGUMENTS 1. hosts [REQUIRED] string Comma separated list of two hosts to compare. Either can be: o host name of a node in a remote cluster o host name of a node in a the same cluster as where this command is being run If only one host is given, it is assumed the local cluster will be used for the comparison. All remote hosts must be accessible using ssh and scp. The user may be prompted one or more times to enter that password. 2. DIRECTORY [OPTIONAL] string Path to use when saving the results of the comparison. Default is "/tmp". 3. DISABLE_EXPECT [OPTIONAL] PowerHA will use "expect" by default to reduce the number of times the user must enter a password. This flag specifies that expect should not be used, even if it is available. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== ]])  k63yo ,םa՝a֝a& ,bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_compare_snapshotsl#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_compare_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_compare_snapshot # # Description: This is the main, FPATH function that is invoked by clmgr # to compare snapshot. It uses the "clsnapshot" utility # with the "preview" option to generate a report. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: Output from the clsnapshot preview. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_compare_snapshot { . $HALIBROOT/log_entry "$0()" "$CL" : version="@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_compare_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM" : INPUTS: $* typeset snapshots=${1//\"/} typeset SNAPSHOTPATH=${2//\"/} typeset SECTION=${3//\"/} typeset PAGER=${4//\"/} typeset SDIFF_OUTPUT_WIDTH=${5//\"/} typeset SDIFF_FLAGS=${6//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset MSG="" typeset Sopt="" #=================================== : Validate inputs #=================================== # "clsnapshot compare" takes 2 names which can be keywords, full path # names, snapshot names or a combination - see the devDoc for details - # no matter what they must be comma separated, so we begin by checking # for that if [[ $snapshots == *([[:space:]]) || $snapshots != *,* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 200 "\nERROR: missing required argument: %1\$s\n" "," 1>&2 rc=$RC_MISSING_INPUT # additional help message will be printed below fi # Oddly, clsnapshot takes a few things from the env where there is no # command line equivalent to do the same thing - so we shall take the # clmgr inputs, verify them as best we can, and export them to the shell # before invoking clsnapshot # SNAPSHOTPATH must be an absolute path if [[ -n $SNAPSHOTPATH ]] then if [[ $SNAPSHOTPATH != /* ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path/file does not appear to be in absolute format:\n%1\$s\n\n" "$SNAPSHOTPATH") MSG="$MSG (SNAPSHOTPATH @ $LOCAL_NODE)" cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT else export CLSNAPSHOT_SNAPSHOTPATH=$SNAPSHOTPATH fi fi # clsnapshot itself will check if any specified section is valid # and exists in both snapshots, so we do no explicit check of the optional # SECTION input here [[ $SECTION != *([[:space:]]) ]] && Sopt="-S $SECTION" # According to the man page for sdiff the output width must be in the # range of 20 - 2048, but in reality it will throw an error if 20 is # used, so we go with 21 here if [[ -n $SDIFF_OUTPUT_WIDTH ]] then CL=$LINENO verify_numeric_range "$SDIFF_OUTPUT_WIDTH" 21 2048 SDIFF_OUTPUT_WIDTH if (( $? != RC_SUCCESS )) then rc=$RC_INCORRECT_INPUT else export CLSNAPSHOT_SDIFF_OUTPUT_WIDTH=$SDIFF_OUTPUT_WIDTH fi fi # Check "pager" and "flags" for shell execution characters, otherwise # we just export them as is if [[ -n $PAGER ]] then if [[ $PAGER == *@(\`|\$\(|\|)* ]] then dspmsg -s $CLVT_SET $CLVT_MSGS 133 "\nERROR: the \"%1\$s\" option contains a shell execution character: %2\$s\n\n" PAGER "$PAGER" 1>&2 rc=$RC_INCORRECT_INPUT else # make sure it exists if [[ ! -x $PAGER ]] then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$PAGER" $(hostname)) MSG="$MSG (PAGER)" cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_NOT_FOUND else export CLSNAPSHOT_PAGER=$PAGER fi fi fi if [[ -n $SDIFF_FLAGS ]] then if [[ $SDIFF_FLAGS == *@(\`|\$\(|\|)* ]] then dspmsg -s $CLVT_SET $CLVT_MSGS 133 "\nERROR: the \"%1\$s\" option contains a shell execution character: %2\$s\n\n" SDIFF_FLAGS "$SDIFF_FLAGS" 1>&2 rc=$RC_INCORRECT_INPUT else export CLSNAPSHOT_SDIFF_FLAGS=$SDIFF_FLAGS fi fi #=================================================== : Invoke clsnapshot for the comparison - clsnapshot takes care of : all additional input validation #=================================================== if (( $rc == RC_UNKNOWN )) then print "$0()[$LINENO]($SECONDS): clsnapshot $Sopt -p $snapshots " >>$CLMGR_TMPLOG # Always log commands clsnapshot $Sopt -p $snapshots 2>>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): clsnapshot RC=$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then # clsnapshot will have shown detailed error information dspmsg -s $CLMGR_SET $CLMGR_MSGS 109 "\nERROR: the operation appears to have failed.\n\n" 1>&2 rc=$RC_ERROR fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then print -u2 "" cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "compare snapshot -h" "SNAPSHOT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose even if the man pages are installed. # As a result of this, it is imperative that the information in # this SYNOPSIS be kept in sync with the man page information. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_compare_snapshot =head1 SYNOPSIS clmgr compare snapshot , \ [ SNAPSHOTPATH="/absolute/path/to/search/for/snapshots" ] \ [ SECTION="list,of,sections,to,compare" ] \ [ PAGER="pager_command" ] \ [ SDIFF_OUTPUT_WIDTH="21 .. 2048" ] \ [ SDIFF_FLAGS="flags_for_sdiff" ] NOTE: the alias for "snapshot" is "sn". =head1 DESCRIPTION Compares the specified snapshots. =head1 ARGUMENTS 1. snapshots [REQUIRED] string Comma separated list of two entities to compare. Either entity can be: o a snapshot name. o full path (begins with "/") to a snapshot file including the ".odm" suffix. o the keyword "DCD" to compare the configuration in the Default Configuration Directory. o the keyword "ACD" to compare the configuration in the Active Configuration Directory. If the first entity is not specified, it defaults to the DCD. If the second entity is not specified, it defaults to the ACD. 2. SNAPSHOTPATH [OPTIONAL] string Path to use when searching for snapshots. Must begin with "/". Default is "/usr/es/sbin/cluster/snapshots". If a full path to a snapshot is given, this input is ignored. 3. SECTION [OPTIONAL] string Comma separated list of sections to compare between the 2 snapshots provided. Note this is only valid with the "compare" action of clmgr. 4. PAGER [OPTIONAL] string Compare snapshot uses "sdiff" to generate differences and the sdiff output is then displayed using "pg" by default. This argument can be used to specify a different command other than "pg". 5. SDIFF_OUTPUT_WIDTH [OPTIONAL] integer The sdiff command can produce results with a specific width which defaults to 200 columns. This input can be used to sepcify a different width, between 21 and 2048 columns. 6. SDIFF_FLAGS [OPTIONAL] string Any additional flags to be passed to the sdiff command. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== rom t krzoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_appmonitorl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appmonitor.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)65 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appmonitor.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:22 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_appmonitor =head1 VERSION Version Number: 1.7 Last Extracted: 1/31/14 04:40:52 Last Changed: 6/10/12 15:11:22 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appmonitor.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete application_monitor {[,,,...] | ALL } =head1 DESCRIPTION Deletes one or more application monitors from the cluster configuration. =head1 ARGUMENTS 1. MONITORS [REQUIRED] [string] One or more (comma or space separated) application monitors to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_appmonitor { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appmonitor.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset MONITORS=${1//\"/} MONITORS=${MONITORS//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset MONITOR= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $MONITORS ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$MONITORS if [[ $uctext == "ALL" ]]; then MONITORS= typeset available CL=$LINENO KLIB_HACMP_list_appmonitors available for (( i=0; i<${#available[*]}; i++ )); do MONITORS="$MONITORS ${available[$i]}" done if [[ $MONITORS == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 321 "Warning: there are no application monitors to delete.\n" rc=$RC_SUCCESS fi fi fi #======================================================================= : Delete the application monitor if no input errors have been detected #======================================================================= if (( $rc == RC_UNKNOWN )); then for MONITOR in $MONITORS; do CL=$LINENO KLIB_HACMP_is_known_appmonitor "$MONITOR" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$MONITOR" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 141 "Available Application Monitors:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appmonitors available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmappmon \"$MONITOR\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmappmon "$MONITOR" rc=$? print "clrmappmon RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$MONITOR" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete application_monitor -h" "APPLICATION MONITOR:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_appmonitor()" "$0( k{oXםa՝a֝a&Xbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_appserverl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appserver.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)18 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appserver.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:22 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_appserver =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:40:48 Last Changed: 6/10/12 15:11:22 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appserver.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete application_controller {[,,,...] |\ ALL} =head1 DESCRIPTION Deletes one or more application controllers from the cluster configuration. =head1 ARGUMENTS 1. APPLICATIONS [REQUIRED] [string] One or more (comma or space separated) application controllers to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_appserver { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_appserver.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset APPLICATIONS=${1//\"/} APPLICATIONS=${APPLICATIONS//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset APPLICATION= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $APPLICATIONS ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$APPLICATIONS if [[ $uctext == "ALL" ]]; then APPLICATIONS= typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do APPLICATIONS="$APPLICATIONS ${available[$i]}" done if [[ $APPLICATIONS == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 320 "Warning: there are no application controllers to delete.\n" rc=$RC_SUCCESS fi fi fi #====================================================================== : Delete the application server if no input errors have been detected #====================================================================== if (( $rc == RC_UNKNOWN )); then for APPLICATION in $APPLICATIONS; do CL=$LINENO KLIB_HACMP_is_known_appserver "$APPLICATION" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$APPLICATION" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 140 "Available Application Controllers:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmserv \"$APPLICATION\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmserv "$APPLICATION" rc=$? print " RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS)); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$APPLICATION" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete application_controller -h" "APPLICATION CONTROLLER:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_appserver()"  l|o9vםa՝a֝a&Cbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_clusterrl    =enorst $CEL_acdil"#():ADGIMNORSTfhmpu-./01>P[]gv&,2;HU\bwy%'3?BFKk!*+4567VYx{}9WfM<k3d#/ %f +x5:̝e b,9&'+;^|M::_<'ax'`ΫB lɘVHmr WX'[:̝e&'+s/qVYVxYbۄ}Xq5;*<#'1M-sx4ehVF_N!@k,y&;Yp@sUNjv`nUk edؓxmmmmmmmmmm<֭L0z$^Yʋ2v8S 51d#/t´$*T[.R[qH +)?v'/m`@T|F<,*`rd&TY*8 N (zTH'/'0A40p Ǔ?vHx4q90r   *9^` yh"2%L$rG oʵz5Y;0< S&D劑(<]6$X 6\^aGmmmm;!+2U5,4jAmmmmm?! wU90&TJ*A"kPy4Lp7P,ҀqBSX=jdTBTe* ?! Ƽ1e7N^Y-VY"ra1Xe ***#Ǩ1CDc$9E((ic@0`$Q"DF ]$J \h,F_Dv (<]8RM pXprLe L3a-Dib" &Py49ɤ,Py49ɤ,X :ZGPy49ɤ`Ui""4e3a ADA|MKODiT"A2E(W$( 0*,F^U78(89S&D T̰yg`XF^Vd#/?8^. jZmmmmmmmm;0ju;Jk[sFb j:bGsY;e*μaE4+ ip*Q70**QmmmmmmmB"/U~ Ne*=XD k3Q,8Ѡ&ʋ a0E2dK(]#Le "_@$% ju; b,9( BqH&UPq68HN)DLDt*Pq &\-f^mfaÃE2dK(`zeH0x4$˅ͬ"89S&D T q68 A2E(TDbDBƎef~YX89S&D Tfd buYn #p|ڳ34v^dƹy+ dv:E90ׁpadȖPF4L.DP9,TfN26nngrV`/0@@h9u_; cYsDmmmmi\# l7@b..\ؔ ngjD|H$"*$prĦ8KpT 0gkXp`I3bqBLsa`p kvq_R@̰lmmmmmmm?vX;xbjvUvyoSmmmmmmNL&8Kc˘PR P̹Bn(TI.`,,^kH%FvO?v^g`ή'a 5FP` !Pt*(TX/ic@0`$Q"DF ]$J \h`iI Y`0𕋊ÃE2dK(`zeH0x4$˅0YEJL-YgOa'{ )DLDt*PqLpfB$pf 3 X89S&D T"bH%  0I2k2f~|8-y iYA̰QT=`&HE @H(@̳_DvQ ÃE2dK(`zeH`"pj(\4h/i̝eד,6WH$c˘PR P@XS6\0eF_&Xka 2_st  QX?w6|^Wg^a< i.aBH%זf2\4Դ*Q.HT4e8\&UP?`yfc***51Oi&T#Ǩ`-CO2mmmxsBYa|F_mmm@CA^{t*(TX,eEYeFy4i5-?DʀDxL\EiX< e&T#Ǩ`-8&T#Ǩ\A|MKOy$΁a  YbO @CA^{t*(TX/ic@0`$Q"DF ]$J \h,;j̝eL&R'`'ax[ Yfǰ 4AHQI;AbkXY<-k2vՙ;a"2%0L=2OAbkXY<-k2vՙ;2Lp6'azZq68 A2E(TDbDBƎj̝edGh0ՙ;z°L&R'`'az[ ƍ5-?]mmmmm\|MN̝e65Y?]mmmmmg3,2-%=DS0lh_ReEph"2%.S&Dˑ/@ `HM msF_{  (((('\?Y*/%Aɑ,th"2%&\| 'G2lXhon&Dx Fs/qPkG`NL&9判b n%HQe&T#Ǩ\p@#0<QA% 0=`&HE @H(@#Ǩ,J$PxD(nk2v&t ,E#L&R'0d#/Z_e}VB ayirʳ'Utx{eGQT)(AbiͬF_0<a&@`6$8H!{ )DLDt*PqY,,V)"YC*Dmmmm`.^S<~'a~1'6OmmmmO8R "*"1"TGag`XF^Vd#/ dȖP0ʑ?,;j̝ejǰ 4AHQI;a2va"2%0L=2O`0f"pj(\4h/i28nXL4LHƂ)"YBeȗHhf(ԋ*Xvy{,uXM ms2v^x@ €r ̹Xf@惚+'b0 eB@( & $X-fM<(.Rb"8 t  HZ̛xP ]`CYpadȖPF4L.DCC1@XRõ[Yc| 02lXhon&Y2ǒP8Veט0 4X;S. dȖP0ʑ?@C a  YbO k+,&ĞX)0L&R'g@0ɱ' AzȨbK#Ǩ`,dcP I4PIZY QE"2XzM_q&DxfN2mjViXVsga+"kY mmmmmmmQx7,&Le cAɑ,2KP` 9%vy@Ve72vkG{ @0`$Q"DF ]$J \hS,\dM# (`,+Aɑ,a"Y IR r+ iIDS0l89,&ĞX)0Pp 4a 0h (B#.%J.4v)HRG A^A² &E0is ";@  dȖP0ʑVT$EvG4vaYgͪS 5/.|uO3'%VnmVsͫ 㬯*MISqb٩dfU:̛xV]MN\*\~Xssga>sʫ,HyR0; ]q&'b;6r^X&Rxs݆ͫ420P9c"kͪS.ybÚ X7+/xeSaG<^I!G<^TN Wiñ 6 D87:Z2NV Y|q O@]3>Wדu0XOH^%f +^ʬ3+vmXkUubR%CabDA=0" &^bÚ8v 6a a  # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_cod =head1 VERSION Version Number: 1.3.1.4 Last Extracted: 2/9/15 16:43:08 Last Changed: 1/27/15 08:42:07 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_cod.sh, hacmp.assist, 61haes_r720, 1507A_hacmp720 =head1 SYNOPSIS clmgr delete cod { | ALL} NOTE: the aliases for "cod" are "cuod", "dlpar" and "roha". =head1 DESCRIPTION Attempts to delete all currently specified Resource Optimized High Availability configuration settings from the specified application_controller. =head1 ARGUMENTS 1. APPCTRL [REQUIRED] [string] One or All already-configured application controllers to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2015 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_cod { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3.1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_cod.sh, hacmp.assist, 61haes_r720, 1507A_hacmp720 : INPUTS: $* typeset application_controllers=${1//\"} application_controllers=${application_controllers//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN i=0 typeset application_controller= typeset -u uc_val=$application_controllers #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $application_controllers == *([[:space:]]) ]]; then CL=$LINENO dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ $uc_val == "ALL" ]]; then application_controllers="" typeset available CL=$LINENO KLIB_HACMP_list_cod available for (( i=0; i<${#available[*]}; i++ )); do application_controllers="$application_controllers ${available[$i]}" done else for application_controller in $application_controllers; do CL=$LINENO KLIB_HACMP_is_known_cod "$application_controller" >/dev/null if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 317 "\nERROR: \"%1\$s\" is not configured for Resource Optimized High Availabity services.\n\n" "$application_controller" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 169 "Available Application Controllers Configured for Resource Optimized High Availabity:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_cod available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else CL=$LINENO KLIB_HACMP_is_known_appserver "$application_controller" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$application_controller" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 140 "Available Application Controllers:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi done fi fi if (( $rc == RC_UNKNOWN )); then for application_controller in $application_controllers; do print -- "$0()[$LINENO]($SECONDS): clchserv -o \"$application_controller\" -u 0 -m 0.0 -c 0 -p 0.0 -v 0" >>$CLMGR_TMPLOG clchserv -o "$application_controller" -u 0 -m 0.0 -c 0 -p 0.0 -v 0 rc=$? print -- "$0()[$LINENO]($SECONDS): clchserv -o \"$application_controller\" -u 0 -m 0.0 -c 0 -p 0.0 -v 0 rc=$rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 318 "\nERROR: failed to remove the Resource Optimized High Availability settings from \"%1\$s\".\n\n" "$application_controller" 1>&2 break fi done fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete cod -h" "COD:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_cod()" $CLM k~ow9םa՝a֝a&w9bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_dependencyl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_dependency.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)01 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_dependency.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:24 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_dependency =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:46 Last Changed: 6/10/12 15:11:24 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_dependency.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete dependency { | ALL} \ [ TYPE={PARENT_CHILD|STOP_AFTER|START_AFTER|\ SAME_NODE|SAME_SITE|DIFFERENT_NODES} ] =head1 DESCRIPTION Deletes the specified dependency from the cluster configuration. =head1 ARGUMENTS 1. dependency [REQUIRED] [string] The dependency that is to be deleted. 2. explicit_type [OPTIONAL] [string] The type of dependency that is being deleted. This is strictly a performance optimization, to eliminate having to divine the type from the dependency string itself. From the following set: PARENT_CHILD STOP_AFTER START_AFTER SAME_NODE or NODECOLLOCATION SAME_SITE or SITECOLLOCATION, DIFFERENT_NODES or ANTICOLLOCATION 3. rg [OPTIONAL] [string] A specific resource group to target for dependency removal. If this value is specified, every dependency that involves the specified resource group will be removed. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_dependency { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_dependency.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset DEPENDENCIES=${1//\"/} # Required typeset explicit_type=${2//\"/} # Optional typeset rg=${3//\"/} # Optional [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset dependency= implicit_type= typeset -u type= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined (( $? != RC_SUCCESS )) && rc=$RC_MISSING_DEPENDENCY #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if (( $rc == RC_UNKNOWN )); then if [[ $DEPENDENCIES == *([[:space:]]) && -z $rg ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ -n $DEPENDENCIES && -n $rg ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 36 "\nERROR: conflicting options were provided,\n\ \"%1\$s\" versus \"%2\$s\".\n\n" "$DEPENDENCIES" RESOURCE_GROUP 1>&2 rc=$RC_INCORRECT_INPUT else typeset -u uctext=$DEPENDENCIES if [[ $uctext == "ALL" || -n $rg ]]; then DEPENDENCIES= typeset available CL=$LINENO KLIB_HACMP_list_dependencies available for (( i=0; i<${#available[*]}; i++ )); do dep="${available[$i]}" [[ $dep == *@(SERIAL|PARALLEL)* ]] && continue dep=${dep// /} DEPENDENCIES="$DEPENDENCIES $dep" done if [[ $DEPENDENCIES == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 322 "Warning: there are no resource group dependencies to delete.\n" rc=$RC_SUCCESS fi fi fi fi #============================================================== : Delete the dependency if no input errors have been detected #============================================================== if (( $rc == RC_UNKNOWN )); then for dependency in $DEPENDENCIES; do if [[ $dependency == *\(*\)* ]]; then implicit_type=${dependency##*\(} implicit_type=${implicit_type%%\)*} type=$implicit_type dependency=${dependency/\(*\)} fi if [[ -n $explicit_type ]]; then if [[ $explicit_type == *\(*\)* ]]; then explicit_type=${explicit_type##*\(} explicit_type=${explicit_type%%\)*} fi type=$explicit_type fi #================= : Validate input #================= if (( $rc == RC_UNKNOWN )); then if [[ -n $implicit_type && -n $explicit_type && \ $implicit_type != $explicit_type ]] then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 314 "\nERROR: the specified implicit dependency type, \"%1\$s\", does\n not match the specified explicit dependency type, \"%2\$s\".\n\n" "$implicit_type" "$explicit_type" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -z $type ]]; then CL=$LINENO KLIB_HACMP_is_known_dependency "$dependency" : "DEPTYPE" gets set by KLIB_HACMP_is_known_dependency if [[ $DEPTYPE == *[[:space:]]* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 315 "\nERROR: the specified dependency, \"%1\$s\", is ambiguous\n and could be referring to any of the following dependency types:\n %2\$s\n Please specify which dependency type you intended to delete by\n using the \"TYPE\" attribute.\n" "$dependency" "$DEPTYPE" 1>&2 rc=$RC_INCORRECT_INPUT else type=$DEPTYPE fi fi if [[ $type == @(ACQ|REL)* ]]; then typeset ERRMSG="\ ERROR: the specified dependency cannot be deleted: %1\$s It is a resource group processing order dependency (its type is \"%2\$s\"), so it can only be modified, not removed. If your intention was to remove a different dependency, of a different type, then you will need to specify the type using the \"TYPE\" option. This can happen when a dependency uses the same nodes as one of the resource group processing orders.\n " CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 352 "$ERRMSG" "$dependency" "$type" 1>&2 rc=$RC_INCORRECT_INPUT break fi CL=$LINENO KLIB_HACMP_is_known_dependency "$dependency" "$type" typeset -i is_known=$? if (( $is_known != RC_SUCCESS )); then if [[ -n $type ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 312 "\nERROR: no \"%1\$s\" dependencies involving \"%2\$s\"\n could be found.\n\n" "$type" "$dependency" 1>&2 else /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 313 "\nERROR: no dependencies involving \"%1\$s\" could be found.\n\n" "$dependency" 1>&2 fi /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 142 "Available Dependencies:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_dependencies available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else #========================================================= : If a specified resource group was provide, only delete : the dependency if it contains that resource group. #========================================================= if [[ -n $rg ]]; then typeset split=${dependency//\+/ } split=${split//,/ } [[ " $split " != *\ $rg\ * ]] && continue fi case $type in "PARENT_CHILD") current_parent=${dependency%%\+*} current_parent=${current_parent//,/ } current_children=${dependency##*\+} current_children=${current_children//,/ } for child in $current_children; do print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t \"$type\" -d -p \"$current_parent\" -c \"$child\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t "$type" -d \ -p "$current_parent" \ -c "$child" (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )) && rc=$? done ;; "STOP_AFTER") current_after=${dependency%%\+*} current_after=${current_after//,/ } current_stop=${dependency##*\+} current_stop=${current_stop//,/ } for child in $current_stop; do print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t \"$type\" -d -c \"$current_after\" -p \"$child\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t "$type" -d \ -c "$current_after" \ -p "$child" (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )) && rc=$? done ;; "START_AFTER") current_after=${dependency%%\+*} current_after=${current_after//,/ } current_start=${dependency##*\+} current_start=${current_start//,/ } for child in $current_start; do print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t \"$type\" -d -p \"$current_after\" -c \"$child\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t "$type" -d \ -p "$current_after" \ -c "$child" (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )) && rc=$? done ;; @(SAME_NODE|NODECOLLOCATION)) print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t \"NODECOLLOCATION\" -d -l\"${dependency//,/ }\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t "NODECOLLOCATION" -d \ -l"${dependency//,/ }" rc=$? ;; @(SAME_SITE|SITECOLLOCATION)) print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t \"SITECOLLOCATION\" -d -l\"${dependency//,/ }\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t "SITECOLLOCATION" -d \ -l"${dependency//,/ }" rc=$? ;; @(DIFFERENT_NODES|ANTICOLLOCATION)) # Only one of these print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t \"ANTICOLLOCATION\" -u -hp \"\" -ip \"\" -lp \"\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t "ANTICOLLOCATION" -u \ -hp "" \ -ip "" \ -lp "" rc=$? ;; *) rc=$RC_ERROR ;; esac print "clrgdependency RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS && $rc == RC_UNKNOWN )) && rc=$RC_ERROR fi done fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete dependency -h" "DEPENDENCY:" "$CLVT_PROGNAME" 1>&2 fi (( $rc == RC_UNKNOWN )) && rc=$RC_SUCCESS log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_dependency()" \ k+oZםa՝a֝a&Zbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_efsn#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_efs.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)49 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_efs.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:25 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_efs =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:30 Last Changed: 6/10/12 15:11:25 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_efs.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete efs =head1 DESCRIPTION Disables EFS in this cluster. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_efs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_efs.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == "med" ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #============== : Disable EFS #============== if (( $rc == RC_UNKNOWN )); then CL=$LINENO KLIB_HACMP_is_known_efs if (( $? != RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s 129 cspoc.cat 75 "EFS Keystore is not configured.\n" 1>&2 rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_delete_efs" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/cl_delete_efs rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 41 "\nERROR: failed to disable %1\$s.\n\n" EFS 1>&2 fi fi (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete efs -h" "EFS:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_efs()" @  k Noםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_eventencyl#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_event.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_event =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:42:01 Last Changed: 4/29/13 13:18:08 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_event.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete event {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more custom cluster events from the local system. =head1 ARGUMENTS 1. events [REQUIRED] [string] One or more (comma or space separated) event devices to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_event { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_event.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset events=${1//\"/} events=${events//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset event= #================= : Validate input #================= if [[ -z $events ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$events if [[ $uctext == "ALL" ]]; then events= typeset available CL=$LINENO KLIB_HACMP_list_events available for (( i=0; i<${#available[*]}; i++ )); do events="$events ${available[$i]}" done if [[ $events == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 334 "Warning: there are no events to delete.\n" rc=$RC_SUCCESS fi fi fi #======================================================== : Delete the event if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then for event in $events; do CL=$LINENO KLIB_HACMP_is_known_event "$event" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$event" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 170 "Available Events:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_events available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmcustom -t event -n \"$event\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmcustom -t event -n "$event" rc=$? print -- "$0()[$LINENO]($SECONDS): clrmcustom RC: $rc" >>$CLMGR_TMPLOG if (( $rc == RC_SUCCESS )); then typeset predef CL=$LINENO KLIB_HACMP_list_events predef TYPE=PREDEFINED for (( i=0; i<${#predef[*]}; i++ )); do typeset -A eProps CL=$LINENO KLIB_HACMP_get_event_attributes "${predef[$i]}" eProps TYPE=PREDEFINED for key in PRE_EVENT_COMMAND POST_EVENT_COMMAND; do if [[ " ${eProps[$key]//,/ } " == *\ $event\ * ]] then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '*** Removing "%1$s" from "%2$s" in event "%3$s".\n' "$event" "$key" "${eProps[NAME]}" typeset NEW_EVENTS=" ${eProps[$key]//,/ } " NEW_EVENTS=$(CL=$LINENO trim ${NEW_EVENTS/ $event / }) NEW_EVENTS=${NEW_EVENTS// /,} case $key in PRE_EVENT_COMMAND) $HAUTILS/clmgr -T $CLMGR_TRANSACTION_ID modify event "${predef[$i]}" PRE_EVENT_COMMAND="$NEW_EVENTS" ;; POST_EVENT_COMMAND) $HAUTILS/clmgr -T $CLMGR_TRANSACTION_ID modify event "${predef[$i]}" POST_EVENT_COMMAND="$NEW_EVENTS" ;; esac cmd_rc=$? if (( $rc == RC_SUCCESS && $cmd_rc != RC_SUCCESS )); then rc=$cmd_rc /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: failed to remove "%1$s" from "%2$s" in event "%3$s".\n\n' "$event" "$key" "${eProps[NAME]}" 1>&2 fi fi done unset eProps done else rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$event" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete event -h" "EVENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_event()" _SUC kr;oםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_fallback_timertser#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_fallback_timer.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_fallback_timer.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_fallback_timer =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:03 Last Changed: 6/10/12 15:11:26 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_fallback_timer.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete fallback_timer {[,,,...] ] | ALL} =head1 DESCRIPTION Deletes one or more fallback timers from the cluster configuration. =head1 ARGUMENTS 1. timers [REQUIRED] [string] One or more (comma or space separated) fallback timers to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_fallback_timer { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_fallback_timer.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset timers=${1//\"/} timers=${timers//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset timer= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $timers ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$timers if [[ $uctext == "ALL" ]]; then timers= typeset available CL=$LINENO KLIB_HACMP_list_fallback_timers available for (( i=0; i<${#available[*]}; i++ )); do timers="$timers ${available[$i]}" done if [[ $timers == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 323 "Warning: there are no fallback timers to delete.\n" rc=$RC_SUCCESS fi fi fi #================================================================== : Delete the fallback timer if no input errors have been detected #================================================================== if (( $rc == RC_UNKNOWN )); then for timer in $timers; do CL=$LINENO KLIB_HACMP_is_known_fallback_timer "$timer" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$timer" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 143 "Available Fallback Timers:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_fallback_timers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cltimerpolicy -a remove -n $timer" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cltimerpolicy -a remove -n $timer rc=$? print "cltimerpolicy RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$timer" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete fallback_timer -h" "FALLBACK TIMER:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_fallback_timer()"  klo]םa՝a֝a&]bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_filecollectiontser#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_filecollection.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)74 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_filecollection.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:27 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_filecollection =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:40:58 Last Changed: 6/10/12 15:11:27 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_filecollection.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete file_collection {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more file collections from the cluster configuration. =head1 ARGUMENTS 1. fcnames [REQUIRED] [string] One or more (comma or space separated) file collections to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_filecollection { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_filecollection.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset fcnames=${1//\"/} fcnames=${fcnames//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset fcname= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $fcnames ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$fcnames if [[ $uctext == "ALL" ]]; then fcnames= typeset available CL=$LINENO KLIB_HACMP_list_filecollection available for (( i=0; i<${#available[*]}; i++ )); do [[ ${available[$i]} == @(Configuration_Files|HACMP_Files) ]] && continue fcnames="$fcnames ${available[$i]}" done if [[ $fcnames == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 324 "Warning: there are no file collections to delete.\n" rc=$RC_SUCCESS fi fi fi #=================================================================== : Delete the file collection if no input errors have been detected #=================================================================== if (( $rc == RC_UNKNOWN )); then for fcname in $fcnames; do CL=$LINENO KLIB_HACMP_is_known_filecollection "$fcname" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$fcname" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 144 "Available File Collections:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_filecollection available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o coll -r \"$fcname\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o coll -r "$fcname" rc=$? print "clfilecollection RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$fcname" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete file_collection -h" "FILE COLLECTION:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_filecollection()" .as k9o=םa՝a֝a&=bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_file_systemo#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_file_system.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_file_system.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_file_system =head1 SYNOPSIS clmgr delete file_system {[,,...] | ALL} \ [ REMOVE_MOUNT_POINT={false|true} ] =head1 DESCRIPTION Deletes one or more file systems from the cluster. =head1 ARGUMENTS 1. file_systems [REQUIRED] [string] One or more (comma or space separated) file systems to attempt to delete. 2. rm_mount_point {OPTIONAL] [boolean] Indicates if the mount point should be removed, too. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_file_system { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_file_system.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset file_systems=${1//\"/} file_systems=${file_systems//,/ } typeset -l rm_mount_point=${2//\"/} typeset non_existent_fs="" [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset file_system= #================= : Validate input #================= if [[ -z $file_systems ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$file_systems if [[ $uctext == "ALL" ]]; then file_systems= typeset available CL=$LINENO KLIB_HACMP_list_file_systems available for (( i=0; i<${#available[*]}; i++ )); do file_systems="$file_systems ${available[$i]}" done if [[ $file_systems == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 342 "Warning: there are no file systems to delete.\n" rc=$RC_SUCCESS fi fi fi #================================================================ : Delete the file systems if no input errors have been detected #================================================================ if (( $rc == RC_UNKNOWN )); then for file_system in $file_systems; do CL=$LINENO KLIB_HACMP_is_known_file_system "$file_system" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$file_system" 1>&2 non_existent_fs="true" else typeset rOpt="" [[ $rm_mount_point == @(y|t)* ]] && rOpt=" -r" typeset nodes="" typeset -A fsAttrs CL=$LINENO KLIB_HACMP_get_file_system_attributes "$file_system" fsAtrs nodes=${fsAttrs[NODES]} print -- "$0()[$LINENO]($SECONDS): _CSPOC_CALLED_FROM_SMIT=true _CSPOC_MODE=both $HASBIN/cl_rmfs -cspoc "-n $nodes"$rOpt \"$file_system\"" >>$CLMGR_TMPLOG # Always log commands _CSPOC_CALLED_FROM_SMIT=true _CSPOC_MODE=both $HASBIN/cl_rmfs -cspoc "-n $nodes"$rOpt "$file_system" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$file_system" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi if [[ $non_existent_fs == "true" ]]; then printf "\n" #A new line to make console output more structured and spacious. /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 145 "Available File Systems:\n\n" typeset available CL=$LINENO KLIB_HACMP_list_file_systems available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u1 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete file_system -h" "FILE SYSTEM:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_file_system()" /\" kro,םa՝a֝a&,bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_groupystemo#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_group.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)06 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_group.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:27 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_group =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:57 Last Changed: 6/10/12 15:11:27 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete group \ [ RESOURCE_GROUP= ] \ [ REGSITRY={files|LDAP} ] =head1 DESCRIPTION Deletes one or more AIX groups from either all the cluster nodes, or from those nodes that the specified resource group can run on. =head1 ARGUMENTS 1. groups [REQUIRED] [string] One or more (comma or space separated) groups to attempt to delete. 2. rg [OPTIONAL] [string] A resource group label that, if provided, will be used to limit which nodes the groups will be removed from. 3. registry [OPTIONAL] [set] Specifies which registry to remove the user from, FILES or LDAP. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset groups=${1//\"/} groups=${groups//,/ } typeset rg=${2//\"/} typeset registry=${3//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset group= #================= : Validate input #================= if [[ -z $groups ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi if [[ $rg != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_rg $rg if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$rg" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi if [[ $registry != *([[:space:]]) ]]; then typeset -u registryUC=$registry case $registryUC in LD*) registry=LDAP ;; LO*) registry=files ;; F*) registry=files ;; *) /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' REGISTRY "$registry" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi #======================================================== : Delete the group if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then for group in $groups; do CL=$LINENO KLIB_HACMP_is_known_group "$group" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$group" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 161 "Available Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else typeset rgOpt= [[ $rg != *([[:space:]]) ]] && rgOpt=" -cspoc-g $rg" typeset -u source= if [[ $registry == *([[:space:]]) ]]; then source=$(/usr/sbin/lsgroup -R LDAP -a registry $group 2>>$CLMGR_TMPLOG) source=${source##*=} [[ -n $source ]] && registry=$source source=$(/usr/sbin/lsgroup -R files -a registry $group 2>>$CLMGR_TMPLOG) source=${source##*=} if [[ -n $source ]]; then [[ -n $registry ]] && registry="$registry " registry="$registry$source" fi fi typeset -i cmd_rc=$RC_UNKNOWN for source in $registry; do if [[ $source == "LDAP" ]]; then print -- "$0()[$LINENO]($SECONDS): mode=LDAP $HACSPOC/fix_args nop cl_rmgroup$rgOpt \"$group\"" >>$CLMGR_TMPLOG # Always log commands mode=LDAP $HACSPOC/fix_args nop cl_rmgroup$rgOpt "$group" else print -- "$0()[$LINENO]($SECONDS): $HACSPOC/fix_args nop cl_rmgroup$rgOpt \"$group\"" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/fix_args nop cl_rmgroup$rgOpt "$group" fi cmd_rc=$? print -- "$0()[$LINENO]($SECONDS): cl_rmgroup RC: $cmd_rc" >>$CLMGR_TMPLOG if (( $cmd_rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$group" 1>&2 break else (( $rc != $RC_ERROR )) && rc=$cmd_rc fi done fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete group -h" "GROUP:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_group()" in  lȧo{4םa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_hmcp = est"$CEMS_acdhilmnor#-:ADGHILNOPRT\fpu()./012;>FU[]bgvy&,w!+346789o dz/}Vgno=:#T B`hXh`OmY(-`2e :+,l,Mj\XjqcilY`2mmmmmm1f5%7Pth16h: ŝbk ?9)mmmmmmImZs.uȻ5΄Q#y9a0@DM 08sƯ$Tzigy5|hb8 LEG|ǘ fn7$TziWO;b/`˜S[o BfTziBP!]V"gYqxB (LXC"yܩ" C@e9 ƒ084 QiOE((0  dv.qZQe"-C3+FAM( I, ee8&*Hz)UV\\&L6V]Á+JMJ` ehWfee8Bf*XԄ5pUeP $!ǔ( fA%0Le.8f9Fz4蔨&U"<09RCL)ˋXYfXQT,;h @6q`v C@e8A ,,M(DhL;ɛ{$<؋qA;&Sږ%BXe剉sf.UAQIE!mŹF9Fy$R|?ͼˋ;ˋ;aRPTIE2%A'^./xS tmx8>0J)sf.rBh"Q2&Q#:LSP`XnyR0`٣a$h-קpVA60Ӧ?=\\0<$q eDȘUD"Q2&MB*`P`^xemaFM4OaFQ6q%* Hl(LTS.mJjYn068> ,,M(D *@@vh$% ,,M(DhLK@q!!8&&sf.;xzLL\b0Fp}KEUQE%aCrBh"Q2&Q#:LSPiԌ,`vmfߋ G1 !#GD$Ӧ?=\\0<G%(emmmm-86U#,hLBgCemmmm9FyRQR Ms @2,&"Xkܙqs>4q|k"Q2&2r{`Յ8JKIEK*I4jܙqs>4q|k}z;t $8׏DdL*e2  m]wqgX?.r2HEKnaTEP ;1v$*Tb m;I4TTKH;ammmmvǔV}vso?{./-|َD6;qhylmO1q|R-:+0mmmmmF!-IaJ ]\_]mmm3{ 768%ڜ?[mmm ӳƍ]&kg"Q2&2r{`Յ8J9Fz̤Tzi)a3)JTmID?^;UPERQL ;1vPM-t&e"I@퇡1sg xzLL\b>35aym+,ߌ8yhXAU KiIPF!-IaT&e, &&͘HEJ("\)Th8@DR $P I4U, ̥mC?>ӳƍ]S4悄̤TzicIf@DR $P"Q2&2r{`Յ8J붻"jqƜPM,i,Ke" M}gk+&i Hƒr̤ARIר>x~%"aS)(XǶ X^[o :dux8>%"(aً}zUH!Ď9!\l( J&D©EL 4F 0;6MŎooDž͘AIiN..~ ڄ?[mmm؉rCL..qgr-mmmvxѹ PTAD,Tۊ䇢v\\ϬmeDdL*e2 mmmmvF3:v{6./%[jSmmmmb#(b&:emJviF8+]ƛ؉5Yqy*RHz)e,DȘTe#1Vº8α(knjU::Â5iXsU)䇢v\\ϬD?^;%"(aً}zUH!Ď9!\l( J&D©EL 4F 0;6MŎooDž͘AIiN..~ [a1sgHTBJThBjo?knjN1knjU0퇡ѼHKAXsUKˋbaً*"2$QR3P A!% I4TT5 P*"2$QR31knj6?yemmmm~MJ{6./%[jSHTBJThBjmmmml?>ӳƍ8i\S.ˋYMXsU) A!% I4TT5 "Q2&2r{`Յ8oG[?>ӳ$=˲}gAXsU) A!% I4TT5 }]5S.ˋYo}|UPERQL ;1vHA0DdL*TмN`ck4X\xZ<َhi ?$9s$=˲}gM:iea}zUH!\eI=P@yJ:Â5iXsU)䇢v\\ϬD!$%$*"2$QR3^( "F 1mCP6?yP?[mmmmmmmmmfN;>/5ilFq^q`}f'[8l|SiemmmmmmmmmFp}"dPR**\D>TTK0&U&T #PD eR"$p$$:G^#110lRPTmV$q e@@ʪ$gASP`X ?MMxiɴuB`LsN=CL(R* !#GVnq}զдAFؾH~iqgs [+ G]vSY3ig(t"dEmW?yGdPN8*V}vZtW6i$hyq8s 4OC"gƲ~y$~z \b%G`x,6ڄ?xUW3A@, *RqNo<(LTS.n38A kēo#םa՝a֝a&#bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_interfacemo#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_interface.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_interface.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_interface =head1 SYNOPSIS clmgr delete interface {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more interfaces from the cluster configuration. =head1 ARGUMENTS 1. interfaces [REQUIRED] [string] One or more (comma or space separated) interfaces to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_interface { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_interface.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset interfaces=${1//\"/} interfaces=${interfaces//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset interface= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $interfaces ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$interfaces if [[ $uctext == "ALL" ]]; then interfaces= typeset available CL=$LINENO KLIB_HACMP_list_interfaces available for (( i=0; i<${#available[*]}; i++ )); do interfaces="$interfaces ${available[$i]}" done if [[ $interfaces == *([[:space:]]) ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 325 "Warning: there are no interfaces to delete.\n" rc=$RC_SUCCESS fi fi fi #============================================================= : Delete the interface if no input errors have been detected #============================================================= if (( $rc == RC_UNKNOWN )); then for interface in $interfaces; do #================================================================== : If the interface is in IP address format, convert to its label. : clrmnode will not accept an interface in address format. ~sigh~ #================================================================== if [[ $interface == *@(\.|:)* ]]; then interface=$(/usr/bin/odmget -q identifier=$interface HACMPadapter | /usr/bin/grep -w ip_label) interface=${interface#*\"} interface=${interface%\"} fi CL=$LINENO KLIB_HACMP_is_known_interface "$interface" if (( $? != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$interface" 1>&2 dspmsg -s $CLVT_SET $CLVT_MSGS 146 "Available Interfaces:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_interfaces available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): clodmget \"$interface\"" >>$CLMGR_TMPLOG # Always log commands clodmget -q "ip_label=$interface" -nf network,nodename,function,interfacename -d' ' HACMPadapter 2>/dev/null| read network node function intrface #======================================================================= # If a network holding a service IP with only one network interface # then exiting with error message. #======================================================================== service_function=$(cllsif -pcS | grep -w "service:$network" | wc -l | sed 's/ //g') if (( $service_function != 0 )); then boot_function_value=$(cllsif -pcS | grep -w "$function:$network" | wc -l | sed 's/ //g') if (( $boot_function_value == 1 )); then rc=$RC_ERROR dspmsg -s $CLVT_SET $CLVT_MSGS 1461 "\nERROR: Modifying or removing last network interface '%1\$s' not allowed\n\ as the network '%2\$s' holds a service IP.\n\ You can remove the service IP from the network, then try the operation again.\n" $interface $network fi fi if [[ -n $function && $function == "boot" ]]; then print -- "$0()[$LINENO]($SECONDS): cllsif" >>$CLMGR_TMPLOG # Always log commands persistent=$(cllsif -J "~" -Spi $node | egrep -w "persistent.*$network" | awk -F"~" '{print $7}') if [[ -n $persistent ]]; then print -- "$0()[$LINENO]($SECONDS): cl_rsh -n $node netstat -in" >>$CLMGR_TMPLOG # Always log commands pintrface=$(cl_rsh -n $node netstat -in | grep -w $persistent | awk '{print $1}') if [[ -n $pintrface && $pintrface == $intrface ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 1423 "\nManually remove aliased persistent IP:%1\$s on interface:%2\$s on node:%3\$s before removing the interface.\n" $persistent $intrface $node 1>&2 rc=$RC_ERROR fi fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmnode -a \"$interface\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmnode -a "$interface" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$interface" 1>&2 break fi fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete interface -h" "INTERFACE:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_interface()"  k$}o םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_cliento#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_client.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)04 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_client.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:29 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_ldap_client =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:47 Last Changed: 6/10/12 15:11:29 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_client.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete ldap_client =head1 DESCRIPTION Deletes all the currently defined LDAP clients from the cluster. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_ldap_client { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_client.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN i=0 #========================== : Delete the LDAP clients #========================== if (( $rc == RC_UNKNOWN )); then print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_ldap_client_del" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/cl_ldap_client_del rc=$? print -- "$0()[$LINENO]($SECONDS): cl_ldap_client_del RC: $rc" >>$CLMGR_TMPLOG # Always log commands if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_ldap_client()"  k꜁o םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_servero#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_server.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)53 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_server.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:30 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_ldap_server =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:04 Last Changed: 6/10/12 15:11:30 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_server.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete ldap_server =head1 DESCRIPTION Deletes all the currently defined LDAP servers from the cluster. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_ldap_server { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_ldap_server.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN i=0 #========================== : Delete the LDAP servers #========================== if (( $rc == RC_UNKNOWN )); then print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_ldap_server_del" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/cl_ldap_server_del rc=$? print -- "$0()[$LINENO]($SECONDS): cl_ldap_server_del RC: $rc" >>$CLMGR_TMPLOG # Always log commands if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_ldap_server()"  k3oםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_methodrvero#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_method.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)70 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_method.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:31 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_method =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:45 Last Changed: 6/10/12 15:11:31 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_method.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete method {[,,] | ALL} \ [ TYPE={notify|snapshot|verify} ] =head1 DESCRIPTION Deletes one or more custom methods from the cluster configuration. =head1 ARGUMENTS 1. methods [REQUIRED] [string] One or more (comma or space separated) methods to attempt to delete. 2. type [OPTIONAL] [string] The type of method(s) to be deleted. Valid values: {notify|snapshot|verify} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_method { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_method.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset methods=${1//\"/} methods=${methods//,/ } typeset -l type=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset method= typeset -i delete_all=0 #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $methods ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ -n $type && $type != @(sn|ve|no)* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\"\n\n" TYPE "$type" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 3 "Valid values: %1\$s\n\n" "notify, snapshot, verify" 1>&2 rc=$RC_INCORRECT_INPUT else typeset -u uctext=$methods if [[ $uctext == "ALL" ]]; then delete_all=1 methods= typeset available CL=$LINENO KLIB_HACMP_list_methods available for (( i=0; i<${#available[*]}; i++ )); do methods="$methods ${available[$i]}" done if [[ $methods == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 326 "Warning: there are no methods to delete.\n" rc=$RC_SUCCESS fi fi fi #========================================================== : Delete the method if no input errors have been detected #========================================================== if (( $rc == RC_UNKNOWN )); then for method in $methods; do if [[ -n $type ]] && (( ! delete_all )); then CL=$LINENO KLIB_HACMP_is_known_method "$method" else (( delete_all )) && type= CL=$LINENO KLIB_HACMP_is_known_method "$method" type fi if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$method" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 149 "Available Methods:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_methods available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND elif [[ $type == *,* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 34 "\nERROR: \"%1\$s\", is ambiguous, and could match any of the following:\n %2\$s\n\n" "$method" "$type" 1>&2 rc=$RC_INCORRECT_INPUT else typeset cmd="clrmcustom" if [[ $type == sn* ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmcustom -t snapshot -n \"$method\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmcustom -t snapshot -n "$method" elif [[ $type == ve* ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmcustom -t verify -n \"$method\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmcustom -t verify -n "$method" elif [[ $type == no* ]]; then cmd="clrmpgr" print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmpgr -m \"$method\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmpgr -m "$method" fi rc=$? print " RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$method" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete method -h" "METHOD:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_method()" T_INPUT kjoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_group#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_group.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)05 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_group.sh, hacmp.assist, 61haes_r714 1/18/13 12:51:14 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_mirror_group =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:41:57 Last Changed: 1/18/13 12:51:14 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete mirror_group {[,,...] | ALL} =head1 DESCRIPTION Deletes one or more mirror groups from the local system. =head1 ARGUMENTS 1. mirror_groups [REQUIRED] [string] One or more (comma or space separated) mirror groups to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_mirror_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mirror_groups=${1//\"/} mirror_groups=${mirror_groups//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg $RC_MISSING_DEPENDENCY $0 $LINENO return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN cmd_rc=$RC_UNKNOWN typeset -i i=0 typeset mirror_group= #================= : Validate input #================= if [[ -z $mirror_groups ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$mirror_groups if [[ $uctext == "ALL" ]]; then mirror_groups= typeset available CL=$LINENO KLIB_HACMP_list_mirror_groups available for (( i=0; i<${#available[*]}; i++ )); do mirror_groups="$mirror_groups ${available[$i]}" done if [[ $mirror_groups == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 336 "Warning: there are no mirror groups to delete.\n" rc=$RC_SUCCESS fi fi fi #=============================================================== : Delete the object group if no input errors have been detected #=============================================================== if (( $rc == RC_UNKNOWN )); then for mirror_group in $mirror_groups; do typeset TYPE="" CL=$LINENO KLIB_HACMP_is_known_mirror_group "$mirror_group" TYPE if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$mirror_group" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 167 "Available Mirror Group:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else #======================================= : Detect any resource group membership #======================================= typeset -A mgProps CL=$LINENO KLIB_HACMP_get_mirror_group_attributes "$mirror_group" mgProps if [[ ${mgProps[RESOURCE_GROUP]} == *([[:space:]]) ]]; then print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_remove_mg_director -n \"$mirror_group\" -s \"$TYPE\"" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_remove_mg_director -n "$mirror_group" -s "$TYPE" cmd_rc=$? print -- "$0()[$LINENO]($SECONDS): clxd_remove_mg_director RC: $rc" >>$CLMGR_TMPLOG # Always log commands if (( $cmd_rc != RC_SUCCESS )); then (( rc <= RC_SUCCESS )) && rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$mirror_group" 1>&2 fi else (( rc <= RC_SUCCESS )) && rc=$RC_ERROR CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: "%1$s" is currently a member of resource group "%2$s". Therefore "%1$s" cannot be deleted.\n\n' "$mirror_group" "${mgProps[RESOURCE_GROUP]}" 1>&2 fi fi done (( $rc == RC_UNKNOWN )) && rc=$RC_SUCCESS # No errors detected (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete mirror_group -h" "MIRROR GROUP:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_mirror_group()" be k!o7םa՝a֝a&7bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pair#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pair.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)85 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pair.sh, hacmp.assist, 61haes_r714 8/15/12 08:58:26 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_mirror_pair =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:06 Last Changed: 8/15/12 08:58:26 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pair.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete mirror_pair {[,,...] | ALL} =head1 DESCRIPTION Deletes one or more mirror pairs from the local system. =head1 ARGUMENTS 1. mirror_pairs [REQUIRED] [string] One or more (comma or space separated) mirror pairs to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_mirror_pair { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pair.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mirror_pairs=${1//\"/} mirror_pairs=${mirror_pairs//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg $RC_MISSING_DEPENDENCY $0 $LINENO return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset mirror_pair= #================= : Validate input #================= if [[ -z $mirror_pairs ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$mirror_pairs if [[ $uctext == "ALL" ]]; then mirror_pairs= typeset available CL=$LINENO KLIB_HACMP_list_mirror_pairs available for (( i=0; i<${#available[*]}; i++ )); do mirror_pairs="$mirror_pairs ${available[$i]}" done if [[ $mirror_pairs == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 337 "Warning: there are no mirror pairs to delete.\n" rc=$RC_SUCCESS fi fi fi #=============================================================== : Delete the object pair if no input errors have been detected #=============================================================== if (( $rc == RC_UNKNOWN )); then for mirror_pair in $mirror_pairs; do typeset TYPE="" CL=$LINENO KLIB_HACMP_is_known_mirror_pair "$mirror_pair" TYPE if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$mirror_pair" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 166 "Available Mirror Pairs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_pairs available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_remove_mdp_director -n \"$mirror_pair\" -s \"$TYPE\"" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_remove_mdp_director -n "$mirror_pair" -s "$TYPE" rc=$? print -- "$0()[$LINENO]($SECONDS): clxd_remove_mdp_director RC: $rc" >>$CLMGR_TMPLOG # Always log commands if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$mirror_pair" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete mirror_pair -h" "MIRROR PAIR:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_mirror_pair()"  kko8םa՝a֝a&8bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pool#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pool.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pool.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_delete_mirror_pool # # Description: This is the main, FPATH function that is invoked by clmgr # to remove mirror pools from the cluster configuration. # # Inputs: See the "devDoc()" function, below. # # Outputs: Any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_delete_mirror_pool { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_mirror_pool.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset MIRROR_POOLS=${1//\"/} MIRROR_POOLS=${MIRROR_POOLS//,/ } typeset VOLUME_GROUP=${2//\"/} typeset PHYSICAL_VOLUMES=${3//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset mirror_pool= VG= #================= : Validate input #================= if [[ -z $MIRROR_POOLS ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$MIRROR_POOLS if [[ $uctext == "ALL" ]]; then MIRROR_POOLS= typeset available CL=$LINENO KLIB_HACMP_list_mirror_pools available for (( i=0; i<${#available[*]}; i++ )); do MIRROR_POOLS="$MIRROR_POOLS ${available[$i]/ /_}" done if [[ $MIRROR_POOLS == *([[:space:]]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 334 "Warning: there are no mirror pools to delete.\n" rc=$RC_SUCCESS fi fi fi if [[ -n $VOLUME_GROUP ]]; then CL=$LINENO KLIB_HACMP_is_known_volume_group "$VOLUME_GROUP" if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$VOLUME_GROUP" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 160 'Available Volume Groups:\n\n' 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_volume_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi #=============================================================== : Delete the mirror pool if no input errors have been detected #=============================================================== if (( $rc == RC_UNKNOWN )); then for mirror_pool in $MIRROR_POOLS; do print -- "$mirror_pool" | IFS=\( read mirror_pool VG [[ -n $VG ]] && VOLUME_GROUP=$VG mirror_pool=${mirror_pool%_} VOLUME_GROUP=${VOLUME_GROUP%\)} CL=$LINENO KLIB_HACMP_is_known_mirror_pool "$mirror_pool" "$VOLUME_GROUP" >/dev/null if (( $? != RC_SUCCESS )); then if [[ -n $VOLUME_GROUP ]] then dspmsg -s $CLMGR_SET $CLMGR_MSGS 357 '\nERROR: "%1$s" does not appear to exist in volume group "%2$s"!\n\n' "$mirror_pool" "$VOLUME_GROUP" 1>&2 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$mirror_pool" 1>&2 fi dspmsg -s $CLMGR_SET $CLMGR_MSGS 173 "Available Mirror Pools:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_pools available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else typeset FOUND=$(CL=$LINENO KLIB_HACMP_is_known_mirror_pool "$mirror_pool" "$VOLUME_GROUP") typeset -i COUNT=0 print -- "$FOUND" |\ while read mirror_pool VOLUME_GROUP; do (( COUNT++ )) done if (( COUNT > 1 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 277 "\nERROR: more than one object matches the provided information:\n\n" 1>&2 print -u2 "$FOUND" rc=$RC_INCORRECT_INPUT else print -- "$FOUND" | read mirror_pool VOLUME_GROUP VOLUME_GROUP=${VOLUME_GROUP#\(} VOLUME_GROUP=${VOLUME_GROUP%\)} fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS)); then if [[ -z $PHYSICAL_VOLUMES ]]; then typeset -A vgprops CL=$LINENO KLIB_HACMP_get_volume_group_attributes "$VOLUME_GROUP" vgprops print "$0()[$LINENO]($SECONDS): cl_rmmp -cspoc -n"${vgprops[NODES]// /,}" $VOLUME_GROUP $mirror_pool" >>$CLMGR_TMPLOG cl_rmmp -cspoc -n"${vgprops[NODES]// /,}" "$VOLUME_GROUP" "$mirror_pool" >>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): cl_rmmp RC: $rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 '\nERROR: failed to delete "%1$s".\n\n' "$mirror_pool" 1>&2 break fi else : Determine if this operation will result in the removal : of the entire mirror pool. If so, tell the user. print "$0()[$LINENO]($SECONDS): LC_ALL=C cl_lsmpvgs -m $mirror_pool $VOLUME_GROUP" >>$CLMGR_TMPLOG # Always log commands typeset OUTPUT=$(LC_ALL=C cl_lsmpvgs -m $mirror_pool $VOLUME_GROUP) cmd_rc=$? print "cl_lsmpvgs RC: $cmd_rc; OUTPUT == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc == RC_SUCCESS )); then typeset AIO_CACHE AIO_HWM DISKS REM typeset -u MODE SUPER_STRICT print "$OUTPUT" |\ while IFS=: read NAME VG MODE AIO_CACHE AIO_HWM SUPER_STRICT DISKS REM; do [[ $NAME == \#* ]] && continue DISKS=" ${DISKS//,/ } " break done fi if [[ $DISKS != *([[:space:]]) ]]; then for DISK in ${PHYSICAL_VOLUMES//,/ }; do DISKS=${DISKS//\ $DISK\ / } done if [[ $DISKS == *([[:space:]]) ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1404 '\n*** Warning: this removal operation, when completed, will leave no disks in\nmirror pool "%1$s", resulting in its automatic removal.\n\n' "$mirror_pool" sleep 5 fi fi : Removing $PHYSICAL_VOLUMES from mirror pool $mirror_pool in $VOLUME_GROUP print "$0()[$LINENO]($SECONDS): cl_mp_disks -cspoc -n\"${vgprops[NODES]// /,}\" -P $VOLUME_GROUP ${PHYSICAL_VOLUMES//,/ }" >>$CLMGR_TMPLOG cl_mp_disks -cspoc -n"${vgprops[NODES]// /,}" -P $VOLUME_GROUP ${PHYSICAL_VOLUMES//,/ } >>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): cl_mp_disks RC: $rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 358 '\nERROR: failed to delete "%1$s" from "%2$s".\n\n' "$PHYSICAL_VOLUMES" "$mirror_pool ($VOLUME_GROUP)" 1>&2 break fi fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete mirror_pool -h" "MIRROR POOL:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_mirror_pool()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_mirror_pool =head1 SYNOPSIS clmgr query mirror_pool clmgr delete mirror_pool { [,,...] | ALL } \ [ VOLUME_GROUP= ] clmgr delete mirror_pool \ [ VOLUME_GROUP= ] \ PHYSICAL_VOLUMES="[,,...]" NOTE: when physical volumes are specified for a delete operation, the list of disks will be removed from the mirror pool. If all disks are removed, the mirror pool is removed. NOTE: aliases for "mirror_pool" are "mp", "mi", and "pool". =head1 DESCRIPTION Deletes one or more mirror pools, or deletes physical volumes from the specified mirror pool. =head1 ARGUMENTS 1. MIRROR_POOLS [REQUIRED] [string] One or more (comma or space separated) mirror pools to attempt to delete. 2. VOLUME_GROUP [OPTIONAL] [string] The label of the volume group that the targeted mirror pool is managed by. This is only needed if more than one mirror pool in this cluster shares the same name, resulting in ambiguity. 3. PHYSICAL_VOLUMES [OPTIONAL] [string] One or more disks to remove from the specified mirror pool. If all disks in the mirror pool are removed, then so is the mirror pool itself. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== script kdoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_networkool#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_network.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)87 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_network.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:35 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_network =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:40:43 Last Changed: 6/10/12 15:11:35 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_network.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete network {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more neworks from the cluster configuration. Interfaces that reside on each network are also removed. =head1 ARGUMENTS 1. networks [REQUIRED] [string] One or more (comma or space separated) networks to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_network { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_network.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset networks=${1//\"/} networks=${networks//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset network= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $networks ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$networks if [[ $uctext == "ALL" ]]; then networks= typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do networks="$networks ${available[$i]}" done if [[ $networks == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 327 "Warning: there are no networks to delete.\n" rc=$RC_SUCCESS fi fi fi #=========================================================== : Delete the network if no input errors have been detected #=========================================================== if (( $rc == RC_UNKNOWN )); then for network in $networks; do CL=$LINENO KLIB_HACMP_is_known_network "$network" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$network" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 150 "Available Networks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clmodnetwork -d -n \"$network\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clmodnetwork -d -n "$network" rc=$? print "clmodnetwork RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$network" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete network -h" "NETWORK:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_network()" a kp-o&םa՝a֝a&&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_node#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_node.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_node =head1 VERSION Version Number: 1.2 Last Extracted: 2/10/17 20:08:09 Last Changed: 11/4/16 09:17:51 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_node.sh, powerha, 61aha_r722 =head1 SYNOPSIS clmgr delete node {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more nodes from the cluster configuration. If the specified node(s) are assigned to a site, then they are first removed from that site, then deleted. =head1 ARGUMENTS 1. nodes [REQUIRED] [string] One or more (comma or space separated) nodes to attempt to delete (specified as node labels). =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_delete_node # # Description: This is the main, FPATH function that is invoked by clmgr # to remove a node from the cluster configuration. If # just one node is removed, and other nodes remain, then # the node is removed from the SystemMirror definitions only, # but not CAA. The CAA removal will occur when a synchronization # is performed, at which time the other nodes in the cluster # will also be notified of the removal, and updated accordingly. # # Inputs: See the "devDoc()" function, above. # # Outputs: None. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_delete_node { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_node.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset nodes=${1//\"/} nodes=${nodes//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== integer rc=$RC_UNKNOWN i=0 typeset node="" #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $nodes ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$nodes if [[ $uctext == "ALL" ]]; then nodes= typeset available CL=$LINENO KLIB_HACMP_list_nodes available for (( i=0; i<${#available[*]}; i++ )); do nodes="$nodes ${available[$i]}" done if [[ $nodes == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 328 "Warning: there are no nodes to delete.\n" rc=$RC_SUCCESS fi else for node in $nodes; do CL=$LINENO KLIB_HACMP_is_known_node "$node" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then typeset MSG=$(/usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node") MSG=${MSG##+([[:space:]])} print -u2 "${MSG%%+([[:space:]])}" rc=$RC_NOT_FOUND fi done if (( rc == RC_NOT_FOUND )); then print -u2 "" /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 151 "Available Nodes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_nodes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done fi fi fi #======================================================================= : Validate if given node is offline. If any node is online, we exit. #======================================================================= if (( $rc == RC_UNKNOWN )) then for tempnode in $nodes do # : Find what nodes $tempnode thinks is active # clgetactivenodes -n $tempnode 2>/dev/null 1>&2 returncode=$? # : clgetactivenodes return code is the number of active nodes, : or -1 or 255 in case of an error # if (( $returncode == 255 || $returncode == 0 )) then continue # $tempnode has no clue about active nodes else dspmsg -s $CLMGR_SET $CLMGR_MSGS 351 "\nERROR: cluster services on one or more of the specified nodes, \"%1\$s\", are in a state that prevent the cluster configuration from being removed. A cluster cannot be deleted from a node while cluster services remain active. Please consider running \"%2\$s offline node \" for each active node.\n" "$nodes" "$CLMGR_PROGNAME" 1>&2 rc=$RC_ERROR # Should have an active node list. Mark as error. break fi done fi #======================================================================= : Validates if any system mg exists with this node ID, if yes then : stop here #======================================================================= if (( $rc == RC_UNKNOWN )); then for node in $nodes; do is_entry=$($HAUTILS/clodmget -n -q "field_type=NODE and value=$node" -f identifier HACMPxd_ext_attr 2>/dev/null) if [[ -n $is_entry ]]; then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 769 "\nA system mirror group with name \"%1\$s\" exists for node \"%2\$s\". Please remove it first.\n\n" "$is_entry" "$node" 1>&2 break fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================== : Delete the node if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then for node in $nodes; do CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 307 "Attempting to delete node \"%1\$s\" from the cluster...\n" "$node" print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clnodename -r \"$node\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clnodename -r "$node" rc=$? print "clnodename RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$node" 1>&2 CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 9999 'Use the "lssrc -ls clstrmgrES" command on node "%1$s" to ensure that PowerHA SystemMirror cluster services are not running. Also, remove node "%1$s" from all resource groups, site definitions, collocation and anticollocation lists.\n' "$node" 1>&2 break fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete node -h" "NODE:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_node()" we ex k'o/םa՝a֝a&/bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_nova#!/bin/ksh93 # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_nova.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_nova =head1 SYNOPSIS clmgr delete nova {[NovaLink] | ALL} =head1 DESCRIPTION Attempts to delete the specified NovaLink, from its name, or All NovaLinks. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. NovaLink [REQUIRED] [string] Either hostname of IP address for the NovaLink. IPv4 and IPv6 format address are supported. All NovaLinks can be deleted if 'All' is specified. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_nova { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset novas=${1//\"} novas=${novas//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset nova= typeset -u uc_val=$novas #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $novas == *([[:space:]]) ]]; then CL=$LINENO dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u ALL=$uc_val if [[ $ALL == "ALL" ]]; then novas="" typeset available CL=$LINENO KLIB_HACMP_list_novas available for (( i=0; i<${#available[*]}; i++ )); do novas=${novas:+$novas }${available[$i]} done # If no NOVA to delete, consider it is ok if [[ -z $novas ]]; then rc=$RC_SUCCESS fi else typeset NOVAS="" for nova in $novas; do CL=$LINENO KLIB_HACMP_is_known_nova nova >/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$nova" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 1146 "Available NovaLinks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_novas available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else NOVAS="${NOVAS:+$NOVAS }$nova" fi done novas=$NOVAS fi fi if (( $rc == RC_UNKNOWN )) ; then typeset NODES_OF_NOVA= managed_system= for nova in $novas; do #===================================================== : Get managed system attribute from nova #===================================================== print -- "$0()[$LINENO]($SECONDS): managed_system=$(clodmget -q name=$nova -f managed_system -n HACMPnova)" >>$CLMGR_TMPLOG managed_system=$(clodmget -q name=$nova -f managed_system -n HACMPnova) print -- "$0()[$LINENO]($SECONDS): clrmnova -n \"$nova\"" >>$CLMGR_TMPLOG clrmnova -n "$nova" rc=$? print -- "$0()[$LINENO]($SECONDS): clrmnova -n \"$nova\" rc=$rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLMGR_SET $CLMGR_MSGS 1147 "\nERROR: failed to remove the \"%1\$s\" NovaLink.\n\n" "$nova" 1>&2 break else #=========================================================== : Remove this nova managed system entries from HACMPnode ODM #=========================================================== if [[ -n $managed_system ]]; then NODES_OF_NOVA=$(clodmget -q "object=NOVA_MANAGED_SYSTEM and value=$managed_system" -f name -n HACMPnode) rc=$? if (( $rc == RC_SUCCESS )); then if [[ -n $NODES_OF_NOVA ]]; then for NODE_OF_NOVA in $NODES_OF_NOVA; do print -- "$0()[$LINENO]($SECONDS): clchnovaparam -n \"$NODE_OF_NOVA\" -r NOVA_MANAGED_SYSTEM=$managed_system" >>$CLMGR_TMPLOG # Always log commands clchnovaparam -n "$NODE_OF_NOVA" -r NOVA_MANAGED_SYSTEM=$managed_system rc=$? print -- "clchnovaparam -n \"$NODE_OF_NOVA\" -r NOVA_MANAGED_SYSTEM=$managed_system rc=$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLMGR_SET $CLMGR_MSGS 1147 "\nERROR: failed to remove the \"%1\$s\" NovaLink.\n\n" "$nova" 1>&2 fi done fi fi fi fi done fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]]; then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete nova -h" "NOVA:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_nova()" 1 koםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_persistent_iptser#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_persistent_ip.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)27 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_persistent_ip.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:37 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_persistent_ip =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:42 Last Changed: 6/10/12 15:11:37 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_persistent_ip.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete persistent_ip {[,,,...] | ALL} =head1 DESCRIPTION Removes one or more persistent IP labels from the cluster configuration. =head1 ARGUMENTS 1. persistent_ips [REQUIRED] [string] One or more (comma or space separated) persistent IPs to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_persistent_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_persistent_ip.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset persistent_ips=${1//\"/} persistent_ips=${persistent_ips//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset persistent_ip= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $persistent_ips ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$persistent_ips if [[ $uctext == "ALL" ]]; then persistent_ips= typeset available CL=$LINENO KLIB_HACMP_list_persistent_ip available for (( i=0; i<${#available[*]}; i++ )); do persistent_ips="$persistent_ips ${available[$i]}" done if [[ $persistent_ips == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 329 "Warning: there are no persistent IPs to delete.\n" rc=$RC_SUCCESS fi fi fi #================================================================= : Delete the persistent IP if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then for persistent_ip in $persistent_ips; do #=========================================================== : Retrieve the cllsif data to ensure that any IP addresses : are converted to their matching names/labels. #=========================================================== $HAUTILS/cllsif -pcS |\ while read LINE; do : Handle possible IPv6 address typeset IPv6= if [[ $LINE == *\[* ]]; then IPv6=${LINE##*\[} IPv6=${IPv6%%\]*} LINE=${LINE/\[$IPv6\]/[${IPv6//:/_}]} fi print -- "$LINE" | IFS=: read name type nw nettype attr node ipaddr haddr if gname netmask hb_addr site prefix family remainder : Handle possible IPv6 address ipaddr=${ipaddr//_/:} ipaddr=${ipaddr/\[/} ipaddr=${ipaddr/\]/} [[ $LINE != *:persistent:* ]] && continue if [[ $persistent_ip == @($name|$ipaddr) ]]; then typeset pi_label=${LINE%%:*} [[ -n $pi_label ]] && persistent_ip=$pi_label break fi done CL=$LINENO KLIB_HACMP_is_known_persistent_ip "$persistent_ip" 2>/dev/null if (( $? != RC_SUCCESS )) || [[ -z $persistent_ip ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$persistent_ip" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 152 "Available Persistent Node IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_persistent_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmnode -a \"$persistent_ip\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmnode -a "$persistent_ip" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$persistent_ip" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete persistent_ip -h" "PERSISTENT IP/LABEL:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_persistent_ip()"  l~Co#Dםa՝a֝a&'bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_repositoryip  =e inorst_acdlp"#$ACEINOPRSTfhmuy(),-./01:DGLM[]bgv&2;>HKU\kw{}!'*346BFVx%+89w"%O?#/HyI9z)G'2`IT;XX,sK Lk<,D D8D" $32 E#EJ.rP|2.y "C`Xf<"!@1uP< "PXmmmmmmmmmmXʢvDI A9Rc(>Ut<Ǭ~'0IV,sDG rs\flR'lhۂ2ICOX ΎUd\lC6rt=lc Ck_@K *)ۀe0?,z)N/D6 _mmmmjı9ID_:-OcY"q^FT/}mmmmldj_*@$AK(Dq4 .X_O0]E?piR  ,d 3pn&L*DXˁ}Y #,&Mb%ֿmmmmmmmm?GNMxvUfS'6,i,rmmmmmmmm *P2@xce5 s2$H8XX+jޕ ` (TQ2eɕ&T ZHJ  *[$,]Ud\L0iR  ,d 3,&Mb%ֿmmXMƪz+mmWxyʮ"a 8*vXl2E d!QaC 3c&`cZ;Q;!"3*gOB8lNS؈, _Ҥ @X% PpqT'՘Lp |iʮ"` q|523 ۟Ut<@1Rd"\\ 7/q|Ha2h ..Aȹx p B  T4 Ud\ 6ͱk|2.{&H*XLK5 *XLK>C q9-_pTd @3YB†2(g@N8"B\NKEWAs09Rc!_Ҥ @8"fLm6b>mmmmmmmm_'*Lg* aOGφqf[1)}mmmmmmmڿ‚K0IqPiR  rZn~Ud\|2.{&7/ȹWAsϏ@&Va1((PT .X Ud\_mmmmmmmdc:xa^rtRHHz'FX4yǡL%7vC=͜1Hfzy9mmmmmmW&8k2EMQ +6A[(+`  *X@2匔4XBfE+`xXX+MUlpq4`U˖2Pc  4W AWAsϯ𠬀@8"fLa`'% 448 bse7dp@ҥAT .XCE&d\XTL`x]E?HK&\(Lȹ48# ȹWAsϏUd\Iȹ<,&lZ}Y2P:8v&P52&×FGSAR * *X_ B&@ .O*Hv00 rZ 00 rZBBʖJ'H5 ( "HX "* AȹcAؙC Ț#Aa{O(:J!+a\_ n@$T4@WAsόW(h *XLKAȹk2P:@$dcǁ̔4N (hx܁F_ L noj'g$,^ //v@? d`2 @L4Ha2h ..ʮ" LjdMBe P"hx<(mmmmmmڿBBʖJ'H5 ( "HX "* Aȹc(hLjdM l=QMHud:K0I D3F2D _/*BWHV(TR4T0!b2P|2.yqʮ"2 @L8$/#lZo$u4\H$Lɜ$:51[QH yT* $,^ zNP/* |&c'%mmmmmmmmmK4ruFؘWAsτCkk-* Mj2OE\a0!bcr;!hF؟-χk{tv`Aĉ2gE9cONmӕ&,sW>mmmmmmmmm#2$H+a\_ HTd3%I\NKWFPbtRJ93S5i+2AʠUd\N >Ut܀HPL' /'%"H@8 ,f7`zJejJej:J0II0`#H*\i(pT`'=(Ȳa"8Itw X7;WAs p=>8(08ba *DU˖2;+6ʐ$hM˖3Dm6ů𠬂GSAv dH3&pW UAQ'H>UtUtvUϊ-zsd64۞u'#2ICO6AU?>آ'  V^XfNƛsΣ9㌀(dw J,svC= Mc۟!y8f|acQQCSX=4k΢TFcMQ67GIdvEc"5\Sz NFyE0H,"Ӓb9R"ְh@1aBNT]E>Ӓb8Lx/ܩ2/W)xC@D B@-x0H-Ŀ(x$@wʮ"a{9:JeNi z1c1* Ɇ-P"c3NnS OG{WAsϭ$[g|pܧ"GICЌI6F,ssk̵i>Q-t䢘D8XSFVD;|2.{&`&&1/cFY>pt;TR/F2^Ud\L8F1NjI-x$;#8b*DTc^ƍ /ljC|2.y%0Z$;|k\sE "*1/cFh"3*n7g:0&ԧ69A4kତl ډـvh!$6ӑ%;Q;0|VRaJ{)qA8e v';! 9L3El۟΢v1bHcSyDeI&ԧk宜S40UkφΜR rw+/F,stUVQ|883-y$6yE"Z8Զ^~qnI#|%YI)8ҝ7L6mmmmmmmmmmXmD3Zp8q8W z82mmmmmmmmmjUt k,oםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_resourcegrouptser#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_resourcegroup.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)89 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_resourcegroup.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:38 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_resourcegroup =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:40:43 Last Changed: 6/10/12 15:11:38 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_resourcegroup.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete resource_group {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more resource groups from the cluster configuration. =head1 ARGUMENTS 1. rgs [REQUIRED] [string] One or more (comma or space separated) resource groups to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_resourcegroup { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_resourcegroup.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rgs=${1//\"/} rgs=${rgs//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset rg= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $rgs ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$rgs if [[ $uctext == "ALL" ]]; then rgs= typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do rgs="$rgs ${available[$i]}" done if [[ $rgs == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 330 "Warning: there are no resource groups to delete.\n" rc=$RC_SUCCESS fi fi fi #================================================================== : Delete the resource group if no input errors have been detected #================================================================== if (( $rc == RC_UNKNOWN )); then for rg in $rgs; do CL=$LINENO KLIB_HACMP_is_known_rg "$rg" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$rg" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmgrp -g $rg" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmgrp -g $rg rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$rg" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete resource_group -h" "RESOURCE GROUP:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_resourcegroup()" GHT CO koםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_service_ipup#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_service_ip.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_service_ip.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_service_ip =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:40:43 Last Changed: 6/10/12 15:11:39 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_service_ip.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete service_ip {[,,,...] | ALL} =head1 DESCRIPTION Removes one or more shared or node-bound service IP from the cluster configuration. =head1 ARGUMENTS 1. service_ips [REQUIRED] [string] One or more (comma or space separated) service IPs to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_service_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_service_ip.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset service_ips=${1//\"/} service_ips=${service_ips//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset service_ip= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $service_ips ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$service_ips if [[ $uctext == "ALL" ]]; then service_ips= typeset available CL=$LINENO KLIB_HACMP_list_service_ip available for (( i=0; i<${#available[*]}; i++ )); do service_ips="$service_ips ${available[$i]}" done if [[ $service_ips == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 331 "Warning: there are no service IPs to delete.\n" rc=$RC_SUCCESS fi fi fi #============================================================== : Delete the service IP if no input errors have been detected #============================================================== if (( $rc == RC_UNKNOWN )); then for service_ip in $service_ips; do #================================================================== : If the service_ip is in IP address format, convert to its label. : clrmnode will not accept a service_ip in address format. #================================================================== if [[ $service_ip == *@(\.|:)* ]]; then service_ip=$($HAUTILS/clodmget -q identifier=$service_ip -n -f ip_label HACMPadapter) fi CL=$LINENO KLIB_HACMP_is_known_service_ip "$service_ip" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$service_ip" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 156 "Available Service IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_service_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmnode -a \"$service_ip\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmnode -a "$service_ip" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$service_ip" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete service_ip -h" "SERVICE IP/LABEL:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_service_ip()" ======= k\o,םa՝a֝a&,bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_site#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_site.sh 1.8 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)88 1.8 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_site.sh, hacmp.assist, 61haes_r720, 1520B_hacmp720 5/8/15 10:48:44 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_site =head1 VERSION Version Number: 1.8 Last Extracted: 5/14/15 17:39:14 Last Changed: 5/8/15 10:48:44 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_site.sh, hacmp.assist, 61haes_r720, 1520B_hacmp720 =head1 SYNOPSIS clmgr delete site {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more sites from the cluster configuration. =head1 ARGUMENTS 1. sites [REQUIRED] [string] One or more (comma or space separated) sites to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_delete_site # # Description: This is the main, FPATH function that is invoked by clmgr # to delete a cluster site. If the last site is removed from # a stretched cluster, the cluster is automatically changed # to a standard cluster. # # Inputs: See the "devDoc()" function, above. # # Outputs: Warning messages are emitted if a cluster type change is # performed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_delete_site { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.8, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_site.sh, hacmp.assist, 61haes_r720, 1520B_hacmp720 : INPUTS: $* typeset sites=${1//\"/} sites=${sites//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset site= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ -z $sites ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$sites if [[ $uctext == "ALL" ]]; then sites= typeset available CL=$LINENO KLIB_HACMP_list_sites available for (( i=0; i<${#available[*]}; i++ )); do sites="$sites ${available[$i]}" done if [[ $sites == *([[:space:]]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 332 "Warning: there are no sites to delete.\n" rc=$RC_SUCCESS fi fi fi #======================================================================= : Validates if any repos mg or storage system exists with this site ID, : if yes then stop here #======================================================================= if (( $rc == RC_UNKNOWN )); then for site in $sites; do is_entry=$(clodmget -n -q "field_type=site and value=$site" -f identifier HACMPxd_ext_attr 2>/dev/null) if [[ -n $is_entry ]]; then rc=$RC_ERROR dspmsg -s $CLVT_SET $CLVT_MSGS 770 "\nA repository mirror group with name \"%1\$s\" exists for site \"%2\$s\". Please remove it first.\n\n" "$is_entry" "$site" 1>&2 break fi is_entry=$(clodmget -n -q "xd_storage_system_site_affiliation=$site" -f xd_storage_system_name HACMPxd_storage_system 2>/dev/null) if [[ -n $is_entry ]]; then rc=$RC_ERROR dspmsg -s $CLVT_SET $CLVT_MSGS 771 "\nA storage system with name \"%1\$s\" exists for site \"%2\$s\". Please remove it first.\n\n" "$is_entry" "$site" 1>&2 break fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================== : Delete the site if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then for site in $sites; do CL=$LINENO KLIB_HACMP_is_known_site "$site" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$site" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 157 "Available Sites:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_sites available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else #===================================================== : If removing sites from a linked cluster, then warn : that cluster synchronization will not be possible. #===================================================== if [[ $CLUSTER_TYPE == "LC" ]] then print cl_dspmsg -s 63 cluster.cat 55 "\ Warning: you are removing sites from a Linked Cluster. You will not be able to verify and synchronize these changes until you add site(s) for a total of 2 sites.\n" sleep 5 # Provide a little Ctrl+C time else #====================================================== : If this removal will leave just one site, then warn : that cluster synchronization will not be possible. #====================================================== if (( $(clodmget -n -f name HACMPsite | wc -l) == 2 )) then print cl_dspmsg -s 63 cluster.cat 54 "\ Warning: you are removing a site which will leave only 1 site configured. You will not be able to verify and synchronize these changes until you add site(s) for a total of 2 sites or delete all sites.\n" sleep 5 # Provide a little Ctrl+C time #======================================================== : If removing the last site, and this is a stretched : cluster, then warn that the cluster will be converted : to a standard cluster. #======================================================== elif (( $(clodmget -n -f name HACMPsite | wc -l) == 1 )) && [[ $CLUSTER_TYPE == "SC" ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1016 " Warning: you are removing the last site (\"%1\$s\") from a stretched cluster. This will result in the cluster automatically being converted to a standard cluster.\n" "$site" sleep 5 # Provide a little Ctrl+C time fi fi print "$0()[$LINENO]($SECONDS): claddsite -d -s $site" >>$CLMGR_TMPLOG # Always log commands claddsite -d -s $site rc=$? print "$0()[$LINENO]($SECONDS): claddsite RC: $rc" >>$CLMGR_TMPLOG # Log the result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$site" 1>&2 break else #========================================================== : The site was successfully removed. If there are no more : sites, and this is a stretched cluster, then change the : cluster type to standard. #========================================================== if [[ -z $(clodmget -n -f name HACMPsite) && $CLUSTER_TYPE == "SC" ]] then print "$0()[$LINENO]($SECONDS): multi_site_lc == $(clodmget -f multi_site_lc HACMPcluster)" >>$CLMGR_TMPLOG print "$0()[$LINENO]($SECONDS): echo \"HACMPcluster: multi_site_lc=-1\" | odmchange -o HACMPcluster" >>$CLMGR_TMPLOG print "HACMPcluster: multi_site_lc=-1" | odmchange -o HACMPcluster print "$0()[$LINENO]($SECONDS): multi_site_lc == $(clodmget -f multi_site_lc HACMPcluster)" >>$CLMGR_TMPLOG cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1015 "\nNote: now that the last site has been removed from the cluster, the cluster type has been automatically changed from stretched to standard.\n" fi fi fi done fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete site -h" "SITE:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_site()" tha koםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_snapshotpup#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_snapshot.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_snapshot =head1 SYNOPSIS clmgr delete snapshot {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more snapshots from the local system. =head1 ARGUMENTS 1. snapshot [REQUIRED] [string] One or more (comma or space separated) snapshots to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_delete_snapshot # # Description: This is the main, FPATH function that is invoked by clmgr # to delete a cluster snapshot. # # Inputs: See the "devDoc()" function, above. # # Outputs: None. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_delete_snapshot { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset snapshots=${1//\"/} snapshots=${snapshots//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset snapshot= #================= : Validate input #================= if [[ -z $snapshots ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 158 "Available Snapshots:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_MISSING_INPUT else typeset -u uctext=$snapshots if [[ $uctext == "ALL" ]]; then snapshots= typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do snapshots="$snapshots ${available[$i]}" done if [[ $snapshots == *([[:space:]]) ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 333 "Warning: there are no snapshots to delete.\n" rc=$RC_SUCCESS fi fi fi #============================================================ : Delete the snapshots if no input errors have been detected #============================================================ integer PROBLEMS=0 if (( $rc == RC_UNKNOWN )); then # loop through the list of snapshots - since this is a loop we # dont preserve specific errors (e.g. not found or failed to delete) # since rc could be overwritten in the next loop iteration - instead # we simply record that there were problems and throw RC_ERROR later for snapshot in $snapshots; do CL=$LINENO KLIB_HACMP_is_known_snapshot "$snapshot" if (( $? != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$snapshot" 1>&2 (( PROBLEMS++ )) else print -- "$0()[$LINENO]($SECONDS): clsnapshot -r -n \"$snapshot\"" >>$CLMGR_TMPLOG # Always log commands clsnapshot -r -n "$snapshot" rc=$? if (( $rc != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$snapshot" 1>&2 (( PROBLEMS++ )) fi fi done if (( PROBLEMS )) then # add an extra space after error messages print -u2 # if there were problems, list the available snapshots dspmsg -s $CLVT_SET $CLVT_MSGS 158 "Available Snapshots:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_ERROR fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete snapshot -h" "SNAPSHOT:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_snapshot()" #==== k|ooםa՝a֝a&obm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_agenttser#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_agent.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)29 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_agent.sh, hacmp.assist, 61haes_r714 8/14/12 13:26:05 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_storage_agent =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:43 Last Changed: 8/14/12 13:26:05 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_agent.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete storage_agent {[,,...] | ALL} =head1 DESCRIPTION Deletes one or more storage agents from the local system. =head1 ARGUMENTS 1. storage_agents [REQUIRED] [string] One or more (comma or space separated) storage agents to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_storage_agent { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_agent.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset storage_agents=${1//\"/} storage_agents=${storage_agents//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg $RC_MISSING_DEPENDENCY $0 $LINENO return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset storage_agent= #================= : Validate input #================= if [[ -z $storage_agents ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$storage_agents if [[ $uctext == "ALL" ]]; then storage_agents= typeset available CL=$LINENO KLIB_HACMP_list_storage_agents available for (( i=0; i<${#available[*]}; i++ )); do storage_agents="$storage_agents ${available[$i]}" done if [[ $storage_agents == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 338 "Warning: there are no storage agents to delete.\n" rc=$RC_SUCCESS fi fi fi #========================================================== : Delete the object if no input errors have been detected #========================================================== if (( $rc == RC_UNKNOWN )); then for storage_agent in $storage_agents; do typeset TYPE="" CL=$LINENO KLIB_HACMP_is_known_storage_agent "$storage_agent" TYPE if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$storage_agent" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 163 "Available Storage Agents:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_storage_agents available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_remove_sa_director -n \"$storage_agent\" -s \"$TYPE\"" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_remove_sa_director -n "$storage_agent" -s "$TYPE" rc=$? print -- "$0()[$LINENO]($SECONDS): clxd_remove_sa_director RC: $rc" >>$CLMGR_TMPLOG # Always log commands if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$storage_agent" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete storage_agent -h" "STORAGE AGENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_storage_agent()" / ktuo םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_systemtser#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_system.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_system.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_storage_system =head1 SYNOPSIS clmgr delete storage_system {[,,...] | ALL} \ [ BACKUP_PROFILE={yes|no} ] =head1 DESCRIPTION Deletes one or more storage systems from the local system. =head1 ARGUMENTS 1. storage_systems [REQUIRED] [string] One or more (comma or space separated) storage systems to attempt to delete. 2. backup_profile [OPTIONAL] [string] Flag to delete the storage systems either from ODM or from XML. Only delete the storage systems from backup management XML if yes. Allowed values: yes,no =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_storage_system { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_storage_system.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM : INPUTS: $* typeset storage_systems=${1//\"/} storage_systems=${storage_systems//,/ } typeset backup=${2//\"/} typeset -i backup_profile=0 if [[ -n $backup ]]; then CL=$LINENO verify_in_set BACKUP_PROFILE "$backup" "enable, true, yes, 1" backup if (( $? == RC_SUCCESS )); then [[ $backup == @(t|y|1|e)* ]] && backup_profile=1 else log_return_msg "$RC_INCORRECT_INPUT" "$0()" "$LINENO" return $? fi fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset storage_system= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #================= : Validate input #================= if [[ -z $storage_systems ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$storage_systems if [[ $uctext == "ALL" ]]; then storage_systems= typeset available if (( $backup_profile == 0 )); then CL=$LINENO KLIB_HACMP_list_storage_systems available 2>>$CLMGR_TMPLOG else CL=$LINENO KLIB_HACMP_list_storage_systems available BACKUP=1 2>>$CLMGR_TMPLOG fi for (( i=0; i<${#available[*]}; i++ )); do storage_systems="$storage_systems ${available[$i]}" done if [[ $storage_systems == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 339 "Warning: there are no storage systems to delete.\n" rc=$RC_SUCCESS fi fi fi #========================================================== : Delete the object if no input errors have been detected #========================================================== if (( $rc == RC_UNKNOWN )); then for storage_system in $storage_systems; do typeset TYPE="" BACKUP_PROFILE="" if (( $backup_profile == 1 )); then BACKUP_PROFILE="Enable" fi CL=$LINENO KLIB_HACMP_is_known_storage_system "$storage_system" TYPE BACKUP_PROFILE if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$storage_system" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 164 "Available Storage Systems:\n\n" 1>&2 typeset available if (( $backup_profile == 0 )); then CL=$LINENO KLIB_HACMP_list_storage_systems available 2>>$CLMGR_TMPLOG else CL=$LINENO KLIB_HACMP_list_storage_systems available BACKUP=1 2>>$CLMGR_TMPLOG fi for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else if [[ $BACKUP_PROFILE == "Enable" ]];then print -- "$0()[$LINENO]($SECONDS): cl_cbm_delete_storage_profile \"$storage_system\"">>$CLMGR_TMPLOG LANG=C cl_cbm_delete_storage_profile "$storage_system" rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_delete_storage_profileRC: $rc" >>$CLMGR_TMPLOG else CL=$LINENO isEnterprise if (( $? == 1 ));then print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_remove_ss_director -n \"$storage_system\" -s \"$TYPE\"" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_remove_ss_director -n "$storage_system" -s "$TYPE" rc=$? print -- "$0()[$LINENO]($SECONDS): clxd_remove_ss_director RC: $rc" >>$CLMGR_TMPLOG # Always log commands fi fi if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$storage_system" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete storage_system -h" "STORAGE SYSTEM:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_storage_system()" OG  ko'םa՝a֝a&'bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_tape#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_tape.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)94 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_tape.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:43 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_tape =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:21 Last Changed: 6/10/12 15:11:43 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_tape.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete tape {[,,,...] | ALL} =head1 DESCRIPTION Deletes one or more tape devices from the local system. =head1 ARGUMENTS 1. tapes [REQUIRED] [string] One or more (comma or space separated) tape devices to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_tape { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_tape.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset tapes=${1//\"/} tapes=${tapes//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset tape= #================= : Validate input #================= if [[ -z $tapes ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$tapes if [[ $uctext == "ALL" ]]; then tapes= typeset available CL=$LINENO KLIB_HACMP_list_tapes available for (( i=0; i<${#available[*]}; i++ )); do tapes="$tapes ${available[$i]}" done if [[ $tapes == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 334 "Warning: there are no tapes to delete.\n" rc=$RC_SUCCESS fi fi fi #======================================================== : Delete the tape if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then for tape in $tapes; do CL=$LINENO KLIB_HACMP_is_known_tape "$tape" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$tape" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 159 "Available Tapes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_tapes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrmtape \"$tape\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrmtape "$tape" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$tape" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete tape -h" "TAPE:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_tape()" p ko םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_user#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_user.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)82 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_user.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:44 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_user =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:05 Last Changed: 6/10/12 15:11:44 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_user.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete user \ [ RESOURCE_GROUP= ] \ [ REMOVE_AUTH_INFO={true|false} ] \ [ REGISTRY={files|ldap} ] =head1 DESCRIPTION Deletes one or more AIX users from either all the cluster nodes, or from those nodes that the specified resource group can run on. =head1 ARGUMENTS 1. users [REQUIRED] [string] One or more (comma or space separated) users to attempt to delete. 2. rg [OPTIONAL] [string] A resource user label that, if provided, will be used to limit which nodes the users will be removed from. 3. remove_auth_info [OPTIONAL] [boolean] 4. registry [OPTIONAL] [set] Specifies which registry to remove the user from, FILES or LDAP. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_user { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_user.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset users=${1//\"/} users=${users//,/ } typeset rg=${2//\"/} typeset -l remove_auth_info=${3//\"/} typeset registry=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset user= #================= : Validate input #================= if [[ -z $users ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi if [[ $rg != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_rg $rg if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$rg" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourceusers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi if [[ $registry != *([[:space:]]) ]]; then typeset -u registryUC=$registry case $registryUC in LD*) registry=LDAP ;; LO*) registry=files ;; F*) registry=files ;; *) /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' REGISTRY "$registry" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi #======================================================== : Delete the user if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then for user in $users; do CL=$LINENO KLIB_HACMP_is_known_user "$user" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$user" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 162 "Available Users:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_users available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else typeset rgOpt= rmOpt=" -p" [[ $rg != *([[:space:]]) ]] && rgOpt=" -cspoc-g $rg" [[ $remove_auth_info == @(f|n)* ]] && rmOpt="" typeset -u source= if [[ $registry == *([[:space:]]) ]]; then source=$(/usr/sbin/lsuser -R LDAP -a registry $user 2>>$CLMGR_TMPLOG) source=${source##*=} [[ -n $source ]] && registry=$source source=$(/usr/sbin/lsuser -R files -a registry $user 2>>$CLMGR_TMPLOG) source=${source##*=} if [[ -n $source ]]; then [[ -n $registry ]] && registry="$registry " registry="$registry$source" fi fi typeset -i cmd_rc=$RC_UNKNOWN for source in $registry; do if [[ $source == "LDAP" ]]; then print -- "$0()[$LINENO]($SECONDS): mode=LDAP $HACSPOC/fix_args nop cl_rmuser$rgOpt$rmOpt \"$user\"" >>$CLMGR_TMPLOG # Always log commands mode=LDAP $HACSPOC/fix_args nop cl_rmuser$rgOpt$rmOpt "$user" elif [[ $source == "FILES" ]]; then print -- "$0()[$LINENO]($SECONDS): $HACSPOC/fix_args nop cl_rmuser$rgOpt$rmOpt \"$user\"" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/fix_args nop cl_rmuser$rgOpt$rmOpt "$user" fi cmd_rc=$? print -- "$0()[$LINENO]($SECONDS): cl_rmuser RC: $cmd_rc" >>$CLMGR_TMPLOG if (( $cmd_rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$user" 1>&2 break else (( $rc != $RC_ERROR )) && rc=$cmd_rc fi done fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete user -h" "USER:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_user()" ;;  ko6םa՝a֝a&6bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_logical_volumetser#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_logical_volume.sh 1.1 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 2fc42d2 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_logical_volume.sh, 726, 2147A_aha726, Jul 14 2021 11:53 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_logical_volume =head1 VERSION Version Number: 1.1 Last Extracted: 1/31/14 04:42:06 Last Changed: 7/3/12 11:06:08 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_logical_volume.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete logical_volume {[,,...] | ALL} =head1 DESCRIPTION Deletes one or more logical volumes from the cluster. =head1 ARGUMENTS 1. logical_volumes [REQUIRED] [string] One or more (comma or space separated) logical volumes to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_logical_volume { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 2fc42d2 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_logical_volume.sh, 726, 2147A_aha726, Jul 14 2021 11:53 PM : INPUTS: $* typeset logical_volumes=${1//\"/} logical_volumes=${logical_volumes//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset logical_volume= #================= : Validate input #================= if [[ -z $logical_volumes ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$logical_volumes if [[ $uctext == "ALL" ]]; then logical_volumes= typeset available CL=$LINENO KLIB_HACMP_list_logical_volumes available for (( i=0; i<${#available[*]}; i++ )); do logical_volumes="$logical_volumes ${available[$i]}" done if [[ $logical_volumes == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 341 "Warning: there are no logical volumes to delete.\n" rc=$RC_SUCCESS fi fi fi #=================================================================== : Delete the logical volumes if no input errors have been detected #=================================================================== if (( $rc == RC_UNKNOWN )); then for logical_volume in $logical_volumes; do CL=$LINENO KLIB_HACMP_is_known_logical_volume "$logical_volume" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$logical_volume" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 148 "Available Logical Volumes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_logical_volumes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else # Check if the lv has authentication methods, if so then remove authentication methods before removing lv typeset -A lvProps CL=$LINENO KLIB_HACMP_get_logical_volume_attributes $logical_volume lvProps isLV_encrypted=${lvProps[ENCRYPTION]} vg_name=${lvProps[VOLUME_GROUP]} if [[ $isLV_encrypted == "yes" ]];then print "$0()[$LINENO]($SECONDS): cl_enable_encryption -l $logical_volume -v $vg_name -r all" >>$CLMGR_TMPLOG cl_enable_encryption -l $logical_volume -v $vg_name -r all rc1=$? print "$0()[$LINENO]($SECONDS): cl_enable_encryption -l $logical_volume -v $vg_name -r all RC:$rc1" >>$CLMGR_TMPLOG if (( $rc1 != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1487 "\nWARNING: Failed to remove authentication method name(s).\n" 1>&2 fi fi print -- "$0()[$LINENO]($SECONDS): _CSPOC_CALLED_FROM_SMIT=true _CSPOC_MODE=both $HASBIN/cl_rmlv \"$logical_volume\"" >>$CLMGR_TMPLOG # Always log commands _CSPOC_CALLED_FROM_SMIT=true _CSPOC_MODE=both $HASBIN/cl_rmlv "$logical_volume" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR dspmsg -s $CLMGR_SET $CLMGR_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$logical_volume" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete logical_volume -h" "LOGICAL VOLUME:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_logical_volume()"  koEםa՝a֝a&Ebm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_volume_group#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_volume_group.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)62 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_volume_group.sh, hacmp.assist, 61haes_r714 7/3/12 11:33:23 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_volume_group =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:19 Last Changed: 7/3/12 11:33:23 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_volume_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr delete volume_group {[,,...] | ALL} =head1 DESCRIPTION Deletes one or more volume groups from the cluster. =head1 ARGUMENTS 1. volume_groups [REQUIRED] [string] One or more (comma or space separated) volume groups to attempt to delete. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_delete_volume_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_volume_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset volume_groups=${1//\"/} volume_groups=${volume_groups//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset volume_group= #================= : Validate input #================= if [[ -z $volume_groups ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset -u uctext=$volume_groups if [[ $uctext == "ALL" ]]; then volume_groups= typeset available CL=$LINENO KLIB_HACMP_list_volume_groups available for (( i=0; i<${#available[*]}; i++ )); do volume_groups="$volume_groups ${available[$i]}" done if [[ $volume_groups == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 340 "Warning: there are no volume groups to delete.\n" rc=$RC_SUCCESS fi fi fi #================================================================ : Delete the volume group if no input errors have been detected #================================================================ if (( $rc == RC_UNKNOWN )); then for volume_group in $volume_groups; do CL=$LINENO KLIB_HACMP_is_known_volume_group "$volume_group" if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$volume_group" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 160 "Available Volume Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_volume_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done rc=$RC_NOT_FOUND else print -- "$0()[$LINENO]($SECONDS): $HASBIN/cl_rmvg \"$volume_group\"" >>$CLMGR_TMPLOG # Always log commands $HASBIN/cl_rmvg "$volume_group" rc=$? if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 300 "\nERROR: failed to delete \"%1\$s\".\n\n" "$volume_group" 1>&2 break fi fi done (( $rc != RC_SUCCESS )) && print -u2 fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete volume_group -h" "VOLUME GROUP:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_volume_group()" 4 kfNo'םa՝a֝a&'bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_delete_backup_profiletser#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_backup_profile.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_delete_backup_profile =head1 SYNOPSIS clmgr delete backup_profile {[,,...] | ALL} \ [ CANCEL_BACKUP={no|yes} ] backup_profile => bp, backup_p, replication_profile =head1 DESCRIPTION Attempts to delete backup profile configuration and backup data for specified resource group or All resource groups. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. resource_group [REQUIRED] [string] Resource group name can be single or multiple resource groups All resource group can be deleted if 'All' is specified. 3. CANCEL_BACKUP [OPTIONAL] [string] Cancels running backup process. Default value no. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_delete_backup_profile # # Description: This is the main, FPATH function that is invoked by clmgr # to delete backup configuration. The cl_cbm_list utility is # used to query backup configuraton and cl_cbm_delete utility # is invoked to delete data from xml file. # # Inputs: See the "devDoc()" function at the top of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the top of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_delete_backup_profile { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_delete_backup_profile.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM : INPUTS: $* typeset rgs=${1//\"} rgs=${rgs//,/ } typeset cancel_backup=${2//\"} [[ -z $TAB ]] && TAB=$'\t' [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_SUCCESS typeset rg= available= output= unknown_rg= typeset -l lc_rg=$rgs typeset nodelist="" #==================================== : Check python is installed or not #==================================== LANG=C cl_get_python_version 2>&1 >>/dev/null rc=$? if (( $rc != 0 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1315 "\nERROR: Python must be installed for using backup feature.\n\n" 1>&2 log_return_msg "$rc" "$0()" "$LINENO" return $rc fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY else #================= : Validate input #================= if [[ -z $rgs ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): cl_cbm_list" >>$CLMGR_TMPLOG # Always log command result available=$(LANG=C cl_cbm_list 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_list RC:$rc" >>$CLMGR_TMPLOG # Always log command result if [[ $lc_rg != "all" ]] then for rg in $rgs do echo "$available" | grep -wq $rg || unknown_rg=${unknown_rg:+$unknown_rg,}$rg done if [[ -n $unknown_rg ]] then available=$(echo "$available" | sed "s/^/$TAB/g") cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1191 "\nERROR: Resource group \"%1\$s\" not configured for backup.\n\n" "$unknown_rg" 1>&2 cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1192 "Configured resource groups for backup:\n\n" 1>&2 print -u2 "$available" print -u2 "" rc=$RC_NOT_FOUND fi else # Delete all configured RGs rgs="" for rg in $available do rgs="${rgs:+$rgs }$rg" done # If no RG to delete, consider it is ok if [[ -z $rgs ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1197 "\nERROR: No resource group configured for backup.\n\n" 1>&2 fi rc=$RC_SUCCESS fi fi # Validate cancel_backup value. if [[ -n $cancel_backup ]] then CL=$LINENO verify_in_set CANCEL_BACKUP "$cancel_backup" "yes no" cancel_backup if (( $? != RC_SUCCESS ));then rc=$RC_INCORRECT_INPUT fi else cancel_backup="no" fi if (( $rc == RC_SUCCESS )) ; then for rg in $rgs; do if [[ $cancel_backup == "yes" ]] then #Even if cancellations fails log error and continue with delete print -- "$0()[$LINENO]($SECONDS): cl_cbm_cancel_backup $rg" >>$CLMGR_TMPLOG # Always log command result LANG=C cl_cbm_cancel_backup "$rg" 2>>$CLMGR_TMPLOG rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_cancel_backup $rg RC:$rc" >>$CLMGR_TMPLOG # Always log command result fi print -- "$0()[$LINENO]($SECONDS): cl_cbm_delete $rg" >>$CLMGR_TMPLOG # Always log command result output=$(LANG=C cl_cbm_delete "$rg" 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_delete $rg RC:$rc" >>$CLMGR_TMPLOG # Always log command result # If rootvg_profile is removed from backup configuration, then coresponding timer should be removed if [[ $rg == "rootvg_profile" ]] then cl_cbm_rootvg_timer -r odmdelete -o HACMPtimersvc -q "name = cbm_rootvg_timer" >>/dev/null fi if (( $rc != RC_SUCCESS ));then print -- "$0()[$LINENO]($SECONDS): cl_cbm_delete $rg RC:$rc \noutput=$output" >>$CLMGR_TMPLOG # Always log command result cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1198 "\nERROR: failed to remove backup configuration for resource group \"%1\$s\".\n\n" "$rg" 1>&2 rc=$RC_ERROR break else # if backup profile got deleted then remove the corresponding HACMPresource entry print -- "$0()[$LINENO]($SECONDS): odmdelete -o HACMPresource -q "group=$rg AND name=BACKUP_ENABLED" " >>$CLMGR_TMPLOG odmdelete -o HACMPresource -q "group=$rg AND name=BACKUP_ENABLED" >>/dev/null print -- "$0()[$LINENO]($SECONDS): odmdelete -o HACMPresource -q "group=$rg AND name=BACKUP_ENABLED" RC:$?" >>$CLMGR_TMPLOG fi done fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]]; then cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "delete backup_profile -h" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_delete_backup_profile()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ in  kꤥo7םa՝a֝a&7bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_discover_nodesrofil#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)98 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh, hacmp.assist, 61haes_r714 6/10/12 15:11:45 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_discover_nodes =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:14 Last Changed: 6/10/12 15:11:45 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_discover_nodes =head1 DESCRIPTION Using communication paths add nodes to the cluster definition. This routine will also define the cluster if no cluster definition is available. If the name of the cluster passed in does not match the actual configuration cluster name, then this function uses the existing cluster name =head1 ARGUMENTS 1. cluster_name [OPTIONAL] [string] The name to use for the cluster if no cluster is defined. 2. NODES [REQUIRED] [string ref] A list containing the nodes to add to the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_discover_nodes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_discover_nodes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* cluster_name=${1//\"/} typeset -n NODES=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i found=0 typeset -i rc=$RC_UNKNOWN typeset cluster_name= node= addnode= #============================================== : Check to see if the cluster name is already : defined. If so, use that name. #============================================== existing_cluster_name=$(CL=$LINENO KLIB_HACMP_get_cluster_name) if [[ -n $existing_cluster_name ]]; then cluster_name=$existing_cluster_name fi for node in $NODES; do CL=$LINENO KLIB_HACMP_is_known_node $node >/dev/null 2>&1 (( $? != RC_SUCCESS )) && addnode="$addnode $node" done if [[ -n $addnode ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clmodclstr -n \"$cluster_name\" -p \"$addnode\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clmodclstr -n "$cluster_name" -p "$addnode" >/dev/null 2>>$CLMGR_TMPLOG rc=$? print "clmodclstr RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi for node in $NODES; do if [[ $(CL=$LINENO KLIB_HACMP_is_known_node $node) ]]; then AVAILABLE_NODES="$AVAILABLE_NODES $node" fi done print -- $AVAILABLE_NODES log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_discover_nodes()"  k>o םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_generate_namerofil#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)30 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:11 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_generate_name =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:28 Last Changed: 6/10/12 15:22:11 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_generate_name =head1 DESCRIPTION Generate a unique name for a given PowerHA ODM that also adheres to length requirements. =head1 ARGUMENTS 1: sa_key [REQUIRED] [string] 2: len [OPTIONAL] [integer] The maximum key length. 3: suffix [OPTIONAL] [string] 4: odm [OPTIONAL] [string] 5: field_name [OPTIONAL] [string[ =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_generate_name { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_generate_name.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset sa_key=${1//\"/} integer len=${2//\"/} typeset suffix=${3//\"/} typeset odm=${4//\"/} typeset field_name=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset temp_name= integer count=0 integer sub_length=$len-${#suffix} name="${sa_key:0:$sub_length}${suffix}" while true ; do if [[ -z $(/usr/bin/odmget -q "$field_name=$name" $odm) ]] ; then # name not found, so it is a good one. break; fi count=$count+1 if (( count >= 100 )) ; then # after 99 times, quit with error log_return_msg 1 "$0()" "$LINENO" return $? fi sub_length=$len-${#suffix}-${#count}-1 name="${sa_key:0:$sub_length}_${count}${suffix}" done echo $name log_return_msg 0 "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_generate_name()"  kꂜo 5םa՝a֝a& 5bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_appmonitor_attributeser#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appmonitor_attributes.sh 1.10 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appmonitor_attributes.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_get_appmonitor_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect application monitor information. It invokes the # "odmget" utility on the HACMPmonitor ODM to extract the # necessary data. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_appmonitor_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appmonitor_attributes.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset monname=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then monname= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset name= value= setKey= MONS= DATA= typeset -A monEntries typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= typeset -i matches=0 typeset -u attr= uc_key typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done monEntries=( [MONITOR_TYPE]="TYPE" [RESOURCE_TO_MONITOR]="APPLICATIONS" [INVOCATION]="MODE" [FAILURE_ACTION]="FAILUREACTION" [RESTART_METHOD]="RESTARTMETHOD" [NOTIFY_METHOD]="NOTIFYMETHOD" [CLEANUP_METHOD]="CLEANUPMETHOD" [STABILIZATION_INTERVAL]="STABILIZATION" [RESTART_COUNT]="RESTARTCOUNT" [RESTART_INTERVAL]="RESTARTINTERVAL" [PROCESSES]="PROCESSES" [PROCESS_OWNER]="OWNER" [INSTANCE_COUNT]="INSTANCECOUNT" [MONITOR_METHOD]="MONITORMETHOD" [MONITOR_INTERVAL]="MONITORINTERVAL" [HUNG_MONITOR_SIGNAL]="HUNGSIGNAL" [MONITOR_RETRY_COUNT]="MONITORRETRYCOUNT" [AM_LOGGING]="AMLOGGING" ) #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================= : Make sure we have something to query #======================================= elif [[ -n $monname ]]; then [[ $monname != *,* ]] && unset INDEX for monname in ${monname//,/ }; do CL=$LINENO KLIB_HACMP_is_known_appmonitor "$monname" 2>/dev/null if (( $? != RC_SUCCESS )); then if [[ $CLMGR_PROGNAME == "clmgr" ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$monname" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 141 "Available Application Monitors:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appmonitors available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi rc=$RC_NOT_FOUND else MONS="$MONS $monname" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then print -- "$0()[$LINENO]($SECONDS): clodmget -n -f name -q \"name = MONITOR_TYPE\" HACMPmonitor" >>$CLMGR_TMPLOG # Always log commands MONS=$(clodmget -n -f monitor -q "name = MONITOR_TYPE" HACMPmonitor) print "$0()[$LINENO]($SECONDS): clodmget RC: $?, MONS == \"${MONS//+([[:space:]])/ }\"" >>$CLMGR_TMPLOG # Always log command result MONS=${MONS//+([[:space:]])/ } else if [[ $CLMGR_PROGNAME == "clmgr" ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 fi rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset MONS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for monname in $MONS; do print "$0()[$LINENO]($SECONDS): odmget -q \"monitor=$monname\" HACMPmonitor" >>$CLMGR_TMPLOG # Always log commands DATA=$(odmget -q "monitor=$monname" HACMPmonitor) print "$0()[$LINENO]($SECONDS): odmget RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$DATA" |\ while IFS='=' read name value do name=${name##+([[:space:]])} name=${name%%+([[:space:]])} [[ -z $name || $name == 'HACMPmonitor:' ]] && continue value=${value##+([[:space:]])} value=${value%%+([[:space:]])} value=${value//\"/} case "$name" in "monitor") properties[NAME$INDEX]="$monname" ;; "name") value=${value//\"} setKey=${monEntries[$value]} ;; "value") value=${value//\"} if [[ $setKey == "APPLICATIONS" ]]; then if [[ -n ${properties[$setKey$INDEX]} ]]; then properties[$setKey$INDEX]="${properties[$setKey$INDEX]} " fi properties[$setKey$INDEX]="${properties[$setKey$INDEX]}$value" else properties[$setKey$INDEX]=$value fi ;; esac done #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[application_monitor]}; do if [[ ${properties[TYPE$INDEX]} == "process" ]]; then if [[ $key == @(MONITORMETHOD|MONITORINTERVAL|HUNGSIGNAL|MONITORRETRYCOUNT|AMLOGGING) ]] then continue fi else if [[ $key == @(PROCESSES|OWNER|INSTANCECOUNT) ]] then continue fi fi if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_appmonitor_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_appmonitor_attributes =head1 VERSION Version Number: 1.10 Last Extracted: 6/16/15 17:51:03 Last Changed: 6/1/15 13:20:37 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appmonitor_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query application_monitor [,,...] clmgr -v query application_monitor NOTE: the aliases for "application_monitor" are "am" and "mon". =head1 DESCRIPTION Retrieves the configuration data for one or more application monitors. =head1 ARGUMENTS 1. monname [REQUIRED] [string] The label of one or more application monitors (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== rc=$? ko םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_appserver_attri#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)07 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:13 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_appserver =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:40:16 Last Changed: 6/10/12 15:22:13 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr query application [,,,...] clmgr -v query application NOTE: the aliases for "application" are "as" and "app". =head1 DESCRIPTION Gets the application server name for the specified resource group. This function will only return the first app server found. =head1 ARGUMENTS 1. rg [REQUIRED] [string] The label of one or more resource groups (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_appserver { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rg=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset rgs="" #================= : Validate input #================= if [[ -z $rg ]]; then rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q \"name=APPLICATIONS and group=$rg\" HACMPresource" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q "name=APPLICATIONS and group=$rg" HACMPresource | \ while IFS='=' read name value; do name=${name//[[:space:]]/} if [[ "$name" == "value" ]]; then apps="$value $apps" rc=$RC_SUCCESS fi done || rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result echo $(eval echo $apps) fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_appserver()" 51:0 k[o5םa՝a֝a&5bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_appserver_attributeser#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) aaaa1a8 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver_attributes.sh, 726, 2147A_aha726, Jun 22 2021 10:44 AM #============================================================================ # # Name: KLIB_HACMP_get_appserver_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect application controller information. It invokes # the "odmget" utility on the HACMPserver ODM to extract the # necessary data. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_appserver_attributes { . $HALIBROOT/log_entry "$0()" "$CL" : version="@(#) aaaa1a8 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver_attributes.sh, 726, 2147A_aha726, Jun 22 2021 10:44 AM" : INPUTS: $* typeset appname=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then appname= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset name= value= APPS= DATA= start= stop= typeset cpu_usage_monitor= process= interval= typeset monitor= start_mode= typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= typeset -i matches=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================= : Make sure we have something to query #======================================= elif [[ -n $appname ]]; then for appname in ${appname//,/ }; do CL=$LINENO KLIB_HACMP_is_known_appserver $appname 2>/dev/null if (( $? != RC_SUCCESS )); then if [[ $CLMGR_PROGNAME == "clmgr" ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$appname" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 140 "Available Application Controllers:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi rc=$RC_NOT_FOUND else APPS="$APPS $appname" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then print "$0()[$LINENO]($SECONDS): clodmget -n -f name HACMPserver" >>$CLMGR_TMPLOG # Always log commands APPS=$(clodmget -n -f name HACMPserver) print "$0()[$LINENO]($SECONDS): clodmget RC: $?, APPS == \"${APPS//+([[:space:]])/ }\"" >>$CLMGR_TMPLOG # Always log command result APPS=${APPS//+([[:space:]])/ } else if [[ $CLMGR_PROGNAME == "clmgr" ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 fi rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset APPS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for appname in $APPS; do print "$0()[$LINENO]($SECONDS): cllsserv -csm -n $appname" >>$CLMGR_TMPLOG # Always log commands DATA=$(cllsserv -csm -n $appname 2>> $CLMGR_TMPLOG) print "$0()[$LINENO]($SECONDS): cllsserv RC: $?, $appname DATA == \"$appname\"" >>$CLMGR_TMPLOG print -- "$DATA" | IFS=: read name start stop monitor start_mode cpu_usage_monitor process interval properties[NAME$INDEX]=$name properties[STARTSCRIPT$INDEX]=$start properties[STOPSCRIPT$INDEX]=$stop properties[STARTUP_MODE$INDEX]=$start_mode properties[CPU_USAGE_MONITOR$INDEX]=$cpu_usage_monitor properties[PROCESS_TO_MONITOR_CPU_USAGE$INDEX]=$process properties[CPU_USAGE_MONITOR_INTERVAL$INDEX]=$interval if [[ -n $monitor ]]; then monitor=${monitor%%*([[:space:]])} if [[ $CLMGR_PROGNAME == "clmgr" ]]; then properties[MONITORS$INDEX]=$monitor else properties[ASSOCIATEDMONITORS$INDEX]=$monitor fi fi typeset -u STATE="" integer APP_IDX=$(clodmget -f name -n HACMPserver | grep -nw "$appname" | cut -d: -f1) for RG in $(clodmget -q "value=$appname" -f group -n HACMPresource) do integer RG_IDX=$(clodmget -q "group=$RG" -f id HACMPgroup) properties[RESOURCE_GROUP$INDEX.$APP_IDX$RG_IDX]=$RG STATE=$(LC_ALL=C clRGinfo -c -m $RG 2>/dev/null | grep -w $appname | cut -d: -f5) if [[ -n ${properties[MONITORS$INDEX]} && $STATE != *NOT\ MONITORED* ]] then properties[RAW_MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]=${STATE// /_} if [[ $STATE == *MONITORED* ]] then properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="ACTIVE" properties[RAW_MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="ONLINE_MONITORED" elif [[ -z $STATE || $STATE == *OFFLINE* ]] then properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="OFFLINE" properties[RAW_MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="OFFLINE" elif [[ $STATE == *SUSPENDED* ]] then properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="SUSPENDED" elif [[ $STATE == *FAIL* ]] then properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="ERROR" elif [[ $STATE == *UNKNOWN* ]] then properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="UNKNOWN" else properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="ACTIVE" fi else properties[MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="NOT_MONITORED" properties[RAW_MONITORING_STATUS$INDEX.$APP_IDX$RG_IDX]="NOT_MONITORED" fi done #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[application]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_appserver_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_appserver_attributes =head1 VERSION Version Number: 1.11 Last Extracted: 6/16/15 17:51:10 Last Changed: 6/2/15 13:39:46 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_appserver_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query application [,,,...] clmgr -v query application NOTE: the aliases for "application" are "as" and "app". =head1 DESCRIPTION Retrieves the configuration data for one or more application servers. =head1 ARGUMENTS 1. appname [REQUIRED] [string] The label of one or more application servers (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  lꈆo 5םa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_attributesser  = eorst"$ACELMORST_acdilnp#)-:DGINP[]fghmuy(./;>HU\v&,01FVYbw!*2?BKkx{|}%'+34737 k6^A}`– X0X0A@H,$@H, y¥Nqf# &|T UD$&p+@'1[`Y$< `8"XՆ1Jl3ZƁT, H { d  fxH, `09@MNA$< `8"XՆ1Jl3ZƐ8ѩ\59Mu-.< O\;(aYSqotYO[Ruص]LRq⒙vj ǔxF@l[{`'ɸv]Ĵ^1fIb\۔ۓsfD\xDc3;E)IL5rO`k-LRVg)?:FKf6q!*G#38KQ tYpb33 M=F33H"ӥii@rѤv]Ĵ^1mai82y" +8 0RSu+?RtY˦Ӧ)XϜ_0yV%#>Z9Dl nPU=^%Zȿ"K9L*`'P_1Z -ήFfh[r|ì-%=<,F3Ja*)1BT FnF']U{l՝e%2ֱoe'rɘ]20'6j xA r04zHdUƦ&W4PaUQSsN74䇐DqCՋnN-WjE˲t.F'7YzFmIVf[3qp/WG~]jT? su4zi,S$Ks y\`! y\dɆu-ȬO\:Raq]<Ӧ)X.2 JG!JzSYs^zSDNE=er;.=5=j/+-ΙINzWq/7VY[XVQr'r 0ȬRlm,3f.!8ޠ\W$ꢲ-#dF<@Zp'xpgLgԴzUeۏ1{/q=Ɣܦg9Nŀ窾 7 [ʢ2phz~ i$EU=4Fj On.]yIO9bX9ED*Mޕr0aBEU=4s y\=$p`h$ *Sy+r0ErC"ACa8QCN{`1JwFt-8RZu-1?Bu窸ءP $GA MqzSYs_*< H,ɓ $'< p^(T?Z/Cf:5rSh OiiH~Ouż"K8R/д8(  ((@j†ex$,@+( 9XVQp6_:㸷pC+8PdI2,L pqf CNA$*IAHPjkY%x$,@+( 9XVQp6_:㸷pC+8PdI2,LpqfCsN$rC"ABa', S[agH,&ᡧ catȤS$KrS[&N-HrS[A24r2dH'PjkYzSX`9ApA D8#G+Ftz;mYXשh.L5S2z V^n/4fg(55 8#2^h'A:SZ1 Mc !Ǡn/FA2i N6%=A=ևrOqAq\_,G a!9WwBRz4f#Դvbh1JF--%ߩbqT?ߛW4XHG$<$&rȠ ɲ8g L MCNA$*IAeۋqrᡧ catȤ !iKz1o/f - s6_y'-ʅCXn\]3I1ʰ+ ca5-80 *0;ړzhCr;I4(A.h\j\h g@&朲 04bqz9TEUTTӁa"9! jbogP(?ۓф?ߛW4XHG$<$&rȠ -PjhȬO\8,abX9E¤|ˎ< MeCNA$*IA'=Ћ&i"R.]?Eog(54H XVQr'r 0ȬRlueqog  &˲xhi$X]2)(;CA CL?k8QZDEUTTf=]q2 JGPPf,yIL5 ћ ,zQcYb3Դv1J}esq*d(A.i<.DÂA& y\*M7@"N517/B*p,$Q$<$6LM*?# oF-ӱeZrfC5W$qvP +r &9VE|Lr&`0QUUxE\o̿BҮQc@a.RS.BtfC=K3^qi8X -LRG~\\uʙ xA r"r=p೐IE`74`hM&ȫLM Юiʠ* ni  S{8 G!L,[yZU [,?jŷ'"yu#ߛ,=#^E6+3 V- NPy8EYG̿BҮ5d*51ճNYfTrpH, .ŚD+Z[,zUߕ(AmD#0UrO.g#7YԌ[/7MWnM/kԳxCM˜HNIUr*j,(PgRz%g$<$ơǍfbqz8 74XHsNHyH(l?T?9ŧYv^oq*.c7;CMg;\ ͹fk9?Бi0͹=k3yf^m%x.O\LF2բѥg* EbmYʠy0,?e5Ř٭gybf8(  ((@j†rlX=ȴV37 9 E%xB,Hv^nP=r!2lX=ȴV3gP~n=\Ӂa"PI"(g&˕uP6CNA$*IA'=Ћ&i"R.]vp6Pa`EeB:Vr0?#ŋ9@ȇnC"Yc`/8%㈲鈆m2^6p%$H $Hee&LP#/8y$2F&(.鈉IGj# ELFYt@ $ Ɋa"˦#g,b!ab0L9ly7EC dgx3&L3hߜhIaTH 5vlDbMvOur4$簪$TY;5R302DKR3[bqeE~gW#BI`QUTF''gၐkSr6K'UՂef4W9?В ]U=U"Uvp.͠DF/VI %bhL,]1dɆu-\ ," H.TA@s @ȰQ'ff"l??~r~3%XD""a39Pj$ҌH9!іܞ?9-ޥ%q>E:7Z;Nc>^2Cg"KDYg0 il[,c@yM)ԴKԴ^q~ShyDowf"nRSZ8DӦ)X*nŀLrQQMEɓ Z/C™"Y{\ XAFq"0G(˴2aKE7iDHyH(L$ABV3iפ^dMCNA$*IA'=Ћ&i"R.]?e5(5aAAgn/2^8r &9VLJ8(  ((@j†m:̗3VAAAA ihi$X]2)(;d7dWjE˲tIOzMq E`͹C,{@ rdH'jOUnjFǫp,$Q#A  9dPPՅ A%VzM4m;&˕qobeycdZt+IU"N{LvEv\/7HJiLJ=%vM+Ŕ2n=ȴV37 9tȍ[N+008LzG! catȤae™"X˦DhBtYZd( 80Υ?f˦DhBtYZd( 8DǜYo0 [ ۔?)%ay@I"C(-Da2bd@!HNqewBRzOur4$A`yǐMBqd G!ܞ?_S9tȍ[N+008LzGC(!&3Sh:b)R˸nǑMf\yŗ]3r7\"13tqٯRȼ^T??ߛW4XHG$<$&rȠ w44Lr.sf+"yCKxh[q xîHh$~4qnnqe77$z :*ǫp,$Q#A  9dPPՅ vM+38 ȢxEQ ae444Lr.sf+"yqk dgEQ ae H,ɓ Z/C_#\[UQTz{ȢxBNYw1XOur4$ A`yTzD(=A(!L,X A$*U]0Υ?)%$"r?f z<-*pVˮQL G!Qr~r~3%L,D۔ed6 i6\k{S-'5]R/ 2X=ȴV3̙0Υ?ߜhItS"r.@'fBa3]oEҌYm@nRSYev8B.^qt v1JaM3\ 5X%*FB=qj䞦yZfuyX%*\!cV3֌\j41Y Zλ/7Sp@BX+YoV! J(Aر2a*r :bؤf"Q VgXC˜HNsE^(PgRzOur4$+PȰAF48%*.0~r~3%QXE5aQr?fhRޓq0O^0fAl›.Դwi8;# m48Bn6nN/E:6gdax;үfl9<,]D›zOlRޓq"KGig~4sQ3 EEDGh^6Our4$xz&zaTHT¨HM YeY;aRSޓq{8%^qy(1Yf5G+)ՋK2!rFD?ߛW4XHG$<$&rȠ J jH0zIZYL.4 Aǂt+W#@`jLA\-nr &9VLJN{LvEv\/7IUqII+C 1IƁt8[Nc0q*hӬXi8r4ŹpӐI1ʰdRPvAhlM8 q H䇐DNY 5aC3IUqAJu 2!rF hlMpӐI1ʰdRPwt"ɚnȮԋeƆ?)4]& (3h':<=u=q0$TXz*aTHz٦dEd MBqd G!ܞ?9S$K9]X\EԐ7&L3h~4yQnFiA+9! $< `8"îRN/ʎVSr4G+)CELFG+) 0~r~3%Q"QQN8e  `(!&3V5RkkW+H7iDHyH(L$ABV3i6\k{Sn%0X#ÏA2%3dhi$X]2)(;d7dWjE˲|C2iۉFL;V*xlX2ģ&pdbpKNɲc\[زq(ɇj\/z ,]ٛ%CsN$rC"ABa', Nɲc]Tg@dõbW 9dõbT@pӐI1ʰdRPwt"ɚnȮԋeƆ?)%{9dõbW&O Z/CήF <=%M*Nn%0X#G!8(  ((@j†m;&˕qobmģ&feaǠ}\44Lr.sf+"yqk~4qnmģ&feaذd?ۉFL;V' HճZvM+ŔۉFL;V' HÏA2%3d7iDHyH(L$ABV3i6\k(vN5J2aڱ8fXjFᡧ catȤE4ݑ]. ;XS$Ksq(ɇjYaz2xgRzOur4$5i.rh0+a.Nn%0Xk3,5#V?ߛW4XHG$<$&rȠ .V5Ž)vN5ÏA2%3dhi$X]2)(;d7dWjE˲|C2iۉFL;V' Lذd?ۉFL;V' L-;&˕qobmģ&fe&pLb>.*ǫp,$Q#A  9dPPՅ vM+38 mģ&fe&{@ӛFL;V' Lnr &9VLJ9Y3Mڑr8õ2Dog7vN5ɓ:~r~3!OIvAQ]P{QHy;9dõbq̰]d?97iDHyH(L$ABV3i6\k{Sn%0X,]0딮z ,]ٛ%CNA$*IA'=Ћ&i"R.]vHn%0X,]0딭l?ۉFL;V j:+g.V5Ž)v.uW=Ȗ.͒zE9! 0E XPͧdr3VJ2aڰXTa)^4QՂڣJnr &9VLJ9Y3Mڑr8õ2Dog7v.uW&O Z/CήF <=%MHz˓FL;V j:+Bǫp,$Q#A  9dPPՅ vM+ŔړE'dKifspӐI1ʰdRPwt"ɚnȮԋeƆ?e5Ź'UrOT\?ړE'e-;&˕qobmI\TÏA2%3d7iDHyH(L$ABV3i6\k('UrO1S/ǻ 9p=E}\44Lr.sf+"yqk~4qnlS}( C bbZvM+Ŕl)V(Q8#9efqP~n=\Ӂa"PI"(fӲlXUP+eXGl{@әl)V(QMCNA$*IA'=Ћ&i"R.]vpHs-*}8c༙0Υ?ߜhH "vQiFOur4$x]aa;F?ߛW4XHG$<$&rȠ .V5Ž)ڋ2LN.ŚG=E}\44Lr.sf+"yqk~4qne%6 f`ڋ2LN.ŚF i6\k{S))(e昜]4z 23d7iDHyH(L$ABV3i6\k(ڋ2LN.ŚG 8Xbqv,"IU"N{LvEv\/740aL,⒛Qb^iسHx/&L3h':< *H$.0?ߜhH"0)"zȓaQCsN$rC"ABa', Nɲc\[ز%gY0ԛaRÏA23f_fl7 9 E%xB,Hv^oha_#\[%gY0ԛaR`Vq I+K8%dr-YMXjMԩZaǠȳ/6Kq H䇐DNY 5aC6eƺ [%gY0ԛaRNd+&l5*VIU"N{LvEv\/740aL,J1ba6Ri༙0Υ?ߜhHʢ a]bvQiFOur4$xQEa.;FG!8(  ((@j†m;&˕qobrzE 0&idg"̾.nr &9VLJ9Y3Mڑr8õLF9="m4`(lӲlX,'P fq&Fr,͒zE9! 0E XPͧdr3W'P f izE 0&h ihi$X]2)(;d7dWjE˲|COur4$X'P fq H䇐DNY 5aC6eƸe9ƒ16.&yM=E}\44Lr.sf+"yqk~4qns$bmE]vM3W$qCqMˮɦjbSn3ZvM+ŔHڋ fI%6<8#9efqP~n=\Ӂa"PI"(fӲlXUP+i#j,2i'ی@ӧHڋ fI%61MCNA$*IA'=Ћ&i"R.]vpHtIQa]L<ĦgNLgRzOur4$+(zI(P *5I.^fܤX~RuJJq`]pHtIQa]L<Ħg̙0Υ?ߜhITVP=T`QTj*XHI,?);HήFEeAI%=qaEF;)8Ň'XD"c7"(!&4DbN8SzX.RSʸ#kY1Xp/W3m>&vweyIOrZ;F)Y]f#lfԞ^+jEv5HבMn V4 6&wAD 뮫 *5I4V3&mŀ=ήFbd#&Դ^\ ;4rn3Sg)MbӦ)XԴ^ۖu:9?nL,YtUapy{Ԑ7&L3hR5ߜhITHTz+Our4$A."Nk9?ВǪX X?2D':DW=vD#懐.nLgRzk9?В *<8rwwwwwwwwwwwwwwwwwwwwwwwwwwwpZ-IOe;>bY]-q#JžF*M_#\Yưz"AvAQW`G,H0@4^dzLk9`͹C_#\hx>63HǡzI I1ʰz몵l?@%.9ÃDhrdH'N,22Dog,GA8Y [˦DhpH'9e=^9tȍX'|\f (N)'X+5(Bn&r qY08ѩ\4$jf%=]פ{X+9|UuR4u-'rɚnWq˳^q#Jż gh)QNJ=.YIL5 Ǽgcaq颠z?W$.hՌeLwZ<^rrx^VkN?a= ^,\Դyl'6j-}!Pu,7\.w),Z-^9{rɘ{Ҁhafql*`'I1ʰcXXXx?rO2VX]tHq''k?(i?ZA/uSm5e޲F.Tl\ZJFn-MFjZ&y{f.gR=Գ5~rj4rSedRߜ)Ր.-W`'ړ՜v-* y^vR-SF̤]YtxĬ C|h3\vjomM(|\j=Դv_~r~n3XO˳P Xޠ9nޗSŪŰJ.R OGrSz-O[6L=K3] KӓMTM y'qY8͗ 'X+5t@=xg-U\-b/VfsN7461ΎI4!"Ex, @,h6e=ȰV5aLR ֳp bU  +A % Hٞ8 A, NE3a3@z !DI1ʰ ;)xrdH'k`;<鞳e6K,b4?e5Ź40lP`<A@Bg caq颠zx $ dNIUǦp A$*E@ /+tLr.=4T^DI1ʰcXXXx`@` LVL $XA1U@,,<ѰHNr &9VLkP< tp1BH'A$* `raa!9N &9VLkP< taS/Ƒ-ư\?e555THY&5fi iJMLmnMLF  =sq}ncV`ifS$KsIE`ɓKESr:bģES Pa`EeB:jbog* Ya05((?9~S88.dFV9tȍ[N+008L,Qq ˠG:L="9V ơǍf9Nk (:8pqX]ȍ[fq ˠG:L=B/0v*9f88.dFT.e[fq ˠG:L=B/0v*2i, (:8pqX]ȍYiRVMLF *Ӈ5LꅴlՓaS/ƑPupư)=P5dk=tXIAiÃDhBV٫&_#\Qa%YA[/7*}בM.+9|*n2iI@ ȭf.  &8pqX]ȍ QL0Υ?!ht8A104&ハ$3NxE`Yh6?)%{8pqX@8zCUDLgRz0 dbnr 0Ȭ2p7wwwwwwwwwwwwwwwwwwwwwwwwwwwwp}#Դz~3QW@ZTCjE˲}eppഁ`շ) {2\xr ˮ.:ˮ#Դt'0UrOR3Rf*ZF+Ŗeqe-?fԋe+-5d+]le%2a9?W Yx*n2i뢙x4zH٧. ifӬ;FJ"RMVB8LFEUI4"4zm:\šuhWDJP*3QqĬg(`yTzV}ffpflY@f@0 ۔?sN$rC"ABa', N*Jbڣk4[熜)zG)EUAD44Lr.i%])L[T~Mf{8QX\ӗE2#O\hӗE2(4zH.jǫp,$Q#A  9dPPՅ uhWDJSUmnr &9VLJ?˜HNsEbm}ު ,(V 9tS"4I |]3E2(4zHZ/CŔ]Ȣ#'AE.3AE.k 8 (;IA=&$+ 9 s (;(zh9UȬ0pPvUQVK 92,$qa UaTVIuI2Dog$M5THdɆu-\r@@8zCUD!2iaTZfaTVIuIPŽr@UCNxE`Yh?,YLL<=$rdH'|YLL<=$abg.dQUPhɓ ee3E2(4zH9@5h z `jbXqf@cH,:DḠ:\.=ȧI5gk7""˰-y^i40\x;IL/5!)RPwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwp]UYBa3#95Si#j9Yk catȤ9 E%C_#]EGaJI1ʰ~SIU"ǍatS"4zm:\€28F&X+9|(9N &9VUTgwzˬf]Ǚv^3%q* j~rj4h 朂IUǦ뛃A L?J{7pưp􆪉͹`kHh[q xîH';?J{7pưp􆪉͹`kloCBۈ[w@͹=_#\[l1"D$H"D$H"D$H"D$H"D$H"D$H"D&0˕J{.Դp-g#7&JFe"((*\pưp􆪉kVNY~3"QL0Υ?e5TaTZfè0 "L,EUU dɆu-&16]w#7#L.;\g9OL?vr0?#0)]سJz8 12[nQY3K3\̌m2?qkg* +-C.0haʠ C|YLǍaTVIuIC_#\[ M4=e;g ,>$z=4l=YbF3H ,@zCYbpGD9&M!Sh$z=4lӀ=e ၐjpH,pư)=P.Va@`qV 9YbQd?ߛW 9 E%Ck88.dFT-KPUBA#Xqhi$X]2)(:/)88.dFT-KPUBA#Xq(?ۓчG! a!9Ӎ ;^UAV[(3h7wwwwwwwwwwwwwwww(uޥYT^nBtLr1BRzǫ= kN+1F`yj:-ai7h AB=q xUל^.ļ^?9Jz.zL ,pKq ,?4`0XbV3Ha/`#^p))O\dzH`i($z0*ǫp<ǃVz JLnHNG(A~]EI=e[+tY{C(aji$zrJ74Ysa dbg$Uy2aKE%rJ [N5IATq`h$ g$Up(?ۓч0, PԴ^q"&t#zY0?ߛW4hꞸvT9J]xXr?Jx?q=ezmǫp<ǃVz JLn2De3PpU*g<0Υ?9%RsdH'i$Ux04ee3PpU*g8r(!슱8` 8õ74XHsNHyH(l?TN)V56!: &9VYB$G(V (g٠azy =sAD<r }, P ߛV'Em>&Xm(Bn&r >E. &qSq'jzKGv٫b&5fZEfb딯"l՝\[R.ܤ[LGMр)%0 !@Lưp􆪉 ĤgYlx"d s}e517'Z;Q1yZ8Aҳ{QP^n-xRE.0>2i&5fp22i55THYL?e55QX=%`=$l_#\if4٦Y 4kwA#Z62ia0Gl!RSƞg ՘zmǫp<ǃVz JLn?fA#[qF=eӀ=e#"d02E&zC/U;)),2; H ?W$Vh # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_cluster_name =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:14 Last Changed: 6/10/12 15:22:16 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_name.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr -cSa cluster_name query cluster =head1 DESCRIPTION Retrieves the name/label of the locally defined cluster (if any), and displays it on STDOUT. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_cluster_name { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_name.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset name= typeset -i rc=$RC_UNKNOWN rc=$RC_MISSING_DEPENDENCY # Assume the worst until proven otherwise! print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllsclstr -cS" >>$CLMGR_TMPLOG # Always log commands name=$($HAUTILS/cllsclstr -cS) print "cllsclstr RC: $?; name == \"$name\"" >>$CLMGR_TMPLOG # Always log command result if [[ -n $name ]]; then name=${name#*:} name=${name%%:*} if [[ -n $name ]]; then print -- $name rc=$RC_SUCCESS else rc=$RC_ERROR fi else rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_cluster_name()"  kSo" םa՝a֝a&" bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_nodesut#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_nodes.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)33 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_nodes.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:17 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_cluster_nodes =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:23 Last Changed: 6/10/12 15:22:17 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_nodes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_cluster_nodes =head1 DESCRIPTION Function prints to STDOUT the list of nodes in the cluster. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_cluster_nodes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_nodes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset node= nodes= typeset -i rc=$RC_UNKNOWN print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"object = VERBOSE_LOGGING\" -f name HACMPnode" >>$CLMGR_TMPLOG # Always log commands for node in $($HAUTILS/clodmget -q "object = VERBOSE_LOGGING" -f name HACMPnode) do [[ -n $nodes ]] && nodes="$nodes " nodes="$nodes${node//\"/}" done rc=$? print "clodmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR [[ $nodes != *([[:space:]]) ]] && print -- "$nodes" log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_cluster_nodes()"  lLoUםa՝a֝a&l2bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_cluster_stateut    =e inrst$AENOSTacdhlo"#()-CDGILMRU_fgmpu,.0:>FP[]bvwy*+/12;BHKW\|!&'k3479?@Vqxz{}%56oY֋jUUUUUUUUUUUUUUUUT\XLqqb.W<4$ȣZe.`V(*h,UBT\uATh@\L&&]%h/QTDˤ&4Hi%Az%&Zz&* wN\x 4J,UH`/.T@$h-y@C,3g lL.NbSZwpwȾŞ4p I=DH&kNvl\Miec|6,Hڰ3g lL.NbSZv/ VL6ZZa S4QO͛nS8r֌^|,';x *HJL>x hi $X¥C&K m^yhslYb.@*) "OxX&)&"4 DT MEvv05a:c|7>7#6.mWdO CO P"*Q2NQTFPHw+wȾŞ4p I=DH&eఓW;787v1O֝)٨#R5J+ږRM*ųyT+nRxWٳg`֛ۀ!vl-(^yI0Pw4,@-^/w_ 8@E$F$H3֝g / S b".7n:IG|3qBi"0 ^n"Q@R%$M"T,^F!S0I2(wW"b" l* .T@$EJ6/w ea[2jמւ ;,[7˳-*8ѹ_0rQLp q |*D`B5p4 8s3UQ0 2Xe_6n7DdgQTG $M"@lDD͛ƍHD|pO3g ``5EPD"ɓHD%QT& b$M"AbDDi"8 pwѺI*@89*XEPIHb" l4n]"$$Hn7.9$2R !*UHiT"pqBi"8 pwѺa iq ATz j A,6"" F AgQTG$hr"D"bɖDA|ٸ;hœ,;y@C=EPU*0!LD$. (D&4KI"i,X%$SIlDD͛ƍLT gQTG*HDfrA$ "Dw+wѹt&Hwpon 5,JlSͭ9d6\wÛ7.+Eg aB"l*H`iq ATp"4dH"bɖ&q2E"D"]"$$HDp$ 3*HEX &/wٸ;_ 8@E$F$H5\ Lmfx;+A vSl<PB*HJLislgP.2i |0j NゃCO P"*Q2XG59x m^9xƎ<4I1"lXfz1ᡧ(Tc (';quͰb+Yb.@*) ڵ=pmZZ8V XMfٜ[ wf+O|zN͕`1nƻ+@ea;ĮY w4,dH[̽^GXW7VXf[6_,ڰ*N휸7Vo| kM|9x$&V7;+a?q;µY|6E|i]5f35͛ͭ Ư| kM+)bwmboMpZY gg͕͗Xȶ6+eh1+]c ma ea;Jk46o63lqg #jc 9pbฮ3kC8-{p:m`/6ٶmi}hf֙ٝvV|ٽ@H=5 כۆl%y[)8c2U Ж֧g/Ng.+Mw͕͛p2M7 &51+9=+3|ֆqcW[2-H[ fdH󵍅8cdp7 p ;3g &aNkA c`w-mWmv pʪ;bd[_ @\4ʼn uPh sYNQsqB`0javwӷnmf:aQh٨QmEPUvSͬ'" Ti9'n/v'qٽvwq9kn5x O[RWǵ-v85T;Z k54\پ7#NAZ۵7 +plR s0M"jQS 4IQTw  "EL&'*`yHDbD0Xc0u87KX\qx{}79?FYz|%5V8@QW Zj8&d0Xa4ɕ@<٤ gb㋋Z z)j8`;[!sM`,۟8ќaKa<آأ"7^2f{@PEqc.l^b`(PT0cȔ0FJ @Pș@0+bRr \X\ؽ)/E6n~b`FrŇ%,"+bb؈=X F՘Lu,]I?J<2҄H.PEk[X? AXHrV.?`a'x<XآԑQ8XZ2",, -?WNp>#%,]I`L(l?'6OUlpӠ((G"RƐłED!')G&TRPA"d MAj x̿ UQ,sPE͋ܢo ǀ\( "Hɜ009iASa"PPLIǑ((&aC"fq`70`(+I UY{@PEqc.l^b`(PT0cȔ0FJ @Pș@ aDV.UF"ȹ{R_={B0 <0[XyBeI- "(]Uf_ c+bRO6a{(0  XآԑPX00oǂK[X*= FDE1a`68inx$E", m꽍thP*XH$˔&DeDSF (H;2bS(ttiK+/&H L 8Z \BdH&XK4`BɀH$&`eDyJ LHUV_LK4LPD &TH-GX@?{œR Q%Cɕ$ QV,8ESr`*Xb \$+HC `L$(H'd "hLT $$-/cF4,^Tosgs|UU7E͋ܢahşUh Uo\e ):<]R<+/&@ 0HH[MpO|?uEg[ޱiMƓb).+.✟R.h{e..E%ǟS!$h$`sKJc(RNw+/\XUY[k^eΨ~ #֧/{nE|~ YE)o8ѝ'L6<,A{%6H 㓾A|4g1P)KcU;ip\198G^򖔫-JZޓ]AB'|Xm [O6))qvqqE=m\Vy9ZB9baGDp`DMqc01bE66ash, L )`qba/Ϩ;$ԷIHȓ ͝j1cy玶mmmmmmmmmONsnQG 19-. dⱇrnz3ю[R[҆4llRvCKb8afd1uO@E j+~Nqx-HۍNslRA{9&EƘ]Ȃ-Ƙk):mmmmmmmmmm # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_backup_profile_attributes =head1 SYNOPSIS clmgr query backup_profile {[,,...]} query => get, list, ls, show backup_profile => bp, backup_p, replication_profile =head1 DESCRIPTION Retrieves the backup profile configuration data for one or more resource groups =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. resource_group [REQUIRED] [string] Resource group name can be single or multiple resource groups. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_get_backup_profile_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to get backup_profile configuration. The cl_cbm_list utility is invoked # to extract the necessary data from backup configuration xml file. # # Inputs: See the "devDoc()" function at the top of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the top of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_backup_profile_attributes { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_backup_profile_attributes.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM : INPUTS: $* typeset rgs=${1//\"/} [[ -z $TAB ]] && TAB=$'\t' # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then rgs= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset -i INDEX=0 rc=$RC_UNKNOWN typeset enable_backup= rg= volume_group= replicated_resources= target_location= backup_method= cloud_service= compression= storage="" typeset bucket_name="" typeset backup_schedule= notify_method= encryption= RGS= output= resource_group= unknown_rg= available_rg= backup_progress= next_backup_schedule= typeset -i backup_frequency= typeset -i inc_backup_freq= typeset -A queries #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #==================================== : Check python is installed or not #==================================== LANG=C cl_get_python_version 2>&1 >>/dev/null rc=$? if (( $rc != 0 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1315 "\nERROR: Python must be installed for using backup feature.\n\n" 1>&2 log_return_msg "$rc" "$0()" "$LINENO" return $rc fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY else print -- "$0()[$LINENO]($SECONDS): cl_cbm_list" >>$CLMGR_TMPLOG # Always log command result available_rg=$(LANG=C cl_cbm_list 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_list RC:$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS && $rc > 2 ));then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1197 "\nERROR: No resource group configured for backup.\n\n" 1>&2 rc=$RC_ERROR else rc=$RC_SUCCESS fi fi #======================================= : Make sure we have something to query #======================================= if (( $rc == RC_SUCCESS )) && [[ -n $rgs ]]; then [[ $rgs != *,* ]] && unset INDEX for rg in ${rgs//,/ } do echo "$available_rg" | grep -wq $rg rc=$? if (( $rc != RC_SUCCESS ));then unknown_rg=${unknown_rg:+$unknown_rg,}$rg else RGS="${RGS:+$RGS }$rg" fi done if [[ -n $unknown_rg ]];then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1191 "\nERROR: Resource group \"%1\$s\" not configured for backup.\n\n" "$unknown_rg" 1>&2 cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1192 "Configured resource groups for backup:\n\n" 1>&2 output=$(echo "$available_rg" | sed "s/^/$TAB/g") print -u2 "$output" print -u2 "" rc=$RC_NOT_FOUND fi elif (( $rc == RC_SUCCESS )) && (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then for rg in $available_rg do RGS="${RGS:+$RGS }$rg" done fi (( rc != RC_SUCCESS && rc != RC_UNKNOWN )) && unset RGS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for rg in $RGS do print -- "$0()[$LINENO]($SECONDS): cl_cbm_list $rg" >>$CLMGR_TMPLOG # Always log command result output=$(LANG=C cl_cbm_list "$rg" 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_list $rg RC:$rc" >>$CLMGR_TMPLOG # Always log command result # Resource group configured in CBM if (( $rc != RC_SUCCESS ));then print -- "$0()[$LINENO]($SECONDS): cl_cbm_list $rg RC:$rc output=$output" >>$CLMGR_TMPLOG # Always log command result cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1191 "\nERROR: \"%1\$s\" Resource group not configured for backup.\n\n" "$rg" 1>&2 rc=$RC_ERROR else resource_group=$(echo "$output" | grep -w "Resource_group" | cut -f 2 -d '=') resource_group=${resource_group// /} # removes space enable_backup=$(echo "$output" | grep -w "Enable_backup" | cut -f 2 -d '=') enable_backup=${enable_backup// /} # removes space volume_group=$(echo "$output" | grep -w "Volume_group" | cut -f 2 -d '=') replicated_resources=$(echo "$output" | grep -w "Replicated_resources" | cut -f 2 -d '=') storage=$(echo "$output" | grep -w "Storage_system" | cut -f2 -d '=') bucket_name=$(echo "$output" | grep -w "Bucket_name" | cut -f2 -d '=') bucket_name=${bucket_name// /} # removes space bucket_name=${bucket_name//\"\"/} # removes quotes target_location=$(echo "$output" | grep -w "Target_location" | cut -f 2 -d '=') target_location=${target_location// /} # removes space target_location=${target_location//\"\"/} # removes quotes backup_method=$(echo "$output" | grep -w "Backup_method" | cut -f 2 -d '=') backup_method=${backup_method// /} # removes space cloud_service=$(echo "$output" | grep -w "Cloud_service" | cut -f 2 -d '=') cloud_service=${cloud_service// /} # removes space cloud_service=${cloud_service//\"\"/} # removes quotes compression=$(echo "$output" | grep -w "Compression" | cut -f 2 -d '=') compression=${compression// /} # removes space compression=${compression//\"\"/} # removes quotes backup_frequency=$(echo "$output" | grep -w "Backup_frequency" | cut -f 2 -d '=') backup_frequency=${backup_frequency// /} # removes space backup_schedule=$(echo "$output" | grep -w "Backup_schedule" | cut -f 2 -d '=') backup_schedule=${backup_schedule// /} # removes space inc_backup_freq=$(echo "$output" | grep -w "Inc_backup_freq" | cut -f 2 -d '=') inc_backup_freq=${inc_backup_freq// /} # removes space notify_method=$(echo "$output" | grep -w "Notify_method" | cut -f 2 -d '=') notify_method=${notify_method// /} # removes space notify_method=${notify_method//\"\"/} # removes quotes encryption=$(echo "$output" | grep -w "Encryption" | cut -f 2 -d '=') encryption=${encryption// /} # removes space # Get backup_progress and next backup schedule print -- "$0()[$LINENO]($SECONDS): cl_cbm_backup_progress $rg" >>$CLMGR_TMPLOG # Always log command result output=$(LC_ALL=C cl_cbm_backup_progress "$rg" 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_backup_progress $rg RC:$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS ));then print -- "$0()[$LINENO]($SECONDS): cl_cbm_backup_progress $rg RC:$rc output=$output" >>$CLMGR_TMPLOG # Always log command result else # grep for 'copying', if any of the backup process in copying state. backup_progress=$(echo $output | grep -w "copying") # Get next backup schedule in date,hrs:mins:secs format #f5 - date,hrs f6 - mins f7 - secs next_backup_schedule=$(echo $output | cut -d':' -f5,6,7) fi if [[ $backup_method == "cloud" ]] then properties[BUCKET_NAME$INDEX]=$bucket_name properties[TARGET_LOCATION$INDEX]=$target_location properties[CLOUD_SERVICE$INDEX]=$cloud_service properties[COMPRESSION$INDEX]=$compression properties[BACKUP_FREQUENCY$INDEX]=$backup_frequency properties[BACKUP_SCHEDULE$INDEX]=$backup_schedule properties[INC_BACKUP_FREQ$INDEX]=$inc_backup_freq properties[ENCRYPTION$INDEX]=$encryption fi properties[RESOURCE_GROUP$INDEX]=$resource_group properties[ENABLE_BACKUP$INDEX]=$enable_backup properties[VOLUME_GROUP$INDEX]=$volume_group properties[REPLICATED_RESOURCES$INDEX]=$replicated_resources properties[STORAGE_NAME$INDEX]=$storage properties[BACKUP_METHOD$INDEX]=$backup_method properties[NOTIFYMETHOD$INDEX]=$notify_method properties[NEXT_BACKUP_SCHEDULE$INDEX]=$next_backup_schedule if [[ -z $backup_progress ]] then properties[BACKUP_PROGRESS$INDEX]="None" else properties[BACKUP_PROGRESS$INDEX]="in progress" fi rc=$RC_SUCCESS fi #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[backup_profile]}; do if [[ $key == "BACKUP_SCHEDULE" && $CLMGR_GUI == "SMIT" ]]; then # Appending #! to : to escape : while parsing to smit backup_schedule=${backup_schedule//:/#!:} properties[$key$INDEX]=${backup_schedule} fi if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_backup_profile_attributes()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ ion=$ lpoMםa՝a֝a&/bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_dependency_attributeste   =e inrst$EIN[]acdlop"#()-ACDLORST_fghmuy&+/2:>GMPXbvw{}'*,.01;FH\|!%34BUYkq579ei/=;*G0`(z [Ӹfebw5n*"H<cJi,r  I ``$0 {Yg,g',)lnE.0;pJ,qz26rr`Ty^{Pڎ#Ѿ7)I9lfMBqYy⯙ $C$[n,TP(Lɂ!4Fp Os\xX# 8[ LȒ2nensV3ӹp@ 2ŀ `pu,0^" p X&AI7s2ŷpb+Nqxܜ5rw%8o3Y&^oj-=Fc?qpZ2ͯ>7&E{ţ[w. MD{PL7ۋKܤڋ-3if&ڋ ƻ16ŷpbo|-mvg3 ^%ai p ҃g /wBm.8x/7 i9xSGvs8f͂5r70rwZG7m2V`AS9q=6NZѷ ŨnRX˙ŧy)\7-s=H7\1j2֍\y\E_+CYqzӷ 5 qkY׾\ng `Wms9xȘ&37 s9x,PK34z CZ|^&ݣ\>Yy3kA]/Y r5vN)\6ƏAy` @IyB&M̱m.|Ӝ^&zw,Yy%0F'c H=PG !p ^&H,AD $Lb۸1p\8L@08`0Lq`@bx,ူf ;7I1(pC3ܮ{``XX@`X79xw3ZRiw7^b6jp^:c|75@t5U!E2$P@~d_ČDww+@ Omv-rMjw-rњƧqbۓ},dȘ#NW2;7HִFMƥ|^z`{77x݆(' S@QfO_U(7˃֜H ,j bӜFgV.\>Y۸iJ hb‹2zƂ(\c=8Sw BUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUN QسON kj|^*h`w"DE2Iҝĝ|-8vZ2\ $I\Č$\I&)E2@[6,_#ѼV _&>'6l֢h1m.UPo3)HI4S+&AI|hVX \?Ans12h4S$%,P.e5ČD|xo3&BZ2]2 \< `p,X`` BC6pjzͷkG]`(B1m.|f  wl%Hyc%1Hyc" 3DQg7 \}4!`;g۹\{+ n$R(hWLȒ23,[w. (XMw`a ,Vf*.  i5‹=ٵz X rɵU7˃ۋ<`Bh ,(XMQ.1 wW 2SA@ɻeòE%!aiJð^;Tپ67a֢h1m;nb me5UGEMS&dD$4D1m㋑Dt"ƴ78 {`nYtLk [;;ˢ`857 q^ojfXyW,Y>D2;g۹\ ;mUUUUUUUUUUUUUUUUU;7'koZ ox(^7'w+D)4t"!0 4S]Ϋ40Cj r D`X^Fqena[iZojlۄ *O4N0NZ⏱[c|5:'q5~Y>7JLh⏱W#ܦ,Qq{P*LuiMD{P֍kwXi|(dDpm'`&y H)D9 ]/"C7iÓ:E2"8k=[yQ[j3ZJMG| 5MC|Znm[vN6&X3& 5g,ٰ<7nYզ^0Qכچgl8oj<>[gRV`嚵z7-,ulvÆ>Xui{B)qL_}i𝱴z|->g-fۋK.s8\7lbvǥn랔;q\qaKJk23Zk4l&ỹm.jաMD{PZ<m`3pX:޾ro5kLohֻ'Mkˁi.~V37 ;J N`,`fr2rg-Q:7Ù.TDE;n{pU9V| 5M@z7hVÆg"dANPl 8kOMӐoPSnZz0oj{;6;F`{mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS{PرBm/;7K bypcG-fdDsQ $ei/=;G-fp-2%.ktp4ŷpb1m.|97ض \>i0o3֖i \>3|XSG-f4K,)rrځ=5g/v>ض \> s3"X< E3 ض \?Y,5u%8wqXN 5[w. .ӫmEmeV?ŧ\O\_l0-BȀdIqifwkJM.K֌V?g T9h/6k]hbwz097SG-fdLEsXoZ[\yg/i{PmZ2qaKܤh.ٻf{Zqim.vɻ]lq4z+W. OLv2iaɣύ *nM;c|=v(:ڎ(eҙf۵>g/ 8nѮg/4lg/6x5 # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_efs_attributes =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:39 Last Changed: 6/25/12 13:56:04 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_efs_attributes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr query efs [,,...] clmgr -v query efs NOTE: the alias for "efs" is "gp". =head1 DESCRIPTION Retrieves the information for one or more user efss. =head1 ARGUMENTS 1. efs [REQUIRED] [string] The label of one or more efss (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_efs_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_efs_attributes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset efs=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then efs= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset -A list MODES MODES=( [1]="ldap" [2]="shared_fs" ) typeset -i rc=$RC_UNKNOWN typeset DATA= CL=$LINENO KLIB_HACMP_is_known_efs if (( $? != RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s 129 cspoc.cat 75 "EFS Kesytore is not configured.\n" 1>&2 rc=$RC_NOT_FOUND fi #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ if (( $rc == RC_UNKNOWN )); then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"group=EFSKeyStore AND name=mode\" -f value HACMPLDAP" >>$CLMGR_TMPLOG properties[MODE]=$($HAUTILS/clodmget -q "group=EFSKeyStore AND name=mode" -f value HACMPLDAP 2>>$CLMGR_TMPLOG) print -- "$0()[$LINENO]($SECONDS): clodmget RC: $?" >>$CLMGR_TMPLOG DATA=${properties[MODE]//\"/} [[ -n ${MODES[$DATA]} ]] && DATA=${MODES[$DATA]} properties[MODE]=$DATA print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllsres -c -s -g EFS_KeyStore | /usr/bin/tail -n 1 | /usr/bin/cut -d: -f2" >>$CLMGR_TMPLOG properties[VOLUME_GROUP]=$($HAUTILS/cllsres -c -s -g EFS_KeyStore | /usr/bin/tail -n 1 | /usr/bin/cut -d: -f2 2>>$CLMGR_TMPLOG) print -- "$0()[$LINENO]($SECONDS): cllsres RC: $?" >>$CLMGR_TMPLOG properties[VOLUME_GROUP]=${properties[VOLUME_GROUP]//\"/} print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllsres -c -s -g EFS_KeyStore | /usr/bin/tail -n 1 | /usr/bin/cut -d: -f15" >>$CLMGR_TMPLOG properties[SERVICE_IP]=$($HAUTILS/cllsres -c -s -g EFS_KeyStore | /usr/bin/tail -n 1 | /usr/bin/cut -d: -f15 2>>$CLMGR_TMPLOG) print -- "$0()[$LINENO]($SECONDS): cllsres RC: $?" >>$CLMGR_TMPLOG properties[SERVICE_IP]=${properties[SERVICE_IP]//\"/} rc=$RC_SUCCESS #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[efs]}; do if [[ -z ${properties[$key]} ]]; then properties[$key]="" fi done fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_efs_attributes()" =hea ko<םa՝a֝a&<bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_event_attributesuteste#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_event_attributes.sh 1.4.1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_event_attributes.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_get_event_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect event information (both custom, and pre-defined). # The cllscustom utility is used for retreiving data for # custom events. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_event_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset events=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then events= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset EVENTS= event= OUTPUT= typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= value= typeset -i matches=0 typeset -u uc_attr= uc_key= uc_value= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then uc_attr=${value%%=*} if [[ $uc_attr == "TYPE" ]]; then uc_value=${value#*=} queries[$uc_attr]=$uc_value else queries[$uc_attr]="${value#*=}" fi fi shift done #======================================= : Make sure we have something to query #======================================= if [[ $events != *([[:space:]]) ]]; then #============================================ : If they did not specify a particular type : of event, we need to check them all. #============================================ [[ -z ${queries[TYPE]} ]] && queries[TYPE]="ALL" #===================================================== : For convenience, support wildcards in the provided : name list. This is equivalent to using wildcards : filtering via something like NAME=some_search. #===================================================== if [[ $events == *[\*\?]* ]]; then typeset object= newList= for object in ${events//,/ }; do if [[ $object == *[\*\?]* ]]; then unset available typeset available CL=$LINENO KLIB_HACMP_list_events available ${queries[TYPE]} NAME=$object for (( i=0; i<${#available[*]}; i++ )); do if [[ ",$newList," != *,${available[$i]},* ]]; then [[ -n $newList ]] && newList="$newList," newList="$newList${available[$i]}" fi done elif [[ ",$newList," != *,$object,* ]]; then [[ -n $newList ]] && newList="$newList," newList="$newList$object" fi done [[ -n $newList ]] && events=$newList fi [[ $events != *,* ]] && unset INDEX for event in ${events//,/ }; do typeset TYPE=${queries[TYPE]} CL=$LINENO KLIB_HACMP_is_known_event "$event" "" TYPE if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 465 '\nERROR: "%1$s", of type "%2$s", does not appear to exist!\n\n' "$event" "${queries[TYPE]}" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 171 'Available %1$s Events:\n\n' "${queries[TYPE]}" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_events available ${queries[TYPE]} for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND dspmsg -s $CLMGR_SET $CLMGR_MSGS 172 'Available Event Types:\n\n' 1>&2 for type in ALL CUSTOM PREDEFINED; do print -u2 "\t$type" done print -u2 "" else [[ -n $TYPE && -z ${queries[TYPE]} ]] && queries[TYPE]=$TYPE EVENTS="$EVENTS $event" fi done elif (( $CLMGR_VERBOSE == 1 || ${#queries[*]} > 0 )); then #=================================================== : Since there are so many pre-defined events, only : display them if specifically asked to do so. #=================================================== if [[ ${queries[TYPE]} == *([[:space:]]) ]]; then queries[TYPE]="CUSTOM" fi typeset available CL=$LINENO KLIB_HACMP_list_events available ${queries[TYPE]} for (( i=0; i<${#available[*]}; i++ )); do EVENTS="$EVENTS ${available[$i]}" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset EVENTS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for event in $EVENTS; do properties[NAME$INDEX]=$event #======================== # CUSTOM CLUSTER EVENTS #======================== if [[ -z ${queries[TYPE]} || ${queries[TYPE]} == @(\*|A|C)* ]]; then print -- "$0()[$LINENO]($SECONDS): cllscustom -c -t event -n $event" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllscustom -c -t event -n $event 2>>$CLMGR_TMPLOG | grep -v '^#') rc=$? print "$0()[$LINENO]($SECONDS): cllscustom RC: $rc; OUTPUT == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result if (( $rc == RC_SUCCESS )) && [[ $OUTPUT != *([[:space:]]) ]]; then print -- "$OUTPUT" |\ while IFS=: read name type desc file relation status; do [[ $name == \#* ]] && continue properties[NAME$INDEX]="$name" properties[TYPE$INDEX]="CUSTOM" properties[FILE$INDEX]=$file desc=${desc%%+([[:space:]])} properties[DESCRIPTION$INDEX]="${desc//+([[:space:]])/ }" done fi fi #==================== # PREDEFINED EVENTS #==================== if [[ ${queries[TYPE]} == @(\*|A|P)* ]]; then print -- "$0()[$LINENO]($SECONDS): clodmget -q\"name = $event\" -f \"name,cmd,notify,pre,post,,desc,catalog,setno,msgno,error_on_fail\" -n HACMPevent" >>$CLMGR_TMPLOG OUTPUT=$(clodmget -q"name = $event" -f name,cmd,notify,pre,post,desc,catalog,setno,msgno,error_on_fail -n HACMPevent 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): clodmget RC: $rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )) && [[ $OUTPUT != $event:* ]] then dspmsg -s $CLMGR_SET $CLMGR_MSGS 466 '\nERROR: the specified object, "%1$s", could not be found.\n\n' "$event" 1>&2 rc=$RC_NOT_FOUND break fi if [[ $OUTPUT != *([[:space:]]) ]]; then print -- "$OUTPUT" |\ while IFS=: read name cmd notify pre post desc catalog setno msgno error_on_fail; do properties[NAME$INDEX]="$name" properties[TYPE$INDEX]="PREDEFINED" properties[COMMAND$INDEX]="$cmd" properties[NOTIFY_COMMAND$INDEX]="$notify" properties[PRE_EVENT_COMMAND$INDEX]="$pre" properties[POST_EVENT_COMMAND$INDEX]="$post" properties[PREPOSTFAILS$INDEX]="False" (( error_on_fail )) && properties[PREPOSTFAILS$INDEX]="True" if [[ $setno == +([[:digit:]]) && \ $msgno == +([[:digit:]]) && $catalog != *([[:space:]]) && \ $desc != *([[:space:]]) ]] then desc=$(dspmsg -s $setno $catalog $msgno "$desc") desc=${desc%%+([[:space:]])} properties[DESCRIPTION$INDEX]="${desc//+([[:space:]])/ }" fi done fi fi #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[event]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done if [[ ${properties[TYPE$INDEX]} == "CUSTOM" ]]; then #======================================================== : Remove attributes that do not apply to a custom event #======================================================== for key in COMMAND NOTIFY_COMMAND PRE_EVENT_COMMAND \ POST_EVENT_COMMAND PREPOSTFAILS do unset properties[$key$INDEX] done elif [[ ${properties[TYPE$INDEX]} == PRE* ]]; then unset properties[FILE$INDEX] fi (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== unset queries[TYPE] if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_event_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_event_attributes =head1 SYNOPSIS clmgr query event [,,...] clmgr -v query event NOTE: the alias for "event" is "ev". =head1 DESCRIPTION Retrieves the configuration data for one or more PowerHA SystemMirror cluster events. =head1 ARGUMENTS 1. events [REQUIRED] [string] The label of one or more events (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== fi l/o1םa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_fallback_timer_attributeses.txt =e airstcdhlmnop"#$ACDEIMNRS_bfuy(),-./1:GLOPTUY[]gkvw025;>BFH&'*+346JKX\qx{}!79w"!G84K$PS4R&{P:襖ɬv˛2&$&"lI!@(  |pـrn87 PQp4H%fXGZ|, "fEl^j9c $/4P 0TBBDXɢ (H]>ci3 g(f"hXBB03G.&`!qEE(H\{?<*PSE g3G4Ph!%,f"hdz)>c\ Trܐ$/p0Xa+&+s` F 2&zXBNk.>T, cYXJ%<HBA0 ȗ$d{?n-8Ж#0A^.YQqhYINTk z^}-mmmmMq1\\JUg՟K+%a& Yĩ" "aDˊt ε45qr\O&?w Ȁl\3f*h ┪`!&$\DɳEEr$ċ6\Љ< `=RLǀyZavVt"@@lyIx<RXd2$ċ6hDq&˚5@N<\N'8Aq R_=P=Qx8>cqMD*`OD̈́I.(m7B&ε45qrmkiV~)HGq9A0n ‚+3q$ƹ6NFdp.$@dd+JUgr|HMki`A1:cdzR&I0&*l &,`?8K?K*dDTrMdb%uEeew ɉ2l24W '" K0A<oV+03D0DHBH*LLCAB KY7  n08Dq&K TrMR!(')/]d܁1npúnBܬpyPHP"  "h13 h')/]d܁1 H.Tɠ8Dq&K %u 5C"LHfI2lXx(*dș RCiOP#w8e=P=Qx8R&I.XѢM0(,*c?Br/CW2L١bdʚ5`( VTrM1-mmmmmmmY!,zMX뢗|Glb=pS=0g mmmmmmmmY\rRʙ4 Y Ǒ ,`1&0PPqrMG ;GG W#)/I2lT&:XkAej BPN.R^ɹctx(b%L]V8`f<($(`cL 4T4n@d"% I2lT&:XkAej]V8`fmcYXvdl-?9Sј3^_L .Tc 4RY^_L *HT iU gEUB{q*FpzI "XBpKdzw. DŌ,`P8fIcgYy|]0.XR%* *9Sј1-mmmmmmk?3NU dO!sц?53 JsчqIZ9J;c4󇣧-G *tֱz!lՔ&k[YTJwr8c53mmmmmmmAyU V^_Lʒ2D@Dzq3%* +0EEC ?E@@3]// M.D@EELzBBˉ,`P8fEͬtڋ+  ޲`0\LDc 4$( Qeb&$'QebaALzq3f,`P8fQeb?޲`0P0fB$K(TQik6&AQebgµ޲`0P0fB$K(TQik6&!:+# g^_L 0,\c 4+ vdm3^^_L 6&6 H0P3HH̍EA6et`!sba` P4فbK(TGfF͢Y0j Eee (T() p( *FVVXmmmmmmmC,wjK^SN2c༠㮔B)MUYBmmmmmmmzf &TѬr @d+ JUg1*DHK^Fza D3𐜋̓6hX2aAX ĩ" ydەFA^_L6mH cȽ "E0&=z O!Uc4Hu&sKqJsB5PWP"rsДw+Q å0*!X //l\9!|GFWQP?Uhfm༠㮔xK^Yֹ9Gڍ mTb2-D?&&(.dDU&&(.dDW,e.YVA!j 9YMgA`Px1O2ᤣ ^9(`'ʪz28QdB!mmmmmmmmmm*VM5\^)*8 eE+r՞,^1ԥ^): !rs8ʍBn*MdjM]ykNJSK,!wSrr)O(+?riGtBM<Ug!!mmmmmmmmmm$ O{q9nUV!i(2!CN!L!UmmmmmmmmmXCrZrYzpIb:bWjŧBmmmmmmmmmm` l{oHםa՝a֝a&+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_file_system_attributese    =e inorst$EL_acdfhlp"#ACDIMNOPRSTgmu(),-./:;FGUV[]bvwy&*012>BHX\k{}%'4KZq|!+35679#w?<$!`@LGV3qBDŽEu`oٹ\֓9t8v2nEJ$H8v&U ː&b1nW<52+y)"E&sET TwP%fsNqm !n.7clܮy $@"hC4P"f`ḇ(LI!l SaǞ9fs P E y0 9FbI `ei\byr(@zU(G"P(`Jꪪ@#LڎY֮ l7C&z:C3kWv7{vlsUUUUUUUUUUUUUUUUUUUUUUUUSƗsg' ՃS`Cal;}VF..#{{ӜGS`=~?7.kYYaۋBǧ9^M<A1YZmVoMnk[zlxO3DO;+& s^M7UoM;Ea&$ɶVf4_Q6 1!ag |&AQv`aۋ\׽ ޣe;ot`i\c\׾OM/ 4ùA)jWb~4sƯQ7F9|2^9[ s^v/o)*@qc[ f&oŅE#%H2,ko׷bh 2Ts Ƌ47XjJ.dXrظ52Ts Ƌ4}>Cxz!zlxNMYrذ,%H2,h@Ȣ 4NbocHs]Nk#jF9x0j@JHe4mFzV?ܢrzlxO<f9(nx7&k"L87sIFwჳjA[ 짰^?qMܢlj0vSa@ޮ.AQ~inMnLpØtHps؂~(cVv8cPF vzsoNz of`oLo9 cK=g1|;9,jxŹ3v07{oe;|r=6d''.iotb|[ @B@T"Nxrr#jF9|2^omωrpHBt8v&ޙ ճqp8rةxt-FR”b 7sVS`@q4|M3*Kzg.K"(Q.;"PnP;,-B:zg/s”b 7sVS`@q4|M3*Kzg.d`JbX7r*@*Ixo17,a% A!3 L$|M3cn3uXbH* =eP*Xss;瀦}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS2+ځhGOVs]Fw7ݫ|:k>Û>Q&UHe;+Yϵ[尠*Hȡ(3^G"BfL*&$ TH}UUUUUUUUUUUUUUUUUUU7C(FW˚yp÷[_˖..#{{ܶ,-EJ$H5rذճ P" E \\Gm|QJ0+oLX[ ~z" *FsHTLsً ܃c؞Bx0H.HDC4B0$MRx o1s<,z$ʠTQP"X#!b$Ē6PEA0yJ HBo,H.DC}Di0`H(`aQ(&a#E XMQ@QB o+oJ*QdP okܶqTU"B$P2g 潽[ ȢkD4B Q9@rD &m5lH.HDAÖŅ*..#{{("QFlDDU!Q1(\D[[("QJ'Car ͧp:SAcZOL@8-ɓ7<%$eYQ(&a"D$Ac ^$/27)xp[[\ᡸ("ЃƗsWDTu`alICUb;mDT($ʠpo 찚Vg(s^p9q`i1r5 :S3Rb||Ӝჳ7}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSքp~xI"%,U"HHYZRLGV UP4PLD\_ mrذsL f됱UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMY ޥilkF5]&XLl3N7ec [9Úv1Y_!NsfÛ>[ 33qBƀYt&TpUQ4X#潽B:sw?&UePIy2*HH0- y4a!" 5RPH  A2 4&(@,b RFIh7X7sٌ!cӜy2X>ab&cn3uX .ʒ@.5ZӜ"f@"XPeD# TFIh`i)@Dʖ$oQ,E!3 dՃξW=r=9'*IxՃ9 ɕ$<<,-ʒ@`N./PVL$ amV}UUUUUUUUUUUUUUUUUUUUUUUUUUUUS2kio'q5qLڎY֨foU潜o‚U"B$P2gC÷\<pkE=eP*[Ir÷\cn3uɿRMYoPV|TR2(DLaxFDT ىNz.[17iFv/H㏊ǂBcDT )<~8 D5 q% nbҐܧgNs9hhg,C[%=W%"fvs滥1j/^ݫZvSˌaLfs4cM),Z6ba~oVޠ~fsքN'7A1L#{hLq9M{akNgc|`ḇfa{̀&g7AòGej|i,`2r:-wH3tKqn)7t{hZ85, *Xfq6?hi_M)Z8cKEKVy2Dg=od!`h'g!aؾBŸ |ڼ^#j{GUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU5cRnldMH )C0`z21pS[Kj R$(]#w4s;8s\0vw&f@YR̓20pp0oYZRVs;8  #&ǂ$dۨqFp0oYZR[,ikޛNZЎ9g1iHnSK5+$& 4LV.5RY9NiB<|#oN^n0:̃^T0&(Q(;ZOL0 0!|ZSl]旽- p}rf 9y2oR8q>j_+e8;T/N7aۋPl f,a&aB~6?NRNn81i]Ɨr4 v|׶n.x 9j&b8s^as[Kj0U"cޭԝ#{9eN2 to#)rXn )c. (v1[43j9gZnP;/V-`1Ҙg@ ցתr`aFNNYJNyH([;Ws;&Gq0;)6t{n#}V5YXg^Uӄq0OYWt4ޮNab|#j4}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSGDSb aLbA os 1ѧ+50%GUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU4~2FHUk{}'*+3456"׻dx8ޏ ! P`KJuz[0d G}6FNc N&;)JCed?U^za L84q2vN,b *j;ʪXlVsB2t;1QC6;b*k#+!{@uI f ݴAk!mmmmmmm_,RGEp%;1U'4mF5X/UجgLrf (L`Vmmmmmmmm%=C3)՘ULXbVbdnNUhؙ[mmmmmmmmzv"Lb 0\3:]47D@(,K.`Q% .&d,󧆦8h#܊(9ĉ"h42¢Ecƴxv Bt qaE?EM9B-{tqD,TB 2PfBo:xjc%h42¢EcƴxwV`}8*G Ǒ`js%5ew0lLD$`FAF!$ =4I= FBI6_Xhȹ:L/E)1ڌ,a)VQzd?dSk]%evy`r/T"׻y*ux, J EwV`97> 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" if [[ $attr == "REGISTRY" ]]; then typeset -u registryUC=${queries[$attr]} case $registryUC in LD*) queries[$attr]="LDAP" ;; LO*) queries[$attr]="files" ;; F*) queries[$attr]="files" ;; *) dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' REGISTRY "${queries[$attr]}" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 'Valid values: %1$s\n\n' "files, LDAP" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi fi shift done #======================================= : Make sure we have something to query #======================================= if [[ -n $groups ]]; then [[ $groups != *,* ]] && unset INDEX for group in ${groups//,/ }; do CL=$LINENO KLIB_HACMP_is_known_group "$group" 2>/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$group" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 161 "Available Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else GROUPS="$GROUPS $group" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then typeset available CL=$LINENO KLIB_HACMP_list_groups available for (( i=0; i<${#available[*]}; i++ )); do name=${available[$i]} name=${name##+([[:space:]])} name=${name%%+([[:space:]])} name=${name/ \(/@\(} GROUPS="$GROUPS $name" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset GROUPS #======================================================================= : If there are multiple groups, often the result of a verbose listing, : then dump all group data to a temporary file, for faster access. In : testing, this dropped the execution time of "clmgr -v query group" : from 24 seconds to 8 seconds. #======================================================================= if [[ $GROUPS == *+([[:space:]])* ]]; then print "$0()[$LINENO]($SECONDS): lsgroup -R files ALL > $TMPDIR/clmgr.KHgga.files.$$" >>$CLMGR_TMPLOG lsgroup -R files ALL > $TMPDIR/clmgr.KHgga.files.$$ print "$0()[$LINENO]($SECONDS): lsgroup (LOCAL) RC: $?" >>$CLMGR_TMPLOG print "$0()[$LINENO]($SECONDS): lsgroup -R LDAP ALL > $TMPDIR/clmgr.KHgga.ldap.$$" >>$CLMGR_TMPLOG lsgroup -R LDAP ALL > $TMPDIR/clmgr.KHgga.ldap.$$ 2>>$CLMGR_TMPLOG print "$0()[$LINENO]($SECONDS): lsgroup (LDAP) RC: $?" >>$CLMGR_TMPLOG fi #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for group in $GROUPS; do typeset -i TYPE_SPECIFIED=0 typeset -u TYPE= TYPES= if [[ $group == *@* ]]; then TYPES=${group##*@} TYPES=${TYPES#\(} TYPES=${TYPES%\)} [[ -n $TYPES ]] && TYPE_SPECIFIED=1 || TYPES="FILES LDAP" group=${group%%@*} else #=============================================================== : Since no group type was specified, check all supported types #=============================================================== TYPES="FILES LDAP" fi typeset OUTPUT= FOUND= for TYPE in $TYPES; do OUTPUT= if [[ $TYPE == "LDAP" ]]; then if [[ -f $TMPDIR/clmgr.KHgga.ldap.$$ ]]; then print "$0()[$LINENO]($SECONDS): grep \"^$group \" $TMPDIR/clmgr.KHgga.ldap.$$" >>$CLMGR_TMPLOG OUTPUT=$(grep "^$group " $TMPDIR/clmgr.KHgga.ldap.$$) print "$0()[$LINENO]($SECONDS): grep RC: $cmd_rc" >>$CLMGR_TMPLOG if [[ -n $OUTPUT ]]; then cmd_rc=$RC_SUCCESS FOUND=$TYPE else continue fi fi elif [[ $TYPE == "FILES" ]]; then if [[ -f $TMPDIR/clmgr.KHgga.files.$$ ]]; then print "$0()[$LINENO]($SECONDS): grep \"^$group \" $TMPDIR/clmgr.KHgga.files.$$" >>$CLMGR_TMPLOG OUTPUT=$(grep "^$group " $TMPDIR/clmgr.KHgga.files.$$) print "$0()[$LINENO]($SECONDS): grep RC: $cmd_rc" >>$CLMGR_TMPLOG if [[ -n $OUTPUT ]]; then cmd_rc=$RC_SUCCESS FOUND=$TYPE else continue fi fi fi #================================================ : If the no data was found for this group, then : program execution will not reach this point. #================================================ properties[NAME$INDEX]=$group for PAIR in $OUTPUT; do [[ $PAIR != *=* ]] && continue case ${PAIR%%=*} in id) properties[ID$INDEX]=${PAIR##*=} ;; admin) properties[ADMINISTRATIVE$INDEX]=${PAIR##*=} ;; registry) properties[REGISTRY$INDEX]=${PAIR##*=} ;; users) properties[USERS$INDEX]=${PAIR##*=} ;; adms) properties[ADMINS$INDEX]=${PAIR##*=} ;; projects) properties[PROJECTS$INDEX]=${PAIR##*=} ;; efs_initialks_mode) properties[KEYSTORE_MODE$INDEX]=${PAIR##*=} ;; efs_keystore_algo) properties[KEYSTORE_ENCRYPTION$INDEX]=${PAIR##*=} ;; efs_keystore_access) properties[KEYSTORE_ACCESS$INDEX]=${PAIR##*=} ;; esac done #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[group]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done # End of the "TYPES" loop if [[ -z $FOUND ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 471 '\nERROR: the specified group, "%1$s", could not be found.\n\n' "$group" 1>&2 rc=$RC_NOT_FOUND fi done # End of "GROUPS" loop #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_group_attributes()" function on_exit_get_group { rm -f $TMPDIR/clmgr.KHgga.files.$$ rm -f $TMPDIR/clmgr.KHgga.ldap.$$ } #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_group_attributes =head1 VERSION Version Number: 1.8 Last Extracted: 6/16/15 17:51:04 Last Changed: 6/1/15 13:53:40 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query group [,,...] clmgr -v query group NOTE: the alias for "group" is "gp". =head1 DESCRIPTION Retrieves the information for one or more user groups. =head1 ARGUMENTS 1. group [REQUIRED] [string] The label of one or more groups (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011.2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== fi  kro םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_group_nodesutes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_nodes.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)03 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_nodes.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:24 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_group_nodes =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:15 Last Changed: 6/10/12 15:22:24 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_nodes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_group_nodes =head1 DESCRIPTION Obtain a list of participating nodes for the specified resource group =head1 ARGUMENTS 1: [scalar] resource group name 2: [by ref] nodes the participate in the resource group =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_group_nodes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_nodes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rg=${1//\"/} typeset -n nodes=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values typeset -i rc=$RC_UNKNOWN print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"group = $rg\" -f nodes HACMPgroup" >>$CLMGR_TMPLOG # Always log commands nodes=$($HAUTILS/clodmget -q "group = $rg" -f nodes HACMPgroup) rc=$? nodes=$(echo ${nodes//\"/}) print "clodmget RC: $rc; nodes == \"$nodes\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_group_nodes()"  k^o םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_group_policytes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_policy.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)00 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_policy.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:25 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_group_policy =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:14 Last Changed: 6/10/12 15:22:25 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_policy.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_group_policy =head1 DESCRIPTION Obtain the settings for the resource group policy, startup, fallover, and fallback. =head1 ARGUMENTS 1: [scalar] resource group name 2: [by ref] startup preference 3: [by ref] fallover preference 4: [by ref] fallback preference =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_group_policy { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_group_policy.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rg=${1//\"/} typeset -n startup=$2 typeset -n fallover=$3 typeset -n fallback=$4 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN startup="" fallover="" fallback="" print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q \"group=$rg\" HACMPgroup" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q "group=$rg" HACMPgroup | \ while IFS='=' read name value; do name=$(eval echo $name) if [[ $name == "startup_pref" ]]; then startup=$(eval echo $value) fi if [[ $name == "fallover_pref" ]]; then fallover=$(eval echo $value) fi if [[ $name == "fallback_pref" ]]; then fallback=$(eval echo $value) fi done rc=$? print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_group_policy()" f ko5םa՝a֝a&5bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_hmc_attributess#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_hmc_attributes.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_get_hmc_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect HMC information. The cllshmc utility is invoked # to extract the necessary data. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_hmc_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_hmc_attributes.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset hmcs=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then hmcs= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset -i INDEX=0 rc=$RC_UNKNOWN typeset key= hmc= HMCS= typeset hmc_label= timeout= retry_count= retry_delay= nodename= sitename= username= password= typeset -i matches=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 typeset -i CONN_TYPE=0 typeset -i incluster=0 /usr/lib/cluster/incluster 2>/dev/null (( $? == RC_SUCCESS )) && incluster=1 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================= : Make sure we have something to query #======================================= elif [[ -n $hmcs ]]; then [[ $hmcs != *,* ]] && unset INDEX for hmc in ${hmcs//,/ }; do CL=$LINENO KLIB_HACMP_is_known_hmc hmc if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$hmc" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 174 "Available HMCs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_hmcs available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else HMCS="${HMCS:+$HMCS }$hmc" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then typeset available CL=$LINENO KLIB_HACMP_list_hmcs available rc=$? for (( i=0; i<${#available[*]}; i++ )); do HMCS="${HMCS:+$HMCS }${available[$i]}" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( rc != RC_SUCCESS && rc != RC_UNKNOWN )) && unset HMCS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for HMC in $HMCS; do typeset NODES= typeset HMC_PROPERTIES= print -- "$0()[$LINENO]($SECONDS): cllshmc -c -u $HMC" >>$CLMGR_TMPLOG # Always log commands HMC_PROPERTIES=$(cllshmc -c -u $HMC) rc=$? print -- "$0()[$LINENO]($SECONDS): cllshmc -c -u $HMC rc=$rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then print -- "$HMC_PROPERTIES" |\ while IFS=: read hmc_label timeout retry_count retry_delay user passwd rem do [[ $hmc_label == \#* ]] && continue # Skip the column headers properties[NAME$INDEX]=$hmc_label properties[TIMEOUT$INDEX]=$timeout properties[RETRY_COUNT$INDEX]=$retry_count properties[RETRY_DELAY$INDEX]=$retry_delay properties[USER_NAME$INDEX]=$user properties[PASSWORD$INDEX]=$passwd typeset -i cmd_rc= #NODES typeset NODENAMES= print -- "$0()[$LINENO]($SECONDS): cllshmcparam -m $HMC -o" >>$CLMGR_TMPLOG # Always log commands NODENAMES=$(cllshmcparam -m $HMC -o) rc=$? print -- "$0()[$LINENO]($SECONDS): cllshmcparam -m $HMC -o rc=$rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then for NODENAME in $NODENAMES; do NODES="${NODES:+$NODES }$NODENAME" done properties[NODES$INDEX]=$NODES fi #SITES if [[ $CLUSTER_TYPE != "NSC" ]]; then typeset SITES= typeset SITENAMES= print -- "$0()[$LINENO]($SECONDS): cllssite -H $HMC" >>$CLMGR_TMPLOG # Always log commands SITENAMES=$(cllssite -H $HMC) cmd_rc=$? print -- "$0()[$LINENO]($SECONDS): cllssite -H $HMC cmd_rc=$cmd_rc" >>$CLMGR_TMPLOG # Always log commands result if (( $cmd_rc == RC_SUCCESS )); then for SITENAME in $SITENAMES; do SITES="${SITES:+$SITES }$SITENAME" done properties[SITES$INDEX]=$SITES fi # Continue even if no site, having dumped cmd_rc to log. fi print "$0()[$LINENO]($SECONDS):CONN_TYPE=$(clodmget -n -f connection_type HACMPhmcparam)" >>$CLMGR_TMPLOG # Always log command result CONN_TYPE=$(clodmget -n -f connection_type HACMPhmcparam >> $CLMGR_TMPLOG 2>&1) cmd_rc=$? print "$0()[$LINENO]($SECONDS): clodmget RC: $cmd_rc connection_type = $CONN_TYPE" >>$CLMGR_TMPLOG # Always log command result typeset hmccmd= if (( $CONN_TYPE == 1 )); then hmccmd="clrest" else hmccmd="clhmccmd" fi #hmc version typeset VERSION= print -- "$0()[$LINENO]($SECONDS): $hmccmd -o query -a hmc_version -H $hmc_label" >>$CLMGR_TMPLOG # Always log commands VERSION=$($hmccmd -o query -a hmc_version -H $hmc_label 2>>$CLMGR_TMPLOG) cmd_rc=$? print -- "$0()[$LINENO]($SECONDS): $hmccmd -o query -a hmc_version -H $hmc_label cmd_rc=$cmd_rc" >>$CLMGR_TMPLOG # Always log commands result if (( $cmd_rc == RC_SUCCESS )); then properties[STATUS$INDEX]="UP" properties[VERSION$INDEX]="$VERSION" else properties[STATUS$INDEX]="DOWN" fi # Continue even if VERSION is DOWN, having dumped cmd_rc to log. done #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[cod]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) fi done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_hmc_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_hmc_attributes =head1 VERSION Version Number: 1.5.1.9 Last Extracted: 8/9/16 14:12:29 Last Changed: 7/28/16 10:20:32 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_hmc_attributes.sh, hacmp.assist, 61haes_r721, 1631A_hacmp721 =head1 SYNOPSIS clmgr query hmc [[,,...]] clmgr -v query hmc =head1 DESCRIPTION Retrieves the data for one or more HMCs defined within the cluster configuration. =head1 ARGUMENTS 1. HMC [REQUIRED] [string] The label of one or more HMCs (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  ko+םa՝a֝a&+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_host_attributes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_host_attributes.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_get_host_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect host information. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_host_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n properties=$1 typeset nodes=${2//\"/} nodes=${nodes//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN for k in ${!properties[*]}; do unset properties[$k]; done #======================================= : Make sure we have something to query #======================================= if [[ $nodes == *([[:space:]]) ]] && (( CLMGR_VERBOSE )); then nodes=$($HAUTILS/clnodename 2>>$CLMGR_TMPLOG) fi if [[ $nodes == *([[:space:]]) ]]; then nodes=${LOCAL_NODE%%\.*} fi if [[ $nodes == *([[:space:]]) ]]; then nodes=$(/usr/bin/hostname) nodes=${nodes%%\.*} fi typeset DATA= #======================================================================== : Collecting OS levels is slow. So those retrievals are launched first : as backgrounded processes, so they can run while the rest of the host : data is being collected. 35% performance improvement. #======================================================================== typeset OSLEVEL_PIDS="" typeset OSLEVEL_DATA="$TMPDIR/clmgr.KHghi.oslevel.$$" typeset -A NODE_IDS for node in $nodes; do #===================================================================== : Retrieve the ID number of node "$node". Note, however, that if the : cluster has never been synchronized with this node in it, then the : ID will likely be zero. In that case, a faux number will have to : be temporarily assigned to avoid having overwritten data. #===================================================================== print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"name=$node and object=COMMUNICATION_PATH\" -f node_id HACMPnode" >>$CLMGR_TMPLOG # Always log commands NODEID=$($HAUTILS/clodmget -q "name=$node and object=COMMUNICATION_PATH" -f node_id HACMPnode) print "$0()[$LINENO]($SECONDS): clodmget RC: $?; NODEID == \"$NODEID\"" >>$CLMGR_TMPLOG # Always log command result if [[ -z $NODEID ]] || (( NODEID == 0 )); then NODEID=$(print -- "$node" | /usr/bin/sum) NODEID=${NODEID%%+([[:space:]])*} if [[ $NODEID != +([[:digit:]]) ]]; then NODEID=$RANDOM fi fi NODE_IDS[$node]=$NODEID if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then ( print "properties[AIX_LEVEL$NODEID]=\"$(/usr/bin/oslevel -s)\"" 2>>$CLMGR_TMPLOG >> $OSLEVEL_DATA )& else ( print "properties[AIX_LEVEL$NODEID]=\"$($CLRSH $node /usr/bin/oslevel -s)\"" 2>>$CLMGR_TMPLOG >> $OSLEVEL_DATA )& fi OSLEVEL_PIDS="$OSLEVEL_PIDS $!" done #================================================ : Collect the host data for each node in $nodes #================================================ for node in $nodes; do typeset NODEID=${NODE_IDS[$node]} #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then print "$0()[$LINENO]($SECONDS): LANG=C LC_ALL=C /usr/bin/host $(/usr/bin/hostname)" >>$CLMGR_TMPLOG # Always log commands DATA=$(LANG=C LC_ALL=C /usr/bin/host $(/usr/bin/hostname)) else print "$0()[$LINENO]($SECONDS): $CLRSH $node LANG=C LC_ALL=C /usr/bin/host $(/usr/bin/hostname)" >>$CLMGR_TMPLOG # Always log commands DATA=$($CLRSH $node LANG=C LC_ALL=C /usr/bin/host $($CLRSH $node /usr/bin/hostname)) fi rc=$? print "$0()[$LINENO]($SECONDS): host RC: $rc; DATA == \"$DATA\"" >>$CLMGR_TMPLOG # Always log command result typeset FQDN=${DATA%%+([[:space:]])*} if [[ $FQDN != *\.* ]]; then : The first component of the /usr/bin/host output does not : look fully-qualified. This might mean there is an incorrect : /etc/hosts configuration. Checking aliases... typeset ALIASES=${DATA##*:} for FQDN in ${ALIASES//,/ }; do [[ $FQDN == *\.* ]] && break done if [[ $FQDN != *\.* || \ $FQDN == +([0-9])\.+([0-9])\.+([0-9])\.+([0-9]) ]] then : None of the aliases were fully-qualified either. There : is definitely something wrong with this configuration. : Defaulting to the output of the hostname utility. HOSTNAME=${DATA%%+([[:space:]])*} else HOSTNAME=$FQDN fi else HOSTNAME=$FQDN fi properties[HOSTNAME$NODEID]=$HOSTNAME DATA=${DATA%%,*} properties[IPADDRESS$NODEID]=${DATA##*+([[:space:]])} if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then properties[LOCALHOST$NODEID]=true else properties[LOCALHOST$NODEID]=false fi #============================================ : Get the version information for the node, : plus its current synchronization status #============================================ if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then print "$0()[$LINENO]($SECONDS): /usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte" >>$CLMGR_TMPLOG # Always log commands typeset VRMF=$(/usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte) else print "$0()[$LINENO]($SECONDS): $CLRSH $node /usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte" >>$CLMGR_TMPLOG # Always log commands typeset VRMF=$($CLRSH $node /usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte) fi cmd_rc=$? print "$0()[$LINENO]($SECONDS): lslpp RC: $cmd_rc; VRMF == \"$VRMF\"" >>$CLMGR_TMPLOG # Always log command result (( $rc == RC_SUCCESS )) && rc=$cmd_rc VRMF=${VRMF//+([[:space:]])/ } VRMF=${VRMF# } VRMF=${VRMF#* } VRMF=${VRMF%% *} properties[HAVERSION$NODEID]="$VRMF" properties[VERSION_NUMBER$NODEID]=$(/usr/bin/grep CLUSTERVERSION= $HAETC/rc.cluster | /usr/bin/cut -d= -f2) properties[HAEDITION$NODEID]="STANDARD" CL=$LINENO isEnterprise $node (( $? == 1 )) && properties[HAEDITION$NODEID]="ENTERPRISE" #==================================================================== : An invalid node name was provided. Delete the data. Report error. #==================================================================== if [[ -z ${properties[HOSTNAME$NODEID]} ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 rc=$RC_NOT_FOUND typeset key= for key in ${!properties[*]}; do [[ $key == *$NODEID ]] && unset properties[$key] done fi done #===================================================================== : Make sure the OS retrievals are complete, then collect any results #===================================================================== if [[ -n $OSLEVEL_PIDS ]]; then wait $OSLEVEL_PIDS if [[ -f $OSLEVEL_DATA && -s $OSLEVEL_DATA ]]; then typeset OSLEVELS=$(cat $OSLEVEL_DATA) [[ $OSLEVELS == *=* ]] && eval "$OSLEVELS" fi fi rm -f $OSLEVEL_DATA log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_host_attributes()" function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_host_attributes =head1 SYNOPSIS clmgr query host [ [,,...] ] =head1 DESCRIPTION Retrieves data for various components on the local host, by default, or all specified nodes. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. 2. node [OPTIONAL] [string] A specific node whose host information is to be retrieved. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== === kDo(םa՝a֝a&(bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_host_infobutes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_host_info.sh 1.16 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)42 1.16 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_host_info.sh, hacmp.assist, 61haes_r720, 1542B_hacmp720 9/29/15 17:42:35 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_host_info =head1 VERSION Version Number: 1.16 Last Extracted: 10/15/15 19:21:00 Last Changed: 9/29/15 17:42:35 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_host_info.sh, hacmp.assist, 61haes_r720, 1542B_hacmp720 =head1 SYNOPSIS clmgr query host [ [,,...] ] =head1 DESCRIPTION Retrieves data for various components on the local host, by default, or all specified nodes. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. 2. node [OPTIONAL] [string] A specific node whose host information is to be retrieved. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_host_info { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.16, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_host_info.sh, hacmp.assist, 61haes_r720, 1542B_hacmp720 : INPUTS: $* typeset -n properties=$1 typeset nodes=${2//\"/} nodes=${nodes//,/ } [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN for k in ${!properties[*]}; do unset properties[$k]; done #======================================= : Make sure we have something to query #======================================= if [[ $nodes == *([[:space:]]) ]] && (( CLMGR_VERBOSE )); then nodes=$($HAUTILS/clnodename 2>>$CLMGR_TMPLOG) fi if [[ $nodes == *([[:space:]]) ]]; then nodes=${LOCAL_NODE%%\.*} fi if [[ $nodes == *([[:space:]]) ]]; then nodes=$(/usr/bin/hostname) nodes=${nodes%%\.*} fi typeset DATA= #======================================================================== : Collecting OS levels is slow. So those retrievals are launched first : as backgrounded processes, so they can run while the rest of the host : data is being collected. 35% performance improvement. #======================================================================== typeset OSLEVEL_PIDS="" typeset OSLEVEL_DATA="$TMPDIR/clmgr.KHghi.oslevel.$$" typeset -A NODE_IDS for node in $nodes; do #===================================================================== : Retrieve the ID number of node "$node". Note, however, that if the : cluster has never been synchronized with this node in it, then the : ID will likely be zero. In that case, a faux number will have to : be temporarily assigned to avoid having overwritten data. #===================================================================== print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"name=$node and object=COMMUNICATION_PATH\" -f node_id HACMPnode" >>$CLMGR_TMPLOG # Always log commands NODEID=$($HAUTILS/clodmget -q "name=$node and object=COMMUNICATION_PATH" -f node_id HACMPnode) print "$0()[$LINENO]($SECONDS): clodmget RC: $?; NODEID == \"$NODEID\"" >>$CLMGR_TMPLOG # Always log command result if [[ -z $NODEID ]] || (( NODEID == 0 )); then NODEID=$(print -- "$node" | /usr/bin/sum) NODEID=${NODEID%%+([[:space:]])*} if [[ $NODEID != +([[:digit:]]) ]]; then NODEID=$RANDOM fi fi NODE_IDS[$node]=$NODEID if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then ( print "properties[AIX_LEVEL$NODEID]=\"$(/usr/bin/oslevel -s)\"" 2>>$CLMGR_TMPLOG >> $OSLEVEL_DATA )& else ( print "properties[AIX_LEVEL$NODEID]=\"$($CLRSH $node /usr/bin/oslevel -s)\"" 2>>$CLMGR_TMPLOG >> $OSLEVEL_DATA )& fi OSLEVEL_PIDS="$OSLEVEL_PIDS $!" done #================================================ : Collect the host data for each node in $nodes #================================================ for node in $nodes; do typeset NODEID=${NODE_IDS[$node]} #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then print "$0()[$LINENO]($SECONDS): LANG=C LC_ALL=C /usr/bin/host $(/usr/bin/hostname)" >>$CLMGR_TMPLOG # Always log commands DATA=$(LANG=C LC_ALL=C /usr/bin/host $(/usr/bin/hostname)) else print "$0()[$LINENO]($SECONDS): $CLRSH $node LANG=C LC_ALL=C /usr/bin/host $(/usr/bin/hostname)" >>$CLMGR_TMPLOG # Always log commands DATA=$($CLRSH $node LANG=C LC_ALL=C /usr/bin/host $($CLRSH $node /usr/bin/hostname)) fi rc=$? print "$0()[$LINENO]($SECONDS): host RC: $rc; DATA == \"$DATA\"" >>$CLMGR_TMPLOG # Always log command result typeset FQDN=${DATA%%+([[:space:]])*} if [[ $FQDN != *\.* ]]; then : The first component of the /usr/bin/host output does not : look fully-qualified. This might mean there is an incorrect : /etc/hosts configuration. Checking aliases... typeset ALIASES=${DATA##*:} for FQDN in ${ALIASES//,/ }; do [[ $FQDN == *\.* ]] && break done if [[ $FQDN != *\.* || \ $FQDN == +([0-9])\.+([0-9])\.+([0-9])\.+([0-9]) ]] then : None of the aliases were fully-qualified either. There : is definitely something wrong with this configuration. : Defaulting to the output of the hostname utility. HOSTNAME=${DATA%%+([[:space:]])*} else HOSTNAME=$FQDN fi else HOSTNAME=$FQDN fi properties[HOSTNAME$NODEID]=$HOSTNAME DATA=${DATA%%,*} properties[IPADDRESS$NODEID]=${DATA##*+([[:space:]])} if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then properties[LOCALHOST$NODEID]=true else properties[LOCALHOST$NODEID]=false fi #============================================ : Get the version information for the node, : plus its current synchronization status #============================================ if [[ ${node%%\.*} == ${LOCAL_NODE%%\.*} ]]; then print "$0()[$LINENO]($SECONDS): /usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte" >>$CLMGR_TMPLOG # Always log commands typeset VRMF=$(/usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte) else print "$0()[$LINENO]($SECONDS): $CLRSH $node /usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte" >>$CLMGR_TMPLOG # Always log commands typeset VRMF=$($CLRSH $node /usr/bin/lslpp -L | /usr/bin/grep cluster.es.server.rte) fi cmd_rc=$? print "$0()[$LINENO]($SECONDS): lslpp RC: $cmd_rc; VRMF == \"$VRMF\"" >>$CLMGR_TMPLOG # Always log command result (( $rc == RC_SUCCESS )) && rc=$cmd_rc VRMF=${VRMF//+([[:space:]])/ } VRMF=${VRMF# } VRMF=${VRMF#* } VRMF=${VRMF%% *} properties[HAVERSION$NODEID]="$VRMF" properties[VERSION_NUMBER$NODEID]=$(/usr/bin/grep CLUSTERVERSION= $HAETC/rc.cluster | /usr/bin/cut -d= -f2) properties[HAEDITION$NODEID]="STANDARD" CL=$LINENO isEnterprise $node (( $? == 1 )) && properties[HAEDITION$NODEID]="ENTERPRISE" #==================================================================== : An invalid node name was provided. Delete the data. Report error. #==================================================================== if [[ -z ${properties[HOSTNAME$NODEID]} ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 rc=$RC_NOT_FOUND typeset key= for key in ${!properties[*]}; do [[ $key == *$NODEID ]] && unset properties[$key] done fi done #===================================================================== : Make sure the OS retrievals are complete, then collect any results #===================================================================== if [[ -n $OSLEVEL_PIDS ]]; then wait $OSLEVEL_PIDS if [[ -f $OSLEVEL_DATA && -s $OSLEVEL_DATA ]]; then typeset OSLEVELS=$(cat $OSLEVEL_DATA) [[ $OSLEVELS == *=* ]] && eval "$OSLEVELS" fi fi rm -f $OSLEVEL_DATA log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_host_info()" #  l\oHXkw{!16BKUqx|%'+347W⤺ N.sT5ҋwQH-~t%-5a0r3&epVw;yeat's0MΓb5aI=O0wIުSI ?Ktcj1poV8׎}y`:-;T5;&p13Iƥ"UD(,n**O_Md5;,~+'Z 0}FXR ̩::1&׌s+ E~*69 )Vw̥)se'3w'^a`NQVYh*x` +ܿ >R s*Rq (ʽT8Ԥ\>b_3ڌai^c?Z 0z:# J1Ui]+MgZ 8P2==)<ټטg:̓Ob:~Wc?[mmmmYNn{p ]sENmmmmmgj~LZ 0s@c %s^cVEҹ&JYyR$r 0aZW2I@-+pc8Tevai^c;<آAlҼ ?1Ϣp##ZW4һ?01yd2 &\9ŜCQ:uw&&# JN8TTh3?2럄FNJ1OWrhĥ~`_l%ȴx^RVRKk*Z`عW-+p&Kg&KL4LE$Tx#ti2I@㭶mmmmmm)(tՆ׌k(7J[c8Tfkk?ixNސ+>QU犸~`1I?5㭶mmmmmm (㳅h/ *v?4j@<ѭv?=&sfT*1v? PHώƶ1B2}eyg~`\ `n@&.ӧp&gng98%_,gmmmmmmmmB:jnZ'OnU])qWEW?8IQS|ummmmmmmk?&TRۗ tIO 8r$` ⤽F\"f *"p!2EH*@3㭶mmmmI? SyTG<[~`0mmmmmgryXcj36 ⤽h9&g sf@#>92IF.p& $&pZbqyXc8TepNl?⤽Uw̥\]\c w=⤯;mFWS j[8*{w#91=RVץ% b:H5ʙ$\@yF*7>3ڌ ό6;s0Mpp(;** $T& $&q˜P9&gAό680@A! ,"'hr 0c R^'5@se$K6 ⤽.Ű.p#: 8$`Dy"ƀ !++V;VZ[*9xxƠ`Q\[ _@A! 3@sFL`@q;97`Q(-+vZ*vY@@2r8`QZ*vY‚PX7p@&9q֊@c aa`%YFmkTApFYyay`*KHh\ud625鹟*gscF73 8T¤Y'W*dq P&T"1`QMIW?s'\($"\ $\ ,`1is@c8;a`*KP@26D "`,?Dܞ&r 8dHLatO Y0@A! ,# (Zuϖ?ܞh7@S$ H7  s HȦ ͛R^eL. <#jʙ$\@yF4g\@<25鹟*c?'5@se$K6 ⤽.Ű.p#: 8$`DxG.\pzCVN珯VuE(j&`2'  71AZG\a@#>92I@3# J0~LA|#& 3 X1<Ѭ0(pQfͳ*KF &\9ŜԛٶI{?.*NQRRlZijH:Dȓ. hjMX3ummmmmmmY; Ӳu=;mFuXʿIoY;MN'3ڌ6-Vܼe^`.ebkTlx80r_UF8LOUᑃ^g&Š8*{ $&Ԛf=\8La<`׮|AZ-{?bT^Rӂ>3ڌWs0M+1XXJL3ڌ6-'Dhn|f j*K?&TRشmFWɈ.ՆɈ.hle*LAsHda(51 E"BdIDh`g45&ş*g^YUJ\Tό6:Mt*NQRYPy' *X*B8TLg|1}"BdIDh`g&N]ɆٶI{?փjH&TR0HbL:D@A! ,"QQ|f lZN]"c d2`8B%(XEAώ5XPY *HcaH$@R&N]8B%(XEuyg~eIj3طQ; jCZ?s'WS詠d2O!2$ˇ"t@xbmmmmmmmmm2qRpqW_ETrTy\mT,J.ii]sEN+pgUi]+*HȐZʑ$7P Z`w iQiQ X(j+d &`Xj `IG( &(A…9pA@(,3ڌpp9K2$&P?Ɉ" LAu1FX1 gngJY'5*3ڌ6-ܾ:LmmmmmmmYFkAUth $2I  ^`.dZ`!x 3 VEҹ@R$p,@yCK% 3(<,DUi]+*X$ "H lg6mR^I? "Ij3髧OqRtU%U)gʒ*[s0M1kAUthb$&T `b "JZ 0sEK$2I ua(<,Dh`b "KB8TYlfR :RUEw>3ڌzjb^* $T-18`Qb N8TU(pb$FZ 0sDʙ$\@yH*D@l7ai^cN5aOs`91MtgɈ.i>)M,Ԓ ͛R^W4LE$2I XKB,MIW?s?s:mmmmmmmmg~H^_>*L'rt c8Td 5?Z1XQ:MXn+]^*Nӡ&/2ܼehycט꧶1OW gmmmmmmmm ##8@BN2dȒ.iό6&AJa7@&ZaJʑ$636 ⤽AUti LAthmmmmmmmmm?,N]cʒ2$<2bbjIBW^W EII+IˬurBmmmmmmmmmhւL"\11H@R${pHx'6lI{?ϽyZaJ抒2$<2I N,>:Ui]+.H@AeHgnc?[mmmmmm|Trެv$N~` g%$ܓ0Z^CZQrnGlc mmmmmmJBeI-rOh9ygPV {X^g޼Z 0sF $Tx$ "H mryXc8`3sf%T^x;c8Te~*6:-{Վ+:k)iSu՗QXv%-{, ⤌p4;s׌5F@s̙.c6lI{?VFF7?0dyX<"D?U޼Z 0sHdaeHgJY𠬙R$aal4k@R$$7PVLA0d|Tό6+UUf3ummmmmmmɧ"`Nҋt k;*9}MXl\/FŃܾ`h<-*9uc0VTrn; vV6.Uṕ'sV*L¥07^Q~L*9}cYU72Ӗ' 5}X8Yiӣ,vOK)0w]fN禬6.U=P[ETB[jʹONJՖEMF\VtTkť,VQi僿Sެu/ sizRF5_k-;<عW%OK#I`iyr:um9lOuS:xZx9TLf5W珯Yϯ)nzĄ2*9pV_q 犍%=5`yr*9| *XL3Z;0X; :*qRs~EsV*VQȩ}P&F892$xOsdޱU|sec\?*5;/1?9SՎ^\Vw<]PmmmmmmmmmmLы~U&Q?p:wCTeGc0,0(3ڌ!ό6 @< 6 i`Q3*X *NӮj򾚰ƹ&dnN5c\2-HȒ0@13$c `:*7 b_طMXjuaV&ep2-HǗ2aό69 $Dix6*NuwU=Wά3w>3ڌ"gYμ62_*ⳁXVEҾh e7QS6ںhtTsEM&ŻEU?*K?JZJ1_Eg)qWӧfeRZ$d .UaV )Le@*NʿjK`u/8ϢgγN+ F' I0?nҋtWT%e}ǐ9 OKzgMSIT4)nzㄚyˮ3ꞝ)Ks?$=a F;MfAxH}ДizRF4@/`H~u&K^[Tk\U6(MXʉgzZRr*5`mmmmmmmmmm*NNsŁZ*=/*uTB;c # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_interface_network =head1 VERSION Version Number: 1.6 Last Extracted: 10/27/15 18:41:21 Last Changed: 10/16/15 01:41:56 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_interface_network.sh, hacmp.assist, 61haes_r720, 1544A_hacmp720 =head1 SYNOPSIS KLIB_HACMP_get_interface_network =head1 DESCRIPTION Returns the HACMP network name for the provided HACMP interface =head1 ARGUMENTS 1: [scalar] interface name =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_interface_network { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_interface_network.sh, hacmp.assist, 61haes_r720, 1544A_hacmp720 : INPUTS: $* typeset interface=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -z $interface ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"ip_label = $interface\" -f network HACMPadapter" >>$CLMGR_TMPLOG # Always log commands typeset network=$($HAUTILS/clodmget -q "ip_label = $interface" -f network HACMPadapter) rc=$? network=$(echo ${network//\"/}) print "clodmget RC: $rc; network == \"$network\"" >>$CLMGR_TMPLOG # Always log command result print "${network}" # Print it , so that calling script/function will have the network name (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_interface_network()" $ k&[oםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributese#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)95 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh, hacmp.assist, 61haes_r714 6/25/12 14:03:40 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_ldap_client_attributes =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:21 Last Changed: 6/25/12 14:03:40 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr query ldap_client NOTE: the alias for "ldap_client" is "lc". =head1 DESCRIPTION Retrieves the configuration data for one or more SystemMirror LDAP clients. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_ldap_client_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_client_attributes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset key= LINE= typeset -A list typeset -i rc=$RC_SUCCESS matches=0 i=0 typeset -u attr= uc_key= typeset LINE= ATTR= VALUE= typeset group= type= value= typeset -u name= typeset -A TRANS TRANS=( [SERVERLIST]="SERVERS" [AUTHTYPE]="AUTH_TYPE" [BINDDN]="ADMIN_DN" [SSLPORTNUMBER]="PORT" [CLIENTKDBPATH]="SSL_KEY" ) #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ /usr/bin/odmget -q "group=LDAPClient" HACMPLDAP |\ while read LINE; do [[ $LINE == HACMPLDAP: ]] && continue if [[ $LINE != "" && $LINE == *=* ]]; then ATTR=${LINE%% =*} VALUE=${LINE#*= } VALUE=${VALUE//\"} case $ATTR in group) group="$VALUE" ;; type) type="$VALUE" ;; name) name="$VALUE" ;; value) value="$VALUE" ;; esac else [[ -z $name ]] && continue [[ -n ${TRANS[$name]} ]] && name=${TRANS[$name]} if [[ ${properties[$name]} == *([[:space:]]) ]]; then properties[$name]="$value" elif [[ ${properties[$name]} != *$value* ]]; then properties[$name]="${properties[$name]};$value" fi group= type= name= value= # Reset these variables fi done # Make sure the last stanza gets processed if [[ -n name && -n $value ]]; then [[ -z $name ]] && continue [[ -n ${TRANS[$name]} ]] && name=${TRANS[$name]} if [[ ${properties[$name]} == *([[:space:]]) ]]; then properties[$name]="$value" elif [[ ${properties[$name]} != *$value* ]]; then properties[$name]="${properties[$name]};$value" fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_ldap_client_attributes()"  kdo3םa՝a֝a&3bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_server_attributese#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_server_attributes.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)69 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_server_attributes.sh, hacmp.assist, 61haes_r714 6/25/12 14:03:59 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_ldap_server_attributes =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:45 Last Changed: 6/25/12 14:03:59 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_server_attributes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr query ldap_server clmgr -v query ldap_server NOTE: the alias for "ldap_server" is "ls". =head1 DESCRIPTION Retrieves the configuration data for one or more SystemMirror LDAP servers. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_ldap_server_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_ldap_server_attributes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset key= LINE= typeset -A list typeset -i rc=$RC_SUCCESS matches=0 i=0 typeset -u attr= uc_key= typeset LINE= ATTR= VALUE= typeset group= type= value= typeset -u name= typeset -A TRANS TRANS=( [ADMINDN]="ADMIN_DN" [BASEDN]="BASE_DN" [BINDDTNAME]="BIND_DTNAME" [SERVERLIST]="SERVERS" [SERVERKDBPATH]="SSL_KEY" [SSLPASS]="SSL_PASSWORD" [SSLPORTNUMBER]="PORT" [SCHEMATYPE]="SCHEMA" ) #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ /usr/bin/odmget -q "group=LDAPServer" HACMPLDAP |\ while read LINE; do [[ $LINE == HACMPLDAP: ]] && continue if [[ $LINE != "" && $LINE == *=* ]]; then ATTR=${LINE%% =*} VALUE=${LINE#*= } VALUE=${VALUE//\"} case $ATTR in group) group="$VALUE" ;; type) type="$VALUE" ;; name) name="$VALUE" ;; value) value="$VALUE" ;; esac else [[ -z $name ]] && continue [[ -n ${TRANS[$name]} ]] && name=${TRANS[$name]} if [[ ${properties[$name]} == *([[:space:]]) ]]; then properties[$name]="$value" elif [[ ${properties[$name]} != *$value* ]]; then properties[$name]="${properties[$name]};$value" fi group= type= name= value= # Reset these variables fi done # Make sure the last stanza gets processed if [[ -n name && -n $value ]]; then [[ -z $name ]] && continue [[ -n ${TRANS[$name]} ]] && name=${TRANS[$name]} if [[ ${properties[$name]} == *([[:space:]]) ]]; then properties[$name]="$value" elif [[ ${properties[$name]} != *$value* ]]; then properties[$name]="${properties[$name]};$value" fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_ldap_server_attributes()" aes_r kBto םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_localnoder_attr#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_localnode.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)59 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_localnode.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:31 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_localnode =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:40:52 Last Changed: 6/10/12 15:22:31 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_localnode.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_localnode =head1 DESCRIPTION Gets the label of the locally configured PowerHA node and displays it on STDOUT. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_localnode { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_localnode.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values print -- "$0()[$LINENO]($SECONDS): $HAUTILS/get_local_nodename" >>$CLMGR_TMPLOG # Always log commands VERBOSE_LOGGING="" $HAUTILS/get_local_nodename typeset -i rc=$? print "get_local_nodename RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_localnode()" ====== k>o םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_location_dependency_by_type.txt#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_location_dependency_by_type.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)20 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_location_dependency_by_type.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:32 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_location_dependency_by_type =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:53 Last Changed: 6/10/12 15:22:32 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_location_dependency_by_type.sh, hacmp.assist, 61haes_r714 =head1 DESCRIPTION KLIB_HACMP_get_location_dependency_by_type =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_location_dependency_by_type { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_location_dependency_by_type.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mode=${1//\"/} typeset -n list=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i index=0 rc=$RC_SUCCESS typeset -A DependencyModes DependencyModes=( [SAME_SITE]="SITECOLLOCATION" [SAME_NODE]="NODECOLLOCATION" ) typeset cmd_mode=${DependencyModes[$mode]} #================= : Validate input #================= if [[ -z $mode ]]; then rc=$RC_MISSING_INPUT elif [[ -z $cmd_mode ]]; then rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"loc_dep_type=$cmd_mode\" -f group_name HACMPrg_loc_dependency" >>$CLMGR_TMPLOG # Always log commands for rg in $($HAUTILS/clodmget -q "loc_dep_type=$cmd_mode" -f group_name HACMPrg_loc_dependency) do list[$index]=${rg//\"/} (( index += 1 )) done print "clodmget RC: $?" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_location_dependency_by_type()" e lDoP2םa՝a֝a&=bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_log_attributese  =e aiorstcdhlnp"#$CEILRS[]_fgmuv()-./12:ADGMNOPTbwy&',0;>HU\k{}%*+3457BFKVXqx|!69Lj!s:q mmmmmmmmmڳgB-rTh &HXdɉp#lfQJ 8vD &TX``h=75*E а$_~_J 8=$I6@IT<*P 4$,2hn8i6z3$ bUd D104,D (LL@X5YAqq, uYM)xxHxxU"M«_ Vc)Ǫ+/fBAOǽܾTBAGjX@Lo0c 9ɜ02$ 4T`TT dD{qɐwEVa1T{ų DA%Va1T{ų DEڵ1$TXT{pYD3\&8 y aDxNù&z`mmmmKcbQkh  0_ mmmmj͹OjUV_ BgUV_  hI_GULpڌ;74T`V#&9QR>Mk ܠ0BrA: ޅ"XD.uY _GULpYPj:c4ڿ0x"z^ق:cmXM*@Rdx;#lf-vQڦa-ʑj ONzm؊;G:ZlwrER ' ,,&3B`\LX<\LX&\b#E˒,Pdh&J ,f&J_Jra٤B0 0%X2_;4QFBD 4Ta0O"n  *0*\H3ZR-PؙBؙ @ 0`J 2d0*L!CL(`b$d`UؙBؙ   adBcCELQdW2g^elaa1Ta2"P\P f>JȨóۏʄI̙@P;HbgIZ˔ho0c 7"_(E"̙qJT_&ziᆧ"_(E" _&zi&zCp#&C͹X^``;E>M">I(*$HɐrA:D(}BD 6+/f Ȕ&KֿȦ㝸Cz#&ARyjʚ'2┨^#ȃB *P\%ɒ.%pUa5 5L$by;/@~<4,0~(Ad1Ijkƒl6frNQcbgB-rRdv&d?Μ~3gB-ruTnz2.j3ѹEEd?Em;BtpT8$mP۞uk UNNʑVCڦ20)sβ ͊#1϶G%lj88raHf)6!@\1@ՐnyF2 YM%YV^.CiBʼnCr"1J8jJ&.&,LQPCPr3P4Rbb!u< &Y$)ι|XsМ۟&j\qIYlvU&tEU6JxY?Mm. !V^ȵcIN YMqJq8r")J+!)6!MnYϜqjM1ݧUNNʑVCAXN Y@ ?/mSf}9+!㌆eǣ&GMU{ZLGIqA+!\v_ j::L?<]HE)αMV,i)|sd?lSkTѕeDeDw)b9;T6dZ1Mmd?㬋PҔ"yނgN<;.)N\(_LEd?nsДvY#Ƅ8l0A,DC&qRa!aG&&qL^ѳј-u)b"Lr^):7/-yVB90J/bD0+Ā h^UI&(rQaV  @$"eHq\fZSBBY?) /@0Ma8$CA2B&LM&㆙g0@& uPB AIOA@ $V .Pנӏ7*n80 x0^gN?OKpn8ԥb˒,PdhZbj\mܤ~uϜeÒfڜ9kK EZ7&0B !CW4nSor>qKzn9js -:bUcD3Lcs'CD;UV_3 "P1C9ɳ+Sd ȴ{;6)5Lq&"̓n=)J;# )(wA/ZRD2Ƃ%ּ%^>tf2ewrESb.aTy&6y5[3L<+DpVPi;<'E GGI3sy4unsn<+.;;<;TTqC:A^pqјv㌆s(GjvqoD_(ʲ2.j:ruCs:$cihDU?dx9x*"JsmNA)zm# ͊#8SOs吶mmmmmmmmmVC*`s%ڢ2Cbr2%CGRɨ[mmmmmmmmmm!i.,\x$qj1JU\kw{}%'3467BHXYqz|!59/D %on@P8P0E"ҬZ AY%Vb >Y|7Ap{,u,=/_pp_<',6޾ZX2O @},n$1߶M-7 ae6Zx>c"EỆ@J,Q2$LMCw (h_ PCB`*!2 Z`uQʲVsn&ɀ C1 *!%[@yȷ;oeUjzufnD6*3%e k5v-Ugh֛ ؈=^g6qKNktz~0՚ު͇z838>l?NsbAkL G0ۜ-d g}*6>rm/y_.l+<l?}{s3VRVpBVT_mYᚭ/N A&"x"c !R&PTT1\$'DC͛w(ZT]1sk>O򨇻5n'TDrwZ$$*YD &+ۀǞ 7|>7("UgmSY@9mmmmm޳*V'Y Qf_'mmmm[3ۜ#@a-xn'DlK^-=>>iSϣhUex|t̗i$C"LM 6Q,A@a0Lb'Vsnb'?=>N$HEDȖY[ YNWVj\$U"ŅEDȖY[ YN^a1jo: <0k]F֨ 0&PDmmmmmmz[h_zpA7*`܃]#9оoEKh$lFO@(&}]6mmmmmm{ePV-x }xh֊Y@A9b\{NVsnB(g6g>\؄Ͻh֊}A ͛Bu~ΪnDQm놻@EYͳtb!*A4"1 1wiwmmmmmmmmz[y4A)ܜvZ-N ~؊ immmmmmmm S"M"e8H(%7&i0; pa /sa;%(HrI&TLmmmmkrJoU D;8틻mmmmm]`s4k֋(ZT6%͇mmmmmmmm]7-\9*~p=AY-jo<~|㜃KaEƙG޴ANsa^*y=ʵ^Ld]soof1@|7"sm%o­qiP͈ޅmGe>we( 2mmmmmmmm|=3*;[Bҧ(ZTDdPބ9 9d`Ib i;3FdI6%̨͇dVfި;$ 1efOwdIQ&DCFLLI,T@aQHQB2>6l,"ȓJL4PVxa`s4kheC"HN9ȓK6lKiPȭE2$wفѬsZ)PȮkE2$BtS"M,̨dW6lKiPȭ1ͽPw7%ͅZ"̨̔Bu'%@4iv^w;x;3FfI(&<ٱ.l=h4L$Hlؗ6ӿ.}|Q YTѬsZ)PȮleC"f9fT2*1ۃS" 4dILK@12b:̨̔Bu'%ZG 9Q] FcE3*hLe *A_dbwZ'*w̨̔Bu'%ZG0sZ!"m̨dWa"EDǘ(E4Z&$U"Ņ8v1PPYS"M"e "]" eFd9,.k `H&HT LDzT^[1; frwXhHT"YxHN0",(E4X- ,ES(* <0wفѬtL$HE M,ٱ.l=L$HE M, DdK(`T c˨HbdyuZX$\A(+X6nX$\%͇‚ <0%͇̒PLy`x wg4L$HfcLʆEsfĹJ 0>uE3*a"EDǘ(E4ddc,L$H[AfOw>zGq !RHƉ PqR\`5(XG@Ң̿u/Z|~޻2KG"g h< F0",(E4fega"ER,XPia఑D,Xg‚ <00",(E4rwfcL%ǘ6%͇|};L%0 h E-*y0XHב; PF4H&HTaU*28ʳ(>B ցx,$A>8v1̒PLy0D{eoU}2$׋L4ẗsfh84L4!ȓHjfDB.>904B & B#Z{Ϸ@!D 0@a176A9`s &HTR,.:!z$G,,Ki954S2IA1͉sa;3F9a"EDǘ(E4fĹ1s*R̵ҧX-ۃS" 4dILK@12b:̨̔Bu'%ZG 9Q] FchLe *A_dbwZ'*w̨̔Bu'%ZG0sZ!"oa"EDǘ(E4Z&$U"Ņ8v1PPYS"M"e "]" eFd9,.k `H&HT LDzT^[1; frwXhHT"YxHN0",(E4X- ,ES(* <0wفѬtL$HE M,ٱ.l=L$HE M, DdK(`T c˨HbdyuZX$\A(+X6nX$\%͇‚ <0%͇̒PLy`x wg4L$HfcLʆEsfĹJ 0>uE3*a"EDǘ(E4ddc,L$H[AfOw>zGq !RHƉ PqR\`5(XG@Ң̿u/Z|~޻2KG"g h< F0",(E4fega"ER,XPia఑D,Xg‚ <00",(E4rwfcL%ǘ6%͇cL%ǘ3s0̈kAE =-*yoĵ̗L}Pwi9;^GH:Z$$*YB !R.*_֒,Xa]O<9Ey?>Pw h< ֨ "%ˑ&*eArѭ̗!F1D14uP[ʏ"[Z!ȓH88D;kG "Xh$"#TBGTp̏N*}I@}D)1#d.`68x[AYY?DwfT"&3EX/>O4DM"fH$I$$Xy*dۉ8>F@ Q2(TP5]"0LD@iBN Px$/ۜ#BK0@ ,Xe ($I$$ B>O4]" @P9BDK(YB &bi&G ;Br8$/ۜ#F% P"%,RD14u#Ą2& q>D"P$I$$( ,A%K wZ&Gۃ@0'6o ̏Nۜ#E.PXJ ( *bi&G!'Bۜ#HY$MLOw^-=2=:PS'Ԕ%Aan>O4\ndzn. A",;x;mmmmmmmm$/kl=t*ȷ9dxf~Uu#/eUY]" r6S緪=Qyr{h(Joja<}>'5g6,okmmmmmmmm9s5PDPy(XM"ƙ,*!( 狢D@ilؗ6ӿϷnp|"x$I;Z{XCD }{si"d L(M$MsfĦw},0D4HH 7F59;(+"LM 4 wZ$IVldIaan^-=mmmmmmmkr'5Z[Y8ۖ{o}@f­.Qmmmmmmmm(+Er. A"=ۃhl#V%͇ S"M"e9=VaCۜ,@gۉ8>Nmjw9AZ-ۖ pa /!9)&24 /}{s6mH1D3dILm7Iȁj*Fbv *ʈbQY͸ 1pmmmmmmmmmmp ɪy?Vp %-KWi^p,,pڧϽ"6,a2xxQ"Ը>=kkq؂xY7.9{j;4r-Vp\%^yMoA<[<5Z_YVg`{֮oG\7ʔ ܼO?CH|,[%@ӄZ(&9[<4r-VpZE\7ϽW"DǒH~+M&x (E4$-WLc-߀aB)Ly$n⸃<1k{нl?=5ZOElB\9+8E³pK>rz':U 5@Nr-bAps ?G"gl?\&Pr%rzӄZ-ȷ͈K>s BYǫ4 .-UE>=w Gyg: g"nD/l3Z]oCMSzPO ϛUU~qş­zU N'ܵ*MVYʵT =o pAf: k],/Ŭg: g"Wśzl=Tg՚'6(\~OZpYzުDR&`G-]3sg ڳaYalZ6!,LRK?> rig ~yVEh3. ~DLO<h GŧkL G'|6Ԅš57YCs p mmmmmmmmm@ӄZz8#` ULa˽sHgՇ~Ly$&D P @Uj3YVTCPzmY':W̤X۔"Mg#;ՔLUiqC B Aua,* $3<7e J|E0d6n0U{궬޸_6oY놹؀n}{s,AK$&o4²cm {ZVڢ>b ` ]Qh6=ۃ,79k*,m=~qeVd sPw[{o|޴޸6VpZϽV; ~,>R8a:״g{mŽee6v #ց=}(Y|=&g  ։jx1X9˜wr-h.k 8nr } yUŽ fb;P MMSޫz/l_{Ko~r 3|~8;Qr /a/x> ?֢ pmmmmmmmmmmtⲬUn 2o{S5E8Wxpjy#.mmmmmmmmmmny-)91y@$/5E6mmmmmmmmmmp iT lvo3םa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_method_attributesribute   =e iorst$acdhlmnp"#CEINORS[]_fuy&(),-./:ADGLMPTbgvw*012;>BHUX\k{}!+34w"K;2)Rr.Z/A㭊y0pE\Caa 8\bEM((hdLWa   `@4"`MU\D &4".0hnbiYnH4r3&`X`  A40,`T` V @ -mmmmmmmmmC(%47147$i90)0E^-rXmqNuPj0&2͜YqMՇ**6E)(jP\ӎGVbғmYk2訤{ %D"sjf8')qw t^1J3 !!A2k.r0EK.Hg'Wz՘~6_#՘䄇R4i!뽫Gx$04(Ta*PPhAET=4yaqRƆE MAQz.UTK|gy:8*(.(LG%hفE ô\qDjp4佲I`zܐ 4Hb4@&mc?[mmmmmmmmJMN_;aqNm9+hF/hv;8 G%.t5AM%/͹bS(:p?Ĵ\r1#hf !mmmmmmmm۟ճ†*PИcEK ,aYnHT`|N= x䆂0Hay I3&ASV9,6`El9:y2&B )]^_ ((H"fmgNZX3uy[H#2g - ܼ-.T X#ɔ$21;p@KfLax`fL aC8Z9ic?uy8X^((H"hk?&PPGs&p03&PPD奌!mmmmmmmk?IJf;Pz)MHMRAd)ʺg mmmmmmmYx`f{4\ D"4佳!\pgf(H^Lra%kك?ލ<3Xۖ"h@EᡸX^DZ,L"uqi4Ւ:a//f g4ǬiX z#CG&PBǭdKqx,Lh&D\`ҳܑ#hfmmmmmmmmma ȗR8(XA1I/jkSl6CZG%pxԇJA]y~lŮ[hGAE8,!訨(`Ld81kWRUmJ_mJyTjRJRaբ{G a e6jP\mUu%YZ2V fPvh58dvRڶFr Xm?`9Heܬ㍑֬7-r͹Sl3gF-rQ@nzF2Սmȓ0/Q'# Q1bEXCr@= (&.H@)("b䁬! ZqUL (&.H !;sWsBsn sB-ra4"톺QQv`:Pn T//B-rscnzE[jSyp0Qˏ(Ů[l3C͹Sl5=wBD1 ܡun{Fڲ (wj*єCA NuP[]ڱ=T",!;#hh)#ݱaBjєЏ {E=4jtSAaKP9 aD"evvաSs \e9|s;A?hT{VҕddN[UsB-r(4@'9a@\j:rB';訨2ƒK/Q\E?js 01qD bp08w`;aUE4#9asB-rVa .L58NWոY[:-X۞kSj)ե&ƎNrbeDA2k.r0ZDA2"K(AC-18%"hJ\]NՇXA-mmmmmmmmm,Z崤pQF`H'"hR8"`аSSe1,Lh&D\`ҳܑ#hf eNPH .LoӒܖ1ML*SrD`%YnH,QQr^wVbc2FI qNtj͹f)!aVG19A V(HI(90cm8"-P͹sp&NB.WVbSbeB c0P7%,H3^Ն̳e9@jTorӹ|SrPr#<%te )cS%프!//fĀ L!C9Ђ{ٖ9NށuMcN9)?Ӓ[((-Nǭ)qwE19A VX@F3k;φ;/)H9ܼh.qvL( lBZܭ/AN^?MnE|%yE)o8ѝ'L5@!۟%SqŒfpr@Ӎ|eGB0 K)Kj˜:6F;Vg@0%@Ӎ|+JȝtYl"hp^Qi\%m)qvE=!ʉȰ+,xpQȆcBmmmmmmmmmma e9͹E:Նô\qOB1W8΋j|" +qMa T&R*7?jm4 9]yA󼬓n79͵I))6.~:tsmY-Y-ZYϔBmmmmmmmmmma YȠ= )0a %+D>( @=W%"ZQ84:Ԣ0IdBmmmmmmmmmma qq@jrMuE:r.EmmmmmmmmmX lxoEםa՝a֝a&+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_mirror_group_attributes    = eiorst$EINRS_anp"#ACDGMOPT[]cdfghlmu()./:HLUXYbvy,-012;BKV\kw{}!&*45>Wqx|%'+367<@F89?zQZ^ j h q%(LDȑI5#nTZk/7\|ۘtW`l7hh.- r$]:P8̇R, 8y"t<X`}StdsFF/0$9%s9HFb im&PQDbn as8å,=K@X  [F㎝y8ѾѸ :,sĤQҜ^bn3g',IN|s/8gȪ;@2|bq\sHKon8&"LȦAb  >Q0cA^*0yx@$Qcnǟ+^*~nl3geyѭ' Uq.!a3G17y8Vp5ykF͓Tc]/#O^n28 3d4o:R\ۥ `H5>1V7ee8T,(E2tH2eCbq @xΌ(,4 r$]:P8̇R, 8y"t<X`}Stdp\CW)0 8@@0`P0 dMLUCbNy"5,88"08*Ⱥ|;`ˣ7C5(zxӢ 8>o\ ˗?,[̃[k]}x5gg!'stEwd[6mmmmmmǝv7V ˝>1XXO(. q7y5O:|n1y#3˄.g,,&t^Ay%˝>E oGjm3mmmmkK]ݜ\Yܠy8 tE6mmmmmylƁ0˃ys ,[@Ecqp@ ˗p>ĝ=$"&Py"; |cn0>pp ; s0oI<"9aYX$l,y"8>1V7df ÌX9N氰k=eDEUpo3ad2"H*]$%H@XEE `$33Kbe/p>S,X>1V7df pcɓ7ẽ,X]I]W:)) fQqeuqS,˅F7f 9Oc7&* Y2eVdē EBbE"1"|cn0>{5:XX^1V7ef/bx$@YE2eU `~2b@0t2k6'!xDf0~n.g+F -$REI5坁]2o88_)x_#Lh|cn0>q@Ecq@RE$q4 lPAZ&*b'@YE2eU `~`ec̛Ā@f`ˣ7EXDPI2'osn`2ayP IAAj 6c],HE "IDL@,̙=#x&Xsq F1QyMdž 0 ٌtfH"+( &A22d`NmCL/< ,bf|C0h5H~y#&y 3f0eћ"ĈTP($Dц yIp o  6c],HE "IDLe0k%5 3{X@P**()A z1B8Ȧ8"f0eћ"QP0qE(5*(IDLDTT Qb$MD oeh &PDriAaV*$I@p. q7I2#M *T"LH@-3#4("94 H$Ċ7`ˣ7E("94 H$Ċd/F $AɦXD&$TcٌtfH@$V"1"d/F &"$ILH`ˣ7E,A%Aꠒd/F 1b *TcٌtfHHɓ &A2b *"+&L#`ˣ7ED5R*MAEYT &A2b "P&ĈEQTcٌtfH&EI("+*d/F % Rj ,H A%A`ˣ7ED5R*MAEY2i*d/F QH5$Edɦ Txc], MAI5JLz($DшPy%MR2aj$T"LH &A2bIbDQf0eћ"$ȄLR$1"$Dш"E2H$Ċo0TB (`q Laˆe˃ys f0eћ"E "IDLq\njof0eћ"E "IDL7 32bDV*(QL"e½X|\Ã˗ ˗8YbFc],TP($D˅{qdA%XrgٌtfH"+( &A2a:#5-f0eћ"E "IDLWe˃ys f0eћ"ĈTP($Dц yIp{=ym1.*(QL"e½ . q7FotIE A( &A21.T &A2V2aJ8H*d/F o 3{YDU&$V"1"$D< q˝>QFot&8($D˅F`Y8Eҁpc[6mmmmmmmmo~kE Ysݚuos^*~na7a5؟87?22uq}}q2r3y:\^\k?1$MLNn59mmmmmmmmPp4&"M5* >1V7dTk,[.QFot p &A2\po3a 3{YI27f 9ym1.*(QL"e¸ qdA%XrgmmmmmmmkztU & לSt؄v]BkpmmmmmmmPp1B8Ȧ8" @P**(E&EE0LD U"H+ Eb*(1b *WEX&ADJU"XH*% Rj ,H A%A&EI("+&M1V ϱ'Of0eћ".IDL7^k,[@(`ˣ7EXDPI2 . q7mmmmmmm[w3לSt^ylBzt_5%QS$EmmmmmmmPp0)&UbDVLu(MTPQbDVU"[&EI("+*"P&Ĉ4XJf >ĝ=Fot p &A23ym1.$EbA$"&\+ی29mmmmmmmq ;kqx\/<6!=vY:/DHmmmmmmmpL5H% Rj ,HʤUuL ("D5R*MAEXAU$?QH5$Edɦ T0o$ 3{YI2o0ehtfH"+( &A2^d\$"29mmmmmmmGvbeᯨBjT"-mmmmmmmm$}ab"DXĊ+8 XJ@$CTQUY2d-DG"ؓ2dNA$"&]`Ûiym1.*(QL"e¸ pf@Y xf\70IٌtfH"+( &A24XQFot( &A2\ . q7tc],I%&$$D˷dbN`ˣ7E@$A v{k,[@(`ˣ7EE pn>k8>B29bN`ˣ7EMT*ePI2oŴ 3{XDPI2 5PYI` <x<. q7tc],Rj"ʊ*UJd.OoehtfHQBd.k8`e˃ys >ĝ=FotPy%MR &A2>ĝ=FotPy%IbEPI2o$ 3{XY)XD&$U v{[D(XIDOYrazIDL\01`Úmmmmmmm?HֻLt<a7Eܙq{3d빜q6mmmmmmmTHxUW}4H\+x+ 8lۥ7fg, M`K(L%"yywj<5he:f0E1đ7فdOH HED hfAp<cL@˰E1đ7فaɞ;)$ѭ Ys8"癄f٨G{c|^ml8*/:xy22uq~g]fg,θI +`7*q5^oqE&QT&1Y8FGdY8fMypͽΝy<&- 8lm5^ontA@˸Y FMylMx3ϙ]c.g1Wf.\assF:2b.,pĦӼ;<+tlEơ57O/c2\0`_\۷j<03˄sF3:i]`q Շ3L5RWMc<~Shv~N3M˙ h֍&QɕK_|qoo<ˢ,g3hO/7s8j&L+ 9c7 g9vyv6W6O/7F87ˀMhT_i!˞ h֍aѭ?6OApaѺ !=Mqp]hd1Z6mmmmmmmmmZh&1pH L 2`;ӎ\/Lq$Z"9aXۦ0쬼ӎ\/"M4ϞtC 7^SMC8p, ` < Cq1V7g'+όa ۘ:xpHtEόaktɕD?kzB8όaX2 "(U"i:q{.glWeyx0B.@&xE9% ֶrAxE2,7<X`}I% _-).\UxøG=<ٖb/-+w'2Ws8p]k[vc](DQ.4]הa׌WoDZ<_\Vt^<@8]U]3ayÙf:u ki.dQ%kpP~7F0˦qo3ˢ5e\\Yث# :R4|pX~m:+9񋌷ei3ҁvf'|3 @[`P<.O.3O ,'mtbn3O -b(v\]is.es0t!=s6?_.0OqN^&fy 0s]|]^d7`@0 8G99j:N+`X.!a֍mmmmmmmmmZ7*q٨;6@1g:"2Ѽ s8θ<;qo:wb=;`7;y! hmmmmmmmmmmq\^/\Tѻ2& &2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset PAIRS= typeset -A list typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= typeset -i matches=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #======================================= : Make sure we have something to query #======================================= if [[ -n $mirror_pair ]]; then [[ $mirror_pair != *,* ]] && unset INDEX for mirror_pair in ${mirror_pair//,/ }; do CL=$LINENO KLIB_HACMP_is_known_mirror_pair "$mirror_pair" 2>/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$mirror_pair" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 166 "Available Mirror Pairs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_pairs available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else PAIRS="$PAIRS $mirror_pair" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then CL=$LINENO KLIB_HACMP_list_mirror_pairs list for name in ${list[*]}; do name=${name##+([[:space:]])} name=${name%%+([[:space:]])} PAIRS="$PAIRS $name" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset PAIRS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for mirror_pair in $PAIRS; do properties[NAME$INDEX]=$mirror_pair print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_mdp_director -s svc -d\"|\" $mirror_pair | grep \"^$mirror_pair|\"" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_mdp_director -s svc -d"|" $mirror_pair | grep "^$mirror_pair|" >$TMPDIR/clmgr.KHgmpa.$$ cmd_rc=$? print "$0()[$LINENO]($SECONDS): clxd_list_mdp_director RC: $cmd_rc" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$mirror_pair" 1>&2 rc=$RC_NOT_FOUND break fi cat $TMPDIR/clmgr.KHgmpa.$$ |\ while IFS=\| read name disk1 disk2 type rem; do properties[NAME$INDEX]="$name" properties[MODE$INDEX]=$type properties[FIRST_DISK$INDEX]=$disk1 properties[SECOND_DISK$INDEX]=$disk2 done rm -f $TMPDIR/clmgr.KHgmpa.$$ #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[mirror_pair]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_mirror_pair_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_mirror_pair_attributes =head1 VERSION Version Number: 1.9 Last Extracted: 6/16/15 17:51:07 Last Changed: 6/1/15 14:06:46 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_mirror_pair_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query mirror_pair [,,...] clmgr -v query mirror_pair NOTE: the alias for "mirror_pair" is "mp". =head1 DESCRIPTION Retrieves the configuration data for one or more PowerHA SystemMirror mirror disk pairs. =head1 ARGUMENTS 1. mirror_pair [REQUIRED] [string] The label of one or more mirror pairs (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  kpo4םa՝a֝a&4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_mirror_pool_attributes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2012,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 430442e 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_mirror_pool_attributes.sh, 726, 2147A_aha726, Feb 15 2021 09:46 PM #============================================================================ # # Name: KLIB_HACMP_get_mirror_pool_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect mirror pool information. The cl_lsmpvgs utility # is invoked to extract the necessary data. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_mirror_pool_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, @(#) 430442e 43haes/lib/ksh93/hacmp/KLIB_HACMP_get_mirror_pool_attributes.sh, 726, 2147A_aha726, Feb 15 2021 09:46 PM : INPUTS: $* typeset mirror_pool=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then mirror_pool= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset MIRROR_POOLS= OUTPUT= typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= typeset -i matches=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #======================================= : Make sure we have something to query #======================================= if [[ -n $mirror_pool ]]; then [[ $mirror_pool != *,* ]] && unset INDEX for mirror_pool in ${mirror_pool//,/ }; do typeset FOUND=$(CL=$LINENO KLIB_HACMP_is_known_mirror_pool "$mirror_pool" ${_ENV_ARGS[VOLUME_GROUP]//\"/} 2>/dev/null) if (( $? != RC_SUCCESS )) || [[ -z $FOUND ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$mirror_pool" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 173 "Available Mirror Pools:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_pools available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else FOUND=${FOUND// /_} MIRROR_POOLS="$MIRROR_POOLS ${FOUND//$NL/ }" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then typeset available CL=$LINENO KLIB_HACMP_list_mirror_pools available for (( i=0; i<${#available[*]}; i++ )); do MIRROR_POOLS="$MIRROR_POOLS ${available[$i]/ /_}" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset MIRROR_POOLS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for mirror_pool in $MIRROR_POOLS; do typeset VG="" print -- "$mirror_pool" | IFS=\( read mirror_pool VG mirror_pool=${mirror_pool%_} VG=${VG%\)} properties[NAME$INDEX]=$mirror_pool properties[VOLUME_GROUP$INDEX]=$VG print -- "$0()[$LINENO]($SECONDS): LC_ALL=C $HASBIN/cl_lsmpvgs -m $mirror_pool $VG" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(LC_ALL=C $HASBIN/cl_lsmpvgs -m $mirror_pool $VG) cmd_rc=$? print "$0()[$LINENO]($SECONDS): cl_lsmpvgs RC: $cmd_rc; OUTPUT == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc == RC_SUCCESS )); then typeset AIO_CACHE AIO_HWM DISKS REM typeset -u MODE SUPER_STRICT print "$OUTPUT" |\ while IFS=: read NAME VG STORAGE MODE AIO_CACHE AIO_HWM SUPER_STRICT DISKS AIO_STATE AIO_CACHE_VALID DIVERGENCE AIO_CACHE_EMPTY REST; do [[ $NAME == \#* ]] && continue properties[MODE$INDEX]=$MODE properties[ASYNC_CACHE_LV$INDEX]=$AIO_CACHE properties[ASYNC_CACHE_HW_MARK$INDEX]=$AIO_HWM properties[SUPER_STRICT$INDEX]=$SUPER_STRICT properties[PHYSICAL_VOLUMES$INDEX]=${DISKS//+([[:space:]])/,} properties[STORAGE_LOCATION$INDEX]=$STORAGE properties[ASYNC_MIRROR_STATE$INDEX]=$AIO_STATE properties[ASYNC_CACHE_VALID$INDEX]=$AIO_CACHE_VALID properties[ASYNC_DATA_DIVERGENCE$INDEX]=$DIVERGENCE properties[ASYNC_CACHE_EMPTY$INDEX]=$AIO_CACHE_EMPTY if lslpp -l "glvm.rpv.client" >/dev/null 2>&1; then properties[ASYNC_CACHE_UTILIZATION$INDEX]=0 properties[CACHE_FREE_SPACE$INDEX]=0 nodes=$(clodmget -n -q object=COMMUNICATION_PATH -f name HACMPnode) for node in $nodes;do # Get the rpvstat from the node where VG is varied on. is_vg_variedon=$(LC_ALL=C cl_rsh $node lsvg -L -o | grep -w $VG 2>/dev/null) if [[ -n $is_vg_variedon ]];then print -- "$0()[$LINENO]($SECONDS):cl_rsh $node rpvstat -C | grep -w $VG | awk '{ print \$4 }' " >>$CLMGR_TMPLOG # Always log commands ASYNC_CACHE_UTILIZATION=$(LC_ALL=C cl_rsh $node rpvstat -C 2>>$CLMGR_TMPLOG | grep -w $VG | awk '{ print $4 }') if [[ -n $ASYNC_CACHE_UTILIZATION ]];then properties[ASYNC_CACHE_UTILIZATION$INDEX]=$ASYNC_CACHE_UTILIZATION fi CACHE_FREE_SPACE=$(LC_ALL=C cl_rsh $node rpvstat -C 2>>$CLMGR_TMPLOG | grep -w $VG | awk '{ print $8 }') if [[ -n $CACHE_FREE_SPACE ]];then typeset -i cache_val=$((CACHE_FREE_SPACE/1024)) properties[CACHE_FREE_SPACE$INDEX]=$cache_val break fi fi done fi done rc=$RC_SUCCESS else rc=$RC_ERROR fi #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[mirror_pool]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_mirror_pool_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_mirror_pool_attributes =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:07 Last Changed: 6/1/15 14:09:00 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_mirror_pool_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query mirror_pool [,,...] clmgr -v query mirror_pool NOTE: the alias for "mirror_pool" is "mp". =head1 DESCRIPTION Retrieves the configuration data for one or more mirror pools. =head1 ARGUMENTS 1. mirror_pool [REQUIRED] [string] The label of one or more mirror pools (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== p kaoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_net_with_most_interfacese.txt#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_net_with_most_interfaces.sh 1.8 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)05 1.8 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_net_with_most_interfaces.sh, hacmp.assist, 61haes_r714 5/10/13 11:23:52 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_net_with_most_interfaces =head1 VERSION Version Number: 1.8 Last Extracted: 1/31/14 04:40:15 Last Changed: 5/10/13 11:23:52 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_net_with_most_interfaces.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_net_with_most_interfaces =head1 DESCRIPTION Get the network name that has the most number of interfaces defined this is used in the two node configuration assistant to determine which network to place a service IP alias on. =head1 ARGUMENTS None =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_net_with_most_interfaces { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.8, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_net_with_most_interfaces.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i IFCNT=0 LOCAL_IF_ON_NET ALL_IF_ON_NET rc=$RC_SUCCESS typeset NETWORKS= OUTVAL= nw= print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -f name HACMPnetwork" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clodmget -f name HACMPnetwork | \ while read nw; do nw=${nw//\"/} [[ -n $NETWORKS ]] && NETWORKS="$NETWORKS " NETWORKS="$NETWORKS$nw" done print "clodmget RC: $?; NETWORKS == \"$NETWORKS\"" >>$CLMGR_TMPLOG # Always log command result if [[ -z $NETWORKS ]]; then rc=$RC_MISSING_DEPENDENCY elif [[ -z $LOCAL_NODE ]]; then rc=$RC_MISSING_DEPENDENCY else #=========================================== : Loop through each network in the cluster #=========================================== for nw in $NETWORKS do : Count all the interfaces in the cluster and all on the node ALL_IF_ON_NET=$(/usr/bin/odmget -q "network = $nw" HACMPadapter | /usr/bin/grep "HACMPadapter:" | /usr/bin/wc -l) LOCAL_IF_ON_NET=$(/usr/bin/odmget -q "network = $nw and nodename = $LOCAL_NODE" HACMPadapter | /usr/bin/grep "HACMPadapter:" | /usr/bin/wc -l) : remember the network that has the most interfaces on this node : that is also present on the other node if (( $IFCNT < $LOCAL_IF_ON_NET )) && (( $ALL_IF_ON_NET >= $LOCAL_IF_ON_NET )) then IFCNT=$LOCAL_IF_ON_NET OUTVAL=$nw fi done : Are there any networks that meet the needs of SystemMirror? if [[ -z $OUTVAL ]] then rc=$RC_MISSING_DEPENDENCY else : This is the best network to use print -- "$OUTVAL" fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_net_with_most_interfaces()" @(#)0 loCםa՝a֝a&Y)bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_network_attributesfaces   =eainort $cdlps"#ACDEILNOPRST[]_fhmuw()-.:GMbgkvy&,/012;>BHU\q{|}!%*+467FKWx'359Ctʒz#QL> Le8ʁX!j -2ssU_*Ëar&BE ה׹ON1I FgP98'|b)F6mmmmmmmmmQ:ův$8ȦzW.1Ðlat zE֕8p(`]+pQ̞jtdx&2WYV ʛ]L+섣!ItZ'33QE0dZ.E֕8pq%ćGq%ćdsta`@!4PADMц@Ib# E+rq(_TQmmmmmmmGCzSξ/ӭ6F0hb'YdpNu'@< ӽVAmmmmmmQBy744Ř  GsF z̓# A 0 @p21e~'e yG(`\L`nH*,PH#uybtmmmmmmmm11\RNҦ?(*q~[Ammmmmmmm)1ÂLc~jN|Bc0㻦(_SS$Y/Hy1! &TGBu^)G bjC8)sI/8TT#t *kHi"d(TbF*P 5^I\xdv1 3LHD"EP]}Wi9NbNၚDv44D*AAI/-j?T0hЂ196l4 ӹZD`-Fhb lnl;r?T(@?Z֣u6mmmmmmm vτX~xdxjDbU_{GCy3T_M:D:L0GC :-Wp'ت>U} UWGcD7`J?%LN'$A}pr4(CmmmmmmmڏkHi"d(TbF*P 5U]5W0 .pȑbeD|n9T,_Uo>}QtUj Ut^0Ó0kHi"d(TbF*P 5U]5W248;MT `qv1&08c`zCɉ8dH2>7 M7>)W@Q$BMT `q0Hփ֘ED$@HDQZ tqM$LB% HJ0!C8)9T&3$Y/Hy1! &TGBu^)G#AP cRt *3$Y/j?A1 X`i(DSa"7 M7>)W@QGh5Ãdp,G 9 0Tp)stYr?=aNh 0ѡbr lh]aNFYȁat:c}?#3f@#:d"?E N1T4hhЂ196l4.f*jASU0hЂ196l4.f*jASUA1(h֑0-G,T@fa:ٰw&pVEG\Xs.$8&pVEͅf@#@YG2\HqcI Lଋ Nc@YیL3fOKZZa@YHu k8,PJ:,PI?zW4 ȺDb%GQQQҼ*d"\B&>)1ÂLP'LPu^&fwsԗ0#bZ3Ȥ*d"\"jAAH T,ds "`fЧ*zW4*T2D7R*d"\"Qk" $P((T ŠG$*T2D…H03 kÐam xr0esF &D"\B&@ԉ7Fbw J88H8)1ÂLP'LPu^vtFavqV ʸsE hSÕ EmmmmmmQ 59A ^$\7?q΋CU^"׹qUWȵGo)1Â1Vy_BC9M/t1B ÝڱX'*ċ1F-Hy1! &TEEԃULaX!!WN|FaÎXpE5G,04D"PČTjC 'ۄ$H0<bB%,L*SMϱp+εؼ a`hozW4\"Ȝ H$@8xG a0esEȘ*.<8X1"D уzW4`H' Hu"E# lhBEǑ8@' "$H0xG AL"\r& "p#N.D Ht`ZZa D" nH40esEȘ*.<8X1"D у@` ZZa拑0T$\y 2pr bD,Lf# -"`H'0db@ĉ7FX0esF "pd7R$X?r?,@փ֘EL DF ,\"…G$1p97փ֘EL DF ,\"8GsF.pD$Kn4 ND ͛q=.G"JRoK_UFu,Sdg^`,$[F ҼnH "Gh5$ 42E*l1#G(@hӸrf.pȑbeD|n9T,_Uo>}Qt2:ӸrfH"J6#ʔ `4CMUWiܸ 3LHD"EP]}Wi9Nb?AH#a`?O5Y,S&HvGC+:]v9"V?ZW U&H fOK$XX I(Dh&h."UH*H3`8]dI(D4"PL(AREP(@p.l.֢kc&H[$%na.Ccudc Rvy) qG0b3QHk3 :?:T_c\0h,,lQHJ՘ZRQP]H*՘f(*AV(&lEFr,rN|p[HR{p'Fh֔E֞bf#3f@#sԚ?AL"\"H""(@7Rs?AL"\"H"PpHB@AN-,8 "u&?AL"\BHzD" Ԝ%lh#$J""(@7R]փ֘EE .D ,E"D$Pnulh"8 "u#QH"щ*P~q(@45F Dv8/6o0̑B@@aJ?Ztr 0HCǑ0ammmmmmmڏH \u`a:Jm:PcVxmmmmmmmӸ`fˏ8`$1(&3,04f1"d(Tb?𘠃:!|nEo;I$X(_S`4F"#mmmmmmmmmm0"#QӃV^ 毵}Z` rlUYPZa@׻Gb=(>) ,8G:ůrOGkI皤|NTRTDo.Ϋ@毵_^>~]QeξN)bs6Pʛ]rs t,_@\(,TU?8e \)PRW^_:ůp_,Tr#}_^퐑F7֘*0H=@ldDȔ$DYc |pޤ $LADA4O`02% 5zx;OEyξO5}:dZm_E_Y^T>)/j*~'\]`|8j֫ tF֘2-{'k] K$`fW/*"7ξO5}dY~dW"bF/teDFN'>k0Rv}k^E٦'6P# {]Sz<<,gsy19MFh~k0RWs'uNFRV).L_{v'kULN^'yEUȠ;HIBL1)ův}Do΁ySk@F7 *\D1+V;<;c}֘2-''\u>ȵ'`*X#Ⲵv\]ɢ7B؞zsv'k {jкTDo&/,>F䜲!Dj#r"!{=PAˈ3 sї)*q~';\,YP5mmmmmmmmmNrqkݩ"GCTD`R, rU@1ib̠"(G,pRbq/F0hOKfIB0:jA01B /<$:b @3(_QCͣHaQ_t *9BHq=;k1/͐cf)rOKd\c$E6E~'M:DdZj2,ξ;|',3/OKc2ap`~W4\"@ix6Ӫ9WyϾzDvU|17> ũ#*<~'8Qz(h=i[+拑"HbIhvzmdZ-;! [vS=ȳ`GG(`Sx2Wc91AJ_UfOKeș (8,Cs3 ԘqON ^-,_`s.@rP* يK WA1}馂5֔u ] >WxwMSsu8y!D ںp8!1*mr#b\ N;]`8B SRV).L_Qǐ= ٮӭ5LuVT"dX54D/ȹMqH1Qmmmmmmmmmm72zsUWk:o>~]MW+1E~/_M5šcd_Bz]WDnuQ1fM}Ś|?2yj1\ ŖCdxZ`/˔DnONu'|8Tl_ UWskN):';EJ荶mmmmmmmmmQzlW&AVWDn).tX&q"#xL9 T DnE"6mmmmmmmmmmDn,X&^u4PHO zr`#mmmmmmmmmm@1!  kro% םa՝a֝a&% bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_network_typebut#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_network_type.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)06 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_network_type.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:39 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_network_type =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:15 Last Changed: 6/10/12 15:22:39 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_network_type.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_network_type =head1 DESCRIPTION Get the network type, either aliased or non-aliased network. Reports whether the network can have aliased service IP labels or whether the network has IP via replacement service labels on the network. =head1 ARGUMENTS 1: [scalar] network name =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_network_type { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_network_type.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset network=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset value= #================= : Validate input #================= if [[ -z $network ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"name = $network\" -f alias HACMPnetwork" >>$CLMGR_TMPLOG # Always log commands value=$($HAUTILS/clodmget -q "name = $network" -f alias HACMPnetwork) print "clodmget RC: $?; value == \"$value\"" >>$CLMGR_TMPLOG # Always log command result value=$(echo ${value//\"/}) if [[ $value != +([[:digit:]]) ]]; then rc=$RC_ERROR elif (( $value == 1 )); then print "alias" rc=$RC_SUCCESS else print "ipat" rc=$RC_SUCCESS fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_network_type()" C loaםa՝a֝a&Zbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_node_attributes  =enot $CELNO_acdilprs"#ADGIMRST[]fhmu()-./:>HPUbgvwy&*,02;BFV\1?KWkq{|}!%+349jxz'567]][0xvT.e"8`׋0+Geݗ 11}v 8p5Rwy8ihhb@ ݗ0~˧ Re5-b( cm/.._ьnN;lk1=Ĕ@rC2@#|zJ 9%SPz'6mmmmmmmm2av2f7̱|YyřammmmmmmmNA*zDSE56]An\&|w&0#A@&e< "P*=ShImmmmmwvDƳw'u] Ufah2hmmmmmN1-=brL;mmmmmmmӿð|׃eאVۃřiqv_VXޱe؆eL˼Y|x6/řiqN2e^) LLM@I J.d0mmmmmmNdX{HD. ˗3/;"˳`.W"2i 0+ekĆp<1-0+ǷB ApN\7yXUfZXM;"˳aUia6E4SSR"T@rUibĻ*-,&灠aqtP D84 ^'HNv@4j«2mI`Ip<> ؁|$˱ - ՅVeڒDz\rL,[ ~{Y&]\odv4adv EeчEe؞*-,&Ԗ=xÿ2w|-2c,[ =,.3 ˃xXȲL|"2h"2AC|$˱|$˱>`.Wÿ2w|XȲL|&IbwN;'ekĆp<&T􈦊j`JDAʈ@ =W1#0`xy$H5JIBGc 0 rh*PI(S 3/;b$H5DIA1đ.ѡGe˃xítS w=&DJ砑"$PL0d&9؄mY02@(E0a:٧E0sHjDz  MREpVeڝ81.^x;"˳aUia6E4SSR"T@rUibĻ*-,&ԝba!;4 cѫ K %%nPP7bc,[< XUfZXM,{%Xs.. f^wn2fOVYjKpNm_,30 h*U$dJ0LwNbmmmmmmmmmӿò&5YpN]嗊lA ɍg.f]ťnWd2(&eYfskick K ;ĺwmmmmmmmmm-2c Hj&P8g@r2`Ip?xPP7y<X􈦊j <((A> K58Z0Hj$"MA蔧ĽcSwjD< MA  qx,$(M.yDPQ1|jrhg0Hj$";ZvNdXz  MQjLq${qhQr&eJSQ*0LYbN^MI(Pd"S2wN q|ܚ &1Pz%;mmmmmmmmmii^,SPԊN컺2fdUfrv6\v'k;( cm/..a̋oŌ3;xfs0v'l-]嗊kx0 .zi +& ;mmmmmmmmmin]I)*"DyJ0an]I)*N;bn p8'nKQp` , E‚!$,, p\+.\LγL컋K6B`ad2,̸3.I.I^e}e☳x,L2˺yE YɅ^)Lqlxfs0v/XL\0 Lq$ih 8 pŃme8pHw B$<;'N *H=32qȳ.PTDh 8 ,k/!˂@2qmmmmmmmmm1\38vV1 N0ww`\v<\r/fv4YMb];;dLm:F݌Yf%V\ ixck|NX3"c]iqh8NEeqc2䂸Z9Y3;ĺww992ft݊ѝu%}ُc ;;L3"c烙9:/LlV `s 2+38q9nُbI)&wmmmmmmmmm;"˳ÕMAуeIsMA誂IÕ($Z ;mmmmmmmmNLxô&g ;|jq1}uik 2õ)1ft'v+FsnMWh۱mmmmmmmmӿYe_%Wji!I((@Q5U~{ąw98r=礢U5ONbKxXzJ 9%SPz!@݈ی8a!EHhp"(砑2jGIG$C 6끮֝]n\g5 xD`<<$@Ir ˑf],ʔ*8'H/O =@pSPz8ĐTrIT0n/ i6e,x*1*cR砑"*HE%`v(䷌)< o0(e ,zDSE5 QLy@Wh۱2hg0Hj$"dX5 ܹeBzjD~\7yȳ.@pJUPz$Gȳ.@pJUPz$G r ˑf],ʔ*8'H/O[r ˑf],ʔ*8'H.6 rV0Aw&2Ű"̺YÕ(TqTOMA\˗3/;E%PJTHbhjGe+1/Xԅv wHNU*>wn2=")O( &0zRcô($^($PVʏP MTLnz*=@)5PPI2"̺YÕ(TqTOMA^ítS w6eL M@)1Gdmmmmmm380~AKE?171#Gmmݘm%z\E?v+Dۡmmmmmm;"˳ L>ז)|@rJrLm_aఐǤE4SPIADǔ u\ h۱%eYp1<<$@IhYawv)F{&HO i֛o Ip3]n\ Ce#!G/0XHQc")\$򈠢cm:m@ nx@ xD`<<$@IhYawv)F{鶢q<X􈦊j <((Ad ˃0Hj$" K54{ I>/1 gLdԄFaob4nqai53DT! wAYqX&gbL,mC0˜˱.wQmNYx݊5,k=x<"ܖ@5O =|`i\ e`Ф!quYv"63DT! w$L{Mh/ i֛o i}vp2] \Q\1ĊM`@3DT! wuۧaPp*Pep qp܌˗MAP&B ,Ӳ0Leg*j*8^d\7*AWM@N}/v;,[=QUTQ"U mF`Fs! e˝2N˙iVr2,L6pr LtlPxwݗjXaCnKRvc\7 Lqfbfw.,ۃ ;QUTQёp܌;'c,[=QUTQŃme8ppo2H`Q5JLafd܃rYK*8UTMPr=5DyzyBUD(Sr ˑf],&(UUTQʞ"<<MAP&B; ܹe$E0z &T$E0z &Tmmmmmmi9Ȭ38$ f 18$ammmmmmm.qH$8E)n]M.rӴe ,zDSE5 QLy@vtɥYōao|.<<$@IhYawv)F{d,'-;O ]2ivqcX[' Q/Om_aఐǤE4SPIADǔ iL]Xḽ=a砑"*HE%xsB Mx4wr]6NdT"P f^w94K [/2iv@Leao2ivL$CȤR< $CȤP8 IHd,'- ;'ȳ.$CPz$GA!R(wN;mmmmmmm̊3Ue[9 N0wmmmmmmm;"˳5E".wUf/0XHQc")\$򈠢ckWUeZe N  bEC^mxy$H5JIB7в@S^,;Yi+WUeZe N  bEC^mqzxwn2=")O( &b-S&t 6@,e݃x'eȃPYCȥQꈹ&vF-;'J T8#a2wnAr,˥IA!ꃇDy=#IA!ꃇDygmmmmmmmmLxw+jܗbYyۗ9 Immmmmmmmmی8a!EHhp"(4)1"1{=`.W@%T% &UR ("-YUf 9B/3=&RB)(CX]ݨ kѥç"̺YdJ S],;M.5+ @ÿmmmmmmmi 1;/MA@֎z  MTIIB NDUdPg"D4 {ĝ'Ɍl,xGȤ\7yYjr `#7%f51U7 ݈ېn\2c֌\/OYrw| xGȤgTpPSPDѡG00ܸ/ N3ć(|P``as4(+}bN;MBq3:29|.LJ LR*&q.3"3dPۋE?ah<A`-.%Îef|q2DLCpbrq"$_,\e*fvjN#ip@v1.+ѥk8e&Vaq`0`fېn\2X $D#匬0\u.dVuqa|YeW3V3'e`.W?ɉ,q3MKL4JLXvrqZ\`n\Z,ͷ+8fVNe^]tplR_.,.93+;u͸v nWd2n/;w<]+6Ns6@v N䁆rX{f,i]e`$;vbc+X{f,׃J~ N,knHm%n^Ľq}K@c.[0̱+8̵,qihgY Ec~7Ep1bEGppmmmmmmmmmmS3M@YhԾ8P\ ֌dqw9y8^)0,f_.70S,3cenM,Y42˸P\ 4mثrfqYp_p8-H+L,392[/cf gYdQrX 8mmmmmmmmmmp(.XAgXMt8/b_&Y1!hV eIt^qmmmmmmmmmmӆ⬚ⰛtdEb&h 6؊g mmmmmmmmmNh lꔵn1Hםa՝a֝a&#+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_node_stateutes   =e ainorst"$EN_cdfhl#ACDILORSTgmpu(),-./1:GMPU[]bvy&'*02;>BFHW\kw|3469KVx!%57 ZRglqqˬn52<7.6?͞nxv27`8k^;ei)w5iWZnSys)cD`Xaڦޜ6Cs4nr˭{g{n/8?,\Abṷr5jJmtQӔw? ,lm)6fl\ѕ?.z|&ǁ79mxq"f&sY̸o}ږ{0vVn/F[cz;Nv~Rk\B~FQsglÀ]W7{n/ǜ9yP.,UZstyyX&v7Aͯn#k6FN73q{pRn f<ĵa5̘{0uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU1SoNn, rAR1sIRҔ;c?ɒEJP/&HTB Vo8PXaǐ&s?ıЈx f܄pȀNK@8Lɡ, rAR1sIRҔ;LɠNp$Efܒ H $S2hY%DTXa,K1W+)tx   X\bŐHr%Џڭ66sx3l?;l;(DA"Ȕ/@vVn/Ɯ6ޝq೷>S^V\|,@'3W1 HA12HX ͨ08㲏\oZƚ:%lokM].^UUUUUUUUUUUUUUUUT\qN*A" Xb-6\{f5r5swZiUUUUUUUUUUUUUUULǮ'4u7yǂ&I(0ydD`,'D4MkL&#W581 A&(&U"₤ &A! 5Z +MyN&LEk; ܮLKsjٸj]O7'<MtִiJ5q^S@!㰴MkL&#Wfj7SoNnڻ7r j.| L("P`,(^yeK3/ LCɓ, iҕj㦼&"``i H2~;Qrׁ82ש&@R ,dL.HaMkL&#W581 \Gv){?A;MtִiJ5qs7nW̆;3[WViw@mđ(*QG ab,[gg]50R\xw+klfCr-V0 q6妼&"`@~M7m5swL89ښF͸b振xZkJW.[<`4-㹬nz )wG "P"r/ sɔ xpvq6m; YHZ@67M\ H33tx {L؀ Y4i n \ܧq k_)v,%mu8"PD "$&,U'䧙h3x%8gjCqs Kmu:pz0n6~Rk\B%mu1,]"H.p{?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?ܮ./4UZ% @ BbP",]"H. 9ogpPɋKIP+ (*)x, <3\_<..%#MNĆ1ƚH$BW7tr% @ BbP"s?s)wG5sviwB,gqq|YH D@("2E 9ogƚHK=RX'sZM8YA@1 gt"BlUUR3ayL;ַ)H$XX c?ܮ./)w* ,"<$ TBTJHDAŊD*,GD3sZ>vbP D"+/=RW,yz\(lhJwN[vb*UK)WEB(uYM$JCgַR"^ 5q_j.|jl,0 g+gbPDFKg IP;8|:AW  l,081까rX^*UK(P,]!Bp`@P+ gַK'ƚnp~N.k5,ց˂cfW=HEHQ3@t(EG=RAp[?6d@JQ9!2lY@RY^Vە^S-ρf —ѫ 妼&"nf7gP—7qƭ—.7e{ 8>mN|ֽR\\_>SlUI\?浽Hљå@]" L .a2؈O@RDohnqu_5Msr2״ǔ3rՄwKb'Ǿ Y؈4 g6<8/=Fͧ1gtp Z%(iwB,tyR TBUUgX^iwOU ab,[ ~SlD DE+A"Ȕ/9ogÃ6on {jy Ů]1Sj\P3r|UBĤiؐf00 浽gtp Z%(\ Fn/Ȟg<vq"%gnfzɒ$@PU#4-)MØ`/4-)Mbe;#rN.57AYu--5m~# ϕl`miu9;/3r˭{;|WΖsj65ofpzX7JZŦK\`EЋklۧ״?NM/sssdh%73F!/׾ _)w\nfSȔ.z)sZt۞hK5 9KP7sMm6|r#j0wl^93q|3q|xp j=*m~b॥)vWlL1gtp Z%(X .D|03Qs|_UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUT6%lqqˬn5ql96"F:ޜYںֶ2b8SjZ-~i.@ .Մl7kɷ/0?R[Է74&[7ARS'k`ifsZٛWMs&"5,Q(XnVMl7@`$(*Pqo^k:A[nk6|ֶa-泥(,H3xNOs 6Žּ_ia-([tj0w27k#d=;$F!/F`졹79 %A[=ϝKS1@`ꪪ*m~x g0"70F RƄmuX4"RtG `Y2@ b॥)vRp1Eˌ23qS2mũ q $A!&O ^b'@$f*٬P}a[^+ ծ$QL@mAw ,̚ɒ$@PU#4-)M,̚lL7DVm(PXn"rK53&(,EJ%K,idp7;Q)x3ृBLgK gKhhxxx0Rr( TrEc0kjr7KԵZmy9Úׯھ)aLco9Myɮ֘M)\F:kq2b(;tr9Rq2tהdP,Fd7)ٝڜ5|#5ql5aWMyN&LE܍nS;5ql5|r?DG$ d^S@#c2mNnk_)w\nquZޛW]19yJ)MyN&LEֽ3qk7(Sl[cbLgXD$]b$I"&t&?Dqh3,] 0rH,]"EH,] pI UbH<4,]"J@?"QPD "$&,U,ő4uQNWS;.73q}ֽ6srȔ.Z=qSl홨;lKRں-WSlDtDHLXN-K;P?zP3zpzY6fB3;Z-k/js6.'NU 9-kmSL[;\o6jYŋIE C `lViuMXEhNL<ֽRW\o@JHDAŊD2#*&,(%1~)xT ,HF1yN.yZ3kW׾ _8c7wZf 6rDy1^Scqc =ysg[yN.y6ޝgtK5 9KP7׾ _)w\nfSs5qxb振a[5HUVXkq{}!*+4?BFKY\x'37&gA4̭|ܜ, HT3JƩˤI_ɀB"g R1aq79|Y0(0.&T"x3JƩ^t6ث79|Y0(0.((H "&x@"ΗFRY'/&!˞HT3JƩpMN_LEIHHriaD(M-K#&Na1ÙiB_*"Pu9CX bg > W.l_-mmmmmmmW&c[N3Q%|1|NPaJ ڊS̚mmmmmmm_1d^n.L`2e XTܽh/^fZb+V MN_L0{&orr`H*0+03z2$ɔ,[ "(&yCd 79|Y0RpwM@sEǑǑvMϊ'02li<7d8\TC[(gt48.dIgx[?C0ĤAD?9yŎn38iE PݐQQ02iznY Į&8cVGvM)5-n h3[t9;a4Nr3N2GvED?upsGq22kM7h̭.@9(rTC7Ծ.Vrxca3[t90q20'Zٶ%7FS-@5NƘs.,sqIm2qqňfe$|1LJŊ-PѸED?nspv6 !bE 0!iGq&YNI&W&eD?4ÞiqcL`4ńcs%8oAD?D3[t9;a4X:ED?L&"#Vh=DCjf=͐Q n0sd=DC{`!1Zi%Q mmmmmmmmmmQmB,std p P7 HSM U3+DHT`Qp"b&%.7Leʋ,h$hqTܼ^2{,Q +A#CÎaSr\qjU3+D,L\LX`LP쓓&gEq^aqŊ1E#&GdLL΂F~a޸RZ ̐DTcBȹ@Dc0%[gЧ+csM(X4?MN_L1rLwɁnA1qa:șcq,@Ίcn7&e_SrJ;P4nwMq3: I)xzLb"X,Ck{cјALi+|82̷@5zs+6*'(0%zG='sm$v8mjwT(jf㎮B h CNP:lj{ougU6:2jt]0V'(0%g0%(viq@ζ\VT A|Q1FNR[mmmmmmmmmm!ÒIìh'AƍKc4aܴÞ94sVVa2(aNr#(M-n~q,6 eKM9[ljKTCq&g0ĤL(.~:ĒvD:Ē`\D=D-mmmmmmmmmK{6AD65lCr2!(5mmmmmmmmmTC8BV7:p2b13@@bmmmmmmmmmTp惍 k* n.םa՝a֝a&.bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_persistent_ip_attributese.txt#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_persistent_ip_attributes.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)47 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_persistent_ip_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/1/15 14:14:30 #============================================================================ # # Name: KLIB_HACMP_get_persistent_ip_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect persistent IP information. It invokes various # network related utilities, at both the SystemMirror and # AIX levels, and mines their output for all relevant info. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_persistent_ip_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_persistent_ip_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset persistent_ip=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then persistent_ip= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset key= PERSISTENT_IPS= DATA= typeset -i matches=0 rc=$RC_SUCCESS INDEX=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================= : Make sure we have something to query #======================================= elif [[ -n $persistent_ip ]]; then [[ $persistent_ip != *,* ]] && unset INDEX for persistent_ip in ${persistent_ip//,/ }; do CL=$LINENO KLIB_HACMP_is_known_persistent_ip "$persistent_ip" 2>/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$persistent_ip" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 152 "Available Persistent Node IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_persistent_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else PERSISTENT_IPS="$PERSISTENT_IPS $persistent_ip" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then print -- "$0()[$LINENO]($SECONDS): clodmget -q \"function=persistent\" -f ip_label HACMPadapter" >>$CLMGR_TMPLOG # Always log commands DATA=$(clodmget -q "function=persistent" -f ip_label HACMPadapter) print "$0()[$LINENO]($SECONDS): clodmget RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$DATA" |\ while read name; do [[ -n $PERSISTENT_IPS ]] && PERSISTENT_IPS="$PERSISTENT_IPS " PERSISTENT_IPS="$PERSISTENT_IPS${name//\"/}" done print "$0()[$LINENO]($SECONDS): PERSISTENT_IPS == \"$PERSISTENT_IPS\"" >>$CLMGR_TMPLOG # Always log command result else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset PERSISTENT_IPS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for persistent_ip in $PERSISTENT_IPS; do integer NEED_DATA=1 if [[ -n $IF_LOG && -f $IF_LOG && -s $IF_LOG ]]; then typeset ATTR_DATA=$(grep -p 'TYPE="persistent"' $IF_LOG | grep -p "NAME=\"$persistent_ip\"") if [[ -n $ATTR_DATA ]]; then typeset PAIR="" VAL="" print -- "$ATTR_DATA" |\ while read PAIR; do VAL=${PAIR#*=} VAL=${VAL#\"} VAL=${VAL%\"} properties[${PAIR%%=*}$INDEX]="$VAL" done unset PAIR VAL NEED_DATA=0 fi unset ATTR_DATA fi if (( NEED_DATA )); then typeset -A attributes CL=$LINENO KLIB_HACMP_get_interface_attributes $persistent_ip attributes for key in ${!attributes[*]}; do uc_key=$key properties[$uc_key$INDEX]=${attributes[$key]} done unset attributes fi unset NEED_DATA #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[persistent_ip]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done #====================================================================== : Only display NETMASK for IPv4 addresses. Otherwise, display PREFIX. #====================================================================== if [[ ${properties[IPADDR$INDEX]} == *:* ]]; then unset properties[NETMASK$INDEX] else unset properties[PREFIX$INDEX] fi (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_persistent_ip_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_persistent_ip_attributes =head1 VERSION Version Number: 1.6 Last Extracted: 6/16/15 17:51:08 Last Changed: 6/1/15 14:14:30 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_persistent_ip_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query persistent_ip [,,,...] clmgr -v query persistent_ip NOTE: the alias for "persistent_ip" is "pe". =head1 DESCRIPTION Retrieves the configuration data for one or more persistent IPs. =head1 ARGUMENTS 1. persistent_ip [REQUIRED] [string] The label of one or more persistent IPs (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  l>fnםa՝a֝a&cabm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_physical_volume_attributes.txt   =e $adilnorst"#CELN[]_cfhmpuv():ADIMOPRSTbgky&*,-./0;>GH\w{}%+12BFKUVXqx!'4?YZz|379<@W56j8Q `B  I s)M*8Ƒe2訠etYjSk ? 20l=FWEXyx4<, `H<@X@n2W:ԁ<~H\T" $&, ,.>.e6)EZ'X,]V-JmuXd<~x(ˀpp#(r22sFa!(LQP\r@2O$@y"NBi4c,U[&[QeBJY2OYew@,u4"+DiY2͵rJx B ,TX$.ƟƮX(,WX*hSa3%iwwwwwwwwwwwwwwwwwwwwwwwws:"bVIB] fj@EE#JV5{BY&w `%TlP-Tk1J HDbeC"@LhtUDGB! $& 6Ee4iR`VI".auY&EBą O6j<04I&&T1b$Ɉ K5TM6*@:UY&(A*MIQ P HH$*X\HPKP*XѤUJX8'bPuVI"1x(@ ]J$&@@H" :Tՠ4ieJIcrb46u4@XP,YëValҮG6M&$Eb@9Q46M@IʸM!6MDKDDIʸ?ͮm`" 1 yW@,li,U*,3.HvqFO0EXXbQAetuRECX*Y@`( 6j# $".(@E*aC¦SQ,Yë*6u4Tj\ՄSk,bP :WzΦP-TkmX(,"H"L@Ua06ڻ)ɐEEH@DJ `dD<ᡧue5N4 t MTf&[I6 ,#j&-UXj[66?,u`l&*EBą dlXk0bu˖.@`e˖. 2eXWe6PXbQ"("q!?&bAr勢n!LSj ,@U*,3.HD $*ј0=tD`HEq!APp6ujƮ6tdDCO6j<04I&&T1b$Ɉ T5q8% @B($$,.$(HL%Dm ˬh*]Q6 "D  kb `%Th\,T‚΀X "D  L(.#fY $]X@<\ @@ .:@HT!0>U*,3.HvqFO?ڣ ?:(ifZvm:ԩ"! ]cI.]0VIՠ]BHueK阔)bDEY&0P ʕ?2O$bauPUdUၥ$"L12  &L@X4:B8Pr B Pe:TP HH$*X\HPKP*XѤUI D Ud@h(.U @!Q`r GG  ,(&@]AliP$Ht P HH$*X\HPJUၥ$"L12  &L@X4:B8Pr B Pe:QR8D"BA!RBXzTFب̺ƍ"L<6j# $".(@,4P\\tlD pE*JiM)u.quګ65a04阔),FΦށ*T!dU?ͮm` "1 yWASO?ͮm`2dQR$& D*Q阔)@ʗ8UqҥBLSͮm`2dQR$& D*q?ͮm`a0d &L**Da!1("sOJ tP-TkmX(DL<" &.XHL@$]40Dh ,O?ͮ  (!dI @X2b HTX' AUhPtq &9@@W6v !ATM4t"@! aq!BBa,|=@#lTXf]cFU&@W6u @xybEq*Maps P8͝PUM! K  MVc@2$ʆ ,D1`ꀁƮ6lTuٳxPrƮ6lPpD"BA!RBXzTFب̺ƍ"U?1(R q; T6TBɖtDœ-MvWMQRaj@+fYvLO6j<04I&&T1b$Ɉ P HTX' AUhPtq &9@@W6v !ATM4t"@! aq!BBa,|=@#lTXf]cFU&5qg] 4tq &9@@W6v !ATM6B($$,.$(HL$Uၥ$"L12  &L@X4: q; @ Ʈ6l q::@HT!0>U*,3.HvqFO(R q; T6T ٳ?&ymtf9x`iD "LLbH  @<<B8Pr BA Aq &8e4P̭ ƒB! $& 6Ee4iR``M$ @<<B8Y&(R `.`a5A,P餥J-.ehQ:B($$,.$(HL$]5Y@QB$ȓ*dC,P餭SatUJ-.qFhD"BA!RBXzTFب̺ƍ"U?1(R2uJlP-T艋&[03]N)ԁvWe[4mtf9x`iD "LLbH  @N$РPqB`#aps `M%*T!is+BpЈEBą QauET?e4B8Y&(R `.`a5A,P餥J-.ehQ:B($$,.$(HL$Uၥ$"L12  &L@X4:2uJE6`ETh"DaFB($$,.$(HL%Dm ˬh*]Q]CG**V X.I8<0f% A*Xj &@ "L]b@yR &ZmeZœ($ XDm+]eK]v̺&Q?3wٳЅ-T6ڻ)ɐEEH@D< 86ڻ)Iɐ" X2hb億"L@UyeSaf,leuΦ]H"K+Mæk U\eTm)3.0ԩDu.quګ3(pc+pjAx:i(hhBɖ]cm]BdI"L@U]cm]B$a,@L4TT1rBbP& D*@t=QLͪ0tUUfc aMZ2*\VgVPWXǟimuvSk &.1 yWLqmuvSk D@2dQR$ @D<&8 <DLY2 \j&]Z*+ MSTfl 0 VL63F`FX*8phQHneeZ]0te*RZkR(Tnie M:MbW0Tgu3FXM5VA3($$,,.@ @a!(LJ `dD<ᡧYVSTO @Jie`jb1Fl2YuqmN]h(,u`l&*EBą F͵'\bt9`e˖. 2emuvSk  ("1 yW&bAr勢n!LSͮm`aARDP& D*㉬8j4kmX(,@XDPT@(Iʸ5QV 80|ElUiv+ZY ̵v,-E¦ZO1!YX5jI++QkF]bL뵆V]L.6DVd1 VfL.ɖM; #U55Fh(+L&VL(|L@Ja5 ?ǟ A*Ji`M%Q4ATM46j#@2$ʆ ,D1` A*M  9,05mf .`a5A0NPITM6 A̍h5mTxEB($$,.$(HL%Dm ˬh* Dt HTX'$1!W5Mq &9Fi1J *\s#fe@HDbv̖6ڻ) q&XWe6L02R CC`L'@2$8K&MZj?ǻ1FqMSgu^EMej@:M̵Cf)`Xe5`f!/w,$",,"L$XD/`.RI"@\1@4^aC)@! `#w `%TlS-TIf@HTz K @<@(K.jYsHX4N(MeXVeDeq $42`p6B-]TYLAtY2آV M &/4hN0֫MVEE.VhQQqB^ 2tt1e\0H.ŠW.e5Ff^8P`u5lm$6#mJAAEBXPƮ76dmˢc(p`#` XDy(&H ":9BDDĈHL{-.qV2Xe6&^M5VZ]j묻&ZMU(8\X`k6LY8$%ˬI24`erxi00 R e,i.:9x`h "LLqY89xRb8 $" ,2K26ePՔ8ie8X ywwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww*N.-]jf*j묻Wm& lM-\* VkmteU*m6+ԁVjVe¤ERc4)Xœ-ID.:`MeAtF:\2 HvquOul*kMETbae424wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwETQ6,m]5vGyx4M4;&XkL)t\lSbVjV 4]j@UtMj.k+d,QK&Zx˨hex(.8vSYV)6M5ViYtSIjI5#ڬ.+]MQl\lST˚EVQ-HPLBae".Ka*ԩFC ^U'MQ(&!ee`XgShU5Flk L,)0qR즲0YsHR4)xں,^X"$ĈOY %, "LLL\u-h0̍tT,uekli繖",@TDP\DL狙Me5Dj&[Q6bLmJ5bE(a =R-4m,.]Q.f6ɕ82f]BJՆE5hDٵ6hMSTf&[6dmˢ4++d,a̬j&,Q]6Hz*YUlّ.(pXehuYZ%Y(-m0R=Uk+0TR5jїP z+qLu0W&MV=]]V <2R! 4H1qcρ؀-(&(."&LfXWe6(*D"*D@X3] kmX"eWk'V6 <jX&H %OcVIYZj`M0MQ+QQ@i06. $VQT2#fX$ba\equDaF*jT`i+l2ԃOEE?MXLZu1dFsYPn44ShDiM,E+DaF,0Qj"2s-E "*D\ &yxuU]ubjZ]etYMeh6Wb(laV(|j]-]uE˜]v| `Ka6],qrX6).Q*3lHXXk8J3 l0'0u6YivZ5MfEjYu]jXaTFπ:v]RiU.7IfUfmSa`Ka6a\)Ԭ4%Tn,y\'UJtAbၣ<珋l(U5FAr4Y(q,Fb֪ae˶]dTf(+*e2MFbԓeN.eS4 M‹4qKQ6mE&[:U#1dfQ2RMSQJ30SdET Ueڐ4珒X*@WMq骓Ud#  ,C0 &C*xwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwsΦh:# 2 ai2e5UIFxIՠ lncםa՝a֝a&39bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_repository_attributesut  =e iorst$ESanp"#ACDILNOPRT[]_cdfhlmuy()-./0:;MUbgv{}&*,12BFGHKV\kqw!%+4>WY'35679vj UE A'#Wt=u XXe|w`ڱ= k ־NE=q>g,r-rV;*c9 9;^'UX;}qT @ vA8Ё2@`\84 $2mXE`ˢI'vEȸX`%E[V^?C0'Վδ:z ^UO­uV]wwXX4K݋''Cz_O4f NEYǸi"asȖ9mX?8!{<s;~xEU(qgU)zUf- @YmmmmmmmmmȖ9l L0 ƞlՌ^TQ.S_jUr%tP' (^܊+s?[mmmmmmY>C ιE4j@iɝ!uP"AB\OV1}H`]T( gcU^7BNaa]yya, "`e%cRU)#Yy?ιigOfLiAѡ.'fK02# A(sjL i$țP)mmmmmmmmg@ \jw8#/;ZdgZ)­"9㭶mmmmmmmY@H"+"edVi,/H=ː6 % lL(6E2ɔ"Bk?5iɝ(632#9"&f q?+3:2E(W$ 6@LMgV7qAvED?{ 8r (@j) q?+3Cl6D Q3D P $e˕.#I@nu gGUuWw -X$ƥF, g.l46f46&9L64x@ lf!%K @X @ gu"d&P&Hlr-Q?[mmmmm=3]l\3F^a1 LU *\jx]uj5X^u^Q:2E(W$ 6@L MWt= PPtP&:mmmmmmmr!cOO6NlUVS#iXqIȵam *v͗9㭶mmmmmmmjёi~ ~ o |UUA-H3]l\tjCj2 gQ0K(<*Iعٓ:OGہ!fLdHDM a $,ɑP,A Ѧ^a1I >Wt=@H,e$Ԇ IA,i,/H`q`"#=(၂\OՎNX"H5_:>x/'y8Ul싴*` g'I U?{vN3عE$YygmmmmmmmBxjy~uNDN#{UE90){f~_;a TP#ܴU'I=xV!mmmmmmm^a1[*(PgQ0ҢS?9X^ %$08 PPtP&A-H g\գR*6]2T$`rIe&Г?ş+@wAsѳ ۗ mABQL00KYay  NiQBjMg떖*(Pn 082g [H` PPtP&E 483'fWt=H` PPtP&E 48عCF8$2b磩 >Wt= g江8F^VWt=jPldn ȸzȐ g'MHPBYk&:'Yy$a=i@E8jieP@L ι=30m2c˃2# vC(6<9C*0J0h?~Vg-Yygmmmmmmk?`CS._?/Orp'y9'x@ڨa5[c0Xyd-;q?(Y;  Vs{@}7φyC|5_;3vPNpP 9cȡ*T&ZYy'R&He d 6 + wAsэg'MHYX^'Mܹj  a\Oiɜ5m(634%] i&&.mDi&&.lM@r(<Lrq@)( κaꮼ.­h JA;Ύ]l\a%K,jEK(<*jPldn K?t0a@81@85`PY2ʗƁ7:醳DaFX$ƤT q"ɛ.b @Xg.l46f46&9L@.P**rع ,7`p[k&:% ԉ(B@ axel"mعj s𰽴@KhH`r$ Ȗ$ gOfL *.P**LC8p@Y"0]S"hfhЗ?{V E!EjEPIhdk?5\whᨁxѬyʑr0lTPK?y$E2 I&]J̙ LQC 6` ,n4B\O5BFAd'4%HH,B-1VOk8l#5C5% O &Z 1㭶mmmmm~tP^N4dN"@vA,|]r|L"mmmmmd0E/lBS43I7H`R) q %0E/lBS42LY MJQ% L?5 ԉ(Bċ`"UƤ]l\cq*E5䈦P i$˩襟=ܹj  a\O5򹵕C7|mqvsh4gjCq"C.䁪Q򹵕C;sk\$M:^a1ʑ"g(TjCon i K02P Fh?~VgBSR0E/lBS42c?[mmmmmmY;"r|x5cd>sy;^U@ ppvsO Gi{BUbs'"|3r'tOy㵝uV;ZqE ~s!3ummmmmm ԉ(Bċ`"UƤ]l\cq*E5䈦P i$˩ad\=dH3 ۗ mABQL00KYFcW6fͮ.ӷ|m&]Z8hn5"DS(`4eܐ5J#U;W6g|mqv+DYk&9R"dGR 8PLpհЦf0# ^q0xeלrdR"dGEH`nHatd4P͉,dOͮ.ӦԊ"Yy<rc?%㭶mmmmm~tP^N4dN"@vA,|]r|L"mmmmm ]0iBSF&pմ(TfsF]0iBS K02P PBY]0iBS*@y3e M^a1+YT3wi۾W6N'R&He -LWwAsэƤ]0iBS"C.47")0HI2 nH*+YT3W6N͢DӬ(Tfǖ2m'iTjE MA<k6dL O ~ ѣ|v^a1g->;Mcq?:(K`iعrgi,/ LL\E2ª'08(^فA 0.'f @ gu"d&P&Hli2sF@H"+  &X&5 MFs𰽴@KhH`r&A-H g\ R 8PLpհЦfHaBFPM42n y +  &Z y g S  `E03<@P u [ k*hԆ$a5 C&לriUS4K|6.z< 8b@ V1{EQFaIعGHR)7L?9NQ[H`"< C"Y3wy|[02NQHY"'Z,؈42"SFԆ0i2sF#>mMA(F^ ŦoFmmmmmmm̙ ,UBF $Aq %HelD~Vgr`d<@PDL;(⪜ \KTZ/;wAsѳPBYk&:!=3@.lY>i2sFk&< .//fT$a4" 42 (CCH"<)AC,`y@R*DLH1E &\ـ4fYyg0ye*AkG ƤxϕЮ*%;Wt=c? )R ,@Hh? )R ,c?AL<*v0 @ (Y@H~2%s?{2gHaeP 3ۤ]2T6X"HhЗ?{ų $P`(I|g,/h၌<rc?[mmmmmmmmk?rEWt=PΫsr'Uuc:;,mmmmmmmmm&bL5 .?H`҅H&@d =V"ei"* "HyE=P gOaaz@'.@ڂ&``?0bp= ]Aj vEE,UCexEX`LE B,<]VTU3F8 ]^_  HB)C8a\OPTt0aZ(bن ƊA gRv   E0^4P0k?%`QJY.l0X+El[0h@BaA<k?އ =`LE B,X;U𓸪<"`Q?<@^y}5(0wyzksЫmq?8҅K(IA$ZE :y}D l3ҬQ>p5eP G % : X[Ъӵczb,yx'jڹ. UXkFNE'Տ톪ʜ?Tb>wwE k:9E狶UmuE>`O9 `D j^V;+Gm k-;Vxڱ= kڷ토Pe )n8U?U[]Qiڱ= kS8l7V~rDHP0sd]`#0seQEtQQHs0v^b@GX=\-gGjѕ.gj `mmmmmmmmmmaK\vEȸ0N".$0X1t&  &XشwAsћV1{EQF`SVLc0 rDHEe> 3&#NFNPP@DD̚@ I  L03,OrB V ȼ gf*Ϫq d 6-16]l\fՌ^TQ@'>++6}Y`X'@Xlb e?*j PfqgDR{wAs `̂@A&8@A&9`,iEDR{wAsѱtMB0HF0yrǚ,Ů[:U9йWt=u 9Syppe (`ع%BE"k3 gTVPn=i ;wAs[0B]gTzOWbK'C//f"5>ƙ=mXAZ/:zb}aS8:Ur(?, "N99g[OZNwU xsOʧAYt (b:se.'rb-E[#&<0P-+KAՆ=u,GWq'w':醳 l" ;Ⳟr%b<wQ_'v(Ual ՅB<s9;eG s'#nC8UTl "kvW]0tymYQ^ ƞl*A'xBNYuXSV@`4 p<@`4 p#LmmmmmmmmmX;j*.^\B; b[mmmmmmmmmmr'U l,nCםa՝a֝a&*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_resourcegroup_statesut     = enrst"ENORS_acdiop#$():ACDILMPTfghlmu-0FGUY[]y&*+,./123;>HK\bvw{}47BVWk|!%'569+Mmţm&MODv@2Kh @@(_6o&MN\_',~~@t"d("IR?,w p, 4K.q`L0%P%K*eV/Gbţ)7h  Ɩ+l xsmmmmmmmmmk^?L)7[%se->\?\b [Gfka|N34/Gb1h`N띌_ x+Z asLkLO]0Ex4dɩnj 0dƴGkA/Gb1h|߭_;=j$}s4Q8i ֛p |Lkr;-r:6lWel{|Bh |Z[mmmmmmmmmkef_5beYMi ; (L M$ eWq4q=&Z1x< 8<ϐ0!P`#@  4U "T_5b4v+Z:ڲx.FX  i` X{¸pn`WɢXD;bO,T`` ]1V'σL>T`` ]1V'ϓj -Z00.w0B Q!hv|H zP6++.,.mmmm'mhZ l@ke`mmmmo8̦xL>yˮv1|&afyǔ֙QUI?3OFSga6MŠ3O]<M_I5(vxyBhC(M(v"MhsلeB$&@&M4QU#C@P4ɢ fyMP" Bh؊%H"@AT;DH IU#CvmmmmmmmmmV0(M84Ox :msjktU1-Oaəw5IodٽsO\ ۋ'&fv{mmmmmmmmmkلe@H .RD@H &;,2UBeTB(dɕ &9n,xhnxșf?B daQ^LcfSZof 0/8i'"fSZoك &d&''Z"Mi(F((|4nRDĕPt"% p$A1%R(M pܞvmmmmmmmmm]?j:Z -5͝zfxyBhOx :mmœDW3~Ga7mmmmmmmmmۻhܲdʐLIU AR)\ wѹdɕ &N8s2AM$ɌLO 2O]0Ep82nQ PQ4;hI5Q N8smqzA+ș֛pBbF&I ;.DH H9c$ڃ DW3)7"3OƍQ*AUDA8\bMX4O\bMX4<1s5`0id&'dPahp>2&e5AiwѸ%H"@A@N8s;V 0S;V 0\bMX4FDa. DL"d&''Z"Mi(F((|4n@ &4DQ N8s;V 0S;V 0\bMX4FDa17'Z"Miw(F((|4n@ &4D pv1|&a .v1|&a i 4w]; 4DɌLO 2O]0Ep82nQ PQ4;h4 ABh*A pv1|&a .v1|&a i 4wͲc@n2O]0Ep82~Q PQ4;h4 ABhA8\bMX4O\bMX4<1s5`0i w!$JE@caj -\D̦ۂ@#w>7IAU" ;s5`<`as5`H/ՃL>XddL{mqzA+ș֛pBbF"P(A8\bMX4O\bMX4<1s5`0i w v4n"MA p wa=n,xl0񋝌_ |ɌhI51Â>n,y&Id4n"R@8pCŘOk2mfٔفV֔]/|-͖ V9~yJuP1xXK{^lVUnzGf\o|KH̶l鵦ysOځ]|vͳ~w-G8Ic/3KO8ɓS¯nzoC>-lŨZ/|޼/Jf2x+Zͷ+Mj5k ,le;=^>x$x(~XXmmmmmw6_6`X 5YhTvmmmmUN枳w[|>&Y*3>bO2}w[|>&`o[}w[|>/9]1V' @ P(WUY6mX4A!m|y37F<9m|vŢ+A>xk&',XiwqilBeċ )F n,xhnxșf?yɼ67u `~c;00Zm/dɕ )AA@&&>MNJ >aiF "R(MK2*kM"eho|&LđH Oo|.@`a`wqilBdDSMKD -5  ˝ɌLOn-6͗MBeTE  f E₁f֣)F&|Չe52 4~xqilBj E$ILI dO]0EG;6_!5"$&$@R 0,C.n-6͗LiuT@H IJ00X@ .waiF \ٹEWe'nf/o g(7\,lڰisZkQH ER̾jʲ~xșf?Zm/q" Sj _ wP0Nl6oL>Z~уكy3r|)7khlɘ֋5=`k\t3O[37_igE -n>y"QW63rWM\ܧb8" a`d7'c|<$@ 00Hr`"v1|'kM5BDp5E$CɈ!21f3LY˚,6-/c u띔8a O4Yل|?862<ZSk0{oP- fŦP69{fŦo0v/1lᘂiHIBjrzegnWd6a)fnLd.A7=3 Veqi3KO_ 5Mf)PUB]35Cmc/فqiX\+ٖ^a3Oɒ%[ p ;6CZnzoCocXU0 4=vmmmmmmmmm`j i|0  v`xXSOYn92BD,XM3SOYn EL -)e80pp(4  4 ȴqLoZO <,cWK>@lAdx0˜l(L T$@Rʙ|Ջخ1hjkMf\`&e0V| h< 8 `$E&(L T$@Rʙ|Ջخ1hjkMu4\E4\8-FX]~?ii5mF\,~{R0t۰hlo|bsKKiu/a8~&޻&{_&w4pj{c2+j:6_hvɣu6vx]ig`8M~6`uڌ^aɣ f/ca > 4pj{c2?[o] OZ+,ɷͬ\ִvu4R,$1w:vn ь$G8]mmmmmmmmmysO4lAv`dÏ𩶗57nrj+]SZ -%>3' 2m23{YYymG 2p4̰5Nmi4,c6Vy~Q73kAvM¯3nmmmmmmmmmm^Q7KE! `N4dۅX*e]mmmmmmmmmxYn2bavX&Ummmmmmmmm%  lfnUםa՝a֝a&3bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_rg_attributesst    = aeirst$ERS_dlnopu"#ACDILNOPT[]cfghm()-.:;GMUXbvy&,/012>HY\kw{}!*+49BFqz|367YH l.*oP;,q*/33at^ѿ+:I.g< *gGѭ~n7L ܶF7]`9_rlgO5~1 Lg'Ys\?ň.d,0fi |?^s\g!,~ixoM(f+fWQe{^9NsFmmmmmmmmmm+[i*8MӜ`*,(xD@J, Usii_x,,0f07?|e֣,hgU qϐ)X R80Q:("&@`( qϙ>33t:p~^iz^ ܲ`?Yrh ?._ [Tcެ>xj]p|[\xBB(Hb=z1<~7(/t\wrMommmmk2)hNVsgFUommmmk/%l Wa"9+I؊>3\ E{.6X*ύ9UE\d%uQS:9V_xK/Y_[1v' D(/z#HLxIa|WQuo|<6LʂP[.vLxo|<4vo;OgAW %O$D` -0xESVq|f&^n+ķ : UWPX xPk\*ˀ# ]5/pUys`+˗239zb0Zxk `Fg,*U^\ o7E{،71=2e &&AVOo")Q"|MoX_i]`cA.XX^<)$Ak/"9x``3YF O  .y"$&PY <2 U]C<4n+`F|$ (\g$DHP`q7mmmmmmmmm[]U^fpXވ)o rUpv/'|9Yn\N=L#)?tW 쬣؊_)>@K8|˖L3O\3o~_WUW,K2X:mmmmmmmmmo|="Ë R$7b>OaŐLè  EQNpDqd o;8" (&Lo舤!1v' ۧ8ɿS&2$D L8xT;i]y n&9Mb0Zx"&(,2<2 "mӜd\x(Ld@T"0faŐLÛ`Ev.X Uȓ xR&9E `*3H&@qab0Zx"HD P‘62.aŐ0ǤXqd 8]a$D˗HM""`T0 yDHL&P oD 26ᦵuj7M\es\_&UƒX>3\0x`fb{Mo]p|$I@P>&Eq=U5uo .y"$&PY <2 UVQ|8lxDa6"0cB#`q a"r7 UsyΝrI:nUYELM h-7M\es\_&UtO (hDhU""D J<Oz5o8ȹ1O <]a|# o#<\DIL@yBd ̪apal"3q{h10p8䄄QLRE|n9P媹Ne$7S̪apaa#<\DIL@yBd ̪hpt3HHE $PG ^Z̮tSʳo9V_l7j.g*Ag*@PUU‚U.&e [,Y}<(,Yx\|q0kk._<(2.| {q)=f/,Y~`lEv.@@ $ (b,Y{ެ e9Eρn0yBcEe% %ʌq7|5lg*0@#b+pP PLI@PEɔ eQ"Q% (He PLI@PF^;,(鿙UnjUNKίW?2qfl30o e9Eρn0 "I @Hf`q7;3\8ȹ0<2 9V^PkFY"%FQ"$@Ćxk?QʳA:.k̺Ob+re THD`eJ"< yd0fU36qpQWeCWa"A2(ʔ$Dx@$ (b2# *7i fBb+re THD`eJ"< yd1F) 7@AUL |y|gȹ2L$J"DA2 <2 7ʩeIq2"&P DDH&T"#&ACa1oSUp4]`9]6T!b+re THD`eJ"< yd1F*Jc 3؊>3\B&U%"X RD Q<әVc1N2^:(X U b( (M(&4$&SE = "HQ(M(&4 &SE = $SEEodDǔ*M Dza颁TA"hA.>x<,ʫt熭q])7e5uQL@0Xe&{tG$g0|;၂=f%O$Dr{dlEv_>[]p|4PkgDzi Ia %O$DlEQ-؊>3;#xdf0XX`a䈓@AV tS\0" g^/u7-=?4y,ixt%ѿ ã'U:n<ԄU?p /g!,xɣvN 8 ^']8.~1 2R"O38. l4o^ M(9˄cFmmmmmmmmmm+[Q3` t3< QU\qP$[D@㇉LM0fo[N=0)(MK(.M-:Ss PP0`@x0ܓ\?2Ơmp]mGM٥㮳^/.L7bAm8( ""&$250;(L(1ocp5^/.L7bXYΝv[&eâ@g=5Wk/s[C"e@BdQ@H0n3N_ g 9'57n]80zrثlg~gr!o B+uOt`U_HHEljLEeSH @f]v'r2/(-3 I>Yy,/HWeeW2IU\'~,Or?;"k]&U^kelf1zT\>|'}82tU|5~eܪ=:n]p,KY9UEò!,YуU~U\'.g"\*ag|U֜WUW;S2+%*=Nkeg>&,e<^涜{hXMmn _|be>o37!|]8.{.k,U[&LR4ʭoYrt̙f1z005]~)u]T^xK%οaftH%οQyN 0c+/3> r\ۀ ~/Y^z=c"Zx '&Nf^5󮙓tӏryBH5"DD["8.e)bN2r >Xv  $ #G* _'Y53hW汊 # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_rgdependency_children =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:53 Last Changed: 6/10/12 15:22:47 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_children.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_rgdependency_children =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_rgdependency_children { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_children.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset name=${1//\"/} typeset -n list=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset child typeset -i index=0 print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"group_parent=$name and dependency_type=PARENT_CHILD\" -f group_child HACMPrgdependency" >>$CLMGR_TMPLOG # Always log commands for child in $($HAUTILS/clodmget -q "group_parent=$name and dependency_type=PARENT_CHILD" -f group_child HACMPrgdependency) do list[$index]=${child//\"/} (( index++ )) done print "clodmget RC: $?" >>$CLMGR_TMPLOG # Always log command result log_return_msg 0 "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_rgdependency_children()"  k2n/ םa՝a֝a&/ bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_parentnut#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_parent.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)03 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_parent.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:48 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_rgdependency_parent =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:58 Last Changed: 6/10/12 15:22:48 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_parent.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_rgdependency_parent =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_rgdependency_parent { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_rgdependency_parent.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset child=${1//\"/} typeset -n list=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i index=0 rc=$RC_SUCCESS #================= : Validate input #================= if [[ -z $child ]]; then rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"group_child=$child and dependency_type=PARENT_CHILD\" -f group_parent HACMPrgdependency" >>$CLMGR_TMPLOG # Always log commands for parent in $($HAUTILS/clodmget -q "group_child=$child and dependency_type=PARENT_CHILD" -f group_parent HACMPrgdependency) do list[$index]=${parent//\"/} (( index++ )) done print "clodmget RC: $?" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_rgdependency_parent()" $ lnQםa՝a֝a&n1bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_service_ip_attributesut    =e ainorst$I_cdfhlp"#.ACDELMNOPRSTgmuv(),-:G[]bwy&/012;>FHU\k{}!'*BKVXqx|+34579\n  4 m1-qg,v33 vv\eN.Jv]ƕ#+ 8It;iI- N.Jv&+ [0ů-JxO7``$%$TA%"dpxL(@"Vp$'%@@ԍ  P`/ g~B&3bܮ|'\, XϚ^0^7\픠7ExڗzV{{)/< `xHtI@g:X/V\N+E?*?^0^7\[?i[?*?^0^7\c?s"#<1* A`>$%xfU RvŦXɌUUUUUUUUUUUUUUUUULZK67{yZUUUUUUUUUUUUUUUUT!'@x{r8g+`nr;ZȢcduq5L+f*qJ.=Ș1P2L+sl$Ni^sÇ`iˋL+ c?*]G#rg[9g'rtYiˋ[clܝnIs5a+JԄvקnPW|bܮxpq%Ɏ,L&8DHL 0"մz׊^rqpj/]?AMԁǦVpӗ^j\ƳeUUUUUUUUUUUUUUUUUUUUUUUUU3QW-xX^xnux,[?ܦ"#u(Ąշh֬r [g8ʹ'r櫥]{M 9quDqgc0W)62m #Ns=%JwHoO4/tՁ}gʪ%G@wHz%; Qϴ0jˏDDx& aj&DJ"Px c?UUUUUUUUUUUUUUUUUUUS?m #RZv@W<8`iˈ?UUUUUUUUUUUUUUUUUUUS?g)ϕ뒴\$$ 歽"9rVj#s(@!WJr뒴\$  83y*<+DQL.!7QuZ._|'\p%;: yŖg.=Ș1yogDsǒ& ]ʈLUIcf/V乹å<1"gxAa'@D0DyR E 감.<(0/HtL,HkJ1䉈Dr#bX٨Ąշ9.nFg$L@&HtI1@XIK*\?nJg%xpv,LD#xI*寍< tĨaPUcQ@,q!!aV%GĀ$,*׌!… \  D gc g>W< XLg GP+dG#xxAa'@D0DyR -͚À$,V9t|'\oiKh"!IA!xr@perȥbp8䉈D2Ċxr i@ٶ93Z 5sßXrV!.<$$I ÔF-E+ gϞ,PX`(DQ TKA3fyq kBωx8xD dbED&! o5mc?S. "j9n5],Q zP7l?ո,lt8'xI%"jK(sN5Z{e^"mJ/7p lgDpDQ å\AED1! o5mbܮxxYrh$,^yqIm|XȔ2Bа<P`AV<P YDp) yog f됉BB@*Ly*<+Rh^0^7\J D " YM " ApgSD>j q}VܻSN!,Ąշ3uEHD " Q|gqg>W=|c?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUT'mK|3XB;sN;o9g'a|K]5+V 'qԄwL79zG%8XQw-?J;|tmuwM\&rw!eUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?Rv+DG$T#.R뒴\T18!v*z7`nS(@%BųӃeUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?ʽa]7Iu+"dV#XښqJ7+5n"K\r eUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?rxQx{r@ B@ UF$$ 歽|z"PcGP0IҶq f됉bAP0I3?ezmu!WJ guZ._sX9k[?ԄM{:عkXʶR.8sVٵWMny9於R.⊹%x(\qf's^"mJ׳M\ƭEӹ gW\Ð.bgB8Dn~xP^0^7\@ ?N … \x< < 3uD( ‹ f됉Q$ Ӄ>xpv,Ð.`^ aÑ 8A"C? Xr# \J<( aÑ@J3 Xr# \L*x  D ` gz:bBX  D ` c?ʏDyPC ၌rX^XQ*(gV<1"XQ0[{?kUFybGjZK8H,$y%E7I\͝ O|46⍖Zҝx9f\ն# Xr$=Du[,a 歿 sb⑃ g~e[lۥ?~e-iz{w.73{?(ů5G3&3 Xr$=DXSky[b JZwb佤i|ճ{(rX^|R0< " pv շy*<+Ex{rӗ\3uɟJF3,/>)uYqD031H"PN>sӰ:/qLg5osqQ^fG-aQ5\ $@pe5sEϝFhsN9L$@%%( ifÔ2L RX٨FrWH #Ƚr5>) Ş <*-񹜋\fES@ D 8y2Ț+%ht[9g'r 0eUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS0fQ?Q*B(%rɃ3!rJ.^n*Zt׌;OςW)\?(]kv#|ng"< YnXWk ǒ& ]("T"g jCyo,䉈Dȕcȧ%,䉈D9.30 Xӝ^nypq6wl\jNN7%k/m46j#sQBL c7A%i|mLk0gLRG27#OtwOt^ٸU歰gl5], (T bwy!W5o6zxn(Wt >`LW@;i\ 95NAH>ưceg" |'i'{v;L12zStgHA,(90SYlVژ/(83 G7+%zf,JZgisU N4֘3 ׌,DP.D"dPI㟶RNlv-5\QW$fݢp9>j?ӗZ|-&73}ս&k^nڶE]<ݾxعk\UUUUUUUUUUUUUU3HtLLPk;Ya^W=n0LFZr +JN[WKQr˚]{|5Ԅvӎ\) ӴRs {CXy"b&8 Dr3{_`t/j 5ot`vg'j4ӗ8`S?׌J71s5o69p؝ǂPzG#|q65zv?׌JVϚ$4WlW4n7cXVژ/.DDF3q#,Rzw;Jv7{f?jc.piI\řc\Hci佤i@R8\}ΔxGJO|'ޤ=6`? N:6rxetfC@){⍖Ҟ*`iFӵӅ|'M佤i%u>pͶi+mXHd^1iH,0[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULV s@ٻ|5Olfל÷zPM5mzmrU`G-{ns{6ԥ9UւA=g%4v;g[E{zlNjޣYm𞣞z{9e;i5*3%.h Dn ~,&(~X3"236͢r W)1G'5h.ק6eUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSXn kƅnD םa՝a֝a&D bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_service_labelsi#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_service_labels.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)08 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_service_labels.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:50 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_service_labels =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:40:16 Last Changed: 6/10/12 15:22:50 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_service_labels.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr query service_ip [,,,...] clmgr -v query service_ip NOTE: the alias for "service_ip" is "se". =head1 DESCRIPTION Returns a list of shared service IP labels defined within the local cluster. =head1 ARGUMENTS N.one =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_service_labels { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_service_labels.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset name= value= print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"function=shared\" -f ip_label HACMPadapter" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clodmget -q "function=shared" -f ip_label HACMPadapter |\ while read name; do print -- ${name//\"/} done print "clodmget RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"function=service\" -f ip_label HACMPadapter" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clodmget -q "function=service" -f ip_label HACMPadapter |\ while read name; do print -- ${name//\"/} done print "clodmget RC: $?" >>$CLMGR_TMPLOG # Always log command result log_return_msg 0 "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_service_labels()" er/u kqn7םa՝a֝a&7bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_site_attributes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_attributes.sh 1.18 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)81 1.18 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/1/15 14:37:32 #============================================================================ # # Name: KLIB_HACMP_get_site_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect site information. The odmget utility is invoked # to extract the necessary data from the HACMPsite ODM. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_site_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.18, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset site=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then site= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset SITES= ID= name= value= DATA= typeset key= typeset -i matches=0 rc=$RC_SUCCESS typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================= : Make sure we have something to query #======================================= elif [[ -n $site ]]; then for site in ${site//,/ }; do site=$(CL=$LINENO KLIB_HACMP_is_known_site "$site" 2>/dev/null) if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$site" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 157 "Available Sites:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_sites available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else SITES="$SITES $site" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then typeset SITENAMES= print -- "$0()[$LINENO]($SECONDS): clodmget -n -f name HACMPsite" >>$CLMGR_TMPLOG # Always log commands SITENAMES=$(clodmget -n -f name HACMPsite) rc=$? print -- "$0()[$LINENO]($SECONDS): clodmget RC: $rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESSS )); then for SITENAME in $SITENAMES; do SITES=${SITES:+$SITES }$SITENAME done fi else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset SITES #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for site in $SITES; do if [[ $SITES == *\ * ]]; then print -- "$0()[$LINENO]($SECONDS): clodmget -q \"name=$site\" -f id HACMPsite" >>$CLMGR_TMPLOG # Always log commands ID=$(clodmget -q "name=$site" -f id HACMPsite) print "$0()[$LINENO]($SECONDS): clodmget RC: $?; $site ID == \"$ID\"" >>$CLMGR_TMPLOG # Always log command result fi print "$0()[$LINENO]($SECONDS): odmget -q \"name = $site\" HACMPsite" >>$CLMGR_TMPLOG # Always log commands DATA=$(odmget -q "name = $site" HACMPsite) print "$0()[$LINENO]($SECONDS): odmget RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$DATA" |\ while IFS='=' read name value do name=${name##+([[:space:]])} name=${name%%+([[:space:]])} [[ -z $name || $name == 'HACMPsite:' ]] && continue value=${value##+([[:space:]])} value=${value%%+([[:space:]])} value=${value//\"/} attr=$name # Make uppercase if [[ $attr == ID* ]]; then typeset CID=$(clodmget -f id HACMPcluster) properties[G$attr$ID]="$CID$value" else [[ $attr == "DOMINANCE" ]] && continue # NOTE: the "NODES" attribute is what is used to actually # set the node list, so that is what should be # displayed via queries. [[ $attr == "NODELIST" ]] && attr=NODES properties[$attr$ID]=$value fi done properties[STATE$ID]=$(CL=$LINENO KLIB_HACMP_get_site_state "$site") print "$0()[$LINENO]($SECONDS): clodmget -n -q name="${properties[NAME$ID]}_sircol" -f ip_address HACMPsircol" >>$CLMGR_TMPLOG # Always log commands properties[SITE_IP$ID]=$(clodmget -n -q name="${properties[NAME$ID]}_sircol" -f ip_address HACMPsircol) print "$0()[$LINENO]($SECONDS): clodmget RC: $?, ${properties[NAME$ID]} IP == ${properties[SITE_IP$ID]}" >>$CLMGR_TMPLOG # Always log command result #======================================= : Get the site merge/recovery priority #======================================= print "$0()[$LINENO]($SECONDS): clodmget -n -q name=$site -f merge_priority HACMPsite" >>$CLMGR_TMPLOG value=$(clodmget -n -q name=$site -f merge_priority HACMPsite) print "$0()[$LINENO]($SECONDS): clodmget RC: $?; $site merge_priority == $value" >>$CLMGR_TMPLOG [[ $value == 0 ]] && value="MANUAL" properties[RECOVERY_PRIORITY$ID]=$value print "$0()[$LINENO]($SECONDS): odmget RC: $?" >>$CLMGR_TMPLOG #========================= : Get the site dominance #========================= print "$0()[$LINENO]($SECONDS): clodmget -n -q name=$site -f dominance HACMPsite" >>$CLMGR_TMPLOG properties[DOMINANT$ID]=$(clodmget -n -q name=$site -f dominance HACMPsite) print "$0()[$LINENO]($SECONDS): clodmget RC: $?, $site dominance == ${properties[DOMINANT$ID]}" >>$CLMGR_TMPLOG unset repositories # Make sure no previous results exist typeset repositories CL=$LINENO KLIB_HACMP_list_repositories repositories SITE=$site value=${repositories[*]} properties[REPOSITORIES$ID]="${value//\) /\), }" #================================== : Get the site HMCS for site $site #================================== typeset HMCLABELS= typeset hmclabels= print "$0()[$LINENO]($SECONDS): cllssite -S $site" >>$CLMGR_TMPLOG # Always log commands hmclabels=$(cllssite -S $site) (( rc |= $? )) print "$0()[$LINENO]($SECONDS): cllssite RC: $rc, $site HMCs == ${hmclabels//+([[:space:]])/ }" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then for hmclabel in $hmclabels; do if [[ -n $hmclabel ]]; then HMCLABELS="${HMCLABELS:+$HMCLABELS }$hmclabel" fi done properties[HMCS$ID]=$HMCLABELS fi #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[site]}; do if [[ -z ${properties[$key$ID]} ]]; then properties[$key$ID]="" fi done if [[ ${properties[HEARTBEAT_TYPE]} == "UNICAST" ]]; then unset properties[SITE_IP$ID] fi [[ $CLUSTER_TYPE != "LC" ]] && unset properties[REPOSITORY$ID] done # End of the sites loop #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_site_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_site_attributes =head1 VERSION Version Number: 1.18 Last Extracted: 6/16/15 17:51:09 Last Changed: 6/1/15 14:37:32 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query site [,,,...] clmgr -v query site =head1 DESCRIPTION Retrieves the configuration data for one or more sites. =head1 ARGUMENTS 1. site [REQUIRED] [string] The label of one or more sites (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== = knp*םa՝a֝a&p*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_site_stateutes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_state.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)14 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_state.sh, hacmp.assist, 61haes_r721, 1642B_hacmp721 10/14/16 14:14:11 #============================================================================= # # Name: KLIB_HACMP_get_site_state # # Description: This is the main, FPATH function that is invoked by clmgr # to retrieve the aggregated cluster manager state for a given # site. The "worst case" status wins. # # Inputs: See the "devDoc()" function, below. # # Outputs: The node state is returned on STDOUT, unless the optional # "state" input is provided, in which case the state is stored # in that variable. The only other outputs are any error # messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================= function KLIB_HACMP_get_site_state { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_state.sh, hacmp.assist, 61haes_r721, 1642B_hacmp721 : INPUTS: $* typeset site=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset LINE= NODE= NODELIST= typeset -u STATE=UNKNOWN typeset -i NODE_COUNT=0 OFFLINE=0 UNCONFIG=0 UNMANAGED=0 typeset -i ERROR=0 NORMAL=0 UNKNOWN=0 rc=$RC_SUCCESS #================= : Validate input #================= if [[ -z $site ]]; then rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): clodmget -q \"name=$site\" -f nodelist HACMPsite" >>$CLMGR_TMPLOG # Always log commands NODELIST=$(clodmget -q "name=$site" -f nodelist HACMPsite) NODELIST=${NODELIST//\"} print "$0()[$LINENO]($SECONDS): clodmget RC: $?; NODELIST == \"$NODELIST\"" >>$CLMGR_TMPLOG # Always log command result #================================================ : Collect and analyze the status from each node #================================================ for NODE in $NODELIST; do (( NODE_COUNT++)) STATE=$(CL=$LINENO KLIB_HACMP_get_node_state "$NODE" 2>>$CLMGR_TMPLOG) if [[ $STATE == *@(INIT|INOPERATIVE)* ]]; then (( OFFLINE++ )) elif [[ $STATE == *NOT_CONFIGURED* ]]; then (( UNCONFIG++ )) elif [[ $STATE == *FAILED* ]]; then (( ERROR++ )) elif [[ $STATE == *@(JOINING|UNSTABLE|VOTING|RUNNING|BARRIER|DONE)* ]]; then (( NORMAL++ )) elif [[ $STATE == *STABLE* ]]; then (( NORMAL++ )) elif [[ $STATE == *UNMANAGED* ]]; then (( UNMANAGED++ )) else (( UNKNOWN++ )) fi done #================================================================== : Aggregate the collected node states to arrive at a relatively : appropriate, overall cluster state. The goal here is to provide : the most useful indicator to the customer. #================================================================== if (( NODE_COUNT > 0 )); then if [[ $CLMGR_GUI == "SMUI" ]]; then if (( ERROR )); then STATE=ERROR elif (( UNCONFIG )); then STATE=NOT_CONFIGURED elif (( OFFLINE == NODE_COUNT )); then STATE=OFFLINE elif (( NORMAL == NODE_COUNT )); then STATE=STABLE elif (( UNMANAGED == NODE_COUNT )); then STATE=UNMANAGED elif (( NORMAL && NORMAL != NODE_COUNT )); then STATE=WARNING else STATE=UNKNOWN fi else if (( ERROR )); then STATE=ERROR elif (( UNCONFIG )); then STATE=NOT_CONFIGURED elif (( OFFLINE == NODE_COUNT )); then STATE=OFFLINE elif (( NORMAL == NODE_COUNT )); then STATE=STABLE elif (( UNMANAGED == NODE_COUNT )); then STATE=UNMANAGED else STATE=UNKNOWN fi fi fi fi print -- $STATE # Do not quote! Avoids leading/trailing whitespace! log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_site_state()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_site_state =head1 VERSION Version Number: 1.5 Last Extracted: 10/21/16 17:05:34 Last Changed: 10/14/16 14:14:11 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_site_state.sh, hacmp.assist, 61haes_r721, 1642B_hacmp721 =head1 SYNOPSIS clmgr -cSa state query site [ [,,,...] ] =head1 DESCRIPTION Queries every node in the cluster for its current state (retrieved by calling "lssrc -ls clstrmgrES") and aggregating the results. The currently known statuses are: ST_INIT ST_JOINING ST_STABLE ST_UNSTABLE ST_VOTING ST_RP_RUNNING ST_BARRIER ST_RP_FAILED ST_CBARRIER ST_DONE NOT_CONFIGURED UNMANAGED These raw states are aggregated into seven possible statuses: NOT_CONFIGURED OFFLINE ERROR NORMAL WARNING UNMANAGED UNKNOWN NOT_CONFIGURED indicates that the node has not yet been configued into a cluster. If *any* node in the cluster has this state, then the entire cluster is considered to be "NOT_CONFIGURED". ST_INIT indicates cluster services are inactive, but AIX is running. If all the nodes have this state, the cluster state is set to "OFFLINE". ST_JOINING, ST_UNSTABLE, ST_VOTING, ST_RP_RUNNING, ST_BARRIER, ST_CBARRIER, and ST_DONE all indicate that cluster services are active, and something is happening. If *any* of the nodes in the cluster possess this state, then the cluster state is set to "NORMAL". ST_RP_FAILED indicates a PowerHA error has occurred on that node (other nodes in the cluster may be in *BARRIER in this case). If *any* node in the cluster possesses this state, the cluster state is set to "ERROR". ST_STABLE indicates that cluster services are operating normally. If all nodes in the cluster have this state, the cluster state is set to "NORMAL". However, if any of the nodes in the cluster report "OFFLINE", while the rest report "NORMAL", then the cluster state is set to "WARNING" to indicate a degraded condition within the cluster. If *any* node in the cluster reports an unrecognized state, or cannot be contacted, the state of the cluster is set to "UNKNOWN". =head1 ARGUMENTS 1. site [REQUIRED] [string] The label of one or more sites (comma or space separated) that are to be queried. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  lhnKםa՝a֝a&-bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_snapshot_attributessut  =e iorst$ENahnp"#ACDILOPST[]_cdflmu(),-./:GHMRXbgvwy{}*012;>FU\k!%&'+BYqx|34579{E7%t5?0&A3eʔ* m$0@A?H@!pR`}*r@p (L 6"@cbpYEૢmHCl 0,X(bU@ 0"$H,@8x儘0,Ha2 &6*mڈb E>|gFN,~`TxxP 9U \8& DHi,U6b6 P??(Ӓ$$eP0̳ܼ#;d-%KdLd֌e", C0$Z" HX, ,a%w``_pdp|%{NFNmV00|$/:s8Z?``pad*3!$[.qY:\^ 0,K"~L 6XLBL60}mmmmmmmmm{騂CQB`YD/]jF/h=Sjk*mg@V ň!XZ帪vjTg8}?㏟ಋWGA1PS>Ќe gabp5?&c/]ŮYCṅgYDs|eYEૣ.\N6'p5 d5wy|[09Pt7!OKcښAP $oz,3bȼڱ=kZk~U WCwy|[0R 톻B}H³c;r0|/{AAiTit5?zigr|f2r2t7+e -rj`݋} 'Cq9=/*8M#4pk`q*8싒q+\^/`mmmm?%'X՛} 8j mmmmmg?[Dh]^_ 3Э ܼ-D"hr0 XS]20l`ⵟ^a1LBDL$R._8鷜6L&Ti#+&8FFk?2c7@N+0ey CNgFWLp^ك?2c7mಋWG8NuKhvܴO6N[.׹dpLQ /D0ճBYd% XS#.J,@CL*ՃCàWF gmmmmmmk?*yXgq'u#U f} 53ڋ >sBн 'vVw!bmmmmmm*' g\u9PdΈnѠgef4.27F/P#0a]yy!,P02Qȍ } Q<V?ιic?mmmmmN&*an.2mmmmk?{2g [F (tsFUdΌQx*5`Ѭ4+BcLB}=耜eH\ ⬬]h($ &lF4H6$\@ $ BbeD8)κa..l",㑂/](v  %͗HƉBfċ@8>ˬUрxA`ðP4^a1Q?,"RPi&WE fH,lapYEૣ Au}AS~A@B#CQ?&A@+ g\̙P]FPTE&Cງ$<ѠѠgef1/#J (k?ιigjÙ2&*`8=2LLb%L.J/^ #y:奌=J  B`YR`x4< C/l 8PP3?2c.O*~YDD4L͈"$X&ಋWF4$'m6F.O*~L 6@V ι XSK@q (.O*~LCcuK',;@[ BfˤcDA!3bE H'Y!12a Gw]dhA`ðP4*"dM.\bɦXak6\DEAXhV.J.mmmmmmmmg~Yˡ>gbjq^*"wR1{EP`.3mmmmmmmmgú% XSgj" 2BiSA(HT  p DA!3f*!} @`,\Dd,r (&I4tLp12! $Lb%L&8n]20l`ðh5%͘,PPf g0B~,WH,pF^Dd *`!ek|0cYDl6$&$ TF{ų$J˘HLdDd4WH,pF^Dd *`!ek|0c@Zn >p)(.a!3fՙ {ų$J˘HLـ0HLBˑ!Zr`d@ys 0IiHP\l6` ,$$8 3`3}mmmmmmk?Ce;: gUl8,U>mmmmmmmϕ$Ydz;+4 ?i*M fuiɜ1mlȉR M2I qVVgr`dDs&$ Qȍ.//fDJ0]iHPXkPiTFM!gBiQ(M4g>է8ܶ*Yt"'siհͧ9=-gX^_*}H_V*Ds?2c.a2ITJM&dΉBiA@* HpdΉBiۢ4P T@8  8+3whD4LKDd P#GUЊ 4Bf (TC(3 @E!Q (D)WB:!*YDK?8^3>*գDeI2Q..DqK(D)9 *Ճt#!ÅZrVQH6`HB? |aAg-r ,v i0BetJM, (D)9 *Ճt#jʺYDh5%͘,PS?⬬,T9Kjna9P?A;>-rzrs8!]Z8A!!FQ(M4*h%*"AB&)H(M4`j$J  0$XQ>039; `D$d u]&X, DA!3f* k?5뽫G$$(% eM]"%S$\(?UЎ&D?E"vȒ `@p DA!3f*!} @w'Q$@LFliɝp $\ f8+3?0G8 iZ;qVu]C:?!>|d0 Bl *h,tUj,s'#LN*F,y^Zr*V>!0 gFWLr .z"g?I[DhBd \88,;g\&tA,} #|g-,gOfL胀Y$h# D'ہA&A!P@4 2 悂PIH`4 LC9ѦYYnZwjc!>|d0 BlV^² j͌Z0,-6*Ug~qh`ܔQ an.Cq*?] ŧ.a2ITF0@&Cງ$<Ѡ@?%%KLUp $?5~&@I*8Mgr`dDs&$ Qȍ.//fDJ0]iHP"%KLCuK3 (@ H9=34ܼ-"P\BfDd47ۀ$P(h3?ş+H-Cc.J,@r0YEૢ`xA,_ r ,}qg­?;CBi ι Dh4gOfL&] B#4hYYɘHBZE*#E &pŴF{ų%ɘH$$Ѡgef//fK0tII!CTr#Kف$]iHPXk?{ų%ɘH$$9lrf.4$(hm$l-"',]^_ $l-"LB#E wy|[02TK0M2I .//f@ rf6P@II!CApX?5\XmmmmmmY(PsFB*gԄt:8Z帵~aY|>qYez>uB#8ƒ0븪~*mmmmmmYܼ-"@xF0$$H|p(PMR3Gc.J,@r0YEૢ3&pŴF{ų$H0H"Dd474 ⬬l6H&$ TF{ų$H0H"Dd4<Fyiɝl6H&$ &Cງ$<ѠѠgef03t."Ti?i*M fu :5lɀ0HLBٓ:% nhej2G4hYY Dh40YEૢgBiQ(M4&Cງ$<Ѡ($ɐlC gBiQ(M4&Cງ$<Ѡ($ɐlC LFܼ-"@xF0$$BiWʁk?ιig江ف$ m2Dd5Q |/"$X0?t."TbC/]@;g`Ƴ //fH,`&ʒIiHPDiwy|[02Dc4THLBܼ-"@xF*I$II!CUl6RI"M2I ٓ8`.//fH,`&ʒIiHPh3?{2g4ܼ-L$M2I  p@CDR$ L$#4hYYف$ m2Dd5Q]^_ TE&$ OYܼ-"@xF*I$II!CUH(m2gXmmmmmȫ'9?QaE8,ULUqc ľs?'Y++g*E qUಋWEmmmmYٓ8ar% XSF (tCZqVVg%+P|;'q]LUE V8} &*?(pZcYTYi~aC 'S:eK?2c(bE*!'` aq^0X'ū g.AebpR0~*u : .>Tci{NTYi{?H""lH?YǑyx*KZu;Ay&*%ϕE!D. ;t."TbC/]֬yð< Z~wʇrHs?M*Bi΢ܠ^#8$^ H pF_dΈr`d@ys 0IiHPn92Gf8+3 Иف$]iHP?5rLsF/h7#'xr|\?Э ܼ-.H8l<`y`&H$$Zwy|[02\0p88LBhLult."TbQ&$ 3 ИفDd46 r-rڷ[ (tYܼ- "$lDL*tII!CUಋWG .J,@r0YEૢ0?88a^tu?rӌ6*Uܴ$'&$+ g:$$n`@$aAL:sಋWF gmmmmmmmY= QiKq'BTX⬠p?mmmmmmmBt^s"l<#Dhx^فApgef)Q(M4+TyM//f^نܼ-3* %n&Dpy)/`@)Q(M4++Iv@醻ܼ-1,m/X cyA!!CȔ&IPm~wb$6-17^ &Ԍ^T1c>mmmmmmmmmX=A!d\0{,U MiEqC^0^_BȵqUH?Y`8}qbsV9hm@A+Gj۞v_ڭ;<dVvyAnaVjǜ E[l6\'X?ڶX,H,w8ج푉;mMd(ec C,X..q܂qvVXZahg*+\ RA F2wjǜ E[QϝqI2IX?q\dseL@t8 LIHՊ(d{$^^Y9|TZ:Nyacz"-UR,kITg8}:.}A*sg~@0yzk +;V~N{^ ԋE犪Gcz"-feʖ.L+8FWո slU[]Aiڱ=k `ɬ?rCnZCX=9`0FV;'x #'B=mmmmmmmmmr-r$?q @vEÖB| 2*iIQB`YD/]jF/hUeCRɗc3 ?Px,UDQx*L,U fpg^3eTAUCR?^ #YP+$r"d&U60NbȼÊrǚ,E[:T99pļD^ 0 c*V@L@$f (7/]Ț@,LM"F0ڰVs Ƿ-;s/]a'.+#'Bu<]N,7]^_3"iy14̪'3ڐ5H^uqV*ӊTC*?2  '# bbI.>~^UeCM#4^>ľs9: ^^Z^T|8UAyfVɄ!>JCqÈ^:y8͓BtYl"!>wYg<+f95 _'v C@A 3s9;eRV8NGjqYPMkvWsk:<̈́Y~O6Nq\?'x@N+uHSb~wrN89`mmmmmmmmmm yϸa Tu#@aܬy99j"Tyc Ul?<ld.9@n~.[ Tsh&^T~x8g~UO^Vy:عOtsX؅,wlq?e:mmmmmmmmmkqC{T?0``d?Y? ;CK`mmmmmmmmmmv⠬"ODab˨ب*mmmmmmmmmk kmn+םa՝a֝a&+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_storage_agent_attributess.txt#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_storage_agent_attributes.sh 1.10 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)97 1.10 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_storage_agent_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/1/15 14:47:22 #============================================================================ # # Name: KLIB_HACMP_get_storage_agent_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect storage agent information. The clxd_list_sa_director # utility is invoked to extract the necessary data. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_storage_agent_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.10, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_storage_agent_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset storage_agent=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then storage_agent= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO isEnterprise if (( $? != 1 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset AGENTS= typeset -A list typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= typeset -i matches=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #======================================= : Make sure we have something to query #======================================= if [[ -n $storage_agent ]]; then [[ $storage_agent != *,* ]] && unset INDEX for storage_agent in ${storage_agent//,/ }; do CL=$LINENO KLIB_HACMP_is_known_storage_agent "$storage_agent" 2>/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$storage_agent" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 163 "Available Storage Agents:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_storage_agents available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else AGENTS="$AGENTS $storage_agent" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then CL=$LINENO KLIB_HACMP_list_storage_agents list for name in ${list[*]}; do name=${name##+([[:space:]])} name=${name%%+([[:space:]])} AGENTS="$AGENTS $name" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset AGENTS #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for storage_agent in $AGENTS; do properties[NAME$INDEX]=$storage_agent print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_sa_director -d\"|\" -n $storage_agent" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_sa_director -d"|" -n $storage_agent >$TMPDIR/clmgr.KHgsaa.$$ cmd_rc=$? print "$0()[$LINENO]($SECONDS): clxd_list_sa_director RC: $cmd_rc" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$storage_agent" 1>&2 rc=$RC_NOT_FOUND break fi cat $TMPDIR/clmgr.KHgsaa.$$ |\ while IFS=\| read name type user password systems ips attrs rem; do [[ $name == *\ * ]] && continue properties[NAME$INDEX]="$name" properties[TYPE$INDEX]=$type properties[USER$INDEX]=$user properties[PASSWORD$INDEX]=$password properties[SYSTEMS$INDEX]=$systems properties[ADDRESSES$INDEX]=$ips properties[ATTRIBUTES$INDEX]=$attrs done rm -f $TMPDIR/clmgr.KHgsaa.$$ #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[storage_agent]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_storage_agent_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_storage_agent_attributes =head1 VERSION Version Number: 1.10 Last Extracted: 6/16/15 17:51:09 Last Changed: 6/1/15 14:47:22 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_storage_agent_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query storage_agent [,,...] clmgr -v query storage_agent NOTE: the alias for "storage_agent" is "sta". =head1 DESCRIPTION Retrieves the configuration data for one or more PowerHA SystemMirror storage agents. =head1 ARGUMENTS 1. storage_agent [REQUIRED] [string] The label of one or more storage_agents (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== fi  l2InCםa՝a֝a&(bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_storage_system_attributes.txt   =eaiorst $_cdlmnp"#CEINRST[]fghuy()-./:ADGLMOPbvw&,012;>BHKUX\kq{}!'*4FYx|%+3678mmmm')(œڳb(ikT>mmmm? m[@,.//fpfBc//f ii?'WLrYREuyl"N0"T DD%J&8RNuyn"&8q͑q$Bv&8p9/l^a1ÛOf+mmmmmmOi}T佳倱& p N (@a,*E 8IDS …*DQaB+ 5(.PG༤-Ea)Y8F8FΏsBpڷ5<2k%,0pYJP$(PȒ&0,yL%,0'E dUQ@,9/le 5`sXE8. a *,(QKh(QB."PA&LS=mg(GA Bnk:<.sjv5|r`{fcL`hҨ "d"@$K ?'WLv QÏi}T佳BI*`/ JDL q7+&; JѣejVմS &X@i Q0]xf JnZO2]Z8pv9H`itI"L\bH&&T4G@$ *HA%MIRa &9T佳倱&1ra1hLr ^0A(aaQqO(6ðq'*NDHTVDR RB (&mNc NK0.X "`.;Lp9 ` ( xx@j`zja Ҩi03Av"T"@pgr:ce-G?lTVGo'*X˗$'ہ<}'-rO]^_ $"HMDȄT &&D$&nZpaa2EQSOB RML=zqd$zX\jƸLbՍCjf\g.6?@E "T"00PR D: ?O2QƑ|EX c *Hb|Gimmmmi8jƸ ?}mmmmOi|9mEaFaW0`ܬrR2\Z12!#uy F(.#G?˟.{ J0;ʻV B.{ J0;ʢ . q3h pV nV?$@ D`HTEf #2 I"L_ " ,0`Qg "ԣBsjQFU"#BpX4A9X8`f k PJCAMՁ:E "Tm…*(WAxXBq ia]yc1 X&BsjQFUpYu`kQaB"[@DE@ 10eIaʝeX ;@LjROi}pDaQ!R=+0eI0 nV?@T2$ r "EEaFaV2"*BO +P$L1| *HqhLrYREmmmmmmmmq.qFFx[6|M#R990?}mmmmmmmi\sjQFUڶP,b"An?wy|[0.LHX B.{ J0;ʧ ]2&l2?4XP+ q7+\jD) %HeTTl""ԢeN9EaFaTv P *,(Qi*/Ji03A%SE`5DD%Jᡠ&cӂ …*DQaB+  DAr8 B0tv.]D X!5(#*@8,P(Ab$|(5(f)v9";sOqX5(dvg=O\VbP B.{ J+1Y򫆦bR"ԣ@2R6r9Dv+xsjQvg=O\buy=^D1?|ᩇؔr%#n \G`ni7^r8q' ?%1YB^ @/*jav%'tXoB)v9";sOq!Xo@vg=ObACeMEf #NTjp8գBsjQYdFBsjQrU NTjtʍT.Y9Q '*5P ]&@,B]rU rNTjtXPjY9QЀHF^SP,,0&HJ*iyAz*BO +P$L1}"e뽰g ]+ DܬjÃCK*Hb*D12: JaaSk(ra1hLvo[BsjQFUA(aaQqO(6ðq'*N ! $*6FE6R&8 ÖЄ\`vpjIEM<< 50>AU4^@ڴqCK*Hb*D12:JaaSk(B: */HK Kv1 K K DĔaj8֓U'`qHe"T"@pgru`kQaB"[@DE@^"PAp!nk:;^X. l" 㐄\`vG`hҨ 1rȁBbgX?O2͵IEhL ,OY5+&񱵖Ra1|7Icⴿ9 zVq$8+ZI9j{Pf._Af+=\bR"`n`9hcyفrbBP$LLHVGܼ-,@12!#^O]^_ $"HMDȄTdZفpBd$LLH@lme]^_ $X A{ųBI*"bdBF* 5+F9r:5@i!ك&c{ųE$"UDȄTʐ{ųBbe*D 21|]^_ ""bdBF*rr`\`HbdJ H|Vܼ-"QDȄTB^{ų"#BP$LLH@e.q'//fʀ,D$$LLHBI"!z-L-?7-8 @" ( Ì$PA%4< @=?}mmmmmmmDjVg|톳(rs.~Fm2r2btaݚ1)6\pwsrr 8La:NZ eh4Lgq2r3mmmmmmmmsڶY,X"Ȕ/5(#* 4L ]^_ &&D$`/0 nV?wy|[0.RNH8qZnZO?}mmmmmmm;EslγT-˟SmmmmmmmOi}r`\0EDȄ4gr]^_ "T&&D$`Bc//f @12!#Zwy|[0.0$P2%$LLH]^_ J("bdBF8&:r`\$@ D`HT ?Иفr,$B%K(!4 "1e\Ywy|[0.X ""bdBF p N (@1AF`3XBc//fą,UDȄe&&D$&r v@'0c̑12! 0rymmmmmmm?G$gbxK|1|^Ri`MInUpmmmmmmm?p۔ PJ}{f|pgrj&/X􍢻ܼ-aS5lPGih=.ܡJH"TZ"dIҋVN@Ɇܼ-4'*9;$04v9RDȓ' .gjN Ja<}mmmmmmmmmdE[NFܖ?G $D( GMdą~$D$@XaSa=eTY'#0& ȕ PbB<푩s匴Dz-rl3.~s\7/eN2^x*r^L.dR7cl>r'g Ǟxmmmmmmmmmmcsr8mi9Ueh*9 U^0V2:NM,1rm-RvÔOk9UCs6c*9 !v.#R󼬙ns-RAbmQMgG2ՓFœm)K9ymmmmmmmmmI`-kT?j`fx,jq6#'ȬmmmmmmmmmMTGa/@f#mN&N,<}mmmmmmmmmx D kRng)םa՝a֝a&g)bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_tape_attributes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_tape_attributes.sh 1.7 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)76 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_tape_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/1/15 14:57:19 #============================================================================ # # Name: KLIB_HACMP_get_tape_attributes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect tape information. The cllstape utility is invoked # to extract the necessary data. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_get_tape_attributes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_tape_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset tape=${1//\"/} # Get the "properties" associative array reference, and initialize it if [[ -z $2 ]] || [[ -n $CLMGR_LOGGING && $2 == "|" ]]; then tape= typeset -n properties=$1 else typeset -n properties=$2 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== for k in ${!properties[*]}; do unset properties[$k]; done typeset TAPES= OUTPUT= typeset -i INDEX=0 rc=$RC_SUCCESS typeset key= typeset -i matches=0 typeset -u attr= uc_key= typeset -A queries typeset -i i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done #======================================= : Make sure we have something to query #======================================= if [[ -n $tape ]]; then [[ $tape != *,* ]] && unset INDEX for tape in ${tape//,/ }; do CL=$LINENO KLIB_HACMP_is_known_tape "$tape" 2>/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$tape" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 159 "Available Tapes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_tapes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND else TAPES="$TAPES $tape" fi done elif (( CLMGR_VERBOSE || ${#queries[*]} > 0 )); then typeset available CL=$LINENO KLIB_HACMP_list_tapes available for (( i=0; i<${#available[*]}; i++ )); do TAPES="$TAPES ${available[$i]}" done else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi (( $rc != RC_SUCCESS )) && unset TAPES #================================================================ : Populate the return hash with the retrieved attributes/values #================================================================ for tape in $TAPES; do properties[NAME$INDEX]=$tape print -- "$0()[$LINENO]($SECONDS): cllstape -c -n $tape" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllstape -c -n $tape) cmd_rc=$? print "$0()[$LINENO]($SECONDS): cllstape RC: $cmd_rc; OUTPUT == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$tape" 1>&2 rc=$RC_NOT_FOUND break fi print -- "$OUTPUT" |\ while IFS=: read name desc device start_sync stop_sync start_script stop_script; do properties[DESCRIPTION$INDEX]="$desc" properties[DEVICE$INDEX]=$device properties[STARTSCRIPT$INDEX]=$start_script properties[STOPSCRIPT$INDEX]=$stop_script properties[START_SYNCHRONOUSLY$INDEX]="yes" [[ $start_sync == 0 ]] && properties[START_SYNCHRONOUSLY$INDEX]="no" properties[STOP_SYNCHRONOUSLY$INDEX]="yes" [[ $stop_sync == 0 ]] && properties[STOP_SYNCHRONOUSLY$INDEX]="no" done #============================================================== : Even if there is no value for a given attribute, we want to : display a placeholder for it, so the customer always sees a : consistent, complete set of attributes. #============================================================== for key in ${_COLON_ATTR_ORDER[tape]}; do if [[ -z ${properties[$key$INDEX]} ]]; then properties[$key$INDEX]="" fi done (( INDEX++ )) [[ $INDEX == *0 ]] && (( INDEX++ )) done #========================================================== : If any searches/filters were specified, handle them now #========================================================== if (( $rc == RC_SUCCESS && ${#queries[*]} > 0 )); then CL=$LINENO search_properties queries properties rc=$? fi (( $rc == RC_SUCCESS )) && CL=$LINENO prune_indexes properties log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_tape_attributes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_tape_attributes =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:10 Last Changed: 6/1/15 14:57:19 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_tape_attributes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query tape [,,,...] clmgr -v query tape NOTE: the alias for "tape" is "tp". =head1 DESCRIPTION Retrieves the configuration data for one or more PowerHA tapes. =head1 ARGUMENTS 1. tape [REQUIRED] [string] The label of one or more tapes (comma or space separated) that are to be queried. 2. properties [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  l괡nHםa՝a֝a&v+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_user_attributes   =eirst #$EIanopu");ACDLMNOPRST[]_cdfghlm(*./1:GUXbvy{}&,-02>HKY\kw%'345BFWqx!+679=e9H 01H X bsrL (bb0h z #  B8aS: .p%tN=.~)|a"rDGAĿ qb .'(XD_8r_Υ}r_BK,JImmmmmԿko':'((\,srTӶmmmmj_?5nf͎XKѭF/ ͛!1(EQ$ϲK1,% ̥@P(WX 8@c 8%f @D/‚F\$*`4h(eApA@1 *gP"b0 c1.\p"03 cRDX3pÁb_8 P Hs3@1 1@f0xD)a/xE0h _ja1]ȗE)%T$EJ&X'B'⋹h/ Acu\Qw"\M 6.;pxѣ̥Zˊ.KJ8ؾh|\쇛676lw2_=G6 b⋹hҎ6.1/K,J_=G6 Kj(T0B)(J_&.bPD¥j7 xĿϹ/̱)%( & \ TT¸ zɁ04l_hP U\Qw"\M@P(WX 8@cnk.Kϲ(+uMqE܉q4Rh,ظ F2 ⋹hҎ6. aFycEatsTatr (Ѡ46lh_.j.CpPhB0sb&.cQĿ2Ĥz #  B8aS: .pp,rK.CQ.'(m8=G, Áb_;T.@5XŊ2%r  Ѹ &8KI/mmmmmmmmԿC/w΍QsHnvOXwEMNЋ@ K?c<6"ۄ .vC͛6;a/#P4҄(B”0p^@EL0ne\4$h mpE0 QA4D 2L" p^@EL0ne\4$h mpE0 QD{1@XPJX P¤ "`h~ _r)ܹ@3T HsI$TA${1@XPJX P¤ "`h~ _$Kz[DGI"pӨx`<]A$L@$* (7 ~<,-o^+I[&XNFr DyvSA$L@$* Os( iBKTSaJTRL AKDG `j .p2Ċ%}%mmmmmmmj_fZm(g|ŷ^p1{ROk/pq._mmmmmmmm}_A 0;<_ja1N̄ *peH,, K"L&8)@2,j7 nAyc2,pX d YSAc!ʘL".eLU *`KѬơeLfFd YS *A`1eH@(1bJXb__Tn t%/mmmmmmmԿ`3 V  ItPЖ$\i_=U_mmmmmmmmT,IS"# KK"L&9Q%L *"PK/̄ +C!ʘe/&Kh֡e{q,36lw2_?5&XNFr DyvS6lw2_=G,(i ,QRM(aRJ04?@k52LD ( P"b&XQʈ,"f0nfe\4$h mpGh1Eq†P(TR TCϹ$Ӷmmmmmj_s|&3/ۄ ~@XnDaΡeD1/mmmmmڗOe|]04Py5TXD/,=b*"dR4kP t/6o30ܤ:Ň\X\[b'2t%'=t"QbU7T,=bEKs=ڀR`hyk8 \c ,PFŇ]4yj_L "Mb2\yJ,PFŇ]4pR`hu.8">"bOe|]04@0">" Òm K"L&81Ab.at]/u&<<_s  I0`Z$ǘK7&<>&<"LyxK`Կ{-K遡cXDI0Kp K,JImmmmmmmm),n? wCaQtM}),k/pqN&_AK"\e~}'OC8 03D-$vmmmmmmm]^Ρr(: ER$̰C;>ѯ28aB,`g ;2mO$ePMa!.~Wo&6^atHw#i#'OۃA cits,`Br)/c_:"褟׆.b2{eBxt5iusY:vINN%$p(3t+Ow13]Le O뤟Q9,챣]NḵmMKI?]xQ5du4 3  0v.epIOnb$I.dyC!k6;'t;/^.(W2>ѯ28t3KX'8JZ8 u$𛢇Ѯ'sz5X4.:t6BlIxb$xM$i?2Ć$I[MFXēI<ŷ#,YsԓI;mmmmmmmmmmHlc="Y;%pӭP5"@rIT2j$p<2LN7 yMJ`%R*Q$/c(19xdK:|^48 À(x K$#B$  (</ (eb !@J!py$B5BPB+FhlK2w۟'0qkFA KC2s;=^:'c &X@=\3 cE,jN ]Pr)=ŝ:]\]$\v@`uRHR1{ ̰, nba PAa`,8 Hz$Yw CeI+n=!zI;mmmmmmmmmm$G#⸜"T q衠O {Kz+mmmmmmmmmڐ` kn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_unused_service_labelste#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_unused_service_labels.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)09 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_unused_service_labels.sh, hacmp.assist, 61haes_r714 6/10/12 15:22:57 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_get_unused_service_labels =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:16 Last Changed: 6/10/12 15:22:57 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_unused_service_labels.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_get_unused_service_labels =head1 DESCRIPTION Get a list of unused service IP labels (i.e. that are not already part of a resource group, but are defined within HACMPadapter). =head1 ARGUMENTS None =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_get_unused_service_labels { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_get_unused_service_labels.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i found= typeset service= for service in $(CL=$LINENO KLIB_HACMP_get_service_labels); do found=0 print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q \"name=SERVICE_LABEL and value=$service\" HACMPresource" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q "name=SERVICE_LABEL and value=$service" HACMPresource | while read; do found=1 done print "odmget RC: $?; found == \"$found\"" >>$CLMGR_TMPLOG # Always log command result (( found == 0 )) && echo $service done log_return_msg 0 "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_get_unused_service_labels()" eT ln_[םa՝a֝a&|5bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_get_volume_group_attributes   =e ainorst$E_cdlp"#-ACDILMNOPRST[]fghmuv().:;GUVbwy&*,/012>FHX\k{}!%'BKYq|+3469 OO ZqkG `A`A`X$ |rqqӗ .8e$TA4L``̈M2ʒ* !fd[_}rYa\ں:gfrN  򊀠 6 Y`p < SLgnigc .A;l`h33$-rmZXܴ`bd@{{cʖˑȾwnڶrMsXEp  X01-qӖ^qCj 2/r\\uf?v tZAr\\LW0;@aC֪-Rx{"+IXREDH̎`}p6@!܁K8LG@Q" JaɖL40YL`t9h'r N #i4rm 4 ``p4`ʪ `̣OwH@pe;sM @~; ]6qp ܘ12%"<;2y.g><2 ztg[;WXذgYkRz,c yDf<72y zt`0gƘ,T~nYY5VBrB;oVz>˂ yGjq _= @~[6Ns=l,MC!9-V͹jѶ+ݿR -jN)hn g?7A[A+Wj]Vͻ)U ` ȽtwzjP,0^qԛz8Np?3ΖqXk0fUA9O^`ng#ۥ,ڡ ]6׊9vgq}ڶk0f^/wn90nvPܬ\E+~׌;`|4aj/tEn^\yÙŗHȉrZt^-[BB  zt|^' y9kB,=|תث/Ԃj.@׹eu>v!UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL8M~"v!,M ՐjCQD[?*Hd$ D2( Qd֒hNn1 Elsgn8I("ZzN*R%Ǧ"P (T2gʪgv<B;^+{Qj4BՐ^];"skv@A: _3Е =|Mt gʪg-xX^X3 VAt-`h֊@ٰglD( @Wb9^};3Ζu*6VF[9ǪŃ2/6o -b Flt-(*-qɳX>Ȝy,#ڼB|mxF`Rz ^}s6VVj@YEZI:⇜FMi!: ~;g2⇜`b \^ޢ%;oBzByOj= m n|mW⇛pgׄ[Vrzrʐ&@~p׃>pyւ.P-?V'^p! ;s<6+~Xt'^!j-O@[~H!i& \axNhZ -EK gghi"D&'^/qF`q& \dH D"T۞4v0@53 E ״BEII1DK -EK gfc_^0^7\HQL@Qȑ(A l?z3uB0BZ ;sƜnX@YQx{r4]#DKI1DK"D&¢/ 1 f둢H$a%$7H#E H$JH"lYqgW\g.1SZD-EY2R$H] NB9?s 8 Yq=#0gq"` HE$PxdH#x皆@w01U*fc_~65lۺZYkRv9kt M;XWWsBD 8h4&Gf͇=ogW\%W FP{Oܰ@@07΅P: c?s4k4LLGȒK6l?{?* ܩ|T gsDiDJ$PL$}VLQd֒hN䱪Ix) BE U烑22"I,DD$\<$S gsDiDJ$PL$ Δp?v D@HXU;H"t hV FlN"~1:'_nFBu?f[Yқ*"P'hM`gaax ~3xƍŢ 4"%(TZ&Tڋ&Bud'%RKL$,kB P(8 b/Ht̓,H,(Yk@kՓ?Y5!9,j^ bƿD(+r@lpr&R&X#I%AșHd$?>qR,^.|qh "HD6(@`vɭ$НY eLJh}T⠼Dy"b2L"3EenHh6Z&R&Y"I%7HpyI`r#.egI("ZlPJD 830C:``3&GR!j6z&R&X#I$y$-`p?Ӛ&R&X#I$ZVdDy"b0䉈LzE˕.{D־pԂZzݫj䄉yDf<4$pF4LLE˃ȒK6o=),r$85R.=4*]y$-`p?Ӛ&R&Y"I$c?k!?ٷlF-{^jZ 5m b扭xF gokw9Ym 3xƍŢHHd/s`hI⇜A(;^7)N|);0X3H@ DH@Ɗi[Yҝ"|)Y+k:SB0$,*B:0gN!HB¬gZ1;Ղ@ 7;#H:tN [P{OٺEVt`c?i[?o\R{W9}`b ~ ?Ւw-䉈LFtG& ]2f `X/zE˕.{O)f'z+jxY)&D%"Ps?bV\zfGH030hֈ4%ڥ66@q?#bZ xI(BDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAt 6w񹠋͑Q=ֆ9h'r!j.LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUT󐎄~?DH@~\F$$M2&rڮ69"%Ճ?$DX Xr(N87|"Q*D(HD2~o&yHDYHD"% !gړ䈔H5䈔J "Q P+AÇ|fZ7+vr3uADB M(Nz0Y,u2to ^j5q6lQe BwE ״p9䉈L2Ċ3bܮxqQ5"YX^TMF`00>g^0^7\`bXpI$H D Bk8QX3 {?׌#F"XcI%$7B@[?i[?׌#F"XcI%$7B^|-sV͹]ж.h׽[^3Rl] VArյ}ӵqGL팯kgx.fZ/lb\Q=mB=C9/!BDJ$ ~$8",8p@UC!A!t@$*!ĩaKC!ĩ@8HXUCR!A!ā@0Xp@Vc?s4kDHq~ &JAeJ3fѭ!ĺ[/͛|Hq*qJųѭ!ĺX^lCPg㙣Z"CX2 ,͛z!ĩ@>Ag@ЛuZ&+; $g19@A5OBعk\a϶jz=Hsmg?r VAr׍Z¸Xmxm\W];?lDHq}g``ē*HDAh@ 0DxI$"M#(A DHq,<=B C$AR./qFH )DB M"C,Y3@ ^0^7\,8D"PAt_S),8AYDеjDHq&^&n{? ׌#DȈe$㈒Hd"D&Yƭ+ 3^0^7\" \q"I" "` 0qCb53u2"I0x$ &(A ؿ`x{r4LqRL8$&@($JH"n,/ܚ?8DTʔ ׌#CLLp$DI%$7H%HA2eH$M VDgfhhZUf͇=oghyRKH(A qJų֕x{r4~s0gqYX)yIM sT;SƩyIM sT;SƩȒHi3ׂ>I$Pq4y#{ͯWyt<"}t\6lk2q1]E8jK^gytZ0g{f<72z<"}t^,PcL jM~h%jgytExJs',h#xe.:ew]k?oNyg>yDf<7@RA;R B6 F^|^'gu{SI*\Ci9 =}{f7gg眄On?K0*X;^{U0g(z~N眄On8({t >`LWȐ!|53"NAR `̪ rA-ޭzP `ʪ@&?VАQE(`F+hAO@41zڨ3(8Lf""AW<)*=oy`㖽WNйj O:XP'}׶l Ws=y-`zUӄqG,O8竺`WtG,'{CX22PQbM&97=[|͢r~ v,&4QvX3I0eUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSh\|;D8/@f6 `Xx k֒n, םa՝a֝a&, bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_appmonitor#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appmonitor.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)28 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appmonitor.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:23 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_appmonitor =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:43 Last Changed: 6/10/12 15:32:23 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appmonitor.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_appmonitor =head1 DESCRIPTION Determines if the specified application monitor is configured within the cluster. =head1 ARGUMENTS 1. monitor [REQUIRED] [string] The label of the application monitor that is to be be searched for. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_appmonitor { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appmonitor.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset monitor=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $monitor ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q monitor=$monitor HACMPmonitor" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q monitor=$monitor HACMPmonitor |\ while read line; do rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_appmonitor()" 26/2 ksn! םa՝a֝a&! bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_appserver#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appserver.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)02 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appserver.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:24 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_application =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:46 Last Changed: 6/10/12 15:32:24 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appserver.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_application =head1 DESCRIPTION Determines if the specified application controller is configured within the cluster. =head1 ARGUMENTS 1. server [REQUIRED] [string] The label of the application controller that is to be be searched for. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_appserver { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_appserver.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset server=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $server ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q name=$server HACMPserver" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q name=$server HACMPserver |\ while read line; do rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_appserver()" HA/61ah ktn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_coderver#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_cod.sh 1.2.1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)68 1.2.1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_cod.sh, hacmp.assist, 61haes_r720, 1507A_hacmp720 1/27/15 08:41:57 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_cod =head1 VERSION Version Number: 1.2.1.4 Last Extracted: 2/9/15 16:43:08 Last Changed: 1/27/15 08:41:57 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_cod.sh, hacmp.assist, 61haes_r720, 1507A_hacmp720 =head1 SYNOPSIS KLIB_HACMP_is_known_cod =head1 DESCRIPTION Determines if the specified application controller is configured for Resource Optimized High Availability services. =head1 ARGUMENTS 1. application_controller [REQUIRED] [string] The name of the application controller to test for Resource Optimized High Availability settings. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2015 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_cod { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2.1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_cod.sh, hacmp.assist, 61haes_r720, 1507A_hacmp720 : INPUTS: $* typeset application_controller=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset name= start_script= stop_script= typeset use_desired= optimal_mem= optimal_cpu= optimal_pu= optimal_vp= #================= : Validate input #================= if [[ -z $application_controller ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset APPLICATION_CONTROLLER_PROPERTIES= typeset -i index=0 print -- "$0()[$LINENO]($SECONDS): cllsserv -cl -n $application_controller" >>$CLMGR_TMPLOG # Always log commands APPLICATION_CONTROLLER_PROPERTIES=$(cllsserv -cl -n $application_controller) rc=$? print -- "$0()[$LINENO]($SECONDS): cllsserv -cl -n $application_controller rc=$rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESSS )); then print -- "$APPLICATION_CONTROLLER_PROPERTIES" |\ while IFS=: read name start_script stop_script use_desired optimal_mem optimal_cpu optimal_pu optimal_vp rem do [[ $name == \#* ]] && continue # Skip the column headers optimal_mem=$(CL=$LINENO trim $optimal_mem) optimal_pu=$(CL=$LINENO trim $optimal_pu) # An application controller is a cod if at least one of the cod fields is set if [[ $use_desired != 0 || \ $optimal_mem != +(0)\.+(0) || \ $optimal_cpu != 0 || \ $optimal_pu != +(0)\.+(0) || \ $optimal_vp != 0 ]]; then list[$index]=$name (( index++ )) fi done fi (( index == 0 )) && rc=$RC_NOT_FOUND fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_cod()"  kun5םa՝a֝a&5bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_dependency#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_dependency.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)52 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_dependency.sh, hacmp.assist, 61haes_r714 10/10/12 10:30:17 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_dependency =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:03 Last Changed: 10/10/12 10:30:17 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_dependency.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_dependency =head1 DESCRIPTION Determines if the specified dependency is configured within the cluster. =head1 ARGUMENTS 1. dependency [REQUIRED] [string] The clmgr label representing the dependency to be searched for within the cluster. 2. type [OPTIONAL] [string] An indicator of what type of dependency this is, from the set: PARENT_CHILD SAME_NODE or NODECOLLOCATION SAME_SITE or SITECOLLOCATION, DIFFERENT_NODES or ANTICOLLOCATION =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. #================================================================ # Returns: 0: if no non-whitespace differences were found. # 1: if SET1 contained an item that SET2 did not # 2: if SET2 contained an item that SET1 did not #================================================================ function set_differences { typeset SET1=${1//,/ } typeset SET2=" ${2//,/ } " [[ $SET1 == $SET2 ]] && return 0 typeset ITEM= for ITEM in $SET1; do if [[ " $SET2 " == *\ $ITEM\ * ]]; then SET2="${SET2// $ITEM / }" else return 1 # SET1 contained an item that SET2 did not fi done [[ $SET2 != +([[:space:]]) ]] && return 2 # SET2 contained an item # that SET1 did not return 0 } # End of "set_differences()" function KLIB_HACMP_is_known_dependency { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_dependency.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset dependency=${1//\"/} # Required typeset -u type=${2//\"/} # Optional type=${type#\(} type=${type%\)} [[ -n $3 ]] && typeset -n DEPENDENCIES=$3 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset line= rg= parent= child= ODMDATA= id_list= typeset -A list pcdeps stopafterdeps startafterdeps typeset RESULT=1 typeset -i INDEX=0 I=0 rc=$RC_UNKNOWN typeset -i return_list=0 [[ -n $3 ]] && return_list=1 unset DEPTYPE : Remove all whitespace dependency=${dependency//+([[:space:]])/} : See if a dependency type was also provided if [[ $dependency == *\(*\)* ]]; then type=${dependency##*\(} type=${type%%\)*} dependency=${dependency/\(*\)} fi #================= : Validate input #================= if [[ -z $dependency ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else #================================================================ : Load all known dependencies, avoiding the "list_dependencies" : function. Using that function here would result in a circular : reference, which will cause ksh93 to core dump! #================================================================ ## ## ACQUIRE/RELEASE ORDER ## print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgorder -s | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgorder -s | /usr/bin/grep -v '#' |\ IFS=: read sel_acq par_acq ser_rel par_rel for rg in ${par_acq//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done print "clrgorder RC: $?" >>$CLMGR_TMPLOG # Always log command result if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (ACQUIRE_IN_PARALLEL)" (( INDEX++ )) fi dep= for rg in ${sel_acq//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (ACQUIRE_SERIALLY)" (( INDEX++ )) fi dep= for rg in ${par_rel//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (RELEASE_IN_PARALLEL)" (( INDEX++ )) fi dep= for rg in ${ser_rel//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (RELEASE_SERIALLY)" (( INDEX++ )) fi ## ## PARENT/CHILD ## if [[ -z $type || $type == "PARENT_CHILD" ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t PARENT_CHILD -sl | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t PARENT_CHILD -sl |/usr/bin/grep -v '#' |\ while read parent child; do if [[ -n ${pcdeps[$parent]} ]]; then pcdeps[$parent]="${pcdeps[$parent]},$child" else pcdeps[$parent]=$child fi done print "clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result for parent in ${!pcdeps[*]}; do list[$INDEX]="${parent}+${pcdeps[$parent]} (PARENT_CHILD)" (( INDEX++ )) done fi ## ## STOP AFTER ## if [[ -z $type || $type == "STOP_AFTER" ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t STOP_AFTER -sl | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t STOP_AFTER -sl 2>>$CLMGR_TMPLOG |/usr/bin/grep -v '#' |\ while read source target; do if [[ -n ${stopafterdeps[$target]} ]]; then stopafterdeps[$target]="${stopafterdeps[$target]},$source" else stopafterdeps[$target]=$source fi done print "clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result for target in ${!stopafterdeps[*]}; do list[$INDEX]="${target}+${stopafterdeps[$target]} (STOP_AFTER)" (( INDEX++ )) done fi ## ## START AFTER ## if [[ -z $type || $type == "START_AFTER" ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t START_AFTER -sl | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t START_AFTER -sl 2>>$CLMGR_TMPLOG |/usr/bin/grep -v '#' |\ while read source target; do if [[ -n ${startafterdeps[$target]} ]]; then startafterdeps[$target]="${startafterdeps[$target]},$source" else startafterdeps[$target]=$source fi done print "clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result for target in ${!startafterdeps[*]}; do list[$INDEX]="${target}+${startafterdeps[$target]} (START_AFTER)" (( INDEX++ )) done fi ## ## SAME SITE ## if [[ -z $type || $type == @(SAME_SITE|SITECOLLOCATION) ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t SITECOLLOCATION -sl | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t SITECOLLOCATION -sl | /usr/bin/grep -v '#' |\ while read dep; do dep=${dep//+([[:space:]])/,} list[$INDEX]="$dep (SAME_SITE)" (( INDEX++ )) done print "clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result fi ## ## SAME NODE ## if [[ -z $type || $type == @(SAME_NODE|NODECOLLOCATION) ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t NODECOLLOCATION -sl | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t NODECOLLOCATION -sl | /usr/bin/grep -v '#' |\ while read dep; do dep=${dep//+([[:space:]])/,} list[$INDEX]="$dep (SAME_NODE)" (( INDEX++ )) done print "clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result fi ## ## DIFFERENT NODES ## if [[ -z $type || $type == @(DIFFERENT_NODES|ANTICOLLOCATION) ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t ANTICOLLOCATION -sl | /usr/bin/grep -v '#'" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t ANTICOLLOCATION -sl | /usr/bin/grep -v '#' |\ while IFS=: read high int low; do high=${high//+([[:space:]])/,} int=${int//+([[:space:]])/,} low=${low//+([[:space:]])/,} list[$INDEX]="${high}+${int}+${low} (DIFFERENT_NODES)" (( INDEX++ )) done print "clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result fi INDEX=0 for (( I=0; I<${#list[*]}; I++ )); do [[ -n $type && ${list[$I]} != *\($type\)* ]] && continue [[ $dependency == *\+* && ${list[$I]} != *\+* ]] && continue [[ $dependency == *,* && ${list[$I]} != *,* ]] && continue ################################################################# ## TEMPORAL DEPENDENCY (order matters; location is irrelevant) ################################################################# if [[ $type == @(PARENT_CHILD|STOP_AFTER|START_AFTER) || \ $dependency == *\+* ]] then parents=${dependency%%\+*} parents=${parents//,/ } children=${dependency##*\+} children=${children//,/ } DEPTYPE=${list[$I]} DEPTYPE=${DEPTYPE##*\(} DEPTYPE=${DEPTYPE%%\)*} list[$I]=${list[$I]%%*([[:space:]])\(*} group_parents=${list[$I]%%\+*} group_parents=${group_parents//,/ } set_differences "$parents" "$group_parents" if (( $? == RC_SUCCESS )); then group_children=${list[$I]##*\+} group_children=${group_children//,/ } set_differences "$children" "$group_children" if (( $? == RC_SUCCESS )); then rc=$RC_SUCCESS if (( return_list )); then DEPENDENCIES[$INDEX]="${list[$I]} ($DEPTYPE)" (( INDEX++ )) fi break fi else unset DEPTYPE fi #################################################################### ## LOCATION DEPENDENCY (order is irrelevant; only location matters) #################################################################### else DEPTYPE=${list[$I]} DEPTYPE=${DEPTYPE##*\(} DEPTYPE=${DEPTYPE%%\)*} dependency=${dependency//,/ } list[$I]=${list[$I]%%*([[:space:]])\(*} set_differences "$dependency" "${list[$I]//,/ }" if (( $? == RC_SUCCESS )); then rc=$RC_SUCCESS if (( return_list )); then DEPENDENCIES[$INDEX]="${list[$I]} ($DEPTYPE)" (( INDEX++ )) fi break else unset DEPTYPE fi fi done export DEPTYPE (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_dependency()" TIO kvn\ םa՝a֝a&\ bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_efsndency#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_efs.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)85 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_efs.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:26 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_efs =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:32 Last Changed: 6/10/12 15:32:26 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_efs.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_efs =head1 DESCRIPTION Determines if EFS is configured within the cluster. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_efs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_efs.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset OUTPUT= #================= : Validate input #================= print -- "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q \"group=EFSKeyStore AND name=mode\" HACMPLDAP" >>$CLMGR_TMPLOG OUTPUT=$(/usr/bin/odmget -q "group=EFSKeyStore" HACMPLDAP 2>>$CLMGR_TMPLOG) print "$0()[$LINENO]($SECONDS): odmget RC: $?" >>$CLMGR_TMPLOG [[ $OUTPUT != *([[:space:]]) ]] && rc=$RC_SUCCESS || rc=$RC_ERROR log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_efs()" H$ kt2wnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_eventency#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_event.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_event.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_event =head1 SYNOPSIS KLIB_HACMP_is_known_event =head1 DESCRIPTION Determines if the specified event is configured within the cluster. =head1 ARGUMENTS 1. event [REQUIRED] [string] The name of the event to search for on this node. 2. type [OPTIONAL] [set] The type of the event: ALL, CUSTOM, PREDEFINED =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_event { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset event=${1//\"/} typeset -u type=${2//\"/} if [[ -n $3 ]]; then typeset -n DISCOVERED_TYPE=$3 DISCOVERED_TYPE="" fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE= #================= : Validate input #================= if [[ -z $event ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ $type == *([[:space:]]) || $type == @(\*|A|C)* ]]; then print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllscustom -t event -n $event" >>$CLMGR_TMPLOG if [[ $($HAUTILS/cllscustom -t event -n $event | /usr/bin/grep -v '^#') != *([[:space:]]) ]] then rc=$RC_SUCCESS [[ -n $3 ]] && DISCOVERED_TYPE="CUSTOM" print -- "$0()[$LINENO]($SECONDS): cllscustom RC: $rc" >>$CLMGR_TMPLOG else print -- "$0()[$LINENO]($SECONDS): cllscustom RC: $RC_NOT_FOUND" >>$CLMGR_TMPLOG fi fi if (( $rc != RC_SUCCESS )) || [[ $type == @(\*|A|P)* ]]; then print -- "$0()[$LINENO]($SECONDS): clodmget -q\"name = $event\" -f name -n HACMPevent" >>$CLMGR_TMPLOG OUTPUT=$(clodmget -q"name = $event" -f name -n HACMPevent 2>>CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): clodmget RC: $rc" >>$CLMGR_TMPLOG if [[ -n $OUTPUT ]] then rc=$RC_SUCCESS if [[ -n $3 ]]; then if [[ -n $DISCOVERED_TYPE ]]; then DISCOVERED_TYPE="ALL" else DISCOVERED_TYPE="PREDEFINED" fi fi else rc=$RC_NOT_FOUND fi fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_event()"  kExnO םa՝a֝a&O bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_fallback_timertes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_fallback_timer.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)10 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_fallback_timer.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:27 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_fallback_timer =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:52 Last Changed: 6/10/12 15:32:27 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_fallback_timer.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_fallback_timer =head1 DESCRIPTION Determines if the specified fallback timer is configured within the cluster. =head1 ARGUMENTS 1. timer [REQUIRED] [string] The label of the fallback timer that is to be search for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_fallback_timer { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_fallback_timer.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset timer=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $timer ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cltimerpolicy -a list -f smit -n $timer" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cltimerpolicy -a list -f smit -n $timer |\ while read line; do rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "cltimerpolicy RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_fallback_timer()" i k`yn-םa՝a֝a&-bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_file_systemertes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_file_system.sh 1.12 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_file_system.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_file_system =head1 VERSION Version Number: 1.9 Last Extracted: 6/13/16 11:34:43 Last Changed: 3/19/15 15:53:46 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_file_system.sh, hacmp.assist, 61haes_r720 =head1 SYNOPSIS KLIB_HACMP_is_known_file_system =head1 DESCRIPTION Determines if the specified file system is configured within the cluster. =head1 ARGUMENTS 1. vgname [REQUIRED] [string] The label of the volume group that is to be search for within the cluster. 2. rg [OPTIONAL] [string] A reference to use for returning the resource group for this file system. 3. nodelist [OPTIONAL] [string] A reference to use for returning the nodes for this file system. 4. vg [OPTIONAL] [string] A reference to use for returning the volume group for this file system. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_file_system { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_file_system.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset fsname=${1//\"/} [[ -n $2 ]] && typeset -n rg=$2 [[ -n $3 ]] && typeset -n nodelist=$3 [[ -n $4 ]] && typeset -n vg=$4 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN cmd_rc=$RC_UNKNOWN typeset name="" rem="" FS_FILE="$TMPDIR/clmgr.KHikfs.$$" typeset -i try=0 tries=5 typeset RG="" VG="" #================= : Validate input #================= if [[ -z $fsname ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ $FS_COUNT != +([[:digit:]]) ]] || (( FS_COUNT <= 1 )); then while (( $try < $tries )); do print "$0()[$LINENO]($SECONDS): $HASBIN/cl_showfs2" >>$CLMGR_TMPLOG $HASBIN/cl_showfs2 >$FS_FILE 2>>$CLMGR_TMPLOG cmd_rc=$? print "cl_showfs2 RC: $cmd_rc" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc == RC_SUCCESS )) && \ [[ -f $FS_FILE && $(head -1 $FS_FILE) != \#* ]] then cmd_rc=$RC_ERROR # Found unexpected, error output fi (( $cmd_rc == RC_SUCCESS )) && break (( try++ )) if (( $try <= ( $tries - 1 ) )); then sleep $try fi done (( $cmd_rc != RC_SUCCESS )) && rc=$RC_ERROR elif [[ -f /var/hacmp/tmp/chocls.try_out ]]; then cp /var/hacmp/tmp/chocls.try_out $FS_FILE else rc=$RC_ERROR fi if (( rc == RC_UNKNOWN )); then while read name vg rg nodelist rem; do [[ $name == *([[:space:]]) || $name == \#* ]] && continue if [[ $name == $fsname ]]; then if [[ -n $rem ]]; then rem=${rem%%+([[:space:]])} nodelist=${rem##*[[:space:]]} fi RG=$($HAUTILS/clodmget -n -q "name=FILESYSTEM AND value=$fsname" -f group HACMPresource) if [[ -z "$RG" ]]; then VG=$(/usr/es/sbin/cluster/events/utils/cl_fs2disk -v $fsname) RG=$($HAUTILS/clodmget -n -q "name=VOLUME_GROUP AND value=$VG" -f group HACMPresource) fi if [[ -n "$RG" ]]; then rg=$RG fi rc=$RC_SUCCESS break fi done <$FS_FILE fi /usr/bin/rm -f $FS_FILE (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_file_system()" vg k>]znD םa՝a֝a&D bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_filecollectiontes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_filecollection.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)93 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_filecollection.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:31 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_filecollection =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:21 Last Changed: 6/10/12 15:32:31 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_filecollection.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_filecollection =head1 DESCRIPTION Determines if the specified file collection is configured within the cluster. =head1 ARGUMENTS 1. fc [REQUIRED] [string] The label of the file collection that is to be search for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_filecollection { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_filecollection.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset fc=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $fc ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q name=$fc HACMPfilecollection" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q name=$fc HACMPfilecollection |\ while read line; do rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_filecollection()" er/u k2 {n" םa՝a֝a&" bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_groupllect#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_group.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)08 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_group.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:31 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_group =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:12 Last Changed: 6/10/12 15:32:31 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_group =head1 DESCRIPTION Determines if the specified group is configured within the cluster. =head1 ARGUMENTS 1. group [REQUIRED] [string] The name of the group to search for on this node. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset group=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE= #================= : Validate input #================= if [[ -z $group ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): /usr/sbin/lsgroup -a ALL" >>$CLMGR_TMPLOG # Always log commands /usr/sbin/lsgroup -a ALL 2>/dev/null |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue LINE=${LINE##+([[:space:]])} LINE=${LINE%%+([[:space:]])} if [[ $LINE == $group ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_group()" st=$3  kX |ngםa՝a֝a&gbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_hmcpllect#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_hmc.sh 1.1.1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_hmc.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_hmc =head1 VERSION Version Number: 1.1.1.6 Last Extracted: 8/9/16 14:12:29 Last Changed: 7/29/16 10:31:33 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_hmc.sh, hacmp.assist, 61haes_r721, 1631A_hacmp721 =head1 SYNOPSIS KLIB_HACMP_is_known_hmc =head1 DESCRIPTION Determines if the specified HMC is configured within the cluster. =head1 ARGUMENTS 1. HMC [REQUIRED] [string] The name of the HMC to search for on this node. Either hostname or IP address for the HMC. IPv4 and IPv6 format address are supported. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2015 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_hmc { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_hmc.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n hmclabel=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i found=0 typeset -A list #================= : Validate input #================= if [[ -z $hmclabel ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset HMC="" rest="" typeset HMC_PROPERTIES= print -- "$0()[$LINENO]($SECONDS): cllshmc -c -u $hmclabel" >>$CLMGR_TMPLOG # Always log commands HMC_PROPERTIES=$(cllshmc -c -u $hmclabel) rc=$? print -- "$0()[$LINENO]($SECONDS): cllshmc -c -u $hmclabel rc=$rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then print -- "$HMC_PROPERTIES" | while IFS=: read name timeout retry_count retry_delay rem; do [[ $name == \#* ]] && continue # Skip the column headers rc=$RC_SUCCESS done else #================================ : Convert Host name/Ip to Name # print -- "$0()[$LINENO]($SECONDS): host $hmclabel" >>$CLMGR_TMPLOG # Always log commands HMC=$(LC_ALL=C host $hmclabel 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): host $hmclabel output=$HMC rc=$rc">>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then print -- $HMC | IFS=' ' read hmclabel rest print -- "$0()[$LINENO]($SECONDS): cllshmc -c -u $hmclabel" >>$CLMGR_TMPLOG # Always log commands HMC_PROPERTIES=$(cllshmc -c -u $hmclabel) rc=$? print -- "$0()[$LINENO]($SECONDS): cllshmc -c -u $hmclabel rc=$rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then print -- "$HMC_PROPERTIES" | while IFS=: read name timeout retry_count retry_delay rem; do [[ $name == \#* ]] && continue # Skip the column headers rc=$RC_SUCCESS done fi fi fi (( $rc != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_hmc()" F k}nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_interfacet#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_interface.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)67 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_interface.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:32 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_interface =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:44 Last Changed: 6/10/12 15:32:32 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_interface.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_interface =head1 DESCRIPTION Determines if the specified interface is configured within the cluster. =head1 ARGUMENTS 1. interface [REQUIRED] [string] The label of the interface that is to searched for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_interface { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_interface.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset interface=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset value= if_names= if_addr= LINE= typeset name= type= nw= nettype= attr= node= ipaddr= haddr= if= typeset gname= netmask= hb_addr= site= prefix= family= remainder= #================================================== : Convert the provided interface into its network : names and aliases, as well as its IP address. #================================================== value=$(LANG=C LC_ALL=C /usr/bin/host $interface) if_addr=${value%%,*} if_addr=${if_addr##*+([[:space:]])} if_names=${value##*:} if_names=${if_names//,/} #================= : Validate input #================= if [[ -z $interface ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else #===================================================== : Make sure to use the label of the interface, since : it might have been passed in as an IP address. #===================================================== print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllsif -pcS" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllsif -pcS |\ while read LINE; do : Handle possible IPv6 address typeset IPv6= if [[ $LINE == *\[* ]]; then IPv6=${LINE##*\[} IPv6=${IPv6%%\]*} LINE=${LINE/\[$IPv6\]/[${IPv6//:/_}]} fi print -- "$LINE" | IFS=: read name type nw nettype attr node ipaddr haddr if gname netmask hb_addr site prefix family remainder : Handle possible IPv6 address ipaddr=${ipaddr//_/:} ipaddr=${ipaddr/\[/} ipaddr=${ipaddr/\]/} for value in $interface $if_addr $if_names; do if [[ $value == @($name|$ipaddr) ]]; then rc=$RC_SUCCESS break fi done (( rc == $RC_SUCCESS )) && break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_interface()" ACMP_ kf~n םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_clientontes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_client.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)44 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_client.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:34 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_ldap_client =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:49 Last Changed: 6/10/12 15:32:34 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_client.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_ldap_client =head1 DESCRIPTION Determines if the specified LDAP client is configured within the cluster. =head1 ARGUMENTS 1. ldap_client [REQUIRED] [string] The name of the LDAP client to search for. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_ldap_client { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_client.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset ldap_client=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE= #================= : Validate input #================= if [[ -z $ldap_client ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"group=LDAPServer and name=ServerList\" -f value HACMPLDAP" >>$CLMGR_TMPLOG # Always log commands typeset DATA=$($HAUTILS/$HAUTILS/clodmget -q "group=LDAPClient and name=ServerList" -f value HACMPLDAP 2>/dev/null) rc=$? print "clodmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result print -- "$DATA" |\ while read LINE; do LINE=${LINE//\"/} LINE=${LINE##+([[:space:]])} LINE=${LINE%%+([[:space:]])} if [[ -n $LINE ]]; then LINE=${LINE//,/ } if [[ " $LINE " == *\ $ldap_client\ * ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_ldap_client()" LINE;  kꂊn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_serverontes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_server.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)77 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_server.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:35 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_ldap_server =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:51 Last Changed: 6/10/12 15:32:35 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_server.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_ldap_server =head1 DESCRIPTION Determines if the specified LDAP server is configured within the cluster. =head1 ARGUMENTS 1. ldap_server [REQUIRED] [string] The name of the LDAP server to search for. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_ldap_server { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_ldap_server.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset ldap_server=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE= #================= : Validate input #================= if [[ -z $ldap_server ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"group=LDAPServer and name=ServerList\" -f value HACMPLDAP" >>$CLMGR_TMPLOG # Always log commands typeset DATA=$($HAUTILS/$HAUTILS/clodmget -q "group=LDAPServer and name=ServerList" -f value HACMPLDAP 2>/dev/null) rc=$? print "clodmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result print -- "$DATA" |\ while read LINE; do LINE=${LINE//\"/} LINE=${LINE##+([[:space:]])} LINE=${LINE%%+([[:space:]])} if [[ -n $LINE ]]; then LINE=${LINE//,/ } if [[ " $LINE " == *\ $ldap_server\ * ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_ldap_server()" LINE;  k8n םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_log_server#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_log.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)41 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_log.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:35 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_log =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:48 Last Changed: 6/10/12 15:32:35 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_log.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_log =head1 DESCRIPTION Determines if the specified log is a recognized/known PowerHA log. =head1 ARGUMENTS 1. log [REQUIRED] [string] The name of the log to search for on this node. 2. directory [OPTIONAL] [string] A reference to use for returning the current directory of the specified log file. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_log { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_log.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset log=${1//\"/} [[ -n $2 ]] && typeset -n directory=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $log ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): $HAUTILS/clodmget -q \"name=$log\" -f value HACMPlogs" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clodmget -q "name=$log" -f value HACMPlogs |\ while read line; do directory=${line//\"/} rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "clodmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_log()"  kn)םa՝a֝a&)bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_logical_volumetes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_logical_volume.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)84 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_logical_volume.sh, hacmp.assist, 61haes_r714 7/3/12 12:09:18 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_logical_volume =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:32 Last Changed: 7/3/12 12:09:18 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_logical_volume.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_logical_volume =head1 DESCRIPTION Determines if the specified logical volume is configured within the cluster. =head1 ARGUMENTS 1. lvname [REQUIRED] [string] The label of the logical volume that is to be searched for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_logical_volume { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_logical_volume.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset lvname=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset LV_DATA= lv= rem= #================= : Validate input #================= if [[ -z $lvname ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset VGS= CL=$LINENO KLIB_HACMP_list_volume_groups VGS 2>>$CLMGR_TMPLOG for (( i=0; i<${#VGS[*]}; i++ )); do VG=${VGS[$i]} [[ $VG == *([[:space:]]) ]] && continue print -- "$0()[$LINENO]($SECONDS): $HASBIN/cl_lsvg -l $VG" >>$CLMGR_TMPLOG LV_DATA=$(LANG=C LC_ALL=C $HASBIN/cl_lsvg -l $VG 2>>$CLMGR_TMPLOG) print "cl_lsvg RC: $?" >>$CLMGR_TMPLOG print -- "$LV_DATA" |\ while read lv rem; do [[ $lv == *: || -z $lv ]] && continue [[ $lv == LV && $rem == NAME* ]] && continue if [[ $lvname == $lv ]]; then rc=$RC_SUCCESS break fi done # End of the LV data loop done # End of the VG loop (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_logical_volume()" t IPv6= k\nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_method_vol#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_method.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)07 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_method.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:37 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_method =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:57 Last Changed: 6/10/12 15:32:37 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_method.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_method =head1 DESCRIPTION Determines if the specified custom method is configured within the cluster. =head1 ARGUMENTS 1. method [REQUIRED] [string] The name of the custom method to search for. 2. type [OPTIONAL] [string] A reference to use for returning the type of the specified method. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_method { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_method.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset method=${1//\"/} [[ -n $2 ]] && typeset -n type=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset name= #================= : Validate input #================= if [[ -z $method ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else # # SNAPSHOT / VERIFY # print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllscustom -c -n \"$method\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllscustom -c -n "$method" 2>/dev/null |\ while IFS=: read name newtype rem; do [[ $name != $method ]] && continue [[ -n $type ]] && type="$type," type="$type$newtype" done print "cllscustom RC: $?" >>$CLMGR_TMPLOG # Always log command result # # NOTIFY # print -- "$HAUTILS/cllspgr -m \"$method\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllspgr -m "$method" 2>/dev/null |\ while read name; do [[ $name == *([[:space:]])\#* ]] && continue rc=$RC_SUCCESS [[ -n $type ]] && type="$type," type="${type}notify" break done print "cllspgr RC: $?" >>$CLMGR_TMPLOG # Always log command result fi [[ $type != *([[:space:]]) ]] && rc=$RC_SUCCESS || rc=$RC_ERROR log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_method()"  k각nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_groupetes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_group.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_mirror_group =head1 VERSION Version Number: 1.7 Last Extracted: 1/31/14 04:41:15 Last Changed: 5/15/13 17:07:07 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_mirror_group =head1 DESCRIPTION Determines if the specified mirror group is configured within the cluster. =head1 ARGUMENTS 1. mirror_group [REQUIRED] [string] The name of the mirror group to search for on this node. 2. TYPE [OPTIONAL] [reference] A string reference which can be used to return the discovered type of the specified mirror group. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_mirror_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_group.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset mirror_group=${1//\"/} [[ -n $2 ]] && typeset -n TYPE=${2//\"/} TYPE="" [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE="" name="" mode="" cg="" rec="" vid="" ss="" rest="" #================= : Validate input #================= if [[ -z $mirror_group ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_mg_director -d\"|\" -h $mirror_group" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_mg_director -d"|" -h $mirror_group 2>>$CLMGR_TMPLOG |\ while read LINE; do if [[ -n $LINE ]]; then print -- "$LINE" | IFS=\| read name mode cg rec vid ss rest if [[ $name == $mirror_group ]]; then $HAXDWIZ/clxd_list_mg_director -d"|" $mirror_group | grep "^$mirror_group|" >$TMPDIR/clmgr.KHikmg.$$ if (( $? == RC_SUCCESS )); then typeset STORAGE_SYSTEMS="" HORCM_INSTANCE="" REM="" /usr/bin/cut -f6,20 -d\| $TMPDIR/clmgr.KHikmg.$$ |\ IFS="|" read STORAGE_SYSTEMS HORCM_INSTANCE REM if [[ $STORAGE_SYSTEMS != *([[:space:]]) ]]; then typeset -A ssProps CL=$LINENO KLIB_HACMP_get_storage_system_attributes "${STORAGE_SYSTEMS%% *}" ssProps TYPE="${ssProps[TYPE]}" elif [[ $HORCM_INSTANCE != *([[:space:]]) ]]; then TYPE="hitachi" else TYPE="emc" fi rc=$RC_SUCCESS else TYPE="" rc=$RC_ERROR fi if [[ -f $TMPDIR/clmgr.KHikmg.$$ ]]; then /usr/bin/rm -f $TMPDIR/clmgr.KHikmg.$$ fi break else TYPE="" fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "$0()[$LINENO]($SECONDS): odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_mirror_group()" l 2>&1  k n3םa՝a֝a&3bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pairetes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pair.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)32 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pair.sh, hacmp.assist, 61haes_r714 10/24/12 17:29:23 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_mirror_pair =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:41:18 Last Changed: 10/24/12 17:29:23 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pair.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_mirror_pair =head1 DESCRIPTION Determines if the specified mirror pair is configured within the cluster. =head1 ARGUMENTS 1. mirror_pair [REQUIRED] [string] The name of the mirror pair to search for on this node. 2. TYPE [OPTIONAL] [reference] A string reference which can be used to return the discovered type of the specified mirror pair. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_mirror_pair { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pair.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mirror_pair=${1//\"/} [[ -n $2 ]] && typeset -n TYPE=${2//\"/} TYPE="" [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE="" name="" rest="" #================= : Validate input #================= if [[ -z $mirror_pair ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else TYPE="svc" print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_mdp_director -s $TYPE -d\"|\" -h $mirror_pair" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_mdp_director -s $TYPE -d"|" -h $mirror_pair 2>>$CLMGR_TMPLOG |\ while read LINE; do if [[ -n $LINE ]]; then print -- "$LINE" | IFS=\| read name rest if [[ $name == $mirror_pair ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "$0()[$LINENO]($SECONDS): odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_mirror_pair()" T  kyn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pooletes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pool.sh 1.2 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_mirror_pool =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:42:03 Last Changed: 7/7/12 16:03:42 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pool.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_mirror_pool =head1 DESCRIPTION Determines if the specified mirror pool is configured within the cluster. =head1 ARGUMENTS 1. mirror_pool [REQUIRED] [string] The name of the mirror pool to search for on this node. 2. volume_group [OPTIONAL] [string] The volume group that the specified mirror pool is configured within. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_mirror_pool { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_mirror_pool.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mirror_pool=${1//\"/} typeset volume_group=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN i=0 typeset available #================= : Validate input #================= if [[ -z $mirror_pool ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_list_mirror_pools available for (( i=0; i<${#available[*]}; i++ )); do if [[ -n $volume_group ]]; then if [[ ${available[$i]} == "$mirror_pool ($volume_group)" ]]; then rc=$RC_SUCCESS print -- "$mirror_pool ($volume_group)" # Return these values fi elif [[ ${available[$i]} == $mirror_pool\ * ]]; then rc=$RC_SUCCESS print -- "${available[$i]}" # Return these values fi done (( $rc != RC_SUCCESS )) && rc=$RC_NOT_FOUND print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_mirror_pool()" $rc" > kꔉn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_networkool#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_network.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)73 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_network.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:41 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_network =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:50 Last Changed: 6/10/12 15:32:41 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_network.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_network =head1 DESCRIPTION Determines if the specified network is configured within the cluster. =head1 ARGUMENTS 1. network [REQUIRED] [string] The label of the PowerHA network to search for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_network { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_network.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset network=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $network ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q name=$network HACMPnetwork" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q name=$network HACMPnetwork |\ while read line; do rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_network()" r/bin/s k@]nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_noderkool#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_node.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)99 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_node.sh, hacmp.assist, 61haes_r714 7/18/13 11:42:20 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_node =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:40:14 Last Changed: 7/18/13 11:42:20 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_node.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_node =head1 DESCRIPTION Determines if the specified node is configured within the cluster. =head1 ARGUMENTS 1. node [REQUIRED] [string] The label of the node that is to be searched for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_node { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_node.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset node=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= id= #================= : Validate input #================= if [[ -z $node ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else : See if a node ID was provided, instead of a label typeset cmd="odmget" if [[ $node == +([[:digit:]]) ]]; then if (( ${#node} > 10 )); then # Received a "GID" id=${node:10} # Remove the cluster ID, leaving only the node ID fi print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q node_id=$id HACMPnode" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q node_id=$id HACMPnode |\ while read line; do rc=$RC_SUCCESS if [[ $line == *([[:space:]])name\ =\ * ]]; then line=${line##* = \"} node=${line%\"} break fi done else cmd="clnodename" print "$0()[$LINENO]($SECONDS): $HAUTILS/clnodename" >>$CLMGR_TMPLOG # Always log commands typeset NODES=$($HAUTILS/clnodename) node=$(CL=$LINENO escape $node) if [[ " $NODES " == *+([[:space:]])$node+([[:space:]])* ]]; then rc=$RC_SUCCESS fi fi (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "$cmd RC: $rc" >>$CLMGR_TMPLOG # Always log command result print -- "$node" fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_node()" is_kn kyn"םa՝a֝a&"bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_novarkool#!/bin/ksh93 # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_nova.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_nova =head1 SYNOPSIS KLIB_HACMP_is_known_nova =head1 DESCRIPTION Determines if the specified NovaLink is configured within the cluster. =head1 ARGUMENTS 1. NovaLink [REQUIRED] [string] The name of the NovaLink to search for on this node. Either hostname or IP address for the NovaLink. IPv4 and IPv6 format address are supported. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_nova { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n novalabel=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i found=0 typeset -A list #================= : Validate input #================= if [[ -z $novalabel ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset NOVA="" rest="" #================================ : Convert Host name/Ip to Name #================================ print -- "$0()[$LINENO]($SECONDS): LC_ALL=C host $novalabel" >>$CLMGR_TMPLOG # Always log commands NOVA=$(LC_ALL=C host $novalabel 2>/dev/null) rc=$? print -- "$0()[$LINENO]($SECONDS): host $novalabel output=$NOVA rc=$rc">>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then novalabel=${NOVA%% *} fi if [[ -n $novalabel ]]; then typeset NOVA_PROPERTIES= print -- "$0()[$LINENO]($SECONDS): cllsnova -c -u $novalabel" >>$CLMGR_TMPLOG # Always log commands NOVA_PROPERTIES=$(cllsnova -c -u $novalabel) rc=$? print -- "$0()[$LINENO]($SECONDS): cllsnova -c -u $novalabel rc=$rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then if [[ -n $(cllsnova -c -u $novalabel | grep -v "^#") ]]; then rc=$RC_SUCCESS fi fi (( $rc != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_nova()" lse  k(9nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_persistent_iptes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_persistent_ip.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)08 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_persistent_ip.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:44 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_persistent_ip =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:52 Last Changed: 6/10/12 15:32:44 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_persistent_ip.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_persistent_ip =head1 DESCRIPTION Determines if the specified persistent_ip is configured within the cluster. =head1 ARGUMENTS 1. persistent_ip [REQUIRED] [string] The persitent IP that is to be searched for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_persistent_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_persistent_ip.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset persistent_ip=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset value= pip_names= pip_addr= LINE= typeset name= type= nw= nettype= attr= node= ipaddr= haddr= if= typeset gname= netmask= hb_addr= site= prefix= family= remainder= #========================================================= : Convert the provided persistent label into its network : names and aliases, as well as its IP address. #========================================================= value=$(LANG=C LC_ALL=C /usr/bin/host $persistent_ip) pip_addr=${value%%,*} pip_addr=${pip_addr##*+([[:space:]])} pip_names=${value##*:} pip_names=${pip_names//,/} #================= : Validate input #================= if [[ -z $persistent_ip ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllsif -pcS" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllsif -pcS |\ while read LINE; do : Handle possible IPv6 address typeset IPv6= if [[ $LINE == *\[* ]]; then IPv6=${LINE##*\[} IPv6=${IPv6%%\]*} LINE=${LINE/\[$IPv6\]/[${IPv6//:/_}]} fi print -- "$LINE" | IFS=: read name type nw nettype attr node ipaddr haddr if gname netmask hb_addr site prefix family remainder : Handle possible IPv6 address ipaddr=${ipaddr//_/:} ipaddr=${ipaddr/\[/} ipaddr=${ipaddr/\]/} [[ $type != "persistent" ]] && continue for value in $persistent_ip $pip_addr $pip_names; do if [[ $value == @($name|$ipaddr) ]]; then rc=$RC_SUCCESS break fi done (( rc == $RC_SUCCESS )) && break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "cllsif RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_persistent_ip()"  ktnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_physical_volumees#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_physical_volume.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)60 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_physical_volume.sh, hacmp.assist, 61haes_r714 3/21/13 14:23:52 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_physical_volume =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:41:19 Last Changed: 3/21/13 14:23:52 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_physical_volume.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_physical_volume =head1 DESCRIPTION Determines if the specified physical_volume is configured within the cluster. =head1 ARGUMENTS 1. physical_volume [REQUIRED] [string] The name of the physical_volume to search for on this node. 2. refnode [OPTIONAL] [string] A reference node where the specified physical volume is expected to be valid. 3. data [OPTIONAL] [reference] A reference to a return vehicle for cllspvids output. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_physical_volume { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_physical_volume.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset physical_volume=${1//\"/} typeset refnode=${2//\"/} typeset -i return_data=0 if [[ -n $3 ]]; then nameref data=$3 data="" return_data=1 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset ALL_DISKS= cand_name= cand_pvid= cand_vg= cand_uuid= rest= #================= : Validate input #================= if [[ -z $physical_volume ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ -n $refnode ]]; then ALL_DISKS=$(CL=$LINENO list_disks $refnode 2>/dev/null) else ALL_DISKS=$(CL=$LINENO list_disks 2>/dev/null) refnode=$LOCAL_NODE fi if [[ $ALL_DISKS != *([[:space:]]) ]]; then print -- "$ALL_DISKS" | /usr/bin/grep -w "$physical_volume" | read cand_name cand_pvid cand_vg cand_uuid rest if [[ $physical_volume == $cand_name || \ $physical_volume == $cand_pvid || \ $physical_volume == $cand_uuid ]] then rc=$RC_SUCCESS (( return_data )) && data="$refnode:$cand_name:$cand_pvid:$cand_uuid" else rc=$RC_NOT_FOUND fi else rc=$RC_ERROR fi fi [[ -n $data ]] && data=${data//[[:space:]]/} log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_physical_volume()" ` kBEnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_reportl_vo#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_report.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_report.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_is_known_report # # Description: This is the main, FPATH function that is invoked by clmgr # to confirm that the provided input represents a supported # report type. # # Inputs: See the "devDoc()" function, below. # # Outputs: None. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_is_known_report { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_report.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -l report=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $report ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else typeset orig_report=$report case $report in ap*) report=applications ;; av*) report=availability ;; ba*) report=basic ;; cl*) report=cluster ;; de*) report=dependencies ;; ev*) report=event ;; fs*) report=fsinfo ;; lv*) report=lvinfo ;; ne*) report=network ;; nw) report=network ;; no*) report=nodeinfo ;; rg*) report=rginfo ;; ro*) report=roha ;; rp|rep*) report=repositories ;; rs|res*) report=resources ;; sn*) report=snapshot ;; so*) report=software ;; st*) report=status ;; to*) report=topology ;; vg*) report=vginfo ;; *) unset report ;; esac if [[ -n $report ]]; then rc=$RC_SUCCESS else rc=$RC_ERROR report=$orig_report fi print $report fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_report()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_report =head1 SYNOPSIS KLIB_HACMP_is_known_report =head1 DESCRIPTION Determines if the specified report is a recognized/known PowerHA report. =head1 ARGUMENTS 1. report [REQUIRED] [string] The name of the report to validate. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== ;  k n*םa՝a֝a&*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_repository#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_repository.sh 1.15.1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2012,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_repository.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_is_known_repository # # Description: This is the main, FPATH function that is invoked by clmgr # to determine if the specified disk, in device name or PVID # format, is a CAA repository disk. # # Inputs: See the "devDoc()" function, below. # # Outputs: If the third argument is provided, it is established as # a reference, and all data about the provided disk is # stored inside of it. Other than that, the only output # is any error messages that might occur. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_is_known_repository { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_repository.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset cand_disk=${1//\"/} typeset site=${2//\"/} if (( $# >= 3 )) && [[ -n $3 ]] then typeset -n disk_data=${3//\"/} disk_data="" else typeset disk_data="" fi if (( $# >= 4 )) && [[ -n $4 ]] then typeset DISK_INFO=${4//\"/} fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= id= ALL_DISKS= junk= typeset cand_name= cand_pvid= cand_uuid= typeset repos_name= repos_pvid= repos_uuid= typeset IDENTIFIERS="" REM="" #================= : Validate input #================= if [[ -z $cand_disk ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ $DISK_INFO != *:* ]]; then typeset NODES=$REFNODE # Can be set in external env if [[ -z $NODES ]]; then if [[ -n $site ]]; then NODES=$(clodmget -n -f nodelist -q name=$site HACMPsite) else NODES=$(clodmget -n -f name -q object=COMMUNICATION_PATH HACMPnode) fi NODES=$(CL=$LINENO trim "$NODES") fi #====================================== : Extract the data for the given disk #====================================== CL=$LINENO getDiskData "$cand_disk" "$NODES" IDENTIFIERS 1 print -- "$IDENTIFIERS" |\ IFS=: read cand_name cand_pvid cand_uuid REFNODE REM else #====================================================== : As a performance optimization, if the data for disk : "$cand_disk" has already been collected by : the caller, also via getDiskData, then there is no : reason to invoke it again to collect the same info. #====================================================== print -- "$DISK_INFO" |\ IFS=: read cand_name cand_pvid cand_uuid REFNODE REM fi ALL_DISKS=$(CL=$LINENO list_disks $REFNODE) if [[ $cand_name == *([[:space:]]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$cand_disk" 1>&2 log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? elif [[ $cand_vg != *([[:space:]]) && $cand_vg != "None" ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 256 '\nERROR: disk "%1$s" is already in use within volume group "%2$s".\n\n' "$cand_disk" "$cand_vg" 1>&2 log_return_msg "$RC_INCORRECT_INPUT" "$0()" "$LINENO" return $? fi #===================================================== : Create a list of all, already-defined repositories #===================================================== # Create the right filter # For NSC or SC: repositories are in a unique HACMPsircol which id=0 # For LC: repositories are in two HACMPsircol, one for each site, the id of site has to found first. typeset FILTER_SITE="" if [[ $CLUSTER_TYPE == "LC" && -n $site ]] then typeset FILTER_SITEID=$(clodmget -n -q "name=${site}_sircol" -f id HACMPsircol) FILTER_SITE="-q id=${FILTER_SITEID}" # # For NSC or SC, the 'id' qualifier can be dispensed # fi typeset KNOWN_REPOSITORIES=$(clodmget -n $FILTER_SITE -f repository HACMPsircol) typeset backups=$(clodmget -n $FILTER_SITE -f backup_repository HACMPsircol) [[ -n $backups ]] && KNOWN_REPOSITORIES="$KNOWN_REPOSITORIES $backups" KNOWN_REPOSITORIES=${KNOWN_REPOSITORIES//0000000000000000/} for disk in ${KNOWN_REPOSITORIES//,/ }; do #=========================================================== : Extract the remaining data for the given disk, so that a : complete comparison can be done. In other words, if a : device name was provided, then the PVID and UUID need to : be collected so they can be compared, too, if needed. #=========================================================== print -- "$ALL_DISKS" | grep -w "$disk" |\ read repos_name repos_pvid repos_vg repos_uuid REM [[ -z $repos_name ]] && continue if [[ $cand_name == $repos_name || \ $cand_pvid == $repos_pvid ]] then rc=$RC_SUCCESS break elif [[ $cand_uuid != *([[:space:]]) && \ $repos_uuid != *([[:space:]]) && \ $cand_uuid == $repos_uuid ]] then rc=$RC_SUCCESS break fi done if (( $rc == RC_SUCCESS )); then disk_data="$repos_name:$repos_pvid:$repos_uuid" fi (( $rc == RC_UNKNOWN )) && rc=$RC_NOT_FOUND fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_repository()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_repository =head1 SYNOPSIS Determines if the specified disk is already in use as a repository. If so, a zero is returned, otherwise a non-zero is returned. In addition, the various identifiers for the disk are returned in the format: NAME:PVID:UUID =head1 DESCRIPTION Determines if the specified repository is configured within the cluster. =head1 ARGUMENTS 1. cand_disk [REQUIRED] [string] The label of the candidate disk that is to be identified as a repository (or not). 2. site [OPTIONAL] [string] A site label, that limits which nodes the repository is validated against. 3. disk_data [OPTIONAL] [string reference] A reference to a string in which the disk device name, PVID, and UUID will be stored/returned. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  kHn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_rg#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_rg.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)47 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_rg.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:47 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_rg =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:54 Last Changed: 6/10/12 15:32:47 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_rg.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_rg =head1 DESCRIPTION Determines if the specified resource group is configured within the cluster. =head1 ARGUMENTS 1. rg [REQUIRED] [string] The label of the resource group to search for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_rg { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_rg.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rg=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= #================= : Validate input #================= if [[ -z $rg ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q group=$rg HACMPgroup" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q group=$rg HACMPgroup |\ while read line; do rc=$RC_SUCCESS break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_rg()"  knםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_service_ip#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_service_ip.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)78 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_service_ip.sh, hacmp.assist, 61haes_r714, 1439A_hacmp714 8/26/14 13:54:18 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_service_ip =head1 VERSION Version Number: 1.4 Last Extracted: 9/25/14 17:45:42 Last Changed: 8/26/14 13:54:18 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_service_ip.sh, hacmp.assist, 61haes_r714, 1439A_hacmp714 =head1 SYNOPSIS KLIB_HACMP_is_known_service_ip =head1 DESCRIPTION Determines if the specified service IP is configured within the cluster. =head1 ARGUMENTS 1: service_ip [REQUIRED] [string] The service IP to search for within the cluster. 2: LABEL [OPTIONAL] [string reference] A return vehicle for returning the network name for the service IP that was passed in. If the network name was already passed in, then LABEL should be identical to it. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_is_known_service_ip # # Description: This is the main, FPATH function that is invoked by clmgr # to confirm that the provided input represents a service # IP/label within the cluster configuration. # # Inputs: See the "devDoc()" function, above. # # Outputs: If the optional LABEL input is passed in, it will be # populated with the network name of the service IP, if # that name differs from what was passed in. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_is_known_service_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_service_ip.sh, hacmp.assist, 61haes_r714, 1439A_hacmp714 : INPUTS: $* typeset service_ip=${1//\"/} integer RETURN_LABEL=0 if [[ -n ${2//\"/} ]]; then nameref LABEL=${2//\"/} LABEL="" RETURN_LABEL=1 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset value= service_ip_names= service_ip_addr= LINE= typeset name= type= nw= nettype= attr= node= ipaddr= haddr= if= typeset gname= netmask= hb_addr= site= prefix= family= remainder= #====================================================== : Convert the provided service label into its network : names and aliases, as well as its IP address. #====================================================== value=$(LANG=C LC_ALL=C /usr/bin/host $service_ip) service_ip_addr=${value%%,*} service_ip_addr=${service_ip_addr##*+([[:space:]])} service_ip_names=${value##*:} service_ip_names=${service_ip_names//,/} #================= : Validate input #================= if [[ -z $service_ip ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllsif -cS" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllsif -cS |\ while read LINE; do : Handle possible IPv6 address typeset IPv6= if [[ $LINE == *\[* ]]; then IPv6=${LINE##*\[} IPv6=${IPv6%%\]*} LINE=${LINE/\[$IPv6\]/[${IPv6//:/_}]} fi print -- "$LINE" | IFS=: read name type nw nettype attr node ipaddr haddr if gname netmask hb_addr site prefix family remainder : Handle possible IPv6 address ipaddr=${ipaddr//_/:} ipaddr=${ipaddr/\[/} ipaddr=${ipaddr/\]/} [[ $type != "service" ]] && continue for value in $service_ip $service_ip_addr $service_ip_names; do if [[ $value == @($name|$ipaddr) ]]; then rc=$RC_SUCCESS (( RETURN_LABEL )) && LABEL=$name break fi done (( rc == $RC_SUCCESS )) && break done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "cllsif RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_service_ip()" 3: som kn7םa՝a֝a&7bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_sitece_ip#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_site.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)09 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_site.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:49 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_site =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:57 Last Changed: 6/10/12 15:32:49 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_site.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_site =head1 DESCRIPTION Determines if the specified site is configured within the cluster. =head1 ARGUMENTS 1. site [REQUIRED] [string] The label of the site that is to be searched for within the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_site { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_site.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset site=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset line= id= #================= : Validate input #================= if [[ -z $site ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ $site == +([[:digit:]]) ]] && (( ${#site} > 10 )); then id=${site:10} print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q id=$id HACMPsite" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q id=$id HACMPsite |\ while read line; do rc=$RC_SUCCESS if [[ $line == *([[:space:]])name\ =\ * ]]; then line=${line##* = \"} site=${line%\"} break fi done else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q name=$site HACMPsite" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q name=$site HACMPsite |\ while read line; do rc=$RC_SUCCESS break done fi (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result print -- "$site" fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_site()" e kgn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_snapshotp#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_snapshot.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_snapshot =head1 SYNOPSIS KLIB_HACMP_is_known_snapshot =head1 DESCRIPTION Determines if the specified snapshot exists on the local node. =head1 ARGUMENTS 1. snapshot [REQUIRED] [string] The name of the snapshot to search for on this node. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_snapshot { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset snapshot=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset name= #================= : Validate input #================= if [[ -z $snapshot ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else # Smit is not able to parse snapshot name when name has colon, # hence escaping : with readable characters. if [[ $CLMGR_GUI == "SMIT" ]];then snapshot=$(echo $snapshot | sed 's/:/#!:/g') fi print -- "$0()[$LINENO]($SECONDS): clsnapshot -l" >>$CLMGR_TMPLOG # Always log commands clsnapshot -l |\ while read name; do [[ $name == *([[:space:]])\#* ]] && continue if [[ -n $name ]]; then name=${name##+([[:space:]])} name=${name%%+([[:space:]])} if [[ "$name" == "$snapshot" ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_snapshot()"  kn]םa՝a֝a&]bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_agentees#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_agent.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)06 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_agent.sh, hacmp.assist, 61haes_r714 8/14/12 13:38:18 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_storage_agent =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:47 Last Changed: 8/14/12 13:38:18 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_agent.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_storage_agent =head1 DESCRIPTION Determines if the specified storage agent is configured within the cluster. =head1 ARGUMENTS 1. storage_agent [REQUIRED] [string] The name of the storage agent to search for on this node. 2. TYPE [OPTIONAL] [reference] A string reference which can be used to return the discovered type of the specified storage agent. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_storage_agent { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_agent.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset storage_agent=${1//\"/} [[ -n $2 ]] && typeset -n TYPE=${2//\"/} TYPE="" [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE="" name="" rest="" #================= : Validate input #================= if [[ -z $storage_agent ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_sa_director -d\"|\" -h $storage_agent" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_sa_director -d"|" -h $storage_agent 2>/dev/null |\ while read LINE; do if [[ -n $LINE ]]; then print -- "$LINE" | IFS=\| read name TYPE rest if [[ $name == $storage_agent ]]; then rc=$RC_SUCCESS break else TYPE="" fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "$0()[$LINENO]($SECONDS): odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_storage_agent()" ue= kcnUםa՝a֝a&Ubm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_systemes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_system.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_system.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_storage_system =head1 SYNOPSIS KLIB_HACMP_is_known_storage_system =head1 DESCRIPTION Determines if the specified storage system is configured within the cluster. =head1 ARGUMENTS 1. storage_system [REQUIRED] [string] The name of the storage system to search for on this node. 2. TYPE [OPTIONAL] [reference] A string reference which can be used to return the discovered type of the specified storage system. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_storage_system { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_storage_system.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM : INPUTS: $* typeset storage_system=${1//\"/} [[ -n $2 ]] && typeset -n TYPE=${2//\"/} TYPE="" [[ -n $3 ]] && typeset -n BACKUP_PROFILE=${3//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE="" name="" rest="" #================= : Validate input #================= if [[ -z $storage_system ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else if [[ -n $BACKUP_PROFILE ]]; then # Check Storage System exist in backup management XML file output=$(LANG=C cl_cbm_list_storage_profile "$storage_system" 2>>$CLMGR_TMPLOG) if [[ -n $output ]]; then rc=$RC_SUCCESS fi storage_type=$(echo "$output" | grep -w "Storage_type" | cut -f 2 -d '=') storage_type=${storage_type// /} # removes space TYPE=$storage_type BACKUP_PROFILE="Enable" else isEnterprise if (( $? == 1 ));then print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_ss_director -d\"|\" -h $storage_system" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_ss_director -d"|" -h $storage_system 2>>$CLMGR_TMPLOG |\ while read LINE; do if [[ -n $LINE ]]; then print -- "$LINE" | IFS=\| read name TYPE rest if [[ $name == $storage_system ]]; then rc=$RC_SUCCESS break else TYPE="" fi fi done fi fi (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "$0()[$LINENO]($SECONDS): odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_storage_system()" B_H kNn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_tapege_sys#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_tape.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)46 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_tape.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:53 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_tape =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:54 Last Changed: 6/10/12 15:32:53 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_tape.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_tape =head1 DESCRIPTION Determines if the specified tape is configured within the cluster. =head1 ARGUMENTS 1. tape [REQUIRED] [string] The name of the tape to search for on this node. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_tape { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_tape.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset tape=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset LINE= #================= : Validate input #================= if [[ -z $tape ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): $HAUTILS/cllstape" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllstape 2>/dev/null |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue LINE=${LINE##+([[:space:]])} LINE=${LINE%%+([[:space:]])} if [[ $LINE == $tape ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_tape()" e_prof kn םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_userge_sys#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_user.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)72 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_user.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:54 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_user =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:09 Last Changed: 6/10/12 15:32:54 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_user.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_user =head1 DESCRIPTION Determines if the specified user is configured within the cluster. =head1 ARGUMENTS 1. user [REQUIRED] [string] The name of the user to search for on this node. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_user { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_user.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset user=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A list typeset LINE= #================= : Validate input #================= if [[ -z $user ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): /usr/sbin/lsuser -a ALL" >>$CLMGR_TMPLOG # Always log commands /usr/sbin/lsuser -a ALL 2>/dev/null |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue LINE=${LINE##+([[:space:]])} LINE=${LINE%%+([[:space:]])} if [[ $LINE == $user ]]; then rc=$RC_SUCCESS break fi fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_user()" CLMGR_ kn#םa՝a֝a&#bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_known_volume_groupmes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_volume_group.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)15 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_volume_group.sh, hacmp.assist, 61haes_r714 5/15/13 17:09:33 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_known_volume_group =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:41:35 Last Changed: 5/15/13 17:09:33 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_volume_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_known_volume_group =head1 DESCRIPTION Determines if the specified volume group is configured within the cluster. =head1 ARGUMENTS 1. vgname [REQUIRED] [string] The label of the volume group that is to be search for within the cluster. 2. rg [OPTIONAL] [string] A reference to use for returning the resource group for this volume group. 3. nodelist [OPTIONAL] [string] A reference to use for returning the nodes for this volume group. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_known_volume_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_known_volume_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset vgname=${1//\"/} [[ -n $2 ]] && typeset -n rg=$2 [[ -n $3 ]] && typeset -n nodelist=$3 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset name= rem= errfile="$TMPDIR/clmgr.KHikvg.err.$$" rg= nodelist= [[ -f $errfile ]] && /usr/bin/rm -f $errfile #================= : Validate input #================= if [[ -z $vgname ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else #====================================================================== : Added a retry loop around "cl_ls_shared_vgs" after testing revealed : that it could potentially fail due to intermittent clcomd glitches. : The loop masks the user from the unfortunate consequences of clcomd. #====================================================================== typeset -i try=0 tries=5 no_data=1 cllsrc=$RESULT_UNKNOWN for (( try=0; try>$CLMGR_TMPLOG # Always log commands cl_ls_shared_vgs_DATA=$($HACSPOC/cl_ls_shared_vgs -c -C 2>>$errfile) cllsrc=$? else cllsrc=$RC_SUCCESS # Already have the data fi print "cl_ls_shared_vgs RC: $cllsrc" >>$CLMGR_TMPLOG # Always log command result if (( $cllsrc == $RC_SUCCESS )); then print -- "$cl_ls_shared_vgs_DATA" |\ while read line; do [[ $line == \#* ]] && continue name=${line%%[[:space:]]*} if [[ $name == $vgname ]]; then line=${line##${name}+([[:space:]])} nodelist=${line##*[[:space:]]} line=${line%%+([[:space:]])${nodelist}} if [[ $line != *([[:space:]]) ]]; then [[ -n $rg ]] && rg="$rg " rg="$rg$line" fi rc=$RC_SUCCESS break fi done no_data=0 break elif (( try < (tries -1) )); then if [[ $cl_ls_shared_vgs_DATA == *cl_ls_shared_vgs:* ]]; then print -- "$cl_ls_shared_vgs_DATA" >>$errfile unset cl_ls_shared_vgs_DATA break else sleep 3 fi fi done if (( no_data )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 461 "\nERROR: unable to list shared volume groups.\n\n" 1>&2 /usr/bin/cat $errfile 1>&2 rc=$RC_ERROR fi if [[ -f $errfile ]]; then /usr/bin/cat $errfile 1>&2 /usr/bin/rm -f $errfile fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_known_volume_group()" use f k?n`םa՝a֝a&`bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_is_node_in_grouprou#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_node_in_group.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)96 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_node_in_group.sh, hacmp.assist, 61haes_r714 6/10/12 15:32:55 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_is_node_in_group =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:13 Last Changed: 6/10/12 15:32:55 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_node_in_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_is_node_in_group =head1 DESCRIPTION Determines if a node participates in the specified resource group. =head1 ARGUMENTS 1. group [REQUIRED] [string] The name of the resource group to check. 2. node [REQUIRED] [string] The node to search for within the specified resource group. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_is_node_in_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_is_node_in_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset group=${1//\"/} typeset node=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset name= value= gnode= #================= : Validate input #================= if [[ -z $group ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 125 "\nERROR: no resource group label was specified.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ -z $node ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 126 "\nERROR: no node label was specified.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): /usr/bin/odmget -q group=$group HACMPgroup" >>$CLMGR_TMPLOG # Always log commands /usr/bin/odmget -q group=$group HACMPgroup |\ while IFS='=' read name value; do name=$(eval echo $name) if [[ $name == "nodes" ]]; then for gnode in $value; do gnode=$(eval echo $gnode) if [[ $gnode == $node ]]; then rc=$RC_SUCCESS break fi done fi done (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print "odmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_is_node_in_group()"  k nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_appmonitorsrou#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appmonitors.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)75 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appmonitors.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 15:54:01 #============================================================================ # # Name: KLIB_HACMP_list_appmonitors # # Description: This is the main, FPATH function that is invoked by clmgr # to collect application monitor names. It uses the "cllsappmon" # utility to generate the list of names unless a search is # being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_appmon_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one application monitor per # entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_appmonitors { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appmonitors.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllsappmon -c" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllsappmon -c) rc=$? print "$0()[$LINENO]($SECONDS): cllsappmon RC: $rc; monitors == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for item in $(print -- "$OUTPUT" | cut -d: -f1); do list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_appmonitor_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_appmonitors()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_appmonitors =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:11 Last Changed: 6/10/15 15:54:01 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appmonitors.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query application_monitor NOTE: the aliases for "application_monitor" are "am" and "mon". =head1 DESCRIPTION Displays the currently configured set of application monitors. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== O  kjnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_appserversrou#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appservers.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)91 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appservers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 15:58:17 #============================================================================ # # Name: KLIB_HACMP_list_appservers # # Description: This is the main, FPATH function that is invoked by clmgr # to collect application controller names. It uses the # "cllsserv" utility to generate the list of names unless a # search is being conducted. In the case of a search, the # associated FPATH function, KLIB_HACMP_get_appserver_attributes # is invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one application controller # per entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_appservers { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appservers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllsserv -c" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllsserv -c 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cllsserv RC: $rc; controllers == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for item in $(print -- "$OUTPUT" | cut -d: -f1) do list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_appserver_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_appservers()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_appservers =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:11 Last Changed: 6/10/15 15:58:17 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_appservers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query application NOTE: the aliases for "application" are "as" and "app". =head1 DESCRIPTION Displays the currently configured set of application servers. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  kꔿn,םa՝a֝a&,bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_backup_filesou#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_backup_files.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_backup_files =head1 SYNOPSIS clmgr query backup_files \ BUCKET_NAME= \ RG_NAME= \ [ START_TIME= ] \ [ END_TIME= ] clmgr query backup_files \ BUCKET_NAME= \ [ RG_NAME= ] \ [ START_TIME= ] \ [ END_TIME= ] clmgr query backup_files \ RG_NAME= \ [ BUCKET_NAME= ] \ [ START_TIME= ] \ [ END_TIME= ] backup_files => bf, backup_f* =head1 DESCRIPTION Displays the cloud backup files. =head1 ARGUMENTS 1. bucket_name [OPTIONAL] [String] Bucket Name to list the files in the bucket. For aws, bucket name refers to S3 bucket. 2. rg_name [OPTIONAL] [String] It is used to list the files which are specific to provided Resource Group. 3. start_time [OPTIONAL] [String] If you provide the start time it will list the files which are uploaded only after start time. 4. end_time [OPTIONAL] [String] If you provide the end time it will list the files which are uploaded from start time to end time. =cut } # End of POD-formatted documentation. function KLIB_HACMP_list_backup_files { . $HALIBROOT/log_entry "$0()" "$CL" typeset bucket_name=$1 typeset rg_name=$2 typeset start_time=$3 typeset end_time=$4 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset available_rgs="" # To store the backup rg's typeset backup_type="" # To store the backup method, which is cloud or remote typeset cloud_rgs="" # To store the backup rgs which are configured for cloud typeset output="" typeset service="" # To store CLOUD service information typeset bOpt="" rOpt="" sOpt="" eOpt="" cOpt="" typeset configured_bucket="" # To store the bucket name which is configured for rg typeset service_list="" #==================================== : Check python is installed or not #==================================== LANG=C cl_get_python_version 2>&1 >>/dev/null rc=$? if (( $rc != 0 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1315 "\nERROR: Python must be installed for using backup feature.\n\n" 1>&2 log_return_msg "$rc" "$0()" "$LINENO" return $rc fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY elif [[ -z $bucket_name && -z $rg_name ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1202 "\nERROR: Provide resource group (RG_NAME) or bucket name (BUCKET_NAME) or both.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ -z $start_time && -n $end_time ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1203 "\nERROR: Provide start time with end time.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print -- "$0()[$LINENO]($SECONDS): cl_cbm_list" >>$CLMGR_TMPLOG # Always log command result available_rgs=$(LANG=C cl_cbm_list 2>>$CLMGR_TMPLOG) rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_list RC:$rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS ));then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1197 "\nERROR: No resource group configured for backup.\n\n" 1>&2 rc=$RC_ERROR fi fi # Get the list of backup rgs which are configured for cloud storage. for rg in $available_rgs do backup_type=$(LANG=C cl_cbm_list $rg | grep -w Backup_method | cut -f2 -d'=' | sed -e 's/^ *//') if [[ $backup_type == "cloud" ]] then cloud_rgs="$cloud_rgs $rg" fi done # Validate inputs if (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) then if [[ -n $rg_name ]] then : # Checking the given rg is configured for cloud backup or not : echo $cloud_rgs | grep -wq $rg_name if (( $? == 0 )) then : # If bucket name not provided then take the bucket name from the xml file where we are storing the backup configuration : output=$(LANG=C cl_cbm_list $rg_name 2>>$CLMGR_TMPLOG) service_list=$(echo "$output" | grep -w "Cloud_service" | cut -f 2 -d '=' | tr -d ' ') if [[ -z $bucket_name ]] then bucket_name=$(echo "$output" | grep -w "Bucket_name" | cut -f 2 -d '=' | tr -d ' ') else configured_bucket=$(echo "$output" | grep -w "Bucket_name" | cut -f 2 -d '=' | tr -d ' ') if [[ $bucket_name != $configured_bucket ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1209 "\nERROR: The provided bucket, %1\$s, is invalid because the given resource group, %2\$s, is configured with a different bucket name, %3\$s.\n\n" "$bucket_name" "$rg_name" "$configured_bucket" 1>&2 rc=$RC_ERROR fi fi else cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1204 "\nERROR: The provided resource group, %1\$s, is not configured for cloud backup.\n\n" "$rg_name" 1>&2 cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1208 "Available resource groups which are configured for cloud are:\n\n" "$cloud_rgs" 1>&2 output=$(echo "$cloud_rgs" | tr " " "\n") print -u2 "$output" rc=$RC_INCORRECT_INPUT fi elif [[ -n $bucket_name ]] then # Get the list of rgs which are configured with provided bucket for rg in $cloud_rgs do output=$(LANG=C cl_cbm_list $rg 2>>$CLMGR_TMPLOG) configured_bucket=$(echo "$output" | grep -w "Bucket_name" | cut -f 2 -d '=' | tr -d ' ') service=$(echo "$output" | grep -w "Cloud_service" | cut -f 2 -d '=' | tr -d ' ') if [[ $bucket_name == $configured_bucket ]] then echo $service_list | grep -q $service if (( $? != 0 )) then service_list="$service_list $service" fi fi done if [[ -z $service_list ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1319 "\nERROR: The provided bucket %1\$s does not exist in any of the cloud configured backup profiles.\n\n" "$bucket_name" 1>&2 fi fi # Verify whether the provided start and end times are in proper format. if [[ -n $start_time ]] then validate_time $start_time if (( $? != RC_SUCCESS )) then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1206 "\nERROR: The provided start time format is invalid.\n\n" 1>&2 cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1205 "\nERROR: Provide time in yyyy-mm-ddThh format.\n\n" 1>&2 rc=$RC_ERROR fi fi if [[ -n $end_time ]] then validate_time $end_time if (( $? != RC_SUCCESS )) then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1207 "\nERROR: The provided end time format is invalid.\n\n" 1>&2 cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1205 "\nERROR: Provide time in yyyy-mm-ddThh format.\n\n" 1>&2 rc=$RC_ERROR fi fi fi # Calling list utility if (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) then [[ -n $bucket_name ]] && bOpt="-b $bucket_name" [[ -n $start_time ]] && sOpt="-s $start_time" [[ -n $end_time ]] && eOpt="-e $end_time" [[ -n $rg_name ]] && rOpt="-r $rg_name" for service in $service_list do cOpt="-c $service" print -- "$0()[$LINENO]($SECONDS): cl_cbm_cloud_utils -o query $rOpt $bOpt $sOpt $eOpt $cOpt" >>$CLMGR_TMPLOG # Always log command result LANG=C cl_cbm_cloud_utils -o query $rOpt $bOpt $sOpt $eOpt $cOpt rc=$? print -- "$0()[$LINENO]($SECONDS): cl_cbm_cloud_utils -o query $rOpt $bOpt $sOpt $eOpt $cOpt RC:$rc" >>$CLMGR_TMPLOG # Always log command result if (( rc != RC_SUCCESS )) then rc=$RC_ERROR break fi done fi log_return_msg "$rc" "$0()" "$LINENO" return $rc } # End of "KLIB_HACMP_list_backup_files()" #============================================================================== # # Name: validate_time # # Description: This function will validates whether the user provided time is # proper format or not. # # Inputs: start_time or end_time # # Outputs: None # # Returns: Zero if the provided time format is correct. # Otherwise a non-zero value is returned. # #============================================================================== function validate_time { . $HALIBROOT/log_entry "$0()" "$CL" [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset usertime="" typeset datedelimiter="" usertime=$1 if (( ${#usertime} != 13 )) then return $RC_ERROR fi # Check for 'T' in the timestamp format datedelimiter=$(echo $usertime | cut -c11) if [[ -z $datedelimiter || $datedelimiter != 'T' ]] then return $RC_ERROR fi # Extract year, month, date and time to perform validation echo "$usertime" | cut -f1 -d'T' | IFS=- read year month day time=$(echo "$usertime" | cut -f2 -d'T') if [[ -z $time || -z $day || -z $month || -z $year ]] then return $RC_ERROR fi # Check if all the data provided like day month time etc are digits or not if [[ $year != +([[:digit:]]) || $month != +([[:digit:]]) || $day != +([[:digit:]]) || $time != +([[:digit:]]) ]] then return $RC_ERROR fi } #End of "validate_time()" ed_b kXn"םa՝a֝a&"bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_codup_#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_cod.sh 1.3.1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)69 1.3.1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_cod.sh, hacmp.assist, 61haes_r720, 1539A_hacmp720 9/17/15 10:47:38 #============================================================================ # # Name: KLIB_HACMP_list_cod # # Description: This is the main, FPATH function that is invoked by clmgr # to collect a list of COD-enabled application controllers. # It uses the "cllsserv" utility to generate the list of names # unless a search is being conducted. In the case of a search, # the associated FPATH function, KLIB_HACMP_get_cod_attributes # is invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive # at a set of outputs that matches the provided search # parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one application controller # per entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_cod { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3.1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_cod.sh, hacmp.assist, 61haes_r720, 1539A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset -i index=0 matches=0 typeset -i rc=$RC_UNKNOWN typeset name= start_script= stop_script= value= typeset use_desired= optimal_mem= optimal_cpu= optimal_pu= optimal_vp= #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all typeset ROHA_PROPERTIES= print "$0()[$LINENO]($SECONDS): cllsserv -cl" >>$CLMGR_TMPLOG # Always log commands ROHA_PROPERTIES=$(cllsserv -cl) rc=$? print "$0()[$LINENO]($SECONDS): cllsserv RC: $rc" >>$CLMGR_TMPLOG # Always log commands result if (( $rc == RC_SUCCESS )); then print -- "$ROHA_PROPERTIES" |\ while IFS=: read name start_script stop_script use_desired optimal_mem optimal_cpu optimal_pu optimal_vp rem do [[ $name == \#* ]] && continue # Skip the column headers optimal_mem=$(CL=$LINENO trim $optimal_mem) optimal_pu=$(CL=$LINENO trim $optimal_pu) if [[ $use_desired != 0 || \ $optimal_mem != +(0)\.+(0) || \ $optimal_cpu != 0 || \ $optimal_pu != +(0)\.+(0) || \ $optimal_vp != 0 ]] then list[$index]=$name (( index++ )) fi done fi (( ${#list[*]} >= 0 )) && rc=$RC_SUCCESS else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_cod_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_cod()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_cod =head1 VERSION Version Number: 1.3.1.7 Last Extracted: 9/22/15 20:16:51 Last Changed: 9/17/15 10:47:38 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_cod.sh, hacmp.assist, 61haes_r720, 1539A_hacmp720 =head1 SYNOPSIS clmgr query cod NOTE: the aliases for "cod" are "cuod", "dlpar" and "roha". =head1 DESCRIPTION Displays a simple list of the application controller names for which Resource Optimized High Availability services have been configured. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== rtie k2n6םa՝a֝a&6bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_dependenciesou#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_dependencies.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)04 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_dependencies.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 16:20:10 #============================================================================ # # Name: KLIB_HACMP_list_dependencies # # Description: This is the main, FPATH function that is invoked by clmgr # to collect resource group dependency names. It uses the # "clrgdependency" utility to generate the list of names unless # a search is being conducted. In the case of a search, the # associated FPATH function, KLIB_HACMP_get_dependency_attributes # is invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one dependency per entry. # The only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_dependencies { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_dependencies.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift if [[ -n $2 && $2 != *=* ]]; then typeset -n id_list=$2 shift fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset -i INDEX=0 i=0 j=0 longest=0 rc=$RC_SUCCESS typeset -A pcdeps stopafterdeps startafterdeps typeset parent= child= dep= value= OUTPUT= #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all ## ## ACQUIRE/RELEASE ORDER ## print "$0()[$LINENO]($SECONDS): clrgorder -s | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgorder -s) print "$0()[$LINENO]($SECONDS): clrgorder RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT" | grep -v '#' |\ IFS=: read sel_acq par_acq ser_rel par_rel for rg in ${par_acq//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (ACQUIRE_IN_PARALLEL)" (( INDEX++ )) fi dep= for rg in ${sel_acq//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (ACQUIRE_SERIALLY)" (( INDEX++ )) fi dep= for rg in ${par_rel//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (RELEASE_IN_PARALLEL)" (( INDEX++ )) fi dep= for rg in ${ser_rel//,/ }; do [[ -n $dep ]] && dep="$dep," dep="$dep$rg" done if [[ $dep != *([[:space:]]) ]]; then list[$INDEX]="$dep (RELEASE_SERIALLY)" (( INDEX++ )) fi ## ## PARENT/CHILD ## print "$0()[$LINENO]($SECONDS): clrgdependency -t PARENT_CHILD -sl | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgdependency -t PARENT_CHILD -sl) print "$0()[$LINENO]($SECONDS): clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT" | grep -v '#' |\ while read parent child; do if [[ -n ${pcdeps[$parent]} ]]; then pcdeps[$parent]="${pcdeps[$parent]},$child" else pcdeps[$parent]=$child fi done for parent in ${!pcdeps[*]}; do list[$INDEX]="${parent}+${pcdeps[$parent]} (PARENT_CHILD)" (( INDEX++ )) done ## ## STOP AFTER ## print "$0()[$LINENO]($SECONDS): clrgdependency -t STOP_AFTER -sl | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgdependency -t STOP_AFTER -sl) print "$0()[$LINENO]($SECONDS): clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT" | grep -v '#' |\ while read source target; do if [[ -n ${stopafterdeps[$target]} ]]; then stopafterdeps[$target]="${stopafterdeps[$target]},$source" else stopafterdeps[$target]=$source fi done for target in ${!stopafterdeps[*]}; do list[$INDEX]="${target}+${stopafterdeps[$target]} (STOP_AFTER)" (( INDEX++ )) done ## ## START AFTER ## print "$0()[$LINENO]($SECONDS): clrgdependency -t START_AFTER -sl | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgdependency -t START_AFTER -sl) print "$0()[$LINENO]($SECONDS): clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT" | grep -v '#' |\ while read source target; do if [[ -n ${startafterdeps[$target]} ]]; then startafterdeps[$target]="${startafterdeps[$target]},$source" else startafterdeps[$target]=$source fi done for target in ${!startafterdeps[*]}; do list[$INDEX]="${target}+${startafterdeps[$target]} (START_AFTER)" (( INDEX++ )) done ## ## SAME SITE ## print "$0()[$LINENO]($SECONDS): clrgdependency -t SITECOLLOCATION -sl | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgdependency -t SITECOLLOCATION -sl) print "$0()[$LINENO]($SECONDS): clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT" | grep -v '#' |\ while read dep; do dep=${dep//+([[:space:]])/,} list[$INDEX]="$dep (SAME_SITE)" (( INDEX++ )) done ## ## SAME NODE ## print "$0()[$LINENO]($SECONDS): clrgdependency -t NODECOLLOCATION -sl | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgdependency -t NODECOLLOCATION -sl) print "$0()[$LINENO]($SECONDS): clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT"| grep -v '#' |\ while read dep; do dep=${dep//+([[:space:]])/,} list[$INDEX]="$dep (SAME_NODE)" (( INDEX++ )) done ## ## DIFFERENT NODES ## print "$0()[$LINENO]($SECONDS): clrgdependency -t ANTICOLLOCATION -sl | grep -v '#'" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clrgdependency -t ANTICOLLOCATION -sl) print "$0()[$LINENO]($SECONDS): clrgdependency RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$OUTPUT" | grep -v '#' |\ while IFS=: read high int low; do high=${high//+([[:space:]])/,} int=${int//+([[:space:]])/,} low=${low//+([[:space:]])/,} if [[ -n "$high$int$low" && "$high$int$low" != "::" ]]; then list[$INDEX]="${high}+${int}+${low} (DIFFERENT_NODES)" (( INDEX++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_dependency_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$INDEX]=${allProperties[$key]} (( INDEX++ )) done fi fi if (( $rc == RC_SUCCESS )); then for (( i=0; i longest )) && longest=${#dep} done (( longest += 3 )) for (( i=0; i # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_dependencies =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:12 Last Changed: 6/10/15 16:20:10 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_dependencies.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query dependency NOTE: the alias for "dependency" is "de". =head1 DESCRIPTION Displays the currently configured set of resource group dependencies. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== ( l knC%םa՝a֝a&C%bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_events#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_events.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG #============================================================================ # # Name: KLIB_HACMP_list_events # # Description: This is the main, FPATH function that is invoked by clmgr # to collect event names. It uses the "cllscustom" and clodmget # utilities to generate the list of names unless a search is # being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_event_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one event per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_events { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_events.sh, hacmp.assist, 61haes_r721, 1613A_hacmp721 : INPUTS: $* typeset -n list=$1 shift if [[ -n $1 && $1 != *=* ]]; then # Not a search. Must be a type. typeset -u evtype=$1 shift fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== typeset -A queries typeset -u uc_attr= uc_value= typeset value= while (( $# > 0 )); do value="$1" shift if [[ $value == *=* ]]; then uc_attr=${value%%=*} if [[ $uc_attr == "TYPE" ]]; then uc_value=${value#*=} [[ -z $evtype ]] && evtype=$uc_value case $evtype in P*) evtype="PREDEFINED" ;; C*) evtype="CUSTOM" ;; A*) evtype="ALL" ;; esac value=$evtype fi queries[$uc_attr]="${value#*=}" fi done [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset LINE= OUTPUT= typeset -i index=0 matches=0 rc=$RC_UNKNOWN if (( ${#queries[*]} == 0 )) || ( (( ${#queries[*]} == 1 )) && [[ -n ${queries[TYPE]} ]] ) then # List all #======================== # CUSTOM CLUSTER EVENTS #======================== if [[ $evtype == *([[:space:]]) || $evtype == @(\*|A|C)* ]]; then print "$0()[$LINENO]($SECONDS): cllscustom -t event" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllscustom -t event) rc=$? print "$0()[$LINENO]($SECONDS): cllscustom RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read LINE; do if [[ $LINE != *([[:space:]]) ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]=$LINE (( index++ )) fi done fi #==================== # PREDEFINED EVENTS #==================== if [[ $evtype == @(\*|A|P)* ]]; then print "$0()[$LINENO]($SECONDS): clodmget -f name -n HACMPevent" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clodmget -f name -n HACMPevent 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): clodmget RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while IFS=: read LINE; do if [[ $LINE != *([[:space:]]) ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]=$LINE (( index++ )) fi done fi else # Searches were provided typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_event_attributes "" allProperties TYPE=$evtype CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_events()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_events =head1 VERSION Version Number: 1.5 Last Extracted: 3/29/16 17:47:11 Last Changed: 3/21/16 11:16:51 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_events.sh, hacmp.assist, 61haes_r721, 1613A_hacmp721 =head1 SYNOPSIS clmgr query event NOTE: the alias for "event" is "ev". =head1 DESCRIPTION Displays the currently configured set of customer cluster events. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An array within which data about the queried objects can be returned to the caller. 2. evtype [OPTIONAL] [string] The type of events to list. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== NO se kbnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_fallback_timersmes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_fallback_timers.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)79 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_fallback_timers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 16:35:17 #============================================================================ # # Name: KLIB_HACMP_list_fallback_timers # # Description: This is the main, FPATH function that is invoked by clmgr # to collect fallback timer names. It uses the "cltimerpolicy" # utility to generate the list of names unless a search is # being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_fallback_timer_attributes is # invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive # at a set of outputs that matches the provided search # parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one fallback timer per # entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_fallback_timers { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_fallback_timers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= TIMERS= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cltimerpolicy -a list -f list" >>$CLMGR_TMPLOG # Always log commands TIMERS=$(cltimerpolicy -a list -f list) rc=$? print "$0()[$LINENO]($SECONDS): cltimerpolicy RC: $rc; TIMERS == \"${TIMERS//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for item in $TIMERS; do list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_fallback_timer_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_fallback_timers()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_fallback_timers =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:12 Last Changed: 6/10/15 16:35:17 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_fallback_timers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query fallback_timer NOTE: aliases for "fallback_timer" are "fa" and "timer". =head1 DESCRIPTION Displays the currently configured set of fallback timers. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== $LINE kh,nB!םa՝a֝a&B!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_file_systemsrs#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_file_systems.sh 1.7 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_file_systems.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_list_file_systems # # Description: This is the main, FPATH function that is invoked by clmgr # to collect file system names. It uses the "cl_showfs2" # utility to generate the list of names unless a search is # being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_file_system_attributes is # invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive # at a set of outputs that matches the provided search # parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one file system per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_file_systems { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_file_systems.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset line= OUTPUT= vgname= value= typeset -i index=0 matches=0 rc=$RC_SUCCESS typeset fsname= vgname= rgname= nodelist= #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): LC_ALL=C cl_showfs2" >>$CLMGR_TMPLOG OUTPUT=$(LC_ALL=C cl_showfs2 2>>$CLMGR_TMPLOG) print "$0()[$LINENO]($SECONDS): cl_showfs2 RC: $?; list == \"${list[*]}\"" >>$CLMGR_TMPLOG print -- "$OUTPUT" |\ while read fsname vgname rgname nodelist; do [[ $fsname == \#* ]] && continue [[ $fsname == *([[:space:]]) ]] && continue #cl_showfs2 returns error string on stdout. #Consider only valid fs names starting with "/*" if [[ $fsname == /* ]]; then list[$index]=$fsname (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_file_system_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_file_systems()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_file_systems =head1 VERSION Version Number: 1.4 Last Extracted: 6/13/16 11:36:21 Last Changed: 6/10/15 16:39:49 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_file_systems.sh, hacmp.assist, 61haes_r720 =head1 SYNOPSIS clmgr query file_system NOTE: the alias for "file_system" is "fs". =head1 DESCRIPTION Constructs a list of the shared and/or concurrent logical volumes within the cluster. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== es  k̩nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_filecollection#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_filecollection.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)72 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_filecollection.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 16:43:11 #============================================================================ # # Name: KLIB_HACMP_list_filecollection # # Description: This is the main, FPATH function that is invoked by clmgr # to collect file collection names. It uses the "clodmget" # utility to pull data from the HACMPfilecollection ODM to # generate the list of names unless a search is being conducted. # In the case of a search, the associated FPATH function, # KLIB_HACMP_get_filecollection_attributes is invoked in # verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one file collection per # entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_filecollection { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_filecollection.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all for item in $(clodmget -f name -n HACMPfilecollection); do list[$index]=$item (( index++ )) done (( index > 0 )) && rc=$RC_SUCCESS else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_filecollection_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_filecollection()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_filecollection =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:13 Last Changed: 6/10/15 16:43:11 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_filecollection.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query file_collection NOTE: the aliases for "file_collection" are "fc" and "fi". =head1 DESCRIPTION Displays the currently configured set of file collections. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== LINE knx!םa՝a֝a&x!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_groups#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_groups.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)39 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 16:48:21 #============================================================================ # # Name: KLIB_HACMP_list_groups # # Description: This is the main, FPATH function that is invoked by clmgr # to collect user group names. It uses the "lsgroup" utility # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_group_attributes is invoked in # verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one user group per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_groups { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= LDAP_GROUPS= LOCAL_GROUPS= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all #===================== : Display all groups #===================== print "$0()[$LINENO]($SECONDS): lsgroup -R files -a ALL" >>$CLMGR_TMPLOG # Always log commands LOCAL_GROUPS=$(lsgroup -R files -a ALL 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): lsgroup (files) RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR else print "$0()[$LINENO]($SECONDS): lsgroup -R LDAP -a ALL" >>$CLMGR_TMPLOG # Always log commands LDAP_GROUPS=$(lsgroup -R LDAP -a ALL 2>>$CLMGR_TMPLOG) print "$0()[$LINENO]($SECONDS): lsgroup (LDAP) RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi print -- "$LOCAL_GROUPS" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]="$LINE (files)" (( index++ )) fi done print -- "$LDAP_GROUPS" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]="$LINE (LDAP)" (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_group_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_groups()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_groups =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:13 Last Changed: 6/10/15 16:48:21 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query group NOTE: the alias for "group" is "gp". =head1 DESCRIPTION Displays the current set of AIX groups. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  knםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_hmcss#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_hmcs.sh 1.3.1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)68 1.3.1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_hmcs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 16:51:54 #============================================================================ # # Name: KLIB_HACMP_list_hmcs # # Description: This is the main, FPATH function that is invoked by clmgr # to collect HMC names. It uses the "cllshmc" utility to # generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_hmc_attributes is invoked in # verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one HMC per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_hmcs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3.1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_hmcs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset -i index=0 matches=0 typeset -i rc=$RC_UNKNOWN typeset hmc= name= timeout= retry_count= retry_delay= value= #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all typeset HMC_PROPERTIES= print "$0()[$LINENO]($SECONDS): cllshmc -c" >>$CLMGR_TMPLOG HMC_PROPERTIES=$(cllshmc -c) 2>>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): cllshmc RC: $rc" >>$CLMGR_TMPLOG if (( $rc == RC_SUCCESS )); then print -- "$HMC_PROPERTIES" |\ while IFS=: read hmclabel timeout retry_count retry_delay rem do [[ $hmclabel == \#* ]] && continue # Skip the column headers list[$index]=$hmclabel (( index++ )) done else rc=$RC_ERROR fi else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_hmc_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_hmcs()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_hmcs =head1 VERSION Version Number: 1.3.1.6 Last Extracted: 6/16/15 17:51:13 Last Changed: 6/10/15 16:51:54 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_hmcs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query hmc =head1 DESCRIPTION Displays the currently configured set of HMCs. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== pese k`n9םa՝a֝a&9bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_hosts#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_hosts.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_list_hosts # # Description: This is the main, FPATH function that is invoked by clmgr # to list host names from within the cluster. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one host per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_hosts { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset -l TYPE="" typeset item= hosts= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase if [[ $attr == "TYPE" ]];then TYPE="${value#*=}" shift continue fi queries[$attr]="${value#*=}" fi shift done #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all if [[ -n $TYPE ]] then CL=$LINENO verify_in_set TYPE "$TYPE" "CAA CANDIDATES POTENTIAL SMIT" TYPE fi if (( $? == RC_SUCCESS )); then case $TYPE in caa) print "$0()[$LINENO]($SECONDS): lscluster -m | grep \"Node name:\"" >>$CLMGR_TMPLOG hosts=$(LC_ALL=C lscluster -m | grep "Node name:") rc=$? print "$0()[$LINENO]($SECONDS): lscluster -m | grep \"Node name:\" RC == $rc ($hosts)" >>$CLMGR_TMPLOG print -- "$hosts" |\ while read item do list[$index]=${item#*: } (( index++ )) done ;; @(candidates|potential|smit)) list_candidates $TYPE rc=$? ;; *) CL=$LINENO isClusterDefined if (( $? == RC_SUCCESS )); then print "$0()[$LINENO]($SECONDS): clnodename" >>$CLMGR_TMPLOG # Always log commands hosts=$(clodmget -q "object=COMMUNICATION_PATH" -n -f value HACMPnode) rc=$? print "$0()[$LINENO]($SECONDS): clnodename RC: $rc; hosts == \"${hosts//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for item in $hosts; do list[$index]=$item (( index++ )) done fi ;; esac else rc=$RC_INCORRECT_INPUT fi else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_host_attributes allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != HOSTNAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_hosts()" #============================================================================ # # Name: KLIB_HACMP_list_candidates # # Description: This is a helper function that lists -potential- hosts # for the cluster. This is done by finding the intersection # between /etc/hosts and /etc/cluster/rhosts, and filtering # out addresses that are already known to be in use in the # cluster. # # Inputs: See the "TYPE" description in the "devDoc()" function, below. # # Outputs: The results are displayed directly on STDOUT. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function list_candidates { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -l TYPE=$1 # : The communication path for a new node cannot : be the communication path for an existing node, : or an interface on any existing node. Concatenate : existing values into a string to use with egrep # current_paths=$(clodmget -q 'object = COMMUNICATION_PATH' -f value -n HACMPnode | paste -s -d'|' -) current_ips=$(clodmget -f identifier -n HACMPadapter | paste -s -d'|' -) if [[ -n $current_ips ]] then current_paths=${current_paths:+$current_paths\|}$current_ips fi host $(hostname) | read localname is localip rest if [[ "|$current_paths|" != *\|$localname\|* ]]; then current_paths=${current_paths:+$current_paths\|}$localname fi if [[ "|$current_paths|" != *\|$localip\|* ]]; then current_paths=${current_paths:+$current_paths\|}$localip fi # : The communication path for a new node must exist in : /etc/cluster/rhosts. Since rhosts can contain IP : addresses or labels, we must form the list as follows: # rhost_paths=$(cat /etc/cluster/rhosts | while read i; do [[ -z $i ]] && continue host $i 2>/dev/null | sed 's/,//' | read ip is label rest [[ -n $ip ]] && echo "$ip#$label" done | paste -s -d'|' -) # : And finally gather everything in /etc/hosts # etchosts_paths=$(clgetinterfaces -h | cut -f3,5 -d'#' | \ grep -vw loopback | paste -s -d'|' -) if [[ $TYPE == @(candidates|smit) ]] then # # The rhosts and etc hosts entries are all formatted # into a string like label#ip|label#ip|... # : Now for the presentation: : show everything in rhosts that : is not already in the HA config # for path in ${rhost_paths//\|/ } do echo ${path%%#*} | egrep -qvw "$current_paths|loopback" && \ echo ${path#*#} | egrep -qvw "$current_paths" && \ echo $path | sed 's/\(.*\)#\(.*\)/\1 (\2)/' done if [[ $TYPE == "smit" ]] then # : In case the above code did not produce the expected results, : give some clues by displaying "potential" entries below. : This should provide the same output as the SMIT panel pick list. # print " # $(dspmsg -s 40 cluster.cat 201 "# Don't see what you are looking for ?\n") # $(dspmsg -s 40 cluster.cat 202 "# To add a node, you must first create entries in\n# /etc/hosts and /etc/cluster/rhosts.\n") #" # : Show the potential entries in comments, where "potential" means the : entries are defined in /etc/hosts, but not /etc/cluster/rhosts, and : are not already known to the cluster. # integer banner=1 typeset rhosts_egrep=${rhost_paths//#/'|'} for entry in ${etchosts_paths//\|/ } do if echo ${entry%%#*} | egrep -qvw "$rhosts_egrep" && \ echo ${entry#*#} | egrep -qvw "$rhosts_egrep" && \ echo ${entry%%#*} | egrep -qvw "$current_paths" && \ echo ${entry#*#} | egrep -qvw "$current_paths" then if (( banner )) then dspmsg -s 40 cluster.cat 203 "# The following entries in /etc/hosts do not exist\n# in /etc/cluster/rhosts:\n#\n" banner=0 fi echo "# $(echo $entry | sed 's/\(.*\)#\(.*\)/\1 (\2)/')" fi done fi elif [[ $TYPE == "potential" ]] then # : For "POTENTIAL" hosts, we are looking for entries that are : defined in /etc/hosts, but not /etc/cluster/rhosts. # typeset rhosts_egrep=${rhost_paths//#/'|'} for entry in ${etchosts_paths//\|/ } do if echo ${entry%%#*} | egrep -qvw "$rhosts_egrep" && \ echo ${entry#*#} | egrep -qvw "$rhosts_egrep" && \ echo ${entry%%#*} | egrep -qvw "$current_paths" && \ echo ${entry#*#} | egrep -qvw "$current_paths" then echo $entry | sed 's/\(.*\)#\(.*\)/\1 (\2)/' fi done fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "list_candidates()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_hosts =head1 SYNOPSIS clmgr query node NOTE: the alias for "node" is "no". =head1 DESCRIPTION Displays the currently configured set of hosts. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. 2. TYPE [OPTIONAL] [set] An optional indicator of what type of hosts to list. By default, the communication paths from the cluster are listed. But the following types will change the output: * "CAA" Lists the CAA host members. * "CANDIDATES" Lists the entries that are common to /etc/hosts and /etc/cluster/rhosts, but are not already in use in the cluster. * "POTENTIAL" Lists the entries that are defined in /etc/hosts, but not in /etc/cluster/rhosts, and are not already in use in the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== e k꒤n:!םa՝a֝a&:!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_interfacesion#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_interfaces.sh 1.8 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)98 1.8 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_interfaces.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/10/15 16:59:19 #============================================================================ # # Name: KLIB_HACMP_list_interfaces # # Description: This is the main, FPATH function that is invoked by clmgr # to collect interface names. It uses the "cllsif" utility to # generate the list of names unless a search is being conducted. # In the case of a search, the associated FPATH function, # KLIB_HACMP_get_interface_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one interface per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_interfaces { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.8, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_interfaces.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset line= value= OUTPUT= item= typeset -i index=0 matches=0 rc=$RC_UNKNOWN already_found=0 i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllsif -pcS" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllsif -pcS) rc=$? print "$0()[$LINENO]($SECONDS): cllsif RC: $rc; interfaces == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read line do : Re-initialize these variables already_found=0 item= for (( i=0; i # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_interfaces =head1 VERSION Version Number: 1.8 Last Extracted: 6/16/15 17:51:13 Last Changed: 6/10/15 16:59:19 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_interfaces.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query interface NOTE: the aliases for "interface" are "in" and "if". =head1 DESCRIPTION Displays the currently configured set of interfaces. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== "" all kꦺn!םa՝a֝a&!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_ldap_serversn#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_ldap_servers.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)13 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_ldap_servers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 09:56:17 #============================================================================ # # Name: KLIB_HACMP_list_ldap_servers # # Description: This is the main, FPATH function that is invoked by clmgr # to collect LDAP server names. It uses the "clodmget" utility # to retrieve data from the HACMPLDAP ODM to generate the list # of LDAP server names unless a search is being conducted. # In the case of a search, the associated FPATH function, # KLIB_HACMP_get_ldap_server_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one LDAP server per entry. # The only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_ldap_servers { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_ldap_servers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): clodmget -q \"group=LDAPServer and name=ServerList\" -f value HACMPLDAP" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clodmget -q "group=LDAPServer and name=ServerList" -f value HACMPLDAP 2>/dev/null) rc=$? print "$0()[$LINENO]($SECONDS): clodmget RC: $rc; ldap_servers == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read LINE; do LINE=${LINE//\"/} LINE=${LINE##+([[:space:]])} LINE=${LINE%%+([[:space:]])} for SERVER in ${LINE//,/ }; do if [[ -n $SERVER ]]; then list[$index]=$SERVER (( index++ )) fi done done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_ldap_server_attributes allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != SERVERS@(|+([0-9])) ]] && continue for NAME in ${allProperties[$key]//,/ }; do list[$index]=$NAME (( index++ )) done done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_ldap_servers()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_ldap_servers =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:13 Last Changed: 6/11/15 09:56:17 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_ldap_servers.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query ldap_server NOTE: the alias for "ldap_server" is "ls". =head1 DESCRIPTION Displays the current set of AIX LDAP servers. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== r knznםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_logical_volumesmes#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logical_volumes.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)92 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logical_volumes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 10:01:12 #============================================================================ # # Name: KLIB_HACMP_list_logical_volumes # # Description: This is the main, FPATH function that is invoked by clmgr to # collect logical volume names. It uses the "cl_lsvg" utility # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_logical_volume_attributes is invoked # in verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one logical volume per entry. # The only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_logical_volumes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logical_volumes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LV_DATA= value= typeset -i index=0 matches=0 rc=$RC_SUCCESS i=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all typeset VGS= CL=$LINENO KLIB_HACMP_list_volume_groups VGS 2>>$CLMGR_TMPLOG for (( i=0; i<${#VGS[*]}; i++ )); do VG=${VGS[$i]} [[ $VG == *([[:space:]]) ]] && continue print "$0()[$LINENO]($SECONDS): LC_ALL=C cl_lsvg -l $VG" >>$CLMGR_TMPLOG LV_DATA=$(LC_ALL=C cl_lsvg -l $VG 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cl_lsvg RC: $rc" >>$CLMGR_TMPLOG (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$LV_DATA" |\ while read lvname junk; do [[ $lvname == *: || -z $lvname ]] && continue [[ $lvname == LV && $junk == NAME* ]] && continue list[$index]=$lvname (( index++ )) done # End of the LV data loop done # End of the VG loop else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_logical_volume_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_logical_volumes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_logical_volumes =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:14 Last Changed: 6/11/15 10:01:12 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logical_volumes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query logical_volume NOTE: the alias for "logical_volume" is "lv". =head1 DESCRIPTION Constructs a list of the shared and/or concurrent logical volumes within the cluster. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== op kenםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_logsal#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logs.sh 1.7 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)99 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 10:05:33 #============================================================================ # # Name: KLIB_HACMP_list_logs # # Description: This is the main, FPATH function that is invoked by clmgr to # collect log names. It uses the "cllog" utility to generate # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_log_attributes is invoked in # verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one log per entry. The only # other outputs are any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_logs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllog -s" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(VERBOSE_LOGGING="" cllog -s) rc=$? print "$0()[$LINENO]($SECONDS): cllog RC: $rc; logs == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" | sort |\ while read item; do item=${item%%[[:space:]]*} list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_log_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_logs()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_logs =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:14 Last Changed: 6/11/15 10:05:33 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_logs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query log =head1 DESCRIPTION Displays the currently configured set of logs. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== es kn*םa՝a֝a&*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_methodsvolumes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_methods.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_methods.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_list_methods # # Description: This is the main, FPATH function that is invoked by clmgr # to collect method names. It uses the "cllscustom" and "cllspgr" # utilities to generate the list of names unless a search is # being conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_method_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one method per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_methods { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_methods.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n list=$1 shift [[ $1 != *=* ]] && typeset -u type=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -n $type && $type != @(NO|SN|VE)* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": %2$s\n\n' TYPE "$type" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 'Valid values: %1$s\n\n' "notify, snapshot, verify" 1>&2 rc=$RC_INCORRECT_INPUT else #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all case "$type" in NO*) if [[ -s $ODMDIR/HACMPpager ]] then print "$0()[$LINENO]($SECONDS): cllspgr" >>$CLMGR_TMPLOG # Always log commands cmd="cllspgr" OUTPUT=$(cllspgr) fi ;; SN*) if [[ -s $ODMDIR/HACMPcustom ]] then print "$0()[$LINENO]($SECONDS): cllscustom -t snapshot" >>$CLMGR_TMPLOG # Always log commands cmd="cllscustom" OUTPUT=$(cllscustom -t snapshot) fi ;; VE*) if [[ -s $ODMDIR/HACMPcustom ]] then print "$0()[$LINENO]($SECONDS): cllscustom -t verify" >>$CLMGR_TMPLOG # Always log commands cmd="cllscustom" OUTPUT=$(cllscustom -t verify) fi ;; *) if [[ -s $ODMDIR/HACMPcustom ]] then print "$0()[$LINENO]($SECONDS): cllscustom" >>$CLMGR_TMPLOG # Always log commands cmd="cllscustom/cllspgr" typeset name= rem= cllscustom -c |\ while IFS=: read name type rem; do if [[ $type == @(SN|VE)* ]]; then [[ -n $OUTPUT ]] && OUTPUT="$OUTPUT$NL" OUTPUT="$OUTPUT$name" fi done fi if [[ -s $ODMDIR/HACMPpager ]] then print "$0()[$LINENO]($SECONDS): cllspgr" >>$CLMGR_TMPLOG # Always log commands OUTPUT="$OUTPUT$NL$(cllspgr)" fi ;; esac rc=$? print "$0()[$LINENO]($SECONDS): $cmd RC: $rc; OUTPUT == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result if (( $rc == RC_SUCCESS )); then print -- "$OUTPUT" |\ while read item; do [[ $item == *([[:space:]])\#* ]] && continue if [[ -n $item ]]; then list[$index]=$item (( index++ )) fi done else rc=$RC_ERROR fi else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_method_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_methods()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_methods =head1 VERSION Version Number: 1.6 Last Extracted: 5/3/16 18:53:58 Last Changed: 4/6/16 06:32:06 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_methods.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 =head1 SYNOPSIS clmgr query method \ [ TYPE={notify|snapshot|verify} ] NOTE: the alias for "method" is "me". =head1 DESCRIPTION Displays the currently configured set of cluster snspshots. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. 2. type {OPTIONAL] [string] The type of method to be queried. Valid values: {notify|snapshot|verify} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== s[*]}; kVn!םa՝a֝a&!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_groupss#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_groups.sh 1.7 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)58 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 10:15:56 #============================================================================ # # Name: KLIB_HACMP_list_mirror_groups # # Description: This is the main, FPATH function that is invoked by clmgr # to collect mirror group names. It uses the XD utility, # "clxd_list_mg_director", to generate the list of names # unless a search is being conducted. In the case of a search, # the associated FPATH function, # KLIB_HACMP_get_mirror_group_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one mirror group per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_mirror_groups { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg $RC_MISSING_DEPENDENCY $0 $LINENO return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_mg_director -d\"|\" -h" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_list_mg_director -d"|" -h >$TMPDIR/clmgr.KHlmg.$$ rc=$? print "$0()[$LINENO]($SECONDS): clxd_list_mg_director RC: $rc; mirror_groups == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR cat $TMPDIR/clmgr.KHlmg.$$ |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *errno* ]] && break list[$index]=${LINE%%\|*} (( index++ )) fi done rm -f $TMPDIR/clmgr.KHlmg.$$ else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_mirror_group_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_mirror_groups()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_mirror_groups =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:16 Last Changed: 6/11/15 10:15:56 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query mirror_group NOTE: the alias for "mirror_group" is "mg". =head1 DESCRIPTION Displays the currently configured set of mirror groups. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== Pr kAn!םa՝a֝a&!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pairss#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pairs.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)88 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pairs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 10:19:34 #============================================================================ # # Name: KLIB_HACMP_list_mirror_pairs # # Description: This is the main, FPATH function that is invoked by clmgr # to collect mirror pair names. It uses the XD utility, # "clxd_list_mdp_director", to generate the list of names # unless a search is being conducted. In the case of a search, # the associated FPATH function, # KLIB_HACMP_get_mirror_pair_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one mirror pair per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_mirror_pairs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pairs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg $RC_MISSING_DEPENDENCY $0 $LINENO return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN COUNT=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_mdp_director -s svc -d\"|\"" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$($HAXDWIZ/clxd_list_mdp_director -s svc -d"|" 2>/dev/null) rc=$? print "$0()[$LINENO]($SECONDS): clxd_list_mdp_director RC: $rc; mirror_pairs == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read LINE; do (( ++COUNT == 1 )) && continue # Skip the column header line if [[ -n $LINE ]]; then list[$index]=${LINE%%\|*} (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_mirror_pair_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_mirror_pairs()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_mirror_pairs =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:16 Last Changed: 6/11/15 10:19:34 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pairs.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query mirror_pair NOTE: the alias for "mirror_pair" is "mp". =head1 DESCRIPTION Displays the currently configured set of mirror disk pairs. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== lPrope knP!םa՝a֝a&P!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_poolss#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pools.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)51 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pools.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 10:58:44 #============================================================================ # # Name: KLIB_HACMP_list_mirror_pools # # Description: This is the main, FPATH function that is invoked by clmgr # to collect mirror pool names. It uses the XD utility, # "cl_lsmpvgs", to generate the list of names unless a search # is being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_mirror_pool_attributes is # invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive # at a set of outputs that matches the provided search # parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one mirror pool per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_mirror_pools { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pools.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= OUTPUT= NAME= VG= REM= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN try=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all for (( try=0; $try<5; try++ )); do print "$0()[$LINENO]($SECONDS): cl_lsmpvgs -p" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cl_lsmpvgs -p 2>/dev/null) rc=$? print "$0()[$LINENO]($SECONDS): cl_lsmpvgs RC: $rc; Mirror Pools == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR || break (( try < 4 )) && sleep 3 done if (( rc == $RC_SUCCESS )); then print -- "$OUTPUT" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue print -- "$LINE" | read NAME VG REM list[$index]="$NAME ($VG)" (( index++ )) fi done fi else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_mirror_pool_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_mirror_pools()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_mirror_pools =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:16 Last Changed: 6/11/15 10:58:44 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_mirror_pools.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query mirror_pool NOTE: the alias for "mirror_pool" is "mp". =head1 DESCRIPTION Displays the currently configured set of mirror pools. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  k<nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_networksolss#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_networks.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)99 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_networks.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 15:31:04 #============================================================================ # # Name: KLIB_HACMP_list_networks # # Description: This is the main, FPATH function that is invoked by clmgr to # collect network names. It uses the "odmget" utility to pull # information from the "HACMPnetwork" ODM to generate the list # of names unless a search is being conducted. In the case of # a search, the associated FPATH function, # KLIB_HACMP_get_network_attributes is invoked in verbose mode. # The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one network per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_networks { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_networks.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset name= value= OUTPUT= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): clodmget -n -f name HACMPnetwork" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clodmget -n -f name HACMPnetwork) rc=$? print "$0()[$LINENO]($SECONDS): clodmget RC: $rc; networks == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for name in $OUTPUT do list[$index]=$name (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_network_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_networks()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_networks =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:17 Last Changed: 6/11/15 15:31:04 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_networks.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query network NOTE: the aliases for "network" are "ne" and "nw". =head1 DESCRIPTION Displays the currently configured set of networks. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== _at kH3nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_nodesk#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_nodes.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)00 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_nodes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 15:34:43 #============================================================================ # # Name: KLIB_HACMP_list_nodes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect node names. It uses the "clnodename" utility, # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_node_attributes is invoked in # verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at a # set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one node per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_nodes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_nodes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= nodes= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): clnodename" >>$CLMGR_TMPLOG # Always log commands nodes=$(clnodename) rc=$? print "$0()[$LINENO]($SECONDS): clnodename RC: $rc; nodes == \"${nodes//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for item in $nodes; do list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_node_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_nodes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_nodes =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:17 Last Changed: 6/11/15 15:34:43 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_nodes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query node NOTE: the alias for "node" is "no". =head1 DESCRIPTION Displays the currently configured set of nodes. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== _V kd{nWםa՝a֝a&Wbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_novask#!/bin/ksh93 # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_novas.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # #============================================================================ # # Name: KLIB_HACMP_list_novas # # Description: This is the main, FPATH function that is invoked by clmgr # to collect NOVA names. It uses the "cllsnova" utility to # generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_nova_attributes is invoked in # verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one NOVA per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_novas { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== # Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset -i index=0 matches=0 typeset -i rc=$RC_UNKNOWN typeset nova= name= timeout= retry_count= retry_delay= value= #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all typeset NOVA_PROPERTIES= print "$0()[$LINENO]($SECONDS): cllsnova -c" >>$CLMGR_TMPLOG NOVA_PROPERTIES=$(cllsnova -c) 2>>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): cllsnova RC: $rc" >>$CLMGR_TMPLOG if (( $rc == RC_SUCCESS )); then print -- "$NOVA_PROPERTIES" |\ while IFS=: read novalabel timeout retry_count retry_delay rem do [[ $novalabel == \#* ]] && continue # Skip the column headers list[$index]=$novalabel (( index++ )) done else rc=$RC_ERROR fi else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_nova_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_novas()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_novas =head1 SYNOPSIS clmgr query nova =head1 DESCRIPTION Displays the currently configured set of NovaLinks. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== e k|nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_persistent_ips#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_persistent_ip.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)26 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_persistent_ip.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 15:39:28 #============================================================================ # # Name: KLIB_HACMP_list_persistent_ip # # Description: This is the main, FPATH function that is invoked by clmgr # to collect persistent IPs. It uses the "cllsif" utility, # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_persistent_ip_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at a # set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one persistent IP per entry. # The only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_persistent_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_persistent_ip.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset name= value= OUTPUT= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllsif -pcS" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllsif -pcS 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cllsif RC: $rc; interfaces == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" | grep ":persistent:" |\ while IFS=: read name rem do list[$index]=$name (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_persistent_ip_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_persistent_ip()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_persistent_ip =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:17 Last Changed: 6/11/15 15:39:28 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_persistent_ip.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query persistent_ip NOTE: the alias for "persistent_ip" is "pe". =head1 DESCRIPTION Displays the currently configured set of persistent IPs. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== pe k~n*םa՝a֝a&*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_physical_volumemes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_physical_volume.sh 1.9.1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_physical_volume.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_list_physical_volume # # Description: This is the main, FPATH function that is invoked by clmgr to # collect physical volume names for disks that are common and # unused across the given set of nodes. If a search is being # conducted, the same FPATH function is invoked, but this time # in verbose mode. The resulting data set is then passed through # the "search_properties()" function to arrive at a set of # outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list hash is populated. The only other outputs # are any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_physical_volume { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_physical_volume.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n list=$1 typeset NODES=${2//\"/} typeset -l TYPE=${3//\"/} shift 3 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset dname= OUTPUT= indexes= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase if [[ $attr == @(TYPE|NODE|NODES) ]];then shift continue fi queries[$attr]="${value#*=}" fi shift done #======================================================== # If no nodes are specified, default to the local node. # This behavior differs from the verbose listing of # physical volumes, but is now a legacy requirement. # NOTE: if the type of disk listing requested is # tiebreaker, then go ahead and default to # all nodes. #======================================================== if [[ $NODES == *([[:space:]]) ]]; then [[ $TYPE != t* ]] && NODES=$LOCAL_NODE || NODES=$(clnodename) fi if [[ $TYPE != *([[:space:]]) ]]; then if [[ $TYPE == "tb" ]]; then TYPE="tiebreaker" else CL=$LINENO verify_in_set TYPE "$TYPE" "available, all, tiebreaker" TYPE (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi fi if (( rc == RC_UNKNOWN )) && (( ${#queries[*]} == 0 )); then # List all typeset -A props #================================ : Retrieve the disk information #================================ CL=$LINENO KLIB_HACMP_get_physical_volume_attributes "" props "${NODES//+([[:space:]])/,}" "$TYPE" rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!props[*]}; do [[ $key != NAME* ]] && continue [[ -n $indexes ]] && indexes="$indexes$NL" indexes="$indexes${key##+([[:alpha:]])}" done indexes=$(print -- "$indexes" | sort -n -u) if [[ -n $indexes ]]; then for index in $indexes; do [[ -n $OUTPUT ]] && OUTPUT="$OUTPUT$NL" OUTPUT="$OUTPUT${props[NAME$index]}:${props[PVID$index]}" [[ $CLMGR_GUI == "SMUI" ]] && OUTPUT="$OUTPUT:${props[SIZE$index]}" done else [[ -n $OUTPUT ]] && OUTPUT="$OUTPUT$NL" OUTPUT="${OUTPUT}${props[NAME]}:${props[PVID]}" [[ $CLMGR_GUI == "SMUI" ]] && OUTPUT="$OUTPUT:${props[SIZE]}" fi else rc=$RC_ERROR fi if (( rc == RC_SUCCESS )); then index=0 print -- "$OUTPUT" | sort |\ while IFS=: read dname pvid size rem; do [[ -z $dname || -z $pvid ]] && continue if [[ $CLMGR_GUI == "SMUI" && $size == +([0-9]) ]] then list[$index]="$dname ($pvid) [$size]" else list[$index]="$dname ($pvid)" fi (( index++ )) done fi elif (( rc == RC_UNKNOWN )); then # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_physical_volume_attributes "" allProperties "${NODES//+([[:space:]])/,}" "$TYPE" CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_physical_volume()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_physical_volume =head1 VERSION Version Number: 1.9.1.2 Last Extracted: 5/3/16 18:54:04 Last Changed: 4/6/16 06:57:04 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_physical_volume.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 =head1 SYNOPSIS clmgr query physical_volume \ [ NODES=,[,,...] ] \ [ TYPE={available|all|tiebreaker} ] NOTE: "node" may be either a node name, or a network- resolvable name (i.e. hostname or IP address). NOTE: the alias for "physical_volume" is "pv". =head1 DESCRIPTION Displays the physical volumes for the specified node(s). If no nodes are specified, defaults to the local node. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. 2. NODES [OPTIONAL] string A list of nodes/hosts to query. Defaults to all defined nodes, if not provided. 3. TYPE [OPTIONAL] [set] The type of disks to list, from the set: available (only unused disks are listed) all (lists disks even if they are currently in use) tiebreaker (disks that are suitable for tiebreaker usage) =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== TH  knx/םa՝a֝a&x/bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_repositoriesme#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_repositories.sh 1.13 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2012,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)18 1.13 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_repositories.sh, hacmp.assist, 61haes_r720, 1531B_hacmp720 7/29/15 10:54:43 #============================================================================ # # Name: KLIB_HACMP_list_repositories # # Description: This is the main, FPATH function that is invoked by clmgr to # collect repository names and PVIDs. It uses the "clodmget" # utility to read data from the "HACMPsircol" ODM to generate # the list of names unless a search is being conducted. In the # case of a search, the associated FPATH function, # KLIB_HACMP_get_repository_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one repository per entry, # with the active repository first, followed by any backup # repositories. The format of each repository entry is # " ()". The only other outputs are any # error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_repositories { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.13, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_repositories.sh, hacmp.assist, 61haes_r720, 1531B_hacmp720 : INPUTS: $* typeset -n list=$1 shift typeset -i RETURN_NODES=0 if [[ -n $1 && $1 != *=* ]]; then typeset -n NODE_MAP=$1 shift RETURN_NODES=1 fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset -i index=0 rc=$RC_UNKNOWN count=0 typeset REPOSITORIES= value= typeset disk= DISK_DATA= BACKUPS= NODES= SITE= REQ_SITE="" typeset DISK_NAME= DISK_PVID= DISK_UUID= REFNODE= REM= #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase if [[ $attr == "SITE" ]]; then REQ_SITE=${value#*=} else queries[$attr]="${value#*=}" fi fi shift done if (( ${#queries[*]} == 0 )); then # List all if [[ $CLUSTER_TYPE == "LC" ]]; then for SITE in $(clodmget -n -f name HACMPsite); do [[ -n $REQ_SITE && $REQ_SITE != $SITE ]] && continue NODES=$(clodmget -n -f nodelist -q name=$SITE HACMPsite) NODES=${NODES//+([[:space:]])/ } : Retrieve the name of the active repository disk for $SITE for disk in $(clodmget -n -f repository -q name="${SITE}_sircol" HACMPsircol); do if [[ " $NODES " == *\ $LOCAL_NODE\ * ]]; then lspv | grep -w $disk | read DISK_DATA junk elif [[ -n $NODES ]]; then $CLRSH ${NODES%% *} "/usr/sbin/lspv | /usr/bin/grep -w $disk" | read DISK_DATA junk fi if [[ -n $DISK_DATA ]]; then REPOSITORIES[$count]="_$disk:$DISK_DATA:$NODES:$SITE" (( count++ )) fi done : Retrieve the names of any backup repository disks for $SITE BACKUPS=$(clodmget -n -f backup_repository -q name="${SITE}_sircol" HACMPsircol) for disk in ${BACKUPS//,/ }; do if [[ " $NODES " == *\ $LOCAL_NODE\ * ]]; then lspv | grep -w $disk | read DISK_DATA junk elif [[ -n $NODES ]]; then $CLRSH ${NODES%% *} "/usr/sbin/lspv | /usr/bin/grep -w $disk" | read DISK_DATA junk fi if [[ -n $DISK_DATA ]]; then REPOSITORIES[$count]="_$disk:$DISK_DATA:$NODES:$SITE" (( count++ )) fi done [[ -n $REQ_SITE ]] && break done else NODES=$(clnodename) NODES=${NODES//+([[:space:]])/ } : Retrieve the name of the active repository disk for disk in $(clodmget -n -f repository HACMPsircol); do # Want to show the name of the active repository disk # as it appears on the local node lspv | grep -w $disk | read DISK_DATA junk REPOSITORIES[$count]="_$disk:$DISK_DATA:$NODES:" (( count++ )) done : Retrieve the names of any backup repository disks BACKUPS=$(clodmget -n -f backup_repository HACMPsircol) for disk in ${BACKUPS//,/ }; do lspv | grep -w $disk | read DISK_DATA junk REPOSITORIES[$count]="_$disk:$DISK_DATA:$NODES:" (( count++ )) done fi integer ridx=0 for (( ridx=0; ridx < $count; ridx++ )); do print -- "${REPOSITORIES[$ridx]}" |\ IFS=: read disk NAME NODES SITE junk disk=${disk#_} [[ $disk == *([[:space:]]) ]] && continue list[$index]="$NAME ($disk)" (( RETURN_NODES )) && NODE_MAP[_$disk]="$NODES($SITE)" (( index++ )) done if (( rc == RC_UNKNOWN )); then (( index > 0 )) && rc=$RC_SUCCESS || rc=$RC_NOT_FOUND fi else # Searches were provided typeset -A allProperties CLMGR_VERBOSE=1 CL=$LINENO KLIB_HACMP_get_repository_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue typeset NAME=${allProperties[$key]} typeset IDX=${key#NAME} typeset PVID=${allProperties[PVID$IDX]} typeset SITE=${allProperties[SITE$IDX]} if [[ $SITE == *([[:space:]]) ]]; then NODES=$(clnodename) else NODES=$(clodmget -n -f nodelist -q name=$SITE HACMPsite) fi NODES=${NODES//+([[:space:]])/ } list[$index]="$NAME ($PVID)" (( RETURN_NODES )) && NODE_MAP[_$PVID]="$NODES($SITE)" (( index++ )) done else rc=$RC_SEARCH_FAILED fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_repositories()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_repositories =head1 VERSION Version Number: 1.13 Last Extracted: 7/30/15 19:50:43 Last Changed: 7/29/15 10:54:43 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_repositories.sh, hacmp.assist, 61haes_r720, 1531B_hacmp720 =head1 SYNOPSIS clmgr query repository =head1 DESCRIPTION Displays the names of the currently configured repository disk(s). =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An array within which data about the queried objects can be returned to the caller. 2. NODE_MAP [OPTIONAL] [hash ref] An associative array that is used to return the list of nodes that the disks were found on. The key is the PVID of the disk, and the value is the node list. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2012,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  kTni םa՝a֝a&i bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_resourcegroups#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_resourcegroups.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)01 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_resourcegroups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 16:27:12 #============================================================================ # # Name: KLIB_HACMP_list_resourcegroups # # Description: This is the main, FPATH function that is invoked by clmgr # to collect resource group names. It uses the "cllsgrp" # utility to generate the list of names unless a search is # being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_rg_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one resource group per # entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_resourcegroups { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_resourcegroups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= groups= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all #============================================ : List the resource groups. If there are no : resource groups, cllsgrp returns an error. #============================================ print "$0()[$LINENO]($SECONDS): cllsgrp" >>$CLMGR_TMPLOG # Always log commands groups=$(cllsgrp 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cllsgrp RC: $rc; groups == \"${groups//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR for item in $groups; do list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_rg_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_resourcegroups()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_resourcegroups =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:18 Last Changed: 6/11/15 16:27:12 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_resourcegroups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query resource_group NOTE: the alias for "resource_group" is "rg". =head1 DESCRIPTION Displays the currently configured set of resource groups. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== s  knםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_service_ipups#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_service_ip.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)02 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_service_ip.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 16:30:46 #============================================================================ # # Name: KLIB_HACMP_list_service_ip # # Description: This is the main, FPATH function that is invoked by clmgr # to collect service IP names. It uses the "cllsif" utility # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_service_ip_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one service IP per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_service_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_service_ip.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset name= value= OUTPUT= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllsif -cS" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllsif -cS) rc=$? print "$0()[$LINENO]($SECONDS): cllsif RC: $rc; interfaces == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != $RC_SUCCESS )) && rc=$RC_ERROR OUTPUT=$(print -- "$OUTPUT" | grep ":service:" | cut -d: -f 1 | sort -u) for name in $OUTPUT; do list[$index]=$name (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_service_ip_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_service_ip()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_service_ip =head1 VERSION Version Number: 1.7 Last Extracted: 6/16/15 17:51:18 Last Changed: 6/11/15 16:30:46 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_service_ip.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query service_ip NOTE: the alias for "service_ip" is "se". =head1 DESCRIPTION Displays the currently configured set of service IPs. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2006,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== ttr kFnzםa՝a֝a&zbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_sitese#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_sites.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)15 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_sites.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 16:35:04 #============================================================================ # # Name: KLIB_HACMP_list_sites # # Description: This is the main, FPATH function that is invoked by clmgr # to collect site names. It uses the "cllssite" utility to # generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_site_attributes is invoked in # verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one site per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_sites { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_sites.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= OUTPUT= value= typeset -i index=0 rc=$RC_UNKNOWN matches=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllssite -c" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllssite -c) rc=$? print "$0()[$LINENO]($SECONDS): cllssite RC: $rc; sites == \"${OUTPUT//+([[:space:]])/ }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read item; do [[ $item == *([[:space:]])\#* ]] && continue item=${item%%:*} if [[ -n $item ]]; then list[$index]=$item (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_site_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_sites()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_sites =head1 VERSION Version Number: 1.6 Last Extracted: 6/16/15 17:51:18 Last Changed: 6/11/15 16:35:04 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_sites.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query site =head1 DESCRIPTION Displays the currently configured set of sites. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== allPro k nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_smart_assists#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_smart_assists.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)04 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_smart_assists.sh, hacmp.assist, 61haes_r714 6/10/12 15:39:47 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_smart_assists =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:56 Last Changed: 6/10/12 15:39:47 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_smart_assists.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr query smart_assist \ [ TYPE={SA|COMP|PROP} ] \ [ NODES=[,,,...]] \ [ SAID= ] \ [ COMPID= ] \ [ INSTANCEID= ] \ [ ENV="..." ] =head1 DESCRIPTION Displays the currently configured set of Smart Assists. =head1 ARGUMENTS 1. type [OPTIONAL] [String] Indicates what type of Smart Assist object is to be queried. The default is to list the available Smart Assists themselves. But if type is "COMP", then components will be listed, and if type is "PROP", then properties will be listed. 2. nodes [OPTIONAL] [String] One or more nodes to pass to clvtsa. 3. sa_id [OPTIONAL] [String] A Smart Assist identifier. 4. comp_id [OPTIONAL] [String] A component identifier. 5. inst_id [OPTIONAL] [String] An instance identifier. 6. env [OPTIONAL] [String] A misellaneous properties string to pass to clvtsa. =head1 RETURN The exit code from clvtsa is returned. =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_list_smart_assists { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_smart_assists.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -u type=$1 typeset nodes=$2 typeset sa_id=$3 typeset comp_id=$4 typeset inst_id=$5 typeset env=$6 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i errors=0 typeset cmd= var= #================================================================= : Some of the Smart Assists incorrectly attempt to add quotes to : their values, resulting in those quotes getting interpreted as : literal parts of the values. Not the intent. So it is safer to : remove leading/trailing quotes here, just to be safe. #================================================================= for var in type nodes sa_id comp_id inst_id env; do eval "$var=\${$var##+(\\\")}" eval "$var=\${$var%%+(\\\")}" done if [[ $type == @(C|P)* ]]; then if [[ $nodes == *([[:space:]]) ]]; then print -u2 "\nERROR: missing the \"NODES\" argument.\n" (( errors++ )) fi if [[ $sa_id == *([[:space:]]) ]]; then print -u2 "\nERROR: missing the \"SAID\" argument.\n" (( errors++ )) fi if [[ $type == P* ]]; then if [[ $comp_id == *([[:space:]]) ]]; then print -u2 "\nERROR: missing the \"COMPID\" argument.\n" (( errors++ )) fi fi fi if (( errors == 0 )); then if [[ $type == P* ]]; then print -- "$0()[$LINENO]($SECONDS): $HASABIN/clvtsa -q queryPROPs -n \"$nodes\" -s \"$sa_id\" -c \"$comp_id\" -i \"$inst_id\" -e \"$env\"" >>$CLMGR_TMPLOG # Always log commands $HASABIN/clvtsa -q queryPROPs \ -n "$nodes" \ -s "$sa_id" \ -c "$comp_id" \ -i "$inst_id" \ -e "$env" elif [[ $type == C* ]]; then print -- "$0()[$LINENO]($SECONDS): $HASABIN/clvtsa -q queryCOMPs -n \"$nodes\" -s \"$sa_id\" -e \"$env\"" >>$CLMGR_TMPLOG # Always log commands $HASABIN/clvtsa -q queryCOMPs \ -n "$nodes" \ -s "$sa_id" \ -e "$env" else print -- "$0()[$LINENO]($SECONDS): $HASABIN/clvtsa -q querySAs" >>$CLMGR_TMPLOG # Always log commands $HASABIN/clvtsa -q querySAs fi rc=$? print "clvtsa RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR else print -u2 rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_smart_assists()" OMPID=< k"-nםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_snapshotssts#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_snapshots.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_snapshots.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_list_snapshots # # Description: This is the main, FPATH function that is invoked by clmgr # to collect snapshot names. It uses the "clsnapshot" utility # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_snapshot_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one snapshot per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_snapshots { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_snapshots.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): clsnapshot -l" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(clsnapshot -l) rc=$? print "$0()[$LINENO]($SECONDS): clsnapshot RC: $rc; snapshots == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read item; do [[ $item == *([[:space:]])\#* ]] && continue if [[ -n $item ]]; then list[$index]=$item (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_snapshot_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_snapshots()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_snapshots =head1 SYNOPSIS clmgr list snapshot NOTE: the alias for "snapshot" is "sn". =head1 DESCRIPTION Displays the current list of cluster snspshots. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== "$OUTP k0n!םa՝a֝a&!bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_storage_agents#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_agents.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)71 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_agents.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 16:56:20 #============================================================================ # # Name: KLIB_HACMP_list_storage_agents # # Description: This is the main, FPATH function that is invoked by clmgr # to collect storage agent names. It uses the XD utility, # "clxd_list_sa_director", to generate the list of names # unless a search is being conducted. In the case of a search, # the associated FPATH function, # KLIB_HACMP_get_storage_agent_attributes is invoked in verbose # mode. The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one storage agent per entry. # The only other outputs are any error messages that might # be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_storage_agents { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_agents.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg $RC_MISSING_DEPENDENCY $0 $LINENO return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN COUNT=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_sa_director -d\"|\"" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$($HAXDWIZ/clxd_list_sa_director -d"|" 2>/dev/null) rc=$? print "$0()[$LINENO]($SECONDS): clxd_list_sa_director RC: $rc; storage_agents == \"${OUTPUT//+([[:space:]])/ }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read LINE; do (( ++COUNT == 1 )) && continue # Skip the column header line if [[ -n $LINE ]]; then list[$index]=${LINE%%\|*} (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_storage_agent_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_storage_agents()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_storage_agents =head1 VERSION Version Number: 1.4 Last Extracted: 6/16/15 17:51:18 Last Changed: 6/11/15 16:56:20 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_agents.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query storage_agent NOTE: the alias for "storage_agent" is "sta". =head1 DESCRIPTION Displays the currently configured set of storage agents. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  k n'םa՝a֝a&'bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_storage_systemsmes#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_systems.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_systems.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM #============================================================================ # # Name: KLIB_HACMP_list_storage_systems # # Description: This is the main, FPATH function that is invoked by clmgr # to collect storage system names. It uses the XD utility, # "clxd_list_ss_director", to generate the list of names # unless a search is being conducted. In the case of a # search, the associated FPATH function, # KLIB_HACMP_get_storage_system_attributes is invoked in # verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at a # set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one storage system per # entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_storage_systems { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_systems.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= OUTPUT= value= PROFILES= typeset -i index=0 matches=0 rc=$RC_UNKNOWN typeset -i backup=0 #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase if [[ $attr == "BACKUP" ]]; then if [[ ${value#*=} == "1" ]]; then backup=1 fi else queries[$attr]="${value#*=}" fi fi shift done if (( ${#queries[*]} == 0 )); then # List all case $backup in 1) print "$0()[$LINENO]($SECONDS): cl_cbm_list_storage_profile" >>$CLMGR_TMPLOG PROFILES=$(LANG=C cl_cbm_list_storage_profile 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cl_cbm_list_storage_profile RC: $rc; storage_systems == \"$PROFILES\"" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS && $rc > 2 )); then rc=$RC_ERROR else rc=$RC_SUCCESS fi print -- "$PROFILES" |\ while read LINE; do if [[ -n $LINE ]]; then list[$index]=$LINE (( index++ )) fi done ;; *) CL=$LINENO isEnterprise if (( $? == 1 ));then print "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_list_ss_director -d\"|\" -h" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$($HAXDWIZ/clxd_list_ss_director -d"|" -h 2>/dev/null) rc=$? print "$0()[$LINENO]($SECONDS): clxd_list_ss_director RC: $rc; storage_systems == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read LINE; do if [[ -n $LINE ]]; then list[$index]=${LINE%%\|*} (( index++ )) fi done fi esac else # A search was specified typeset -A allProperties if (( backup == 1 ));then CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_storage_system_attributes "" allProperties BACKUP=1 else CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_storage_system_attributes "" allProperties fi CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_storage_systems()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_storage_systems =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:19 Last Changed: 6/11/15 16:59:20 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_storage_systems.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query storage_system clmgr query storage_system BACKUP=1 NOTE: the alias for "storage_system" is "sts". =head1 DESCRIPTION Displays the currently configured set of storage systems. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== erie kꊮnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_tapese#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_tapes.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)81 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_tapes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 17:02:45 #============================================================================ # # Name: KLIB_HACMP_list_tapes # # Description: This is the main, FPATH function that is invoked by clmgr # to collect tape names. It uses the "cllstape" utility # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_tape_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one tape per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_tapes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_tapes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all print "$0()[$LINENO]($SECONDS): cllstape" >>$CLMGR_TMPLOG # Always log commands OUTPUT=$(cllstape 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cllstape RC: $rc; tapes == \"${OUTPUT//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR print -- "$OUTPUT" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]=$LINE (( index++ )) fi done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_tape_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_tapes()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_tapes =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:19 Last Changed: 6/11/15 17:02:45 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_tapes.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query tape NOTE: the alias for "tape" is "tp". =head1 DESCRIPTION Displays the currently configured set of tape devices. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== E= k갵n*םa՝a֝a&*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_userse#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_users.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)66 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_users.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 17:07:29 #============================================================================ # # Name: KLIB_HACMP_list_users # # Description: This is the main, FPATH function that is invoked by clmgr # to collect user names. It uses the "lsuser" utility # to generate the list of names unless a search is being # conducted. In the case of a search, the associated FPATH # function, KLIB_HACMP_get_user_attributes is invoked # in verbose mode. The resulting data set is then passed # through the "search_properties()" function to arrive at # a set of outputs that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one user per entry. The # only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_users { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_users.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=${1//\"/} shift if [[ -n ${1//\"/} && ${1//\"/} != *=* ]]; then typeset -u type=${1//\"/} shift fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset LINE= LDAP_USERS= LOCAL_USERS= base= idx= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all case $type in AV*) print "$0()[$LINENO]($SECONDS): cl_manageallowpasswd -V" >>$CLMGR_TMPLOG # Always log commands LOCAL_USERS=$(cl_manageallowpasswd -V 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cl_manageallowpasswd RC: $rc" >>$CLMGR_TMPLOG # Always log command result print -- "$LOCAL_USERS" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]="$LINE" (( index++ )) fi done ;; AL*) print "$0()[$LINENO]($SECONDS): cl_manageallowpasswd -L" >>$CLMGR_TMPLOG # Always log commands LOCAL_USERS=$(cl_manageallowpasswd -L 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cl_manageallowpasswd RC: $rc" >>$CLMGR_TMPLOG # Always log command result print -- "$LOCAL_USERS" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]="$LINE" (( index++ )) fi done ;; "") #==================== : Display all users #==================== print "$0()[$LINENO]($SECONDS): lsuser -R files -a ALL" >>$CLMGR_TMPLOG # Always log commands LOCAL_USERS=$(lsuser -R files -a ALL 2>/dev/null) rc=$? print "$0()[$LINENO]($SECONDS): lsuser (files) RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR else print "$0()[$LINENO]($SECONDS): lsuser -R LDAP -a ALL" >>$CLMGR_TMPLOG # Always log commands LDAP_USERS=$(lsuser -R LDAP -a ALL 2>/dev/null) print "$0()[$LINENO]($SECONDS): lsuser (LDAP) RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi print -- "$LOCAL_USERS" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]="$LINE (files)" (( index++ )) fi done print -- "$LDAP_USERS" |\ while read LINE; do if [[ -n $LINE ]]; then [[ $LINE == *([[:space:]])\#* ]] && continue [[ $LINE == *+([[:space:]])* ]] && continue list[$index]="$LINE (LDAP)" (( index++ )) fi done ;; *) CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' TYPE "$type" 1>&2 rc=$RC_INCORRECT_VALUE ;; esac else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_user_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_users()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_users [ TYPE={AVAILABLE|ALLOWED} ] =head1 VERSION Version Number: 1.5 Last Extracted: 6/16/15 17:51:19 Last Changed: 6/11/15 17:07:29 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_users.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query user NOTE: the alias for "user" is "ur". =head1 DESCRIPTION Displays the current set of AIX users. If the "TYPE" parameter is provided, then the display will include only those users who may or may not change passwords. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. 2. type [OPTIONAL] [set] Indicates which type of users to list, with respect to who is allowed to change passwords. Valid values: AVAILABLE, ALLOWED =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== e kznf&םa՝a֝a&f&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_volume_groupss#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_volume_groups.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)76 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_volume_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 6/11/15 17:12:11 #============================================================================ # # Name: KLIB_HACMP_list_volume_groups # # Description: This is the main, FPATH function that is invoked by clmgr # to collect volume group names. It uses the "cl_ls_shared_vgs" # utility to generate the list of names unless a search is # being conducted. In the case of a search, the associated # FPATH function, KLIB_HACMP_get_volume_group_attributes is # invoked in verbose mode. The resulting data set is then # passed through the "search_properties()" function to arrive # at a set of outputs that matches the provided search # parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one volume group per entry. # The only other outputs are any error messages that might be # needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_list_volume_groups { trap 'on_exit_listvgs' EXIT LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_volume_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 : INPUTS: $* typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset line= OUTPUT= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN # Declare globally, so it is visible in the exit function errfile="$TMPDIR/clmgr.KHlvg.err.$$" # Global, for visibility in on_listvgs_exit()! #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all #====================================================================== : Added a retry loop around "cl_ls_shared_vgs" after testing revealed : that it could potentially fail due to intermittent clcomd glitches. : The loop masks the user from the unfortunate consequences of clcomd. #====================================================================== typeset -i try=0 tries=5 found=0 for (( try=0; try>$CLMGR_TMPLOG # Always log commands OUTPUT=$(LC_ALL=C cl_ls_shared_vgs -c -C 2>>$errfile) rc=$? print "$0()[$LINENO]($SECONDS): cl_ls_shared_vgs RC: $rc; OUTPUT == \"$OUTPUT\"" >>$CLMGR_TMPLOG # Always log command result if (( $rc == RC_SUCCESS )); then [[ $OUTPUT == *cl_ls_shared_vgs:* ]] && unset OUTPUT found=1 break elif (( try < (tries -1) )); then if [[ $OUTPUT == *cl_ls_shared_vgs:* ]]; then print -- "$OUTPUT" >>$errfile unset OUTPUT break else sleep 3 fi fi done if (( ! found )); then grep -q "cl_ls_shared_vgs: No shared volume groups were found." $errfile if (( $? == 0 )); then rc=$RC_SUCCESS else dspmsg -s $CLMGR_SET $CLMGR_MSGS 461 "\nERROR: unable to list shared volume groups.\n\n" 1>&2 cat $errfile 1>&2 rc=$RC_ERROR fi fi rm -f $errfile if (( $rc == RC_SUCCESS )); then print -- "$OUTPUT" |\ while read line; do [[ $line == \#* ]] && continue typeset item=${line%%+([[:space:]])*} [[ $item == "caavg_private" ]] && continue list[$index]=$item (( index++ )) done fi else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_volume_group_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_volume_groups()" function on_exit_listvgs { if (( $rc == RC_UNKNOWN )); then if [[ -n $errfile && -f $errfile ]]; then cat $errfile 1>&2 fi exit $RC_ERROR fi [[ -n $errfile && -f $errfile ]] && rm -f $errfile } # End of "on_exit_listvgs()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_volume_groups =head1 VERSION Version Number: 1.6 Last Extracted: 6/16/15 17:51:19 Last Changed: 6/11/15 17:12:11 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_list_volume_groups.sh, hacmp.assist, 61haes_r720, 1525A_hacmp720 =head1 SYNOPSIS clmgr query volume_group NOTE: the alias for "volume_group" is "vg". =head1 DESCRIPTION Constructs a list of the shared and/or concurrent volume groups within the cluster. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== (  kJnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_list_backup_profile#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 5f56dbd 43haes/lib/ksh93/hacmp/KLIB_HACMP_list_backup_profile.sh, 726, 2147A_aha726, Mar 08 2021 04:44 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_list_backup_profile =head1 SYNOPSIS clmgr query backup_profile backup_profile => bp, backup_p, replication_profile =head1 DESCRIPTION Displays the currently configured set of resource groups for backup_profile. =head1 ARGUMENTS 1. list [REQUIRED] [hash ref] An associative array within which data about the queried objects can be returned to the caller. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. #================================================================================== # # Name: KLIB_HACMP_list_backup_profile # # Description: This is the main, FPATH function that is invoked by clmgr # to collect resource group which are configured for backup_profile. # It uses the "cl_cbm_list" utility to generate the list of # names unless a search is being conducted. # In the case of a search, the associated FPATH function, # KLIB_HACMP_get_backup_attributes is invoked in verbose mode. # The resulting data set is then passed through the # "search_properties()" function to arrive at a set of outputs # that matches the provided search parameters. # # Inputs: See the "devDoc()" function at the bottom of this file. # # Outputs: The list array is populated with one resource group per # entry. The only other outputs are any error messages that # might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function at the bottom of this file for # the standard return code values/meanings for clmgr. # #================================================================================== function KLIB_HACMP_list_backup_profile { . $HALIBROOT/log_entry "$0()" "$CL" typeset -n list=$1 shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A queries typeset -u attr= typeset item= groups= value= typeset -i index=0 matches=0 rc=$RC_UNKNOWN #==================================== : Check python is installed or not #==================================== LANG=C cl_get_python_version 2>&1 >>/dev/null rc=$? if (( $rc != 0 )); then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1315 "\nERROR: Python must be installed for using backup feature.\n\n" 1>&2 log_return_msg "$rc" "$0()" "$LINENO" return $rc fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================================== : Check for any specified attribute=value pairs. : If any are found, use those to query the output. #=================================================== while (( $# > 0 )); do value="$1" if [[ $value == *=* ]]; then attr=${value%%=*} # "attr" makes this uppercase queries[$attr]="${value#*=}" fi shift done if (( ${#queries[*]} == 0 )); then # List all #============================================== : List the resource groups. If there are no : resource groups, cl_cbm_list returns an error. #============================================== print "$0()[$LINENO]($SECONDS): cl_cbm_list" >>$CLMGR_TMPLOG # Always log commands groups=$(LANG=C cl_cbm_list 2>>$CLMGR_TMPLOG) rc=$? print "$0()[$LINENO]($SECONDS): cl_cbm_list RC: $rc; groups == \"${groups//+([[:space:]])/, }\"" >>$CLMGR_TMPLOG # Always log command result #Display error only in case of XML parse error if (( $rc != RC_SUCCESS && $rc > 2 ));then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1197 "\nERROR: No resource group configured for backup.\n\n" 1>&2 rc=$RC_ERROR else rc=$RC_SUCCESS fi for item in $groups; do list[$index]=$item (( index++ )) done else # A search was specified typeset -A allProperties CL=$LINENO CLMGR_VERBOSE=1 KLIB_HACMP_get_backup_profile_attributes "" allProperties CL=$LINENO search_properties queries allProperties rc=$? if (( $rc == RC_SUCCESS )); then for key in ${!allProperties[*]}; do [[ $key != NAME@(|+([0-9])) ]] && continue list[$index]=${allProperties[$key]} (( index++ )) done fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_list_backup_profile()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ t lnuםa՝a֝a&Ibm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_appmonitore   =einst "$CEIMNORST[]_acdmopr/1AGL\fghlu#&()-.02:DHPUbvy{}%,;>BYw!*+34yαw-)njɿ e VpLV3VTȴyS]Ť-'L0#lV~ (VD+`P@\ ڶ*!GlT ֫p|&a7y.w:Y?0AN+'A?Y1(&=$X`X?@]p0v8"EǤ0C"EǤ0edb,"+p@ E̹bx0$qYX1 aEkBCHMvDn~renY04.afEW@ܬ](h8 Ç#fEWQΰniǑ4 Z0O8P@_ *PUii T*@[qQ$_0Q8Fm8` 8QcRͧS4Oi$VY4" sN 74(jg1xg'# ?yL{U~v6m*5/,gWIcfRf8^_'ݍY)7p?.҅ޔm|Tqr=t.H+cȟ*>{3"c96ގ^0 mȈ2^ c3?#gE4SH hHy *4>m7?9UsNyͷiAYT<[ Bx\=]1ADL'# ?09uǔ/S?.c 3~sm V33izB4VS z0gE" E" f |z#K6+\V<-'bi)`Hyg*{I"ȦAS\?ZD\Oi5h PQ1,,Ԭfgh5@ a0ǤrDAXa1~[Rۆ&`*ou~uţ L3F FѳM3F- yai iζgE#\2[p@iζgE#]Śn(Ԧ%,Lk JmBR4c8bD뢢k23׀L0!Hr" /XFpA{pAK8bD뢢k22gpAK8a Ѡɟ4pm,pAF^n?ɿrspA@^F"h&DАjThM|n)Ei0k2aȞOiaCAe_RKi)S8)U_8)U 88?4UU H7uӛۂWR1)7ぁ!圩"*).ge4QogKR&Ql >#\0͛oGxO*&ś,^=7^ Hy >^"g1O:M/Xӏl8i RP,p?6m&&EǮLG) ೡ(z&f$</ 3RP<i RPgp@jp@ӏl8/:N}׊F`6ޏz,4ś,^=7 JmBP0_zBo?9UpG 3(+n~m8y/n~mAZnqg&]ٟeM±prۮޯu+#"yX7=J>E]IT i8d4=/7\z6wv<]3?04 քMMU~ _ydNN7Y?:ec z|gvQV&pqS(ZzBm67?9UChT43Dӏpe$<AVAe=_Ri@ aXc~)G:Jf1 `9$PEBIbi,C ME 8"ȴ(gl(jni@ a i%Y DuHË6XCILQ4WQUP]Pq &8g.Yʞ)z"Ĵ1O8bQ4WQUP]Pq &#;,!8PVp $hMvFpf8; RKi)S8)U_8)U 8pvi)*!b͖eǤrDroÒ48$h4H44Q4WQUP]Pq &i0ꃏPQ57 3izB4VS z0gE" E" 9wlxC$u LCqぁ!圩"*).g9gEٟc'*iV{^&0='*ps)Uk@gEݙ"{ ayʯ“ yʯ“ǻͥ[7eY+ (+.8]3 ?4vDOyʯȟ7N /LbcƱrt3D\OhQ055BxXX/XQM(ZzBmZn~rk K496މo7ZC =0C8bD뢢k23/Xc78`i懪AfvFs{%"ED%,bdQ쉋-i(+iBNqSA5 9dQ17 ySZQHq(FrWlj͖/84CqlӜy%EuiTT &g9NFoJ4%)!<.YʞH)i0‚s=D a`c3?. {_rDA[VOͲ Ѭawwwwwwwwwwwwwwwwwwwvg1O8bAeǪ)p, V33ǝNquPYq)p6p *ˏUtS]@Y4r3D'1 `9$PEpD ap &聀\IAFpAq%I`> c3?y4wME$J#N]0 ("#M3=0 @PH.$#;,#3 <IĔdg A09Yg@zbi $e_RSqnnƅTr0‚sT<[ +4!+)v=Be3"ZY"ZIb `Ppvi)*!nEWvDFG: %2S74矜z&ぁ!圩 *g9g1tjm{vY+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwfh/X ' u+*o[n1ƕDZSqnn Bp@96މ0k2a,l^gn>йj p3e:Zиn y* PcY򛏼sw4.Z L<(+:0OiaCAe_RC) 88(- Q z!XHӞ~sm4 8)U"ǖ/L7y pj7?<1Ӟ~sm蛃a.X g.Y!bn~zgB0qR K&EB,l^gn>йj"xPVt.wz砲XX/X9,_(wbZ5*PA)V<~rs/iC) 88(- Q z!ZHӧ{Sm4 8)U"ǖ/L7y p/7?<ӧ{Sm蛃a.X |< gc?Sky y! aǑH.xF<=ze)77xcBgAYйת{K z -^ƻHL2ǑH,ǑH$Pj KF~{n~{U~Ď#yS&܋ES$`hHĴkcu~r),Hwy=w2ᤦniӈ=M3^ƻHL2ǑH,ǑH$(8;4UUɷ"wϻ"b#A#BF)smq?rTUU3'#?r3'# ?4IyN /Ãۦk+A\-'ch -йBdgEݙ"xPVt.wz+,dE11ED΅TLUi𐜑qR D))nDABY3c3?#gE4SpNS qR K qR I,Alpp?ǔɿ OlUnE-+'M^ul.Jd8HxXk) H47Mefd-W"}J|D ұy)C 7>FVţ3:UŢ+şQ%2F$ # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_appserver =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:41:11 Last Changed: 9/27/13 17:56:03 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_appserver.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr modify application \ [ NAME= ] \ [ STARTSCRIPT="/path/to/start/script" ] \ [ STOPSCRIPT ="/path/to/stop/script" ] \ [ MONITORS={[,,...]|None} ] \ [ STARTUP_MODE={background|foreground} ] \ [ CPU_USAGE_MONITOR={yes|no} ] \ [ PROCESS_TO_MONITOR_CPU_USAGE= "/absolute/path/to/application/process" ] \ [ CPU_USAGE_MONITOR_INTERVAL="1 .. 120" ] NOTE: the aliases for "application_controller" are "ac" and "app". =head1 DESCRIPTION Attempts to modify the specified application controller to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. appname [REQUIRED] [string] The label of the controller that is to be modified. 3. new_name [OPTIONAL] [string] The new label to attempt to apply to the specified controller. 4. startscript [OPTIONAL] [path] The full path to a new start script to be used for this controller's application (i.e. to launch it). 5. stopscript [OPTIONAL] [path] The full path to a new stop script to be used for this controller's application (i.e. to shut it down). 6. monitors [OPTIONAL] [string] A list of application monitors to use with this controller. Specify "None" to disable the monitoring for this application controller. 7. startup_mode [OPTIONAL] [boolean] Indicates if the application should be started in the background (default behavior), or in the foreground. 8. cpu_usage_monitor [OPTIONAL] [set] This attribute controls the monitoring of cpu and memory usage of an application configured in a cluster. Default value is "no" and valid values are yes and no. 9. process_to_monitor_cpu [OPTIONAL] [string] Absolute path to application process for which CPU usage shall be monitored. 10. cpu_usage_monitor_interval [OPTIONAL] [integer] Indicates the interval at which CPU usage shall be monitored for an application process. Default value is 10 minutes and valid range is 1 minute to 120 minutes. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_appserver { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_appserver.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset appname=${2//\"/} typeset new_name=${3//\"/} typeset startscript=${4//\"/} typeset stopscript=${5//\"/} typeset monitors=${6//\"/} monitors=${monitors//,/ } typeset startup_mode=${7//\"/} typeset cpu_usage_monitor=${8//\"/} typeset process_to_monitor_cpu=${9//\"/} typeset cpu_usage_monitor_interval=${10//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $appname != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_appserver "$appname" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi typeset existing CL=$LINENO KLIB_HACMP_list_appservers existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $appname ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$appname" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 140 "Available Application Controllers:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" elif [[ " ${existing[*]} " == *\ $new_name\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 229 "\nERROR: the specified object already exists: \"%1\$s\"\n\n" "$new_name" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $new_name && -n "${new_name//[a-zA-Z0-9_]/}" ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 105 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid characters include letters, numbers, and underscores only.\n\n" "$new_name" "${new_name//[a-zA-Z0-9_]/}" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $new_name && $newname == *[[:space:]]* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace, which is not allowed: \"%2\$s\"\n\n" NAME "$new_name" 1>&2 rc=$RC_INCORRECT_INPUT elif (( ${#new_name} > $MAX_NAME_LENGTH )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1463 '\nERROR: Application Controller name %1$s should not be more than %2$d characters.\n' "$new_name" "$MAX_NAME_LENGTH" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $startscript && $startscript != /* ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$startscript") MSG="$MSG (STARTSCRIPT @ $LOCAL_NODE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $startscript && ! -e ${startscript%%+([[:space:]])*} ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$startscript" "$LOCAL_NODE") MSG="$MSG (STARTSCRIPT)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $stopscript && $stopscript != /* ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$stopscript") MSG="$MSG (STOPSCRIPT @ $LOCAL_NODE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stopscript && ! -e ${stopscript%%+([[:space:]])*} ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$stopscript" "$LOCAL_NODE") MSG="$MSG (STOPSCRIPT)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $startup_mode ]]; then case $startup_mode in @(B|b)*) startup_mode=background ;; @(F|f)*) startup_mode=foreground ;; *) dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" STARTUP_MODE "$startup_mode" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "background, foreground" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi # Valid values of cpu_usage_monitor are yes, no. Default value is 'no'. if [[ -n $cpu_usage_monitor ]]; then case $cpu_usage_monitor in @(Y|y|T|t|1)*) cpu_usage_monitor=yes ;; @(N|n|F|f|0)*) cpu_usage_monitor=no ;; *) dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" CPU_USAGE_MONITOR "$cpu_usage_monitor" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "no, yes" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi # process_to_monitor_cpu is a absolute path of an application process to be monitored if [[ -n $process_to_monitor_cpu ]]; then if [[ $process_to_monitor_cpu != /* ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$process_to_monitor_cpu") MSG="$MSG (PROCESS_TO_MONITOR_CPU_USAGE @ $LOCAL_NODE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ ! -e ${process_to_monitor_cpu%%+([[:space:]])*} ]]; then MSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$process_to_monitor_cpu" "$LOCAL_NODE") MSG="$MSG (PROCESS_TO_MONITOR_CPU_USAGE)" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS -1 "${MSG//+([[:space:]])/ }" 1>&2 rc=$RC_NOT_FOUND fi fi # Valid values of cpu_usage_monitor_interval is 1 minute to 120 minutes. if [[ -n $cpu_usage_monitor_interval ]]; then if [[ $cpu_usage_monitor_interval != *([[:space:]]) ]]; then if [[ $cpu_usage_monitor_interval != +([0-9]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1312 'CPU usage monitor interval "%1$s" is not an integer. Provide an integer value in range of 1 minute to 120 minutes.\n' $cpu_usage_monitor_interval 1>&2 rc=$RC_INCORRECT_INPUT else CL=$LINENO verify_numeric_range "$cpu_usage_monitor_interval" 1 120 CPU_USAGE_MONITOR_INTERVAL (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi fi elif [[ " ${!_ENV_ARGS[*]} " == *\ CPU_USAGE_MONITOR_INTERVAL\ * ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1313 'CPU usage monitor interval is empty. Provide an integer value in range of 1 minute to 120 minutes.\n' 1>&2 rc=$RC_INCORRECT_INPUT fi #====================================================================== : Modify the application server if no input errors have been detected #====================================================================== if (( $rc == RC_UNKNOWN )); then typeset CMD="$HAUTILS/clchserv -o$appname" [[ -z $new_name ]] && new_name=$appname # cllsserv always requires new name and old name,hence same name is passed when it is empty [[ -n $new_name ]] && CMD="$CMD -s$new_name" [[ -n $startscript ]] && CMD="$CMD -b'$startscript'" [[ -n $stopscript ]] && CMD="$CMD -e'$stopscript'" [[ -n $startup_mode ]] && CMD="$CMD -O $startup_mode" [[ -n $cpu_usage_monitor_interval ]] && CMD="$CMD -i $cpu_usage_monitor_interval" [[ -n $cpu_usage_monitor ]] && CMD="$CMD -E $cpu_usage_monitor" #=========================================================== : Allow user to reset PROCESS_TO_MONITOR_CPU_USAGE to empty string #=========================================================== if [[ -n $process_to_monitor_cpu ]]; then CMD="$CMD -C $process_to_monitor_cpu" elif [[ " ${!_ENV_ARGS[*]} " == *\ PROCESS_TO_MONITOR_CPU_USAGE\ * ]]; then CMD="$CMD -C ''" fi if [[ -n $monitors || " ${!_ENV_ARGS[*]} " == *\ MONITORS\ * ]]; then print "$0()[$LINENO]($SECONDS): $CMD -m \"$monitors\"" >>$CLMGR_TMPLOG # Always log commands # If monitor list input as case-sensitive "NONE",then consider it as "None" # None : Disable the monitoring for application controller typeset -l mon_list=$monitors if [ "$mon_list" == "none" ];then monitors='None' fi eval $CMD -M \"$monitors\" else print "$0()[$LINENO]($SECONDS): $CMD" >>$CLMGR_TMPLOG eval $CMD fi rc=$? print "$(basename ${CMD%% *}) RC: $rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 400 "\nERROR: failed to modify \"%1\$s\".\n\n" "$appname" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_appserver_attributes "$appname" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify application_controller -h" "APPLICATION CONTROLLER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_appserver()"  lnJxםa՝a֝a&ebm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_clusterre   =eainorst "$C_cdflmpuAEILNORST[]ghy#&()-./:DGMPU\bkvw,012;>FHV{|}!'*34?BKYqx%567?DPU&I̧qvQʛ8*オ 8+$GKg\Ktﱫt1aɵe@F7U7A6{V[8+Ys1£Yzst-˰op9KqQKP͠~`8;ց.yKsՄWlZ׷8+T"f4bXݩwǂMfNyT8Ai`N<&LM|af-V^I+s7=XEv~؉Gx"fV]t:YP41R Fޙ_ۦkkf=XEvx#4nڇ;j{ B?J ɳ6P}pVR_!  |Z^@f 8(પe~ A<"w8 I0)cBeeX4,qjڠ+$8Py`aZ@Ȋ rMfe;QjHRN;Me^ 9Szk3)qs!ƒMfe;K4b1s"bC5 L\BS A3|*>$*O1,Y"h&L$+MɶS 1s$EQ" 9E#r71&Tbe+@GHd\,$2 br)I"E#AAY\PM""@E .w_RHE .w_R(&Bh*T!4AAAY\$85 X2T-j&-j| <qG LDVH X4'"8d)@ .w_(@Aň$,XLL!:{FBNFy\8`,xAah燇<e"=!Q@nc;/ XzBȐD H8bbPEV!'nTO1ʐ,=!RdH"Hb5!AĨ"E!QŁ&8 H-3 Xվa<.w_Dp&H@M"-@    B P$%@0eFxIVB)a):vUs3`.w_D (LE,8dDzB&%@ A .w_*Hx@y" &HHPq!c&$>36UJy,1gjyO"ښ+3)OjfmMV-sf6ܥcXGZ3MN6rmruٔ|b-W>;$LfMfe;zm{ ani=4'G<*X!4d@"n|y\(GrpM6bq9˓,@!Les0w7ӽ,3ڜX8s5zk3)p+ӹޜSt9^wF`3WUj@j|&M;0AL1R D^Sd'N 7rf8lLӟ̧q'Nwczpz2mLm45zk3)CC;C8 \rK&HqyN.yAkkÖp+_8nzMfp]r`Fcxʹ6y5VSy`P~gO&*X2Cqs̘;s=G&<93[nlf񫋕rm@WAɊ L&2\&,jPf8٫3WvW*7AA/Y3Vy` ?k3%,a9rb$8<Ƀ`\ 8fɕ7=G&y nOW&ٺ;FcŗnKdɗ6wSe6$.xFkA%"@ZDcR(Xۦi;fMfe;y` cɊ L&2BN|Xӥs3Wotcff|ն3G8Rjf] Zlg[fb?!=6q^\jǂYgJӃԗ3Mf;ޜ')q;RDA-N5r N sVb9j ;fW.f-\04 s5z9zf+RsSw^&cf[;S5m-׹Ioxgcm75q96̧qcve|#M[lLն3jaLi;nLg*8ש*^V4ՙ`ƚיrel[s~8 Ʈ2t3W5fotNkћy @?|Ri1R D]Iϙtqp38>qj4ѧB<jK׃8G4Qɵe4ՙl\_+v7 6vjٹyAr;pԹWs5s5q۾ ^b¼#Ɲ-\0uςܽ~YҴ%gp26L;f\+훠f=\wK,H%Z%7<$LKU嚀cz#cpee1ظ 96|mg4ak׹Io8t?,ijswKo$ڳgUnpee1s  ZeinZ7\( tӿظ 9={f2Ϝ96'|;Vjoy5{;fؾ ܤ7=h&Ֆ6q(:v;I\b"c.$:\m[YJn^?DpK?,i9 Kk ,Sln63W _7/pfz)ri6'|;~Xg@jK׃8Grcmt-){3猥7/pfg%Z⻞iׄ|ĉAcVFnYlmQGM{V;RRoIKYZpz-XF!)yl6'{$L8 m˓,@!Les0wy"#J*ފwӹcnYlb-W>;*9gfM'99vr7=XS)͘#rյarMN6rmruٔ|b-W>;"9\SEfe;VVX9[lٍŲYNlgQқ^6ml,7AWN)Z}w"e5zk3)ybxG*SӾfMfe;j-W>9zfmMt[c{VC{+8 [c1lҙ/.LTd1:Z;}5s5q;rl^)+MɶS;ն3σ5!v^)Jj՝w[ٕq1GeM#])v H%7{; ZD>&hkܹ\9ATfSsrmgrv!jڽkܰ~45y)k j 1{VZvyuUUUUUUUUUUG~U0K=g#XɅ4L\b"c/+L,sAg&ou˙rbfy0l~ӝtfS3Prw\P}ͣ7-ڜ3W3Prw.V=_7)o7rf!5zk3)q,7=8VrVfʖ#G7Xm7F^V8+U9s{<n{7Yy{8VrVfʖ#.F>cAՐ#]ewV=vt͞q,s-fLAg&l8۔lZV^X Sr(;h3Ws57O22p(,ݗ' ^)g4mjgыڶRbq,lFƝd`?N.jD ;XՄqNL3Wִj`bϼV 93gpee1 96-a[r1NRsgjcnf, ;XcwiQkS7bϼV 93|6xe,8Xڜy^?afR\1rj7A3of|n3VwWnwf_7-q3{F@GI ZI̧qJW'rIc<;%._5zЄ; 7Aec@F^VFt[Ե9gYN51ShmwVG5zܻ+eqy{8qe^Mʛ׹ū\4`< 6jӆ)IӳN48cpտb675nq{|Vn6㍚5z7s "E6x~Xӥ+qFNR;6iɚ&b4᫐y`@ JpI"ShjqK\b"c/)2`v+,1q1 ^=XGYN3)k՝ڶ)a11R D^W35yQM,brs5{Sp/Fm\'"[nH 9gL.-vlkZsY̧qqrw-S Zۦkag״.Pf)'2Āc3<3W[7Aj"ns5qt8;\Qь#e8k#Ay$Yɶn54agLyƚ7-MfTvlZӗ8g״͞qa.lf1m\b"c.$:[g8a&XԹs5xVf+歱Ŷ{g8a3<3Wv\5xc7M~),،I2wV4ՙ($qk`HpC{\8=@H~J ^kf7\99{;Kl 3;ԹWs\^^n^Gcmt.cpΫ\1rm.SlMq^\;w,iH<ԵZƚ7X(XMYqkޣV#Զ-9x?@W:ƚ7Z5hͼcHy`H(?MI JmR9rb$8<ɃDpl _8v-b :MZP,a7)ormbtzdugQlqijl<$֥bIx)yrb$8<Ƀtqp38>q/Mt#̧qlBN"l[ L?Zƚ7Y5o^4՜4ՙmJ=S|;@6$\e){3˓,@!Leٛtqp38>qj{3Մtvyk܃+U[9czj#r Y-iKkjp]{z4ՙֹK<8=I%j5fotNשů3{C`H$<【 e%cV(=%1R D\bZ4j<,8rs^o|#Rsfk3)y\FMYyN 03\^kfpSyrb$8<Ƀc)x){Wlտ :z7Ӄqcjme@V*$\ [ڽ3l\z͔3(yQHq4I),8WARtP,(*$@k.f!`=t֘ wS8E"Ȣ<\47 aAQ"Ys1A4寍Mg>;(k9/`iHvXjP#Ž.W=)Gws瞂}T26!0wNR4g4)NP;(NA6 jw$0Msr.fWGHglFƝdGIntAntyl2巍5{Yɛ*Q+Y8j ;,M#0( Z 9Ljwsg?¹5{tAU[{ڽkJ.W=h&Ւ42ڽ3sÀqp3ש5foY7`isw{ß醝rIs0i0SØZ d( x4AK{+-`jwQ9Q16CmcakSQGfE#HIpr A6!ojb 93xK3cRXVw[ ;G&WKRƜe!ojb 93gW(̜5{z 4ݨwQEϞ/4slADti\w}‚D &bL=i(|9]‚D &bL=i( 1zKzL!D!䉞wnlQ<+8+4Hb6ћJ:C2 < 8(ଓWMzZRagM%&lࣂ+qst#WkagL9{k+6n7nS:G9-ͩE\?!=a7AjJK _O ̯*(@.[vɵepVA39YI,M\">SuF3q =Ykj0{I,M\">Kpl$^V M1h$d8+ڜ7plbIGI ZQ3$)3 (4akI5)J4I5Slf8+ެY])\F9Joj^ffVHTh qA6"(sM%⭙ 5~F mRNp6'i,8D8bPY*ٚ3W:Fn9[GFӜ"llZYɛYN㍹Ků{Yɛ8+ӋڲQ3Ax`6iɚjZ֜LlZpWg&o+)^Yɴak8+f~Ѧf-z#MڲsfSܩ93h5[agOi )ᅍMʛxF.f3A{<5q75Lek [@6;VL1q+NRXn3\mlCM\"n|a){WZ 2Ϝ1NL3WSf8+Fly_eDqrwSi`4.;ڽҰ=қe!S܁2iZ) #N672tc 3sI^ 8+&frTD 3l\zYZiI8i2; &wͱra8$M)f5q $&wͱr 3sI^(.W=5ʉJ4(Lbsٕ`{7xpvz,@@yB!sЏj"bC"@ĈǑĈĈ %T6 H}yEϞb? 6i_j5 wsgD!.62ZD i  e,w˗ T HT @K...`@'0 jwch%B  w8!*1h ;ၘ CA[RL/#8t"(&Q"h"DPLBDH0ǔ(Lx!#Ŷ2 b^Ѧf-ax cO@аYN(D "LAH!Qbq\03x YDR$& af&:Z(Q"(&Q!BepP3 54akMjB 2D]?Bg>xs 8;=e*.Uq\|9ܩF`3y葤$<GA$D  *yၚVQ"p,/tDR Ie DD ;Ww˗ßVRf#Ns̥'N[D D!aZ@Ȋ $2 ):wYZiI8i2;?)cBeeMutw4Q(E"Ȣ<\44ռ$3KA"e*<$E$(TL ]&PG<oŶ<LxlZJLiNy( ;I0DD-A2 + 4,х*܄E.P4,q6iY Y葤$<< "@ H9ATt;Ѧf-gၛ 4iY YpL CA;Z4,х0ZpdSs[b.|Ay@"Ѧf-eqԃ"dy:@)&Y q1bBGq\|9 a8$M)f5qs5o;4'\\s R,M!QRXp<@yL JpI"Shj~xrd~XSL1қFnW4)EJᡸX_@$d,w8+/?@ekLAg&o0`3V#H Hy"xʛIJW<HC&D nzs-_7>b 93g4ako0F7<5i6I[zny9ůi14)EJᡸX_@$d,w8+/?A5ʉJ40`3V#H Hy"xʛIJW=$ń*<@#Mh2R9;?= 7#փ*%+ӓ+k(EEDyRhn:@)$2Y"E;fV) 20`3V#H Hy"xʛIJWb 93}V{।iLd[LQm''QyW._@ekLAg&oVޛdd[䜝G#LQyW._@ekLAg&o4զۦi%mOLռ4܏;ru܏;Y̶-|I,Y:MZLռGI ZLAg&nnG;Ww8eHXH%9UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTwJe3>FX.v@tk>fxyUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUG+lN?q6'GM&bty+2lN?&lN?ɱ:<$؝y6猓btylN?` :rsqj aa{:?v7*m'>wy]{et W&ٺ1y6'G~ܻ+Mʹ6|;|9 Zei&b4@jHSZst^f=Ka<bVpQY6f3XF \fi5[a;P?,j=c|&j6pWa{fg&^-@ \ً#qwøޥӝۥ`sggjqځKV^yA兊?7AjԱ(&~/NnF 5`XG6FN76bs8)xVf yj:k.f!UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTr9$Ix(Mw"w~!H$ nB 8`@fF 4`@ "@ H9ATTI̧qF`@HM4(#ix, ` D E,TG@8bsß1qT(𬥯j#.3uV0_t]2r8bs}tD .xLbsU4m4թ,@@\6)J5)M  3l\xrL4L D 3l\JƭJn^<@&wͱr=(I;)M .W<9mV7AD ;fع\޽  .xLm[k3Ɛ3mW.".W?8 \R5cHA@sg+gJX&i( .xLm6$.RP .xLlBN"  :pB &wͱr2'1HA@H3mն3ΐ 3mRRoIKY( ;fع\FŶi&m503mNf-Nb)HA@ .xLbsÙm <@&wͱrfŶiLHA`sg+;]BS{W@"  8 :aLwͱrragM& 7HA`sg+ͤrf,<@&wͱrY$3R\i, <@&wͱrڲ@s0+i7HA`@@\6^aWIGFӜ"n(3mekLAg&n03m8nM%4DB.W<9mzL,X ;fع\fH@H3m63PRsg+7*m'>wH@X3mv]|&\f>TD 3l\Zei&b4n{7f> ;4'Ḩq\P+hX YDR*,#ʕCA[ZR͘%g=(@R*wܻ+Mʹ6|s=-Vғ1pӞe):v~.wXSL1қFnWs=Sgz TJW'gz Ұ=қe!S(\qY(/y}ūi̧q9 6w3V̎D D!]+;fع\cPT$@d(HHHA2ɕ@ "@ H9ATMfe;MgrYdqZ&1XG@"gqƮ2t. pw\nW3¹1De%T6^хbsÝ8 PbsÝ7I6х'%cY08qH=5!-6g*a 6j8!`L; R;+h `$4:p 448vi-g7I6х@ÿqUUUUUUUUQ8A9F=g#ª+/UˈɆb&  9)&:Z(Q"(&Q!Bep$ x  i9Mx(\f>X1iWZ.x !s. MeҜp-6g(#* ?Bg:@) *T!4,q˗ßI^9_ci=؀v(A!f&:Z(Q"(&Q!BepPxǔ(L7MYilZ27sjn~.x !ss,] .w4ص9eʗs@1q#e\d#rmzl<]?=Oj~zOj ] 88Hp`@&~ tDR Ie DD ;Ww˗ßj[fͱyf\|8t$'ZG"$`3y.lf1mPH$]w˗ßj[gXsat[c1l[.W[fFa Nw`fcكdA3x`H$rc 9ͱrCʣGǎ(X 8@Xy$@|9( ,/U@1I0(2=6PRs\1Ji~Y@CƮ.TOe{J-y@ն3}3̌ Yc1l2h ՙD TYG+a|S "H(Pz% HTX+/?AfHն30`ռ²=YZxVf+sM1vˆp]#Vb>ᡠf)&:Z(Q"(&Q!BepP(Y HLG,j6R5a,ostrg\9QM l;YZxVf  .lf1mPH$q+$<4xz w֤j[gP( ᡧ6;}nIvmjFŶaHipRx&"2O443Vb.|@C0Q$$T4G%sFps\1Ji~4ՙFczO8=Ip |an$E$XPT13Md -H H(Q2(yBcpkf7\9ƚ7YLbZ).8c/4<]P4,wN(D "LAH!Qbၚ#)*ncpKCA5o;@]$ $LbGLPMVnr+7Ag/dٞoZ)O+NRZ)s4䠥fcxӛ}3V63oLj c"(&Q"‚Ik$^Fph"DPLEGDD @$&PG,j7 [W1Dg53Įv圽f{=kl<8=Ik\_䠥fcxӛ}3V63oLh!.VXcpkf7\99{&n?יshK,a8?f1%/53Įv圽MYxlkR5m-?=h~ tDR Ie DD ;U;؋<!"@D Tz$  Ȣ$i5Væ#7?PDD &&wE!H:k'8MG}nIU'17RxKNC.c˘\05fo%sFA2h ՙC.`Mutw>yCKD!䉘 @I*#鬜QQ(~ A2"LLr`fkSN jw#$`6j!@H$dcp=M7P( ᡧ葤$<ڰMY6ny8nMj6׃ܦ3{A@F5qryfs6*lj'A?&Xb餣mx=(ܦ#1jvAM\0waG\|9 IFzQMFb&..f+P%*,**LaI*@*<@I6*d L Y H%H'1-6gKW`6iBH &hkܰxESYN4ՙ44ռII0DD-A2 + @aw(PAak l1q;|PL^f2?| BG]6zI8D?Bg:@)(PCiY鬒ayåA2[A"e*&W1cNnYl7>pUm9~Ֆ.[UǙYN\3Qxc؋0eFyUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTw˗ßKm[mDmPg3Vܮ\$EQ"hEQ?0`ռ¹:vUs3|4,х7tlM5!@CƮ.TNzRB P$%Km[mDmP 9VB)`NU\LKm[mDmPZVw葤$<0eFy rƯRk+Ojt\e){3j 1||OoQsڢk3)OųtwUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUrMI8=WJn^H HaȁVHi"(*TQ$fSfmjISrg@$w8+/?A6$\e){3s5o;fع\!Q&H@M",yDDňf aaxIg@5!x3уqn^ ;4'\\&Z7mjISrf~ `$ P$g$<'`-eH(*W HE"&PK$@cqߝUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTwVS|^wfؾpsj:wSwUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQW._A"K(`4TUH' $EQ"h<' aayrs$Fb&..fJIg$E$TymH HP\&PG*f-N..mo3MySsSMfe;x`hX,HE"&PK$@cqUUUUUUUUUUUUUUUUTwVY3W2^63rwUUUUUUUUUUUUUUUUUpeHXH%ZO"QdQT jw˗ßj[g0 jwUUUUUUUUUUUUUUUUUUUUU#3 ^j[gcٞwUUUUUUUUUUUUUUUUUUUUU\"(*w-){3 [c1l\]3Myá"(*wm#H&\~)iMk3)CN #hcᡸX_TYG+\S " ;Wr`fS겈,H $LA-eH(*W s5o;|Rig3Vª/3{ANpARRoIKY;*"<9ATfS)i)t।ޒM(f7CDPU5'+F Mh(9]RRoIKYxESYNw`f@qARRoIKY,/tDR*,#ʕA.)HyBU\03B)YDR$& a S겈TYG+94sFRUIXh`443V}nIU'0 jwUUUUUUUUUUUUUUUUUUUUUUUUTw#373Թst8g"2L𪪪DPU5"'>7sFRUI(f7CDPU5'ͱriւÕsFRUIȊ 24 #h>7Cp)H(*W HE! (wUr`fS겈,H $LA-eH(*W s5o;ГiS f 9UUUUUUUUUUUUUUUUUUUUUUUUUTwV7<'N1jwqt $Fb&..UUUUUUUUUUUUUUUUUUUUUUUUUTwsk3)DNYJn^ :v;IKi3xt0xESYNwͱriւÕsR3<9ATfSGГiS aX_TYG+\S " ;Wr`fS겈,H $LA-eH(*W s5o;Гic٤ּg3Vªj[gm53Гic٤ֳ ;@]$ $LbGLP .Mfe;T kv< IV8Fic٤ֳh5H Hbg>yȊ 2DU$FŶi&m5%E4י:(BĀDA,$Њ}VQ"pg3Vܮ\x[0`ռ𪪪qfl[c1lb=xXF#lF-Jfس ;@]$ $LbGLP .Mfe;T 5-t fŶs6,4$E$XPT13؋(BĀDA,$Њ}VQ"pg3Vܮ֤wt,47 ˗ßI^[Md -H H(Q2 yB5z#i̧qڴmt G(s5zk3)w{) 4י.=k6sDXa$8Py( ;)H$I(=$*,XY}yfUUUUUUUUUUUUUUUUUUUUUUU#0kczk3)w{gI^;*"=H`it$<32BECDt^ &9 A"e,(*Dcik@Μ]RG,*,Z MekJqßI^X4,wS؋<!"@D Tz$  Yx(ҜrE0fLXn=bŅE ~ A2"LO± ܵgN ש;ၚOk(EEDyRhh3yEϞ1b¢ŏ@аYN(C&P\w;Ww4"UE!b@a"`  hE>(EEDyRhh3yW._~#oM'>w0 jw˗U4m4պ!ˈ.fUUUUUUUUUUUUUUUUUUUUUUUUUUUQ89^Zӛ nOb0a[7Af1ϝiUUUUUUUUUUUUUUUUUUUUUUUUUUUG>yCKD!䉘 @I*#ZӂZstC9=SJFޚN|#MX A"e,(*Dcik@Μ]RGZӂZstC9=SJFޚN|#MXHG>yCKD!䉘 @I*#ZӂZstDGB)A"DPLEHrm7-hӂq2 Њx YDR*,#ʕCp)HyBws瞀$04HH D!":kAE;r֒pYkNnYb0`Õظ `Ȋ d44$E$XPT1? ,6rց8.^.Wpsٝ"=Tґ;V@TyBď;WkJRL/#8t"(&Q"h"DPLBDP+<]&PG<Аleѹm؄7 X#sfn8Vf.r)I"E#` QDB,BŎUq\03B)YDR$& a S겈TYG+9rDRgfN0rf ;|8tjst19)2.Ta "A5 pEHr%$`&wrp={)1^j Rl*@I "eԅ08"=H`it$<32BECDtLXax? ;H`"PR XzE&",PzC,@*=Z&X8 HPy`y1*=s5?PDD &'XnZ3kԑ鬙v+;^ʕH(&0\pEHr%%GSs,@(<<׹("=H`it$<32BECDtLXax?(S?PDD &'XnZ3kreiTYG+a|S " ;W;ၚO" 00K "UE"Ȣ<\44ռ+/?=8 \Pk3'KAWAgJX&Os5o;*ŘQfk3훓j5Ʈ.Uɶn\癐#rԵ mk3%Vi;k30`ռ5q(T$$48 \RUfÔ?;A-WYhb! 0c 5qIUfPq+gO)63"Z RL/#8tVw<('Z ;k3'Ks5o;W-&S5qIR._@Hx8pVY)> ZL aa{/k3'K 8 \R|<9 fp)gkJk3'KIk6s  H1!gjĭV;}!KuZ fp)i21W=W/;$5qIRSYd\ <qG LD0<\qW._~Y)1s5o;WAƴ5qHҳ5qHk@"͜""8d(`&ymk3%,a)*LW._~Y))c s5o;}8 \RR3` P$I Hh1fp2e%Vi<\Kk3%,a)*LGkJk3%,a)*LG\E59Eć"P8#&HOHH48 \RR24y؋<!"@D Tz$  Y {5j⒫4΃Y)> ^Y)1k3%,a)*LA"DPLEHrm7-hӂHk3pz2: fp3gOgFt5qIKdJ':@ ;@]$ $LbGLP5pQ~ A2"LO± ܵgN ש;W;ၚO" 00K "UE"Ȣ<\44ռ𪪪;G5zl6̧q𪪪;@]$ $LbGLP5kJqÓ~63p0JXnb.|a0 A"e,(*Dcik@Μ]RG I58ɿ mÁ8 HP,7>z ws瞀$04HH D!":k-$֔DG@ ojbb矃A"DPLEHrm7-hӂq2Up6$fS`{9aX^\ b[Md -H H(Q2( ^"2,4י9`$ ݩf>S%p]w2Nxx ͱghX,YЙ/0`ռbsʐ,< Qs7<9rڽȊ Ӱӿܮ\ͱ}Vy"*@fJIg$E$TymH HP\ x . (#禳2NUYf?N\rt@P9s6s EQ<<]P4,wS "H(Pz% HTX\qW._~mIӄ]r",TEGYQ?0`ռII0DD-A2 + @aw(PA6$.k)ɋMʺظts96ww@аYN(D "LAH!Qb;(bsÝ$<$D HRei"B6$.a,m<8l4$HxH ,*A aay -"CB@X@aT&V8H%d cR((BĀDA,$Њ}VQ"pg3Vª2p砚wjSjF#ªrHyB$ DyUUUUUUUUUUUUUUUUUUUUUUUQ9yôfS-1v8gjf`uZֶe7t@W& ܮmjI̧qJJrCA[b.|@C0Q$$T4GMh(9]$XyCKD!䉘 @I*#E4י:(BĀDA,$Њ}VQ"pg3V˗ÀBfؼ,/.DR$X wͱrei):vp(+Й/s*o벴ܔ;IdgegfM5',P ei):v' 74Zk3)N"o벴ܔ;Idgd\SMfe;HΆ+MIӴN^ xVE4fSrRt%V xVJzk3)N53 r9tfS6z ܔ;Idj9`4T}ͱgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUG>xpvz Hy"f*=dQt5ok3)CZnJNt7%'NY3h5H Hbg>yȊ 2DZnJNt7%'NY3L^f`Ȋ 2HG>xpvz Hy"f*=dQt5o(S?PDD &&wͱriւÕei):vȊ 24Z ܔ;Id0)H(*W HE! (qX<\ģq p!\03MI5)XNXhn/GYf>xpvz Hy"f*=d0̧qӃƮ2tyCKD!䉘 @I*#E!H:k'8M Hoh֥O"(&Q"‚IE#H鬜6_xt5" Z ;5J)QEϞz Hy"f*=d鬜QQ(~ A2"LL\w8𪪪;+,iӂ\j26ة-8.f,;*r`fS겈,H $LA-eH(*W s5o;Ѝ :pYf\03tԓYN╁円93l\xpb0bGHi"(*TQ(#%mIӄ]r -XGYNכ;G|rbr9lzl6os5;c|w1{TR-72|㞦כ.\6{czl6ljfS4;0u^t7׀թ/̧q;G$L5zMo[=jKtj1ql#m{>LڀSka{f,1};*bsf1'K ςacoO*@"1i> \\jv"`h8bs.?j$)rnظʏ \V/sf1'K3R\|K~> X 9\.YX_^VʏB6'Ky5i> \#kj| )gRrrs#kj|aax~mx ZO,Dq/X^.w?@f틌y鬒ayåA2[A"e*&W@'+ﱽR.w|b1sb矞h""bC=l6)rb?Bg:@)$2Y"Ek9\|8sj$)rB6'KfJIg$E$TymH HP\ @. yB5|ܫMR) u!r k5nZ^1zk3)wKhH4<]@")rb?<\)@C<< (@R HTXmMe$R<ܮ)  KB)YDR*,#ʕCA[rrs#kj|f 9@C$IKZi> ^F6'K  (ܮ>(EEDyRhh3y葤$<=Efe;ژ, A"e,(*D r`feH(*W s5o;G g|6|^we]L^f;DPU5"9E'. .Mfe;UUUUUUUUUUUUUUUUUUUUUUUUU#0g|^5o\nXEvvcVz򷩵[ħjb9\F 5glesb6σL𪪪Ys1I5ԣYs1Եw Y>yCKD!䉘 @I*#R.Jƭh""bC$&?=KZ{F׀դ)r?T,\k3)t\en5ol.*+ڜ2<]HHH Fni&2'{ ?Me$SB6'Kj(aAR$MdoQ&\[&$?=$E"DćHL~zKЍIR~*8QYfS1lk6l\UW8?Mfe;.z$<< "@ H9ATMfe;Oj.~#˙Imx ZO#b.|@C0Q$$T4GMdoQ&\[DG@ ?PDD &&w;WUpeHXH%ZO"QdQT jw;3qڢNV/s> \;4'Hi"(*TQ'Kh> ^y͝(4"Q"p,/dͪ)j8hiAqW ڢ jw$i$ $OtYN%j PDD &'`ܮuYDR*,#ʕCA[=G&3M3W24co4יb.|Mfe;iQkIKi3xt0xESYNwUUUUUUUUUUUUUUUUUUUUUUUUUQ8 6wcVU^6ՄWljv5oרw+z_վ{,Jq^&,Cjܯ3Vw)yo^<&,Ci|?t ;53]J=53) Y>yCKD!䉘 @I*#R.Jƭh""bC$&?=) ^TQ'KGbYN,ųti3xeqV^58"F"@D0- xER3sI5)=hk.f)& QD.B矃A"DPLEH;5DrV5oHDq~ \G*3+@a,oh\FG3V6ч,.W>pG03tE6%"maY6LU\03A6ч,V yEϞx(BĀDA,$Њ}VQ"pg3Vܮ\ԣlBI//0`ռ𪪪r9xpB6$yUUUUUUUUUUUUUUUUUUUUUUUUUUG>yȊ 2DKK#lBG. .Mfe;6Z .f?W $9ATfSGЍ aX_TYG+\S " ;W;ၚO" 00K "UE"Ȣ<\44ռ+/?A6$\e){3s5o;*ny8=W Ϝ3MI8=WJn^;*"<9ATfS7/pftmjISrf~k 9ATfS3l\x@q@15nxs}8=WJn^xESYNw`f@qA6$\e){3Cp)H(*W HE! (w;Ww4"UE!b@a"`  hE>(EEDyRhh3yW._~Km[mDmS0`ռ ;r9uIڷډFڧ8g1VQ(T< ;؋GUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQW Њ}VQ*@D A-eH$I(=$*,[ s._A"e!`8ar2a؉ռII0DD-A2 + Nx:ׄosՄWl34,хt-S͠x#M\e fS37, ˙BH\t]ZwnFyVwx쩹Ntc 3r4j|Ֆ5x "! 9 ̧qfnYuA538йd# ̢ 0.鬹|LӞgV`t$.~5z 4ݩ]rfSƏDR˙( ;Ww2nl/#9E3&yG{xDFkw!'34BKV5678 39W|׼lГJf M@3pFP39嗽okKMaӵC75;Ffٙtlt bwOe1|.յC8#+s3HCqkz1j2չړC^|3t76Zn/tP wN`ms^ʎ,*TI-{V 4PY`1axfQ򛠫Qo4 ܁,۠Qa8 3&HiDl6)3DTB0q7((,"y(T P 0( ] K ܣ-@$ƢHQ6ZUMF wjl:K`0Xx` 3 X, @ X#2K$!8nsa*@<.q6癕73w+gb[ K w+gs4 A%ӿmf]|` <NW=K޳tP$\H ;f۹\Nt @Is 4Ņ"HyTȔ<1V3j 7.R3snGUUUUUUUUUUUUUUUUUGbV<i{UUUUUUUUUUUUUUUUUGw+*RQLTL'Fg@P+}W<5-FT @7497@m ~D ""cI%@DDLi1ㄨ"=4DƓ8JGw+gf]|Ff]|;f۹\!ѢK&⥈H"4<sP+P_3`3)A*9KÕwͷrCEHLP4iaɁM f/J aO;4WGvZ!6]ͭF7vjwEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQ葤&8ME2J|-S޶(I,,,GՓl-HU4D!S$$gJ֣e;jυxAgJ@) D LHpbCN,-fWϪBmX^..#{ɶdc $I*Ch"DHzX TB9үY:ojݨj58z<8 @)FJqTK3<5Q 5`XYx0$wT " $@,w+;"5|׽C1|C1|1#*nsF02;$LDʎ$PLމ@c$ƢHQ34`̧qMӜ^0fw-F9G^ 7 Y` )f@(ç8X4qpw,ձ\Z4m^k7JO1 2ó޶,-A5lb<׸D ""cI%A^jā{jأĈ$4 "8H; /b[y DD@5lQ $& سV&@x""wl=lX[ z Yc,ձG$@T- E]ѧj^ᘹ^0akۍ{Fey1t7{-5'k9,`ޭ,L;;bl4..#{HM1ǎtAj/@j/C?DNA{0_5٣!4 E]V ~./ڋ4|dL<׸z ڋ"ڋ4yF $DDN$@^ͨ3GnDODDHp /f]|l,'ڋ4|rrzذ=GNqqkzذ6UXh "Y4G,@Ab<׸oY:wH "Y4G,@AYlX[ z ;Lfqqkzذ6UXh "Y1Bѥ&85t0uF,RhÓy<޶,-#IFt&?8R#7L,^wA5ja|Ә3r j3:|j;;ZR'6wA6熙,V4RyZkq5R7;k^iӳ0uv6ݨjmGkC30b.k/v}wn.mc{յe{doݨjc Ms51fm2G0ڡAzGJX5'wEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQ[f]|[ 1qqkb \f}VhR%DqRXv;AӧiրhR%*@ Xr``#9sX[AK޳t@Hp4hɢ8b,; ˝^iӴo *DbHKL qqsMY6̌aD!SHqmHU2IK`gJ;otԸ=GNḑ騸v9^㙕 M}[YXعmGkC UDR,bYUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTwAn O3'ƕjO1 T3 aR7;wm;l 27,b7j=gڡؕ,N[{P`Z4m]fl,wB;"abl4t&qqqk޶,-Nx΃qyNY< FrqyNY@Hp4hɊ ,900p ˝h R7;Ft=GN ,0 ?˝ \f}VhR%DqRXv..w׸@ca5d21A$M!Ŵ"HyT$=, ^(TCv˦ӧx:gޣL>چəOiںGf/QwAg.x<.xqx3j.>LAgJ@)&BG"Y2KY-f-wb;RvUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGl(+B*uYTS&( #:SʢB9$kzذj  b<׸am )fD5&ّ6Z$kټ\..6S +r ׸)x>.і̶{Fc8=_Vq'snAqzCEHMKDiat0uF,RhÓۋ5/ȼ "/0 # pod2text -c # pod2text -c --hmce # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_cluster_hmc =head1 VERSION Version Number: 1.8 Last Extracted: 10/29/15 19:42:04 Last Changed: 10/28/15 07:21:01 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_hmc.sh, hacmp.assist, 61haes_r720, 1544B_hacmp720 =head1 SYNOPSIS clmgr manage cluster hmc \ [ DEFAULT_HMC_TIMEOUT= ] \ [ DEFAULT_HMC_RETRY_COUNT= ]\ [ DEFAULT_HMC_RETRY_DELAY= ]\ [ DEFAULT_HMCS_LIST= ] [ CONNECTION_TYPE={ssh|rest} ] NOTE: the alias for "cluster" is "cl". =head1 DESCRIPTION Attempts to modify the cluster hmc configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. DEFAULT_HMC_TIMEOUT [OPTIONAL] [integer] The default value for timeout for DLPAR acquisition/release HMC operations. This value is expressed in minutes. For memory release operations, 1 minute per GBytes is added to this value. The timeout value can also be set on each HMC separately. 3. DEFAULT_HMC_RETRY_COUNT [OPTIONAL] [integer] The default value for the number of retries on HMC operations. The HMC operation which timeouts will be retried this number of times. The retry count value can also be set on each HMC separately. 4. DEFAULT_HMC_RETRY_DELAY [OPTIONAL] [integer] The default value for duration of delay between two retries set on HMC operations. This value is expressed in seconds. The HMC operation which timeouts will be retried 'default_hmc_retry_count' number of times, with 'default_hmc_retry_delay' seconds between each retry. The retry delay value can also be set on each HMC separately. 5. DEFAULT_HMCS_LIST [OPTIONAL] [string] The default list of HMCs to be used by all nodes of the cluster. HMC list can be set at cluster level, at site level or at node level. We cannot modify the list of HMCs set on this DEFAULT_HMCS_LIST parameter. We can only change the precedence order of the HMCs of this list. For example we had 'DEFAULT_HMCS_LIST=HMC1 HMC2 HMC3', we can change this list to 'DEFAULT_HMCS_LIST=HMC2 HMC3 HMC1', to indicate that HMC2 has to be tried first. 6. CONNECTION_TYPE [OPTIONAL] [integer] The connection type is used to establish passwordless SSH vs REST API based connection to HMC for DLPAR,EPCoD and OnOff CoD operations. Default value for this parameter is SSH. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2015 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_cluster_hmc { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_hmc.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 shift typeset user_input=$* typeset default_timeout=${1//\"/} typeset default_retry_count=${2//\"/} typeset default_retry_delay=${3//\"/} typeset default_hmcs_list=${4//\"/} typeset connection_type=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A clattrs CL=$LINENO KLIB_HACMP_get_cluster_attributes clattrs #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ if [[ -z ${clattrs[CLUSTER_NAME]} ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 35 "\nERROR: no cluster is defined yet.\n\n" 1>&2 rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $user_input == *([[:space:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$(cllsclstr -cS | /usr/bin/cut -d: -f2)" 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $default_timeout && $default_timeout != +([[:digit:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" DEFAULT_HMC_TIMEOUT 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $default_retry_count && $default_retry_count != +([[:digit:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" DEFAULT_HMC_RETRY_COUNT 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $default_retry_delay && $default_retry_delay != +([[:digit:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" DEFAULT_HMC_RETRY_DELAY 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $connection_type != *([[:space:]]) ]]; then CL=$LINENO verify_in_set CONNECTION_TYPE "$connection_type" "ssh,rest" connection_type (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi #===================================================== : We cannot modify the contents of the list of HMCs, : we can only modify the precedence order of the HMCs. #===================================================== if [[ -n $default_hmcs_list ]]; then #==================================================== : First, verify that the list of hmcs passed is the : exact list of hmcs already set on this cluster. #==================================================== typeset -i error_found=0; print "$0()[$LINENO]($SECONDS): clodmget -f default_hmcs_list -n HACMPhmcparam" >>$CLMGR_TMPLOG # Always log commands if [[ $(clodmget -f default_hmcs_list -n HACMPhmcparam | tr ' ' '\n' | sort -u) != \ $(print -- "$default_hmcs_list" | tr ' ' '\n' | sort -u) ]]; then error_found=1 fi #=========================================================== : If verification step is not ok, then display error message #=========================================================== if (( error_found == 1 )); then typeset VALIDVALUES=$(clodmget -f default_hmcs_list -n HACMPhmcparam | sort -u) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" DEFAULT_HMCS_LIST "$default_hmcs_list" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "$VALIDVALUES" 1>&2 rc=$RC_INCORRECT_INPUT fi fi #================================= # Tune the cluster, if requested #================================= if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_timeout ]]; then #================================================ : Setting default_timeout to "$default_timeout" #================================================ print "HACMPhmcparam: default_timeout=$default_timeout" | /usr/bin/odmchange -o HACMPhmcparam typeset VAL=$(clodmget -n -f default_timeout HACMPhmcparam) [[ $VAL == $default_timeout ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_retry_count ]]; then #================================================ : Setting default_retry_count to "$default_retry_count" #================================================ print "HACMPhmcparam: default_retry_count=$default_retry_count" | /usr/bin/odmchange -o HACMPhmcparam typeset VAL=$(clodmget -n -f default_retry_count HACMPhmcparam) [[ $VAL == $default_retry_count ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_retry_delay ]]; then #================================================ : Setting default_retry_delay to "$default_retry_delay" #================================================ print "HACMPhmcparam: default_retry_delay=$default_retry_delay" | /usr/bin/odmchange -o HACMPhmcparam typeset VAL=$(clodmget -n -f default_retry_delay HACMPhmcparam) [[ $VAL == $default_retry_delay ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_hmcs_list ]]; then #================================================ : Setting default_hmcs_list to "$default_hmcs_list" #================================================ print "HACMPhmcparam: default_hmcs_list=$default_hmcs_list" | /usr/bin/odmchange -o HACMPhmcparam typeset VAL=$(clodmget -n -f default_hmcs_list HACMPhmcparam) [[ $VAL == $default_hmcs_list ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $connection_type ]]; then if [[ $connection_type == "ssh" ]]; then connectiontype=0 else connectiontype=1 CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1142 "\nWARNING: HMC Connection type is updated to REST API,make sure USER_NAME and PASSWORD is set for all HMC(s).\n" 1>&2 fi #============================================================== : Setting connection_type to "$connectiontype" \(0=ssh,1=rest\) #============================================================== print "HACMPhmcparam: connection_type=$connectiontype" | /usr/bin/odmchange -o HACMPhmcparam typeset VAL=$(clodmget -n -f connection_type HACMPhmcparam) [[ $VAL == $connectiontype ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( rc == RC_SUCCESS )); then #=========================================================== # Set the "handle" attribute in the HACMPcluster class # to zero to indicate that an unsynced change exists in # the cluster configuration. #=========================================================== if [[ -n $default_timeout || -n $default_retry_delay || -n $default_retry_delay || -n $default_hmcs_list || -n $connection_type ]]; then print "\ HACMPcluster: \thandle=0" | /usr/bin/odmchange -o HACMPcluster fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_cluster_attributes properties fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "manage cluster -h" "CLUSTER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_cluster_hmc()" L == $d khAn(םa՝a֝a&(bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_nova#!/bin/ksh93 # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_nova.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # #================================================ # The following, commented line enforces hmcing # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --novae # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_cluster_nova =head1 SYNOPSIS clmgr manage cluster nova \ [ DEFAULT_NOVA_TIMEOUT= ] \ [ DEFAULT_NOVA_RETRY_COUNT= ]\ [ DEFAULT_NOVA_RETRY_DELAY= ]\ [ CONNECTION_TYPE={ssh} ] NOTE: the alias for "cluster" is "cl". =head1 DESCRIPTION Attempts to modify the cluster NovaLink configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. DEFAULT_NOVA_TIMEOUT [OPTIONAL] [integer] The default timeout for DLPAR acquisition/release NovaLink operations. This value is expressed in minutes. For memory release operations, 1 minute per GBytes is added to this value. The timeout value can also be set on each NovaLink separately. 3. DEFAULT_NOVA_RETRY_COUNT [OPTIONAL] [integer] The default value for the number of retries on NovaLink operations. The NovaLink operation which timeouts will be retried this number of times. The retry count value can also be set on each NovaLink separately. 4. DEFAULT_NOVA_RETRY_DELAY [OPTIONAL] [integer] The default value for duration of delay between two retries set on NovaLink operations. This value is expressed in seconds. The NovaLink operation which gets times out,then will be retried 'default_nova_retry_count' number of times, with 'default_nova_retry_delay' seconds between each retry. The retry delay value can also be set on each NovaLink separately. 5. CONNECTION_TYPE [OPTIONAL] [string] The connection type is used to for passwordless connection to NovaLink to perform DLPAR,EPCoD and OnOff CoD operations. Default value for this parameter is SSH. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_cluster_nova { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n properties=$1 shift typeset user_input=$* typeset default_timeout=${1//\"/} typeset default_retry_count=${2//\"/} typeset default_retry_delay=${3//\"/} typeset connection_type=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A clattrs CL=$LINENO KLIB_HACMP_get_cluster_attributes clattrs #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ if [[ -z ${clattrs[CLUSTER_NAME]} ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 35 "\nERROR: no cluster is defined yet.\n\n" 1>&2 rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $user_input == *([[:space:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$(cllsclstr -cS | /usr/bin/cut -d: -f2)" 1>&2 rc=$RC_MISSING_INPUT fi if (( $rc == RC_UNKNOWN )); then if [[ -n $default_timeout && $default_timeout != +([[:digit:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" DEFAULT_NOVA_TIMEOUT 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $default_retry_count && $default_retry_count != +([[:digit:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" DEFAULT_NOVA_RETRY_COUNT 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $default_retry_delay && $default_retry_delay != +([[:digit:]]) ]] ; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" DEFAULT_NOVA_RETRY_DELAY 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $connection_type != *([[:space:]]) ]]; then CL=$LINENO verify_in_set CONNECTION_TYPE "$connection_type" "ssh" connection_type (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi fi #================================= # Tune the cluster, if requested #================================= if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_timeout ]]; then #================================================ : Setting default_timeout to "$default_timeout" #================================================ print "HACMPnovaparam: default_timeout=$default_timeout" | /usr/bin/odmchange -o HACMPnovaparam typeset VAL=$(clodmget -f default_timeout HACMPnovaparam) [[ $VAL == $default_timeout ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_retry_count ]]; then #================================================ : Setting default_retry_count to "$default_retry_count" #================================================ print "HACMPnovaparam: default_retry_count=$default_retry_count" | /usr/bin/odmchange -o HACMPnovaparam typeset VAL=$(clodmget -f default_retry_count HACMPnovaparam) [[ $VAL == $default_retry_count ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $default_retry_delay ]]; then #================================================ : Setting default_retry_delay to "$default_retry_delay" #================================================ print "HACMPnovaparam: default_retry_delay=$default_retry_delay" | /usr/bin/odmchange -o HACMPnovaparam typeset VAL=$(clodmget -f default_retry_delay HACMPnovaparam) [[ $VAL == $default_retry_delay ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $connection_type ]]; then connectiontype=0 #setting the connection type to ssh and is only valid. else connectiontype=0 #setting the connection type to ssh and is only valid. fi #============================================================== : Setting connection_type to "$connectiontype" 0=ssh #============================================================== print "HACMPnovaparam: connection_type=$connectiontype" | /usr/bin/odmchange -o HACMPnovaparam typeset VAL=$(clodmget -f connection_type HACMPnovaparam) [[ $VAL == $connectiontype ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi if (( rc == RC_SUCCESS )); then #=========================================================== # Set the "handle" attribute in the HACMPcluster class # to zero to indicate that an unsynced change exists in # the cluster configuration. #=========================================================== if [[ -n $default_timeout || -n $default_retry_delay || -n $default_retry_delay || -n $connection_type ]]; then print "\ HACMPcluster: \thandle=0" | /usr/bin/odmchange -o HACMPcluster fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_cluster_attributes properties fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "manage cluster -h" "CLUSTER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_cluster_nova()"  kn]7םa՝a֝a&]7bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_roha#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_roha.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2014,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_roha.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_cluster_roha =head1 SYNOPSIS clmgr manage cluster roha \ [ ALWAYS_START_RG={YES|NO} ] \ [ ADJUST_SPP_SIZE={YES|NO} ]\ [ FORCE_SYNC_RELEASE={YES|NO} ] \ [ AGREE_TO_COD_COSTS={YES|NO} ] ] \ [ ONOFF_DAYS= ] \ [ RESOURCE_ALLOCATION_ORDER={free_pool_before_enterprise_pool|enterprise_pool_before_free_pool|all_enterprise_pool_before_free_pool} ] NOTE: the alias for "cluster" is "cl". =head1 DESCRIPTION Attempts to modify the cluster Resource Optimized High Availability (aka roha) configuration. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. ALWAYS_START_RG [OPTIONAL] [string] If the cluster should always start resource group even if resources are insufficient. 3. ADJUST_SPP_SIZE [OPTIONAL] [string] If the cluster should adjust shared processor pool size when acquiring resources. 4. FORCE_SYNC_RELEASE [OPTIONAL] [string] If the cluster should force release of resources synchronously. 5. AGREE_TO_COD_COSTS [OPTIONAL] [string] If the cluster may use available On/Off CoD resources. 6. ONOFF_DAYS [OPTIONAL] [integer] The amount of days for On/Off CoD request. 7. RESOURCE_ALLOCATION_ORDER [OPTIONAL] [string] Tunable to define the order of resource allocation. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_cluster_roha { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_cluster_roha.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 shift typeset user_input=$* typeset -l always_start_rg=${1//\"/} typeset -l adjust_spp_size=${2//\"/} typeset -l force_sync_release=${3//\"/} typeset -l agree_to_cod_costs=${4//\"/} typeset onoff_days=${5//\"/} typeset -l resource_allocation_order=${6//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A clattrs CL=$LINENO KLIB_HACMP_get_cluster_attributes clattrs #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ if (( $rc == RC_UNKNOWN )) && [[ -z ${clattrs[CLUSTER_NAME]} ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 35 "\nERROR: no cluster is defined yet.\n\n" 1>&2 rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $user_input == *([[:space:]]) ]] ; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$(cllsclstr -cS | /usr/bin/cut -d: -f2)" 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $always_start_rg ]] ; then if [[ $always_start_rg == @(1|y|t)* ]]; then always_start_rg=1 # yes and true (lowercase or uppercase), 1 elif [[ $always_start_rg == @(0|n|f)* ]]; then always_start_rg=0 # no and false (lowercase or uppercase), 0 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" ALWAYS_START_RG "$always_start_rg" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -n $adjust_spp_size ]] ; then if [[ $adjust_spp_size == @(1|y|t)* ]]; then adjust_spp_size=1 # yes and true (lowercase or uppercase), 1 elif [[ $adjust_spp_size == @(0|n|f)* ]]; then adjust_spp_size=0 # no and false (lowercase or uppercase), 0 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" ADJUST_SPP_SIZE "$adjust_spp_size" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -n $force_sync_release ]] ; then if [[ $force_sync_release == @(1|y|t)* ]]; then force_sync_release=1 # yes and true (lowercase or uppercase), 1 elif [[ $force_sync_release == @(0|n|f)* ]]; then force_sync_release=0 # no and false (lowercase or uppercase), 0 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" FORCE_SYNC_RELEASE "$force_sync_release" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -n $agree_to_cod_costs ]] ; then if [[ $agree_to_cod_costs == @(1|y|t)* ]]; then agree_to_cod_costs=1 # yes and true (lowercase or uppercase), 1 elif [[ $agree_to_cod_costs == @(0|n|f)* ]]; then agree_to_cod_costs=0 # no and false (lowercase or uppercase), 0 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" AGREE_TO_COD_COSTS "$agree_to_cod_costs" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -n $onoff_days && $onoff_days != +([[:digit:]]) || $onoff_days == 0 ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" ONOFF_DAYS 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $onoff_days ]] && (( $onoff_days > 90 )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 175 "\nERROR: \"%1\$s\" maximum value is \"%2\$d\".\n\n" ONOFF_DAYS 90 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $resource_allocation_order != *([[:space:]]) ]]; then CL=$LINENO verify_in_set RESOURCE_ALLOCATION_ORDER "$resource_allocation_order" "free_pool_before_enterprise_pool,enterprise_pool_before_free_pool,all_enterprise_pool_before_free_pool" resource_allocation_order (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi #================================= # Tune the cluster, if requested #================================= if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $always_start_rg ]]; then #================================================ : Setting always_start_rg to "$always_start_rg" #================================================ print "HACMProhaparam: always_start_rg=$always_start_rg" | /usr/bin/odmchange -o HACMProhaparam typeset VAL=$(clodmget -n -f always_start_rg HACMProhaparam) [[ $VAL == $always_start_rg ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $adjust_spp_size ]]; then #================================================ : Setting adjust_spp_size to "$adjust_spp_size" #================================================ print "HACMProhaparam: adjust_spp_size=$adjust_spp_size" | /usr/bin/odmchange -o HACMProhaparam typeset VAL=$(clodmget -n -f adjust_spp_size HACMProhaparam) [[ $VAL == $adjust_spp_size ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $force_sync_release ]]; then #================================================ : Setting force_sync_release to "$force_sync_release" #================================================ print "HACMProhaparam: force_sync_release=$force_sync_release" | /usr/bin/odmchange -o HACMProhaparam typeset VAL=$(clodmget -n -f force_sync_release HACMProhaparam) [[ $VAL == $force_sync_release ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $agree_to_cod_costs ]]; then #================================================ : Setting agree_to_cod_costs to "$agree_to_cod_costs" #================================================ print "HACMProhaparam: agree_to_cod_costs=$agree_to_cod_costs" | /usr/bin/odmchange -o HACMProhaparam typeset VAL=$(clodmget -n -f agree_to_cod_costs HACMProhaparam) [[ $VAL == $agree_to_cod_costs ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $onoff_days ]]; then #================================================ : Setting onoff_days to "$onoff_days" #================================================ print "HACMProhaparam: onoff_days=$onoff_days" | /usr/bin/odmchange -o HACMProhaparam typeset VAL=$(clodmget -n -f onoff_days HACMProhaparam) [[ $VAL == $onoff_days ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $resource_allocation_order ]]; then if [[ $resource_allocation_order == "all_enterprise_pool_before_free_pool" ]]; then allocation_order=2 elif [[ $resource_allocation_order == "enterprise_pool_before_free_pool" ]]; then allocation_order=1 else allocation_order=0 fi #================================================ : Setting resource_allocation_order to "$resource_allocation_order" #================================================ print "HACMProhaparam: resource_allocation_order=$allocation_order" | /usr/bin/odmchange -o HACMProhaparam typeset VAL=$(clodmget -n -f resource_allocation_order HACMProhaparam) [[ $VAL == $allocation_order ]] && rc=$RC_SUCCESS || rc=$RC_ERROR fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then #=========================================================== # Set the "handle" attribute in the HACMPcluster class # to zero to indicate that an unsynced change exists in # the cluster configuration. #=========================================================== if [[ -n $always_start_rg || -n $adjust_spp_size || -n $force_sync_release || -n $agree_to_cod_costs || -n $resource_allocation_order || -n $onoff_days ]]; then print "\ HACMPcluster: \thandle=0" | /usr/bin/odmchange -o HACMPcluster fi if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_cluster_attributes properties fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "manage cluster -h" "CLUSTER:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_cluster_roha()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ === lꔌn Cםa՝a֝a&w*bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_codt  =eainorst $R_cdhlmpu"1ACEILMNOPST\fvy#&(),-./2:GU[]bgw0;>BDHV|!%'*345679Kkxz{}+8JA9 iDXa4DH<ʮm~g7&Ֆ;[--<'*ےQGrbHnB 8\@h S]8 j@ Ix(gRN \px8xNqrs2Z\ 䁥3|bB`9'{VϹK(sYED8D4D8 ǬnWxOr%qqrs4\0bFXYɶnG<'QMhIjbq3յZ|猺j䁥2>xNHQ"&XM"%A'XH` 8< 8G!V܄p%@ AVq2@ԁ.QΤMv):S ʶ@,H$S]0Dvp$8 <'16| +s5 +ٺ;D"O?\d?*/"~MDZA/  8 @!!4e5ZIyb합:eǢd r1Nt@~(`@& "D.dbɋb\cqc q-|Veǣ M?f;񶦭˚g-nܠSnzM1sճ'Fֳ|nPf)܀ny2، k?/܀`gYz'Fֳy2?#nZ6Vݩ.f;Xag&ٺӃ,<"pٻoǰAσr[8ՙG^ׄN/qob0N(FX[j96?#Rs5ॆ/qob0N'q\CvNpsY[7(3G8begjsv k ,7Ap|!bIM"Jb$Xbث1cq^ | ܼn Qь#ej`Fp5o|^7mjGYɶn -q?̪e$Py4)jޛ_qj"8Hg7\|`_;5o8ՙeip $7qؘ4<,# Z2mܭb`@44 V3VSx+8D@f b7+|P+8 44`lFo8< 0o4G( ?櫥x27k'wK|'ɳt fvGF02>ܠSb0e6\NNn_5o ;#X]5ymaf?N`6V Xy.dA \S,\"G\_;5ojeo \RYx Ae;\Grg;]Ֆmj)xot0lZU2Hi.)jޛ_qj"8Hg7\|`UtY.X̭N.XʮM^L#=-7A  a2n~;Sb0N'ܠSb0e6\NNn9|վ7(3ct櫤af?N`pM[)aX~XEH _,\"G\_;5ojeo8͖.),n Qь#ejA6p5o|^7mjGYɶn -q?̪e$Py4Yk=c7[?CR0I VfKϜ0`ʮq3{ٕUɫɖgef?;ew~LxV،Iׂ7WKjeo8͖.)- l#nrǟQь#e7(3c>\[r1N1M^jGYɶn -q ոyA$L"TPw2n7sj|nŶ2 V^M;-žջaV˂iڇ"[y1iۭN7(3R-`0Ӄ+)7^% 6]ғ0~rsjn{ l=8F6?eO-lښŽKzgu!r :S?ĶbqZM\\jyFͧJT,\"HLd.$&3|/ll̜MW>各XA@(4D8 q\iHD@@Lbsٕѵ)H44@?gX\17.Ւ^פ $@@LbsܻVI6 (@@LbsܻVIiH 44@?gX\17.Ւ8 g*+@A4R&XLLQ>lX[ s!9gwZ6-_8ՙMUUUUUUUUUUUUUUUUU%57=sVp#yZMUUUUUUUUUUUUUUUUU3\xsH"A!BqRTbs "(DAЉ:A"EBɒ$]*HɄɊ bs ".b *H%$(T "D$A"buDD$H%$(T "#@QUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU%VpK6ښk3)Cv8isټeV σ<𚪪 *Dm 2fP+DF"` 歼H"A"$TM qJ ?& Y6w33jYTWt 96zIZ o?AD@]RL/!:Z E#L&PM1EK"%{W/kk)ryxp0(DH"A"$TM"EK?֕@ LR%K`q2@ԁ. &Į'.8 96zIZ4+DF"` 歼ewb.|DqOt$*X@Pqҳ *Dl&Hq\M &PM.LNDF"`azO P8`+o?&, ՜g|վS1j5UUUUUUUUUUUUG*+̭%.N`8Xjv$,, o?'lBRp9{jޭfV'FԣmZV+?& Y6w [_j5UUUUUUUUUUTG.<;0E q"̭%.N4RNA[L=V㝹N,+?ud4$\y$@PDbsÖɊH @.,, 歼fV'FԣmZVqm:E2:6R͸ ?K5g(Ֆ8ՙUUUUUUUUUUUUUUTG.<;,\"ɤ@E17.ՒMFXEH \"j`ibsǙ2 I43gX\biHH xbqa`_5m⢺%`,TTIG :bB/AD@]RL/!:Z E#L&PM1;iQD"Y(HH6tn[v!'M,7scVfNc7olZMUUUUUUUUUUUUUUUUUUx2:6UjҼXX[y7517.Ւ^B M˵da ܻVIPrY# Ņ|շ@ LR%Kiay a L)"g@2hPcM<(DKM[̯Rښr Veǣrׅ"8Hrhh<|jܮss6Z))i7 ?)H# HRO6iY'lRڛg^3zm~Ӷ&vqg7#ļ;w5fn[c|aշzpVg7#O.W<90ß&ڲKPVj/k%`P+‚a17.ՒMp17.ՒMpV,-w48Q\9bn]$>&ڲL3%`P+F*+?B M˵d1AZbn]$q+bPWq#Cq,/BGo?AD@]RL/!:Z E#L&PM10P+iQD"\jƬ͆`Λ^OfWrtmMk9kfy2، k HD$Hٔ{s Ұ440<ぁB':A *@( e"EK?ۏ6͸j,Ϛr1NM˸0{ǜkht{3>FZ9x.vCj"UA!BqRW VαrbuYf'YNfV'FśŅN㱸D#Y94Q\9bn]$ aAZ嘝 ×ЃrY%qD#Yi⢸s ܻVI6Ņ2NAvl27t1:?TW~j0ϋ aA[ ØЃrY&f'CqЃrY#x,nsB M˵d07!f'CqscP LR%K `AMY\Na A0l8e&f&嘚 bh0Yp&PM.Lik@cN רk&'0cPk ,7A'0Yk,\A2M 14bg:@Ob.|jT *Da`  X8`ɫ+:5rm,,\A2M 14b|S" @2hdre'NZp]vN7&V *L9"J$LP 歼d*[Md ceH: E"` #4(Y.j&ڶ޽2Hi"P3]O707@O4`PNDD,$HHRO?q,/B)Z$$T < rE,A!BH <00[y "T)&- &t(&E (ƚyQ,5or[{+x،I{,,s$&q@ve<^벴 4OぁB':A *@( e"EKpԳn}ܠSrmLq.3'7憀!#Cu[,\i7Xag&ٺI8>q\FぁB':A EȞMUUUUUUUUUUUUUUUUUUUUUUUUUUUUU%7qt1ql-ܧjrL𚪪?q,/B)Z$0(@0_5m&PMQ0G !TW~eHy(Ņ|շ@ LR%K`q2@ԁ.$MvgrƠYɶnN`mqUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQY#{veqq#Z;Nvn`q_(/z[#)5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTazO BF *&" SH$HȢD.(g ‚G&PM uX**%& b[y "T)&- &t(&E hup훠f{N54]kkuh 'M< &`A54 k=N,7qj^7xN(k1ri߹VZ  @PUy%*,0BDKVqw{|}!39;?FHQYx'+46p-X C˄L`ԞDa"Vf>JPHY`(rBB<,YjEDa"6UPy|AHǒDaAĈZ3fb|# M$ÑJ10p$B8ی4pF}9 hV qM)N2U ׌2rAAw`'8-%%E93^liW`OSPV+ tTֺb ug8U5!}e*jW)-*H38kUTY{wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvdT9?hC *aEMڛ+ň8)X2VqjfByCQu5 ⑐'EFے2iJd pg8\_0iM5Y2ԬY~P5Xz=һu8+ۤnfKsم6Ojl!%Xz<+Eq}ň]_qMnP:q`S4b pV:M7Z 8CgU ?]+X-J5SQX{n7Z Cjl 0iJMZm+򆡳&jjn7ZjN $/sfyR:Rș5\9B A`8+Nnr ~Lٝ5' hV jFKQSL8lTaq8U xO=MC=4 &DVfN Wj@1COnJ,RMC-li!5RK)5­Z 7 ]pૻ.ܕY 8(b$^q({Sex "(`( &_ VbOAO; ,U-@Ґ0 n`@Ҋh@JT*(rUI^*X$a}!3V*Ƨ R, *mnT]Ta aEM詨,B2UTm=y059 ed!%f.b̰:Z3.9C8u4@jo&MGOI4&'ɜEl+Exb̩!8tj xmvg<"Y <flQvHWelQvHW5g Br7&By6yP+1ΙwEڅ!\:=5b0innP+GlATm<1hz(?<^$ *m#/MEC@z5mx(M4(EE;xx@V:5 PphRC0|9 w$ٟJ- Uf wEڅ!\*~ 4XU⩒GJJJbR"K x1nL$Uf+RO`E^* $p#/MECpK*W@1hS$^zRP?.\jwh DyE4@jo Liث w$GH,'>BǓI0pRAVmg;`~z b`2Ϥ&v*_ 0y1dQH<44jwմE㈢I4D(1H;+!=0/ehS=VmnثMASn %f.b̵2SG5i!#S\a ΨpwWʕÀ? +1ve.ta}!3V|L? QSm2T*Pq"%}y?.]5 ;V9C8u4@jo&MGO I4&'%f.b̵2SG2ǁK!B&kQǁċ!BktX9F"uF5' p,xyiL(Z̪DQL (83U[YXh 3@'[A4^8$M$J8DIga8.t*Pq"9BJ]řh!H$ڬY GH,'>SJ$G=IYX#֍00ixĉJ]ř;xwW44^LYR&O 5mx(M4(EE;xxX9F"aEMלJX'|\:ZTm=y$Ψp˗wMBND}8DIga8.6r3 (z=IQsV7 4XUJibD =_ 0y1dQH<455 ;j Q$i"Q㈊www5mx(M4(EE;x E|\􈃞11ʂ [D,*%4drIéSy4h"<@x(ZI&$##<n3ړ2J~, H1hŒ";j Q$i"Q㈊ws°rEe+ ŠmSPY!b̝phQSm*j 62SP.) G]RFN ӁNÀYѥ5ŠmSPY!M7WQSm*j 6-*i *mEMAf؀K J+2 `V6]5bN2(L f0iTma,pNESr2wWʕåjthSPhE"$W|h6rLD 4XU H|03@y1dQH<455 ;R"K; qwɳU|ԑgjt?b@/ 4XU H|03@KEőE"d'[A4^8$M$JѨ+"593]F64̳HP2- TU22?==I? wմE㈢I4D(1t (yT+wykҬC0?.]5 ;] 5:eM˗Xzh DyE4@jo LifjaEMr4ZGdAyEİj Q$i"Q㈊ws°rEe+L+*iZYT- 3X.󐩦V˗wMBNRrIqwM2r?SPµMAS|WxӀ[{Tanzf\]!SL~\jw=j4rp`(Eg@T$f\_9 elqPiɚgTb+p`uPuZGIqwM2"($h&M2I R ¹6]*[&k⪕2ۤdg59 e`hM^MECpUFPMGɤSAƓD@ H5T+eBMAna\ŠmRѨ+593]F64̳HP<" Hzf\]!SL~z"0{Ȓ$~"($h&DiG"*,Q  ͙4f! kBV[4A=; VdL5+eX"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwn`fy1dQH<44IX k(sVY6Ojl!̗b̵ 8{TDŠmʀO.\jwWʕÀ>$ *mSPT~DzDAeAy-D`,zOD,*[e˻'֣G(g# M)SycI@Vyi$dF= jLg!*D-#IైEq@'[A4^8$M$JTU22˗wMBNRTm<*iXe˗wMBNRͱ =6C+YD,*hI\&{(}5bDŠmSPY  ]\hFJŠm88G wMBNy6O^pL(Z̨(1h˄wsT$bB[._ ʕH9L O?/Ȓ(8 $P $ -2SPbBZ@"aEMeH(8 $P $ .=RpЄU2˗wMBNRp-XS hRC0|9 w$p84URYnj™rX_84URYnj–z *mV*B"0@Ǧ2Bɢ23T)Vf>J\ҬC0|9 =6C+Y&Pc#$\&{ʕÀ>9rX^t͞DŠmʃ ƦHXTL;UÃ@x)$\1i"H0hT 1T|F[384URYnjšTm<*iХY`(r 57 *<+AAzl2gUU`V >p-XS= ?=OBpi` 2Յ@ŠmM2RC0|95m!N2(04H"IDADVb*X,Œ5aM :gBpi` 2Յ4 (yT+hRC0|9 ~((# M $7 0P^ d$8Q*hM\4^LYR&O wMBNUFPMGɤSAƓDB9夒iLON 1T 2Յ31Yb X歠/I4&1H;pi` 2Յ,&Tm fU4GDaDM"dE"egfjYL(Z̩25'A"3t͞DŠmʃ ƦHXTL 1T|F[M384URYnj˜K]J5 P-*i Uf![@5LT:L.Ö wwwr+QSm2 bȢ2xhhSP°%3:b,FT!K6Il`XBEFuY3Xqx8ʸpvzҨE"$ M$I a8&dPQGHn` 63ÊInplUVp-XPufj/JJ5 P,mn|9 @j_%@ZmM2aEMBX<3 URfVTU22?=mg;ah*-Bgb,dS)eh*Ƨ R,Zm8ۄ (z=IQs;ZmSPY!hQSm*j 6,IWQSm}* *m?<59 ekBL+*i,ҒjfV$ڬY 57 *<[@wSg *R"HbDa0=V8\_BftBj SyB ±&uY8qI-m+ၚW/MEC@z*JPj *mEMAf؆6Ol@5V*Ja1|"YL:id(zliZZ ¸p?>J" zDFǤ ffmZ2~uF, YŒ5`+ (a<Šm<^? À>642SP®'_D,*HUp8Eg+5wUݻ+aUMFFy@ "† DF[*_:-" zDFǤ wVHۄqA~L1 ڄ3z”6p'%[Oրb20`PH eiZ 0Dv!34wnڶ r sYEp 80  ǬYǕ+N// ^~< YkjeyYD 7A#^ВjbHp!jڈ89n C!_^H8"X2 0jZykCn;0.v@ܬոVW^0^.lxqj/tEnZyÚX0DyZstս,&aAhP=9 ĭh gaj)6*q/ӂڲ ׹祝t>z!uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL:~$8~ 8Z-&H,T@|E pPZ:)&?a;  @0`V܆!t(ZƁdN:▽KzhCdf3`Y. D"PYq Y>gAZ@+,@p0%aaշh9H$PM94+$(oRޚbY3BB>M94+$h,*^']g&霚Z-顤[B4P0X?ι;3~ 3B͇sVYɺg&{,]g&霚XaV M94+$)`97LЯ`I`?{]g&霚\̙?JW5lٰj+$)+ѡqVI J4h4(ɑ]fZXX4(ɑ]fY+$)+$d.qab:d1K-Yk[6l;صejHQvū-k 7gVZ֤lZְѠУ&GIvc vū-kRB-YkXX4(ɑ]fYbՖ!E 2:K;lX?ι;3~퍾yaշv:HQv1C]Β]hhQ#SͅYco$(cohQ#Sͅv:HQv0H4(ɑ]fYuqɜcU)~lw5mMW,mje#o40n*rFI &R6AFLN67gje#oU)xhQ#Sͅ5\B唍 2dtjv8ٰVs?w2g#т6[{?F$(z0@ `yRB hhQ#SͅYz0@!Cт,d.qab= ^TB%ڝ6l,U\̙?IWW6l;BF Y+I *ʍ 2dtjv8ٰ?qi!E\yQ`У&GIvc g<$(* 2:K;lX?ι;3~;Q͇͝sV>w;Oڎlh?Oڎlsq?j9AFLN67g;Q͝B|'G6v,d.qabsq?j9HQϝ У&GIvc g3s&qZyaշh B@Lh?ր$(ƍ2:K;lXU@NZbFLN6*'I -0H4(ɑ]fYuqɜc8/6[{?8/I Jp\h?8/I Jp\hhQ#SͅY)zHRSFLN6*N BB%ڝ6l,U\̙?JSlg6[{?6th?6thhQ#SͅY)3%6bFLN6*M$))3B%ڝ6l,U\̙?Igq͛歽;;$(ӳ7gNI 4#FB%ڝ6l,n*ƒiEB%ڝ6l,U;;$(ӳAFLN6*c?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3v>R@}=牶\u֠g+wOts&@sgdΒKzhp`Q#S͇ͅsV"d(WɒCtπ)kԷE%-{zТ p@ $X…LJL:3]UUUUUUUU3v6;Mꪪ;3JZ-@)^ <, ͛歽Is=b"cH1 v,XawYV}^`riz8<" 3)E$\"  1AZQO8PIP0K 歽Is=b"cH1 Px x SHQ6f-fRqTYuR>x XYs&qqrnɡ^P++Yɺg&{@?qrnɡ^]g&霚6mV$KH1 1@yc08fDbsV/iMYɺzKzhy^4A f.Fo8oRޚdΐH4DU %ڝ6l6[{?$XE,X  3I.~G L@$ A^,}M]C5o;xq %#O4^JZ-GE hpxDc?{hMYK[?(D\ &H8 "qgJg[uhMYK[?8PVnЛ\D bہ,,;R qɝ!F$Ip`Q#S͇ͅsV!ji 4&,%N6*?ιA!?i[?{DDL$Yug㹓8J歂X.صelٰj?#i& Xr&4,p@y|X,Ȗ,T82:K;l36l;%2ZD 8\"._,Ȗ,TYE;Fϵ%|u֦sV|?i퍾cSU(oRޚ؈JA x/E%|PAN,@" ,DYs&qipP+Igqa#S̓3fùog\c%@ycȘ L@<<ءryD'&GR׷oM"ZҒ&ivwpxDgS8H `" a3qɜc8/ZRa#S̓3fùog\c%@ycȘ L@<<6WI )kte'gmklmA У&GIvc  6WI Fֶƍ ;3~VZ͛歽BAN]jZZ̙@Vd͛歽B7Jl N&Hp, <ŝ)"/.'SgG @:Bx3 bہ,,;R qɝ!E4h`WG+n̤bfl?歽L+l rR)J止\\թqsVHR'S2g}Ys&qҕ[6l; +1:JW5fdΒɣ6[{?qsV +):H"JdP'tr7( vz0@&Ma(+u ñ npH3ɜcqsV͛@W5jE)\\մY+".j D7JfRqTYl:s\ 22E*l)"H(.;MhT74B 7429RmE"H1 * {NϵIЊbx)+ѡqTqJ6V?$Y\ 22E*l)"H(.;MhTҊhD 8`@DPXMep>}Sgps?4+ܮz7Jl N&Hp, <ŝ)R׷oM-K\6p(-K\3 bہ,,;R 2gHQK\3)8خV @@a"N"Xdfl is[?ģmlW=ɺS2ѰH$d.qa`V0=tS:64h`UqɜclZֶlw5mW'Sgt2E+dN,LnPA`yqש&OB*\qS:62:) J4h`U:HxHe"d(TREȐ*P$\,v=q!,p2/PZ|^"< "F6]ΒR׷oM$h gh#|.I &1퍾cF Y3唍R׷oM`@V1je#oAq5\7c?̙}%|fP+]ΒMco|d0&R6ټ U)}$3唍UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTyw=;࣎Ӂzo ]xFy M˭zje#og)ϰAuDBZmA+QM8>ש Xf'zmx.z [?rObwН󆥭sj`7ټ 8/I&1y!(c(Tս5yK^ޥ4<hz# ,vxNճ^5mgש&O)kԷ={G4AtRMcoN gJS&Im8ӳgIgqEN^.|RH"J6r$  O)kԷ,@vSGR L@<$ʇzmC-hӁznH?Ãs8< 0D!lMcoƝƒR׷oM$h gh#|44h#|4#F Y3c:HQK^ޥ4"Ń EY3c:HQ4g%6cF X&qIgq͛@gqAqgqg8)3͛@SlgI&1͌*X2L[Z'[Cy.ש2 l@ |jw\[?sVڲ  pm9V1+Za#ZbQt E pPY(DSaI"@@pkD򖽽Kzhq"Яf A3H3c3H"8.iAqgq41|)4&GR L@<$ʇzmC-hӁzgkD򖽽KzhqJhWq3LdE$F6gJSlfi褚3;;91}vwY E pPY(DSaI"@@pkD򖽽KzhriE4pE"0 "LǬ&2ց8>שi89('  J  T2$TX[?J0SJ'v7N[by|VA`&^ 碜#NhU ĭh ^.|RH"J6r$  O)kԷ<%"@2eH0HCHc RR׷oMѡqSH4G (D 8`@DPXMep>}RLMhR׷oM2z%"@2eH0HDq3LdE!E-{zЍ7G4,G :HxHe"d(TREȐ*P$\,v}Sgps?MM Ҋx Yb ._ @)E"XR:3]UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3vH; 8esjk7)|~meΠ[ǮSt&$P<" atU pBK"@E@X^ f:D 8`Q#Sͅͳj{-".DƑb/6~( Л\D |NH_6"< 0Hq|pH[^iZwn fռFw(~] g9]Z %vϔڲ֠fYE (x`2SX G sHA(sƟk>z& 4[by#D4#սGIu`M<3QPZ-*H"%H1K(<@8<" 3xnh"{E(@࠴tR&HQgnh" \^Ep;$8~ 8Z- E` `O,&lxJ\*n Xڲ֠f':5[=-[`Mc磁"#YNnY|?T󆫔ωZZBũ޴st<"}t[`s,"} 4JN; s0_ sn^ ܐ=rgajYNnrJ0_Os7<"}t69/׸p$2%_Bx $LAB,@1<`8HX/ׂf}lI"Px_P3oqJ5]-;l5[6 OtZ58j:K<վH_6GuX.L^ٺ +{v>ٺjމp4Q䋣ӛJ`;UA+ *gmA.q=,qֳڌ$v;lT'q pRM'lmڜO5]-55uZ8bW^zĭ6_S!hNs65o>+qm`@1Ե[C]s'7A,%h[`j fme٠; ÚJ.H+Nn%6 +JNڠk_*Xc巍wf[75m<"}ttiB%įy$/M7M^j}ixf&Wt `I5o$ s ` =t)k^UA9Al;xO>v-Npįsp@ `@?Ra('3vMxDj - {JTcdP'GBqK^ޥ4,e+mPJ.HY{zK6A5\lX࣎Ե[C6MW,-{zЄsL4"< fL#(bxLDT!|Яl;Z-8NV VYh \1#(`(0?ˏ"pP  T2$T?ˏ"p#xG.HI*@yEJ3$H H"P…BDKw;̕0HA⒜\a[h.x>G?E;F8nzk R~MtkԷ3k8'{;Q͝Slf}xtІCu'*"`Rɛ%8獳·+Z\}~7( w/.p@'f?R׷oMfשpNzMc4 Ћ5 o)|QL))Kn:SVx[N0=j mVZ¦Y֠ZxЛ3VZ̕0HA⒜\¬04J֗|#o" ˚83JPlmkls86vϚɧXk?ǽz0@|u֦7,%{S:6ZYd![.:񰛠K!佦㮵XVڠ?,DXoq#,Nz;Nvw5o~׶\НWo4R:f`sV1u[. 1m佦㮵8ܠ)ޤ.[>Ja# )į;Q ;:6箂xetfsjnz'[#N{j`;o:6oRޚH\}ـ!y/iNVئuZ f^QkIqy A0X `·@M<Ė`vϯ9so;zpQ=mzշU`떽GNnogڜG naWKZ %3W^;ޣ;[ιk jj:p& \7L3k # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_efs =head1 VERSION Version Number: 1.4 Last Extracted: 5/3/16 18:54:04 Last Changed: 4/28/16 05:58:06 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_efs.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 =head1 SYNOPSIS clmgr modify efs \ [ MODE={ldap|shared_fs} ] \ [ VOLUME_GROUP= ] \ [ SERVICE_IP= ] \ [ PASSWORD= ] =head1 DESCRIPTION Attempts to enable EFS for securing file systems. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. mode [REQUIRED] [string] The manner in which the keystore will be created. More specifically, the location; either "ldap" or "shared_fs". 3. vg [OPTIONAL] [string] The volume group where the keystore is to be stored. This option is required for mode "shared_fs", but does not apply at all to a mode of "ldap". 4. service_ip [OPTIONAL] [set] The service IP that can be used to access the keystore. This option is required for mode "shared_fs", but does not apply at all to a mode of "ldap". 5. password [OPTIONAL] [string] The EFS administrative password. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_efs { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_efs.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 : INPUTS: $* typeset -n properties=$1 typeset -l mode=${2//\"/} typeset vg=${3//\"/} typeset service_ip=${4//\"/} typeset password=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A efs_attrs CL=$LINENO KLIB_HACMP_get_efs_attributes efs_attrs #================= : Validate input #================= CL=$LINENO KLIB_HACMP_is_known_efs if (( $? != RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s 129 cspoc.cat 75 "EFS Kesytore is not configured.\n" 1>&2 rc=$RC_NOT_FOUND fi if [[ $mode != *([[:space:]]) ]]; then if [[ $mode != @(l|s|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" MODE "$mode " 1>&2 rc=$RC_INCORRECT_INPUT else typeset -u modeUC=$mode case $modeUC in LD*) mode="ldap" ;; LO*) mode="shared_fs" ;; F*) mode="shared_fs" ;; SH*) mode="shared_fs" ;; *) /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' MODE "$mode" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "shared_fs, ldap" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi fi if [[ $vg != *([[:space:]]) ]]; then if [[ ${efs_attrs[MODE]} == "ldap" || $mode == "ldap" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 "\nERROR: conflicting options were provided,\n \"%1\$s\" versus \"%2\$s\".\n\n" "MODE=$mode" VOLUME_GROUP 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ $service_ip != *([[:space:]]) ]]; then if [[ ${efs_attrs[MODE]} == "ldap" || $mode == "ldap" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 "\nERROR: conflicting options were provided,\n \"%1\$s\" versus \"%2\$s\".\n\n" "MODE=$mode" SERVICE_IP 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ $vg != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_volume_group $vg if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$vg" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 160 "Available Volume Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_volume_groups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi if [[ $service_ip != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_service_ip $service_ip if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$service_ip" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 156 "Available Service IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_service_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi #=================================================== : Enable EFS if no input errors have been detected #=================================================== if (( $rc == RC_UNKNOWN )); then typeset mOpt= vOpt= sOpt= aOpt= [[ $mode == "ldap" ]] && mOpt=" -m 1" || mOpt=" -m 2" [[ $vg != *([[:space:]]) ]] && vOpt=" -v $vg" [[ $service_ip != *([[:space:]]) ]] && sOpt=" -s $service_ip" [[ $password != *([[:space:]]) ]] && aOpt=" -A $password" print -- "$0()[$LINENO]($SECONDS): $HACSPOC/cl_change_efs$mOpt$vOpt$sOpt$aOpt" >>$CLMGR_TMPLOG # Always log commands $HACSPOC/cl_change_efs$mOpt$vOpt$sOpt$aOpt rc=$? print "$0()[$LINENO]($SECONDS): cl_change_efs RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 400 "\nERROR: failed to modify %1\$s.\n\n" EFS 1>&2 rc=$RC_ERROR #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== else if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_efs_attributes properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify efs -h" "EFS:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_efs()"  k6n,?םa՝a֝a&,?bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_eventencyil#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_event.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_event.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_event =head1 SYNOPSIS clmgr modify event \ [ NAME= ] \ [ FILE= ] \ [ DESCRIPTION= ] clmgr modify event \ [ NOTIFY_COMMAND= ] \ [ PRE_EVENT_COMMAND= ] \ [ POST_EVENT_COMMAND= ] \ [ PREPOSTFAILS={false|true} ] NOTE: the alias for "event" is "ev". =head1 DESCRIPTION Attempts to modify the specified cluster event to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. event [REQUIRED] [string] The label of the event that is to be modified. 3. new_name [OPTIONAL] [string] A new label to attempt to apply to the specified event. 4. file [REQUIRED] [string] This is the command or script to be executed when the custom event happens. It is a required field for each custom event and cannot be changed for predefined events. 5. description [OPTIONAL] [string] A description of the event. If not description is specified, a default will be provided. 6. notify_command [OPTIONAL] [abs_path] This is an optional command to run both before and after the event command is executed. The main purpose for this command is to notify the system administrator that a certain event has happened. 7. pre_event_command [OPTIONAL] [custom_event_or_abs_path] This is an optional command to run before the event command is executed. This is used to provide pre-event processing by the PowerHA SystemMirror administrator. Multiple commands are allowed and must be delimited by a comma. You can also specify custom events, and mix absolute path and custom event names. 8. post_event_command [OPTIONAL] [custom_event_or_abs_path] This is an optional command to run after the event command is executed. This is used to provide post-event processing by the PowerHA SystemMirror administrator. Multiple commands are allowed and must be delimited by a comma. You can also specify custom events, and mix absolute path and custom event names. 9. prepostfails [OPTIONAL] {false|true} If set to true, failure of any user supplied pre or post event will fail the event and skip any remaining processing for the event. Default is false: failure of any user supplied pre or post event is ignored. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_event { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : INPUTS: $* typeset -n properties=$1 typeset event=${2//\"/} typeset new_name=${3//\"/} typeset file=${4//\"/} typeset desc=${5//\"/} typeset notify_command=${6//\"/} typeset pre_event_command=${7//\"/} typeset post_event_command=${8//\"/} typeset -l prepostfails=${9//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset -i PREDEFINED_EVENT_MODS=0 typeset key="" TYPE="" for key in COMMAND NOTIFY_COMMAND PRE_EVENT_COMMAND \ POST_EVENT_COMMAND PREPOSTFAILS do if [[ " ${!_ENV_ARGS[*]} " == *\ $key\ * ]]; then PREDEFINED_EVENT_MODS=1 break fi done #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $event != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_event "$event" "" TYPE (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi if [[ $TYPE == "CUSTOM" ]] && (( PREDEFINED_EVENT_MODS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: one or more of the specified options is not compatible with "%1$s", which is a "%2$s" event.\n\n' "$event" "$TYPE" 1>&2 rc=$RC_INCORRECT_INPUT fi #================= : Validate input #================= if [[ -z $event ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$event" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 170 "Available Events:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_events available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ -n $description && $description == *:* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 103 "\nERROR: one or more invalid characters were detected in \"%1\$s\": \"%2\$s\".\n\n" DESCRIPTION ":" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $file ]]; then if [[ $file != /* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$file" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ ! -e $file ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$file" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ $file == *[[:space:]]* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace,\nwhich is not allowed: \"%2\$s\"\n\n" FILE "$file" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -n $pre_event_command ]]; then typeset cmdEvt="" for cmdEvt in ${pre_event_command//,/ }; do CL=$LINENO KLIB_HACMP_is_known_event "$cmdEvt" CUSTOM if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$cmdEvt" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 170 "Available Events:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_events available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_INCORRECT_INPUT fi done # End of the event loop fi if [[ -n $post_event_command ]]; then typeset cmdEvt="" for cmdEvt in ${post_event_command//,/ }; do CL=$LINENO KLIB_HACMP_is_known_event "$cmdEvt" CUSTOM if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$cmdEvt" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 170 "Available Events:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_events available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_INCORRECT_INPUT fi done # End of the event loop fi if [[ "$new_name$desc$file$notify_command$pre_event_command$post_event_command$prepostfails" == *([[:space:]]) ]] && (( ! PREDEFINED_EVENT_MODS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$event" 1>&2 rc=$RC_MISSING_INPUT fi #======================================================== : Modify the event if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )) && [[ "$new_name$desc$file" != *([[:space:]]) ]] then if [[ -z $desc || -z $file ]]; then : Preserve any pre-existing values typeset -A eProps CL=$LINENO KLIB_HACMP_get_event_attributes "$event" eProps [[ -z $desc ]] && desc=${eProps[DESCRIPTION]} [[ -z $file ]] && file=${eProps[FILE]} fi [[ -n $new_name ]] && new_name_opt=" -N $new_name" [[ -n $desc ]] && desc_opt=" -I \"$desc\"" [[ -n $file ]] && file_opt=" -v $file" print "$0()[$LINENO]($SECONDS): clchcustom -t event -n\"$event\"$new_name_opt$file_opt$desc_opt" >>$CLMGR_TMPLOG # Always log commands eval clchcustom -t event -n"$event"$new_name_opt$file_opt$desc_opt rc=$? print "$0()[$LINENO]($SECONDS): clchcustom RC: $rc" >>$CLMGR_TMPLOG # Always log command result #===================================================== : If a custom event was successfully renamed, update : it in the predefined events, too, as needed. #===================================================== if [[ -n $new_name && $TYPE == "CUSTOM" ]] && (( $rc == RC_SUCCESS )); then typeset predef CL=$LINENO KLIB_HACMP_list_events predef TYPE=PREDEFINED for (( i=0; i<${#predef[*]}; i++ )); do typeset -A eProps CL=$LINENO KLIB_HACMP_get_event_attributes "${predef[$i]}" eProps TYPE=PREDEFINED for key in PRE_EVENT_COMMAND POST_EVENT_COMMAND; do if [[ ${eProps[$key]} == $event ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '*** Updating "%1$s" in event "%2$s" from "%3$s" to "%4$s".\n' "$key" "${eProps[NAME]}" "$event" "$new_name" case $key in PRE_EVENT_COMMAND) clmgr -T $CLMGR_TRANSACTION_ID modify event "${predef[$i]}" PRE_EVENT_COMMAND=$new_name ;; POST_EVENT_COMMAND) clmgr -T $CLMGR_TRANSACTION_ID modify event "${predef[$i]}" POST_EVENT_COMMAND=$new_name ;; esac cmd_rc=$? if (( $rc == RC_SUCCESS && $cmd_rc != RC_SUCCESS )); then rc=$cmd_rc dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: failed to update "%1$s" in event "%2$s" from "%3$s" to "%4$s".\n\n' "$key" "${eProps[NAME]}" "$event" "$new_name" 1>&2 fi fi done unset eProps done fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_event_attributes "$event" properties fi fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )) && (( PREDEFINED_EVENT_MODS )) then typeset sOpt= nOpt= bOpt= aOpt= pOpt= typeset -A eventAttrs CL=$LINENO KLIB_HACMP_get_event_attributes "$event" eventAttrs if [[ $notify_command != *([[:space:]]) ]]; then nOpt=" -n $notify_command" elif [[ " ${!_ENV_ARGS[*]} " != *\ NOTIFY_COMMAND\ * && \ ${eventAttrs[NOTIFY_COMMAND]} != *([[:space:]]) ]] then nOpt=" -n ${eventAttrs[NOTIFY_COMMAND]}" fi if [[ $prepostfails != *([[:space:]]) ]]; then [[ $prepostfails == @(y|t)* ]] && pOpt=" -p 1" elif [[ " ${!_ENV_ARGS[*]} " != *\ PREPOSTFAILS\ * && \ ${eventAttrs[PREPOSTFAILS]} != *([[:space:]]) ]] then [[ ${eventAttrs[PREPOSTFAILS]} == @(y|t)* ]] && pOpt=" -p 1" fi if [[ $pre_event_command != *([[:space:]]) ]]; then bOpt=" -b $pre_event_command" elif [[ " ${!_ENV_ARGS[*]} " != *\ PRE_EVENT_COMMAND\ * && \ ${eventAttrs[PRE_EVENT_COMMAND]} != *([[:space:]]) ]] then bOpt=" -b ${eventAttrs[PRE_EVENT_COMMAND]}" fi if [[ $post_event_command != *([[:space:]]) ]]; then aOpt=" -a $post_event_command" elif [[ " ${!_ENV_ARGS[*]} " != *\ POST_EVENT_COMMAND\ * && \ ${eventAttrs[POST_EVENT_COMMAND]} != *([[:space:]]) ]] then aOpt=" -a ${eventAttrs[POST_EVENT_COMMAND]}" fi print "$0()[$LINENO]($SECONDS): clchevent -O $event$sOpt$nOpt$bOpt$aOpt$pOpt" >>$CLMGR_TMPLOG clchevent -O $event$sOpt$nOpt$bOpt$aOpt$pOpt rc=$? print "$0()[$LINENO]($SECONDS): clchevent RC: $rc" >>$CLMGR_TMPLOG fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify event -h" "EVENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_event()" $s"  lnSםa՝a֝a&4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_fallback_timeryes  = eirst"$CELNR_acdfhlmnop)-1AGIMOST[\]uy&(,./2:;DHPUYbgkvw#%034>F{}6Yo `wr.,muitZ~YZZ6dySX$1'XVyQ3Q1VαUCӭVj$P@s/MūX朋Zyм FdCBѥdߌaI$S Md &I$S Md &×y04H@  j7I"h ɧWwb#/0801:i`@Bڊ MCR$"AbJdڬb..dg[QYINΒy3N a<, %]Ybw   XHԮK:-8` <C0  $Z yv.+R-jD$+J#lht:MpX)@*/F@(1q%"@:$&$1&MͶ*NFath+ie|-jRTVihY\!mEfE($TXC]dͶ*NFx Y93∐R`p?2<,,xnB΅Epx33_ (@j&XF`pPx33_ (@jZ(6!a`.M:Uj?A5,BA@fg1Lbe  !DI  6q„f€]aDv6l(R+M`ff(Yf#MͶ*NFgkN9̬vgVNFgV`~ T$$XD\~I}ZG⼙XYV\_WuW1&"G⼙VO;@Bڊ(DL)+ceeD(KQqd?;J<#9oZR]ƫըǘ2 YVܣMnr3iiap,mWTf1˔,Hd3ff嚎q_j.jT'#>V:qXކ^4&<;[ޞ]sSX&e9Əz4z@LPi7^+:0PwG8)N,ruUVI:- #zŎNjNq^V7 ks_E=n^ &T0;[^L,t]X]gM-U j+0?@($(""%N3ujVoRNƔɬRv4zo᠐H mHYR4"!kE7Ċe鸵k6\ӑvVO:ANY<HTDĕq$ɵYYV\]ZC"IK H$HPB,] vq$t?ñΒy 5``Ɩ]ꈐ@<ę6+6تˋY9ѠqIRX =EfCp&$&Xvx?m5;7(~4z805&jѩ3XCߍ#\V`|?m5yڴV ߍ#]*j MF UUEvx8`|?m5xp 0p`>6iIUC MFV,p80/DȨE$"L#\lYw֚c 6j4?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpj+=m'bƻfX/MŎkd2O %gI4S)ʈ6j"̝8HNxT"T4hV?xYYƦP[8T"I&EQDLA;8HHӳHhP557s?ñӎrvU 0䰫q?wwwwwwwwwwwwwwwww~4q潞 P N6iuVߍ#\tX&6iALRd/ӼJdo*-zeBSoƑLeJ!0Y:r`]Tfǀl@ T( ‰l(4Pi)7"%ˇ1!iT8ɑ!Z8HNբ ~hg׏ ƍ]HNծyڴVca$LjGܠ:$LDz "ʑ+ 0*(Q@N,ܘlz?̢`8; 0} a(ayڴV;  YMk} cDȨTKg2**L+8 Y1,٨;0} :aӳaX(+`+B 8Vxxi`@l?潞 M($h(źF6iyڴVUvԎ{;Vj'axA5R@nիx|?wvX(H yڵa (H yڵ` *wvX/x& 7qjՀo@JǝVx|? &ETj yTDI;Vx|?(eR@nի(*wvXNATjǏ%gI4S)ڬQ(-z "Q-DȨ2Jǂs:P; 7&15y3(>LCtçd&XG8vǃa YMk} cDȨTKg2**L+8 Y1,٨;0} :aӳ& D &A@Jg (  @LVyTD X+=2PVx(g@"eI&$&Z^6iD )y2%D ^ %D ^XDMB/H@HP@ߍ#\@[<$0&+'CP[LjZacaDu50.,;0XP6racaEV'kxB`nHV¹f2iɔL@XM0-* @S,"&Q5BB2 @SQpHTM1TM1HLbI %ˇ1!iT8ɑ!Z8HNyFcr l,mWTf1+Y5.4hV?Xگ2b/g^eQ\gH&e5U>A"dTT%H&T\xNqQQBrtaf0f&e6^`@`@i`t@hyFcr`@l?JHhS]XP[L&EEJ[=QReHYRɌafF ya DžaX(+`+Nǃa5ThQDP,$ĄCC-0H*yFcr?Za[_0N *P Nq,mWTf1+Y$)mV(S=QRA"dTTR%pVprcYQv`tçgTM1Y& @P+<%D gh&QYD* @P+<!YHP@`@l?z*I4 ((TbBee̡̡SoƑ R*Y!0Y:rg2**U$L*D 'H I!K<$0&+'CP[LjZhZM8l?m5QRC Rat1>@.fX-u\b.ٳߍ#\D)gdc} c]vRZW ,o;V6pk"AD,T` bAlu0P ٪V3 ]j8R+Mg MFQTD EHko I!ERB I!HkoD HQTQRMFe,"!g(a!SoƑ9Q $(HY∐Q!Hɜ|sZ̙]˗Ϝ_էwPØdɐE#8NN7_եF#3V,f<>yZY1fZyڴٳZil$LjGܠ:$LDz "ʑ+ 0*(Q@N,ܘlz?̢`8; 0} a$ >q~+Vc&e5U>A"dTT%H&T\,ܘlh>0xVY`@l?z*I4 ((TbBe,?#~4qZUZCuZ*" 7ZYb3; @Big06w< E%!ER@o/jE6we," 7_եզ͝DH( 7igl7A+="IMvbAlu3H*l&EEI"W<aTPܝY1,٨~+əE8<0pw8`8æ;Q$H+|Vǃa YMk} cDȨTKg2**L+8 Y1,٨;0} :aӳM)HP+< E%!@e,"Vx$HPx0 6{=D$Q *I1!2hfPfP PӒt[YPz+S^L,ty3ʼ˻ g._>r3$p>2dndV?JHhSR$"AbJʊ˪mq <ޢ AJƍ9g,4bfPK7&y:wwwwwwwwp9r3>r3̙]aL0VN1Gܠ:$LDz "ʑ+s:P;[ug"±op+~o Iak 2EJL-Ź3~QS(YPiA41Caj Q(-z "Q-DȨ2J!EE (8<0vѦ}>q2@L:vq`@l? Rat1>A"dTT%H&T\x,@ai6q6تˋg@tx0 6HXai6q YM`JDuDH LIVJͶ*NFtZM*aByX$? x8maV\4?aɜ|r I[sd; Ir}edɐE9;\q<maV\ev0~rvACBg._8ww@è8ɑ!Z 5I (S=QRA"dTTR%pX$~qQQBn,ܘy3%֬vgy3(> 0N>r3;  ׳ARd$I&$&Z9rsx5<BKbBҨq#s&Caj Q(-z "Q-DȨ2Jǂs:P; 7&15y3(>LCtçb%=Lx0 6^QI&EEʒLHL?ٔ!&r'MV8@F{tc;(IrHZU2dndV? Rat1>A"dTT%H&T\xNqQQBrtaf0f&e6^`@`@i`t$#{tbv<g@"eI&$&Z9rsix .\9 JL̙]aL0VN1Gܠ:$LDz "ʑ+ 0*(Q@N,ܘlz?̢`8; 0} a"ALik $(YRI 2?\96̪լ #=*kwPØdɐEdc} cDȨTKg2**LɌafG^L,l<f0؁EJU&Q29ǰ^eWvk $(YRI 2?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpɼę7ըb./NF|{iaⱋWXg Ϛޢ P O4?Qv%gI4S)) 1%EUYYV\]ZUYTcL'#3UYZfLV,udfլ]DD X|!&ri;ɐE/3iL;<Y9k:DA._gk2gyڵg'#5VgB&XD>6̪լɜ #acjʮՎ:{ίs8yAmmwqgX? &XECnr3}乼r٧ZCux!s'#n,/UsqZm s>֭g!SUWG⼙X 02ǃa5T"I&ERI 2˗,mWUǝY8!; UUqj`hE$LjGܠ:$LDz "ʑ+A9EE (ǘ&*uW*Z;V6ը0} ZBT+y3(aӱLeq{=D&HRITbBe̡3~QDS(ը'kx$$is$)2yTP(Q$HbNFoܗ7[4 V87w>r39լs,mWUǝXxܓ`0&EEKHX6yuCe$T1v'#7nK-}?n,/Uwv6l+Q`;ZMV;\V=fQ`,çb( TDz*LR"$ĄCBg Ϛޢ P O4?QvN8HHI4S(d$Q1CH $P۬y.oiqyڴټs96̪լsYՎbզ!s'#֭g!SUWG⼙X 0؁EJUD ǃa5T"I&ERI 2?5DL L4hV?ߜqHhPIQ@bFg,I"Y9r\9l-X㧌";Y9sXگ2b/k=OO=:j;A"dTT1$>AmmwqgX? &XECnr3}乼r٧ZCcv!s'#kz*I4 ((TbBep?._=QR"d.G^!L̙ZA+="IMvbAlu3H*l&EEI"W ^ӏ'Yzn-Y<ƫ0XU?Y<5cj 3f0q$Hb-<<0p^BΘufd1Lj81 V.w}ahiaⱋVmчa"@L$.ۂ40`% 5I w]`FVIm8`;ZĨkbja<ę7m9H $M=QQ% L4Nǃa̡Vq>kx$$iǤI4S(t?~usꈐ@<ę6+6تˋY9:@k2 kn4םa՝a֝a&4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_file_collectiones#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_file_collection.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_file_collection.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_file_collection =head1 SYNOPSIS clmgr modify file_collection \ [ NAME="" ] \ [ ADD="/path/to/file1,/path/to/file2,..." ] \ [ DELETE={"/path/to/file1,/path/to/file2,..."|ALL} ] \ [ REPLACE={"/path/to/file1,/path/to/file2,..."|""} ] \ [ SYNC_WITH_CLUSTER={no|yes} ] \ [ SYNC_WHEN_CHANGED={no|yes} ] \ [ DESCRIPTION="" ] NOTE: the aliases for "file_collection" are "fc" and "fi". =head1 DESCRIPTION Attempts to modify the specified file collection to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. fcname [REQUIRED] [string] The label of the file collection that is to be modified. 3. new_name [OPTIONAL] [string] The new label to attempt to apply to the specified file collection. 4. new_desc [OPTIONAL] [string] A new description to apply to the specified file collection. 5. files_to_add [OPTIONAL] [string ref] A list of files to be add to the specified file collection. 6. files_to_remove [OPTIONAL] [string ref] A list of files to be removed from the specified file collection. 7. files_to_replace [OPTIONAL] [string ref] A list of files to be replace the existing set of files referenced by the specified file collection. 8. sync_with_cluster [OPTIONAL] [string] A Boolean-style indicator of whether or not the file collection should propagate its files to all the cluster nodes every time a cluster synchronization is performed. 9. sync_when_changed[OPTIONAL] [string] A Boolean-style indicator of whether or not the file collection should propagate its files to all the cluster nodes whenever any of those files gets changed. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_file_collection { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_file_collection.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset fcname=${2//\"/} shift; shift typeset new_name=${1//\"/} typeset new_desc=${2//\"/} typeset -n files_to_add=$3 files_to_add=${files_to_add//\"/} typeset -n files_to_remove=$4 files_to_remove=${files_to_remove//\"/} typeset -n files_to_replace=$5 files_to_replace=${files_to_replace//\"/} typeset -l sync_with_cluster=${6//\"/} typeset -l sync_when_changed=${7//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A fc_attrs= typeset -i i=0 #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $fcname != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_filecollection "$fcname" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $fcname ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$fcname" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 144 "Available File Collections:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_filecollection available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" elif [[ -n $new_name && -n "${new_name//[a-zA-Z0-9_]/}" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 105 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid characters include letters, numbers, and underscores only.\n\n" "$new_name" "${new_name//[a-zA-Z0-9_]/}" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ "$*" == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$fcname" 1>&2 rc=$RC_MISSING_INPUT elif [[ -n $sync_with_cluster && $sync_with_cluster != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" SYNC_WITH_CLUSTER "$sync_with_cluster" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $sync_when_changed && $sync_when_changed != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" SYNC_WHEN_CHANGED "$sync_when_changed" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT #=================================================================== : Modify the file collection if no input errors have been detected #=================================================================== else CL=$LINENO KLIB_HACMP_get_filecollection_attributes "$fcname" fc_attrs [[ -z $new_desc && " ${!_ENV_ARGS[*]} " != *\ DESCRIPTION\ * ]] && new_desc=${fc_attrs[DESCRIPTION]} [[ -z $sync_with_cluster ]] && sync_with_cluster=${fc_attrs[SYNC_WITH_CLUSTER]} [[ $sync_with_cluster == @(y|t)* ]] && sync_with_cluster=yes || sync_with_cluster=no [[ -z $sync_when_changed ]] && sync_when_changed=${fc_attrs[SYNC_WHEN_CHANGED]} [[ $sync_when_changed == @(y|t)* ]] && sync_when_changed=yes || sync_when_changed=no # NOTE: the seemingly odd, out of place leading dashes in the # command below are apparently *required* by the # clfilecollection command. So they are *not* the typos # that they appear to be! I suspect it was an attempt to # preserve them as positional parameters, although there # are other, better ways to accomplish that task. print "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o coll -c \"$fcname\" -\"$new_name\" -\"$new_desc\" \"$sync_with_cluster\" \"$sync_when_changed\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o coll -c "$fcname" -"$new_name" -"$new_desc" "$sync_with_cluster" "$sync_when_changed" rc=$? print "clfilecollection RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc == RC_SUCCESS )); then [[ -n $new_name ]] && fcname=$new_name else rc=$RC_ERROR fi fi if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then # # REPLACE # if [[ -n $files_to_replace ]]; then typeset existing_files= for attr in ${!fc_attrs[*]}; do if [[ $attr == FILE* ]]; then existing_files="$existing_files ${fc_attrs[$attr]}" fi done if [[ -n $existing_files ]]; then files_to_remove=$existing_files fi [[ " $files_to_replace " != *\ ALL\ * ]] && files_to_add=$files_to_replace fi # # REMOVE # if [[ -n $files_to_remove ]]; then [[ " $files_to_remove " == *\ ALL\ * ]] && files_to_remove=${fc_attrs[FILES]//+([[:space:]])/ } if [[ -n $files_to_replace ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o file -r \"$fcname\" ${files_to_remove//,/ }" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o file -r "$fcname" ${files_to_remove//,/ } >/dev/null 2>&1 else print "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o file -r \"$fcname\" ${files_to_remove//,/ }" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o file -r "$fcname" ${files_to_remove//,/ } fi rc=$? print "clfilecollection RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 404 "\nERROR: an error occurred while attempting to remove file(s)\n \"%1\$s\" from file collection \"%2\$s\".\n\n" "${files_to_remove//,/ }" "$fcname" 1>&2 rc=$RC_ERROR fi fi # # ADD # if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then if [[ -n $files_to_add ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clfilecollection -o file -a \"$fcname\" ${files_to_add//,/ }" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfilecollection -o file -a "$fcname" ${files_to_add//,/ } rc=$? print "clfilecollection RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 405 "\nERROR: an error occurred while attempting to add file(s)\n \"%1\$s\" to file collection \"%2\$s\".\n\n" "${files_to_add//,/ }" "$fcname" 1>&2 rc=$RC_ERROR fi fi fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_filecollection_attributes "$fcname" properties fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify file_collection -h" "FILE COLLECTION:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_file_collection()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ o_ l nuJםa՝a֝a&s/bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_groupollecti   =e ainorst$cdhlpu"/ACEGILMNORST[\]_bfgmy#(),-.12:Pvw&*0;>DUk{}!%'3469jBW ܱWMG?kIǝiAxyuRژ41 c1hkr̖0*6Jq5e($—1jUQTrJimv Ϛm oxj^UVb!u% Dy̧<RZvg\᝽,>p棥X?[rg|#oNk,UHi5RJ-OB8a;Jv?rJHe;A+~0]is8]%r8gkrJuq*4*jZԷוǔn`AԶ h6PI͝˚%r*KוDR3>\sRK+vՃ˜'z|l +۠n<m FIڒW)no5-C) ZˍqAx|#r /t-i8=qsχ/@IAo?5oN\K҃8l=K(j7kkv֞ԽY6s k Q+K48-C f9+ ί="vXWjIZgumslZ2|Խ8$ |7AKg + kB:F<"t/ns7zd 䵤櫤bԧqj^—qs5M*驷Q [eWY7*`q`RN.y&6^JGk=KAU`*QjSKJ X`n:-xNaZ >N>( @,407lqt8X,07}[Z`@`o`-v8 bx`o6L07:Ԃ2US 4E[*(𱁁 ^7A#pR-xNCxGm+,XDŧg`Hf(4̧<rJb5/IU;~D%'uKbu*UPoji|K\lqAxyuKim.KZNqRqZp=GK?.o4+^RArg\fųtd:j^IҞvקմKוL= )%rtUm<.j^2tUm=j?Ҟz@ه!;׾AKO= KZ.@ء ޭZ/te>6s+-hb?.{Ps*&`RIqsϛgu'u˚n2g !棥[ = 5k?ښ{WAheԼ`#@RYn5.,]4:p$2ו\sKp6RSKasRqB'r楺8FгSoY"o5-*U oio6\ԷEޔP;Oܭv6P{?D\E.!ԷƉU<c)Kjba10K|;abӹSԾ \[7AVZsE/;vKGU{aF˂I/lDZqZ|nP^)^.[>'Ja#O|'zl.PA|l{[-'<0(K^ҝ/喹\E-62^l X&Tz@ӂKͳt0JnD8 4q13 !8~0]l$DJ(Vp@i" qbL V[8Aah$-XN@<C%F܆*2P F(Ԑ,0$D8 LL&NX>J5$ Rtb 6r D@70ӊ5$ QdJ B?Z0Z7\ +~0]jD$"0aclW>'0aclW=! (`B4+\xrS@SfKB@`B4+\zʑ c0&q"^W 3 hV\ϕ"0&ϕ"jh 3 hV\iNTH hX?֌U9R!%iNClW<#he8F wH gЭrC)6rޔP7AH@0aclW<#he8F5$RBB0&Zsg) "0б63ɝĉ,pR!`B L͛@W<^zyũ^bU^UUUUUUUUUUUUUUUUUS?İ}c{^nj[4&UUUUUUUUUUUUUUUUUS?kwÎ % F3ɝJqCbՂMT^ z1⇪Œ*8i!yx(ϺSy܅UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULKs*Ҟ*rZqZa=ۄ_W:)*=3~0]ldȔjV$lfl7%H"PyB"Hp8HEyb?.|._ @)R%(T<@=UUUUUUUUS?İ\g{gUUUUUUUUU3dz&p?.l7^QuA#tG&@h$Lcː/OXR[wUm]vG'iy*Dȗ.DJ 1aaz1K8PyP@~ 楽Fs'%H-ĉ,p# X2 Y,Xa,а@24/N-Ֆǜ;)ƞihX^ bîx å82cDq"d &\|@ ōkio!.<P4+\{EZu[gT"%+$UҙKh\Nl=a{  h\NfAf` ၀83dz&tBMkil.6jafLIfbF͆f̓yogs.#54BMkil.6gp}h×ŋg1UUUUUUUUT,5W&笼UUUUUUUULqɝjafLIfbF͆f̓yogT"%+$t_Wgaaz ,8p˗Էbîx å82cDq"d &\|@#4,%FFڲ`0<^-B,019,Gh$LcǘH _V,h\NykWZBFip(EW=r:q*DD@ *LnP^)YuQUUp Q 4QUU a0nnٓ:!&5ʴe 5`&DR#f3fԷh׌!&5ʴe g38>\ˈűJ,8BB<sٓ:.O2%%6Z.OafL&a`j[1yDaVXqÇ/yog\d?KDq"d .<ƈD8L0Gi*XK4,4 Ӆ|'e'J`1xZ+/Y1yDaygUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?ıZ|ssR|ԾKZNN(Yygaaz1K8(*e0o5-Z.|Z ("PyB.N(tO /H $T?k$TpTX:VGËgo>N(tO Ȏ$Lc *@1EϞ-`XaI(Ui9VnLӭy\dUi9*LV 2dJK5+6l36o*^Ab|[?̙jhJql)}VAhA9fP+jhNMS-L4{8n gyx(4yUBϣVV-L<dȔjV$lfl nLӡ{\32jafLIfbF͆fV2*^2BK!Y"RYXaBbd΋S@2%%67[S@Ȫӡ{SA*D$902%%604&-qɝAx}V,Ui9V.LEy\dUi9*O /H $TcUjj kӓ?A;@z ʎym%N$uM*reV+"MϑU~0]fڲ>xpv-`XaI(Ui9V.LEy\dUi9*O gR@;?֋H_6A D0Dq*p@24,?-4;7 XnԼN@n] h 1t ~Oܵ)y۷|Uw`" q@hbgA7Bp`ah$L l@nםa՝a֝a&Xbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_hmcp   = einst$CES_acdhlopr"-AHILMNORT[\]fmuy#().1:;>DGPUbgvw&,/02BKk!%FWY{|}'*+345789R8JL&xM}FϖɭNPCOl-Eu%&U1ԟ5~Ş%zG~ʰRo[ً4`j egv٦[7JL'c>kV~Ş[II`xKYRz4i3xؐ'ԔV N YR|V{=g|YR|(M{]x*ȳn >\~__7|~%7g_+? sl6uY6l`~/ r<4f'UN޶>ㅔ ALOmI-ΫE1DD"LNv-=˕D2Q3]I/F]ʰRp~mwׄquMMAFNOvoRo[dPT(qzTa`y$2QLTD 6S.ф{zqP[ j,oLw 쀐Ԋ!`2ٵ';Rm4- $A2rE&8#3.@9>Oqi83,%(o|݁R:̟wC1e8lUI:]Hϛ9=5߬Jb|m윞,ԟ5ߏ$3PQiF6v[βsUHY8ȼqe8;yTK@2rE&8#3.ɜ6(MmmI ړ1[˿I ړ1ׂ󁷲rr6 q8lQo[1GUvYhf,͞Z 7Y9g9'iCOml'#kIg"ҍm{r췝d檑wβqx0qnv*& f\b "g/˱83ZaC.ǘ;op|>{1ǒCed,[sMRz#ǒCequm윜x0(͸=lDP14 ,6(o'TKD0zib*з`c'5T']YF?<"RoβsR3rOww<҇gYF?>kIg"ҍm{r췝d檑wβqx0qnv!y2($XBcm"]]Mqeg˚O g$kXHJɔE*0g5ߜR;owBS5ŕ,^kXH Y(Lq9yMDT˲˿bɮPu'35,y$݃N%,T`k9'v'Ϛ؄k&g%^ǒ@-e-"Keg(2ަԊ6%7SS&ԡ70rS{aAnv91˔,@1L08dv@֪TbghL(ϖVǒC6rS^ o6rS,zzf&*q'cN<҇5ߪ1x[˿UЙUި?%5'M;Wm83p6;axHLH  P&rpbr{|T6- / bi"U2c#xK6VRlw4yTR-!)'ɳg#T/ $[&%S&8;-N DŽM=X2Uqx0(6޶im`xnl5ߴ.k/ bCH (TCeg(2ޒCE$Y6l`15 sQ`"eG P)$K 9y\^%: _w$?Ldx8\0/Ul IpS`_).4󢯎6{rQ/ baVޤw7e&LM( 1p{0Y6[G`^9eo+<hW6yy$Q L5*ּmf@0y$B%J쁘*f$bB`ȁ;< IpTM(LoVoX;i83Fz˛: ?{⪾R4qac{m޺USu94`j[mdjYˋ3)v[d qfxL0o&Mm r nhu%Ἑ6gpG'.UzL~.` 7Sm r mgwYˋ3)NM=XU|Ґasg6_R'uu],PH *@Dyg;@TI 9(EIEW_-[h/`  cc+U,ŞU97FV5iͩ9mfU8m񚓃1 sG"pqǎ@fZp5HDJ ǎ"@TBMgqBc@nPf4BSu S T@qǎ@fZB' G&`p),`X03 ĉ;7 LHLA֟'i<1:U6{4  3>O8{''O@0(``(wδ>{ogSU< Q=:mMgx@@{ub< P(P؄Obb( `{u Jt4F{l7 L =:X]\ڴ4FO眓ۊO@X(``(wδ>{JJB춵< F;|*"$ y8 (X;͵~ҍoQmmmmmwn XQEnŔn 0;"mmmmi|ǒA4J(VgZ|NX6*mhsgW6X$J ![Ͳ 6l$A20d"1mmmmmmkum|ɲAn|hϋ+=Jx @&i*"pdvL)&dw5>dY5;"mmmmmmmwFYhJpI~k9XaxDWUI>NX6*mhsgW6X$J ![Ͳ 6l$A20i,T`[mmmmmmm֟' J|-5/%<gBh4H2;pcHdR1Lɐk.m|҄*Ps-mkpQ,--mk5ͪ =O$dGQ#]YrSaAG2w Me5ѹ eB%SI$"U2IxDRCu#̧ eHYY(X,LDf;iPL LE2Ą;I@<h)Fk2qfz4 L1=sj‚`f;i4nBgDTDzILB)`(0,PQ! 1`x O,PQ4$ L"@MJimYj )a4xHO BR ((ˀC xw pf]YrjAysd@dҊ4ɐɐk.iFxӀa,PQ>@5^g8 wjʠ2 wؓ<  D=sj‚aPs3>O6 L$w L$<%VXث獎4֫1՜s:$$ZQ 9$'={r&&LLO [mm]ۊߴj|ۿ-mm֟'II˗p6NO2d;k._>p6NO40fdw5 Ie˗Ϝ PV&dVdwwIr=$J%"HDdK@1J(T7f/o6oeګڊ{o|ެ޷!IH000(,LDb pG'*qg{yC oSiBpoQ 1>p6NLf08,h 2`x էA2(T(L1!2{{$A297Ammm |;iF6[mmmODP14 -]Yru5Y9Ls]w eu5Y9 ̙*&A2e˗mljr3PV&dVd5&W,*H@!HE,^0Q*TPݘe-Eb jj+7,]Yzz#>Fa& 1Q--ş] 03QoSiBpoQ 1>p6NLf08,h 2`x էA2(T(L1!2{{ʢXɖu5Y9jwEmmmwngݥPmmm]3>OU@"8 |ls|:aC!|]YrmMg`!|]U@"8 C iu5‡p"$pՠ+ 23wIr=$J%"HDdK@1J(T7f/o6oeګڊ{o|ެ޷!IH000(,LDb pG'*qg{yC Ŕ`[fP3xŔ`DFc .40. ̀@F"b#1c ɲ3 ڴ&@ Eɐ&$&YbOw e窻{p  !|]P&<1b]\ڽƂ&dw5=ɏ$jwEmmmmmmmmm7I %!v[[alQA~iY^S֟MmmmmmmmmmBsW*bdd@#=ɦX G ‚Ly$(c-mmmmmmmmwn"]JJB춶iM$dZ ?4{o1՜-mmmmmmmmw ecrOn*~c@~{JJB춶dw5I ,Q xJ2WT6xH&Dp58[JJBcc!%ͪ˗ƀ!$*!2w77x,$(HDC!' $iIH]lfzIL!"%]Ғ-O UͪҒS]ʡOiFxѸa!E"@$ =$P(LA V6JJBmOUw*<<*bBDJ 2+ɳjEmw a!9APA4A‚4$ L &W,*H@!HE,00|ÿ%J*R =nl|!$*!e$003I1ǒA2#mZyTDR] k._RRe8iIH] IriE^dVdw5FD4Ia5ѹ eB%SI$"U2I`wDRCsJA͞O$9$D3L>Fc b&"3xH&Dp5#0@1O*d PTP,bBe$I ,Q xKM3iIH]VYY6*Pw;YrrOn*~c@~{JJB춶dw5I ,Q xJ2WT6xH&Dp58[JJBcc!%ͪ4*1đ+| Co$dGQ#59BKT)PsAmmmmmmmmm] J{J6ŃAl-!(nmmmmmmmmm]XHN{jPLL8@,w5/(MBS@dҊ4ɐɐk.|YI!|]y&SU֓F+zIM$KgDT$"1J(T7 Yc\YM6MI4zY(MY< &BQ@d w;jw a!9ەA12`exPPw5[mmmmmmmmmmBobҍm{n uԞl䧊?Y] woUި?&b|xGiF6:',iZfO؄kx'Ş 溓a,laP媤uY6l`~/ wTCagwBS5|?7oZ;oXp5ߪbghLT 䧊6ȰK~2گwkrXAF@)lŃeJ{&Bo.2V|Y^Aͪmmmmmmmmmm]3>Oȥ\˗>P؄2wo&ϔ&!)k2Ȑ&28jc HI8I0|Yrߌ< &@ .\6M(L ̙g8 jAysdPwiFxӀ`< (Y0(1f/w a!9ەA12`exPPw5P&<fwo&ϔ&!)k291MJ+An֟'ϔ&ϕ15/|7Ls]wδ>xܡ7ۓ#O"@$`$!$_4 5'6(ro|7:snN&ϕx(M6\AR2 AX1#'ϔ&ӛrw95/|7V|&C"mmmmmm7,pPQ,2͝vX[ϖ.]ᾫ1՞?<~A;1`i(pUmmmmmm:,2]iBoN,ϔ&ϐv.iFxѸWz6jYZ:&qegzqeg$dGQ#@$"="&PAaDT"PEAmTf1z&u1xMtϔ&IȎGHdIE,4*1đ@YBUw*<F]\کbghLbŕ(Mŕ<  Dȓ( TDARVTUxy$"U2Ąw a!9APk.@z(I*TB09⍽@{A3XHNz@H&R PPw56{{ YjD "h="Kϔ&f/wؓmmmmmm]Y,Uwf1z&t0(MwEmmmmmmwD "|7 LcAPw95綯nUɃAA|]mmmmmmmmmm]eg OiF6͜G3뽷 eg;J6Д< qf{M2~%=[t%8DW+>N =;u'YYR:6r0UIͪ Ԋء05߱ Odӿϗ6qG7kR'w-nY^- ]8Fޠ?9)bԐ?9[U wnYxKQ((eKf,λ,-wBS5ŕ-Vc=6ysj"mmmmmmmmmmgZ|zA{#O"@$`$!$؄YYR ((i(,PQ@AA̻ 0%ˆɥxi!Y!|]p< PYH0.| jY7pէA2e && Pw$'={r&&LLO BsǒC ‚-eg|YYBSe77TMVc8 BgSN,ǒA2#ɔE*y23=$JX.UwMsj1՜3kV~|YY H"xHLHI ,QB]pqAmTf1z&u1xMtϋ+?oVoYmmmmmmmmmmmmmm7ܦNqy$6EmmmmmmmgZ|>%QݲNjw8QݢN|hIȎG2g@#FFc08Qј$dGQ"1@~yb(&[2g9jtf3eyb(&Xc˗ƀ*&A2e&p@#lS1mjtf5\*&A2e;|h*bbbfLFFFc08(jQ,T LA#._ICo̙FFc08jtf4y=m\4紤.kfLFFFc08(kYCH (T@cpqBD4I2zHPAA*ωF|53(XSXQ oof/{{1x'[w2Zr+s]YYwoaA5wWm,w]eO6rSYmmmmmmm-#9"v.֟'&Q,QO牉,c wδ>xkT dVO$1đJF<h(d$@1uXbKUP69#dfzIL!"%ps"6VwHI*ė6J6lsɔGSV]pqBD4I2zHPAA1%ͪҍoeƳ=FaDT"PG0.l2+ɳjEmw[ǒ@HxHIwEmmmmmmm z\~xKQޢuLxK+?e,mmmmmmmǒ@H$dGQ#2wT dV5[mmmmmmm܄u"wUI<9_bɬy$$mmmmmmm]&$ 8" $T4LH@qdDI@)bB" H$ Ic"mmmmmmm]5wWR\Y E|<|u[cxK+=mmmmmmmͪ2r+v((;ĄDA1J,c h<#j|ۿ|h]Ͳ,k\ڼ p.mmmmmmm]3>OaAFȐ&28jc HI6!)V| 0e$'p )a!<;PPv.֟'ϋ+< dVeg˷AA|]ieeH;Y[mmmmX8YԖҍm{nmmmm|5Ae ‚<2( dw5ŕ2r+P65^',)Zjw a!9egLݸ/ i|1!őLy$֟'\ڠS'"gZ|:Q ommmmmoHdxG="H;YOQyF]3>O&$ 8" $U:amP)Z3>O<E*g<\$ LE aJ~5,DfzIL!"%ps"6VwHI*ĥ zD "է#OȓIn4n0XHQsȐ&2BOI H(7U%(MaDT"PG0.l2+ɳjEg@$E*xJ1)Boưէ#O&$ 8" $U:jwQOLi|&8)W#F㥩Q8 <5߉2.ǎ;)(6-Ԏ҂ =`O2yxeH[Ʈ,`fyl)V ``P$dUxDW4yH003yhI:L,LDf0+@sjWIј`x PsdU633rڣ1Bc"@$ wo\#F+l: kvn,םa՝a֝a&,bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_interfacecti#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_interface.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_interface.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_interface =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:46 Last Changed: 8/6/13 16:56:50 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_interface.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr modify interface \ NETWORK= NOTE: the "interface" may be either an IP address or label NOTE: the aliases for "interface" are "in" and "if". =head1 DESCRIPTION Attempts to modify the specified PowerHA interface to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. interface [REQUIRED] [string] The address/label of the interface that is to be modified. 3. network [REQUIRED] [string] The label of the network to assign this interface to. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_interface { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_interface.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset interface=${2//\"/} shift; shift typeset network=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset nodename= typeset -i i=0 #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $interface != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_interface "$interface" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $interface ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$interface" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 146 "Available Interfaces:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_interfaces available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ -z $network ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" NETWORK 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_network "$network" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$network" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 150 "Available Networks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi #============================================================= : Modify the interface if no input errors have been detected #============================================================= if (( $rc == RC_UNKNOWN )); then #============================================================= : Retrieve the cllsif data to first, obtain a node name, and : second, convert any IP addresses to its matching the name. #============================================================= print "$0()[$LINENO]($SECONDS): $HAUTILS/cllsif -pcS" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cllsif -pcS |\ while read LINE; do : Handle possible IPv6 address typeset IPv6= if [[ $LINE == *\[* ]]; then IPv6=${LINE##*\[} IPv6=${IPv6%%\]*} LINE=${LINE/\[$IPv6\]/[${IPv6//:/_}]} fi print -- "$LINE" | IFS=: read name type nw nettype attr node ipaddr haddr if gname netmask hb_addr site prefix family remainder : Handle possible IPv6 address ipaddr=${ipaddr//_/:} ipaddr=${ipaddr/\[/} ipaddr=${ipaddr/\]/} if [[ $interface == @($name|$ipaddr) ]]; then typeset new_interface=${LINE%%:*} [[ -n $new_interface ]] && interface=$new_interface nodename=$(print -- "$LINE" | /usr/bin/head -1 | /usr/bin/cut -d: -f6) break fi done print "cllsif RC: $?" >>$CLMGR_TMPLOG # Always log command result if [[ -z $nodename ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 406 "\nERROR: could not determine the node name for interface \"%1\$s\".\n\n" "$interface" 1>&2 rc=$RC_MISSING_INPUT else : First see if the network was changed. If not, do nothing. print "$0()[$LINENO]($SECONDS): $HAUTILS/cllsif -ci $nodename | /usr/bin/grep ^$interface | /usr/bin/cut -d\":\" -f3" >>$CLMGR_TMPLOG # Always log commands typeset NW=$($HAUTILS/cllsif -ci $nodename |\ /usr/bin/grep ^$interface |\ /usr/bin/cut -d":" -f3) print "cllsif RC: $?; NW == \"$NW\"" >>$CLMGR_TMPLOG # Always log command result if [[ $NW == $network ]]; then : Nothing to do rc=$RC_SUCCESS else #======================================================================= # If a network holding a service IP with only one network interface # then exiting with error message. #======================================================================= service_function=$(cllsif -pcS | grep -w "service:$NW" | wc -l | sed 's/ //g') if (( $service_function != 0 )); then boot_function_value=$(cllsif -pcS | grep -w "boot:$NW" | wc -l | sed 's/ //g') if (( $boot_function_value == 1 )); then rc=$RC_ERROR dspmsg -s $CLVT_SET $CLVT_MSGS 1461 "\nERROR: Modifying or removing last network interface '%1\$s' not allowed\n\ as the network '%2\$s' holds a service IP.\n\ You can remove the service IP from the network, then try the operation again.\n" $interface $NW fi fi if (( $rc != $RC_ERROR )); then print "$0()[$LINENO]($SECONDS): $HAUTILS/clchnode -n \"$nodename\" -l \"$interface\" -w \"$network\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchnode -n "$nodename" \ -l "$interface" \ -w "$network" rc=$? print "clchnode RC: $?" >>$CLMGR_TMPLOG # Always log command result fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_interface_attributes "$interface" properties fi else rc=$RC_ERROR fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify interface -h" "INTERFACE:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_interface()"  kSnםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_location_dependency#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_location_dependency.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)04 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_location_dependency.sh, hacmp.assist, 61haes_r714 8/6/13 16:56:50 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_location_dependency =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:58 Last Changed: 8/6/13 16:56:50 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_location_dependency.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_modify_location_dependency =head1 DESCRIPTION =head1 ARGUMENTS =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_location_dependency { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_location_dependency.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mode=${1//\"/} typeset -n rgs=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A DependencyModes DependencyModes=( [SAME_NODE]="NODECOLLOCATION" [SAME_SITE]="SITECOLLOCATION" ) typeset DPMode= #================= : Validate input #================= if [[ -z $mode ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" MODE 1>&2 rc=$RC_MISSING_INPUT else DPMode=${DependencyModes[$mode]} if [[ -z $DPMode ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\"\n\n" MODE "$mode" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if (( $rc == RC_SUCCESS )); then print "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t $DPMode -a -l \"$rgs\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t $DPMode -a -l "$rgs" rc=$? print "clrgdependency RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_location_dependency()" 0> kZn 4םa՝a֝a& 4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_logt#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_log.sh 1.9 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_log.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_log =head1 VERSION Version Number: 1.9 Last Extracted: 4/1/15 00:23:42 Last Changed: 3/16/15 09:15:17 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_log.sh, hacmp.assist, 61haes_r720, 1514A_hacmp720 =head1 SYNOPSIS clmgr modify log {|ALL} \ [ DIRECTORY="{|DEFAULT}" ] [ FORMATTING={none|standard|low|high} ] \ [ REMOTE_FS={true|false} ] NOTE: when "DEFAULT: is specified for the "DIRECTORY" attribute, then the original, default PowerHA directory value is restored. NOTE: the "FORMATTING" attribute only applies to the "hacmp.out" log, and is ignored for all other logs. NOTE: the "FORMATTING" attribute only applies to the "hacmp.out" and "clstrmgr.debug" logs, and is ignored for all other logs. NOTE: when "ALL" is specified in place of a log name, then the provided DIRECTORY and REMOTE_FS modifications are applied to all the logs. NOTE: when "EVENTS" is specified in place of a log name, then an events summary report is displayed. =head1 DESCRIPTION Attempts to modify the specified PowerHA log file to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. log [REQUIRED] [string] The name of the log that is to be modified. 3. directory [OPTIONAL] [string] The directory in which the specified log should be stored. 4. formatting [OPTIONAL] [string] The style of formatting to apply to the specified log (only applicable to "hacmp.out"): none, standard, low, high 5. trace [OPTIONAL] [string] The trace level to apply to the specified log (only applicable to clstrmgr.debug): low, high 6. remote_fs [OPTIONAL] [string] A Boolean-like value indicating whether or not to allow the specified log to be stored on a remote/mounted file system. Valid values are "yes" and "no". =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_log { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_log.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset -l log=${2//\"/} shift; shift typeset directory=${1//\"/} typeset -l formatting=${2//\"/} typeset -l trace=${3//\"/} typeset -l remote_fs=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset ropt= attr= typeset -i i=0 typeset -A logAttrs typeset -u uc_directory=$directory #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $log != *([[:space:]]) && $log != "all" ]]; then CL=$LINENO KLIB_HACMP_is_known_log "$log" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $log ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$log" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 147 "Available Logs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_logs available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if (( $# == 0 )) || [[ $* == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$log" 1>&2 rc=$RC_MISSING_INPUT fi if [[ $log == "all" && -z $directory ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" DIRECTORY 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $directory && $directory != /* && $uc_directory != "DEFAULT" ]] then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path/file does not appear to be in absolute format:\n %1\$s\n\n" "$directory" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $directory && $uc_directory != "DEFAULT" && ! -d $directory ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$directory" "$LOCAL_NODE" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $log != "hacmp.out" ]] && [[ -n $formatting ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 1156 "\nERROR: the \"FORMATTING\" attribute is \n only valid for the \"hacmp.out\" log.\n\n" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $formatting && $formatting != @(none|standard|low|high) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" FORMATTING "$formatting" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "none, standard, low, high" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $remote_fs && $remote_fs != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" REMOTE_FS "$remote_fs" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT fi #======================================================= : Modify the log if no input errors have been detected #======================================================= if (( $rc == RC_UNKNOWN )); then if [[ -n $directory || -n $remote_fs ]]; then #================================================================ : If we need to know any current/existing values, retrieve them #================================================================ if [[ -z $directory || -z $remote_fs || $uc_directory == "DEFAULT" ]] then if [[ $log == "all" ]]; then CL=$LINENO KLIB_HACMP_get_log_attributes "hacmp.out" logAttrs else CL=$LINENO KLIB_HACMP_get_log_attributes "$log" logAttrs fi fi #============================================================ : Make sure that we have a valid directory. It is required. #============================================================ if [[ -z $directory || $uc_directory == "DEFAULT" ]]; then if [[ $uc_directory == "DEFAULT" ]]; then directory=${logAttrs[DEFAULT]} else directory=${logAttrs[DIRECTORY]} fi fi #============================================ : Make sure to preserve the current setting #============================================ [[ -z $remote_fs ]] && remote_fs=${logAttrs[REMOTEFS]} [[ $remote_fs == @(y|t)* ]] && ropt="-r" if [[ $log == "all" ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/cllog -C -v $directory $ropt" >>$CLMGR_TMPLOG # Always log commands VERBOSE_LOGGING="" $HAUTILS/cllog -C -v $directory $ropt else print "$0()[$LINENO]($SECONDS): $HAUTILS/cllog -c $log -v $directory $ropt" >>$CLMGR_TMPLOG # Always log commands VERBOSE_LOGGING="" $HAUTILS/cllog -c $log -v $directory $ropt fi rc=$? print "cllog RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi if [[ $log == "hacmp.out" ]]; then node=$LOCAL_NODE if [[ -n $node ]]; then CL=$LINENO KLIB_HACMP_get_log_attributes hacmp.out logAttrs typeset new_format=${logAttrs[FORMATTING]} typeset new_trace=${logAttrs[TRACE_LEVEL]} [[ -z $formatting && -n $new_format ]] && formatting=$new_format if [[ -n $formatting ]]; then case "$formatting" in "none") new_format=Default ;; "standard") new_format=Standard ;; "low") new_format=Html1 ;; "high") new_format=Html2 ;; esac else new_format="Standard" fi new_trace="high" print "$0()[$LINENO]($SECONDS): $HAUTILS/clchparam -n $node VERBOSE_LOGGING=$new_trace DEBUG_LEVEL=$new_format" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchparam -n $node VERBOSE_LOGGING=$new_trace \ DEBUG_LEVEL=$new_format print "clchparam RC: $?" >>$CLMGR_TMPLOG # Always log command result fi elif [[ $log == "clstrmgr.debug" ]]; then if [[ -n $trace ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/cl_clstrmgr_debug_level -c $trace" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cl_clstrmgr_debug_level -c $trace print "cl_clstrmgr_debug_level RC: $?" >>$CLMGR_TMPLOG # Always log command result fi fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_log_attributes "$log" properties fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify log -h" "LOG:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_log()" ory ko>םa՝a֝a&>bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_methodn_depe#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_method.sh 1.7 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)37 1.7 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_method.sh, hacmp.assist, 61haes_r714, 1415A_hacmp714 1/13/14 16:46:13 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_method =head1 VERSION Version Number: 1.7 Last Extracted: 4/18/14 01:31:41 Last Changed: 1/13/14 16:46:13 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_method.sh, hacmp.assist, 61haes_r714, 1415A_hacmp714 =head1 SYNOPSIS clmgr modify method \ TYPE={snapshot|verify} \ [ NAME= ] \ [ DESCRIPTION= ] \ [ FILE= ] clmgr modify method \ TYPE=notify \ [ NAME= ] \ [ DESCRIPTION= ] \ [ FILE= ] \ [ CONTACT= ] \ [ EVENT= ] \ [ NODES=[,,,...] ] \ [ RETRY= ] \ [ TIMEOUT= ] NOTE: the alias for "method" is "me". =head1 DESCRIPTION Attempts to modify the specified custom method to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. name [REQUIRED] [string] The label of the method that is to be modified. 3. type [REQUIRED] [string] The type of method to be created. Valid values: {notify|snapshot|verify} 4. new_name[OPTIONAL] [string] A new label for the method. 5. new_desc [OPTIONAL] [string] A new description for the method. 6. new_file [OPTIONAL] [string] A new executable file for the method. 7. contact [REQUIRED FOR NOTIFY] [string] The contact information. Might be an email address, pager number, etc... 8. events [REQUIRED FOR NOTIFY] [string] The event(s) to provide notification about (i.e. when that event occurs). 9. nodes [OPTIONAL FOR NOTIFY] [string] The nodes that the notification will be sent from, in priority order. 10. retry [OPTIONAL FOR NOTIFY] [string] The number of times to attempt to send the notification before giving up. 11. timeout [OPTIONAL FOR NOTIFY] [string] The maximum number of seconds to attempt each notification before giving up. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_method { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.7, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_method.sh, hacmp.assist, 61haes_r714, 1415A_hacmp714 : INPUTS: $* typeset -n properties=$1 typeset name=${2//\"/} shift; shift typeset -l type=${1//\"/} typeset new_name=${2//\"/} typeset new_desc=${3//\"/} typeset new_file=${4//\"/} typeset contact=${5//\"/} # Notify methods only typeset events=${6//\"/} # Notify methods only typeset nodes=${7//\"/} # Notify methods only typeset retry=${8//\"/} # Notify methods only typeset timeout=${9//\"/} # Notify methods only [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset dopt= Nopt= typeset -i i=0 #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $name != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_method "$name" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $name ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$name" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 149 "Available Methods:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_methods available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ -n $new_name && -n "${new_name//[a-zA-Z0-9_]/}" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 105 "\nERROR: one or more invalid characters were detected in \"%1\$s\" (\"%2\$s\").\n\nValid characters include letters, numbers, and underscores only.\n\n" "$new_name" "${new_name//[a-zA-Z0-9_]/}" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $type && $type != @(no|sn|ve)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" TYPE "$type" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "notify, snapshot, verify" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $new_file && $new_file == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" FILE 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $new_file && ! -e $new_file ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$new_file" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi # : If nodes were specified, verify that they are known nodes. # if [[ $nodes != *([[:space:]]) ]]; then typeset checked= typeset -i all_nodes_found=1 for node in ${nodes//,/ }; do [[ " $checked " == *\ $node\ * ]] && continue checked="$checked $node" CL=$LINENO KLIB_HACMP_is_known_node "$node" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT all_nodes_found=0 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 fi done if (( ! all_nodes_found )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 151 "Available Nodes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_nodes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi if [[ -z "$new_name$new_desc$new_file$contact$events$nodes$retry$timeout" ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$name" 1>&2 rc=$RC_MISSING_INPUT fi #========================================================== : Modify the method if no input errors have been detected #========================================================== if (( $rc == RC_UNKNOWN )); then if [[ -n $type ]]; then CL=$LINENO KLIB_HACMP_is_known_method "$name" else CL=$LINENO KLIB_HACMP_is_known_method "$name" type fi if [[ $type == *,* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 34 "\nERROR: \"%1\$s\", is ambiguous, and could match any of the following:\n %2\$s\n\n" "$method" "$type" 1>&2 rc=$RC_INCORRECT_INPUT else typeset CMD= CL=$LINENO KLIB_HACMP_get_method_attributes "$name" properties TYPE=$type case "$type" in no*) [[ -z $new_desc ]] && new_desc="${properties[DESCRIPTION]}" [[ -z $new_file ]] && new_file="${properties[FILE]}" [[ -z $contact ]] && contact="${properties[CONTACT]}" if [[ -z $events ]]; then events="${properties[EVENTS]}" else events=${events//,/ } fi [[ -z $nodes ]] && nodes="${properties[NODES]}" [[ -z $retry ]] && retry="${properties[RETRY]}" [[ -z $timeout ]] && timeout="${properties[TIMEOUT]}" CMD="clchpgr" if [[ -n $new_name ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clchpgr -m \"$name\" -c \"$new_name\" -d \"$new_desc\" -f \"$new_file\" -N \"$contact\" -e \"$events\" -n \"$nodes\" -r \"$retry\" -t \"$timeout\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchpgr -m "$name" \ -c "$new_name" \ -d "$new_desc" \ -f "$new_file" \ -N "$contact" \ -e "$events" \ -n "$nodes" \ -r "$retry" \ -t "$timeout" else print "$0()[$LINENO]($SECONDS): $HAUTILS/clchpgr -m \"$name\" -d \"$new_desc\" -f \"$new_file\" -N \"$contact\" -e \"$events\" -n \"$nodes\" -r \"$retry\" -t \"$timeout\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchpgr -m "$name" \ -d "$new_desc" \ -f "$new_file" \ -N "$contact" \ -e "$events" \ -n "$nodes" \ -r "$retry" \ -t "$timeout" fi ;; sn*) [[ -z $new_desc ]] && new_desc="${properties[DESCRIPTION]}" [[ -z $new_file ]] && new_file="${properties[FILE]}" CMD="clchcustom" if [[ -n $new_name ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clchcustom -t snapshot -n\"$name\" -N\"$new_name\" -I\"$new_desc\" -v\"$new_file\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchcustom -t snapshot \ -n"$name" \ -N"$new_name" \ -I"$new_desc" \ -v"$new_file" else print "$0()[$LINENO]($SECONDS): $HAUTILS/clchcustom -t snapshot -n\"$name\" -I\"$new_desc\" -v\"$new_file\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchcustom -t snapshot \ -n"$name" \ -I"$new_desc" \ -v"$new_file" fi ;; ve*) [[ -z $new_desc ]] && new_desc="${properties[DESCRIPTION]}" [[ -z $new_file ]] && new_file="${properties[FILE]}" CMD="clchcustom" if [[ -n $new_name ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clchcustom -t verify -n\"$name\" -N\"$new_name\" -I\"$new_desc\" -v\"$new_file\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchcustom -t verify \ -n"$name" \ -N"$new_name" \ -I"$new_desc" \ -v"$new_file" else print "$0()[$LINENO]($SECONDS): $HAUTILS/clchcustom -t verify -n\"$name\" -I\"$new_desc\" -v\"$new_file\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchcustom -t verify \ -n"$name" \ -I"$new_desc" \ -v"$new_file" fi ;; esac rc=$? print "$CMD RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 400 "\nERROR: failed to modify \"%1\$s\".\n\n" "$name" 1>&2 rc=$RC_ERROR #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== else [[ -n $new_name ]] && name=$new_name if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_method_attributes "$name" properties fi fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify method -h" "METHOD:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_method()" ;;  loםa՝a֝a&"gbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_mirror_group = einrst"$ER[]_acdlmopu/CGILMNOST\bfghvy#&()-.12:;>APUkw!%'*,0iX4~g6皛nGѩ6Lڌ56s5͹jmY e$%Z56qY,52EQ+`ÍPTuD@ÆEAjeH2k h0((h0"( SS.<@j6 l@SS.pqFQ۞jmF2wj3sTug6橩f)LT6 Uj3sTudP˿O*@6 l@SS.#-ͮ7 ɶr,AAxV-ʁ}b$2^@?rm 0H\HT6 +-jQbrӚqevM V m뮴 9A7 uf{mSSm4D"D+8ҏ,n+;fzg6皛nռ6b&cdP(,XBbTӥgQÔv9ӌ°{?qhXbve(LTn7Hʪ?m,ŧZie]=b\e &)1+:c#Ox`WV\snF|BUVc#Za-FVCzN3 ?,nFp9Q]vii0vczSpU6- V-ZL?i1g;%͹DV[2n,Z5f[Spm8+2kMV,7 ţ81mZJWh]N,BU3սnAxU]MO]f0ȇ?*A>mc+Ffr240~q]j nM2ň&*EM:VqX3PM\ n e7pqbܺB ?b4Ab "+8ҏ,n؍(H1n}MÜf+X.XIc 2ň&*EM3 FKf 0) eg@W'(,XBbTӤ*S0q!: ېՋr{332(%"@M{ 'TZnLb SMUG7Nb3 &)n}MvN23g\2mMjŹbVu} rb~" (,XBbTӥgQÓlCvc288WZn]!W\{4  P4YFcp2.Ұ88#Vwj3sM\cp1bMM-CkK5&zeVMn*1˴&sٌ eVζ3Y1սfeVjοm56sbZ,2,:AŦ`ܕ7EX4  P4YFcp܃\ʌh1n}M]iXOns:9'vb2jh"HzJD$"^yy"EP ӴblX^Gb/C$@RǪ@gAHDL "@ T*8UZ56qUYõ3j3sTu ֳg *T\pJCDf*T5?=X`i MeWg- 3H?\hЭk:&X ,7&tåѥjuj('$OB\w?QA>'!ѥjuqCA!F!gmͷ\?H 4N <ۮbo5Likqé8!*U+(YYa/1< ] (H$H ('$,sr9 n=iՍB[ёcC`s*rYɶ)HuRÙPLB@[\y N Bs9Rdm(T5SsPzW&yS<5:)  #h1G: Z j bЙֶԀteHJNC]Zqr+qfmFkY2C,E@gM=rd{WT('$+SBv13Rd{WT('$+SBϡV 3:i$X ,wYEѥjuY5ngO hҵ:-FkY2C,E@b13M x$14ĨIEunUݿKXZ/1"s2m?*:iT 2 .7VmqpEԆM2HT4bz;%iT 2 .7)6,RcC_lBϡ.{OB\wipe7QL,/i!g{ cLFCXPMIIRD$Ty\@@^HDŌ̻Ax̷dX潠HQ$YRŅ?^3:iЩ!SpƻI1 b5CXu4$=%J[@qCTQqIHK< nuq[CȼQ?= rb/C LqDDqeH,13ʑa*k!%G^J(Sp®X=fbՌu7Ax&TRȓ-Y`%riXJ Κz:; b8±­4K('$OAvHҰ{ :, POI駡SCσKܩVDH%ܩVv=f&t]R4%^$&2 N}MOM= r|\E0vHҰleK]R4%[>M3H?k(T5S@qCT%$=%IW痒)$Q!.281c8.ã^&c3-.x@.x<"] <<&TRȓ-ʑa* k(T5S@qCT%$=%IW3332(% B/#€M k T1Iŕ LX\13- r 7 ?k(T5S@qCT%$=%IWL^HDPNMY;ռ8<<82 DcЩ ~ ("h$9RI$GT1ar3:iRcPViX5L x$14ĨIEunUݿKXZ/1RBK"Hqf]*5hvTUݿ&tЩ!@e.qYb8¦ 1@aXaV POI[qf]hiV汨+CѠLOařv M1*8Q@E0vX?q@h)DH*GV4TbMZUj +8.5Tȕ+7 ?k(T5S@qCT%$=%IW痒)$Q!,qP œAioT ^E~ze k(T5S@qCT%$=%IW`.xŢVcPʝ`ȼ^ru-V08D4I$A£ *iUiV汨+CŢ̷<03,qh`%@44OaΚz-V0B*5/% POIN2yzXec 4"LnP:#{5*@$ʐ&,.Yb3H?k(T5S@qCT%$=%IW@l^HDPɓn c18<<,Q!QT T$ #a.'A&(*iX潠HQ$YRŅ?_f/L駠g6櫋FtׂCLJ,P7QA>']İzŅn31 ETXTEs2qhΏ Κz:;\ESB HeeqEmW4h(nm駠qf]wCLJ,P7QL,/]V2vF"@$`QJQąc2UmW8.5Tȕ+7 ?k(T5S@qCT%$=%IW痒)$Q!,qP œAioT ^E~ze  H?_r8`fU$@[ ni1#!Qƨk$TKh"HzJ*< xŢJ3sŖ$^E~ ("됤+qh`m$ L HYVcJg6櫋Ft8YX0qXb-V0 6O@"ŢhE@bTqe$ 7 ?UÝ/T+Z,a&T 1 rqpDs{潠HQ$YRŅ?^3:iЩ!SpƻI1 b5CXu4$=%J[@qCTQpIHK< Xܙ; 3Cȼ" $Q%EH$W,Fq|@P,E^Hr (H,bf/3&t7Ea%305/% POIWwwwwwwwwwwwwwwwwwwwwwwwwwwwv,1ajFG L `⪢LT "78.K@0Uݿ&tЩ!@aXaV?QA>'Κz$`w  T4SpXIc >X0`O@0 1FCA: 7 ?0؍0=fi1#!Qƨk$TKh"HzJ*< /$RHB\dqfbqf]G L f[\8t(\/.xD.xyyȤT*1P$ XIc @vb2jh"HzJD$"&x=fbqf]8t(^E~|gaC@{A!ʐ&8I"8 fi1#!Qƨk$TKh"HzJ*< I" gKۓ'sݤcSyq(xyy#UbIA-&i@{A!ʐ&8I"8 ^O@rqnq x$14ĨIEunUݿKXZ/18( ̻-tUŹƧ_wwwwwwwwwwwwwwwwwwwwwwwwwwwwwo4*uwyPV20UPOIHhN-5;O  諓sN]hLM@a84N-5;ghvb2jh"HzJD$"E$$%Gf,getr `eBKB燗8 ,E@8( W'? i1#!Qƨk$TKh"HzJ*<gf,gePKB^G"@M? ״c$#*@gYw &4d58 aD*mIIREGP)$Q!,8?icrdbjo<"/"`⪋$@D 3(+ZL*Gb/C LqDDqeH,13*eZŨ6p5/% POIWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwo3dktr `.LX2hUTH-Y`%n'Vj W]ݿ&tЩ!@aXaV?QA>'#h Me3LV4VN | Wd*-Aj~#"*L AU,@%?03@`kQqÑ*W h$9RI$GT1ar5Likqé8!*U+6/$RHBYq(~v7i1xE ^Eɋ&Mj⪖ I(+ZL*Gb/C LqDDqeH,13u*jm05/% POIWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwv,1ajFG L `E" ,˰8.MM\®3N= F 7 ?&thҵ:;3('$cLFCXPMIIRD$Ty\Ay"E!C;&N!H1Ʀ(P/ F(D\*H\C,F. P+gb/C LqDDqeH,A:) Y\!\::̲TTnɋ5ZPTu  L駠pw6۩G('$OAJןC?QA>'G:Q-8!*H `E$$%B,wnLCvcMP^@?mȼ_SBŢ&2D8Tq!eY*u*jm5-V0eၜl'D)cE3*ᡢ{ &tqh`P'&Yx (n}MOrqpDs+f g_rܜe\9f/3 &4d58 aD*mIIREGP)$Q!,8?icrdbjo<"/"`E" ,Fؠ0dai0M k T1Iŕ LX\bΚz FׂCLJ,P7QA>']İzŅn31**,˰b4®3N= F 7 ?&thҵ:;3('$cLFCXPMIIRD$Ty\Ay"E!C;&N!H1Ʀ(P/ FT@W'Κz V\` 7 ?k(T5S@qCT%$=%IW@l^HDPɓn c18<<( G'8ʸs9EcE3Њ3f/aAN2y3ivb2jh"HzJD$"( (xA ݹ2w1 Af57By2e #lPV20U_5*@$ʐ&,.Yb1{gM= FׂCLJ,P7QA>']İzŅn31 Y̻- FUݿ&tЩ!@aXaV?QA>'Κz V\3('$cLFCXPMIIRD$Ty\Ay"E!C;&N!H1Ʀ(P/ FTdsT@Yns:~ ("AHDL "@ T*8lfJ5#XbXu_8`fפ9R"T'$h$9Re *EɃ_5Likqé8!*U+s(\8t(\NMY */"?= F? i1#!Qƨk$TKh"HzJ*< LSE3 k y :) Z,a?q@h)DH*GUҪ55-V0eၜl'D)cE3*ᡢ{ &tqh`P'&Yx (n}MOrqpDs+f g_rܜe\9f/3 &4d58 aD*mIIREGP)$Q!,8?icrdbjo<"/"eHG<@Yb8±­4~ ("h$9RI$GT1ar3:iI*n `k!%G^J(Sp®X=fbՌu7Axɔ&8@̻- 7%MV#A]gM= r{-&inL駠ѥju`kϜns:~}MO&4d58 aD*mIIREGP)$Q!,8?icrdbjo<"/"dTUPiVy! #s5ngO^3H?\!\:9ݓ N BYY:XDrH숩1;@*`H ]-Y*؍0w0ؒCab84'OA,;lExܫ;Ywx$14ĨIEuەc'`OA,; 7%MV#A$˿abw&䩺*h1nŞsr9 ׫xk̶옱nP{g ٖݓhhSpƻI1 b5CXu4$=%J[@qCTQqIHK< 97^\iPVӓuh0^EBMStU`@P,E^Hr (H,bcLFCXPMIIRD$Ty\@3N-V01cgig˭BE^Gb/@*`H ]-Y*؍1@8ʸs9_f/5Likqé8!*U+6/$RHBYq(~v7i1xE ^Eɔ&8@dm F X潠HQ$YRŅ?_f/L駠n `k!%G^J(Sp®X=fbՌu7AxU*ge hF Κz:;(+ZL*G('$OAJן88#VtE5Likqé8!*U+6/$RHBYq(~v7i1xE ^EU*g`788#Vt@P,E4uRãm1`됤+%~îŋ4u3 y37EX_5*@$ʐ&,.Y&4d58 aD*mIIREG`'vb2jh"HzJD$"( (xA ݹ2w1 Af57By4PA C,Fݤ&~ ("h$9RI$GT1ar5Likqé8!*U+6/$RHBYq(~v7i1xE ^EDq@z)3-&i4J .@\N+6gb/C LqDDqeH,13C_^ M1*8Q@E:iTؠ0dai0M4iZr 1ДA:?'vb2jh"HzJD$"( (xA ݹ2w1 Af57By4PA C,Fݤ&~ ("h$9RI$GT1ar4gM= ‡dbTqe$ 7 ?q@h)d걒t*&;= ‡d-'Vd[ijs‡d46!ʕ9p,/C LqDDqeH,1^𫻻d oX3!X/X1۴̭0Vk1洎eS36Spm56sX97\!-~XiƏv3MvLBl` ݬYN*3hM~Hre9<44OI:) eYa9,͞{uRÝsŅH%Zʑa*ۚ+RIxfۚ+Xݮ]sXV S7Ea%3dR*EDEn]諓sNȤT*,,˿8ʦbvBň&5PqUK$ArwFI",P*Hz⪃HrTb4IbH(ARC&P8@p/M ţ5`rPm휄`$" ,Q TdJ&؀PUIT@j9IX6˭ASSm) PI!P4P(ma9,͠ $ ]a9,͠ PP$H&ÀB]a9,΢X_.fЌ f^Y2,FU'&tÀ@̻ ,/EB fT ('$Y#*rY.z ֳh@ '%P&\f/aAb]ݿK$2wmFsnyLov'6L!% z]ݿ&p T\L'7 ?\!\G+K'!SCn5Ysq r~ 9 0ՋboK 9[?njŃ17C8Qq X~&&Qef/M<:Z *F(l8ւʑa*ålC9[?kA؁M<:Z휄X_2Vç8.LM<:ZE0"VÒМ(vKåmұ*X^@ۚ+RIxåmҵPmaax8vJ-Aj{OFj%Uk۵S Ŋ9[?qhXbv4haaxQpnKf åeStVj _r~]d*Pmڞån88aax@*S4hI!aa| 9[?b4hR5)(l::`{OaaxG+g:nJF4hF)r~Ɓ*h0{OF!X^t V\L駇KAjq0aMEeeqEjq0aAACpole0Y`4h7 f/L駇KBnk;Jj('$-8.Ì4sXV PhP&'ʔr*Q+qf]aAbΚxtqhΚ 7 ?s,˰-Qۚ-hP&'(igG+L92 3&tåh1MEeeqEbF1=G+K=9ZahY`{nP3-PTuj('$-8.Ì'e֠47 6J9ZY2Qg@̻rrqpaD4IP1(LT4K@*`@֑*ѥX[-95MM\éSA9T(PG*EJ9Z pAŽV(P Qʠ(P(Pl rAbVDB% re(Pr₈"HzJ$,D YX6[5M-&(   [ miU չj3sTu:::QʠLAU r$QʠT 9T(hUUbU9Z G+D(hJ9T Qʠ2QʠG*QʡRUG*hg8ʹS@h(bQP4h [ miU չК₈"HzJ$,D YX6[5M-&9ŽW&p HrED\44OI]ƘG:Q-8!*H E$$%Z,6L!Cȼ5͹jmX潠QI"?^𫻻@۵qf]MƛnBkV-Z•pW]g КސJRhhSpg $=%A*ZiD,Y" 7 ?q@h)DH*GT*Qۚۮ*k8vz Fsnjn~raGb]IJui ׄ񕩱 zV9!Ѷ.u5 V-ʏ 5!ʒ Tc LX\ hM~Hr (H,b,/.O@qCTx&Yx (nIHDMvUb5CXu4$=%J[@qCTQqX MiÌ6[ݮŢەrvUX u.zQr-. ZE5br&z,&ʝ`(miin,jͬrB\eJ0`Gy=pbJ]O6pcs˞5LikKK]Lᠢ#Y<"] ?h+` # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_mirror_pair =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:41:37 Last Changed: 10/24/12 17:32:19 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_mirror_pair.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr modify mirror_pair \ [ NAME= ] \ [ FIRST_DISK= ] \ [ SECOND_DISK= ] NOTE: the alias for "mirror_pair" is "mp". =head1 DESCRIPTION Attempts to create a new mirror pair. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. pair_name [REQUIRED] [string] The label of the mirror pair that is to be modified. 3. new_name [OPTIONAL] [string] A new label to apply to the specified mirror pair. 4. disk1 [REQUIRED] [string] The first disk in the pair. 5. disk2 [REQUIRED] [string] The second disk in the pair. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_mirror_pair { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_mirror_pair.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset mirror_pair=${2//\"/} typeset new_name=${3//\"/} typeset disk1=${4//\"/} typeset disk2=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset existing CL=$LINENO KLIB_HACMP_list_mirror_pairs existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $mirror_pair ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi #================================================================= : Create the storage agent if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then typeset nameOpt= ssOpt= vidOpt= pvidOpt= [[ -n $new_name ]] && nameOpt=" -N $new_name" [[ -n $disk1 ]] && d1Opt=" -d $disk1" [[ -n $disk2 ]] && d2Opt=" -D $disk2" print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_change_mdp_director -n $mirror_pair$nameOpt$d1Opt$d2Opt" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_change_mdp_director -n $mirror_pair$nameOpt$d1Opt$d2Opt rc=$? print "$0()[$LINENO]($SECONDS): clxd_change_mdp_director RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 201 "\nERROR: failed to create \"%1\$s\".\n\n" "$mirror_pair" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_mirror_pair_attributes "$mirror_pair" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add mirror_pair -h" "MIRROR PAIR:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_mirror_pair()" fied s lVoXםa՝a֝a&7bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_mirror_pool   = aeinorst"$_cdfhlmp#-ACEILMNORST[\]guvy(),./12:DGPbkw&*0;>BFHU{|}%'+347/6g%p7hh)aWI+9^X!964  C1( p C0spPB(@V(Mwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvэs ahS:B!8Pq~اXJ=VuxSOHYb`3-)OBse%=V~iWNQVՄэ'kA.Y < CTS%U\53*v ?freMgQnٓ'Wu^nagUgϑڲv7g'rG}:@_QcFeS9pWr7Mӫ g^xfeə{Fe <ο9gzYuY(GXJ-WQ焤PZba(b^BᚲUҮSFrQ.ua"rkF4eU; G4  C1( p C0spPB(@V(M9tA-oO>Luh}]NrLK!HS쾏zKah@HS쾏>AƐ }^q;D" oO>$4pM>WՔzT?i}CM$ܚIsֈDC oO>~)Y,.Ɛ }]HPZVI9E-x(886 Q*'(RUNQ@ (ɑ2"lXp`M>BJJobGhCà oؑ!!Aj%Y%7# mo:#,"bdJ xf@#/ebroty˝}wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwmǬŵe=ڏVzk_0ܤuXDxUi(5.sN,= @8PQ>aMo˻ox(꿄Y;V\ɜh SII|ٶgſ>.^ fpqtG&&Y!IPK np3k`8[]%(9D$\䉉Hq2x j$ *XGb"s*oN\e=5JhQHqra@[#ZBV{ϛeE4tS_GLJ$LLCʓ&8v4ƈD$`0DD<LH9.CM@4 @4LL'1)z]GϬ-!|]gV~؅)o3k:!4n&QLHQ08ġFWq?T|j4jFMVS‚^D D"0y1 /"X[ԓdΈDy1!HmϋptN?ew&nRBب/]YO{ BfpqD4P @(P 5+7[bRp7Gdμ"s[8FNhh7X7IEoӴKHȔHA@z=Z$ P" H8y1DD!x'9M&e%b2h"zKa Q烢uu` =W pya@|,,gſQ(sM䉉H#,2ePŊѢ}8ʻeYop@4Cb1Hd1<12.&_ǝ*p?%N:ҥzNr̤zKa-e}qI`h!(8 A (TH{Al)L9GD:99g g&qx9 %Ƌ ]8*$C8.pST1ARM(Pq2RkF>А:Ʉ 8`(%r_h*L1sLR2Qm2g% &C6o2!hG&LPqx  *$@ \DD(THp% &AJ/k]ݷGZkY/W]}z7Va':ɿ:rνV{eDe68+Qed6:*BJI)X Q*)~l/ϋ}ԅh"(-D$*BJJobG}8IHPZA>a‰M;D@AF)B#Rpp`vIL wx$(ɑ2"l^li5N$(-h"(,[3R/N bۺ2%"sՔo Rp22Q>V~YɎ:d8+ї`s&tT9`>-fpqtRC dA{ԅGW2gCD"*$@pp`vZ15sfUJQ(sM䉉H#,2e(9,Xa%ї`8G@FpUgτO9x(|e]`UzKa:04@4@}e8IHPY OIs=#P;DTb$D@aD4+7Y^oV"%+}DAa'U !dȉ(`8 %45^o̙e .;kDQ$PX'6lgſZ$ PqWh"(,$I"D! Pq׷6Ji kՃՃ[pQ);H@xa`>-va*a qPA/C jTofz=8D^"AF"DHCAH.ȃ؏7MG~);9XG}*\ɜltTdS6mYo̙RUNQMQX'6mYorZ!!Aj%Y$FSĔd X7X5W2g!Aj%Y%7#͛oV|[s&t4Tdď?C&Ty蹇F8$, ͛oV|[(-D$$yEHPZVIMHÑq%!A`Y=mV V V RQ{Ճ[s&qы6 e}ph$/hbxp4P a6\ɝAXdȍro6l/6lgſ鮒eDy"be.@ƈD$L|<0H,T(%7/4tܝ_:bWW:0z4C @F^ i:t:Zt uW΁v*>tNS}9Esᦢj >1x\D#<88ˆ(d  o֐Uv]h&ΛL]~*1>ɉZ!䉉HyRdƘHdP( ٜ#\i lqt08bFJ3Q5APSI7&\x0 (9D$\䉉Hq2x:: Uwr |X}MDP/󠻅W{ǒI(@\$D: UwYO `_1tp2 6,,&\ɝ: UwFxdȍro6l/6lgſ4膁qAw (M(4膂 va(GU sf@#T51+3+)גymϋ*ZkJn8 V fptD 6rʔ.#,="%,X ((1Fi3<12 x$(ɑ2"l^lIJ2ci<12 cDy"be&\L ҞĦVSaՄVGk󠻅W&k FCXgY5H"0Dp`<44n:j.^]XxgzRB5zi)Q y3wiGy<_Z3MB5zתίUM̳995YbY81W{FgiY0R\e]gYp*}ago џ*v l#_ãe6XJ8+7[hqɇV =vu^ꝛ+&U% "_Ӭ%Fz#JcFbKP:W%z p paՁY3Uua(UL (TPg^~)g/ g:;.8VSaՄNBz"B]^Z121dh#%cFeNՓRQxkF4fY;8Gsʼ#WGXD􅞠[F4eU; GQ焤o=v> Q烢uu` =򃉐kp8j@Ɋ$Ĕb2m(% "]]ؒT'9M&e%1It 73LxLK0fo4$&A!2B90fo48HJ!Aa!BCCMM*1HPX`x0by9sK ""TTz:BJ-Jn8HUsyreDXFI?y88a.J^ Vg^%?u)$M |:5Me:*:X=u7b"ܧg򚚏UWU\uzYǡ){.u7=W^R<3*7kp %*(`RҳNo SNlIG}V6!9{25(9Mk[x)r_Mx\.Jkp,7VSMPS̕0DAčEe%o:SMݱ Sٔ՜CMi2;MNr"sCMi2;MNr"p3yǂV7*"WMɬœe]ɦR57u4rk=%fJ"TF4agsD8ܚב&\Ք Sٔ,)'9N8Y9ܻIs?`+V~I$ܚ}i^27 ?[U Sٔkp I50fJ"TF,ʐM/N !F~-nag眹U_4W"WMɬWG<ο0P( kpPn(-D$(8+8DObS~(-NܢegBse%g&::CZ<<7RUS{e].g)qqWTn; NdqwSb"q#L?Qzuz")ׄzI>; MGROWx *ӂz馶-U5D;V]xJIִeFf~^B90\Uy&-{ ֝e*iNJB':UQRϏUFՂMBS=oaӔ`70)$Ŵ;J^U|^?V 3B/**pf¸_ޠkF]ݴfJI|tUAh5(0]:Th8љ"їwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwm=\+Jɛ-j/*[[.pF]ݴ.u lDoAםa՝a֝a&(bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_networkool   =e inorst"$C_acdlp/AEILMNOPRST[\]bfhkmuw#&()-.12:;GUgvy,0>BDH{|}!%*34579Н2e1Q`f=V0b 9)dUXrӄY, Xc*SVqBqB؜/?o)+)NʸT⒰NXr tbAr\|ؾ&Xn4S,]*= w #'PRd 85BD XHgK AΫrÍ=#X0d`@x1@pȔPqusCN@N CTTPm@N @X kBrV3s(Lr>kdVnðusy M|ZX^ ``qAa+-eG&(U1G.BL 52 &P@jeP`"cH-eLrP+!ҝj9^k2(Hq.*88mX f[ .4@rL@`xpppx(krDˎv{8'.pѹO6:nHq:UsA<޽U.pփ8Zzǔha 9⺻gՑ4D$8@ C$8v^ hڳW M40O&mgŕa8nHq8걯S Aef=LX tt堂+[OӃ Aef=[N 1 w-ZeU~;ҝyM je}V5pjpa,]3K)TݰƦPn580Vn.ܥN*nzh @U]%Mxjdܑ2tK*G>Sޯ+MhXT( X Qo+8v靸YdC&\p3Õ9;}uf[K B8N99& 9Vs7AkN zt LEwQ40 pI.1 oER#do-q@xV1zG@aV>8bᩑ(.><# @<@ 7@ $"y"oٹ\ f$r=I 2.BhaԐ<0#-7+ٺH e]3$F 2.l H 2.熱ZCD`Efs@0#-7++ZfcD`Efs@MSlZ;0$ e]5Mj3qtD`G4 DL $'`~Ѭ(+ Cro`_UZUeXArkj#v=uuk0Sd~pփ砽 v'𚪪B 2/ 9@h(TpWe< 7+,[5?ƾn N 1b +7AL N 1 w)q;| 520S Aef?B\dN<[J# '+I2DʨXq}$*eDUaʰ#Rz:) *đaB $U5LR.E HI%Vo55UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMH⺯liU&mgu wyB֛j㙃OO`%`0Y2eUDѠѡ.gmL$@y!ĉqS"QGICςDOO" MB‰8l03 $U5 .LP5UUUUUUUSpU.sA6UUUUUUUSs0c tsCv%ɓe"eT,8dPa2x(e㊕&TGWzc 3%<^2/G7+RESPŇPy"a0(eSP2 p.gmQm?!\6ZI"&UBË&@U-4LqRʈQC̥#(eV< L2/GE''aB Qm?!\6ZI"&UBË&@U- ʹMy+DLaB oٹ\Es b HCD:SQ40j*6ŷ#P1 xJʹMfcA-X``㙃@Es b$A 0`FL44%ϞCD,Ta'o}Phks0c ~ OaAXkRШD F 40"hЗ3A(6^L-$*a DLK @N*TQ7ʰVZiD2D2e^V[2@|@Wz-ܸ=p/2tR}Q40tRШD F 40" oVI*TreHvs[㙃k.͊'iL]O+@<4 Tf s;oonx L2_I2DʨDl<<e㊕&TGsŕaʰ3k8|#D2#QD #(z9p PvSfaB Qm?!\6ZI"&UBË&@U- _U!2ѹp<PNTs(డjHj$2G&]A o5fsA( [㙃H)mRgcr;J`dʫXAB\ HCŮ.8.e"oE$6ũ3 X,\h0 ,&@ MB‰8l03 $U5LR.E : Α $6ũ3 of i |-Fn. X `Uk4h34hK{!IHq"xz,Ux褁ص PbA(PqQ YT,(c0+RESPy$ɕ*92$PPd 4>ST7At[qoMUUUUUUUUUUUUUUUUUUUUUUUUUUUUU7G#p_sCs|7=1eTZwo׹ӵUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMq,/J+uYT$&İ.gmoMUUUUUUUUUUUUUUUUUUUUUUUUSq9@9ѵg8 ܵcyJNx%<A)%|`7<\mZ)><*qs0c t. s;ooG=bY20k91z(8 0`Ew b&f s;ooٺH*qX}Y‚GIPVEvsFv%ɓe"eT,8dPa2 =/T2=gn9@P)H<#D2A)6:2/GDFtJ b8x,(AZ*G,<.of a}=af6qhД10۞1y2~Bl DLL2,&[&*TQh<Znxf>Z^y̢JFQŮ2A, (e/2rCXXP$U5LR.E 㙃h#l9l(+ t9B\10۞1y2~Bl DLL2,&[xIuY`rv(Rug8 qz9A@aడjHjXBj$PP991J+4%5UUUUUUUUUUUUUUUUUUUUUUUUUM;kuY;|q־DuYj9kǔoMUUUUUUUUUUUUUUUUUUUUUUUUUS.熻U/@],>M7+7Vs HCD:SRWg-j970 xIa0 s;ooG @-b@`4@ k91,>FqV0#&UZM vRDH P52%+ʊqqh,>Fq:dz?H+9FcA-x734XU\`Wp"hfhЗ31Vs$zz''FYVmS89oaax *×b Da=5oORO*><0J"4k ftsJPAG2[\ 0&h-"Ó&HX0GH4P,.D ~esC2e&QH6f "eT.Db~a ؀Uɿ@Ř?sCOI40ptR좑lͿZf.|V`} "{*VGL2"P1? ưQyl@WZϪܐ16XQ4- s;oonx L2_I2DʨDl@< 2J*#UZAVwJqqt9qyG} "{2 e)G3(RCIꟴtR죇„q8s[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUMǜlr0?tV\lN-{𚪪oaazQ[ʦaDX% a}Q40Ѭ(+} "z}Q40@UqPa2ð _"eT\R٣B\ HCD5sCQY.6w-sCGf0f7\q8 sA>GBvpN`,vd9 M|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMq,/J+uYT"Eь#U*ܳ^n)'sŠz̼)@Ř>+4豔pG2nxY2`$jcxr̢JFQgo]eE~vL8̽?p_} "{ :!P8E DL $4pXP9bF/PtR GE"$M/8@x1@pȔPqusC E5UUUUUUUUUUUUUUUUUUUUUUUM ˝b\PNs﷜VkAwg5M& l$o}םa՝a֝a&Obm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_node   =eainorst "$CR_cdlp-/AEGILMNOST[\]fhmu#().12:;>PUbgvwy|%&,0DHk{}!'*345N&_#k[-Kk8T`s7A#,$~78iDx4K.\-Zxw$ӄY r@iED,LH`y\ X 0( :ې(8# udpL8ze=paW{ ^À/ Zu 8:0`p`D @'0va ⠽h=oo9rւx<׮د,\K8/t]ӵg7qj Ŝx>mA:r;@P},͢x 0Pyp>, , c8@"CC#!˘KT ,X5X~9 Pjc˘TUKN'dXsy?:d*XP5X~VN0o4gLO,"d=w,<bngn<#SlgN"Zκ[?8lܳX`c;ok3bSۧ+`!5/5-Y~8%c3 #exk,;ۙۏÔ;zd!#.v߬N,\9ζy/|mtCk_k[װ qJg2'JvPC  ΞZYF *<̧[95{_ħg n+Z^[^3ց|YعKֿ r64Ś,kot`(vڸnjA 0{in-m:k.\paq[}Ŭw9˂mt0qֿkׅ|'"L:>P=|ltm}dvC0 ըLrXX3?؀=!]MR$TD HL0(-*@dP_P8 ?mc{^nk;ś4Q5UUUUUUUUUUUUUUUUT\$jʖP7+5ۨ5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH#](i&mgu w MUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR93/x Xd|jl^l؇3?'I$TRL8zetU^R|qذa8DPVjMRi@|,/I(KT,&T MUUUUUUUU! a˶w쟚5UUUUUUUTfL@I^f988Q=!\l&P cI2eBKfQB9[){1 |tR(<*TyB Tr8h(;C+RJ&"QB TQ!3raLRAI*@l&H T=2JYYM?s2gI2!`@Q!eXyaxΒe0C*,ʣ6!Uy2zBi&L.@ƒdQRȗ(eh;>c|Xc[0~SfY[|r=pcփ8T[7AԤiFI.ཚD-4DVMR (YD?̙L`5`($TRLP85Bf9 &OHW-$ɔ"LB**P` <P?sЍ-v?)v7 Xf`륞h>yɧ/3]9hib ٤BDAAjID(HrEH $@4TJMUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR\Qϳuf=M+{7A|Y3\គ81 ?jq(+J+uZ&T*XFtULrXX3?mVY (f Y.xV~4PZӤ$aPh UBP¤TD(H7kI> 8ӘX?x8ze-CC3&tR (ɐ2լ<ٰٱgm?(s/&OHW-$ɔ"LB**P 4 (Y@Ś×Awr͛bͬ㎵iHiiO4tR|pPrZQ5J.\R**$&aA̙ƿI1xD6!D T$A%]%A}^"GyÄAApTi._ vއVMRES,0"Bf~Q(^L6ZI(EEK12TTr%`vQBJFׅ|'mJ`1z:)>/DAA!88Q=!\l&P cI2eBKX3Dx\E^<=4D\54QC2t2EH-PIV)"f1hp $ h\E A,,C^dΐAs b̤a 2d>Lk6l/6lCzϞ4vh\E)8E?9CƟECC3&q}d@kp#6!Žx e2TTI(EEJ"_@QBArsx37A7 9{\i4$4R4-qfJF 4OG*@AIBq ԒHePf$THL93l 2d>Lk6l/6oHY:L8j(ɐ*釛67A[1p3 Fvcg8hpaaxZ;oCqDp9y2zBi&L.@ƒdQRȗC@O k_$$,cg[fwl3k8pi)y1QDAA?(s/&OHW-$ɔ"LB**P5/5 i)ya" C+RJ&"QB TQ!3rd5Olb7+/ ʒ>yh0pE‚/ln@%^Gpgm?(s/&OHW-$ɔ"LB**PhhiP_a䄅3͐?l3k8pi)yg z8h(9Žx e2TTI(EEJ"_tAf~CM%#O4t@ !!!&Kgo^+x3 À,14DVMRES,0"Bf%hak}dC#n`0  k3rZw:H ,$Pk 5Pqɝ(-;UFLɖaͅ#9?(-;V!FLWL<ٰټdg4A\0f23i8 ?vއ88Q=!\l&P cI2eBKᡠ^QB~5/6@]ͬ㎵Hii枎Ol ?Žx e2TTI(EEJ"_tAf~CM%#O4t@ !!!&Kgo^+x3 À,14D%TT(*H?HAr!q!㙓8F6ybqɝ(ܦA X6!Žx e2TTI(EEJ"_ hy,~5/5ɛYk! IH!iHqiOG.`z,UP4c)F6h ?G 9㗓'+dQR i&L(\| ׌~ 4<8%`q?h ?$j*e I0!q!㙓8 F ]fybqɝ!HOA X6!Žx e2TTI(EEJ"_ hy,~5/5ɛYk! IH!iHqiOGT,<,URcE!HM4DGgoaҟKe\`Vå>3#m\cσt{C&3r≓&^Tz!1nWV*Ϟ@)$TR’.A2AbGO,b> 6V8I(EEL&XhĶ +ǚ}(1ie b7E#ađy<7+tVPzH)ƍH夎38i>34Z93t4RؖVIYB3f9q"z 5UUUUUUUUUUUUUUUUUUUUUUT~㘵f?81 _36i;zZ[C&q(+JES>7 vއGp~4GG ϞhD C3&qlΦv͈s;oCy2zBi&L0r4&Tr%Z&AE (xXrJoi" 4#uxf~ftŶWvz1Y9|%7ye;ԒHePf$THLÎ`6Q4L'%?)qV64_D=h8mh Ih1( A?)w{͚y%==|s:ۈ``q4k9f~yƹ_HH@~ptavz>9l( A{ 4OGI^̶gpPr fL_ohbqɝ+{EXj0Ph0e'Fff͈s;oCqDp9y2zBi&L.@ƒdQRȗCA&AE (a`fqZG4$4R4Di)D0 2@DāJF-VDAA?(s/&OHW-$ɔ"LB**P5/5 i)y8^qJDAAjID$U2(A3 *$&aC 93~Z5*l؇3?s2gJF-UZrwO\EoA X6!Žx e2TTI(EEJ"_ hy,~5/5ɛYk! IH!iHqiOG TxL8(AB$4RQUfVS[G !88Q=!\l&P cI2eBKN ,܃Hii枎~yƱ+G !%TT(*H?9A? a˶nx]7,5g7)3bկf. Ů.80;{)-}BŮ2t,3]5WmՍmVY C !fL_]5WmՍmVY ͈s;oCc ܮz0q1!" T rE H`p` E3rL  ,U aP@+I-1k:獖4_-X4.A $X3!񶯂LC0 A%(0 =!\l0~S, 4 (Y@6ů]3~iHii >0|## G(X.`z"*$ABEg8P0 Qq cg_9eFzj04yaR*LD$XYA!ƒQPf(\b0q1!" T rE ?$j*e I0+C3rӤSPA,UU0=C Pzd "Pɜk&P%7X4t e 'Y1f`]7,0klrc ٤q"]W{45)-ǙlΚEDE$ɔ" ,Gq b[ցzC p3l4R|qI.ལgE%x-P%h>xѺ)̤LRK H 0Hq0/oi4OikHU^"""dQS#81- @y!8xDˎY{{O^6)> 8U^CԐCY{{O_(""dQS#81- @~7#M‚ULrXX3?}/h?$jQB!qGZ2ٝs2g%x-ٱgm>z)̤LRK H 0Hq0/oi4Oik9RZ2ٝ48I(EEL&XhĶ +ǚ@f .9f=xh/hYIhs;oCIZCca?ً=AfR&H$\eK0ӧeik(#""dQS#81- @y! :yf[ƿI^`≪HJH夊Z>z)̤LRK H acO,b> 5lQ5I RGO-.+RQYDE$ɔ" ,G ǰ.щl@WZ5ˍC0(ըLrXX3?$jQB!qr5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUT~H׌k0~S9k+Ybͬ㎵y l؇3?ً=AfR&H$\eK$LUE2z6ZPfjfGI2eD{ux^H`]؀kג&MB'{0Hq0O \d03t,lSJ QM(35]qjH\­?8*-qV |Ҋ")&L0PHb>`]؀kr> Ҋ Z\M4/W%TQA𚪪C?$sk6n2toHKX^+r7ɛYk3y𚪪C0(j&P<`WҊVjM2abqɜkҝdf9㙓8>/f9\ 22EH,l)",T\,?H`]؀kr>C'El?YF"o jfw11fCƽD< l0"d s-]xbZƜs"l<t]hd5L8͛vއ1s碐0(,D TLPip p3 ]w{ƿ4Oiktҝd `  8qFI1xDNI(")&L0PHb>`]؀kג$Lj 5)> 83q;| *@$@pH"f'Jvl?ZϞ@)$TR’.A2A&\r5u)> ٤qf'JvH T$HƍDpD='xx{7:S<<='6@q&P($L ǰ.щl@WZ5&\r5uktҝd `  8qGC}^q;|}dCԐCY&DRLB**`2|'F%]h<ׯ}Ti._ @+RJ&,?G 9㗓'+dQR i&L(\|4iPκ\n >ܹ IH;g8P0=~" C+RJ&BE˒*ERED!q!l8d5O ٱgm?(s/&OHW-$ɔ"LB**Ph07D(et3ql}ѹs;yA!vqpaz8 .`S DAAjID(HrEHH?9A𚪪?G;{EsG.4Q0|PcH!PVVs;oCy2zBi&L.@ƒdQRȗ@榙 ސ8xDˎY{Ea)ɖ=(35XGI2eD{ux^I2ji> ސ8xDˎY{Ea)ɖ=(35XDRLB**`2pPjV*Ϟ[(ų NLZ")&L0PHb>`]؀kr> Ҋ Z\M4/W%TQA𚪪C?qͯ1,`9bqZi;oC?X^+|!UUUUUUUUUUUUUUUUUUUUUUUUUUUUUHD*,#:Q[MRi@|,,Cz939$9faҚsfP)ؒ8ձ&P($L8D'N |`̙ƿJ .ཫ6!̙ƿI.ཫ6!3r0I$$9faҚqͮc8Dr,9`-̙ƿIUff9\胇PH][fg8xX?t]W{Ud\Z[L"VqƀVc , !`Pau_Tpذa?$P~Q(^L6ZI(EEK12TTr%ôM<qHC$C |pP+(0l؄3&q]5WmՍmVY V5KAūZ]6!7+/jٵ|WlI,<+sƀ ZtbʒLyE$<;kI>|q7{U˂SzX,Z'A8ze-f.|tR|Wlڎ3jεxf.|A($/az'{4 Z}iH  * H=2 P`i5I.=+jqtTPɧ ڮ^r/jkb#zY\d>\W_yC$P‚VjM2ab;oCaU e2TTI(EEJ"_ '<P?Gm|\똽h 5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUHD*,#:Q[MRi@|,/Hd5KEUv=XܦQXkUl!0KMQXkUKMQXkU$\h р IH  * H=2 P`nׯ|q1f~p > Zd4%Z_6lBgm1nW=^]j ګmb @^U:LBeI&<"U`i뤟i^r{T^ ~A'{ Cb7E'{Uvͨ9 8񶯹|^\PLཇi뤟(i# G(X.`z"*$ABE,$]5WmՍmVY {ཪ'.iֽv.:׮ŚxN!k85uذa?ԐC‚VjM2ab;oCaU e2TTI(EEJ"_ '<P?Gm|\똽h ׯPZӤ$aPh UBP¤TD(H5l0p > jHaAZQ[Q5K *=!\l&P cI2eBKP9QBcYc񍯋sptܳXmܦVrD 4OR|pPr?f^L6ZI(EEK12TTr%( M[^!͠/F <)$L<+i)D3-4;7 X/qgo?.1)⎌a_[u׊]s6Ů h"8xDˎY±Ɲ4~Q(<0xV& |X+sHC%#H32F-~v0=螂81 4:%KHdQQ% *<pPr@UXꞐQYAhLRK"ng G =~4@dA($. PZ(q(+J kxTo0םa՝a֝a&0bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_node_collocationcy#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_node_collocation.sh 1.3 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)18 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_node_collocation.sh, hacmp.assist, 61haes_r714 6/10/12 15:48:21 function KLIB_HACMP_modify_node_collocation { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_node_collocation.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset name=$1 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values print "$0()[$LINENO]($SECONDS): $HA_UTILS/clrgdependency -t NODELOCATION -a -l $1" >>$CLMGR_TMPLOG # Always log commands $HA_UTILS/clrgdependency -t NODELOCATION -a -l $1 typeset -i rc=$? print "clrgdependency RC: $rc" >>$CLMGR_TMPLOG # Always log command result log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_node_collocation()"  l֠oCםa՝a֝a&r)bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_nova   =aeinot $ENOR_cdlprs"-ACLMST[\]fhmuvy#()./1:>DGIPUbgkw%&02;BHVY!,34;nKAӁia302f tݸZFi,OZzΎ,Qzh0`f8"1Q|sj.~sqkܺ=kH#b_8hӧu{miffMM~e"LbHyXFe@n{o(H#{N%y0mYiG5 ?(e0lO(&IJgo~j"Q@HU1Bi<|#24,|ڃ|GJGFt(~PqaLN2f 6n|̾8c~30oBkp43_6(ER S8 x <j"Q@(ʦ(PM4/f\DN%F5ÎϘc2|ڃ|GJGFt(~P9oOm9V޴e3_##re:pq0X.#s9|q0,ͨ=|(E*LU" & =F91LDDQ"<"޴x2{3t3?(e0lO8 xp,0 EERIbHyV".\UƟZR80f~PI$&g GyEwNMIi4n0YӄftqabɓSPG*A4DU?smɥkJGF ?(f ɓSPG32i]ӓGsk&L9#F :pqLΔ8"0yܸvA4X i4J xpf&c{mF.M̿&Lohmmi:|RhC#O\tt O˗2R{QqK, `\˃y|O]M6/o@BJ*MQRDĉ',x-TQ5EI1-72i~ƂClhlhahIiQQqp(KT DQDHTM!AR4TU!䑨mEƞbmmm??eͶ3&sN4mmm/m&?2qeͶ3&˗2(<055jLA6̚_5|VsBgA4TDQy|O\ttsmɥ̾'&7@!%&MI ("bD(rǍ-4z $e@(<055q0O~mZR80ƴ8J<β2Xhah8@ ?1 mmm\Ӎ>ohmmmβ<$S)O\tt'O˃y|O] n}r̾'$b( eJN#s{@C׀&\^\7e?v4ؾ9I (4Jh"HIEI',cKEM@Q&Ri"qA}c.iM7oZo_rA!Ől(H0 Z%s_Y7>Yk|&ee,7[d']ghơ8|n4@,p.p(KT DQDHTM!ARA2H*R8|??&mmmwZF=4O?&mmm3QU E)1+OGUZFF7Tpp T8`8@ ? TM" $ *&Co?DJ(Tb4uUn3?1 mmm>m{;i{Gmmmu"Q@(T:: >mUwrf_c*WAͣw88n\7(EQHʕih꫽{@C׀&\^\3/ɦ"HIEIS@BJ*H<A`#Z(j5Ob sNZoie?]zz# ,eEAlа-"ɹ]3/k,4pqa0mݳ&8k8 0KDn5 ncqGAcApÄ@ZD "@i ?6DDQ"<#Pih꫽?1\pm~\7ZgY.h].4IDx98:8F@Tr$u7"HIEJ" PV 1R&O 2r^dᥦ ÌwacjfU4Zg@U"i"e&&ٜsQTG,d}:J1z)O'A$"<Xq$$ LK ǰ2H_ZF:+E]Vη76ٜsQTG,d}:J1z)O'A$"<Xge (BOeFxaAeP"&)&\)hM!aam1*MHy$qΚIIwӯo,24tL =R#ȑЌ9U/Ac/XaBq$$ LK ǰ2H_ZF:+ aAZ z {ARb"LT84]Yrf_ImM DD$T1"xpp&~aa. }kJGF AC DFPI0H"Dn *& m«ɦ"HIEIS@BJ*H<88\ih#l/S֑F70)qDc,4Y A2`R5%.́1 ,eo8 f@e&Ř$ĖsdEiM ,ed aĚ_141ͽMqq=0npvZ4&i.a,6Z#q$@zG"7ijEEP<‚[P&y|O1&wRFK.4neFxaAeP"&)&\)hM!aa*ش:8wA%"7C6q$$ LK ǰ2H_ZF:+ eJt\.lsyUsiɜtqK0Dn8  ]bm̾'K7:5>2]AD#%K ,/<?2qЌ{nyrf_c inB $ e?Ě%:b #j8v5c/XaXZQ֜BgU̫.w$@zG#$ &"1QR$^±*8Ϊ3 V2]I0H"GI1I EERIAɁ"^„*$ZgXV28VbFa3*KB2] &H&":IOij^„"HIEJ"1h,e (C ̾'@ U$EER,0@??0 @bIaa`f_mmmmmmmm??yE̿I08˄Y7=5&̸g:֛?&mmmmmmm(+@=b&*(p,,Mmmmmmmm/1&kJ1zӁLM\qwMmmmmmmmimmmmmmm~s`ewM̿I0BMmmmmmmm/m3fwi6gufw63):R;A$"<@):7ٝIDx9#O*Wh$b2P+l΍!6gF㧠PL)R;ADJ(Tb˗@ٝCi6gFQU ET8QUD\ kn:7P"$GFT86ڋ?._i:7m6gFmEƞ4qv.m4\ ln):7΀d3:7k@Ӣwg[ ok_EGdžc/ؔԍ~f_Kpe9m s228 asMp1ym~zmmmmmmm5<#b(ezI;M83G-@z&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$persistent_ip" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 152 "Available Persistent Node IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_persistent_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ "$*" == *([[:space:]]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 '\nERROR: no valid modifications were specified for "%1$s".\n\n' "$persistent_ip" 1>&2 log_return_msg "$RC_MISSING_INPUT" "$0()" "$LINENO" return $? fi if [[ -n $new_network ]]; then CL=$LINENO KLIB_HACMP_is_known_network "$new_network" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$new_network" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 150 "Available Networks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi if [[ -n $netmask && -n $prefix ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 '\nERROR: conflicting options were provided, "%1$s" versus "%2$s".\n\n' NETMASK PREFIX 1>&2 rc=$RC_INCORRECT_INPUT fi #================================================================= : Modify the persistent IP if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then #======================================================== : Need to retrieve existing data for this persistent IP #======================================================== print "$0()[$LINENO]($SECONDS): cllsif -pcS" >>$CLMGR_TMPLOG # Always log commands typeset DATA=$(cllsif -pcS) print "$0()[$LINENO]($SECONDS): cllsif RC: $?" >>$CLMGR_TMPLOG # Always log command result print -- "$DATA" |\ while read LINE; do : Handle possible IPv6 address typeset IPv6= if [[ $LINE == *\[* ]]; then IPv6=${LINE##*\[} IPv6=${IPv6%%\]*} LINE=${LINE/\[$IPv6\]/[${IPv6//:/_}]} fi print -- "$LINE" | IFS=: read name type current_network nettype attr nodename ipaddr rem : Handle possible IPv6 address ipaddr=${ipaddr//_/:} ipaddr=${ipaddr/\[/} ipaddr=${ipaddr/\]/} [[ $type != "persistent" ]] && continue if [[ $persistent_ip == @($name|$ipaddr) ]]; then break fi done [[ -n $netmask ]] && typeset save_nm=$netmask [[ -n $prefix ]] && typeset save_px=$prefix eval $(clodmget -q ip_label=$persistent_ip HACMPadapter | tr ':' '\n') [[ -n $save_nm ]] && netmask=$save_nm [[ -n $save_px ]] && prefix=$save_px if [[ $new_name == *([[:space:]]) ]]; then new_name=$persistent_ip # The name was not changed elif [[ $new_name == +([0-9])\.+([0-9])\.+([0-9])\.+([0-9]) ]]; then print "$0()[$LINENO]($SECONDS): The specified new label appears to be in address format: \"$new_name\"" >>$CLMGR_TMPLOG print "$0()[$LINENO]($SECONDS): Attempting to convert \"$new_name\" to a label." >>$CLMGR_TMPLOG typeset NAME="" IS="" ADDR="" REST="" print "$0()[$LINENO]($SECONDS): LC_ALL=C host \"$new_name\"" >>$CLMGR_TMPLOG LC_ALL=C host "$new_name" 2>>$CLMGR_TMPLOG | read NAME IS ADDR REST ADDR=${ADDR%,} if [[ $ADDR == $new_name ]]; then print "$0()[$LINENO]($SECONDS): \"$new_name\" was converted to \"$NAME\"." >>$CLMGR_TMPLOG new_name=$NAME if [[ $new_name == *\.* ]]; then print "$0()[$LINENO]($SECONDS): The specified new label appears to be in FQDN format: \"$new_name\"" >>$CLMGR_TMPLOG new_name=${new_name%%\.*} print "$0()[$LINENO]($SECONDS): Stripping off the domain results in a new label of \"$new_name\"." >>$CLMGR_TMPLOG fi else cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 '\nERROR: the specified IP label, "%1$s", could not be resolved by the "host" command. Make sure that "%1$s" is valid, and that it is properly defined in /etc/hosts. If so, confirm that local name resolution is in effect by checking that "local" is the first "hosts" option in /etc/netsvc.conf.\n\n' "$new_name" 1>&2 rc=$RC_INCORRECT_INPUT fi elif [[ $new_name == *\.* ]]; then print "$0()[$LINENO]($SECONDS): The specified new label appears to be in FQDN format: \"$new_name\"" >>$CLMGR_TMPLOG new_name=${new_name%%\.*} print "$0()[$LINENO]($SECONDS): Stripping off the domain results in a new label of \"$new_name\"." >>$CLMGR_TMPLOG fi if [[ $new_network == *([[:space:]]) ]]; then new_network=$current_network fi print "$0()[$LINENO]($SECONDS): cl_harvestIP_scripts -u $persistent_ip | tail -1 | cut -d: -f4" >>$CLMGR_TMPLOG # Always log commands nettype=$(cl_harvestIP_scripts -u $persistent_ip) integer cmd_rc=$? (( cmd_rc != RC_SUCCESS )) && rc=$RC_ERROR nettype=$(print -- "$nettype" | tail -1 | cut -d: -f4) print "$0()[$LINENO]($SECONDS): cl_harvestIP_scripts RC: $cmd_rc (nettype == $nettype)" >>$CLMGR_TMPLOG # Always log command result typeset netarg=$prefix if [[ -n $netmask ]]; then netarg=$netmask fi if (( rc == RC_UNKNOWN )); then print "$0()[$LINENO]($SECONDS): clchnode -n $nodename -a ${persistent_ip}:${new_name}:${nettype}:${new_network}::persistent::${hwaddr}:${netarg}::${site}:" >>$CLMGR_TMPLOG # Always log commands clchnode -n $nodename \ -a ${persistent_ip}:${new_name}:${nettype}:${new_network}::persistent::${hwaddr}:${netarg}::${site}: rc=$? print "$0()[$LINENO]($SECONDS): clchnode RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then [[ -n $new_name ]] && persistent_ip=$new_name if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_persistent_ip_attributes "$persistent_ip" properties fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 'For more information about available options and syntax, try\n"$HAUTILS/clmgr %1$s". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n"$HAUTILS/clmgr -hv" (or "/usr/bin/man clmgr"),\nsearching for "%2$s" in the displayed ext.\n\n' \ "modify persistent_ip -h" "PERSISTENT IP/LABEL:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_persistent_ip()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_persistent_ip =head1 VERSION Version Number: 1.5 Last Extracted: 10/20/15 18:14:19 Last Changed: 10/16/15 14:31:26 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_persistent_ip.sh, hacmp.assist, 61haes_r720, 1543A_hacmp720 =head1 SYNOPSIS clmgr modify persistent_ip \ [ NAME= ] \ [ NETWORK= ] \ [ {NETMASK=<###.###.###.###> | PREFIX=1..128} ] NOTE: the alias for "persistent_ip" is "pe". =head1 DESCRIPTION Attempts to modify the specified persistent IP to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. persistent_ip [REQUIRED] [string] The IP address or label of the persistent IP that is to be modified. 3. new_name [OPTIONAL] [string] A new address to apply for this persistent IP. 4. new_network [OPTIONAL] [string] The label of a new network that this address should be bound to. 5. prefix [OPTIONAL] [string] A new prefix length for this persistent IP. 6. netmask [OPTIONAL] [string] A new netmask for this persistent IP. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2011,2015 All Rights Reserved =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== #  k~o3<םa՝a֝a&3<bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_physical_volumecy#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_physical_volume.sh 1.4.1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_physical_volume.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_modify_physical_volume # # Description: This is the main, FPATH function that is invoked by clmgr # to modify physical volume names in the cluster configuration. # The C-SPOC utility "cl_rendisk" is what is used. # # Inputs: See the "devDoc()" function, below. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_modify_physical_volume { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_physical_volume.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset disk=${2//\"/} shift; shift typeset new_name=${1//\"/} typeset -l scsipr_action=${2//\"/} typeset refnode=${3//\"/} typeset -l all_nodes=${4//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN i=0 typeset data= #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $disk != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_physical_volume "$disk" "$refnode" data if (( $? != RC_SUCCESS )); then rc=$RC_NOT_FOUND dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$disk" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 153 "Available Physical Volumes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_physical_volume available "" "" for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi #================= : Validate input #================= else dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi if [[ -n $all_nodes ]]; then case $all_nodes in @(t|y)*) all_nodes=true ;; @(f|n)*) all_nodes=false ;; ?) dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' ALL_NODES "$all_nodes" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 'Valid values: %1$s\n\n' "false, true" 1>&2 rc=$RC_INCORRECT_INPUT ;; esac fi if [[ "$new_name$scsipr_action" == *([[:space:]]) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 '\nERROR: no valid modifications were specified for "%1$s".\n\n' "$disk" 1>&2 rc=$RC_MISSING_INPUT fi #=================================================================== : Modify the physical volume if no input errors have been detected #=================================================================== if (( $rc == RC_UNKNOWN )); then typeset nodes= n= name= p= pvid= uuid= rest= print -- "$data" |\ while IFS=: read nodes n p uuid rest; do name=$n pvid=$p for node in ${nodes//,/ }; do if [[ " $disk_nodes " != *\ $node\ * ]]; then [[ -n $disk_nodes ]] && disk_nodes="$disk_nodes " disk_nodes="$disk_nodes$node" fi done done # # Find all the nodes that this disk is visible on within the cluster # print "$0()[$LINENO]($SECONDS): LC_ALL=C cllspvids" >>$CLMGR_TMPLOG data=$(LC_ALL=C cllspvids) print "$0()[$LINENO]($SECONDS): cllspvids RC: $?" >>$CLMGR_TMPLOG print -- "$data" | grep -w "$pvid" |\ while read line; do if [[ $line == *"on all cluster nodes"* ]]; then for node in $(clnodename); do if [[ " $disk_nodes " != *\ $node\ * ]]; then disk_nodes="${disk_nodes:+$disk_nodes }$node" fi done elif [[ $line == *" on node "* ]]; then line=${line#* on node } line=${line%% *} if [[ " $disk_nodes " != *\ $line\ * ]]; then disk_nodes="${disk_nodes:+$disk_nodes }$line" fi elif [[ $line == *" on nodes "* ]]; then line=${line#* on nodes } line=${line%% *} for node in ${line//,/ }; do if [[ " $disk_nodes " != *\ $node\ * ]]; then disk_nodes="${disk_nodes:+$disk_nodes }$node" fi done fi done if [[ -n $scsipr_action ]]; then if [[ $scsipr_action == "clear" ]]; then # #Check if given disk is resrved or not , if not then throw an error else go ahead and clear the reservation # typeset reservstate="" reservstate=$(LC_ALL=C devrsrv -c query -l $name|grep 'Device Reservation State'|awk 'NR==2'|cut -f2 -d:|sed -e 's/^[[:space:]]*//') if [[ -z $reservstate ]];then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 397 "\nERROR: Unable to read the reservation state of disk \"%1\$s\".\n\n" "$name" 1>&2 rc=RC_ERROR else if [[ $reservstate == "NO RESERVE" ]];then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 398 "\nERROR: Disk \"%1\$s\" is not reserved , this operation must be run to clear the reservation of disk if it is reserved.\n\n" "$name" 1>&2 rc=RC_ERROR else # : Clearing the registrations from the physical volume # print "$0()[$LINENO]($SECONDS): clpr_clear $name" >>$CLMGR_TMPLOG clpr_clear $name 2>>$CLMGR_TMPLOG rc=$? print "$0()[$LINENO]($SECONDS): clpr_clear RC: $rc" >>$CLMGR_TMPLOG if (( $rc == 14 ));then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 396 "\nERROR: Unable to open the disk \"%1\$s\" ,please check if disk is already being opened by some other process.\n\n" "$name" 1>&2 rc=RC_ERROR elif (( $rc == 12 ));then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 395 "\nERROR: Given disk \"%1\$s\" is a remote disk so can not perform this operation.\n\n" "$name" 1>&2 rc=RC_ERROR elif (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 109 "\nERROR: the operation appears to have failed.\n\n" 1>&2 rc=RC_ERROR fi fi fi else dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 '\nERROR: invalid value specified for "%1$s": "%2$s".\n' SCSIPR_ACTION "$scsipr_action" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 'Valid values: %1$s\n' "clear" 1>&2 rc=$RC_INCORRECT_INPUT fi fi if [[ -n $new_name ]]; then typeset yOpt= [[ $all_nodes == "true" ]] && yOpt=" -Y $pvid" print "$0()[$LINENO]($SECONDS): cl_rendisk -cspoc \"-n ${disk_nodes// /,}\" -N \"$new_name\"$yOpt $disk $pvid" >>$CLMGR_TMPLOG cl_rendisk -cspoc "-n ${disk_nodes// /,}" \ -N $new_name$yOpt \ $disk rc=$? print "$0()[$LINENO]($SECONDS): cl_rendisk RC: $rc" >>$CLMGR_TMPLOG if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR elif [[ -n $new_name ]]; then physical_volume=$new_name fi fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_physical_volume_attributes "$disk" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 'For more information about available options and syntax, try\n"$HAUTILS/clmgr %1$s". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n"$HAUTILS/clmgr -hv" (or "/usr/bin/man clmgr"),\nsearching for "%2$s" in the displayed text.\n\n' \ "modify physical_volume -h" "PHYSICAL VOLUME:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_physical_volume()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_physical_volume =head1 SYNOPSIS clmgr modify physical_volume \ NAME= \ [ NODE= ] clmgr modify physical_volume \ SCSIPR_ACTION= \ [ NODE= ] NOTE: a reference "NODE" may be required if the specified disk is provided via a device name, such as "hdisk#". If the disk is specified via its PVID, then no reference node is needed. NOTE: the alias for "physical_volume" is "pv". =head1 DESCRIPTION Attempts to modify the specified SystemMirror physical volume to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. disk [REQUIRED] [string] The label of the physical volume that is to be modified. 3. new_name [OPTIONAL] [string] A new label to attempt to apply to the specified physical volume. 4. SCSIPR_ACTION [OPTIONAL] [string] To clear the disk of scsi persistent reserve registrations. 5. refnode [OPTIONAL] [string] The reference node for this physical volume. 6. all_nodes [OPTIONAL] [boolean] A flag indicating whether or not to update all nodes in the cluster with the new disk name, as appropriate. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== t in  lo,םa՝a֝a&~bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_resourcegroupecy   = aeinrst"$CER_cdflopuAILMNOPST[\]bghmy#&()-./12:;DFGUvw!*,0>BHKVYk{}%'4x|+34yTƑPdP*-*n4MY8W% [jlɠpO'eu ƱYXJA"P8 DxFNp&1?"  m"`|kSA DC ݸ%90xR&VT(sVm8%8(b̄N4n@|TҠvb̺}xӌlVZ+ 2Նjl!ASpUC#S x>cPV+ j|BYnB\F[MpOd5MFMW3 Ґ[өF{#2 ndu˂Mvb̀33N!m5 !XN q17 ֳ } JAn2̝8IX8%84h%!឴T,0vb̲̀1'$ZnʛjaLo6iX,7 0wf=u?9<)G:}s4nr pN*A/M+gpօ``vJ1}SeL4laq8U ixO=M=4DVfN Wn@`QBnJ,#>үϚV' a7 3`ᩇ8%7wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwn]+X,8DIq,7Jb^2X^`[EB袑B``Spdғ[9CY&(8HDQ ,0"Gps;x7wwwwwwwwwwwwwwwwv,R |(/b &bwMݻZ!\6<մEAr $9P+ǍSB8Q)g<5bJL94i2c"4DJe $<\J &H\*I4RP50q"84YAI(82IGH8Te*QZH*H4$ I0r* $)P$Pq1d** &UAQ((U" @|!r%T="R!*4=% $d&4/Ʀ˸ETLM!E &PhSP4(838(*4U$DHPIG"L$@ȍ*8" )q&S`y $""SdEAAFDJLq$(Lȃ$Pc&89BdDDSL]I $4LqPr9B$H\"(DJ $<\J &H\]P)&UBcJIQ*Q$.W(b "PhS 4dLPq@f]&*&5H!tK(MD(H]4RŒ"M"j&BB颖UHPhpңT I1d jIhĈ@qB(.LPiTdɦMD(H]4R=:) 2U:$1g*52Qǒ*4xPAARP!jwֳS>fz%Tm{uRFV3a/T6gu Bcfw "Jum;an,1g=ȘȞąF1gD$4iy!Hą =]0e텻 Ş* "{ȊwaPP,x(L waF!1;an,1g&D"LLXPCQ(4G DdEAG[A4TEI%TDW-@!3CkYаCQ(4`-jS(X `#oF 1AKl r Ae…F 1ALsSphE"$XQj4rh"x !:7LE ^EgA$ gB£G DҦ'犍<5eB]5mPqI&HPqb]\1ŰhZ&[(XThࡨTG ˻ gB£G D`#ea/TogdРxx?+ajq8+B}MNjq8+Bz N'3ehSBL 1H;vL YIC]H*̖|ɕK@!H*̖|ɕ@8~wN BZ FГ+B N'3ehSBU,+B7wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwnҍoɐAZ/FW8ƼiɑlnŴ&k ,XJ=X 00'$GH,,<w#㈤D 8,j$ iU' 2ՁT0,A<,/d/|Xy X `"'L00OY|meB&80YbTiH>'8ʸkb9A2 !]2ڜe\5\-BPRO9 (+ z @eI<<4 0'$01zh aDyd(]GMBb/$Lb[2d0"3 Ze<. <. ^E {[Tk ӌa g trZٓCȼBPRO9J*I Y$hh PxD@"h&I4D*|l6ZV‚)Wέop@ I!Q@CFI  nw{ty=j4rh"}YFyZ̠|,/a$Тܖ&f2Z6 ,+ɨ@L@3ƌ>,<Ȳ($^E~ wN Be;R"K P5b4ehSx̱6aaX`10=f]Ŵ|Xy Y[e Q#3*ᭈ痪>,<,LOwwjqpswww]%_Z4ٞAy^0XBq\SoXni6gɝ0u.bֳ  4dLPq@a Xz0`30`OIg-,@i(Ae… "4Y%P`O5 x20FPMGMBDyd PX /$Lb\d0"0FWfysQP^\D.xqyDhJ&(83=Nj|jQ5APEt@Y5)\k؊nQP'VMDiU&.U w9~U8LfFWW;0|HLb*N wW>LXPDE%$'-@Tq(8L(+Dh &R@Tq(8L"4z)g*8LƂ{ Űh "4z)1bAY "4z)QFPe,G=BBh̠|,/a)%>'I֣G(k # &D",<w#㈤D 8,j$ iU) EX)>,<w `> Ke e_,[@ Ňb Xz0`30`OIN2؎yzx̱DD̠W lG<; E|l6ZAf 7 ;2 Bx4hŠb֡HW(9DŬֳwϤZ-QFPewMۿIJãsSoHLb*OBk93Wo"jP[9g-C(sVA wA&-h+5 @0H")!eL94SeXH(sVwWePraAZ5o@nw(9CXm4@Y5 $WAPAb1y$dn^0[&1a0`!Ci-C2w(sVY(<8Bh Q1cHP歠*"$I"L\GP;xfe;,/8QB(+}k8nb& J Hy@ *8Lx~RGPZ w9}4U}b̵Yf Bta8tj x`>1 sMMX>L{M1_X-VeY-}k8naɏң(`#o,%F nwN Bj-Yu &LxFHChTP+{ (ܖP+{M(-ʶwN BlwdPieV֡HW 8̔U[;vgA5A=f]8̔jQ4*!菴"X0xR&h>LG!1O=$=h ɶA!BX^`[EB袑B``SpۤAQ5APEt@Y5)s$$\@.~0&kgT ^E~ziHP歠*"$I"L\ =%1H;4q(&iEYnUap!ޚE J$DG$40zi5fx,j$ fQ3e\5iEYnU%iF5J*r4*@ ;xfe;+ax{ (ܖ9CXm4@Y5 $WAPAb0,CLEW,EVl'A"/#HPuR0,A菴"X0xR&T{MRaaXfxX_ ^0,@DO``.b>,<,Lp-`ńՀ}MNjqpseB&'xfe8ʸkb9x_ {M(-ʸ'@DQ4MaI7wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwv,TYVZntqéˣPV+ lDj-vgY2aNe(sVASpehq nD5NeSel;#VU2nClأ9;Kb*[`cQ MGnjmwMݻVZ6 ,+ɨ@L@|I4&%7M3 쯪̗@ 2ՅQ,^Em+-֙ǁ8͈BP ]6>p-XfmI9G"$L&~zieT  I5H!tHh8$M$J81r^._ {MfJ*r 4(.Q$M"E"`cnwMݻK*n47AieVzU!>+efpm9K]i"efQ3o 2ՆjlvT:<5YZiH-ND5NeSel;#VU2nClأ9;Kb*[`cQ MGnjmwMݻVZ6 ,+ɨ@L@|I4&%7M3 쯪̗@ 2ՅQ,^Em+-֙ǁ8͈BP ]6>p-XfmI9G"DG$=3%eT  I5H!tHh8$M$J81r^;׋,r,6rTa8tj x`>1 sMMX>LeC56[j wW>LXP4r (,!rf80YbTiH>'P+`-Yu I ɒ&`<<]SB0(-kwN BlqJ*r3 q 2GH,'I֣G(k # &D":3 uq 3n4wMۿuR )SB.A%$.L-Jum<ѤO‚JTP$EtHUIAd =g-,"(DJ $<\J &H\<LXP4r (,!rf,3 q 2-}k8nd )S@G?/0hnwWe}k8nd )S@G0`OIg-,*u>LXP֠`#ֳ @`ҕ: YZ&[(YJTP0@`wJ&>25:Umm2U;(sVm>9~5LѤzMP~3ڬʯ#N ^,CVWٷ^M͑sfabV D>'^Z)ClA 2`S"'585  wWe0izf 7 ;j4rh",<Рg8Q3Se瀢%СsȾf C.x ] ?UU7ňt;Jqy ?= ?j (M4*$ʻxxxfe|,/@`Ҋܫt  I5H!tH'$𛻻wTin zAn-u7 B|WzS8Ѩ+"r5w3aMڧo 2ՆjlvT:<5YZiH-ND5NeSel;#VU2nClأ9;Kb*[`cQ MGnjmwMݻVZ6 ,+ɨ@L@|I4&%7M3 쯪̗@ 2ՅQ,^Em+-֙ǁ8͈BP ]6>p-XfmC$dɟeT  I5H!tHh8$M$J81r^.wb*51b9/I ɒ&_f 7 ;e…$EtHUIAd 1gֳ .A%$.LŞ{׋,rbҰ9LfFW>tSp9KcW;x]Ŵg-,*8zE @G ,XJ=X 00'$jpEYnUFYjuzQҷE*uY⣇PPDwuY']VNH4[b4U=XtOeE+hZ&[(YNp":CmMRz-՚T-ʼXmhֳm1_XP.+d^,1LXP*jo{[^,BiX̘:ֳ Az)S@Ş{fz-DwW>LXP Jj91}_f 7 ;+a>LXP Jj9}MN}k8nd: YZ&[(YNLXP Jj,g-,RZ EYnU wEm0̠|,/Az(m` 7 ;VZ6 ,+ɨ@L@sqRBX-l.ʹU}aUaN2QSb4v n6/E*u|,/Az(-ʸ'@DQ4Ma}MN eMƚ?7JSpۤ'|73M]^0[b'#Wk=xiXo 2ՆjlvT:<5YZiH-ND5NeSel;#VU2nClأ9;Kb*[`cQ MGnjmwMݻVZ6 ,+ɨ@L@|I4&%7M3 쯪̗@ 2ՅQ,^Em+-֙ǁ8͈BP ]6>p-Xfm/E*uQV[O@DQ4Mh&I4D*ۿıYϙL 附%Ѩ+< tnpߪƟXb7J}N -Q!.v𛻻wWeH*̖|ɕL(+..PITM.U>25 B{LNGoba tCwwwwwwwwwwwwwwwwwwwwwwwv-}k8nb$Pc&89BdD`#o,%F ‚g-,DJLq$(Lȃp-?‚{ 21 ["L$01zh aDyd(]GMBb ^I&$ķehmN,5;Tqvd6w#,ES+"LYs^ Bx##X7q&XaOi"-Q!.snŴg-,DJLq$(Lȃ*8Dʘ Xz0`3 ˻.db,Bf3o3,aLDGxg ;'FPMGMBDyd PX bI4&%ehmN,5;TX-׍6dݺAlf57]0'Ty2xggzFFCyȫehdg<08!B.h8$M$J81r^.wMۿı뽆b*LP0;ijãs+CjqfqݦXsoķFs0B wW>LXPB(M1ēT2C"00YbTiH(+@!3CkYбB(M1ēT2C"00YbTiH(+.@ aL P b,̲aF!3qtnpnw؊woڬbSp9՞(Npq̝nSefըsnŰhZ&[(XPq@a`SpZ&[(XPq@a@ q2aBƒ .}k8naA-Yu ( 0.֡HWZ4ʋFY=hZֳ P`"'˿uR $DQ&R=菴"YTR4>Ah~zehPpDJeP(Pea(G$L>'P+A+<4p~..8R?M"yjqp $DQ&P .pzɃG b4 |m@wL8S0`OI_,[ 2Ѡ>}MN+hJ*-bl>'@x)%‹Q5APEt@Y5)$$7Fgw3AX-0hJl)L-@b*ÓB|dU7uY'X-՜\\pɚY/ h&I4D*ДTZ4=TZ4BPQhD G -@\\p`SpXѠ?ހL>'>8DIjh aDyd(]GMBb `0#B[۫'X;̆!:FQ(Vx֘@>x "/ =@y =bl%nw_,[BPQhL xh0`OI>8DIjh aDyd(]GMBbiLKu@}3;FWL4p6g2y3\56^Eb5mPqI&HPqb]]2Ѡ>zʋFgxʋFYJ*-耸C\1H;j (M4*$ʻx3(a:R[e~:Ѡ?aZsX- @eE@}3Ŵ%0h0`OIg-,2Ѡ>}k8naA,)LXP2Ѡ>}k8ndƀuwwwsnXehmN,5;TA38*~mwg:78oVewU;أ9B]^0X97wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwv-}k8nb$Pc&89BdD`#o,%F ‚g-,DJLq$(Lȃ{ lAqT mj+8P6`SpuREZ}k8nb$Pc&89BdDDSLEZMVqj( OVF .bh ГMVqj\5} 4Eg0'$01zh aDyd(]GMBb CLXPB(M1ēT2C"P)&TG ,XJ=X 00'$ֳ ((DLq2Tb>LXPB(M1ēT2C"P)&TEʐq2aBI $4LqPr9B8S^.bֳ "HQ% 8c&HxAA"BLp-`ńՀ}MN}k8nbIQ*Q$.TŠ}k8nb$Pc&89BdDQ$.TEʐq2aBI $4LqPr9B$H\;+a>LXPB(M1ēT2C"0nw3>LXPB(M1ēT2C"0?aYu $(I1A$LXP&55  @eI<3SphE"$XQj4rh"'ݻKERmZ7 eҳ;&=@ }k8n`1.֡HW -k9>p-XqF[.bgNe >'rZfpx=3(;+ax]'$h&(8*3^.wW}k>p& J Hx41Tq"%i!PY2BAJc@:Q((U"J@ $ʨ*8zE @ H$UGH8T( ȕPTpH.Q$E!EH!tHLhDM"E $ֳ AZֳ A.}k8ndZŠ}k8ndZxx?b+h>w8Y@j$ɦMD(H]4RJ&iQ4MdEHPhED&i$.)f a&%t9#9LXPf`$wYu f-Yu fE#95 Mڳ56[h"@g6fB@}k8ndZD̫7Y5K=N,Yֳ AOwwW9͙jl Xz0`30`OI7wwwwwwwwwwwwwwwwwwwwwwwwv,RFPnN r33M7 oYgu7 56Z_XoBUSpdndh97wwwwwwwwwwwwwwwwwwwwwwwwvٟmCٚmq\6΁lCSe'Ϡx?4xff1 3So̡Se.֡HW 4NlG>8DI`JƢ@UFsfj-Yu3Ѓ6lCSe'6Z  -PPq4O'⡞Q5HPhgQ5HPhmCٚmƠ`̪*&5H!tJ@*&5H!tKBTڇ#95 M?17aP( D4Q4E Vz&*&5H!tKBTڇ#95 M?w3Y" QD&i$.)Y $D (DM"E-=Sj56[hLMw5mPqI&HPqb]]25p-&I4D+ 7 nTϙY*qg2DM"E+@j&5H!tK*MD(H]4R iQ4MIMHPhhLhDM"E,Y" QD&i$.)Z&5H!tH-jS(X `#bɦI5$.Lnwt'!Ǎ"-h' i%J ,HH[q 65ÏFثڜe\47=AF%2n,C*Rϳrycas=f]Xt$' :a1j*Mgg-,01} < l(+UV2n,[?AS>fwI!`o0VeXɸ;a7 @ 0xys.w|RAS>f'0YA cV[sQ?T`u7f`ۤ:IJ|Ƴ0nMVV(Ajug3+BU`97wwwwwwwwwwwwwwwwwwwwwwwwwwwwvٟ'hNe 2-ş3T?/'ş3TTϙhI!gxfe;&YVz8Q3Seɞ2iٝ3of+kwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwvM^Mȃp>'|l%$Г+B`LNR[kAw#a/T~,%F nwN B-V,[2o$UUU-BPRO90YgʒyŰhIO‚,[? \$Сswbl)Wέ1ej~S@!Jum&iC062ԫV00=a]0'`ei-aF!2&iC062˽LOwbl{ z0UVAw,Bf3o3,`|,/6aL00OI_,[ SZ‚H*̖|ɕL rl458|ɕL(+ 2Y;&V3SpuRF46@x)%( jT(sVm)JBfhmk:;+a'AvL f 7 ;vL Z Z΅8I $PE_,[ :gZnw 2Y;&V- gBDAH׋׋X-2)PVugrq;&V {eH*̖|ɕL(+,[? 9sФfK>gdСswbl)Fb*0c UhR52U:{׋* ,R"HZDBZ*lMeBf-U,T 2P$U@UBTP,SH%GMB $-8^v dj;c=V6jma3E@YZje eFZYjZ;U@Y㈤D $""XT٩?PDyd*@B`eiɭVN| 6] oM E a}MNn3FPMGMBDyd PXiLK]b ug8\\@.xqyL$(EVMM2I E|l6Zʒyf 7 ;f @eI<]]\M^M E a}MNb Y5L x,a*4`$`f`Spڜe\a8DI @H"(P0KUL4\&hpT9sTϙ<0 APc xN5&Y8qZUL4z4~\6z Y5C0H%GMB $-P*@`ᩇg&h:r;j W=@Xad"F($ a-8SM- ~ ɨT1䅼'aZ8-m_,[ R& L8 93AМÐC0`OI7wwwwwwwwwwwwwwwwwwwwwwwwwwv-d1 ׌ c^eryS9Sz5>O9 ;&SBLhH~H\Ivg9>2 &DSLƕ$(I1A$'FPMGMBDyd PX ^I&$ĵ Vs瀢P/ = ?j II7;&%_euΦM7,}9m•~pqn_ Кޚ*EX- @eI<30O9 BPRO9|,/Dyd(D rŰh"37'ܕYSon X8jx1AzZřSƘJe5>83 ^k͓faɣQ쩸ӌfgX.4q rpOY2B%_,1f qM3 쯌6pO$)ՖXvQ#F+eMvgiܕY L!@X-K3YI. 6e\ 'eaGH \2`W W UaQ"4@L"n0A K\F`1 qÉƙ_*ϩӌfgX.4mpOƼi fNp47eWϩ^,@7,;*nd38řqSp("HAkeƛt ٟSqsi@;*n4׃ጾ30wƘJY?##]M8m<8vfq2lbVV8 FCc-h5 - *wfYiK3Y2l-n VN>W7׃Ჾ L;(Sp$PqNVfYWm q+&TiXo 6vWn4q8&bMM?d38řqSqPD2faxˡ*f573CfgX >2n*MAgN7 pX EX)D  EX)D@?w層ɏң)oijD JՉÃ˻-I ɒ'`, ,`H888ة$HQ@hĈBnJb˻-E.T$[Vm ]ReGH8TXzb P+"ň)CÃ˻-( 7hieE@xH$c]lTI&NpW{G1w[ƦZ|ԓ@]m LeT="R!a^"^" p@ $ʨ*8zE A@ha^"^" pc.PP(TcEPҠ<=zSeȊPE@9$|FY<]l!r%T="R!a^/A0 /A8|DLɦI5$.N4UNeOبCQ(4aQǂ P & wHIDX@(ɐc..Q$E!EH!tHepŒ5`"1;"HB]MgdЦX2j|XY>#ϫZ'JKlT,097wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwn ʛ,0dhÐs,2?}kVY%ٚehJK>kS7 u78'^,C8-lb/qfxNeMƙTqUM5}z1 %Sp׋ϩpZ5fxXc5׌P>-ƸXc3&sneW_8xhJyeh r !1Zİ:RXI7wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwn "pKҬ`?Cq^1Z4-WpMۀ9. 7V kow םa՝a֝a&w bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_rgdependency#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_rgdependency.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)95 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_rgdependency.sh, hacmp.assist, 61haes_r714 6/10/12 15:48:24 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_rgdependency =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:40:53 Last Changed: 6/10/12 15:48:24 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_rgdependency.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_modify_rgdependency =head1 DESCRIPTION =head1 ARGUMENTS =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_rgdependency { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_rgdependency.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset parent=${1//\"/} typeset -n children=$2 [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================= : Validate input #================= if [[ -z $parent ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" PARENT 1>&2 rc=$RC_MISSING_INPUT elif [[ -z $children ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" CHILD 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): $HAUTILS/clrgdependency -t'PARENT_CHILD' -a -p\"$parent\" -c\"$children\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clrgdependency -t'PARENT_CHILD' -a -p"$parent" -c"$children" rc=$? print "clrgdependency RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_rgdependency()" w kHyoxNםa՝a֝a&xNbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_service_ipy#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_service_ip.sh 1.4.1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_service_ip.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_modify_service_ip # # Description: This is the main, FPATH function that is invoked by clmgr # to modify service IPs. It primarily uses the "clchnode" # utility to make all specified changes. # # Inputs: See the "devDoc()" function, below. # # Outputs: The properties hash is populated. The only other outputs are # any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_modify_service_ip { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_service_ip.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -n properties=$1 typeset service_ip=${2//\"/} shift; shift typeset new_name=${1//\"/} typeset new_network=${2//\"/} typeset netmask=${3//\"/} typeset prefix=${4//\"/} typeset hwaddr=${5//\"/} typeset site=${6//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset nodename= current_network= nim_name= #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $service_ip != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_service_ip "$service_ip" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $service_ip ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$service_ip" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 156 "Available Service IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_service_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi # # make sure new label is resolvable before we go on # if [[ -n $new_name ]]; then typeset NAME="" IS="" ADDR="" REM="" LC_ALL=C host $new_name 2>/dev/null | read NAME IS ADDR REM if (( $? != 0 )) then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 767 '\nERROR: Address or name \"$new_name\" cannot be resolved. Check the input and name resolution then try again.\n' $new_name 1>&2 rc=$RC_NOT_FOUND fi fi #====================================================== : Make sure the customer provided something to change #====================================================== if [[ "$*" == *([[:space:]]) && \ " ${!_ENV_ARGS[*]} " != *\ SITE_IP\ * ]] then typeset ERRMSG=$(dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 '\nERROR: no valid modifications were specified for "%1$s".\n\n' "$service_ip") print -u2 "$ERRMSG" # This strips off one of the newlines unset ERRMSG rc=$RC_MISSING_INPUT class="service_ip" display_operation_syntax 0 2>&1 | sed "s//$service_ip/g" 1>&2 fi if [[ -n $new_network ]]; then CL=$LINENO KLIB_HACMP_is_known_network "$new_network" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then rc=$RC_INCORRECT_INPUT dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$new_network" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 150 "Available Networks:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_networks available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi if [[ $site != *([[:space:]]) ]]; then if [[ $CLUSTER_TYPE != @(SC|LC) ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 267 '\nERROR: the "%1$s" option is not appropriate for a cluster type of "%2$s".\n\n' SITE "$CLUSTER_TYPE" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $site != "ignore" ]]; then CL=$LINENO KLIB_HACMP_is_known_site "$site" >/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$site" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 157 "Available Sites:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_sites available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi fi fi if [[ -n $netmask && -n $prefix ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 36 '\nERROR: conflicting options were provided,\n "%1$s" versus "%2$s".\n\n' NETMASK PREFIX 1>&2 rc=$RC_INCORRECT_INPUT fi if (( $rc == RC_UNKNOWN )) && [[ -n $netmask || -n $prefix ]]; then typeset ifName="" ifType="" network="" rest="" DATA="" print "$0()[$LINENO]($SECONDS): cllsif -cS" >>$CLMGR_TMPLOG # Always log commands DATA=$(cllsif -cS) integer cmd_rc=$? print "$0()[$LINENO]($SECONDS): cllsif RC: $cmd_rc" >>$CLMGR_TMPLOG print -- "$DATA" |\ while IFS=: read ifName ifType network rest; do [[ $ifName == $service_ip ]] && break done print "$0()[$LINENO]($SECONDS): clodmget -n -q name=$network -f net_family HACMPnetwork" >>$CLMGR_TMPLOG typeset NET_FAMILY=$(clodmget -n -q name=$network -f net_family HACMPnetwork) print "$0()[$LINENO]($SECONDS): clodmget RC: $? (NET_FAMILY=$NET_FAMILY)" >>$CLMGR_TMPLOG print "$0()[$LINENO]($SECONDS): cllsif -J \\\\\| -Sn $service_ip 2>/dev/null | cut -d\\\\\| -f 15" >>$CLMGR_TMPLOG typeset AF=$(cllsif -J \| -Sn $service_ip 2>/dev/null | cut -d\| -f 15) print "$0()[$LINENO]($SECONDS): clodmget RC: $? (AF=$AF)" >>$CLMGR_TMPLOG if [[ -z $AF || $AF != AF_INET* ]]; then # # address/label is not yet defined in the cluster - make sure # it is at least resolvable before we go on # typeset NAME="" IS="" ADDR="" REM="" LC_ALL=C host $service_ip | read NAME IS ADDR REM if (( $? != 0 )) then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 767 '\nERROR: Address or name \"$service_ip\" cannot be resolved. Check the input and name resolution then try again.\n' $service_ip 1>&2 rc=$RC_NOT_FOUND else # # determine family based on general format # AF="AF_INET6" if [[ $NAME == +([0-9])\.+([0-9])\.+([0-9])\.+([0-9]) || $ADDR == +([0-9])\.+([0-9])\.+([0-9])\.+([0-9])?(,) ]] then AF="AF_INET" fi fi fi if [[ -n $netmask || -n $prefix ]]; then if [[ $AF == "AF_INET" && $NET_FAMILY == 2 ]]; then : The address, $service_ip, is IPv4 if [[ $prefix != *([[:space:]]) ]]; then netmask=$prefix prefix="" fi elif [[ $AF == "AF_INET6" && $NET_FAMILY == 1 ]]; then : The address, $service_ip, is IPv6 if [[ $netmask != *([[:space:]]) ]]; then prefix=$netmask netmask="" fi elif [[ $AF == "AF_INET" && $NET_FAMILY == 1 || \ $AF == "AF_INET6" && $NET_FAMILY == 2 ]] then #==================================================== : The network and address are of the same type. : Netmask/Prefix is not needed, and cannot be used. #==================================================== typeset TYPE="IPv4" [[ $NET_FAMILY == 2 ]] && TYPE="IPv6" cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 271 'The specified address, "%1$s", is of the same type (%2$s) as the specified network, "%3$s". So the netmask/prefix information specified for "%1$s" is not needed, and will instead be taken from "%3$s".\n' "$service_ip" "$TYPE" "$network" netmask="" prefix="" fi elif [[ -z $netmask && -z $prefix ]] && \ [[ $AF == "AF_INET" && $NET_FAMILY == 2 || \ $AF == "AF_INET6" && $NET_FAMILY == 1 ]] then typeset ADDR_TYPE="IPv4" [[ $AF == "AF_INET6" ]] && ADDR_TYPE="IPv6" typeset NET_TYPE="IPv4" [[ $NET_FAMILY == 2 ]] && NET_TYPE="IPv6" if [[ $ADDR_TYPE == "IPv6" ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 272 '\nERROR: the specified address, "%1$s", is of a different type (%2$s) than the specified network, "%3$s" (%4$s). A prefix length must be provided.\n\n' "$service_ip" "$ADDR_TYPE" "$network" "$NET_TYPE" 1>&2 else cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 273 '\nERROR: the specified address, "%1$s", is of a different type (%2$s) than the specified network, "%3$s" (%4$s). A netmask must be provided.\n\n' "$service_ip" "$ADDR_TYPE" "$network" "$NET_TYPE" 1>&2 fi rc=$RC_MISSING_INPUT fi fi if [[ $prefix != *([[:space:]]) ]] && \ ( [[ $prefix != +([[:digit:]]) ]] || (( prefix < 1 || prefix > 128 )) ) then dspmsg -s $CLMGR_SET $CLMGR_MSGS 113 '\nERROR: an invalid IPv6 prefix length was specified: %1$s\n\n' "$prefix" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 'Valid values: %1$s\n\n' "1 .. 128" 1>&2 rc=$RC_INCORRECT_INPUT fi #============================================================== : Modify the service IP if no input errors have been detected #============================================================== if (( $rc == RC_UNKNOWN )); then typeset netarg="" if [[ -n $netmask ]]; then netarg="$netmask" elif [[ -n $prefix ]]; then netarg="$prefix" fi #===================================================== : Need to retrieve existing data for this service IP #===================================================== print "$0()[$LINENO]($SECONDS): odmget -q \"ip_label=$service_ip\" HACMPadapter" >>$CLMGR_TMPLOG # Always log commands odmget -q "ip_label=$service_ip" HACMPadapter |\ while IFS='=' read name value; do name=$(echo $name) value=${value//\"/} [[ $name == "nodename" ]] && nodename=$(echo $value) [[ $name == "network" ]] && current_network=$(echo $value) done eval $(clodmget -q ip_label=$service_ip HACMPadapter | tr ':' '\n') if [[ $new_name == *([[:space:]]) ]]; then new_name=$service_ip # The name was not changed fi if [[ $new_network == *([[:space:]]) ]]; then new_network=$current_network fi print "$0()[$LINENO]($SECONDS): clodmget -q name=$network -f nimname HACMPnetwork" >>$CLMGR_TMPLOG # Always log commands nim_name=$(clodmget -q name=$network -f nimname HACMPnetwork) print "$0()[$LINENO]($SECONDS): clodmget RC: $?; nim_name == \"$nim_name\"" >>$CLMGR_TMPLOG # Always log command result print "$0()[$LINENO]($SECONDS): clchnode -T service ${nodename:+-n $nodename} -a ${service_ip}:${new_name}:${nim_name//\\\"/}:${new_network}::service::${hwaddr}:${netarg}::${site}:" >>$CLMGR_TMPLOG # Always log commands clchnode -T service ${nodename:+-n $nodename} \ -a ${service_ip}:${new_name}:${nim_name//\"/}:${new_network}::service::${hwaddr}:${netarg}::${site}: rc=$? print "$0()[$LINENO]($SECONDS): clchnode RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then [[ -n $new_name ]] && name=$new_name if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_service_ip_attributes "$name" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 'For more information about available options and syntax, try\n"$HAUTILS/clmgr %1$s". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n"$HAUTILS/clmgr -hv" (or "/usr/bin/man clmgr"),\nsearching for "%2$s" in the displayed text.\n\n' \ "modify service_ip -h" "SERVICE IP/LABEL:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_service_ip()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_service_ip =head1 SYNOPSIS clmgr modify service_ip \ [ NAME= ] \ [ NETWORK= ] \ [ PREFIX= ] \ [ HWADDR= ] \ [ SITE= ] NOTE: the alias for "service_ip" is "si". =head1 DESCRIPTION Attempts to modify the specified service IP to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. service_ip [REQUIRED] [string] The IP address or label of the service IP that is to be modified. 3. new_name [OPTIONAL] [string] The new IP address or lable that is to take the place of the specified service IP. 4. new_network [OPTIONAL] [string] The label of a new network bind this address within. 5. netmask [OPTIONAL] [string] A netmask to use with the service IP. 6. prefix [OPTIONAL] [string] A prefix length to use with the service IP. 7. hwaddr [OPTIONAL] [string] The hardware address to apply. 8. site [OPTIONAL] [string] The label of the site to use this service IP within. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #==============================================================================  loZםa՝a֝a&6bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_site   =einorst $_acdhlp"#CEILMNORSfmuy(),-./12:AGPT[\]bgvw&'0;>BDHKUk!%3457Sp+{"wqVZ b9/:cȝT6geSp+{"vU&Im%Ok|yW{D\!@@@ FAUȩo E "dE "Tȡ@@H4q%8' 2T9A80V`e8)r^u=:?DOR  % D!m% DC8:K1Lq%LA 4ayQ2!2f"?DOzuQ&Xs DaP bkt ,_qVZ4wT'KIf)8XPLW4J')P(L"{ EDŢ҄QIE0Ed$D#&p ޝ0Ee0`dI iBmmmm)1{ƚsͥ9mmmmD@2ċ%  **22Q4r3 zddFQQ(5lFpH' n==:H4QG# *OR  % D!m% DC8, C $`s[;scGYiN2cԘq67!PE h@:K1M5RzI_ McN2m8lj_&j&75c h+du22?F @ #h$DP0Ee0`dI iBmmmmmmm?K*Nx|VtB.7/{*|]Mmmmmmm./@PI9 `Ȓ,0(d\ 8̓$1Qc#'YiAspaDQC$-DQC2(gAb(a.`KkĖb(LM(͆;/ l4S4q <8a cЃ##h$DP0E̙&XQeBBammmmmmmOɚ&x/)%@r^Gxx't8Mn)0?K,\H%L%&<]"L7rSsϔ;cL7![mmmmmmmm XWt=  @^bFQ.d,ddYi鬊\h(TP&I h(TP%L`' 4 oEd6X5<i[\IyM* 4a@ ? Db%$DYeBBa./Aȹ`N#"Č",EI`5ǔ"?qVZk"76J0BJ0S"p$PI0\]d\L3iՎSyM*k23ZhNTX#/hAX4"Ө"2K0H$ 4!mmmmmm?K"8lj_4a3Ed8mmmmmܿ,D 8LD$*B{"aB()Hᣡg/@9ĀB 2!& 3NXb@!pHUK09ĀB 2!& 2Da(+@9ĀB 2!& 3t %ȗQ Q0HTb$g qVZk"76J0BJ0S"qX,C 4 ik19SMcM&9>xq8$LwAs0¢q|q ?I0"`39vcp!ƒL&q}ȹ 4azD KȄBB$*\1b 2? @,D 8LD$*B̂#h$DP0Ee0`dI iFz&qQk[ጌ8-?mmmmmiX**γ!ƵM t ScvC%qd#֩ᤳ%oY Bmmmmmm^a1H(fcc@.Be.2DK YhA4΄jJ0QR<&Ga76TJ 3P MeFp:dg89NPbE dBĴZdg 3FA@vJ 2…ĠIȐXxf*(ab y MaԎYzn6m&`qh&:ӂ0s*T{47ӀPAX!ώp,q}R%ĊTpF|eLdgy{M8T9{M8TBmmmmmmiY3X但Qc2i&-*w8VtIr mmmmmmm/{j ⬴ "PL"PJ3PI0\Ǝ$X^SaJ?!^<BÆ HǠ?DOR  % D!m% DC8:K1Lq%LA 4azx@`E 0qq(.r$22#h$DP0Ee0`dI iammmmmm?K"`gk:2I6mmmmmm?\_ ndu23OƏ du22R VO!'+/q֚wg2K 2L N,ssg!!*ll#)(y2 ᥾`qh5V@3dvCaETY<ƚsͥ9VC2K2L58NW:!*Vsi7]!Ny43U[*C;YɃe#aǐ)(!"`2a.BsN~DLOM͜kJ,sOdUcx91=5B2ӟYq;|yW{D.\TXreqxEhqVx23 jSqqK@uYogM͜kJ,sO]ZM솛N2gYzM(5\;XuV&Fx*)Og6MÒir'9ݐ҄6SI5x22I-⫎ Y{Dpv jU 㬊YIs8lj_֒q`r )r_*dY?4;iqdPH8lj_֒q`r*x'uWلvIɃl~oEd.*,La28"4ld͹TeQISJwAs28:ȪVt9ÏXGQ gI8rw" j,Xѽ͘i>OI0"`sn|U&D KȄBB$*\1b 2I/Wt= 'Βi5<M \2 ѱ)B)(!.*L y$1@M(Ilr lTUd\ñX,0D &ن f&Pg"x#5MƱH=Ʌ<[mmmmmmmmmmŕӖYìhfYɄ6aܴӞF4oRj=HcxC4ŧd9Q1%ɴ6*cK90:K)?J>$CLMGR_TMPLOG # Always log commands $HA_UTILS/clrgdependency -t SITELOCATION -a -l $1 typeset -i rc=$? print "clrgdependency RC: $rc" >>$CLMGR_TMPLOG # Always log command result log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_site_collocation()"  k^o##םa՝a֝a&##bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_snapshotocat#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_snapshot.sh 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) c93cc36 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_snapshot.sh, 726, 2147A_aha726, Feb 25 2021 03:14 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_snapshot =head1 SYNOPSIS clmgr modify snapshot \ [ NAME="" ] \ [ DESCRIPTION="" ] NOTE: the alias for "snapshot" is "sn". =head1 DESCRIPTION Attempts to modify the specified PowerHA snapshot to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. snapshot [REQUIRED] [string] The name of the snapshot that is to be modified. 3. new_name [OPTIONAL] [string] A new name to use for the snapshot. Note that the .odm suffix of the snapshot file itself is preserved. 4. new_desc [OPTIONAL] [string] A new description to apply to the specified snapshot. Note that this option modifies the "description" section within the snapshot file itself but does not rename the snapshot. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. #============================================================================ # # Name: KLIB_HACMP_modify_snapshot # # Description: This is the main, FPATH function that is invoked by clmgr # to modify a snapshot of the cluster configuration. Since # a snapshot is primarily a backup of the SystemMirror ODMs, # the only things that can be modified are the names of the # snapshot files, and the description associated with them. # # Inputs: refer to the "devDoc()" function, above. # # Outputs: No explicit outputs, other than the normal clsnapshot # output, along with any error messages that might be needed. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_modify_snapshot { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) c93cc36 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_snapshot.sh, 726, 2147A_aha726, Feb 25 2021 03:14 PM : INPUTS: $* typeset -n properties=$1 typeset snapshot=${2//\"/} shift; shift typeset new_name=${1//\"/} typeset new_desc=${2#\"} new_desc=${new_desc%\"} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset dopt= Nopt= typeset -i i=0 #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $snapshot != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_snapshot "$snapshot" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $snapshot ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 158 "Available Snapshots:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$snapshot" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 158 "Available Snapshots:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" elif [[ -z $new_name ]] && [[ " ${!_ENV_ARGS[*]} " == *\ NAME\ * ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1422 "\nERROR: Cannot modify name of a snapshot as an empty string. Please provide a valid input.\n" rc=$RC_INCORRECT_INPUT elif [[ "$*" == *([[:space:]]) && " ${!_ENV_ARGS[*]} " != *\ DESCRIPTION\ * ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$snapshot" 1>&2 rc=$RC_MISSING_INPUT fi #============================================================ : Modify the snapshot if no input errors have been detected #============================================================ if (( $rc == RC_UNKNOWN )); then : Provide escaping for some characters that are not safe in an eval new_desc=${new_desc//\$\(/\\\$\(} new_desc=${new_desc//\`/\\\`} new_desc=${new_desc//\"/\\\"} : Provide character entity replacement, a la HTML new_desc=${new_desc//\&apos\;/\'} new_desc=${new_desc//\"\;/\\\"} new_desc=${new_desc//\<\;/\<} new_desc=${new_desc//\>\;/\>} new_desc=${new_desc//\&\;/\&} new_desc=${new_desc//\&excl\;/\!} [[ -n $new_desc ]] && dopt="-d \"$new_desc\"" [[ -z $new_desc && " ${!_ENV_ARGS[*]} " == *\ DESCRIPTION\ * ]] && dopt="-d \" \"" # This is to handle DESCRIPTION="" case [[ -n $new_name ]] && Nopt="-N $new_name" print "$0()[$LINENO]($SECONDS): eval clsnapshot -R -n $snapshot $Nopt $dopt" >>$CLMGR_TMPLOG # Always log commands eval "clsnapshot -R -n $snapshot $Nopt $dopt" rc=$? print "clsnapshot RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then [[ -n $new_name ]] && name=$new_name if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_snapshot_attributes "$name" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify snapshot -h" "SNAPSHOT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_snapshot()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ ]]) ] k8Ooםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_storage_agentoncy#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_storage_agent.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)46 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_storage_agent.sh, hacmp.assist, 61haes_r714 12/3/12 09:10:01 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_storage_agent =head1 VERSION Version Number: 1.6 Last Extracted: 1/31/14 04:41:03 Last Changed: 12/3/12 09:10:01 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_storage_agent.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr modify storage_agent \ [ NAME= ] \ [ ADDRESSES=[,...] ] \ [ USER= ] \ [ PASSWORD= ] \ [ ATTRIBUTES=@[,@,...] ] NOTE: the alias for "storage_agent" is "sta". =head1 DESCRIPTION Attempts to modify a storage agent. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. storage_agent [REQUIRED] [string] The label of the object to be modified. 3. new_name [REQUIRED] [set] A new label to apply to this object 4. addresses [OPTIONAL] [string] One or more (maximum of 4) IP addresses to be associated with this storage agent. 5. user [OPTIONAL] [string] The user ID to be used for communication with this storage agent. 6. password [OPTIONAL] [string] The password that is to be used with the provided user ID. 7. attributes [OPTIONAL] [string] One or more storage-specific configuration attributes. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_storage_agent { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_storage_agent.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset -n properties=$1 typeset storage_agent=${2//\"/} typeset new_name=${3//\"/} typeset addresses=${4//\"/} typeset user=${5//\"/} typeset password=${6//\"/} typeset attributes=${7//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi CL=$LINENO isEnterprise if (( $? != 1 )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 184 "\nERROR: this operation requires IBM PowerHA SystemMirror for AIX Enterprise Edition.\n\n" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -A saAttrs CL=$LINENO KLIB_HACMP_get_storage_agent_attributes "$storage_agent" saAttrs typeset type=${saAttrs[TYPE]} typeset existing CL=$LINENO KLIB_HACMP_list_storage_agents existing 2>>$CLMGR_TMPLOG #================= : Validate input #================= if [[ -z $storage_agent ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ " ${existing[*]} " != *\ $storage_agent\ * ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$storage_agent" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 163 "Available Storage Agents:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_storage_agents available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND fi #================================================================= : Create the storage agent if no input errors have been detected #================================================================= if (( $rc == RC_UNKNOWN )); then typeset nameOpt= addrOpt= userOpt= pswdOpt= attrsOpt= [[ $new_name != *([[:space:]]) ]] && nameOpt=" -N $new_name" [[ $addresses != *([[:space:]]) ]] && addrOpt=" -i $addresses" [[ $user != *([[:space:]]) ]] && userOpt=" -u $user" [[ $password != *([[:space:]]) ]] && pswdOpt=" -p $password" if [[ -n $attributes ]]; then for pair in ${attributes//,/ }; do attrsOpt="$attrsOpt -o${pair//@/ }" done fi print -- "$0()[$LINENO]($SECONDS): $HAXDWIZ/clxd_change_sa_director -n $storage_agent -s $type$nameOpt$addrOpt$userOpt$pswdOpt$attrsOpt" >>$CLMGR_TMPLOG # Always log commands $HAXDWIZ/clxd_change_sa_director -n $storage_agent -s $type$nameOpt$addrOpt$userOpt$pswdOpt$attrsOpt rc=$? print "$0()[$LINENO]($SECONDS): clxd_create_sa_director RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 400 "\nERROR: failed to modify \"%1\$s\".\n\n" "$storage_agent" 1>&2 rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_storage_agent_attributes "$storage_agent" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "add storage_agent -h" "STORAGE AGENT:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_storage_agent()" requi lZo@0םa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_storage_systemncy     =e ainrst"$O_cdmop/ACEGILMNRST[\]bfghluy#&()-.012:>Pvw*,4;WenS՝yӖ`d z؆Z*} N/Vvm@h4W,Y1 |dAE4+" &T&AAAM 8`Po%ck`C`a*#DA&*,T؋ڒC)< ĄA j<$2n q!!@& ЬSb+sU ob|@tobhWq> DIhWSpX"HyANJ4+aa)Fxrpr-x,$v)̷1 g;[`ڳt3w0{[qRHe;_0TxJJq|osןq?s6vvynu 0r)HbW3M7gO3ϖfna1RS(4ħ ؎Sb.;{'.lft¯tl]=MC)n[0r)HbSt˞Zȃvs=|^q)He;\=\^&*\e54,D zהak9{1g6>6" ka1RS(4ħ=|;yz3jnSb.;|v# >nI^ػx=(~喍W,bȦPi#YN/M,b(' 9KLF_X PNAn" bȦPi#YN/M,b(' 9NLT $k1):iq6=]V qPE{t\ JLT $k1):i2y#Y^6ە d=q?6BQq0r)H` @1۠} CgNY]S%;|7 k;͹PZ=nXG*<,sd?B" |UONY[ZkiThO m`EwNv ^7M@=iVobH1@pT]q qRHe;_ 7'BX~8i" ©\apP C"c<q(8!RSb.;jI k#@H#A8 ɺ8ĄqH$oD#sA(TrȖ,DG(8`j:)"PyDonh# )ݿB?6BQqt4PsF\\8$HAŮ/8GI\`Xeyå82T,Y{7*4,ܮxsI<Q0QnW>/y03Hە eFbǟCA\\6%I"PyD,bᣉ}򚒛qRHe;^]_)q!AD&@ɊLRDQ< $D8hb|\vԒNחao4pHPQ!ĉ*rb kªxYӽeUUUUUUUUMy8t6"㶤vh+ F|-&W:ZC UB$LU [3JTOw/cݟA)f, =kX< DP,IV*9BdK"PJ ˵}34tV|04jt6"㶤v4 z%IwDPC UBeDLyR̢L#(1r2ͺ<"L30GE)M$2"($%IwDPC UBe@Ng<؋Y kL DP,I8p H$aosA0V k0 XEtO4j ɗ+bf7Ð hA+S|Ihxr-[i"(uB`91CJ.z`ƎJ/z=V3 R^|Ѭ,/0cJ.5iJlEmI!|ѠW3&W:ZC UB$LU [4LyR6" kg6>b?r{Se"e)D>];6"p_r>f`Pu DP,KoUPAɕ*v]ҝ`r&hnh6gH]ҝ1ˣ8\0'&\459&][t4v9f7Ŝ}InLܛ3"frÝ,--` 'Nqyf7Ŝ}IӜ^mCa0V a6g*E&frØH$,,`3 á喍W,ѠW3 7+Diw%H:ExpvNYhܥrGr 8ۖȎDܦ0i=Ѭ,/zlΑßDQot4ȖhM8q'$=91CI0r4 &9 \`{s0cHە eFbǟL`i(.2ϰwUt @D*|"tڒ>6؎ )M$2KJhY3Hl!dٚB43QMl'"3Iٜ@3oUz)H&h1"&PX4OTEe<%%|mY=(((DP1RIiw!}.o(XrՁ .V i:D/t,]H9{E arF+hM)METrF*I-H:H%qѬ,/63R63$W9{E`i( :v7 7*`fU겣&Db%(D<QWʎPAɕ*sG22^!Fa`f[[؋ڒC)qtKL,qHq"d *U2"($kϰuHF /#)ETtR GE"DJ(-a4'c,bᣉ <%6"㶤v`j-HP kto-םa՝a֝a&-bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_tape#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_tape.sh 1.6 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)74 1.6 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_tape.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 4/29/16 06:30:11 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_tape =head1 VERSION Version Number: 1.6 Last Extracted: 5/3/16 18:54:04 Last Changed: 4/29/16 06:30:11 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_tape.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 =head1 SYNOPSIS clmgr modify tape \ [ NAME= ] \ [ DEVICE= ] \ [ DESCRIPTION= ] \ [ STARTSCRIPT="" ] \ [ START_SYNCHRONOUSLY={yes|no} ] \ [ STOPSCRIPT="" ] \ [ STOP_SYNCHRONOUSLY={yes|no} ] NOTE: the alias for "tape" is "tp". =head1 DESCRIPTION Attempts to modify the specified PowerHA tape device to conform to the provided specifications. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the modified object can be returned to the caller. 2. tape [REQUIRED] [string] The label of the tape that is to be modified. 3. new_name [OPTIONAL] [string] A new label to attempt to apply to the specified tape. 4. device [REQUIRED] [string] The name for this tape device. 5. description [OPTIONAL] [string] A description of the tape device. If no description is provided, then one will be automatically generated. 6. start_script [OPTIONAL] [abspath] The start script for the tape device. 7. start_sync [OPTIONAL] [string] A Boolean-like indicator of whether or not that tape device is to be started synchronously. 8. stop_script [OPTIONAL] [abspath] The stop script for the tape device. 9. stop_sync [OPTIONAL] [string] A Boolean-like indicator of whether or not that tape device is to be stopped synchronously. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_tape { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.6, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_tape.sh, hacmp.assist, 61haes_r721, 1618A_hacmp721 : INPUTS: $* typeset -n properties=$1 typeset tape=${2//\"/} shift; shift typeset new_name=${1//\"/} typeset device=${2//\"/} typeset description=${3//\"/} typeset start_script=${4//\"/} typeset -l start_sync=${5//\"/} typeset stop_script=${6//\"/} typeset -l stop_sync=${7//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 #================================================================ : Assuming an object was specified, see if it is a known object #================================================================ if [[ $tape != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_tape "$tape" (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi #================= : Validate input #================= if [[ -z $tape ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$tape" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 159 "Available Tapes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_tapes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ -n $description && $description == *:* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 103 "\nERROR: one or more invalid characters were detected in \"%1\$s\": \"%2\$s\".\n\n" DESCRIPTION ":" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $start_script && $start_script != /* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$start_script" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $start_script && ! -e $start_script ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$start_script" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $start_script && $start_script == *[[:space:]]* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace,\nwhich is not allowed: \"%2\$s\"\n\n" STARTSCRIPT "$start" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stop_script && $stop_script != /* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 106 "\nERROR: the specified path does not appear to be in absolute format:\n%1\$s\n\n" "$stop_script" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stop_script && ! -e $stop_script ]]; then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 107 '\nERROR: the specified path/file does not appear to exist on "%2$s": %1$s\n\n' "$stop_script" "$LOCAL_NODE" 1>&2 rc=$RC_NOT_FOUND fi if [[ -n $stop_script && $stop_script == *[[:space:]]* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 108 "\nERROR: the \"%1\$s\" attribute's value contains whitespace,\nwhich is not allowed: \"%2\$s\"\n\n" STOPSCRIPT "$stop" 1>&2 fi if [[ -n $start_sync && $start_sync != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" START_SYNCHRONOUSLY "$stop_sync" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ -n $stop_sync && $stop_sync != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" STOP_SYNCHRONOUSLY "$stop_sync" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ "$*" == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 401 "\nERROR: no valid modifications were specified for \"%1\$s\".\n\n" "$tape" 1>&2 rc=$RC_MISSING_INPUT fi #======================================================== : Modify the tape if no input errors have been detected #======================================================== if (( $rc == RC_UNKNOWN )); then [[ -n $new_name ]] && new_name_opt=" -N $new_name" [[ -n $device ]] && device_opt=" -d $device" [[ -n $start_script ]] && start_script_opt=" -p $start_script" [[ -n $stop_script ]] && stop_script_opt=" -P $stop_script" [[ $start_sync == @(y|t)* ]] && start_sync_opt=" -s1" # Sync [[ $start_sync == @(n|f)* ]] && start_sync_opt=" -s0" # Async [[ $stop_sync == @(y|t)* ]] && stop_sync_opt=" -S1" # Sync [[ $stop_sync == @(n|f)* ]] && stop_sync_opt=" -S0" # Async print "$0()[$LINENO]($SECONDS): $HAUTILS/clchtape -n\"$tape\" $new_name_opt $device_opt $start_script_opt $start_sync_opt $stop_script_opt $stop_sync_opt" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchtape -n"$tape" \ $new_name_opt \ $device_opt \ $start_script_opt \ $start_sync_opt \ $stop_script_opt \ $stop_sync_opt rc=$? print "clchtape RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR elif [[ -n $new_name ]]; then tape=$new_name fi if (( $rc == RC_SUCCESS )) && [[ -n $description ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clchtape -n\"$tape\" -D\"$description\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchtape -n"$tape" \ -D"$description" rc=$? print "clchtape RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== if (( $rc == RC_SUCCESS )); then if (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_tape_attributes "$tape" properties fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify tape -h" "TAPE:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_tape()"  l:oםa՝a֝a&w~bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_user    et=ainors $O_cdfhlmpu"./ACEILRST[]gwy(),1:GMNP\bk!#&*-02;>DUvx{|}'3469 bH@(dDI Xxp',{7TtĢLU4dAU1ftܲܳ5{L:NOYzYh༸ q!$. M3UuBI\$$f *Uu ˂ 4\hU]pb༸ F *UuiZbB[^0x2K Zˤl;hFŪAii;V T;U]ZՋ2j֛n 0hv}Z7\TZՋ2[5T.֕f v4dàK9w[ xlΓ;ujkrIT̟=\ؤ>޽rt nYhƝX0Hx"ǒ&D"4I ʢY@c (U8$3(ӎjBBDD8" I^W*e Oi9eCN; ٝK.P "B&2>L?Z&_^U׽:GUٝKrIE_vs7;ƝYZnwKΧڵ:/]ǝ_j֔e*JMY{J=<&OR2ZٝKM>ueqgR|I=G{27+Z =vW֨NN'>0ZҌyd|aNխM7˖a۠w`%={ViEu}ZpQf^uܞ,;V7NoJforc'3s^y䒦,kT ڼTcIWI]Jc|Wj֜Rezqj&3iEu#-xʷHw[ŝ'CfuWu)peqj÷A>q^I=i*9+O|kek3B7+>ݪmj`04;afghq0hwno3 0F啮w'Γޔan|7@6Lt SkR+-O%]'%u)iEh  Ӌ"VY048"0Ҋ  ;>b`,4;ejK1PK.X0ƆpK> 4; a9!y髆 jFF$w`S Y %aeڵѼdɓweNs+Xyˠ(Xcɘ0wU8$3(iڵ3ܒؤ0ծkfu#=ecxnM:Opu>uʧdfeX=QLÌU8$3(bzûVQԧz-[N;[SjZK3; 8< &<fҏOvY:Im3Rr| ӜR{O{U;Է$Yj3s\ir o%ר'IjծftfRuj@,$;dd-ڵΒfO|w'o' F:0]0n,˙.7-Wk/Tuڴw v8']bb:N;qz7;$Nyt @Ly3y՘;ѾwVi-ekkfu.oYGS .;jʛr:ZTz՚ziJu|2GGsOuyڽΤ7%{ʒUר|-I]&7ԕ+R2^ʻ-ZR]&7թd@9\2 rx7S=eF\7ҊRV4ǬMRxM3Sz0]D^*E%S]BĐL^uf%ޓV]])4\/FeZN-Zf 敨\XO}|2e_='CGA|zN;uZCI3'ٱԤREɮ|2=ejnY֠vFnwR+:ˠ(Xcɘά啮/ qSrkZ&roڵ.t2};<&'ٝJ}ǕNkfu xql:s5&4-Z΃ڵ:df}O/Fe[FIv;[oWqܒU9>Y%#l]'wYSs_QTƜw%;V,I:>t%twj9F7B7ʧWڵ: 3;aә1=ejnY|,IvYhExHf $f2ъ;zN;UٝK|,MR}IW@vbnwVS#qz7;R6ž0ˠ(Xcɘά|o9I=GV,f2}eڵ: <^jڵѾwPܲ/FOYmF+Z H5LVgRҕ:yگjF HIVTqZ&<&噩e D<òG;(Tz 84 ;Q臃A><şyBz6wB@p @p ,ѳ @ @gP^v R6ž0ˠ(Xcɘάr HI=j=)S )b<jʛگ-6)'jOWoiWj֣֣=ej HI8-Tr1JȐcȕD<"Ǒ*xD@8J"@ Ǒ*8cȕDH;y2$q<-V$Oppşx;֨C `ZH_ μSv,@ͪ+`N.1׊t4Ǒ*8mǦt0JFط[tt>şx;֨C `ZH_ μSխzbVQdʹ^[3k;;ڵ zNIT+,o#*̹| I*j7;啭:Q̭y=(ï|zNjFKmh|bQJfU<[HMRcrԩHʃ-S֊NXAU8$cqE'bթ/IF[3O4NrITڵY:O]$:UʧdL;bdzYwj'\޻tU'=H|u0ٝH Zk-c@YbcrfQe;ܴɛ;j3s\i6)'okfu yE9ՇvmҌ-σdV2,pr<2E89zt4 szylcwS']vpr<]([3լxB +ZzZJT6qO tqdԕvs>xMagõkQ{ڴwQ+Ԍu):q$ ̢ZnwKa>խԻj֝(V̢$Ij㙜,aӤٝHjtZ 8<'ˠ(Xcɘ0wek3(/][3fڮ iZjZ3=ԌkQn#(Jԕ06gRjjTwJ=ڱqؔnON,*FQe:jFKglΥ<ұܒU9srzN-WI3N*YU0튒޻ttZ 7.IR2;R2]n?fu-'CK|6X8eXӿȚH;7tlROP,o+bO]7YcR2ݳ:ӎ-lROPjĞo3(/AݛbV9zt|2wEfuڵ|StKRWڵYcRQ_kIX*l,tܒlROPk>w2,L;k.w7VgR=[z:Q̭yE9I=G{ڴw3,:t2}3 Ns+^֡A]D̢ˠ(Xcɘ0wV)'j|;:,=H4Wkfu-ܚruCN;Of|T095xN2,i:k7O6w{]|N{j(gRU=7J}vլ̢LrJeXIҌ-χWqUXI]GOthwlλVo n|jJV9zJ+i+S|Y<1Şt%aݫ\O*pr3=7ͅnխGj֔e*J#%aNJfΜxFԸY7Ybaݫ\}%i!y(Vj:!ӤgRzթiҎek;ɮ>w'\eJ>،e]}[3kծt7&ܝq7@fQe8<+T $f20w2׌V_=ԸRuO_$(GΤU;Ҿծ,To'ڮխԷrD&wbdӎ5I7,LCUȹ5W#\v vF4ITYK.bH &c.-NʱI=GVgRg7ywB6Kfu {J,ƜwZZeɚNխԹVOڱIfi*G#FթlΤrIEXܭ-I^1G-:NխԷF3jO'y}wB6Kfu {J,Ɯve2,O.bH &c/:bzfeXjl4I]ԃ{j{3;%acp>,iм̢J̢ڻ]|N$֣50VeI*UٝH䒋0n;խԀY7;e:quܞ,rÎ)+{|/,5>2Ռ8(ʻU ,sgٝKrIEXܲYbzrҧ&o|aڵq.̢͜ܟ:Q| feXgӒW3(/ZNan|8»O2L:NZ;^}tCfuڵ|StKRWڵRQ_kIX*7I᎞n,+Zr| Sl,tvj>O|;V)RW. q|Yt9I=C}X5'&OoI[[3(ag%GY˺lEԔa|TݙYcg=Z;G,uzYEw%3qgN<#}B\e,0ծft喉fQe>wI(VleXvc:I>͎fu#zy}qWfu-%ayڽ\Ҋ 8-XM3SztIeX.ծlROrM3XɌqx7V+]BĐL]FVYZ,nVfa֯qZFgRgM264p4o5ie $f2>LUIZܶĢfN_+PZٝKbdvLrʾ{ٶXjlJ&dù| Qˠ(Xcɘ0wV)'oNż'[dh}[3 8Q.bH &c.0HH"UU6laʱI=GC񆛮#.խԀY:s5'7jFKBAc0ǍaڱfA7AٺtF+PZ(|a뮂>U0խԳOYlZP e*է˵kaә1aH^ˠ(XcɘˋF+S`PM:yjթvlΤrIE^E!zL;4WbT\kfu-IE}h2i3[uV$YRtZٝKIЄoZ&_rӭM:}[J,τl' lΥkD4*bf#{0Z) ٝH䒋0u=h/ISekqoQZ։u.iC--lΤrIE_jNRjIθwcs֤ewj3s_rki:3լN NzԞN&_ Yta)ԧPg}TZLoa)ԧPdi`nLt @Ly3qhjt J ']O4Z.խԴ h j3s_4WhD3J+&4pʗ+D@P$Ǔ1V@䠛uJիRZٝKI։s7;%*^7\qVejˠ(XcɘˌUUu͛`ROQ>ծ޽qSMA=7;VUB[3oYhLǵk.7{v/I*V/śӮ*vNz=ܲ5I+XM3[wNtt|TqO['9àK9w[؋awRQSk[uVgR>ܲ5Ih 6dW_o^Wuܞ,6)'L;kfu-'CZ&wuYn޽LnRwգUԴzqI|aiչLoqh"!ڵ3S*ݥw:auzϝS}=HML@ &p`i0 UU;ypA!$. M3Uu^\`F *Uu^\`paUuJԫ=ŪX`4]#ax{B4.-R L|VoZjřqSkMh74;]}Z|j֬Yv'=٪tl 0Mð!]l7 ADr|/]jٝ&ww7unI*ٓgk}'ףN=7-TӎnILˠ(Xcɘ˾`WqSJ0$ͼ'[0)%S/]jG{Z&1%;U-(Rtwj䒋0֊B}[3i:D7$ >lROQjzfUgYjLiC--lΤrIE_jNRjIθbws֤ewj3s_rki:3գN NzԞN&_ Ytva)ԦwPg}TZLoa)ԧPdi` 7rD&ٹ,I1er| ;}OkY*wR]rW^$sWfu#ܒQf7nٝK>w$N}[J,ûVbui+ڵIwjJ+zJnI*P fgzNOwwR]rϝ{گd啮ftj2ɕ{V;X=Z$\ؤ=WQg d\$N}ǵkrIE_qZ|ybjV7$j3s_IЄoQOv%CVgRt!;hڵ$/RQ_kq.Y*a7,ŀF]Υ$,;lVj֣+-Wԗ|:auzrJ:OwiEu4t!5c+IwfحZ٨aݫ\}VNs+\%Vi$̟f3:֡n74n(t@P$Ǔ1|,X}\\ZM7ğwծ>NTZ;ԀY:s5'V4A3S٤啬&噣=trtfVsqO$o^kfu-hi'jyJv'xNڴwn+PZٝHç3Q}|cN;v9D&垛+ի@P$Ǔ12`oSrk& ,O^X=HIZH]3ڵ: 3F9fOFI*ek fk|iEu ;tä;ĢfN_fzJ;ū}'7Vfa֬Ol:K:frņZ;Nf$SתծTY|zϊ[k^X3$Ivl:s5'fOYnZ,MRcN;:s5&ZSˠ(Xcɘ˨0T;⦛ҷGSҌ-σg5'>u:ճ:LOaә9+XM3[J+dII>wMGS;үI]vgxsbzf-8íX9zӎ`pw9]BĐL]V2K9jVgR=eFj;WqLΆ啬&噭ݧI=w-Fj\OehLJÊ7,kޝ1PO;Vfڴw„BEHXfn͊I>{aә='CT=֌ j0R($$Dfw,'I8gH׬ &ծTW^'Ū\TU |pMMx՘hܲwu&%V|aN|foN'XM3\TZ;L$$)AJũHʹS3rx7CrJ`;lROQvؕgdW*ftFwLV0D* P"W#*Lη]jxTQӎ`nR6t,I1e 0wek+T.ڵ: =Nf$ 0T 9%j{z =vWftٓg4Wkfu-'CeIW@vl:s5&7$j}zة>):sjśwFI*խԷ$Y`fejz2Lao[t7&ܝq*\V9VfqO]oњ;dnIL|ؤ0h|'zbwB=ڵ׮խNf$ 0Twؤ0|)̫|7 -I)*T@E$F7ܳ5.Iԫ|eI8uENf$qˠ(Xcɘ˾`(TVz쯸aj^aj@,9wCkaә>T䕩vs7;P eﳿ8i*jR2խԴ h|7s7,a7,oӤ 5.w'ܒ͊IFvNeGzo|Yt9I=C{2KRQ_vuXtj2M &FŞt%xh|+eqjr*j䮥=@%ʓgIKRW+TRQ_ 8Fd1jSˠ(Xcɘ˾`ֻ_+T䮥>6K] 0tԦwfwV$){ڵ: =Nf$啬&噭wtrtfS7yI=Cxh|+eqjSRUrWRIs+ŪZ{vF(FI*bt)*O.bH &c.Y+Z =vW.*v}ݤ䮥bʘ]&wگj@,9Vfv$ܶ];dnILY$ 07Ū\TUrWRQ)Is+ŪZ7i`8xw9E7Jyt @Ly3wYZ|+eqj4tԧʀK/'[3Faә>uU7\VOaә1ek fk|$ܶ]s>FŞlROP00;uŪ\TzT䮥=@%ʓgIKRVw2KRQ_ 8 ]ˠ(Xcɘ0wF|*}XHHyPvgYjR[gQTƜvw2tSˠ(Xcɘά`873;a֮]BĐL^uf*$S݄'YjW^(TVgRg$s=Gܙ{F啮ft}7IZJ;VgR;qEk3;K-[3ObQJ02;u)sn[ ^GtY%CN;zD'ܳ51ø;njnXӍ_eG|,'nYmE*|,ohgR+WϋzΥܝ RσoMuޔan|;VG:,Ju-'B ^V3Oa3Oa֮'z2f⢛ZٝHԧڵ4ٓgkIJ|s|`4ܱ Si:`7]ə'(SO t;z,j@,-(>գ3Oej]ə'(Shӎ0fKUnn}ə'WIWI]I3A='C|qծ,ijTxqQ̭xM3B#7 vAz\ͫ@P$Ǔ12`Βtm\ &[FIYnծNZK3; 8NL?(DH`RV]%t?k'[ 1NuUC)%Sv!3P9n(ULT8Cw6)'ON,*ӍOoaeVOoHaq^P eo4s| iWI i)RWfln@%ʓӦ* 7AG ؤ>t$'ui+n8NL? PX ($"BPu0r '$SFL hCYl̫sTA:L㚓6p_`1D #%wI&W[ӎ9F`0A2@Z `BޡYK L4灃ɒ aD5 aјwMCƇC!8 cxyÕrK8$ $(MEԆPW$]9v꺦(8<;z*%2Bb"D3gfةlJ,T6wbW:O 8.wbWO Ç ;ͱSޛO ;ͱS2\U98T`m^|sʑrIT @£lTz7;48T`m^ [rD+:E%]4 pQٶ*ux1^*FoxT 8T`m^ gQR5m|`¡ÅF fة/O *0p\6Ns6BޓO 8.wbWYbm<**0p\2,ML,1Ãas:=wHO ;ͱSܚ&eXO AÅF |3(xUɮ"fQe; fة68.wMecٶ*u|>UgRiP 8ps:lfQex8T`e2,Mf&eXðm^WG8.wbWZYfG8.wbW EA ;ͱS(|` p£lTbH^iPp 8ps:L <*8.wbWKeiPp8T`m_4ZxT*0p\6N]DTs֤Z&_ 8*0p\6NrD&ٹ8*0p\6NMNxT*0p\6Naә4BnY"ZNm<*G8.wbWd*=kM@`ÅF fةdxT*0p\6N3:F޽4 *0p\6NZ) śE:YxT8.wbW,:s5&O pQٶ*uz,:s5&O @£lTXtj2MmV(£lTXtj2M,®O pQٶ*uz,:s5&mZxTG8.wbW,:s5&uh6 ;ͱS|aә4SzT 8x£lTWtxT*0p\6Ns)IgNu6aÅF fة>,:iP8T`m^Ğm3j8.wbWΒtmVÅF fةJ I\xT ;ͱSܚru'M<*aÅF 2(4DI na  Vw x'-#|#}Z&{Vz =Nf$'c a@qͱStj2MH$ A#Qٶ*u{FI*0p\(4DI na  `W:ٶ*ux1m%]4`()h/O @h£lTc;Z&aә4RU3M<*8.q&$"Qh^s0P+^AOAc}VäfqkZֵkZֵkZֵkZֵaIgJA=}<u'YjkZֵkZֵkZֵkZֵٶ*ux1i"hgٶ*uxEwbW(XeZ3<*D%K(XeZxUBĐ*;(D"&bV1ۘx@;I4$T!1I ;|QokqE',3 F_;@c30P+|F1GSqkZֵkZ֝!Y|fkZֵkZִ/Yը9p99&$"QKg&$"Q"%ph7+% PCw/Cp-D&1< $yB*T$E;2ٝK7<4BEH*30`ڵi Ch "/,ΥGL03<X!B  D\44ڵ39|'6<ĄJ"TlĄJ"$TD c`DD bxK|+X C0(wg!π3'@DJ-@DDv0xMYVJb< wbW&ey2BdDA2@Z `B,Υ=7=g -Ga  \sp\`.@w˗ &e0 aˈM%B  Vw|/2 W,=QQI;0O(A4 " NQyL| aˈM%B  Vwmb4Sw`+df8Y^fpd(R%(QxnzZ8$Ybb< wbW&ey2BdDA2@Z `B2ř%LΥ=7=g -Ga  \sp\`.@w˗ &e0 aˈM%B  Vw|/2 W,=QQI;0O(A4 " NQkZֵkZֵkZֵkZwg-OK fjgZֵkZֵkZֵkZֵ;HHc Bǽ1" y"dB(@DP(zԚ+D1#A8yA0ѸiҀTDT@Pdb(D$T%  *ftz0B"ȄHZ) śE:Yb*T@E$BǮ,:s5&TDT@#H]ENf$q0H"ʕ(D1`XXtj2MmQ (b&HL*DaK"4喉9O(@C>I (a!BhKNkZֵkZֵkZֵkZֵkZ֝!ԳٝKRQ_krDֳgZֵkZֵkZֵkZֵkZֵkNbOf0h`isɒ"&ʑ Dhx<$X2Y,M0x2YΤ3 LHD% "w`bDʎIdWtf4ç3Ig:I$^ cTe ɄAar6ф#`y/F(c<;TehLfs3grsay LHD%H LHD"EDJ(!7,fI=Gz010rDI,P*2܍qg!π3'@DJ-@DDl`垞r0*|`+L;&(3I !2(DdI y7$w`f|ܡBB` M8O "T$@p ٝIř%M>Te;G0%B@p g-DH%Jᡠըğ a$&DM"A0P s3>3`r/<<-1 gRFal̩TejZ3 LHD% "wbW@m<0s3>3`r/<<-1 gRal̩TejZ(a!Bhğ  .y2BdD0yR$ ֛3a=jnPxa D4N;>&HL*Dag!|-6gRF_;y2x[3*cΥٙSr6a0@ĄJ"XHP'ٶ*uyB"H"399i: w*2܍ɓٙSfu,fʘF_; D4CNbOc7ϕ|IѵuX'ʗS[3լaB"$(ž0;uiW(>qSϘY:u64V.0gR@39|'6<ĄJ"TlĄJ"$TDc,f!0S+X (a0Ax@;I4$T!1I KNYTٝIř%Gg/!M Vw̒& [BL| gRFqfIV g:32JCsdf VwmqfIV`?j&ɒ"&ȧ6<ĄJ"TlĄJ"$TD H"P1 <>Te'ùǵk}'""Hb:| c8=eFQX C1ʌw#c0(wi"HL  YBb"y<qkZֵkZֵkZֵkZֵkZֵkZֵ;C$Nf$N6)'L;_j 5dkZֵkZֵkZֵkZֵkZֵkZֵ;aKkr 4<,ϒ[[ PJCpP+;,I2[qAJZ $V@P$ʎ* P#fةM]-L| @)b3%6"003 LHD ᡸ(6" [F؊H1x1A&$"Qhb2 қI-JlE$0)b0RAsda ybB%*DybB%*"W(!Ix y4Vq:< $yB(QyZֵkZֵkZֵkZֵkZֵkZֵkZֵkNĢ7ڵ:8G|f)'XT4+kZֵkZֵkZֵkZֵkZֵkZֵkZ֝fة`4$b$JwbW "ӿԌ4yA1Dw<*D%Kq;|4yA1Dv(D"a *T,&>N!,0q @ ( [Fta 0: ;e<\rT `n`?jL|' Xh/0`ڵH]-7$YRrfKNY!tܒQfH^jZt0w;e/n .\Bl9*0`70`ڵަ\z2mna @e-5emɚw-:;hAhh| ;Gzrt2`&ÒsP;eʗ+Dᵸ Xh/0`ڵLŴg%emɚw-:;KD [FrZ&_CQ˗ϚJlX!,0q @ 撨1m/zOJlC._=wQZEh|' J  @uAhh|%W'z "&2LaejFCpXaraP(ݛAh{Z&4nasF≧J!,0q @ ӳH1mi3N-OMN\{FIrMՊs aˈM%B  `VMt4JBi:s5&M=7[WV)ad*=kO7.!601[ Ŵfҷ >vtj2MԦ0|aә9&Òs0P+]4њFIaʙ#o^CpXaraP(ɔ|>TLΑC._=h/mg aˈM%B  `V,h1m|6R6t;|Xtj2M\rT `n` k [Fk3M=w9Eha"ç3QhP3j&Òs0P+]'PAhwjO]ENf$Zfwrd.Y]<\rT `n` kaWM-5,®id.Y]1/FIV<\rT `n` kZ)ŴfV|aә4cjԦ0pQ9FT:4RUҞn .\Bl9*0`70c(ŠŴf)6d2)I\z,:s5&oQJBCpXaraP(^1m&id)E*U wr&Òs0P+e-6Wt{+b._=̦E%9CpXaraP($otSie7),Φ0L4Xu J  @b3j3Mj;|$#hW7.!601[Ahڡ==wH.fwr#hW7.!601\܃ћA>t`m3j;|%x!,0q @ ؔ@-6%m=Di+ÿަ\ {]|N0`ڵt=ɮ>w'[uaw&ћ]mɚa ( ܚ [FnMw9ix<;Gw˗ϜYUa3P;>&HL*DaNL"K ş6Pbϛ&PbV+ YVY,HşAFbY!t։Lş4A=uA> Y٤ { Ş(i,2ztŞ Y Y1gY]4|jSA=w 1h1g^1g{A>ba1g1g(* YMw/=Ԇa D4N^)IGg@E3>cȤ3#(1g4܃{܃x1gtbԤͪyA=Pbϒ1g͔ɔՊ|եA=R(1gQH],e,-(1g%Pb]Ebϻ6zvi,kވ1g A>LŞ,h1g4z4z: YaWM,-Zb]BZ Y YŞbϴr Yr YJ {]AGӣؓx0<\dȉ`0H &*! TQxQHE%IVgR>FPbzh1g, ,ubr Ş/H1gH1gU,(1g{ş%bϛ(1g͓(1g,K,{PbϠ1g YD YZ&PbϚJŞ şvm, YA=b]4|A=:Yb]Ai,i,u|® YZ)Ş|/QDA= şh1gؔ@,&C0@ĄJ"XHP' TQxQHEbK"Τ|Şbr Yr YŞA<^bRbs6 YPba,A>K ş6Pbϛ&PbV+ YVY,HşAFbY!t։Lş4A=uA> Y٤ { Ş(i,2ztŞ Y Y1gY]4|jSA=w 1h1g^1g{A>ba1g1g(* YMw,f{3M<G'CKL4 T%CD4E%YK(@C>I (a!Bhw3nP%BD*W @CͅgO<1!"[<1!+nBs֤Sz <+XٝHfM<H(CyZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ֝!S67(گ*NOjwIr'[KZֵkZֵkZֵkZֵkZֵkZֵkZֵkZӿަ$(A"+Vw2ĄJ"(Tr2 Dyb VwmR 'XT7v喤÷'z"ĉ˙ T&*3 Q >t4\̅F t$gR2F0pZo 8',h`3;cOfu,`H1&$"QB"3Z&Q[2+0$3x404f0dȉ0U(g >*cA2@Z `BޡYH04a ^ l!oםa՝a֝a&Zbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_volume_group   =einorst "$R_acdflmpu-ACEILMNOST[\]ghvy#&()./1:;GPUbk|%*,02>DFVw!34@BHqx{}'67: 83eCF    ( F.7+X7 |i &ELy0re'IPA$D XhxNXۥZnpeIU`jqRv` 868``(Թ0Pi@8ڊp "@ L 8lg.u3am3Qms|𜋕);bXN0j3D|qA0 ,AIQ nN}Y%6ܱЋA0a'79i\'-l<'+@J-+gki8ѹJZʹÕRnG<'YUIgkbq"q eYRslXE5ɳFSt! A\Li!, +py#ɍ$<xO6xq׀py#ɍ$<xO"fcjN*Vz?76[9Uby079f56\b "g/)4dzmF ړ.pof 9wZẋ-(&XBcHqs?vat-r 6n_M0[z&W.yS|W3vf^eItH|hnI&昰VeCm)'kv-Hޣ @#k~`r(Li9yN.y'}#zΐÍ3 lj0mfMjrW57ks7onT`gHXwk~A-&A2 D^Sh 7{.aApYmgHZ\y au˔,@1L8挟ܧ.fԟ3w y[Ճ\gks3w9U'ks:ՂL@ q8G@0i7QY⓼A2 D\Vby=g*[nao56#pm[Vn8mEqn.7)n7\b "g.+1j<Rw,"nn;=L nm 7zΐ?Aټ`Zv\r 6 <v&i98\b "g.\LV.fbsf`" bgr <<QRw(&XBcHqs?rNMxG|' 7* q;QZΐO?jS0CQXbB ف<<<7e@56R3\b "g.\Lt hg lj0mgZp{A\ͺ\ssnzUIܹ2;dV}gdTciHt-xGAټ`@9m/@nm˜0GX 7A <<%(&XBcH˹W'‚Z07k֮\W3n+[Rw.f?fe@5̶_bg lܵf9fQm]F؜0`Ppݖf(Li9yN.y'tcB r\rͨr>/ ss77r|Yې+BMq@47o8Y- kwbg l7y07keO?ڇ/eь#1.ޠ#ˉX4w 9UAٳzڌ1~fbg lܷ?Aټ`[-{rF0 ăO&ڸqra*A*wVu˙')nUI<{.aUO#zFʨr 6L3wf`v]!tܪe P&rⰃ̟A9U'rܿ3njjr1 yqIZIKn6;rR** y]F؜Au 7]G0m5A2 D\Vbyֻrnp栵BRྡྷܥr 6 <9l7rԍfb`: ׷`SQ4 فˉ(nM˝M-(&XBcHqs?k.f]RfQsPUsړ.aV"ng.'9z~s`JE5A2 D^ShhjjGAټ`\䬝q;|ܮ'/t&>AooV'ZA2 D\VbyPU3wStf9fQmubynK@ݨ~‰<!0vafW&?QH˜3jVU[m Lվ0mIpUVX!ɫU˺rqVr Spam+zm1FR[.G@(3z;VvaڳPfOCS6oZީh\}(&W.[M-npRjye&ҭ? ǽn eYRslyf?$HIcGM,Φr 6ͦj0m?7D DBAaah"8d *! aNVLi5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUG#H Ly29;:scܾ0&TPpJ၂gZN2Nmju(FXjuQDSu LLPcKJ"(8zU \HHCZ=Fn9jrεrG ("Ƒ %YQH!jsȐ&> ZM3#X`@&jOzlҊEƜʪ h\h"D1bȏ8e $@8@K*8iQC3\x0(dGR Q#uTp#@#":*8iQ|}#IuX.8^ޘPɑfD":O*8iQR?wεr&,HLYcyZp@0js;eN6&r@` ?'+s #z?s@Zdۛtrۓk.)b ?|` LqQ24$RD fLAZcH&H$ʒ ZZg8AɎDr`L"?& l.yG <"5jwZW{=ş ՙ5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUG|}am3Qm`5`$Ҋ؁!"<F"@e0D4q!4$ş9f56ւ' lf@դ92*W ‚H92e &((L<𚪪?C(ÖRw73j//z' lf̙niKDqBI&TymI $"EpX/@ǤD57͇0ܧ`qZaaРaVHrd*@d j.|4x LzQl᧨ H~-r֬R&4ɜ(+HHC9!"cIL;|R s88B˗J+bLcj ZqwQe!isˣGj`ktN9os7q=F%q[tɫU˺?IFo‚` Qe&DyfFDI[DqBI&H\@ǤD gHZXF|\mxG0 <20-&0hP0H92I!&@cq||c_au̙nN9F9sjgZfʍs7{sf&D`cn83\x9jaZENgZRW3Zl+LHgVQ1*8iQ u(Hb"'C525$L#I2EDE0峊0jra@020Bc}S֭ < ?25$L#I2ED>AFqF`= @@ URc$œ LLP"'ܔTy5UUUUUUUUUUUUUUUUUUUUUUUUUUUGcg;eqFFڌ9k[Y+RsZkՃ\gݳ3w>pֳQ+rֵO ?bف̙nεr:BҤQeclεrZE!Ɋ$13ׄu!mt h\ΐUB˗J+bLfLAZ|u!ijV5jwZE7ɫU˹]ZnO :ΐ4 ?'5sn<ͩ=Z[ժkVts&Dy\h",/'- Y$HLjtMMVtEZ,@@zEyŻ?VVN*1TbVN<ϙRjk 7{UF7k?hς PvuX$ƉL@p'2dGy$HLjtMMVtDAHL8zpeH8gZDYY8դ92*W nURc$œ LLP겲qV?w]|,/EVVN*5iLʕyi&Ld ''MoY׃oXXڂun!lfʂɸ,_ͺ[ൟ\h"@x&&(Y _ +@OQlibaE "(?  "(?qL@ɐɑf&dG$$eGDI*$W0$Q! l mѹjmBNX+sf9nLx&&(Y _ +@OQlibaEH//~@iAPV@iA Xt^b\02#ݼ25$L#I2EDE0峊0jra@020iŒCA"@֓L2Z#I2h"HI$+rn!##04(8zHaРaVHrd (CL11Bփj Sv#79q8oV'Z M~mFMUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUmSt`HYys&Dfn֦ˌ!dG&4&kGFsk+O`j.|Ax ?^֦ˌ*&,局}\`bg.9'ݼ25$L#I2ED@ D Kbu,i4= Un)LYa YsӍBZE!ɒ TbI&Lp ?w?$ s3wco3_T ,ԟ3wsYII:I!&X  eW+p& ,6F"@e3W109I k᥆蜃 ih//~@4ɑf>xK C0Dۘ s:p90 \h ?D]$ &PZ%G(LT0C"91H1ӆf֊q3xj61لBBCQDI$&DR!dG&47q:p0lZ=Fo0mc@0@m! G$40G$a0h5I $bBdJ ʀjm"2G$ $Ҋ؁!y_._E9.qL@ɐɑfE9-?cHy2ɖBc Li1f8Q$,`&> !"'x,cHy2ɖBc""EO]qT[^amm,ܪt-xG05,.8ڰf* xr#zSj<Ӟku ?VQZG $e,5h4(3&Dy#&&([sC@10, 8iƤXb Qe@56R3`LA"L P!@YP M,œ$A$$BJ(r\r`(be LCYi7Ȅ &&xM!AJ-F׸N6ڋ<`H,/'4d"rr!E5`$Ҋ؁!".G3w \TCA$%G "4 "= < ?*)L1Hxɐ&&(X}?&:1v7eOV^g9x0.y-r?CwV|hڏm6TVw!rMx\ڏc06TVw!rMxcwr 6 ?&rr,fHYriEl@ɐɑf||ci7͇P` 0XLa= ɑfkIdk-I $QG$$d`aHB|#Q-mH27ֹڳ?0 <20a@020`ixAF"sab;[dV Vz+ܸ=ah"IFm @ZM3aƌ0d8CC LqD8d ?w8%zpy &dG$$eGDI*$W|I"h#$3jK5[nfe@5̶Σ @#kl[L@02 0oQC,< ?*)L1Hxɐ&&(X<7.wfn fԖ+vMZ]ְ+Tݪ-ړ>Jrf#wkjr0ƩT[rZ>G^73`UoN󆪓Tޣs-1}0na_ ss7HYriEl@ɐ(+n7.u6nfdȏ3va525$L#I2ED CEn5jwZJLrbr 4թp tadFFaAn\ld4"Pp)( i&Ld ]ǟܹݛ-=jrXnUF3˗|&Φj!eˈI&C3&p._UTcV.QBx`'2d3\xb,dV˗bU&Dy $mHɜ5,b˜j60"h ih`03 TY5`Ȭ(z !PG$$e (%8* jTznM3q|,/F*ZC&Ibxz!ɕ8yR`f/~tܪfL7o?' n`3wf7n70Y˹U&>\#jrv`rM|6).Sv#mGs]7*AU-GNqpsSmlT' oR7?'b[yʋ^6bAQ`ܾ\tܪuXt^aɑfܿ3w5ZFXʑ%Mʨ갛NFԍR+)mc f06rX^^#ݼH92*WqFXʑ%Hb?ؕՃn18j[ѤܠU`Z?"-kMʨ3MZ]ֶpjjܾj5snam3Qm`XĄrqV|m`D PDLaE LI"h3va525 5d UI8Ey sg lj0majKV3tQ 06+coh7- "-%Mʨ+Qe8jj 049f56ZE!ɐ&8IY2 lJ 6_3wrq7AfOr fM\fqFDmL`X4q!8ܠU_~7t&8Q$,@BCHp 8iAkC(wsB!XĄrqVÚQen&fFF<#! sg lj0m 0? [F sRX 8iuŬ ' lfCA$= < ?*)LzIHbVN' Zy[snXnSz_8zSڋ=,hBjܧqͨYMWHMV' &d ՓPT5U'@aeޫ wX=wn*M~mIbo6Z 0@afԖ+vE|Ճq)7=. KTڏ5}7Ec KaN $@H07F 49f56ZE!ɕ8yRqY:tܪa%ɫU˺Ԗ37n1̓k[RZtܪ $mHɜ5,b˜j60"h ih/而7o?*)Lʕk;$@HlJ 7ݕ"-kjKV.Qfsf'Or fV.w4(w։06,@p)CƎ$'3vH&zXĄaN!Q1t C*Q 87)O?VZM3#X`#VMAPT#! aNMIͩ,Vy[#- x LzQmk8[8i3|nS?}am3Qm`5h4ɜ(+VݟVtfq}!nE[2dGy1Qccj Z ETYmgHZZiIU:gCO ʛl-ֵ!ik:[ 7[q7 Kr#zFXґL H4/6:A,00Gy2ғp@ڋ<`U-)7 `HZHbDۘ2{hC ik0 <20itwLKSZrNt*oUGonV8v޷3wڑ6k:BۥmE)_7qAah",' lf@`wb6H< %7o?$J穜Q-׸սZΐT~+|\l"?'Sq{5,gHXwkεrrr+:BV A9"< b6sjN6ޭ׌\e&3w? EgHY _ +@OQmgH[-g#H Ly29)54YCAֆ@z -&--!1U  DqBI&XGփ݄AygHZ\5Z<4gHZZx D1 D i*&Prc"<="*Hj[Vڶp1Y5s ~fF6൘CDmL`Z+:B`j#I2ĄȔ s7ze*&Prc"<="*Hj[Vڶp1Y5t?EZ`F6ൡ?NAٴF ?!c"j.|a8ͫg iъ`j#I2ĄȔr05YQq6 ъ ZC*(8pp(+,}?$ qT[^ie'r ;s7G]G0oQY?$/^HrbI2 OъVʊ<\03 r讣n6~./~7.u6nfd7o?gZ\ԭaj+7A8PVG-k;Xr niv٣W)5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTbU92D LI2 b1Wc$œ LLPf}I $.!&V ̙?f#H Ly2&fFDI[DqBI&H\<hF=xE&?PV PaAV/St-G Ɗ Dr2j8 <20n6Zbw7VN7*vSI:1vT~҆Y^+vϔaX -yƊ Dr2j8g !9C\T~ \Hm5 ##n3w4‡mnv4= (06"(H~$AA14DIPHC@qI^25UCAXXb Ly2q~<q[$)0,hBiAٴF UUUUUUUUUUUUUUUUUUUUUUU7za\@X2;vß}xE[sj=e"3ngN9L <& BFܼ.Zf5*FsPT𚪪 ko+םa՝a֝a&+bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_move_persistent_ip#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_persistent_ip.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)57 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_persistent_ip.sh, hacmp.assist, 61haes_r714 6/10/12 15:48:34 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_move_persistent_ip =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:25 Last Changed: 6/10/12 15:48:34 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_persistent_ip.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr move persistent_ip \ INTERFACE= NOTE: the alias for "persistent_ip" is "pe". =head1 DESCRIPTION Attempts to move the specified persistent address from its current interface to the specified new interface. =head1 ARGUMENTS 1. service_ip [REQUIRED] [string] The name of the service IP to be moved. 2. new_interface [REQUIRED] [string] The name of an interface to move the service IP to. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_move_persistent_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_persistent_ip.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset persistent_ip=${1//\"/} typeset new_interface=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset -A properties #========================================================================== : Verify that each specified object exists before attempting the operation #========================================================================== if [[ $persistent_ip != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_persistent_ip "$persistent_ip" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$persistent_ip" 1>&2 rc=$RC_NOT_FOUND fi fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $persistent_ip == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then # The specified object was unrecognized /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 152 "Available Persistent Node IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_persistent_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" elif [[ $new_interface == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" INTERFACE 1>&2 rc=$RC_MISSING_INPUT fi #=============================================================== : Move the persistent IP if no input errors have been detected #=============================================================== if (( $rc == RC_UNKNOWN )); then CL=$LINENO KLIB_HACMP_get_persistent_ip_attributes "$persistent_ip" properties #============================================================ : This operation requires an IP address or label... not an : interface name, such as "en3". In testing this has proven : very confusing for new users. So an attempt is made here : to automatically convery any "en#" specifications to a : suitable IP address. #============================================================ if [[ $new_interface == en+([[:digit:]]) ]]; then /usr/sbin/lsattr -El $new_interface 1>/dev/null 2>>$CLMGR_TMPLOG if (( $? == RC_SUCCESS )); then typeset -A IFs CL=$LINENO get_interfaces IFs "${properties[NODE]}" "$new_interface" if (( ${#IFs[*]} > 0 )); then if [[ ${IFs[$new_interface]} != *([[:space:]]) ]]; then new_interface=${IFs[$new_interface]} new_interface=${new_interface%%+([[:space:]])*} else /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 611 "\nERROR: no usable IP addresses were found on interface \"%1\$s\".\n\n" "$new_interface" 1>&2 rc=$RC_INCORRECT_INPUT fi fi fi fi if (( $rc == RC_UNKNOWN )); then print "$0()[$LINENO]($SECONDS): $HAUTILS/clswapaddress \"${properties[NETWORK]}\" \"$persistent_ip\" \"$new_interface\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clswapaddress "${properties[NETWORK]}" \ "$persistent_ip" \ "$new_interface" rc=$? print "clswapaddress RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 128 "\nERROR: failed to move \"%1\$s\" to \"%2\$s\".\n\n" "$persistent_ip" "$new_interface" 1>&2 rc=$RC_ERROR fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "move persistent_ip -h" "PERSISTENT IP/LABEL:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_move_persistent_ip()" *([[ l*oQםa՝a֝a&0bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_move_resourcegroup  =einorst "$acdlp#-:CEGILNORST_fghmuv()./1ADMP[\]by,02;>BHUw{%&'*+34KVkx|}!5679Ǧe6s:m @emmmmmmmmmhT&Hd -@r5i\%#ǐ._ 9-CX.vL0dCɁ "_0$Q *XvtkEh@m8z"̔*` *( !(bmmmmmmmmCv<f=Y4ʺeGmWر 2'z;!mmmmmmmmCy:2E+=$*XPV2\"S4?se?.c$`DEטLq_?kƷJ ⢠'%'R&Hp8 yx#&&`ɔXfPdg#!rF(T@zN /B pOELA‚L(LBXX7jFXhԾ[VC`p^TaJΓ͡X5MrFb&J!n\%![Fp .H% /ہBE(T@bGmW?:O6iMQ}ruf |?Ղ`o !H2\!H2"\|8 (,PB#z{/‰Cd4|9;\80Q(;]`Rsoq?'e yy<(tRytRkPCVaLO&YEANKP]ltRLB $\ X?8bƝƳoE'GQdQpp9!H2`DHR>3X$5oQN`@ B`ؼXd6COlHYiTGX8t[@goPyhTl:v[e]biUYUv0G4ԝg6ƛ d64Ӟu8 WZNc*3Hi:AZmWQ6ӟd]x贿q$3cM3Ċqsf]g> 16na99N2R,s@bED39Se]4N,st#^^S(2HPdd5LD @gAF81TrpH$ ܨ0NpH$ @gWsa9?CcM9Sݐq83Mqa}Ej ]L9N2- L^^XfNƚsΧ9e $]Xz?ӟ!y8f8|$6ƦU@goΦtƚsΧ9A)?/ln}I8kxNN7?>á,3'OB&t^S~x_ƸV9<ȹI-1+MbbӰ\T1mmmmmmmmmj2nQ5=71eb6)@i+#dqLXhI @fA@emmmmmmmmmڀ☴" D$br+b-mmmmmmmmm kvoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_move_service_ipup#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_service_ip.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)19 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_service_ip.sh, hacmp.assist, 61haes_r714 6/10/12 15:48:36 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2ht-ml function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_move_service_ip =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:28 Last Changed: 6/10/12 15:48:36 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_service_ip.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr move service_ip \ INTERFACE= NOTE: the alias for "service_ip" is "se". =head1 DESCRIPTION Attempts to move the specified service address from its current interface to the specified new interface. =head1 ARGUMENTS 1. service_ip [REQUIRED] [string] The name of the service IP to be moved. 2. new_interface [REQUIRED] [string] The name of an interface to move the service IP to. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_move_service_ip { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_move_service_ip.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset service_ip=${1//\"/} typeset new_interface=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A properties typeset -i rc=$RC_UNKNOWN typeset -i i=0 #========================================================================== : Verify that each specified object exists before attempting the operation #========================================================================== if [[ $service_ip != *([[:space:]]) ]]; then CL=$LINENO KLIB_HACMP_is_known_service_ip "$service_ip" >/dev/null 2>&1 if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$service_ip" 1>&2 rc=$RC_NOT_FOUND fi fi #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $service_ip == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif (( $rc == RC_NOT_FOUND )); then # The specified object was unrecognized /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 156 "Available Service IPs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_service_ip available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" elif [[ $new_interface == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" INTERFACE 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_get_service_ip_attributes "$service_ip" properties if (( $? != RC_SUCCESS || ${#properties[*]} == 0 )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$service_ip" 1>&2 rc=$RC_NOT_FOUND fi fi #============================================================ : Move the service IP if no input errors have been detected #============================================================ if (( $rc == RC_UNKNOWN )); then #============================================================ : This operation requires an IP address or label... not an : interface name, such as "en3". In testing this has proven : very confusing for new users. So an attempt is made here : to automatically convery any "en#" specifications to a : suitable IP address. #============================================================ if [[ $new_interface == en+([[:digit:]]) ]]; then print "$0()[$LINENO]($SECONDS): /usr/sbin/lsattr -El $new_interface" >>$CLMGR_TMPLOG # Always log commands /usr/sbin/lsattr -El $new_interface 1>/dev/null 2>>$CLMGR_TMPLOG cmd_rc=$? print "lsattr RC: $cmd_rc" >>$CLMGR_TMPLOG # Always log command result if (( $cmd_rc == RC_SUCCESS )); then typeset -A IFs CL=$LINENO get_interfaces IFs "${properties[NODE]}" "$new_interface" if (( ${#IFs[*]} > 0 )); then if [[ ${IFs[$new_interface]} != *([[:space:]]) ]]; then new_interface=${IFs[$new_interface]} new_interface=${new_interface%%+([[:space:]])*} else /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 611 "\nERROR: no usable IP addresses were found on interface \"%1\$s\".\n\n" "$new_interface" 1>&2 rc=$RC_INCORRECT_INPUT fi fi fi fi if (( $rc == RC_UNKNOWN )); then print "$0()[$LINENO]($SECONDS): $HAUTILS/clswapaddress \"${properties[NETWORK]}\" \"$service_ip\" \"$new_interface\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clswapaddress "${properties[NETWORK]}" \ "$service_ip" \ "$new_interface" rc=$? print "clswapaddress RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 128 "\nERROR: failed to move \"%1\$s\" to \"%2\$s\".\n\n" "$service_ip" "$new_interface" 1>&2 rc=$RC_ERROR fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify service_ip -h" "SERVICE IP/LABEL:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_move_service_ip()" {#avail loeWםa՝a֝a&J4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_offline_clusterup   =e ainorst$C_cdfhlmu"#AEILMNORSTgp(),-./01:DGPU[\]bvwy&2;>H|'*3459BFKWkx{}%+67qj3Ɲ52@aLDf 0e,$( %~a|#(ېj $V6$  yA4 j*)C$VA`+  Q60+,@ 1lg'RHsRI"XP\0Jj\ᇂùZ0zR fT"ԽӄqȪqXURԃ&.HL"X j\ԽW:PxVץ. Rરs3j3t,iS F 5=+ygAi߅sKU϶B&/Z7.j_77.pMKw誼qgYir RܠQc p#e=)4ճ|z.yj_%PTښv-J ,&db |]TAwς|ܵU5/( ?4`1i7p˞iٸFnymr2x°)W誱3r6r [_FCJ KEѾvliaL66yX<ǚ5//>pтչ1וJ-#v\2WV5{ִTk%n6r猵Ul.]9Vǁf>\#W<3Է誼qqr7-Sv4Kz{M^j^՟7-p^{+H12Zm]YrXx,; 39NEK $Xb !ׅB='":p#vscJ\ԸO;M]5F+z[yN ^>p!1-ș.UÄ7ø5q+;HKnٺlݶ2 F1vKI0 }Ū:Q^167h7Z\nP^(ޔ.[>Ja\#K|'^zLPZ ]Ѵ<ƛ-gJNy`H(-zW;Fv^xe1gMfm`)wFҳvBtmnrn[bmr8k6hzMYQ ӆm [7AemUQM0*BVnZ񖪽`^SEy^2!i+6s[ٺ cFn= ]4 j*)pIOΊ=V\ Kpg5-7>lE.zK,]鹀UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULVbq2@bB h"Ń?# ʎsR`h 5ތQ-!icz*j,1<֊wW#rjUW|n5-W!%{z*Z '{f?=Q7 \[緔oF ,פO \?ڬm U^ a\ԷRN6jClSVץrs^/2R4XW5-N`z[R^ӄy{Qo|0sRܗVrs^/2S,jssQ`YKmו-=7^-Vk 0rL5!Ǖeܶ(c#)> aLQ-(>RrQь#Ǖeܶ?y.7)&`'4s3,rΛf?14.j6{\n8G8cl ^j6[Qo<W#r `AHCUcQNQo<W#r`*^8h@?tUTosoJӄu|K5ݢ܈W`6nnڮ>AXEfVRт[Ҵ;ҴIѴf޳^k5-9M`ͯ9j^9+!#z3tb6^fל?*_7y^rkjc qt)j6z4vC q#-+;H3-5.#Nm~fqsgl]U^Kx wp㋑2(\V>j^9+!#z3tb6RMIKx%xU^yi:*j!UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULMw7AL8Ђiq&-7zhA4sU^S2qd V#xヂGc<c7:<'*@J @1 BBJ`@jEcaq2@bB h"2J`XxH A`+lcXp,?Ld0!7rJ[H<44Xph&\8 1w+15$[),84g;5q Ύa?6ns8Aa*+y2E&XHHQ.l\_\yūc-U{>!*7n{xb+rggܮx[iPv2h ו kA5Zj'gM\BAԷy\P/4U;Joq˒kgܵyx,;ҴںZ8 FUҰjr28a[j_`ћlm%r3}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?3ԴA 8GnZ*)C2v8hs׼iR σ1ꪪy:8"J#^Sn}'g|.z<HH3(9H58e`ɔ.CF0 j^LLpgEskjpZcqpg5-ٻ*DISUEdч<4X8@P"fQV ,j照פEU; JC^f0~j6o a#YQ\,"DE$3dƯ5s ӌU R5`UTl+  yOs[+ gV ,j照פEU;F`(kgԷ"(%OV ,j煀thΏ,PRG2HTd jGj> [ڵ߅U<7371OߜT j[=U[F|ԽWJ|{VsQv8cmL\C$`,"E Ùn.|qH@ *x,񶥓$T?҃?ɒ*F*Dx**!#mF?\n\OT*XDH#G"X X ѝXAB db 2ZG$T-Z{ڵ|GZW;AH'Ex5F3z*Fp /~yf(smUyN ^o-棥X`lq 0d44Y@< XB75q@r勎;q2EH,9F.zXr'@Q1C,x:(737371ꪪ!s+R\-JXRh誼qqr7&n{Ql3$(sRGKF ,ץ[=iZZp5!+A[^?1*s/.OF _gܮ{i+UҝrgtJ?8|3J ;'G$TRL85sAJД;| y2E2PLa ?|gÀxJm,8Ŏgh 湨W-KJOt,v8Mel} %jS>Ɛ|])%cl|Qi+UҘMrx+./X@FtQ(T*X+9oc?UUUUUUUUUUUUUUUUUUUUUUUUUUUUU3C$:OEɺ\2Wfi9))8a[ l.]ųt&`l#( <+V,1MM+M>nZ>O^W& iBpP+Yi iԷ7rnr3/:c?Ϟ8S*Dap \CBpLlShŦm-p)ފwW#rӄ{j*oV*іV9WLo4ᛖћM_7-zp`a>-1w+"@ 8 &NUʴaʺcx[fŦm-64`0$n.|󊁠 a,gEp2CH!`8 j[?F 0cNYÕ&l煻*8"R$ F , `H\8 X@&\ 8"J80!r͠N]墪ǕeܹNn> ^gJуҗ+FJCh4ɔ.d 1`9+5/Y]le{VmU]JZ0zRi9HM\YNFvrGJуғ?s?҃O(oW=r3t- khÕtµnzҳv?EU;76jrt).TrFmzXxw+FJ\ᛌIO7IBnZ; sRqs88 $Td*X\ O,TDHޣFo|'o7I~`іV9WLoZ#!4q @A2e1w+7$IcW<@qAxx?G T%NFvrQ |p$%pp@H"TAX N6Ul.UyNw"`Bi9HM\+FJCh4ɔ.d 3Օ\ 8"J80!r3 mkhÕtqr2! q$& ϕ!4q @A2e.s-U{ ͵-Ɲ50g=y޴#ar3/:7IBnZBX7A[Ư5sۚr3tsזjӦ3~EYXV՟7-p^xӕWyZArx@FqNFvrs sRkr3/63\ 8"J80!{U̒(De{!7-p^|=)ӏ&PHJ ,$3 #9y\P/4U; @PJF֑.YǓ($]LLt 1 Py"ia ,tK|'ݢih7 ޵^-fi9X:Tb$,ْE37-p^lg*q2EH,.q'*"`$C@cK<q <57(6&UAe8R߅#pD-Bó#e<4q @A2e~AQV`zRg"\ ,` *%C3e@ ,\4s0&XؚUUo8iK~|-kjhqsETVSDv y2E2PLa/TirՁ,^͟G*˞C"`\Qc?UUUUUUUUUUUUUUUUUUUUUUUUUUUUU3C2emim #yf!"şp5/F>Slח8c_inonRlF!KmzY*5/EU;^W̲z0^2m]%ڮ[7A\RW+!Kk]Qj9KQA;kUF™!^4U8fͅmz\l#=a[[Z&g3U=D$$K{hdB% \`Dl+]rfj\F+c?ӄpyZT וnnZ[;UBAPgy:8"Jd(&qBSl%OΔ;,"*X*.DD(T,&D$A\\K{?5i`; @\⢹қg}V8PBH 9ogjhÞ#X\&PHj^wF5ޚ74sYDԼ`[nU]6C0=;sם+g5UFTAj^w\޼XUXpoEU;gx\V;M.pVg5/ȵ*;XGmU9>7reQ@2t~UyNㅭӏ&PHJ ,%řf`j!QxX AHL8,`!gܮyR$P$#C3⢹euX qq| 120g5-*XDhg@:?VHq57$#V!Rږ206\,<%鹟 %yǐ R$s"!4 Dᨪs*+8*XD\_@a&(qǐ R$Lg T8@a&< "9鹟Abm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_offline_nodeerup   =e ainorst$_cdfhlmu"#()ACEILMNORSTgp,-./1:DGPU[\]bvwy&02;>FHk|!%*+45BKWx{}'3679 X\ (,(A4 NlP,7`,c;56|L'҂+of|1 0"h3EUGi%x|hH|hH|8LF7)3Bj8(O,DtA4s""krWg'L$DѺ'"U8(O6P3FуҒ tNA,u[n+30""$h|#7 Gc2 M,Lg8Yyޕ՜ Z0zR f\aԽӄqV7tж24HAe c23vr Z.y͸. ;@a;^v">'KfVyͨ|MN7(/o9.v\l8?7+c?jX\D%4s@^Љ ր˚#˜6R ^RU^Sw״ZPoNy|nP^(܂qeȒ,#yˎ2gx|nP^(r0\? ^i9ņylD eale)mH7"d@H21h^%xe "TWg/{VZ-jO _5= ZhsOi[iug.p X[-e "TWgzNEx')oFn)KBU[Zڪ-EUҰ|1MDZPc0״fM0\Q\NSpU_95/Y}s^3#YiI5/Eɺ]TkkV c?KUrXU^誺VM5\{EZ0jHS(`nzZp.gv.6vsn\z0^2הkEUXskgPogb# NץKJhQ^;^20ѐTgByX<ǚ5//>pтU O^W(\|.Lgo7-p^xU^tUXt`qZQtgNFr\.WY?;t',[n-pU^Sp RߢǕ]ܶNNXæ5/]59{?vnyzVWV|ܵy 3ڗiug\aW+FJAlfNPE(` #ׅ*zNEtGm&2q83MQV|K#|i,ioV>DRڐnd#%0\@j_~ӧm8j4^k]nRMuYm[-Wl"EɺrFr S .[p/%ל[0wO"GEU;+mVPŭ9F R|MW>X;gZP}CSe;XGEU;+mw]nRMuU1hsOi^a68b״a'\lOt=Q%' +zp%|p;"G;MK%{ ^j6[Q$D"F=Ը  ܞ}誱;ql0]Sܑ<K`U7+ `0U ״Y[<<;Zqt+|ܫ"$y\E܍lopB! ,4;^Wd8q]*r<KkBw \;D wõ`ssÚք|mz\W~[.)o!stqi\'KUyNW 4fZ{g|Եz6B! , ڨFe״R`UU[0wR񦍘@#xmUQϝ+KNוz,/<#r!=ٺj0zN!;LMKF -oJJ 'Fњ:{g|ԶDHgalG^rW|ԼjV.Gћ`:R=Q ׌\ӗ GxMKåa,Qq'^ `xA 7'0v Ը:VN͝w wbU{.75H/3iyÚ2LؑyZ3txԬ\> 7Mw7A;E/a:p5/׋;тWUA[^眖#"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTz3tJȒ,"MW>|gӸа=B h> XɀP?J 0l1XB8O 7y"Yd><"l j6P0CҥIB h> X\ (,(A4 NlP,7`,q#f3c'nW=JGCd)oX``E;r59tx ,ە-@ ϝrGX``E;r[G00Ph`"*X@L.!` kHb$ =Qqj7lZ.W1㪪}c{^njw.h&d;^V>wv@^(M\ Ӕ \C0D(YH0mq"j[,%#H,EK@3y䊖2cBP/(fL2 E(\{Nǜ;)xiV7 Al ^Q sդs y" hEK@Xh".*eo/Ax4 ;rkhEh .cJ$XE])%r.*em8 4]Uؘ*7 N@3J rxx vV+bgTjba:l8TT** 楽b \EZ,PDk?s?҃b \ڲ^ӗCB g+g"yRɗ1\z列" Oz{NXlMW>/zYi״瀎2IBD4k @K{?l=f/s ^ӗCB `15r#p`15rj,el4yH.H$@q#lMMgF Ix3+G(\sɌ+0D<FF Icq7.q^{E7|4ڬIhуRE?ܞ<~x$4$H3FԷLOj^> W\K1k2m&gNܮx 4n˘&r%Ѭ;>xPV4ɇhE06Բ gPgRRɎäup#S˂iK&5@9s€V6hΉ,XHBDM0]&U^ ? O{VDa+ 'O.`<Ȗ'j[$i #H(hpx 4l$(737371O?>(YH K9ogꪪ`FS Rs+R\-JXRh誼qgw+n{Q/((RGKF ,ץ[=iZZp?ù ^%r *s/.OF _ж`5.!:_%{Q|mM@Ѳ aRcBxGEYNq*?ôqkE'F-㪪1+AJt\p %rLNǏו@f,r iAە4ltyd5o[-ˈ \oV0]WjC(#:38G|A!" ҃?Ǐ`9 g"yRɗ1JȒ,"˚V4+mB(!Oϔ; G.PDh0\P@H0rK&(\3$M$bj[%#H,EK@3y䊖2cB, Ɓ͋*)y\E܍loj34s+(4 >Bqg{ bPiGmh 9W-KJt(n4M?!16ih@DRaqQPg5-ţg*#T, eD*X@PƊ<& hqqr7-F`yۋ[sV(ᢇPn0SQմKs6fv?rRm tgcem`GSlh 9og'|])j$EAԷ0NAJt{gnc?W'BO} %jS Ձ' XH9oga+Uҝ =0L$+RA. N@?s?҃|Qa+UҘEbyW.HQQR ѶVdE$FgV0]mHe`!A8m3>>nZϝ]sR\uh#3x<8VydLgǏ(`sqjj[<~PsqjVxy@p; AVxy@p9Eڮ@?Y[?Ǐו5Pgng+g&>wv gnc?ܞ<~|Q$.0 LO=JՁäup TTK{:Dql|.M֖nZv;g\eo/ \C0DlShŧ/m[SW<"FTUArrq-nZѳ<[7AgK3c'nW<<4x"TUʴYʺc8S#gpD^ӗ_6- `;>y

VZ0zRA*X@0 у<ԽfYuvZ9Uw+?Ǐϕ,v6ܵy`Nv6ܵy`c?e/J[vrntUXt`qZQtl, >TH,Qse 0$o>nZUUUUUUUUUUUUUUUUUUUUUTk8rxY{sj3pW&(5fI hH"fd`Oh$&dɃ,gꪪfԽ,^`}-!`/ 7?R;N1gm Z׋ -M?ùV;qK;U誼qkrOF VUf?tj^?ùc:-+j6|G Zgxo)w, eeJg6G6B K6#,Da2D@L** 楽+ Css'mX"列" L \&&#FÅEHbj[sR %rgQ̒@Б"Dgm3rx|U4m"(*L' ^(4 >Bu,|MW>KtMʫтUkN5r 楼QzUQ-5/|.Sl^NyPj*r8 ^3 ^!AbxiV7y" "dr%gnc?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS?òוsί>Glv `.䯔KTks.St&j^#SjA;/xPV4+$D.`<BEnx<3dUc <3LO ~y"$P.`DUYkvw{}!34<@BFHKV567qxz89?JW^Q 04rI*T"G"MH3ˮnNқI[)Nٌhg'b嗞8;Ƈ D@Ck qr\nW xEʍ&RDy0%ƐC2 H"J(A$y$.4̺i?Hm)4`M,31ҹ#"rb0 W!, .f QƎF ßhN֌2%3rvZS&%cn3;\)3N.Nv(.IpW"m c Ⱦw7A1'$ܥ$} DAC11rY[)jm a./7oY[je\3aɥ7A#3QMHoqrs1cq\kڇt8𫦾D B, d@DEJ$P#Ʉ.4 @ 0 W!, .f QƎF ßhN֌2%0f R] `GA8 HxFeg\T@b;SR 7oSt#-r 43ٸp(!Ɗ3ق1<Lh{C?(i N ^DI&4Px=/3l`8DcEکǧ7AA<,,4ɂpxy@[KJƊkp0%,hAT`9nP9h-m/i(# (*Xf&P *<|%G(,$6  ß|nP9l"`qy``a|2 X?5oc*DPiPf[P@iP5JLTyb n֏UaϾ7(vсpNZ08<0x0bDe@ 0 ,0Y2&T%AiMnLq\׽&aܠr)+F?tm/i(#Tr% g;6\>G7E;֌3. ßam/i(#*@"('.pU&%gnARJHbS^8+ӃJ'wK®5MǚOܠr)޴`qK b׋F^|U>'.pU&%gTypRmn FXVz;Nv57?Im(˜5 ^-vGN%N0DKKZqIG])pM3%ɛMʺrȧzoΔ#)ůVpK Ss9<*n\n.vMdRsP7xU#SRٷoL.[>36 KK6uҊk-Npͥ4yD[IBf=pW("m)Ԃg Tӛ $D D 8PU*}E;Z08o"$Ǔ)@?@ HTB Adm8P nra9.`(&m0%,hAT`9nP9h!\@p` E% qDāoDDa-S[3ܮ|V 2x]:ɛMʺERHO 26nK8M)ܱkV'5;1w)9sH'ra$3iWZ \N.zrIMʺER4'{{ͦ]j")rm5&m7*QK/9̼_#VhП59( 9 Ir[-Ā_@q 4"4̼yR iObҔ>ܠr)޴`qOLnU֠yy<oS DPbID k rQs&2Z,<@itE - gxJ/sՄM7A ײjs-=mH_BkH *za *2/=N*9B%&AQɎ 7rh3J'p@#AQ;..t\$ яЕNF8=Dw+f.\\H84'{{ܮ`1 ҉f.6N%`@lˋ FooD@YRLh$D,@"" 2J*%DrQ&_&m7*SV̞2%O#'yR"Jf.6NW0c ZpzDhJӃJ'p 6b΋YB|׷@ ,)&MldKXy}Ā [xJL9L(/6uOBFO'P̼  g+NQ(?U9( 9 Ir[-Ā_@q 4"\5&I!,"e y8fv~""LqBG.bUnW HKe)Jor7K|'g]'5Rٵ-ͥK"-z ʪ\c"Foo?B+IAiJ6 s+eRx zсQe(HEc,hAXoRޙMw0 P)E) ^R,:S"[e(å:=R,:SЊǷW7rI#vN XB潽W0c-hМ׷RN RYĭpbARN hEcl9\c^ |: f ^+1)h81`"+4hO9mU(.*/HVRٷoL2xeȎ(HAK(O&lX9Ϟ0fz%B%l$0oUw1y( qr| ԃܮ`0|F潽OzO eT Z)>nN Q> Z)>nN h.sW7H>7ZJ9re$W0cRIrpc4hO Z)>nN RgKE'XiRe$HѠ-7')ॢ`I;4h8.\bV+1^oR23FoolԷ̩ B+7ؕԶm[TlԷ̩ {ssԃ pW؄%!,*ůiJk-l@+*\[%B.DH *_t\ښR.o]gppRUw&ic4Bk|aFlЋwDӃr#jiKe(-t0UM}Ӄr#jn$)zͽKznKf.]3*C -8=W,r69Un6lԷĶbE;1"7?1ش|"ſRٷoLRz EJzYR)e(å=KE81)h80{2nKشssNa[)'x3R+aɥ;ʐnV~m[T{2 'yM̱|I; fޥeHaWM~Nz_&RN+r)lԷt ѡ>koRޙҤ)ͽKzgJ 0%&RNč Kfޥ3HRe-zΕ 0%&RNč Kfޥ3HRRٷoLRT'B8kDM= nW 0a1siyx1p1si^xp\-zΕ!HkAKfޥ3HbL!b CHzͽK|ʐo?@Զm[ThП5 A:㖸&8EK`Nz۟r=W,r6{KK.87 @DDm`Sqs- Qji)E$.QE$/+16R1+*[4z+1o?BWTsFoo?B+IAW0c{MxhJ⊖/gЊ٣B|׷+#;6VFvm{sԃZTzdF){zܙI;zⓘsIܮ`1ZYB|׷+J EiL)'bFHIؑAvW7W73N[6-*CV 1qrLp;+zͽK|ʐ⴨m[:TV ٸ-%82w f7172e$X+v +J ׆V/^ & I#FBiRЊ<V]B"n&X,;rhh ً5CO#8 5CO2ÂiRЊZ&B 7WaN ZZka6 h3J'z qs VhП5d3KU&%gؕΏ.q9gW7oЕNX1rEAѡ>k"Ώ.q9gؕE2Z1+=깭 c|׾SJg%^kޛ%;m'?9)ז.4 $<=Yg=;`p _wM{L'.kޛ%;m'ǔҙp{Ĺ{M&7Ks]) a[v8j@oeUUUUUUUUUUUUUUUUUUUUUUUUUUUUU7qRL"(*4_-M)HPTK (@98hn8LOp.sà 4 \UX%I?4k1hA6\47A73AO潽勍.> J$De00%,hATV)hiNp<B \PTBl9W7H>ʪdyY~k&m7*SZ08́OSJslϜ1hvk@*UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU7XG۟'nWۥٍ=scM|+{)JV5V 0\` 5"}h8VóFoop|\50r7K|'&H1#&H1a *·-=g=nkToT"$Ǔ)(cG ܠr)сQҝSd+1NqƗh/P"$ǟh,\iq Y "L~XxJVJs80ҡ$K\yVyBd80ҡ#Foop|\ \|o?BLnU֢/,ѡ>ks4$ͦ]j")rư$=O-BLnU֢/, 0`JL4 o׷RHIMʺERbVĩDI&S QƎEk1Y8XYEc8RG`@Ƃo){&m7*QK)rς! K0ԃ ȫ])rfr4)WI9{s9)A oS$\HF 6 73.L0筦R&Xn7rocܮ`ƃ˪A I#FFooʏ$\HF=ĭ*BLnU֢/&%H"Ly2H4p+\ъȥ9'rB+9ſW0c@,*\"*h/g4B|׷RGaIK.z$#bVK JsG.2pXiRe$HѠP]깿 of]wKM{L'ZJ)js-=mQ;9ZpzD)r7(we᜗ů8pUVocܮ`1qwً:.`F8=Dwً:.bY)& TDT_(4i3Fooʏ@,4 %9a *&P <sܮ`0> \FooD@YRLh$D,@A^4=a,brS[U7Nd8$d9aϰ/2ЊǷ)G"(Db$"*<@y1&3^LnU֢/-50[peG"&(2xS겣,8ybpvf[> \F5nWyCC H1 @  iT/A1ų'~d,z *qARExf5GelORMGJ"&B?M )z fx1-V?,:@-f.|@cɔ4a`p ^TpS?HPTK (C1R;--fznGsԃѴm`ƃ1qwً:.`FzZSJv~VyBd~hП5RLb n I^VNs'L#'O(Lc?|pq$d/2Њ)g)G" Yt[\R-~8$PcX v[[Nͤ8܎16W0c=);?+<2DI?4hO&Mldh7NͤJx @/+rȧy9&PK|'&H1 ^d882xyyEc|TBU߷W747B)%eG"X"8pŰCuRs#rH>ާwK CuRs#r7)G"SI-@f /2zXЉr$&\(d6̞ rQs 6 ' VS][V̞BFOkޣ 9yyUaϾ7(vсqTyb @itEJ Lhx \^-S?=hhq"Ly273~Z1Sa" J X‚UXsܠr)сCChhn loYםa՝a֝a&5bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_offline_sitercegrou   =e ainorst"$_cdfhlmu#ACELMNORS\bgp(),-./1:DGIPT[]vwy&02;>BHUk{|}%'*345FKWx!+679V\f?vtV^78YLx]-%ռ8N4B6wv( &bD(p_T@(*6$Cj+I P LU&}'NäfA@3@z Q02/AB$`Ty3*TH58Efv]k|7A u9.hn"nPG`"%" `7S>xj8 (<c$ QCQWp0Pɑ0w@& (<c]~A"p^`> JC޺` A-e"`i!@j Uϴ$J[RˀB *j<MW>:wy:v`?|)Ah%j?|F a%3a%޳^V3 ibĈ.-A{ &ea/Hn̡Qb"<ԼaBdJŎ9WZm]Y˜1P' 2!.@Rf j[UWkWԾF&K?|MW>f)+K|Խ8*[QcNnP^(j0\ܙFlo{ktEi߆b皗5/,'. lZ6Mxnn\Ծ7(/o5.n\N5/EU;?z{M^ Oo32pwV5qփ8FL5/ F R:wZNFm楳c#s;c)KjB`dJ c1N刀,DHcgXz3jOӾj6{ R|MW>Ø)oʊ (K@fKf&`Pvf0jHSʊ (ГxEO ϊ=VXiBqL,,K{?ϛ?t@bK370&0uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUS0vQXHP8ybA4s :v\x,\Խf* aQ-(>!sRrMь#Ǖeܶ;.7)&sJOivU68fohclOtpzyJN2<{)@x`k5.;OZ%z+67mFn򸌹v*R4l3r{ƣųtvN5/-T3ӕW|'Upkj;^7>j_ZJ-GK|w`eܶܧAt"l`uz*JsߢƣԾ6'{9B zX(GV?9|mhN+ץw誱0wЈAKDq-"scNy.fW> RU^Sw3jM^k5-m|0wЈAKv4ѹk55|ԽX"w+l^qqb<?tUTosoJӄu|K5ݢ܈g`z6nnڮ>AHEffRт[Ҵ;ҴIѴf޳^k5-s0v(kB?^Az3tl9;*ͯ9_7y^rkjc qt1j6z47+H9;-s^/F[czW;FvvVj\F+ ;1}ГxEM<M5\BN 3;<<4Ro8HPYǐ$s?q8/*@R HgrUCP!5&*MW>ГaP3 = fpH @N*LAs3cfW>N1w+4gܮz{M]Cgܮy"NA ϝrG@1w+)xD8<&$LLkH0@#`ʽQqj7lZ2W1㪪8c{^njw.inLUUUUUUUUUUUUUUUUULٻ v*|#-Vy\P/4UArxPV|ܵyN 楽ܵy5@vQ %isrkP'ҴںZ<҅@;Ulo4 UF9CtKte[j_`{ћl熻uY1w+)wLgꪪ%sm g6\.M֐g+m6gdm؈^00 楽 Q (WI P LUI4$qtuU@@?‚F,A/Gh(TY0j_#vu \jCzW,qr7-j3p͇bg5-t`z[vGW ͯKr.?k`t`OgꪪlƐ|]))w\"H> \+?ӄw+<<0? M<(*?|>F¥6K0p 0|akZ.yj6{ sR(Ҁ])yǾ YmVVV:8V0?TxE4Lp`Mrx+01PV|QJaa`j[UUUUUUUUUUUUUUUUUUUUUUUUUUUUULוQ 7h7Z[ykZV6f<%'Vk̶Vc.nٺ?tw״@iᚷ=yf:jiZm]YrUUUUUUUUUUUUUUUUUUUUUUUUUUUUULrxPVz7-p^h&MuX' \_=fU/cfW<5ٸNFvr@\ j_oI7rCŇD <*! ki*|%q7nZ!oѠMϞy@0&.mrh[?q|5CŇFxaV F00 楽`p8D1=Ϝ9Z0zRgܮxkZ0zR­!$V&&Ybb732ۙ㌵U36ԷOt5zЍ3(+7IBnZm'#;I k`h nOnjK7Ixf^YcNeaVWV|ܵyNU\g‚r3/<7-p^xXX/\n6ܵy738HPX (T`(H($\,G "T-Uts ϕ#`0@X"lgng?‚ו kA5Zk8X^hR6a Hd  Hd /@X0BaQ|@-#vuƣOt3z֊{egi`0@0(yذ2%ArnfsqͿԸ:VAZ ו~nZz[;UzPg?ټ>wWh|M<(*Sl&<2"Gcj[eJF֑6Y ,r" ,2e,W80|;#n kf ;8+;8:vs?Y[?הC̹H5<"be.D[<"be&\L9  #n'Nۥ\MW>Ì<MEKD ʏAJ%x~gR %r (\\FFڍ j[sR %rgQ@<%˳mڮOϔ;곋 XU0x""Gcj[vRm \Zqt+K`,/3qsUA)ZFg$LLȋg$LLˉ+8Ȗ,TwW#rhލ7VJ??y`Q`iG"eiϚӳG;ɵ]ϝf7AӕW3|l.FрN0[n02avqVvqt@3w碥AJG ŊgB MJ3\_ ~z*Z!Xf ~pqH% g+gQ@bK371%r0@# ϊ=VXiBqL,,K{?q꫾ \4PƯQ7Kҹ:6oK;g*#Xl&&YE&&YeX!,W-8Gy0;loj74s8|4yb Dv3AY7-p^xX^aAYGUX._ R\ETk yD \yD L| <l^{L|s+>FN``;QA4s KtMʫ0,m[`s]=v5;g5-zUQ-5/`SjA3y .ɃG0pzy<=fEUDa+lQQ5F?Uv00 : |;T;8 HdK(<` <(+>(Yb D|,/1q|5 [kAJ ogꪪg,)keR)\l yg+|Ú?EU;R+#ӼUUUUUUUUUUUUUUUUUUUUUUUUUUUULٻ Py24xQ"$JjW8j8( <"be&*HF (լG8- &F(<@gL01ɑ‘V ,j熿 O{V<1TU^SkL00 楽[ O<<UXC=7r@Q"4q(THz8WEƐ|0^@x #G%K@Q11Btq*~{kBDq_5-UUUUUUUUUUUUUUUUUUUUUUTmj^rF+;M.p2j_%kQUˍv7F0qW4睧gꪪl犕/G DUyNㆭQy j#QxhBDB*T*\@?6ns"<(%G'犕/` (\‚R_5-(THxHEU;FZp%b9KRږR6\4@-鹟 =JBDs"<($v g q籟kBDK =D yǂB$(PBG"@A"b:*8p7j^NU]𞛞mz[9Us7H9;%Z[4ʷ! L5h%b;ܫsiѧ%5p)/HE;rDHUkx|'*349?BKW{}!%+567@FVYqzk;h6I;6vf>C96l7m6iowݥisch{NNk6N,jO:xĬ\Bif<3a Xܪ:R=+3[#{9r ܃;a5.'+ XqԞjݥiXՍ\Ջqøޕѝ;+5.'+ NbN7ی1v9[.75bHvZӸ5/Xb9Z3lxĬ\Bif<3a f#K6=&E.75b`r Qcrӄt\pG,jUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU-5^q! 4vs6NEzpmUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR Z!8GfZ.VSC}\ͯV͚V|c6 R(Wl9YNIO 0YbK"\!KzґӒ7@"b%"c@"b%."_@.0UK*X?|4\q-+M1¯x8 /(&$\A "dJ ֿtb,(,QBE*,r$  s,f @1L$TGy`p%rs,-b9yb`%rQ> \F &"Xɂbd{0@ތcrU_mZUUUUUUUR5&N_ڪ_S0%rŅ9o_R:rFh$LDLh$LDeKH/*%,F ,WlkhYN8UA @$ċ("dDL@qZҵȔ<t R(W3Z2x ^ P Hc& *"z.pH䩩m|Y6f6Fyܦl9C|4ՌԸFmˍ[Hrڞ())w*$PHLSH(DBaǔ"Dǖ($PD&$P !x ₚ a0U Ņ9o_S4%6N`@PPf,,!Kz|*L@)A#xh =.|y@w@gD &($@y" 0 Oc<17+ _.26Z ,d ,dqp`8Ȗ,T~i08qWN͚a@ `*QWYZv=-͢sQr08gcуicilz\U{|c$yӬv&r CEKD#KX#lzXũ'Ks=vMW6y9 U>1+@RdǘÁb X%,tR:rFh$LDLh$LDeK{"~<"F7Ѷ$V*`BC0M0b8Uk9v5=JԾSdf͔  %c1Jl_m_V/Vt1/Va> XT 6Mo8sRYNJ9j3nW ^"e; #$o DK.DƁDK&\D@ "XRԼ8̍ĀEwWvrt<ᚾ ?Яga)4ӯ@x%cct&\Q3$vm IdY+ ]*e{|Լպ`p8| <~ǥp=qqj7!¯+)r0d8b EHỞ1aˤPɄ `HC"caSo LMJ#$o DK.DƁDK&\DX*%,uUEf0!!P! 3d{v6ݏKb3hlz\d\%Y`mX[^I>j^v049ɲ6:PRRA;EA/qjgRB!UͰ{^o|"qq¯xAJc T110h$H dbK/6(>V hJl̢uX=bԷ?0 .GmK<٩K0<$Ug(p{? <~sjMze;+Q*5k> \bXiפ0Ӯ\Խ89<כ+f[9W*1kjx+,-A8PVQ  0j[+-b,(,QBE*,r$  ̗*@ *Xzm dM|Q: ~*1+{ ށ"OBSdfe5A8EM!4DK0LLQqсÌzR_ "X *\EDDD2\L $bh$e7,U#r_ FG`05 B:ls_c`j ,d12EDWv-|‚$$PBH"@@qp$$ LLb;A$LD_T!"JB@ixknPV(ٸS@ _ص @B%  \8d<130{36n0TX~QA$LD_Vk@(!"J @Joe;)3Tq/zKfv048K`1[-+sY=|rFqek^c`j ,d12EDWWWn("XRM_ₘh |`N,fX[peaabԷ?oW-SF 5/JZ.VSM#$o DK.DƁDK&\D@^8mFؑs_c^ J$$PBHH 2@w3(YNe9aci  Duկ6f75b'$oQ@3!"JՋł8܋0$$ LL̢e;PXŭcj5cr9ay 6f`5e+)V5cpulz3l[^/Rbj6\Nϰg!ؔ7R˚co13c͏Kj{g\;cpxEG9#Sm%r’ثכj^"oV;"TlMc-{eb3hʽ͢ \F7oSdgbIR+Fؑwōo\Kltm$NAJK+.75bHvVj\O6VKt`v-d=%lR͢ \6=.j_F7sV/bS,#53kQe8u?%jMui˂ jZyXՍ$y\qqj7-3VכF R|7'ZP}AN#?)ma+)y\Eڍdmc`'kvU6M8faF'\dcRi^# _8r#<J7ڟ5/tc+V1-͢?]܇bjcԸ|3jy|'^?,p Xf~ ok^Np17y?c񳐝W-8l+|"F78F!F ,8?VWNp\px?Bw \,oEKj_9 %r7|"d`"k56rTԮ|YNⱿW ͎<1:;楜lc7D"WAycn{ ^Jc5c—.`ycH3ٶ.68ޕ=7V-yGmC; #gf=уlvR88fRсÖ-.plmqi\5-cXIU5/PX5^f<9cV7*Ϋ9q 곖ǟ\w GxMK7'i'iZC5cr5ba=1e7sgiK6?aӱص6 ]VˍXj^1+Aj [x3N"z0Jv9[(yi:.8n#5cjFm\pAH0pSs`4ҖăɑZ8d<130{2+])lH;..$]kqq5e;*SJP  6Fa3P-ɏ(sg.pE7,ᫎ%r5/Ews_cRؐv<@ xpP"%8ŗ=^Qd 男R#6K7s_ c.+r\VnSdf5 x0vqa *Py!lRS^lYߵ5N5/8Ǿ  qaI5j^y&:kyRYuaKҴثͧ. l$ hH3:e`$ٶcZ0zRӄWlEMJV~Kу hFO=\r8 %i/VfoWe;XSdfe3*&`HA䅱I\ŗ=^Qd8GEk甹q8v:ٸ+zKg)3`1[Ú?Ew*ysR+ׯj^#ggibr-qV4Xg宔$"` XׂøzzW;Fv5/ۋ&?aӶ˜5/yUnRMW/ٛXGQ*6`~GmK ҅|'IgW%^zKP9|l*[^uY,e&(?^ѝUya3P9y^CqciiYzVOB$MxirE4Z\dSc2lZfGz\%b"1kXڪ)zpsy6-:vNvp8EтMyScdRyK5%klIvF\#iD#8gaӶ5/,ozmup5/8G<;|'ץafi6卪XܔcȵrXݯJ0ٰԃNA+,o6 <Ԧ~,nEmUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR8͆8+NgԠ+=)UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU, lxofםa՝a֝a&<bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_online_node   =e ainorst"$_cdfhlu#.ACELMNORSTbgmpy(),-/1:;GIP[\]vw&02>DHUkx{|}%'*49BFKW!+3567qjS]5q00B8;``L &b"D1Ķ XPп (PU d8%@ R6p8$&" @0z}'cf@3@ z-U 0 P$@(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULF84yb9k˒Qqɺ*n5o6<3E.?nxdEp5Ǖa\=g>?sp9i9GZlw,);Q7<8sVV,vE+ j:2J@O9]StKsԦzw=M ܶ7oSlgfbjsV;գmLՖ `jޝѴz|գmLaJr ]$R`J qcV2Xg5oiÑȹSlgf7-Ғ#[7 ^'r |nK9mo_iX#5svssU櫥f6qhuq JQƗL|nh^jC5MNj@x%<#J7iC3ny`g95[=ӃLڐ<ռN͓tc,qqrW- 1敟Y68fohc|.j{pzsekԄx>;Slg?V A& ޒkl7 ^@xW%r/6 V㌴f2OjSp5oVMX 3;7\<2mi^w|jF7櫥 ޻9+Ls. y^ђw,lx?w ܇0o=Ok@5o|mz|W~Ds. !oa{kts2SŃAVif]ffzV9Azx!amiA& ޳e1a[.`yc<&?tVXޝ=c<#rAtմ7AMen0o5naCB@* @V܃q|(rH84yb9pVP ( @P~ =A@qK3.W=NHCà gN\xʶ@" <8&9r@"C gN\yNALJ3.W=%!H@0pp6˕RJ<8&9r8!H@@pp6Wn7p^tDC gN\|@" c?Et&$YED uXn1q|s C^qjWlZojܘUUUUUUUUUUUUUUUUT i,ק2ɟj:rs]+N;;V cʁ;|H pqK2Y2Ֆ:Xä+^V:z)gΜ\nK?tm)3E%![6Isnyd-)-#ur[p{2@қ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU3bw, HRqp\\Gw;pp`vӃ?ܦ*+'x ƥbx5m J$&PBHL D<1D]$A|=u@@{?ܦYb D|,,G*@J0TP1kJ )AwL,-99ZV; H(TE9UUUUUUUULcVrmyUUUUUUUT) 'ryogr8nFh$LH%Ș HdI/`HyŊ=kl myO3|ZNQ֘g<<3)R"LLq2Hc?g)hE.,AL"aab<շ97#Xl&$YLh$LH$ˉ yŊБpo9m8vtŞ,#=;?LNG -D ,2E X*+)3E&XQДV qqqj)3E&;r=c4RkhkJ(@bHDL8?s?s52j{yMܧrϜ9y^S5o|jB<;BN9j:rsL H#Ie;  HdL$TK fg3YyNi gɑ$ &Dh!*+.ɑ@# Py24RKA3fxk7 $-S_@dqqqj3.W<* #G=AKHG| ܃@xJaaRQ$THHL~Ƚ_'alrǢP0..#[{?Ep=AK =AK=AKǢP0z=ǢP0tB'G38>;zLIcf9r.|HLE.DRbK%8m(<4ށ(TD,Dċ"`"LIdM# .yj sV^S= ޴YyNㆥh$LH& *%`L(+@`N#[{? HpnI%8jXx, gK"6Z ,r&4&$YeċlyŊ^S[ljwW%rp<ᙾ (|!c ^S,a⽋KbŏIcf9 _7`"@xWcY3|X H Ŋgg+gΜ\I`H$6j熀w( d-)Ƀ `LDE Sj @%NG -D ,2E, g,Xa wP6mw&M\= $;(w5o|@fi7 XfקVIdm=F.+҃qiz|W{\c59yo9q9mZPVVVY(L3k..P5[>j"-Eޔ&ڲG zJwjB<ս(F6M^\ᙾ75L3tK}rbuոfקsV^Sʩ+ ga]nznItYaz5oIyN!j&5[>P7sU5Z8rz}[VXc?1\٧ ^ͯOg9ZRiUUUUUUUUUUUUUUUUUUUUUUUUUUUUULrPVR. @rXX5mTb xk)aK&0Ղ]aSqp,,GeܤWվwn{Vוş" \E97#Xl&$YLh$LH$ˉ3Ş/skVpӹMMNcpd$,~ew9M[6kF \ol;Oj8A>V`{]=3sם3^VX? ذ.Sl^NyX,0GNwHXy> $LH"LM <1W=%m z/w/n9e=h@?‚i ~p9-yu3h=‚yở;V M`,,Gn|# [n7p^xn0հ? gg90ՙx܋'rք38>Nn7p^zЁҶ*@H,T?s?s6!^W8aeӹS3ÓP7z[\>LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULrPVR&&\A$D a R(@bHDL8? HdD}V HRqp\]VE97#Xl&$YLh$LH$ˉ VnR6ٺf h\L|M|>G_69@<`Lp6j8׋=NNj)4~\fɺ1sm~qZ>SjZa1}<Icf0~/(sÍK5+lRU5$~V#4,g?σs|5S?=DPQ"ɑ?LQg4nk蛑"B@B% ׋Sx܋xHL D<1D`EN‚c6X7(v!aM=g>| `rJ.97A]-Eޔ@i*bWKQqt;J@sVmB)5e3kܦ)e\7 wvt区jq#sn&BRrNG` 3R?l\+^q9X7*/9 C) V󑁨aNC5jJn=:h9L(+B)uYb 0jr.|aO@H,T?slcUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0kn?ӱd` $t!U-b8Ԛ֘f39q]M5[=-[`IcfuzSt--fNN6fN`͡ H8+ցNyم]-R6ٺ--f7P3R6نmzzM~fXͧwlǂN^Ny Bpc.yK5rjBpޒyO3i5y[Kp7q7zpM-[͵ƚ<·RͬWr s;zGx?6j=HDf?'[`jj5-^7M%9yp((T~Vה7޼=ϔ` 2bKP>[xܗZ|櫤{ˋfg[`R6ٺjYp(TP|9=u0o2[͵ƚR6ٺ UrJl;[vc5q7^r}` ʯ3BH>0kk)ޝ0 `ڪ(қ;A," "^`F N`X =m"`q!01hs;c)[jap(TPv3Icf9 _*_h(_kařx4J!(ܦ$fT'rc#A8`/3G.b*5iXJq^x,W HLV*5iXJq^IAtoOřiREF+ N+OřhPE Z1k sdȕ+JNHEHEl7A_g+0 sq -j)3\8iAs׼ͩiyskg!5/SJ V"fj%i-sN-njxn pmz|վSlfNI%FZt1q{kZ5q_[wP6qk63·j5u t Yy`X'jinڷ+JNZ?+ fVZPz{Nc0]dv ښv?iAsV'zK/)B1;[0&TBbM6p#汕njxG|',5c>6WO9y^S]sp5oI:gH,v=$DMPUkvw{|}!'*,0BFHVY%+35<@K4679?qxz8W^JQ pIc  ą *$DXXRF֦P4h.(2n]k]UzT. MEM2DD",   @A`P, Č2Zׄڐ'831!aBD "<qQ!P,T H@A 0֠PmE&M˵z *Pʅ33  0V*Us5a)0@ Ņ@h< UGM*PҠA@ &\R]M+C^X>pfpdV]颻R]M+T-3"dBy!QhU˵Atr`YsVZA Dz,  @82$d̒e.VkmJpfpd"/Mp\"^V]颻RLև+4 iS)ꏜI52ƞڲMڔhxHa2ؚ]"("X>& `DE*(@T`H| i  Մ 4 Xq"6 ʁB`Ue74ڲKCJV0`L *`LF`\P(@82.^h@8<Auڕ%46.LMD^ڲN VJ# ` x4Q ZH*,(@H( 83TH@!xz0TI N U\l„Ӌr+4&QTKhM 8ѓ0X4 8j b YP4HL*{VPiwiSa* "@s^j:@^# :,!wHGQXD ΋ 38RP@Pt jp&IZ b p՞s5a)0@ Ņ@h< UGM*PҠ3"6%Me Պ`PYS"6a*."8$Ȑ$(@bHP\Dy"!L}GMͽ(i贩wiXV^Ք4ZT44^\0 @Kˆ8A HXZrAŒ.Q&e#' HT$H`Uwh^R2wȐ ]8aD I $D":)e =. + KڲJz@KˆH yp@H$R B'p%$i0$D  H$- FN8"@{B D`PF2 K(e =. *:.8q0A‚dBHtIu6WR4^UY6{VPl4je74-BE2ɢu$kUz4j@Ms us (i]VLɘk.jU\ ܢM"(km&@ѕ.4U Q3&cMYN9@!xs7ZL!@qI5zn.P"|mGwiUli.az2 8,YVdڑW(V""@HX˽7(wlM3PG6j=>D/$=j2l:jТkMzDɥkAz{VPl4c 2ih8nmGN:5I""@HX˽7(wlM3P EG$ܢM\naLYva{ڲeޡkPєM=CE/QSsj8q0I I8#r=hQm&Wj@QVQU=jL liucHՖ,hP v@ͯzAjijGAb4+*S,R(i趒ZYp&hW(irG@8e{@ojTܩDɸi5vRM/ 7"W @#B9ԩ5V&tj(˝1j)MVjDIJ jUԍ&(8$@a$ G&D E\^MG fY75e0MG ( ($d̒e.VkmH㘉 "Jh@8<Auڕ%46.IXӑ]5b YP4HL*{VPiwiXT (@pL4HXT $D kylj;`(40;h 0V2ЀIc  ڢ,XT * Tqүjz-. * X@X0X(H@X0MpX @$;bqAzj^0(@@dp\\ڭYUY6U$՘xT 28@.w=jHҦSEڴi{h8E5^-Yd^&T*S,R*j՗zn.wZL=UY6U$ե +kYVdڑW(VaD“UY6U$աjGG t-YG5 W|pˇGGE2ɵ"Q&«*S,R*j41A(;eZejE\MYVUY6U$Հ(ɈD@Y3sjfU鍠l<*Gͪ՚fAxTG8㼙9b䊋e5zu6e5ZUAe4I/B^j7Ps Z\ S^W$Z;1c1c1c1c1c1c1c1c1c1;7OyuIC D$kaᨙQ!^Z]T=^㋽CJU˰DI5ț;0BHLL<5*$6]KCJUqwiRLL=@!0xAjrMr&Îih9LMUID=y A2"DĆHf{U'qr鉨eeD˵xx. *U .: .TʈI5ț;-&Nj!%P{\z&I JP2**̤ǼUPyTL&e).8iIz&IT/(P\\we&z<^P2U2˰;Vi*e5`AL\q;e2dDfR( a;2d= H^P2DfR*e5a.wLӿ H]DfR*e5,)'tih9W0i2p iTT3(Pr4*a.wLӿ$Ҩer4*,)'tL5LMC25ZL(JEC62D@es q]7i;D` aᨙyt\\z"dE !XZ]Vܼ<>8!D`t-. p;(a3-%0sܼʁ@e%IM7/(P(JEC,{IPr颡.byYDU.*`ܢM*M 0sr̨wLsN {F e$U[AWz M*-XIiThfP2r4]4T2®Q&A˦C0i2b+*-(P8.wDU.*aW(JEC &""Liwe&xjrMrW0I5˒\YjrMr䇰qI5˒=Y3p\BԚRk7yz&IcQ͆ZM.c1c1c1c1c1c1c1c1c1c1c1c#$=hQ3&cMMJM2RkzkI &kUArTqd˚{RT/A\a3)SuUkk6wW\"H|(a4LSZ,sOjT(=^a3)#U7$Qœ.iJ3 HMG M֢&\ڕ7V@m(i5V&ڱ5^Msp"H|(a4LSZ,sOjTYܢMZSj1c1c1c1c1c1c1c1c1c1c1c1;Z`AL\<&2L&e"SYyQ&EC3ܢM*M ;2djrMr;s qMP&ٖn.z M*-7m@it*e4P]C֪/MsUkk$<wdU2-2jmePEStZ\d\k*-ZN5V&rCxkQ0sUkk$>ԡ 1A(\\!<5Rx95˒ P 8TP10`10 =2Uzn\h Xpz`H. ܹ`.Î5V&rCxkQ0sUkk$>Ԡ:!.Y3L8{&$.H|C0$ѵmj &Mw^"erMUI\\Ukk$= OrMUI\ZR 2dVUZ"P Y3 c1c1c1c1c1c1c1c1c1;F7Z䇭"@XTW}YUcIMsu;F -U*ZMj(,Ic1c1c1c1c1c1c1c1c1ZL=UI\Ba; , ʍ^1`8`1`8`<\xp2=CSYVdڕ&$/. *te#((dGWR44\$H F\AJ&I7Z4]Q*"Q3&cM pˇGjrMr䇎8,/MUI\% ;FZH}5{PH7Tqˠh9*eRQQ t]]֪iԣFkMZZHy0aRXT  j^Ք4Z]TˠcyqחAuް(Iyt]  $H j*9$n2W "P2EG.4ɜwe=eZejE\MZP2L9*S,R*j28HɒIMGCJѓYVdڑW(V́41A(J;0ADUI\E2ɵ"Q&w;LY  FŅ@h< TW*P]w4iv{ˎ;5`1G\\!<*뼙 Arx,Q&tj)Mr5`e% $ՀjrMr䇰jb5V&rC'DIG4ÿ"kZE2ɵ*)B a(V&M,^YJ$dR $ՊޡkD!j ;20a5M%dn/D!j4et2鍵cL9I<Z 41A((P\\wQ&(sUkk$=*ADTT{4efI<Za*S,R*jL,2Na¤aP,$&.ʼT]]G.L9T] B28҅5jb5V&rC8HɒIMGCJ;ViADUI\AuLp@ @0i2b+*-(P8 Y31c1c1c1c1c1cwd`kQ0BT֠MJ6A9*EG$ܢMZc/jz͗z;1c1c1c1c1c1c1ZL^7c (5pXX DIX`,l,5Lmr5P]w 56k &.(&D8H@8P\\ MX Q$.H{AܢMQQ nQ&;"ͨZkSDreܣ:QSsj:4+&VwBrTrɤƞ^e76QQ uAv間'AuL\T`P@P/c#\X-<*뼘PaQ0<^G&]= +kU鍠nQ&q1m$56hj*9$m$wLɝi2p ADUI\B@M ,O O Nj@, p{qq 4eԦ\euS.іܢMt(amYCOEPұ2z#cOPs qHˆ\:8wHLAʹDMzch<۔I.aeD'D!鸲-@(04c#szche76(60ܢM(,څ UC)n"$$@I.c# (8Ht, &.0$H`"(̎"$$@txUy10"B "(JW0qY3zn^8(48¤(xphD`TX\A$l<=8yx\dt=ёǹD28p SD5Qy!"Izn/$>H  $i2qǼˠGX$H EȐ AT] BD( a;ƞGe.c# )"@$H'P]w$0 "BDJW0qY3gM6]L liu7,L &j2ǁAQaqL|bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_online_site   =e ainorst"$_cdfhlu#.ACELMNORSTbgmpy(),-/12:GIP[\]vw&0;>DHUkx{|}%'*349BKW!+567YϱW޳mpі)\lM!)8ש}w <|&| )[ւM[|%|;mJn#J;^l|&id-Ԧj fv oeyek ^W?7 'rԌ oWK|wdqrW-7)6 >0]:%%yÊX٨5o|`{cޞ #[վ6nN]K5|"l`e[~3X˦Kςս%,'r ڰN6׸6w[7eσұ|"l` m{M_5oZ 5mN)` ysD97Aڲw>v=HG^W`Mx "m,t3tIqi@ٻzvG}v8i6;kqu;歰o?;c$~Jn6Ŏ` ʯ3B?o;y^r󹻔jc qt1jyVyv9X7-s^/F[czw;JvոVNE͝o c Y{.75LvZԸ5o<iM{c$~Jn6ņjB<վSklSs^/`J 0՗5-HGIcf9X6.? G&(hӼ"ŧ0"F0z}'N ghB`ibL-HB@##\d>!CB0`VJ*ԍ G&(hӱT330Z@0 ]l@ "$ .(Le ,gΜ\:wHCà gN\xʶ@" ,xpM:rs͵5tD <8&9rce:@" gΜ\sԅ LJ3.W=HE+ 88X?t LJ\yy gΜ\M)5D <8&$LH$  ݦb 0ʽcԯ8ش0՗1j82YOs75g4&˕ v:|# Z'q#*)R"(*2Y2Ֆ:Xä+^V:z)gΜ\nK?tm)3E%!LgEt$BEDdqX^.. 歽w*@)%;RBNÓ箲K59g4%FsГg-%熦#!Ó箲l|R;**##JEl|R;…EDdqXXMw*@"'raB28ԬD\\,80&g>R\۞kk;Jxeirܦ UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULr;`HP5+ \շ*@B% q!05ht/FN'NasYl@gPVe"\@ X% D3G1j8 jM861Q\4IӼ\\[{?ӑr5@"bE.DƁDċ"L|xj@"цfZPpL?EϞyg1Q\4> ܱqpW5mNG -D ,2E!"XR98z?J\o'r,gIӳX AJ,AbeˉDDP@aҶ3bk%6hj@ HLq:ysDJmI?>Xv+oi F+tek'c4RkY0e"\@W5mrޫog>X*+)3E&HQДV qqpW5m[GZVM)5yQlTb Tb$ "&PPa99 0՜gxn 5sqyr܀<)35SД[*σ:~.. 歽S@nʶ\\[{?Yp܍a HdK1@1"ȓ.$_ Y{b<Ўxͯ)oI:sҽ[-`n֟3q$~2޼1x%7e*҇֕*@B% (u=\<Dz*(T.`ycT4e[{?ܦ:K"\ 歽*#*A"!3kJ(@bHDL8?s?s1Q\4kjqpW5mIdSr5@"bE.DƁDċ"L|<< gB98z?6G-'(Lv]JOlavWZ|˖[3z w7 Y(t%0pB !LB gɩ3֕)R"&PRň0A@q3rUmi@`lK9A!Bn7p^gjȧ#k Dċ"\Dq"x@ؽ4#oH8K^V2髷j3q$xfՖ5n<MxT.-,3IiM26{ᨼfjSt\l.c1Q] MV2fE DR(LHX0$(LyADA!2E`L \շbg}Vx8PP\\[{?t*L@)%W<4g|y@g iN&LPLeJ"(<45jV^h-,r8nFh$LH%Ș HdI/^ QN ܩe;YҘ1Q\5w,\_0e"(*\շbk%6hj6#Vnqv5[=ύS?y[ռK/)x? ܵ!N'NUUUUUUUUUUUUUUUUUUUUUUUUUUUT9r &F $AQ i$ K HdL$TK fg3 (v##HHL$G TW  &GAI-͚TwG&(wLTW ~ɑ\շgN\y(TF? J,fr.|HLE.DRb: . |i$ H @"bE0LPQ&@b;֒K/)p԰X-D1BEDX =S og . |i$ Kȧ#k Dċ"\Dq"& ܅x<c? X$K*Y9:rs&LPym L٫3wH> <3D &(&@y2`~5La/x4ybvE97#Xl&$YLh$LH$ˉ/Dbu+_8i@ٵ;]5sp$~! Cl{r7O\ק)b6>jzK%ir09qX/Ok[FVyˌ)3j҆?@a^1qryVa~j.=56Ֆ:8Y3| T1A@? X$K*Y9LTWBSlfMoUt\\[{?s |errM^jysDy.p)37xn K/)y\FvQussV#'r?l\+^+\zYh ;6zPNYvgʏ=9r;./PVRaa`j+"=HPX(T\)H( .#\P@QRE5-91HrK/)tUH ~,zw!c 5zce= M), !AG`&$Y ZvZ5fDTI(%GK *X&391HrK/)qf2gjR9_Ykjff0ji6SřsԆ,RY(? r.|Y9%9b:H @"bE0LPQ/XeeZP6mOu\c?UUUUUUUUUUUUUUUUUUUUUUUUUUUUU3G0@ٶ>zJwB<ս(F6M^\ᙾ75L3tK}rbu<ոfקsV^Sʩ+ ga]nznItYaz5oIyN!j&5[>P7sU5Z8rz}[VXc?q\٧ ^ͯOg9ZRiUUUUUUUUUUUUUUUUUUUUUUUUUUUUULrPVR. @rXX+*@H,TKj3aFV2[?t i+i|Q;pp`vc?ԄpyZt k?7/0V<0հV# $EN Ӄ?6Be+ĄAD;FSl=;? HdL$TH-SД;˘Di"'j+O,/3sp܍a HdK1@1"ȓ.$_R xNHYϱ3|Гg%m z/w*@"=;pvMSI[H˪QQjV"..ogI[HɟJ,A.1k9LTWBSlHQsD$D(TPaY\\[CkR07WIy%\;IiN&GQZSlgi-)٨^.ySlf(ͩޫFXϴ+O,/3sE97#Xl&$YLh$LH$ˉ x"XR:K/)y\FU@=o;Hx UrJZ֤|;~<^VF-te7b,6.:jYlpŞg'g'N`\ ܙf6{?i[?EϞdzaA[;Vu W5m9>lIdSr5@"bE.DƁDċ"L|g<l^{L|ssrǀHXسcqd$,~ew9M[F \\ ?J-sOnr 歿6׮Ֆ;tMy9cX٨1{N8xllTb,Xf3rtX )3E&Ut\_0e"(*\շGlo\g(c7ыܝOm)R"\@)qK,A/ogr8nFh$LH%Ș HdI/@(Ca[Z'Np$~գmLgIӳUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTMMyc-ҝյ(ܗ4j7Agڪg‚"U 12 "&PPc "U BK"@"e0řDċ"$$(TTFG)e@1"ȗ"c@"bE&\H  B9F=HDf?i/= r297A| =hq2EÒX٨8z[^,;7 Xf9xn s&͵ƚjb7oM-inx,$\9%T#e6,lO |IW<֤#!#?Ym>vg<ř||;U?<"'@1"Ȋ*$Py2'@?s #z&k=~z$&PB757")Q LQ=g>ѓaAgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTiѰhӶ `rJ.97A9]-Eޔ@i*bWKQqt;J@sVmB)5e3kܦ)e\7 wvt区jq#sn&B?RrNG` 3R?l\+^q9X7*/9 G) V󑁨aNC5jJn=:h9;,rPVRaa`jr.|aO@H,T?slcUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0knB`j #/v.IE&YϱW޳mpі)\lM!)8ש}w <|&| )[ւM[|%|;mJn#J;^l|&id-Ԧj fv oeyek ^W?7 'rԌ oWK|wdqrW-7)6 >0]:%%yÊX٨5o|`{cޞ #[վ6nN]K5|"l`e[~3X˦Kςս%,'r ڰN6׸6w[7eσұ|"l` m{M_5oZ 5mN)` ysD97Aڲw>v=HG^W`Mx "m,t3tIqi@ٻzvG}v8i6;kqu;歰o?;c$~Jn36G0kW!·/9myM5r 1xGոV5[<ۍ+:wy:v^,)Ad%jfǔ$F-^p kj1e[~*TPR Ⲝ\BM6p1mսM%`h>5+񆬽sYtG!(ܦ$fT'Cm{M^*TPR Ⲝ\BM6p9yUrJy7(/5.rY6jվG-'(O|'V51g jOjܷ=%NpWFڰM٘O*(`LAYN.yvAkkVp>=7$<Uq8fce=j׾ '<5osjJQKJv'cYRQCeJ$/qs {=7$<Uq>Slf% dsڳ-Ieӱ"V$'JvԄRT2e8?a YܓgBpYyNw5սN?>NǤ5e[cb<⽆j5iXgtsJS0,Q";cޝҝ 9ql8rsF/3vKJ.0}ūw:^1وrrܠR8\})pY=f f`1wFlnLP7zw;Jv^xeB1nfvizv Mi%u>pͶi+t6`Oz|NH(,1j70Ae2 ҁvV@99soRJk匫o櫤ZK;Os{6ԥ8Í*fV@kh8r6 5oQXgVMӄq,OQOt6=\ٛi9j7%4! L4Yyh˓8"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL8؏6rJI9@_azsi ` k.oםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_recover_clusterroup#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_cluster.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_cluster.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_recover_cluster =head1 SYNOPSIS clmgr recover cluster [ CANCEL_EVENT={false|true} ] NOTE: the alias for "cluster" is "cl". =head1 DESCRIPTION Attempts to recover from an event failure on every node with the cluster. =head1 ARGUMENTS 1. cancel event [OPTIONAL] [string] A Boolean-like value indicates whether the administrator wants to cancel or continue with the remaining event processing. Valid values include: {false|true} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_recover_cluster { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_cluster.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -l cancel=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset nodelist= node= typeset node_data #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= else CL=$LINENO KLIB_HACMP_list_nodes node_data for (( i=0; i<${#node_data[*]}; i++ )); do nodelist="$nodelist ${node_data[$i]}" done if [[ $nodelist == *([[:space:]]) ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 600 "\nERROR: no nodes are defined within this cluster!\n\n" 1>&2 rc=$RC_NOT_FOUND fi fi #============================================================ : Validate the recovery mode #============================================================ if (( $rc == RC_UNKNOWN )) && [[ -n $cancel ]]; then if [[ $cancel != @(1|0|n|f|y|t)* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" CANCEL_EVENT "$cancel" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "false, true" 1>&2 rc=$RC_INCORRECT_INPUT fi fi #============================================================ : Recover the cluster if no input errors have been detected #============================================================ if (( $rc == RC_UNKNOWN )); then CL=$LINENO KLIB_HACMP_recover_node "$nodelist" $cancel rc=$? fi if (( $rc == RC_ERROR )); then dspmsg -s $CLVT_SET $CLVT_MSGS 601 "\nERROR: the recovery effort has failed.\n\n" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_recover_cluster()" BM koםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_recover_nodeerroup#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_node.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_node.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_recover_node =head1 SYNOPSIS clmgr recover node [,,,...] \ [ CANCEL_EVENT={false|true} ] NOTE: the alias for "node" is "no". =head1 DESCRIPTION Attempts to recover from an event failure on the indicated node(s), defaulting to the local node. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. nodelist [OPTIONAL] [string] The list of nodes that will be recovered. 3. cancel event [OPTIONAL] [string] A Boolean-like value indicates whether the administrator wants to cancel or continue with the remaining event processing. Valid values include: {false|true} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_recover_node { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_node.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset nodelist=${1//\"/} nodelist=${nodelist#+([[:space:]])} nodelist=${nodelist//,/ } typeset -l cancel=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset node= typeset runcmd_flag= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $nodelist == *([[:space:]]) ]]; then nodelist=$LOCAL_NODE if [[ $nodelist == *([[:space:]]) ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 602 '\nERROR: no node could be identified on "%1$s".\n\n' "$(hostname)" 1>&2 rc=$RC_NOT_FOUND fi else for node in $nodelist; do node=$(CL=$LINENO KLIB_HACMP_is_known_node "$node") if (( $? != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 rc=$RC_NOT_FOUND fi done fi #========================================================= : Validate the optional recovery mode #========================================================= if [[ -n $cancel ]]; then if [[ $cancel != @(1|0|n|f|y|t)* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" CONTINUE_EVENT "$cancel" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "false, true" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ $cancel == @(1|y|t)* ]]; then runcmd_flag="-c" fi fi #========================================================= : Recover the node if no input errors have been detected #========================================================= typeset -i recoveries=0 if (( $rc == RC_UNKNOWN )); then for node in $nodelist; do typeset state=$(CL=$LINENO KLIB_HACMP_get_node_state "$node") if [[ $state == *FAILED* ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 604 "Attempting to recover from event failures on \"%1\$s\"...\n" "$node" print "$0()[$LINENO]($SECONDS): clruncmd \"$node\" $runcmd_flag" >>$CLMGR_TMPLOG # Always log commands clruncmd "$node" $runcmd_flag rc=$? print "clruncmd RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 605 "\nERROR: failed to recover from script failure(s) on node \"%1\$s\".\n\n" "$node" 1>&2 rc=$RC_ERROR else (( recoveries++ )) fi else dspmsg -s $CLVT_SET $CLVT_MSGS 606 "Node \"%1\$s\" is not in a failed state at the moment; no recovery needed.\n" "$node" rc=$RC_SUCCESS fi done elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 dspmsg -s $CLVT_SET $CLVT_MSGS 151 "Available Nodes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_nodes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed ext.\n\n" \ "recover node -h" "NODE:" "$CLVT_PROGNAME" 1>&2 elif (( $rc == RC_ERROR )); then dspmsg -s $CLVT_SET $CLVT_MSGS 601 "\nERROR: the recovery effort has failed.\n\n" 1>&2 elif (( $rc == RC_SUCCESS )); then if (( recoveries > 0 )); then dspmsg -s $CLVT_SET $CLVT_MSGS 607 "Any current event script failures have been recovered from.\nWarning: more may occur if the underlying problem has not been corrected.\n" else dspmsg -s $CLVT_SET $CLVT_MSGS 608 "At the moment, there are no known event script failures\non the following node(s): %1\$s\n" "${nodelist// /, }" fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_recover_node()" #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ at kcoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_recover_siteerroup#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_site.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2009,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_site.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_recover_site =head1 SYNOPSIS clmgr recover site [ CANCEL_EVENT={false|true} ] =head1 DESCRIPTION Attempts to recover from an event failure on the indicated site(s), defaulting to the local site. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. site [REQUIRED] [string] The site whose nodes are to be recovered. 3. cancel event [OPTIONAL] [string] A Boolean-like value indicates whether the administrator wants to cancel or continue with the remaining event processing. Valid values include: {false|true} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_recover_site { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_recover_site.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset site=${1//\"/} typeset -l cancel=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 typeset -A site_data typeset nodelist= typeset -u uc_attr= #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #================= : Validate input #================= elif [[ $site == *([[:space:]]) ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_site "$site" >/dev/null (( $? != RC_SUCCESS )) && rc=$RC_NOT_FOUND fi if (( $rc == RC_UNKNOWN )); then CL=$LINENO KLIB_HACMP_get_site_attributes "$site" site_data for uc_attr in ${!site_data[*]}; do if [[ $uc_attr == NODE* ]]; then nodelist=${site_data[$uc_attr]} fi done fi #========================================================= : Validate the optional recovery mode #========================================================= if (( $rc == RC_UNKNOWN )) && [[ -n $cancel ]]; then if [[ $cancel != @(1|0|n|f|y|t)* ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" CONTINUE_EVENT "$cancel" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 3 "Valid values: %1\$s\n\n" "true, false" 1>&2 rc=$RC_INCORRECT_INPUT fi fi #========================================================= : Recover the site if no input errors have been detected #========================================================= typeset -i recoveries=0 if (( $rc == RC_UNKNOWN )); then for node in $nodelist; do typeset state=$(CL=$LINENO KLIB_HACMP_get_node_state "$node") if [[ $state == *FAILED* ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 604 "Attempting to recover from event failures on \"%1\$s\"...\n" "$node" CL=$LINENO KLIB_HACMP_recover_node "$node" $cancel if (( $? != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 605 "\nERROR: failed to recover from script failure(s) on node \"%1\$s\".\n\n" "$node" 1>&2 rc=$RC_ERROR else (( recoveries++ )) fi else dspmsg -s $CLVT_SET $CLVT_MSGS 606 "Node \"%1\$s\" is not in a failed state at the moment; no recovery needed.\n" "$node" fi done elif (( $rc == RC_NOT_FOUND )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$site" 1>&2 dspmsg -s $CLVT_SET $CLVT_MSGS 157 "Available Sites:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_sites available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed ext.\n\n" \ "recover site -h" "SITE:" "$CLVT_PROGNAME" 1>&2 elif (( $rc == RC_ERROR )); then dspmsg -s $CLVT_SET $CLVT_MSGS 601 "\nERROR: the recovery effort has failed.\n\n" 1>&2 elif (( $rc == RC_SUCCESS )); then if (( recoveries > 0 )); then dspmsg -s $CLVT_SET $CLVT_MSGS 607 "Success. Any current event script failures have been recovered from (NOTE: more may occur).\n" else dspmsg -s $CLVT_SET $CLVT_MSGS 608 "There are no known event script failures in site \"%1\$s\" at the moment.\n" "$site" fi fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_recover_site()" el koV םa՝a֝a&V bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_refresh_mirror_groupncy#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_refresh_mirror_group.sh 1.1 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2ht-ml function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_refresh_mirror_group =head1 VERSION Version Number: 1.4 Last Extracted: 10/18/12 17:50:40 Last Changed: 10/8/12 12:21:43 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_refresh_mirror_group.sh, hacmp.assist, 61haes_r712, 1242B_hacmp712 =head1 SYNOPSIS clmgr refresh mirror_group [,,...] \ [ NODE= ] clmgr refresh mirror_group \ NODES=[,,...] \ [ SYSTEM_GROUPS={yes|no} ] clmgr refresh mirror_group \ SITE=[,] \ [ SYSTEM_GROUPS={yes|no} ] [ REPOSITORY_GROUP={yes|no} ] NOTE: the "refresh" action is only valid for DS-Series Inband (HyperSwap) NOTE: the alias for "mirror_group" is "mig". =head1 DESCRIPTION Attempts to refresh the specified HyperSwap mirror groups. =head1 ARGUMENTS 1. mirror_groups [OPTIONAL] [string] One or more HyperSwap mirror groups to refresh. 2. nodes [OPTIONAL] [string] The label of one or more cluster nodes. 3. sites [OPTIONAL] [string] The label of one or more cluster sites. 4. system_groups [OPTIONAL] [boolean] Indicates whether or not to include system mirror groups in the refresh. Defaults to "yes". 5. repository_group [OPTIONAL] [boolean] Indicates whether or not to include the repository mirror group in the refresh. Defaults to "yes". =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_refresh_mirror_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_refresh_mirror_group.sh, hacmp.assist, 61haes_r712, 1242B_hacmp712 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO OPERATION="refresh" KLIB_HACMP_replace_mirror_group "$@" log_return_msg "$?" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_refresh_mirror_group()" 3/ ko0םa՝a֝a&0bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_remove_node_from_groupcy#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_remove_node_from_group.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)04 1.5 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_remove_node_from_group.sh, hacmp.assist, 61haes_r714 6/11/12 09:03:50 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_remove_node_from_group =head1 VERSION Version Number: 1.5 Last Extracted: 1/31/14 04:40:15 Last Changed: 6/11/12 09:03:50 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_remove_node_from_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS KLIB_HACMP_remove_node_from_group =head1 DESCRIPTION Removes the specified node from a resource group, if the last node from a resource group is removed, then the entire resource group is removed from the HACMP configuration. This is as defined in libclres/clwritecf =head1 ARGUMENTS 1. rg [REQUIRED] [string] The name of the resource group that is to be modified. 2. rmnode [REQUIRED] [string] The name of the node that is to be removed from the specified resource group. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_remove_node_from_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.5, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_remove_node_from_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset rg=${1//\"/} typeset rmnode=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -A newnodes typeset -i rc=$RC_UNKNOWN CL=$LINENO KLIB_HACMP_get_group_policy $rg startup fallover fallback (( $? != RC_SUCCESS )) && rc=$RC_ERROR if (( $rc == RC_UNKNOWN )); then CL=$LINENO KLIB_HACMP_get_group_nodes $rg nodes (( $? != RC_SUCCESS )) && rc=$RC_ERROR fi if (( $rc == RC_UNKNOWN )); then for node in $nodes; do if [[ "$rmnode" != "$node" ]]; then newnodes[$node]=: fi done print "$0()[$LINENO]($SECONDS): $HAUTILS/clchgrp -g $rg -n \"${!newnodes[*]}\" -S $startup -O $fallover -B $fallback" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clchgrp -g $rg -n "${!newnodes[*]}" -S $startup -O $fallover -B $fallback rc=$? print "clchgrp RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_remove_node_from_group()"  kho:<םa՝a֝a&:<bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_replace_mirror_grouppcy#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_replace_mirror_group.sh 1.8 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)53 1.8 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_replace_mirror_group.sh, hacmp.assist, 61haes_r714 5/15/13 17:23:58 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2ht-ml function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_replace_mirror_group =head1 VERSION Version Number: 1.8 Last Extracted: 1/31/14 04:42:06 Last Changed: 5/15/13 17:23:58 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_replace_mirror_group.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr swap mirror_group [,,...] \ [ NODE= ] clmgr swap mirror_group \ NODES=[,,...] \ [ SYSTEM_GROUPS={yes|no} ] clmgr swap mirror_group \ SITE=[,] \ [ SYSTEM_GROUPS={yes|no} ] [ REPOSITORY_GROUP={yes|no} ] NOTE: the "swap" action is only valid for DS-Series Inband (HyperSwap) NOTE: the alias for "mirror_group" is "mig". =head1 DESCRIPTION Attempts to swap the specified HyperSwap mirror groups. =head1 ARGUMENTS 1. mirror_groups [OPTIONAL] [string] One or more HyperSwap mirror groups to swap. 2. nodes [OPTIONAL] [string] The label of one or more cluster nodes. 3. sites [OPTIONAL] [string] The label of one or more cluster sites. 4. system_groups [OPTIONAL] [boolean] Indicates whether or not to include system mirror groups in the swap. Defaults to "yes". 5. repository_group [OPTIONAL] [boolean] Indicates whether or not to include the repository mirror group in the swap. Defaults to "yes". =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. ############################################################################## # # Name: display_active_path_info # # Description: Formats the output from the "activepath" operation to # make it resembel the default clgr output format. # # Inputs: FILE A file containing the active path output # # Outputs: The formatted output is displayed on STDOUT. # # Returns: n/a # ############################################################################## function display_active_path_info { typeset FILE=$1 cat $FILE |\ while read LINE; do if (( ++COUNT % 2 )); then ATTRS=${LINE#*:} ATTRS="NODE:${ATTRS# }" else for VALUE in ${LINE//:/ }; do ATTRS=${ATTRS/:/=$VALUE$NL} done ATTRS="${ATTRS}=$VALUE" (( COUNT > 2 )) && print print -- "$ATTRS" fi done /usr/bin/rm -f $FILE } # End of "display_active_path_info()" function KLIB_HACMP_replace_mirror_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.8, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_replace_mirror_group.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset mirror_groups=${1//\"/} mirror_groups=${mirror_groups//,/ } typeset nodes=${2//\"/} nodes=${nodes//,/ } typeset sites=${3//\"/} sites=${sites//,/ } typeset -l system_groups=${4//\"/} typeset -l repository_group=${5//\"/} typeset OPERATION="$OPERATION" [[ -z $OPERATION ]] && OPERATION="swap" [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN cmd_rc=$RC_UNKNOWN typeset -i i=0 COUNT=0 typeset mirror_group="" node="" LINE="" ATTRS="" VALUE="" #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $? fi #================= : Validate input #================= if [[ $mirror_groups != *([[:space:]]) ]]; then for mirror_group in $mirror_groups; do typeset TYPE= CL=$LINENO KLIB_HACMP_is_known_mirror_group $mirror_group TYPE if (( $? != RC_SUCCESS )); then rc=$RC_NOT_FOUND /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$mirror_group" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 167 "Available Mirror Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_groups available TYPE=ds8k_inband_mm for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" elif [[ $TYPE != ds8k_inband_mm ]]; then rc=$RC_INCORRECT_INPUT /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 9999 "\nERROR: \"%1\$s\" is not a DS-Series Inband (HyperSwap) mirror group!\n\n" "$mirror_group" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 151 "Available Mirror Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_mirror_groups available TYPE=ds8k_inband_mm for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi done fi if [[ $nodes != *([[:space:]]) ]]; then for node in $nodes; do CL=$LINENO KLIB_HACMP_is_known_node $node >/dev/null if (( $? != RC_SUCCESS )); then rc=$RC_NOT_FOUND /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$node" 1>&2 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 151 "Available Nodes:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_nodes available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi done fi if [[ $sites != *([[:space:]]) ]]; then typeset site="" typeset -i ERR=0 for site in $sites; do CL=$LINENO KLIB_HACMP_is_known_site $site >/dev/null if (( $? != RC_SUCCESS )); then rc=$RC_NOT_FOUND ERR=1 /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$site" 1>&2 fi done if (( ERR )); then /usr/bin/dspmsg -s $CLMGR_SET $CLMGR_MSGS 157 "Available Sites:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_sites available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi if [[ -n $system_groups && $system_groups != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" SYSTEM_GROUPS "$system_groups" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT else case $system_groups in @(y|t)*) system_groups="yes" ;; @(n|f)*) system_groups="no" ;; esac fi if [[ -n $repository_group && $repository_group != @(y|t|n|f)* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" REPOSITORY_GROUP "$repository_group" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT else case $repository_group in @(y|t)*) repository_group="yes" ;; @(n|f)*) repository_group="no" ;; esac fi #===================================================================== : Perform the operation, $OPERATION, if no errors have been detected #===================================================================== if (( $rc == RC_UNKNOWN || $rc == RC_SUCCESS )); then typeset XD_CLI="/usr/es/sbin/cluster/xd_generic/xd_cli" if [[ $mirror_groups != *([[:space:]]) ]]; then for mirror_group in $mirror_groups; do typeset -A mgAttrs CL=$LINENO KLIB_HACMP_get_mirror_group_attributes "$mirror_group" mgAttrs if [[ ${mgAttrs[MG_TYPE]} == "system" ]]; then typeset node_list="$nodes" node_list=${node_list/${mgAttrs[SYS_MG_NODE]}/} [[ -n $node_list ]] && node_list=" $node_list" node_list="${mgAttrs[SYS_MG_NODE]}$node_list" : Swapping SYSTEM mirror group $mirror_groups via node $node_list print -- "$0()[$LINENO]($SECONDS): $XD_CLI/cl_clxd_manage_mg_smit -t sys -m \"$mirror_group\" -n \"$node_list\" -o $OPERATION" >>$CLMGR_TMPLOG $XD_CLI/cl_clxd_manage_mg_smit -t sys -m "$mirror_group" -n "$node_list" -o $OPERATION >$TMPDIR/clmgr.KHrmg.op.$$ cmd_rc=$? (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) && rc=$cmd_rc unset node_list elif [[ -n ${mgAttrs[MG_TYPE]} ]]; then : Swapping ${mgAttrs[MG_TYPE]} mirror group $mirror_group print -- "$0()[$LINENO]($SECONDS): $XD_CLI/cl_clxd_manage_mg_smit -t ${mgAttrs[MG_TYPE]} -m \"$mirror_group\" -o $OPERATION" >>$CLMGR_TMPLOG $XD_CLI/cl_clxd_manage_mg_smit -t ${mgAttrs[MG_TYPE]} -m "$mirror_group" -o $OPERATION >$TMPDIR/clmgr.KHrmg.op.$$ cmd_rc=$? (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) && rc=$cmd_rc print -- "$0()[$LINENO]($SECONDS): cl_clxd_manage_mg_smit RC: $rc" >>$CLMGR_TMPLOG else print -u2 " Usage error: clmgr $OPERATION mirror_group [,,...] \\ [ NODE= ] clmgr $OPERATION mirror_group \\ NODES=[,,...] \\ [ SYSTEM_GROUPS={yes|no} ] clmgr $OPERATION mirror_group \\ SITE=[,] \\ [ SYSTEM_GROUPS={yes|no} ] \\ [ REPOSITORY_GROUP={yes|no} ] " rc=$RC_MISSING_INPUT fi if [[ $OPERATION == "activepath" ]]; then display_active_path_info $TMPDIR/clmgr.KHrmg.op.$$ else cat $TMPDIR/clmgr.KHrmg.op.$$ /usr/bin/rm -f $TMPDIR/clmgr.KHrmg.op.$$ fi done # End of the mirror groups loop elif [[ -n $nodes ]]; then : Swapping mirror groups by nodes ${nodes// /, } [[ -z $system_groups ]] && system_groups="yes" print -- "$0()[$LINENO]($SECONDS): $XD_CLI/cl_clxd_manage_mg_smit -t node -n \"$nodes\" -s $system_groups -o $OPERATION" >>$CLMGR_TMPLOG $XD_CLI/cl_clxd_manage_mg_smit -t node -n "$nodes" -s $system_groups -o $OPERATION >$TMPDIR/clmgr.KHrmg.op.$$ cmd_rc=$? (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) && rc=$cmd_rc if [[ $OPERATION == "activepath" ]]; then display_active_path_info $TMPDIR/clmgr.KHrmg.op.$$ else cat $TMPDIR/clmgr.KHrmg.op.$$ /usr/bin/rm -f $TMPDIR/clmgr.KHrmg.op.$$ fi elif [[ -n $sites ]]; then : Swapping mirror groups by sites ${sites// /, } [[ -z $system_groups ]] && system_groups="yes" [[ -z $repository_group ]] && repository_group="yes" print -- "$0()[$LINENO]($SECONDS): $XD_CLI/cl_clxd_manage_mg_smit -t site -i \"$sites\" -s $system_groups -r $repository_group -o $OPERATION" >>$CLMGR_TMPLOG $XD_CLI/cl_clxd_manage_mg_smit -t site -i "$sites" -s $system_groups -r $repository_group -o $OPERATION >$TMPDIR/clmgr.KHrmg.op.$$ cmd_rc=$? (( rc == RC_UNKNOWN || rc == RC_SUCCESS )) && rc=$cmd_rc if [[ $OPERATION == "activepath" ]]; then display_active_path_info $TMPDIR/clmgr.KHrmg.op.$$ else cat $TMPDIR/clmgr.KHrmg.op.$$ /usr/bin/rm -f $TMPDIR/clmgr.KHrmg.op.$$ fi fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then typeset ACTION="swap mirror_group" [[ $OPERATION == "activepath" ]] && ACTION="view mirror_group" [[ $OPERATION == "refresh" ]] && ACTION="manage mirror_group refresh" CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "$ACTION -h" "MIRROR GROUP:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_replace_mirror_group()" p  l\$oםa՝a֝a&`bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_replace_repositoryp   =einorst $E_acdlp"CILMNOPRSfhmuy#()-.:>ADGTU[\]bgkvw&,/012;BFHKV!%'*4?Wqz{|}356x+79WtWY5%'"N` RL` !#8,X4<<*mmmmmmmmmO <+( "H""@d+wAsΞxV%0Q^,sCCLq59N,"(̜jcq pܫX 6N&w&5:lui)5"+ t8²-\`&xz8$N5H2C <+*r+CS//&kd5ܹœX蚗9Fo¿6ss&50i84j8VU<(9{^>oYT;+RBA:m]ww8_44 Mc'T;/&e]ˢ(*\X3Ց'(?2qEh': ̹MOSz'¿G+8kmcFs64 mmmmmmmmm̜jc LOMIIȹp4" JpRؼ=XX`z ??mp N` Y @ 4 LOMIIȹCh4ph014@0'H 4 `3% ?'WLvOE;PAPPN0dfA@q<^a1&Zf@P(\x( c&GR|2.yڀ ,`A 8du'"睨ԟ+ t((ŅjHx`du'"睨ԟ+ t@,XX> yX~"r.6X^Wt<^WY5$ܶ! ԟ+ t,<Ņ#>Wt uy [Po4(qƃ0h)Y4 M s>00jZIjF5@ $D% ?nemmOiSj"Umm?pۗ @BQL00ԴŅ#>Wt<\ !;iBs\MNIȹx* Lܟ6OE;q&"%T.yu +#fUiV@ojf狱Wt< *$rK|ڑ cz$D% ?2 ?? jT̹驉~tt23 ʌ2TqSR??k *ʡءC< 882eϞ&Q5" "$ IHmjOE:i8c3-͹Vd])mnpicih'9bmtq1\]ΘkʜRq9]F"i#dgMc5TqG,-@DK(ǒ ??&,-F{p,XX> cԴIX.nXl4&&]#h$LLD j%˕.ƍʺe 876w"d-)s&0DQŎoljQ8:ȚcqLPFs9*v]dԞ&|2.yv~ Oz&D%"PX ?qam23ŅjHxf00MKOaX[@!SHP#ۏ0@~00MKOQd5@"be0DˤL@xQ.\p>|CR!~w|g]d\󺬀ejylXX#/tu N`;ݐ鮻ܻ؜g24r=7-pE?Jr (@rHB¢ГY%` a Ht")@120&cP j%˕.F_&r<w|g]d\󺬀ejylXX#/ N`;ݐ鮻ܻ؜g24r=7-pE?Jr (@rHB¢aX azS.A!R"@h=Nܹ ``;i3 hA !;i T (BHzA$$6'"ǠIȹG+BO JHDJD&Y&A!u>Wt<=OE:?&8k5 Ԩ'Rzr  A0wR­mmmm~D솞2gdWtWGt#>Wt<i06:aX[B,_)Ul]d\.8qwRY%` a Ht")@120&c 1Drq(0] G4>UӆHh1~ 7uk]fu :8iE; ]6GR|2.y0@ ?T HBKDDJ?2̰,?n\BE E08zr  A0wRg HT%r @@+ LLCmpR#:dg+#Ycg p$`TLMKOz(TQ QRGk DˤaMH30 av\Ra]yM]d" ]6=22?k DˤaMH30222C$LLB*&$76 .E4&&]"f`h4j%˕.eg(7d3 (0]lET@DGU h@HH4b$@ZG%`Ҝ'|&XjuYѭ>]ό0 v~=OE:?iAdiR\DJ*\$"P azdLq6,ۃ0@#@ea2p@,6h 6N\``;i뽍=XX`Z TEKή96GR|2.yP+9A 'qV@oA:wAs솀iAdq8|a\Yc'nTUmmmmmmm;r((T )vːH1P&*-r dgŅjHxf00jZ h2+8;i "bT n@2b"TEE8i""@fY ?P-OE;P Qg*ljc 3Wt< La[mmmmmmmm~&S.|\iŎnm8ja.y48ÍXnadDjw"Ʀ04F܀qVmmmmmmmm8ɖYɖYKHI*$00jZ#i@sɖYG TXR\sQ<2Ƃ+᣺84`qhI TTRi;cI.' ?aX[ n#iMKO]lpz TTP~o*P%D H%HL!R#g[Q)"*a"2"X Q)"*a"2"X t8bwAs&68aa"QF0↧ "#WtWGuLpi%!a3 a$`M";i뽍@4JIDS  *P$ kt "$]L$X&DK4 "$]L$X&DK.lR|2.y``Դ,,0YDJ"PZ TPDw"ȉf\ Ѓ#"IPms/q\z {IȹEv.=IDS  qcF""@h19l>.&V#!i6Hp@AHPbED]lq$D% aJ  CNDŽDH-=G,Wt<@ RE,TEdDvMi6N""@h19l4 ǵ3sP` .2Ċ"$ + vQ)"*a"2"C;r4F v LڙddJ zXy뽍=XX`DQ "@A#I"$ '&&]!Be?ʛ^=F@ǨAQb$LLB*&cc @12 ,Hf'MQ"xp.qA<&WtbqH=Aaa"QGǷ@ ?2̰­mmmmmmxq7!YlXef\&lE:Ummmmmmȉ"PP@%Q JHDJƦ"LؒqOdu'"@Q$Lȉ"PP@%qy?Tg zr "\R``;iR\E $**PK²qCZek DˤaMH30LxlY1,hka7,p<]1زc+I T (BHzA$!4v Q5r ΘlY1.~4)1زc+H0aW8lY1Y  p,XX> c&68in<^(&œZE`<,?W6O]lpӀxg zr  A0wR{47$J D.SW(tK0Ah.b,"%D H%HTT]BH&V]L$LD 1ƨ"Qq{ IV@oD@XȉǠ]BH.b&DFU'PO Pک=Lr  A0ޥACj2g z r0*@& a&᤟18nXz (B|۠e8hD H%H4p83@ RE,TEdDjZ$76 .E4&&]"f`@ NjʗqŕejvntڮX&DKq&|jIlw"dñV2vܤʡh |ڑ c.A$K*\~=XX`zDQbqO2a,/Av$`TL;Av$*P$PS q5-?pQ<AJ,r9iVmmmmmm??&8jwqv4˞m8SeVmmmmmm?qal4 *HI"*a"$;?@.b,"% RY%` a Ht")@120&cF<].T~,GVc/6S3sr2"[5:lw"dñV2vܤʡh |ڑ c.A$K*\~=XX`zDQbqO2 mmmmmmmO`7Wq5:jDkuMmɩ& N6m6GsM3mLjMb if~Wt2@AHPbED?pۗ R0c q5-?*mmmmmmOk59EB2YmmѝVaq??MqcñCLjV^UN, nܤʬh:Ț0WGuLpi%!a3 a$`M";i뽍@4JIDS  *P$ea;r0*@& `p;r((T )mmmmmmiy]dԞ&|2.yݍjsa6M{'­mmmmmm?wǠ @*0H($`0?Qci1|a Q)"*a"2"Xkt (TI U?@"be&XQ3XmLj_+haD H%HL E22Ux*I뽍=Eƥ򻡗 $LLB*'XélmW|<Uju#qiN]d\p#j _|2.y5c VU.y7d4bɌ!8X^ːH18.b,"% 823 T@!RDSrƦ8kp/jf=(19l42gIȹpeǨ'$$M7?aP!􍜄R]yMqjqyZ[59- jyUs,G2ƫ 68[MsP­mmmmmmmmm²NQ5obc+L e c0 6d?k<+c!V& xUmmmmmmmmmxV8aS\8aXG tڬS<*mmmmmmmmmm< k;o םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_reset_clustertoryp#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_reset_cluster.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)59 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_reset_cluster.sh, hacmp.assist, 61haes_r714 6/11/12 09:03:53 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_reset_cluster =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:19 Last Changed: 6/11/12 09:03:53 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_reset_cluster.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr reset cluster =head1 DESCRIPTION Resets all the tunables (customizations) made to the cluster, returning all options to their default values, but not changing the configuration. The cluster will need to be synchronized after this operation. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_reset_cluster { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_reset_cluster.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #=============================== : See if a cluster even exists #=============================== CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #========================================================== : Reset the cluster if no input errors have been detected #========================================================== else print "$0()[$LINENO]($SECONDS): $HAUTILS/clsnapshot -t" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clsnapshot -t rc=$? print "clsnapshot RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != $RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_reset_cluster()" < k:oVםa՝a֝a&Vbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_respond_sitetoryp#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_respond_site.sh 1.2.1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2013,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)77 1.2.1.1 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_respond_site.sh, hacmp.assist, 61haes_r721, 1612A_hacmp721 3/10/16 01:03:26 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_respond_site =head1 VERSION Version Number: 1.2.1.1 Last Extracted: 3/23/16 01:09:00 Last Changed: 3/10/16 01:03:26 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_respond_site.sh, hacmp.assist, 61haes_r721, 1612A_hacmp721 =head1 SYNOPSIS clmgr manage site respond {continue|recover} =head1 DESCRIPTION Allows a manual response to a split or merge event. =head1 ARGUMENTS 1. response [REQUIRED] [set] The response to take for a split or merge event. Valid values: continue, recover =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2013 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_respond_site { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2.1.1, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_respond_site.sh, hacmp.assist, 61haes_r721, 1612A_hacmp721 : INPUTS: $* typeset -l response=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== # Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================= # Validate input #================= if [[ $response == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 101 "\nERROR: this operation requires the \"%1\$s\" attribute.\n\n" NETWORK 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO verify_in_set RESPONSE "$response" "Continue, Recover" response (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi if (( rc == RC_UNKNOWN )); then #============================================ : Handle the response, $response, if needed #============================================ typeset continue=$(dspmsg -s 58 cluster.cat 77 'Continue\n') cl_smm_check >$TMPDIR/clmgr.KHrs.$$ 2>&1 rc=$? if (( $rc != RC_SUCCESS )); then if (( rc == RC_NOT_FOUND )); then # No manual response was required rc=$RC_INCORRECT_INPUT cat $TMPDIR/clmgr.KHrs.$$ else rc=$RC_ERROR cat $TMPDIR/clmgr.KHrs.$$ 1>&2 fi elif [[ $response == $continue ]] then # : This node *is* part of the chosen surviving site # CL=$LINENO cl_dspmsg -s 58 cluster.cat 79 "You have chosen for this side of the partitioned cluster to continue. You must now specify, on a node on the other side of the partitioned cluster, that it recover for PowerHA SystemMirror to completely recover from the split or merge." /usr/es/sbin/cluster/utilities/cl_sm_continue # you win some rc=$? else # : This node is *not* part of the chosen surviving site # CL=$LINENO cl_dspmsg -s 58 cluster.cat 80 "You have chosen for this side of the partitioned cluster to recover. You must now specify, on a node on the other side of the partitioned cluster, that it continue for PowerHA SystemMirror to completely recover from the split or merge." /usr/es/sbin/cluster/utilities/cl_sm_recover # you lose some rc=$? fi [[ -f $TMPDIR/clmgr.KHrs.$$ ]] && rm -f $TMPDIR/clmgr.KHrs.$$ fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_respond_site()" == khoםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_restore_snapshotyp#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_restore_snapshot.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_restore_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_restore_snapshot =head1 SYNOPSIS clmgr manage snapshot restore \ [ CONFIGURE={yes|no} ] \ [ FORCE={no|yes} ] clmgr manage snapshot restore \ NODES=, \ REPOSITORIES=[,][:[,]] \ [ CLUSTER_NAME= ] \ [ CONFIGURE={yes|no} ] \ [ FORCE={no|yes} ] NOTE: for "REPOSITORIES", any disks specified after the colon will be applied to the second site. This only applies to linked cluster. NOTE: the alias for "snapshot" is "sn". =head1 DESCRIPTION Apply the specified snapshot to the local cluster, blowing away the current configuration in the process (i.e. replacing it with the contents of the snapshot). =head1 ARGUMENTS 1. snapshot [REQUIRED] [string] The name of the snapshot that will be restored. 2. configure [OPTIONAL] [string] A Boolean-like indicator that indicates (yes*/no) whether or not to configure resources during the restore, as needed. 3. force [OPTIONAL] [string] A Boolean-like indicator that indicates (yes/no*) whether or not to force the restoration to continue even if a verification error is detected. 4. nodes [REQUIRED] [string] This option should only be used when a cluster copy operation is intended (i.e. restoring a snapshot from a different cluster to the local cluster). This is the list of nodes that will be used to replace the nodes defined within the snapshot. 5. repositories [REQUIRED] [string] This option should only be used when a cluster copy operation is intended (i.e. restoring a snapshot from a different cluster to the local cluster). This is the repository disk list that will replace the disk(s) defined within the snapshot. 6. cluster_name [OPTIONAL] [string] This option should only be used when a cluster copy operation is intended (i.e. restoring a snapshot from a different cluster to the local cluster). This value will replace the cluster name defined within the snapshot. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_restore_snapshot { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_restore_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset snapshot=${1//\"/} typeset -l configure=${2//\"/} typeset -l force=${3//\"/} typeset nodes=${4//\"/} typeset repositories=${5//\"/} typeset cluster_name=${6//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset Copt= fopt= HOpt= DOpt= LOpt= typeset -i rc=$RC_UNKNOWN #===================== : Validate the input #===================== if [[ -z $snapshot ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 dspmsg -s $CLMGR_SET $CLMGR_MSGS 158 "Available Snapshots:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_MISSING_INPUT elif [[ -n $configure && $configure != @(y|t|n|f)* ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" CONFIGURE "$configure" 1>&2 dspmsg -s $CLVT_SET $CLVT_MSGS 3 "Valid values: %1\$s\n\n" "yes, no" 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $force && $force != @(y|t|n|f)* ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 110 "\nERROR: invalid value specified for \"%1\$s\": \"%2\$s\".\n" FORCE "$force" 1>&2 dspmsg -s $CLVT_SET $CLVT_MSGS 3 "Valid values: %1\$s\n\n" "no, yes" 1>&2 rc=$RC_INCORRECT_INPUT else [[ $configure == @(n|f)* ]] && Copt=" -C" [[ $force == @(y|t)* ]] && fopt=" -f true" || fopt=" -f false" [[ $nodes != *([[:space:]]) ]] && HOpt=" -H ${nodes//+( )/,}" [[ $repositories != *([[:space:]]) ]] && DOpt=" -D ${repositories//+( )/,}" [[ $cluster_name != *([[:space:]]) ]] && LOpt=" -L $cluster_name" print "$0()[$LINENO]($SECONDS): clsnapshot -a -n \"$snapshot\"$fopt$Copt$HOpt$DOpt$LOpt" >>$CLMGR_TMPLOG # Always log commands clsnapshot -a -n "$snapshot"$fopt$Copt$HOpt$DOpt$LOpt rc=$? print "clsnapshot RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "restore snapshot -h" "SNAPSHOT:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_restore_snapshot()" be used kֈo)9םa՝a֝a&)9bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_resume_app_monitoringcy#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_resume_app_monitoring.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 6fdea0a 43haes/lib/ksh93/hacmp/KLIB_HACMP_resume_app_monitoring.sh, 726, 2147A_aha726, Jun 09 2021 09:12 PM #============================================================================ # # Name: KLIB_HACMP_resume_app_monitoring # # Description: This is the main, FPATH function that is invoked by clmgr # to resume application monitoring for a specific application # running within a specific resource group. # # Inputs: See the "devDoc()" function, below. # # Outputs: Informational messages are written to STDOUT, and any error # messages that might be needed are written to STDERR. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return\ # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_resume_app_monitoring { . $HALIBROOT/log_entry "$0()" "$CL" : version= @(#) 6fdea0a 43haes/lib/ksh93/hacmp/KLIB_HACMP_resume_app_monitoring.sh, 726, 2147A_aha726, Jun 09 2021 09:12 PM : INPUTS: $* typeset application=${1//\"/} typeset rg=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i LIST_APPS=1 typeset -i BAD_RG=0 typeset -u APP_UC=$application [[ $CLMGR_TIMEOUT != +([[:digit:]]) ]] && CLMGR_TIMEOUT=60 (( $CLMGR_TIMEOUT < 10 )) && CLMGR_TIMEOUT=10 #===================== : Validate the input #===================== if [[ -z $application ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ $APP_UC != "ALL" ]]; then CL=$LINENO KLIB_HACMP_is_known_appserver "$application" >/dev/null 2>&1 if (( $? == RC_SUCCESS )); then LIST_APPS=0 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$application" 1>&2 rc=$RC_NOT_FOUND fi fi if [[ $APP_UC != "ALL" ]] && (( LIST_APPS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 141 "Available Applications:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ $APP_UC != "ALL" ]]; then if [[ -z $rg ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 '\nERROR: this operation requires the "%1$s" attribute.\n\n' RESOURCE_GROUP 1>&2 rc=$RC_MISSING_INPUT BAD_RG=1 else CL=$LINENO KLIB_HACMP_is_known_rg "$rg" >/dev/null 2>&1 if (( $? != RC_SUCCESS )) then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$rg" 1>&2 rc=$RC_NOT_FOUND BAD_RG=1 fi fi if (( BAD_RG )) then dspmsg -s $CLMGR_SET $CLMGR_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi # : Make sure the cluster is up and running # typeset CSTATE=$(CL=$LINENO KLIB_HACMP_get_cluster_state) if [[ $CSTATE != "STABLE" ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1300 '\nERROR: The cluster is not online, so this operation cannot be performed.\n\n' 1>&2 rc=$RC_MISSING_DEPENDENCY fi #================================================================== : Only proceed with the operation if the result is still unknown, : which means no input errors have been encounter. #================================================================== if (( $rc == RC_UNKNOWN )); then #========================================================== : Create an array populated with all application/RG pairs #========================================================== typeset -i index=0 typeset -A rgattrs typeset arr= if [[ $APP_UC == "ALL" ]]; then for pair in $(clodmget -n -q "name=APPLICATIONS" -f value,group HACMPresource); do arr[$index]="$pair" (( index++ )) done else arr[$index]="$application:$rg" fi for (( index=0; index<${#arr[*]}; index++ )); do application=${arr[$index]%:*} rg=${arr[$index]#*:} # : Make sure resource group "$rg" is up and running # CL=$LINENO KLIB_HACMP_get_resourcegroup_state "$rg" rgattrs if [[ ${rgattrs[STATE]} != "ONLINE" ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1301 '\nERROR: Resource group "%1$s" is not online, so this operation cannot be performed.\n\n' "$rg" 1>&2 rc=$RC_MISSING_DEPENDENCY continue else # : Make sure that monitoring for application "$application" : is in a suspended state for resource group "$rg" # typeset -u MSTATE=$(LC_ALL=C clRGinfo -c -m $rg 2>/dev/null | grep -w "$application" | cut -d: -f5) if [[ $MSTATE != *SUSPENDED* && $MSTATE != *FAILED* ]] then dspmsg -s $CLMGR_SET $CLMGR_MSGS 1460 '\nERROR: Application monitoring is already active.Current state is "%1$s" for application "%2$s" in resource group "%3$s".\n\n' "$MSTATE" "$application" "$rg" >&2 rc=$RC_ERROR continue fi fi print "$0()[$LINENO]($SECONDS): cl_RMupdate resume_appmon \"$application\" \"$rg\"" >>$CLMGR_TMPLOG # Always log commands cl_RMupdate resume_appmon "$application" "$rg" >>$CLMGR_TMPLOG 2>$TMPDIR/cl_RMupdate.$$ rc=$? print "$0()[$LINENO]($SECONDS): cl_RMupdate resume_appmon RC: $rc" >>$CLMGR_TMPLOG # Always log command result # : Load all the known, translated error strings from cl_RMupdate. # These strings match those found in clRMupdate.sh. # typeset CL_RMUPDATE_ERRORS CL_RMUPDATE_ERRORS[0]=$(cl_echo 9665 "cl_RMupdate: Failed to resume monitor(s) for application $application.\n" cl_RMupdate $application 2>&1) CL_RMUPDATE_ERRORS[1]=$(cl_echo 5002 "ERROR: cl_RMupdate: Unable to update the Cluster Manager with parameters resume_appmon and [0-9]+! Manual intervention may be required!\n" cl_RMupdate resume_appmon '[0-9]+' 2>&1) # : Check the STDERR file for known error messages. This is done : because it is not possible to trust the return code from that : utility. We can only check for error strings in the output. # for (( i=0; i < ${#CL_RMUPDATE_ERRORS[*]}; i++ )) do if [[ -n ${CL_RMUPDATE_ERRORS[$i]} ]] then grep -q "${CL_RMUPDATE_ERRORS[$i]}" $TMPDIR/cl_RMupdate.$$ if (( $? == 0 )) then rc=$RC_ERROR # Display on STDERR grep "${CL_RMUPDATE_ERRORS[$i]}" $TMPDIR/cl_RMupdate.$$ 1>&2 fi fi done cat $TMPDIR/cl_RMupdate.$$ >>$CLMGR_TMPLOG rm -f $TMPDIR/cl_RMupdate.$$ # Remove the temporary data file if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR break else # These changes don't happen instantly, so wait for the state to change cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1307 'Beginning the process of resuming monitoring. Waiting up to %1$d seconds for the state change to take effect...\n' "$CLMGR_TIMEOUT" typeset -u MSTATE="" for (( TRY=0; TRY/dev/null | grep -w "$application" | cut -d: -f5) if [[ -n $MSTATE && $MSTATE != *SUSPENDED* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1306 'Monitoring for application "%1$s", running in resource group "%2$s", has resumed successfully.\n' "$application" "$rg" break fi sleep 1 done if [[ -z $MSTATE || $MSTATE == *SUSPENDED* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1304 'Warning: the state change has not completed in the allotted time (%1$d seconds).\n' "$CLMGR_TIMEOUT" 1>&2 rc=$RC_ERROR fi fi done fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2$s\" in the displayed text.\n\n" \ "manage application resume -h" "APPLICATION:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_resume_app_monitoring()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_resume_app_monitoring =head1 SYNOPSIS clmgr manage application resume \ RESOURCE_GROUP= CLMGR_TIMEOUT Optional. Externally set in the environment. Sets the upper limit to wait for the overall operation to complete. If this limit is reached, an error is displayed and no results are returned. =head1 DESCRIPTION Resumes application monitoring for the specified application. =head1 ARGUMENTS 1. application [REQUIRED] [string] The name of the application whose monitoring will be resumed. 2. rg [REQUIRED] [string] The resource group that manages the application. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== GR_SET  k\oAםa՝a֝a&Abm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_run_command#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_run_command.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)05 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_run_command.sh, hacmp.assist, 61haes_r720, 1542B_hacmp720 9/30/15 12:00:04 #============================================================================ # # Name: KLIB_HACMP_run_command # # Description: Allows arbitrary commands to be run within the clmgr context, # including logging into the clmgr log file. # # Inputs: See the "devDoc()" function, below. # # Outputs: None. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, below, for the standard return # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_run_command { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_run_command.sh, hacmp.assist, 61haes_r720, 1542B_hacmp720 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values typeset -i rc=$RC_UNKNOWN if [[ -n "$@" ]]; then print "$0()[$LINENO]($SECONDS): $@" >>$CLMGR_TMPLOG # Always log commands eval "$@" rc=$? print "$(basename ${1%% *}) RC: $rc" >>$CLMGR_TMPLOG # Always log command result else print -u2 "\nERROR: no command was specified!\n\n" rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_run_command()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_run_command =head1 VERSION Version Number: 1.3 Last Extracted: 10/15/15 19:21:01 Last Changed: 9/30/15 12:00:04 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_run_command.sh, hacmp.assist, 61haes_r720, 1542B_hacmp720 =head1 SYNOPSIS KLIB_HACMP_run_command =head1 DESCRIPTION Runs the specified commands. =head1 ARGUMENTS "$@" The commands and arguments to be run. =head1 RETURN The return code from the last command is returned. =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2010,2015 All Rights Reserved =cut } # End of POD-formatted documentation. #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== unction kBo=םa՝a֝a&=bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_run_discoveryitorin#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_run_discovery.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2006,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_run_discovery.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_run_discovery =head1 SYNOPSIS clmgr discover cluster clmgr discover interfaces clmgr discover volume_groups =head1 DESCRIPTION Runs discovery on the cluster, and returns the discovered IP and volume group information to the caller. =head1 ARGUMENTS 1. vginfo [OPTIONAL] [hash ref] A reference to an associate array that will be used to return all discovered volume group information. 2. ipinfo [OPTIONAL] [hash ref] A reference to an associate array that will be used to return all discovered IP information. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_run_discovery { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_run_discovery.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset -u disc_type=$_CLASS if [[ -n $1 ]]; then typeset -n vginfo=$1 if [[ -n $2 && $2 != $1 ]]; then typeset -n ipinfo=$2 else typeset -A ipinfo fi else typeset -A vginfo ipinfo fi [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset NO_CLUSTER=0 typeset STDOUT_FILE=$TMPDIR/clmgr.KHrd.out.$$ typeset STDERR_FILE=$TMPDIR/clmgr.KHrd.err.$$ typeset NODES="" CL=$LINENO isClusterDefined >$STDOUT_FILE 2>&1 NO_CLUSTER=$? if (( NO_CLUSTER )) && (( ! CLMGR_VERBOSE || ! CLMGR_FORCE )); then /usr/bin/cat $STDOUT_FILE 1>&2 /usr/bin/rm -f $STDOUT_FILE log_return_msg "$RC_MISSING_DEPENDENCT" "$0()" "$LINENO" return $? elif (( NO_CLUSTER && CLMGR_VERBOSE && CLMGR_FORCE )); then NODES=${_ENV_ARGS[NODES]} [[ $NODES == *([[:space:]]) ]] && NODES=$(/usr/bin/hostname) #=================================================================== # On the rare possibility that the host dies before this script # is done operating, meaning no HACMPnode cleanup would occur, # add an entry to the inittab to make sure that the cleanup takes # place when the host is brought back up. Note that if this script # completes normally, the inittab will be removed. #=================================================================== typeset ODMFILE="$TMPDIR/odm_nodes.$$" rm -f $ODMFILE print '\ if [ -z `/usr/bin/odmget HACMPcluster` ]; then /usr/bin/odmdelete -o HACMPnode fi rmitab hadisccln rm -f $ODMFILE rm -f $0 ' >$TMPDIR/hadisccln mkitab "hadisccln:2:once:/bin/ksh $TMPDIR/hadisccln >/dev/null 2>&1" typeset node="" host="" typeset cversion=$(grep CLUSTERVERSION= $HAETC/rc.cluster) cversion=${cversion##*=} for node in ${NODES//,/ }; do host $node | read host rest if (( $? != 0 )); then cl_dspmsg -s $CLVT_SET $CLVT_MSGS 9999 '\nERROR: "%1$s" could not be resolved via the /usr/bin/host command. Please make sure that "%1$s" is correctly defined in the /etc/hosts file.\n\n' "$node" 1>&2 return $RC_INCORRECT_INPUT fi print " HACMPnode: ${TAB}name = \"${node%%\.*}\" ${TAB}object = \"COMMUNICATION_PATH\" ${TAB}value = \"$host\" ${TAB}node_id = 0 ${TAB}node_handle = 0 ${TAB}version = $cversion" >>$ODMFILE done # Add the temporary HACMPnode entries odmadd <$ODMFILE rm -f $ODMFILE print "$0()[$LINENO]($SECONDS): $HADIAG/clver -Nv" >>$CLMGR_TMPLOG $HADIAG/clver -Nv >$STDOUT_FILE 2>$STDERR_FILE rc=$? print "clver RC: $rc" >>$CLMGR_TMPLOG print "$0()[$LINENO]($SECONDS): $HAUTILS/clharvest_vg -w" >>$CLMGR_TMPLOG $HAUTILS/clharvest_vg -w >$STDOUT_FILE 2>$STDERR_FILE rc=$? print "clharvest_vg RC: $rc" >>$CLMGR_TMPLOG elif [[ $disc_type == "INTERFACE" ]]; then print "$0()[$LINENO]($SECONDS): $HADIAG/clver -Nv" >>$CLMGR_TMPLOG # Always log commands $HADIAG/clver -Nv >$STDOUT_FILE 2>$STDERR_FILE rc=$? print "clver RC: $rc" >>$CLMGR_TMPLOG # Always log command result elif [[ $disc_type == "VOLUME_GROUP" ]]; then print "$0()[$LINENO]($SECONDS): $HAUTILS/clharvest_vg -w" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clharvest_vg -w >$STDOUT_FILE 2>$STDERR_FILE rc=$? print "clharvest_vg RC: $rc" >>$CLMGR_TMPLOG # Always log command result else print "$0()[$LINENO]($SECONDS): $HAUTILS/clmodclstr -K" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clmodclstr -K >$STDOUT_FILE 2>$STDERR_FILE rc=$? print "clmodclstr RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi (( $rc != RC_SUCCESS )) && rc=$RC_ERROR if (( $rc == RC_SUCCESS )); then if [[ $disc_type == "INTERFACE" ]]; then if [[ -r $HAETC/config/clip_config ]]; then typeset node="" interface_description="" iplabel="" ip_int="" typeset ip="" netmask_int="" netmask="" subnet_int="" subnet="" typeset logical_interface="" logical_adapter="" typeset hardware_address="" state="" nim_type="" attr_type="" typeset discoveredNet="" macaddr="" pair="" network="" rest="" while IFS='#' read node interface_description \ iplabel ip_int ip netmask_int netmask \ subnet_int subnet logical_interface logical_adapter \ hardware_address state nim_type attr_type discoveredNet \ rest do [[ -z $ip ]] && continue LC_ALL=C lscfg -vl $logical_adapter |\ grep -w "Address" | read hardware_address hardware_address=${hardware_address##*\.} macaddr="" for (( i=0; i<${#hardware_address}; i+=2 )); do pair=${hardware_address:$i:2} [[ -n $macaddr ]] && macaddr="$macaddr:" macaddr="$macaddr$pair" done if [[ $discoveredNet == +([[:digit:]]) ]]; then (( $discoveredNet == 0 )) && discoveredNet=1 if (( $discoveredNet < 10 )); then network="net_ether_0$discoveredNet" else network="net_ether_$discoveredNet" fi fi ipinfo[${ip%%/*}]="${node//:*/}|$iplabel|$nim_type|$subnet|$netmask|$logical_interface|$logical_adapter|$macaddr|$state|$nim_type|$network|$attr_type" done < $HAETC/config/clip_config fi fi if [[ $disc_type == "VOLUME_GROUP" ]]; then if [[ -r $HAETC/config/clvg_config ]]; then typeset node="" pv="" pvid="" vg="" major="" ecm="" typeset status="" quorum="" local="" type="" size="" while IFS=':' read node pv pvid vg major ecm status \ quorum local type size do [[ -z $vg ]] && continue pv=${pv# } node=${node//:*/} [[ $node != $LOCAL_NODE ]] && continue [[ $quorum == "0" ]] && quorum="false" || quorum="true" [[ $ecm == "0" ]] && ecm="false" || ecm="true" [[ -n ${vginfo[$vg]} ]] && vginfo[$vg]="${vginfo[$vg]}$NL" vginfo[$vg]="${vginfo[$vg]}$node|$pv|$pvid|$major|$ecm|$status|$quorum|$local|$type|$size" done < $HAETC/config/clvg_config for vg in ${!vginfo[*]}; do vginfo[$vg]=$(print -- "${vginfo[$vg]}" | sort) done fi fi if (( CLMGR_VERBOSE )); then case $disc_type in INTERFACE) typeset -A props typeset -i INDEX=1 for ip in ${!ipinfo[*]}; do print -- ${ipinfo[$ip]} | IFS=\| read node iplabel nim_type subnet netmask logical_interface logical_adapter macaddr state nim_type network attr_type rest props[NAME$INDEX]=$iplabel props[TYPE$INDEX]="boot" props[INTERFACE$INDEX]=$logical_interface props[IPADDR$INDEX]=${ip%%/*} props[NETMASK$INDEX]=$netmask props[NODE$INDEX]=${node//:*/} props[STATE$INDEX]=$state props[NETTYPE$INDEX]=$nim_type props[NETWORK$INDEX]=$network props[ATTR$INDEX]=$attr_type props[STATE$INDEX]=$state props[HADDR$INDEX]=$macaddr (( INDEX++ )) done # End of the IP address loop CL=$LINENO SerializeAsAssociativeArray props interface ;; VOLUME_GROUP) typeset -A props typeset -u type="" typeset VGS="" for vg in ${!vginfo[*]}; do [[ $vg == "None" ]] && continue [[ " $VGS " != *\ $vg\ * ]] && VGS="$VGS $vg" done typeset -i INDEX=1 for vg in $VGS; do typeset -i DISK_CNT=1 for vglabel in ${!vginfo[*]}; do [[ $vglabel != $vg ]] && continue print -- "${vginfo[$vg]}" |\ while read LINE; do print -- "$LINE" |\ IFS=\| read node pv pvid major ecm status \ quorum local type size rest if (( DISK_CNT == 1 )); then props[NAME$INDEX]=$vg props[PHYSICAL_VOLUMES$INDEX]="$pv@$pvid" props[CONCURRENT_ACCESS$INDEX]=$ecm props[QUORUM$INDEX]=$quorum props[MAJOR_NUMBER$INDEX]=$major if [[ $type != "UNKNOWN" ]]; then props[TYPE$INDEX]=$type fi else props[PHYSICAL_VOLUMES$INDEX]="${props[PHYSICAL_VOLUMES$INDEX]},$pv@$pvid" if [[ $type != "UNKNOWN" ]]; then props[TYPE$INDEX]=$type fi fi (( DISK_CNT++ )) done done if [[ ${props[TYPE$INDEX]} == "" ]]; then for pv in ${props[PHYSICAL_VOLUMES$INDEX]//,/ }; do pv=${pv%%@*} /usr/sbin/lqueryvg -Atp $pv |\ while IFS= read LINE; do if [[ $LINE == MAX\ PVs:* ]]; then LINE=${LINE##*+([[:space:]])} if [[ $LINE == +([[:digit:]]) ]]; then if (( $LINE < 128 )); then LINE="ORIGINAL" elif (( $LINE < 1024 )); then LINE="BIG" else LINE="SCALABLE" fi fi props[TYPE$INDEX]=$LINE fi [[ -n ${props[TYPE$INDEX]} ]] && break done done fi (( INDEX++ )) done # End of the volume group loop CL=$LINENO SerializeAsAssociativeArray props volume_group ;; esac fi fi if (( ! CLMGR_VERBOSE || $rc != RC_SUCCESS )); then [[ -s $STDOUT_FILE ]] && /usr/bin/cat $STDOUT_FILE [[ -s $STDERR_FILE ]] && /usr/bin/cat $STDERR_FILE 1>&2 elif (( CLMGR_VERBOSE || $rc == RC_SUCCESS )); then [[ -s $STDOUT_FILE ]] && /usr/bin/cat $STDOUT_FILE >>$CLMGR_TMPLOG [[ -s $STDERR_FILE ]] && /usr/bin/cat $STDERR_FILE >>$CLMGR_TMPLOG fi [[ -f $STDOUT_FILE ]] && /usr/bin/rm -f $STDOUT_FILE [[ -f $STDERR_FILE ]] && /usr/bin/rm -f $STDERR_FILE if (( NO_CLUSTER && CLMGR_FORCE && CLMGR_VERBOSE )); then # Time to clean up odmdelete -o HACMPnode >>$CLMGR_TMPLOG 2>&1 rmitab hadisccln >>$CLMGR_TMPLOG 2>&1 rm -f $TMPDIR/hadisccln >>$CLMGR_TMPLOG 2>&1 rm -f $HAETC/config/clip_config $HAETC/config/clvg_config fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_run_discovery()"  ko9םa՝a֝a&9bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_suspend_app_monitoringcy#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_suspend_app_monitoring.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 6fdea0a 43haes/lib/ksh93/hacmp/KLIB_HACMP_suspend_app_monitoring.sh, 726, 2147A_aha726, Jun 09 2021 09:12 PM #============================================================================ # # Name: KLIB_HACMP_suspend_app_monitoring # # Description: This is the main, FPATH function that is invoked by clmgr # to suspend application monitoring for a specific application # running within a specific resource group. # # Inputs: See the "devDoc()" function, below. # # Outputs: Informational messages are written to STDOUT, and any error # messages that might be needed are written to STDERR. # # Returns: Zero if no errors are detected. Otherwise, an appropriate # non-zero value is returned. Refer to the "RETURN" section # of the "devDoc()" function, above, for the standard return\ # code values/meanings for clmgr. # #============================================================================ function KLIB_HACMP_suspend_app_monitoring { . $HALIBROOT/log_entry "$0()" "$CL" : version= @(#) 6fdea0a 43haes/lib/ksh93/hacmp/KLIB_HACMP_suspend_app_monitoring.sh, 726, 2147A_aha726, Jun 09 2021 09:12 PM : INPUTS: $* typeset application=${1//\"/} typeset rg=${2//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i LIST_APPS=1 typeset -i BAD_RG=0 typeset -u APP_UC=$application [[ $CLMGR_TIMEOUT != +([[:digit:]]) ]] && CLMGR_TIMEOUT=60 (( $CLMGR_TIMEOUT < 10 )) && CLMGR_TIMEOUT=10 #===================== : Validate the input #===================== if [[ -z $application ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 RC=$RC_MISSING_INPUT elif [[ $APP_UC != "ALL" ]]; then CL=$LINENO KLIB_HACMP_is_known_appserver "$application" >/dev/null 2>&1 if (( $? == RC_SUCCESS )); then LIST_APPS=0 else dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$application" 1>&2 rc=$RC_NOT_FOUND fi fi if [[ $APP_UC != "ALL" ]] && (( LIST_APPS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 141 "Available Applications:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_appservers available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ $APP_UC != "ALL" ]]; then if [[ -z $rg ]]; then dspmsg -s $CLMGR_SET $CLMGR_MSGS 101 '\nERROR: this operation requires the "%1$s" attribute.\n\n' RESOURCE_GROUP 1>&2 rc=$RC_MISSING_INPUT BAD_RG=1 else CL=$LINENO KLIB_HACMP_is_known_rg "$rg" >/dev/null 2>&1 if (( $? != RC_SUCCESS )) then dspmsg -s $CLMGR_SET $CLMGR_MSGS 102 '\nERROR: "%1$s" does not appear to exist!\n\n' "$rg" 1>&2 rc=$RC_NOT_FOUND BAD_RG=1 fi fi if (( BAD_RG )) then dspmsg -s $CLMGR_SET $CLMGR_MSGS 154 "Available Resource Groups:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_resourcegroups available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi # : Make sure the cluster is up and running # typeset CSTATE=$(CL=$LINENO KLIB_HACMP_get_cluster_state) if [[ $CSTATE != "STABLE" ]]; then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1300 '\nERROR: The cluster is not online, so this operation cannot be performed.\n\n' 1>&2 rc=$RC_MISSING_DEPENDENCY fi #================================================================== : Only proceed with the operation if the result is still unknown, : which means no input errors have been encounter. #================================================================== if (( $rc == RC_UNKNOWN )); then # : Create an array populated with all application/RG pairs # typeset -i index=0 typeset -A rgattrs typeset arr= if [[ $APP_UC == "ALL" ]]; then for pair in $(clodmget -n -q "name=APPLICATIONS" -f value,group HACMPresource); do arr[$index]="$pair" (( index++ )) done else arr[$index]="$application:$rg" fi for (( index=0; index<${#arr[*]}; index++ )); do application=${arr[$index]%:*} rg=${arr[$index]#*:} # : Make sure the cluster is up and running # CL=$LINENO KLIB_HACMP_get_resourcegroup_state "$rg" rgattrs if [[ ${rgattrs[STATE]} != "ONLINE" ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1301 '\nERROR: Resource group "%1$s" is not online, so this operation cannot be performed.\n\n' "$rg" 1>&2 rc=$RC_MISSING_DEPENDENCY continue else # : Make sure that monitoring for application "$application" : is actually active for resource group "$rg". # typeset -u MSTATE=$(LC_ALL=C clRGinfo -c -m $rg 2>/dev/null | grep -w "$application" | cut -d: -f5) if [[ $MSTATE == *SUSPENDED* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1302 '\nERROR: Application monitoring has already been suspended for application "%1$s" in resource group "%2$s".\n\n' "$application" "$rg" >&2 rc=$RC_ERROR continue fi fi print "$0()[$LINENO]($SECONDS): cl_RMupdate suspend_appmon \"$application\" \"$rg\"" >>$CLMGR_TMPLOG # Always log commands cl_RMupdate suspend_appmon "$application" "$rg" >>$CLMGR_TMPLOG 2>$TMPDIR/cl_RMupdate.$$ rc=$? print "$0()[$LINENO]($SECONDS): cl_RMupdate RC: $rc" >>$CLMGR_TMPLOG # Always log commands # : Load all the known, translated error strings from cl_RMupdate. # These strings match those found in clRMupdate.sh. # typeset CL_RMUPDATE_ERRORS CL_RMUPDATE_ERRORS[0]=$(cl_echo 9664 "cl_RMupdate: Failed to suspend monitor(s) for application $application.\n" cl_RMupdate $application 2>&1) CL_RMUPDATE_ERRORS[1]=$(cl_echo 5002 "ERROR: cl_RMupdate: Unable to update the Cluster Manager with parameters suspend_appmon and [0-9]+! Manual intervention may be required!\n" cl_RMupdate suspend_appmon '[0-9]+' 2>&1) # : Check the STDERR file for known error messages. This is done : because it is not possible to trust the return code from that : utility. We can only check for error strings in the output. # for (( i=0; i < ${#CL_RMUPDATE_ERRORS[*]}; i++ )) do if [[ -n ${CL_RMUPDATE_ERRORS[$i]} ]] then grep -q "${CL_RMUPDATE_ERRORS[$i]}" $TMPDIR/cl_RMupdate.$$ if (( $? == 0 )) then rc=$RC_ERROR # Display on STDERR grep "${CL_RMUPDATE_ERRORS[$i]}" $TMPDIR/cl_RMupdate.$$ >&2 fi fi done cat $TMPDIR/cl_RMupdate.$$ >>$CLMGR_TMPLOG rm -f $TMPDIR/cl_RMupdate.$$ # Remove the temporary data file print "$0()[$LINENO]($SECONDS): cl_RMupdate suspend_appmon RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then rc=$RC_ERROR break else # These changes don't happen instantly, so wait for the state to change cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1308 'Beginning the process of suspending monitoring. Waiting up to %1$d seconds for the state change to take effect...\n' "$CLMGR_TIMEOUT" typeset -u MSTATE="" for (( TRY=0; TRY/dev/null | grep -w "$application" | cut -d: -f5) if [[ -n $MSTATE && $MSTATE == *SUSPENDED* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1303 'Monitoring for application "%1$s", running in resource group "%2$s", has been successfully suspended.\n' "$application" "$rg" break fi sleep 1 done if [[ -z $MSTATE || $MSTATE != *SUSPENDED* ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1304 'Warning: the state change has not completed in the allotted time (%1$d seconds).\n' "$CLMGR_TIMEOUT" 1>&2 rc=$RC_ERROR fi fi done fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2$s\" in the displayed text.\n\n" "manage application suspend -h" "APPLICATION:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_suspend_app_monitoring()" #============================================================================ # # Name: devDoc # # Description: This is a never-to-be-called, wrapper function that all the # clmgr FPATH functions implement in order to hide embedded # syntax from trace logging. This information is implemented # in POD format, and can be viewed in a number of ways using # POD tools. Some viewing suggestions for this function's POD- # formatted information are: # # perldoc # pod2text -c # pod2text -c --code # pod2html # # However, the more important use for this information is that # it is parsed by clmgr to display the syntax for this file's # operation. The information in the "SYNOPSIS" section is used # for this purpose. This feature was originally implemented # using the man page information. However, in a code review it # was pointed out that this approach had to be changed because # customers do not have to install the man pages! Therefore, a # built-in dependency on man page information would break the # automatic help feature of clmgr. So the SYNPOSIS section must # be used instead. # # IMPORTANT: As a result of this, it is imperative that the # information in this SYNOPSIS be kept in sync # with the man page information, which is owned # by the IDD team. # # Inputs: None. # # Outputs: None. # # Returns: n/a (not intended to be invoked) # #============================================================================ function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_suspend_app_monitoring =head1 SYNOPSIS clmgr manage application suspend \ RESOURCE_GROUP= CLMGR_TIMEOUT Optional. Externally set in the environment. Sets the upper limit to wait for the overall operation to complete. If this limit is reached, an error is displayed and no results are returned. =head1 DESCRIPTION Suspends application monitoring for the specified application in the specified resource group. =head1 ARGUMENTS 1. application [REQUIRED] [string] The name of the application whose monitoring will be suspended. 2. rg [REQUIRED] [string] The resource group that manages the application. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of "devDoc()" #============================================================================== # The following, comment block attempts to enforce coding standards when this # file is edited via emacs or vim. This block _must_ appear at the very end # of the file, or the editor will not find it, and it will be ignored. #============================================================================== # Local Variables: # indent-tabs-mode: nil # tab-width: 4 # End: #============================================================================== # vim: tabstop=4 shiftwidth=4 expandtab #============================================================================== or kRoFםa՝a֝a&Fbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_sync_file_collectiongcy#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_sync_file_collection.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)30 1.3 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_sync_file_collection.sh, hacmp.assist, 61haes_r714 10/17/13 09:15:02 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_sync_file_collection =head1 VERSION Version Number: 1.3 Last Extracted: 1/31/14 04:41:43 Last Changed: 10/17/13 09:15:02 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_sync_file_collection.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr sync file_collection =head1 DESCRIPTION Change the specified PowerHA file_collection, using the specified parameter(s). =head1 ARGUMENTS 1. fcname [REQUIRED] [string] The name of the file collection that is to be propagated throughout the cluster. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_sync_file_collection { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.3, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_sync_file_collection.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset fcname=${1//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #================================================================ : Check for a defined cluster. No need to continue without one. #================================================================ CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #===================== : Validate the input #===================== elif [[ -z $fcname ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else print "$0()[$LINENO]($SECONDS): $HAUTILS/clfileprop -m \"$fcname\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clfileprop -m "$fcname" rc=$? print "clfileprop RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed ext.\n\n" \ "offline file_collection -h" "FILE COLLECTION:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_sync_file_collection()" Re kDo םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_undo_cfg_changesion#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_undo_cfg_changes.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)36 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_undo_cfg_changes.sh, hacmp.assist, 61haes_r714 6/11/12 09:18:22 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_undo_cfg_changes =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:13 Last Changed: 6/11/12 09:18:22 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_undo_cfg_changes.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr manage node undo =head1 DESCRIPTION Restores the cluster configuration to its state as of the last synchronization. Effectively, this "undoes" any current, unsynchronized configuration changes. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_undo_cfg_changes { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_undo_cfg_changes.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #=============================== : See if a cluster even exists #=============================== CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #======================================================================= : Undo the configuration changes if no input errors have been detected #======================================================================= else typeset a= b= c= d= junk= NAME= /usr/bin/date | read a b c d junk d=${d//:/.} NAME="Restored_From_ACD.$b.$c.$d" print "$0()[$LINENO]($SECONDS): $HAUTILS/cl_dcd_acd -d'Restored_from_ACD' -n\"$NAME\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cl_dcd_acd -d'Restored_from_ACD' -n"$NAME" rc=$? print "cl_dcd_acd RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_undo_cfg_changes()" -m \"$f kuo םa՝a֝a& bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_unlock_clustersion#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_unlock_cluster.sh 1.2 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)69 1.2 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_unlock_cluster.sh, hacmp.assist, 61haes_r714 6/11/12 09:18:23 # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_unlock_cluster =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:15 Last Changed: 6/11/12 09:18:23 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_unlock_cluster.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr unlock cluster =head1 DESCRIPTION Issuing this command will force any locks set by a Dynamic Reconfiguration (a.k.a. DARE) event to be released. =head1 ARGUMENTS None. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_unlock_cluster { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_unlock_cluster.sh, hacmp.assist, 61haes_r714 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN #=============================== : See if a cluster even exists #=============================== CL=$LINENO isClusterDefined if (( $? != RC_SUCCESS )); then rc=$RC_MISSING_DEPENDENCY #=========================================================== : Unlock the cluster if no input errors have been detected #=========================================================== else print "$0()[$LINENO]($SECONDS): $HAUTILS/cldare -u" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/cldare -u rc=$? print "cldare RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_unlock_cluster()" ma lꂭoVםa՝a֝a&4bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_verify_and_syncion  =einorst acdfhlp"#$ACELNORS[]_gmuvy&()-./:>DGIMPT\bw,012FHUk|}!'*4;BYx{367ԐF`ؼXʲ!Y"Ƃ0``n֥9UF;!K6]RUklVu+i,v90ף9)=І ;YX#/ Y{ˊ kAUdjQcgQ#9# ]X#qi,/YTc]9ZK9{>]Ja*qQɢYg V[;yǥ@v&ZTwgrAAcu(cCPخv0ŕd5(M8mvi,sQ[qخv;SUVPZciX"Ɇǥ%ED*Vy59{i.ijڐl`,RU 'A`^*(~&PT,\?O0p>Ԩ<.48"O0j9MÃƇP1l.48"b*"UE?}y [ITZnaGq?}y [:Ţx,88\hpE^a1LUrp.48"ɊNxrbpp ;&8b'bQ(88\hpE^a1qli<0q?}yYbG88\hpE^a1(pp DPDPp8Z cȓ,hQ!!2]rS3&p wʵc^S9EcmmmmmC?E5b+0ymmmm&8c7G"hP*!&9BM **h"B$hѨ1@Bɜ$'Z }S?Ǩ8p D, ̙Bu@!4)1=/b (hA@'2g0Kء$' n4x72e-CД?Kء!0cA98HNµ@!-701:Ţ=@P$ Ђ`NdbcicXX!`=rN{( (>X3蝋s)F!`=rN{( )`Ndv.I|^QaCz'bQ{A98HNع'=k\>c-70*ncM^7D\J%WC'טLuɊNWq^7ρUP0c÷~`72g U^4h` 96(Lj cqli38ٶ4UF CzzSۍ?039IUF0j aǜ3&*8^4hayɊNP0cع'={qs&prN{(^4haz'bQN9ۍcc/E(̙BtN9Uxѡq蝋s)Dj aǬj1i̙BumF-%W[Ťj a2g ‚{baxHO/{ƍ ||ty12+e2)0x{"h8Ea`_ef1:9x刚.\LB(D  LL"F׷(68ɉ$P*PDX~&($Xа2H68cq,qqx&($Xа2Hǥ$&TKcc&h ͣ:뽍4x$(,be *d(yrDJ.ǥb!4z1c7DcB‚ʉ ‚4z1cۂ/?Xp\ I^0 IH .?$XR-Ԝqu3F_a9nR.tvQ#9>ԕ{X"ֺ8sJyŋqVE.z1cN8OE謶'0|:ֱ<99|拴])Y{:CE7CybE *$P,  Cg4״Ə,D"Ŋ LL"F׷Q!GB&&PBB$DAaK-_$\n <1A"ƅIC'טLw"矣F5FCaPpA%bȓ,hXPTQ ?ޕ]lq!Af(HS!C˒"Tp%KB//"zXP"&AcqI 4,(*LS ޗn *P]lqyAEA `;1@X @x7)5Wt<1)1|2.y 0`> 2"ƔsdndVZKN 2,I^0 IhI,T~E}*56t;E"GIc|2.y9QE.Ѹ(@$6ii7XA2 $*H"@Ѹ(Tj{qAmm"F3㭶mjS0cK BqPn52VZp\ Ǒ&($XrB$.$_0V bKVq҄F-rsG$8nckR"TPPPLa2 <+Q4': C11<ɜ$'|MDȚ L#| +*'<]YȐ!F^qUVs(đ$[ILmmmmmm$be +fEH%EH qʼnc+dc>ܱEH._ BwG"hbK!CaA[4(Je0Cz]b&$\VZRƟ ̙-CummmmmmmC?DGId|`[*?(bklS|Zܺ&ьŦmmmmmmmL1&p @R4AU喔4/2d ⬵QJrdzTxCwAmmmmmmjUwtM90u$P2K&犨tke>.wg]]hŎnX?[mmmmmmmcޗnX$I/!9BM **h"B$h`?b1?ئ`=rN{(^=^Qas&P?!;Vt=/J,=9':l"~# wńI,=/i,pN"NaqaEqz*(Ķ7E0"EP1pb,XF(Q^'_!zZx;^0|/dc-Cwe󱰌1cMU-*y5ae9L5زQϐFVCsg[IH#$t^'_;fS㸻2qw=cyjrht=/Z퍌ұܫR%Kqu3F XEϔPҖ  v]ӣS6Ƣ\XDbڌZt =CF!GB&&PBB$DAai2A,z_>8llǤ-70*q蝋s)DǬj1i*q&*8^#qI 4,(*L,2k8ޓEHT#Dʉ FD $~qliǢv.I|/{ŤǜUxcc 0'9IUYͱʯzJsPaB(H!$&TKdD5oI"˹ȓ,hXPTQ,vbshug6ƛC,.H2BBeѺK& |OcsҒcM^8EWQVr$i,vb ?ޕXE,CF!CummmmmmmP˦gZqE]G<1lAj)VAehPcыYYRyz1cId|UbJ86F`OKc^|s88MF8;\ Z4$7-j㭶mmmmmmmڇR{?02VZ‚K,Dpq$*PIcPh IlrDIcG*D3E En*@rB8Hi,v90ף9{bHŎnŎn*@rB;.4y2H4P!q-);IOcqqeDDRX YoQ'!P(KS4u9B$ɕ"@DI Q"`7&HG&HGCIcIQνKأF,sw//F,spa2dw7k\heH&hQBCq,ZSv+-'QZGʉ{>*NCFQ!|h G!(Tj{q;$)$@EMCjf}A[mmmmmmmmmjD'\{YVCd4vxd\1!"Ҙ#z+/:Ԣ7Ee(8m0T7PRl8r[]瓃r@G8ٶ4n,!9ݐqu2J9#E"bs̑Octv81/ܦ2g`ƛ@w-ܻNy2ƛtٹXQ!uEh TbG<19zM`&LB0\dd (HA@a9900L"  ;r`bqlɒ(@P x#saa:Y Q8XQ t_ O?o6Au?Y}Dsj1i rb47Vv5G<1cUip4QRe7d39Ud5νwBCqeY IF'_80cQYc.S@woE蛝Q8X x#ctt̑@w w1QY {I]TSbtE/Z2L5?Ir` 7=/bEEʔ Lb{l01ZQhbƦđLeYvG<Q#9YX#/sTaF,sCqeY Ŏj"u?NËO?Y1orUV_x̀! =1+8d5?I!AJs QQa23^ƛ2 sZ󱩱$bSVbs<]/Q9C*F$XFUF:+.*M8PUӌL8rKviE"0F!"H@LX?kl4V[D,Y0 A qZ,n`R B/cMC9J- Yؒ1s)1V_].u+-YCȱdFF0uEKأF,sx#$ &, s\3EEʔ Lb{l5S=/bILUrzȌJljlIxJ&*8pUVO[ t_qVs(đ(nع'=sEEʔ Lb{l01ZQhbƦđLeYvc'!ظ1bH'=tEsOLy{bHŎhj` qliQQa23^ƛ2fzzV$(4^z_K A@b"SE順6QQa23^ƛ2 F-<]Z/Oqخv:q*ŎnYbӢ2#dq,1:+-NSMN*Λ)E>^*༤)ad"e-Na!!|3EEʔ LaCYY"0ӛNSχhqQϝ>,i*ŎhjUeYbBCw/{ f_:sJ2Yܼ]yETON12RJa e $ua<%=zSG9#sud88SCarw :{(8A6qӘQ5sQƤRqQ>a;c=9^Z#nmty@ LQ E+8RWEъ(!R;8Sܦ59<"䂂ƠmmmmmmmmmbΣY,iFYc8aܵG=)rliEጫ- F-;!lb # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_verify_methods =head1 VERSION Version Number: 1.2 Last Extracted: 1/31/14 04:41:15 Last Changed: 6/11/12 09:50:18 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_verify_methods.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr verify methods =head1 DESCRIPTION Verifies that the specified method will be executed when any of its registered events occur. =head1 ARGUMENTS 1. method [REQUIRED] [string] The method to be tested. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_verify_methods { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.2, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_verify_methods.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset method=${1//\"/} shift [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset -i i=0 #===================== : Validate the input #===================== if [[ -z $method ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT fi if (( $rc == RC_UNKNOWN )); then typeset type= CL=$LINENO KLIB_HACMP_is_known_method $method type if (( $? == RC_SUCCESS )); then if [[ $type != *notify* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 1170 "\nMethod \"%1\$s\" is not a \"notify\" method.\n\n" "$method" 1>&2 fi else rc=$RC_NOT_FOUND /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$method" 1>&2 /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 149 "Available Methods:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_methods available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi fi #=========================================================== : Verify the methods if no input errors have been detected #=========================================================== if (( $rc == RC_UNKNOWN )); then typeset -A attrs CL=$LINENO KLIB_HACMP_get_method_attributes $method attrs typeset EVENTS= for key in ${!attrs[*]}; do if [[ $key == EVENTS* ]]; then for event in ${attrs[$key]}; do if [[ " $EVENTS " != *\ $event\ * ]]; then EVENTS="$EVENTS $event" fi done fi done for event in $EVENTS; do /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 139 "Verifying with event \"%1\$s\"...\n" "$event" print "$0()[$LINENO]($SECONDS): $HAUTILS/clissuepage \"$event\"" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clissuepage "$event" rc=$? print "clissuepage RC: $rc" >>$CLMGR_TMPLOG # Always log command result (( $rc != RC_SUCCESS )) && rc=$RC_ERROR done fi (( $rc == RC_UNKNOWN )) && rc=$RC_SUCCESS #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "verify method -h" "METHOD:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_verify_methods()" oc kco6$םa՝a֝a&6$bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_view_logtho#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_log.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)00 1.4 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_log.sh, hacmp.assist, 61haes_r714 5/15/13 14:22:11 #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_view_log =head1 VERSION Version Number: 1.4 Last Extracted: 1/31/14 04:41:46 Last Changed: 5/15/13 14:22:11 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_log.sh, hacmp.assist, 61haes_r714 =head1 SYNOPSIS clmgr view log [ {|EVENTS} ] \ [ TAIL= ] \ [ HEAD= ] \ [ FILTER=[,,,...] ] \ [ DELIMITER= ] \ [ CASE={insensitive|no|off|false} ] =head1 DESCRIPTION Displays the contents of the specified PowerHA log, in the indicated manner. If one or more filters are specified, then they are applied first, before limiting the number of lines. If both TAIL and HEAD are provided, TAIL is applied first, then HEAD. =head1 ARGUMENTS 1. log [REQUIRED] [string] The shortname of the PowerHA log file that is to be viewed. 2. tail [OPTIONAL] [integer] The number of lines to display from the bottom of the file. 3. head [OPTIONAL] [integer] The number of lines to display from the top of the output. 4. filters [OPTIONAL] [string] One or more search strings. 5. delimiter [OPTIONAL] [string] The string separator to look for in the specified filters. Defaults to a comma. 6. case [OPTIONAL] [string] An indicator of whether or not the specified filters should be used to search the log in a case sensitive manner (the default). Valid values include: {insensitive|no|off|false} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function on_exit_view_log { [[ -n $EVFILE && -f $EVFILE ]] && /usr/bin/rm -f "$EVFILE" (( $rc == RC_UNKNOWN )) && exit $RC_ERROR } function KLIB_HACMP_view_log { trap 'on_exit_view_log' EXIT LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_log.sh, hacmp.assist, 61haes_r714 : INPUTS: $* typeset log=${1##*/} shift typeset -i tail=${1//\"/} typeset -i head=${2//\"/} typeset filters=${3//\"/} typeset delimiter=${4//\"/} typeset -l case=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i default=500 status=0 rc=$RC_UNKNOWN # Declare globally, so it is visible in the exit function typeset -i i=0 typeset DIRECTORY= GREP= EVFILE= # Declare globally, so it is visible in the exit function typeset -u UC_LOG=$log [[ -z $delimiter ]] && delimiter=',' #===================== : Validate the input #===================== if [[ -z $log ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT elif [[ $UC_LOG != EV* ]]; then CL=$LINENO KLIB_HACMP_is_known_log "$log" DIRECTORY 2>/dev/null if (( $? != RC_SUCCESS )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$log" 1>&2 rc=$RC_NOT_FOUND elif [[ ! -f "$DIRECTORY/$log" ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$DIRECTORY/$log" 1>&2 rc=$RC_NOT_FOUND fi fi if (( $rc == RC_NOT_FOUND )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 147 "Available Logs:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_logs available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" fi if [[ -n $1 ]] && (( tail <= 0 )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" TAIL 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $2 ]] && (( head <= 0 )); then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" HEAD 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $filters == *@(\`|\$\()* ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 133 "\nERROR: the \"%1\$s\" option contains a shell execution character: %2\$s\n\n" FILTER "$filters" 1>&2 rc=$RC_INCORRECT_INPUT fi if (( $rc == RC_UNKNOWN )); then if [[ "$*" == *([[:space:]]) ]]; then /usr/bin/dspmsg -s $CLVT_SET $CLVT_MSGS 134 "Warning: no options were provided for log \"%1\$s\".\n Defaulting to the last %2\$s lines.\n" "$log" "$default" tail=$default fi #================================================ : See if an events summary report was requested #================================================ if [[ $UC_LOG == EV* ]]; then DIRECTORY=$TMPDIR log=clmgr.KHvl.evs.$$ EVFILE=$DIRECTORY/$log print "$0()[$LINENO]($SECONDS): $HAUTILS/clevsummary" >>$CLMGR_TMPLOG # Always log commands $HAUTILS/clevsummary >$EVFILE 2>/dev/null rc=$? print "clevsummary RC: $rc" >>$CLMGR_TMPLOG # Always log command result fi #=========================== : Display the log contents #=========================== if [[ -n $filters ]]; then IFS=$delimiter for filter in $filters; do GREP="$GREP | /usr/bin/grep" [[ $case == @(i|f|n|off)* ]] && GREP="$GREP -i" GREP="$GREP \"$filter\"" done GREP=${GREP# \| } #====================== : Insert the log file #====================== if [[ $GREP == *\|* ]]; then GREP=${GREP/\|/ $DIRECTORY/$log \|} else GREP="$GREP $DIRECTORY/$log" fi if (( tail && head )); then eval $GREP | /usr/bin/tail -n $tail | /usr/bin/head -n $head elif (( tail )); then eval $GREP | /usr/bin/tail -n $tail elif (( head )); then eval $GREP | /usr/bin/head -n $head else eval $GREP fi else if (( tail && head )); then /usr/bin/tail -n $tail $DIRECTORY/$log | /usr/bin/head -n $head elif (( tail )); then /usr/bin/tail -n $tail $DIRECTORY/$log elif (( head )); then /usr/bin/head -n $head $DIRECTORY/$log fi fi (( $? != RC_SUCCESS )) && rc=$RC_ERROR fi [[ -f $EVFILE ]] && /usr/bin/rm -f "$EVFILE" #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "view log -h" "LOG:" "$CLVT_PROGNAME" 1>&2 fi (( $rc == RC_UNKNOWN )) && rc=$RC_SUCCESS log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_view_log()" r  ko/ םa՝a֝a&/ bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_view_mirror_groupon#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_mirror_group.sh 1.1 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2012 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2ht-ml function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_view_mirror_group =head1 VERSION Version Number: 1.4 Last Extracted: 10/18/12 17:50:40 Last Changed: 10/8/12 12:21:43 Path, Component, Release(, Level): src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_mirror_group.sh, hacmp.assist, 61haes_r712, 1242B_hacmp712 =head1 SYNOPSIS clmgr view mirror_group [,,...] \ [ NODE= ] clmgr view mirror_group \ NODES=[,,...] \ [ SYSTEM_GROUPS={yes|no} ] clmgr view mirror_group \ SITE=[,] \ [ SYSTEM_GROUPS={yes|no} ] [ REPOSITORY_GROUP={yes|no} ] NOTE: the "view" action is only valid for DS-Series Inband (HyperSwap) NOTE: the alias for "mirror_group" is "mig". =head1 DESCRIPTION Attempts to view the specified HyperSwap mirror groups. =head1 ARGUMENTS 1. mirror_groups [OPTIONAL] [string] One or more HyperSwap mirror groups to view. 2. nodes [OPTIONAL] [string] The label of one or more cluster nodes. 3. sites [OPTIONAL] [string] The label of one or more cluster sites. 4. system_groups [OPTIONAL] [boolean] Indicates whether or not to include system mirror groups in the view. Defaults to "yes". 5. repository_group [OPTIONAL] [boolean] Indicates whether or not to include the repository mirror group in the view. Defaults to "yes". =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =head1 COPYRIGHT COPYRIGHT International Business Machines Corp. 2005,2010 All Rights Reserved =cut } # End of POD-formatted documentation. function KLIB_HACMP_view_mirror_group { LINENO=2 . $HALIBROOT/log_entry "$0()" "$CL" : version=1.4, src/43haes/lib/ksh93/hacmp/KLIB_HACMP_view_mirror_group.sh, hacmp.assist, 61haes_r712, 1242B_hacmp712 : INPUTS: $* [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values CL=$LINENO OPERATION="activepath" KLIB_HACMP_replace_mirror_group "$@" log_return_msg "$?" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_view_mirror_group()" 2 loJםa՝a֝a&bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_view_report  = Eert"$AILOPRST_acilnops#()-/:>CDMN\dfhm%,.1Nhv}_S8w 7wmmɚ r}'8>V{PAA? ӡZOq8w uQf8w!N)3QϬ@'~X: ;3]'<::#Bkr{P@덵W{h]hQ\I+X``dG\{ ӡZ=\;8j:CNhpG`- oqN6\xWwg zv}'9uo TaԂ>Nj==g_j>=_yEOqI* _S.ۢt8wt`+ m4/4v~4v{`iᎯ<ۢƧS8b;5:i|Ux`nrfv5ؤ_hDwS(>'r=]'rhbfhTGouWhmw_|S| <0ǛtXI+F@#}NOuWyO6ƱAg@'xcy:)<ӐC4-X ?8w!r_r|0M 3YNGfNN!w!r_` DtGkNz7:QCIYY ԩ3 {j(q#"NOri:֓ ?mވ|S51r϶`{͋<\}b :\ܰT1wūoTn?;uK$&:+@4<^H!m֩c:?6г\3mBQmvOSWr5}N4yaS\;0PZvm_4g -ENr3;}' npE3AX{΁;+qgMpQyy§#O68_;>j r}\;=]'tPzNO!'Lr̰y( Ŏ;mӢܘ?~‚O`voWm~Lгs5M oj8*pa"PA&iW*LLL&'Tˇ,  X GxY/%0$!Tˇ,  X ",$^J1hLr̰y( ǎ֛P_ޘ?j4(E>U6uޯ d=dVueEU?8wƞStZq|NXv>iF1GBsoөش5|8pTZ>'hpcj78Bq p|{v<o;3`t h] u8Bp|Y_yMg}NOhW|vg_Ӯqx(sq @I1# AyPeŝpȚ?(QY qVt/ @xrD#zA4H‚c^ET0Yr]uڬf\3;71e~PS.,U5HK@x(&Cx0X |ޏq @I1# AyPeѭfv Wnj9?",$^J1#NCZq 8r/h4T:E0]R,IN( SNCP8h)#=+ӭPmMCEr0Lr̯&4 \9fKX<*ORzNU50=nV]~`|óDŽ }P 2 ",$^J0~P BY \9fJ\& bbx GDXe5@deÖdˢ`,S.,,*Je"f^>1xF Y%6Z Rbbq&*UfJebU`XnP/@(p Cz TKmӢ Cn܏Ą/h*%CL1Y5 aàU22*p.rѭfv W·\yi᎓:ӏ8Nup^|} 2@ Y/%? (oӁ[h*%CL1?Pck<Ɲ?u۔|foi82 ЁQ&=\C F$aA1/",xP]Lqt pBLr̰]TsL\λ#ޜ  #Ǵ Y&Yi柏M T Anfŝv?oX'D8j?ޏQǫ(y$HČ(&=UC Ou܈B we09]ȁ8hD \9fX.jG9]ȁ8k(H<,Y@@.?r?}nF? d^.FUe bx :D .FUe ಄L\λWڂtU"ր]-:ᦫ>'Տ뻻!,Rp?Jb`Χ&CEr0Lr̯&4 \9fK gzK,;2N)7spxeb :ɋ>?A6\}cлN:УQ5 ESo͹8c1yXcn6qocߏ'W\xuIQhcW}F#.*ߏ85 aàU22*p.r "ӮtZp̡ ~z Ƀ𲀀\ݠVKe# 1 I+h*F$aL M k!..B~BTPxYHGxwU :$- 8#Pv\:S.+ɍY/Fy,O66tҡ9̡ w!~X_΁CY.(:NP/x)8Oq$- 8#Pv\:S.+ɍY/Fz"8BZp?JL^? ( 8r"13Vj>13VqօuʌDEf- gH7Mܜ13Y57 ~&j軏~&j~t13W576L֓\rph*߉ڤf~3XjEuQ~&kG5FaF P@hr?܌7F ` 01 roGxEn;yשmgkmr1wwwwwwwwwwwxtޝI+wwwwwwwwwwqp<~ ` 01 roF?BY6@#6㳴*vn;8zҧ=ѻAb T^?zqĄ*1NGzY96NBq?Q' s96N*1(@< bF*ː' &&40(Tˇ,M@F 3 1h@=MrMi`!lhݠ#Qǫ(y$HČ(&=UC OmNCRz 4?(QY 7^gM3F#=\aQƌvzAIkuǦ ?p$%OAÇ8p:h G}܌x5:CRhx5:C༁ ࣏W=\zg mg4ӌHKBOT븘pQǪʝuoY(Qn;8h\B?FR]xq^ mgШ:&'qr]d5:e mgF 3Cq BZj= $$Nndbb`Χ& 8s $iǠ`  II]_" U22uSP:?Q' ¢ ZDA\n 3EΚf?zA4H‚c^ET0YrvgA}b:i6~PS.,U5oΚfF?z9( ¢ 8M[=0fiPA PAˮ=0`zq ߧV+:=3V+:HI,l~?U;A4H˜@C*]V\92C: ΙU Χಅ*p`p<~R]|gSz?CgCV+:?U;A4H˜@C*]V\93A\*gSYBLr̰]To?@wzY\@Y.@3ɽuȣV ?1 bFR+:AVZh࠵gzj`Cj!j!~DUT* (aq1܏r?i6c?]\;0ʹ,z-JM暬Ą&' 72bbd110gSz?7Z CBBuqP uګ}*!2|гsry!q5V3S5~N9I*e܌HKBOT븘pQǪʝuoY(Qn;8hB?FR]xq^ mgШ:&'qr]d5:e mgq @I1# AyPeDA\nx U22uSP:?#%/&SP89#y0kmڿ(Qn;8gM3F =\C F$aA1/",{nxI6t4lD \9fX.jGǏ5z 4HKBOT븘pQǪʝuoY(Qn;8^m7h,U 7 hRp?Jy~bq BYЅ栄NM`;FYƁTˇ,u×@/IeXGfIօ&tZ/x, `;FYƁTˇ,u×/=vuGgPBqL^? (1vqօvi054T5fvuGg61, @dsB8BH&6 @\fi!-qօ H!"ps&&&Cu97Qǫ癪- ;1$>?mޜ 8r"uVi:QN+Y.`9* ?=1# -G$n8T1# `jiYDuYr@/5'z~಄L\λp<~eqdΧ&0W#Tˇ,c@eÖd`^zK,ЄyAڧWCPe/BPBq5 aàU22*p.rX.ӎ(jN?XIxeF 3лN:УNM#05JU\PBqô.ӎ(ߦ<~傁 h]hQىD( ?p$%2лN:УA1 $$Nndbb`Χ& 8r"5@evuGf$cg͹4ӏGDX|c*'QjᅚѧY4Z@z0km xlc#]TV*e0@*gXO@ێ?Lѻ@G࣏W=PH&PLz Ȫ .@۴58&ƱRz 4?(QY 7^gM3F#Qǫ(cLրBА5 aàU22*p.raEYD5-xm k-Fy`fb#1%P$q^̎@ێ}࣏W<ߠ D,~Pvqo?r@GQ0bK H3pr(Ƚ(34ӏGPvq(@< bF*ː' &&ݠ7M25aEYD5-*p`8af;iM5Vz" $v57]e$F0YBLr̰]T ~zj' mglhݠ#Qǫ(y$HČ(&=UC Om xlcX=Κf(Tˇ,M@ƯAy(@ێ1j& Ik@y!hhHQlja*p^LhLr̗\9|lQVQ bKe57rp PVu<ǏܰP3p1L`( @\fi 8r/fGe mf >Qǫe`Ė?(Qn;8`fb#1%P$q^̎@ێ}࣏W(Qn;8q @I1# AyPeDA\nTƦc밢ĖBLr̰]TGۜ0Y4&Y@=MrMASSo͌dkŠk[# x,D \9fX.j?= AY6㳏t4n(@< bF*ː'MN jo61TgM3F@eÖeꦠtxWLѼq mg5$<4$(čCEr0Lr̯&4 \9fK>z" ĖN jo6 5s<ǏܰP3p1L`( @\fi 8r/fGe mf >Qǫe`Ė?(Qn;8`fb#1%P$q^̎@ێ}࣏W(Qn;8q @I1# AyPeDA\nTƦc밊2k[# g U22uSP:?npfvӬjg=DI56MN jo61(%0@eÖeꦠqЫTa?(Qn;8gM3F =\C F$aA1/",{nTƦcI6t4lD \9fX.jGǏ5z 4GPvqQ0bKZ CBB&Y( ¢ Z -"&Qa% (HKPAD!"ps&&'GzBq?HK"pJV+23ɽ`Ėx`;FYƁTˇ,u×p ]&$UDP,$ƦnNGͿLx7 D,6 f࣏W"dvPv`N?z^j& Ic6㳏~ n 28XlA( ?GED ޜ 8r6㳌 8s $iǠ`  IIh*jpMSyubETM5 JBLr̰]T ¢ ZDA\nTƦcĊjE1Κf?zA4H‚c^ET0Yrݠ7M5lhBLr̰]TѼj:i7!} .Uq4ZAA`*gXO]&$UDP,$6㳏 j0$$Nnd1<࣏W(Qn;8#`Ėx`;FYƁTˇ,u×p D Q4* (c-8&#ߦ<~傁 `Ė@f 3OQǫ{2;(Qn;0fi=\/~5$BqͿLx7 D,6 f࣏W"dvPv`N?zBq࣏W=PH&PLz Ȫ .@z" $v57D Q4* (c# U22uSP:? 1h@=MrMASSo͌dkajE1Κf?zA4H‚c^ET0Yrݠ7M5lhBLr̰]TѼj:i7!8aej>&Y( ¢ Z a"&Qa% (HKPAD!"ps&&'GzBq?$%Q'*uLO8(dNɷ߬(\B?FR]xq^ mgШ:&'qr]d5:e mgq @I1# AyPeDA\n^cZBLr̰]T &&ݘ"NAD 4$ 8s $iǠ` 1xEjI6t4lD \9fX.jGǏ5z 4HKBOT븘pQǪʝuoY(Qn;87$ eqd(Ƚ@ێ?$%Q'*uLO8(dNɴjt@ێ1(@< bF*ː'Ԍma8< *p`p$%V+:À;#ĄM̘ LLޏԌma8< k$- 8!ZN 4Z "@(!"ps&&&@6㳏g@=$۬qyAyBq͹lhݠ#Qǫ(y$HČ(&=UC Oma8< b:i6~PS.,U5oΚfF?zBq࣏W=PH&PLz Ȫ .@z+R0IYvp(Tˇ,M@!- AY $$Nndbb`Χ&W`n&ƲBА<1jgXIG 112 (n8 H&eMÔ(ۑΚf?zA4H‚c^ET0YreMìTgM3F@eÖeꦠtxWLѼĄ*1NGzY626㳏0E$#nX++%׏GEvq!- A>9Sbx G'*uNMSPvqb :Q^?Q' VE?zA4H‚c^ET0Yra$$ۮBLr̰]T &&vEYBLr̰]Tƌv}&Ѯ BYЫTaƆ*gXsgAs8'u97鈮$v6N?Lѻ@G࣏W=PH&PLz Ȫ .@ۮ辱Rz 4?(QY 7^gM3F#p<~W0V@3ɽ67;=Ǵ@b+DQǫ(ǏܰP3p14vc`( @\fi 8r/fGe mf >Qǫ#ey?(Qn;8`fb#hP$q^̎@ێ}࣏W(Qn;8q @I1# AyPeEpjF 6.较BLr̰]TԌm]};(Qn;8gM3F =\C F$aA1/",{nq}'Rz 4?(QY 7^gM3F#vͿNPVu{@fPVu X34 8s $iǠ`  IIa8>"+= AY U22uSP:?z" $v8r"U Χ mglhݠ#Qǫ(y$HČ(&=UC OmN>*OAg U22uSP:?<Flh@N?mĄ*1NGzY626㳏0@5I !uȹ ѻ"vY\@Y.HKBOT븘pQǪʝuh(N]&$,UD׳ϏGzM#0U \=_4tVuȽ7..Q?(QY bLTM{@{nh{"oy*]X\oB?Lѻ@G࣏W=PH&PLz Ȫ .@ۯ:+:^țhJV(I6t4lD \9fX.jGߦLIX=2LIX6 ?]&$,UD3 mI ࣏W"G=\g mg<:ur{C]{Ϛ=_'иjtqx\ouI2aB^>?HK@b %`#.Tir118NM=GEE- wmhk:o>jpGI2aB^ۯ>jo4vd#ę0i/h d…"@(!"ps&&&@7?:?O.,\QGmhk:B- \pۍ>jpGI2aB^ۯ:+:^ț|r@=ϽbLTL !Hz%K 1&L(ZK+ę0i.HI,n?m1ubLPbLP#qyWvm4 vߡ֪fާ'~ 8gG1tTEϏo]&$Ʌ K?&tP)aB3q18NMq @I1# AyPe CBP8'a\D \9fX.jG]QTbHZQlj; #v࣏W=PH&PLz Ȫ .@T\?At&-,4%v@eÖeꦠt5eA-MeI2aB CBP8'a\ۑa]7hHq @I1# AyPe݆}bvhޚꈲk"ʂ (Tˇ,M@ƯA`fF?:?O*ͺ9Sbx G'*uNMSPvq`2? !vY\@Y. 8r/e6㳏 hTb yʝw 8Y9Srm26㳏u!96x6 um]uN 8aܬ;hܩΧ'4vy{T¶kmhk:s܆robr;9:܆q>xC]vm7G9=iN?:?Q' Lr{nt mΚ CBBn|ΊӤ-G o?m>pR{CVvfl^2Bvqq=n(S@ێ?6?wwwwwwwwwwwwwwwwwwwwwv~Pvq TngEiw(Qn;<PͿL^t~_5=F"4?:?;HSE܇qjӮN+F:@wqoG7 Aw=E8B:,P$#S$ಀgSz?6?e/]ݟ)mggPZ W7GOr ѓ(S@ێ?6?wwwwwwwwwwwwwwwwwwwwwv~Pvq TnȀ#YBqಀۑFʹ4mC]NO;3 Q ޏa*p^LhLr̗\9|,!,OG;3-JLZ 8Wuٷ^'uٺ>tϽ=g_58B9I+hcy|γ 2 ( fK,nF?$%Q'*uLO8(dNɷ߬( $ eqd(Ƚ@ێ?$%Q'*uLO8(dNɴjt@ێ1(@< bF*ː' &&4,v*p`@=MrMhXBq:i7hHq @I1# AyPetб5lhBLr̰]TѼj:i7!=\/(cQǫ(y$HČ(&=UC O@=MrM _".~PS.,U5 IIa8> E6㳏t4n(@< bF*ː''A}b:i6~PS.,U5oΚfF?$%Q'*uLO8(dNɷ߬(I*JuQǫ{(HKBOT븘pQǪʝuh(cQǫ(y$HČ(&=UC O@=MrMWqo[?(QY , Qy2DA\nx6e U22uSP:?Lѻ@G࣏W=PH&PLz Ȫ .@۵~6Rz 4?(QY 7^gM3F#Ą/h|YDuar!:(@ێ?zA4H‚c^ET0Yra$$ۮ BLr̰]T &&v\6e U22uSP:?Lѻ@G࣏W=PH&PLz Ȫ .@ۮ Rz 4?(QY 7^gM3F#܌ 8r6㳏GzM#0U \=DI56_ǍxD \9fX.jGd5Ej$`:?@=MrMWqo^@ێ(Tˇ,M@gM3F =\C F$aA1/",{nxI6t4lD \9fX.jGǏ5z 4 8r6㳏GzM#0U \=DI56밼?(QY a$$ۮ?(Qn;8gM3F =\C F$aA1/",{n b:i6~PS.,U5oΚfF?zBq࣏W=PH&PLz Ȫ .@z" $u\6~PS.,U5 II]yBq:i7hHq @I1# AyPeu\7TgM3F@eÖeꦠtxWLѼĄ*1NGzY626㳏0qPI*JuQǫ{(HKBOT븘pQǪʝuh(cQǫ(y$HČ(&=UC O@=RM˰ Ʃ3LÑo"TD \9fX.jG1rȰ=JI6.'2.+E\PS.,U5G:i7hHq @I1# AyPeuafRfX=Κf(Tˇ,M@ƯAyoЫTaBDၦLLL&& roG࣏W"G=ȰHZqBg8iAYDQBDၦLLL##Cg mg?z9EO@ێ?m1r(!1w;;|r 8r$s,8MZi34HKA4K̎bx qih1!ÀQBDၦLLLyG 112ϚC[@e4H $$Nnd |r/>jn GĄM̘!,U ΰCYj9 3Gfgb`Χ&D9q$h57\nG>p<~ā"cyL roG67;=Ǵ@r@1fiGPvq61, @ds 7P @=\ّBqك3O8GDyAD mcX(;1 n.@34z#6fzq=\D (@< bF*ː'Ԍm]qXjEȷ <"!ˉ Gf&6d;3*p`\M˰.+ Z9Ƚ2"4vbcg< mgΚf?Qǫ(y$HČ(&=UC Om]qXjE*OAg U22uSP:?oΚfF?Qǫ(࣏W=PH&PLz Ȫ .@z+R0IYvq\4vg U22uSP:?5#uaȻGg(:i7hHGzM#0U \=YvEaUX=Κf(Tˇ,M@Ѽj:i7!GPvq=\C F$aA1/",y!hhJG$-V;3*p`BД"qzBLr̰]Tb :0ݤ~׬t4n(@< bF*ː''8FfX=Κf(Tˇ,M@ƯAy(ȑAA`hqgF\z` BZ8pÇ83ɽmӏr?z:?(Qn;8ޜcBZ}r]@#=VNT묛}ΙBq࣏W=PH&PLz Ȫ .@BqDžuG~q]ǪBLr̰]T0HG dŒ2$- 8#Pv\:S.+ɍY/Fy,O66tҡ9̡ w!~X_΁ҡF^2Rp?JHZqF"t \9fWS.%_ Eqօ~~P qEybfA6\}bf 85 [tZΑ3SSo͹8bfՆ&jn6Lw6Lbf>jnB`6n;-]vuGg\}v50Zz`O@=MrMtV@Y!2xV;Oyk:<\Nᾧ'>tG\bw)GigqyⓛۏCVvfw|z" $t2'̟~ CBB?E;Ʒ灩 d=d]Ƀ٤~@#:# ?f`{d]Ƀ٤~NqrzѨ3b7W{ƫӠ!ifk}`{ Үitvm¢:#Qj= ?j:N{mSCr5ܩzNzfu#ð:nUрCy柜;ט6]:Q*qDžb;&Br=gMbyL:#lYo*ȻI+ d^Щ @#"oB`6@#$- 8*țЩ '96rxM´|YS5y8ym7>'hpݧ]|3Q'Y5p\:qwʦ\9fXH`+oФڂtU"bbx CkȀ ?Bj TG&࣏W=PH&PLz Ȫ .@8빔)6HvSu M'ER,~PS.,U58PN[(H<,, .?܏.p`X BYt.d$ۧEh)ZШ4roGNE4V.ʩt.d$ۧEh)ZШ4#HKAX*[Q@ ` LO31r37b"+eTG&࣏W=PH&PLz Ȫ .@8빔ME"+eT(Tˇ,M@:)vUHPxYpY@@\͹nF?OZg_<+:8Y5Aێ醤*Yd5$堺LIԓ Iԓ̆ IVU*jI3 IVWaEԓi*(, IVW0i2rU-&CRNZ+d5$`2r]%Y I9h$jI3C I9h&"jI@Wd5$堨!'-rd5$\9ԓ"jIAvd5$]TRYԓ%Y I9fc% I9hHEԓ^LYvCRNZ2Y`=B˲r 2^LYvCRNZY I9h$`5FCRNZ 2^@jI3Uԓ,ětz4T:C3.d$ۧEh* >!H!Or&RNQ4ӌǏУ}ޱVD 20@#t*̖YE7y*ȻI* 8Y9Srm>19 1 ZxT5]<ێ6":&Şn>zY61G|C *D05B $tw'oς=VNT묛}΃uGDva'npfvӬjDtGe tr hsg`~;xlcT¸ީ&8頞&t !uQO@-XIdXG`45VO8aAY`NŨZ>-; n=So͌DtGj VjO0 ֝E$:?oytjNn4S=fQ(UGϼDgGv='Qj=3AZ7:u&0 ۫'jblyb7Wx'hQyߧSOjNz#OiiHyDžaͿMN*#:&Şn>npfvӬjc1u"6zgN׫Tab :\z F 3 1qqHY?3yjmHāHKA4K&@@N&& roGx * ' 72bbd110gSz?Ą*gXpx$x8`i!:6:AYq AYfioPADJj'u97<~@\  8cz9( ¢ JM:?܏ޜaQ,Hď݆q?mꀠ.Sd`Gz=\aQ * Şi63 * Şi63 * Ş * PM#>?܏ޜcHKAAcwG 1123ɽ BZj8?܏"7yQ ,g`~:ɦ1wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwhά5Nq(1np˯\}M5V?Ѧ\;|x]Ekqj>jpMSy'$4KO4Z)> >f;1`A={\}ƦcQڂՀZ>¢:#Qj= ?Ώ(!ڤS۬jTr=~ 8gY]EIZLVΝ_ryI6Dwo皘g@س |^a9jƚmStZp;6qXsomӢ 莻gά5cQ' 릑YA8g^N@|cQ' 5xF waB*iUP3ɽwwwwwwwwwwwwwwwwwwwwwyit:l'ӯua9>j7j{h:5f!,ZB$aB\Lo?&t|LLޏ5z`\>jgۑ4ӏ!-ukBDၦLLL&'ukq7arL?܏#7ar-VH…͹nGN1Ą*1bETM5 J?u97HK"pJV+23ɽA8g]vuGg bFR՘\iZvx,D \9fX.jGǏܰP3p1 ;1 H3prA!B8BIϏޜ͹ BZ}z&HTXICb`Χ&Hĭ1"Dmt{A4H~?pιvZC bFR+:AVZh࠵gz?j8,D \9fX.jGx*JuNM~Ϛ-VH…34ĄrI538'!C]53inGN?܌7 h:5BDၦLLL&& roG 8r$trۑrxY՗\uGDva'np˯\}M5V:#Ӆ9\}z} }f57Ǹ0yS h\pTGDv VY9>MUfh*#PVu9>j7Şn>NУ ͿN'V4 tEGo.Ӣӄٴ Û~nTGDuM<\} >ᅗ_m̚jc1u"6zgN׫TaA8g^N@>1uȹlGDza1q}&ѭ4H~?Ą*gXpx$x8`i!:6:AYq AYfioM#Jj'u97Q' 릒\ĄHİyLO4]@xˮC\HďBLȽKFKgM%$K$6@GDz bH&nGN?vNM%ظ h&`#8iY՗\&F #$%{A4c4bǠ2KHH$l=\HĐM%>?܏ޜFܞ5o> >ᅗ_m̚j |cwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwqن̟tU'*ui8b:#Ӆ9\}yZMIи/=Ep?J=]<:B:#Z I9r{'qϩһU7x(h'һ9ZYA";qk6Dwxa;?`;=}NOm4WmcS{ұrmn*<0M 3A;OiR{jf;Pc| \9 13[CYh*# j6ӻov ͺ,j{DwNO~MSV'm<'|YXGQ|3OS| <1wi`u Մһ9Z9>&ۆܙێ'pࣳ R'@{r9ZYA:#Qj= ?Ώ(!ڤS۬jTr=~ 8gY]EIZLVΝ_ryI6Dwo皘g@س |^a9jƚmStZp;6qXsomӢ 莻gIYr]fWVz) YE$c=PU3OH¢ .O@b :0rQ' xa;;@A8g] A8g^gN d@a@ cPdU P@kGNM#^Qu"6yraCRNVz TKmӢ C`|Һ1&CRNVz TKmӢ C R?J-&CRNVz TKmӢ C`|Һ̆.d$ۧEh)*H |+Uԓ,ětz6q R?J夫+"jIAIbMtV@hx8NaAH |+ŠjIAIbMtV@hx8Na>?~IVW0i2r`XnP/@7@S^|@W-%Y,aBd5$guK$&:+@4<^MnF&|@W-%Y]t!'+= Y%6Z lt 58+0>?~eU*ԓ,ětz6qAGf R?J3!'+= Y%6Z lt x`|Һ*jIAIbMtV@hx8r>?~ d5$guK$&:+@4<^MnN A0>\D9ԓ,ětz6q !'+= Y%6Z lt t\)rr`XnP/@7@>H |+jIAIbMtV@hx8`|Һ,.d$ۧEh)*p>?~֒.jIAIbMtV@hx88)vd5$guK$&:+@4<^MnUj \9ԓ,ětz6qH |+,.d$ۧEh)*+P>?~avCRNVz TKmӢ C a)rꢒ̆.d$ۧEh)( 9@>?~*jIAIbMtV@hx8R?Jd5$guK$&:+@4<^MnMA A0>^B,.d$ۧEh))f.`|Һ^LYvCRNVz TKmӢ C 'M #%/&,!'+= Y%6Z lt AH |+a`=B˲r`XnP/@7@tR?JY I9Y0]R,IN( SgQ@WHj.d$ۧEh))Ǎ`|Һʲr`XnP/@7@Y uʇU&Yiόc:?6rz!حøCuUVY@ !."]z @00(,@`(  HP @`H 0 0  HP @`HXX`$  X @88X( ,, p p 2`(( p p 0P@( ,, $ `^X( `X! @P, , @P@@(,,0  > @,, @|X( p @p  @P@@P, @6 @ $    @P@ p* @p , @$a`$ 0 Ba@P`3  8HXa`X/* @p((`,!@H( X+  `Pa VT,@,XX(  ((`,@H HHXa`X/* $@`$$, X P`0H 0 @H``XH 0 0sѧ6OBU!`$Ȁ$R!(GN#Lj/"̦P6@C ,,  >T,,@ $@@P@ @P( @6 p XH NXX( A`P((|XX( X`H(`0 ,$€$ @,,(, XX( @PP 8aa`$(  @ XXX( 0,$aa`0P( A ,@H HH, `0#  Xa`XX  X (@|,,, `($X( 𰰰(, a (0, p,, ,(@`$p !@`(  $  XX( @`(  HPa`^ `H! $ ,,a`XX @ʅH @a@P, A $ `,, a@P, A $  0XP `PH, p,@|XXX(( `X @P,a`,( @$aA`XxXX( @`(  `PX0PP @  9hЛ~lѧuyP 9a%C!,~roGt_uٷ]pQ =NOB)Ǎqمk =SCTifr:1yF_Μ/5'i{o۫p54Tά5j՜h֙U Dhi<~˱`@G Ȫ w`@yN@Y!Z!uqrm]j\v`!D \& fA C32H00"2dóӐC}逅 Rz9$`5C@e3B?`5K@|qH砑Ƹfk=Ԗ]F 4{$H#&L B?`5K@|qH砑Ƹfk=UC$P%FCJZx&UB`j)P2aqvYHUZEXe# 1 U;A4H™Tˇ,Ȍ/SHz%KȬnCYіZ8(-YØM< T,"jI?n6cxzY\@Y.@3ɽA8g]i*YHę I9YxE^jN?\LN?97OG栄8cċ,IԓHZ$qM- gBTҰU$NVk3:frO݆q'5:NX"ꦋd5$g (ExnCYЕ'$3:g &fUYmNa? h,zLI~W{|S8c뻻wwwwwwwwwwwwwwwwwwwwwwwѮ'ju8w!ޜLmu8=''zۧEi΂=E-X]uI2Y d^BAė(H$aKė(J@dXEԓ5pdEt:?֍7^'g`u7G9=yѧ]8cQ' 릈6IYT4fvZϏpκ1&XuSEZᙬMlfJ$H0!1f񠂄?AU4X!',kȋ &y >i9>gTj7G9>;Vqtrzyb:-0Rn ΋C\R|3WI|Nx{ӏhfk67+SǶ0fUYێ5u81v Tlmu91t'srxTqGgSWΓsoӅ=Q!7f3 ~;OUрzjNOƫjf(sng]pޫN1q{r6~'MGgsaa%e%s *2(LVH+!-1.'u97(h X$n?"viMz*"DI27h*"g'vOsx]>ٽ\]8У܏z~;Ʒ9<K"'=vzYI+_3?F1qߦU8(sqH砺LI0~QbL@VdzIZF,JY&Yi&T<̕I2H6>?܌wwwwwwwwwwwwwwwwwwwww_zY9<…6or}'wwwwwwwwwwwwwwwwwwwwwq?}]NO4ZqC9qzNXO7G9=N{nCY|Z V?Q' P,f/`!   2H…BPK",V"/-% >?b :bKVLEl3YbF  2I# I`Jr4 EY I9cX'D_0Ė D(@Q' dXF@|35{ -%XYAW(H$aKIu+&CPAU*Yd5$b|ZK Y2 Q<,H5kF_;=օ&1tNmEg5 a#Tˇ,ʰc@eÖdc]X]zjГ?3a.Kɔ\GfL PuQ`=_:tYj>U8L X9vS8_sè?3ɤa,Y.`=':i~f?ɪ5?gH\zJ5I &~f?HNB2M@1yL ɮe0jY;2gcXL=Ee4AMzj54vd!?MשjNO|^tizNX:?b : v{Ϛ-CLg`uQ' PbEM%hf/g @e4ALmj*PI SD$ٛƂ $]TbLV"/hd#G|Ѧ> QL;Yv勴qI<':- qIν_r{E'M{=8wN?šܮNOۣPANVk3:frsn;8BL'mQPڧSySeiY7uhT+`\Y|Y[6豩9<=ja<C0ۍVfΝՄ*?=YΙ I+"‹2@V pι I+"‹Z࣏W"G= ,Hďƺ (ZL%QYY!(ZL%QYZ0i2EdXQbDdHH2Pߎ֙o;7 0i2EdXQk@d…UaE̼@n?P^J,(2aBey*Ȱy ?uy9> rou9>;Va9>w΍:I+GgM4I{@|qHaBeU4Xo"aBeU4X> 8r$s0i2ċ,Hk96d^?M#_#y I+"‹2@Y# I$]TbVz&-&XuSEĄM̘1s +IUb>?b :\(ZLP@ Qǫ# IȰƱZN K1qgmHģOGu jUn1+0i2ċ,HUZ%QX"FC|y2P/!wwwwwwwwwwwwwwwwwwwwwwwwwww?EmQǫ#̖EOƹpdgaL(ZKYK"$ 2a1 K0i/cq 8r$s,;>h֚F$ ?1u0yZ)bA$n?b :2aB^M# d%h ɄKp&̘D0y$dCq`L(ZK+2aB\p&̘PVd…"FO$7HK?A`L(ZKx$΁K NM$%{@…bx PX9{= +.(ZL IA`L"^GnGO8wwwwwwwwwwwwwwwwwwwww?PH5{= ))͹QN>?g^zN?2F$8cqES$H#ޜc!-.Ėer\3ɽ]''g>jx}Xz]uI2Y d^BAė(H$aKė(J@dXEԓ5pdEt1ubLPGDz ę,<x&-% 8r$s]&$Ʌ IrD0م I{%P1qgmHāF 3LJM# 2x]&%h 2x$n?b :-%1!Á6daB^0i.dHK?@d…"A$0y83ɽ(ZLIGJM:?r?}nF?EbրTV,H56aUE2P+ 50ccq+JbD< Z!J@evbDȑ*ŭX#!>jlfˢ(IbL L p$%{@…1,LN?ޏ-&WIY0ٓq8Lݙ?}Z*ʼn2ˆ2P)` \#cqQX2U$d0!Mjߡ]t BH 2d)S&67ʢk@d+$H`CϚ0:MCJ@e #$ɑ"67aBei*YPZJMXIϩQƅ=N5\:OuͿMO=Q!7f3 ~;OUрzjNOƫjf(sng]pޫN1q{r6~'MGoEmdzDkD2,˪]% fc2Yt0Ɂ-ȲL$ #$ fJ`:Kc밊2A( YDKEvP+eSHjaEf31bY I|…1-4K0i2r IWH2 '?ŞuEhi7\7 h&wx&83ɽEk@e4H "#qQSSHćln?]sTE"IAQS?W>'{QQƅ64ܞ5oP,F?S}kAf3]'kmg~Vt\xV?Qǫ# I0~Q !'(GyU*e=VdzIZF *%CL1όwwwwwwwwwwwwwwwwwwww_zY9=`W{|S8c뻻wwwwwwwwwwwwwwwwwwwwwwwqrySWrfߧSCp?Jy>wtV(3tZΛՀZuA8g]`K"6zᙬH1i.dr*BA$ ZK Y2 P&RȰ!',kȋ"]AɐUrFS3:gzӮұtuD$ T4fvZϏpκ̱"ꦋ3Y 2 &65j(H$`B) clA @~.h&CRNX+I A4AL>@}hur}_nr}fvZ;`tZa8|g^9=c; bmnWq'mѨa '5j 9S!Xkqc6ry(~OzmSUڡk3:f4|աPpgqgMn<ۢƧ :-Pn5Y:voV:?f+:k2EdXQfWHQNX9+"‹Z࣏W"G=bEM$~5էȠs+TVEet rou9>;Va9>w΍:I+GgM4I{@|qH砰s,Hďư{yHGbEM%h=\eU4XrmȽ<~F$F^J,(+ B?.h+=bEM$' 72bbdόuei*YA8g\̕P@ Qǫ#̖EL~5pd`"^W;>h֚F%?Gz8<ngTjqN6gSTG_l7暫Qtp$%F%BDၦLLL&'roG*P B?U 10@#X91gs+IUa a4ey*ȰLA8g\+X9$]TbGZ*ʼn2AV^h $Kn1t'8if]Zr{Ҹ=ʜ5Vv1t62Ȱeh%4K>4aB\i UjE]X ?3Ϡ Pa58FU E`q IqU E`q Is1 xTZUCX"Ć^ET0Y̮,H<إ\;: `J5k(~f? B4HMlAy,"Y2 &~f?B4TXIC TXIC 狊4"br*4!( ygjIprH'%˱"c4 t#E\ @KIeYTi,2 ը'"̰ei.d 2*ɕ cd,R%TYCRNKbEƐ*2r\.~f?0>Mȸ5 UEd5$9v$]i ,!'%˱"숀cաGf5~ iv&WaE*x 592 ,tUŞ#E0!'%˱"HP@ .ċn^A0&$Q`4ibLeO*Ϛ0QF(ZLJ,UQ40i2(LUD*?3υ͚MѥbLi LITM"qHY? ^̍tFQ[E1 G!,1<QLBVy7 hwzXE"e4ALh…*Ȭ0i.4TXIC y2 .ċP@ .ċ ]`(4z+H,"ZK Y.C97F 3UEAz(!# *"(!"DIcqx "`ȟx+`HjIprH'PdUz)~&'roG*J8$Y`vjl\x?9I 4ȫ( " $8664ӌ*ŭX#!0pA*ln?= QPt?EbրTV,HD8 BH nF?N}NOj4(q|3mt/Q|Z "^GG{ݛP;3`'uOpҭ=WFw+E8c>iwޞͺ柜;vmSz: Gx=ʜy7ޘTĄ/h&'κ(>ei*Y,UE@hEb?b :밲Fa}EU0/=Gq=vyOQFTyk"8B0=jyg!60θuvuGg|<mgGEfGDz F?D^DI  `(ȑAvHr[bțM(!+0 > 8r$s]0صr&|0, vYmQǫ#,ƶū6dM8Zn?UEVei*$d0"VQh $" ?^j+SmW^xkNb`}uhrOI탓r믋Θ.<+y7|hr 8𮡳n=ʔ~OQFB?3 E4ۏG !ᨦ2Zz9.\klZayA$0`2?0 5PFKZ࣏W"G=Y#˟mW"l4C#5Bᨦ2Zz9.\klZ`6DI  ̭%TY@e`V,"FC(*ɶuy BHjaY#CEr0>ۢt m`g뢍6l?*rtգʌf5='OMjbbӮ4yP@5T z? 5T GDz F?D/"h$ Ghza5m> 8r$s]0صr&&H`d-7ei*Z+2Qf 2AVM뢍6(ISLP4n1vHrPv\85j &&ntգZƻJ:{9:kY==Gk9g #mC=bLin=yLeUH:z9.\klZayA$0`2?GA1&UQ4Qǫ#,ƶū6 Ț !nTCI2Th=\ad.~5-\"h$ GGp1&UQ4Qǫ#,ƶū6M8Zn?UEVei*$d0"+6i7B $1&UQ4!-1.'u97(h X$n?"viMz*"DI27h*"g'vOsx]>ٽ\]8У܏z~;Ʒ9<,F?"Ug@eÖeeXey1U22]p1 6Mѧt6Wxbo>jp|&~f?9: NŨ>-'cj ͷ43$ & xTZ=yƚƽZ$ &lR?Ӯ/:?3Q3m:MxkN(`q31 &q9Q`}~T`f&j>'a;<:A 31 Ӑ@Г?3 Zp$}rp덹8OƌyIkM#f"h X$n?u2!ê1q!րdn14ANM# 'h 6I2xMlSD$ 7 'g2 &Ll!-]wCeGc̭%TY@e`V,"FCa% &7HKAC#1ơUiNpqXFi@F.;3gSW8м<1vUqGa]tmm_yE>?6I) d<) A s+IUbX90HD8 BH&6InGO8Br{o h,fk~zuT͸ouΜ} 8r$sX90~Q I9G"?CʬP,Y *%CL0L@yU*em|c>?OMu9@}hur|3AiWw58&Y֫8st|SuޓV?pκhdAV`jzqM3Gg`uQ' U̱"ꦋ3Y 2 &65j(H$`B) clA @~.h&CRNX+I A4AL4ANϠ0ժUtf٬UN]VaCX̬eU4X>ȽH0!1aTABA$Mlfo(JuSE2rƱZN x`B g v}YF:3Gg`uQ' ŠkY̱"ꦋ3Y 2 &65j(H$`B) clA @~.h&CRNX+I A4AL>@}hur{\}ƦcfvZNO|^tizNX:?6If͗56h=Y1u/&L(ZLeU4X>ȽH0!1aTABA$Mlfo(JuSE2rƱZN x`B g v}Y4sޫ/>jl{5j>?b : 0&-&VP2ċ,J d^$hd0ժT A 6I7% Hę I9cX'D_<0!3G;>ٳ 4|fvZϏpκ藓+ęY@ .h+@|35{<`B) clVPI 2 &64P1"ꦋd5$b|D$!:?֍7^'Gۜ0 Zo7>;Vy>w΍:I+G;>Gf#4|fvZϏpκYbEM%hf/g @e4ALmj*PI SD$ٛƂ $]TbLV"/hd#uFMCEr3àU222*p.r+ -6?=iGŠEr5Tif31  Vi7Y~zӅj7<:AݛPڭQ], 'AXYif֜/Q|Zt[Ag)3Z:31 Vi7Yt nxui6yƝt`ј86ib@C1 XD8uF 37D:a̍?6I)bC67D$1O vhdAD$SD$ $%!ˢbx u2!l(Uy ,HĭWċ,H#!0pAMlzqpκ̰ZJQf,Lei*Y2+H I2̖%TY?b :2%1&KIVV,Ş|qVtPdU P@kjdV(%*,ŠkYbQǫ1Y]d…j X+]et!-`APd5Az4J `i&+X+D%$ג Qǫ#i*dXDX'F %xј86ib@xiwG 1123ɽ1t0gͿM@hV7YAW$H$7?HiW&Fqvjl\x?9I 4ȫA@hV "PiÖPAUH +-ǣ%@+HGJ aqU,"ꦋU^@.h"DPVZl(IUq GJ%y, !*+k eU4X2XuSE$d0"`3AYAWdZIUE`IU.?$]TbVʫYbEM$H &05@%  7%$#My-aqU,"ꦋU^@.h"DPVi7Yt2P( q ꢴ0P,B?4ȫ ( !Ǐ*U 0xEUaJfKIVV,&& roGUaJfKIVV,Ş̪0%CL%+IUa ͹eTV*e-%YZJz 2+H I2̖%TY*fXuSE a3̪0%CL%+IUbX9QZFdzIdei*$d0"&B $d1Z=Rf*0J +HC "dciWϏߦ4ȫh I2ĉiWM#jTHN6ۭC )3vxY`( *a$J>P-gFϏ2+H I2̖%TY@e`UEia&YU0H 5Id$ a GEfD5,B?4ȫ ( !Ǐae$%T0 G BYevYQ bK2ZJQf110gSz?" Ėdei*Y," Ėdei* a3#̮+0!IfKIVV,Ş̮+0!IfKIVV, 2kY̱"ꦋ@g?5{"z ` \s+2kYU1h " Ėdei*$d0"VVZ7Yј_s2P ?" Ėdei*Z+2(%-%YZJ 0ժUtfPVu2Pvjl\x?9I kX%D5,d0&J `2?ŠkX?a@hVd5AP B?ŠkY`r#!, 2 *!IfKIVV,&& roG]e$%+IUbA`WaEYD5,i*UE@gnG]e$%+IUbA`WaEYD5,i*UEAvUCX̬eU4X>14oPdUǴWaEI %O0g2Fɀ&5pl1Z=Rf( *PdUH>?}Q[=0|X9QVQ bK2ZJQf-]e$%+IU`#!f-/Q(IQQ]e$%+IUbX9QVQ bK2ZJQf 2AVa2ѺΌժ ΡJ2ۭC )3vx bKd%DA G/&L(ZD#藓&-&CT0Z!, 2%Ʌ IU1:`WD0i2ZJQf,etKɓ %+IUa ͹etKɓ %+IUbA`WD0i2ZJQf]d…fXuSE a3̮y2aBdei*Z+2%Ʌ IU0H GfϚAYAWd]et%1&CT0Z!, 2%1&KIVV,&& roG]et%+IUbA`WD]&$i*UE@gnG]et%+IUbA`WD]&$i*UEAtKɕbLeU4X>?藓+ę-%YZJ̮y2LIU0H Gf.VaJ@9e\n?AZFd…Y L(ZK7 d^X9ia %+IUcu97̖H46KH P-%YZJz 2Y -# 2aBdei* a3#r*f!e<) '2py"A$q'V$R)bKdb@!e C0 a,^EE$H'2x`5bE"0,!H`=ĉ ̞|X9ia %+IUbA`K$%aL(ZL%TY $%aL(ZLeU4X>?dCd0Ʌ IU1h dCd0Ʌ IU0H ifIV^| $r*#iIϩQƅ=N5\:OuͿLƦcD 9I6'{QQƅ64rx'xlc8aq]߂1t'h'U7<:Oy ޫ;xmþn?z}F 6~'@ \uӐCOs;F:> JUA wx+ B?ޏ2+H I2̖%TY=J$]TbGUaJfKIVV,Š2s*0P,i*UE$H`EYM(Hs*0P,i*UEVeTV*e-%YZJ -qTJ"Dn?r?o?]VaCX̕P@ 97̮+0!IfKIVV,Ş" Ėee3,Hď2(%-%YZJ̮+0!IfKIVV,"FC(*5jeuj70% "7evYQ bK2ZJQf-]VaCX̖%TYDPUj*F:3V+:(HmxvUCX̕P@ 97̮ŠkYU1g *!IfVP2ċ,Hs+Ėdei*Z+2 *!IfKIVV,"FC(*5~Z7Yј_s2P#q`WaEYD5,i*UEVevUCX̖%TYDPUj n5jA܌-I8w <1mUN jo6- G}N5\>빧!ֆ:y'|5qsNC u9<$OxӍWGTUEl ^@.h+@eU,"ꦋ$H`EaeAD%0@#Uy ,HĭWċ,H#!Fa $D?zMTVU,"ꦋU^@.h"DPVi7Y(H<~[ C5Wċ,JUy ,Hĉ2AXYf BDH?GDz 2+H I2̖%TYUԓ=\evYQ bK2ZJQf ZJ,qH砰s+Ėdei*@evUCRNQ 8r$sX9/&L(ZL%TYaBd5$࣏W"G=,hl0i2ZJQf ZJX…jI?GDz 2%1&KIVV,D IVW]&$jI?GDz eU4XDeU*ԓ#T<̕I2HŞP2T=$-#T Y&Yig?뻻 h,zbLeWuq9>V?wwwwwwwwwwwwwwwwwwwwwwwѮ'ju8w!ޜLmu8=''zۧEi΂=E-X]uI k%a=E$bLeW(H$aF$Q`5r4 EY I9cX'D_ I j:?֍7^'g`ui\35W難zӮұtuD$P{mf;VgA8g\Ę,ċ,J d^$hd0ժT A 6I7% Hę I9cX'D_<0!3F?Mש|8U~>wj탓HiiuxNtZzN\zp.C3Y]Ǻ=F4Ҭg`u(Nvpaө!ޘO ڣg3oө眡==N'~s-CLg`u͙h;B['τΚyEOOmS tZ6j5mtެ!QtqVtI k+TVEet< pι0X ey*Ȱր(ȑ@Ę,ċ,HkN;@Ę,EdXQfWHȄ1&2%QYZ1&2%QYX#!@ $L$7㵦uy:NI k+TVELI k+TVE8? 2bLeY^J,(2bLeY^J,(@@$~@eq=i|^}NOp5FzNOUNnr{Np?Jǫ1YM#^z9EXuSE`.$Q`5$]TbV(ȑ@Ę,ċ,Hk96d^?M#_#y0X ey*Ȱ̮@bLeYbEM%g2bLeYbEM$' 72bbdόuad/h5 aÀVۢt m0pWuګpWuګܩwŨJ믶\}W{SQ}_m=ʜ՝!r)7BQz*Uq{9:B5hRn\"U]}`*sVtk7ФxֻnguI k+IUb>?b :\I k%T0łqHbLeY,xkD3v}&ѭ4J?~?qGZxq_Ɯm'V]{[⎾oyS5VHKA4K#ĄM̘ LN?ޏ$Q`5`r#0X day EV,Ş0X ei* a4 &0X ey*ȰLچz Iu+&K$ w!PAbdKʫH6z9.\klZayA$0`2?Ur%X,2 GDz F?D/"h$ G? %]UZA(ȑAvHr[bț&H`d* %]UZA(ȑAvHr[bț&H`d*d?ZK Y2Y%eUh=\ad.~5-\#"h$ GJZK Y2Y%eUh=\ad.~5-\'"h$ GJ5 %]UZA(ȑAvHr[bț&H`d-7UYEXuSEUZ%QX"FCh $Kn?EbրTV,HA0% 29Y"Dln?EbրTV,HSB(I`+ȑQX2U$d0"̈́(I %]UZAȑĄ^TX'97TV-h Ebĉ ruʌ(ISPx!H`ʢ*L7a*ŭX#!B࣎Q% U5fSPx!H`ʢ*Lm`(UE1&2%TY &TV,|cO vB':ߦ~vz/#£=Cnͨg g0 W:'vV;"Ԝ1SW4ZO|PsOλM᩽Vtc<Nmwj탓HiiuxNtZzN\zp.C3Y]Ǻ=F4Ҭg`u(Nvpaө!ޘO ڣg3oө眡==N' .semf;VlGZ 9>|'tͺ,j}NO`{oO<1 /U;mfa VbHIVW ,yX1u䰊EdJEdXQk@|qH砼HIVXuSEuir(/%R+&RU+"‹2@D#XE"e%Y^J,(2HIVW ,H I&J:wmfaaɔey*ȰրXE"e%Y^J,(y 䰊EdJEdXQk@ey,"Y2%QYX ? 2ξ/>'8U~=NM'g`u'7G9=yѧ]8c՘馑/h=\))*.h#Ey,"Y2"ꦋGDz aɔeU4XrmȽ<~F$F䰊EdJEdXQfWH @^KVL,HĬW))*.h x8`i 6|cF 3HIVV,Ş|uȹ%R+&RUbQ 8r$s]%Y,xkD3v}&ѭ4J?~?qGZxq_Ɯm'V]{[⎾oyS5VHKA4K#ĄM̘ LN?ޏaɔd@\<~HIVJ a!XE"e%YZJz aɔei* a4 &XE"e%Y^J,(>1+^KVL,Hď*ŭX#!4vaJ@%7ʢk@d+$H`CӭF A1&+"dHZ*ʼn2= BH EdHZ*ʼn2d$L(ZDȑQX2U$d0!ǫ:i(I1%Q+"dHZ*ʼn2ѣT0(IDe"67ʢk@d+$H`Cө֡ $ɉ0]dH?%R+&RU1gHIVV,@+>1t'srxTqGgSWΓsoӆtq+KO`jfu οIUNy' 'U5Vt|9\yⳮmjoU]8=OSO?S ιKHX5UŖI$Q`70if$e9Yhى0_M@j)DK[ P EdLcp$%F%b`Χ&TE1 DQNM# 1v@eQV$H&FDQLv_.Ӣ{io G;7GvqۑOrx'HIVK"'=vzYI+_3?F1qߦU8(sqH砼HIVV,DIVCRNQ P2T=$-#z%CʬP,P*UfJec@|wwwwwwwwwwwwwwwwwwwwwwwww_zY9=# I`Jm7NX:1uzok暫]N5]w3S5~N9I+ާ'Zbmhk:oVjwwwwwwwwwwwwwwwwwwwwwww1t1%Q+&K"6zᙬH1# I`JrI$$j%dBPK",V"/bKVK@ |cOZ4zY֫<;Fw~F 3 'ggCm76[jUNHX5eU4X>ȽH0!1aTABA$Mlfo(JuSE2rƱZN x`B gFS?p5F3t|S3:gG'.Ӣ &5': 77]8;foru9<{nC i8YUQʝ͸ _SCo0FfߧS9C\z{jNO=ǫ:iT4fvZٛƏ㺴*r|.,N>,ǛtXt50Excj_mƫ3QvNGgM# I`Jɕ+"‹2@VA8g]# I`Jɕ+"‹Z࣏W"G=1%Q+&XuSEuir($a,Y2EdXQfWHȄHX5ey*ȰրF+TVE$HaD$% i|^{Nӳz1%Q+&W -h a,Y2EdXQaÁ#(/bKVL%QYZHX5ey*Ȱy ?uy9> rou9>;Va9>w΍:I+GgM4I{@|qH砑$j%d.h#E# I`Jɖ$]TbV(ȑA# I`Jɖ$]TbGYɴk"i0Ė D^J,(+ B?a,Y2ċ,J@e# I`Jɖ$]TbA(!"ps&&&@lA8g]# I`Jɕ1g1r.ibKVLP@ Qǫ#F%a/b3Fc<Ϥ5GO(Oۮ=>xӍYj+okz`Q>jy7 h&wx$x8`i!HKArngbx qi탓{Ti`u{kp5F>Wz?a,Y2UA .@?HX5day a,Y2Qf,0Ė DZJM $j%dUaE0QXF,Hď*ŭX#!4vaJ@%7ʢk@d+$H`CӭF A1&+"dHZ*ʼn2Q&d$X+"dHZ*ʼn2= BH EdHZ*ʼn2d$L(ZDȑQX2U$d0!ǫ:i(I1%Q+"dHZ*ʼn2ѣT0(IDe"67ʢk@d+$H`Cө֡ $ɉ0]dH BZ hBHbbq&*ŭX#!ժ BH*+,eq C0Wa$L7a*ŭX#!ժ BHPeP2q!z+&D6cF+IUbA# I`Jɕ0*ŏᴜ.hQUg\zz/#£=Cnͨg g0 W:'vV;"Ԝ1SW4ZO|PsOλM᩽Vtc<Nmi9>;Vy>w΍:I+GA8g]4ANeiY1qXuSEZᙬMlfJ$H0!1f񠂄?AU4X!',kȋ &y >i9>gTj7G9>;Vqtrzyb:-0Rn ΋C\R|3WI|Nx{ӏhfk67+SǶ0fUYێ5u81v Tlmu9|'tͺ,j}NO`{oO<1 /U;mfa Vb"UaE] +F 3"UaEQǫ#s,HďƺC^J,(+B?2EdXQk@dD9+"‹$d0"DDvξ/=]|ٽXcs+TVEDC^J,(y W -h 2EdXQ`H <Gz: jU97Y֫0;Fw~VbF$> 8r$seU4Xo"".h+@|qH".h#5{@x4I|!̯%QYY!CbEM%g2".h x8`i 6|cF 3"UEϏpι1J aG(ȑ@D9ȰƱZN K1qgmHģOGu jUn1+JbD<ل(I*ŭX#!aJ@er&D*ŭX#!2P+Iu+&CPARdHZ*ʼn2u~J@d E0 \%"67ʢk@d+$H`A}anNB $,V.(*k"Dln14oPdUǴL(ZK$K柏` ^@e4PM#j#a0~r7gA@hV( "DN?EbրTV,H58B $iW&DciWϏߦ4ȫh rEQM/% %O0g2Fɀ&5pvjl\x?9I 4ȫA@hV "Piʢk@d+$H`C(I0L0gͿM@hV7.(*k$K柏` ^@e4PM#j#a0~r7gA@hV( "DN?EbրTV,H>(I0LA8g\4TE{<4o,=2x9t"*& ^K$KfQǫ#dXDkH5{Iky|5p?5{=0LA4V$Pl1Z=Rf <4v`AO IO8UZ%QX"FC  BH 5rdHgrȰGg kcs+IUb@D90*ŏᴜ.hQUg\tXZ>-z/#£=Cnͨg g0 W:'vV;"Ԝ1SW4ZO|PsOλM᩽Vtc<Nmw'ory!̖EO}#Gz ϩ5uWq꿵g`~Pc6ͿM֫:pQ .<+G(ȑ@D90~QCRNQ P2T=$-#z%CʬP,P*UfJec@oȀ.T\*roG|wwwwwwwwwwwwwwwwwwwwwwwwwww_zY9=5*x3n>'p?Jwwwwwwwwwwwwwwwwwwwwwwwwwwq?}]NO4ZqC9qzNXO7G9=N{nCY|Z V?Q' "dXF@|35{ &rEQM/% $dj$UQ1\(MaCRNX+IDH)"bDB?MשjNO|^tizNX:?b : v{ 3Y֫3F 3,HĭEA 6I ZB  $hd3xABPċ,Iԓ5pdEMl׫NOxXouǧ=ش35~{tjH3I*fvZŽTmgV:r;}ͪ6s6:yޛTryT4fvZٛƏ㺴*r|.,N>,ǛtXt50Excj_mƫ3QvNGgM1W ,yX1tY^J,(> 8r$sLE$]TbG]Zq܊ EdXQfWHȄLE+"‹Z)EdXQbDdHH2Pߎ֙o;7 LE+"‹Z)EdXQaÁ#(/鈲EdXQk@e1W , GxcOZg_S Q@&S3:fzӮұtqVtHėGDz ċ,HktLE$]TbV(ȑA1XuSEg&ѬbKoLE+"‹2@Y#b,"ꦋLE$]TbA(!"ps&&&@lA8g]1V,Ş|uȹ"U 1`z9&"dXDX'F %xј86ibQt':vOp5F74mVp9>Jޘ?u{ϚiG BZ b] $$Nndbbq&uKYDWϏߦY{@ePrE6DTL@$H$6 ?࣏W"G=Ȱ֐jhGg kȽ]̪"&'iv 2z,ʢ+V$P]̪"iv 2<ـ5z?T£,3a+,…"br+%XYAs1˨ aUQ# i zXK1Wa%""IJ)f?UJK骾ykreUW21&DdA,2I2UC 0Ta,TaUD*ZIU,AUd  *"̪i`k*EA٘D{)U2Qey*ȱ&Uג"@Lia Ԥcp$%F%b`Χ&TE1 DQNM# 1v@eQV$H&FDQLv_.Ӣ{io G;7GvqۑOrx'%a_~Br{o h,fk~zuT͸ouΜ} 8r$sLE0~QY I9G"?CʬP,Y *%CL0L@yU*em|c>?O*ւשYeQDuq9>V?wwwwwwwwwwwwwwwwwwwwwwwѮ'ju8w!ޜLmu8=''zۧEi΂=E-X]u˪dXF@|35{ IeYTQ5 $dtYEUE\(MaCRNX+IB,2&DB?MשjNO|^tizNX:?b : vymf;VgA8g\"ꦋ3Y 2 &65j(H$`B) clA @~.h&CRNX+I A4AL>@}hur}_nr}fvZ;`tZa8|g^9=c; bmnWq'mѨa '5j 9S!Xkqc6ry(~OzmS睁ڡk3:f4|աPpgqgMn<ۢƧ :-Pn5Y:voV:?f+:eey*Ȱ̮qN.+TVEGDzeU4XVw"uY^J,(+B?U+"‹Z%ey*Ȱĉ 2ȑ"d!3iv:voV]VW -h U+"‹ Gx.+TVEKUaE#(/Lr|35Wr}fvZst|SuޓV?=YΚi(ȑ@"ꦋ?]!˪.h+@|qH]VXuSEg&ѬbKo.+TVEet<Gċ,J@d"ꦋG 112g?b :ei*YA8g\uY*,࣏W"G=Y2+I0y^4f?8MZi4⎴ QMǍ8U=NOR};|槚jGxiwG 112ɽǏ˪U 0xP@L/ C2겴Qf, UE@hM겼EdXQd &|cTV-g]VXuSEUZ%QX"FCh $Kn?EbրTV,HqP% 2"br*LUZ%QX"FC!nJ@eqd+EX&D*ŭX#!_50% 2]B&D*ŭX#! B0lAEpqD|LD#cq+JbD5ͲyЃ% 2Y*P2.i2$F1t0gͿM@hV7T<EQM/% %O0g2Fɀ&5pvjl\x?9I@. @,yDY`0%zq+JbD@/AM#jȑ.+IUb@%TY &TV,|cO vB':ߦuQp>D 9I6ȽH0!1aTABA$Mlfo(JuSE2rƱZN x`B gFS?p5F3t|S3:gG'.Ӣ &5': 77]8;foru9<{nC i8YUQʝ͸ _SCo0FfߧS9C\z{jNO<, 3Y֫6f l >:kq5>']=L'hvچqӳzGǫ1Y ]+"‹2@VA8g\5vW -h=\WeU4XVw"j%QYY!Wey*Ȱրj%QYX#!@ $L$7㵦uy:NWey*Ȱրj%QYXpH <j%QYZ ]+"‹GQ^ 7:?֙gTj'ɽYާ'/:4'z41%Qǫ#j"ꦋ?]!WeU4X> 8r$s ]$]TbGYɴk"iWey*Ȱ̮@,HĬCWeU4X@@ 1N ]1g1r.aUA X*?GDzY2+I0y^4f?8MZi4⎴ QMǍ8U=NOR};|槚jGxiwG 112ɽǏWd@\<~%T0S 5vV,Şj%TY & ]+"‹ a3ʢk=bEM$|c!-wi%g1 |6cTV-h Ebĉ y2P/!UZ%QX"FC*1 $dIɑ"67ʢk@d+$H`@AQ1d9e&D*ŭX#!2P+Iu+&CPARdHZ*ʼn2 0% 2@DȑQX2U$d0 AJ@fF&@AFdqv "67ʢk@d+$H`Dd$d2$FTV-h Ebĉ :j $u 0 ʼn"67Q' 릑5{?}Z*ʼn2AM#jȑ ]1g+IUa U:?i99<]8УƫIιqCY@%xT'qzMٵ |:qAj_*t`'rބZ?q暫Y>w}ۮiüqYi57Ӯp|'ܩͧ}GYg\%VXj I|ED ɐWZK Y2 "Yfc$DPT etwtV(3tZΛՀZuA8g]QK"6zᙬH1PrE6DTL@(H$aJH)"bBPK",V"/H)"bDB?MשjNO|^tizNX:?b : v| 3Y֫3F 3,HĭEA 6I ZB  $hd3xABPċ,Iԓ5pdEMl׫NOxXouǧ=ش35~{tjH3I*fvZŽTmgV:r;}ͪ6s6:yޛTry T4fvZٛƏ㺴*r|.,N>,ǛtXt50Excj_mƫ3QvNGgMQW ,yX1uDY^J,(> 8r$sTE$]TbG]Zq܊ EdXQfWHȄTE+"‹Z*EdXQbDdHH2Pߎ֙o;7 TE+"‹Z*EdXQaÁ#(/ꈲEdXQk@eQW , GxcOZg_S Q@&S3:fzӮұtqVtHėGDz ċ,HktTE$]TbV(ȑAQXuSEg&ѬbKoTE+"‹2@Y#,"ꦋTE$]TbA(!"ps&&&@lA8g]QV,Ş|uȹ"U 1`z9*"dXDX'F %xј86ibQt':vOp5F74mVp9>Jޘ?u{ϚiG BZ b] $$Nndbbq&?TE`r#,P@L/ C5DYZJz Qf0AQW ,ό*ŬeU4XQX2U$d0! BHDTV-h Ebĉ ]AJ@eQ"Dln?EbրTV,HqP% 2"br*LUZ%QX"FC*1 $dLUZ%QX"FC!pfd$WHș#cq+JbD4.ӎ(IDQI4Aș#cqꈲQf,ei* a4 cGxm'>'Gvp8p|>68 Bm;a<*?8=&چpvyٝ~8s{`~i0^oB-I8sMU;m4~niF8N>z?T£,3aH lED ɐW`\*JH3RMjrʨ`H`2UCDZFd,/7\7 h&wx&83ɽEk@e4H "#qQSSHćln?]sTE"IAQS?W>'{QQƅ64ܞ5o"dXD߂1t'мCZ 7Y8w]fv3n;1t'nNOUnr{Np?JNMl8ʿA[jUNZJL(9$]TbVfk"y SD$نR  @e4ALmh (bEM$jIi82"&6IB1t'nNONOUl@XNL's ',tRt7Ӈ|tZͿM=5 $~f;VaG*w6㳄+ ~N9 xf9~NO<qMu9 8r$sZJL(9$]TbGX=#UEaE̱"ꦋGDz IUI2ċ,Hk96d^?M#_#zUEaE̯%QYY!֒. ,eU4XUEaE̱"ꦋG 112g?"Ug@eÖeeXey1U22]p1D0=8( &18ӄhqF1 fi!րi@EFZ,":N"h pFD$1! vhd';@e4AL q vz) aόN!dD$̞|4ӌu֒. ,ei*YA8g\UEaE̕P@ Qǫ#UEaE̖EL~5pd`"^W;>h֚F%?Gz8<ngTjqN6gSTG_l7暫Qtp$%F%BDၦLLL&'roG‹*P B?%T]&XU 10@#ZJL(91gQtQ`s+IUa a4. ,ey*ȰLZAi*0XuSEUZ%QX"FCh $Kn?EbրTV,H4d$UH2$FTV-h Ebĉ 2P"*& ^L,ȑQX2U$d0"L BH VDȑQX2U$d0"aJ@et<"67ʢk@d+$H`CB8ADED"67ʢk@d+$H`D5jЄ(IEɑ"67HK@P4A^<~&'roGZ*ʼn2(`pJ@eɑ"673QX2U$d0 Qh $&D6cUEaḘ%TY=‹ZJMXIϩQƅ=N5\:OuͿN\@%xT'qzMٵ |:qAj_*t`'rބZ?q暫Y>w}ۮiüqYi57Ӯp|'ܩͧ}GYg\%"l@A"؊!( 9YeUU1f?"( PQ9DYd ,0u K]X_3P4AXHKA4K6 NM+Z)bA ꈢ2F$8cqb;ʢ(HL zI9<]ErvoWj4(#ޟ}NO=i*0K"'=vzYI+_3?F1qߦU8(sqH破QtQ`s+IU` IUd5$*%CL1g2T<̕I2H0VdzIZF1:?ʾ5ur{%f\}}NO~]'FiU܇zs53Yұnr{n/: ? `wwwwwwwwwwwwwwwwwwwwwwwqNaVK"6zᙬH1U  2IU @h,rƱZN 0\!G|ѦYާ'/:4'1t;>2T4fvZϏpλ ċ,J d^$hd0ժT A 6I7% Hę I9cX'D_<0!3F?Mש|8U~>wj탓HiiuxNtZzN\zp.C3Y]Ǻ=F4Ҭg`u(Nvpaө!ޘO ڣg3oө眡==N'Xmf;VlGZ 9>|'tͺ,j}NO`{oO<1 /U;mfa Vb¬%QYY.?b :*UaEQǫ# ċ,HkN;AY^J,(+B?+TVEXU+"‹$d0"DDvξ/=]|ٽXc EdXQk@eY^J,(y ey*Ȱր EdXQ`H <Gz: jU97Y֫0;Fw~VbF$> 8r$saVXuSE`.*.h+@|qH¬"ꦋ?MYHė¬%QYY!U$]TbVz,*.h x8`i 6|cF 3¬%TYٽ\]8У܏z~;Ʒ9<d,"~:?h^}NOmtһU;jmnYӂ8aqX:?GDz *UE?( rDʇY&Yi*UfJe` P2T=$-# xDt UpSz?뻻 h,z]%Ql9euq9>V?wwwwwwwwwwwwwwwwwwwwwwwѮ'ju8w!ޜLmu8=''zۧEi΂=E-X]uˇ2Y d^BAYed9e\ AIIeYUr4 EY I9cX'D_ ,r*DB?hSιJ?LV@Fu h°wwwwwwwwwwwwwwwwwwwqb;=Yjd0W#<:S.+*+ɍY/$I25?=w+31X L`˾jgc0Mre0j A2gcP LD9vS爾|ZI@95.`圄0i25?X( &s)S֜/Q|Z1$ &\9ɔr~u`b @kH2X`Zm/: AdavS_B; X &UC 0)Sʾ.CYS1(&##Y3x57'C1(&2059e0j~xx׫U,  ʫ$0e0jyNڃV?G*0~f?$d@©Œ Ot\:LÇfO(zIp5燌A:.j c`PL†].5<D 8r$s..h#Es,HĭQǫ#pXuSEg&ѬbKo.UaE] ,s,HĬK2ċ,H $$Nnd Q' ei*YA8g\pJ aG(ȑ@s%a/b3Fc<Ϥ53O(Oۮ=>xӍYj+okz`Q>jy7 h&wx$x8`i!:uz&u9<딣hDS8c뻻Ù*P B?day ei*Yei* a4 &pW ,όuʢk=̱"ꦋ>1ǫ1YDkGo,=d`Ɛ`.d`Ɛ.d4j,eDžx'NcGc,`ƐZK Y2 ]Be0jcHP*]a UC 0z )SAvY29v$]qP`s"BMB̸OdИE fO,`Ɛ,EB̊ N9V8H4:~f?2059e0jcHˀdUfF"F\xQ2tz벪(LLdYUdY&F\xQ2tz aTaFS4SDd=vXH`h Xˏ 4N?3@D9vS4!( F\xQ2t#gBEX Li.4j,eDžx'NB1 ft$Z=UA,e0jcH-"`pѨ@9S&\xQ2tLζqʴal$p]t?3@…`Ɛ0i  qF4ӣPCY?3At)SAi*0K2LIqP`s.<(ƙ:tj\?3@†].51. ,ds&0%\ 527d0_wNM;*ϩ|ˇ2Qf, 2Qf0QXn8\91g\900ۑ<6Sڣ ;8zj>t ~)Gh30yrvmC8x_;<οAPZ=ð?J] ܯ7jnz{6~p?\Vum M'*sirtzaQt61V{0ylPAbd9e˨ZZ*fc(!eprHU .HQfR- $ bKÙ`1<\"2059e2*(L ,z찑y( f?y2 dK냗ds&--i*0K2LI|ZJL(9̇du‹.Ʌ ds1K,̪K/Rav0VXz.  fc2a"PAi,3+GO8HKA4K6 NM+Z)bA ꈢ2F$8cqb;ʢ(HL zI9<]ErvoWj4(#ޞ;Ʒ9<딣h} =vzYI+_3?F1qߦU8(sqH\90~S@s!'(GyU*e=VdzIZF *%CL1όwwwwwwwwwwwwwwwwwwwwwwwwww_zY9=vYhH ͺI+]c뻻hS5VjNfk6:rV?NOmӢAGۢtՏ?b :밋%a=E$ ,tD:F\ AI.‹"&Q(J@dXEԓ5pdEvY2t0DB?MשjNO|^tizNX:?b : v|5iڡk3:f|uaXuSEZᙬMlfJ$H0!1f񠂄?AU4X!',kȋ &y >i9>gTj7G9>;Vqtrzyb:-0Rn ΋C\R|3WI|Nx{ӏhfk67+SǶ0fUYێ5u81v Tlmu9:kq5>']=L'hvچqӳzGǫ1Y]Y^J,(+`\uaW -h=\aXuSEuir(.,%QYY!aW -h ,%QYX#!@ $L$7㵦uy:NaW -h ,%QYXpH <"UaEE+"‹GQ^ 7:?֙gTj'ɽYާ'/:4'z41%Qǫ#".h#EveU4X> 8r$s]YbEM$~5F/h/vey*Ȱ̮@ċ,J@eveU4X@@ 1N]YZJyN"UA X*?GDz %a/b3Fc<Ϥ5GO(Oۮ=>xӍYj+okz`Q>jy7 h&wx$x8`i!xvd@\<~UA e0 aV,Ş"UE@hME+"‹ a3ʢk=E$]TbG?EbրTV,H;0% aQX2U$d0"L BH VDȑQX2U$d0!F8a!J@eŖrdHZ*ʼn2- d$DȑQX2U$d0" (IQ]p ʼn"67Qf,aV,@+>1t'srxTqGgSWΓsoӆѡY a<*?8=&چpvyٝ~8s{`~i0^oB-I8sMU;m4~niF8N>z?T£,3a+-Ŗ|Ay-e- $ bK? BZ b] N&& roGDQZM#HTE1!iUEbDdnTEkO:-=Ƕ}zTqGg͹>w'ory밋%a_~Br{o h,fk~zuT͸ouΜ} 8r$s]YZJ]Y I9G"?CʬP,Y *%CL0L@yU*em|c>? h,z ,t˱"ͺI+]?OMu9mP5j>?b :밻,HĭEA 6I ZB  $hd3xABPċ,Iԓ5pdEMl׫NOxXouǧ=ش35~{tjH3I*fvZŽTmgV:r;}ͪ6s6:yޛTry[jU3xwVBO ŝ5nS.;O mC fj?|ٽXB՘%QYY.?b :밻+TVEGDz ,HďƺavW ,y밻+TVEWavW ,H I&J:wmfa밻+TVEWavW ,8p$~@eqvey*Ȱր.UaE#(/Lr|35Wr}fvZst|SuޓV?=YΚi(ȑAveU4Xo" ċ,Jz9."ꦋ?MYHė޻ EdXQfWH @]bEM%g2 ċ,H $$Nnd Q' %TYz?T£,3a+,FF ()00c]&%‹"&Qa1%!-1.'u97(h X$n?"viMz*"DI27h*"g'vOsx]>ٽ\]8У܏z~;Ʒ9<]ȰcO]y9=ކn5p?J=WѪ fvygN >Džcz9.%TY.솤@VdzIZF,JY&Yi&T<̕I2H6>1]'}kAf,jͺI+]c뻻hS5VjNfk6:rV?NOmӢAGۢtՏ?b :E%,f/`! ,2),BA$ .(*˔% T,"jIi82"]%QfUE%(@ >i9>;Vy>w΍:I+GA8g]4AN;NQڡk3:f|u˪K2ċ,J d^$hd0ժT A 6I7% Hę I9cX'D_<0!3F?Mש|8U~>wj탓HiiuxNtZzN\zp.C3Y]Ǻ=F4Ҭg`u(Nvpaө!ޘO ڣg3oө眡==N'v-CLg`u͙h;B['τΚyEOOmS tZ6j5mtެ!QtqVt˪K2EdXQfWHQ' Uey*Ȱր(ȑ@,Hďƺ K2EdXQfWHȄ.),UaEꢒ̯%QYX#!@ $L$7㵦uy:N˪K2EdXQk@d+TVE8? 2]TRY+"‹Z%E%^J,(@@$~@eq=i|^}NOp5FzNOUNnr{Np?Jǫ1YM#^z9UeU4Xo"]TRY$]TbV(ȑ@,HďƳhE1%7Uey*Ȱ̮@]TRY$]TbVz%E%bEM$' 72bbdόu˪K2Qf,F 3E̺%T0łqH]TRYȰƱZN K1qgmHģOGu jUniwޞͺ柜;vmSz: Gx=ʜy7ޘTŞu"^XjK.%\ בU dKuxiwl:QVSHĂ,7E;@e4Hp&w=DQX"$E3~rxNOq.xޮ.hQnGO?[yuQIe,F?S}kAf3]'kmg~Vt\xV?Qǫ#uQIfV,D K2rDʇY&Yi*UfJe` P2T=$-# r1]yWކnNOEUSH,$YDӒͺI+]?OMu91t'nNOUnr{Np?JNMlmڡk3:f|u*.h+@|35{<`B) clVPI 2 &64P1"ꦋd5$b|D$!:?֍7^' jUfާ'g`u?O] ,]EM9hkOuS:):oqþo`qv- fߦwrx p?JY֫0;qN?za<3jͿN'r:{MT4fvZٛƏ㺴*r|.,N>,ǛtXt50Excj_mƫ3QvNGgM%QYY.?b :ey*Ȱր(ȑA"ꦋ?ӎPD+TVEeth֚F%?Gz8<ngTjqN6gSTG_l7暫Qtp$%F%BDၦLLL&'roGJUA .@cTV-gVXuSEUZ%QX"FCh $Kn?EbրTV,H_!J@daE&D*ŭX#!ժU[T BH +0UUdHZ*ʼn2 _[T BH ŠUd`#cqei*Y"U0*ŏᴜ.hQUg\ڂ\moZ>볦z/#£=Cnͨg g0 W:'vV;"Ԝ1SW4ZO|PsOλM᩽Vtc<Nm QL;Yv勴qI<':- qIν_r{E'M{=8wN?šܮNOۣPANVk3:frsn;8BL'mQPڧSh-CLg`u͙h;B['τΚyEOOmS tZ6j5mtެ!QtqVt.UaE] +F 3vW -h=\..h#8EKEdXQfWHȄD+TVEQ.UaE2d" "DBC~;Zg_Ӯtެ1%QYZD+TVE8? 2vW -h ]+"‹GQ^ 7:?֙gTj'ɽYާ'/:4'z41%Qǫ#%bEM$~5ȺB?]$]TbV(ȑA"ꦋ?MYHėމvW ,ydeU4X%bEM$' 72bbdόu.UEϏpι4KUA X*?GDzd,"eV#ahqF1(i:?i;uǧ8U~q8z ZwoL:`vO4Z!-1.' 72bbd118Sz?]`r#jPd$2<0W# SmW < _yʿG ^ReyʿG S[bț Ț !#\$]BҴa`>ۢt mర=7#Agq\9W¡+ժTZ 9W¡ pklZ`0ٽ\]8У܏z~;Ʒ9'ւfN]ǪY5Aێ67ZGۜ0࣏W"G=KQf vCRNQ P2T=$-#z%CʬP,P*UfJec@V?wwwwwwwwwwwwwwwwwwwwwwwqrySWrfߧSCp?Jy>wtV(3tZΛՀZuA8g^B,El3Ydda $dda*Yd5$b|0DB?MשjNO|^tizNX:?b : v|mf;VgA8g^B,"ꦋ3Y 2 &65j(H$`B) clA @~.h&CRNX+I A4AL>@}hur}_nr}fvZ;`tZa8|g^9=c; bmnWq'mѨa '5j 9S!Xkqc6ry(~OzmS]ڡk3:f4|աPpgqgMn<ۢƧ :-Pn5Y:voV:?f+:rey*Ȱ̮qNא+TVEGDzeU4XVw"Y^J,(+B?E+"‹Z2ey*Ȱĉ 2ȑ"d!3iv:voV!W -h E+"‹ Gx+TVEd"UaE#(/Lr|35Wr}fvZst|SuޓV?=YΚi(ȑBB,"ꦋ?]!".h+@|qH!XuSEg&ѬbKo+TVEet<Gċ,J@fB,"ꦋG 112g?b :ei*YA8g\Y*,࣏W"G= Y2+I0y^4f?8MZi4⎴ QMǍ8U=NOR};|槚jGxiwG 112ɽǏ"U 0xB,P@L/ C9Qf,$"UE@hM EdXQd &|cF 3V>?5o|a'ID!šv)=ΝiQu,t2"s++=UZAcGGDza1ba3Ui3!a.yVB6Y$ɄZLFFdˢ`ZLFFdˢ`(ȑ@OƱZN zI PtL'bz "^[;\]ΝiQuGDza1ba3UEfB20%T.]m$I 3!a.KUEfB20%T.]n?GDzd"~5pdEQv0U Dk2yƌyIkM#f꨻i PtLh $dXp$%:/#8'u97EW]Bhl]u V$PF%h V?wwwwwwwwwwwwwwwwwwwwwwwѮ'ju8w!ޜLmu8=''zۧEi΂=E-X]uɀ 2Y d^BAz(H$aEz(J@dXEԓ5pdEP:?֍7^'g`u7G9=yѧ]8cQ' 릈6I~N>iڡk3:f|u]$]TbVfk"y SD$نR  @e4ALmh (bEM$jIi82"&6IB1N]vV,Ş|uȹ%T0łqH^LYȰƱZN >Fc<Ϥ53O BZ b] $$Nndbb`Χ&?]vJ aU 10@#]vV,Ş벴Qf0Au^J,(>1+]vXuSEUZ%QX"FCh $Kn?EbրTV,Hn;0% 2r&D*ŭX#! aJ@d*J "67%TY=ei* a4 cGxm'>'Gvp8p|>68^jN?\qYD 9I6'p?Jwwwwwwwwwwwwwwwwwwwwwwwwwwwww:=75MU;әͿN~t|St1yQg57ūc뻻pιy0fK"6zᙬH0P  2HP @h,rƱZN \!G|ѦYާ'/:4'D$yc N>iڡk3:f|ud,HĭEA 6I ZB  $hd3xABPċ,Iԓ5pdEMl1t'srxTqGgSWΓso6mUΧ5KO`jfu οIUNy' 'U5Vt|9\yⳮmjoU]8=OSO?S ιK I9k YeUU17\7 h&wx&83ɽEk@e4H "#qQSSHćln?]sTE"IAQS?W>'{QQƅ64ܞ5o痓d,#dA_~Br{o h,fk~zuT͸ouΜ} 8r$s̭%TYfKɀ .jI?*UfJeb@dyU*e`*CʬP,ch3uyWކnNO0 UP^LY~W{|S8c뻻wwwwwwwwwwwwwwwwwwwwwwwqrySWrfߧSCp?Jy>wtV(3tZΛՀZuA8g\P%a=E$^LYrI$^LYr4 EY I9cX'D_ ɀ .Q>@}hur}fvZt|SuޓV? v{c N>iڡk3:f|u0.h+@|35{<`B) clVPI 2 &64P1"ꦋd5$b|D$!Q' a1g1r.fdT=\ ɀ 2Y2+I=r'\60d1qgmHā!-1.' 72bbd110gSz?a`r#*2^@fei*Ya00ey*ȰLZ@ "ꦋ>1+JbD<ل(I*ŭX#!vaJ@d5$LUZ%QX"FC N $i.Uda% "Dln?EbրTV,Hz7P% 2UC "UdHZ*ʼn21yXB $̄daɑ"67ʢk@d+$H`E'Z (IdHZ*ʼn2Wj(I/%&DcF 3F *&-% %O0g2Fɀ&5pvjl\x?9I 4ȫA@hV "Piʢk@d+$H`CϚ!J@e4"Dln1 %TY= 2Qf0QX<6Sڣ ;8zj>t ~n6\}qYD 9I6w'oryz,s 0h8߂1t'мCZ 7Y8w]fv3n;1t'nNOUnr{Np?JNMlͶmP5j>?b :YbEM%hf/g @e4ALmj*PI SD$ٛƂ $]TbLV"/hd#G|Ѧ> QL;Yv勴qI<':- qIν_r{E'M{=8wN?šܮNOۣPANVk3:frsn;8BL'mQPڧS6-CLg`u͙h;B['τΚyEOOmS tZ6j5mtެ!QtqVtJEdXQfWHQ' 놕ey*Ȱր(ȑ@4,HďƺJEdXQfWHȄ *UaEҬ%QYX#!@ $L$7㵦uy:NJEdXQk@d4+TVE8? 2U+"‹Z!Y^J,(@@$~@eq=i|^}NOp5FzNOUNnr{Np?Jǫ1YM#^z9eU4Xo"U$]TbV(ȑ@4,HďƳhE1%7ey*Ȱ̮@U$]TbVz!YbEM$' 72bbdόuJQf,F 3E4%T0łqHUȰƱZN K1qgmHā!-1.' 72bbd110gSz?d@\<~Uc)`FU1gU00Y^J,(>1u']ry$9IWͿMvm@%|wwwwwwwwwwwwwwwwwwwwwwwwwwww1pԓy5A࣏W"G=ҬEOƹpdgaCRNW;>h֚F$ ?7<5ANM"vyHKA4K"^V @#E;@e4Hp&Ȋ)$dC}ށK5A.?gĄHĻ%`LO1JM;f&yS >£))bC67QNE2DHn? d^ I9/Fr^@5$N| I9/gr]S>?r?}!,@# I9/gaQXiVXuSEUZ%QX"FCh $Kn?EbրTV,HS% 2ZKY%XICȑQX2U$d0"f ?A\` &*IbdHZ*ʼn2е_f ?A\` >F*&D*ŭX#!vpiBd$CRNK"Dln14+IUb@4+IUa U:?i99<]8УƫIιqn>z/#£=Cnͨg g0 W:'vV;"Ԝ1SW4ZO|PsOλM᩽Vtc<NmDžcz9ei*@4!'(GyU*e=VdzIZF *%CL1όA8g]i*Zj Hę I9wwwwwwwwwwwwwwwwwwwwwwwwwwwwwquϼF;V{ MޭPVuS=NX:n([8ɨ`;Fyt \9fVUWS.%_3` qozti'CU?3`$nCYї;?CY0ٓ?3`(F {Ld49W{iʸ &qEH\}!q8(ɵJMQ'jUd,nCYї CYI]F8a&~f?m- gF\5]bgcTZ^TZgcz[8³f?dޝA<~t'c &u@Z8^0r~`5bEnNOPL@?.LI3Dξ,Y]gT ' Rz!qjr>'cXX,5J ?T.6ӺRU H,5J*m;*\}O5J98s|UwUUʸՉ*N1  Z8Š5G?3g_5?˾jgcXXMFmayM`5bE|Uw}c?3mB0lpwFʴɆV$P=Sj]c)VfRm `Q8\Y 31,L_"լO4+3z ? _ ;3@ ξ,EEBz0n5Wz1,I-ZpG ~f?`0Lpʾn>'cX aقGhU q XBq]qcX hZVЫU㳄0"ʜiYcX &mg &9;8Irn~f?`8Y60ͱj9QCY^mQʌ`8,3lZTaf/7=9gcXmQʌ2Ӣʜ;*ä' f7Is=i8L pͱj9QNͳ<'<8Bt$br :Un6gVtm̙Dbr V Yl cXmhk:3QgxW*56qS1, &0<>mRjm&ygcX &+F0N>k4gG4L ɜeݟYjUʌ6ɟ`@,.VlѦܬ4gG4L30:Y;: $$,"p]DžY-3m ;]qj .ºVd$N(5huUU4>/:?3$&ۢtd^t*51n6\}1, ɚiF3ZqьtgG Uq$&/:2槞#:8mګ|$ &/:2qjgΎqaP @b&(,+#:8mګ cXPMSq{ AjgG UqB~f?`I7;:|?~qeSp-FzQ8XMޫMʾZncެ?^oV1uzӭN;7Ū~f?Y6&vl@iDZj7 5Yθg gFc<Ϥ53OSHĂ,7D:apθa@eC27 'h MlSD$jpp 5CNBB5V$tQLN?ޏ靜0+8zjƅ絝q鋵Gm_x*?u2裣lo̺(4ANMl$L!H`2 $d0 1h %TYD !JA4ALn?r?}?hStZ΄i7Znx]>ٽX:?ZN S],PaCRNX+I1v@E>1Nפ~fUCEr0Lr̬ &4 \9fK W6ਵgU1̘ؒD!8Yvvz@@u!Ηr~ՉBUWf|ZJUE$H`E'5r BHRp?JW*8Yvv'5ȓ#!B1*,&$@BX:j PI*\i8Yvd G4DQ"D@$(HoNNݙcUEV,"FC(>њWfd$)8YvcqĄ/h6xa_u97]oy8(_mw!vh mnLNƶE8;C/7x`nryvgQЋRqwt9 0]m4.*2`i]|UD$Hoe_x^txxc!-;O 269Z4r8 ;O 2xG4DQ"ɒ$@ y2Dm4.*"FL$6|6couWċpѻ2z ve_2yxE;O 2Gg: z ve_vd| <0WgfOA ٙwҽN5X;j~PAG࣍Vy- gH:!-"",w a" TbK29Y~=2bq&ZJUE$H`CnCYї eGB $7ʦ YϏ܏Ą Y˻0S10gSz?%TY@ei*2 ,VP%&C!rh @H!"ps&&&@ZJUE$d0"+6M5VنRJLBfɦ[3xABDၦLLL!Qf-0H`D.VljنRJLBfɦ-h @H!"ps&&&@ZJUE$d0"+6M5VfaTA!Yi37( $$Nnd]&$|Yla>?d9dJɕdJϏęUD*d5ZLU1gI2TɅH4y0kԋ$JBEa% iyxhFK.ˤtZΌhhb %HS],EMTRmUA1"",EfEX+#1gye<+8F .0VE*.4 ȳ%C0%δ1yVjٍD0 &d## 2E~f?pU.U  (j@Ree5 hfGft@ Ue u0 &VeU+%Hs,$^Gc- gF\hb %IQ Y?34ӎ2/: E$̈dR* (`iȤ9,jEQa% ΌdR* (a 2Y ԊJd…~f?/:2qj dR* (a@FK$TXIC xɩ dR* (a$`8i,jEQa% 2Z@5VcKAvbGcfeǫ: iVW*F(4iVW*F(~f?AVaj Wi`W &XHX9 `9/#1 ijcK2Y%eUH8i,2T~f?6ŨFvbti91S&D|3lZTa~TѤSQd.4)(L&D|3lZTaL' @ei%ɑ"6~f? d8Btha%ˍ 2^EC0ɑ"6~f? eҮq1YR*@da Ԋĉ"6~f? dҫ$"d 8iVHE$ q2$F1jUd&y""!HD$`8i""!HD$`8#gci憃DVK$aCDVK$bdHfɵJMnit!EfEJ!WI2$V`$Xd8r&D|.VlѦ]&$rȕ*d,41&CDVK$bdHcY&qjM4LITM"CQI1%XICH.eUH9RLAi2VP|.Vl60c N>hit*EA̘QA̗At*EA̘QA̗?3*cKL2T4ꦓ i"Dl<+6`}/%ʪ&Pp%tUD*&D{MfZxi$UMH U0ʩ`#gc~Yt(vW2Xi" , ]䰌&D{Ӭ :ɧ)6P)" , ]-"(8i*ldKH ,&D}&u͐~Y4&_.dDX@%ZEXQ`p+HIQaIiaEȑ?3ϫdRhJ@դ%a)V l&D{c N>hhŒ$dP&a s%z"6~f?p.=Y]F(AR0ĖE1L(AR0ĖE2dHhe᱁E aF H,$Ɛ.$\@&a ԊJ\#gcP]wf+1 DA6\AaR01!KH5eqRHs+Ĉ?3ς 6Z4eUU lH aFUUb%d2$Fy!8Yy栄Biz9EOƴW#]&ѭCVQLBQHK"(!,LO1SxR?%TY@ei*$d0!2P(!!xm'>;3`'hvpuDžcz9-%TY,!'(GyU*e=VdzIZF *%CL1ό7 d^*UfJecNM<4soiz(`pxpQ 3oaAAQ(ȑ@yU*e TKmӢ Cn=+T<̕I2H͹%TY@{mWAeY I9M,!'(t_zY9=Y,U:)tmiiǫO Y<=hGws7\G'CoO70*4 oM:1>o7>'mBٷBºY<=ǡ5ot*?$H t=NOUN3j'p?J暫QuՒɲUBҰƅ{ y8bHBƅ;<GN, vyjI>?ߦY{̚ ę I9fcM !',*M I9fcAV`jzqM@eR10ժUt&i*"rWeu ZJ *!',*-/>jd-%Y\…jI3 ifIV^|ɠZJX…jI3 Gf.Vd-%Y]t!',*}aA`UYBY I9fc~q4 fCRNY: rh.1qΆndH5ԓf?d5$噏LEԓf?`&uY I9fcnhjI3ɠ!',8ʿAh-%T]ԓf? *jI3.jI3j4aCRNYXI r 9BhUd5$噏Z@M̆1ih"Uԓf?&% I9fc1rhHEԓf?~N>h y0e I9fc/:8la@FK2^LYvCRNY\60扠aKɀ .jI3m@4!'(~?Qǫ#dXDkH5{'mD$ԓ7 dgrv# a<.<|3]_3ϩ:s8N ÛzY֫=V8cSz?ĄD$q18ޏ<ƦnNZf6ntͿCW6:Ь1VK&U JAY,%T--&tc28"' B` @€ͷ_y fP`8I3 hd4|fvZنR! 6IGg`u͙h "Ga BZ } 3@N&';V8aq]#MY6JZY+FLPU(sf na 2e(PAn?xmdlPɲUB̡^p2f0!1MN jo6(Hɓ/B >?܌!-> Sz?W_i֮<+- N7:Mߡ֫~NMuhV%dgM{:1@ pԓ ̡N}ǰ l@fۯ<3(W$ @e4ALmj*P(hd3xABD ̡^p2f0!12(H  MY6JZ[Megp0 DRN@ 32; @' 2n (8 ̡^p2f0!1[jU0ժT P$0!1[jU3xABD ̡^p2f0!1[j(Hɓ/B >?܌ؑuY I9/h "r\ .!'%RNQ6> BY UpSz?d*iY+%dΌfP6p'@A#2r)o8a ( ug@fe 0~m7P(H $%FTd5$剉FċjI{@eUԓTuY I9/ I9GۑmV}NO~%TY@|qH破QfƸ'Gr3AY,%T-. 8s(Ty d^bEd5$&'MċjIsvUٴ-c:OZg_5C8Ћ CW*-Y8igXB;Kfdyͪ6pO#IM~ Ѫ1Mp{Pimk:u8ش.<+МlܨT]֒,Š> 8r$sZJ\' C!*]e-I<1ۛÜh^{UݛP}nqS:@tV 6¹>uGui*Z+IU`#!2PaL2P (d0 $c%(ȑAi*AARNQ6cCzK",_fd"Q ~z bF>?E;ƷIYr]fTy4vdL\tGe tr 9;[""N3A8>AyN5]]rqtVjyٝ{~N5>gE&hDw0Zt|Z4_qPCuېٝՙPmj;OiRx[E'Mx=qh\xV#U u}a |w&q^aQYWzqsb7WxUBb;ͿCV5uT8ttၩ'#H4 [RNF/">hYȷ"槆"^E";|,N"^E":#=|@'~;OWy=N5X+TfANӫ!ֆ:hͿN6!~ Ѫ['uۏu9<Ut?m܇f;ͿNZ? ¶9nmTZCG\y];;73QиSδBx:\}=|@Ƕ5>r`wڇoWƫAiƍuƞRm- ;!?s ϫCVwZ{YN6&(,"٩7M7δBx:\}JM;w-WεWM3sjԞN+]'0 ۫šǡ4UEDa8E'rtj ϩƫ;qoUqquUt'ӂpN8g7!3Q u9="źͣQO@-XIޘTGDv`$0iZBOxX՛Ʀk|wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwq6,uqS,x၀%-P(H<,, .1h^ap54T0{4ұFUtv:+L]ɃN\H2Tf?rQ`=eAaԓLO3K`f4r]Nr`Wmhk:F;n.'ۢt`N%1TXePADd5$Sʨ]TL0yYՒk,$r(~'%P2YIu jIȡcZbLp?J~EUb0&/"XjIEXQTACRNE18mӢܘ?~^|xTqo:.qo ƍN jo6E`0U ΥC*gQ!j yXjIEXQTACRNE1<-rʝtov:+L]ɃN^\rpcl`}FTxcZbLp?Jn<-rʝtov:+L]ɃN]vuGr[&Ơj>A Ơp,HcP@9!AABxf?rQ`=eAaԓLO3K`f4r]1İl0 ˗&Xf?#a"p8r?v:+L]ɃN^k3K`f4r]ŒHS&]Y8aڤ mhk:φTZs9A6\}O h]hQ\1xN{Ϛ|NrxN}\x:ߠ 1qW69 7 |So͹8O υuI>q£' NXx(/::8ߡ֪ՏiNpܬ;qgAiN8>nŒHyrE) >.ᩚ QV]ƅxjIj><0M 3A=NM'k3V.ChgN^8sn;<$qPOSW67X&ѡ`{'jmC0ūw!r_` i`666s53m ;XzN=`}BzNO~܇40:EǶoUqC9\)GΙ97:0ɴh/E`0p?JKHDZE(kG'Ф7_΁ҽN5]zOOܘ>fqJ*JE1 ?mjkQVP)P֎<*'^߂>NxW'ƫNCPN)> ?mjBAYIEXIC'CZ8rmmj>;|ӠVZfv:Tcg&Ѡi0 (!S۬:UqmR)9,sb 'ѧyҏ8;-JLpY=&ۆܙj7 # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_view_log =head1 SYNOPSIS clmgr view snapshot \ [ TAIL= ] \ [ HEAD= ] \ [ FILTER=[,,,...] ] \ [ DELIMITER= ] \ [ CASE={insensitive|no|off|false} ] =head1 DESCRIPTION The PowerHA snapshot feature captures information about the cluster configuration which can be used later to restore the configuration, create a similar configuration on other nodes, etc. As part of that data capture, PowerHA can optionally collect data from various system commands like lsvg, netstat, etc and store that output in a separate "info" file. The "view snapshot" command displays the contents of the specified snapshot's ".info" file, if that file exists, in the indicated manner. If one or more filters are specified, then they are applied first, before limiting the number of lines. If both TAIL and HEAD are provided, TAIL is applied first, then HEAD. =head1 ARGUMENTS 1. snapshot [REQUIRED] [string] The name of the PowerHA snapshot file that is to be viewed. 2. tail [OPTIONAL] [integer] The number of lines to display from the bottom of the file. 3. head [OPTIONAL] [integer] The number of lines to display from the top of the output. 4. filters [OPTIONAL] [string] One or more search strings. 5. delimiter [OPTIONAL] [string] The string separator to look for in the specified filters. Defaults to a comma. 6. case [OPTIONAL] [string] An indicator of whether or not the specified filters should be used to search the log in a case sensitive manner (the default). Valid values include: {insensitive|no|off|false} =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_view_snapshot { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_view_snapshot.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* typeset snapshot=${1##*/} snapshot=${snapshot//\"/} shift typeset -i tail=${1//\"/} typeset -i head=${2//\"/} typeset filters=${3//\"/} typeset delimiter=${4//\"/} typeset -l case=${5//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i status=0 rc=$RC_UNKNOWN typeset -i i=0 typeset GREP= [[ -z $delimiter ]] && delimiter=',' if [[ -z $SNAPSHOTPATH || ! -d $SNAPSHOTPATH ]]; then SNAPSHOTPATH=/usr/es/sbin/cluster/snapshots fi #===================== : Validate the input #===================== if [[ -z $snapshot ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT else CL=$LINENO KLIB_HACMP_is_known_snapshot "$snapshot" 2>/dev/null if (( $? != RC_SUCCESS )); then dspmsg -s $CLVT_SET $CLVT_MSGS 102 "\nERROR: \"%1\$s\" does not appear to exist!\n\n" "$snapshot" 1>&2 dspmsg -s $CLVT_SET $CLVT_MSGS 158 "Available Snapshots:\n\n" 1>&2 typeset available CL=$LINENO KLIB_HACMP_list_snapshots available for (( i=0; i<${#available[*]}; i++ )); do if [[ ${available[$i]} != *([[:space:]]) ]]; then print -u2 "\t${available[$i]}" fi done print -u2 "" rc=$RC_NOT_FOUND elif [[ ! -f "$SNAPSHOTPATH/$snapshot.info" ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 137 "\nERROR: the specified snapshot's information file could not be found.\n\n" 1>&2 print -u2 " $snapshot.info\n" rc=$RC_NOT_FOUND fi fi if [[ -n $1 ]] && (( tail <= 0 )); then dspmsg -s $CLVT_SET $CLVT_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" TAIL 1>&2 rc=$RC_INCORRECT_INPUT elif [[ -n $2 ]] && (( head <= 0 )); then dspmsg -s $CLVT_SET $CLVT_MSGS 111 "\nERROR: \"%1\$s\" requires a positive, integer value.\n\n" HEAD 1>&2 rc=$RC_INCORRECT_INPUT fi if [[ $filters == *@(\`|\$\()* ]]; then dspmsg -s $CLVT_SET $CLVT_MSGS 133 "\nERROR: the \"%1\$s\" option contains a shell execution character: %2\$s\n\n" FILTER "$filters" 1>&2 rc=$RC_INCORRECT_INPUT fi #======================================== : Display the snapshot ".info" contents #======================================== if (( $rc == RC_UNKNOWN )); then if [[ -n $filters ]]; then IFS=$delimiter for filter in $filters; do GREP="$GREP | /usr/bin/grep" [[ $case == @(i|f|n|off)* ]] && GREP="$GREP -i" GREP="$GREP \"$filter\"" done GREP=${GREP# \| } #====================== : Insert the log file #====================== if [[ $GREP == *\|* ]]; then GREP=${GREP/\|/ $SNAPSHOTPATH/$snapshot.info \|} else GREP="$GREP $SNAPSHOTPATH/$snapshot.info" fi if (( tail && head )); then eval $GREP | /usr/bin/tail -n $tail | /usr/bin/head -n $head elif (( tail )); then eval $GREP | /usr/bin/tail -n $tail elif (( head )); then eval $GREP | /usr/bin/head -n $head else eval $GREP fi else if [[ "$*" == *([[:space:]]) ]]; then /usr/bin/cat $SNAPSHOTPATH/$snapshot.info elif (( tail && head )); then /usr/bin/tail -n $tail $SNAPSHOTPATH/$snapshot.info |\ /usr/bin/head -n $head elif (( tail )); then /usr/bin/tail -n $tail $SNAPSHOTPATH/$snapshot.info elif (( head )); then /usr/bin/head -n $head $SNAPSHOTPATH/$snapshot.info fi fi (( $? != RC_SUCCESS )) && rc=$RC_ERROR || rc=$RC_SUCCESS fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLVT_GUI == *([[:space:]]) ]] then cl_dspmsg -s $CLVT_SET $CLVT_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "view snapshot -h" "SNAPSHOT:" "$CLVT_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_view_snapshot()"  kyo2םa՝a֝a&2bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_cluster_rbac_refreshgcy#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_cluster_rbac_refresh.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #============================================================================ # # Name: KLIB_HACMP_cluster_rbacrefresh # # Description: This is the function that is invoked by clmgr rbac_refresh # It uses the "cl_rbac_cmds" utility to generate list of # commands and refresh the Power HA commands by setting the # innate privileges and inherit privileges for the identified # commands. # Inputs: # NA # Outputs: # NA # Returns: # 0 -- success # 1 -- failure #============================================================================ function KLIB_HACMP_cluster_rbac_refresh { . /usr/es/sbin/cluster/cspoc/cl_federatedsec_source fsec_init . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 7d4c34b 43haes/lib/ksh93/hacmp/KLIB_HACMP_cluster_rbac_refresh.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM : INPUTS: $* # Declare and initialize variables typeset -i rc=$RC_UNKNOWN typeset FSECFUNCNAME="run_on_allnode" # File to fetch PowerHA SM commands to categorize roles CMDS_FILE=${HA_BASE_PATH}/cspoc/cl_rbac_cmds #reading POWERHASM commands file while read LINE do [[ $LINE == \#* ]] && continue if echo $LINE |grep -qw "ADMIN" ; then CMD_AUTH="PowerHASM.admin" elif echo $LINE |grep -qw "OPERATOR" ; then CMD_AUTH="PowerHASM.op" elif echo $LINE |grep -qw "MONITOR" ; then CMD_AUTH="PowerHASM.mon" elif echo $LINE |grep -qw "VIEW" ; then CMD_AUTH="PowerHASM.view" fi CMD_PATH=$(echo $LINE | cut -f2 -d":") [[ -z $CMD_PATH ]] && ret_fail "Command not found." 1 # Skipping the further process if command is listed in cl_rbac_cmds but it #is not found on the node in any path, as there may be a case #that the fileset is not installed. # In that case we will continue to enable RBAC for other commands instead of #exiting with an error. if [[ ! -s $CMD_PATH ]];then fileset=$(lslpp -wc $CMD_PATH | grep $CMD_PATH | grep -v "#" | cut -d: -f2) if [[ -z $fileset ]];then cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1438 "\nWARNING: Failed to enable \"%1\$s\" for RBAC because fileset is not installed. Please run the operation after installing the missing fileset.\n\n" "$CMD_PATH" else cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1439 "\nWARNING: Failed to enable \"%1\$s\" for RBAC because \"%2\$s\" is not properly installed. Please run the operation after installing the fileset properly.\n\n" "$CMD_PATH" "$fileset" fi continue fi # This can be made more secure with respect to privileges by running each command with all #the options. Get a unique list of all the privileges for a particular command. # Basically each command has to run for all code paths using "tracepriv" just like truss to #get complete list of privileges required to run a particular command. # Get innate and inherit privileges for each command in cl_rbac_cmds file CMD_PRIVS="" INHERIT_PRIVS="" CMD_PRIVS=$(echo $LINE | cut -f3 -d":") INHERIT_PRIVS=$(echo $LINE | cut -f4 -d":") # Privilege "PV_LIVE_UPDATE" is introduced to support live update feature of AIX. # Remove this privilege from inherit privilege list on older version of AIX, where # lvupdate feature is not supported. lspriv -v | grep -wq "PV_LIVE_UPDATE" if (( $? != 0 ));then if echo $INHERIT_PRIVS | grep -wq "PV_LIVE_UPDATE" ; then INHERIT_PRIVS=$(echo "$INHERIT_PRIVS" | sed "s/,PV_LIVE_UPDATE//g;s/PV_LIVE_UPDATE,//g") fi fi # Set security attibutes and innate privileges identified for the command if [[ -z $CMD_PRIVS ]] then STD_ERR=$(setsecattr -R LDAP -c accessauths=$CMD_AUTH secflags=FSF_EPS $CMD_PATH >/dev/null 2>&1) if [[ -n $STD_ERR ]]; then log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? fi else STD_ERR=$(setsecattr -R LDAP -c accessauths=$CMD_AUTH innateprivs="$CMD_PRIVS" secflags=FSF_EPS $CMD_PATH >/dev/null 2>&1) if [[ -n $STD_ERR ]]; then log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? fi fi # Set inherit privileges identified for the command. if [[ -n $INHERIT_PRIVS ]] then STD_ERR=$(setsecattr -R LDAP -c inheritprivs="$INHERIT_PRIVS" $CMD_PATH 2>&1) if [[ -n $STD_ERR ]]; then log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? fi fi # Command "cl_mkvg" requires effective user ID as 0 in order to execute successfully. # Set euid to 0 for this utility if echo $CMD_PATH | grep -wq "cl_mkvg" ; then STD_ERR=$(setsecattr -R LDAP -c euid=0 $CMD_PATH 2>&1) if [[ -n $STD_ERR ]]; then log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? fi fi done < $CMDS_FILE # Changing file permission so that other users cannot access it unless they have required role run_on_allnode "find /var/hacmp -type f|xargs -i chmod o-rwx {}" >/dev/null || ret_fail "chmod failed." $? # Setting read auths for all hacmp log files hacmp_FILES=$(find /var/hacmp -type f) || ret_fail "finding other log files failed." $? for X in $hacmp_FILES do STD_ERR=$(setsecattr -R LDAP -f readauths="PowerHASM.view" $X 2>&1 1>/dev/null) if [[ -n $STD_ERR ]]; then log_return_msg "$RC_ERROR" "$0()" "$LINENO" return $? fi done log_return_msg "$RC_SUCCESS" "$0()" "$LINENO" return $? } #End of "KLIB_HACMP_cluster_rbac_refresh()" stalle l0o"םa՝a֝a&Zbm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_logical_volumecy    e=ailnorst "$O_cdghmpuv-CEGILMNRST[]fy&().1:>AP\b#,/02;DHUVkwx|!%'*4jqz{}378?@BFY69r !"Ժ7fbjt0׉BI|HYlR+)QS]S4zNW9Gvh A84O8y"CIAÆI'V|NCc='CfPakʫtwNjwJnnR]k' Ըtb>wEYzLħ&w.G.U7#N$4Dx8@iؽЄun_W4q䱿VMK#UuL:2 ^Ɋ1[ҸVfҳumG7BIվvJ.II>I|Lħ|CoԔ\+:{KvRuV]ӫF]S4zN̠׺w>%=Єu_(:tj>i HgbBIպku}_(ӬzWZU|T(0eU^W5\Vn7ܥ uz@NU+q3+=UVSt^QzטD׃u_(UإӪvU[bw=wNruL:2 _U]^`Ul $Ti3VngbS5TeJNNPzFz)yOIYJꙣt4헥t-Єuo='@:iQ:2 XDy!BN7\?JK轤;unUuA;GF53Gl -tJ|l&o $Qʫ{.Y1[n;}U*XXVƺh A[ٔZ'&4k8(tLeGHH|[R\ZuVz-Ņn|pItQU]]'GI'V. ( A8p %m4WeGHH|.*I[M>*kHYlRUoYiIw1<4IGl -bR.5{׹֦}޼䕦i ^oY2 iJ)fA=nu{d;*(=#8Mϭ3Ul[|ZRYx]o1)VlLS]S4zNu}_(bSt[s}o7UYuVR6i*SnO7U=UygLΔ3ɇcuVۓ7KW;0WJb WJKNvòٿ:ft0𥧊[nO7Ue KW8MWUL&;u_(^yf=U'Be[Tl+ӛٹoBWN9{G1):zꙣt ]ӫF㻄zNWV9k;en&[s}o7UYuV3Gku}_(U|%.-),.|_En|MՉƁƛtˠC]t!p1^u7BU, bWwMЅ91U4ø8V@L /f\ZuVIGl -|+pʫzvaB+pC%(UoYG#Uo JnJ:JU y ( A}5$XRMrbqt-<} Ҷ0P4[Uo )lRa˥e;I^Oy fGIٔZa;f.w8Xw (WtQY2$$@Ys.oK:|$t5:z< F8IGl -ao$t6eon&'nItQ64<<;HH#I &ʏ@Y2$$@XVR% [u]RG||$t6e˸V[)L| UEkOb ⷮR4`v$*DҠdʏ@au:{'UY'Mӽp9O Y\7Jz*nbjW H TA$$DoEdo]ԥo 𕙥͝U[^DT9pҢC Pz$FDOwRq@Ҡȃ@Y2$$@a+3K;(zNMU:u:M Y6nxwEdo]ԥ]U}7VxM Pz$FDdʏ@A-}OwRbSeUuT𕙥͓U:u:hxcH@=#Je*=BD UW0{KOf/i7! aKtW0-gU%wDΛMj cʚhY1q.C,QS"|nMp  2oQZ'tikRb# 1)ӒL-qD8M0RH(ĆEi&QzN, -xo䆒A;<$@x &APk39ǂNZxBe{]fm<((p(7W]uEvhMMBI   ]gh   ^+i8Be{׃n <0P(PPoLtIEwN48<   \\;ahREP<^usU6@C@y2uVIυx@C@y2빊Ud1r( 8S+.i3hUdO   ^XZ7ezF^SNس]&& f%H[7 \´"`R@i2~ E@(`M,[j#-{I$V-ARra|eT_&0C>j#-h#"8%H@q1-|F.ZVo j#-gsPJ ^oY3'titgBdǑ& Po-)E7LdѧPJ 1@"`, Iq:fc$31wC0M`*SٔZ'&%ЄzJ*>*pIٔZ< &J R>6^t⡿%>2N>2Nor7(R A4|d&.҅+5ҘWRvp';zUձŘb8@c,[<J`QbtBB˂(UDIeުMyl\s%_W4`n}LxX^, ^T}_(ax7=vQax7=g]"bSF6EЄ`nz #: ŁI[Mg `n|+p`n}°n)L|7=UTV$XY&wW>`n{uVI-xX^, ϝ&m1UQZꬓ˗7M^os6^trU{6v""xGD27a@y!҂)u.MJ Dq4HS0d&! #eIɅCpC(vίi:1q[URUn}UtxIGl -}V)[K/Jw*N=A'&;  (N(E3&1#Hr cI<vqIՉWu/>W`$7ӱu"V@WNwAf(S+ էbf(wiYӱuiY@ ^^;\ 1HIC@ e{Az]p,~ iغGC2Zv. 6\a@y!҂)u.MJ Dq4HS Di2h]1}abS(p > D }Lga!`AHi$4t]j)xGDҹM%&pEz{.A >|I+`VR'Pf( YBJp,w( fa!`MإC #S2_($<(}")I*Bٸzϊ31nga!`.qJfW4au:,O&1#Hr cI0c,[=UTV$9p˗[,^qǐHi$ Ph i+iJ]yN–|TҒ:)j̯UJVA3"8%H@q넨*FiLYI넩EdDO@h"&A0D,<43>7ᡠګq7A1.oPbE7ͧ% &\X-{t_ BJ11x!D%(obذ7=(1WˆJ"/Da%MiBIgE^(1WВbiه1 ĆiAFQ6%*QIDS| e*\ (piAFQAFQ0<@ICӢQL]3"8%@h(8`H&Mb(}71Un5zN*au:|I'VsVWQ؏UoJK,)CF+iILxbS֔N‘;9p<"IpӳJ U0a!`.qJfW4au:,O&1#Hr cI077W]qpוW(&Q4=yQ|. iI EF]yQ|zE$vtpLV捦\ksY ѴԳG0HɌD@` aX_4y1$1dƌ*BayK.7EKF 4Fnoeb㞻(RVo /Yz,v(R ܘJ PIC&Lh¨$&*ooLt%m4W`OJh(=#&X.9I[Mg.\Un& $4772.VEyA>+i]t!p`ct\\jC]t!pFrb)9 'tI[Me$o`fxf"P 0`҅0,/Mf2Nvq:fc$g̠֊ I;d)NKx|pIٔZylIG"W0XrV \nz252˃zq7b=+qN oNپ2Nӌ;Ơ9r $qwfUofPakԜ\8F% Hbw]+qOJ='CfPakJxVIGl -t7IF2Nx`)LtPU%)[).I:I\6"iVeoeb{ٴc$,/8%WhI $c$pmU6"iVe%gEsܕ^ͣ'ga6]32̠ש90V)[K/JNʼ،_ ylXm;˗7Me3({2 Z*NL.oa8X`ic$4(4bD0-Ḷ(0NL/{2 Z*NL.(pq؈MD 8ɌDy!&4aTG70כ\a XZ7ezF^SVlYr[2뾄(Ri!V o{S2m3K,K"s7a@y!wL>YUpNDiPzai"< 0# aX.9bY'/g\+ F̯W;[B7ez{[.oUSQL]3"8%@h(8Pd&!/qu_(fV+t8x謘x7\8R'g $$H DEbeGHaayppmU p(8VqASL&As"8$J)@"$+IA޻qu1)IٔZ8V ո{|TWE7M=wU]pC)na!`< kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZo<w9ts7NiW|z{JkuV/su_(kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZc Ϛ[[@@aP|ܘJ P ^u̠ZqP^8/Vwh/Vv է^8/Vw4N8^u ZqQӎP^84N;eӎAz㲈/VvUӎ7W]u^8r է^8MӎɠZqIӎe{Az㵓AzEӎ4ų[7C J ˗/V! 7lF u ,XB+.\7._ ˆ/V g0]ӭ7l^n,!Eܕ./Az]se{8ų.qJfW@aC@|,/ Zv,%8ų.qJfW@dB@|,/ Zv,%ųUEkO!Qw%bˆa}Lh/V{uVIob]UhusLn,!Eܕ./&iصֺ$N‡X{uVI-x ,XB+.\7._ N=UTV$ы4YDWfэt!$XrV \n\7Az[8(1.$y1- tfHab]XrrުM,[=D'7鵸 2h/젽Zv-T+iضxooeg*>pXrV \n\7u/=yQ|&q7 Zv-Gx4o+=4a^;A1iaӱng`ib4m5,7 Zv-ݝib4Vziw Zv-x4oab벌/!Qw%bˆ˃zq7'Re*^iػ;pP ӱwh4772ų蒶+H7C J ˗VoN%m4W7wMЅ7Mӱii1^ էbwA#Koiشv BSFr|Ct^;H4< OAz ^ /S/S OYz/S^}^AzTP^=4DP^rުM7y5<X $p  q@ Z+*RV Az/SAz Az9xAy O]x O /S< ^<&<(< <zN, -`P$b"' Dq4J bP 8IM), DaA4"Ep֊ʪA9^x ^>^AzAzAz/SAz&>h/S< O*=젽O O O2%2 X( `yIsכ\a XZ7ezQ¡\\sUEkO qqsU4b qqZꬓE; aP.9͢*+]UxT+|$tfPak˗[BJ*1jyFx2qJfWլ*nzfo+]7USՉebS %tI@J770ɌD@` aުMNE1t@hWQ:(0fPakEIɅe{Az笚 =Az焐^ ^os7 Ѹ3+L`|;i3rc(0iBhh7ӢQL]3"8%@h(8P )&Hy! siU:s(p(} N6#LpqqCLR"/IGaA19-Pk\X;&^V1Un5zNHwF!Sc ϚA ܘJ P SL&As"8$J)@g DHpZ}e8V)L|kIU:u>.Z()ao2ű`n{uVIax7>XZ7ezQ˗ųbhʐn/=g7Q:(0 00M`&of6n{5J֝efO][Ї't70& 6CpmUeUռכtI>f2Nvq -h90Y;dURњJ}-)E7LdכtI=A'&;:k'loo!kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ֛!1b=]9xMӺU:/NIkո.ataE.|C kZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZִ3"DyBDy!0\*Ϛ[[C&Lh¨$&+Un& $4PE:.bTH{6 c'se Ҷr.f[*B2 XE<$*<@RPYIdP2S1I_RΎRbE#KtUS1)C(vVE6[ T8R";7夛%2 ^-S 8x"E#D2NQvtΊxMW}\J쨊oHDD&R"doOM o{*"79 ,y䆒@a@8h Mvisfu'ky龁,+&9y5"8%H@qsiA\;I.l|XO=7%wX/7ƹxo|kx,04Iᇔ1@⁢)5٥͛YO sWϥ͛"' Dq4J c,[\ٹ˃j^usiᖒϥ͛bŘ 7W]uzm<2VYsºLWc,[\Vo|kx,04Iᇔ1@⁢PFtW>2NY<\3s;Q^osi ko<םa՝a֝a&<bm./usr/es/lib/ksh93/hacmp/KLIB_HACMP_modify_file_systemm#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # @(#) 5d6dd76 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_file_system.sh, 726, 2147A_aha726, Sep 09 2021 10:49 AM # Start of POD-formatted documentation. Viewing suggestions: # perldoc # pod2text -c # pod2text -c --code # pod2html function devDoc { : <<'=cut' >/dev/null 2>&1 =head1 NAME KLIB_HACMP_modify_file_system =head1 SYNOPSIS clmgr modify file_system \ UNITS=### \ [ SIZE_PER_UNIT={megabytes|gigabytes|512bytes} ] \ [ NEW_FS_NAME= ] \ [ PERMISSIONS={rw|ro} ] \ [ EFS={yes|true} ] NOTE: the mininmum size for an enhanced file system is 16MB. NOTE: an alias for "file_system" is "fs". =head1 DESCRIPTION Attempts to add a new file system. =head1 ARGUMENTS 1. properties [REQUIRED] [hash ref] An associative array within which data about the created object can be returned to the caller. 2. file_system [REQUIRED] [string] The mount point for this file system. 3. units [OPTIONAL] [posint] The number of units of the specified unit size (which defaults to megabytes). Combined, these determine the size of the file system. 4. size_per_unit [OPTIONAL] [set] The size of each of the specified units defaulting to megabytes. Combined, these determine the size of the file system. Valid values: 512bytes, megabytes, gigabytes 5. new_fs_name [OPTIONAL] [string] Enter the new filesystem name 6. permissions [OPTIONAL] [set] Sets the permissions for the file system, defaulting to "rw" (read/write). Valid values: rw (read/write), ro (read only) 7. enable_efs [OPTIONAL] [boolean] Enter "yes" to enable encryption for this file system (EFS). Valid values: yes, true, enable and 1. NOTE: this option is only valid with enhanced file systems. =head1 RETURN 0: no errors were detected; the operation appears to have been successful 1: a general error has occurred 2: a specified resource does not exist, or could not be found 3: some required input was missing 4: some detected input was incorrect in some way 5: a required dependency does not exist 6: a specified search failed to match any data =cut } # End of POD-formatted documentation. function KLIB_HACMP_modify_file_system { . $HALIBROOT/log_entry "$0()" "$CL" : version=@(#) 5d6dd76 43haes/lib/ksh93/hacmp/KLIB_HACMP_modify_file_system.sh, 726, 2147A_aha726, Sep 09 2021 10:49 AM : INPUTS: $* typeset -n properties=$1 typeset file_system=${2//\"/} typeset units=${3//\"/} typeset size_per_unit=${4//\"/} typeset new_file_system=${5//\"/} typeset -l permissions=${6//\"/} typeset -l enable_efs=${7//\"/} [[ $CLMGR_LOGGING == 'med' ]] && set +x # Only trace param values #=================================== : Declare and initialize variables #=================================== typeset -i rc=$RC_UNKNOWN typeset INPUT="" ATTR="" VALUE="" typeset volume_group="" vg_disk="" rg_name="" typeset primarynodes="" secondarynodes="" nodes="" if [[ -z $file_system ]];then dspmsg -s $CLMGR_SET $CLMGR_MSGS 100 "\nERROR: a name/label must be provided.\n\n" 1>&2 rc=$RC_MISSING_INPUT log_return_msg "$rc" "$0()" "$LINENO" return $? else print "$0()[$LINENO]($SECONDS): lsfs -c "$file_system" | tail -1 | cut -d: -f2 | cut -c6- 2>/dev/null" >>$CLMGR_TMPLOG lv_name=$(lsfs -c "$file_system" | tail -1 | cut -d: -f2 | cut -c6- 2>/dev/null) typeset lv_name_rc=$? print "$0()[$LINENO]($SECONDS): lsfs command to get filesystem $lv_name RC: $lv_name_rc" >>$CLMGR_TMPLOG if [[ -n $lv_name ]];then print "$0()[$LINENO]($SECONDS): clodmget -q "name=$lv_name" -f parent -n CuDv" >>$CLMGR_TMPLOG volume_group=$(clodmget -q "name=$lv_name" -f parent -n CuDv) typeset volume_group_rc=$? print "$0()[$LINENO]($SECONDS): clodmget command to get volume group name RC: $volume_group_rc" >>$CLMGR_TMPLOG volume_group=${volume_group##*VOLUME GROUP:+([[:space:]])} volume_group=${volume_group%%+([[:space:]])*} fi fi if [[ -n $volume_group ]];then print "$0()[$LINENO]($SECONDS): clodmget -q "name=GMVG_REP_RESOURCE and value=$volume_group" -f group HACMPresource" >>$CLMGR_TMPLOG gmvg_type=$(clodmget -q "name=GMVG_REP_RESOURCE and value=$volume_group" -f group HACMPresource 2>/dev/null) typeset gmvg_type_rc=$? print "$0()[$LINENO]($SECONDS): odmget command to get volume group $volume_group type $gmvg_type RC: $gmvg_type_rc" >>$CLMGR_TMPLOG if [[ -n $gmvg_type ]];then typeset -A rgAttrs print "$0()[$LINENO]($SECONDS): clodmget -q "name = VOLUME_GROUP and value = $volume_group" -f group -n HACMPresource" >>$CLMGR_TMPLOG rg_name=$(clodmget -q "name = VOLUME_GROUP and value = $volume_group" -f group -n HACMPresource) typeset rg_name_rc=$? print "$0()[$LINENO]($SECONDS): odmget command to get Resource group name $rg_name associated to volume group $volume_group RC: $rg_name_rc" >>$CLMGR_TMPLOG if [[ -n $rg_name ]];then CL=$LINENO KLIB_HACMP_get_resourcegroup_state "$rg_name" rgAttrs primarynodes=${rgAttrs[PRIMARYNODES]} secondarynodes=${rgAttrs[SECONDARYNODES]} nodes="$primarynodes $secondarynodes" fi # For GLVM volume groups, we should not allow changing filesystem when cluster services are running. for node in $nodes do clstate=$(LC_ALL=C cl_rsh $node lssrc -ls clstrmgrES | grep "Current state:" | cut -f2 -d":") if [[ ${clstate//[[:blank:]]/} == "ST_STABLE" ]] ; then print "$0()[$LINENO]($SECONDS): ERROR: Failed to modify filesystem,cluster state stable in one of the node $node" >>$CLMGR_TMPLOG CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1470 "\nERROR: Failed to modify filesystem \"%1\$s\". Cluster services are still active on at least one node in the cluster: %2\$s.\n\n" "$file_system" "$node" 1>&2 log_return_msg "$RC_MISSING_DEPENDENCY" "$0()" "$LINENO" return $RC_MISSING_DEPENDENCY fi done fi else print "$0()[$LINENO]($SECONDS): filesystem $file_system is not configured or its not associated to any volume group" >>$CLMGR_TMPLOG CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1471 "\nERROR: Filesystem \"%1\$s\" is either not configured or not associated with any volume group.\n\n" "$file_system" 1>&2 rc=$RC_INCORRECT_INPUT fi #============================== : Validate the integer inputs #============================== for INPUT in UNITS@$units do print -- "$INPUT" | IFS=@ read ATTR VALUE if [[ $VALUE != *([[:space:]]) ]]; then CL=$LINENO verify_is_numeric "$VALUE" 2 "$ATTR" (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi done #========================== : Validate the set inputs #========================== if [[ -n $permissions ]]; then typeset -l permissions_lc=$permissions CL=$LINENO verify_in_set permissions_lc "$permissions" "rw ro" permissions_lc (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi if [[ -n $enable_efs ]]; then typeset -l EFS=$enable_efs CL=$LINENO verify_in_set EFS "$enable_efs" "yes true enable 1" EFS if (( $? == RC_SUCCESS )); then [[ $enable_efs == @(y|e|t|1)* ]] && enable_efs="yes" else rc=$RC_INCORRECT_INPUT fi fi if [[ -n $size_per_unit ]]; then typeset -l spu_lc=$size_per_unit if [[ -n $size_per_unit ]];then CL=$LINENO verify_in_set size_per_unit "$spu_lc" "megabytes gigabytes 512bytes" spu_lc (( $? != RC_SUCCESS )) && rc=$RC_INCORRECT_INPUT fi fi #====================================================================== : If no errors have been detected in the input, perform the operation #====================================================================== if (( rc == RC_UNKNOWN )); then typeset gOpt="" vOpt=" -v jfs" mOpt="" unitsOpt="" FOpt="" pOpt="" typeset bsOpt="" optOpt="" ilOpt="" lvOpt="" lsOpt="" eafOpt="" typeset quotaOpt="" efsOpt="" tOpt="" fragOpt="" nbpiOpt="" agOpt="" typeset dOpt="" [[ $new_file_system != *([[:space:]]) ]] && mOpt=" -m $new_file_system" [[ $units != *([[:space:]]) ]] && unitsOpt=" -a size=$units" [[ $permissions != *([[:space:]]) ]] && pOpt=" -p $permissions" [[ $enable_efs != *([[:space:]]) ]] && efsOpt=" -a efs=$enable_efs" if [[ $size_per_unit != *([[:space:]]) ]]; then typeset uos_lc=$size_per_unit [[ $uos_lc == "megabytes" ]] && FOpt=" -FM" [[ $uos_lc == "gigabytes" ]] && FOpt=" -FG" [[ $uos_lc == "512bytes" ]] && FOpt=" -FH" fi # Bring rpvserver and rpvclients to available state in all the nodes if file system is associated with GLVM volume group. # This is used to avoid errors during varyon the volume group. if [[ -n $gmvg_type ]];then change_rpv_state "$primarynodes" "$secondarynodes" "$volume_group" "mkdev" change_rpv_state "$secondarynodes" "$primarynodes" "$volume_group" "mkdev" fi nodes=$(echo $nodes | tr ' ' ',') case $file_system in /*) ;; *) file_system=/$file_system ;; esac print "$0()[$LINENO]($SECONDS): cl_chfs -cspoc \"-n'$nodes'\"$gOpt$dOpt$mOpt$pOpt$bsOpt$optOpt$ilOpt$lvOpt$lsOpt$eafOpt$quotaOpt$efsOpt$tOpt$fragOpt$nbpiOpt$agOpt$mandatoryOpts$unitsOpt$FOpt $file_system" >>$CLMGR_TMPLOG cl_chfs -cspoc -n"$nodes" $gOpt$dOpt$mOpt$pOpt$bsOpt$optOpt$ilOpt$lvOpt$lsOpt$eafOpt$quotaOpt$efsOpt$tOpt$fragOpt$nbpiOpt$agOpt$mandatoryOpts$unitsOpt$FOpt $file_system rc=$? print "$0()[$LINENO]($SECONDS): cl_chfs RC: $rc" >>$CLMGR_TMPLOG # Always log command result if (( $rc != RC_SUCCESS )); then dspmsg -s $CLMGR_SET $CLMGR_MSGS 400 "\nERROR: failed to modify \"%1\$s\".\n\n" "$file_system" 1>&2 rc=$RC_ERROR #=========================================================== : If output from this operation was requested, retrieve it #=========================================================== elif (( CLMGR_VERBOSE )) || [[ -n $CLMGR_ATTRS ]]; then CL=$LINENO KLIB_HACMP_get_file_system_attributes "$file_system" properties fi # Bring rpvserver and rpvclients to defined state in all the nodes if file system is associated with GLVM volume group. if [[ -n $gmvg_type ]];then change_rpv_state "$primarynodes" "$secondarynodes" "$volume_group" "rmdev" change_rpv_state "$secondarynodes" "$primarynodes" "$volume_group" "rmdev" fi if (( $rc == RC_SUCCESS )); then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 1474 "\nFilesystem \"%1\$s\" modified successfully.\n\n" "$file_system" 1>&2 fi fi #======================================================================= : If a user input error was detected, provide some helpful suggestions #======================================================================= if (( $rc == RC_MISSING_INPUT || $rc == RC_INCORRECT_INPUT )) && \ [[ $CLMGR_GUI == *([[:space:]]) ]] then CL=$LINENO cl_dspmsg -s $CLMGR_SET $CLMGR_MSGS 104 "For more information about available options and syntax, try\n\"$HAUTILS/clmgr %1\$s\". As an\nalternative, if the PowerHA SystemMirror man pages have been installed, invoke\n\"$HAUTILS/clmgr -hv\" (or \"/usr/bin/man clmgr\"),\nsearching for \"%2\$s\" in the displayed text.\n\n" \ "modify file_system -h" "FILE SYSTEM:" "$CLMGR_PROGNAME" 1>&2 fi log_return_msg "$rc" "$0()" "$LINENO" return $? } # End of "KLIB_HACMP_modify_file_system()" #============================================================================ # # Name: change_rpv_state # # Description: This function change the rpvserver/client to available to defined state and vice-versa # # Inputs: siteA_nodes - nodes where to change the rpvservers state # siteB_nodes - nodes where to change the rpvclients state # vg_name - volume group # cmd - mkdev/rmdev # # Outputs: None. # # Returns: None # #============================================================================ function change_rpv_state { typeset siteA_nodes=$1 typeset siteB_nodes=$2 typeset vg_name=$3 typeset cmd=$4 typeset node="" for node in $siteA_nodes do print "$0()[$LINENO]($SECONDS): cl_rsh $node lspv | grep -w $vg_name | awk '{print $1}'" >>$CLMGR_TMPLOG typeset vg_disk=$(cl_rsh $node lspv | grep -w $vg_name | awk '{print $1}') print "$0()[$LINENO]($SECONDS): cl_rsh $node lspv command with VG disk list : $vg_disk" >>$CLMGR_TMPLOG for disk in $vg_disk do print "$0()[$LINENO]($SECONDS): lsrpvserver | grep -w $disk | awk '{print $1}'" >>$CLMGR_TMPLOG server=$(cl_rsh $node lsrpvserver | grep -w $disk | awk '{print $1,$2}') print "$0()[$LINENO]($SECONDS): lsrpvserver command with server list : $server">>$CLMGR_TMPLOG if [[ -n $server ]];then typeset ser=$(echo $server | cut -d' ' -f1) typeset pvid=$(echo $server | cut -d' ' -f2) if [[ -n $ser ]];then print "$0()[$LINENO]($SECONDS): cl_rsh $node $cmd -l $ser" >>$CLMGR_TMPLOG typeset ch_ser=$(cl_rsh $node $cmd -l $ser) typeset ch_ser_rc=$? print "$0()[$LINENO]($SECONDS): $cmd RC : $ch_ser_rc">>$CLMGR_TMPLOG fi if [[ -n $pvid ]];then for noden in $siteB_nodes do print "$0()[$LINENO]($SECONDS): cl_rsh $noden lsrpvclient | grep -w $pvid | awk '{print $1}''" >>$CLMGR_TMPLOG client=$(cl_rsh $noden lsrpvclient | grep -w $pvid | awk '{print $1}') print "$0()[$LINENO]($SECONDS): lsrpvclient command with client list : $client">>$CLMGR_TMPLOG if [[ -n $client ]];then print "$0()[$LINENO]($SECONDS): cl_rsh $noden $cmd -l $client" >>$CLMGR_TMPLOG ch_clt=$(cl_rsh $noden $cmd -l $client) typeset ch_clt_rc=$? print "$0()[$LINENO]($SECONDS): $cmd RC : $ch_clt_rc">>$CLMGR_TMPLOG fi done fi fi done done } # End of "change_rpv_state()" _ kNoA םa םa֝a&bm./usr/es/lib/ksh93/OEMVeritasHAAA k!o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_deportDiskGroup$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_deportDiskGroup.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)07 1.4 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_deportDiskGroup.sh, hacmp.utils, 61haes_r714 11/28/11 15:06:02 function KLIB_OEMVeritas_deportDiskGroup { . /usr/es/lib/ksh93/func_include typeset dg=$1 if [[ -z $dg ]]; then return 1 fi REQUIRED_COMMANDS="/usr/sbin/vxvol /usr/sbin/vxdg" for cmd in $REQUIRED_COMMANDS; do if [[ ! -x $cmd ]]; then return 1 fi done /usr/sbin/vxvol -g $dg stopall /usr/sbin/vxdg deport $dg } han kr"o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDisksForDiskGroup.txt$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDisksForDiskGroup.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)10 1.7 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDisksForDiskGroup.sh, hacmp.utils, 61haes_r714 11/28/11 15:00:51 function KLIB_OEMVeritas_getDisksForDiskGroup { . /usr/es/lib/ksh93/func_include typeset dg=$1 if [[ ! -x /usr/sbin/vxdisk ]]; then return 1 fi LC_ALL=C /usr/sbin/vxdisk list | while read device type disk group status; do if [[ "$group" == "$dg" ]]; then echo $disk fi done } usr/sb k#o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_importDiskGroupro$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_importDiskGroup.sh 1.4 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)13 1.4 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_importDiskGroup.sh, hacmp.utils, 61haes_r714 11/28/11 14:57:52 function KLIB_OEMVeritas_importDiskGroup { . /usr/es/lib/ksh93/func_include typeset dg=$1 if [[ -z $dg ]]; then return 1 fi REQUIRED_COMMANDS="/usr/sbin/vxdg /usr/sbin/vxvol" for cmd in $REQUIRED_COMMANDS; do if [[ ! -x $cmd ]]; then return 1 fi done /usr/sbin/vxdg import $dg /usr/sbin/vxvol -g $dg startall } v_s kl$o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDiskGroupForFilesystem$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDiskGroupForFilesystem.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)08 1.5 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDiskGroupForFilesystem.sh, hacmp.utils, 61haes_r714 11/28/11 15:03:23 function KLIB_OEMVeritas_getDiskGroupForFilesystem { . /usr/es/lib/ksh93/func_include typeset filesystem=$1 typeset dgs=$(KLIB_OEMVeritas_lsdg) typeset dg typeset fs for dg in $dgs; do # If DG is active, read off of disk filesystems=$(KLIB_OEMVeritas_getFilesystemsForDiskGroup $dg) for fs in $filesystems; do if [[ "$fs" == "$filesystem" ]]; then echo $dg return 0 fi done done # If DG is inactive, try /etc/filesystems dg=$(LANG="C" lsfs -v vxfs | grep -w $filesystem | awk -F"/" '{ print $5 }') if [[ -n $dg ]]; then echo $dg return 0 fi # If dg not found, failure return 1 } v kJ%o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getFilesystemsForDiskGroup$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getFilesystemsForDiskGroup.sh 1.8 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)11 1.8 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getFilesystemsForDiskGroup.sh, hacmp.utils, 61haes_r714 11/28/11 14:59:42 function KLIB_OEMVeritas_getFilesystemsForDiskGroup { . /usr/es/lib/ksh93/func_include typeset dg=$1 if [[ -z $dg ]]; then return 1 fi typeset l_mountpoint typeset l_device typeset l_vfs typeset l_nodename typeset l_type typeset l_size typeset l_options typeset l_automount typeset l_acct typeset l_type typeset l_minor typeset l_bdev typeset l_cdev typeset l_path typeset device typeset device_paths REQUIRED_COMMANDS="/usr/sbin/vxprint /usr/sbin/lsfs" for cmd in $REQUIRED_COMMANDS; do if [[ ! -x $cmd ]]; then return 1 fi done # Get a list of device paths for this diskgroup LC_ALL=C /usr/sbin/vxprint -l -g $dg | while read l_type l_minor l_bdev l_cdev l_path ; do if [[ "$l_type" == "device:" && -n $l_path ]]; then l_path=${l_path/path\=/} device_paths="$l_path $device_paths" fi done if [[ -z $device_paths ]]; then return 0 fi LC_ALL=C /usr/sbin/lsfs -c -v vxfs | while IFS=':' read l_mountpoint l_device l_vfs l_nodename l_type l_size l_options l_automount l_acct; do for device in $device_paths; do if [[ "$device" == "$l_device" ]]; then echo $l_mountpoint fi done done return 0 }  k&o$Xםa՝a֝a&Xbm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_lsdglesys$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_lsdg.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)14 1.7 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_lsdg.sh, hacmp.utils, 61haes_r714 11/28/11 14:56:49 function KLIB_OEMVeritas_lsdg { . /usr/es/lib/ksh93/func_include if [[ ! -x /usr/sbin/vxdg ]]; then return 1 fi LC_ALL=C /usr/sbin/vxdg list | while read name state id; do if [[ "$name" != "NAME" ]]; then echo $name fi done return 0 }  k긡'o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDiskGroupState$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDiskGroupState.sh 1.6 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)09 1.6 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getDiskGroupState.sh, hacmp.utils, 61haes_r714 11/28/11 15:02:08 function KLIB_OEMVeritas_getDiskGroupState { . /usr/es/lib/ksh93/func_include typeset dg=$1 if [[ ! -f /usr/sbin/vxdg || ! -x /usr/sbin/vxdg ]]; then return 1 fi LC_ALL=C /usr/sbin/vxdg list | while read name state id; do if [[ "$name" != "NAME" && "$name" == "$dg" ]]; then echo $name fi done return 0 } type k8(o$םa՝a֝a&bm./usr/es/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getVolumesForDiskGroupoup$$#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getVolumesForDiskGroup.sh 1.7 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2005,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)12 1.7 src/43haes/lib/ksh93/OEMVeritas/KLIB_OEMVeritas_getVolumesForDiskGroup.sh, hacmp.utils, 61haes_r714 11/28/11 14:58:48 function KLIB_OEMVeritas_getVolumesForDiskGroup { . /usr/es/lib/ksh93/func_include typeset dg=$1 if [[ -z $dg ]]; then return 1 fi if [[ ! -x /usr/sbin/vxprint ]]; then return 1 fi LC_ALL=C /usr/sbin/vxprint -h -g $dg | while read type name assoc kstate length ploffs; do if [[ "$type" == "v" ]]; then echo $name fi done return 0 } l_b kQ(oA םa םa֝a&bm./usr/es/sbin/cluster/reportsKLAA k(oA םa םa֝a&bm./usr/es/sbin/cluster/reports/templatesAA ls%o$,םaX՝a֝a&bm./usr/es/sbin/cluster/reports/templates/cl_report_template.htmG$$   a"12<=>DTcdelrst%-./03456789R_ino,LbghmpwABCEHIOSVfuvx!:;MNPky#FGUYZz{}&()*Kq j+W@|X[]@L P`sa$aB(((((((((((((((((()'  TʃB AQe ]v1xE!la6{kdCE I…I9P$Ȁp Hy,,.xӉ4aG8QO8^a%Cj.Iu I…I9P-Bp(T @Re_ ((((((((((((((((((P (T &Ia890"# .`bZmvF2[hck0hbeq,Y{kl<*H!SHY$y\24P 61Br`:i;(I9V`)CK@cY20Le@rCdw lPA@xrl ((((((((((((((((((((]C"%ssfL`)d$! ,!@LL,)S,d3<0! C"Yp&4h0ئyD`C dbW. 4h\hs`<6̙`1N @! @k aYb@yske2`2ap!2aM+;[fLE`#NsiMlɖȠj P0̆a4appޱsÙ\ $d`8Hu hh$U& YlL= "hsm,!4hƂAKr& l9r͢ḯ"2Dѱ'5'l:. Ck"hpaG4Qㅔ H,Ǒ&xe&<,㇋&qI:paGq$HGqd(pQㅔ H ,y2# xe&<q&Dq,Dǐxc"D(ӏ,g@(г ,"E p 8y "Ly"NPYB y1d $t, HBG@y"B8e8QHp$DC81D 8q1cJHŜHg&,iC 8 II@p4y! 8i1cH4PP, Jqœ"@2C<4@(qcGqN8D8(qcGq ,"E DYBȎ! 8&qP2#A'xd,|,Ʌ4YDž4YDž: IyxdŽ ,E 8IE 8xg,!GFyȅxdŠ@AyYDy{kqEԐ Òw 0ЀFcBBD.a0%'PfDL0eA2b(RNU&Y͛ep&U #%1jNAmVHH4S+ea0 4Ͷ """,Dp,qRw á0 @ 6&' 8p# L,GDy! P(,Dg 8p# L,QÅHidg q4G<$ƒ$H,i$H#8p (P(Ő$D"D@G,iB 8pD 4<ď>pdǔ xdɍ<LyBGxǐN,(,2>pd@iGPǐ8YLXǜy$(<@ &Dy!N,i"DL(B"HNqcHBGH":qd(LNj 8Ǒ@Qą@ǔHX$qc$<0 &p%8G$@(&y$&HDž4Yȍ&qAdI 4i@ 4qgPY,i2N(,pC8("DĎPY pQㅞyGBq1e$@( 4 $DC8Y4 Ő$Lhѥ,N&,x$,A'qÇpQㅞPq ąLp,'$@tBȒ8Qㅞ4'N$,xH xg8S iM 2Ylԝ& a4Be2a6jNA@8 ,U&ViG0L&2Km2`ԝ(w iU{+2"jNNiMU쬡v\ڦXhA`˴XLdf&TABX{M"jebDMI2B0,VHȦ \щ;i;I2{+mpm%' FV\V\%#qBw iU{+2"jNNiMU ].Aޱs2B0iMyClD2<=q)LYrII PNABX{M"jebDMIa4ke5'$,ol"f&iU{+z˲jN@I+.YY@bADD^޲욓`˖a Y@b(U'Z=5WS"&ADD^ɽ`˖ihJN(NNiMU쬛y;& f Q4(VHY7RwLYr =CĤ@b(U'Z=5WS"&ADD^޲욓`˖Txx,cRw1DwuX{M"je`ZYvMI 0eei0%'M'1B; a45' 'U&VMԝV\Cp Q4(VHY7RwLYrZlJN(N@bRw iU{+2"jNNiMU ].ɩ;& fCZ,cRw1Dw*PVHXRwuX{M"jedͪea;& fCZ&TjD^LiU{+z˲jN@I+.XA0%'M'1B; a45' 'U&VMڦXhA`˖.hJN(N@bRs %y,0dD١̛iq̳05l1x{˘m.$]I;Paj`P*PT8P.1l9x8$ "Y ] I…T^p<"r`"Ìh* Eaڪd<=s 23 PVHXRwuLЃ"9'H6iMh$) ٰˆ66"]fÑ8h);{aX{M"kA K YvMLG O4i;Rw1Dw*`˖UY{k\RwLYrʽtRN& & aBQB@j`qI9@+* @1PH*J@0 I& a4Bb\@-=40LL6I(D^(6ɖDWis L:NABX{M"jebDMIa4. T <'f&TABX{M"jebDMI2B0;YZ=49L0w1Dw* d4ebͮ \MĤaBd"ʫ+&B"<XI; a45' 'U&Vdu`rXRwz=52ɳ]Pic\JFCKxzR@`'M'1B; a45' 'i54$-U {L̈UX{M"jefxc d h+s& edS%C` L)0 ԝ(ViMUTȉ;iU{+z˲:D09w\iLЃ"zN`0%'1Dw1B;PVHXRw 'U&Vdԝ 0ee,cRwM'uX{M"je`ZYvMI{a0I ABX{M"jebDMI(VHY7Rw% BRwM'uX{M"jedICK4%'1Dw1B9jD^LQ:=5W-w&@Id ,`˴Y(NADD^޲욓'Y4ME `JN@b@bRwZ=5WS"&NiMU쬛y;ic,XhJN@bNiMU쬛y;ic,YE);&I+U&V*dDԝa4ke5'B]0%'1Dw1B;PVHXRw 'U&VMԝ 6\=vD(N(U';PVHXRw 'T <'@ViMdS.hĝI  iU{+2"jNADD^޲쎴 ]0mS,4 D ]RYI ABX{M"jebDMI(VHX]R@KM" YI(VHX]R@I+.XAY.X@ `JH Q4 PN+U&V*dDԝa4{o5$Ya) 1Dw 'U&VMԐicV\%̲]4JH Q4 PN+U&V*dDԝa4ke5$BKX@ `JH Q4a4ke5$]2 `JH Q4 PN+U&V*dDԝa4{o5$X 2]) 1Dw 'U&VMԐv, I&IjD^LQ:=5W-w&`1ꁅ YI(VHX]R@H@1YI ABX{M"jebDMI(VHY7R@K!aǪ I&Q:=5Wom椀cedJH Q4 PN@bp@X)'M'{]˪={fDRw `=5WJ<1Ͳe4A\olABX{M"jebDMI(VHX]ւ!˽bMeaw$=E `JN@b@bRwPVHXRw 'U&Vdԝ hE `JN@bNiMU ].ɩ;h I Q4 PN+U&V*dDԝa4{o5'Z. ДI(VHY7Rw%.ДI wZ=5WS"&NiMU ].ɩ;0I(VHX]Rw%p`EC0I ABX{M"jebDMI(VHY7Rw% I Q4a4{o5'W 4X$8JN@b@bRwPVHXRw 'U&Vdԝ Y(NADD^޲욓+ ,Y(N(U' iU{+2"jNADD^ɽ! ք(NADD^ɽ+ ,%'1Dw1B;(ViMUTȉ;iU{+z˲jN]0%'1Dw 'U&Vdԝ i0f2W,cRwM'* a45'uX{M"jedIK%'1Dw 'U&VMԝ i0f2Wi;T+U&V*dDԝa4ke5'YX@cE `JN@bNiMU ].ɩ;hy,cRwM'* a45'uX{M"jedIV.ДI(VHY7Rw$ `! %'1Dw1B;(ViMUTȉ;iU{+z˲jN fi;iU{+z˲jN4X툙d ,cRwM'* a45'uX{M"jedIDi;iU{+&jN4X툙d i;TRN(N@bRs %y,0dD١̛iq̳05l1x{˘m.$]I;PaʀRP*PT8P.1l9x8$ "Y ]Bw0U\ܹX-/` 0jqv\p @ /$+U&V*dDԝ(S,4 h$U& YlrCDӈ.aȜ4h==5h&D&pУç4ĝƂA;i;I d4ebͮ \ie^ I:N@bp@X)'ww0X(! A@h* @)Ph$;P( A * X:( IH0 I& a4Bb\@-=40LL6I& a4. Y , `1) 10`=' +U&2)4bNw X{M"k&DMI (T @iP8]0P @`()' X{M"jXheA 8XxeA6y;Ua4˽bMI,ipW0wYe,cR@`,N@b`zNw ;P Ua4Q.yL&2Km2`ԝj`' iU{+2"jNADD^޲jNXAa0%'1Dw 'U&VdRw%ʇafW0Y(N(U'Y , W0eCfLmpm%' iU{+2"jNADD^ɽ5'Y , W0ؔI(VHY7Ƥ@K!.̮`JN@b@bRw%es T8 dȉfaYs ICK=6YP,Ye0.BRwS; I LI 0UVHYd h+s& I(wZ=5WS"&NiMU ].@K!mYdFB,fi;iU{+z˲y;if{-xA, ]0%'1Dw1B;if{-xA,ɑͮ \MĤABX{M"jebDMI(VHY7Ƥ@K!mYdFB,I(VHY7Ƥ@K!mYdod5vĤ(N(U'Y ,oe6%2"Y{k\Rw%6[,kYe0.BRwS; I LI 0UVHYd h+s& I(wZ=5WS"&NiMU ].@K!lȁg] `JN@bNiMU ].@K!lȁg]ͽ,cRwM'*,i"mvK2dDk0,oe);PVHXRw 'U&VMq;if2 YdFB,I(VHY7Ƥ@K!lȁg]ͽi;T d4M,kY"%\0dh,jNA0`>iMU ].椀CK42 `JH LI d4O\+.Y"%\qWx)&EecRw X{M"je`ZYvO5$YYYCK44]2dDk0,oe);=5Wom皒Y ,,vwY ,,v,ɑͮ \iffe\˘T I LI (TaiҠ @`,&  P8ءIsPU2eU!ɕWi`\« I`}VH0(`PzŽ>4(`PMGjN@U'0Y =49w\i % Uv.`4 I ;;(D^(6ɖDWis LP L@K!2ffLmpm%' iU{+2"jNADD^޲xLPu@h욓,Y ,cRwM'uX{M"je`ZYvO&(D͇ 4AvMICZ,@Y,cRwM'* a45'uX{M"jedχ&(D͇ 4AvMICZ,@XAI Q4a4{o>6(5'Y hfdJN@b@bRs a45$M$F$II+U&V*dDԝa4ke>6(5'Y h+XA`1);&Q:=5W-w'"]fÅ &@K!ev 4% `JN@b@bRwZ=5WS"&NiMU쬛yYD.ɩ;kE]dJN@bNiMU쬛yYD.ɩ;kE].ȔI @K!2ffLmp0 d4&U] ,aUĤ(w1@8 ,0; -2]!U^Y2lUv.`6\a*P@*T(X4 J( (:(RNDL)GTqL)GTm 8Rw;Ua4˽bMI, `c,cR@`,N@b`zNA0`=' `=5WJ<1Ͳe4A\olS;PVHXRw 'U&VdRw%.l0Y`1);&Q:=5W-w',XM2u@0%'1Dw1B;PVHXRw 'U&VMRw%.l0YI Q4a4{o<ԝ d4l I Q4 PN@bj`'I;;0P(! @,Ap8(0;;PaiҠp44``,&  P8P @JLiC 2[5' X{M"haeLms P Ua4Q.m,. {e̘5' tjD^LiU{+(]6yH$],`1);i;I(ViMUTȉ;Q:XhA iCs 1'M'1B; a45' 'U&VdRwL<=r0%'M' 'U&VdRw[D,cRw1DwuX{M"je`ZYvO5'$퇽0 IIa4ke<ԝVepf&iU{+z˲y;!" .v0%'M'1B9(ViMUTȉ;Q:XhA iCs 1'M'1B; "e0ebͮ \MĤaB)vL 0Ĥn(RNABX{M"jebDMIa4{o<ԝiMyClDxzR5$xzR@`'M' 'U&VMRw[D&iU{+&y;&l=Rw1DwuX{M"jed5'%\ %'M' 'U&VMRwBE.]큢Rw1Dw* (U@+̄-/a"%dK=eYfa\o.au"$aB/J`p(  *X Ixc ˘A`A`XeE,Yo$aB..r0e0AQ-[.S!n@AqBw iU{+2"jNNyH$ejDE0\II PN@I2YWfaYs I 0b&Y *VhJN(wI;00 FMJ8P EAH* ءI;=40LS+eRw0U& TɆ0٩;UVHY2 .a\ɃRw I(ViMUTȉ;Q:=5WasjaDN@KK.勈4Y@b(U'Z=5WS"&ADaDN@ViMdS.hĝ Q4 +U&V*dDԝ(VHX]I 00 Q4(VHX]I 0m `1);i;Q:=5W-w'`D,cRw1DwuX{M"je`ZYvO5'$,cRw1DwuX{M"je`ZYvO5'$d W,cRw1DwuX{M"je`ZYvO5'%,4Y@bADD^޲jN@I{@af&T+U&V*dDԝ(S,4 Ia4̊`&T@KK.勈UY{kiؔ (V]uWo ]5& I(ViMUTȉ;Q:=5Wom皓a40qMxz蚀\JF\JH @bADD^ɽjN@Il \JN(NNiMU쬛yX{M"kÙ\ &L<=q)LxzR@`'M' 'U&VMRwz=5a̮DV\JFV\JH @bADD^ɽjN@Is A%'M' 'U&VMRw^̮BRw1DwuX{M"jed5'$퇽0JN(N@bRs %y,0dD١̛iq̳05l1x{˘m.$]P (UQPx0 , @X@iR`BOd^\Ű  $ ,.fW2xI;P@ %xxE*Eei{.TAVËTxz0eP2d\PjD^LeaI;YZ=49L0w1Dw*섋b{+mp0d$]U,Y); I P $@b`zN@b`zN@+Zd!4 *AP`n(RNs R Bw X{M"haW2fA0`>iM 2, aRw `=5WJ<1Ͳe4A\olA@@50PVHXRwuX{M"jee 2B0D]]0%'M'1B; a45' 'T <%wX{M"hs".asF$@b(U'Z=5WS"&ADD^޲jN@IY@bADD^޲jN@Il \ IIa4ke<ԝ2 ,cRw1DwuX{M"je`ZYvO5'$Y@bADD^޲jN@I+.Y@bADD^޲jN@Is AY@bADD^޲jN@KYh IIa4ke<ԝ 0%'M' 'U&VdRwZmZ,`ʦX2` II PNw iU{+2"jNNyJ$ejDE0\II PN$d W,Xk0,oe);PdchMa0kz 0Ĥn(RNABX{M"jebDMIa4{o<ԝiMyClDxzR5$xzR@`'M' 'U&VMRwL.`hRw1DwuX{M"jed5'%4Aq);i;Q:=5Wom皓a40ep&40ĤjH 0"aIt Q4(VHY7ID  2A@LYq)LYq) 0&iU{+&y;%6! Q4(VHY7I z2M IIa4{o<ԝ );i;Q:=5Wom皓omq);i;I@*rB× f2m2ճ0.a0БwBw0V×E@  ,`ruK  = ays×,, @,H%\@-Bw0PvP9{EJM˘U2 ]j7 `ʠdɀ I; a45' 'T <%wX{M"hs".asF$@b(U'$d W,Xk0,0{+4%'S;` LI LI…` L&E@  aBx4, * X;)'0U& eq,jND!2ʙ05' iU{+4\&X]D]6˙0jNS; a45' 'U&VPl.mS,4 I XLdf&TjD^Lea;YZ=49L0w1Dw*PVHXRwuX{M"je`ZYvO5'$,cRw1DwuX{M"je`ZYvO5'%4Ar0%'M' 'U&VdRwLYv0 Q4(VHX]I  4Y@bADD^޲jN@K&0 Q4(VHX]I d4 IIa4ke<ԝe0%'M' 'U&VdRwC a0%'M' 'U&VdRwC `M]V.E `JN(N@bRsPVHXRwuLЃ"Q' +U&2)4bN(N@bRw! ʽ6xmr6[ X 0Ĥn(RNABX{M"jebDMIa4{o<ԝiMyClDxzR5$xzR@`'M' 'U&VMRw[D&iU{+&y;& BRw1DwuX{M"jed5'$@$Д Q4(VHY7I `$Д Q4(VHY7ID  2A@Y  %) 0&iU{+&y;! "Rw1DwuX{M"jed5'$<@ɖ&iU{+&y;!LY.fi);i;I@*rB× f2m2ճ0.a0Бw I…[^,T4`p0']/.br`pH \D+e@ I…T^p<"r`"Ìh* Eaڪd<=s 22`/$+U&V*dDԝ(S,4 Ia4̊`&Tie^ś\iM 2, aRw `=5WJ<1Ͳe4A\olA@@50PVHXRwuX{M"jee 2B0RwX 4Y@b(U'Z=5WS"&ADaD;YZ=49L0w1Dw*jD^LiU{+z˲y;&f&iU{+z˲y;- `1);i;Q:=5W-w' ,cRw1DwuX{M"je`ZYvO5'%0%'M' 'U&VdRwLYv0 Q4(VHX]I 20a%6Y@bADD^޲jN@Hm0%'M' 'U&VdRwDe.W,cRw1DwuX{M"je`ZYvO5'%E `J]Ia4ke<ԝe2 ]v0 Q4 Z=5WS"&ADaD;YZ=49L0w1Dw* `$YWfaYbRw0XY꽈<y 0Ĥn(RNABX{M"jebDMIa4{o<ԝiMyClDxzR5$xzR@`'M' 'U&VMRw[D&iU{+&y;=VHsaW"h@HH4JFhIIa4{o<ԝiM`0s+4%)Y ;i;Q:=5Wom皓`˴%'M' 'U&VMRwC̄L6X@s IIa4{o<ԝBRw1DwuX{M"jed5'$@AY%q);i;Q:=5Wom皓m);i;Q:=5Wom皓lD Д Q4  P9{EJ! aX`ȉsC6efauj٘b0˘]hH$aB/ 9P:ҥ w0a  HX$]q̮ e./)' P9{EJM˘U2 ]j7 `ʠdPjD^LeaejDE0\II PN@K"ʽ6xmr˘XJN@K"ʽtRN& & aBQBB а  Iw0X *TVA`P`}VHd&) ٩;LiC *dklԝp@X*iMUҏ aslatMev0.d;P L+U&V*dDԝ(VHYBLЃ"I'$<@ɖ,cRw1Dw*PVHXRwuLЃ"I' +U&2)4bN(N@bRsPVHXRwuX{M"je`ZYvO5'$,cRw1DwuX{M"je`ZYvO5'$$Y@bADD^޲jN@HI0%'M' 'U&VdRwZmY@bADD^޲jN@Hy,cRw1DwuX{M"je`ZYvO5'%,"0%'M' 'U&VdRw^aRʇ`1);i;IABX{M"jebDMI2B0RwX{M"hs".asF$@b(U'{ YWfaYbRw0X]L̙`\JF$+U&V*dDԝ(VHY7IDטT8&<=tM@I%#R@I%$w1DwuX{M"jed5'iX.` 6Mh HԐ ;i;Q:=5Wom皓 hJN(NNiMU쬛y%lJN(NNiMU쬛yYq);i;Q:=5Wom皓 U Q4(VHY7I {@iK*"%'M'1B9…T^pBr2"\lM{fY]uf=6Z.I;Pa,8ʁ,T$K1[^ ` , @"눖eq,aqxI;P.WZn\¬V^q\Dl8ULacU LPjD^LeaI;YZ=49L0w1Dw* YWfaYs I ,Y); I P $@b`zN@b`zN@+Zd!4 * +аqI;aB A( b$D!1L eI`}VHd&YS&\fUX{M"jefxc d h+s& Ij`'Z=5WS"&ADD^mͪea;!h*`ɂ0%'M'1B; a45' 'T <%wX{M"hs".asF$@b(U'Z=5WS"&ADD^޲jN@Hy.a0%'M' 'U&VdRw[D,`ʦX2` IIa4ke<ԝV] e& 0 Q4(VHX]I `1);i;Q:=5W-w'if&iU{+z˲y;-+`1);i;Q:=5W-w'0Y@bADD^޲jN@J0 Q4(VHX]I 20hEY@b(U'; a45' 'T <%wX{M"hs".asF$@b(U'{hebͮ \MĤaB]5PaHPjD^LiU{+&y;=VH dه 0ĤjH 0Ĥ:N(NNiMU쬛y.%'M' 'U&VMRwLYv@bADD^ɽjN@U&\l9  $$%$w1DwuX{M"jed5'iX.` 6Mh d4JFCD:N(NNiMU쬛y\%'M' 'U&VMRw@2Ĥ@bADD^ɽjN@J@bADD^ɽjN@HyB/ea);i;I@*rB× f2m2ճ0.a0Бw I…[^Ł,T4`p0']/.br`pH \D+e@ I…T^p<"r`"Ìh* Eaڪd<=s 22`/$+U&V*dDԝ(S,4 Ia4̊`&TE{+mp0E{+4%'S;` LI LI…` L&@`X*@H8P `@px4, v(RNA0`>iM 2Ylԝ& a4Be2a6jNA@8 ,U&ViG0L&2Km2`ԝ(w iU{+2"jNNiMU쬡v^`Ƞ,&2B0E `JN(N@bRw iU{+2"jNNyHejDE0\II PNw iU{+2"jNNiMU ].wL<=r0%'M' 'U&VdRw&@bADD^޲jN@HH4 IIa4ke<ԝ2 ,cRw1DwuX{M"je`ZYvO5'%%r0%'M' 'U&VdRw^yv 0 Q4 Z=5WS"&ADaDN@ViMdS.hĝ Q4 wDE{+mpm%' akE{y! 0Ĥn(RNABX{M"jebDMIa4{o<ԝiMyClDdxzR4bN@U&\l9\@E2Y&I&IIa4{o<ԝiMyClDd%#F$X{M"kÙ\ ], .I"" It Q4(VHY7ID  2A@BAR5$D:N(NNiMU쬛y.%'M' 'U&VMRwZ.W&iU{+&y;/ <Rw1Dw* (U@+̄-/a"%dK=eYfa\o.au"  9P:ҥ w0a  HX$]q̮ e./)' P9{EJM˘U2 ]j7 `ʠdɀ PVHXRwuLЃ"E' +U&2)4bN(N@bRwDE{+mp0e^ I:N@bp@X)'ww0X(! X,8\ H(n(RNs ʂh840 I& a4Bb\@-=40LL6I(D^(6ɖDWis L:NABX{M"jebDMIa4. edڦXhA"Z.ٖKf&TjD^LeaI;YZ=49L0w1Dw*@H(ViMUTȉ;Q:=5W-w'I 00 Q4(VHX]IX<&iU{+z˲y;!T `1);i;Q:=5W-w'ol"f&iU{+z˲y;- 0eS,0Y@bADD^޲jN@KEJ `JN(NNiMU ].$`1);i;IABX{M"jebDMI2B0$,VHȦ \щ;i;I@K+hfYK*V, =4lJN@+*e6v5& I(ViMUTȉ;Q:=5Wom皓a40qMxzZ.ٖ@ 0ĤhĝiM`0s+4 $ $;i;Q:=5Wom皓a40qMxzZ.ٖ@  XJFID  2A@HDE $@$]a) 0&iU{+&y;!T  IIa4{o<ԝ{a@bADD^ɽjN@K`hRw1DwuX{M"jed5'%%q);i;Q:=5Wom皓˰%'M'1B9…T^pBr2"\lM{fY]uf=6Z.(RN@*r,( *@X@iR`BOd^\Ű  $ ,.fW2xI;P@ %xxE*Eei{.TAVËTxz0eP2d\PjD^LeaI;YZ=49L0w1Dw*Z.ٖ@ʽ6xmr˘XJN@K+hfYK*VhJN(wI;00 FM* bҠP8P T@`$ I& a4Bb\@-=40LL6I(D^(6ɖDWis L:NABX{M"jebDMIa4. T <$Rw[x\$]U,cRw1Dw*PVHXRwuLЃ"E' +U&2)4bN(N@bRw iU{+2"jNNiMU ].xz `JN(NNiMU ].H`1);i;Q:=5W-w'oe*q0 Q4(VHX]I if `1);i;Q:=5W-w'fD 4%,cRw1DwuX{M"je`ZYvO5'%̈h 0f&T+U&V*dDԝ(S,4 Ia4̊`&T@Kb{+mpm%' \$5& I(ViMUTȉ;Q:=5Wom皓a40qMxz蚀\JF\JH @bADD^ɽjN@J˄ Q4(VHY7I ifdbRw1DwuX{M"jed5'%eL*%'M' 'U&VMRwZlȁfdbRw1DwuX{M"jed5'%̈h 0 Q4  P9{EJ! aX`ȉsC6efauj٘b0˘]hH$aB/P ,`ruK  = ays×,, @,H%\@-\^(RN@*r0e0AQ-[.S!n@A)'Z=5WS"&ADaDN@ViMdS.hĝ Q4  YWfaYs I l@ef@bj`'1@8 ,;;PaiX*( $;P *TVJ@0 I  ,Xk0,oe);=40LS+eRw0U& TɆ0٩;=5WasR@Hxk" 0eS,0Y`}VHɑRw ( *Bw0U&eM8X5L)DMI& @A$ٖ^ga0 0P Ua411ee]clatMev0.d;P L+U&V*dDԝ(VHX]I 00 Q4(VHX]I l \ IIa4ke<ԝ+`1);i;Q:=5W-w'ivK0 Q4(VHX]I {Meb0%'M'1B;-6ʽ6xmr6[PVHXRwuX{M"jed5'$&iU{+&y;- IIa4{o<ԝ+ IIa4{o<ԝK%'M' 'U&VMRwDB&YXJN(N@bRwZm{+mp0@KMe᫖xj,ɑ@bj`'1@8 ,; -2PTAP8J…@aRҰ, *=5S, hiMT qL(=aGTqL(&У5'*1'0Y`p*iMU ].Aޱs0fX I ;;UVHY TɆ2 )0L&2Km2`ԝ xye^ś\iM 2Ylԝ& a4Be2a6jNA@8 ,U&ViG0L&2Km2`ԝ(w iU{+2"jNNiMU쬡v\ڦXhAEapf&TjD^Lea;YZ=49L0w1Dw*PVHXRwuX{M"je`ZYvO5'$,cRw1DwuX{M"je`ZYvO5'$ ]0 Q4(VHX]I T+{MT IIa4ke<ԝiR0%'M'1B9(ViMUTȉ;Q:XhAiCs 1'M'1B;E{+mpm%' B-6d> `"k05& I(ViMUTȉ;Q:=5Wom皓aIIa4{o<ԝv&iU{+&y;*eri*IIa4{o<ԝiQ);i;I@*rB× f2m2ճ0.a0Бw I…[^ 9P:ҥ w0a  HX$]q̮ e./)' P9{EJM˘U2 ]j7 `ʠdɀ PVHXRwuLЃ"=' +U&2)4bN(N@bRwW UY{k\RwW UД P L(w10`='10`=' Zd!4@$,)@qI9@* L ( LiC 2[5' X{M"haeLms (Tp, ( LIp@X*iMUҏ aslatMev0.d;:N+U&V*dDԝa4. T <#w%h8el8`1);&IjD^LQ:XhAYZ=49L0wM'*(ViMUTȉ;iU{+z˲y;a`1);&Q:=5W-w'!.Y(NADD^޲jNJ`1);&Ia lzXebͮ \MĤABX{M"jebDMI(VHY7I\JN@bNiMU쬛y@H@ I Q4a4{o<ԝ Yvi;T h2`2e^ś\iM 2, aRs B09@QX8 AxI;(D^(6ɖDWis LP LABX{M"jebDMI(VHYBLЃ"E'U`"kY]4 I Q4 PN+U&V*dDԝ2B0a4̊`i;TABX{M"jebDMI(VHX]IT"v.]0%'1Dw 'U&VdRw%]4 2vÃ0I(VHX]IT"v̮ev0I(VHX]IT"v,cRwM'uX{M"je`ZYvO5'Z]P%K*-UY(NADD^޲jNKK0I U`"kY.YWfaYbRwZ=5WS"&NiMU쬛y@KKd`if .I(VHY7IT"v`4%i;iU{+&y;Y.Y pI(VHY7IT"vi;iU{+&y;Y.YUl@mq);&Q:=5Wom皓-.E큥);&IX촺KUY{k\Rs a45'iƄ(N(U'1@@50` (TaiHX( + 1@lPaB PVPLiU2EeA #TqL(&У5' `=5WJ<1Ͳe4A\olS;]& ,Xk0,oe);PVHXRw 'U&VPl.mS,4 *i,Ds `JN@b@bRwZ=5WS"&NyOI,VHȦ \щ;&I+U&V*dDԝa4ke<ԝ  lAY(NADD^޲jNW, %̬Y(N(U' iU{+2"jNADD^ɽjN.[ ]2+T i;iU{+&y;\2I  iU{+2"jNAD# Q4 PNwTa4ke<ԝ  , `1);&Q:=5W-w'-mrU.s+`1);&IjD^LQ:=5Wom皓-mr˽{eUaq);&Q:=5Wom皓-mrU.s+ I Q4 PNEeK*V, =.aa)9jD^LQ4cBBM'* IRN@b`zN@* 0Bh$,`M (Tࢠ @I;=5S, `4QX5L)GTm 8Rw iU{+4\&X]D]6˙0jNA@@50*i .pu^s& *V, =4lJN+U&V*dDԝa4. T <'@JZmvKd I Q4 PN+U&V*dDԝ2B0;iCs 1'1Dw1B9jD^LQ:=5W-w'+<i``1);&Q:=5W-w'!%,`˖`1);&IjD^LQ:=5Wom皓+<i`I Q4a4{o<ԝ .cV\JN@b@bRs a45'iƄ(N(U';PVHXRw 'U&VdRw$$%Y,cRwM'uX{M"je`ZYvO5'BKYe! `JN@b@bRwZ=5WS"&NiMU쬛y@HIvK%'1Dw 'U&VMRw$$%\0"%'1Dw1B;]U2`ebͮ \(ViMUTȉ;H4  1Dw1B;t P $& aB L&B09@QX<T:hlP `rp P` *AXI;(D^(6ɖDWis LP LABX{M"jebDMI(VHYBLЃ"A'Z`ed5r0%'1Dw1B;PVHXRw 'T <$w +U&2)4bN@b@bRs a45'uX{M"je`ZYvO5'Z`e ]P4 I Q4a4ke<ԝ ]`ifi;iU{+z˲y;[.da` I Q4a4ke<ԝ l]b`1);&Q:=5W-w'& \ ]+`1);&IjD^LQ:=5Wom皓-0]X.%'1Dw 'U&VMRw$=vCW, eꁢRwM'uX{M"jed5'^e̘, I Q4a4{o<ԝ l]bI Q4a4{o<ԝ 0e4zXJN@b@bRs a45'iƄ(N(U';(ViMUTȉ;iU{+z˲y;`eib],cRwM'uX{M"je`ZYvO5'C,`eifi;iU{+z˲y;Eps. `JN@bNiMU ].2B0; ʥx`1);&IjD^LQ:=5Wom皓& \ .a =);&Q:=5Wom皓! 0e4JN@bNiMU쬛y@KABEEhkI Q4a4{o<ڦXhA='DTo2]);&I P L@bp@X)'10`=' Zd!4XX1AH()'ww0PQBA!`( Q@`A$w10`=';JwI2hc FB!lXj킘\=s A,=fe p4 0ٗKЪe ph[ l8 )xE] p($˴dUꁆB \ɀH wI2a7Fqv\&)08c.L6Ř2Sע3AeMHp\Befs TɆ0L6Ř\&)08c.L6Ŵ.Ѓh``uLms i5Ŭ]ET 4 ) am6 3L0C .`B.в .-@$,[l0\ƅES@8 4;2a6-vxFhcU hYsdFqv0avAj!bdx .4*(@ Xn%AZ9ހ (Td@ dhsqBw0U&d@ dhsf )@QT&DK75@xӇ4` L e\Ʉ*e'zr:N lp&o$םaX՝a֝a&bm./usr/es/sbin/cluster/reports/templates/ss_report_template.htmG$$  a ".125<=>Tcdelrst%,-/0346789DR_inoILbghmpw:;ABCEHOSVfuvx!MNPky()FGYZz{}#&*UKq j+W@|X[]L( ,\950X((((((((((((((((((ETabIPhX40PY`@Ūj`0u./d=]4Y0ou" hib50X-SSm v@ib-<}P?4ղιml$ŋTabXML. X ,@1`XP b50X((((((((((((((((((ETab`2,\peash"㬶1D dO"9"#"DJ :=$$B"yCȥ A4) D "$HiRE*<1"IiPD HHE AǤDHR$"II"I$)'$ Di) Dx@D@EBDB@P<J3B&z"@P@ z0R(H=#O$)$> A#H<L@BAHxy ( @y "5"&z$QELRhEǠHd5!ȑ&G@p F $z$RH)"8j<I"DxG :GFȥ$z) Di E!Ƒ4 D@(=dHRO> @ ="b"z)9t<Ñ )'5%@E!H="y$H"ɍ4"LDɐ@j0R8rC(rG Dxg@D9# ǞѤDR$$L @I""< 5@4 LR H4#H@i 82Pz)O P' A#Ɛ&Oq\ɇY0ʚo`0xPA@pB@#-S(qC Ŷȁ9S2@=80LL:ɇNTBu{(rmxcLlLplɇ^s&TMb{(rmDNT)].X2us-8 TLHk& ,cBU71TLbU7Xv`75W2ӂ0MkPŴ\' T,QS1T5i8˽ 9SXv`e7AefXJ=9w1g*o%v.:eYƄoc(ROq] e2ʛt dA T,QSXv`e7̰]Lh1*Ŋ*o1bVOq]Tȉʛ+PTLJ\ux{"U71T)].(^rbWh"㬶XU71T)].(^rbWh"㬶Y,A*Ŋ*okqC{l{9S1!,.dMLb7UM7Xv`75Wi8˽[9S1!,e 0YƄoc(ROq] e2ʛe, fXJ=9w1gW2ӂ0*Ŋ*o1bVOq]Tȉʛ+PTLHsmL T,QSXv`y̴(bC{n2K:2%SEM,US+].*dDMMb̴(=S7A{(s m eN2\49A#%t9D==9h gXPH Q4iъp$Xc*kqC{l2"rJ=9w1g[2"(nkPAd@n p-C΄" 2PᱴI<4&y2iq-T9 ia\ lDc &LdҢLɤ8{@g* .2I%t9C  dhs8hLML5S1aCt<4 "z 4PDD g&D H&y2i A! dHhDr'GDx#< 4G@i㈏"G""8DIEEH$zH$=H$zH'.JDx:1SAŊ*okqC{l{ rbC,It{% hJ1b+P^-6XA+t{% hJ1b+P^-̘ ,%2`4A T,QS1TMb{(rmDNT)].(^rbC,It{"U71T)].(^rbC,ia̮YT,QSXv`yʛ\ɀpΙ2Y&Doc(ŊocBj(T o`0x,! ʂ@@ @b4Kرj ˅u%S(qC Ŷȁ9S2@=80LL:ɇNTBu{(rmFL:lfZeCeL:K0rk!`=9wË<1NeT8A\dït*okqC{l2"rkqC{l,]֙:y*ob\..h1*X1bkPL+iP +]6-8bc(XZ=9wS"'*oJ=9w1h0K4ЕM,QS5Wi8˽[DMLKЋ\FLh1*XkqC{l{ ʛ b hJc(+P^-r%XpA TLb7Xv`eNTĶBLl˺h1*XkqC{l{ ʛˇ,A TLb71TXv`7Xs-8 TkPŴ\' TLb71TwY,`4Y,m* ,^. iɉ0Dv,ZZ=9wS"'*oJ=9wGNU1&ȕSEM)].(^ʦ%^E*1bROq]QLKdq*1bROq]QLKd,2SEM)].(^ʦ%W2e,e̶],JXkqC{l{DS pU1T,USML.s7 fBC ёg6uD2,0a.aח0wŪo`0wCAPBҥ@  = isC,(XI`vDK6ȁ݄ b70X.Y\v\Xfq\. 4rqw+dðƌ@ ŪokqC{l2"rkeaB 0vضdኛX1b edOq 2"[tMP!2˙0&9SX i8˽Y2u-2 &{̘9S5 ҀSXv`7Xvab̴(% 4ЕM,QSUMXv`7Xs-8 " i8͋hNŊ*oc*ob[ ,`4Y,m* ,^U []lD@ 91-0Dv,ZZ=9wS"'*oJ=9w1cC{\N<ˆo`=92eCicdJ*Kx{"UL`!S1T,USXv`7X@P-]w- 0d@r  qC{l8dfZeCeL:K0u@P-b.Nᖋ Y@Y@Y@9ʛVOq]Tȉʛ+P^- e0us-8 "L02YƄoc(ŊoZ=9wS"'*okqC{l{ rbLa 4ЕMLb75Wi8˽[9S1(a,,2fXc*kPLROq]QMĶXpJ1b+PTLKa0`YcXe*Ŋ*o1boZ=9wS"'*okeaDU7qCs 1SEM,USM+].*dDMMb{(rmc/a\2 :yU1"Z.v\,cBULb7UM+].*dDMMb{(rmc/aU1.:2fc(ROq] e2ʦ$, s-t , e4%T,QS1TMb{(rmDNT)].(^rl4B"ULb75Wi8˽ =לb[ ,` l˺U1TLbU7Xv`75Wi8˽[9TĄFBLX@E hJXJ=9w1g* fhA U1TLbU7Xv`75Wi8˽ =לb[ ,{M 2ؕSEMMb{(rmu* fhJXc*kPLROq] e2ʦ$ zQa-h1*1b+P^-bBe4%T,QS1TMb{(rmDNT)].(^rl4A4*1b+PU1!KؕSEM,US  TLb7)q-T8$n] {ELP,ƙ:ٖPqLkPLROq] e2^sW2ӂ0*yfXc*oZ=9wS"'*okqC{l{ rb\. fXJ=9w1g*o%׈2fXc*kPLROq]QMĸ\A*Ŋ*okqC{l{9S1.Aoc(ŊoVOq]Tȉʛ+P^-8YƄoc(ROq] e2ʛd& X `4%SEM,US5i8˽ 9SXv`yʛxU71T)].(^rbY 8X$8J1bXkPLROq] e2ʛ YƄoc(ROq] e2ʛd& X `4%SEM,US5i8˽ 9SXv`yʛ %SEMMb{(rmu*o%`CĪoc(ŊoVOq]Tȉʛ+P^-YƄoc(ROq] e2ʛq׆4g2Y,cBU71TLbU7Xv`75Wi8˽ =ל%SEMMb{(rmu*o%^%to dJ1bXkPLROq] e2ʛmNh1*Ŋ*okqC{l{ rbB20녚 hJ1bXkqC{l2"rJ=9wG7XJ=9wG7py\Xc*oZ=9wS"'*okqC{l{ rbC[pA T,QSXv`e7` c "e(A T,QS1TMb{(rmDNT)].(^rbC[pJ1b+PTLI2艖*Ŋ*o1bŁZc(X ,]`n,̄.3i"%l댈=eYa˦a\ï.a!"ŋTab3*`H !`iR w4̹ , p$H"%d@nd,Z X9K0˘] 26eQ.].s!vѕ@h?ŪokqC{l2"rkeaDU77A{(s m eN2\49A#%t9DqC `H u uFp$Ŋ*oc*l4mβ d&l4mo1`H4T,7P((TabY&B* 1Ph b7ʂ* 1Ph @X  PP, i8Bbd@n@}vd&Ys&dç*oe{(rm'*K0ȃ hJ(TkPŴ\' T(qC2"r`0r,AAr$X:,Ze{(rZhea AZxea7ʛ@z`īP^s*K8,t,"h1*00P=SMLP=S5]vaŞ(lLplɇ^s&TJuM+].*dDMMb{(rmc/a9S1-{ltA T,QSXv`eNTLKa. `A T,QS1TLKa&,qv,ّβ dDoZ=9wS"'*okqC{l{rb[ , 0MLb75Wi8˽ =׎9S1-\8L6Ɂ*Ŋ*o1bl4då.2"YC{dU7iaɇK.] 0ȃ&dpJ1`H4TLbHX-SP(Ji o  qC{l8eim0.dʛi@kPLROq] e2'*o%:,Y!dA T,QSXv`eNTLKauYYll5K4ЕMLb7UMĶY^ۥu6dD4Y,m*VOq]Tȉʛ+PK8tg []*Ŋ*okqC{l{rb[ ,m:e{a%SEM,US1-q׶ge͙,! =K2a*l4K< -aL0Ʌ˲MLbi@ŁZ0P=ST(TM`@$,].qg4'[2* .2a׺\Ƀ75 ҀS5i8˽ 9SXv`eNTLKatȁge% hJ1b+P^-rb[ ,D < -u톲fXc*K8:e2"YC{q׶M+].*dDMMb{(rmuTLKatȁge"U71T)].(^8MĶYLxA[, e*Ŋ*o1bl4,Y"%dOq] e2'*K8K2% hJ(TĶYLJX,ّβ dDoP(].(^ʦ%<= ȕSP(l4d,2Y"%d,}s- -a([FL2*oe{(rmc/a9TĶYLJYYƄ@MLKax{%.%2"YC{q׶MLP>Oq]QLKax{%."ULa@z%<=u͙,! =K2a*K8K8]K0ȃ&dpJc 71(TL. 0BqP  @@X  PP,tXo *ˆB-6d"![2.8\l,]j i8˙h[AF-kh[F'*o`@z`īP^s*K6ev\p4%TT oeP,ƙ:ٖPqL l4fW, ,ّβ dDoZ=9wS"'*okqC{l{ =1b%t8ZCDlMĶg2lA T,QSXv`ea .á g*o% =pq4ЕMLb7UM+].*dDMMb{(rmu"]C4ATLKaz, Īoc(ROq]Q{bKp2ʛl5\ee*Ŋ*o1boZ=9wS"'*LTbXXVOq]Tȉʛ+P^-xLXv[9S1-YZ, 4ЕMLb75Wi8˽[F:-! rb[ plY[,cBU71TLbU7Xv`75Wi8˽ =ףxLXv[9S1-YZ, Īoc(ROq]Q{bKp2ʛl5ͲglJ1bXb[ , ٕ86dD4Y,Ɇo% ].`4 "ɅX (7  T o0P=S0X,! V\2mv`!ٕq`@dŋT0XP `H .Pb7(qC2жEs- `Z2зŠs- -NT%U72@MWi8̽NU1- hc,cBUL`1%MLa@zP(HX.Oq] iim0.dʛi@kPLROq] e2'*o%20Yh1*Ŋ*okqC{l{ ʛl4th1*Ŋ*o1bVOq]Tȉʛ+P9S1-q]hΗdJ1b+P9S1-`2u*Ŋ*o1bŁ ҀS1!`MLa@zc 712T@0X4 k,`qb71(T o`0x,! A`h4@t, `@((;-SM70X T@XMLP>Oq 2"[tMP!2˙0&9SX i8˽Y2u-2 &{̘9S5 ҀSXv`7Xvab̴($.l pA TLb71T+].*dDM)\N<‰*o`µ{(psb.a*o1bŊokqC{l2"rkqC{l{ ʛdA TLb7Xv`eNTĺ2YƄo1bROq] e2'*obL2{4ЕM,QS5Wi8˽[DMLKl6@A TLb7Xv`eNTĄ\0E4ЕM,QSUM75i8˽ 9S5W2ӂ0J0vضdኛX1b$.l ,`4Y,m* ,^2艖6rbL<=*VOq]TȉʛROq]Q70Ev l采ɉ0Dr0DBc(+P9S ȕM,QS5Wi8˽ =עr$.(Jc(+P9S Ŋ*oJ=9wGNTĄ\0EĪo1bŊifpBs02"\lθȃ{[ef=:b.,Z t9 X4`H !`iR w4̹ , p$H"%d@nXML..'fp<"h"7C͢pTAC\x{&4ep*CŪokqC{l2"rkeaD70aZ=89m07EMLbU71&tD`QedOq 2"[tMP!2˙0&9SML.H8 ZJŪoeP,ƙ:ٖPqL VOq]Tȉʛ+P uNeaAʛp2`]2Å hJ1bXkqC{l2"rJZpA0vضdኛŊ*o1boZ=9wS"'*okqC{l{ ʛ0K4ЕMLb75Wi8˽[DMĄ fXJ=9w1hqr4%SEM,USĸat{.`mβ dDoZ=9wS"'*okqC{l{DMĘx{"U71T)].(^ʛi*Ŋ*okqC{l{DMİˋT,QS1TLK qKq .,! =K2a*p2`]2e T5i8˽ 9SX`1:c(ŊocJuM,71 ,\apAj0PtXM70X<T(x X ( o  qC{l8dfZeCeL:K0r$PoZ=9wS"'*okqC{l,]֙:yo$$eY`]2Å hJ1bXkqC{l2"rJZpA0vضdኛŊ*o1boZ=9wS"'*okqC{l{ ʛ0K4ЕMLb75Wi8˽[DMĄ fXJ=9w1hqr4%SEMMb{(rmc/a9S1.% hJ1bX 2pX=CYwgYiY^ۢU7Xv`75Wi8˽ =עrbL<=*Ŋ*okqC{l{DMĄ ȕMLb75Wi8˽ =עrbXeĪoc(ROq]Q7ᐋk%SEM,US1!&[.q .,! =K2a* 2pX=CYwÂU4Mb{(rmDNT( p@Ŋ*o1bŁ ҀS1!`MLa@z bd!8 *@< -SML.V JŪoeP,ƙ:ٖPqL VOq]Tȉʛ+P uNeaB 0e,{.a4%SEM,US5i8˽ 9SXs-8 TLVOql[E2pMLb7UM7Xv`75Wi8˽[DMĘx{% hJ1b+P^-rbBdA T,QSXv`eNTLJL:,cBU71T)].2m7..YƄoc(ROq] e2'*o%&pA T,QSXv`eNTLKlYƄoc(ROq] e2'*o%YƄoc(Ŋo].q .,! =K8tJkqC{l2"rJ=9wGNTLI%SEMMb{(rmu蜩vXJ=9wGNTLJL:XJ=9wGNTLK MLb75Wi8˽ =עrbY 2aoc(ROq]Q7.T,QSXv`z'*o%%SEM,US1& \ e,]YC{dU7`˥Y`]2e T5i8˽ 9SX`1:c(ŊocJuM,71 ,\a P0PtXM oc 70X,! , 8-``48XM70X @аX)`hŋTP!1m eNTLP>Oq 2,aӕ75]vaŞ'[2* .2a׺\Ƀ7X (75i8˽ 9S5Wi8˽.L\N<‰*obB YƄo1bŊokqC{l2"rkqC{l{DZpAISK `u4%P0%TĄ,ar:a'%TU7EMLbU75i8˽ 9S5W2ӂ0J0vضdኛX1bkPL+P^-r$,cBU7EM)].2m71,2 hJc(+P^-r%,2 YƄo1bROq] e2'*ob^täh1*XkqC{l{ ʛvppA TLb71T+].*dDM)\N<‰*o`µ{(psb.a*o1bŊo{lu%u%S)v+\ɀ4Ęx{"U;-SXv`7Xv`z'*obL<=*XkqC{l{DMLK M,QS5Wi8˽ =עr%,2 %S1TMb{(rmu蜩xE%2 %S1TMb{(rmu蜩i 0]o1bŊifpBs02"\lθȃ{[ef=:b.j ,]`X AA J\$˼1e]f I`` %E,"[v.'Ūo`0u\칅.3h\h"W2ɇa\ 2@VOq]TȉʛRyTkPŴ\' TLb71TĄ,`4Y,ɆobB ]M, ŁZc 71 ,\a  a`R@ v,Zo`0pPXk,`v,ZP(] m-re{(pae̘u (9`YZ ,ZP(].em!\BB-khXMh"rk!`=9wË<1NeT8A\dït*okA:bWh"㬶Ds{lu%u%S5i8˽ 9SXvab̴(bWh"㬶YЉK4ЕMLb7UM+].*dDMMb̴(`µ{(psb.a*oc(ŊikPLROq] e2'*o$81fXJ=9w1h޻%l 4ЕMLb7UM+].*dDMMb{(rmu蜩^ۡE bU71T)].(^ʛ mXA˙`J1bXVOq]Tȉʛ3EM,USM*ROq] e2'*o$80Z2YƄoc(ROq] e2'*o%X5a[.e4%SEM,US5i8˽ 9SXv`z'*o%X9c/tZ2%SEMMb{(rmu蜩 `޻%loc(Ŋo%v.:nL0YwgYiY T5i8˽ 9SX`1:c(ŊocJuM,71 ,\aPX@P (9`YX<T( @j@}v,s- `Y Zxea7ʛP,ƙ:ٖPqL ]I˄ K0YwgYiY^ۢU7Xv`75Wi8˽.L\N<ˆo%v.:eLYƄoc(ŊoZ=9wS"'*okeaDU7qCs 1SEM,USM+].*dDMMb{(rmc/a9S1,<@Y`-h1*Ŋ*okqC{l{ ʛ 2cXdA T,QS1TMb{(rmDNT)].(^ʛalJ1b+P9S1!&[,` T,QS1T5i8˽ 9SX`1:c(ŊikPLROq] e2'*o$$e[,cBU71T)].2m7e2 ,cBU71TLbU7Xv`75Wi8˽ =עrbBLX8E*Ŋ*okqC{l{DMĄl CDoc(Ŋo%v.:a&[...dedOq\ȀpNT@!`YUAFDˆ;kJ#P' Q K00-o0P=SS %TĄ, k*(&oA םa םa֝a&bm./usr/es/sbin/cluster/utilitiesAA k oJםa՝a֝a&Jbm./usr/es/sbin/cluster/utilities/clchkidss_repora/haH  l0P0L0<1L.textPP P(-ZO .data0L0LlL,N @.bss00.loaderJ.debug B(= ,|nx|#x|+xb,0AA 8| S*N!A9<}{x~xH` ,Ab$H AA| @__start,M H4N @__threads_init!|AfH| FN!Ab ,Ac| CN!Ab,Atc| CN!Ab,Ac| CN!Ab,Ac| CN!AH8!@}N b,AK A__threads_init@AF2_14|!0@8`a8`a8`aa8H )A,@$bH88c H 5A8`H QAbT8`8H ]Aa@a@(@LH8H eA888tH yAc`d`8c HA8`H݀AH8`aa`| @a@|c"c,A a@|c"c<8| @hH8,HɀA888rH݀Ac`d`@|:|:8 8c H Aa8caa8caa`| ALbd8P8HAaDaD(@LH82DUXZpK|A2UZ(KZBlPD_2UZK2UZK.H@PVJ\_<< < 2 U 0Z lK < (< T< j2 pU Z K 2 U 0Z HK dA 0 4 6 :: b< > F <0LV0Pn0X`0N0 0h0 0$0( 00#04 0d0h0lT0pl0t0x0|10 00000 0000070009x  0<@Xt"0$<'x(),./104<,X=x>ACE H,ALMhOQT M,[L\h_aefg h k tp _ v x | } <~ d h  v   P ` l     # L d p x ';get_catd L Y errno_iobexit fprintf catgets qsort f __crt0vqTOC0<k__crt0v0dkf0hk0lk_$STATIC0pkq0tkerrno0xk_$STATIC0|kL0k_iob0kfprintf0kexit0k0kY0kget_catd0kcatgets0k0k;0k0kqsort0k'0k0k Mgb g.__startPk.__startPN__start0 0Lk,p_xargc0@p_xargv0Xp_xrcfg0\p_xrc0`0<0.filezg0Jk`) f@ kf_$STATIC0xke0  0D0H0L0P0T.file;gWJ:t97=-8:t93=-7:t87=-5:t47=-3:t23=-11:t12=-4:t9=-1:t4=-2:t1=-31->:t5=k-2:t6=*5:t7=*-2:t8=*7:t10=f3;N_t:t16=*15:t20=*19 ->Rfz:t31=*30I]p:t42=*41 1:t54=*53:t61=*60 :t76=*75:t69=*68:t72=*71:t65=*64 _:t67=*66  7 :t88=*-5   :t92=*91 :t96=*95 1:t99=*98 t y(4ANZg{:t243=Z`k `).main` D-.bfxe<node:31@Dgroup:54HLP`p"max:-1depth:-1error:-16.bs1J.es.ef eq  l/ #Y`.bf eobj1:p54hobj2:p54lrc:-1@.bs1n.es.ef e @ p/D1}.bf Leobj1:p61hobj2:p61lrc:-1@.bs1.es.ef e_$STATIC0k0.bs1.es0$  00  strcmp.s> g.strcmp l)glink.sC g.exit k(.exit ?glink.sH g k( Dglink.sM g.fprintf k(.fprintf Iglink.sR g 8k( 8Nglink.sW g `k( `Sglink.s\ g.catgets k(.catgets Xglink.s g.qsort k(.qsort ]HACMPnode_CLASSHACMPnetwork_CLASSHACMPresource_CLASSHACMPgroup_CLASSodm_set_pathodm_get_list__mod_init__malloc_user_defined_namecrt0_datacompare_groupscompare_resourcescrt0main.s_malloc_user_defined_name__C_runtime_pstartup../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cWed Mar 5 14:04:03 2014 IBM XL C Enterprise Edition for AIX, Version 9.0.0.0 --- .__threads_init.__threads_init@AF2_1__pth_init_routine_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routine../../../../../../../src/43haes/usr/sbin/cluster/utilities/clchkids.cWed Nov 24 00:03:42 2021 .compare_groups.compare_resources.odm_set_path.odm_get_list.get_catd] kFPo!םa՝a֝a&!bm./usr/es/sbin/cluster/utilities/clexit.rc_repor#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2020,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/utilities/clexit.rc.sh 1.38.1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1996,2013 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/usr/sbin/cluster/utilities/clexit.rc.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM ############################################################################### # # Function : send_mail_notification # Description : used to send e-mail about failed subsystems # ############################################################################### send_mail_notification() { typeset PS4_FUNC="send_mail_notification" [[ "$VERBOSE_LOGGING" == "high" ]] && set -x mail -s "${SUB}" root << EOT ${SSYS} exited unexpectedly. ${MSG} EOT return } ############################################################################### # # Function : set_log_path # Description : used to set the proper log path from the ODM # ############################################################################### set_log_path() { typeset PS4_FUNC="set_log_path" [[ "$VERBOSE_LOGGING" == "high" ]] && set -x # determine the path to hacmp.out DESTDIR=$(clodmget -q"name=hacmp.out" -n -f value HACMPlogs) HACMP_OUT_FILE="$DESTDIR/hacmp.out" return } ############################################################################### # # Filename: clexit.rc # # This file is called when clstrmgr or clinfo exits abnormally. # ############################################################################### PROGNAME=${0##*/} export PATH="$(/usr/es/sbin/cluster/utilities/cl_get_path all)" if [[ "$VERBOSE_LOGGING" == "high" ]] then set -x version='%I%' fi # Single formal parameter is the subsystem name SSYS=$1 # these 2 are defined in clsnmp.h SMUX_FORCED=64 # exit code when clstrmgr has been forced down SMUX_SHUTDOWN=512 # exit code when clstrmgr stopped by aix shutdown # this flag is defined in ha_gs.h HA_GS_GROUP_SERVICES_HAS_DIED_HORRIBLY=512 #summary code when cthags has failed. # STOP_DAEMON is defined in clstrmgr.h STOP_DAEMON=6 # exit code when clstrmgr stopped by stopdaemon ipc request # from clstrmgr.h RD_EXIT_STATUS_PATH="/usr/es/sbin/cluster/.clstrmgr.exit" NODE_HALT_CONTROL_FILE="/usr/es/sbin/cluster/etc/ha_nodehalt.lock" CTHAGS_FAILED_STATUS_PATH="/usr/es/sbin/cluster/.cthags.exit" typeset state=0 case $SSYS in clstrmgrES) # # Clstrmgr will create a file with its exit code (if the exit # was intentional) # CM_EXIT=1 if [[ -s $RD_EXIT_STATUS_PATH ]] then CM_EXIT=$(cat $RD_EXIT_STATUS_PATH) fi # If exit code is STOP_DAEMON, only clstrmgr daemon will be # stopped and RSCT will not be stopped. if [[ $CM_EXIT == $STOP_DAEMON ]] then echo "$PROGNAME : Cluster Manager Daemon is stopped." elif [[ $CM_EXIT == 0 ]] then # # If the exit code is 0 (normal) we will restart clstrmgr here # errlogger "$PROGNAME : Normal termination of ${SSYS}. Restart now." set_log_path echo "$PROGNAME : Normal termination of ${SSYS}. Restart now." >>$HACMP_OUT_FILE for ((i=1; i<=5; i++)) do lssrc -ls ${SSYS} >/dev/null 2>&1 if [[ $? == 1 ]]; then state=0 break fi state=$i sleep 1 done if [[ $state == 0 ]]; then startsrc -s ${SSYS} >>$HACMP_OUT_FILE 2>&1 if [[ -s $CTHAGS_FAILED_STATUS_PATH ]] then CTHAGS_EXIT=$(cat $CTHAGS_FAILED_STATUS_PATH) if [[ $CTHAGS_EXIT == $HA_GS_GROUP_SERVICES_HAS_DIED_HORRIBLY ]] then sleep 5 echo "$PROGNAME : Cluster Manager Daemon restarted due to failure of cthags daemon when resources are in unmanage state.\n" >>$HACMP_OUT_FILE #Restarting cluster services in the background cl_restart_clstrmgr & fi fi fi elif [[ $CM_EXIT == $SMUX_SHUTDOWN ]] then # # Clstrmgr was stopped by aix shutdown command # errlogger "$PROGNAME : ${SSYS} terminated during AIX shutdown." set_log_path echo "$PROGNAME : ${SSYS} terminated during AIX shutdown." >>$HACMP_OUT_FILE # Remove the file created if the clstrmgr was stopped # intentionally since the node is going down. # The path is defined in (and must match) clstrmgr.h rm -f /var/hacmp/log/clstrmgrES_stopdaemon elif [[ $CM_EXIT == $SMUX_FORCED ]] then # # Clstrmgr was forced down and terminated normally. # Restart with special env to tell it it was reincarnated # after force down # errlogger "$PROGNAME : Normal termination of ${SSYS} after cluster service stopped with unmanage." set_log_path echo "$PROGNAME : Normal termination of ${SSYS} after cluster service stopped with unmanage." >>$HACMP_OUT_FILE startsrc -s ${SSYS} -e "FORCED_DOWN=TRUE" >>$HACMP_OUT_FILE 2>&1 else # # non-zero (abnormal) exit # # There is a chance the errlog and cl_log messages may not be flushed to # disk before the dump is initiated. If not, the errlog entry will be # available in the dump. errlogger "$PROGNAME : Unexpected termination of ${SSYS}" & cl_log 230 "$PROGNAME : Unexpected termination of ${SSYS}" $PROGNAME ${SSYS} & # send mail to the admin as a background process so we # dont hang waiting on mail SUB="Unexpected termination of clstrmgrES subsystem" MSG="The hacmp6000 inittab entry may have been removed." send_mail_notification & # An optional, user customizable script can be run here in # place of the default action. By default, # "/etc/cluster/hacmp.term" is shipped without execute # permission - if the user customizes it and adds execute # permission, call their script in place of the default action if [ -x "/etc/cluster/hacmp.term" ] then SUB="Invoking commands in /etc/cluster/hacmp.term" MSG="The hacmp6000 inittab entry may have been removed." send_mail_notification & /etc/cluster/hacmp.term elif [[ ! -s /usr/es/sbin/cluster/.shutdown ]] then # Because it is critical that we remove HA's inittab entry # to prevent a bouncing node, we run this in foreground. cl_rmitab hacmp6000 > /dev/null 2>&1 errlogger "$PROGNAME : The PowerHA SystemMirror 'hacmp6000' inittab entry has been removed, if present." ############################################### # Do not halt the node if cluster is not active ############################################### if [ ! -f $NODE_HALT_CONTROL_FILE ] then # Remove the file created if the clstrmgr was stopped # intentionally since the node is going down. # The path is defined in (and must match) clstrmgr.h rm -f /var/hacmp/log/clstrmgrES_stopdaemon cl_log 231 "$PROGNAME : Halting system immediately!!!" $PROGNAME & # Do a sync, then a short sleep to attempt to flush the messages # we just logged to disk, and allow background processes to complete. # Because the secondary node will start taking over the resources # very quickly, we can't wait indefinitely. This node must be halted # to avoid conflict over the resources. sync & sleep 2 # halt the node halt -q fi fi fi ;; clinfoES) cl_log 230 "$PROGNAME : Unexpected termination of ${SSYS}" $PROGNAME ${SSYS} # # if there is a core file, try to grab it # if what core | grep -q hacmp.clinfo then cp core /var/hacmp/log/clinfo.core.$$ fi # If somehow it got restarted, kill it stopsrc -c -s clinfoES ;; esac cl_rest lr5o[םa՝a֝a&;bm./usr/es/sbin/cluster/utilities/clstopr    #e inorst"E_acdfhlu $-./=ACDILMNORSTgmpvw():>GPU[]by,012;FHV\kx|&'B{}!*4679?WXqz35KYj8%<@^8I [^@ $`B(,4Zofp8ܢl0'Sב8HdS~@L p@@ pH A| qq.7+Tki 0@A .%$hkiJ`B(,k4Zofp8ܢl0'SkX.(p@P];es(2s3sCbSѲ_ qm{k(-rؖ3f'lWm{k"\8  ɾw7A鱁,ϹK*,"tn mdc0kY`z1r\\Í9c0XU9D?v֫17)NĄ$2*/j`5'tɁ%r0ѻkY0$A .%$hnW@BӹfQ!'X̜|׼ɂ:ɨ106ΰ&sx0ʧg emydr ŵ-^S ⚖,j0}5;୍m0؄DsqMKY5`}n6ŧ+r1R5d"x`')^.Ձ.RL眞9DtaPx=9H=gDstl`C$3VanS>aSȔ3o!9NqM8 NivL)'w|^Ȕ3o!9NqM8ʹ(P:ū.Ձ<;9vf m6͘A 3mVfnbSkޣ wT-^yу[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMmUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU6^Y33vmy.0fn}GXLN\׽&n)&nkޣ:b|׷t56|>^$_2Lݶ͘Avt0kyF9o_UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMfIS&vsÌTa刏A&no$ H@>IX`ibQaab80O1089bK*:x![[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUMזL6=o1"my-f^.Y,5:o5Qe;+r-ma5^:0y|ڪh6=o1")13+d ,DzۋDh0  X5Is(Phi2 b"8 o|/Q{Pm(z>Dn@ ?jƷPD GbR%"PɣCL$H%K>iP9|nPf*^n0d>pyޙWӝ֝>_c.Rs̓i0Ƥ7=zK*,r$ .I _;k|T4LEDa#G\HI w:nQw4ԛ[YBH,\%G Y"$H`lM-cn,T4LED""ߚO"H +2'+䈒ϧ,I~ؓ3a^Ss bW+Q6e|׽(ȕHDX$L9Dut0̧qæ7sMI ܱŔ.DB"XTqŐ"KV{,0r؀0ȕHDX$L" k*H2»=[zoRn={:SB*ZAsٶ_o&vs;'"3Zjǁ;r-nD`8L9;[B;~,T4LED+V HB㙔G\HI w:nQ%o)ELcő(dт$AaqYm4ha6;0aƒ2h[r؀,y4D #dF&QHb"-ool$''"3Zj>_5'"3Zjǂ+Y9#|CTNx @a U<+a2 M]T,8p pKg4Wڋ@1o -`rA[7-S3Nv<Yv}尐Yh+r&ŪfiFߚ:rF) ma U L)ںbP=|,+_R6`sDy"<Փs +ZF<'˃[E.DB"XTB~%x`ɵ<9M雼 KcNt41a UYBH,\%G7:|׾JEg׸?z Asټ5ZRՁ f1oA ً;ZmUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU6^Y3]J2Rmך]eM~}7NZЎ xܠToL\ᛆ9]^vg-Xg&|v @؞ q<.CvkD'-_mx|7a]J2Rm1sf/_עΌr0m6%ٚ>%&)ە2R"= .Ձ)4 !` .e &X7?Aw] DG~W<`Ckܶ&Y"L4Llxohh^>S&\O9KSƴU4Tnl9gs$AܡtHa+aW=Ճ3`pY2y8]5 XzQgPh,DwK>cՃ35|Ǎ.JeD :zVpuӖ%vhEKWV%CZFAE vt ׷1)q!=79.Ձ$d$dAR h=#C$Qe;1)ḍ[j/ .Ձ)0l1j~,%TaHa ([j/ nyhGQN' ǜ1+R/svzƍ``Ad"%(X=>p7kzðqLYgrzm sf/Ԃ!]L|6̚ iص0lQ|^ϝn|^Jq8n;CM^p;{%'Ϯo_rnM{b\׽VbSqD}_QJzoe!s(2s3sCaE@zRȔ2hP  R)ED`%[ ű)ED()^Tk6埶ԃ|&K5`}dۋ`m5q؁nybӔm]ϧ-;8vN"yI9tNX ebӍTQxh 0\4.ޤ|6&TR'J*gc&, o5 0e ɔE94P䌚 iJHBJQSıdJ4`iDrM2hG ;>kh 4P䌚 i0~0"Ym4h`Vv.|` 0+W$;8Qxh U9V4hF%87SNwXH&D) 00YBᠲeky5p&Gt'Mo׸]7M$L3\#.i"%ɆDsa\m n5Q9^}{JQSY71jo}7Ϝ6!oWDͦo7b YD #1M$L3H`82hp?@sI.XL4<$D[&.fQr!'qVbcZ+ dqf $ &i#&2q@DE^Ȕ2hP "ɚ,%D0I$@Y3I4@y7-bȔ2hP "ɚǏD#"PɣCL$ &k?dx H\Ia,C& 0 ,xY-# D؈j0=)\O\w=W(\׽F%87ԛX^`Hf2h)4 70aJr7sr7{bSq-c.RaM7tԂ"PɣCL$ &ho-XRͷto0dWRuaM56*7ģioho^i{KsME^kY9ĭDٕ^pD4D H8g)6e-z9֨M^puӗӌP6$ӖOm^k w>zڀkB;9&.RLo[ 2hwK{,0ęNqeśM{tfl0'e8ݫt^wK; 1gy=X.Pq6so_':8>qϹ4ؔ3l;kޣN}1{~%zj)gfo^d6NCZ+vXˆ'r0n6wxn6wgq0N(WAlJQSt́ޯ&D`1| %<I}1ʊ]ŦJLޣtMWFԛcZ+j/ a Utԃ/ʊ\ױ)EL`$Ŝs^[ (\4L-Q:cb,C& 0".Y94P䌚 iJHBJQSıdJ4`iDrM2hG ;>kh 4P䌚 i0~0"Ym4h`Vv.|` 0+W$;8Vshѹ;,$YD ",pY2X>j/ pw>n)ǯNxS ,pY2`o1؁Ys!7 &\ޣ[P88@@PhG Lo_2>LFӝ뚃.Ձ5]5o^z'A.Ձ8g35fWg2tfjd3V7z^nkWo7r׸[-:* X~"" 潿Y_aJro` ,@ Z뚃.Ձ[?Zsw*Z-c cjd3V߈8<~‚\׷r릡ù댝^,96K5`}x=e ɔE9[sPtT%ٚ>6rÞIr؀1luAPlfjƮ\ofWN:S潽-:* XxPѰjd3VUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU7,Q5y'NVD4vr-5&3=X~oX+Z`WRr.K=X{ꪪ YEÒ 2D4,x śCo׷U4P_WoW幯q8ޛzKWRQ<dNɢ]7s ]Χ)8 kr7sx-{9ZЍP_]`}(㊍hhe4L@#ń#n6w{,%7Χ)2X@°ZY2& E hirB)(Py7M4Ph_>BsZ(U4P$x霰#>[O=9yN.Z(P_~SzVeEyW4PhGXYm)X>*'1cG\HI wMFUE,%Ta\\y(㊍5 03Ph,DZ*SELdrQhQxh U9W)W7%UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSvڋ@XJ³ry0$bj:`كlۥ8!F (\4L-Sfh0ٷJqY0%|lZha (" &Q#ń,q9I&FͺS l%8ݎ8t7^" &Q(a (s8qCf)LsQ6n@bj:Qxh U9VL *46`6N"}quˍThѨa ([j/ a*; 3VޔdBBm 00YBᠲehUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSk*ڪkC ,@#Ł@z8 i$M$, ^B,S[1dCD i2i"eC|Y,i#&Gc 4dC"I DE{{Ef$DĈDy֬ ǠAQj= śAR]ɱ+A|׽H8ӉN[&T8q7! 5bȔ2hP "h5DE^a+Qx`8t@p,/Q6s&nX*M4@p- jU8 Ym4/+@ޮßm]^nn2,` 2p;7AV Q9^.f?s)l+  Ty.Ձ r TPhP)XXئfj=qMKYhP)ab5-fXϺkLp=q r &>zEM,+ JEMc Jp;;941_G׷B7)_SE8V*S?x?ibBo&  4Q+ l1jF9 r]P ).ՁBqfhP)&Ms]7<TW(S2LݴW(j5X>.始 .hbXB^K5`}+|_#uk1g !k̓7mYm4/ |Ú/rڌ(>[0H" $AHL#̢8X "fs(2s3sCaENAA[^,B D*\d#kX$K*a*1Nm霼ca%CaNC+g= jiDzֹl@Cx% DrR("PPD #hz(b"-‹~"XTP+,C& 0".Y d@PCBn9hch > 0rxsa .vr1$bQC% 0T4D"Td1hC (5TNSC{@X`')V{,1CpCaENA?@Yb,@(cDF HJ,2z r(c!r A[C XcoWڌ(>Y㬰m4/1g z=Ӛb]qm5b#rqD#>?@J] DE^J'4ĵP rxsa9Dp: l@Xq᥈G /xtA3"r*P t昗oDӖ%v6rP6峱[5l@C}{~<~nSN3Co׷ojkiys]ot-]X{iH ,b2xbV""S^dtR.;9 Q9 K*^Z ,r$ .I ZlFTOt'<5 3wAx9 9Sf1jvfki[ʼnF r,1{{ՑӒ7H5D瀀 0dNS]<̚,@ _%ٜz>9ZrfS:ÔNn4h1`P0ED 9a9mm 9. j0̧qi,i#&DxR P;T1,YM*a"D*\f1ϔӝu1`N1P#^Hp65b! "XFM4<~I,LD#"`%$dH.i"%ɆDf\vrsp,3)y\O9KoMj?.DB"XT@硋(\D՜BЎq~v07&}{qv07lJk1"Q"H"iɔGl׷F8j/jD``%rHN,x7k(9IH`n7)BqfojkTNW9os"m z4cE6t)&nQN' M0r؀.BrJK5`} &ĭ DGhoo[Ř,  ixFCh潽QY:sF"q)NRnSքT0rxsahhn8r0⭉_-bHCCÉ4<~衈W^_0`'UNwN%)Q|fje0H`o9SELbj0LRo(0})3F9ޙaZ ^6ŧ+r1R7*@C`鮔\[Ne1c%Þ2֊be!s(2uAX2sV{,0P)7Ե`)3F9ޙaZ ]x0!ESܶ !0Y"% $@8""oh`VNQJSԣ`1qMKY*SELdsւ&Z*'1cG\HI w5`9[<9@ܓQJ" *`ԛ[i[(E" #)ELbxG7;?Ş8n*ggq3MIk)좦2ZY&v涪y9{aNizbC?z|,HbԛUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU6'1bȔ2i 4@d"ֹl@Cr -jk尐Y2&`ec()^TAx X>|$Mrr-Ȧ'o}hhAd"%&6 ϬpY2}{)gkE (\4L?8 ɔDkEIvf(IၘAd#CpFT;sVs[M ^qMK]uV,ufSY` lSRA]s4/1tܢl^ps gy|lJo׽V]3rNAO-QL益jZGn.ە|5-#AVLa'[iv* 9aM|5-#AQTb 7s?4 $Ǒ0LD"Td"d 0@)"`rZoWzg,x l$+hc&7*+aM6 Ş3ɰ́-{\\5< rrk`5mV,[>W06?Qe;Ş3ɰ́-{o5bVTPDAS^-m#qMKHWp ž F⚖ۋ"Bqf⚖ۋ|()^aM$TbD.K1LThuKA[rV C_+DEH TKHȷ?GJKOQUY\^+WZ~jq{`Xm0G$S'8tqsYVq 9ؼO&`{!`B"@=* EɟM!G8l~^{τ$s &.qB8ZÇ>uA,>NY"؝P  ƥ!pQ(:P4QLqhIƅ&N*؜8t5Z 瀔5e1Z @ D6 _*XJ"IailY>8' |iGhmg_NFր#Fwr.*PuA2p'8cRlN:35e1ť'rX-;ÇCUxFL8IJxӸ8t5Z kOJcKcN&<)OZwA4iiLqil%Bw)5JxӸ8t5Z kOJcL M( CmIxkׁg Vmb뉋mB5GAԌQVJcL M( Cm VӦRoRpI)5kDSpF _8 xEpr"  "i'*M(HYJI$RiZAD`T$H( BEZS&u>w)5֊` eQp-)!;ƒX&$BT\iLpT ֦pܤ44DQ6*ZS&-M(*jҘ0;:jiAT\ ֔ܰ,xE1ZSNrv-TE֔ܰ,xEeQpZSNrv-_*-)'avX @; "b -)'avX @; "r֔ܰ,xEQ`3ZSNrt8D񂨰֔IkSJֆ1PE%jcRiZҴqRiZAL %QҘA>4hiRUε4 i*Yg& #*ZSBw(5֦ *ʣagZV4QTVS,H(`CZSBw(5֦ /F :ҴF84 XPpV akCH0gZV4*J e p akCH.K:ҴEJ e BJcNҵiT\uiH|.qRiYVyji@|Rjp iB40Jc"LH4 Cbΐ4H .2x V̱̰. ax V cV DЀ4Cch$H ,JD,ε4  iLp>w)5X$M H0;ЭM*Bw)5奵)C"yBA\JR8U`>4HS,*)!;-M*Bw)5փ hp"fA[ iLq"fT` ֔ Zb$NxqDNYa"p\PkF4 ܤցimJs$ '$F)`\4H\ g b%$'rX Z[RĉC$ lEiLpAH4<O$¨ҘV\4HmЭM*Bw)5Z[Rĉ@ؑ"yBA[ *JcSJ֊bBlJ֦  84ji@|Pj0nZpwNZSN4z􅘜(Ҳ`4E}E1ţZ8t54+ '^ ^xb  ' 3PPXB2^ @HaHXxmBF!e ($<ՊMjE1ţZ8t54+ E&08kZ"5|hWMbqQLqhִE<' DkO Я%֊cF)8pj#Zyƅ(cF)8pj#Zyƅ(l*)-ֈáiXTSZ5O ÇCQ>4+ Qϕ#s |(!"@*:GX'NJTAj]q1s(TIРR[(P>ǝiǚxBX:X8OTu+}ZV P @'@> Kui NcϸO SVicδڴϘB\ @DC*@u>ZgP-X Th*e* KPB ' #"1L,y֞-PV< T>ǚNmZgQ'B@BJ )$Pu1d$ %@ViԶ`L-%*D^HKf>ڴϘB\ H P. N\Ti1DC< L;p *@C'|бtʕ> \NdrϠub3qNmZgAh!.P B"@  | :늟@3(P}(yd%-R|& (u:"@)}/PJF-qb >hGL*0@3(t[0qզ|\"/$ @R\@c >bj(}&@ R\> Pb.`r\Nb$ TTh&..p1q/4tB >bgNmZgAh!.P(yH1qu+L@ @z*P+LIDC< L;p *@C'|бtʕ> \NdrϠub3qicδKݥ:ӏ4jM'Ru1sf*q ҴZq-PV<&.lN:;Eq;掴ZX/%icδ,}Bq,y֜yT*i:>8%qS%icδKZX8OTu+}Z::ӏ4jM'Ru4jIZX)PZu+}Rhq^-PfZ93s/ftϔ9?sK%軜x1qU}mAoPye*M =2Ǽ\UP3nTǧL(ztϘ8{`* =? =nTǗX@c}I(ztǼϻP3u ?O@cm;( ?_E@99gyοG>p&G8=G8=G8#VBqc#6gΊs˰=G:q>qgϤgϔxq'gω;s_A9 gωq=G>s`qc#6gϊ gσ.t{8|3gρGgϊx{8| qpq4Csׄsہ9ogρw#q9GˋgτgX8JTicδAjV-JǝiJm f-* SMxF1u"Mx jT\5Q`°NKf>ڴϘH %$(ѴHBٙsj(V3LIv<㭗8^SͪLfmoRV&.íZsj(1˜/LK1LW(1 + :0eBH}+Ȉ6T*|0Ҿ@@N@J9y6J:gQ#&a"W I:1 210ͼDwHK˞lC% %B )!!)166|!9Pfo|8<*.yҾB@N>A}ATRHIHNhHI! BDBJ 9x6J !:gQ#&%&"J3ɑl|BNdɈ )4T`JF_" 'I.pJ_"!'" ϨTh_""'" 5>_"#'Iff6Wȉ Ȉ*6WȄ[+14uJ|AXҾF>`ҾF@NDG4//muԚ*0%#mceLP ml2NJ!9WI:2Bb";ٙsH"!&y)P) )3϶^1R! $>Hѡ !H0P\ *4$D$>ۥ R "!&yP JFB  3϶n%!F  3϶n6(@  3϶ZĤdhH!"!&yT'2y)"4Б@AQ("վRB$(Б6SG"!&l3%$"BJFՅ*.V  3eS%"B@B )3e| Rfy ! %F8 SfL|@"Rf)RI(IHА&&[3x[7%!F7( *Rf q"!&&mL>HJFN o8D(А67J> B@J5iIH"!&lϥ%BJFmLe& 8wT+|ԢBRRw[3p)"hHITĤHP6^\"R4$D$͘%% B!%BDBL>  D$D$ͼiGBDBLsEJ>@BBj !!!#BDBL١z G"!&&ʔ3_%HNJ é_%c)_a}+2qxWW dW#'/%HMR|JBrle+ #'/ &Ҿ3ɑ1%'/ &R@N^@@MRBN^>@@M|B|BBN^>@DMԯH:12a$Nm2-LPRI} [V"W-4yԦ0J>AxC헩L`|/XKj>b T%mZg[qKn*})&RqKn*})&}>jb mmZg[qKiHa %#lbpu-8j>bglb3^RvJ 0:)mZgRL:LPXI_NڴϘF&.0qSj>bgիu;j>bl%N[VdڴϘxrRLlVӶt(.J $[6W`taUCY#ff0`\Yw(f7#qlx6Pl!363`) 8`#7dudu #΄|2: pHftGYW:~2::Y> C#l3vu`Y>n:l'7fxl'7fx  Nn:6a90$Nn:6'7fa90ثa90417f a `ul6 Y lFő*"7f,Sfn:X/"7f, Yf1`qDn:X]3qb`u1tfl*"7f.aqbvl'7f. u@Hn:\ vY1u cqc/Pdu`Nn:``uugF2:`!l Yx* 90M#7f-2:8up/"7f Ysqc -(duȗP1`Tn:d GYmcqc `upTf2!c!`qa='7f YA&10菂0uun10pTf Y@/Pdut 6à2::[ 'f4\w7x3XyF6aD:͐Y\N=G:`' q9`'6 ǨE[82 ǨC=z}1GQϑQ9F&`G¾z}'Csx# |z|1s\Qφ{8vG|%0=G>4tz|sۀ=G> 9.#sQσ:=G>Qσ4=G>#.,=G>x xg[ fx?<m83.'3<ٞ3Y6g3 `oŏA1a!f,ًBbpFX>XODX1a\73 1`3Fbb,3(A+1p.S1p#f.qA[1p}bbo,Y[f0# &c\ј¸,Y+u'f0!k1}16f0Vc3 BaA  Åb8 F8$3@&8'30ÀU Ya هo3f2s`c+l3 T1 08utE>:etUàY Aàá ::qU4-i4OcCq3Ϻ_?P?>h_Ӧ|c`*?ggSԬx8T_gn:飿?)401y^}gu?=q3mub_?o??1Ā8 |E91mKG>d=G>&̘;G>'̘;Dsg3&9 3&9 bB R φ3gl!H)ͧ3&9<|U91~6wuQG> 3&9 bB R φsg0q tsQ91~6wuRs5tsɎ{񳿼\UɎ{񳿙R>| '3&9ss2cl>+σYɎ{񳿼>|NfLsߍ|fLsߍ[>_G>әgy[>_G>'3&9]4wG>'3&9XC NfLsߍ:g|NfLsߍ:g?̘;tϘ8ss2cl ?s2clVY9c$g4G>]9c$gEW0; 9jW$^vmJ|]RHFN>@Afԯ}zڕ$]RDJN>EjWȑٵ+^6||fԯIȈ>vmJ 8fԯ}zڕ"s!]RFNȿ^6|zڕRpFIٷ ٷ"o]>vm }z׮Ϳ޽vm?^6^6|BNzٷ=ozW]RBDNH}z{׮ͿjWII z^6|!9y!7]`z׮Ϳ]`Sfzٷ~vmkf>vmvm4o׮Ϳٷ󃞽vm"o>vm ٷz]<=f;׮ͩ_$"'c䞽vm$o犽zfԯ$'d^6x^vm61fԯ2T~vm6>vmJ)8#%!o)jWI )] ׮ͩ_%2R_^6,׮ͿW׮ͩ_#'db^6, zڕ 9y!7]vmX }zڕ)9y!7]R zٷ`zٵ+ 9y!7]fŀEfzٷp׮Ϳٷpo^6. =zڕ zٷp!ozٷp_fԯH !o3lP9K{`g!׮7Pv)JRpNv).Tv).zS\|zS\!q"اVv)0-?KO@^z20aDUf{Gٌ@p-9Ő/]%iٌn17-{:e`+z0qتIcq2]e?` 0m?fB|,^J"[cqa't:Ucz֙*Udzֈa ']/1=UV$) K91oE`'^ zq:a` z00+]Vv ԯ]ǘ];˗qu‰ǿbt951~3N2J׮}D"GL(}音Ō ? ?4Ta*LQ<Յg3&6O>uae3Vu놎Q<ٲq" \6t cΖX̘埅8)+Lp+̘= r9k89$q{D^K`W0;9!sp:9s8=?)P݀Xp ' Ɏl[N ?ٍ6W0RQ'zᣦF>- ?ط}B[13l?ߘ)P݂놎Q81:,gm6RfJDy[.pB Tm|ŵ ?mobm\څJum&}5;3LR'R;kq˜/P&3r`V*}Ayξ]&"i&"i&"i&u;E4ZN攨-iJ6.*P$\*Lң#J 24HL*}U4T!HV,qה*@!D4Hm]q1sͨT&|<څJ()$-[>ԨmB*rڧRtc9m6ZgPCh D$M"D$M"D$M"DΧh34ZxBX:)Pi:}i1D H#FR2$(HQ'RكJզ|Ɖ:}i1D$M"D$M"D$M"D$M/dev/null 2>/dev/null then # If the server exists, then check to see if is inoperative. # Becuase of the possibility of lssrc reporting an erroneous # "inoperative" state at the same time as a valid "active" # state, we have to check for all the non-inoperative states: # # 1. active # 2. warned to stop # 3. stopping # # If none of them are present, then the server must be # "inoperative". check_if_down=$(LC_ALL=C lssrc -s ${SERVER} | egrep "stop|active") # If any of the non-inoperative states are found, then return 1 # indicating that the server is not yet inoperative. Otherwise # return 0 indicating it is inoperative. if [[ -z "${check_if_down}" ]] then # No non-inoperative state was found, # but check one more time to be sure we # didn't just catch SRC between states sleep 1 check_if_down=$(LC_ALL=C lssrc -s ${SERVER} | egrep "stop|active") if [[ -z "${check_if_down}" ]] then # No non-inoperative state was found, # so the server must be inoperative. return $STATUS else # A non-inoperative state was found, # so the server is not yet inoperative. STATUS=$(check_server_extended ${SERVER}) return $STATUS fi else # A non-inoperative state was found, # so the server is not yet inoperative. STATUS=$(check_server_extended ${SERVER}) return $STATUS fi else retries=$retries+1 dspmsg scripts.cat 9999 "$PROGNAME has encountered lssrc problems. Retrying.\n" $PROGNAME 1>&2 sleep 3 fi done # If lssrc fails 3 times in a row, assume unresolvable problems with lssrc # If the server being checked is the clstrmgr, attempt another way to # determine if the clstrmgr is up or not. This secondary way is to use # the cllsstbys command, which returns with an rc=0 as long as there is # a boot adapter defined (which should cover all clusters). if [ "$SERVER" = "clstrmgrES" ] then dspmsg scripts.cat 9999 "$PROGNAME has encountered successive lssrc problems.\n\ Trying alternative method to determine clstrmgr status.\n" $PROGNAME 1>&2 # if cllsstbys returns anything except 2, clstrmgr is up, # so return 1. otherwise, the clstrmgr is down, so return 0 cllsstbys 1>/dev/null 2>/dev/null if (( $? -ne 2 )) then STATUS=1 return $STATUS else return $STATUS fi else # If the server being checked is not the clstrmgr, don't try anything # additional. Those cases should not cause extreme problems. dspmsg scripts.cat 9999 "$PROGNAME has encountered successive lssrc problems. Aborting.\n" $PROGNAME 1>&2 STATUS=$FATAL_ERROR return $STATUS fi fi return $STATUS ####### kX~oI םa՝a֝a&I bm./usr/es/sbin/cluster/utilities/cl_community_nametempla#!/bin/ksh # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/usr/sbin/cluster/utilities/cl_community_name.sh 1.3.2.2 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2001,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)25 1.3.2.2 src/43haes/usr/sbin/cluster/utilities/cl_community_name.sh, hacmp.utils, 61haes_r720, 1539B_hacmp720 9/10/15 13:17:22 ############################################################################### # # Name: cl_community_name # # Return the SNMP community name, called when using the snmpinfo # command and starting clinfo. # # Arguments: none # # Returns: 0 # ############################################################################### PROGNAME=${0##*/} PATH="/usr/bin:/usr/sbin" if [[ $VERBOSE_LOGGING == "high" ]] then set -x version='1.3.2.2' fi export LC_ALL=C # # AIX 520, 530 and beyond have many different versions # of snmpd, so checking for specific names like V3 # snmpdv3ne and snmpdv3e means future versions of AIX # may break this logic, leading to very difficult # problems to debug. # # To avoid this, an attempt is made to extract the # snmpd.conf file directly from the snmpd binary, # following any symlinks which may be in place. # integer count=0 SNMPD_FILES="" SNMPCONF="" strings /usr/sbin/snmpd | egrep '/etc/snmpd.*conf' | sort -u | while read file do # : Obtain a list of valid SNMPD files from the snmpd binary # if [[ -s $file ]] then SNMPD_FILES="$SNMPD_FILES $file" fi done # : Determine the file that was last changed by the user, use this file : as the version to search for the community string # if [[ -n $SNMPD_FILES ]]; then SNMPCONF=$(ls -t $SNMPD_FILES | head -n 1) count=1 else count=0 fi # : In all current versions of snmpd, there is only one .conf file : embedded in the executable. If some future snmpd executable : changes this rule, catch this case by returning an error in : the community name. Also catch missing .conf files, which should : never happen. # : Invalid community names are returned because the error checking : by scripts/executables using cl_community_name are missing in : many cases. Having an invalid community name show up, will show : clearly what the problem is so it can be fixed. # if (( $count < 1 )) then echo "-c cmname-error-missing-conf-file" exit 1 elif (( $count > 1 )) then echo "-c cmname-error-multiple-conf-files-$count" exit 1 fi # : pick up community entries, excluding private and system : and any comment lines which exist in the file # cat $SNMPCONF | grep -v '^#' | grep -i '^community' | grep -ivw '\ private' | grep -ivw 'system' | \ while read skip community_name rest do break done if [[ -n ${community_name} ]] then echo "-c ${community_name}" else echo "-c public" # default it to public if we cannot find the name fi exit 0 r/es/sb k:oםa՝a֝a&bm./usr/es/sbin/cluster/utilities/cl_netstaty_nam#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/utilities/cl_netstat.sh 1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2006 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)07 1.1 src/43haes/usr/sbin/cluster/utilities/cl_netstat.sh, hacmp.utils, 61haes_r714 4/20/06 06:12:14 # # A simple wrapper for /usr/bin/netstat. For AIX just call the real netstat command # passing all arguments in $*. For other platforms run special handling to translate # the inputs and output of netstat to be more like the version. # # Currently only AIX and Linux are expected platforms, and we will exit with an error # on Linux. # NETSTAT="/usr/bin/netstat" UNAME=$(uname -m) case $UNAME in ppc* | i* ) export PLATFORM="__LINUX__" ;; * ) export PLATFORM="__AIX__" ;; esac if [[ "$PLATFORM" == "__AIX__" ]]; then $NETSTAT $* exit $? else dspmsg -s 2 scripts.cat 53 "Utility $0 has not been implemented for Linux." $0 exit 1; fi ns  k*oםa՝a֝a&bm./usr/es/sbin/cluster/utilities/cl_ifconfig_nam#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/utilities/cl_ifconfig.sh 1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2006 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)06 1.1 src/43haes/usr/sbin/cluster/utilities/cl_ifconfig.sh, hacmp.utils, 61haes_r714 4/20/06 06:12:13 # # A simple wrapper for /usr/sbin/ifconfig. For AIX just call the real ifconfig command # passing all arguments in $*. For other platforms run special handling to translate # the inputs and output of ifconfig to be more like the AIX version. # # Currently only AIX and Linux are expected platforms, and we will exit with an error # on Linux. # IFCONFIG="/usr/sbin/ifconfig" UNAME=$(uname -m) case $UNAME in ppc* | i* ) export PLATFORM="__LINUX__" ;; * ) export PLATFORM="__AIX__" ;; esac if [[ "$PLATFORM" == "__AIX__" ]]; then $IFCONFIG $* exit $? else dspmsg -s 2 scripts.cat 53 "Utility $0 has not been implemented for Linux." $0 exit 1; fi ions  kꂅ o םa՝a֝a& bm./usr/es/sbin/cluster/utilities/HACMP_spinnerama`H 00P001L.textPP0P $! .data00 @.bss00.loaderg.debugR B(= ,|nx|#x|+xb,0AA D| S*N!A9H}{x~xHI` ,Ab$HA| @__start,M H4N @__threads_init!|AfH| FN!Ab ,Ac| CN!Ab,Atc| CN!Ab,Ac| CN!Ab,Ac| CN!AH8!@}N b,AK A__threads_init@AF2_1@|4!HHQAH8!@}N A( call_pth_init<8A L| N |!LH8aH8|D|EH8`a@a@(@Pa@|aHcHAbT8c HA8`HŀAa@8ca@a@(AK8`HHh|8!`N AmainPA L| N XA L| N \A L| N `A L| N 000@(#)23 1.6 src/bos/usr/ccs/lib/libpthreads/init.c, libpth, bos610 6/21/07 15:28:59@(#)61 1.16 src/bos/usr/ccs/lib/libc/__threads_init.c, libcthrd, bos61B, b2007_33A0 8/2/07 13:09:21%cmainselect|/-|\-|strtoimaxP00`000000p ererrno@_iob@exit@ fflush@ usleep@ printf@ $@ __crt0v@1@N@ [@g@ __start0! 000000000000 0 00 0 000 0000 000/usr/es/lib:/usr/lib:/lib:/usr/lpp/xlC/liblibc.ashr.olibpthreads.ashr_xpg5.olibbsd.ashr.o @VPDHACMP_spinner/5765E6200/520 __mod_init__malloc_user_defined_name __pth_init __pthread __bsd_init__default_char:t82=-5int64_t:t2=-31intmax_t:t3=2:t11=ar0;0;9;5:t13=ar0;0;2047;-4&fd_set:T14=s8192fds_bits:13,0,65536;;fd_set:t15=14time_t:t17=-1suseconds_t:t18=-10timeval:T19=s8tv_sec:17,0,32;tv_usec:18,32,32;; :t21=f-1;:t22=ar0;0;6;5 :t23=f-1;:t24=ar0;0;4;5:t25=ar0;0;7;-2 :t26=f-1; :t27=f-1; :t29=f-1; :t34=*-11:T35=s32_ptr:31,0,32;_cnt:-1,32,32;_base:31,64,32;_bufendp:31,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:7,192,32;_lock:34,224,32;; FILE:t36=35 :t38=f-1;:t39=ar0;0;15;36 __func__:V24 spinner:25RJVnrvBzD(*FHBn\^`^J&f pϙ$",PZ0`řlʙ. 224Z60B0Z0L0:00T0000000 0@0000X0000 0 000,@Xht errno_iobexit fflush usleep printf  __crt0v* 5? TOC0k__crt0v0k0kJ0k50k*0k_$STATIC0k_$STATIC0k0kerrno0k_$STATIC0kprintf0k_iob0 kfflush0kusleep0kexit0k 9gTN g.__startPk.__startP:__start0 J0k,p_xargc0p_xargv0p_xrcfg0p_xrc0_0y0.filebgk`)! R1@ kR_$STATIC0ke"0  G0]0o0.fileg:t33=-11:t32=-3:t30=-5:t12=-4:t9=-1:t4=-2:t1=-31+:t5=k-2:t6=*5:t7=*-2:t8=*7:t10=f3;;La:t16=*15:t20=*19 *<H:t28=f3;T:t31=*-5`l :t37=*36%:t83=Zk).main $main:F-1.bfei:-1@.bs8.es.bbdGH.ebd'.efe(_$STATIC0pk&.fileg-`k`)G` _$STATIC0kUH0  V0.filegi0glink.s g.exitXk(.exitXglink.s g.printfk(.printfglink.s g.fflushk(.fflushglink.s g.usleep0k(.usleep0glink.s gk(__mod_init__malloc_user_defined_name__pth_init__pthread__bsd_initcrt0_datacrt0main.s_malloc_user_defined_name__C_runtime_pstartup../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cWed Mar 5 14:04:03 2014 IBM XL C Enterprise Edition for AIX, Version 9.0.0.0 --- .__threads_init.__threads_init@AF2_1_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routine../../../../../../../src/43haes/usr/sbin/cluster/utilities/HACMP_spinner.cWed Nov 24 00:03:46 2021 ../../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cWed Mar 5 15:40:44 2014 .call_pth_init__pth_init_routine../../../../../../../src/bos/usr/ccs/lib/libbsd/__threads.cSat May 8 20:57:33 2010 _bsd_init_routine.__pth_init l oםa֝a֝a&A]bm./usr/es/sbin/cluster/utilities/cl_manage_signalstempla'6( ,01238:;_acdeirst-.4567=@AHflmnop (9T`bghkux| !*/CDEKLNPRvy $%)<>?BFIMOSVX\w"#&'+GUYZ]qz}~JQW[^j{`%b@46kL <֌Ig`nDTk9œۣ_=\ݝ`o3D*l!JϏM1 4?$JB\}(Ia&䍛[7L¼o9ڂ]"m!.IWzm X$*MbĹ$Ņyjm"l.HM6h1.IVlĹ%Z 0q8 mqu&qq2rKpTl~6_ZW,"QÍCj.erKpTl~6_ZP.Ia5k"Vk,"QÍCj.rKpTl~6_Z0^$ EFk5Ŧ$L D!uāKez4Vc&C#S@Uo]daֱ5K^,KY&[a!&@_b\_&4b%kJ`QHS+0izS,I1Y$بv%%~Lea^#/oҙc!k` )/ =J ]p }CKX$ ~|ip7I7L 5'7Lak.ŧ>@ x .Ĺ$SKK1.IdH%_&4b%kHW| 7L 5'7Lak,DZs Y b4V%%_\ ر.Ia"@U V2YeS-exdٿJeFa)2#z2VA:l^Kؗ$ ~|iq<ؗ$zQb\,yWycv%\Nm⦒i?@uPXrmG$B0|j$l[*׈DRrHX.k6SIl1 ꮙV67b@h~ DˉJBZT; xW,^ /uXW^F4IdUrH |H P6@-@U>lK@IV.}yb\H EdĹ$^; ` M% )0|i{@ U+@)?a2l~LodLٿHea^7E`yH#K,.I(X /jxd; &7v(rO>6S`0(!6d6(.I~B\ @Ĺ"]d.'7LZ,P%7 l2x ( S:l KJ^U7W^;%s~ +K0Pcb\gb\¼}cؠ8*4Qb\~?a^~-}70'@%\ PX$?4l6%f |/MHjlMrH%d%$Jkf\(X >-}7@%@4 䒁O/.'jĹ$0[:4q6 @Ĺ#f!77L{ KkP p lK% *͍.Aa*zlېHjljĹ"_d/lC,6hMFoY`*0Y# e2_dL ^`=R)F [6l'%[Hzٻ!¼}b JDa1͛YMxdٿJeC(X >-}7a@/B$[F@.I(h6%,0ec3X^blHe`Q}?z^\H/8zP CK`4\ .I(hؗ$a|&)]0SdlNH#MXGFLxdٿJeFakk E/:4&%K .I(DJ.Ia>Fҙن^c0bzl2Ko16O[d `Q}ZoZѲxLa8ipĹ$SKKĹ"ol~z)F l2K16֕n## 2a1 kHe7L(X >-}7a-KaXlKJ?d4 b\,}d0y0&)]0Sdebm"ە@UF#Yؗ$'7 ¼/o xdٿJe;u2#|ѱ- X$ ~|ip ,KXW_MrH 7scbUؙq BeR..I(yTT(t Ĺ%c(aH4.IdDR ,K@UK{Hh=n2E4+I` pUc(aHob\4X$CAo9c H X;'ˉk66$*RY=$LBKĕ/ZirQ xhCa|1Ŧ8 |dlzNonXW[%S, -4H` MA9Je{]D'] rK .uA.ip NĹ"o9cxb@lˉk60iǛ%SqaEb@h~ Dˉ!uāK%xF_n6i{]$7H4C{^KErDr0Āv7mIlcc\c1 4?ed@%¼#Y/H`KXWt0,.HX.2xͯi-l~djSqaE(i76kIȋ̦9555.'Q*qP~¼#H:(MdJS-4x4.H@V6$fĠU po%nv bUؙq2z%_`8b*6?Xq}-ZerKpTl~6_ZW,"QÍCop@`b;! P54qA\Ru*UgĀױBl-PbK䍛Y^`7 r_&4,ܰɎ43 ^c0bz4KM%i7p`K?$Sl ,K/Y&2lߤIKK@b(b\oE`*zo,+cn2)xQLLehoR-ME_M""x&#qH&2y7<1 6?]be_[a`+Lt*i'KXE s"cȇզL^$ EFk5ūL ^$ EFk5ſ$LbWW !uׯcH I," EVizo-A&7UrKMerKorIBgX$֭ kxv&\OYa`ؙ]^smIla' ̦:M {6L/KXE s"cȇզL2.Ia5k"V0H.Ia5k"V0-^$ EFk5Ŧ$L DE; l4U7c %0pB]b3&7Ob)@$W\,KA&U(M4% 2^Ĺ#f 4LAvĹ#f)v%i^q6: ~Zkxv"MWbePdKö%7L8;j3xl~4ltĹ$ 8^<6?^o*>y jC]cY%42UjO-f$B01@Ĺ"4I4ڐĹ%iycmfcO\j"+uR)ĀB^c ||j54I\@Ĺ"5I'7 j% 2%[$-@%cX]2m@ؗ$_&4X.mrK%m&ip䉲!.HU7U_7UElX$_l%2۲M@䉲6% |W&źdڂY&ߤ2۲M@䉲Ĺ!TVDol vI[Jưdpb\|K$6oҙd 7 /qi%d!ݒj!.HP!.HU7U/*Il[̾oMB2$_&&z1c+Sm$Ic$l[.i/$@  EKdLEr_&4-l1i$r0 XɇI]iMbܦi"[.,WɕY&Sd\Noҙe)^M5i[ aq$r2%ɕY& vɦM5r .16D\$&l*\|UeKlA.1c+Sm$KeB5Kl,KY'2o M,c.Y%g>Y=qʠ:'WzUb.! $$s~"a7dydNoi,8NopY&Y.@NnHe&Y.DNoҙbY|^ڱnUWzo"a7]Y$4'4)@4S '` rM5?$B0|j.xWHLedi9JedS,/Ma9Jel~"a|1f!EUY&ŽvmV/?(k4-3.HM%i7L+$&( 7<1 6?]mIl1DdUtBҭLt*jCj&\O^@! v'_&#[ CI(MJb#z!ɍ b#{LD`1Y&#Y[ #Y&#P4~"a7 $/;7JeY'cfjS,dLG\|Ї&0,Nlߥ2Ƞ*Moط DaUD90L"x,$pnY[ ZȠ*MPzo9cb@l^;.'?",ꮘYzUаr9&C\ W(0^Pc׈A EA&`)*WP7AA9JelPbNoҙdPl/P7A@ݳ~"M,Z(0M0|K$6oҙdVIMtiXPboy. ٚc뎅SyРuzU鎅Q2z2]u:1zUIBo SLo(M$"b#=_&1S,,PN$li)IdũL7V-x$ .!lߥ2Ƞ*M_7طXV,XȓxŸip S,`vLDaXb# 7@UȠ*r1 Āvv&\OY%L 0DY=qаr~:P$SzU鎅$B0|j.xWHLedi9JedS,/Ma9Jel~"a|1f!EUY&ŽvmV/?(krؗ$_&4Yiy^X.k6g"`z-WUjSŹl \ UUSyP;zC,}7&[++S}l㿲_M,c H cqؕq8v&\OY% Y+!uąe *iymfesOMM_$L D!uʇa-L [%.$&$oҙlU_&7@U_&ŸBI( ʿn`MH ʿMp/Y&2lߥ$Le0:M%c&[6lHٿIgaŸB^ /_dB_lߤ[b!@U{^ċ |[#K0ؗ$_&5!2F7?`ip70B|l@>ƣKlKJ^U7] [b\M[M0lY&~ +HТ% .rH 7Y&7G1 6?]bUؙq&ô%@쐀%2ʇfX$A.HT PI&}WK\ Ĺ$WoG%acx B 6 a$ؗ$ o*`@#A.ip*V% *y^XH1 6?\@knb-ؕq8v&\OY%R)TG$G] gH q<Wq4P^@! %@ +R-x@W:k Y!H'7LK$ |ߤ2ip4m,؀}\~Ĺ$USyP;R`Ĺ$WlPI0!*Ť" 4 ʿBMu d)͒ cKbM}s~fhl,_&!Y!Nli!DXT4 @쐀oYF7?`D\(Pl@>qؗ$ o*`@>] R ,K@U{lI6-.HBbsdILٖ7?`G\(% 6 c!&@b)6%%|ʓPLH4,K@U{d<l: lK/FBq)T;2<8Ql@>cKMMrBa| yb\PA?ϰ tK@4.IU99Ifv$ip@G͈ .1ErI@ʦw% . lK@U{( 7b@lIPGbUؙq; _# `jE`n<CRO<&svP)v'$b&e1f 011`>bA`bbx=_&*aA6-:U1: 1l8$%_&'UPY4DX$M4u.$`k2l8䍛axְPKK`.Ĺ$2M@Ĺ$[ 4XR4~Ledɳ~ͻ .'tl t lQ,.IVlUc+ip3*|K$6oY"zL]%b4?]$[ipX$a6q$IɉI!x X?MH|iperH &Ơ~Ĺ$[ bMbiA6Ƞ Ybٴ%%_"@ 0Vؗ$E 0Tؗ$LMJ`nQ-( 2B0(,@> J(*|K$6oYV{\OZƒ( t l8X$?li%rH f,l[ɲpdU4Ilߤ)7?`d4% F,؀}\ .I(<򩼨qĹ$S` l&vIK%2xK` X$% Yip/bĹ!P/ٓ1:rQb\RϔADo*OA3@LA㇠H4fɄ16Ŭ lyaJ_&4cQxѥ0*.IJ4"AfipĹ$ʦw `H4@Ĺ$[ bmq96 *|K$6oYZ4rĹ$(C͈#KaErIAM@H4Fv%  rĹ$[ +$%auaB vɅ |OMa>1:}~P;+V4Ib\h 6 q .% ̘IK&@ub\RϔADo*OA3@LA㇠H4AV%zax,\ @Ĺ$(ӐY Ĺ$ʦw`<% .Fv%, nX"Buiab\16) 3p`_&'&_&ybc8;L]Y[ C)6 |#.dĦY[ RlA(G]2sIL( ɯ ؂QqDLoCK+%ɔ&RJ ,K6ln@4rHQA KL6ؗ$?*ʀH4rĹ$WlR` [T|# 1 `Ĺ$7L¼o`F@!.IVlR~2s~'Lo`Kv =@l:.HڲLn-؀@uMĹ%k7L( ,0\jU4IlߤH4D3.IJ`$Af,\" rI@ʦwA K@U,M h"Dq`8 .c+$MYH 1 .l@>ѥ";䒏P*򩼨.!XzH% .`Ĺ$[ uq^oMuqF͍sfAĹ!Tbj>2&$ƶK-ƫؕLn FĹ$USyP;ldb|# X@4Ɍ6oY@U{Y&~f 0 *a|źBH m)LddKl1dI] ~4c+$MYlVI7,MV%,7He& ɴĹ"lPnv0`R m)Ld%$w*1)DFdEW7LvIn5}\NɌ6oҙd C$ƶK-ƫ$ƣ|Q<nR;o~cKPؗ$%f 6 `pip*rI@ʦw`GW V'% .!urD٢K$ƣ|q<=)&&Ÿiq8|1f)@`K ؂QdԜߥ2Y'cf)cd-ƣD<i"K6l|鼒1_)O hG ؂Qd+X"# T_'eZfdŭ22EccQ乲B,[qyH<DY&2lߤ M͒cQS(Si9JeY&5K_&7$[7 dd L`*_#CEW4>lߥ2ċX |boW>F% zebdJ azP1o"+Q7dA7&5_n5_7&Ÿ8-؀@ .VI7,yx{dS-$,\ db|#65'7Lɱ9JedLٻ!v% F`bF%%*ʁ.ip~Ĺ%iyo8nD> 7q8Āv"MWbe_[ L)'Cj&\O^@! $[2 i,-̈́v%Ɍ6oY@U{ɼc(,@>Ĺ#f%ydFC,7{\. tKeb\4K{HdJ"K䉼7 /uIyo9cxb@lˉk60܎WLѨW)rzO5.'c n>( |-'7  . -'7 ( tlYl^cl `tblK^P2.HM%i7Vu[:WD Mu[b$>9dFE%i [\J[b\-M_b\|l)1"'7m$4S;؀-CE0^c0bPzo9cLH *mIlcc؃!IKgTWb@h~ Dˉ!uāK`2K- .$rEc+$M[V{]$IAX$M )r tK[䉼an;.'aJ=4b@h~ Dˉ!p_!/M/^%*/LLk4@U4شЄoCKS-$4ip& 4!wC,i{@[6VHhx4.HM%i7{2^!ߥ2ٲCARv% *%xI'@U?$Aa!$XAa]0 KJ}|_7&2lli{@F )͒F% *%yUc"s~ fE6Hi5MK$ .*Ĺ%IS,.CA[b\ K@,KY&2M,`сKbe_[8#Js),H q<WB돇a-|xz1f6y{ϰUJVjm.I(yTTPFHLedq+WhW+Y& &ρ}rI@ʦw22Ec+$l[`@]5(M^$MA.1o9d4IK)-Lebmi,yo1M _'7lUƾLnٲM __&7LnS(3nc`f @4KM%c(%_&2M _'7Lmc+kIf@4Y&bL1{ Mf11of; _&5Eƶ-`*"LdyLH eC*pL6kKan,IKgZgY%e.猬:yC]q%{eaa9JeL9 KX0_2N3 %IoҭȠ*{v- *$9dFS+kL@_M e$ _[3? ,P1 4?l-JPH,\ Ħ~bURCKKeM,c H cq_[66+JU8|Sb@h~ Dˉ!u׎[1c%IطX $8c0nLeWiY*NŸ!rsyk,Y*B+C ɠ@CDJ.HM%i7Vazl`^ l[l'`1^HdYc+$ǖ1L1"M0M19p¼n>t@O] Yb\74!EUMXM5q16Dq }&ah|7LjٿJeVI,!q !e`L@CD/.HM%i7V!rH t5qyd;]!E$طHc0nLkdźCA"1cVC+bxn2CK_2C4ɼf$ 2xͯi-09Su6غĹ%k[fɯn<^-̓LRv-NjHr1f!@ٲM{f*D$[7L,+L% .lKY&Sab7Y&źtr3cؙq*ZiQ?b@h~ Dˉ!u%a9z'pdP_& aB 1l.HLIL(%sx!͒bI9Hea^7 B4Ĺ$Wm-Ę C -&8Ĺ!TWsYaŸV0r04ίId6/X$M%pbm)EUȬHX H av&\OY%lfWL xТ1 4?Sy ح|K$Y/nJeM%,[.W[6I_M& ri,Idٻ!Ę t@X.k6l1Y]2*C]q!{xLzBo9a[ Y&}wS,kdK%X-E&%7 lId۲M$ Y&}wC+( t@X.k6fBªK'qdP_?b@h~! {1$ǖ-@%i  47{2Ƞ*l I]c+$C|iL( t1/Y&2_&7Ld<`ؗ$lߥ2A.1c!供ؗ$lߤ2dy/Je@U{ؚŸ4#KEu$PKLebt^lc%iy$C|ߥ2$Y.p2dZK2@-c!Nom)Idy/bC,1[ܜ2l[E/p%^"KX͜L=)lr$1,%LkbeWs}c(%_&1/Y&2K)Y&s&&Y /py&5'7ĆY%c!NoҙdP^齘 7&1. ٚcY3ʮ,Na_B2u ]bo9WIdc+$XXbm%1_'7L@l%C"M$/Id vɌIbab$C|ߥ2@M%u&dP^Ee-@ ^2DS-H Y& vɤM%u&dP^齫H `Hymf_S:)9ykWH1 4?`*H%ɤM!9He@U PzLedXHde-/!iycmf͆?0RURhCj&\OUj"M^@! >v pG^?^"G^L<_&*\'sY!i{aa9He`B6% *gK$87lܲCi{DeVIX!% *g&i" 5cKpC *cue6I-\ wC,.?8 &,.IV2c{$_lS- y B% . ,K@UL|2s~*o5"X3 \^A``2%s- Z.ZR- ZNa>sNe5dZ]QXd ip훽at 6l/)_&7M,o I-\ DV `*_&7MvIdC6HpųyLC-ͥ2f1ؕIdlrI@ʦw&ҙd{X#d@G] 4 ؗ$a|MeD)2X }/59`` c"Z2 eH/2ūd.['0KdZX^Ne85x@nI7{2Űl% *_&SV1mdy $\|msY.@4"YbӋ,ↁy{JI2쓚rA:._!$8bٿJefdHpųyXaؕId)Ub\P*򩼨.ip l  )QՉrH ɔ&.B fa}xt(PK\jĹ$[ WɍyJoW[``X tKؗ$MXW[:K\l/)_&7M,*'7LeV-@ dVE0cKqwC,.?8`|E.IV2ct@Y&7lߥ2qms .p?dz4eCKX&RٿJeUC+$Vy8!.8v"MWbe_[ c~,IKgiԗ'0H q={.E㰖dB *iɌ"1=1`>$N T=6'*`R$LzlN6U^B )_!xBŤ - \odIS`|L*Ť$Ʃ>_PIS`|J*u`@Ĺ!TW[n2ȠMu. 1dcb\|{$ X]dd(X$M uISd.HB `d)@(.HB™Dab^%-rE lk!MerK/_7!%K6쐀k!M l=)N- ^oM2lrH 7c be_[6 Kg>b@h~ Dˉ!pK`2_! ֐KRĢ04^M" |/ieipu|+C(1ˆ_!k$!ip4RM%i C,[~l &% *f$dP_ %g blipwC,[~l!ؗ$MjS6oҙl2_!ȠB %.M,edNoҙ02BS THKY!ݳ~M `p%7 *_!FVb b5.IE/M|^B@FPK_!/ydX%_!Ť 쐀d;9/s I &ŀ*Ť 쐁3@M$/Ia[5tps~Y&afIY/V;0z7&1.ʆmIl1.²MƢ1 4?ed(a-|EF+QUġPWT7?IC,ip6H*1'7 (d KY (Ta$EF@U ?KĹ" ,P~$h $]pʿ.#ү(Y dٿIfEU P-8ip(Idb$ bib\7d PŢP("Q1wC,[dlX lK@U{ V-" oq:ftX$ذ0.IU,P2M%y.ˉk60q`Bdx=3[zOW$LB|H%-^)ŋģY! @UVi9He .eXNodPYd lZqd.'Ɨp6nHeWNMA.ipؗ$M鬐-@>9. 6odK@7MuQ`r- .,M,`xb@lv&\OY%CUId$LB|H%-^)ŋģF! @UVi9He .$8ߤ2Ƞ͜_!ŖHpųyXed lZqe) JGᥰA6 A8qW-Y!Ŗ G `[|s\ BٿHe .|.C,NW`pa8XĀqL6kKc?UIdƭeuB+/.TJLyJ k1-ciw2$Zhbղs-vͥs-/['2J hH $CK llR,K@ULct٧, a|ydK . FL20$Y#D $[&Idl) Y'5.HL9 E`[4/Q`:I؛%,sS+IlYa_e q0ɱ@KY&Ubk@PLD(c; 5 .<ٻ!@$& lK@UL|7$[7JeY&Žf&ҙd 3 &&ҙj,*o5 ( 0P!@&vAfjpip 7{2lP*.IV2c{$ʬ[`X"#KodTdip1odUyyy y( Y}\%Mat6pĹ$[ Wɍy=xt)IA% *_&RLn&r1f)!Y'0 FY&T4FVIoҙlU{7Y&/yo9c Cc #hJ;.'l()/Q] Na2a"%_`8b*6?Xq}-Zdz\/k18D>2a2%_`8b*6?Xq}->S`R <وipL@_ }7a@ l m%229F&S,FA~b&S,D\݀ds` }U6I$J 66|j M{ n29 > xƗ"VkOY"[`5'׸6hqA~b`82 Rkape݀ds`eS<`* }h5IA`8}&]36j'\v̀d!aO<3KHS6k"i' jR_L)^$ EFk5ūL,"QÍCj&rKpTl~6_ZɂrKpTl~6_Zɉ,"QÍCj& W,"QÍCj&/KXE s"cȇզL,^$ EFk5ūL1^$ EFk5ūLz\/k18D>2`@^$ EFk5ūL/KXE s"cȇٴi\](?=)-+S,o6^B \OB/ ܐ7TXA sT7#r@^ R\$ )0/R\1xHb/)!b {op@o/ F䀽2ψ'3sT7#r@^ Rm6p ܐ7TW1'xb7%2CM䀼1H'n:Jep 1|$ @$26k"i')eL.^$ EFk5ūL^.Ia5k"V0!/KXE s"cȇզLk}\ረmaƿ!i"%_`8b*6?Xq}-Zdz\/k18D>2`H^$ EFk5ūL }\ረmaƿ!iz\/k18D>2`!/KXE s"cȇզL +}\ረmaƿ!i z\/k18D>2`"KXE s"cȇզLerKpTl~6_Zɀ.Ia5k"V0,"QÍCj&J%_`8b*6?Xq}-Zd.Ia5k"V0W,"QÍCj&r%_`8b*6?Xq}-ZdP^$ EFk5ūLk}\ረmaƿ!i}\ረmaƿ!irKpTl~6_[b@h~ DˉJ; xEIA @>rBױAb/[5.2^Ƒ)( D lK6oS&8d&sKؗ$Ls \v lKA&BƗb\h$wJeM3.HٿLDXx4rK6o*n2|nL_~ٿLd ǐ xv%\NmA*֭ǐ xy7/pa*֭ǐ xy^MXFWոw`/9K}(MPrF JeyBgNؗ$lVh[ҙaoEg~ϊ\HH]옉!,sx@UC jNA(L"DV>Ɉ< d̈ip6f)2Q<@1-ilVչl inr\'([*pL6jZ-]-pKۅ؋q4i{yBg),>b $^&@#b\~ o /s Bg),>b $^&Ĺ#f) !5&}s"Eq&#I`<\ ٿ 5(LW)|hŸ8n2\mBg2+\e8e`옃I`<ȆP!lߥ2"^Љϰhzd4lߥ2KCK"J>NA`9"6@ lK6oҙZ,%ٔ&}Y%2"6@Ĺ#f)D4)Bg),>b $^&(.HٿJeh{`7Ȇ[`.% Ax %2 5G.IlxjcVV]_Q2yP:I2<Є.|x\N/lL $ƣKĹ%Pi@Uf)Edip5V"JediqK6o[)L1X$l߭4hHId+Ie*6䍛 bիrP/ˉk6*rP/ˉk60k<+0êQ`ACj&\O*_W!uąi@H46o&\$ tʿM0h F7LL4X$lJelL4ؗ$l JedhCK fXj<]xv&\OYW[ /ˉk60k$dFS*I5.'^@! $/ .`,.Hٿgcr .zĹ$ *~r1K6o*JeV bePzոyL6kKcFSDTjĀq8?ߕπ}c l&L$&|w\6oҙ0E(LpipX$lrXP&x7.HٿIL(L .HٿJe9BgA ;0 BC,d4Q6$JepP_.&A9ũLBg.96%7LJ>.&i)5&xUb\9YBg.9Kb\VS,.ZMH dž*pL6jZMH dž*pL6hiqʿ&|w\M-WK5MLcUPDCj&\OUʇ~T~ >2]q"ooJd(LB.^Ĺ#f)s&|K [7)PK.HٿJd(LD4xab\~ѠsɃ Bg/'I9~4%X$l@rDL `at3ʿ\MkfsR03ƗJ.Hٿ 99L@>ȥ Uh6o;IL:PK lK6o8^ 4`Ĺ#fs2$3ƗX$l߭4hd% 9ۀ '8JM䍛Bg2䍛}){H% ip-ҙcYBg/Pؗ$lX)~PKV%7l%2pv7cؕq8v&\OYW[ /īñ2x͡ (CSb\~i{i-ho&1*ZdirKpTl~6_Z"%_`8b*6?Xq}-Zdh.^$ EFk5ūL}\ረmaƿ!iurKpTl~6_Zk}\ረmaƿ!i}\ረmaƿ!Āq8?a{L! b1 zD^Ƒ)A^$$M2S& ipZ ,KA&U`:@>ƗI@HUX$l&UD})! .,K6oM"S,ipZ KXƒ,#6o*۳ҙaP^s֭ǐ xv%\Nm@Td4v ,KuiBo2!> Jl=!ഢĹ$jjy ׂ/^5?h0<@U{[ vG/qPyJbfcUàؗ$lߕ~TS,B_&2ʿn2A$7E 4PJU@رdٿn2A$%2N@b)4He` f -^3ƗT6% P^Vx/>4+  uqv לXeh uqv לeh0<@U{Gk{b. Ĭx;5 xͩDok{b. @U{Ĭx;5 xͨӮ8O_{ &D`l7hàܤgR3W%4W?M~8IKQ< SEs:H7zj-yyԬh0X_ZzO/= '֞ OBDТ}a}iQ>(X_ZzO/= 'ꞸuQl]5Q6l81L ?B3JB3JB3JB3JB3JB3JB3JB3JB3JB3JB3JkWB ?G#19rZO\Vz a`ІU RȩRVuMTR! jY*W[RTykjm*W4aT-TEMV[J$vLC19BzJMS<陪K'iA?jTY+ZtS҅eQ919B3ʮUҹe/iAD>3-K"JiB&je;IQ;@0!f8#Z)FAn5Բ*T'SV3ʮFchZ3̔!ZڢV 4bf8#Z !elFp,+iTLb0  &3-K" V*\I\ID!¨Z *' @L0Bp8G*4]mOUr֤jrOYp!jUjTȪfIYkT5-t+T4]mT^bkhZ *!f8#ZEJ҅r4SU3W\*W45=4aQ!PTNa0,p!jY(jmS<0+1i<(hzU<!¨Z *' @L0Bp8G*4]mU\YlTyhOD5Re( r¨Z *' @L0Bp8G*4]mOUr֤jUjO-t+TjTia@RUjO-mS=ef .iFjHYj(`TJHUS4tZzVQA\ z[h]H]M<4.t`!4㰽.9m{o{{C?{ y0{6k38 7`sg?{{b7{{&g*M{ٯL$͟7?{{{c_Km{o{{{&g*M{ٯL$?{{o^{ G 7f30{7?{{{c_A~C__ ?!0ÑႉDaQ( MOL6Bq^KC!zOTxs/19~3EqtG37WJ}SZdW<1\zɤyT̤zs)ziꮚը *)lT^a}qTOESIZG_TVKWB~Et,Q9KWB~Et,Q9KWB~Et,Q9KWB~Et,Q9KWB~Et,Q9dU4uбD]*t*Т䪥r%s*̤zkWB ?yU4jj*\I\ꮚ|J[猬:yy&LU!dQ'0g]35Ut"&h01!ny*OBڬv+ZidZpԲJ[9ȩRPRТv jGT*,jB(TSJZFa1TzJMOM*i=*ԵYl+KJ(+JGMSEsΩJUs<Lj@ :x`}'` QL +,,Qa-U+i OTttP 4'M"+hOP…R%P_Us0A}UIDy!lBAm8y֜( Í!8$ P:xUS(OPEcʢ+LJ[9-U+i OTttN0x`;/ 41iSm|I(`TS=C TFe%zVDy!lBAm8y֜( ÏHN Hi8T0>l0QAXErzZZ*-m%R[$GJ'O|` p(?dT]mS:zg CA8jY%-iRh0 Im4\ӴAEsB%zDF%\Ԫ%Vc4]-)WLM=rP?@\0KX&??U"O9A|J1UUZaӧEsQO=RBVk?"o{ae O`y?{?{{{j9FD5~mưDe apPX! 6F_k ?↰MRL ZɃ+k$`. @I4 07a;C#?goPRpl ?qlCq}Mf ?F;? 7~1!TSQo+z8Ñqf1O:H7yUU1P&o{x&ga&,lOO{5{o^{Z<@I5T ?9?!g{{{~k?I{m{o{{Z<@I5T OO{{w?{_{3ha&lׂfqP&o{?!g{{{~k?HMaFNq1Z 111Ț`=k  dVk5* 5"Xbb%~n7AHqPL6J τKYXe1ЪE}!8$ ^D*tΞ@US(OPEc+H\cUdJ(+A}UKm!tIꎔO:N}*u0u O; !>c6?m{o{{ {LυT ^ @I/s ?S{^{({3>1P&o{x&ga&,lOcY{{{^m{o{{%{3>1P&o{x&ga&S{{b7{Z<@I5T OcY{{{5P7̦3 =+cyJ  p`r܅ I")hf`1>Ϟt5U2[$ PV0QAYb ̦3 =+m*PW*Bl(uB$*u^@0uN0qqqq"s8< h;8 @Si`}'` ̤`Xe1԰[$VQA\ z[i OTttN0|`? }1}Si`}'` ̤`Xe1V^ҶlXyEr/m.=Q҉:t/BpH4T0>l0QAXEeR0,W2QUgm%R P_UsH]-zuу4_? zBpHP*t5U2[$ PV0QAYb ̦9T+sҶlXyEr/m.=Q҉:t/:BpH)򶏾[$ (U(UW=# T\-mO!m>,rȉ-NVӈyǝiˆP88@ŦL~Wϕ}'aBF/JRYIDy!lBAm8y֜( Ï1(pT皪F-z (+(UТ /FYa-U+(UW=-':Q:} Bӧu_EBpHpT皪F-zR0C T\ E=C TFEROT*EG-[$V/6KdDt`]i/g`n涰*k p 5a8|(h?YWY  hyFaRBk 6XT"5 aP*Gk ʚk#-k5,M/k ZP!5Fp.)?Y8N??Mg5'XfXfda#Xf5k -k A<؏tqV _ c= S@?4(Q@?禕JBu BR]5crO_B/!*]"?Y_~~(W/By(W/c=3c14W?0HCW9!Duk'U!k'Uc:hUZyT+?,Y:VY=u?'uC?Ut֬Gc锶?%j?UrWcЪ!+HCHCBRhUZHC%UOM?ӧP_QoB/DHCVu_cUҪU+?HCWM2BNY=ucT*GBY=4!Z?ꮚ՗!*B?!HCOHCHCSj?!!!MLt*?Ut]?cd?BXd?TJ???VTB$B'BN? ?!W)r!{BB_HCwcQc8妷?~CU=4AGH(`B ?5 o_ GRHCHC!Q!Q房!4?!4 !s)U+i!S憟Od,VV)EO!4"B?h !4!4&B?jOk)h?!61?ܟO2?BŸ㪹)kF$?dE_MȦo4D XT7o4(o4i+Yi X&Mb X X&Mb?`57kAiX~7k$o4,~7k$_iBo4H!7k$?`5wyOo4 [o4 `o4 yL%7k' o4Nyp Y=Mypi!~7k'M/ypi&7k' M&Mdyyċ XbIi1k Xb7k X'M8Ho4 OyMϷiMϟo4~&Mg/&Mg~7k>2o4}7y_&MgMϔ7k>~7k>7k>Ui߰Mϖ7k> Y`50o4| Y?`5?`5~7k> YMψ_MψMψMϏ`5 Mτ&MgĿ&Mgoyio4 7ko4MyWyWyD/o4M?ɼ\#o4Mщ?iCo4֌"ya Z0Mф&MhĿo4֌&7kFɼZ0iMщM3i3 o4M2O&Ma]M6`5di3o Xf5p~7k yei3yoi3*o4tM;?y@8&Ma Xf7k $i3`5byDo4ɼXf#~IXf#yɼXf$~NM0$i3?M0&Mai3IXf?$&MaE5a7k ?ro4’o4o4M0i3 ߰M0i3 M17 Xf'~h5bo4MCMBo4~yџyГ5&Ma]*&Ma_M@ XhO,&MaMG?*&Ma&Mai4 "o4$ye+&Maoo4 2o4 `5?7k y=IXhUi4؛5MEyga7k +o4~h5?&Mai4?o4? ɼXh Xh5yCZMAPMA7k o&Ma&Ma?yHy ~7k 5 i4y!BM@7k /y#~7k ?y$~|5'Xh%7k o7k w牼XhFM@i4Di4di4`5IZCyRo4֐7kHIZBOy"o4֐.-&Mio4֐/VMyLM97kHDi$ Z@i"Oy/yi ZAy?MɼZ@Л5*;&Mi& 7kH[ț5Qi"&Mi+7kHai!2o4֒&Mi ZAyy`5`5`5?`5~7kH#~7kH#7kH`5?i @*&Miy ɼZA'o4֐!)7kH?5Moӓyo4֐$~ZM&MiˉZ@o40/ PWF (+`FR0P`@`zNO+䚣u EW(+EjRzNO+ʢ='Qm' P_UszNO+ v7J52*x꠱T* D 80@CqMSLTEZH"uTsJ*Ȫu++U=~CUK] yq:Q< S֡\(fSUB!0-WM~Da51Z:Y=>Ba51OO)d]t r=rW]>Ba51M2+0<ΪYVa51̬DɄ\+ZgzHz'WRzgIId4Щ: #QT#tIzUEtH9kWM^+5*掅TW8ȡBc/zct*hHcU qqWTЪ8*'Qz[ZLMJ^De1M1¥s)d*Se꫎UUWJSdƢ\cOLƢU̦9T+xQ%Uy] Q䥓U #OJ1ЪzizTƞE4(FjccgO\t*jcOJ1]1г٢Q,WMOO\uWLt,=*BX9CMO19& '2uVE3ƞjcT$Sœ '` rM51ZꮘYidơ\(RU"Tg] 뎅SMLiV2uVE31dƞE4(Fjc`t,IŒzUYXRUW=1W4~i^-ky gPy 59]¸kBJ\ȑDpӝuؼPPQb nFu Q4u[Q²WpQ}G\5P<q5PX9D%/</᪁̊#Y]0n6UGB:n6E[ϣ"r$w_F ;'/#J:n6UM*uyވUsO [B}ވeBU4.66U4󍺅z"j::nD_ TF9A|o BD_ qDiHYT']m m/8I4/>8ۥE*I\5}ys IB0T|;'/8/ES(]u}:㪂%jy n6E誠뎸J^DAPvN_ uPYT'`mz"Khʡ;oE*IkZJ`F CPvN^6(U BPۍE$jd6͡?|5IuU [(BEơZގk}gOY oJ\ȝzd59)r'"yl59)r'"uǏuf>J\ȑDuF!Bʡ)z`\;'/:&qވ鞩4/6R%r>D_  P\}zЭT/ۮo8~tj)}H[̊ u!nr"iOT/m҄E@.m҄'mk} 9)r'"yk}9)r'"}؎l5PJ\Ȟp{ȜH<ϼ9bϠG%.DNG^ϡG%.DEwنK9AYK9DنȜ aȜ"AZQK9"AZK9"AZȜ{0ց9)r'">H=k@:$G h#"r"{0ւrRNE aB9)r'"uȐ{0օrRNDy5u=fмJ\Ȟ( hO"r' hP#"r'Dن(QK9 a $rRND~{0ֆrRND{0քECZ'K9:,%(F z윾WL(o|1ʪN6\O #>D_ eeU2Ql o|1Q!d'_mנm1zO tC|1UsP:nqވU8|W%S‰ nIUZ4Kph_ 7(=0ӝv/YCӝuؼF"k(@9bk(B9b:\5@x#Nub\5#NubkuQEku:^+\>^ 5na#u>+\yskuD^̲M51 nP!]uE n4Q#"r'PE[9b\5iϻC[F0ˎkutp#N ^+^usku瑧^+^}sPѧ:xy4Eku(ӝv/["FW nP9b\5ӟv/UAbUa]wȣ9zcWLQ e6>JZV(ypS=S9hNПmTѩa:o(BE*IR}u x$R)6o8}ȥzp"T^}„-CQ4']l@E**l\m#Tut 9YsaB1y]q JѬOmz(U\']m}+>'}+/O:B} e[}NBNۯ@ۨb= '|n8j4']m.6G*MPoj] xo^DQ5u<+Lu4)@:T(mz%eyފ/ ̦:h 5B;pց9)r'"C!#Nuؼ#Nuؼи9bkB4]a ӝv/CZȜ҈1$ JzYDu}UST'Q6ͺ(ꞵ2Bugm1F ''B}P^55,JP#SQbpDۍ(XuPDۨ[u QN o^6Y+z)D:z:RNmCjSQePDۨ[u QY yފ55Va\06o^JP9ZhYZa)D:C‰}U"D6FhP<Q -!m Q=jd0뭺z(V^Nۥ6F:o<}ފ5iHY [yz(R咹hkDskDsZ(}ȼqs0ӟ(aѧ>~/!N|/!#NuؼB9bd5PJ\ȝA|,K9DuIdۨb:tM [u QƪpJnElо-Q=pq^ފ:LuPEW [tz(Q4']m珶F: !:o BEQW45}Y g#"r(CYHȜל+Lt*Cg8ӗ8?)親λrUW=1TDЇgy,#,W2UEqRUBEv8<+R)P#:aב:^G nJ\ȑDaӝv/f@J\ȝA:z5 qފ9UW [}z(x]DQT!ue[}NBNۯ@ۨb= '|n8j4']m.6G*MPoj] 6} 7瑼rs)<%/GT*qމY}poEeSpo 8kzrRNEHPꞑBu>oꦍLK [xBz( F*$R>'RE3‰},;Jӧz:hOU@.PމE y noBPDEՎO [tz"j&Q6}5 Q [yz*gzG3 [z}aHȜN[#"r'"yS%u *bJL!ȼ2Qp7P#Tu(z4/Q\rL5>DU K*'a.#:C nu\\54]~/#O"r$Q BJ\Ȟp(JhꞸJ]D(yJ\ȝq:4W I(y'2(/q(z%R)҇҇uWBPuPz%i=puPu ocuB| JdRNۨOo^bJM50P^S!eumU4 [}z!BPu'}aȜ؎tШbT%'GSJR &mVuPum-OSI\l oy:no3=#П/Q*fu0GܝDUHxQ6ocuyމZtO\']m z*u(Qt/mנmZQ6}P:nE-4WUtШ6}-"zs<Нu>E:S!eu>Pފ/$RAa*Pk gk@9)r'"yd5u<G^QEUЩ:JP<DTE3m\(m%Ea:g(BD9EBuϺ R} gBo^C hFb8k@}DrRNDH-QK99barRND(x FZ$(Ȝ kDsZ(K9 #"r'\yd59)r'"ykrRND"y:Du!uOE뭾oerU<0m z(Ϊe}-QQ!d'_mנm1Fu>}PuW5 }裍T\O &(yފ5 .-z(6 ƣ8kp"k(qsYCȜQ arRND k(>9ba9)r'"uH<-(Ȝ~#x[ eK92WpѝRiq7\?QB놷\B,/]5\5΢2&ku„n(:\F+V^u9)r'"'\?W%pu:i0͸EUqЩ\.oEUqW4Пm(Qt.-*: !uuכu UW}B UWeB6}誮:fs <ۥ6U\uP ]m珶U\rWBy@ފ㒺N@EUq3UWSEUq:Y<.}U\e}誮:gzG3 m z"kuHȜ":`Fxt:$:#9  !en6)0f1G(`j31r8FRc9 Flp3#aؤp8@f1G(qH96 ƣ1r5…bQa07!k &9LhT^yn n9)r'"(C[>J\ȝq:t*fJ]x:qՎO :ۍRRY,']m}褤]yПm2^}>=^S<:א#u+^B^<y9)r'"uǟ+^skurRND 8+TX n3-_u:{kuK9Du$_}::C[G%.DNkuȜG^+Lb +,_Br:&mz(鞩4.oER%r6o BqzЭT.n "tj)mQ!nr!̊ ϶믢B8T_@ۥ!m O ۥOE#!_tQ{0Ȝ$+O9ba"r"zJ]>9λ H(: ccr8G Fl3F F$#1.R8J6a1rS)PH(: c8J5G Fl3F% #U =]2*<:0Ѻ} !K9{ktrRNDDG^><G^kt$iE[G%.DHAktB4J"a#"r"y 5b(|W nyt(ba"r("Akuiλ!K9Dp(ӡC nDJ\Ȋ"AkuӡC n(G%.DPDpB/C[]G%.DN[^FY n}:H<B}s!(K9Da(QΟ\54`نPJ\ȠC[JK9J\ȝE]% KΠGS+L(qފiU ΟmB~(,BJ\ȝPxY o:@G^\5ӝv/[Δ#Nuؼ,q@G^yrRNEDG^yrRNE{ن}HY o<}OkyӢpQ:^+D9򈼆zbxxxky:^+us0#N/ft o>3kyӝv/!@:(} 4kyHӢaF^E o>P;ϿC[Fi}SʭTG\5}g`\5}iλNuؼW o>9b\5}1{\5} 4]pHӝv/[F\u|W o(F/x+8:1x@4Pkyӝv/[Fx@}skyiCC[Nub\54Okyӝv/"#Nu"(ky ӝuW o!ysky Q[ON^E o!@9]a(QE(:^+9b\5sd5rRNDkyȜ1{)Utr'D]$(Tgb/ 9zcEG, De4*N_EJ('W D+-rR!ۯxTe1M0]ws)UҦzxQys),Cg\Vgd‹¨N^X;|dxy+5V[lu!fV"VuE°C$ȢUiKph4*fT!!]3^]yqƜTv'XSEsV^<?/U\+%ECgEuBqƜTvr%su 9zc(<-yU4sNz6:ELhV: 9zcH<*,PxCd(|VuE± "ZQ P;\q/U,qfy+TOlu!+/NzaDQƜTvS6::Y<+y u (Y xWiKpnK'qdP_K$E0{¨N^X;BTFe1:zg9dxCcUiKphOU)m0ȼ+4ꥎ8CORQB 8ӗ8@QrWLѨW$ѧD]8ӗ8݁"Lu2Olc O\q/U,qPªTҮCd^+Ua|+4ꥎ8C_(IzXsCc y îU]2*<-pZ_=U4rT^%E]QzNJg\FuEt$FuEt)uEcL,Q:cLM*ME}qƜTv|9dxCŒ)lLQ4!/$IKg:&;y^eP_UsluK-TMvx]*U9URTe,Q4!;je*,:exPETDЇo9Q<^+9HUUtUs K︌9Q<^IBԗJ_@*rx%e)} $`ʉI+ӂJ_`ʉLΦ#NTO2/+VF /*C I*')Y*0>*rx[54g5%+*'au! }!Py 51y]q KY]0PۍQʪN6FW%SChOFV^uS,FD}^PzO tCq\+hNۨ\m5SrU<(tz(+m珶EAn5[Ѿ!HȜ҈1$ K##S!eumTuO]PD6za MPz(_DȢetR}uA+&m1F&BۨbZtO\'`m}r]S I=jun6U*&BۨbJO6F+Пmr\G4KM +WL%'#1L(qފ5R)Moi >ElоPBz(ꞸOmנmS!']m.6G*Uu(yފ5M [yQNBNEjG, g#>aӟEYrRNEH=V hFvf:J\Ȟ,TrM51 hF&TrM50}GI6o^%()Pza@n6P*O$S (BE Uopց3{0ց 9)r'"~$9b8k9)r'"A#"r$Q k4PE\#"r']!rRNDG^8+TXuYCTӎcFPT*WpP2<+/Uq e;jUz*AuTu[>~z*BKl6U\cV:Y<']m6U\cBPhm,@ oUY:Jm 6U\tTg\}'m /[ Fxq 9)r'"uxY n:#xriλ! K9DkuK9{p뮣NuؼW n1{믣"r'\xG^HkuȜ?׼ L9]@>}Tg\mE2Su"BDzhW4']m 6U\t)ZyBuПqފլέ<:hQE**dU4.hB8RRYT.} B8Qxu 1{\5$iλ!`G%.DNȜ":^^q]p&!l32n6f 0l#  dL([G(C1b(`lbFq CcA*H\lh3Cl8[J2FR1.f!28!u`j3#Qc9P}n1b5!P61Jcj8 au an8cc7uP0f8qPڧsD:0Σu<yiEkuK9AY KG9a0ip9 7F!}r6 %0ld,(`Q ql‰9pl7Pf1L.lu1r6 pQ 68bR3F3 _ln CQn1h3P}) F0UfBƩCQ1n`pR 8]lj:) puEaא#uC ntQxy9)r'"uH<ziEkurRND _q{hX~o …mנ/C\rM51в_uO9YlM Py*d.oۯA^+I:G\5} KUAb}kuѠAiz,U<Ρ_>/ UAb}4} 3xY n 9_N3ơX} ۍUЦx4.}m1WB-9MzjZ]|gm1J\8-U4tTg_@]S+u y"TiuMg/d|eqG\5}nQV놷O/ %P_UtMpEl5}rRND{qW4L n>e K#iHY qPXF!:nm1в_ym.E(Ȝ(>١UopHλЪP\5~g_>PJ\ȞkRRZJ]@:*I,ά]>}+xV*iH:}z%J:S:t&ПmQBL(BE,Fq!t&zz)e2*Jͺ+5*6*gR-+<֮]?nBۨbY$u6Cͺ*IL~rCK$ztCo<}1Ez/U**Uku@!#"r$ A +Ri+P>P!qT$S ۍȓP m.6*/S zj(yމbWTj*U-p@mT^0\TBo BEU5 zu TXJa:o}P^_Dк}yz//h]>gۯATWJ\Ȟ@#y-qʠ5R):((Ȝ>YzT\%.DʭJTK%t+UsO כq"zs=3BunJ㪙cEP}PJ㪙c:oۨbLOj(u כ?pEUPy[*IL hOE㬽T :0#u /qʠP#P_Usy}Bq^)T\ƪE3 "U4*ʕ]t M$-)T\XdDΔ<ۨb玢&&yu R/鎢&&y)T\YzURT.u>oR/鎲R/]Co Bn=^UV^_D nqJ<,Q:J\ȜNxY ny:#x:ƪE3\5n{jZ䖸J]D}O9*U-qО5R)Q>ۍJUrK\uW%sno^+UjZDY nBJ\ȜH==qW4BR$HtrU݀9)r'"u:]$S K GSj5U$iSB(n#Ju\5ep݁ Fx݀<$+JFx(u<$,JG%.DH":C["r'^B~#x/\M51Zd,Jנ85UTiSB(n85L.<ۨ[?QUQȢP?qTk$](}^\u"pBb`Akt 4]ŐB$rRNDx((F/tTMM ҈(: *뭸E%M PumW)ucuПmRrQ [(BE%4ԨT.y^ފJ#EJ*Lm.6IDrM50PJmNa\.6}褢9ӨNEky:^,u>H!#"r$Q"wԮR&U K!GSjTj'U '[q"QM Py*Ut m-*UML(m}誡T`zUB}'㔶Ja#:nrI4B0z T56pEU ƞE4(B󈛁"HcX@PRӨVP:P m}誡RjaBhOEU TOB(yފ/[#NuؼY o:9)r'"}Ȑxuiλ!^G%.DO"_Fxt9)r'"yHQ׼W o<4]Ő#"r'^!G%.DN珣Nuؼ,@J\Ȑ׼y1z+s[#"r'Eky::!p CXƣ0f5\l:HkfƱ C) cñ7yb8!cQv3/ G5j3cX}b8!cQv3Ƃ C) cñ40l:HkfƱap CXƣ0f5`l:HkfƱBP^J^}svp1L3#ñ7!qp1L3#ñ7aup1L3#ñ7yp1L3#ñ7}p1L3#ñ3lf8 S #Hƣ0f5(11;cC c0b4j3cXBp1L3#ñ8!p1L3#ñ2J²U\5kyȜ莽d5rRND{EuW4jgS3 KϡGT,x}}WB;RM50hOU@.PBz%3txNۯ@E*Nۨ\nI5 !y?(Q=5Bt:Qx}1{ϡ\5>]UR} ѨyME4tLa-/m9UW ϾSGUx^}M*:&0mנm4SUq1/>nqފh+tz)Ah뭼z)dm[}>9)r'"uȞ|BRQUO\']mz)O [}z%4*뭡>DCNBz(W oys>9)r'"y>UO\']mz)O [}z%4*뭡>DCNBz(W o@-G%.DO?{%V>\9djc@/C I/>:u 4$,mz%iӨW$Ѭ^@}azj#>\2 C[F^CY#"r':+F/>GO$SRJOuGƞjmz(W gD9b\5~b\5}4]p}(Ak>ӝv/Yϣ}t+xJ^BPOJ*j:n6(}z(D9)r'"uQ<Q5U_-pu:P:n6Q5Py(z(W o"yNC1{QxBpZ_9|}u<~2ۍT'% !} o lj'U >EBp[ N(BEBp[ԫYT']mנm8- .Bo^+РFxB(J\Ȋ"x/*<%O qP(}2xNۨ[u IHYT']m}О5S֭euBRD: *qފVGTꦩd 6;Uʲ:gsR%m z*Y::e[}諕dj:Pu^ފuBorB:kW 6C;Rʦ6B~*ILނyȢ\51{@9)r'"r#rbEk}ӝv/[!F/}Ъ'qg_{p, G%.DOu^H mz*WL/n6EEB\RB$u:P:"^>}YBxVt 6;T,me EUB^>8EBƩ]*m6PMHΚUT/D}YBxuIf4^>PTU,T/D me  f4^>'me Rkx&Тyފ'Y}jzDz*P:)JY$BM} o (O %Um}YBx՗֦Y*dU 76P/LUZkx&}z*P:%URx&B}ފ'Y}erUk$^> PERU]t)lB~(4'+GSABxJxn6PPTTgy}\5b O\sW KDW)l'q':IUrȨx^y'B~*BʫWL/}^ފб U\k+>ۨ\m:] !m҇}NFZxoM4/o BE#|/t o@3W o Fx(B^B[NuؼW oF/x[NuؼW o<^C+(Fx(q '}OuU 6PފB *ƦzXNۨ\mm~z*DҮ:gqފY$T']m6P5sJj뭠>}ފʭB*Z:h!mEBx+YJu(BEBx/+P T'JVMJBM!qފМ:U@.}}OTW:^q*LOHy6nX9CE呖L/8\?pEBx08ۮ BEBx鞩4/u\z*!}j㔺0u]yz*EJ }OЭUPu]oӎU+y-RȪ!m׏EBu*!:nT'Izi@ۯo E|z*\%D/ BۯBEBxe3 ^m@EBxe3a} >}z*%+(T_BOyފԪhOnpn= BK:}P!mEBxXje>݁z*ƪeʭ`m ފderY m҇mnF (U yC ZgzB~**dWۨbTejd7*NBʡyMpEJy ͔!l QxY o!};y}EB}B^Zގky g]s9MqhNBR(>*L#PRy mIjk/(}z*TFZdW P6o*L#e P6Pފ&<,mנmIuNe,m.6R:-(tz*TGMu z*TGMudm[}RaU\/!@@Er4u[:/#ށnC[ȟG%.DO A`-XEkGYBUp}n6,RuqVGP}oDIƠ:M9.DJ TӘF_TOl oSDu}RTjeU\.Dۨ\mYJuQʪ]>JmYB㦵 ȟm珷EHD4\ꫤu KQ#+zy ,PP>EMqmN6~}詮: m6S\eS%EкP϶S\jP:^@S\t0([B S\e*C6S\tLxNBu T,+/tu mRp nz*kQUpqz*kBK:}\z*kU [uלm/X06mXET\/"@ۮ}ފ㮅3 [uPS\rV=u^?o5ƱMeUL/"Bۯ@nT `gay }B~*kjQ<t 8ۧ<-ϾJ\Ȟz'͍M4e+ϟGSU4΢EO4uЦx^B}M4t,R55мoDidO]Q>(B}މTGAXMA/!@Bz%SMc5мnoЪcSP} P6}M4t(U^BJmU4=4^B>DiVIKB oZ%.QP} P66*hՕB J5ec5мoyމTF`U]1>(~J34WBEA/!@P*hM*l}M4jl6*hX-/52B uz%SM+ƬrmJ:I)tԫY P6z%SMrLIK^B.@DiVIKZ^B'mU4ј)Z_*hD/މT<9݁qމT\ 8mU4ѩm*hЪ^BmU4:Yoet-'}M4rRK [}IJS@ވrEPoCDU4о 6E䊪iԗOL%/:UL#r/RF\%rBR?UrV_T/}|%/}PGDН})}4ΪY;oE0e*L>ۍQW)ttM mП/C[ホJ\ȜR#/+BۍRơ\о MH}rB D\Ѫ¸_}m*]W$t*KΪ愥GS+9Uj#4/n6J(: * >ELOHy}(BEr*LzП/ (U K#ȼ-︎J\ȏE׼-!G%.DGA׼W gD^x4*N:YEB/6Pމe*VuPzz"zj/S <ۨ\m1EBR}H>}4uRupvm҇GQz!m҇}/ aK9DuI4i[B)>x_qm !}B}'Q:_qzП/CYJK9wAjf8PuGBrLx_y}jYM 颱/D6uGLOHy>ChOQxϸ, G%.DNDRbj#rJ_((GTNa\rM50 n6Na\iHYT'O;SWt,rJ] 6hO^I9c)#ϸ7 ?n=p0Z٩6 R -Rupy!J8MҕP_QlW!YzxO}.6.E}QK9߈<%'yGϸ&s >l"GQz'W `lt胄тuL'q'mנ8M-WTW!YzxOhȐ=^YP"r#DuU IF^|h0mϟ 4sI\e>m9p0ZOn68MҕP_Ql'@ۍ"GQzO}E٩#mQ xCoE I|hV[50m %pzПm9^0/>~4'(mA撹 }q@~(Y o9)r'"z#,S:g,k~~L*WAd%/:BUCX^@}ʢQԇT@oDUNbP8JeQ(q:吿!mp#:G\%/>+QutNۍ*G**C&o^֢:H'QK9āDuR'jQutNۍ*G**C&oJ#ZПm?^Ԣ:O}=ycQ!\*HQ}Q mr"DrM }6AJ#Djd0O󨐶Aj!}y Пʢ54*H}m Q#S!/@<EvDs:Hj:J@Q!\*HqϠC3Yz:o@ވ㞚Uu? QxDP^(<N:9dR D7sq-: *k} B7`LeS KGRKcU9pmR[+X]\/mR[BthO)-i+!l o,6-Bun>ۨbR[uU Ju JKcNBʞ(yމIlsgU\/mR[咸_Do B)-J}CooV !~};JKcV}>Bԕ(ԁה[50mDG4}[@;Ek~bW3:C_}䔺(m}xJ_(qG3U Bum1'Q!d'_m-(F^~_(q}裒KBp}„bAl5q9)r'"u:JePW I\GS\S*K:}}ʠc$hU<'D6PPJePV3O,/nПL j'R1U\']m މL Ò*뭺6)AZi6mS*(Q u)AXq!r_XUpu^u o^)@j]\uY]F} JeP7T j!mmS* *뭺};JeP6y)BԌUW [u[}ʡ`DJGK'뭺 JePfu!xNۨ\qމL dPNۨ_yމLPy:nB}މLV1U\']m%[}ʡ`j]Xni!:nzz%2X6/RW [u}ʡ`_<нz%2XRQ] !zv)Bj^,S )Be m މL}כt}ʡ`)zCjgm҄6L甶yK>(o^Щ jKWD%'(GSx[ gϟG%.DND,#"r$}!m.E$вI[}褖5%+IOqoƤEtF\Н>ȞqފIcPaBo"@nQxϟ^ 榁ƤEtBR|B:?:14ԨW qE:14Ԗ [?guJcXO-SS3Yzyu}T5SW 6}\5@4]p};"XVa)>u>$>zT, m qފt򪞸dim^mp}b\5@sk> 2J \5@>+ F/tp}B4]ȡ:y 5B4\5B4Ek>iСp} iλӝv/f\5B+Q#.:+`F/>CY%ӟB/"F1xϢusmJ.Q:놳F+Fy 5D}tQy 5DtQy5DwP$HӾ^+Fk>tQx4]p~Q}W gywދȡNub\54]ȡQ:y 54P~:xP9bϔ8J\ȝA-"r'\?׼O\t*jcOJ1]1вD9&V:PhYU >4[Bt jcztȩW4w¸N^X;tQTeꨖJI:ԮRjatqƜTvC*j-6:QƜTw"E3O,!|*4ꥎ8CW*W)twȪ îUI4ˆQƜTv$-T'>Ti6:QƜTwG*VTlu!z2(GrR!x,+EW4SEBjatqƜTvC ':OBjcOJ1]1вEDuWLt,b/+r~1jaXqƜTv{EjU"OJ1Ъzi6:j-WUjS<+x[DeTgDXu"9&V:P#],DrM4uЦza ⵓBXu jJkέ<XʫV:S:H:b/ʭJM ^WBVV!3 s)Y%e*gbUO ׼+4ꥎ8C\(ITGLUgL!|+4ꥎ8C]dThxS!dȼ*zG4K<+y 9zcןztzL"K'c 8ӗ8yY=qЪzi=*ZHxCcWDeTgb 9zc^:*j5IrR!Ρ9dYT!x#Xàp1FR}c)#dg9E1asv RQcl}U,Q4!|W,P/ 咴S9Q<^-3 KNTO[κ[EUqQBP6PPUqQ!d(]m^m1U\eM u}誮2& z*€nT )u:O=0}u\DJ'TYYl(z*M9(z 6Q!d']mu-I뭺ފ/! ։4H|B:#9  !en6)0f1G(`j31r8FRc9 Flp3#aؤp8@f1G(qH96 ƣ1r5…bQa07!k &WLΨL5(F#G%.DE"u:uS<:)u:',E E%%uyފJK*B}r(ӧ`u>=^3ʮ}x@J\ȝA׼D9bks0P4]aiλYCӝv/YBiκ^C e^C e#N^C eӝv/fqrRNDH,/Uu[<H^ O3C[>:V놷\>/$/UU0Bku(ΠUT*h!#u>rg^p sy}G\%.:C] gB\}}諡Lh]qoۨb3[Dr*1BPۨbBKp[mȪh鞩4.'ۂ)T+:VB눛DpD\ g/dun煕Mp#u|-]}<G^ZA}ULjS':S:u D\2TsNA.mTi㮅3/]@J(T]t)Y}pK$s:]uno2F\uBpELsO כu 3W\ƞIkWL.Q!m1,R뎺B[tCK$x]u o9nS=P&xebq^UjTUpv !לG%.DO<\uA}URΣRU] F\unLНy"ҸXT'_m-"ҸX梢N6S=%ƱZ%BuUEs2T'^mS<.hOE㬽T :מF ꬼ)u/錼uכq^)T\ƪE3uyDiU+5\>΢BۨbA}ULuO mJm1UEsQmBy m1J:h\><}P*/U**UJy6E*/U*מm\m҇qʠ:׏uW ns K!G9a#R5c1nBap CXƣ0f5]l:HkfƱ ͇C) cñ7}b8!cQv3~C) cñ4l:HkfƱ ap CXƣ0f5(#R5c1pCap CXƣ0f5RȑuFc0b4j3cX܅c0b4j3cX݅c0b4j3cXޅc0b4j3cX߅c0b4j3cX}p1L3#ñ4lf8 S #Hƣ0f5 ([11;cE &c0b4j3cXc0b4j3cX!(n/ Up#;Ux놷_q\d5Ȝ莽d5ȜK9+TY n>{%Lu[#:RFE4(G\5} 7O>:G^QRKja)tu RFuP}n7UIyРu зpET%rBM]z(W n(F/tG,MLu[ 0~eէN\FDBD:u 5 qފ/V:#:F^Zky@煐HȜ>'Izi %/B cOE5W 6o^+ϼ9b\5}bϽk|ӝv/[F/|+߁sQ2sO KGT 'MUBP}u EM }z(D9)r'"uQ:@YDWI|R#uǠQ}Sum,jup:PQxDGW o"uNxBpZ_9|$u<~2:ۍT'% !yo lj'U >EBp[ N(BEBp[ԫYT']mנm8- .Bo^+#[PNuؼW o!D^>+FxB'W o!}/xB1{\9KdUpg]@D >U4%/ @%O qP(}2xNۨ[u IHYT']m}О5S֭euBRHD: *qފVGTꦩd ϶;Uʲ:gsR%Om z*Y::e[}諕dj:Pu^ފuBorB:kW ϶C;Rʦy?K$x^@r(Y o >J\Ȝ+u\\5ӝv/[#Ъ'qg_{pыqC[:J\ȟ )y^Hu}誮JY]0m6'+GSe ]r(qފ'j-WMp|oEBZu)B]>}'}YBx!bWT.>Bz*P4Y5*,h]>}^ފ'=2WB՗ ϶}YBxӫ>t(yފ'YV]! ϶}YBx+YJ o (OӨs=3 ϶6PW, ϶6P񫚕kO4.>me y*u%j'OmPB3ytϺފ'Zzd,S:>~z*P9dUZzd,?T,}ފ'7TiJj@ o (OneERLBrz*P0PpiJjB}z*P:+Om '}YBx՗֮Z箨]>}Nme RdJ]T.>'жPЩLUZkt!ފ'Y}jeI)uP|p8o (O%UOnme Q\UZ%.On'}YBx՗W,VIKۀ o (OU*UBy'IYBzJ^q :z UrW 8ۍ=3=#6PPo^+D^| PT9pu>Q%U["ym N5U\*,m Пв5 "mנm'Tgn6P2TW }C SY|.>T': *(BEBxLuzC S=t,']m.6P9&U\.}JmEBx+YJu(BEBx/+P T'JVMJB!qފМ:U@.^}OTW:]nC zsۯ:ފRBx T'R8EBxԗ&y 6P:Y _mϟmEBxXje}݁z*ƪeʭ`Ϻ۰Ao U2RϾۥ8EBxMXd Pz*ƤEtI4Ԇϡm҈P9g55[}O慒'Yu}諦EQM61P2՗N:ϡފNB&Ix6P:KO x6Ekusȡѧ:x@4RԁML.(mz*W$S }z*S%Eк|'}O$t'Y l o Tu}O$tLാzu T':kNC;T'4$,`@m1PH<}C ]4P-*%s 66T'5UYzɤx^y<Eku sBRI|jdP6o*KQR5%(]AoEJR_ ^m z*TL뭔!m'Ԫ9No*[}z*UF8.o^1/שUq.(mz*UFIQt.(m}UȽdN:.o^vPF^ԪD'/ebTj<.>ۍ!/j #Ti)u x*R\6o*Y ]m}U\'_m C*+S%EНynUuU  */((BBB;\2U\54.2 >u[`Fu<릉jT%.(GQ)RarU `mz*TF]CoEJUYzu >EJ0YE3(BEJQO `mנmIuNe,Pۨ\mIuUYm3[ `m҇}Ra5 `m珶R:ks%0@ފ&.uUz}Z&kv΢&kvѡA$(Ȝ"uQU_-p:q(T\r]@ۍK(T\kQ.mYBP_ ]@J TӘF_T]@Bz%UUW mנmYJuQUpBoSUUtz%*N:kY]0 o<}(z(A5ΪGPu<sOT.Bۍ2+>u ~T3ERB:gBۨb<(>ͺ*k: *>~z*k!uz*kB@;TdQt.(mT*NP6z*k&.@95XRu=o5D'!qPB²JY<']lz*ke*W uǏS\eLHu[}詮5 .r}詮:WL']m^qފ㘽b*Q:ۮyމbJ:RupvTt)Nۯ:ފ]U*I,뭺}詮5k/auCnS\t,C9)m@S\t,CRX+h]>z*k>:npo5]-Bu[u TgO=3xNۨEF/uG+_S KSW 8ۍCBuyފB'[B}މZ钺뭔!mp#cQLU0T6oW [}z(?4]v/ aQK9D3cESMdꪮJꄥM4seSt)PۍJ:I)t]CoDidO]Q>06os]Ce[}M4tTBu}M4t(U]CnqމTGLhU]1>06C;J:'t `m珶*hլR55к@މTFdO]Q>066*hՕB}}M4jUTj*u z%SM+UtƦPmU4ј)WLj*u u o\Үu ?oRB?J34V KL:oMV9O `mJ:I)tԫY `m$-J: dO]PйoZ%.k!u >oM㔾]ChQ06-J:%UcrMA.H`mU4М9/8JWTj*u ㍾J:%UcrMA.yމTGBp侰Y*n]]Q>07J:鞩4/B[D>:Npы}*+TXu[@eVb#PRJꆷqAԪԬQ9j]W$%/>:+/q}蓨N6RjZee}6#Z'0BK)xU .mП9T+d/>}}:1Vb#PRkxoȡNub\5}bPbPR撹!:RDW)t%/>Pu(W)t/DiSBu u ou ?oIDu z%SMlԨT.DiXZ:IP6z%SMө/0^yh!mU4ѪiԗBțB J:O,ө/0 >oiԗTg뭡DoiԗF\м}8}މTG]2KmĪiY%35SLP6Did\ u}M4u,U06萶*h'UUrWT/Dۧ܁PJ7NBʡu }M4k+P6mU4J,/6m/ u} oDu &u !ʉFiy[}mUө/0J^x:UL#u9iPR撹!)y~䬾^}m$uABvmW,:g o^R#/TgmBKh^}n6Qx} 9)r'"r#s KϠF_QW)t/ELOHyy-!mBKHx^~zП/ (U K\GSx[ o>#x[ o9)r'">k}瑋݁*/SB)}K'6n: *6CEVB6;T,-]@PT,Q:]},]jN_q^ވy&u (J_}u>p:Щ:_ym҇GQzuJmނ(-(G%.DOQ׽$ҕP_Qm GShO4 >?B6Qxx9)r'"v#H-WQlRZN["O D UhWMtyވ:gzG3 m П/ЪP\5B3W oP^xY o9)r'"t'ENaXr놷>\5b?PCӝuؼW o:^C#LsW K8g02𺀡}04nAhj [DDyrRND}򈎽)}ї>p9+mϟ 4sI\e}[qۍT9<.umބϣѬ.jazm %p>r(a KF^|h_|n6G4V^@ۍEkzHȜ莟Li:y,/Uop#ʠbUtBR2bmS*Fj'RP G}z%2fu#U#>DUNY l o^:G\%/"PV4S%p}u UUUT'_m-%M ȏ;QxWZ놷#y[Ȑ#"r'݉GDuR$(u5(:T\'_mCJ#DU u ndB#oJ#ZhO/ Qp$HDǵO,j$+EP>(Hq\Q#SB^D\r"DrLo: nV6OUUT/"(mށ'DrL(y'S QTu[:TT]tR#HW:z[qϠC3Yz:o@ވ㞚Uu? Qxށb{J-:OyӨ놷<נ SlR# %¸^Dn6)-T.:6)-D:}'}蔖4 (BD:K' %%DНDۧ϶ƝDB'u JKcNBʞ(yމIlsgU\/6}蔖8yd>JKcR^yz%%ʭUtB[};JKcVDl Q{JR'ԁה[50 ^8i+жכ}pC= +ӂJ^(yP'WH} o\BCo^O K|s=5PT'_mCuBuBۨb)x2BAmJI,4']mz(rES(:(@E*(D? K#/?Eu,Yh^(BۍQs$,6o^+q₏A K:uԲIg-Eh,La}qފ/)L%/#1Bm/v m}ޅm z"&Q6Pފ/$J+PR놷B !#"r$/u[F{*J\5D_F/}׼-u:{ĥ2 KO.)AX\Н>ۍJePV1Rƴ*ulʠf:X^qq?TNbNۮAoT%UW [uלmS*4/nz%2+)}ʠ89/bNۯ:ފ/ ʠ5.:P#}VyG\5λ)A}UƱZy2X5W)t'OoT,}'B~%2X8_q noT,IQXE3u uʡ`r_phQ<'ĦU ӘW 6萶)BKuU [t6)BP)x_u>}z%2X(NۧމL NtxNۨDU j'RP 뭺}ʡ`E *뭺}ʡ`m% ''}ʡ` IEcUuBPމLՆꦜ'mS*b!upuQ!qމL| >ۨmS*%%Ш`}`xoT,50`@މL(^@n JeP5.Bۥ8DU MSS< Pz)<)t/n@}ފ/ hT5%+ϟGSx[ o(G%.DND>Ъ9&놷8G]Bja)}?TrM50mk}ȜNCd5rRND'P!B9)r'"uNk}B9)r'"EA9)r'"~'\{hJ_B2PI} ۯAzj]C q^"14 \mz…Hci/#%ci.nQx@|JVJL%/>й$ОP8ۍ| RKh}$S xBBRK $ja}z)%Izi"m0@E$/Q]W)t'O'mX(b_Bo"@nQx/3 KSMJplNLrM5%B?guJcX_@-SS3Yzuu}T5SW 6}O,u+O\:CycX_@}zT,]m qފt򪞸diПm^ma(ΠލetME뭾oerU#SQbpDۍ(XuPDۨ[u QN o^+ F/},=p :z:RNmCjSQePDۨ[u QY 6;Q ၴ'}\51{cJP9ZhYZa)}} jgS &mTgoEy}>ElоGT$M Q=jd0뭺z(V^Nۥ6F:o<}ފ5iHY [yz(XDr\#}G[::(k~K9DpN}W o}sk~ˎ["FW o40J9bk>iߋȡQ:xϸsk>ӝv/ aȜ>k>ȜD((W,#OBHxV"ԫxТuR),:Y<(dVOy3ԱZDТz:<= 'U"ETq/U,q{`%MP]8ӗ8wG0 Bw¨N^X;}:Ci]8y&QEU±ҏf8huU\+(dqa,+QEU±ҏ ㎺άVȦW}M |YFE3v#Xàp1FRyTPj3bð9;t)RR FCQ1r6a>U,Q4!\vh;,; fا g`s#6.@;3g`Yv fdG ͳhg`#y2VsFCl_ 9^@9PMo590A9B=6l?=6m?8zmdM3%g6_s`Qg8k=6ps+3%g8s>F+9¯#JfJqGh9d`9Y+9쁩+93(M?tzmPE`̕P<@̕Pf&ͳEqH<8{qHͳ@ Hͳ@;g I}3lHw2=6M&^ 8R>g GF+8R^zm)<+8R~\=6GClHa+9clw$g ^g 2Vr3%g + >g V=6@3%g yS2Vr'rzm#yJ3%g `MH=6AoGB`.g |2VqQ?3%g=l ǦE~#gSM_l3%g#JfJ*o`/g?#:fJ*`,g!y79}h9N0̕VsƆdo Ym̕VƆdⱷ/gF73%gfJ+1`lfJ+߅qXo d(lⰏ\fJ+ @%‡2VqX`̕#̕`M~zm7fJD Ar%_r##x̕@3d@ClB2Vr!fJD 9tzm"dA# GQ+8T{lQ/G¦2Vp24dP3%g F=6SM@lR#x̕*>^=6 F`fJ_`MaǦ±H=6~g ydY3%g °{M`Ip#ydXiLY/ǦlaG#x̕ҙ!r0r0{M'G/fJF|)+;&zm;!vO{zm$gd6;%^F+;+<)+; Clzm~GF Y`/gd F=6{l^gydҙ{lFdfJ,M R3l{4FmX%Jł_LŬg#g A Hͳ ͳm6Fmxzmy`3%g$# GOd̕~p LYx̕!Y+8UQg63%ge2Vp8#dp P3%g8 l}7Dzmyd}G3%gg/>=6(MoGI2VrPg%rQd=6J|2VrPgLYY<=6ﰄzm5ba+8 GF+8 wzm8 F Yd=6{-L3%g Hͳ ͳg g ͳg6y6pBZ@;8"q+8" 8"00fJ/#dG[3%gA x̕o6gA;ͺfJ6l~Ԍ90 r3lIͳǦ?y+;C/d73#2Vv#23%ghI+;@3gh zmgqsxFm\ VFm\~ Ma+8"ywH̕@fdhY~++3%gh}=6{ ̕y+8#0AQ+8#"3%gb?dIA+8# 73%gbo2VpH!Y+8$I3%g`8$+FfJ@8^*#6'V=6@&doddȖfJ<$%PZN<+q+8c7`3%g @ 8b}dž@YyƾYF̕_g2VqxY?d?z}$g뽔&dG:Y8BB2VpNˆ8' F+;d@fdfd\fJ#&d.3%gl y)3%g:J3%g;733%g:!{ (fJtK+3%g<{"2Vs Y ~ȴ̕`E`0fJ0 i+820RfJ0{"2Vqȴ̕`c`̕` {"2Vq셦d`̕`}i+8N03%gqd+3%gp20RfJ<dF LYYP̕cl~YM+<GAr/#̕d̕`!M Y{ ̕{ zmAxD? Fd 2VxB2Vxx}Y3%g #l/#x̕2Q+8d5.3%g <2Vp'+:2#03%gF>32Vp{H=6J3%g .3%g /q+8f Y@KQg /e2Vp<7YJ+8h #l᠍fJdZfJ#x̕4}3%gHGfd"2Vt瑼fJΐsQgHl̕ o $gJ #lW-F+:P(̕(H.3%g C?ˆ8jSfJ7YU̕5GPfJ_dZfJ#x̕bE쀡+8G!ٙ+8kLY+<2Vq3(MDoe2VqoDg`cl7qbfJ3Ya7Yb d'%7ᩘ >@98(Z +LFm0NFm1_Z=6Ι?l?k3%gLLYr#DfJ|%Fd?pܧ3%g ʼQ+8o_љ=6F+8nVVfJG=6F+8xR Y@GB#x̕^F̕xR̕,R3%gJ32VpDzmfJ3%gxR~GƇ{- 2Vq#TfJ4q`̕h#-ƂO̕h2VqJfJ5q?c2VqefJ5<2Vq C2Vq GƫDoe2VqB7Yơp#de2Vp5apk3%g+7YÃ/ˆ8p<0lfJfdB7YÀ3%g Qdj}qY5 (fJ7)KLY&dp)+8O@̕J}fJ QM#fd〃uQgo#d〛fJ8|2Vp#x̕:sFdmQg|2Vpy3%ge!+8t˦defJȌfJ'zmQ+=y2V{̕/و̕i̕ioq+:q+:Ѝ3%gZ}dB#TfJd2R(5Fd㷽8qe^@dac`|=6 `|=6 'zmA Fd̕A+8aⲳ2VqB063%gB7+8 Fd.I`lfJ \ ? #l.2Vpa@8 ^̕Dd]`lfJ@M{P=6θq:=6θ̕p쀁+82%M ! jY #l(yd#TfJ 3%g32Vq#(MOd' &dT*RHfJμ}zmx >F̕2VphQ+84Dzm#x̕TFm,#6`)#6 Z. $f+<"l+ ͳd>.#6 S1#6 _f{g ͳk}8_`ͳ\FmG>3#6^Fm@3lVFg!g3+s023l`Ir3l`af`g`~Fm=87=#6 f"#6 ; fxfx58Hͳ NFmDfx%#6"Iq` ͳ3l!f@{b3l g_|zm 2Vpq_dwd}s2Vppd# ̕ lB=6J#lptkf~73%gBO̕#&d2Vqod+3%g#̕|$ ̕Ed,Y|es2Vp}nfJ ̕{ ̕73%gb'+8; љ+8; > 3zmF3%g^ QpxfJ?$@p̕~^fJ?}̕~}nfJ?\zm!w Yd }=6d Yq Ypd8 f=6#73%gOd73%g7dd/A+8= 3g{ ̕73%gd 2Vp|"{ ̕_ds2Vp|`'M}(3%g=6{ ̕~Ǧ73%g Ys2Vp~`(MA+8?}nfJ- ̕F^73%g@&dB"{ ̕B_3lDC3lDHͳ+3lDe3lD}Fm3l =l ^fJ"d Ycs2Vp~2Vp 73%g=#l}̕H"kLYĆzmHO`Mg_|zm@̕@&dFas2Vp#_֙?`̕ Y$ ̕d ]֙!6dH {!Y+8 >l>3%gR#&dJ{B=6oa8zm Dzm =gd!yd# ̕ wB=68}#l_'M %lFm }<8=3lL Ѣ3lLeg`{$fh8!#6@G戈ͳO@k>ߑmDImg zM mgy=&όmgy=&ύ|mgDI>DIm{@k>U@k?7mom"Ymg<mg|mg zM<mgǞDI뼈mg=&ψ^DIm@k>> zM lmgOY/͂bmM`k(lvMaՓmpd\6yd\"VM0DMb7 GpM`m3?rm3dXf|maBk ğ#!&0maD "Rm3߄Rm3Dk G"m3 >hO&1/͐maMaQ6666@MaClMbo IN`tk ma6aq6~ Ћ џ6)&BOɶ[16ߋɶѯ8Xh&B&FnM~)&ClhM~k /)6$maɶ7maXh7ɶЧDXhym4%&B ok Xh&Em4;Ml1&C&KM-ZEɶ@S&rf9|-g b@0N@8/ 3@*Mgp3e 8YB?8 a8IFqPEҳF2A#O3y!aIg! !a#BN@BqS9T+"¶q[Y88kⲜ-g`qV-gXg"g,V$qX6qXO#8N39&ND[lEYr%r+199ȄfDٜKvr 9OƌAC¦q8UC,EXv,I*V B>@*Y[8T9Y Y¡/PpNg + ,X0g tX.g Ƹ 3f/g ?g cpGp$.°±7kŸ2g# fF̓Fr55g#0g# F9Fa7la;bnl쳁#;-JevT`LɆY]!`F@Bƌ섌7gd'bS;"v ư)g7S82X2[ \9!Nq= brE g$2rATH0!br@? Y3pnX\ 8dp3$gF' E+8 b^H3t3лs8l3p:!p:#bp:2&p:$[8VD,gvH8k0>xexk&p<`(#80p<<38vp<"a8'g3n}ZAgp3Bqi&qld-MlѾZqmx͜[fZqh&|9(8J(Q9(g%sl9&8 '3 pWY&qgmpV YYN@ ܅LyLC¶pV"bpV> FpVO&Iav>*g82pbp[8 Xfg1p0LbNLal&%0gH0Jb)}=a=]gD<8z$bp d D~){8,kacpY)g2pX5Y`{an3ŘV 00XgY`pX$`y,L3O 8 əQ\#gFF +8 vppNp<cp]ex6g6>q1(gf)gB–x@DlTT,ŌBF5<[ ٦y AYI>)g@,T Cl܉@l ,lrS9[xZVd)_kL9X? bN\UgaP51g@ͳʿ8(byDQ?3-–ybyqc<-gD<0BY g$ r,3I g3O␃g R~Μ[Ν:x1C:rRΞ́:TΜCYӏ&t Ӊ88Gt^FrXg,$9a>3Ard;L\X>0g,!g,bX{9`P?@fg-Qg- YlD VZ DL+g-6rЁ8"d';n9`Л, pD@yFz&z%gBz/g $@8 o&[3C8 gU6p16p4*#YTB2gPT$8 3Pƌ5Ha8\3R\>˂*g.X"aS9pN¶r\'uXXΠ.u#:08Π$ŬgQ6JΠ ,.gP"d}uF ,XΠ"@H 1gP'I:3'gS:u)^>ΤHgRslBvqHgT(gT->{: :uB&(gT#b EΨMgWճՍqK::3_[:"gV3ln:<)s3fufY<)GpZ-ͳ(g)gY8-Qi+g&pZ#aS8-V DMpZc8- Z BnhzY="ZKxg5=%8!gLə6]GHvg6Sz,=A(gR=Aag$ RP3zŹ=ndLS=sa[=j0ŬgGY\Xr39xio& N^$L*r8Fisf8!g!3B>B~@d,aS8|FAH0p~8|l@,G–pKLN|)g039{g0!g01șT`#g01c9@s'$g0$&s9N 936Lq& A~3`t'g q{8žs19F 3{9x0g10svb<ss9Ei#`͜#ќ$hBn!3D33Fp^>g>i,Ng~,g3Z 08 80s80' 80L63 J ``/g&y 80&p`%338Y4ll3g#861gc/ @Dg6)g># gNBx? ,NpOg{} `3=0H` 1{= {:sEh]δ/gZh֌u|2gZ ֯Vu1gZ"c&u uքlδ'9&8g2k̉ k^ `g)L=ͳ3 BF81 pb'bpNd,2bpk eSlN3{3ʌ*g ͘ }BF8 8 p8  8 7g8 ٶp9pypGYl3*331S:0pA¿ ~ pdi9gG2NYVn gK[LD}6pd0 8` & YEINg~u > ǚpfB -83pf#q30L!E6pfN,ֱ82C8eЅǡYǡqH ГqNIz'a:L=g^Ouru弌ruC:VμGg^1:~`μ(`x84phIph84ph84Yn͜184]84pl .#84  N>gCY84v~p9p l8 ؐa~l66S/-p#Y )g L_ p *g 6pF8a^3 02FpFȽ \ͳX1C8%)–pJ[3Uح L*ge X D,gak8&I3k08 g0a'"d g'g !g'2frrg'[ 6Ns?xg C-peg Fpf(g L1O8b6g D83bqy>B/IL#gͲ/Y^<8~J/^0B/pD/^%^'a{8'9 'gc98'26pN!쳂q Y8@8D8'gCq; "gm6LN;j1s;f8#gn0glC+;b6Nؑ,,VWI6΅٦sΟ,FXRto31[9ՙ9*g: a[9,g:>s YΉ9#9Їs g:Ps3 l熸N)X98B¦s y9;e🅬nH0 80-g`}a6\00B0D0m3\0#g x$g0gqI-Y ܃:pBτ\1g>υ sv9?:,3XDt313&(g@OY :T΄ V/gBc΄B3lA)gB$ B&B΄'[:/e$gDYAtAJΈo30ə ``tB~<3l sx< xmn1C8&q3T,,"p?3L*gV!GXBn8P"npB8s ¦q 8V8-¶q̍p dlرp"ac8F〉p[Yæfpe: å`X&g1gAAm:-gIF[#}r@R>g)C9HR%3 8) ͜l #8)iYIN337g pRq8) ՜l Bv?~8gȰ;gòòk˘ ҩ_aHysak Nk˘ 3^\?XoӬ&漹ʦeR)k vk˘ a?5~sņ H0?9̚175~sņ̓&Nysa.BOysa`:y.c,7U]*maח14m4 ysaDmak˘ Fs^\?Xo-a&k˘ axtR7ח1`5vk˘ axtR7f#k ח1s)U+k ^\?Xo â!Ŭ4o5~sņzJk ysa`k 漹%eVA?9HY.c,7t$ysae4f4M?9Xh5ysa/Ro?9k s^\?Xo،.c,7}4s^\?Xo+YM NfhM?9a51Ъ4-ysaO*uOaח1?Xh5~sņ0:)JRZJ^\?Xo،fXhc?9Y?9思43^\?Xoח1)Hn1k f^\?Xo â!Ŭ4^\?XoլWXh!漹W)rA5~sņγAk˘ a?9UtW>k˘ }MXh^\?XoIA#5~sņdҮk k˘ qUS[Xhs^\?Xoꮚe-k k˘ U_Xh$漹.k k˘ ?aDysaa!4.c,7l'55~sņU*Xh^\?XoE aHysat'5~sņJըk ח1N&漹,k vk˘ T+k ~k˘ UZk k˘ UZXh&漹ԲVk ח1*.OysauTjk˘ ifԩe4*;ZB ח14f3?9[ZBLח1ח1tҩ_ ^\?Xo â!ŭ#Y.c,7+z _?9*J!>k˘ U)m>֑ח1`-iysaZC.c,7" A?9Vk˘ $ysab3ZAk˘ Vd궴^\?XoQkH5ysa󂆴|ח1)Hn1kHS?9ek'Uiח1rV^kH漹HΚU+kHU?9 i&ysaF i s^\?Xo&5 5Q?9^) -ifZW?9ƴ.c,7h漹ZK3^\?Xoɭ ?9 3^\?XoҦ^\?Xomi漹-i,ח182kH!漹MLch ?9^) -iٯ.c,7JRb֐Fysa/R>k˘ axtR7.c,7լWiח1*]" ik˘ axtR79.c,7F 5~sņmiח1SZ@?9Mi&k˘ 㶴5~sņkH^\?Xo5~sņ,kH3^\?Xo iNk˘ ^\?XoH֐&漹={@g4/F3UrS[;}.cyGUMl <h[:bNk1ͥk"*ysGJK%05$suY2,3 ךc#0_3ךcp05(4a8app 潏.c* {FG( lm1 â!Ŭ'f>(54_,!:@(k f@*k f<ɯhaU(c5@h1C{}G9 C[][κ{}w o:]?o35F\uM{}w h:_]F/ukt3o?ku3c{}w o: o ][?{}w pb^]O{}w?]{}w/oЛ{}w_l][ރ̀oν{}w]YQν{}w gF\uk>}r/8 ?o ]qop]]Zu8pp_r(]]o(о;:[G{}w)@?oPkD1y׿oΠob?og_ob] oR/O@#{}w p8^!3y) ?]\pk1|op"oᬡb5:“{}w eы]R]S%]R o)5ˠ_/ku(]R?o)ot7]@ ={}w]o o] @oop#~ g 50W])6h%khK ir;?Vw\q+E,r>v?BGF#hO4?dT!|Ug+O*'%~7:?[ y&^[e*>UW }o/ ooU?uM _{}nx ǿ==_⺿6)=T o9oNg;-g#}.c̈́_axtR7Pf`A>(uj@$ */7@_{|ATlFk3~\ǐ1Qlry?"aZ¥4?X(!7{~:k ,ךc,u9T̪E3aPL~sł2k Lךc,od֐'fF>@(!ְ}L~sł9Uj6Fy?9G ߳<=͖JoH.?_gYy?1"8͍LyI/R>k˘C_fT-shQQТ ۛ,7y)p ^Ǘ1 3 {Fc5axtR7.c?zO /nl@1)p <pqmc͔ â!Ů?y= '͇6XoK58 c˘?  661?k Cp@$m1?k)Hn1k#-ys3Xךc<J R ?_g{O?Rl61G^) -q s^\_y= '{se) H /_<`I 61O^) -qח1WGOBe׷6Xos$ ;\Ǜ* Hv61_E)JCq\F.c?zO6Xo ?c8kptc˘}@ &Ѧ<ڿ5 E61!^Ѧ<ڿ5k8;61Ѧ<ڿ5e"^Ѧ<ڿ58%mcͫ_)gѦ<ڿ58>*4ǛW/R? a51ikL~EcXfk1 44_,!8Lٯ4_,!8XfOL~EZ34_,!Q?lonl569^iQТc{seTp BDkB?kB3k?3{}w g#:{}w g#:^Ft{}w eλp}׿Fu!!o2pօ]Z$bp1z/\Fo ]]oV)P`w`q][#Q{}w?+]o]X7X`X?oVoV]!sȄOk|1{]o(][葋C{}w o^G@){}w o^FϡF/:?f_k@1zo[{}w h?] O{}w3?o ] `S{}w_kB ,%``]Z'Q9{}wakD1z'o,oiE{}w`o, {}w hEF/>g{}w`Q_p$iߋ“_ J?o#9#[\ǜ1򹔖O^Hѣ_i'y?bw3[;Z miu//eʢJ^[J^e{}ohk @o[Z"ޙU̦AE抯oM{|{Z^s_?O|Wx\K'lm5f*؝"x?G;/ @/o4hNKo+_ooju[Z ~C[ D_47DU h\VB/o?A⺿8 o$$ 秫=:Z>v?JRb.c$>(Q?p^aypg`oE][ukt3pΠoᬡϣ:][ξ{}w ;{}w"?5F\uУkD^uF/Epӿkub?o]#Hkt?oKF/yWC{}wp19 ]_18k}1{o[{}w o^/o]p}b]C{}w gϣN/ϡFok((F {\DZg?$3/chѯb{}w n:pցq׿kB^o1y׿k][#N_BoCŬ]*Q#A{}w1i7@{}w o>^-pb] o?oo]?oo?oӿ>5(F y <4k٣G$m5:p ?5"}{||$|Xh~=4_o9oNg%MSKfѣ_ٚ:8=v?禕5B^g䗷Oݏ=F1gy>`K ip@I?J!EKsup /o% %==_(up /o%߳{|AazOnlܪ+,#/c8k% oBwo35BB#]Ze^o 1zH^ob_{}w n;]APPa{}wDkyb@ oAGJ݃}׿o5Ho_@{}w o#N_pօ`o â!Ŭ漹a'G+As_ I^i`2>(7fy= '۰Xo@Se]"={}w'!5$gQ][8pg_oѝA][#:pgOpκ5#:]Yg^kuooGˎ]Zb{}w hν]\qw{}w1{ ]B5}pb]S{}w o^/o ?o  / ]$go/]^]^Q{}wx{{}wyopֆb(o0]`o0 o0U{}ww]`k1yQGQ(F/I{}wpP4Jo?o ad  ]&o?o]& {}w#]&?ow]8vo']/{?{}wQ{}w]'8 ]'oN+8{}w튿oomγ{}wA o_u7tt&]4¿,ς>όo]+{}wo19{}w_>?||_|| o]Y{}w@3AQ{}w_o5@_"]]{}w9{}w-$?[{}wBB o{}w hF pT%ysB PhEp>v?3h C Cg+OAa{|J1e ]̵J ]PI{}oc⺿ ׷ǿ(r6)OchѯfxH#_ =zzӧĽH g4kӂ_DH#_ iyY K?i a)k>Dg+O|?B Gv?rԛF74ooRP<+* irٶ>v?:V!(Ǘ̴B_eC߈W̿( I{}o9C׷'U _ޙa:o禕tuoo>=:rMIVrFi BH#_Ag o=wM{|AOW{}~xg. 3HӨ;sӕ.ӧԇ;sp3lm5@’OH#_@h{|DЦBX_^POocc#hΨchxR.?5Y{|l|( 2J$_v? :V!(/ouB7̿D^[ 7e{}nxO>v? %5hh|)G)k_u%g+O' ? ?oo~]_lu>v?uv6DmHR ]g+O>v?B Ga{|l%%°{|W2Y !^[Id(e{}nx O$l|U&zDF9?!} izDݏL±巷̿D Q{|@C^WO^ 3>4kM@ UAě9kch5!a)k(\3.l|=~[{|^2.e.NKyE2v?<Ь:[{|/^[+}{|{Izzӧ;ccPV$5\k\H)kf??s!ccЙ B^ѣ_RG`'{|Bn= '~a{|`]w^?b==_ⲿvcc"XN8A1? (`+@lm5 9D gRI iq!|?+xV"Ta{|E~*1eDBY{|x@e1 Kze%yU  o̬N׷^([ʬUpwC{FFoFsu@oGo o9oNgs;.UhIy#?5aWeg+Occ<+~ph+/o8mr_y ZzOT(~0Cksu@o ?fp)_&pchѯaACA8|3`|kRb/2-~qE/Н^2-W{|B8a{|VX8c{|OB 95⺿ ׷ǿ`͈׷O v>v??Dyx>4ko/H#_f 7x?<[;A\±y{|E̴(VAU/ e׷̳u@o c5==_GꫥT6DE~@8?5` /o=4 {|AOW{}~zt:pȁ826@F@ *ڽ ipd|'O5 Xu`$^24 7̹o = '^[YBP+/%^[@=׷{}o巷 E/o43  _[h@2BOGk1¡CXfUL~sŌ( ͖[/_T35Q?D۰Xo«? (?_Jo,i{}wc]Qҁ?  o5cP?{}w? C go5_o5?_{}wo5O#;{}w oFu{}w o][#:{}w o@@y_g]k>{}w n:pցq׿kB^o1y׿k][#N_BoD9D_(F/v@S{}ww51{]1/_"ΠA@@^OS(F/~;{}w gF/>ыϿ{}w {}w gУA{}w:?of of3 {}w0-o6?9{}wk{}w)سa˿o6{BkB kB  _ ?o@o?L]`I{}w]Z("-{}wc]`y{}w {}w逧ЯLoL ]no7{}wo{}w*ޏ wo7  o7 ƀ ]?{}wPƠƣ_5]ԷÇ?o8G{}w]p ?o8]]]r]sO Ði{}w8H?7 on]?7]oA/#_oj]!+DM7{}wS]H])gH_{}wिIo{}wGRo Roao`ð.@]{}w$o]x]*5{}wਏPc{}wP{{}wય@1{}w oSPNTd q]+aX]+?`o{}w&C{}w&1/LBIo={}woX o`9X {}w oXowoP4]gWA ] m{}wAg?*A{}wAcʄI!{}w`{+(+?V'].\Q]]w{}wAoP]g{}w2/e{}w/&]8 ?owop]8]p]{}wcӃNN?o8{}w!{}w_?P?o@ˣg{}wˀk˄?.\\.\?.{}w?P]_P oAP]!ғ]@_P7ſX o4ʯor?o>/B_5{}w3\4\ ].p@`;{}w]0+`/e{}w]~]9{}w]~$]~{}wHw]_`/ؓ` ؙ{}w4  :A \\\>/Eoo%{}w#bQ{}wm{}w @{}w3oȉ{}w2/dME@A{}w4_] W{}w+{}w!  0%f$]3AF=?G=^]ׇ_ש]{}w_]40h ]43jo! oB?!;{}wg{}woB ],p op ?ol,lo7{}w?Ï]6Q{}w]6a`{}wJl3otU{}w:oA't2 oCٿoAo{}w:_'#8^><5p}h4+"!o5y8^>v?ͮ/t /o!I{}ok-% !&39 @ \(b(?ooj'U Be{}nV^_]_^h$^s_++81v7zt;a#cc+ F fBk3Ug+O$a] îoo *!DI{}oLw^[czE[+ {{|{`O 秫=:yF-?!o5Ueg+Oocc*LI{}nxȁD6s_?zmA'±9ѣ_l4{ f{|7a:VN*LwމUW WU@.~[zoY /r~73?ooH<0,=00o[7~]_/ ׷O>v?ͤ6wF6_7TU{|l| ß_rY⺿"ǿu~rzzӧ>v?̀/°/chѯ+? mnV3>v?͇_ 巷̿C_q+̿]w̿I{}nxȁLaw}`)X7g|K4kد41ⰉBk4x?l ß{_2^[=y'/o==8/o9oNg@AX*4kS z?dI it|U<̿ oo!x]_xe{|AOW{}~zt:cc V&t%[F@E xJ`{|Lv>v??<{_?e{O^[+ {{|{ tC폝`hΈK4k?43o`iBk/ov?[h~[{|!*:[I{}oD']XN{}n] o==D]_- 9{|AOW{}~zt<>_gIhC0{G@g+O60 2S ({|poota:2uI{}oRK:ck]{}oez⺿"ǿDO>v?/5\kAO"GBk^ ip͏/0e/SBNoXN\к/⺿"ǿ/42 秫=:I`F~ѣ_lh6D @^y8fl|R) ׷̿}/yPe8W ̿:%%B},X} î*ow/oJ!E{}oD']NTНw׷)= {}oRK:E⺿"ǿCs_?ΐK5:V6~ho" mrw/ov?G8Bkc˘axtR70f! xȁ:=:*Y{|AMHP Io9o،mf ⺿"[ Bl('y?5YL~#(#݂F?17 C@ C@t@uo o|]o|5{}wCQOO]PU{}w*DAP&.#:#:{}w oFu{}w oFvށ]P#:^Fuoᬡϣ:][ξ{}w ;{}w"?5F\uУkD^uF/EpӿA)oo %J݃]" {}w o>^LK{}wm{}wȿoEP-%]D|.]Y(w| o{}w>o/{}wo#(voa3oF5{}w0Y{}w0$/oF] oFo~ {}w hA{}w_]B_?oGo?{}w: IoG[{}wIP$py{}w8]% _#p]_ ?{}w8_{}w@]]]]:z]=]=A]=a{}wO]?W]_ ]:K{}w/?oB'] ?oH)# ooW>#]{}wF`# o ?o ? i{}wH<$A o 9{}wJk]OP=%s{}wJ;(]O?w{}w{}w_o 9{}w]_`U{}wL`&o {}wLo ¯q8 ]/]`I{}w?{}wK{}w om{}w?1o e{}wଃ7{}w']aP?oA{}wo@ġĠ]W@o M]]/]C"0{}w "]C0{}wT?o +7{}wVo+/Q{}wXS{}wX?o ?g{}wX՟_{}w h@-]o @Oh ]3%]oO.!.?]_U{}w\|Y{}w]gv?y&/gRlm5DQ u O{|yRKXuooeeXG]TXu^2Ksuf/zzӧÐNyklmFhhVº`K iqM v? /2]t+%⺿ m==_"cc'GFF]k2QUg+OMhx'^2S4+}/2> ̿||&2O NeԮRNޙa:o}BEd M{}oƷj,o랕0oo [y{}o/o!?e׷aY_ Jv>f?]^[++Hxi+H |pN`NgAccUlys}/R"fo!x#^ C+zzQ?FE{EF <0.sc1vO(Qq#7gTc˘ł`*g1 E U3F?)g&*?'`Xc1`3?XEǪ#ea89~OOV3i#O(Qq#i6,J]S8\,T+gпc1bwbXF3Kg~Ǘ1??yItSOLyO(QqdS{HgW)t<-?'`TRx[MO(QqdW{H,Vp_~OO Yy~ǚc ЧP_"6YS" #}.c (W.)y=/4)*.=WDl=L(PVpǗ1??zY+,c1ЧP_"6YkV^$lysS窮՗g3 ida?XEǪ/iU)m;8ysS窮Kixc1B,QB~;Dl=UrW86\,꫒GL{%hS(T\z oiK)Ui~OOe4*;87<g?XEǪQ{Hghg[\,+ǚcO(Qqdk{H Y>Ǘ1??`y=hS(T\zDlpl lysS2 4DzO(Qqd;F3(u8 .c }J'faCc1?ЧP_wfyǗ1??`tB>ǚchS(T\zDl𰩜?'`,*g+6<5B,QB~ȉ{Hg&:V. ?'`MLt*\AD?4)*.=W숷fz骺vpn6fǚchS(T\z"6YX\ \,}@ E U O{HYǗ1??`ly=&B,QB~oi*Zy&Ǘ1??zUjO-l,, ;B^Ǘ1??`Y<O(Qqd$^#e .O66?'`,R>L{ B,QB~QF? H͉;\, ĝ4Dz4)*.=W{gi#8(lysS3BǚcO4) BT\Ʃ\ Ku[<ѨudUtBҭLt*jr뎅SyРuzU鎅dBI4SU :*UUq4U #OJ1аr~:P$STcQrM59dZHxҭLt*jr뎅аr9&ҭLuWLt,'5 Dj:ϪLTӘe 9&ҭLeTg'4)@4S '` rM5<#,uVV:Tis)5js)ziMETƲJus)JU**W2'5U^e1yQEUSxdž <0FjHYj(`FYm35QЪK4IKM i~i>AաC5UJhvsQ] 4]-% 禪hl0QAXErz\c,%< ZxN9 B<ε<0zWL xТ|tȪjȠ|zOdLUtШ=Xd֮:Y>zWLч\K'qdP_>zWLіO\j0:}(QcUƲUEqҬO<0Өa>(i>xzT$SzU鎅*UUq4QJ.lQ k꤁ oA םa םa֝a&bm./usr/es/sbin/cluster/eventses/AA kz oA םa םa֝a&bm./usr/es/sbin/cluster/events/utilsmanagAA kT"o^םa՝a֝a&^bm./usr/es/sbin/cluster/events/utils/cl_cfgvggnal#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/events/utils/cl_cfgvg.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2007,2008 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)73 1.4 src/43haes/usr/sbin/cluster/events/utils/cl_cfgvg.sh, hacmp.events, 61haes_r714 5/14/08 00:48:27 ######################################################################### # Name: cl_cfgvg # # Description: This script is written to varyonvg all VG with # auto_on=y and parent=$1. This is mainly used to # varyonvg all iSCSI VG with auto_on=y after the # TCPIP is up. # # Called by: acquire_service_addr node_up process_resources # # Arguments: parent_dev (like iscsi0) # ######################################################################### [[ $VERBOSE_LOGGING == "high" ]] && set -x [[ $VERBOSE_LOGGING == "high" ]] && version="1.4" # Parent device we are interested in. parent_dev=$1 # Fetch all VG on this node. all_vgs=$(lsvg) # Fetch all active VG on this node. active_vgs=$(lsvg -o) # Fetch all Inactive VG on this node. for all_vg in $all_vgs do inact=1 for act_vg in $active_vgs do if [[ $act_vg == $all_vg ]] then inact=0 break fi done if [[ $inact == 1 ]] then inact_vgs="$inact_vgs $all_vg" fi done # Fetch Inactive VGs with auto_on TRUE using lsattr for inact_vg in $inact_vgs do auto_on=$(LC_ALL=C lsattr -El $inact_vg | awk '($1 == "auto_on") {print $2}') if [[ $auto_on == "y" ]] then autoon_vgs="$autoon_vgs $inact_vg" fi done # Check if autoon_vgs VG have disks with parent as in $1. If # Yes then varyonvg such VG. for autoon_vg in $autoon_vgs do auto_disks=$(lspv | awk -v avg=$autoon_vg '($3 == avg) {print $1}') for auto_disk in $auto_disks do parent=$(lsdev -l $auto_disk -F parent) if [[ $parent == $parent_dev ]] then varyonvg $autoon_vg break fi done done  k"oY םa՝a֝a&Y bm./usr/es/sbin/cluster/events/utils/cl_echognal#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/usr/sbin/cluster/events/utils/cl_echo.sh 1.17.1.1 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2016 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/usr/sbin/cluster/events/utils/cl_echo.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM ############################################################################### # # Name: cl_echo # # This routine logs messages to standard error # # Arguments: message text to be logged # Usage: cl_echo message_id, arguments, variables # Returns: 0 - success # 2 - bad number (0) of arguments # Environment: VERBOSE_LOGGING,PATH,NLSPATH # ############################################################################### PROGNAME=${0##*/} export PATH="$(/usr/es/sbin/cluster/utilities/cl_get_path all)" # always print a timestamp with the message print -n -u2 "$(date +"%h %e %Y %H:%M:%S")" MSG_ID=$1 shift # check for possible bad invocation if (( $# < 1 )) then dspmsg scripts.cat 1 "usage: $PROGNAME messageid (default) message" $PROGNAME >&2 exit 2 else dspmsg scripts.cat $MSG_ID "$@" >&2 #################################################################### # check if this is a client or server environment #################################################################### if [[ ! -f "/usr/es/sbin/cluster/clstrmgr" ]] then # This is a client environment, simply run dspmsg and exit exit 0 fi # Read the HACMPlogs ODM for the pathname of the hacmp.out log file # If the ODM is empty or corrupted, use /var/hacmp/log/hacmp.out DESTDIR=$(clodmget -q "name = hacmp.out" -f value -n HACMPlogs) if [[ -z $DESTDIR ]] ; then DESTDIR="/var/hacmp/log" fi HACMP_OUT_FILE="${DESTDIR}/hacmp.out" : $PROGNAME: using $HACMP_OUT_FILE for clsynclog # Now, sync the log file to disk clsynclog $HACMP_OUT_FILE >/dev/null 2>&1 fi return 0 |~B k"oםa՝a֝a&bm./usr/es/sbin/cluster/events/utils/cl_loggnal#!/bin/ksh # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2017,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/events/utils/cl_log.sh 1.11 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1990,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/usr/sbin/cluster/events/utils/cl_log.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM # # COMPONENT_NAME: EVENTUTILS # # FUNCTIONS: none # # ORIGINS: 27 # # # (C) COPYRIGHT International Business Machines Corp. 1990,1994 # All Rights Reserved # Licensed Materials - Property of IBM # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # ############################################################################### # # Name: cl_log # # This routine logs messages to syslog and standard error. If the string # specified by message_id can't be found, default_message will be displayed. # # Arguments: message default_message # Usage: cl_log message_id default_message # Returns: 0 - success # 2 - bad number of arguments # Environment: VERBOSE_LOGGING,PATH,NLSPATH # ############################################################################### PROGNAME=${0##*/} export PATH="$(/usr/es/sbin/cluster/utilities/cl_get_path all)" [[ $VERBOSE_LOGGING == high ]] && set +x set -u # capture current time TIME="$(LC_ALL=C date +"%h %e %Y %H:%M:%S")" # Get syslog configuration file typeset SYSLOG_CONF="" SYSLOG_CONF=$(clgetsyslog) # Use default configuration file for any kind of failures if (( $? != 0 )) then SYSLOG_CONF="/etc/syslog.conf" fi # check for required parameters if (( $# < 2 )) ; then print -n -u2 "$TIME" echo "usage: $PROGNAME message_id default_message" return 2 fi MSG_ID=$1 DEFAULT_MSG=$2 # this is the banner that surrounds error messages MSG1=`dspmsg scripts.cat 3010 "\n!!!!!!!!!! ERROR !!!!!!!!!!\n"` # only do the catalog lookup once. # be careful with quoting of $@, so that it gets passed as a single argument. if (( $# > 2 )) ; then shift 2 MSG=$(dspmsg scripts.cat $MSG_ID "$DEFAULT_MSG" "$@") else MSG=$(dspmsg scripts.cat $MSG_ID "$DEFAULT_MSG") fi if [[ -z "$MSG" ]] ; then MSG="Can not find message!" fi # add to errlog # note that logger adds its own timestamp on the dspmsg logger -t "PowerHA SystemMirror for AIX" $MSG # now print to stdout with the remaining banner print -u2 "***************************" print -u2 $TIME $MSG1 print -u2 "***************************" print -u2 $TIME $MSG # special format for consumption by log analytics tools print -u2 -- ""\|"$(/usr/bin/date '+%Y-%m-%dT%H:%M:%S')"\|ERROR\|"$MSG"\|"\n" # Find the file to which syslog goes, if any SYSLOG_FILE=`awk '/user.notice/ { print $2 }' ${SYSLOG_CONF}` if [[ -n "$SYSLOG_FILE" ]] then # create if it doesn't exist [[ ! -f "$SYSLOG_FILE" ]] && touch $SYSLOG_FILE # # Finally, synchronize the syslog file # clsynclog $SYSLOG_FILE fi return 0 kb"oA םa םa֝a&bm./usr/es/sbin/cluster/samples/pagerl_loAA k(o.םaW՝aםa&.bm./usr/es/sbin/cluster/samples/pager/sample.txtl# @(#)08 1.5 src/43haes/usr/lpp/cluster/samples/pager/sample.txt, hacmp.pager, 61haes_r714 3/21/06 09:20:07 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/lpp/cluster/samples/pager/sample.txt 1.5 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2000,2006 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # $Id$ # sample file for alphanumeric paging # you can use the following notations in your message # %d - current time&date # %n - node that sends the message # %e - eventname # '#' is used to comment the line # for example "Node %n: Event %e occurred at %d" # if nodename=bazilio, event=node_up # and current date&time = Thu Sep 28 19:41:25 CDT 2000 # will result in sending the message # "Node bazilio: Event node_up occurred at Thu Sep 28 19:41:25 CDT 2000" Node %n: Event %e occurred at %d, object = %o 26 ks"oiםa՝a֝a&ibm./usr/es/sbin/cluster/events/utils/cl_msg.txtl#!/bin/ksh93 # ALTRAN_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # Copyright (C) Altran ACT S.A.S. 2018,2019,2021. All rights reserved. # # ALTRAN_PROLOG_END_TAG # # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r720 src/43haes/usr/sbin/cluster/events/utils/cl_msg.sh 1.3.1.1 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 2008,2015 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#) 7d4c34b 43haes/usr/sbin/cluster/events/utils/cl_msg.sh, 726, 2147A_aha726, Feb 05 2021 09:50 PM #================================================ # The following, commented line enforces coding # standards when this file is edited via vim. #================================================ # vim:tabstop=4:shiftwidth=4:expandtab:smarttab #================================================ ############################################################################### # # Name: cl_msg # # This routine logs messages to syslog and standard error. If the string # specified by message_id can't be found, default_message will be displayed. # # Arguments: message default_message # Usage: cl_msg -e Error_Type -s Setid -c Catalog -m message_id default_message # Returns: 0 - success # 2 - bad number of arguments # Environment: VERBOSE_LOGGING,PATH,NLSPATH, HACMP_SETID, MSG_CAT # ############################################################################### PROGNAME=${0##*/} TIME="$(date +"%h %e %Y %H:%M:%S")" No_Error=0 ERROR=1 MSG1=$(dspmsg scripts.cat 3010 "\n!!!!!!!!!! ERROR !!!!!!!!!!\n") unset MSG_CAT MSG_TYPE MSG_ID SET_ID if [[ $VERBOSE_LOGGING == "high" ]] then set -x version='1.3.1.1' fi usage () { print -n -u2 "$TIME " # leave this message alone since it is our error message and is right dspmsg scripts.cat 999 "usage: $PROGNAME -e Message_Type -s Setid -c Catalog -m message_id default_message\n" $PROGNAME >&2 exit 2 } while getopts "e:s:c:m:" opt ;do case "$opt" in c ) : Message catalog used for the message MSG_CAT=$OPTARG ;; e ) : Error or standard message. "0" is standard MSG_TYPE=$OPTARG ;; m ) : Message ID in given set and catalog MSG_ID=$OPTARG ;; s ) : Message set ID in given catalog SET_ID="-s $OPTARG" ;; esac done shift $((OPTIND-1)) # : All the rest is the default message and data - "$@" # if [[ -z $MSG_CAT ]] then MSG_CAT=scripts.cat fi if [[ -z $MSG_TYPE ]] then MSG_TYPE="$No_Error" fi if [[ -z $MSG_ID ]] then usage fi # Get syslog configuration file typeset SYSLOG_CONF="" SYSLOG_CONF=$(clgetsyslog) # Use default configuration file for any kind of failures if (( $? != 0 )) then SYSLOG_CONF="/etc/syslog.conf" fi # : Look up the message in the catalog # MSG=$(dspmsg $SET_ID $MSG_CAT $MSG_ID "$@" 2>&1) # : This is where we print out the parts of the message when we have : an error. We also write to the syslog if it is configured. # if (( $MSG_TYPE != $No_Error )) then print -u2 "***************************" # : Find the file to which syslog goes # grep '^user.notice' ${SYSLOG_CONF} | read skip SYSLOG_FILE rest if [[ -n $SYSLOG_FILE ]] then if [[ ! -f $SYSLOG_FILE ]] then # : If the syslog is configured, we will create the file if it : doesnt exist. # touch $SYSLOG_FILE fi # : note that logger adds its own timestamp on the dspmsg # logger -t "PowerHA SystemMirror for AIX" $DEFAULT_MSG fi # : This is an error message so we display it as such. # print -u2 $TIME $MSG1 print -u2 "***************************" fi print -u2 $TIME $MSG # : Finally, synchronize the syslog file but only if syslog is configured and : the file exists. # if [[ -n $SYSLOG_FILE && -s $SYSLOG_FILE ]] then clsynclog $SYSLOG_FILE fi exit $rc  k) o_:םa՝a֝a&_:bm./usr/es/sbin/cluster/utilities/clfile_lockxtlaBYH  0xP0 T01L.textPP PWE .data0 T0 T T<$@.bss0$0$.loader$.debug B(= ,|nx|#x|+xb,0AA D| S*N!A9H}{x~xH` ,Ab$H9A| @__start,M H4N @__threads_init!|AfH| FN!Ab ,Ac| CN!Ab,Atc| CN!Ab,Ac| CN!Ab,Ac| CN!AH8!@}N b,AK A__threads_init@AF2_1@|4!HHQAH8!@}N A( call_pth_init<8A L| N |!LahbPh8t8c@HA8`HՀAHX|8!PN ATusage|!`La8`a@a`adHAal8HAa\a\(A@a\8 H`,@(\88d88JHA8`adHa8$HAa`a`,Aa`aa,LAla,PAa,TAHblcaXad,A48HAahHhX888UHAAHtblcaTad,A48HiAahHhT888\HAH(blcHYAa@HacK݀a8,HAa`a`,@aX(AaT(@acKaXcHAaDaD(@8bPX88c@HAA8XH AbHcHMAaDcaLaL8HA,@Dad,A48HEAahHhD8888|HрAH 8HAbHcH̀AaT8HAAaHaH(@ 8XHMAbHcHAaHcaPaP8HIA,@Dad,A48 HAahHhP88x8HAH 8H̀AbHcHAaHl8 %d and need to release them returning an error rc of %d. Usage: %s -F "passwd file name" -L "lockfile name" -T "timeout for holding the lock" @(#)34 1.4 src/43haes/usr/sbin/cluster/utilities/clfile_lock.c, hacmp.utils, 61haes_r714 11/30/11 12:55:59P00`000 T0 0 0 @$ep]errno@_iob@exit@ fopen@ fprintf@ getenv@ atoi@ getpid@ fflush@ printf@ perror@ sleep@ strdup@ getopt@ "@ __crt0v@optarg@/@L@ Y@flock@ e@ __start0x! 0 T0 X0 `0x0|00000000000000000000 00 0000 00 00 0 /usr/es/lib:/usr/lib:/lib:/usr/lpp/xlC/liblibc.ashr.olibpthreads.ashr_xpg5.olibbsd.ashr.o@VPDclfile_lock/5765E6200/520 __mod_init__malloc_user_defined_name __pth_init __pthread __bsd_init__default_char:t132=-5int64_t:t2=-31intmax_t:t3=2:t11=ar0;0;9;5:t13=ar0;0;2047;-4&fd_set:T14=s8192fds_bits:13,0,65536;;fd_set:t15=14time_t:t17=-1suseconds_t:t18=-10timeval:T19=s8tv_sec:17,0,32;tv_usec:18,32,32;; :t21=f-1;:t22=ar0;0;6;5 :t23=f-1;:t24=ar0;0;13;5 :t26=f-13;:t27=ar0;0;7;5 :t29=f-11;:t30=ar0;0;5;5 :t31=f-1;:t32=ar0;0;4;5 :t36=*-11:T37=s32_ptr:34,0,32;_cnt:-1,32,32;_base:34,64,32;_bufendp:34,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:7,192,32;_lock:36,224,32;; FILE:t38=37int32long64_t:t40=-1 pid_t:t41=40 :t44=f-11; :t45=f-1; :t47=f-13; :t48=f-1; :t49=f-1; :t51=f-8; :t52=f41; :t55=f-1; :t56=f-1; :t58=f-11; :t59=f-1; :t60=f-1; :t61=f39; :t62=f-1;:t63=ar0;0;15;38:t64=ar0;0;106;-2 usage:F-11 __func__:V30 Max_live:-1 lckfile:39lckfile_fd:-1 Lock_file:7 PasswdFile:7DebugEnabled:7Debug_String:7 __func__:V32clfile_lock_c_sccsid:V64RrV.n0r2vjzl<>ޙnp B nJ:f4pW86@B(4@ %*$/nP4*P4*P 94/x>BC>H4*,C6><L>hCr>xH4*C> M4RJBTp|RD F 2H ZJ  L N >R fT V X Z \ .^0 Tj0 X0 `t0xb0|,0|0,00,0 0*000h0&0$000"0000000 000 00 000(00 0<    <lx !#%&)(L/d0p34569>?@A$C(D4EDIdJpKNSTUVXYZ]^ d0f<jHk`lxoeqtsxerrno_iobexit fopen fprintf getenv atoi getpid fflush printf perror sleep strdup getopt  __crt0voptarg* 5flock ? TOC0k__crt0v0k0kJ0k50k*0k_$STATIC0k_$STATIC0k0kerrno0k_$STATIC0k_iob0kfprintf0kexit0kgetpid0kgetenv0kprintf0kgetopt0koptarg0kstrdup0katoi0 kfopen0kperror0kflock0kfflush0ksleep0 k agTv g.__startPk.__startPb__start0x J0 Tk,p_xargc0p_xargv0p_xrcfg0p_xrc0_0y0$.filegk`)! z1@ kz_$STATIC0 ke"0  G0]0o0.fileg:t50=-8:t46=-13:t35=-3:t33=-5:t28=-11:t25=-13:t12=-4:t9=-1:t4=-2:t1=-31,:t5=k-2:t6=*5:t7=*-2:t8=*7:t10=f3;<Mb:t16=*15:t20=*19,9JWht:t34=*-50:t39=*38>U:t42=f7;:t43=f7;dq}:t53=k7:t54=*53:t57=f3;":t133=Zk).usage p6.bfe5name:p7h.bsC.es.efTe8.main `main:F-1.bfe<argc:p-1argv:p8R@fp:39D`Hfd:-1LmP}TX\opt:-1`Debug:-1dhpid:41l.bs.es.efe_$STATIC0 @k7.bs.esstrcmp.s g.strcmp l).file g+`k`)E` _$STATIC0 kUF0  T0.filegg0glink.s g.exit k(.exit glink.s g.fprintfk(.fprintfglink.s" g.getpid 0k(.getpid 0glink.s' g.getenv Xk(.getenv X#glink.s, g.printf k(.printf (glink.s1 g.getopt k(.getopt -glink.s6 g.strdup <k(.strdup <2glink.s; g.atoi dk(.atoi d7glink.s@ g.fopen k(.fopen <glink.sE g.perror k(.perror Aglink.sJ g.flock k(.flock Fglink.sO g.fflush k(.fflush Kglink.sT g.sleep ,k(.sleep ,Pglink.s gk(U__mod_init__malloc_user_defined_name__pth_init__pthread__bsd_initcrt0_datacrt0main.s_malloc_user_defined_name__C_runtime_pstartup../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cWed Mar 5 14:04:03 2014 IBM XL C Enterprise Edition for AIX, Version 9.0.0.0 --- .__threads_init.__threads_init@AF2_1_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routine../../../../../../../src/43haes/usr/sbin/cluster/utilities/clfile_lock.cWed Nov 24 00:03:46 2021 ../../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cWed Mar 5 15:40:44 2014 .call_pth_init__pth_init_routine../../../../../../../src/bos/usr/ccs/lib/libbsd/__threads.cSat May 8 20:57:33 2010 _bsd_init_routine.__pth_initt lD%o$םaX՝a֝a&bm./usr/es/sbin/cluster/hacmp.my$$   e -ETadinorstACINPRSchlmpuy",0:DOYfg().16=BGJUXbvw{}24FLMVkx358Hj/79Q'_qKz;Z#@Wkx08 'U҆-j+` ֵ b**:PEEBN, V#8PJP@H!/8$$p Ʒ#  A 0yAozR'/$`k{=/։ИGc[6P   ZV)k@)Ej%TT!EH@kc[GgmBYA;vEv_З00Ʒ@'?;g ʓ|1kJ{kpDJSrUB8HF}o)4&mD=okxz6[Y$oȚWoYT/*Oҽot]$o+ ;[]'z9].``#JƷ#  N4x<Ƶo^FpX@xֱ-5tcֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֱc[3ֱ "ir$#$uikx!d&Z#OyFrZڱ;^03R*L!k0,(hѥ=ֳ a< 05kp0>ֳ @͝V *Tc]rff 灋 5A+*Bɳ3ǐsń@6 ggc9b c5X?z[J_З[1†X@x03䨚t5`s0{yc>Uk+mB*Og{8ט1|SENV@@09ſ=Ƽ1? B*Og{pY 1†8ט1|S@Pѣ`Og{[kp) Y XPѣxOgedBvQ`Z-5q8p_ 4l nqV5E5}f qoq0 cÂPѣQN, V<'ta`88/zȅ 5cUkf qoq0 cÂPѣQN, V<Nfa`88/zȅ 5cUk?Nת@09ſ=Ƽ1? ➲!CFE;(-XӢ a`88/zȅ 5c¸?NS%L ^`OYYFXxkYUNH8ט1|SVD(hѨeV5E;(-X qoq0 cÂPѣQN, V<qV@09ſ=Ƽ1? ➲!CFE;(-XUk?R=@09ſ=Ƽ1? ➲!CFE;(-X*J[kp)+"4hSՏ qV5c]8ט1|SVD(hѨe_ֱޖZeXֱ)kLǥ+rRo]y*Ot;yFzuZZWWcZE5}-y0^‹-!Ek11HN0*30@f`ފkZQl8/tSZ*ƵnSZڛ5ncҕ)jqD&E5}:GF1̥|#2T>P=Cb)k@J'@09Ž"s^Pk٘Qe2Mvf ) Wf` Y)Si8ЗNE(LO)[־ [3 ֵ+c[ֵ\"V۱zR%-N>V֬VۭYxoE;^C5SZښ;o8Ns3"k^‹-!vm&A<=Ԅ ҫ0{,y ff z[沂;_B^t~oE5}f:)kxHOcZƷֵ:dX=)[+z#V{(Aܕ+0CDoҽ*Cb)kMtfbMyBapkfaE"M5٘xz'^]܁gs k30[`B^oN?:GE0p)Mk_k@UkMk_jj!+JV䥩޻u=_-kBucZƵkZSVQ _mfbMyBk٘Qe?-]*Ƶn8Α`zRZފvT'P5kYt)@09Ž"s^PN zd٘Qe2Mvf ) Wf` Y o/to:GE0p)HzU:@09Ž"s^PN zd٘Qe2Mvf ) Wf` YW Z9]/to:GE0p)HzN*5kXWNYV5kp~Wxkso% )OfN{E=iI8/cWc[tWdBֳ-+"fbMyB({-܀+z‹-!QZB)3yOC ҫ0{,y ff +k-.;dk%o*N٘8p_V5JޫfbMyB3 , NlGmiA<= R/J  Vf=}|SXֳӽWÂ4qFfZW#apkJl+*BɌfe}:eu^12W 5 qi_MYCik32Ҿx_p^cZƷ}2,ksKSvE=X J!"7ii^\!k2Ҿ-y0^‹-!Ek11HN0*30@f`i_E0p)+zx5X?Mc[oZ [ng+zN kXֳ-+Sp`s{^D31& +*Bɳ0revm&A<= R/J@95-oB^JҾf`|SWN_85i_NY]v5VT|h i_XֱfZWӫ*VW_8Ns3"k {\JBi8«333o(Up`(?faE"M5٘xz'^]܁gs k30[ueJKzf`|SWN_|UkJAK*Ʒ02WEZrF'n*G}i_XֱfZW" Y\ ב9@(C 5 qSΓ`q"$ N`P~*‹-!Ek11HN0*30@f`" Y^Qi^TtJK}}ÂV5kp4WVPGlƷ0ՔvSJVke}5e v@09Ž"s^Pk٘Qe2Mvf ) Wf` Yevҕ}Â85<W/ ǥ+zO޻u=_-kBucZƵi_P/@09Ž"s^PkYP` 8  333L$(gO`%)D}0`VfYnA -]]VUֳ!GL qokȜf Dה!fYnA -]VGKx Q`*W`UzUp5F5*1@09Ž"s^PQvfaE"M5٘xz'^]܁gs k30[avÂcWN_85<1:ǥ+rRo]y*Ot;yFzuZZWWcZ̄cP<u< ב9@(Cʧнe2l(܂][I3yOC ҫ0{,y ff z[;O֢2ǥ+rRo]y*Ot;yFzuZZWWc[m/Bko/d]Q)#8oV/cZ̄cSfbMyBapkF0PgJH0HP8V(8ffd]Q)# @g8 3 , WaiS!8 <ÞaYޖ=%kf<#w Xֱ0?cSvEncҕ)jqVۭYy*Ot־ׂ!8ڄ1fB1HBZm#@09Ž"s^Pk٘Qe2Mvf ) Wf` Y?З[ͤw|M)"R0ƻky[KE0p)ӽWc[Ĩƥ#y iޔKSvV{JS-妵N kYN%F5)KMw qokȜMyBk[C(!xz Wgra0oKy {G}'Ғ){+sk)Qk&7g<#wֱc[!oNruʱc[{q:TncҕġY@E=/xSt"Ʒ2Ns"Ƶ=" qokȜf Dה!8wN][C'KSf ) Wf` YW[oB\ݸ* #Y+yRvÂNp*Ƶ=z@09Ž"s^PtU٘Qe2t`;kHE=fb)bazUvfh`GL=8/yV5v`}P[3'6#̞k32{s`N zd32{rzEkk32{t/ k32{rk32{wN zd32{p4k5 qV5kp0nm#Encҕ)jqtۋf`|SnޫXֱہ]onJZ|및%Z)rT(AQKJ k/8_mK-1Elt+\axPAA kY= I5gMyBkZ`N`AtS :){p` 8Ίi.#YD(܂aiSHN0*?ǹ0@AI&/tn'Jp)tU XƵk5kx$־ׂ!8dS:uʱc[zNOX=)[JSޞ̝{Ғ)y[q^LjƷ2o#Ȅ1f"U Op`s{^D31& A=Ɩ@ Nתޫ0rdvv֐zS!8 <ÞaYmKU Ym0p)Nתxb)P];| ב9@(C Nתޫ0rdvv֐zS!80NvT'Si2hȄ1c[o +.&K4'nƷ2 IޞNV׉{(Aܕ+0A:cZƷ1 ފ`]'+_j'+vQ`Zה~oc[uhNQIL-9lUT/*N5iGx26@Pk2 @09Ž"s^P Kw *z‹-!QZB)3yOC ҫ0{,y ff +k-/UNH[3 I*ƵUtU`s{^D31& )U];vfYnA ."OYxz'^]=)દ:dFx*ҏf`|SU_V5•UӽWÂ4qFfAUMtᆽV-UrrHe`Z-yOBֳ IfbMyB>VU8.)faE"M5٘xz'^]܁gs k30[%?B^o$ayRb٘8p_UWN_x5UQdjƷ1Jܔ8[ [cOtWIډ"XAh=cẐ#\ ב9@(Cʧнe2l(܂][I3yOC ҫ0{,y ff z[FV { If`|SU];~qV1c[)UP/ksJn&Do}%*rF'J'c[m/BJV0~ I +oѤT9]/tX|aRc[?tڈVFўk*rF'n'iGk*3mDmh'05 ^yב9qqbȅ 5bIGP``4gE5}Mk_jm#G0{,y ff Jn&DUT/*OҾ:b-1cZƷw;kEc[wo)TIkSZQxN>j-TwV kX@o?mEe{"fWlZ," qokȜf Dה!({-܀ UӽWfaE̝."OYxzBqU٘=y<3З?mEe|vJT0p)R= kY֋*ޫ qokȜf Dה!~6YWN][C2t`;kHE=fb)f) Wf` Yd!)Eh'Qj6Y_5&-=`eLf`|SlZ,"*Ƶ~6YWN_3 8]mhG0^1֋*lt/YLfWlZ,NHapkkE'$W6 nN zd32`eMYCZ^1֋*jH^c5Qj6Y^dXֱfWlZ, ב9@(C0^‹-!][I3yOC1HN0*30@f`~ڋUᵢʋf`|SlZ,zx<41s^D31ƽǜy;++"4hSՋ3%aAw!`eLf` YvM-m|=vZ'Z,#@fX̽`<ǞQyq 쬬PѣQN, V,y܆ zkE2*5kq;kEڴ~<'$WMcZƵ]mhڝDM-y3ʧнe2l(܂Ek13 ҫ0{,y ff z[7З[ֶձRǫD٘8p_֋*ޫ/c5欠З?mE~;kEcZƵ]mhj-Tv@09Ž"s^Pa=[C2Mvf bazUvfra0oK|PGkKmEIJ{)h٘8p_֋*ޫk 欠З:OHQj6YV5kY֋*jH`s{^D31& {\{3 , evm&A<= !8 <ÞaYޖЗVOΑyO-EÂ6YWN_qV3/X*xiiBd1s^D31ƽǜy;++"4hSՋ3%aAw!`eL]mhQ9"ff]mhj-Tv=vʚ;n*@95, *[=Z'$W沂;_B^tc32K|PGkKmEЗڋUffW2{l8/cZƷ`~~ڋUᵢʀ n'$WcZƵ]mh^ʝD@09Ž"s^Pa=[C2Mvf bazUvfra0oKyj-Tw֋*6^󨜑\s?JO-Ky*&2|J !4='j);M5xK?ӔJ(JN)6grJdZו'΢rE~M9Oy O% 'Hx[3 ➻`e];~ֱj-Tw֋*6h&'$WcZƵ]mhh&Q9" qokȜf Dה!apkfaE̮-]<'^]܁gs k30[~ڋUᵢʀ  A-:JV}( o[Q4')PMm A-}9 :euKxVoh&>ҙ><ӻxS?2>@$= [3 ➻`e];~V1c[;kEp4LFNHƵk2`e@M1" :`s{^D31& {\{3 , evm&A<= !8 <ÞaYޖZ TmM1" Q9"?  zpD*VW_HV%h&v-O]mhUcZƵo0#-Q1c[;kevπ{@09Ž"s^Pb4rn~ӽWfaE̝."OYxzBqU٘=y<3З?mE푬; f`|Sl'{^kY:w['95ftU٘Qe3'KSf bazUvfra0fN2V|;FV-=`eL]:dx3 ➻gE=_eU9l|ঌL#!X0~ઠmH5Q` qokȜf Dה!>VU8.)faE̮-]<'^]܁gs k30[8)ҕvZf=vΝֱZz$~ KmE[ kXֳ붢G^@09Ž"s^PapkmD#4gx`#FJ롵: 4hH8)'/k#F3Ĩhmh#F`@#FAzL| 8``@,NzI;``@@q*rF& 4hP84+V;hhmh#F0q]Qi^TSX$hc?(kIQQ)# 4U(܂Ek13 ҫ0{,y ff z[޺K-Ql8/z;~cZƷ`Gz[Qj6Y^m# ƵnޖZ WHBE=c[oVOΑxN>oEjg~I%QjkW»ک)|'%;S)C)[)8/cWc[j-TwW?qw[֋*Ƶk? TGLagMyBYnA "M5xzBqU=y<YwDa}ҔvZ'Z,=vʛHzUcZƷ;kE;м/ks/NY_I)y;Յo$d/)[֋*Ƶk2`eMu ['95fk332NS` 8ffe NS`(8ffbNsA333 *dB333+-)ZҠ@PqM9OPx0  )CQ#@Pq{ Jdx0h ֕B0 1BDzt`3Hr[_C]%@0 1BDz(#i@ H 1ԄOb @ZjBp'CQ @@k} NSkm#jU 40ff 0rfWaiSR/J@95-oBKyj-Tw֋*-O]mh:ޫzSP/Qyq 쬬PѣQN, V,y܆ zkE6eL]mh:dF333kE6/ ΊkZS"3־GLf` YvM-m|=vZ'Z,E(Lٙk?+y"p#٘8p_lcZƵo0;ފvQ`ZEc[VTZׅku!)Lj(/_jC5P?E;(-XƷ0ɣ]Sg}=k1f"XCv-y0-;YQe2Mvf ) Wf` Yj} r{]5׷؋f`|SXxOcZƷ)Ej7nnf5M;}'=@ mֳN, V!st{afbMyB](܂][I3yOC ҫ0{,y ff 5ev=gu[3 cUk,XPٍnaFI){mt\!na , ΗZ5UZV]5װCb)Ej `s{^D31& .NVfYnA -]lUk3Dwz qokȜf Dה!뫬(܂:]E"11HN0*3 4{0SΑ"3iߊ0p)KgwE=VU8.)f c[ȱzR%-N>VۭYxoE5}R=Ci}JKy*&2DwwΝ:L׭m5x0`k3Dw29['95a?{ Ro3N +}tQT 1zJfPP0g% &nN`nNEOoPq$q:T]U=m#@9(I3i`m#ES0 36袩ffp"0Hq$"0HH8fgY) 覵$Mk_j"A33:4)B@@qLEOo!@Ld@8δx0`c33iP`33lXֱDw6"Ʒ1Jܔ8[ng+ֵHN kY% ב9@(C 5 q(܂][I3yOC ҫ0{,y ff z[K-;>&K-%([ f`|S]]N*Ƶn8̋ǥ+rRo]՞LjSZ!8ڄ1fh̎ qokȜf Dה!fYnA -]*Ƶnl)ksKS';=)ۭYxo'c[!«`~4z%-섶! kY%fbMyB](܂][I3yOC ҫ0{,y ff z[%7M)"[KgDQZ؋f`|S]]^*Ƶnܺ-;zR%-N>V56w4z%-섶! kY%tZw-y0-;YQe2Mvf ) Wf` YWFNߢ[;_)Ar?)ޞoSl8/}뫼kX Kgsi6 kǥ+rRo]՞LjSZ!8ڄ1fh:l ב9@(Cʧнe2l(܂][I3yOC ҫ0{,y ff z[7З[ͤw|M)"[KgDQZÂ-޺¸ֱ^-lƵzTQ(漉fc{8vVVD(hѨefJ<ƒC<6 hΊkZS`j3iߊ0{,y f`dJ[:Gy= _[~l-+@N +}tQT<'95tnJOcxN"+F j-1zW lnY) <'95t{=/覵N׀{Kgql8/0eKMk_j"(漉fc{8vVVD(hѨefJ<ƒC<6 hΊkZS`ۛ4g-ˢӿf` Yh+Ȕ>t{=/覵Sߢ[;f`|f^TLxV9"s^< 4j)Ejř0;O:GM3־)hjJ+}%J+Ȕ>tf`|F3/X*]&JDˢyב9qqbȅ 5bIGP``#MMk_jlў{s`%tZw <ÞaY,LX^TVGbw th<+쮣"R:-k-5}t)}((漉fc{8vVVD(hѨefJ<ƒC<6 hΊkZS`ۛ4g-ˢӿf` Yh+Ȕ>tn#?)i2R&ayR~N&-%kqnKPR-N&OkֶqJVrM?="cZ̽`ikCkE=}((漉fc{8vVVD(hѨefJ<ƒC<6 hΊkZS`ۛ4g-ˢӿf` Yh+Ȕ>tn#>xN&-e\%ZWyG5Ns3kyǘ!CFE;(-X0Qr)HSFtSZڛ4g)>l]30@f A]FDwa}lE0plf^T|+NǞQyq 쬬PѣQN, V,y܆ y:lѝֵM6 hϢ[;E~*@95ǯ8)$}uLX^T-*Wފ:_ qZlE0pX̽`W_Eh [(漉fc{8vVVD(hѨefJ<ƒC<6 hΊkZS`ۛ4g-ˢӿf` Ycל>&JD֬/*O+Eh ҅ b-c2]}t&tQT<'95l]? <ÞaY`%}$"`|P}]U=yב91ƽǜy;++"4hSՋ?y܆ y:lѝֵM+SF}ܺ-;V=y<hJBI]ESߢ[;J- g/X*yב91ƽǜy;++"4hSՋ?y܆ y:lѝֵM+SF}ܺ-;V=y<hJo:  #FgzT%}T({}9"sc{8vVVD(hѨe (  t):)kM3W`%tZw0{,y gЕѢIDw[?8/ gJړߏ<'98׸1eedBvQ`Zg0;O:GM3־)=}6 hϢ[;E~*0@- _zPSjOcto!-[?8/3gzT%}mItQTs^D3q 쬬PѣQN, V,0Qr)HSFtSZڛ4gMKgrY` Y+SjO|ѢIDw[?8/3`j' ʓ9"sc{8vVVD(hѨe (  t):)kM3W`%tZw0{,y gЕVp[?8/gzT%}2N&]U=yב91ƽǜy;++"4hSՋ?y܆ y:lѝֵM+SF}ܺ-;V=y<hJjA;ʓF*}'Wl0p4c? ־^D9"sc{8vVVD(hѨe (  t):)kM3W`%tZw0{,y gMk_kͥI[;oDQZOtgLgzSZ2{<'98׸1eedBvQ`Zg0;O:GM3־)=}6 hϢ[;E~*0@,;м/2{Kg~-+VIΑl0p4OQj^҄tQT<'98׸1eedBvQ`Zg0;O:GM3־)=}6 hϢ[;E~*0@,;м/2{ˢߢ[;oDQZOtg+^UgQj^҄l]? <ÞaY`ﵜQޅ} ߢ[;oDQZOtg/X*]gQ/ iBd({}ǞQykyǘ!CFE;(-XIGP``#MMk_jlўҾ4g-ˢӿg܁gs k?]|;м/2{ˢߢ[;oDQZOtg𐑬cֱGxmh~t)Z65]'xJv*UH^TE5}ڋU'Z,mֱ~ڋUᵢ;4WzƵ]mh]vh['95f Kw kEEwN][C2t`;kHE=fb)f) Wf` YW[oB\;kE]vhFV-O] xfWlZ,Wg+w['95f T~;vfYnA (!<'^]܁gs k30Y?mEexWg+푬1l0֋*?UfG0p) T~V5ʏvq٢zCin̮6YQ;4W29̮6YS` >VU8.)kE6 iiI8N zd32`eG8]뫹eS^1̮6YQ;4Wz链kقcZƷ0Gxmh~fWlZ,Wg+ ב9@(C0^‹-!][I3yOC1HN0*30@f`~ڋUᵢ;4WÂ6YQ;4WtUOc2JsyG5Ns3kyǘ!CFE;(-X0Qr) T~̏f` YvM-QNY_Wg+[1؄ f`|eO yG5Ns3kyǘ!CFE;(-X0Qr) T~̏f` YvM-QNY_Wg+[SB0pzSGꥥ ǞQyq 쬬PѣQN, V,y܆ zkEEs"3lZ,SNvwٙ6YS`]mh]vhьlZ,Wg+utߊ0{,y ff Jn&~j-TwWUfV ؄ f`|1k,Gxmh)Wgv5kY֋*lӡ]8Ns3"k+*Bɳ0rfWaiSR/J@95-oB^o:ߟGxmh٘8p_֋*?UfqV1kQj6Y^l5kY֋*lҒq ב9@(C0|p] S&‹-!][I3yOC1HN0*30@f`pS} {yj-Tw֋*-O]mh]vhޫkp??mEexWg+cZ̮6YQ;4WzafbMyBeS^6fYnA "M5٘xzBqU٘=y<3-]]%QNY_Wg+ f`|SlZ,Wg+w X1kZ Wvq٢:ֱfWlZ,Wg+ut0`s{^D31& {\fffN0LӔh;33YQe3+i4fb)f) Wf` YuwЗ[Qj6Y^?Uf٘8p_֋*?Uf8Ƶk 0#-kW'Z,5ޖF5X+)JVP"dS&KS̝8/xF5 |SXֳʌjޫ 8ơF:d^1jd]]^1jAˢӿ0׸5njg#moy `7p` pqcP .apkF5 GS>VU8.)F5 >apkF5 7ndk3B/5 qơE#y i̝['95~apkgEMvBqU=y<[ޭt}=;-OơN8cZƷơ@xlk+rRo]y*Ot;yFzuZZWWcZcP<u?gMyBN zdQe?-]Jܔ8[aJS-1E^Q >]VU/ֶJء;8^Vk5F5 > qokȜDה!?qR@PqQ)#!@;?WkiZ;v(mDPqׄ"0(܂aiSHN0*?ǹ0@O} {ü#-OơN|UkjnȱޔKSvE=X J!"7ii^\!oeխPE9ln'ک)[ѥkVMo)A~S==* zƵơF̏`s{^D3&5 q(܂aiSHN0*?ǹ0@{q:TK-mal8/xF5 tU Xֱ81RonJZ|ZUo-5}Bp'cZcP/ `s{^D3&5 qS0g ֘*t0 YQe?-]1nT4'|WP!rkSM!X-` *nHp >n+t5kQK zC?T47|WP!rkSM!쪥?!MIBϛ.MoyC飤4}4i!:\GHhYZCR_ *nH@GP#B=; 6?QT,clz 7Ml(* {vC\1 6=uAop@7쩺i! PM-;,! gStB?`ư)c?AM&T\XRPeMIW@8RP}C&q胪 {" zBd',iBJ:i7=:N@kmHG(X҄3tn?O({]4t*FAp"@7:\GI¤hLIā >n+t5kHREU.N$Yq_CɭO({]4t@H!̧S?'Yq_CɭO({]4t*@4&At[?q '!g&@ CYq_CɭO({]4t > aoHgN$8 >n+t5kGصY IćA [Ph8d;5*C P&n+t5kBŒ2ǸWd9ecGIHE7MP 6 a=!.Ć=:N ASaHEN B(i!T1:\GIH*lPhDIHE7M$#P (gP!rkSM' q``N B(i _G! g&੺i  PMk,L]$78bϸ*nHO⅍(IC?AM&GI}w8bϸ*nH 3AM&GI}֝,餀4% 4SM' Y]I}St@o P&' YMIT1:i7=:N1t>੺i!

n+t5kp*t%B?A [Ph-G D249`~q _,B=:KQ¤jUKC?%@Yq_CɭO({]4tH-@Xc?%@Yq_CɭO({]4tH]SK3Ij8,B=:KQ¤d!5?%@O,B=:KQ¤gH 7:\GIj8TX1c q 7|WP!rkSM%R5*[-G,B=:KQ¤jU Q zKQć|WP!rkSM%RP%Z$8GYq_CɭO({]4tHR@`2g-G |WP!rkSM%Q a >n+t5kp(*t >n+t5kp(C,MC gHpA [Ph-GT - Z$8 |WP!rkSM%Q zP.%C!g&n+t5kp( B(H@,B=:KQ)K3Z$ ',B==pXQ.`q! P&n+t5ke v1 Dgg!g&n+t5kz`2Lq o >n+t5kzz$a=!.Ć=98oz! 0ʃ] bC SMV[T1z*nHT1:\G=UWcJPB=<pBϛ.MoyC L0B?,B=<p(HBϛ.MoyCLÉYq_CɭO({]4x0p\0$a=!.Ć=<pI¦a&aH 0ʃ] bC SM 8\$`]pI¦餇BƔ$CɭO({]4x0pHEa&  B*.MoyC ga& BƔ$CɭO({]4x0ppI¦餁Bϛ.MoyC %U30pMI7:\G 0 >,1.`0i!>!g&n+t5kQ¤n+t5kQ¤LX?dC7:\GdR2e7:\GdR&,d0!Tq!_A [Ph*FӜdC!g&?J$ #,B=;%G1%U3J$ |WP!rkSMGؘ-Tq!A [Ph >ŋm*8A [Ph >@ ~QĄ!g&n+t5kYQӐX /|WP!rkSMX m9,(i$ 7:\G,(i*t5<r !g&n+t5kDMpc"l 0ʃ] bC SMӣ! 1?Yp$0(X҄3t5kP4[MP4A(-MI aƻB&P!rkSMig-5 K ' return -1 fi if ! CAA_node_name=$(/usr/es/sbin/cluster/utilities/cl_nn2hn $destination) then # : Cannot find any IP addresses in the PowerHA configuration : or CAA node name for the specified destination. Bad input : or bad configuration. # cl_dspmsg -s 27 scripts.cat 22 "%1\$s: \"$1\" cannot be resolved to a valid CAA node name. Check the contents of /etc/cluster/rhosts.\n" 'cl_rsh' "$1" 1>&2 return -1 fi # : Invoke clcomd # /usr/sbin/clrsh $CAA_node_name $cmd_flag "$command" return $? _rsh # kvFo@ םa՝a֝a& bm./usr/es/sbin/cluster/utilities/cl_rcpl@@#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r721 src/43haes/usr/sbin/cluster/utilities/cl_rcp.sh 1.3 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 1999,2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)34 1.3 src/43haes/usr/sbin/cluster/utilities/cl_rcp.sh, hacmp, 61haes_r721, 1614B_hacmp721 4/5/16 16:52:48 ############################################################################### # # Name: cl_rcp # # Function: Copy a file from a remote node to the local node, or # copy a file from the local node to a remote node # # Input: cl_rcp [source Node Specification:]Filename1 [destination Node Specification:]Filename2 # # Node Specification - an identifier that can be mapped to a node # This can be an PowerHA node name, a CAA node name, # a boot or persistent label on an PowerHA node, or # a boot or persistent IP address on a PowerHA node, or # a label or IP address in /etc/cluster/rhosts, # # A node specification can be provided on the source or the # destination, but not both, unless one is for the local node. # # Either the source or destination filename can be left off # (but obviously not both) and the command is interpreted as # meaning the same file name in both cases. # # A dot ('.') as a destination is interpreted as copying the # source file to the local directory, same as the base cp command. # # Notes: Conversion of the Node Specification to a CAA host name done # by call to cl_nn2hn # # Actual copy done by call clrcp, which will invoke clcomd # # Output: 0 - success # 1 - both source and destination must be specified # 2 - One of source or destination must be local # -1 - node specification cannot be converted to a CAA host name # others from clrcp # # Examples: cl_rcp /usr/some_file that_node:/usr/other_file # cl_rcp that_node:/usr/my_file /usr/local_copy # cl_rcp /usr/good_file that_node: # cl_rcp that_node: /usr/common_name # cl_rcp that_node:/etc/config_file . # cl_rcp that_node:/etc/config_file save_copy # cl_rcp this_node:/some/file/path that_node:/put/it/there # cl_rcp that_node:/get/it/from/there this_node:/put/it/here # [[ -z $(whence cl_nn2hn) || -z $(whence clrcp) ]] && export PATH=$(/usr/es/sbin/cluster/utilities/cl_get_path all) if [[ $VERBOSE_LOGGING == 'high' ]] then if [[ -z $PS4 || $PS4 == '+ ' ]] then PS4='${0##*/}[$LINENO]: ' fi set -x version='1.3' fi # : Pick up input # source=$1 # given source file specification destination=$2 # given destination file specification # : Local variables # to_local="" # copying from another node to this one source_node_spec="" # source node specification source_file="" # source file dest_node_spec="" # destination node specification dest_file="" # destination file node_spec="" # given specification for node CAA_host_name="" # CAA host name to match node specification if [[ -z $destination ]] then USAGE=$(dspmsg -s 27 scripts.cat 9999 "cl_rcp[$LINENO]: cl_rcp [Source Node Specification:]Filename1 [Destination Node Specification:]Filename2\n\ where only one of [Source Node Specification] or [Destination Node Specification] can be given\n") print -- "$USAGE" return 1 fi # : Split the source and destination into node specification and file name # print -- "$source" | IFS=: read source_node_spec source_file if [[ -z $source_file ]] then if [[ $source == *(?): ]] then # : Given a source only in the form : "node_spec:". Interpret that as meaning : the destination file on the source node # else # : There is no node specification on the source : $source is a local file # source_file=$source_node_spec source_node_spec="" fi fi print -- "$destination" | IFS=: read dest_node_spec dest_file if [[ -z $dest_file ]] then if [[ $destination == *(?): ]] then # : Given a destination only in the form : "node_spec:". Interpret that as meaning : the source file on the target node # else # : There is no node specification on the destination. : $destination is a local file # dest_file=$dest_node_spec dest_node_spec="" if [[ $dest_file == '.' ]] then # : Destination was given as a '.'. Interpret : that as meaning the file to the local directory. # dest_file=${PWD}/${source_file##*/} fi fi fi # : Figure out the direction of the copy - to or from : the local node - and fill in parameters present only : by implication. # if [[ -n $source_node_spec && -z $dest_node_spec ]] then # : Copying from node $source_node_spec to this one # node_spec=$source_node_spec if [[ $dest_file != /* ]] then # : If not given a full path name for the destination : file on the local node, provide it # dest_file=${PWD}/$dest_file fi [[ -z $source_file ]] && source_file=$dest_file to_local='Y' elif [[ -z $source_node_spec && -n $dest_node_spec ]] then # : Copying from this node to node $dest_node_spec # node_spec=$dest_node_spec if [[ $source_file != /* ]] then # : If not given a full path name for the source : file on the local node, provide it # source_file=${PWD}/$source_file fi [[ -z $dest_file ]] && dest_file=$source_file elif [[ -n $source_node_spec && -n $dest_node_spec ]] then # : Both source and destination have a node specification. : This situation can be salvaged only if one of them : actually refers to the local node. See if that is : the case. # # The careful reader will note the convenient use of a # recursive call to cl_rcp. Since the generated call # will have only one node specification, the recursion # goes only one level deep, and is a convenient way to # reuse preceeding logic to handle what should be a # relatively rare case. # if local_CAA_node_name=$(cl_nn2hn $(get_local_nodename)) then if source_CAA_node_name=$(cl_nn2hn $source_node_spec) then if [[ $local_CAA_node_name == $source_CAA_node_name ]] then # : The source node spec, $source_node_spec, is for the local node # cl_rcp $source_file $destination return $? elif dest_CAA_node_name=$(cl_nn2hn $dest_node_spec) then if [[ $local_CAA_node_name == $dest_CAA_node_name ]] then # : The destination node spec, $dest_node_spec, is for the local node # cl_rcp $source $dest_file return $? fi fi fi fi # : Other node to Other node not supported # USAGE=$(dspmsg -s 27 scripts.cat 9999 "cl_rcp[$LINENO]: cl_rcp [Source Node Specification:]Filename1 [Destination Node Specification:]Filename2\n\ where only one of [Source Node Specification] or [Destination Node Specification] can be given\n") print -- "$USAGE" return 2 fi # : Set up and call copy command # if [[ -z $node_spec ]] then # : Neither source nor destination has a node specification. : This becomes an otiose way to do a local copy. # cp $source $destination else # : Turn the given node specification into a CAA host name : and call the clcomd rcp function. # if ! CAA_host_name=$(cl_nn2hn $node_spec) then # : Cannot find any IP addresses in the PowerHA configuration : or CAA node name for the specified destination. Bad input : or bad configuration. # cl_dspmsg -s 27 scripts.cat 22 "%1\$s[$LINENO]: \"$node_spec\" cannot be resolved to a valid CAA node name. Check the contents of /etc/cluster/rhosts.\n" 'cl_rsh' "$node_spec" 1>&2 return -1 fi # : Call clrcp to do the actual work # if [[ -z $to_local ]] then # : Local file $source_file to $dest_file on $CAA_host_name # clrcp $source_file ${CAA_host_name}:$dest_file else # : File $source_file on $CAA_host_name to local file $dest_file # clrcp ${CAA_host_name}:$source_file $dest_file fi fi return $? knNo@ םa՝a֝a& bm./usr/es/sbin/cluster/utilities/clrexec@@#!/bin/ksh93 # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/utilities/clrexec.sh 1.4 # # Licensed Materials - Property of IBM # # COPYRIGHT International Business Machines Corp. 2010 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)31 1.4 src/43haes/usr/sbin/cluster/utilities/clrexec.sh, hacmp, 61haes_r714 6/3/13 15:47:51 ############################################################################### # # # Name: cl_rexec # # Function: Run a command on a remote node. stdout and stderr from the # command are returned. # # This is a subset of the unix standard rexec function, suitable # for PowerHA SystemMirror clusters. Communications between # nodes is via clcomd, which provides greater security than the # traditional rsh command. # # The underlying clcomd clrexec function enforces even tighter # security by accepting only a limited set of commands. # # Input: cl_rexec [-n|-p] destination command # # -n The command will not read from stdin, so none will be # passed to the remote node. This is the default. # # -p The command will read from stdin, so a pseudo tty will be # set up to pass stdin # # destination - # # The node on which the command is to be run. This can be # either a PowerHA SystemMirror node name, or a CAA node # name. A PowerHA SystemMirror node name must be converted # to the corresponding CAA node to pass to clcomd. # # The destination is recognzed as a PowerHA node name if # there are boot interfaces associated with it defined in # HACMPadapter. These IP addresses are used to locate the # CAA node name in lscluster -i output. # # The destination is recognized as a PowerHA node name if # there is a COMMUNICATION_PATH entry for it in HACMPnode # that matches a CAA node in lscuster -c output. # # The destination is recognzed as a CAA node name if it # matches a CAA node name in lscluster -c ouput, or a name # in /etc/cluster/rhosts, or the initial qualifier of a # name in /etc/cluster/rhosts. # # # command - # # command plus parameters # # Notes: The main purpose of this routine is to convert the destination # for the remote command into a form acceptable to clcomd. # # The clrexec function of clcomd will accept a destination only if # 1) Prior to cluster creation (mkcluster) it exists in # /etc/cluster/rhosts # 2) After cluster creation, it is a known cluster node name # # CAA node names (hostnames) can be altered dynamically after # cluster creation, so the preferred approach is to dynamically # discovery the CAA node name corresponding to the PowerHA node # name, based on the known boot addresses of the node. # # Output: stdout and stderr from the command on the remote node # # non zero return code if incorrect input # # ############################################################################### if [[ $VERBOSE_LOGGING == "high" ]] then if [[ -z $PS4 || $PS4 == '+ ' ]] then PS4='${0##*/}[$LINENO]: ' fi set -x version='1.4' fi CAA_node_name="" # : Process optional flags # cmd_flag="-n" if [[ $1 == "-n" ]] then # : Remove the no standard input flag # shift elif [[ $1 == "-p" ]] then # : Remove the pseudo tty for standard input flag # cmd_flag="-p" shift fi # : Pick up and check the input # print $* | read destination command if [[ -z $destination || -z $command ]] then # : Ill formed input - no destination node or no command # print 'cl_rexec [-n|-p] ' return -1 fi if ! CAA_node_name=$(/usr/es/sbin/cluster/utilities/cl_nn2hn $destination) then # : Cannot find any IP addresses in the PowerHA configuration : or CAA node name for the specified destination. Bad input : or bad configuration. # cl_dspmsg -s 27 scripts.cat 22 "%1\$s: \"$1\" cannot be resolved to a valid CAA node name. Check the contents of /etc/cluster/rhosts.\n" 'cl_rexec' "$1" 1>&2 return -1 fi # : Invoke clcomd # /usr/sbin/clrexec $CAA_node_name $cmd_flag $command return $?  lo@0םa՝a֝a&Ebm./usr/es/sbin/cluster/utilities/cl_nn2hnckxtl@@   ent #adiors A_cfhlmu$-/=CPgpw"(),.:HIOT[]bvy|'12ELMNRSk%&04>DGU\qz{}!*+5679;Bx3?@FV^j A A ԥkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZ֥j_%!@)KRDs?/y힘쎝6a{ۋ dV` f|o%*_fDvStdgD9$8[Uւ-KR@+M%*Z=m1))j_h:9̬Zyu0ْyYHb7)>=٩0ΞHnlj1g9sAy'#r=Ѓ=1)N7Ns^arBbQQGtF[;2O+03zbS/Ba;"$&  $`5p|7^ "%Ol &YLvdL3wVNE8vR/&YLvhucr)qRԿНu2s#- 힘?u_2Bc"a=գN70%2nlJ6pN70nv[&\{٩Տ8yȧ7|7"a=-KR>!&Gwnߜ_hNٍn}z=:tلmn,1yY߳=KaIK`3949KR9rE%/fٍn}oF7 PsN70΄ qf7թ8yȧKs S3,>w^t򵜊qOlĥKR"a=h>7LJbŧb70$㘊#r)Ж[A_0aB{Ct{~ъbN90D;Br&=1)|!1(ko <@ΞR%!#-X[l d]DJ.`u)e;'= ,v:yZŞIlka1y==XМ<H&"$4b -KI;(9 3LJ>'0bSv/5=1)Կs]ڗDC h]v#~~s G]D&LJsޝ5KRԵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZֵkZԠ8$` 9jV(:$V` gOlĤ (PSBʡ4t"Nl3#$`cӌGYНQ;RU#99>׫Fq)n}n 3,Js+) rpEi谙0 ,p̤WF 5ׂ_ j5*R')cn[ATrEhNTExаh!1x`b`olL> N?8msU4<Q|;۩Olj)U@h5_N)KP5 v$^jI.}a'BE毄"ppr c`i谞ba8КWXnx1ezYȚ'05 5 "Wyv3;y̬S{Br&LJqfF[g=$\P|-_幡9 0bRLY }1) $Y &Yn|E8||n!ZȘa>6m1) 4,M  s۩b$H %,/#!8`b B{rNZZ[1L06x`@$p  bH*Hb$sDc$.3du" Xȼ7+: ce|ǧWL-ՈDIaKc"h `(7*nEi¥u[tĤ9EEE$BA0 b88>7"aٴħc"4Q Qҋ-ₘƠ٨QeJ,D AiO ||n*,AxP5Tc<%Șa>6m1)1YQYg_GJq8Ƒ0P|lbSКWQ 4xms\ʠue4;VE8h^{UnrpOyȚ'0 Wylr)qdz}53WtwG(-'qt%nb{=;f6eOl28lke'9s_?ƶcn[Y`@$p  bH*Hb$sDc$.3du"BiEE5u2c L?+8NW*Cw^OlLJH 9"sxC sfǺaƶcn[AX{f0<—0 QkQk LJwGGq97 b$5k=>-SubcXR#1yer6trZrALp#M%8 DH4bڑ9p!S5u2M,u2"@x"`@F c؊s@ Tbq:DI&!BiEE5u2{+%!w==1)~̓ OlLJH lL>,׺G$:{g%*/j/e9̄<%e\=>{/W {BT_) Ӽ x<0LDH i#8(fK)OyY%EnْyY=Y;{dwhNí6"XNwD#4vt"o"Kc[ uezt(F2֢ L?ٍn}i0{~Ilka1UwQ=EOlAʽ4[OhNs#;Va97 (ٔEѹ Y J!/j/E$BA0 b88>7lL>`=.>EALucP|l]SBiER†٨+,oLJxPG$kLc&cz,Dka1#Xc e9-1fs؋.6r/jD[t!$kLb?iN:1)s{YWR֯Ƚ4[l'TL3zbSc[1S-ϥhACE Ss8^[8p}M DcoRl9_W1ՍM%8 Ol깁:b@hYȽU=LJr{dbR٫qc0<—0xpÇx2*#x&ܥPSX{dUaTU_ҋZG(UgAEѽ}$5c 'c۩w#=1)^"aNV9hOOl/9luGW0=LCZZBs =4xK0ʹz}hO ' `#nj-JM6h$~NE8DEE=4DH )UCi]W0=LB2 OPhD 4D 졍)XNc9,]sBz}?rIK\˝s hHNs ZpODX1-W{l! > 01_WBp<2lFxK0ʹxIEe6+9RLv{+ps9H<Cqd_О(J(pN:e7#:/+1l })iDC`o@A&EOptr)-'18D3N700q6%e{s}99 Ť' W۩"Kc[ t1OhL$9_WXyȧ92;SH9 y' ))+ )UaCi]W0=LB#s9V83Ж7X/,nD AiO jDОťO!-МB7:.wWhJji BE8ILGAE6{*@m/N*Tun𘦍9_w)Q>❡1T7qHLf7uv9<no 𘦍Ƿ0YWڙTBXzEq̷>r=_ Ӎ ښE6SxS'=ЍU.r֯ cHa>6m1)‚@`4$КWӌa"n`<`M"0'$884,W Mu\1 r:8悆AXg9u`q cqՂL06ڿrrʿAxPIq5&NSSW 4Q rp(l cqgBn)0P|lbRܣܥPSHa>6m1)EUhM(Odryztޟ`ov/5lL>Xe"snUȣ㤥xN#}`7yW"Hn?'/L't{A8yȧE#coO7e7'lL>GgLJCZY8ILp a@ T8yȧʠg|l]Sר cl|l]S`f꜁  ģQPTUEJ,VNK/eǓN!,ng=$E1qB{_|l]R@hX@$$#`8@x ٨c"4Q Qҋ-ₘƠ٨QeJ,u^8v5E!X cx ٴħM tx ٮ(kq ڋ/ₘ ٴħ Cٍn}c#8/ƂPA\P5pO C 6cn[@23,h%68A< h$ٍn}8A6m1)Ep &=8z.r)G"n`Bi_L06=8||ECE8zv]n9"sxaTĤmse7xאȉp@Db"AI& DJXȸMC{ cD AiN**Bi_WN=qL06Lo&;/fD4J9ģ鮢} WRƑ0P|lbRM )j &Yg:n{lL>"d‰<@$1 0D0(M!BA!h@HT?o} / ƶcn[AfD:{g%!Jp ?+ kꨴoA םa םa֝a&bm./usr/lpp/cluster.es.client/inst_root/etc/estlAA kJNoA םa םa֝a&bm./usr/lpp/cluster.es.client/inst_root/etc/es/objreposlaAAk$'l|l]R@hX@$$#`8@x ٨c"4Q Qҋ-ₘƠ٨QeJ,u^8v5E!X cx ٴħM tx ٮ(kq ڋ/ₘ ٴħ Cٍn}c#8/ƂPA\P5pO C 6cn[@23,h%68A< h$ٍn}8A6m1)Ep &=8z.r)G"n`Bi_L06=8||ECE8zv]n9"sxaTĤmse7xאȉp@Db"AI& DJXȸMC{ cD AiN**Bi_WN=qL06Lo&;/fD4J9ģ鮢} WRƑ0P|lbRM )j &Yg:n{lL>"d‰<@$1 0D0(M!BA!h@HT?o} / ƶcn[AfD:{g%!Jp ?+ kꨴoA םa םa֝a&bm./usr/lpp/cluster.es.client/inst_root/etc/estlAA kJN

*(el TQTQeEJ*(p'm@ |pG*(8%m@@.ETQ@'\l^;TQ eENʊ? M' .8*(pvʊ?.lQTQ=*(KeE);eE)eE)x\#m ;eE)x\C*(H x\F*(H,𸓶TQz;eE) ʊ?RCBݲ=QnQG QQGTl ʊ?1AQG,K6ʊ?8JM8_C' '%=)K=)0IK=) ?{~R'#ߔIH_OoM{~R4IK=)YߊDߊDߊOocZIDߊ?X{~+?OobgI{~+$Dߋ?aOIY{~,DߋDߋbaId_'I}{~,>='$X!Dߋ?'$X%Dߋa$XJ= _'h{~6e{~6l$l>I$l}$ll{~6?{~6?'a 'a$lAIE== 'a+'a3$l'lE={~6$Dߍ_='rߍOo{~7Dߍ$n't'w{~7 ?OoߍDߍ_=DߍOߍ=oI_ߍǿ'y{~7DߍGOo'p'p$nn Dߍߍ/$n#n#Dߍğߍį'q;$nFI܏{~7$nJ= P-'= E_= QD߅߅= K{~= L?{~{~IZ7= B߅3IZD߅?{~D߅{~{~I[7IZ{D߅߅IZ?= AOo$-{~'hF= D߅OIZ&-!D߅_߅o{~8{~8C{~8)IU{~8p-= {~8-='I$pp$p'〿$pkg{~8'ㅟ'㈿{~8e{~8p$p>I$p}$pp{~8?{~8?' '$pAIE== '+'3$p'pE={~8$Dߎ _= 'qOI\'p$.OoI\'r߅gI\7I\$..5= O߅D߅= = I\== I\>= GOo=I\D߅Oo$.{~_'p{~= II\%D߅?߅wI\FI\G= ?= _'Q?IWOo"=T-IDߪ-I'?{~J?{~o{~/II'OK?{~$S/)=U/IBOo3"OoMNCʒ{~8@'ꏿP$P{FA{~ߪ{~@ߪ?{~A!I '? =T"~RDOo'oB?I#$P{~JbBgߪ!.I;$Q'ߦI?IG}'?ߪ%~Oo?IIOo%?{~9~^/{~9~bȷOo5=Oo%I=&I?I$rI,$IGIo/IWI/Oo#{~95'ߎCO'㕟'㓏_ߎY~\̿I{{~9g IozOo'=Ҥr}'= 'ԞߎP?rDߎD.92H]c"#.qtKd&L \mhSAqf?hbXAqf?f+4|XFqhbiӗC<䴾{张y#Qa)ǤV_(\ҽőBK%0}TҮd0}%TlIm`HbE Km,1-km+K˙-Qb>-?rŪ?p3-Q=HC=lb }H![T~G}HCEmQ۞G1jЅ$jІ~V>-QЄQ+GDB5Glb?&GcoB5Gq?& ;T~L%{cN!#T~(ߞnx/1j?}T~(z?}H ^Ū? H?pw۞N ڣv~7j7j ڣqQ8vvRSvR/T~) =nM}nbT~){ݪ?7j" ڣHv!#zkT~RX FGl~axGmѵx`KA:?†nxF8Fl?#s0(F`vdB?ZBl*j%-Q%AKT~{9jŪ?D }?D%{aST~MQT~+ Z8a3T~Olb}!?8#z[T~ >Ū?lb@T<&0pnxN~?l ?#nxZh mQHmQJڣqO5GlbϠ?@TT~.? ?lb? >c(UMQPG@)j€ H*-QCpHj(¦ iZ􌾂"1j >VԟG[TRߠ*j$;s$}B1j^T-QX)j-QXEmQXZ?Gd*j_B$(? Rc)QGJB+j–_@T#*j‘3ЊڣyFWx?7<^۞X!GQ`ИGMQ`Z)j CG|f!?Њڣ>'{c}?}T~%Ū?gMQBd@mQh nyhG塧5G嬽T~Z> Z3rz[T~0` {POjA71jMQ@ A1JЀcT~B7jҿ@1?K/GO?۞ЎZ`D/BQQЍڣ`DB9jҀO`PP nxT ?@ɪ? Bh۞,¦0G=?L;sˑz?.!G;nypMQpZ5G:olb![T~2 ЄMQȏڣ ۞3>¦f c?D:l*j^Ū?0-"~!nyB&ƾ ?1anyTT~4)!T~4_t;sƁ5GD;sƂ1jƩ}?[T~5>"j [T~5$z[T~B+j;s´"jµ ? ~۞MQVc+?0 ~"j̊}T~d}Z!;Њڣ5^"j6:C<{aST~f"{c~!nxXЄMQXCj+GЄMQ! =T~Gv BG?a۞D?B5GNmQ-Q?W1j0Њڣ v`B&E}T~:%¦@GJ}DT~H%mQuH@?g%GaZ UGST~1j4G"IV^Ū?,"l{@T~6>-QGaڣGbWR;sW!jYZ/RV%GhEmQGB+j1jz[T~8=.߈۞ T~EF-Q\>-Q\-Q\${CT~ЊڣAg1j,"Q1jބV? vO~ T~9}!?Ū?AKT~ʽ?1j9Њڣ}T~WGHX~a۞H-QO$5Gzl*jc/0 Z/j$jlbGGy#ЄMQa_pKj}? =T~3"0}T~@T}b?V{/B+j_G㢟QC6VVG"a۞(@?}??1j?AKT~ QbG#T~^"jT~<՗$5Gj$^V D ~T~_pHj^"jF }T~ȾVE>Ū? EmQdc2eMQfЊڣ nxf@G5G}ZH-Q$>-Q$#{cVSB+j(~!nx%gZJaST~ D/lbQ)jrpHjG$~<404g Z Qh#[T~CpHjHDQ >Ū?(EmQHŪ?xYEmQcЊڣŪ?x /lb$cj!G,MQO5Gg~*j5G{-Q>j =æ`{TaGj{?7ɪ?7%{?ZkQ ~&I5Gmƨp}5G^٪?7f_p juQ?vC{T5G {b"G.jך ڣr5G%T~I5?b{i#5GI@G-Q"/5Gp?'2jE9~G ?ЕGoJT1jA?A-QBlb7 ZI^q?90T~r =jGŪ?9@¦D-Qȏ[T~rC5GP BB1jP ՟1jSڣ@5GᨍZQ4#zGW ڣ!?:>T~t!q?%N{aST~ /lbqQmc6}q? lbG ڣj!?fq?g70v睬#_l*jŪ?;}KT~v#c75G/pHjy? ďBGO5Gl jÁ5G1jÁG~߈۟0 =T0n|ǾT0A?÷>w T<^T71jX .jGp=,j\T~x&z?~5G7;sßGO5G}T~},jÒWQtQ8[AcT~z\@÷<:gA?@jK},j@k((H2 7<$nx oPF瀨 C<CBMQ ^Ū?R7R>W%G3"O%G,{cz[T~1jXD!Gv ?¦'1jõ5G%G؏ڣC<;!aST~}T~| }T~|_>}?>=T~MCT~_pnxxJ¦-Q)T~ A;sI RJ-QQ~ڣڣ?!۞??>Ū?F۞ ¦ {c ЄMQ ?p#L?r1j\Z=(j#ڣNB&ڣz?Cj` `vȷЄMQ mQ _T?lbG2IT~;CT~P{[T~-?lDQڣVA!T~ ?&nx-)-Q--¦Ū??pKj{[T~>OEmQ_pKj?%G4:-Q ,"lbЃMQ.gڣ\۞ G5G?-Q~qCT~CT~pKj%G#(jxY mQ/{[T~ p ^ ?A۞75G!1jH7j!P(H?Q+ڣU mQ7??G%G%G{6G0;sl3¦{c `/Q0vGE&MQ0wVo1jwUz?1j}T~ @78#s 0(v!G8!G85G8c%]?Bd}LZT~pG:*&Q&Q?סG:{@T~Ū?B+jt[T~wQT~ڣcsz[T~QEmQB+j#Vdop"BV.cA~T~ߡGVEmQV0ڣ[T~Ёlb0G Ū?o Z~4?/%G -?i#G?$C / W+j%Ū?>T~!T~B+j|uEmQVZ=?Њڣ UEmQ[T~G@"{[T~pKjЊڣWЊڣ%"=-?qQ?pKj#cC?ǾG1C$[T~(}?WGB-"M}-?~GB }-?#GBfB'zFHV +Њڣ"KEmQ;MQ2 ?"nx26;ڣd7¦,-Q2v T~ Bb!'GȕvDQ{cD=?/B+jBGQ3T~ {c?@ժ?4>VЊڣ#[T~a5jZ$}V B?@Эj4" =?Dlb ƨ ;sF!T~w+j?1j!g5j!5j$?B+j$oB+j$B+jAg1jS{3T~B=?!}?!=?-Q4 h"z[T~ oB+jEmQ5T~ J?f4j}?}?[T~ b~FlZf~`֨+۞?Q'GJ'zŪ?`G&}&jA3T~# jag1jbBG1 ZQ>-QzLQ!cFT~# ^1j0v<Vv÷<>&<= Qž9j[B&p Z mQ}-j![T~W )K@T~!g?#s~A W #sp䐍;~D7 l*jC-QAKT~P~5Gv烁 ڣp$[T~ >hڣ-5" V{c AGGZ c DB+jMQ,mQQ+!GYG_@?aST~%-QkGX^ڣr[T~D?pKjȝ mQpKj"Њڣ[T~&}-?pKjڣ0 mQ =T~}?lbt@Tq!GQ' @IIo')~?)O?II'.~R}~R~'*?) ?)}~Rk?IHg?IHi?IKC~[/$I$V{?'$I"Ob$V""ObG$V&}"Od_$I?@HaO$X,D@Hb$I,D}"Oņ@Hc@Hd_@H` ~,}"OŇ@H`}?@H`?~' ~,'; ~,#"Oń$IL*-I/F/͒~6?3'a"Oǿ$l}9IO5Id~6?$l!}RO?~RO/?B䟍͒~6$͒~6?6I؏ ~6$~l+9I'rdO?Y'qg?n/'tBO6Iߠ.I,'qnd_@$nkO~7d>o?ğǿ$o7i?6I}y's͒~7~ I>'pO??@zO'?6IFzO??>~76I܇Ool'r??}'rW? Pb$-{i~'h ~dٚOԿ$-0 O6IZğ͒~ڔ͒~~'hiO՞Zd'l$-gR~OmZOQO$-6IZzOd? D?l1IZ"~lEOdG$-6IZ&{`'id_l? Hߛ$-${`$OO6Iہ'W? =R~8l۲O$pZ?䟎~l¯lv_O?͒~8b͒~8?2'"O 6I}휤p{Ojdl'͒~8='cOvOl8IE'۝'#dmOg? rd~8$~l+D? .)'r/l~ ?6I]_l;I\/'r_lBO ~'i?T {c$?B~BP'OӤQOCi?T#Q'ꄏ PPHBgm'O Ei?TE#~$Q ~:O0IW?E?O$@-I%r*bO(IYE@)I@ r/$K?~9O핤ra5'}jYXʏp~92ʯ4BG_rkԟC?*O!:O/$rTN='㘿~9eR~9~9Y*Iop)I}O}´AG~9>RO# ?$r~R㤟Cp'I?Oɿ_tO?a+Gۧҽ nfQa)tXQQO?G>nۧ{Ft ?=2A/!O |O Oqct-tȵmGݥGtLaGkO?ݔkJoO?%[idۧـۧ#(0nkmtVKt\ ۧY?(n2_oۧ2t͡^QO?,ZGoG'O?O??ۧE?CNIm~;[ily=?CN]?T@?CN(0Aߎ*s6wOS#(0@ot9&0vwOS LdB?CNP~ʜxoT"m?Qot9 U&vwOS15Rj9zot9 U&wOS15Rj9z#ot9 U&vwOSǪwOSP~ʜTC?CNIm?T+D]?T =Qot9 U&#?mz%Y~; VY?TI?CN0D?T/ MTF9wOS15Rj9xߎ*s= WKi?CNߎ*s&MG#o~;x^5r m?O%Eo-sA' ?xS_>[ :Gt|!@պ}oZ+C/ Q>Imx{17ox-nQG7] Ůk$?O@_V ӫt U&bokݿnQG`Aa߷Oܗl $?Tt<0ۿTt>oq>[c;@պ}?#=7N1"[-ǖ:O[15Rj9xotLM؏*(p |lJOcu[%ZO ?Oa;(:O"x^5$6wO,H;'&B->߷Ow%-sЁ ?OaROa~ t>/ MTF wOC/Ocu[qr^? OO BP:unF?EZNЉ^+!>~,Vc15Rj9x@:?gDmtʊ?Б|lmtʊ?1;/qk ?O?a@պ}1Nxbjr6vwOO66~SEtV7%-sɕ?o ~ALO7N15Rj9xBߎe170qa oۧ?TQEo\kL ?П?OU0ɁN  1VLE:O-a?J:un@[‗}:O-@ un@[ :O-@gzun@[>2N P{7N &MG#oF*=170t~?)`+~?)`{q߷Oq߷OP߷OP1߷OP6~?)@$~?)C/nQGߎ LM;poۧ?TQ*񸃷*(?~?)wqoۧ?TQEo例\ xW@n[O [O>>[O㩺unA?ɼ~[Oqg[OqN}oቪQ{axIOg{~?) |nFOVR?j=9@պ{c_o(o^[5?t= ܇ӫtƿPGN@[5պ{c_o(պ{c_o(pAպ{c_o(:Olk?պ{c_o(}qVj:un߀N@պ{c_o(պ{c_oB?zunw^[5cMӫtƿ~"NBרպ{c_oCO^ӫtƿ>[56=!߰ =!NBc7NB"NB=[5=:Olk?e:Olk!d[5w=|o=ImaVߎ$RxZ-OA~?)HZa*(_ Tmtʊ?+|- ~SE- ~SE▾O@k-nQGk=nQGZ{*(~SE2oۧ?TQPc*(({~?)xZ"tʊ?~~?)~?)ׅ]nQGD6~SEO v~SE>8mtʊ?nQG@6}nQG@〳oۧ?TQP'xV߷O pk*(?*(E^8oۧ?TQ8tʊ?8mtʊ?|p}*(B~?)p mtʊ?8~SE ?v~SE }nQGB p%mtʊ? v߷O!8#tʊ?-+oۧ?TQ~?)x\oۧ?TQR.߷O(.߷O?tʊ?1{ NOa7?Oպ{`i15Rj9yot&&) RnQG7];-sAO8?;) P:unRD[ImC/ ~SE v~SEtV,/qkRE'O@0%Mӫt U&wOp#"oT[*(Ta*((O~?)Ln+nKZp4ot>lx0V)x^5J>bo6Poۧ?TQEo%Zi t=(պ{x :Op06[ t=,V> =:Op0(]^Gto}wOp0x^59otCbo6 .6~SElCIO)FO \COWmnQGFSq'oۧ?TQEoܗk8?j=C:Op;P||Aպ{ImC=E17~?) I@v~SE?C)7BmnQG7]{\P*8ota9zun]:Op_Te[o* 5uW;oቪQKvwOlKY*(* <.mtʊ?ʌ.tʊ?1%ZQzx :Op ?&MG#o@~?)`ń rYM餖8Y~S7O Wi%G_ۧ#,pdOp nK)qnIc{/ʟaW\[XBg{tG&M'%Lm G_nn?S1Bőׁ{t!G&6 :{t!}6 :{t!}b;T( oROnlQb\vOЮ,ſEC.;T( Ć]=zb[~e.-$3t?-GH fЀ(.`;M'd,ſ?o ?BHۧc?lKIe.-.c Htʅse D= أĹ4;,ſ)$?-GHOOnؗ0'%"bym#%k.7bKӧ= O-s$rCm,1-\Ľ:u GaL\1rdɓ&L]$pAi \l]hb.'Xb9[G"htCm,La(b9[Fb^>bym#%rOL\1rdɓ&L]$pAi \l]hb.'kZ41=h_"2bɋ&.L2b# H]bCt1<4顉V61&L\1rdɓI%ZBD2X%hp*hyQS2N32ff2AF'1i%[i.X1H-,X%_)%[i&L\1rdɓI%ZBD2I`ɡC"\Ci%[i2I`dɓ&L\1rdG qy%.6"by| NdM_)%S4ɋ&.L2bɋ-!tK\m ED鞆'㵞t_#CE^t_#C0db^>bzc -*Oz7yllNY/ztg"/-%21/NL1byx;XĽ:u G$&L\1rdɓI%ZBD嶕_$鞆'V VY| Kӧ&.L2bɋ&.8K .6.q1C2D金7,k-&.L2bɋ&.8K .6.q1Cб^ SCVYSF#ʌ*9qiQqʺhbym`e@KX=41<Ұb _cc _m41<Ү7a0b _m411rdɓ&L\1t\`^q.qtK6[&L1bym[R0b%鞆'U9db^>bym[Kdb^>1rdɓ&L\1t\`^q.qtK[ibc .X3K`rɋ&.L2bɋ-!tK\m EJүhtCm+ K$Kcc VXĽ:}3Jlub^>bymaid6:镌Kӧ= O--)Ľ:}3JҘOz[iXZU21/NL1<Ұ%ӨR8'xL1<ҰL _c) Oi&L\1rdɓI%ZBD嶖E| Cz[id]-Fk:1/NL1<Ⱥ[0}Kӧ= O-.%鞆'YKe21/NL1<Ⱥ[2sJtb^:#^i'YKc)o鞆'YKcc/ztI&L\1rdɓI%ZBD,V e\nt2ʚ1TfaT̓̆cZӌU= O-Y%鞆'XGeyfc*sCj%vYʸĽ:}2bɋ&.L2b# H]bCt1<Ұb˖&L1<Ұb _cc,YL1<Ұb _cc _cCm++,6:\oőOz[iX1Yf/x,Ľ:u GWCm++,6:\n1/NBï ɋ&.L2bɋ-!tK\m EJ0}Cz[iW}1Yf/ztGI-Z1LҮd0}ehcAF'1i%[i.X1H-,X%_)%[p,X% O/-,I`hby| 96X% O rM me!ɴ-I,e$Js&bx;YKe21/NL1=Q1Ke21/NL1bzc Oz7zdѯztg"/C̒521/Nz7zE| Kӧކ'&0"lF%C0db^>1=Q1| Kӧކ'㵞[Kdb^>1=Q1山9dF%C0bdb^>1=Q1 VY| Kӧކ'㵞#%kdb^>1=Q1b9[FF%9[G&儶m&_.)5CM|KK'!EXra mM|н0D9a-7Iz[iW}g嶕q F4= O-@%鞆'U,YztJ݄ 4ކ'U,Yz[iW}Kӧކ'U,Yztg嶕\[Fo6Ľ:}3 X8.iz]#+-Oz]$ GOz`e71/NL1<Ұb%Cˤb@!1[iaImK@17zdѯ OALazdѯ O-pvpD1Ye2嶕llNY0bK嶕llNYHltpJ6',bym[Ke-%2"/-%2= O.dbym0DaztK`rCm+ K$Kcc VXĽ:}3Jlub^>bymaid6:镌Kӧ= O--)Ľ:}3JҘOz[iXZU21/Nz[iXZY%[0b%Cm+ K!ztJlu)+O O--)Ľ:}bymaiLKӧކ'V| Kӧ= O-.L\5ҝOz[id]-@%鞆'YKcCm,O O-.L\5ҝO O-.L _c嶖EĽ:}bymt_#Cm-a)ztgj%vYʸĽ:}3vZIma+27:1/Nz[il< LKӧsv//kм ,ކ'XGeyfc*sb\݋Ze7t;,V e\ntb^>bym`e@KX1bym`e@K@%鞆'V VY lt#1/Nz[iX1Yf/x,i O-qĽ:}bym`e@KX3Cm*v/+,1/Nz[iW}1Yf/zti%GZi%KYibLxm GZgZLdu_e؏-_eZ]1'lt1witm,xlt-0bL _m4,X02XKm4vfUU_Q1M Ld;[LZtm+ d lWz#.dKqnr2LـM Km,1-1X-+̠Lҽ Cm,iFcvQa)\ҽő鍡^L<(0LҼz#x6+ޒX\Lz#-I,o.dlWz#-.ai^bސم.c i2qLٔkJo)cLbW]$f+oKLҲ\LE<w_"նLE0Y{ l,o$4םa՝a֝a&9bm./usr/es/lib/libcl_r.aH$$  *4.,12:_t03468;acdefilrs -579=mnopu.@AHT`bg !(*DEIKLNORShkvxy| %/?JWZ]j{}~[^ )aI#J` 0` I#tX 0` H 0` 0`MS 0` 0`MS 0` 0` 0` 0` 0cI':0` 0`Hҫ0` 0` 0` 0` 0bjliTكI3 0`0` 0`F0` 0`Ȑdr Ĭx}ป%H`-!pqn![/ę Ȯ"~Y$h1 `.HDp8 _FDmr,9M")rW`c1JVaXM(ʰHf:%瑒b_#-"*l1 RQo6b(9 e0.0![ XElk0[ ,db@xK?0, 东>,,东\i,ODPJD VG东#$r!22(X0Alhldk1VVKd*Xa0%YbK Ȇ8bx%ġ-f0dx^KtDO9X t 0!F(eK#b @O60b9XC\) &+ q0`6.!Q?b\)&+X8q(rм y0lK%FI'2\K$l,G`;%@a b+kѱʖK`d^B I0X'%)'lKr2LV%+`5lcd(?ʰؘ>@&&p"f5 hǫya=I! 8=Y[Xl9eakcՄ?XF`/ 0?F[ !FdCd VȇP ђba .'?b\*a&+X8q `l$DDc p&+X0!5l`v C\*2LVV2Ձ`|Ky-bȗ VŁ d`;%c q@"#$k.B  l.'a?z6h#a`v8 L6 $')?XgH0X%8 FQb㈗! ;F$6hH6hvKp6%Qb㈗.;F&Xb\P ђb.;F$쌨6q"̂0<+a`b+a`쭅Y#a`b2LVa F6|^Cd ^``lXG%O60ؗ @&+X8r2l,!?X.&?XCFϕ %l,/v`~Bc#FX#=Y!p?ʰؘ>@&&p"f5 hǫya=I! 8=Y[Xl9eakcՄ?XF`-`ll,D1H@hY |ľ Id}a  IFp/FIѰ%n*XCX㈗,HpL2ѱĸd h\)$hʖ'bx^K9la1fq8b'F!225%X`lB$%06%8%$hXCFϒpEFIѕ,!OmzK6ѕ,N?d X;FTHE@ؗl,2[ 4Hʖ' el,:%"6ѕ,LdYR6с B).?b\1ZKDebar6G$`w? '_ ?aS/YtPr#ba]?cr\BCd P>X, Hʱ ĸ& 1Br\!#*KbDȇb|,ʱذvKf 1B- 2t6-r\"# b).YeX`lZ\ 1B(% Qc"\'D>F@ r\c@L'D>F@ I.XP, .BCd P>%#*Kl BCd P> |c!AQ?!2(X | Qc pCd P>)%Qc."# b1/, p\O|'9/Qc.'D>F@ _2t6.% ȇb|*%BKDe~&!Va|#`bſw?B폰y~&."Bb)[rVUhõr_*ðȜJ%+k#cF2;+kl~&!Vdcdy0H.[lTa tuD+$hkE#]KLJP [}T@dэq dbCC z1$rlHcwH@ľJK3 шH&Fdf2\=FI'24e0XFKtdĈGbaq> dy0H ()=HL\E!21HyYlL! #aq[>HD࠙Q.# 613"B!Hhtcɐ?\&+dĈaLB".`"F6G˖- Gr]OT@LVQƸ~ DQ1!P!3k X@i |~ #$ a| g#|."%7Hi`Hⵉl0?' ?A?ɰ %D Y&+F(c\H?"((/+$hkE#\T@+$hkE#\T@+$hkE#]K?(0G 6zT@+$hkE#\T@"LVQƸ~ DQ1!P!D z1$rlHcqQbbF5ăNB" .* ddэq dbCC b(9 "Fba\Bh|ԭeKȬD]$l/)!at>F@ .\BX%Xax0 IF2Ula6[vE䍌id|X`4,T AdHLVFD>H@hr?qZ6h?X%i daq  Tdbxr\IF-!1J6 |b"EƑaq  TOK  p5'D>F@FDa$XdHZaq  i&+X1,FZѰi rN߬ ѰD>FUQR\62+kѰ8Y?ʗHHĈĸ&DO2+k#aq"0#at$FD`HCŌ #`L' q"(YPX. "O6IRER̖ %0FDl*]"Q%hʗHl.$FpR\.FDl ѕ.[El.$F#&+X|HpLB".\RHx|#`r\̽bȠoM$b(.yYYbҶ eE+ `+1 .6 "$ blhôlc\J I1BFkcU2ʼnpO61rd R?\tKⅉA[H.:%"2ǣ1<$Gaez- aK~&."V[B|lV:F:+c#FF/!$X^MVŅcLD"(/k/OdO |6X0*F<`)%'&Kb_O |񀈗_OD&%"2r? > dy0Hbءy0]!t`ttVFD%Bldr!cTldr!Ą &fȇ,H@%r $^D8Tldr!0K#c#FH@629;FG"!+FG"!|~D&2B$ldr ldr 629œ ؐI|bD$y! H ѱH0H@lda\V'I|b|R_Ib|(%z&% b_ 'Ą)X|LKDe~&!Va|#`bſ R<.BFHEldhCI q!!V/FF1/`#c#}OH@Ò_ ѱȇ2Tldr!$ 2%ȇ0H@䍌D9!0D:2B+FG"!b|/V'_av ?\,O\>$%JKb_,.a<#G- c!Db1LBHᏐB"aH?48) y Bio` X-!7x,6#0x`- O^eyBhA,bL xb& |G,6#1;؏0H Ĺa` ؏0HV$X0H(G"o @ƑrˌG#H.1l0\2^e6G]?ALG!0V[B!el.=+*\~V".b+aq"6|Q1y1BKc%Y-'FSU #/' JV'˕(][vq1tk0,4xO.&YH4шфEѬe䄸P3FIѱȇb&F`m@j#8"TdldHhd>NT`lB5Fp7'aq"@,J4V1F11Z610O/D9b22Z!`'`l.$!aq 0B2LVH@(\H4 FI''!eC1rp"F6Gː2[/"E\aW&F#O+-!pE #a[ ʗ6bx%VJ6`$aqy[*b0RY;XC,XiHO|62Q`'Ev`l^HL IXD\HP-1# ` '| >H@(\H4Jc#F ` 'F-!0`Ă$ bl.$F2LV<`.%B6hB%"2˅1qH|# LG#De˖ٗRymZ4IL\E!21Hx9# 0V[BFòXp B# b㌗,Y*Ƒtl.[*r0 Hąla6 rl #ap>H.B bp%l.P}FJ4RO Od"9O A0J,T AdH@ +c#FG"$ bldcHq|?F-!5Є6,! #aq  "#$k| H,H@FT Bذ! #aq  $k|PZ|HEX\0"F6Gąb//X(.P>uiIPr#D'"쭅eK ^Cd PYi"O[629!c#F+'l"QP-Kbi l.$!aq 0 bQ/` ʁh@XƑĂ$ bl.$FP $k_#`"_#,\? 0q<$F\o,}z-ݗAvu`fI/* ddэq dbCC Edэq dbCC 謓z1$rlHcwL\E!21&%V.,Oldelc@Cld\2,Odp֑ar6 F\ #%Z6 F\0H?lH44d(`mP $kdk.%dbD9bB(X0X ؼi#4l.[l>X8la0N׬ FI,T Aa0L161|ѱF6hBXbcHFRѰ^C RH1ZdhD9b2)Fy5ІD\P6-q`# Fy1J6 ##$k#FlA`)A?!26#"HF$ bl.(F@DFI'G%IFHʱJ6YR[E#aqB6}R[^ăHPD*\2+k#aqB6q002'R[X Hʗ,⅙ e # l.#*\P~X*YRbHp=' \Rpȭl.(FqZ2"Ѱ%eKEm %eKEm Ѱi@O$FYqxLB".\|#`bQ2[a^E|i%L\E!21&%V.#ap^Cd PH@(\P4@#$h$&%"2ˋbar6G-VٗRym &_4%dэq dbCC 1Z1GA'!FĆ?@Pr#ba]?ʷ|H?c# l,d( |R620P?Z6BV: ,"#$r!2&%`1؄b`#$km"\QbeY^p= 1´a(,,K2LVV1X .X&#$r!2&%`1%CXC% ђblo#1 H$h%frldhq@ h # F 6ȇ%X|QbLK,FIq2xIrR2LVV1X .X0FICd LKrc AaB_dʱ1 #jcxľ$F[Gbav21l1 .[)e6)1Y&+F(c\H?"((z1$rlHcqQ1Z1GA'!FĆ?@1z1$rlHcqQz1$rlHcwL\E!21Hx9# e0. 0I+*(>& H%biREw<>,F4&1Y/HLB".8|"FOdb8c#!.[ z[}1qrؘBFF"1YV610Bb&ر0Tlo |Q42LVKDe~&!Va|#`b{ٗhgBi4Bdb9YlL! F"1YV?FU'D>FUV'. I|P9sldQ0t?"CF&++c#FF/!2(X8|*QƑtdb+cc `<1*G11 VV#cȇʱJ6126+heXl?Vg,V1F1F@0&2DqlcѤ`2O;^DQ`фL|F6i"FF/|H:DU8|#`b̽fy6eP]0i%1qrؘBFF"1YV610E`v6,HQѱ/!B)F0&+%"2r? > dy0Hr2}Ƞoa KBdb89ؘBF>lB+ceXOlcR0حVmz60|#G&2DeЬNX^V1Xc `E4R2LVV5F5,OdPѱQcv|~CF['>F|'?F"c`{0CF10Qlj6.FxKE2ч?!1, b0싁 iFIѕcTb&F~0XVj# V±y0i2LV2jDzX^?aaZ1^A1? .612/ Z6K ѕw LF?pb+hg,VtlwF@4aLdd1 CF2T`!lcTeY-Bµ`GFRO625c#F@0&2Dq4jRb%ā> HG&2DeЬNX^V1Xld(;Fp!# @X#c&,Odldʱ|;F?!#DcH d>Nד10?=!|L6!#F@O/'24ldh;FFF"dʲ0?,/Y[E2^ax>µ‚_,Olclcd CFF60|Dɑdax~X^?aaZ1`++hʲdlda{%Ap%hʱ^X~ZVaJ61HH? b2F!?bh&J>T[&FUBµp`4Q?g,VFh62deX.]e1+c%F1F@0싁 iCd6F |'2\OF#*!`? 4@JO60|4П@#y81ق0Qʋa؄i!KE2ч?!1,60VF偀>µ„ld?"CF$hʰ0Y[EhdeY^Ap%b# ar60i"Ddbx% ʲ0?, Z6K ѕdуƑd_,Ola60ч?!1ƨdeY^Ap%hʰ/˨?pb+hv9b0vhѕd1 CF2T`!la2  VTBXV6.0 FF9b24ldh;FH x6FU[^?b%"2:DUX|# LG#De˖L?Mz<l}Ma K&F#1 >lB+ccbVJz4$Y?z2?F1ظ<F~/!2&%F?+ccb+c#FFaLdh𔍌z#G&2Dzʲ0?,/ h,+! ѱZ6K Ƒp$d=F= HG&2Dzʱ620~, O$ az2~.di!a&+%Qdax~X´l|#Ap%cH ђbldk3+c#FFaLd610Cb_lt? p&F#?"2bWf^ݏi!4IL\E!21&шa#b[*[^{"#*+bpEldQ0x?"CF/FI("# b㌗)VJ x? 4O/'24ldhlB+co#c #O;^DX0ѱ/!B)F04dĈaLB".`&F#?"2 lq۱K!<I?ALG+-!tb|؄V=+*ʱVףcHĢQ )X2F%!╉Lbr*2?d\cH4u&++cc|'2\VJ |? 4 O/'24ldh>FFFbDѕd\++c C$bQ(H*eǡ1)Hc*bBeXl?\Vfrldhѐ0|? b610 Tv(0?=!*0Qlb6H, F1FUľ$F["*> dy0HrX b2y w<IPr#ba]?Ee[CH..'F"o, X?!cxi&+%"2r? > dy0Hre8mw<I1qrؘBF!ElcҲ~Omz61|NXC+c%%B[*62Td Q?d\cH8"$elclcy1BKb%FX?!#Db+c#FF0&24y:611#FUbcAp6F=blceXlV`v ' ѱX2FT 'kш*2 Q DQʋcKFEDc*mzKb_#-bavNq<$FXo-|ٗ f;v0i%Pr#ba\A|?+aqYR+ܬ&.=X\HǢ$ bl.^Cd LKl/qy1BKK0dy 0шF.&YH4&d|F"dkv4&B2LV4X%Xa0 Ѱ譌b|9Fh^l #*] 1{V4@ ,"a"eiI?*f2Q`x"V1F11Z610 D_D9b22Ző#Ă$ bl.$Fa2LV dy0H`̽b<ڿ1qrؘBP6\^VTE+!at>F@ .YeU!`?\^VJ>\9F+cѕ. ,!,4DõƑL7'aq"@,J4024ldr!B+FF4R| #`ʁhBX#l.$!aq 0BdbxTKlЁ"$ j#*`lXiF?\H/!B)FA`$k_ .ptY!#*]B"6 |Qi!db%"2˅1qH|#`a!o-*/X 4K&F#O+-!pE #`eKȬD]"]!y1J6P^Cd P dy0Hت̽b<٤K&F#"~VV".XD]B[ B$ bl.(]ay1BKib`mF,' V'˕(^Ela2Ye2ņhd0betcH"A'aq"@,J4!c#1Z621`K-ȇ,F@FT BذKF?\H/!B)FAa1Z񀨗6h@5Ѐ6.)Fl.$!aq 01Z񀨗H RL` >H@(\H4#0Od6Q B@BFMĂ$ bl.$F$k/\.DUˊC6G K`2[0O?ALG!0DHqYlL! (Kl.YRXXD\bV%Fᔈ|Q(\b/!2(X8r-b`mƑl.[*r0 Ela2`(Ya a`Y?D\> #Ew=`l\.FD".$XFTO[629!c#FIK`ʁhBXhi̟l.$!aq 0@j2LVZrdlЁ"aq ʁh@F".$XCH FAy1J6 #QblЄK  H* IFpY ް6,0>Ѱ^C RăH$k_#aq"6K BB1`2LVq[^(eK˃b"D`/A0aq"6K Q.JVףaq 02LV?e1sN$a<> dy0HJ[ˇ8,/X@no-i4b(9 "FȉN+-!p8|@+`jV"acY!`6d# b㌗U#%'dldÔlJôeDa ,!,4F!(0}zذHF#A?*f2Q`rVFD>H@hƑ`K$l"QP-Kl$# O6 |QiE1Z6hB%Ě6h@XQ^Cd de@ #, 2Ѱ^C RăH1Z6hB%B6dCeXdʈɊ, 8Q1[Xdʗ,ee #$Ĉ,(FTFLVףaq"6|i *#&+h XR”l#di^O|ĈX`i FAy1J6 #*2LV<`,%˂R6C$bQ(H#&FaH^&#Fn*#&+hdlHĤ#"<#`%!{%FH1Z22b |6ɑXR]A`|2LV´l.$Y#% D"i4b(.Yb[YQ`vV"!`xQ`vD,!21`,i[H,:1B6 |#b+`Hʋ<`22àb4eE$0pa &+0&# h,)+`l&FblC"Ol/'-tl/åXtäeEa o#`00=1Z_bLB".,l1 BXamzM>^4I?D!tEeeJ, D,V2У 21a<:+`R!B(Fa/#`00F@ _6 dC# bbxy[Fg|HaLB".,l1 %[f^@luI1qBDa謨;+ ea<+ 6 eE1DƑ<+`R!B(Fa/b_,Ol#`Q`~Bc#GH,L/Q`x?d`+Yq.X$r!2#`22à?cAp%%lBHђblC"Ol/'-tl/åXtäeEa wFba` 1Z_bLB".,l1 RX)/Yi0QEdэq dbCC C+$hkE#]?ALG!0DHqYlL! FbEeDohQF|QF^Cd PH@(\H4OKTl.$F$FO|ĈH6P0: FAy1J6 #p#$k#FĈ.)+aq26 #pxb+aqB6#*\L?!1dnCH"ѰF:+c%X.V`0 "D#y(0: d!`4DO"ⵊh>Yi@'|ѱ#\J#`ʁhBXcѤ` Fy1J6#@X`"\K`  >F@FT B1qZHD' >H@(\V4! blЄK6gƑ¢Cd dl.+Fz DaqX Ƒ#$k\H:F2F%LdhQ.( VVy/`t#LdhQ.( VVy/#Bq@^Apl.+F$FT^V$FD>FUQF:FT^V``eK2e2ņ@h,(FT^VףaqZ6|ieKm#aqZ6K Q.XR1dJ%╉1[ _`t#LdJ+ap`Kⅉ˨V ,+ (1 >p`?d\cH&+FT^VaZ6 ѲXV/!2 ^C RcH|ODpIFTF!gшCFz0?,+XCHdb+as\2!~Bc#Gap%hʗ0~ZVaJ609b0# b0&2Dqdl.+Y_,Ol.a FT^?,)ї#ap%hE#*\bcAp䍂1dJ%FT\fayfK~Ye1( $`t#LdJ6Hʗ[EFr2PF?d ѳ/" \sx~´leKȭHeK ~.d/"Ѱ\sx~´lIR+h.ee #1' eKȭFr2PF?d ѲYDeKȭ#*\.F3 ѰV%xh?0n\.FT? Z6q$q!QRX.*#BJ? Dx\D^K#˃n\2Vp ʗ0ACHd*^Emay#*\.F".`/A? fK F"Ѱl.aRz0~Bc$G ƑQbl.(Y[ Ra  IQľ$FX9DUa|"FOdb8c#!!- aez-<IL\EшeR0䬫LV0D'\_#-"*l1 %੗RϠil|41qBF#JÔeXr?# @RO/GbavF6GſS2y إa?D!tb1Yl9FU+0E?$F[%DUc#LRq۱K!<1JVa29F"aKBa?$F[%DUc#˖2C/X!1JVaX*Ôb&:KO/GbavF6GpR_@1qBF#JÒ;+2rQv"dfK_#-"*l1 BpR_@ o~&."Bb)[rVUeb&NQv"d. NKDeQEX]?"<V)n/D]1JV*ÕiGt_#-"*l1 )e0 6y??D!tb1Yl9FU+0L_#-"*l1 }}Ma1qBF#JÒ;FU(L;XƑq?$F[%DUc#˖2¦^Kw>01JV*Õi!O/GbavF6GſS Yz<lȠoa1qBF#JÔeXr?#̟_#-"*l1 2}ȠoaL\EшeR0䬫ѕa1'`l?$F[%DUc#˖2¦^KweP]! dla29XƑPbO/GbavF6GſS bȠo?D!tb1Yl9FU+0|HJ? 1<$G-V)n켊 ?D!tb1Yl9FU+1KDeQEX]?"b(.F+-(ʰbF NKDeQEX]?"?D!tb1Yl9+*ò'FU(L;F2uiKDeQEX]?"<P)nM?1qBF#JÒ;+2teXrDôa'XƑ(%"2(LB".`B[ z-a1JVaX*Ôb&:4,'Ĉd1##Dy o8Rp! dlaYV9XDFU(L;F2ta3ib%|HJ? 1<$G 5 b]1JVaX*Ôb&:4|HJ? 1<$Gc^0Ouo! dla29XƑ%"2(LB".`X`RymZ(: 41qBF#JÔeXr?%"2(LB".`Xb^2(.u~&."Bb)[rV'`_#-"*l1 y w<b(.F+-(ʰbF'Ĉd1##Dyb^ݏs!1JVa29F"aKl~&!Vdcdy0H.[2[y>?D!tb1Yl9+*ò'FU(L;F2u|HJ? 1<$Gcv^Kw>! dlaYV:29F"a0O؂O/GbavF6GpRϷr7L\EшeR0䬫L"m#*Ôb&:0?Ḩ_#-"*l1 BqK/Xn! dlaYV9XDFU(L;F2ta3ib%`7'Ĉd1##Dx\R)nۼ돐1qBF#JÒ;+2rQv"dfK0,'Ĉd1##Dx\V)nۼbi1JVa29F"aKQ?$F[%DUc#˖2¦^Kw۶y8L\EшeR0䬫LV0D'\;q?$F[%DUc#K1bo~&."Bb)[rVUeb&NQv"d.2 ?$F[%DUc#K1,bl|}L\EшeR0䬫LV0D'\:%"2(LB".`B[+exe/n>! dlaYV*Ôb&O%"2(LB".`\ z϶RmǍuL\EшeR0䬫ѕa1']l~&!Vdcdy0H.[ zȏK]6~]?D!tb1Yl9FU+/`NO/GbavF6GſS Yz-ݱgL\EшeR0䬫L"m#*Ôb&:0?̟_#-"*l1 BpT)n}͔io~&."Bb)[rVUeb&NQv"d.|HJ? 1<$Gc^Kw>ϰy`hPr#D'0>l"bL#L$$Olb60/!B)F>F@ .]EG #BRшGF0A`ne&++c+FW"$ fZc i&+FpO|0BF d>NU #9a(?`z dVHLBF('lpȇlp凨ʸV##8̟_,Ola60WFH$eX~Ap%!BѱCApcZ*ŇCH KE@F #*$b&~h‘ teXD~XVDb1~0XiL2LW"# dhJ2BF"a^K VF FUA8J4"'_#cg,V #cb1zX^?aaHH63+cѱʸG&2DqeXDH(ui~&."B$a<ؘBFV6J++^C R,Odq62lA`l1Y8x|"pc=B/b4'ba(?`)?*F"dcHXtO[D>F#c22j6a`\b+cc*ƣ2ѱ*!x~X^?d ѲXQ"$ %FVH4`,FIldhLbD~h̰ L6,0.8O/'2Tldʲ4b&1 ax? ч#<%#c#FUB~.dVJ~. 8/!2&%hѕc?,/ h,+FU* fKKxi"ȇ61 VFD!x=,/Z&XC,Xi<# ĢQ`| IX|tfrldQdhLb~0 G&2DqfrlclceX~Bc$G# ĢQadON%1/ǣ1B"F6GD>b̽b}M`e\a4I?ALG!0DHqYlL! +lbYW XLBFV/!B)F |'2\#+Nlb0Ew=`lX #,X#J%dii?*F"dcH I+ccȇlcR\V5X`i %"V1F1FUG&24eFF~h,(0+FF?f`fXR~k&X #%"VJVFD!x=,/Z0~Bc#Gldhʱ^´l*Bx ѕecF,+FPH'D>F@ѱHʲ4b&1 ax? 2bH@# ĢQ`Q?/X*2BzX^?aaHH6Vg,V1F1FUG&2DqeYdN%#̟Q/|H=DUD'0q<$FB$-p/X@g<@yI1qpr# e0.4>l#yVQ D>H@(]!y11/Q# b㌗.D>FU]E #@O/Ѱ# d4A X%Xax0pѰb|[rV*]% XC,Xi?D^HFD|XD X CH?bZc%FL24ldr!B+FF4Rrl"QP-Kl F` IF1!c#(xOK (D9b2)F1YP-Lb6,0, F1!c#(``"\(\_"#*(\^u dbFTmz616q"2+k#aucL8i8?(,(FTm#cdRXRb´eKVaZ616KʗPr616KʗPz6QV1X?,afKF'%2+h0F1FRB/F#*!`0=`fKƑd>FUQ&2\ #@JO616HEʗPz6QV1X?!̐a M#B!?]DeX`)̅2XCcHzO61i9db%"2˅1qH|# LG#DeąٗR_@ Kb(9 "FȉN%QҲؘBRVZʂ5+~VЀ@ C-PZed=B/ظFF FZjD A#F#ElF[yhċ[jlQh~Bc#G`-BLȦ`~\tD BH/~VKlVg,VZjeE#,O%"2h:DUiX|UMHp|# LG#DbA!o,)ez-ܥ@p]i4b(9 "Fba\BX|F+auʗ EѰe"$ bl.F/!2(X8r֑f2jCH?ar4d #/ # $V, x0Ѱlab2tl.E$la0pd|XcHO&1Xahѱȇ0%RF-R!5`m`V3'^C Rb41ZpZC$GQE>F@FT B1 ѱE>H@(#Hʑbr "#*+I|P8["1/'2TldʁhCї%FhʲTb&5Y[ Q!2RFTH(ʲP? d?d2%mz612/´lDeKJĈ\R2PZ&YLX0* F1FU[! V„eKJ,(F1FU[! V”eKJ,)F1FU[! V´eKJ,+F1FU[! Vr2%m V1F"dx= d?d2ņP''VJlZ6KeKJ. Qdx~~.d^qI[D"l.)FUQ(^A`0=~V~\^%H"} Qca% -0{SQAZp|%0c*B-\+FRⒶE\R2PZ dKbli (ʱ1% [!~02YKblic%Y[*62Te@!Ld^##c|QFXLFIѱĈ./DU˘$a<> dy0H omz-ܥa KBdb89r"FTa4%H$8Jr +-c @n+`fҰ?qX@03q03te`ѲdCeXbp"2R_,NȭVJ"CGDFIɌ-Yl/F`n?+7g>F@ .\~ W6`7gш(|@0w0nя/ԀxD.Õi7R&{q0&t#HD2Zw=`l\ #ܟCFUgс0с VO с0Fou100@#y8YV5FUd$4x\7#$hƤ`xKE2?!1,1FFeч#3´`B_#*,$. µbN4 JO/'1612/ԃ!,=F~@FH-IęMG aD,ÑZ6H D> ǣ~F@d`Ll0=th#ш(1#Z1% #pO 7FVU(侢61((ʲ0? R Lr?aC"8dldk3+c#FFaLdeF1001Xd6d ѣgCd P<`,%JKb_*P 1F !P|UMHp|# LG#Da@2[K!|}MM$&F#O"$a8FJba\#`V' Dr( P$+ @ ,(V%el D2`m lAy1J6@( # bb_`(|'2\T ad/'@PP)F@a%Ѱ% H:'{_'s&v F'*@X& F+A(4" I+`J5Fk"$ bl FHK+l%`e4db(Nד A2(;偱##BB|H?%IT VѐQ%hʄJ&FT%A)^A?`F\C26P ?XX(FF#H.H@hiq!dg 860&$FIѰ%cH2LV(4 2LV)iO/$layFBFV`JƑ)R2LV(4 Q#$k.%aD %h-a0f5a H CHƉd 4@Hh"`EhH"`#J'YP(Ee@(>cP`4z Q P/‚1 V 2X[P(F\Ѱ%!B:%R/!$h%2LV(;F? $hcHVOd$#`(#*HA)^B1~0Ya#B}lyFBF?#$hc1Z61dbx%ėFP(FT%R0c`+X?,#@PO/% bl A0$dQ i"2LV?C9b#`J2*"1'`JF9bh*G&2Db;ľ$X`JFJ1ѐl D$eBR0? "F@$ȇ.F@!'FBFT%# ~.gHF(CAp` CH+'ċ[T%IPa PvJ^deBQ D ,?d`+% eBTJ& b9bP"!`JCĄ !FP&4zHCH$h`ԩ&+FCF Q#$k.\!( `J>^µX?1 % #'*@9"уH?! L? р(EeBlR!V>" h _H /#G(4|1Z6i1Z61DFI'2\>@>TL?FƲ!(i"d =?!=ăAZ0@@VT& J0YP1`JB+*.8OX #E2|H(JFA\+,p(FF#H.H@hiq!EFP)4zHCHǠ(FIѰ%cHǠ`J!#"2LV dy0HH X`̽b]b(9 "FȉN+-!ta|!bL#L$$Ola[rVNV:+cy[la ^C R$|'2\LQ⑤hFdc +##HМ'>GLaw=B/biQ?22GX&dL6FnO[D>H@hƣHI%УcB4ATdbt?#A-&++cyD9b2  B67 JظKFu"QP! B3`;rCd V'˃ʰ, f*A[X`m\-1Z2$H&+F4@RO& deX!#7 vDÕH +c*ôlo#20uŁ#B|H?QQaFGF*!x~´lIF0D4 Ordr61^hÑZ0zYA V}a @F|H?c%FULdh𐍌9FUB(# h,1 dx~.2 #c "FI\FU(!xh@? x #*dldxhH? x #cF$haw1Z67db%ġ*Q*ɇ&2Dq9FUB(# hĒ!Ą60~ɂ!`<'D9r2eB(#F´l04 &+'oѱ(ʱ^c?´`YA V}`iO/'2Tldʲa (ʱ^cAp%F"a2/‚1=´`~F@laCH'D9r2Vcfc `+X?,~3h fc #`+X?,~3h9Fђbla7DdH*2LV?@*Q*ɇ&2Dqb9b1612;dla7h1Z60iQblo #~h1ZK^4Q?Ñy1J60iTdс72aQaDFIgeY:2^$25Fϓ4aUf(bX,F4#$haa&+F0 ђb !&FNh%6"# i#c'F1Z60ix3FIѱ4<:OdVذCFx I%"VJVL?!1,J6FUPF?d0ȇ.F@,(F#*B(# hĒ!ˑ06 k\6!Ƒb+c#FFh~Bc#G4ldʲ2`naTeXl"dx cx!yVN c `+ f V#c% (#FGV~X/ f 84 &+F #B*FIѱ4&+XrfrldhѕmLdc%Y[*62TeY0H!ċ[*62TeY0F*60VJACHǁ?!ˑ ʲP? Z6q$q!! a V}bF;q?$Xѱ* :2UV#(^A?`^?d`+%0"$ o#*ѱ6aTla ~cx #*dldxhH? x #c'F|bla3ncxizO625c#FU?!1#jfrldQd"8dldHχH1Z60i&+F31ZKb_#-!EX]D'0q<$FB%-k(n 4ID #bbF5ăNB" .&F#0~6 |Hy[621y4dN)+cc#Fydĭy/|H"*6db8c#-wm<b(9 "FȉN%Qr`V[B a$(>+*X%aJ'tf@f$E g0?1(#D VYHKpX%QU$C ^D#X`i6:pN#$kU丘1YQa(>X,#J&XF^&8c.&b2LV8.F;B2LVV$l R %,O丘ђb_ !%H>`J(Ʋ^%!$2O/{ U쁧1(`h%( qPJ  |J J` e ܟ1 $ (?f52ed 4`G &F8 1IP 0 (0FR IF P"l R+KDe~&!V J#0"F6GĢB\My,]6~b(9 e0. @>l$#/!B(X,K,O#ˬ!6:2LVVFD>F Kfђb/%[N 625LHa2Dȇİ;XpL QbldcH1ZK (ԭbKDl`^)F/ȇ4eXf2Q< Ġh 1El4l9D8\H@dOJ_OlY/rFUVcH3625L@ EDPAFICh,%e d1t#p'\:&d,/!2+F ||*+1H3625Lt#P Qb>K`GXq("$hƑ*2LV4X|Bl4l9D8\H@dOJq/'x\Kb_ Z0 Lzr4ȑVg0V1F/a,^)F/ȇ#) Qbľ&%"29DU6db8c#-+)ny,=gOݷa! dHZhi D$F[%DUc#ߋTGvy,=gOݷa&F#`V# 6y0iA1BKd$F 1(f1Ea(! $elb61D>H@#1`1, iblUVH:O624eBp"Q00CdD>F@)aЉ#bp(1X2zO1NH&FPt1(!D !0DU1be P,V4 (1\|'K/ѱdN)+c#FF/!2Ek/|H!"*8?db8c#,\Rv ?c=@b(9 "FȉN%Qr`V[BYP`>F@`-vD>F@ .YB_#Vb+`JF)(\)2,## D'21l1 K n?g2t}nʈJ+$hkE#\T@YY&+F(c\H?"((dэq dbCC $bbF5ăNB" .* `VIъ=96F$1?𸨁ҲLVQƸ~ DQ1!P!D 'bbF5ăNB" .&F#a#a<YQxJBk[[Ő[*b k.N|Q\^Cd PF#`D617^Ord R?\tKⅉi[H.:%"2ǣ1<$G-<Y xi$,&&F#O+-!pE a#eKEb"h\21J6#,Od Kdl/FѰldÔl.aD\2FJ4;N߬ <4D1@,J4lVFD>H@hƑ3'.Ѱ Ard De@!, fO61i*`"\Ѱ B|c|b&1XXilcy1J610#$h./FHĢQ )X]`~Bc$GV'!0Vb_,NBċ[ P-2 *\HD\L?!²au$bQ(H0bq ^ h! ѕ.)+h6X2F%!l.2%m(ʗ &.)+kѰV1F".$ ~0Eċe #bq ^ h,&FTdl.)FUQzB`~k 2XPX0bq ^ h.)FTlceK\+FqZ2%mc*\H&Z6Kʗ\.FeX/&V~\/YzirѰV1F".$ ~0k2\!Ƒ ܟl.$Y[ P-"8ѱE>H@(#HöblЀKb_#,~&!V.`>&F#?"2%@VesM&_L\E!21Hx9# 0X3bؘ~.`|Ņ<2ˀ}rV+V$+V&++ ! |L0+#`W#@'=o') HF+уpV$X #pJ(2!BPbKLeerWHĢQ )XAeFd1)HNB` ld$Xѱ*#<&EYea##24a%ق6F#dD1H@60%V&Y/'2dldʰ~\.la2j?d`+Fp2*,QPV(3a#Z6Ka+/#c&Y[262deXl?.Ld''X2b?!1#.X0|LKCY`PīJ0?P|UMHp|# LG#DbQ)o. ,)nۼbiI?ALG!0DHp9*&Gg!rؘ~.`|ŅL,4aYH* !3A<PT#|'2\v1Ya6APM D"9FG+kс0*ѕa$YH4y?dl#T#XL P  di4DO60%(mc \V PVqZ60%`` rʰ`^%=1)'?lV,k2\!Ƒ,䍌frldhѕc BKb_*.YiFb>*&$a8>&F#?"1 (/XnI/Bdb89r"FTa489#sF,( fY`JAPM''* `~ ta*O$ bl/!2(X8rɌ̣Q hdJ%╉A[)/1Ya6APM HG&2Dxbrld(X/+c%\Ô`L teY(1-'>T0A=4p?dy;6, CH d>TQpTH,lclc!V(F1%_,Oldhѕc d`<2ˀ}r##24eY(? ?d dla6K Cd#c * 3C"# hCG"+F#d0m ÔmbR$GQ j0mdlLFT#ʰ`,$F6c XL PVa20&B:26X?,(Yc`"'l`` rQ.+FG+hlr00B9[E`L teXl~\/YziT#*efK=1"?X2b?!1#@X0ćJ ZQE N$a<> dy0HH$-+ٗRϷr6i4Bdb89r"FTa489#sF,(:[,pL9+'* `~ rd~VUQ hdJ%a`x^0F82LVE1610 #'br`V1Ya6APM HG&2Dy|>FB`i2LVE16101$9 0ؗFQl^^4pq&++cc/F4r'! dlcy1BK'\ÐAPN`L h1tO N 4l?ʰF\hLb6X1!?GѶ j0n ri A9[*62Y!V(FJK d$Xѱ*G&24eLFLVbcAp9FdD1H@,5FTdi?Gp3 # D'21l1  `̽b}P> fI,~&."B$a<rUM:8B:e0\ #J@&Ca* `f yX YcTl#G&2Dy|>FB FIV1F1F^d?0ؗɌ̣Q hdJB?!1#>0&HFIV1F1F^FJ%'brla/i:FI(+#! Ƒ0 9^V#c|'"\&YpC=A8>Tс0* Hƃ?GѶ j0n ri [*62Y!V(FJK"_,Oldhѕd2dYfQ+&FDa=!񀬬Qa0BH$ YVˊQ* # ʱ0Ql?1~0a6APM D"HFd";~6i3"ch>YiEDc#1Z621csD$l"QP-Kl?F b/!B)F1FFI'G%D9b2bb/!22Z`maDc|QFdbxr\@FHʱJ2br쭅ľ$X\HVl.$FT BFlѕ.$F".&Y[ Ѱ!2RFTR@?,"FTF1FT/ VHqY[X ѕcb"@c`+X?3F2ѱQ.$ ~.dRⲶ ѱQ.$ ~.d\qY[El.+FUQzX`^%=11'R@?,Z6K .++hR@?,Z6K Q.++h g,Vl.$Y[ P-"861i(DFIѰľ$FYqxLB".\|# LG#DeK ,)n;v0i%?ALG!0DHqYlL! p>b’B1YQ!!"ly1BK$liVa!!de1dXV $`$,;FH X;+`"|"tlac RO N cZO6B22BXDF"|#`@%,KE2~Bc#FXR*2C? ?d !B!#gH8!#`BFaB2?!10"#*(!ʈBA[E6D$l2Vף`$#*!2ad`/'"6q"2V$F„eD! „lH,)FTB ,)F´eD! ´lH,#*! m BK,!Ƒ %'b%#c#Y[624eD"H ?Ĉ!EX\B0Hx|#`,/X(!}qK&F#O"$a8&8l1aI[!BVBB6B@bx%6B4|020 XV $`$,;F('br쭂CBABѰB =B/b?!ʈA a%FB #`@ble|H?c#FTB Ldh Vc%FUaY["6D$lI!$lHĈʈB8F@6B4|`##*! mh!ʈBA[^BX?3 8QH+k#`BFaB2VaB6D$l*! m`BFaZ2VaZ6D$l ! ʈD%z̖ cHi?/ѱ*!&2Dq &%"2!~&!VD'0q<$FB$-ٗRvM$&F#O"$a8&8l1aI[!BVBB6B@bx%liVa!!de1aXV $`$,;Fa?elBBB47'{_'sŇCHxFFFTBK(0!B H B6D\/'24ldhʈD `f2TeY1~ A ~.B!#`BF$ q0 QGYL4 0"#*(!ʈBA[E6D$l2Vף`$#*!2aaѰB!#g#*! mbDlH,(FTB ,(F”eD! ”lH,+FTB ,+Fr2V`!!Q~X/Yzi?X2~Bc$GMX0Kb_#,Bbaq?Hp|# LG#Dd"B^X)/X(`fI/~&."B$a<&.F,++`H=+*cCQ$#ё?_'ońH΃Bє ѳʲTa! bld|(X8|#c%FT$$XC, # X|Ht? D'21l1 .[l)n?sIPr#D'XVVJʅV" j6"NFU'.B K /FO|p$#;2N߬ (42:O/'1612p%LdhˣF&*!x~X/ hĒ!2Dx\pM hĒ!2(X1!i`~. y1Z64~ZV&F&*!x~X/`pCF!q r2GF!ȇbl ,FUK1^C`\f0/!ˑBpC q 4Ki`~.dD>H . Ap%2!#*eX/Ap%2!2B(X0rF&*!x~X/ h!#l h\+F&``\Qc?,´li!,O r |FF&*!x~X/ h,)#l h\+FaLtʱz65V1 x\+FaLc'"\F%65V1 x\+F&X#`\GZ6q4seX`~.gH8bxXKBK_,O$Ѱ.V`\ (ʅ5BzX/Y[ElcQQ (~Bc$F`mk# pJc% q1BK=*tKTdFPZEagCdd P&F#?"2%He>K]6~]ƓI/b(9 "Fba\F,++`\ %eBJ+5J'#* !U#F" )IFEv`lXz4KEbb\ C2heX/Ap8D9b4xbxr\dl j2b&4l !#*tl q)!V+F!reZľ .k3 E9 Qaz6 fc Qd(9!Df. ʱ^ Z6K dC?d ѲXS""2^pMFUB^?d ѲXS"$ b/tl j2b VM""<.F&´liʱz65V1 x\+F& q1B񀰗.`dl j2b V™"<.F&´lȇH`\Qc?,´lȆ8bx%b_#`\Qc?,´lir64~.gH0FUѰ. ʱ^ Z6q4c'd$)%BI.XIaz6\Q/~0X.F1Y[P&2D`/lBYHK2LVVJD1F@ /ld#.X(1Y;^FȆ8bx%6̗,y&++c%FK"# b㈗4ld#.X2LVNף(,ލ q1BKV'˕el . ʅzY05є6}PxX/X .X2LVVFD>F,OD)X|LKDe$~&!V 8|# LG#DeKOmzȏK]6~]ƓI/X.+$hkE#\T@,`z1$rlHcqQ0+$hkE#\T@,/+$hkE#\T@,Y&+F(c\H?"((Bdb89r"FTa4&!leEԬD,!`V $l$ az6 lAc12LVVk`ml6 \CY|"Q`5F`|47Id {_')F?ʋ1?X"d8J4I+ccȇė,*,"a%G@bO6 y0xKE2FB2/~V™,V~XVX0?d8J4z625c#FTX9*C"q(i&X0Kċ[624eE  6 hʲ0b4eE$0pa #H1\|`BFTX;F"dax=c`+X?,+XC,XiDUDQ(;)?/Hg,VFQ`~Bc$Gb2'FDO%ĈC1X|UMHp|# LG#DbA)o.ew\>46i4m~ky,<:A)n4߲[K!z-iz-y^Kw>0Rymz-<z-iRpW^Kw۶y?Af^uv nA>aA[/"[K!<e]7uev^E}ֶ^]ݻ<5o^`a >ev^E}֊θM?[/"E\>^KweP]h|4@a.y҇|}SFPh@5l`ц&1ճF@a.y҇|}Sy  u"/:}B針(}0y@ сx`10P>pb> !tΔ>_v혺 i >ay/:}B針(}0f./:}aq^m!?a tT 7tOmg# `Пy 0L>ǷlMahÌ:mHo}`04'^t 0:Pay> :|0eOL6y!?/:}B針(}0:чہ 6aa0ΟqlBeO]0ݳ6чa0/ & n(!yD'^t 0:Pa>m}yn/&n>F F} ;?a tTфl{vϴFbTc-v0/ 20l4`^4 H@a.y҇|}Stm@L8lÏ 0ΟqaJaL]ʹa+Xv)0>P>^t 4g )PaDL7bC^E|1eP]ȇR0n&K0:`Ѳ 1D3 ΟqaJaL:|xδaB jه@x/:}aрlzn.a؂`^ 0bdSXd1Q1 @b >aAdLO!"y҆^E~F桅P1Hᄔi{/:}B針(}0p!@~>>}8y 0 @~v^v0Áj ^vϷn: [05# |R0B Afa[04'ɇ 7.<ߺO0=0h`рXR 򜥻v nAcQ4j3Vn 0mMB &:aO(./"D:tVF)5 Y謌Hъ%IHM$`6 r1x/&12*1*&:a( ^t^+LO!"eOF桉4T1IS yo]y t`{/X(.ٗRоM$̽bȠoM$Rymth/"b v 1/X(.0a&็ۺ'϶цm>`0hO)n켊 L:}70`h0z D[/"S ʹaeP]:рe[?s8a  ^KweP]a h.04``1ta"(]F0@`0hObȠoņ >`8`0A# >>p] )PaDL7bC^E|1eP]ȇR0n&K0:`Ѳ 1D3 F/S@dJ1*&:a( ^t^v.20:aHtAvߑf:a,a@ƁJUJu5O. OOOO7OOOOOOOPm~<^ vnjT1MZoyo]y t`{/X(.ٗRymZ4I[/"E\>^KweP]h|4/X(.P>uiyv^E}֊θM>ev^E}֊θM>-ä\=gO{0Oev^E}֊θ}͚M$)n켊 q|i%)n켊 p7>>}0|oBev^E}֊θ}ç@s >Rɇۺ'϶сx`="ev^E}֊θM?S"n }|m`})n켊 q~>maL>>} 1/X(.P>uit(}naY0wD0/ ObȠo@iթ7>>}0|oB}RymZXy02(.$al<`0@'^KweP]h|ame0ζ~pð x10`J2Ltp.d1eP]^E|u#謌Rj$ Y (0J0ʚHlbȠo@iթ7:ч>amec#:~0yׇal<`0@'^KweP]h|40a&็Z0:~ `0h0ue[?s8a  ' @!nJ(eŗRymZ"fFL2y Δ2(.0L775 &bfjqj1>m~k)n켊 bȠowd1n@ٗRym &]z- /"i4z-ݗAv߂ajFyvev^E~>`0hO/XeP]ayal<`0@'^aȠo퇈n>F>a@?bXyAvߩOfb}|mb`^A0mMB &:aO(./"D:tVF)5 Y謌Hъ%IHM$`6 r1x/& Dpd1Q1 @b [/"20:aHtAvߑf:a,a`Ɠ RTVg*>m}ߺO0=L}L}l}-ݫPp: [f|xδ`w0^3>>0}Mi>X"}7"B` q#Ϗy֌>>f _@ } E!?3u6y#ab?Ϗy֌>>f _@ o0>:~ `f10t`g>>1e'?W`&>au >Rg/h|vame<ߍzهOݷaAs u o0>:~ a} f|xδ`# a6~>yaEvǶy#x 2ocȮ:t_jǑ]@^L+=&0у͞@ lCm0p: [ktl5cȮȏؼy߱Wlz L:a- OVvՋ"0:b\Cm0<^I{y ] 0m<@IÌ:m_3`.aYn @:a0y0dva o:}菟tOdymq瘻`xï0PdF7>> 0#>REF/m(jQ1 }ŗAv Yym!Ԍ1Il7Ed`4lFQ*LG*i#kx1Q`O2%C0Δ/:P/Y=I20:aHtAvߑf:a,a0i3LG*GQx+q_<,b?8wP8oOG`,ǂJ88_Sqx+ Q%^ x'|qWF8S8X`(ATc0倃`%G`' <c0~ q_ς8/MG`< \GqB/HB8' ~XaQs?8#x\#0G #0 ~ 0F &x ~ B4q¿Ba_ t 7 d- mT/Y o&d<0E38pbIU4iCy!0mMB &:aO(./"D:tVF)5 Y謌Hъ%IHM$`6 r1x/*">bc1yҀJx1e!m>Ďd'(eP]aYn >njALhnfߺ@ٗcM&]z>v۶y&I/2y w<Iz>v>0i%f^<@<Ie8mإa K2y <Ie0K!<Iٗf^E|M&]z<lȠoa K̽gmnBi4Xy0qс0A#>fq۴ݳ!4IT,y0`0q۳/"y&I*em>y0`0> H<.F   >:~ 10? | 6`0jFy v04`^4```0h|vame.`0qiR0 eрFpo- L1sOz>v>0i%S ʹ`=v8`0F} >1~)0?z<l}Ma JahzFpa0b`0h0h`уnba ~̽fy6>0i%S ʹ`=v8`0Fy v04`^4```0h 710?f^<@gBi4Xy0qс0A# <Xm 0/ 0004`b蟳/Y@͠va JahzFpa0b`0h0h`шp \`=e0K!<IL26рێ< a2h`сx`с/Dba a3cM&U0Rq}_)n}ͫew\>2[0Oew\>&_ٗRq|i%Kw>Y4/X7S"n }|m`}/X7Se0K&n>F^Kwui}p\h604'z-ia}ٹ)dh0>)n}ͫS"n }|m`}b<ڵ0P>la`^ARq}Z}p\h604'ew\aV>maL>>} 1[0O0O@Oݷat^E|`ПRq}Z}|iÈ02ـ0Ƞo )n}`f@?g<F?vq[0@aymB}RpVn>`0@8^ 02ـ0Ƞo x10`J2Ltp.d1eP]^E|u#謌Rj$ Y (0J0ʚHlb^ M& D>bc1yҀJx1ew\"fFL2y Δ2(.0L775 (`%$M'ͳp]tz-^Kw>̽b}MM$2}z4ݜ}&_ٗ4xi%ٗ 4uIf^Kw>?vq[i%/X@u0:уlb ?/X@u0a&็ۺ'϶цm>`0hO/X@u0P>lL]tOmz L 1/X@no-S0>Av.فx`1/X@no-S"n }|m`}/X@no-Se40wD0/ 0?/X@u0y`0O)n4ۧ0pT,aAv05# g`x ;?x10`J2Ltp.d1eP]^E|u#謌Rj$ Y (0J0ʚHlb^ M"Xd1Q1 @b [ 6Ďd'(eP]aYn >njL1%%JJ6l@\~<^KweP]esl/X@gBi4^Kw>0>mia`^Ax`="^Kw>0i!`2: qF004`}v0?b}Ma L26ч>`0 0 e[?s8a  esljaRymem |/"a֌ H/:>y`0Ob^ L6ҌA0 YymŗAv"H+#,tVFF $h$r0KyN @!nJ(eŗRϠi!"fFL2y Δ2(.0L775 &bRo6 t5welRpW)n46P>ui[H 7g@zΟna)n46P>uli%ٗRϠil|4I.l`0h 7O 2(.~l`0h 7O 2(.~l`0h 7O 2(.}n)0@8`0hç0p@| 6`0O&@\  t}n> |È0@a+@o-a4ـ>)n46P>un [lÈ02ـ0Ƞo ^u0<|aesl(: 4Ls4ه>ame>aAv05# g`x ;>)n46P>ui)ni |ç0f :|/"`0jFyv|^ Q(0c1t!/"(.C7EdbP%0nhATTF`#bhك"Td1Q1 @b [ 6DLO!"y҆^E~F桄 RXTf6l@\~<^Kw)}$;/X!2[K!4IٗR_@ M$"B`0  >z-ܥP>>&]z-ܥ@p]i4R_@ L>x.aa} /X!7>>}0|oBz-ܥP>>`<mF n \`=)n/D>mia`^Ax`="}R_@ ç@s 1v >>} 10/ ObRHO0ahÈ0ȠouR0ζ~pð [K!Xy02(.h`ц` ^u0<|az-ܥP>>ay8 Z04a> H/:>y`0OF/m(jQ1 }ŗAv Yym!Ԍ1Il7Ed`4lFQ*LG*i#k[K!>nahÈ0ȠouR0RHL`FiR0ζ~pð x1 Lc }DL7bΔ2b)n/DH BD +1 gC 4H1ISZNyo]yt6DDSt6DDSt6DDSt6DDS t`{/X.Wm_z w"j(n W2EvŻbm ?b#}( /X.Wli%Kw۽iZ gPRfi8ւ?{Asn>>M?Ev`<0ʹ`\'^Cp]ڵ0y@ɇu0.b]< d  (] 8ï6ПP}+La2aaכhO/X.Wn.:m0f<02.#e7@S6f}F@t}n@al2ـa}.كnF@vay,y`0OEva ^E|ð 0/ &>ч2i`0O(n VahÈ0}M 0 >y`0O(n V@eP];bay,<`0}lç0f ;HL >a fiyه>a "b/l 7# @;0<0WlO(n ۩^u0}M@l/"#||a Oݷa"}lç0f >`wP>;04a "Ba qDç0f0g]4؟B.هOݷa@||v`0hðDa00 Oݷa >a fi>F/m(jQ1 }ŗAv Yym!Ԍ1Il7Ed`4lFQ*LG*i#kta t}n e@f 0}F?vq[.:lAv@fta t}n e@f 0}F?vq[.:lAv@fDPt}laxa10=@`ч`0 2aOao-@|Av@b} "dç0f nf;HL<x}#:}t}ll `b^ TT̉c }DL7bΔ2b(n "fFL2y Δ2(.0L775 (`%$R9Zmٿm`]ty v>y,]6~@~۸z/Y,p^Yng`>[>M?hn-Οnag2t}ny,]6~`>M?Kwa:~ L@w ">чOݷatom?- e20Fcp@n6 < ?vq[#1f ah5$c)ny,=gOݷaੁn1h6/Y,p㺘dt#Oy,bȠo, F Y6IfL06Pa#F(&a#45"Pd1Q1 @b t}n&d`t'2A# tpYsP(pJU4fߺ@-ݐŸFhPAf^Kwy,>}2(. <0}Mv|^ Q(0c1t!/"(.C7EdbP%0nhATTF`ew2εS=bgR@5 ymcRAq^m@& 0] ">1x/&0` )Ld1Q1 @b [aZ"fFL2y Δ2(.0L775 NaF$nV+ͳf^2(.uIx10`J2Ltp.d1eP]^E|u#謌Rj$ Y (0J0ʚHlb^ UL̉3 }DL7bΔ2bv^E}Ďd'(eP]aYn >njcEHfh 7.<ߺO0=RϷs!/XnI//XnBi4̽b}yIz-w|K2[@-M$/Xn]P>>&_[@< e (] 1sOb}P> u0y@m 0P>pbz-w<}p\h604'z-w<t(}na.ۺ'϶сx`=&z-w<em |/"`0jFyv}RϷzem |/"`0jF>у=@í ^u0<|aesܠ|},(\|em |/"`0jF>у=@[0A# g`x ;? )PaDL7bC^E|1eP]ȇR0n&K0:`Ѳ 1D3 )nۼ/way8 `Fp ^P ^u0<|a^Kw>l|}M,00$O:PȠo³0|0cCKJQ* 7.<ߺO0=RvaexfI.̽blM&_f^Kw۶P>>&_ٗRvݸi%/X<"n }|m`}/X<e40wD0/ 0?/X<em |/"a֌ H/:>y`0O[ݺem |/"`0jF>шfh`Ԍ2󭟹0[ݲ7S ʹaeP] H1la2󭟹0bl|P>0(./:}b `(tbȠo,a( [1/"A(|1nO, bΟqf^픻}g}p|i4D}]>>4I~)n?zq`Ԍ<`0@'e>K]6~]0e.vtI>`0hc e[?s8`0OdGl.?s.}`o|È04ag2󭟹0@'#b`e5 ( ]>bȠo, F Y6IfL06Pa#F(&a#45p0b TLtp/:PC/,fǍu20:aHtAvߑf:a,bs fbJTͳp]tt}lew\>46i4ɇMنl`чOݷa0@fb^ L6ҌA0 YymŗAv"H+#,tVFF $h$r0/X6P>>ϰy)n?vq[>8}4ـ0Ƞo ^u0<|a#bh"Td1Q1 @b [ 6}͑3#0P}+)n}[0Oi8m[ݳ!Rо~)n ek^KweP]esle8mw<e; 6^^0O)n۹@z<l}a)n켊 lgm@gC[ݲ7)nۼ돐)nۼ/wz<l}Ma/Yn/DzȠoBv^Kw>l|}M[K!>oRϠil|4)n46P>uoz-y 6}/Y]>>^KweP]h|4/X(.P>uoe">e.vlxAw\x1V`dFC0Δ/:P/Yr&d`t'2A# tpYsPa)14d~*7V7 7.#C#CZcqŤ~`CC\qḇ67 7qł7 ? Qn!7a/q~?7ḇ W6>DG+AwB*?-džwƁBO|/'׋rֱ@5m#ߖ/&0Mo#ߖ=O~[@F' J[ dv ?Ko<q1?2}?q -)nF'KwlOoݿOoֿ߿-#[ku7{#[Oo.wbٿb71?-O-=K?=L#[*1/ObP@/Rkh F'/]1?/"_F'#C_#C僿#C1?O,'^ 6\T%\T%u$eB_FxIˊ]px/ YqP G^qPGIˊXO츨Ož OFˊ\3?lr?c`Gˊ] n\T'a.*p{M Eh+ˊ\> eB.ˊB4[.*.* \T'?\T' h:ˊBKB!\T'LAa6\T'L&Bu2?` 4?`eB,a\T'0ɃlO`]\T'2L:ˊ&&kB??&.*L?.*L?#ɂ\T'0 |#eBoO%By0%eB& qP9OLOxn)ˊ _  qP8xn\T'N ?pxn5ˊ'nBYqPt9qPn?ˊ'72?/ ,OpxB/d!h |#oR|"SRW-_/H: AR!| [)/H| [)/HB B#|G$|W%|[P ?/Jo@No@-/P[*|BoSaoX[ X[/0兾_a兾_`ao?,-兾_`C 兾_`!~X[/兾_`#X[W兾_`,-;/aoQao.^ ?,-ao2^Kao/y?兾_,-,- ,- |/x@^,-oClž_`5l?ž_`aoF /兾_`B ?兾_`- |-O兾_`- |?4,- /Qaoh+w兾_oh ?,- %- 4[[_ohKaoh|Bo |@[X[ž_ߖ |D/?4[X[oh,- 4ߖ[ |@- o |@-  /$|@aohž_#X[W4 ?[ ?ž_o |?/_兾_兾_oĿ,-8S[p兾_/く兾__omaos-8,-8k[p:ž_,-8?ž_X[p!|兾_~X[p/aoB? |/#~X[pž_#/〕-8 O,-8 /〟ao-9~X[r(,-9 ž_!兾_ [r//oʟ_/? |Iž_#_ |Iž_!兾_$/㖿,-9{[r/ao-9?,-9+_oȇao>兾_![r,-9ž_!/B |BO%~X[r/I&|Bw兾_"?7aoa70/¿o`/?ž_Ɂ兾_ɥ-L兾_ɖ& ,-L1&%0m-LMao`[/ïog,-Moa兾_ɑ|&[/[X[| |o`ao`-L#~X[#|兾_ɂG0I0K& |W0M0O&,-?ž_q7兾_qOn+n|?,-ž_y~X[7S[7[/n1n5 o |nX[7k[7~X[7C-/[7Gao@ n!|/ḇ+ 兾_p}' hno ~/Bn|7[7ž_p( /GT-0n _pT-Pn"/$( +/Mn,- |?兾_ÏoM-? |xp~X[8 pcXp ?o_V-K| ~X[8S/ߦ-_-h[8pKok/mao/s,̋|p:p兾_Ä?_ËX[8|p/`-C\-!oB/兾_Àw.?o~p,-兾_Àao ~X[8_/C"/o",7ao/G\- |'.Ÿ(b(b Q@b!1yҏ(dH=Jz D$>M?PJ,GaKw۽iZ gP^R:Aϰy8tw 4gO{0OEۿO!۽i*@@셋*@{<Pq۳(n:}Wl{dG@7> X+=P]Py}n`z @ (tz߁- XݷaѪXxf~ ^ݻ<5o2[/"i4̽bO0i%S/X`E^j vP<.𭗬y0"(]YRymZ(: 4 l)n켊 M$ٗRymZ(: 4Kmz-ݗAvu`fI/ )n eymI)n켊 I/2}S/Xxε".Sf^ݠva Kez<lȠoa K2}Ƞoa KUz<l}Ma KMz>v>0i%̽fy6)}$'Bi4Uf^݊_@ M$ٗ f۹M$Wf^ݏs!4Ix*/Y@͠va K»2[`jYf^KwuiIew\>&^ٗRq}_ٗRϠiIe@vq4Ix̽g`a`xïM$Wf^@luIvi:ٗRϠi!4Ix+esl(: 4fy6)}$'C^݊_@ V)n/D|P)n/D^Kw)}$0i,bRHOi.S/Y@͏i!K/Yn4(esl|Va3f^E||-e8mٗAv< bȠoV)n켊 )ev^E}ּ-ew2̼ ,b}MT>S/X 4lb}MOT)n}T(n 𭗬 4u bXyּ2[< z}Mv>0¦^Kw>0b}RϷr7^Kw>(1{^Kw>(\|,b}v.@P)n;v0–^Kw۷^Kw۶P>>[ݲ@x+e>K]6~] zȏK]6~](evǍ^Kwul|}M`~ z->θ}_f^Kw>ϰy0OM$Wf^Kw)}$'Bi4Uz-ܥM$./X 4٤KŖer"B}Mv.٤K2Ev&^ٗR@:ѤK]zȠo&^ l)n۹@4Ix*/Xn4Ix*/Xn>B٤KŖes v4٤K2[ݳ!4Ix̽bli%̽bl|}͚M$Yf^Kw۶P>BvIe>K]6~]ƓI/2}`oui|TΟq@Sfl:׊y lŃZWk4ی"zdtP^*uޤәP iM9:%OӣbII^i폠iN^ݳ|}RihtVY46t:Jz[?vǨ]};&I@/_³5Ri("zԚ(XY@zԙáP 6"zԚ(j34O[N~k:e9(t0=tºs:.5mo4ΰKPTq@M5QƠCNIISFUu8ՠn .zfΙ"Pj ^Lһ0Ip \yhf7$Ƞmi'I'E=oIp𮷥K𦷢\34𮷡>.ms^' 6u]%O[c)pK5e2M{\|'3YzΟ0YMz&^KweP]a&g&^KweP]퇈z-ݗAvu>x/T)n켊 q~϶"n I2[/"E\>a&MIRq~϶"n Y2[`v}p^)n/D϶"n i2[K!<>x/Sesn϶"n iIRϠi!퇈)n۹MzΒexgCg74)n켊 q}[>x/Y&^Kwuila&fjLb<ڶ}p^VK[[C>/5\<y0MIL)I&^vΟ|g$el5NJSI$)PKi;ela&I4vf/;f^uiS3RNyҀp39'I'Ey>x/h䪒Nx/kT#:.هYtZIv^v>RP\|)3Yy:|xεgہ 7Tٷ@n(g&^v:|p!@~I2<뺅p!@~ꜗMnK[/;gہ 7Re;SUL6yp39%$/;gہ 7h$elp!@~q䪒Najfr8|yU))i*I$'4t`fs=n)XKExPIt8x(EfGL?[&TΟյsI2oHK^4h镼S[TK^):.4QYZ׭,tɯVaIy\ LGQMTJن}:TҲJSˢV4V)N.[0OSG$E_{ճ 4I&%lM?URR]tӥ[CV ijLg`:}[~4:}[8 RNNlM?Ug%T:}[@-֪%3t]*t^̟LII{1uUI*(DgCUTd0SS)tZSU{8rJjkAv@U39MT1u7)y#jTNf5V::.Jf)ͤu]%Qs~6L]'5ǖq UZII:.۪$$Qx|yfuҒԢǖ!lLGQI'ED퟽MfՒt]O(NYmꡩQD .K6x6pK+HKs~)D6n^"ydέOV(u]%QuXItKXlb*v4 4MRNM?d7~ VIS.:Ailܧ5Iq.PʛZSQU$ ^<7MjP%9%H iI3IQq.UZIPҲNv~g$(NA{0O UfQ)NtI{6[5UQ)'E@yOcRMUMTIEe~7$7De~6~g$6jNt mꡩ&t^ä^Ϸo)U I5NAvޤ;X%$<7Vtt\ufiS3I:.:͟)g#:.: 4v iNI:.up=nq#'Lfp@5n׭P/43Op dvM?Ri3MX͟攒Ŝ`9KIeb1v+9SVS_šsPsO¶XiztLVԙ@ a80ViRNqǐ0ՐΉ)'E𲷤:.e9S[t:0\O]i5&xug~ ֓t] kz$pf5&х9MoDp𦷢KQ#~H  kz$х5Z'O׭晳V֭zivi 7Rip !mrJSUrZZIIuW[DKmys}74ԙ&t()'E]j D$Qu)&)gFJxMԚ(v (MhrJIw\-vzI9'I'Ep<͟$Nyc^lL#:.}*frt]@Gu2RNMoD:ᙯMoDtaD𦷙ŎfkS[ã [šg:ᙯMo3Ό&q_ kyPf5:0<)q3 l?k93gY[cL[M-zg;5xY[eNK],z}McG`Y*e9%)!NTr0T$_,}Cx*M5ڮM<W9)u8ڬ9)u2ڬ9*QI'EB> .HiY'EBi6mViZIwP@ Ez#NI:.\@ mVif$軨]r϶6xڬ9$RIwP}͟mViVIwP8'?x+4IEt].fX?w`HY)'EB>f$u Xf|O+4HҊI:.\#M>2}YrF$軨]r3`eڂHIi'EB Ii~ #UDu YwH7I'EB@wH䍤u:|,At,2;H䍦u:|,At ݻYrFZIwP"XXdwf,RN,2@ۼG$tt].gO2B#+4IeTt].dP] 9%+$軨]r;(n9#ZJ;\^6'Er]fҒR8r &;jy.-g$Qw\V10|RJY0] ߬͛贓gPؽٹMTuA}՝RIw\ThfJRIt6>Uӕ +$Y3 O޷7?zj:eo kyS ׅ56u3_šjta5MS[SG\35)檧FTׅ5Lf5PjMo5fu3_šjjšfp𦷚L ky6u3_šf:0~4hf5*ta3F)5'3x}Ԛs4vG\7SrJIw\#ަSt],z4IU$u80Vidu]ͿS)tZSUw\5Rt],M>^ҙI:.t+*QI'Er] +f +$軮Z 5RZIw\HYI'Du:Y5I'ErϷwVI`:iMfRj:.u ۼ39(Nm?LJ,dXdvਖ਼$軮Yo*fr4N@ThڲN叶=g5dKI:.떸 u59*RYw\ 4͟U˺M>gjrTҲYw\l{SS%u<dt3T$(]*fr6N39Ui'ErΞe/LK$db S3Iw\OCLK*c*frXND]Qi'Er>!H*g\(DO5nThjfҢn659M%˺xDSaΞi(],iVIw\ڬRSIeu0,Gfr蔓g`>YiNf$軮Y39Nk)$M%)j:.tQi'Ep39N%$軮X' 44I'Era fpԦI:.떻Y՝6fBpVg j$fBcMEt],]>D)nN>hQw\ dwS*JjVIw\O]:'*($_šita4xp濅5фs, q~ә1fijI)'Eq5i9$$軮1c9%Tt]!欎+$軮1coYiNI:.Yx/Y)MTu,4ՔRIw\b蜒t] XwY9'I'E?a$-;l}YԕRIuICQNͰgCrJG]>:-$qU44IEE?c÷)$|t5$$QS)U%5W|1i%˾~44v $ 7fRJI,]g5$I:.m;7tu2{>یf$t]ǘ)HQi'E߽q g5dI:.VsZFI'E߽[>yuԑt]> Ήѵd~|MI*N.R۬VG(δu2* Ev [I:.AY9M*)$K<Ԥd~y#RSIe~tߩsRN{4 z5e9P<#OQYNk)$<39NVIwfPA{2:(O]?YnSJtYwgP jIi*ΡVmz3T7I'E߽)^g)II'E߽lfi9LjjmϲLS4NMo5:0nY46v }5RNzg$$CYRIt[}LGt] kyHjnVݱ_nIð,}3II)'E@frNNQ4H /cyv9C$5_OcȞ&v𲷤:.8͝aIsKzMc>.isS𦷥(taJOвI3`MTfιYԒ83azM?ZMYQCj ,46jTTҲN͏"zOZR-$ '@T )'Ef<jCf)e𦷥:0x߱O]ړR;l0O%%]M>:vQi(=f(+$gYe#9)i'E>z޴%5Rt] kzQ3F~ f rԚ4vYl5I)Qe\M!֜I:.یna6q֔RT9:I:.5(х(kšޔ6u3_šޔXsOšޔ8taJ-l^iiS[9p𦷢t:↗EoD:VL 5)蚧\PL Mc&8u]%,xSo6gL»Yi`P_ݷC5|Uk6=e7y/T3WEwO6ꆉxUk86CS^` 3wPhf~(}p^SW§ہ 7T*)ੱ>mYB Rl4PVf*}Vf~@ͳ{>L¦}>L!iSs8 L]VkT8Qo6=gm@5ngǷlMga͏nj϶V]3? ݳ6՟mgtL-njnT5c/YtP*D}Zx*e]fcnsK/;fcnUqmj %ୗln: [hfs[/;fg75|*D}ZkxZln: [j*eP]: T8TD T8g<60n:d׊]pw1^q~:%/ӣbI:%/ӣ@u&ZCclTC'IP *=B48t:JziMDI@/_nO]ړLI@/_'9RiCP Rlyv73P вICsOCo>ਖ਼J,͏x/kRdltj϶"n )2[/"g792[/"l0϶"n t/X<>x/Y&^KweP]h|4MzI2[0Og73Rew\>ճ퇈_5NK8qs4el5&LS4L?{0MLII:.ّهjJSI$)XKf}p^ɜ;TI/:4)'Ey<@p8 CJlPҦg$elp!@~պn(ݮ>BTJJ$/;f)fg#:.هGRr$KR9n"n (Σ f1R8$56 jC F@67 p Uil ʳVCf6S6U$9m`r2贇6 0ԐpVa"ػvypTEfula #a1 25d9rLH *IG6qURC͇ n6 `γ_CGX}%^\<,TKҫ3ymmI6vJ(6eP]jg$eAv.TNIIvY n)%Tt]lO0eD*,ʓ5IQ#J6>Co>ਖ਼JQI'Ef(m r/D deDxnpTZIvYG~ݸ*frQ:%$'8u3_5K\׉sS:ᙯzfk4 :ᙯzѣ'*u_g\S[8u3*աItY5´VySGL/ 2:a^T&-8^ZTߊuNaIyxgGl4&6& YSrJK/qμ>Ii, Y.U9))΋ࡖi^ZgM&gQ(@Vq `q 5d7~NII:..quMzfCTj;̇S))MUZrSՔ]ǘ)g$$cRilq `e lP!aꩩ'I'E>#uTԕRI{ǠLGt^족 6ꙜE}fj$Cg~*L$d=>fRIU YN.yItIs3𦷚:0xS[5fkS[3FMo :~kM3S5PiiKxTi:F<>Ӝt^ {!jI)'EEu.M4;裨]rAvu]HU5$$軨]r@x**nN,3vU5#i)$軨]rΟ<] દm5du Yb f jFZIwP"XXdwU5%JIwP"XwIwP>P] દI:.\W(e.GpUSRXN,Ӱ239E<Ӱ^Ρu.M4;賮Z z4ojLԎS[3gFM_\>&;jy.-g$Qw\V10|RJY0] ߬7)i'ErΡV {!f5Rt]aUig)$軮* lHk4JRIt6>U +$Q3 O޷:d߂Vty+x(EfGL?[X^󡳮F ky  kyS ׅ5  kyC ? kyg\35)3\35)3g\35)3G\35( :Rct;sX%$軮YoS):Jj=tUTԕRIw\0SU5#:.떻~S账cYj$軮Y}`MRIw\ݽg5eJ)$軮Y+EzkJt]-~ZIw\HYҒNI:.u7zL$u> ޳Me$u]H k:-%&gPS3-$軮Y}TI:.@Gm NN6g#J)$軮Y<?LF$軮XcrU%u\|ZJ],M>gmi*Yw\lM%M+%u:}ǵ6UI,Y #Y%T],@S3Ւt],}vਖ਼ګI:.t,Ax*frY$u <^ NN}*frYU$u@AS3t],P&brI:.a-> TԎ*g\(DO5n9I'Er;vլ椦],p6񶠩4JK.ⶁMO:z֔Qi,Y54gہǍYI:.aYT9)'Er}fҜRIw\7u*frRIvAYJSՒt]3SNfrJIw\O]i+3IiΒNѩM5t]-vw4ͫ$軮Yоr-$軮Yо4rSQDu0OEzYjhYi%%3]-ʒt],yv dwS*Jf贓"z eILکI:.ay/g2;%3g)$軮X֞v iRSZI:.u @y fƕt],}6(efҚ-$軮XHlP53JIw\>BgCTt],yu~k3igRIw\McEUMJMY'ErP=q[DZI{nYRT*Uw\mͫ*&N8jΟqflܨII:.}iʊ'I'E6 k傇\a1jŘinrJIw\bAviŏs@;U$u,jm9VIw\bަJtZIw\bMz7)şNRIw\bR-z^'cYjLq3(燶y#*rJIwlzrNNx{a,D~9I*ٱ_n)#:.mPS贓ϴ-%5Rt]AO))ާ)*QI'E<=rd|Gp6~9IQe_C.kgLyTygL»կ[t;9i(u]%h xNo4:f~d(u}744v j]> 2~I)'Eк}BYVi'$$O"l{YRIwY6=(d4dB'YEByNSU)'Eо?z$3t] Agi)*QI-3] kyф5vI(v $ 7VZII5]إ>5t]vne9)5e5W~}?zN{80USRQE~u56Y)'E߽q5#S-<(<Uiѵd~|-$!]5#ZIwgZyNGJSUwP"d-p$~B ӔҢN{z*JiVIwg2;%4ZIwgO:%$HRRIt(uAY5t]mI$( @}JjfrZIwd'7)d:,Ulzv4Jj$QwgPͶ=@U)nN{R:LS4N{uifVSUwd/o}frVt] kyф7d'IMSoYt\x39'I'Eߺ5%Tt]b?S3d_šsHinVݱ_nIð,}9$e#:I:.GjQ#$O]ړL "rV`I ]>"zԚfv𲷙K.mo"tӥ[æVayٛ9Oن~Zg`R 0Ok%$_U֡It4U[dΰKͭVtֵy&-q3>/3K<,EgOj$tɿ +yIt6%b+:~׭Leo5aItךxiRiP)[0OJcJSˢV4V99%)e+fi3)N.V4&G` 4fqI%)e𦷚Ό&} (Tk(vIl7I%*(qUfà~6e5R]liiʊVIvO]i+5ʊ3cȞy#RT7Daz4 ֤.a;YZJ,gYk5HN|mP"?z·%:-$gXckJIu8͠@٩4,vYl5I)Qe\M!ԜI:.یna6qg ʇ'I'E𦷢IQ[)p濊+z$ 5Sջ^J34O[#G\65Tfz$l뉯eoD:.\<ٗRymICC3PȠoPYymN!mAv. /"n 3(}?uR'e[y꨷VkT8M?vet/yƓI*gl~ ymNU4*D}Z(.ZY֪+O@0:C$Ya׳#MCMxz-CP S0OԙeI@/_K4ǘwRe^i폠i(Z?w&I^О+;&^Vݱ_nI3gCY4XtVDݩ4HtRx&I@/_KձO]ړLáP вIáP 6"zԚg&t:Jz'葳fy)5 aIz$3<޳o*MEfu F!n8iT#!Cqaܚ1̘fH5cY5FC[ @8Qd5$#!Cq`dH1f5 $!cT#!Cq`dH1n1 QTj7qŁ 10pc!Ʀ#!CqbBbb@̖ j2Yqkap7Xb2&$ l ƣ!M5FC[ ÒP ƣ!Vj7qŇ#  ƣ!NH5FC[ Ñj7  ƣ!fQd5p8,9#!ⳜQd5p8,9% l3QƳQd5p8, 6$1fQd5p8,9% l3#0!VjH5FC[ ÒP ؚp7 ԃQd5p8,8F`B25Րj7qŁ Án1cYj7qŁ p7 aƳZAb2d8 D D1frAb2d8 DFd!ƴJK2M{\|PάgOy֬a&R/X(.}p^/X(.YMzLbȠo՟lx/Srer"Cg7괙z-ܥa llx/Y%-HKC3O^v>SRdu$/;gO>SS3RNdta򚦔I.ktu]%]9;ela&ILQ&^v̼gPҦg$el5 *frNN}p^: [U$}p^!n9#:.هYtZIv^v>RPLtKB ֒elyu B 9/3GX}%]Eӟ[/;gہ 7Rd;SUL6yp39%$/;gہ 7h$elp!@~qꚒUI'Ey0K539VIv^v>RCo>ਖ਼J,c69hpTtJIuO[ (u]%+DzEN5l Y:׭6uE|RnæMBs(?tkt*tizgMSŮ 4I(v 4M'$_5GX}%\+@ 4?RcJj<8^UCrZK/5e5Wa$$IU$z\35S[8u]%U[Itkp dvM?Refv yQY%%8^UCrZK/iURՔEAvnL/:ᙯUNK .kUΰK.f'XfuNp=nm#'fsip=nmC*͜:.&xV >S[3fXizΛ*M5Dy Yǘ)NII:.@VCwrrJIuTmzk&tYCY? +yC>.S5Hfx,yu~jM5vY_I)'E𦷙g\35)mc 7Mo3ffkS[ڧF6kšf:ᙯZ'O׭摣V֭zi*vi 7Ril !mrJSUrZVIIuW[%Kmyo}748v E>frJIrZIi'I-3] kyфͥDIn`Xt Vf$ua׫3stt].quORiL 2L$5Wd=iʙNSVSUw` :号toIh U$(mgځ U$$CgdynNJ$Cc@ӏ^g#:/vPyLSN3N5Rt^졳?tZrI:.z}r/n4N.yItIs3𦷚&QSPфWNZԙ)U8u]%\<*M5:F<>9$^nf$"Pb&ktQ.kUi)'EB떺?z9'I'EB떺a窴䪒N,lӑdu Y)iPVEu Y)@ZrI:.\X}9L$u Y>VE$u X/ 9PҲN,o:2}U#FՒt].a2AU%RZIwPgRF|dNJu:}7nUiStt].dx*m%$u Yb aZr6N,̱3vVu Es̱а 9,RN,2@ۼZrY:I:.\b aZrYU$u Y+2B#*du Y`eg$rIU_y`B]Ԛj(v g\bkI)9En6fr8rNMo5 ME<]pwcԚf;jy.-g$Qw\V10|RJY0] ߬5)i'ErΡV {!5Rt]aT3t]y$5J)$iCd_šfta3Ix ~CM(EgO޷fΙ[B+2:ae5Mo4p𦷚ip𦷚s:ᙯMo4ta4Mo::ᙯMo4:0bP@uޤP Ύcn䔓dGݽL$)XUiU$u80UiNߩ:-)Xw}jfrI:.ay/UJg)$軮Y޳t],ТgEeCJ:.떂?z΋J-$軮Y۬JI)'ErΠfViIgہi$RIw\z4MY)5du:Gm Qi'Erζg%JIw\,2;nTjtt],@39QI'Er̠y`u*fr4mY'Erޫ'%RZIw\[IU˺ilVZJ],:i?U˺>cڬUI,Y #Y%T],@S3Ւt],}vਖ਼ګI:.t,Ax*frY$u <^ NN}*frYU$u@AS3t],P&brI:.a-> Zr8RNp?պ3r8rNvYҒTRSUw\ڂ-)RYwPl:yYiM%˺޳59M#J:.}|xUJi,f]LSt],VfjN!S3沒N ҝ&쎘?Y9)EuT:,cȞ4VjSNtt]-vj)NnNNSLڲN} YjSQ%u0VjQ)'Er>Q^T䦡I:.떀UJfRS9Er cR%$軮YO7SNNMo4:0IS[ k30OԙejŘi$Ś4VNN>1J$軮1g\CUdu,}걩NI:.Yx/Uj$軮1gYrNq `IRJjYde9QD5Wu,J]?S)ʆ]/j9*,Qw\b1!iYf%T]ʓP%<ǘwSRNym*q9%$=}LðMWXSRzȏfYwYǘ)-*)%|v RNNzϞESIU$|m*fr8T7qʙt]rNN~ÊNJ$&8h4l}SRN~rrNN~H[hvI:.*LpSl9S*}MJG]}t{cn(v (ĤNIIwآSJjbLK%%|y*Yi,슧 88It)P?{^8p~tI#x)fqi%)eن~I#MTJن~8rIJtYu)rF9?B&0͝rRIJUv=aVTPⲚ.6u 4M)**iY'EfǑ=wXiRTUeaDݳʒ%$ BhRTS[GFX+O crJJ,gY|tfQi(=f%#:.}@4tZIvϞǷRSU)'E𦷢S:ᙯMoDtaDm.Ig`MUf3YrIJ,i fQet]>l7rtt] kz$хOšމ:039Jp濊+z$ 5O[#\65&ٙšޓх&+zN\F𦷤:ᙯzޓP뉯eoI:.\<l)n켊 q}ZgaTC̠iO iغ(+E)}p^ہ 7T𥗬o=U).}S~Z">ͭPU|YRymZ4IT43?-TO=f^E~ VkT8YRymZ(: 4J} P7U# uz-ݗAvu`fI*gx.AS3qmj )ॗAv߰2P@0:CLׂYa׳#UCMxz4t:Jz*ui6t:Jz aG<M*^i폠iM#GCklTs6t:Jz+BzԚit:Jz[?vǨ]};&t:% ϴIgCO'Il(B'*M5^OcȞ&I@/_B&F·I@/_txR-zΙSKieni3>/:,xY[PK΋.fVaIyeUNK.f*:.4xY[XKҋX}%^\<,HKҋ:.4ienKiTΰKt\/:,xUS>/3K$Ĥj2(.&T(T䔓}|xU59'I'E/vGU59*SSd>jN@gj($>wO6jr*y۱(23t58:|wkySS5ERv>zRIq&lT\l1[)d<@r -$OX<WjRNyGTԦTNnvq3K$?fϰPmT3K(6G?cn)X$}( 7SSII'E@}JmwO6jr$Bn6gahJtYv_vi ?gۂ?{- oGt^ۨl)n):-$'fsjqU=nmc'͜: zdEWZ\39cGX}%]d3O Yku:fixVĎ5l Y:׭LļU[Itkp dvM?RcjŞlN%$1g<ꜜŚbT%5e9u+e~׭撇MQ$Q<URNqǐ0Ր%$,t8p-eo3ΰKkN~0uDaZL`Q՜u/Y5$_šg(u3_šg:ᙯMo3:0ļ)\35)ã h?{^:eo ]j׭I 7Ri҇`Y ov@~SRgI:I:.y3>/:^t)u.&oRiCM*,P7S3RNt9E𦷚ʝMc^xMԚk;uæjYY%$軮YYʒUI'Ep<6~Tdu> 39NI:.y#RSU)'E𦷚ɝp𦷚Md)θfkS[jMiS[î:`[ڇLv')UK^2m6 ڪJtZIwP}yUJIwP@zUe3t].fX?w>UYiRI:.\_AtYiPҲN,o:Hѵdu Xf|b PUeKI:.\jHO}UeI:.\3vVZJu Et ݻUt].gOe.GpUem5du Yb f u Es̱а I)'EB@b f NN,XXdwVZK*u ErXXdwVZKVIwPvPRfrIIUul][IU$CؽT:-$軮Y*v/d7~U)MTuA}՚JJg)$軮* lHk5i*QI'EMVj*VIuR?zi:d߂Vty+xV̎~S:dׅ5$u3_šj,u3_šj(u3_šjPf5Hf%n&8h Ύcn䔓dGݽL$)XUeNy*8kye9NJjf'Du:YnIgہjk)$軮X=b쎚@SYNB#LJ(g[}S3%$軮Yx*fr5:I:.@~ (fP<:396coSTt]-q4%TJK.ayS-%u}iNJVK.tMk4%URK.y.-g$IUu:P>pTm5du (]*fr6N<^ I)'Er2g%gCƟ@ UI'Er!}Tdu0ػu39N} OCVZGJIw\"ptYhjiҢn6SQ),GE6<)i(],iVIw\ڬ7)NEtdw#39NtJIw\AY3Tt], @~ 5t]LJVfӔ5ddtڒZIw\y1II%$YrIY%$I3 ONlyu&T;|*e9%)笈(ji)%|y+4*)%|v i'$$UF䪒Nz϶39VIujM#`?aT䔓ֳIY'I'E?afUI'EΤIcNѱfJIw5bfNN~H[hvIY*NiE:>~6ÕKI)Uw9$qUt{cnH(xv^I9%$솳IY'I'E?bNJ)Pyu3I,]q `ҜZK."攎+#3>/5摯"t&R[jSk"yk󙣦fw}`ړNjD<=YԒt]*f$|äY@9I:.u9d|϶ [jSNx{h>PYԦRNx{h Vs5)޳RI:.퟽nj?YԨiY'E<= g3RI:.]j׭暧LyTy3kL٦yItKkxNo:*tP<#.&oRicM#TBY謒t] Ad(ugEd$BYVtMk:+%Tt]VtMl?zΊN}y謧EBy謦RN}2~RIt.qYܩE$Qu)CFp ~ퟻNfD~>9%$Qwb.zk)$ rRjjn2~ԒSUwg` Qi'E߽q N+%JIwg\bIwbϞbN)#J)$:}JHѵd~|U%]ؤ=}+YiN{:r8Rp$)ng#)$]fTRIwbZy/YԦd~y#RSIe~tߩsRN{4 zkJs5I'EРyGΟqgCRIwkyfr&̠e)tQi'E߽'`~M)N%)e߽Bc.۰?YIMD.`yЇjLԦI:.H39LJI:.;e֫4Ք&_ml-3J$NgFM/=tVvM4;>sRNzg$$CYi*u+$M3 O6luԚi l{z4䔓D~39'I'EMTjv.iy? +z$It4ҟYZ׭3GL𶷤:.4&kVt歯[i2oޓPK^OVtӥ[s:eo +zNX}%]59iRjLSUaN$:,%lM?5kI$:,%lM>i5dE_OfiRkjV4)N.B&F0͝r I)QC64S8K͝BM?Z$daDaR-$ '@T )'Ef<kI*5IN.+O:vIY(YvϞ ։-#:.}@3T贓=coZM)MT_šޓ8u3_]R;j6a#rJTYd>Hk5TY)'Eq>3z҉J'I'E=oJ&ukS[ҊQ[҆fs_(lf\35O[҇VM#>.pi}z- /"i4hf~)y,< U[2[/"J)eP]: T8X׊ ejK]n0ّT^)uޤʛ:%: 4I8t:Jz _aG<PtNl}MԘٳP ~LC'IGC{Ulz۳?RiCP MTit:Jz+t"zԚj:%(DIh()t.ku:039ԙE,I)'E$C7U'%Tt^lHjqY'Er^:u2]P:LSU)'Ec퇥 @Mg)$轞@'*QI'E@h3u QOV,u]%qs4kaߩ2EyY)'E~7x*dܓ`{S&Қ^yUIMT_,z7~ƨvz*dܒ^Ǡ)y2nSVSU{ qL$$6,^RcJt 7$5W 7))!$ n=VI:.b<7/1N<ꛒRN'I'EUQY*5SIHNSF:-$轠n5Rt^̠D~39L$ZʔRI{ q jfrd_³Y.nicV >S[3fh0[CMx[qμ>uS:SkUcfh@|U,橳>.SrǑ=wXiVUS(:5$_B'O׭$tկ[ӉzE.}MԘ<:L$5W)uY[LKΆ9OL֠虽I(v E>frJIrZt9EMn4lQaҲJIw\-vz4YʒUI'Ep<6~Tdu> 39NI:.y#RSU)'E𦷙θfkS[҇F45Lf5PfMo5p𦷚θfkVo5:f~+`}S3贓Ӣu39MT(lUrNjMiRIU YrTYi'D_U6u]%\,D[Ί2<)CgF*EKkIEQG:)$^ngCrJIuc]r zNtQ.kUY)'EB떺?z9'I'EB떺a窬䪒N,lળdu Y)iPUEu Y)@VrI:.\X}9L$u Y>UE$u X/ 9PҲN,o:2}Ug#FՒt].a2AUg%RZIwPgRF|dJu:}7nUYStt].dx*m%$u Yb aVr6N,̱3vUu Es̱а 9,RN,2@ۼVrY:I:.\b aVrYU$u Y+2B#*du Y`eg$rIU_y`B]Ԛt8v g\bR8r RfrJQw\LFVIw\ۂg#j$軮Y̱ਖ਼dt],,Ax*frY:I:.t՜I:.>2y fr%$軮XW!n%3$軮X' 4 j)YI'Er7Տ]UՒt],کJje=g` NTRK.RNNzϞESg$Nz϶39VIuI'Gn39%$5$|6RIuLG`?acVII:.@;d$|(M%Tt]TjE:>~6ÕY)%#@uZrJG]}t{cn͝>~LJo;lԒt]CSkI:I:.TrUIMU?b@;Id0SM%˾~Ȫ$qYUuS[It׭P~ @:@uYOȞ@|:Zʝ34OǛԙcg`Q'lGpUedUed$|äY@겲UI'E<=c.VVGt]>#.n+)i'E<= i [j$燶 nVVS9I'E<=VVTNx{gqeeCJ:.퐎l겲I:.]j׭撧LyTy3kH٤gX}%^. ?tk:f~(u}71Ŏ4Q AfOާRNt,β>d$BYVtMjqY*"l{dP68_pdqYNI:.'Sj$?a'Sg)$O ߩr9Eˆݳ|}Re;I'$.RXUUdI:.m;7tu2{>یV5%"zԚjv𲷙aIy\~*DK^2 4[gfn.tiM3jH,M?YNII:.y4u]%.m?V6It4TΟֽo52kk*u]%iykVt歯[dΙ7eo5:.ךXΟty3V𲷚:.5I%lM>+5$:,%lM?5k5R]aZYY%)eن~YcMTJن~Xܒ:a,=Ri6vIlTܒ83azM?Ye5R]liڒt]lyu~ dEVZIvO]ͭP}EvǵKCoa CॗAv߰2P3(`u8Ya׳#4&R۽IXtT4&Q#P R := ԙCGCt{cn,t:Jz?vIHt-BzԘgC0luԘ٣P MTi*t:Jz+t"zԚsXtRx&:%.VǑ=wjM4͝^>M3I^>yv5CP 𦷢\39]oCGX}%\,It f*ItY5´Vy934+Dz4Ι5l Y:׭PiLItkp dvM?Rd;Ձ<Ŝ`ZK/iTJjs(e~׭6tߩRiJ qǐ0՜y*䔓q 5d7~RNO >SkRgL/ 39NI:.y#RSU)'E𦷝:ᙯMo:(u3_št  ky3 Ҟ:`[fΙdO >Ro9:eo lykg3^*:aIs?],z}Ns;̇S))MUZrSՔ]ǘ)g$$cRi3Uǘ)II:/vPϵnII{϶,2SRI{ǠLGt^족 6ꙜE}fj$Cg~*3t]U*QI*!a9TYi'D_UItIs3𦷚FΌ&HфSH?uTsN):.f04ҙJ4NRNv/d7~I)%$,u Av/RctQ.kU9)'EB떺?z9'I'EB떺a窜䪒N,lsdu Y)iPSEu Y)@NrI:.\X}9L$u Y>SE$u X/ 9PҲN,o:2}T#FՒt].a2AT%RZIwPgRF|dJu:}7nU9Stt].dx*m%$u Yb aNr6N,̱3vSu Es̱а 9,RN,2@ۼNrY:I:.\b aNrYU$u Y+2B#*du Y`eg$rIU_u`B]ԚiPιh.qY%#(ڬҜfǷ4X Y #YRUEq[<dt3UI*gPv/d7~I9NI:.u ] ߬NSU)'EqPkf}T7)5!5*QI'EMVi +$޷Y#MTΟnp+x(EfGL?[&O[Lfup=n'Lfuu3_=z&r^NS9I'ErΟvZt],ТVRT4h.ʋ-$軮Y۪I:%$軮Y JIgہ$I:.X#Rj:.u ۼ39(Nm?LJ,dXdvਖ਼$軮Yo*fr4N@ThڲN叶=S9%RZIw\[IU˺ilTRJ],:i?U˺>cڨUI,Y #Y%T],@S3Ւt],}vਖ਼ګI:.t,Ax*frY$u <^ NN}*frYU$u@AS3t],P&brI:.a-> Nr8RNp?պ5#)$軮ZnڵY)M*))YmmAUQ),GE6<ꨤIer͏oYrSHҲNn6g44ZIw\̎Dzg)ΉI:.v+9)$u CwPg)e$iՔ5ddtf:(yꙜEt],yu~ g%4I'Era gIikU iVIw\}+:')N} +:Q)'Er>Q^MCtt]-4Ҕ$ry#RSTN"z eILt]O]䔓jnIIwb mUCUI'EI&u<T䔎*}M$*44IXQ<;y/URN~j'I'E?bNJ)Pyu3I,]q `Ie*NGW_5KQotN7޷4l|Wk"yk:fix7wf l=1`Q'lGpTJIwlzii'I'E<=P"?zZJ$燶lz۩qY'E<=M3I5Ra:SZIJUv=aRTPⲚ.6u 4fQSJ:.6yv5CQFϞ 4+5RQe>z4k5IE˶|f59VIvϞGS:-$gXcfJIu8͠@٩4P نk3II)Qe\M!7*,RN'۽} fʇ'I'E=o5Mq5O[U 𦷚 ~U&,j$'S3tt^ @fUI'EPϴUiVI{852E5WL)iS3JI{XaC7SrI:/g2;9*QI'EP ƣ*fvf𶷙K/3s𲷙GX}%\3O z[}439Ry `7s"rW«YGٵPׂ^E~ë@0:C-ॗ@U Y֪LٯRe:%: 4ITtNlyu&5CP R := 7RcFI@/_>2·I@/_'IHtBc.ݝ-CP MTsLtVDݩ4htRx&fI@/_KձO]ړMEI@/_B&gCsOS[CfVPItMs)cȞ4+Rixug~ jRNk:eo ]j׭鴽"Z>Ln`Y ov@~SRMIIu,ͦu]%CkRP]Lޤ;ҢΟEu39%$KASi:Ii~&7RilQa5dZ:fNNyg?S*IU$uǘRGt]40T:-$軮 eIMT_¶GLyCgY[Δ:eo lykggJxaIsou2jӚ`Y*e9%)!NTr0T$_,}Cx*M:$vj0U3rJI{6}uLܓe mXenJ$Cc@ӏ^g#:/vPyLSN3N5Rt^졳?tLܦrNjҥ/nQe]V󙳬>.gMo9f5C ~"tR׭撧LOVIC>.i9RiJ4fJIx.iRNB]Ԛi&v GP宂=T)'EB떺?znIIwP宁ynJ$軨]r>I nGt].g`!BULܧEu Y)@LܦRN,jRIwP`@zU3rt].c*PҲN,o:HO}U3r4mY'EB,>LܕIi'EB Ii~ nJu:}7nU3rT$u Y+f nFRIwP>y Tj:.\2@ۼL܍u Es̱а nK$u Es̱3vS7%u:| TeTt].dP] fdu Y`eg$rIU_y`B]Ԛi;賮Z z$䔎ojIi9I'E9u͏oRiUAvGL)n9$y.-g$UErΡ^ng4:-$軮Y*v/d7~RI:.늃[0iIL$uA@v g:JRIt6>Uԕ +$޷X&"[*25Hfsp=nqC'Pfu:ᙯ@z(rpTmUu:y 39,RNe/LK'I'Er·> 39,N叠B c:.(aOvfr9Eu0@ nGJIw\"ptYI9I'Er;vժ4gہǍMNSID+htjrJ-%u6=g5e4+$軮YmmVs7)NEtdw#39NtJIw\AYrRIw\7u*frRIvAY9NVIvGL褧Et]=S3RN"zOYYM9Iw\CYiM5t]-vwiIM3j:.a/fR-$軮YоN%$軮Yк} +i)nN>fLJJg(Z2;%5N+$軮X'@Ti'Eq[DݳʒRt],M>^ dwS*JfRIw\K<RRIw\U̱4JkVIw\ءG՚Yi'ErCbO!NS9Duj-iRS8jN"zOfŔt],p:mXU3rSVIw\,\aꡩQ%t^~ۻVj':J],:g5Jd8AYJTQ$u>iIQD$:|iL`5G\b4Q9%$軮1f 4TNIIw\b۹ D䪒Nu5PԎ+$軮1coU tZIw\bMzJSU)'Eq?zrNq `J))1gqE])tL*VSUw\b̾m䨲UEq<D.frIQu*LhJ>y1RNym*iY%$=}Lj`EL$5W|EmT%5d0SMNTRK.$|dN *Sl9SKI)UwJG]}t{cnƍ>~LJo;i9%$솦tt](䪒~wS4Ie?g` ZK."H8VgX}%^k5P?{^U3M(EPD)׭4t?{n>{ReU;>x{g2;RNx{cEUMI:I:.HSRUI'E<=c.U5#:.mPUMJtZIwmgBꩩMT|Aq:3t]?{SRt]?{~ +$燶B;Et] u^YSMYkیURJ'IMU߽y*(N{:jJ,θT7#S-<(<TҒ4mY'E߽<=TtIwbUZG(δu2* Ev [I:.ASJJiQI'E߽]i`M4 dwS*Ji,Ο39NtJIwf!y/UVjN@󬏝> 9)e$~~g)j:./fPqҚEt] vRJS˿{:VǨ]}`~RSQ%{:Xm!ڪƥ5 Iw`JGWfRIwa.U&_ml-3J$5Bzԙd5O=Vt\x39'I'EߺRIt[}LGt]4luԙjcoURN$_£5Ri3$O]ړN "rL_OcȞ&%,jgX}%^g5?"tӥ[[Oن~׭i35O:~4&a'$_U:.5?V4It4?uzj:dׅTKTׅ[^2oju]%ͯ5S?tkVgLeo5hu]%^jJMSgQMTJن}:VjIJtYtJن~jj$:,%lM>fJS˯ყճ 4I` 4f%)etY@z4l *JTP⫰͇A 4fjrIvXi3JJVIvO]i+5RYi'EfǑ=wlGu2nI:.6yPYl%:,>yv4pQM> ѩ%%]M>:v4ZJ,gYk3KHN|mP"?z*JtZIvϞǷJSU)'Eh6f73&3fR$CYIQet]>l7ͥ*$_ͨu𲷙GX}%\kzuہ'n vnSYzǘCػu (nha:b43? gf֨qE2:% P+;&6htBc.ݝ6t:JziM%I@/_nO]ړN^O"rM#P RlyvL(XY@z5CP 6"zԚf:%I#SDQػu&g[3:cQh6کH3G6 Òb@d5Vr ƣ͇$Āj2$G# 3G6 14: j9l7&f70fCa"ػvypTl97 p UiG6 Òb@d5Vjr9䘐 FUNl2㊪#Al gEkz*u]%S[c>/5W5އKɮf陥Z&GL?ktɯ `b0yׇֽn5NK\<3#i&lV,gꚒJK/qμ>f^,b))΋ࡖi^P~I@ a80U:I)'E8jnT9$_H@|׭gL/ /:]S~KAw3z*pJ:} 䔓.UZIKL_\6M::yal5Y9%$軮Y9'I'Ep<͟$Nyc^lL#:.}*frt]@Gu2RNMo:,u3_¶GLy3]UR׭3gL[M-zsXoUIt8tṙک4d=uʙNIJjzӕ2XeI'I'E>#uNUI'Ez39VI{4frt]tNg)e @tRIvCVsNTUEBsRTYi'D_UC>.gb'OU-ziLì>.i M$΢QGp䒒t^ {!TRNPb&8'EB떺 St].kAttt].kAzJ$軨]r>I IVIwP}@ mU:JtZIwP}yT)u8ڪtRIwP`@zU:JRIwP叠B t +$軨]r6mIQeu Y WttJIwP4([jIu>@⇛jIu8'?vڪtVIwP8'?x*$I:.\,ST%JIwP叠}+T#Su ϒ?S(u ϒ4'@N4mY'EB,>NU%u Xf|5$iO*$I:.\3vS7I'EB@wFRIwP>y T#i$軨]rΟ<]7nU:HګI:.\W<] t%$軨]r\,At ݻT%u:| T%RIwP"C,At,2;KVIwPvPrS9I'EqPkg CYnTN9*VIu+EhHn7R+:~gL0nL=np |J\>Lð'::台yRNv2cET%Tt],T#:.떻~S账cYj$軮Y}`TrN>겒t],ТVVT4h.J-$軮Y۩Ĥt],nNRIgہMe$u]H jqY)5du:Gm Qi'Erζg%JIw\,2;nTjtt],@39QI'Er̠y`u*fr4mY'Erު%%RZIw\[U˺ilTVJ],:i?U˺>cڨUI,Y #Y%T],@S3Ւt],}vਖ਼ګI:.t,Ax*frY$u <^ NN}*frYU$u@AS3t],P&brI:.a-> N8RNp?պ7#)$軮ZnڵZTRSUw\ڂ+)RYwPl:yQYM%˺޳4+$軮YmmVsI:.aYT9)'Er}g5e9dnT96<>ҝ&쎘?YEt]=S3RN"zOYrskrj)$軮Z!fUCfՒt],_n Ά5ZIw\}gCr%$軮Yк} +t9)nN>f%3I))h@T8cȞy#RS7Eulyv dwS*JfJIw\ 4{2y fҙ%$軮XW!n g RIw\O]iԜqe$u4V=tUNSVIw\,\aRJ-$`w\Ԥ9T4a?YI:.@ a:}EJIw\nNNMn\39 4I Q 4SZII:.Y.M?T֒tt]yuMi*ŝq TJGt]Ƿ贓ş퇈PԦRN~U9L$u,U*QIMUq>یL*(Ő>Ke9PҲeػmVg%E.Y $-1v3L$9RcT:G" CJIw"ͰMNII:._aG<(lU(䔦#m]q `ʊIe=c÷Qi'I'E=g"IU$|m*fr8P7qʙt]$|59*Tg`?acrII:.@;$$|(MNJ$01GQNͰM'$qU?cnR8ӣ@u&4(xv^-$|$|*e9*A $RYwǘ)+%˾~ȪhԎ+#ksJaIyi/t7޷4p饼Wk"ykt?{n>{Refv| dwUJII:.]UJIIwl:@ު%Tt]6=BTqY'E<= 2~79%$OP<#ꛜ]> <ΟiMJ$Ȭ ~79VIt/~2~79NI:.'SsJIt/~æOަ)]> ?t7~*QI-3]|~LD~>੥dYE߽XaꦴYI'E߽m`fnSVSUwgqQ:JjT%ZIwg\CU%$1U)#S-<(<UC4mY'E߽<=-$!]Qi'E߽ie9U)MUB8@S3Ôt] .ҢN{zJSHҲN{t*mINk)$<39NVIwfPA{2:(O]?Sf:,E~u PnMIi*ΡVmzR$zۥ#3I)$ZӔ&_ml-3J$5BzԘ٣MSoSj)'Enj=S3tt]U$@ػqY'ENVݱ_nI;ަ֒RN$_£5Ri_O'ID "rM#$VǑ=wjM4%,梧X}%^gQ_"tӥ[CgLkM?kQcPߋ?fiMC`R 0Oj-$_U$u]%.*jgX}%\+Vtֵy&-ΰK/5R?yk4&,hIt6-b+:~׭iSV𲷙gX}%]5i_ *M5huDiӥfhܒ蕳 4լR]aZVrJS˯ყճ 4Ig` 4f$E_eL0͝rR]l:Xi58K͝BM?YrTTҲN͏"zOY5**N͏"z eIPt]lΡVU9P٪JtYu~~Ǒ=wjM3J6|iAYJIIEl0ONJ-%]5qY'E>z϶(N贓=coY5)4q@˳RiUg f$EIs4H䨲I:.یna6qjNNzj:kY[GX}%\K/Xxε".ۨhf~@ vꆊxZ<Av.CJ'ॗAv߰2PLC\a2k^i1(t:Jz _aG>LP ~Lh(ZY1^èUlz۳?Rcj^gjH(.kh534+Dz92ku[CUiaIyxgGl4&MCMX͟sRYxuSŚbU45e9u2M?k*tߩRiC@ a80V$q 5d7~+$_H@|׭GL/ Ro9t׭3Gg5`}S3贓Ӣu39MT(lhrS9I'EOY)RIU YrI:$*ì>.gMo4:ᙯNZŎN)*u]%\<Ԛi$u" ڭJtZIwP}yZJIwP@zV%3t].fX?w>URI:.\_AtPҲN,o:Hѵdu Xf|b PV$KI:.\jHO}V$I:.\3vhrJu Et ݻZt].gOe.GpV$m5du Yb f 䍪u Es̱а I)'EB@b f NN,XXdwhrK*u ErXXdwhrKVIwPvPL`Ntu`u7$u">e9'IMUrǮ9%Tt],Zdu]ͿS)tZSUw\5Rt],M>^RIw\ݽVE$u Et(U +$軮Z 걩Qeu4uXܓRN@ު$I:.}NNI`:iMN'%&gPS3-$軮Y}TI:.@Gm NN6g#J)$軮Y<?LF$軮Xc3rU%u\|Q),Y}D䪋IeræyQ9*iY,Y6=UT˺b :`Ku*nUErΔ39MY'Er n gO2g%JIw\̱ਖ਼d$軮Y!g%RIw\_At39,qY'Er "i.LG(fBZRt],<8rNvSg%4gہǍTNSID+ht󧪢rJ-%u6=fҚFt],p64Ji,f]LSt],VsNSI:.@?LSI:.c+95ddtjtQi'Ep39N%$軮X' 4֔ӝ$u]5QI'Era 7z+)mY'Er>IMDt],_lyYIMEt],]>:+)nN>gCQw\ dwS*JjVIw\O]2y fLt],}SJg RIw\O]iZS8Nn_m*䨔Ւt],1I:.Y3r8ŏ=S9)i'Eq?w7%5Rt]Jg)$軮1g` 9*QIMUq>یL*(Ő>Ke9PҲeػmVg%E.Y $-1v3L$9ReDXꢲJIw"ͰTZII:._aG<(&QS))MU=dG@U3IMY,U˾zLJo;ꡩ'I'E=g"$Nz϶39VIuIL7qʙt]E$|Qi*TG`?acꨬt] XwUtt]BCQi*¤ƨu<TRJG]>jrJG]}t{cn;|v CRJIw TZIIwآSJjbLK%%|y*rYi,슦#⫯gX}%^ko( ~nh&"t:h׊dO >R-zѳfw}`ړX $@ 7$|Ǯ:I:.Hѹ*ٱ_nNx{gdx-ѹNI:.lH]BMJIwm>7)ަʔRIwlf&6&!t,U]> !@󬏪NNt,+:}ǵUi*"l{dP6UqY'EоM7I'E߽)^g)II'E߽lM)MYMU߽ۍ[fZIujY1jl{zNII:."zԚiv𲷚aIy]DTNo5:eo ]?fi^E<\0OԚj*v 4f%$*桳>.iuUo5:.Q?"[ѳMx[[X}%^f~"5mzf2of:.י^"-zf:eo +yPK'IhSUaN$EDifiY%)e+fi3KI)N.V4&jV4JS˯вIð&L3g\j)QC64ʊVSU%fΡaVTTҲN͏"zOYI:.6 CrJJ,gY|tfQi(=f%#:.}@qINI:.>Jj$ f rԚjvYl5$.}i+*,RN'۽} fNNzju𲷚ΰKKzǘCغ(*^E~ë@0:C+s/X`EU Y֪MS~ fqO^̎~5EN5\>M4:% q~NCt{c@;46t:Jz aG>M5:% _g53P ZEg`~U3P *=B44t:JziLCO'IC5&()tϰyRTHҫAv.h5t]TIVIv^?g\J$~/:J(~϶<8mJ~;TDRIv^?a眩ʉV\35S[It5enX}%^\<,4u]%iUUNK *ew\4ITSg`4ymZ)'Ey@nS3tt] 6}SRUIQ#JmeZʓQI'EyAv.h3j:.ʔIiQ#Jن~%(ҝ] v>jg%N}rQEt]|vU39(I:.3/X4ITS`22(.S3RN@nS3tt]>ꪒUIQ#JػuRIv^?cS3&mY'Exr*Q%e)y֞ng*QDe}Yng*P$eiv(Eg*&NenngX}%^\<,KҫΰK *eS/Xwu!}FJ;VelȠoLII:.u폠in%T4?vq[u5t]b֊ʓ6폰yNTKJUv^v45I)Ef 6U39(Ւt]n(폷pZEJIv^v9S3I'E2i!}FJ;*ȠoLII:.}MLIIv^?clU%D*/b֊ʓQI'ExLTdeuʛ5*Q%e)y֞ng*QDe}Yng*P$eiv(Eg*&N/D5enGX}%^\2x|P<.IΡÀfXf6 1Rf51qFaeY3p k Qea4$$ cPd5Xl7Ic[maj3 Fc`garL8 ܘf7X6FauTl8aal2 kab2Ic[m`Аj5!ʼn 1fLXl7jAÀfX4$Fq`r3; FUf5CnQeSr ƶ0ap2X4$A f4 ƶ0 j 1%2Qf7 Ƀ NH3p kÁh2X6 RAua̘eY ka3 7 Fcak dģ!Ň#2ag9c[maj3 7X ɉl9 5$l8a`l7 9 5r_jaIzUs4UngX}%]9fy`Ae>>v]*L[3:c[sa8$51l9l5U1l94 1ʪH3p Û`7c`gY ka3l8 FD:H3p Û ⪩ ka3lL2 Ck ÒbBagEl8ca͆al2dAua1!0ʴ41l9l5V C!Ň$Ą*$l8ca͉0h13dAua1!0ʳJH3p Û`7c`g`d2XrLHL2Qic[saj2$Ñf7 IՇ$Ą*dl8ca͇!Ȑr3;!ÒbBaVH3p Û P!n8dAua1!0ʳU5f56qŇ# n6I UNZKXItNkʝaIsSgen>.js]e23/XԙeїlȠoLII:.6)}$6uScn%%T4Sd(uV5t]m~ d}U*LڲNMa~P<#9R-$/xGvBYUiʔQ)'Ex;vβ>ӕ(nNM@BYXԕIIQ#J6>i*frQ5t]l}M֠E&]l}M vƤiEҢM=gہ'n QU$e>>vuPⲚSgۂ]UʔYd5SYEx9S3g(NK( ksp濊ksaIzMs^V aIzUs48ItW3OD>I:ٙ3l2&!101pH5j1"kAn 0γf5dMb`6X6 ÂBai kaȚl2d8 jUnqc>.3?VaIt/XwuIG[3:c[ "k f1R ƶDVr ƶD֒ ƶD%f1r_, Yz۽IJ2f^E}֪frJIv^>}'IQ#J۽jg*Ntt]{\|VTJUv^>NNh.ۭ4}#439)Et]{@vu*qi(Ңcn]NRSJ.۽rg%SUi'ExwufRUDt]VHItKEo4:VHItx[[%K *}z;vP>&Gfu ƶɆV ; aRf5fL2l86 RAuY3r3&X6 9cqĐpV ƶɆV ; 2AuU$ n 2;DӚG[3:c[Fd+"@h * ka̘e`dHpdk9c[Fd+"@h1i%,9aIt湙Ne@۩4C)5YznݙymZ)'Eznݝjg$$/@۱7YRTHҫݻ!}qfRj)$/@۱C !攩3j:.;vػuZIv^۷c@pTJ(n4ۭAYr SJ.;v<|39'C:.yS>/Iklg5U[kaIz$VG\39ztٙ(uW𲷝:.&x@|:fixY[ΆΰK\.gb'OU-zk:e:xΰKkIrgQ(#LJ՚䔓] ߬%$_!6\^YSN:-taΊ)'EB떺?zΊ:I:.\ =YY*u8'?x+:+#:.\RmΊtZIwP}yYYMTu Y>gEe3t].fX?w>U(u@AYYPҲN,o:y n謍u Es̱а Ίdt].dy n謖NN,XXdwgEdI:.\W(e.GpVtVKVIwPvPUrd_(m#M(EgO޷Ǝ[´VdtT^73pw4H Ύcn䔓dGݽL$)XVtVJ$軮Yǘ)8kye9NJj ޳ZMe$u]H k5VIw\Xdvਖ਼Et],o*frQdu B#LFI'Er}S3t],vPg#FՒt],}4%RZIw\[VJ],M>g4Ւ-%u}i%M+%u:}ǵjUT˺b :`Ku*nUErΔ39MY'Er n gO2g%JIw\̱ਖ਼d$軮Y!g%RIw\_At39,qY'Er "i.LG(fBYYU)'ErθPΟjf9I'Er;vլͥ)E%5Wu> Q^MCtt]-J%)IILu@Gu2duDݳʒ-$軮+cȞy#RS6RNiv eILI:.)u5gPtb ֔dui @}ZQIMet],}6(dҊg(c\|cRTt],yu~kJ,fjǮSVIw\,\a4*$Nwu4IΒWuv:Jd8AZ&II:.}iNNiu3`P4&t;:arII:.Y.M?Y䓤ŏs@;rJ$軮1g\CY9VIw\b޳M9NI:.Yx/YjSU)'Eq?z%3t]0Sfm)RJjYde9QD5Wu,J]?S)ʆ]/j9*,Qw\b1!iYf%T]"4ԡJ>y1L䒒t]Ȭl9Y9%$?}M4͝jz2]D} S4Ւ˾zyf$Nz϶39VIujME:>~w)'E?af$|I:.u&t|4I)'E?`Ոug$$|(f䪒NjM5 E:>~6Õ)UwRIH⫯44IG`z5I:I:.TrUIMU?b@;Id0SfYi,슳PԎ+#TKy@:@zj:dߊQ@:@y٨oMS[CL/Cc퇵&O 9$|ǮP䓤t (f*ٱ_nP+$燶}G]BfNI:.lH]BfMT|Aq:9)޳PE$|9*VIwlwgYrTYi'EP˭Z8tɿ mg)UK^Ιwu^W[TK ^fO:Z:f~d(u}74ՙ&!t,fI)'Eк}BYVfI:I:. ȬfIU$y>c"O޳4rGt] ̟fhEByJIt/~æO޳4rS9I'Eк}~nfR9Eˇoݳ|}Ri(O4)&{v՝I5t]vne9)5e5W~}?zEt]ǘ)QE~u5s%$1YNN{|:t]> 34mY'E߽<=%%RZI%߽C"uHt]֞nSR]#!Ku399I'E߽+4JiQI'E߽]i`fiiM#J:.Gu2I:.S3D~iJs5I'EРyGΟqf%9to:MY'E߽A:SS3N{!=tNfrJS˿{:VǨ]}`~TԦKIU~u I)'Enj=S3tt]RJ$-@~g#:.u ~PvvM5McoYt]ަg$$iL`I ?cȞ&K%(DI5}[Dݩ5(l /moD:.8Wމ:.旚jY[5NK暾*EgOk^5moE:.45b+:~V׭gL𲷢aIskD,EgO:Z+xY[JaItעҤPSUaNR]aI)N.[0OZ(`lM?Rj(&%lM?Z(nIJtYu)GFL烦B&f0͝rM)%*(qUfà~MIQCj ,44daDaQ)QUt]lyv dwS*J蔓3gu JRS˯MoD:0f Z}o'IðQFϞ 4+DI)(=fiӵjE˶|fMiVIvϞGYjSN|=hRI:.58u3_šކ:0<8͠@٩5 L نkD)Qe\M!Y)'Eq>3zRIu)jF5? kzL (tEoCFCIކ:V4 5)h U#&It95Ŗe8mnM$*۶y5C9qmj la3f^E|M&U ¶^E|j:xAvߴVf~Z">ͭP5<ٗf^E|M&U ~(.CT)«YGٵ&oŖe0 6y&I*gljYT}MAu3?njL¤6BfI*K¤6Bf$Mqmj 2}}Ma J4 xZ&V>0 4V>0Uk86Cg<,a3b"By&I*gQK!<8"Ch*D}Zx Yb"By&I*g? _@  <*D}Z<Y f۹M$s!YGٵM#^ ,q۱y&I*g?nCT3J -gf֨q4̽fy6۶y&I*gTݳ!O vAu3?kT8TȠouhfZq:'fZqEgiDsk2ks:ᙯ:aIu\<)Pf'4u3_UfΰKW3O`z fga3me* £Fn 33Py3}$0TG]pT0=7x* 0Xx:A+ Xݷa33?gP23me* ]n0ّQcMxz,(iLP R := ԘGCt{cn:% _gICP ZEg`~ӚC{Ulz۳?RicP MTj:%~Ǒ=wjM5ft:Jz)ui>x/U$)n켊 p퇈5&^Kwui>x/Ud)n}Mz/X>x/U)n/Dla&NIRϠi>x/Y&^Kw>0϶"n s/XnCg7:IRva luila&fz-iճ퇈2[`jMzY/mngX}%^j8x2a(S4L?{0MLII:.ّهjrJSI$)4u]%]E<}p^*vf/;f^uiS3RNyҀp39'I'Ey>x/h䪒Nx/kU)#:.هYtZIv^v>R<5R$Ky>P\|(lfgV^vΟ0YB )2m?gہ 7Yɗ)y>PL"zy>P%S[ItQu+elp!@~Lð55Yy4giS3RN}?vjLIIv^vϷn!nI:.هYNaTZSU$Iu G7b8aMRcIl9l Fc!̓AcYs`6$9nj!̓ql7VpH5d9ca:HsaȐ8URC #*΋Hs`p3 IhiY/(݋`ᇑ7ILfgQh6ګHr9n6!ʳVC͇$Āj2tsap7UU$9p2 `f :-%,PKҫΰK *x C7Av߰fT҇`4f^E}֪frJIvYbRNN͠DQػu59*d/y5IVTHҫ͏yNTJUvYG~ 7LJRI:.6>Co)}$0T +$,# dXwP>;g%(N͏.uU:ᙯSgX}%^j.kUaIuT\SkYCfh@|Ǝe<,gX}%]5̧?:"zOIë8^ZrJIu)mS6  ky4ta3jxVy+xVRVo4J ]h4X !mrJSUrZ7$$+ì>/:^i-]j ԚsHJ:} 䔓.f'I-3]ptZIwfi:RNݔ6y{gRS9I'EOYRTUEBfJ-$ΰKK?uTyCSyItMs44P%DxQ)%$bCw5RNB]Ԛi;裨]rAvԒRN-t  ~ZNN-t UZI:.\,X}IRI:.\_AtZdu YtxU*,u<@ZNI:.\@ mUjI3Tt].gbԑt].aF|dRF$軨]r3`eڂRJu φ4?VQ)'EBtnԒ$軨]r]7nUjHJI:.\2B#*$m5du Yb f IUi'EB@b aZY$u Y+e.x*$tt].gO2B#*$I:.\W(e.GpUjIc:.\NH.N{: 44v g\bg$ojQI9I'E9u͏oRiUAvGL)n9$y.-g$UErΡ^nft],`YRN>ꜤrN @;DQiRI:.j4iY'EJ+@:@y3M(EgO޷k2Vdt5Mo4:ᙯAz,r^+)gOzΆJ)$軮Y+EzΆCJ:.떂?z·%Et],iI)'ErΠfVi$RIw\4I5t],vGM )7%&gPS3-$軮Y}TI:.@Gm NN6g#J)$軮Y<?LF$軮Xce$KI:.떸 uXQ),Y}cUEaOrJVK.tMj*Yw\AvGL)n9%MJYҁۂg#i$軮Y@S3Vt],XTII:.@y 39,$u:40T䲪I:.> .g%+$軮XM>۩t],Z}*$qTu:B':~AukHI:.떁۶gD4gہǍV9)RYwPl:yX䦒Ier͏oYdu> Q^6I:.떀U3I))h@T8cȞy#RS7Eulyv dwS*JfJIw\ 4{rIu)6u3`L4&X Q 4UJII:.Y.M?URtt]yuU)*ŝq VRGt]ǷtZIw\bMzRN~F3t]0SgDJ))1gqE])tL*VSUw\b̾m䨲UEq<D.frIQu*LpJ>y1)$|+<TJIuz := ԘG`EL$5W|EmT%5d0SV9*)%|v $|< IU$|m*fr86v LII:. jqI'I'E?aN)%Tt]T4l}SRN~rNN~H[hvI:.*LqcGrR8 7S䔎*44I&v ()'E?d58EL%T](<JK.80UcYi,슧dqUMnpItR(H[$7P?ziLKMS[*34ǛԚi&v| dwf$ViRIIwl:@޳JUI'E<=c.f$qY'E<= <Οig:IU$y>c"O޳$qY'EоÒJI,]UJI϶Ӱ3wO7S)I)iNJ'IMU߽y*$I:.jQd~u*5:I:.R@;HҊI:.ΟqNRF$燵ITtIwbfN{:r8Rp$)ng#)$]NRSJI:.RO;9SHҲN{539N-$DsVSJtYwgP sZSQ%{:Xm!ڬ9MCtt]=mґfrt]v˭Vti5e5W~Bn6gng)Ui'EEg`~Ӛ`޳%$frNNt5FNB]fr8Pg g`~Ӛ`Xcs9$e#:I:.GjP_O'I "r73$VǑ=wjM5;KY[cgX}%^gX犫yIt4fp䒔`lM?Rj%3MTJن~I)%)e.a,=RiH *rJTP⫰͇A 4fQCj ,4LԨdaDa8I:.6:vXZJ,gYk3dl>یD~kJtZIvϞǷ')S[*ph6fIC&3f%$EIs44I:.یna6q։'*$_šމ:0JxS[%N ~(葳EoDp_'3&'C>.rkew\>ըhf~(.u3?@5n 4PO ?vq[7T&RyMh.AU'K퇈Q_>Ps–^-M@>ꩯ gf֨p )nM>i4hf~'aCT)v^e^Z">ͭPѿVew\>&U 2[0OPP:AϰyVkT8T߂^E~ë@0:CV)nfm,U):x+m={2:aCj2kN}Ԛi*t:Jz: 4ICt{c@;4(*}4(Z?w& ^О+;&gI@/_Pg g`~RgCY4tVDݩ4PtRx&I@/_KձO]ړQ$·I@/_B&:% }o'I3GCzމ陧zjtt𲷢X}%^\<]PΡsa8$5JAs`j3r ƣi j9nj j9n6 @6 ƣ1 f2cQ̀|n3 Ϊ3l513cQ͆ck㑕Vf56 RAuS_(?yktɿ:~P?{^LJ'O:ZfΙ[N 4[a2gakI)'EMnGX}%\ށ#i:~LVO9),uS!@ꙩMYMUti'I'EtoIU$ht}nϠy)CC1cbkQc`j3)c[  ƣ+FCf5dl3Xp79&$ AuT kaؚÁe`d7UU$l3Xp79%d8aʳ ƶ8FV CrL2Vt9%S[It4x[[ItQs4kGl4`(hZAg?T$Ag;uQdel<|39(jtt] 4PԔ4I z4IX8//"U39%$/ 6U39'I'ExinVJ*$iUxn7*ME$e>39RfՒt]*R-$/Kδu39R%$/6z>u39R$/N;B(39Q4t]x*fri$'$u3_5aIy\\@oY@&5CCQd5p8,7U)qkap7Xl7&l3& F`B2r F!n8`g`n1 kIqkap7X lCq0p39qkap7X l6FCb@eU$#!Cq`dH1lL2f1qkap7X3%hH35VAb2d8 2[1cSr F!n85c"k1cU#!Cqa5c"k1cS F!n8dk1cY n1 l2Cp8 n1 l2IC[ f1 n1 l2"AsY n1 l2IC[ ÁFU F!n85fH6&3 5 n1 l2C9% k5d#!Cq`dH1d9d3f#!Cq`dH13 pf1֐j7qŁ a0cYj7qŁ Ñ0f1` }p^!nƓ:ٙ՗:՟lx/ZIRymZ퇈NLbȠo@ia&T/X(.P>un϶"n ԙz-ia&U/X7g7nLbRHla&V/X!퇈9&^Kw>a&fz-<>x/YLb}a lBM'#:.هYtZIv^v>RP\|XfgV^vΟ0YB )2m?gہ 7Yɗ)y>PL"zy>P%S[8u]%\ѯ^vϷnʤvf/;fl5 *frJIv^vϷn: [:I:.B -UI'Ey0K539VIv^v>R<$KR9n"n +3G6AcT9pH5k9lդ6mU$9n6 @6 1f6l3:Il513HsaeYila : +%,աItW3O +uS:.4i4݃6zʨvJ,}Av.Ut\6>jg$$l}M`uVUIQ#J}2(.S3&Nf(m rΟo-S3&mY'Eϳd-] 4UNTKJUsإZyI:.}>XgS3)'EϳfwbPfrQ3Tt] [pțʪu32$AʩH6 fr 0eZHr2 RKY[lKҫXݷa&UcMTuAv.Ut]mqꪲNN͞@T䪒N͝?vq[u+$軬uEu2(.S3JIwY7UMg)*$iUf4TCtf}MLTQ$u>frIwY|vU39QETt]lM>+U JVSI4]u]%ms^)͚:.4͝aIy\׉sgfkY#>/3UnΰK\<3#i-CMX͟sRYxuSŚbUijsWջ^X3K5ΰK\׉sθfk8(mVI#=o4tvf~'VI3>.kQYkyh陥[,4o9:oթ58uq 5g` #RJIt8YԒt]"y^FΙ^yމ,v𲷢JaIt2`.gMo3iL<)m#"tR׭橣SyItMs446u"I #RQEu Y)5%JIwP叠}+YjFI'EB%i~ #R4N,3>HO}Vij:.\a5%RZIwPgRF|dHԕQ)'EBtn5%MIwP"n5#i)$軨]rΟ<] 5#i$軨]rΟ<]7nViVt].dy YjK$u Es̱3vf,$u Y а #RYU$u Y+2B#+4Ic:.\NH.N{: 4Xιh.5i$p}|xUp$_nl{zLڇ`MW\R10|䒒. #YIUu: {!%:-$軮Y*v/d7~T䦪RN>f3t]y$5ʔRIt6>UCJ:.QZ[EN7?zj镼+EfGL?[t:d%7\>M4;sX%$軮YoS):Jj=tUFNy+4HNߩ:-)Xw}jfrI:.ay/YrS9I'ErΟvJRIw\WBCJ:.떂?z%Et],ftJIw\ՙdI:.}fii&N.5II$軮Y,2;nT䢋I:.u@39(RN!awg#Sd ਖ਼ҊI:.e;S3j:.>FKI:.떸 u%TJK.ay%TZK.4͟I*iY,Y6=I*Yw\AvGL)n9%MJYҁۂg#i$軮Y@S3Vt],XTII:.@y 39,$u:40T䲪I:.> .g%+$軮XM>۩t],Z}+4HI:.u„NtV5g#)$軮ZnڵiQIMUrϷoj tQ),GE6Ǖj(fB(YNSP$u@}ⲙQw\ dwS*JjVIw\O]rIYRsiUrë~IiQ5Vt],@Vt+DJ$gG%:-$軮1ga&g9j$軮1gYiL$u,YE%5Wu,n2~2R@.CJjYbYZJ1g萴۬I3T.TsX%<ǘwYԒt]Ȭl9Yܒt]Nlyu&;|*e9%)笈(ji)%|y+9TRK.椓VsZJ$nAS3d_֩4'Gn39%$5nIIwqYܕRIu34p4l}YԒt] XwYԓ>nJ$fӤ΢?gag$*}MtJIH⫯44I5NE?c÷ԒRN~k9tt](䪒~wS4Ie?g` tIe?dU'#⫯eo:PKy_"t&R[ΊSk"yk󡣦fw}`ړND<=YԒt]*Ά$|äY@:I:.u:d|϶ [jSNx{h>PYԦRNx{h Vt5)޳RI:.퟽nj?YԨiY'E<= gCRI:.]j׭档M[kc"O޳LԎ+$?g?z3Rt] O޳LԦRN}2~f3t] Agi*QI-3]|vICg`I?{@pVtk(Kl=`}Uk)$ rRjjn2~SUwg` #RQE~u5FI:.ViIwbϞbVNFRIwgt+9j:.gEdKI:$HzWn9E~uqT5Wu+HRLGRIwd/ f4.^MIM#J:.Gu2I:.S3D~ijN@󬏝> 59to:MY'E߽A:SS3N{!=tNfN%)e߽Bc.۰?Y9MD.`yЇjQIMCtt]=mґfrt]v˭Vj&_ml-3J$7BzԚi;>I)'Enj=S3tt]贕RIt[}LGt]6luԚjL l{zJI)'E@frNNQ4 /cyvYC$4(v'Ig`I kzM#>/3t𲷤u]%/9ޓIt4O"[ғ:dׅ)C>/3Kғ?ykæMY[҉aIskg<,EgO:Z&l镼,5Kkf45(SUaN֒R]aR]aZ$E_OfiRjV4R] kzMS L׃B&;j6u%dWaiiJVSU%fΡag%EM+$ ' 4ՕYi'EfǑ=wlGu2nI:.6yPZQIP٪JtYu)5)4 Z}o'I3G`=fiV.a;ZNQi(=f&+$gYe#՜Ell{zjj$ f rԚ6vYl5ӒR$CYNTYdmO{08J+*$_šޔ8t`fsEoD:(qVNg\39މu3M kz& L_މu]%&x ٗRϠiOݷa4IT43?:-Bn =f[y*~)<޴b蠩xRa&MCxe*D}Z^+/X@fI*gQ 6P5B ]qz s«YGٵ2i8mM$VkT87? vi:J} P[“lQo gf֨p^Y4xi%P*D}Z~ lvi: P: [,M?T+qmj TȠouhfZq4D T8j+m={2:aCI2k.}ԘI@/_NM?Rc^i1^i폠iM*^ݳ|}Ri3P ZEg`~ӡP *=B4lt+>U&I@/_nO]ړLGC4Ht}[Dݩ48t:Jz0P4:% }o'I·I@/_&p陧zf:e:x53>/55(݋`ᇑ7IΣ̓ql7Vs`l9&$CQf#IeT!!n8Hr9dtZK C7Av߰fTSG`4f^E}֪frJIvYbY:I:.6DbZIU$e!}>>ⲢF]l}U%IWeDx@pT(c69b"CLJPҲN͏͠nII:.}@nS3tt\6>ϰynJ*$iUϳf^E}֪frRIs# dYme*frͫ$lv ~aJIiQ#J}O7S3Yi'Eϳgal}frQ:%$lӰPLJ&jN0 vypTζfuD`6U)2:Af IFC ֪I|-o-3mLm3MTuAv.Ut]mqnrNN͞@T䪒N͝?vq[u+$軬uEu2(.S3JIwY7StRTHҫ͘iۂ 9R)ef3wGuII:.6}Ec=@֪fr$軬ن} V8i('͚:ᙯzdCkXItkp dvM?RcjŞlSŜ`$^,bՔEi^S:oTg Dy Yǘ)-$@ a!SRNO >Sk83K´O >S[fq? +yItMs)cȞ4+Rixug~ gRNMo5p𦷚ƎfkVy+xVRVo9vs5)unә,;?S))MU]jNNsXKΆלZf&iQgOt\֠洓."mu&;uæjZrJIw\-vzZrNNyg?S*IU$uǘRGt]40T:-$軮 eIMT_šfu3_¶GLypD*kT+xVc^U[UK[u2jU3,z2]*e9MYMUy*frNN>!&mW` t^존 j,2VZII{϶,2VZJ$Cc@ӏ^g#:/vPyLSN3N5Rt^졳?tYiL$d=>fr/nUIQe]VVX}%]%NZLj:.f&΢QG5I)'EYt]|X\^QcN:-taꬴt].kAI:I:.\ =UI:.\Ry-#:.\RmEu Y)@YiMTu Y>VZS9I'EBeqU(u@AU +$軨]r6mN,Xy+et].d > ڪI3Tt].gbMVZJ,u@Wn-#Su ϒ?VZFRIwPgi~ VIwPg.VZJu φ4?VZJu:}7nUeI:.\W@ۼYiII'EBtXXdwVZFVIwP>y nHګI:.\W<] Idt].dy nId$軨]rΟ(e.GpUeI:.\W(e.GpUedu Y`eg$rIU_y`B]Ԛf;賮Z zEoj4@u͏oRiUAvGL)n9$y.-g$UErΡ^nfhԧEu:X.fJj$軮* l>ҜrN @;D4nTN +$)EhHo4tɿP+x(EfGL?[X^P  ky  kyфOšjLf58u3_g\>Lr`Ntu`u7$u">e9'IMUrǮ-%Tt],Udu]ͿS)tZSUw\5Rt],M>^ Jg)$軮Y޳MIRI:.@Q^MYPҲN堻޳MiQeu4uI:%$軮Y JI3Tt],p7zE$I:.X#j+%&gPS3-$軮Y}TI:.@Gm NN6g#J)$軮Y<?LF$軮XcrU%u\|ZJ],M>gqi*Yw\lN-%M+%u:}ǵ8UI,Y #Y%T],@S3Ւt],}vਖ਼ګI:.t,Ax*frY$u <^ NN}*frYU$u@AS3t],P&brI:.a-> YiU)'ErθPΟjf9I'Er;vլӤ],p6񶠩ť4JK.ⶁMO:zQi,Y5g)iY'ErϷojVK-$軮YWAfGp"=S3Du;s5I'Erਖ਼sYI'Elx}fҝ&쎘?YrSI:.뇞tY)'ErǑ=wXiSNtt]-vfӔQI'Era 7zJrfՒt],_n ٩MDt],_lyY7)RN} Тfl䦡I:.떀UԔ$ry#RSTN"z eILt]O]VSYeui 1'%Tt]!qY'Eql{z5)i'Eq?w7pܦRN~ԔRIw\b~LJo;4RN~k4tt](䪒~wS4Ie?g` ZK-%|VidqU𲷚KaIy4P?{^G7P?zsH9D)׭934ǛԚsI<$|Ǯ$|äY@9J$燶lz۬9VIwlls贓ϴ-sRNx{h VsrNx{gzs(x*VIwlwgYrI:.]j׭Ι7m*kæg]j׭GgC+JaIz4槊]?tkΙY d}DM:&v j]> 2~'$BY d}YrNNt,+:}ǵ'%Tt]VtMl?zΓdB'Yrt] O޳5Rt] 9L$BY)*QI-3]|?vI4D~>ZII5]إ>5t]vne9)5e5W~}?ziID)0SVZJ(θ%$1Sjtt]إ瘀wSt]> )ѵd~|$KI:$HzWn9E~uqT5Wu+HRLGRIwd/ )iQI'E߽]i`gD4+$ʒK-$LSt]٤H^v sRSI:.β>t+:))e$~~g)j:./fPqҚEt] v:R]*=B j$QwgPͶ=@UiJjnS3$ö]jNrՔ] eiU_O]N5O=gEd:I:.sRJ$-@~g#:.u ~PvvM:;޳JIvP"?zT}M3K%,t"zԚf;K(.isx?uzމ:dׅXKH߅[^F7eoD:.עF,EgO:ZL镼,蒇X}%]5~T:jV4ҴII%)e+fiZ$蕳 4բKI)N.V4&;DiDI)N.seLð&L3g\I)QC64eE+)3gPO3t]lyu~ *J3cȞy#RT7DayvJg`=fiVg )(=fiӵŤQe>z3Z$+$gYe#7)i'E>z޴JI:.5'3 f rԚL نk3$.}fJ,fCgi:J'I'E𦷤Sջ^:fix͝r4+zMcEoJ$u3MVgX}%\]z-<ICC3A 6y5B-UWG 6o=L@f~(>mm/ ]qz SQ,U)D60nʝ2k.}ԙEI@/_NM?RcI^i1ƍ^i폠iXt,~ퟻHt-Bzԙd·I@/_a*=B2ƎI@/_³5RiSP [yvӢC4Xt}[Dݩ46t:Jz0P4Ht.iGcȞ&:%6l陧zi,tt𦷡îM#>.z97mnK955fK湯Vu]%Ms4UnX}%]d3O Yku&t#u:dׅ1g<^QC'CGX}%^if 4ITV,grJK/qμ>Ii, Y.T5))΋ࡖi^4lR4J qǐ0՜y*䔓q 5d7~)'ER')y3K´O >S[,i#>.SrǑ=wXiVPxug~ j-$_B'O׭ͦtկ[P"Z>LlB睂P䔦.SjI:I:.NKmsf2Zf&6lJ:} 䔓.M$%rDIG`Xt ViRNyk՚g$$u6~TI:.0=y2+$軮i`tZIw\-ʒI:.l?k󡳦gY[Ά[¶Z׊y҇X}%\Ou2jӤ!TrJSUvC֜5e5Wq `:I:.Xw@TtLq `RNݔ6@[tt^졳< U'%Tt^족 iǯS3d(l}Mg)i'EqDfrI:/vPퟺ 9L$d=>gIʔRJX}ΔZI%Uo:$u]%\,D[#LOVHItMs443i#rJIx.sJII:.B,u Av/Ri'EB떺 Tt].kAtt].kAzNJ$軨]r>I 9VIwP}@ mUItZIwP}yU')u8ڪRIwP`@zUIʔRIwP叠B +$軨]r6m9Qeu Y WtJIwP4([jNIu>@⇛jNIu8'?vڪVIwP8'?x*䢋I:.\,SU'%JIwP叠}+U'#Su ϒ?T(u ϒ4'@Rr4mY'EB,>RrU%u Xf|5$iO*䪉I:.\3vT7I'EB@wNFRIwP>y U'#i$軨]rΟ<]7nUIګI:.\W<] ઓ%$軨]r\,At ݻU'%u:| U'%RIwP"C,At,2;NKVIwPvPrI:.늃[<fJ)$ifCJ:.h$tɿH+x(EfGL?[P^Jg\35O[8u3_θ}ԙE>nII:.D}rN]TRIw\0ST+$軮ZmNSҚ7wfg)fi59L$u:}%J)$軮Y+EzRT4h.eEt],NI:.u7zI)&jNnYI&N.5JII$軮Y,2;nT䢋I:.u@39(RN!awg#Sd ਖ਼ҊI:.e;S3j:.>PIi'Er!n%%u0ORJ],:i?SJISJerΟiM)%URK.y.-g$IUu:P>pTm5du (]*fr6N<^ I)'Er2g%gCƟ@ UI'Er!}Tdu0ػu39N} OCT*g\(DO5nHԎhjRTRSUw\ڂQ),GE64jhYi%%3]-ʒt],yv dwS*Jf贓"z eILکI:.ay/g2;%3g)$軮X֞v ҚRIw\U̱5))iY'ErCbP!Vj))N叴 CYrI:.>[5)5I'ErǑ=wXiVPqe$u4V=tURrSVIw\,\aQ%t^~ۻVf':J],:g3TUi'Erq 5gO4II:.}ѹQD$u3a+0OԘG`5G\b4Pܒt]P]~tt]yuPܕRIw\bθdu,}jrt]}p^JIw\bަ)Ŝy*q)RJjYde9QD5Wu,J]?S)ʆ]/j9*,Qw\b1!iYf%T]ʓ*J>y1)'E<6Õ4rII:._aG<4v TrJSUwYP6LSVK.80TҒYwX`M+$$UU)*LGt]5Rehv LII:. jh䓤⦎IU$_z4l}SF䔓j7$$1DmhRIuaReS:t|m*䔎*}MZI)Uui폠iXQ<;y/SJ)'E?d54rIIwآSJjbLK%%|y*iI,]EUSdqUMnX}%^k[( ~nLP[lD)׭X陥"~x{g2;$|Ǯ$$燶 BGUVI:.u8!u uUiNI:.lH]BUZSU)'E<=\tpҙI:.퟽ҥt]?{~*VIwlwgUVZIu*e֭zcLyTu3? VnV7enGX}%^.n~~׭͜:f~(u}72;5D.q?z9$BY d}Sg$$BYVtMjlRIwY6=(dl+$?g?z9)i'Eоdl䦪RN}2~6rS9I'Eк}~nVJTZg(qlTG`I?{@pUU$YE߽XanI϶Ӱ3wO7S)I)SrQ:JjU'%ZIwg\CUIEt]$Kg1t]> 7#FՒt]ڪrJK{Evnr9E~uqT5Wu+HRLGRIwd/ 7)E$~)u6d~y#RSIe~tߩsRN{4 z3Tt] d|UjJsYI'E߽ߩtN{2 ٔtg)E~Bz蝁EΡU_mƥ5ZJUB}I:.H39LJI:.;e֪LjjmϲLS4NT'ILTce$:I:.䪒NB]fr8Pg g`~;ޫ+$e#:I:.GjӚ`I ?cȞ&;K(.isJxX}%\R+:~ZX^TIt"5mzjtɿ +ylK^jb+:~׭檇Leo5MaItךxiRiH)[0OJSRJSˢV4VTܒ蕳 4՚$E_OfiL5Q+fiRJS˯вIG`MTfιUR]l:Xi3JJVSU%fΡa43cȞ4Vj**N͏"z eIPt]lΡV79P٪JtYu Z}o'IE>z4 -$˶|iNfIE˶|fVr8=gq޳HԧEll{zT5Rt]3h9vjM3j5Vq0fRJTYd>Hk9Y)'Eq>3zrIuO[ڧ\6+yXf'G\M5n׭Ι^Z\35O[e 𦷚Ǝ ~U&ʝ:Y ߬RII:/fOަg$$轊e$Nءi f8q je9NJjgyNSQIMUh.Өjg)҆ n3t^ dwYjTN4FU6vk+mo3aIy^k𲷙ɝaIu\/9k5aIy(u3_5K\׉u:ᙯCgX}%^jkšEfs_5K.k5aIy:.8 ksJp濊ksFK\׊ksFΰK\׊ksGK\׉uR:ᙯYaIy\׊kuS:.Ys^'PfkuMaIy:.+DzSL,x}k:t歯[&T!@zgM(?tk2?fi^6fZ0OԘٳ)imY%$)ͬu]%ͮz i8v g%%qμ>^O SijjM?Sf$֒IU_5:.S[ItMnX}%^t\׊ku:.S[HKEx9C>/45X}%^ik5NK\׊ksaIz&VI#>/D5iPKU[%K.k4u3*撧X}%^j.kši:ᙯi,u]%ExS[#\35S[iaIsUo9K)4θfk:.Us^*5NK\׊y#>/45tPK%x:.Us^*EK\׊yIt5iKExjaIys^*暧X}%^\׊yIt5j$u]%ExS[fkS[dfkS[efk@|34,ì>/43O@ 4Iq#MX͟$^,x}SiIi, Y.fMYNt] az%3ZPᣨ@ a80Vk-$@ a!SRNO >Sk83K´O >S[hq? +zItMs)šއ:0<`MI;[|@2\֫I$$+5KmzLߚ)u.&oRjL&t()'E]j kI:IiS[iQd?uh5(6UӒRNykբӒtt]`}S3贓Ӣu39MT(lfҙI:.z}TJ)%T^,>hI:$US *kUItIs3𦷡F45 *u3_šކPҾ"tR׭jgLOVPItMs45 &u"fҥt].c+5 +$軨]r6meEt].g2^Yi'Du YOB5f$軨]r϶6xڬZIu8'?vڬZJMY'EB@lZJ(u25IEt].c@k-#Su ϒ?f4N,3>HO}Vk-#FՒt].a2AYIi'EB Ii~ eI:.\3vfT$u Y+f em%$u Yb aHj:.\2@ۼHګI:.\W<] ZK$u Es̱3vfY:I:.\b aIeTt].dP] ZKVIwPvPM3;sX%$軮YoS):Jj=tUIU$u80Vk-#:.떻~S账cYj$軮Y}`fpԦrN>Dԕ(dDՕ +$軮Z D֕ZIw\HZ(RN@ޭ5I'ErϷwRI`:iMhRj:.u ۼ39(Nm?LJ,dXdvਖ਼$軮Yo*fr4N@ThڲN叶=fq9*N>Bfqi*RYw\ 4͟-%TZK.4͟-%M+%u:}ǵŤIer10|7I*gJn dLFZIw\b S3%$軮YXTtt],xS3ʩ$軮X/ 8b4ng#ZIw\i`ZGJIw\"ptZ(nGRIw\ݵkD)E%5Wu> Ii'Er>Ǖr%$軮Yк} +ֆJjhZ-ILJJg(Z2;%5N+$軮X'@Ti'Eq[DݳʒRt],M>^ dwS*JfRIw\K<(t],n,Aze%5+$軮XHlP#ee5ZIw\ءkEQ)'Erڸ u3$軮X' 4 և')YI'Er7Տ]fҢSVIw\,\a3ʉ(}>r9IRsiUrë~8I:.@ a:}R%$軮YO7Z%9QD$(qS\a4(vTu,M?Yt]P]~99'I'Eqn瘀wYRIw\bθ8+$軮1coY5)i'Eq?w735Rt]&rNq `E%5Wu,n2~2R@.CJjYbYZJ1g萴۬I3T.T(uEc@;t]Ȭl9Z$t]Nlyu&Ç`EL$5W|EmT%5d0SfqiQI,xv^I)'I'E=g"RJ$nAS3d_֩5T7qʙt]։'$$8NJ$Ԛ; VNII:.@;>NJ$fHSl9Z$jIH⫾~4hJG]_aG>MDv (JII:.!NIIwآSJjbLK%%|y+3Ie*#r8*VIc>/5x{g2;䔓Vt (i9U$|͏Pu#:.mPZNrt]@sJIwm>sRIwlZNrt]?{~CJ:.퐎lITYi'EP˭Z&-@|U-zޔ8t+ZH(su)C>/CFK-zޔ3 !@󬏠虽ID4Q AfO޴䔓]> !@󬏫JNIIt.qEgO䪒NΟi@'ZRr8_pdJNSN}<֔RN}2~')]> ?t7~%J)%r߻gԚg`I?{@pV-$.RXVg'$RIwgiՔ]dI% ҊJsYI'E߽ߩtN{2 ٔtg)E~Bz蝁҆:,E~u PniCr-%T]*mP>hR$zۥ#3I)$Zi5e5W~Bn6gng)Ui'EEg`~ԡMSoZQY%$frNNt5ԒI:. owPNBc.ݝRǷ(t]ަg$$iP`I ?cȞ& "rY#$VǑ=wjME%-qS>/3V8lK^g𲷡ŎKqo"[Mx[[X}%^fM#~"5mz42o4:.M#^"-z4:eo +tPKi'IHSUaNM%$EDiSIY%)e+fiKI)N.V4&NijV4M#JS˯MnT:0M):a,=Rj8vIl땙I)QC64eE+)3gPOٹQSJ:.6yvɥ3QFϞ 4+C䔔YvϞ 4Qi(=fi%#:.}@E tZIvϞǷiRSU)'ENs:ᙯMnt`m.Ig`MUf3Z9$EIs44rTYdmO{08*$_š9t`En:ᙦ5s6u3_sX뉯enaIu\<z->θM?PNM>VKE#&^ z<lRHO0TRHO0hoS/Yn/Dj*)}$'CT4W«YGٵ'O Yz-ܥa CC3K/Xgk/Xԙ3GC^K!2fnM()}$%CT)ୗR_@ nZ)}$5&L(RHjLð$u(u3_“m֪N!'⒗"BGhVkT8Q?bRHOi.ۨhf~Z">ͭPC^ Yz<l}Ma CC3A 6y5CC~Z">ͭPC~ Yz>v>04 qmj 𱗬RϠi!hf~2y ٗAv<g[/"y5CC~Z">ͭP~2}Ƞoa CC3l  qmjxX)n켊 CC3𵗬Rym*YymN!+^KweP]jUk86CgୗR@2(. ¶^Kw>G4B' qmj S/XCC3S/X 4CC3qmj S^Kw>iVkT8YO2[`u «YGٵ,z w"u / eM>VKOy۳ 4Y/ gf֨p}P*D}Zļ,ew2εP+eP]i P_ 4ك z- aCC3𵗬4zT}M`uBf~Z">ͭP[/"E\>VkT88bȠo@iYGٵM$2Av`xïT43?kT8T[/Y@͏s!hf~nCT47qmjIO}}a CC3'۹ Qk86Cz-w<gqmjIo b}43?nT&gIPʡ -gf֨q9^Kw>߂YGٵNtR)nۼ/wv/wP}"q P߅Gۻ(P_kT8R)nۼ돐P)>>BPX)nۼbigx.۪+c/X<ggCT4WE#'D+exu ^ݺN:%2vԚt_˜nT&gTݲNU OkT8R)n;vBvꆆgR@U (D}Z跀/Y]>>hf~Dz϶AT&g`P_kT8ix-e">e.vlxAw\T43?kT8tK/XYGٵM5Q,UvM'fGL?[jLKn&Q3P S0OԙCGCt{c@;1^i폠iPt,~ퟻ*(ZY1C0luԙi^gjӝI@/_nO]ړN^O"rMCP RlyvQ3P вIiSP 6"zԚf:%ICSkz(u]%Ex9e-ػu&C11pH5j1 f1G6 jAsaNAs`l4 mU$G6c@eSR ƣf6Uf5j2$c`gSr ƣ #* j9l8$DQػu&[3:cQh6کH3G6 Òb@d5Vr ƣ͇$Āj2$G# 3G6 14: j9l7&f70fCV6u]%iU, Yz̼ IpY/"U39%$/3h.ۭ I:I:.E]Z+%Tt]<܎+*$iUy`uҤRTHҫ6>Co>ਖ਼JQI'EyDx*frRt]G~|wLJQeel}߲-n NI:.x*frQ3Tt]u_UiaIu\<+Eg)T陥Z&GL?ktɯ `b0yׇֽnéDK\<3#i)3MX͟kI), Y:YxL]:.XizgM&Q<TՒRNqǐ0ՐNII:.Ro:L镼+i[Δ;:OUIt8jfCTs6v]rSRL))0SLIIurۺ7әðUǘ)$(mgځ TՒtt^졳< TՒI:/vP4שNݔ6>`}S3贓Ӣu39MT(lSVS9I'EOYܩE$۬洨N.yS>.gb'OU-zi:e:xIaIt3OʓM#gQ(#LJ՚I)'EYt]|X\^J`u Z.MY%$軨]r@TՒtt].kAz%Tt].g`gSVGt].g`!BUMYNI:.\SwO6ꚲI:.\X}rN,j*QI'EB> .*VIwPmGUMYQeu Y Wj:%$軨]r}-TՒf$軨]r϶6xڪj5t].g`gUMY)5du YRy%ZIwP`}Y)'EB>SVFI'EB%i~ (u ϒ4'@MY6u ό]j Ii'EB Ii~ Q)'EBtnjStt].dx*6N,̱а u:|,At ݻTՑVt].dy TՒ%$軨]r\,At ݻTՒIwP>P] jeTt].dP] jc:.\NH.N{: 4Xιh.4$p}|xUFp$_{6=I5b :`Ku%%T]AvGL)n9%T.u bCw4JtZIw\U^nfMTuA}4rN @;DJ)$iiʆt] Z[&"[)2Vdt5@z(rN)$蔓gP3wqY&jNnSI5t],vGM )JJMY'ErΡawg%ZIw\ਖ਼Et], ۼ39$u m?LFRIw\(y@~ VIw\ǷITt]-qi)*RYw\ 4͟Ieræy44],RUU$g쎘>RfrJQw\LFVIw\ۂg#j$軮Y̱ਖ਼dt],,Ax*frY:I:.t2y f%3JIw\>Bf3$軮X' 4 j,fjǮ*%5duBn)*$NwuEeIΒWuvEDZIw\y Y 9*(RNDu4tt]|iL1fiI%$軮1f 4Tŏs@;I:.YE$qY'Eql{zEu,lx{g2;$|Ǯ$$燶 BGUTI:.uꪒ8!u uUINI:.lH]BURSU)'E<=\tpI:.퟽ꪒt]?{~*VIwlwgUTZIu*e֭zcGLyTu:f~]֭zeNK ]S~~׭͚:f~(u}71g`F 'Sf]> !@󬏪lԓ]> <ΟiMI:.+:}ǶElMdB'Sf:-$?c̟MJIt/~æOަJg)$O ߩeJ)%rvITI'cn k(Kl=`}U)$RIwgiՔ]drQ:JjTՒ-$!IEt]$Kg1RFRIwgt*i96ϞSRU%]ؤ=}+UMt]֞nSR]#!Ku399I'E߽*i9M*)$K<%4+$ʒK-$LSt]٤H^v SrRIt(uASkJsYI'E߽ߩtN{2 ٔtg)E~Bz蝁9)d:,Ulzv5ZJUB}I:.H39LJI:.;e֪LjjmϲLS4NT'I;>Y)%$frNNt5TܕRIt[}LGt]4luԙicoU$e#:I:.Gjӝ:~Ǒ=wjM:(vPx&j%-t/3KU<,EgOjա&,gX}%\V"-zjtVVgX}%]5^TjuDiӥf䔧EDifrJSˢV4VjR] >iM5MjV4)N.B&N0͝r'$E* tOf8K͝BM?YNTTҲN͏"zOY9**N͏"z eIPt]lΡVTܨl%:,>yv4(gY}$YvϞ 4ѩ(YvϞ fN|mP"?z)tZIvϞǷJIu8͠@٩4ͤvYl5d.}sNTYdmO{085NJ'I'E=o3iq5-mC>/4\<,v^E}i4hf~ ymNV<*D}ZRȠouhfZp~(`u6Ya׳#Y#MxzM*^M?Ri(*}M4^i폠iNt:% _gӢgC'IP *=B46t:JziMUI@/_nO]ړMdI@/_'9RiHt}[Dݩ4:% } (T:% }o'I9^zQcfy)sv.݃D&R[3:l3QƩHs`j3r7 Il1ڪHs`l4 mU93c*Ylqf6uNj2$c`gUT1qʳ6 RAuZVKdL>B݃D&Q3A Ę: UJAn 0γl8*CfH5_EK *xPIt4x[[ItQs4kGl4`(lZAg?ZRYx uhAd,5:jSVJ,aJO֒UI*Y R+)iM)%љ2݃6z,v Nh.۪RNͮ>BTNIIwYaꙜRIwY0nS3du@nS3贓f^E}֪frI:.6>ꢒJUwY 4pATʔ7IN.6a/CJfVK΋.f*աItNkuS:.\<,PK΋.f*4u]%is4ā3 Cf^E~ʪv %DU4t^Ϸojtt^2duSIIU$uJGt\tZSI:.}M`u5INj)lcީIt^ٳ͏zǠ)$(t^ٳg||?SF +)em!m퟽M+%YIN.^4ݝj 7% NJ$ґp^4ݝjJIw>PTTJ(JGM{nvuJK*RNݻ:4rK*nJ$ґp^;vU4%$L$ ك͆cM%)d<@r JSQUt]'}Mm+R蔓!=d(uURSP٪Ji'EϷp8i)L-$OٳRNv/d7~VJIunu.M3KtQ.kViNII:.\ tiNIIwP宁y)U$u Y)@⇛jJrMe$u Y)I )Et].fX?w`JrQdu X"uSIwPgZ|dJr4N,3>HO}ViNF$軨]r3`eڂJrU%u Xf|5$iO+4%TJIwP>x+4%MIwP"nҜu:|,At,2;Jr6N,̱3vfmUu Y+e.GpViNK$u Es̱3vftt].gO2B#+4%RIwP"C,At,2;JrXN,Ӱ239E<Ӱ^Ρu.M5T;賮Z zJGQwہǍY@u͏oRiH Y #YRUEq[<dt3UI*gPv/d7~TԧEu:X.jJIw\Tه`}YrI:.늃[<Srt] fPҲNVtRLPΟo3FΙ[´VdtXXpw4ҡrITt]-q4%%u0O%IeræyKISJerΟifUU$g쎘>RfrJQw\LFVIw\ۂg#j$軮Y̱ਖ਼dt],,Ax*frY:I:.tǕ5JIw\tW9)nN>frQw\ dwS*JjVIw\O]y1䔓Egai)'E4ǘwRipU(䔦#m]q `ZTRK.攓VsRJ$nAS3d_֩4'Gn39%$5朓ⳚrUI'EΤәNѱg9)'E?`Ոu$$1Dm9%Tt]3RiSl9YԒW|ij)Uu=}4CQG`g4i:I:.TrUIMU?b@;Id0SfYi,슳VG] +yc>/5:x׭3LJ(Ho:$vs9D)׭I34ǛԚtI<'$|Ǯ$|äY@:NJ$燶lz۬9VIwllΓ贓ϴ-tRNx{h VtrNx{gzΓ(x'*VIwlwgYrI:.]j׭Ι7m*kL3kQ#LyC>/CFK-ziyG]LޤM3M#TBYӜt] Ad(uf$BYVtMk4%Tt]VtMl?z9N}yӜEByӜRN}2~sRIt.qYIRIi~M:&v $ 7g5YE߽XaJI϶Ӱ3wO7S)I)tJJ'IMU߽y+4%ZIwg\CYY)'E߽q#R5:I:.R@;iE$~yOhڲN{>x{YҒU%]ؤ=}+YIN{:r8Rp$)ng#)$]g9iQI'E߽]i`fRFt] eIM%t]~g)ΉI:.$/;:))$BY:}jJsYI'E߽ߩtN{2 ٔtg)E~Bz蝁3RJS˿{:VǨ]}`~LܦKIU~u :vIi(YvϞ ֓JGt]n2ftZIvϞǷ'IMT_]R5Vq0h%*,Ki5%EJIvdw޴%CS[҆ ~(ENJ_(lg5Q[҇fiMoD:ᙯzމ뉯zމɯ*Q4,։II:/fOަg$$轊:IU$B'>:HNǘ):-)ue9ME%5WNuRNJRI{cڙ=g\e ~4ۭTDz e댶TP:Aϰy5m砳 6UP犞@Ym砪<+y,=fi*m_ E~Sa2(.3? gf֨pmOVe7@M$^@Y} Pl fi5B 4Mo, V`uxY֪Q560n:d׊3nɨt:Jz)uޤ$t:Jz*ui-CP R := ԙcgCt{cn:% g^О+;&t:Jz[?vǨ]};&:% ϴICO'IiSP INTjt:Jz ]>"zԚf^>M5:% }o'Iq#P =o4:e:xV:dׅ1g<^SU:.Ms4 iMCg`1g?Z)$1g<ԖŚbVjsM#>/5W59aIsKt:..f `@톚~]Rd;ִY֊I),Y:5%Y NSVJ,aJO֒UI*Y RSҚSKf}Mԙ5CK(<M%y0O44IIM$QwǷfDIi'EUnX}%]U3Ou]%S[It5zIpMnK\׊u:.4xD)׭4t ~2o5K3? U&4SUEfiܒ+5iCrJS˺Pa )N.돢0ST5$uXw}jfrJIw\}bUEd+@V-$5WuXUCRJIw\}D]t]EfGM; qǐ0T9$qʓ?cn'$:,?g\}M%)iN.I&u+"r+$uQYʚt]2&4ulgfrJIw\fθ*NIIu-:.8qs44lg5S[XKEx4pKiMnG\39]nΰKxT V͝aIu\<+Eg)͜:fiz&:D80SMRNqǐ0Րt]"y^L/ .SrǑ=wXiV6l <:3j)'EkJLYKZLҧХ֏iM%<:L$5W)u$$_u4u]%Ck%Xe9$$CgdynIU$(lzqqY'E@o0>tZIwfi:RNݔ6y{gJg)$!5JRJX}RI:$*X}%]%NZ6ttUo4aIt3OʓM3Q(#LJ՚f] ߬ZII:.B,u Av/Ri'EB떺 MRN-t  ~6rIIwP宁y9%Tt].g`gMdu Y)iPM贓u87th^Jj$軨]r |=alrN,jJRIwP叠B du YtxSg%Et].g2^I:%$軨]r}-Sg$I:.\ (ylYI'EBq O6~Sg$Ւt].d>I 9%ZIwP`}9%JIwP叠}+Sg$jtt].aV>ੳ4N,3>HO}T6u ό]j 9%RZIwPgRF|dIUt].gOf 9%MIwP"nੳ6N,̱а 9#i$軨]rΟ<]7nTUi'EB@b a6rK$u Es̱3vMIwP>P] ੳYU$u Y+2B#*l8u4 ?{yQi*4]r zMD:,떂^MI%#(ڬ9#)$.}ٱM5;jy.-g$Qw\V10|RJY0] ߬ԜEu:X.jNSU)'EqPkf}TVS9I'EqPkg CYE$Cc5YjT4(EgO޷i2Vdtʝ2kEz,r:%*QI'Er] +tiY'Er]YIQeu4utJIw\՝f$軮YniI5t],vGM )ӤNB#LJ(g[}S3%$軮Yx*fr5:I:.@~ (fP<:396coU%RZIw\[U˺ilVVJ],:i?U˺>cڬUI,Y #Y%T],@S3Ւt],}vਖ਼ګI:.t,Ax*frY$u <^ NN}*frYU$u@AS3t],P&brI:.a-> 6rGJIw\"ptYhjE4gہǍVVSID+ht󧪲J-%u6=fM#J:.}|xUJi,f]LSt],Vf)$u CwPg)e$i%:MY'E0~4jSI:.뇞tY)'ErǑ=wXiӝ$u]5j)$軮Z!fUEe4ͫ$軮YоIi'Er>Ǖj(fB(YjSP$u@}U3I))h@T8cȞy#RS7Eulyv dwS*JfJIw\ 4{BfrTt],yu~k3f3)$軮Yuڱ뢩SVIw\,\aDZI{nYZT*Uw\mJTMUu qǐ0՝> iʊ$gY9NI:.Yx/UJj$軮1gYrNq `JRSUw\b϶'S)ʊ%)1dRNT4ř}.UQey. L]5I*T΢QȬyuQY%$YrRNi1;|*e9%)笈(ji)%|y*YwX`VZIIwYȪrrUI'E=gr +$j; rg$|8I:.IP4l}URN~ꢲNN~H[hvI:.*LqCGr)$qU?cnR8ӣ@u&X(xv^-$|RNN~2RSUwؠfY),UIe?dU8+#ksKXQ@:@zLP[6t'cYjLqc(燶y#*%$燶=tUPԓt (T5%Tt]6=BCR8!u uPԧE|6}.nJIwm>jS9I'E<=T5*QI'E<=ꡩPҲNx{d#?zjTYi'EP˭Z&-@|U-zsTWwZy_HItK$RK^K3?: ԚsHH}d4RNt,β>ZIIt.qEgOIi*"l{dP6i-#:.O޳IiNI:.'YRN}2~KJg)$O ߬9*QI-3]|4~ퟻ8v $ 7NRMe~)b퇬EI:.m;7tu2{>یNSUwg` 9%ZIwg\CU%JIwg\b'#S-<iQI'E߽y ѵd~|-$!]$rI:.O7S)JjWl_AtQYM*)$K<7)iY'E߽@TYi'E߽?wfr蔓"B^I)Nf$: 9Nk)$<39NVIwfPA{2:(O]?YΒJS˿{:VǨ]}`~-%T]*mP>g3r$zۥ#3I)$Z洦i5e5W~Bn6gng)Ui'EEg`~ӝ5O=g4䔓:I:.i%%Tt]b?S3d_ͺ[?vǨ]};&;޳%$(LIIu*>U&%,t"zԚf;K(fpܒ`lM?Ri8v [0OgR]L>M5;j6uʬ83azM?YIQCj ,4ƥEM+$ ' 4ʊ3cȞy#RT7Da:vXܔZJ,gYk5HN|mP"?z4:-$gXcg')4q@˳Rj%C&3fZIJ,i fQet]>l7rtt] kz$ IS&6u]%(xVg ~!y]3^+a2۳g¦i<3? 16~L]:xUk86CKx,)ny,=gOݷahf~'B돶T<:퇖a(u,yu5? q80TN댠>M)i@ݞlLg۹  gf~Z">ͭPJx 2:mݞ@Yme*^Ynu ¤/ e~hH_l 4Pow@͏1=c@;i^wD<0pT43?a-QD~Bf~(#48t:Jz+BzԚt(^luԚtPt+>U&GCO'IP INTf͝^OcȞ&ʝ^yl^6BYu*MCg[3:c[ma8$5JAÀfXn6+ %+ g ka3 7 Fca`f8X8$Aeab2$l8aal2n9#10f ram`n5aSf51ăQqsU$l8aBAn &6 す0uab2c[m`Аj5!Ńql 1VAÀfXc`gah FcaM3p k Aq`Аj5DҫH3p kQ2$ Ɩ&ؔf FCÁp3&6FU9 ka3 Aq`p3 IՇ#2af16l5V2ɆUl8aal2m`d7&%fL2tf51p2fL2iV8u]%Ӛg^h.ۂɤu3f56AcY3p Û QeZH3p Û @j3 1l9 f qf6u ƶ1ÁdH9S1l9p8* ƶ1 6p8,9&$&VtZAÀf6n6+FAl1$V CJ3p Û Qe`d2XrLHL2AÀf6ؐ3p3;FAl1$V 41l9 f qf6v C!Ň$Ą*%f56 "Al 9cqĐpXrLHL2VAÀf6p2#13l2,9&$&Ui1l905 2FAl1$V 5SYIc[sap7Xr2 a :䘐eTmUtu]%ӚenKs3M3>.js]43/Xԙ5їlȠoLII:.6)}$6uScnVJ*$iUxP<#ܩ5t]m~ d}Z&mY'Ex0d(uhnTKI:.6q(aݐyGաR%$/nݐyGաR$/ d(uyiQ44ScXg%YI'Ex4ݝj RjiQEx4ݠn 9QD4ScY@[g%TUI'ExϷOݝjJqYMTQv^)h.۪iʔYd5SYEx9S3g(N3gX}%^g5g4m?IXfgPn1 l2 ƕJAb2d8  ɬ3 ɆdQ5Qd5p8,5FCZAb2d8 DcPrL2 5NAb2d8 D ؐ5UIqkap7X l3  f2jjAb2d8 $&&$ l ƣ!Uj7qņ#"b@̖ j2܃Qd5p8,9% AȚ j2iqkap7Xr2 AȚ j2Qd5p8,9p j2iH5FC[ Ðr2+95FC[ ÒP1pH5k:H5FC[ ȐcbA3i5FC[ ÒP0r3fQd5p8,9% l p H5FC[ Áf#+ICZYqkap7X l8F3 5qkap7X l p6k5#!Cq`dH1dL3g$#!Cq`dH1fL2kDX'l6@󬏬0&2l3QÒbA0nX6FauT7 FcakQqʳl5VArMb@f5CQqʴl5V #13f9& nL3 ƣ0:r1ăQqsU$ Fpd80f7 Ƀ MH4$Fq`r3; FU2 p4*d  PdH*BAcK J3d!Ńan8V #*VLKҫu(u]%Ӛg"}7b8aMRe:ٙp2f6 1g!saj3 IC @j3 !̓ql7Vd9 f qf6u 6 "Al $8l2㊪!͉Amap7XrLHL2贇!͆al2dAua1!0ʴ4!͆al2l2,9&$&T!sb@1l 9cqĐpXrLHL2Ң 6$ n3 d8䘐eZ$ 6 "Al 9cqĐpXrLHL2VCÁdH9aqa1!0ʫL$8lL2 Ck Ñf7 IՇ$Ą*TRC!n8dAua1!0ʩګHp27b@f2rLHL2)Ed9n6 IĀd1dAua1!0ʳIEVKQC>.Q? +u aIsSgenX}%\溉3}$6 y(l IblȠoLII:.R͊_@ jg$$K6>*W)fP<#ꨔ5t\Av$6BYUDIVIrli*frQ5t\@vuI(ՔҢcn]UJSJ.R͏=gہ'n QU$)fϷOݝjVSU5\>]EJSU5]|Yy>x/kReltj϶"n )2[/"g792[/"l0϶"n t/X<>x/Y&^KweP]h|4MzI2[0Og73Rew\>ճ퇈_GX}%^j8x2aS4L?{0MLII:.ّهji)%)$]u]%\}p^Ɠ;TI/:4)'Ey<@p8 CJlu:Sk83K´O >S[^VXItMs)cȞ4+Rixug~ kRNZ'O׭:2e.kgg:} ]h4B睂P䔦.Y9'I'E]o9:.5tZIwfi:RNݔ6y{g%)쇧ڬJTUEBjTYi'D_U:..f~"tR׭LOVQS>.i9RiH%DxQY%$bCw5I)'EEu.M5 tQ.kUdu]HVJIIwP宁yꬔRIwP}͟Y)VIwP}@ mUd:-$軨]r>M<WJj$軨]r |=aRI:.\,X}E$u X/ iY'EBi6mUdEt].g2^%$蔓u iPVJIu>@⇛j%$RIwP}͟mUdՒt].d>I Qi'EBeq jRQdu X"uY)$u Xf|O*R4N,3>HO}UdhڲN,3>1vX}*RU%u Xf|5$iO*RUDu Yw%%MIwP"nHJI:.\2B#*R6N,̱3vVJFZIwP"XXdwVJK$u Es̱3vVJK'I'EBtC,At,2;%%RIwP"C,At,2;%%+$軨]r;(n9#ZJ;\^53N:堻5$p}|xUp$_{6=IhUAvGL)n9$y.-g$UErΡ^nfjt],`YRN>VS9I'EqPkg CYRTN+*VIuR?zt8tɿQCVP̎~8&( :Re9,}ܒt],%5Wu*RIw\0SVJGt]-wO6L)iMUrǛS3JIw\ 4zJS9I'ErΟvs(d4ӕ +$軮Z 4J-$軮Y۬7$蔓gP3w4I3Tt],p7zI5t],vGM )NJMY'ErΡawg%ZIw\ਖ਼Et], ۼ39$u m?LFRIw\(y@~ VIw\ǷITt]-qq9*RYw\ 4͟䪋Ieræy84],rUU$g쎘>RfrJQw\LFVIw\ۂg#j$軮Y̱ਖ਼dt],,Ax*frY:I:.tU9Nf$軮Y39Nk)$M5)j:.tQi'Ep39N%$軮X' 4JiΒNRj)$軮Z!fTⲚfՒt],_n %5ZIw\}fmIMEt],]>3jjhY9)IILu@Gu2duDݳʒ-$軮+cȞy#RS6RNiv eILI:.)ukQI'ErΡV2֜dui @}YI:.>2y fLt],}Yp$uDaZe3)$軮Yuڱ뢪JMY'ErP=q[J(}>rX9T4a?YI:.@ a:}J$g1+%Tt]!HN>8Eu,lR-zi:fix 7wf l=4X $@ #rJIwlz4:I:.HiI:.u4Nx{gdx-i贓ϴ-iJIwm>#rI:.퟽4ʔRIwl 2~֒RNt,β>洓]> <Οig5NΟi@'YiVIt/~2~֔贓_p2~֔JIt/~æO޳ҙI:. Cw9(.\7~ퟻM#`I?{@pVi'$.RXUedI:.m;7tu2{>یfQ:JjU-$!IEt]Ĥjtt]إ瘀wUt]> VF$燵KITtIwbg4rI:.O7S)JjWl_At8t]إ֞v s7)iY'E߽@TYi'E߽?wfr蔓"B^RRIt(uAYrRIwkyfr&̠e)tQi'E߽'`~%:,E~u PngE%5ZJUB}Ά5 Iw`JGWfRIwa.YiLjjmϲLS4Nt'IJjl{zΉ)'Enj=S3tt]攕RIt[}LGt]6luԚtP l{zΆD~39'I'EMTf%,t"zԚj;K(yvJg`=fiVg )(=fiӵŤQe>z3Z$+$gYe#RSN|=h%5Rt]3h9vjMIvYl5ÒJTYd>Hk3Jʋ,fCgi:J'I'E𲷥:.\<ٗR_@ J()}$%CT)I 6ES[¢"Bo=UMzOn/Xn v&U K«Cb"CT̽bRHO0i%P*)}$'CT)PRHYm砪xަg}z-ܥP>>&U AK!(D4s%/D PE/DjUk86CiiDuT^) b*Li#P Kn&X(iLP R := ԘI@/_K44I(t:JzvIC'I3C{Ulz۳?RigCY4PtVDݩ4PtRx&I@/_KձO]ړMd·I@/_B&NI@/_tx/55e)׭p<,HK΋.fVK΋.fVK΋.fVu]%E3OVu]%is4Un>/3KjaIzQs4LIt3O +t:.4ienGX}%^tYs4UnΰKt\/EDΰKiEK.f#alȠoԙCG`TJεZRNmmV$$ V$NhrGt\iJtZSI:.}M`uNrJSI:/lǍT*L%46͞lx=MSNIҊJi'Em6}nMI)CJtYxf[~`gTIDRS˼ 7gZ% NJ$ґp^4ݝj9%M*1}֠f䩣Q%N>U,I:.^;vPU5*$K)7nεZ7D0}Ji5I'Eym~PJiYI'En6CKMY'En6+CK(ǭ"~YdD* :|tuNJIwlӰ]J]β>Jt8rIsEtuYb?ZIEeo@gRMEM+$ݺV%5Yi'EBz4ݮ"hrSPt]'β>j5IM$|wghrS4KI:.l6hrS4I:.l4ynII:. gfrNN~IU$iSr85S3贓ojJJ!ATMn䔓!ng$$䪒N5ng#:.u59NI:.nSU)'Et-3t\t~J)$tTCJ:.p6frI:.X\TG`Nj6R`jfrJIv^bytt^ 5ng%Tt\o6zg#:.͞:-$/O5Rt]3t\t4jTNةPҲNLTYi'ED퟽LI)'E}ZI3Tt\/zYI'E}w>SUSVTIE}|xU39QETt]X.S38t*L`5Ey >JTIDeoUJ(.}ꙜHNy֪frRtZIv^b*jrRj$)TK=nã31 sat!ַ6S=nn\T*͚:.&xV >S[X陥Z&GL?k$tɯ `b0yׇֽnάuu]%iOԙd5`b6~%$1g<9-%4تԔՔE*M5Dy Yǘ)֒RNqǐ0ՐnII:.NII:/ؽEd"Pb&;裨]rAvu]HM$$軨]r@x*mi*nN,3vM#i)$軨]rΟ<] ੵm5du Yb f ZFZIwP"XXdwM%JIwP"Xw֒IwP>P] ੵI:.\W(e.GpTXN,Ӱ239E<Ӱ^Ρu.M5;賮Z zJI)9En6f9I'E9u͏oRiP Y #YRUEq[<dt3UI*gPv/d7~PEu:X.jJIw\Tه`}U g)$軮* lHk3S(l}3Iʆt]޷:d߂Vty3VP̎~93MbP@uޤ;sX%$軮YoS):Jj=tU6RIw\0SM#:.떻~S账cYj$軮Y}`VZS9I'ErΟv(d4ҕ +$軮Z 4*,fnMI'Du:Y5I'ErϷwZI`:iMfRRj:.u ۼ39(Nm?LJ,dXdvਖ਼$軮Yo*fr4N@ThڲN叶=VVJkS%%u0OQi,Xt6~'%M+%u:}ǵ99*Yw\AvGL)n9%MJYҁۂg#i$軮Y@S3Vt],XTII:.@y 39,$u:40T䲪I:.> .g%+$軮XM>۩t],Z}*miU)'ErθPΟjfp$u@VTRSUw\ڂ')RYwPl:y99M%˺޳4jSHҲNn6fiYM%t],+#sRN址 T9dnT96<>V&쎘?YEt]=S3RN"zOYjSNtt]-vjQI'Era 7z6fBpVjIi'Er>Ǖj(fB(YNSP$u@}ڲQw\ dwS*JjVIw\O]y1RNym*pԒt]Nlyu&9CMWXSRzȏfYwYǘ)'*)%|v rNNzϞESU$|m*fr8X7qʙt]'I'E?aNI:.I; UCrJIw5bT7$$1DmpԕRIuaRc?gaʜ7$qU?cnR8ӣ@u&8(xv^RN~jpԓEL%T](<JK.80TYwNdqUUo4:.\*EyCM޷ITSk"ykICfw}`ړM#G`Q'lGpVi)$|ǮII'I'E<=P"?z%$Nx{fǨ]}%$qY'E<= <Οig3RUI'EEgOȠmjGt] ̟g3Rt] O޳MTB:d9RIt.qYYRIiw>4TI'cn $YE߽XaꬤYI'E߽m`fnSVSUwgqNJ'IMU߽y*mi(N{:Y)'E߽qNN{|겒4N{gE%5 Iw`JGWfRIwa.YԦi5e5W~Bn6gng)Ui'EEg`~әðMSoY)%$frNNt5F䪒NB]fr8Pg g`~ӤǷI%$(LIIu*>U&%,t"zԚjvPx&}[Dݩ4L /eo3aIy\TNo3:eo ]?fi^a4&v 4frJIuU[X}%\'g aIsKYZ׭蒇L𶷢FK/D?ykJL𲷢IaIsk*xXΟtz$+xY[)aItעIxiRj$SUaNSR]aI)N.[0OZ$jIJtYu0ta56v [0O։+$:,} (Tg;j6uʬjIJUv=a%*(qYMTa:~8daDa8rTUeaDݳʒ%$ BhP٪JtYu Z}o'IqcQFϞ 4+3I)(=fiӵRQi(=fdl>یD~贓=coY9)S[%fk4q@˳RjM#&3f+$EIs44I:.یna6q։NNޓLf'3G\M kzMS>/4f )n ehi%PRXx3ymv }UO tuS3ם3?, V`uxY֪RjzPtT4&8(*}M4t:Jz aG>M4:% _gӚC'ICC{Ulz۳?Ri3P MTjtVDݩ4ͨt:Jz)NF\wTIΒNn uL54۽ߪIJQI'EϷ{Av.Td>}n I:.}AU)%RTQs4ݠn &TQs0yׇQI*I:.X,lui>x/U$)n켊 p퇈5&^Kwui>x/Ud)n}Mz/X>x/U)n/Dla&NIRϠi>x/Y&^Kw>0϶"n s/XnCg7:IRva luila&fz-iճ퇈2[`jMzY/mnX}%^j8x2a(p)I&^vΟ|g$el5Qi%)$]:..llP&^v;p!@~92/7gہ 7ZIO]/7gہ 7T俊ksIaIuP[/;gہ 7RcJ٩٦Ĥ^,b'))΋[,4o4:oTgDy Yǘ)RNqǐ0Ր$䔓:fixVkyX𲷙NKkN~0uDaZLᣰ(:)$_šg&u3_´N[g[²Zy#ϡK@u&&v`e9%)KVtJIIuW[Δ:.IZf&;ҢΟEu39%$KAYҒNZg(xMԚk*v (Mf%$軮YjIIw\,geI*Xכ?S*HNyf@ Eu.gb'OU-zf2UXܩE$u X/ nT4u4Ώ}Qeu Y Wt].d > ڪ䙪I:.\ (y&N,ljVIwP8'?x*(N,crQdu X"uX܍NN,3>J'@X܍(u ϒ4'@X܍VIwPg.V7%RZIwPgRF|d%$軨]rΟ@ۼXܕ7I'EB@wt].gOe.GpUcr6N,̱3vV7#j$軨]r\,At,2;%$軨]r\,At ݻUd$軨]rΟ(e.GpUcrYU$u Y+2B#*,qY'EBi@~tuUEi/gPb&:,떂^5I%#(ڬÔt]}ٱM5T;jy.-g$Qw\V10|RJY0] ߬贓gPؽMTuA}՚Ig)$軮* lHk5g*QI'EMVj*VIuR?zitɿ53V0o4:d%n&8r4֕(d5 +$軮Z 5)*,fnQI'Du:Y5I'ErϷwZI`:iMfi))5du:Gm Qi'Erζg%JIw\,2;nTjtt],@39QI'Er̠y`u*fr4mY'Erާ ITt]-q4%%u0O$IeræyIISJerΟifRUU$g쎘>RfrJQw\LFVIw\ۂg#j$軮Y̱ਖ਼dt],,Ax*frY:I:.tfQw\ dwS*JjVIw\O]یL*(Ő>Ke9PҲeػmVg%E.Y $-1v3L$U&JDX4RNym+4I)'E4ǘwRi3MWXSRzȏfYwYǘ)I)QI,xv^JNNzϞEYRIwY܂g#:.Ri'Gn39%$55$$85%Tt] M4t|4RN~4tt]BC՚FNjM4E:>~6ÕF䔎*}Mi-$qUt{cnICQG`f$#RNN~2RSUwؠfY),YZK."9#⫯eo9u]%SH ~o9~)E4tSk"ykL/Cc퇵&D<=YI%$燶=tUԒtt]!e#椕RIwl YIVIwlljJtZIwmgB9).:}UԔRIwlYIRI:.퟽nj?YIPҲNx{d#?zjJ-$ u^f7m*kM3g]j׭暇f~+ENK ^s7O:ZhyG]LޤӡM#TBYjII:. :'I'Eк}y>cΆNΟi@'YԎ+$?g?zΆ:-$?c̟gCRI:.tt5)]> ?t7~9EˁlTsTI'cn iI)&{v8YI'E߽m`fnSVSUwgq朔N{80UcrQE~u58jJ,θNIwbϞbN'#J)$:}Iѵd~|*N.R۬nG(δu2* Ev [I:.AYt]إ֞v tRSHҲN{iI)'Enj=S3tt]nJ$-@~g#:.u ~PvvM4v=f$D~39'I'EMTj /cyv6_ANTk(v'Iq3$HKI/"tӥ[)2 4[*SsM?Rj$4TRNeoD:.旚IxY[#GX}%\I/"[j2kޓ4u]%izMO YoI~VgX}%\<,EgO:Z&+xY[s:.II5N 4t'9%)e+fiZM9%)e+fiIR] >iMI;DiI$:,} (T*vIl883azM?Z$e5R]li$EM+$ ' 4G%EVZIvO]z϶(fjrt]}DJj$\358͠@٩5(Ug ։+$EIs4U9Qet]>l7&rT9:I:.5)3 Q/ kzRFg?5n׭DΙ^(EJQ +z&It8i̽b}a JR}a PO iغ(*nUE|)}p^ہ 7SJxUk86C/Xn]P>>&U ]T*AD~3?nCStwꚞٗRϷsICC3w(DPϷs!~Z">ͭPҾ ,)n۹@4IT43?nCURez-w}q&U ۹B' we#isܡMOnCUV9 9Tez-w|Jwb~hϷs!(.ZY֪,/XnCfm,U(^)uޤLtT4&Y3P R := ԙeI@/_K44ILt,a,=RiLt.iGcȞ&GCzޓ3Oe@۲@Tζfu ƶɆV ; aRf5fL2l86 RAuY3r3&X6 9cqĐpV ƶɆV ; 2AuU$ /Zn݊dv IΡÑ0Ȑ3ᵆqʩH3r3&Xc@6AÑ0Ȑ3ᵇ mZI;/ZnIn̼ T䔓nεS3tt]vJUv^۷d/n> ʓQI'Ezn݊dv h3j:.;vػuR-$/@۱Gi*frJIv^۷cm֠iJ7IM*(/@۰T+$)PKee 6}Rdl#!CqaҩH5FC[ a5ca0̐j3Ƴj7qŀp7;qkZH5FC[ Ȑc`jICƩ5FC[ Ȑcab2* n1 l2"Acba4$ C1MH5FC[ Ąā-BAd1 F!n8dLH4$FCj7qŇ$3X4$FC n1 l2FA3X4$FCj7qŇ# nX4$FC)qkap7XrFCg9qkap7XrJf6 1gIqkap7X lH8c9qkap7XrJfF`B2Ԑj7qŇ$2A5nqkap7Xp2ea(kY n1 l2"A!7c!Ƴ7 n1 l2"An1fQd5p8, 6 cQd5p8, 6ɆC1hMS>/CJf۷`P>n &lfgQ̘e`p3l Fc!̘e`p3l8곐fL2l8r2 a :$9 v& dIhr۰2a$5&McG#2a f4 k f1RɆVD7 6U#2a f4 k Ah9$9 1nXr NKn۰pțɜ:ٙsa8$5JCQƳmZHsaRCanj!́3Vjs`13tQ p3:6FUfҲ_UaIt湙Dv&Rg`Rt2(.S3RN͠v֪frNN͏yRTHҫ͐ݸ&N͊dv SZTdAv.S9*Q%Dz439R%$ AU(nTQuela&཮>BILfgV^njx/YɗRym,a&i&^KweP]j϶"n 92[/"E\a퇈RLbȠo@y>x/SRew\a퇈VLb<ݟlx/Y/X6lSURI%MnX}%]E5헝퇈&P Ly8LII:.JjT$ela&འtS3I:.a&཮>BTNGt]S3贓|yUJJI.elp!@~qL[3:tjϷnIo>PLtKB ֒elyu B 9/CX}%]E5VB ԘG`6jji >PҦg$elp!@~պn(ݮ>BTZJ$/;f)fg#:.هGPEI$5C>/3KMni3>/5ӟksFK&:.]94Itx4pKtMn\39ΰKɮf:fixVN5l Y:׭͛:m_V:.Ms4 iLl& YڲJK/qμ>rZK/iSkJjs(e~׭$tߩRiJ qǐ0՜y*mI%$y Y ߩĤGX}%\@un Lҧ`60SM$(mgځ SjI:I:/vP@[$Nݔ6= 8fr8e iT:-$34LSU)'E<=ASjJg)$!3JJRJX}ѩQe]|X\^L'EB떺 M$u Z@:@mI'I'EB떺amI*u8'?x*mIVIwP}@ mTڒt].g`m+ڒI:.\X}RS9I'EBeqSjJRIwP叠B %CJ:.\MjԕZIwP@ EzRI)'EB@mRIu>@⇛jԒk)$軨]r>IݶmI)5du YRyԒ-$軨]r̰~>MM%JIwP叠}+SjH$軨]r3>2}SjHҊI:.\#M>2}SjHѵdu Xf|b PTڒU%u Xf|5$iO*mI*RN, ݻSjIStt].dx*mIII'EBtXXdwM#i$軨]rΟ<]7nTڒ6N,2B#*mI,RN,2@ۼ6NN,XXdwM%RIwP"C,At,2;Ԓt].fwO7Y-%T]\>&5]qK<dt3JJ+g쎘>RfrJ%T],.j+)i'ErΡV {!j$軮* l>ĥ3t]y$5JRIt6>UCJ:.VdtΙ5Az-3'::台yRNv2cESjIU$u80Tڒ8kye9NJjBV7%TJK.ayXܕQi,Xt6~˺>cڬnJ],][ISt.t}vਖ਼j:.@P>pTmUu:y 39,RNe/LK'I'Er·> 39,N叠B c:.(aOvfr9Eu0@ RGJIw\"ptYhjtNSJJj}|xPUcrJ%%u[@ç=Ui(],JiVIw\ڬ')NEtdw#39NtJIw\AY7)$u CwPg)e$i&쎘?YEt]=S3RN"zOYIM9Iw\CYI:.떻Y8du0ۂUYMDt],_lyYI:.a.B5 Iw\ڬͧ)IILu@Gu2duDݳʒ-$軮+cȞy#RS6RNiv eILI:.)u)E$u:[<^6jSXҲN叴 B>͛Yi'ErCbO!͜Q)'Erڸ ukJg RIw\O]i֤qe$u4V=tU6Ւt],IU$_&8Sl9SI)UwRJG]}t{cn&v ($EL%T](<JK.80UcrYi,슧dqUMnpIt'sLKѥ撙rg>4LI'cn 7$.RXUdI:.m;7tu2{>یfRQ:JjSjIEt]jIEt]H$Kg1%#J)$:}8VIwgk4%RZI%߽C"uJHt]֞nSR]#!Ku399I'E߽*q)M*)$K<9M#J:.Gu2I:.S3D~iJJs5I'EРyGΟqg3RRIwkyfr&̠e)tQi'E߽'`~JS˿{:VǨ]}`~Қ-%T]*mP>gIjnS3$ö]j%3I)q>u39LҫI:.О+;&;>)'Enj=S3tt]RJ$-@~g#:.6u]%qu-zk,t~4o5xa4$v 4f%$*rgX}%\Uo3:.XߊYZ׭Ι5moDu]%iz%? Yo37eoD:.יÞ"-zg 2,u]%^g iRj$SUaNŤEDihRJSˢV4VRIJtYu0ta5PUaNIJtYu0P4&vIlZrJTP⫰͇A 4fQCj ,4ĥEM+$ ' 4eEVZIvO]:v9I(YvϞ gdl>یD~kJtZIvϞǷ+)4q@˳Rj$l نk3)Qe\M!%*,RN'۽} fJʇ'I'E𦷢G ~(4fs_'CkY[fKk2[ݳ!4IT43?@<N)<޴b蠪f*۶o=T=hlT)}p^CO(Lf̽bl|P>ƓI*gR@U nB'*:xSljhP;v4ަgcW`S)n;v&U ˜gCSIUk86CTez-n@4IT43? `va M+ॗAv߰2P60o5:dׅ:.4ielaRj(v ,cεS3RN(.u4ݝjg%Tt\7Z'#ʉUsεS3&mY'EtY֪frZIq眩ʔQ)'EMoCgX}%^5N >RoECֽoChiaIyD3Ol@RP^I: u2t\ީ$%rx/ZIRymZ퇈NLbȠo@ia&T/X(.P>un϶"n ԙz-ia&U/X7g7nLbRHla&V/X!퇈9&^Kw>a&fz-<>x/YLb}a lBS+$/;f)fg)i'Ey0H򩚔JJI.kt:.8y6~Ǡ)LG`6yʙDt]&u]% [*xPItIs4=IB'*L`X[I)'E]ꡩ'I,,u]% f*(u]%Ms4=niS3p: [sG^ջ^VgLzZO['4u_UaIs3O6evǍJRT')B'*1f^픻}g}p|i4hf~(lv xRzV<)=M9TK퇈M_e">e.vlxAw\M$^E~ë@0:CJxS,U[K/:}=MxUfgॗ> XjIi,ީՔ^Oن~NIIx?`j*$UE4e:~ gyʙ5:I:.ن}ZnJQIM$Qu̽cnƒ;*ȠoLII:.}MLIIv^?clJUv^?h.ۭJQI'ExLTdeuʨrTKI:.Ryʙj:.ksJaIz\׊sFK\<3#iTV,grJK/qμ>jIi, Y.MՔEMnΰK\׊uhu]%Qs4g\a2ƎjŘihܒt]P]~:I:.Xw<7%Tt]!HN>YYNI:.Yx/UJIw\b޳HԦrNq `蜩E%5Wu,n2~2R@.CJjYbYZJ1g萴۬I3T.\~M4;II)&{v4nI϶Ӱ3wO7S)I)iNJ'IMU߽y*$I:.jQd~u*5:I:.R@;r4N{t+9沒N{]ͿS35d~e(MLSI:.;ՔR]*=B֔Ii*ΡVmz:NSP$~[tuzi%$~U))MYMU߽ۍ[fZIu } (Tg;j6uʬ83azM?YnTPⲚ.6u 4TdaDa8I:.6ਖ਼řz->θM>i4hf~'aCT&I 6y55? gf֨piO1f^Kw>ϰy`fI*gfZqI\>LáP S0OԘ·I@/_K4ǘwRcj^i폠i8t:Jz?vI$t:Jz+BzԚiPt/u ~PvvM4:% ϴIP [yvP(B'*M3F·I@/_KձO]ړMUNI@/_B&NI@/_tx/:\➙KAw3zTJ:} 䔓.Nt9EMn4pQaJIw\-vz4YʒUI'Ep<6~Tdu> 39NI:.y#RSU)'Ezj*tWk"yTy+xVc^E!&;\y*%$Ch>XejII{϶,2U5%Tt^족 iǯS3d(l}Mg)i'EqDfrI:/vPퟺ jS9I'EOYE$۬ԜN.ypKXUK^:e:x:.f&iDHVtVII:/ؽ·$"Pb& tQ.kUSRJIwP宁ުtt].kAzI:.\Rydu Y)iPU5)i'EBq n"U5)u8ڪ3t].fX?w>UTԩE$u X/ jT4u4Ώ}Qeu Y Wt].d > ڪI:.\ (y&N,ljVIwP8'?x*(N,SRQdu X"uTԍNN,3>J'@Tԍ(u ϒ4'@TԍVIwPg.U5%RZIwPgRF|d%$軨]rΟ@ۼTԕ7I'EB@wt].gOe.GpUSR6N,̱3vU5#j$軨]r\,At,2;%$軨]r\,At ݻUMId$軨]rΟ(e.GpUSRYU$u Y+2B#*,qY'EBi@~tuUEi/gPb&s;賮Z zΆojM)9I'E9u͏oRil Y #YRUEq[<dt3UI*gPv/d7~Nt],`YIMTuA}6rN @;DMIRI:.jMYPҲNVtH&"[Ί2VdtGLĠuޤʜ;sX%$軮YoS):Jj=tUTԕRIw\0SU5#:.떻~S账cYj$軮Y}`MS9I'ErΟv*QI'Er] +sNT4h.jTYi'Er >g3rNI:.u7z&jNnYrMe$u]H k:'%&gPS3-$軮Y}TI:.@Gm NN6g#J)$軮Y<?LF$軮XcRU%u\|5%TJK.ay6jJ],:i?SfdgOIUT˺b :`Ku*nUErΔ39MY'Er n gO2g%JIw\̱ਖ਼d$軮Y!g%RIw\_At39,qY'Er "i.LG(fBUMHI:.u„NtV:)#)$軮ZnڵG%4gہǍMQ),GE6<5)Yw\ci)iY'ErϷojL䦒I:.aYT9)'Er}frRIw\7u*frRIvAYjSՒt]5NfrJIw\O]i+5ӝ$u]54RIw\Bީ4ͫ$軮YоJj$fBcҒ%$軮Yк} +f7I'Erj4rS4.떁 eIMS:.miQD$:|P4&731fit]P]~$$軮1cUI'Eq:JGt]ǷJtZIw\bMzRSU)'Eq?zrNq `9*QIMUq>یL*(Ő>Ke9PҲeػmVg%E.Y $-1v3L$9ReuEc@;Egaʬt]Nlyu&6&QS))MU=dG@U3IMY,SfE$z7$$UZrUI'E=gr +$j&v LII:. jRNN~ÊRIuL:>~F6t] XwSkI:I:. Q!mcꬔRIuaRe:t|m*$*}Md䔎*44I;|v ٹ%$솫%$$QS)U%5W|1i%˾~R-ze^'cYjLð(燶y#*JIwlz課NNx{a,D~Yi*ٱ_n-#:.mPU贓ϴ-e5Rt]AO-)ޫ-*QI'E<=ҡd|Gp6~YiQe_C.kIcM[k/CF9? ?tk:f~P<#.&oRi&!t,JIt.qyG8]> <ΟiN-%Tt]VtMl?zZGt] ̟N-)i'EоdqiMTB:dqiL$BY8rTZg(qlTG`I?{@pUcRJI,]UZI϶Ӱ3wO7S)I)crQ:JjUMIEt]RQd~u*n5:I:.R@;HҊI:.ΟqM#FՒt]ڬrJK{Evrr9E~uqT5Wu+HRLGRIwd/ ZSJI:.RO;pܦd~y#RSIe~tߩsRN{4 z3Tt] d|ViNSI:.wO6LSՒt]ٔ^̠>539N-$DiRSJtYwgP i))UE߽B6Vi7I'E߽)^g)II'E߽lfҙՔ] eiU_O]M*jl{z$䔓:I:.䪒NB]fr8Pg g`~IC,}4I)'E@frNNQ44vf%)eن~X&%lM?Y0P4ͪvIlT䒕83azM?YNTPⲚ.6u 4S5**iY'EfǑ=wXi͜Yi'EfǑ=wlGu2nI:.6yPYnT6j]Vtx ڒJJ,gY|tflԔZJ,gYk3fqY'E>z϶(gE%:-$gXcfJj$ f rԚg;j6aڲJTYd>Hk4ՕY)'Eq>3zcIuQ[g\34=o3V8It8i,)n}͔ili%Pp7 ?H^.FA~\,%xgxA <.2 |\!EY# <>tg~. EX#xAy`0 <`Aypa& .ăY@8 *"Y |T߃@XC`ˁYb*r_" .- <,uY`?pA <," _Yj^*E E~*r׼TgT< <-& Ep-  Kr+ZA![# <\"hdgГAx-\"'g]' <RP,qiY2Ov"~*E ,~*E!#,hq:H|Z?DAxCrŠ@NAx"xAx$qiY? pE B/$gINg/pd ?Y E/ <+A|>.,p "ϑ@A|\Y >@kE G >@"ϐJp "ϐEdS"2Q> |?@́jYd>D?CN~?H|l,! <,  9YሯCx EoA!߁ЂCIpEA!.FAz@5$>:H}! @NAzB/t B7gq@H~d*r"Ϝ>.$g_!K8 >"Ϡ' > CCv o,Azav d.FAz`i$>;H}B/A!"QCA!/,MBH}@dgx "4g~4Q$>iY Y3$>h%xYv T ? *E B CpElB k"6@NAyĆA!`"6|\g/?'r2؂Cv $>sP,C BPEp!Og~, Y ~.$g!x EoC/Y7 A!+" CG A!*r '!$>~*Et, $>tNJ,xxAyѯ Y@ A! \g2DѯE~ #~ NPEGz P,C1p" .Dg'@NAxp ^*EE </"o@P, \H"`zAx"JpA <9x E,9YY:Ðv"BGg AxtcCå\H"oçT< <:\H"<\,!&1,!A!! .$pA <BA!)Y~b ؂Cا\A ;^.BAx=b YD\,".$g u "I"ϲ(EańgX "'+cg&bg="`$R gzAy@:D <'RDgO!Y/!Y$"h{PA{@X( =±Yo A{,,7B1Y!AyHFY?E:"w5 =Ā,BO,#|H"0VAx.D" "O,^ AQY^"<|/H">O2Y7g%rohAz?$gZ- <<[dgRb oA!WENpC >, xxA| x "πC)CY"π'xA}ɼ >\,R g&R gC,A@NAz Yw ~AxMYļT< .BAx'R gPH <H| %dg!E"$g$>*rxxAx/.- < G < wg.$gT< <~ E?.2.pE?BH| C"T~.EkYJ\> < B_ YL?, #PECCb `dg`?EQ,jx "FKYÿ.- =ExxAz0Az0GP,b? Y@Y\> <_!Y?"^.E/, ~OC8 .$gHPAx!YR.$gHM\( <BxAx.$gO(YYGY& E@YTMb YT\H"Ax.$gP%x|A|"o E |A| ,A Y ~.EAx\H"_ YVGYVx Eaߋ YV:pA < $gXGr2'!EB0P,pxxAx8_H"G Y]Ax1p,, Y .$g@Ax|\H"(_Y[,|\H"(mAxG.EX|\H"(:pA <,& Ebo"0;YE`AxMAx-,.<\> < 狂 Y\\H"AxWeY:pA <Gp,t ^.$gAyIAy/" EA EA|\H"  ,CpA <#$>pudgxY~*r*E!b YFP,S 2FpA < ,2 >.$g0pA < pA < / VCf@C/pA < A!x"b I\ "B_"x.sYY?\E@Y|\> g$;\E׋,|&\0 <\E0 < gw0 <Y [`AxuE"Eg#d>)²e?C .Eп,4A!9Y *Ek B^.FAxB/9YT< <# <.29p,;|Axk /E' <7CLj"b?,<.2g_giMH|HC{,=.FAxz Yz#Y ? "^.FAx^*r C ? !xAx/ 7,> ^.FAx=H|Y~)r2@NAxxAxD~*EJ\dgP# <"O"" HCcˁYK' <">\ZAx Cv"5P,@.$gOP, |\H"#|AxF|AxF~.$gNA! "_E05PE0Y"Y?)H|#"Mr2Q' <g#"mYo)H|xY \, =' <g\Ig\k# < 8qNH|#Y' <#xAxG?2²^XH .< "T< <V "BP,x Y(_X,V0 <%,<\,"P±Yq׉oH QoHvE"vE%~'d[R!xoH:;"wvE"-)'d[R'd[RNȷ xoHB;"vE?[$x O[%x _[LB`*(P@M0 P@O0 &oW`* [ (qo0-(qo05ſs@#(qo0€G [ 8(qo0!P` |(qo0(qo0|(qo0(qo0(qo0 >8 8ſ [^xPa@# ſᗅ-/%ſ8€G@# Ǿ8?ſ~8P}@# -/ ao;ᠷCt-6B з y oᰍvſзLEз$-6 _ E[l|H[l  [4x AGoW@|-ߎC%0t-KĠ-%[4[€ ocB_Bm ſBoBwH-: ^ߎKRBзh? B>@hW[4^Xh qo~: Xh?  oBFAo # . Oo%To P-BOB[IX(8~:8V08:8 +6-pcз°[_t-pGзߎ ,[;t-pׅ_Z _з`?B8зi:t-p!Z68!8 ?B7o』h68 WT-p O[  AOt-sZſDE1oOo㐻A9   A [_[/ A[OB!)9#t-rK[k[aXs[`[B/x`-rзfſGCEDB%~+ D/B aطȇ[xt-rB-r +F-r [#:9 >+@Jt-r+P$:9 +B!;зȏ & &xſ ? &"ɂBɌxſBɥऄ[2_-T-2t-cE:Lx)oߎ~ M&'t-u4Loɇ#a(`зh|X ſ:LX`w[0TÀ5Z bÀ bÀڋo[p 7o!x[p<]aoIRL-W~Gqo!ؗ?~ 8YN,~XaKb<B#[AF|Hb_KX:!6A!>1 H'! H7/ljD@) XB*~%<(A#x?(#PK 0 P++AK(%1@mo|(C{€u  <&xPX#xPPpx&&`wWM, O \4 $ܿ`Ssd?Z_ŷľ-7aŸXŠ-,UЛ+l.vaϘK0b0105kĀ]`#eHy<%`O|)pxWxOx,p;ck.X_.pIw'. /]px. >[p I"p!b# |Nx/b < Uk üx/`}g> [f<ǂ,ؿġ<`x0 XUO0aox` 0WX+2Ş-;ž5 /߆ay ןO%kx`#<__0%?|hu|/ <<4\  k4#c_B_v7aؿcq6M|ɼaexu6x?lGxMx&x |^xk^x _x|^xB/aB^1x^g^ F:^ Cn~ o׃$fo 0K0`G$<[pC|%(&owYo_ I¿2$>d.^dx&&DȄ<x PFx+ x[pW&9x\'OpK¯ '\p < `, w,ełLSFx ńo!,#O,oK1`M>  r$'xU01Og!'-M< pM. aW~)T*[x*#o\]6DP뗅"/|1><)?wd> xbG7!7)zJa_5H9I-+Wg0VR_1C2<)yo/d?AN}MO,Q[Bl+⯠ ~+\}^b}1~cSza 1zh~BK&o9Gԇ!jz7:_ YP^G_4 cO40myGhG>]zaǪި<ßT%c/TGݼاkͅ~lS,up#a{=̈́m xcX__YL =`_Y aް? <ˇ p+?<8' &> &OO,*x( ),U Y))x*q!,'&> p>O¯ x(XWWdaWHp } xdY?п-C,Β>txyo::q'|KBvxtMA^a_s|oaw,\x|S:pYFO%<4 B\+ |40U᠅ ,6 |4,hp%@J> <aW _,3 c̗x3 xTf >$f/&QN .Jc |_<2GY䣬-[%WxD)?]<aW)bx)^ > |N. .4Ɓ~ ߃Os_4[4p#h;hch2 nCxQ|p+7MY- ! p8 'ȣ.ŸGC+*5BnC!a&y0y00?K |xV_6[ɂNC0M ؛tr\Q6xn? )b !/E B:! ?W/w{`.Kp]7ñ~^/l߇b<;%aS-K"lA! y/"##+? ?@-e q'(C D8'P + 9xX o K,W,'-#' o F!xZ?|)򂼷&-IA[yЧ-h?i[ЇIxZ?o A[-h Yo![a_HBxxa:+7: o + oFeV:0]bXN[`x9x_-  YolC|!eV x)!@ E_Tx)!-?IJ M-4|.x*-o,lInGpM %e /P 9@%bO;x0 @ b @]EcBN-w?!v~+`9RMxx{H)}| B6xHKwr? <`dA6i <ÿ $BL/kTփpxP?ǞA| 6=*5* |"L/_ X|$>+A< x~w 8J0+`cV)?< ~dV5Xs+ < qׁXX< 6< NK/y_M5G7?Ex ~V&wK_-#Xma~Wrż~X2Go+?2+ł+%```VX,,0X-,a_b_a`[X5, | 0,߁aY`cX `B-/Xρ`G,EXKO&OG,kLY_Yc~ -Z/,hdX2-`iZ~'x9`ibß#CbqσX|߃J,?!``6.E\KB,>%蔰At?,B` &>&~ƹ/x;XE>V0 /u^1^px&/x v 6߁xK| %0灅< !Ǟk N | O ~I1)ae$71&;u"!x! J'a! 0{Xe'2\x`8 !a0+^"@D`y%= 0 ? E@o|~AvO%0 x p #1d <^A A#߁Kp x0 xp@319`f11.fx<o`&x1? -$>|(z 0Ol*zO|^G[W x5Ş"8 xOZg"//($OO|"xBM U <*a_$xZJ-pU W X xAA 1 p_ xa |_ π$'^/~m?y|߃> ;`;= d~ 4| 83| X> O|q /Rq #K>_- PB|h OBl(4G@w< xlWhq_c0_xa<x,_j5x5C< A&5,)5 $%_#PIXs8WX:W5 /Hb_@aboB\)$pQHO XYH | ,$ x|/$ xw _^ <~9l<~O/K=?-Ol׏N'7J&xJ)x%2?Pux 3%iJr_Pd9o`y< %&QLX&&|M?aF  Gdńe<`||(l Xщ0ъQUz9bFaw`z0111.b6z0ף_~/& |Q3@"Q.kʉʞ/*|*\$`ʂnQ|/^@᧐| c? qLmo. <>Cῇ >x|s?-wIKS?G6 u1 .nx~/9Ɨ?%~?'/ -n#W)8X(8 u~  Yp!1p x,/8'xV ~ D09`9r9~gl |F<F<Cm?֧<߁^<B_^!/;Ma@@ < lM14.ƾa o MtcBOtG>C\Qtx!¿xX `"$wJ&1o3C,/ XY^D /ce!8K{QB7 w!x>lxB Ybpg8sX_p].<F <^~`>jcmf|x+;~`k% '>+ | Q|Q|W| X&g)?1g x[.?_~/?X x|as(".~C.F~Z5Pu"_(K/7;`="^xZOgOI@K/ aOأ ag | WW0Y0@@,/@ J/!F Av <F1JX$ |C<Dc?^HfAW$ YnaXxFOxxF\30E^ <Aƹos Oؗ&?o`1x ^x+ <a?>" Y,A9o X  ØAx p]aXaA )(^@a2-Y<|+ <o$oO?<|kA |@ u 5 AA# JžB>c*(PY`*aT9R|GxCπXQ I% XQ,K -) xY\, ,> OŞq^ |0[>pɳvw^. 0 Xa xl6 |. Y 9>[8 <#xGX(Wp>+ 8]&šOxK0M0G`0QWd/̰Ux2 A'πhQ|F3x8. 7k1 X4 z^4x+O4<A?hG/ L@#/8@s|$= m Bo $8@E@K  ;s@ě?{65xɷaE|l&a?!M'C%maW(C XY8(~~ |`85_p xY1opf< xF +> |$q`9%N^V$21I ~GXH^AwH<{H !xI 3D|o$ɼ a$ DS/@ 'D<x"C!n"o| bO|/0M>&S Qثao?|Cgp1oX >}_q pIsz/3 ?C@/z I<ǂ** xbag x%`10k. =0Y@^|_K<7췏CaĞ=Xǡ |zUЛ^= WF*0=>YBŞ> x5 .jOxk^[7˖O\', ˖OX-@R#.[?rr)\ğ',7.[?f˖OpC~yI0 ? _e@/߉?TCXnIpoğ*!P>77I0 ? _e[gǟCOḍoğ*!:poğ*!n;-D? /߉?TC!}s#v['@~$Qv$v[''>7 YI}%v['<;-D?$v['rLHL3 7~$QI a7/߉?TCbBagNO䘐fn;-D?``9&$&~IuǗoğ*!wÁ&_el~$QI a~$Q`Soğ*!_~$QI av_e^I߿2;-D?RkÀaoğ*!XKw_oğ*!,7YI0 ?O䘐fp_eI_e $Ą0Àoğ*!1!03$v['ǖ8XBS8,Io]H`e^hȿ_q|?q|?/owq|? 8//zi34uM2_[P长z7:d_[3q|=oDΙtʟq|=npq|=n4zgL?8O,Q_[:;3O8TΌ /:07:kg}_q|?yta3_X#`_/8GF9_o8˧_?\r.8ˣ/p0/#$ow8MS{_Po_P./(PG_[тPzEN5_@(q|?,/L&_ ?7_=/LO/Lq|?5_`'5_[т ßG_z:07O;8/8Nq|?"_ AWq|?" MR8/Xc_TM_Q?q|?Aq|=nqCT _P_PT )_P?*_P  ? 8A?/Pq|?'/P+8@ + ?+9_Xi_[o /_X_XV#V 8 82/K?)C_%/Qq|??**q|??**q|?* T?**/w8X A7q|? E/8_ 8P  8X?c8XL/Vo`./M_p)/\\\3/8/ \8./\$8d @8Šw_ `I_ ]1/p\[8/8+/\O-/^/1__ q|?}_4W_4?M_6j q|? / _6:/x8q|?=_I/x%1%/b1(/b881 1wq|? 1  Bgq|?,!;-qP6lfe{yqop"(s[-8Yw^@`?qy"(G^ 0'I^ && o~-._€LMOW?G^2"?<[7XG?oOXC/ hP?zqyV:AqyWU3? ʶis^Uߏcʿ0ߘww@#/*`_qyWox`qyWO ʿG,qyV:Aڪb8t-M^UAp#/ Dqy^DPQ形倷pY1_X;/*bxp}fʿè򬉲4o"m16[-X|#f X&O¯/&G^2"?oȊ ?xo7^W6[6[0;/üH@[UWa8dE N[-8Ap#/ ybXo7^W6'eC9`Uo/C{e_88Ap#/)^ &&O|[O1!03췅/`Ȋ ?qx7FJ//5(K/p-B"qכCJHJ-˅_W/?q|?ȃ_ =_Gq|? ɏ2q|?%/6/0+/$zL:d_[&zU_2_[X8gL?zt:eO88t8Pq|=o3S_偧q|?(/_[t`ksgFiziq5X>/8:0,K/_[# /7_/. ?=/*s:0M/ @S__8@e_h q|?6?u:0Pq|?_Q_X ``_q|?zT8Vg\UX%'/q|?/?ss:06q|?o8?E//_'///`&/V 8o_oq|?,/^\_눿7q|?_\p_o  /k_ tֿy_@8΁Wq|?:ttM_?$?? CU/ͦt`n 82k8y_ Wq|? u_2 __?. !_&S8! S8D/zٳj(_[т/u:06s8`_>Gq|?F/ 4q|?@_P4/?jj 5_q|?/$lmO ?o 9_ ]_S_47_k_q|?Bq|?@4 8?Gq|?@*/o_q|?8 8)q|??9gq|?L_8ɂ&LLw8ɆL1Gq|=n&to'!Ff ^$@ <C/?DPG{ex*q|qyaהqy`1Ҏ/ LLLɀ?#ʲ"?!$8MM roB | | |w88> > Aq|?P(/$ ? C#/$@+8}_H@E/$'q|? u4t2;-cZc-._ˊ `āq9-彲假U M?T*?=tq#/*~4c^U%/*~~ AqyW$/*~ q4qyVDQ@?k^ &&Z${eOHقm$!/˘/CIox*q|qy>8S3/*~48~K^Uy#ʿO8"( Q"n8"m5!0!`p2 >B8dE`#e?ǏrLZ8^e^@~48~K^Uy#ʲ"?>8A AgG|?򼉷?eB hq Nω$?%8dE <[