From: uzs90z@ibm.rhrz.uni-bonn.de (Michael Schuerig) Subject: UResourceParser (resource parsing in C++) Sent: 14 October 1996 UResourceParser is a simple framework for creating parsers for resource of almost any type. Also included is source code for generating a skeleton parser from a ResEdit TMPL resource. It utilizes some utility classes of Metrowerks PowerPlant application framework. This can be easily adapted to your needs however. This is freeware. Use it as you see fit, respect my copyright and don't blame me for any problems with it. Michael Sch|rig mailto:uzs90z@uni-bonn.de (This file must be converted with BinHex 4.0) :%e95CA0[GA*MC9"KFR0PFLjcDA3!8dP84&0*9#%!N!3kF`!!!8D5A90*9#%!!3! !1R0b6'&e!V8!N!-@1L#3!a&98Q9cEh9bBf93BA*cCA)Ja!#3$Xd$!*!$MJ$3!AX #%J#3!`B!N!q'!!!#!2q3"!%!VRVFI+k(h'N!N!E,`3#3"MRYrr$rq!#3"MQS$3d ()&*PB@40C3#3',(1!*!4&J!!!bJ!N!-@rj!%9%9B9(4dH(3"!+k(h'QZKpc$!!! "B!!!!Km!N!2*!!!"DDMT8U%!N!DMla%!#"`XF3LLNL21!h&aH6d!HH*ba1D%@)F jih,N!(!Bqebi+b9K2r@!"d**2805$T&1V[R)JH8qG%AId%cq`CdHL-b-fj36BZ) +aMJ0(3!1FHD)MBheJ0DG1I)k#D`r@YJcr#c*NF-$X6%jBf*baZS!b*PY4cmqjQ4 qCjaq@6U!MmhT4*Pq)5Bf0VrbJ&,jmkZCMdAiR5RacB!LZI3ec*Jp@BlcH5('8Eb c*djH#lRKpA'PMR-8#V8"-ZA3G%F6BC6T"HL'0p-X!&%GR,i`j*!!aqG`Sl!2#B8 6JGA[BGbq)%Mc-*`2q60"UNE65#KF33*r',K"f*r&"RdJ!lQcI&')!L!$)Z""2MI fKc)"Qd2L1D%i4JHB!Gc","M'`"h+"MLEp58$A6!-J6rN#A*HRjFh5eNfp")jT*r l3Mk8+iA5Mha"(iDKQ"rD4eNNK[hXHrdBZ+`15d*A&`V0'($B(r6hpr&H!erZ0FN 'RU!l(#BKE+6P``K'I5J3"Jlq[4edKdK"3cESpa"YG-dVeS',)3hClK")p`'I1q` 2CJ1hemeL8Pd#36EaKT!!cqF0!iDSM(f)G##3!2MR)Cm[kNDNmJGK(b"P@@%H#'% IkGR(-VkhSFq$34DT*f+cbIckr&!Fi)@KHKLN"dN,32jS&,5I)B,T39p@'%6pQ#& #k$VIlrmHiE-f2T6P$SA#'#8$C50K3j95f4#dJU'3!,"e6[*#Q1Af"c(8F[h$QT6 q,EQ3!&qH6Z+kebIF$b!J$&408%a3BA*cCA)Ja!#3%b[B!!!"&`"c!G3"MJ#3!`3 !N!1'!!!8C`#3!aB!!!1B!!!#%2q3"!%!VR`VdDk(E"8!N!BZ1J#3"K$2rr$rq!# 3"LdS$3d-9%e36#jYB@PZ,Q0`!*!6`,)!N"!$+!!!"Ei!!!-Srj!%9%9B9%0A588 "!+jm,mDZKfNY!!!"(J!!!KF!N!1a!!!""6IR[mX!N!D@@a%!#,,4H$lF-b%(IL` K,hkX&6Lm"[$M5Dd"2k19EbDdKP`C*-*m+9%2`$fc3Z12l,2GKklapm(K0DqD'HG l$FTe6Ha8[&ah+0Hp98+1FMd6mTEVf4BFAJ2P0ZdHb&'11ikHGZ$`*LJAlGBk4lN G(-IEfS2$QEM2%IFjiViN4r`04r`04rb0K0BjbqhQ00M[$&D`1flJH$rPH$rPH$q P[ArJH2p!Hap-Q,prI#B+TC@b!&%+"@Lfli'(+44*HXKQ)hmQJm&%N!#Ud63#9Vq (FIZ#)-h$R%1#b#$-eb!(XYcC`%0`J"Pr''6iJciC3(i@q$&`Xfk%!85!#r[iZam #AKrb4pcB(r'"+%3"i!k$)!ca2JSjA4!I"iEUB8"X`d`IFA)*hmrdKpc"($G`Klb jTJ0I11`QL0LAjID(`N3ZFAY`-M&j+F%N@#erb"2N[$iJFPNG&SFEKAdSQ4%*K4( Sp`Vj"P5*F)!`DA%DT)KY)NaU3`S,I%N-1E%N"M3$VAdieHE1mRQG[M$NN!$(*kl (3fr,J+JlkrCKRdL5`iTC!JYp8E"B5@ALd9,c6XL2IE&B38H`mNE`UA!r$C!$9%e 36&"KFR0PFLjMF!#3%Qa"!*!3!jJ!!!f-!!!$+2q3"&4&@&4$9dP&!3#ZI#`EVSG V8!!!!4i!!"YN!*!$X3!!"UePKe#Q!*!'MKJ4!!LbdAJq(LY&&Sf93k-dGaC,jbN $D6K[&SX+,QQ+T1'iN!!rd#P!4#B9[T5S"m#"j,2ee2[Jm1SEC5ZN0-Z8H9+i`bj +)CNbYb2e4eJ@c4@Qr8P@ZX`CTZP88NqBj`ccV(lT0&pi+#-CN436jk$TQ65@XUb -h(4)0$f5%T%jk4"*"F[4RcK@[Mm41IURFb*MqR14Xlq)8"D16H@5Hb,p[4'@4N9 %cYmr2K1&dNTC!*!$$%laj2%%'F"mjH5SdRcl1Lp[l6Tbp1cj'VQe!D%$EPld##- !&"r!qJ#%iJ1iPH$2Y8%5'N%8*e01d)m!i1Zl,M[lMR"#ZCPb*H`k-Z*N`*r-1$N mi@Z(&fM86dl#Nrb"Rcmjk998jcJ@cCD'Rf$kmH1(X#,#&Z-4E)DY(a')(%6cA(@ KcBiK4$V3,C&!3d4m(',4!D'"G9LX3FA366Lp#`Pe(SX$TX8"Kd-9l`0,)&+5p(M iG)akkNS@0D"DfH5SL51rD!V*)U-0Q+aET@fH*!`TBYjQ3LBS6V03Pe"*,N%Nr#q &$+0ZRF-XNiPifBPj3ab9fL`XYClf`@'SMc[m$#&8SQ21fQHBlF@MN!"hY&"b`&l B@PQ[VE-iiA'T9I"pXR)Z!G8!U3jK'8*'b@KbE@+aXPN$e@B5SkD9#G-i*!TD21E &a$!3KX@U+qZq(dBXSBc8ZG4`i[YH)aBFSq6FJ4(9i6(6+TkGK5!$MDH-SC+*KT( 4'Gr[Q!$cXZpY,dXprG"V,aX1JREh)K%LdV)'PYA5N!#5d6)iXS"HiH682d9DRaJ H3C8IE5PmFE6B!$'5,Q$i0HQqGDT#V*Xk[[rJ!@D)YBR6phZ4+TGlEi([@C&9V"- X&5%*@ahe2Gf+e@'!$f9[Hi-RUKZ(h(&Q*"LIdh0PVr[5qL*1L1G!LIU!c(cIS*r &3UH+V8GSXC!!64J4dX*@@4XV0R-HAdK,QXC)*,U#QGI`"+CQ-KMQVAB3)@BD-Ek R%X$i&,,Uf5PFZ&eUl43+a)%P%DAI51f)ECdBJM0E$,B-YJIJ3K+FC)*k3PaPA#0 hG2T(B!mG[0$TiT&&'09@4l(i62CQhLSk%,(ZXXM+HQedAFQke["1#e##Gl3,p4[ CTeFkVRAe8dQ+"T4A%8Y,C%"6'!3-ShqH[h+jKYf`,E@)&QAG`jTT,fYX'CUQX#b 4m,"&%eD3!#*,Fr8$*N18LCf'$H0KZf)6VH[BLpJH*j(HfZB@$MbHea!mUY-6JI# I)F#k@GrFfX"B)#*M306@kY`+S5aAFLKdf))JBd#j4Up(!e!NQV+0)d0#J*!!i54 CR(ZfX9$%-30r0M*ZhV!P0fUb3"`AHF6I(REQ[RPb5QUVhrkZ"$Pq9H+-@K*4a11 q5d[cclGZY4((4jH@l[`QMMXPGhi6ajhI1&I`jX$`KFa`qeiG"U$ACjHL8C!!%@a lBk$maUM06q&Cb-,MA"Q'+Ar!P8p"A-L#k&`C"M0r`*AI3Zdb[Fk5%%FD1h(fNdd YIZE@iX8l6J(Z2Dr!26G&h&C5jFUjbY!j"!bFbplc#T`MrAI1iHi$kYef*i@i8PM m2ZHJUNMIR6NV)JR2MCPI@k[P'aK$qQk0F8l-,f0qFD0&"'D2j!NF-,mj%rLR1CE 6$-'"Q*LJ+G60S9IcV%ACkCH@EI1ihZc0Y3BX'S#cY8&qmF3jC69jGN-%K@8F'CY BZ,,EhX-&#@lkL#8TT2Vq-I$dXr@Np#TM&d%c@Pb69ZGb$MUHp(h1r-CL*HHJXdR ICbFSlrN'6VJqHHq%+fRDlCLjTqG1EA0VhVNc0TEY"6p)IVmdfY'i'iUYMDNH`cU dk%CHEmAd4NCrir5(S1**d4+-M9R8,f(&1,c)&BM$#akVr)dmR-fpUfQ(rKb'h)% UHaZN0FRRdBkmMejjN4-4*DUMR)iX$3UkiS,8beNkP'B8LijLBZ*-c)hfdq,Ym&6 R$GD00#i4l"VhL0FR)LkEZT@ZNmc48BXIdBE'c&KZdp#)D2criHYG+mfG@L5[qU2 dI+6#r49e`"HBCX&)YZ)HKa(,MNFliK9AMIlffbd3c)IGM3G1kG6ZB#RKPR-Z%2q e$8TpK4Z-),[#FC,[lil#2CKq1!TM[3XGKreU0pee[&[G68NC'0'SM`#AiqajfYf b)@I!ddY6TrZQ[R(FSG2qmIke[L,rYVkD$f*pp5rVl9IDa1G,XQfjMrG[%XrrX## "lZY+Z##le'$AAYIl+rb2rka9Jh%!ckmqA*@TC(J"KkrQfUU"9ie"HYQ'380F+6f %3m"6[,d#R&!S4bSTGESk+1lS)J8RjVSE5lcD-JCme$qmD`0llS@U$ZP8,%JdRP1 ',l%mp'crFZlHdb#KM%q2!j,Ac$b$L#X(c#MMCb&2,q-'jhITIGNMc#6rMN9G1[- K"UrE-3bB!+fk(I33Dm"bcTL6*PU#&UF`G"345c8bNMdKU[MB,%96A5C+&M`"5)` kH86ASk4McZK)*D11p)Pd,!eeT'$8-CIU-!b$e5Z1G9!R(LU9,"XpQdrpr`%!N!- 0$3a869"-8'&bFf9b,QK`!*!5ZZ8!N"!&[J!!%!B!!!-Srj!%9%9B9%0A588"!+j m,-QZKfP'!!!"(J!!!Y3!N!1Y!!!"A85Ei0%!N!D8f4%!#,,4H$i!TIVQ1&*#dcb l3Ba51-H4"cVD0CI-8#VJ2IhSI#&rS&1!L%`UI'R#!h$2V1MSXrA8qq$`kYGQ+k5 d8ZebA0rGkGF2(UHImqCHMYDVHcIPZ29*4qX#j'K5hJFGEFXp@+Q@15X1epQlGBC 8i&`!Ai9YBV8Q2qKSmlCapQXUh1"d*fr60LCle8@1YQ%Eh8rUQZ4SklI*SE@0GcU DpX(qd8I"@@F5!*!$83S&D,E[JBFT&%Pkb'BMIbD$`853!+V40!*@[iGaqi)JcF1 F3i,))-cA)!Hbh0R!3h#!'AmBC2L$2KP!IKEi-A#cES3"4)!,qrLl(`*H(r*(h0J ImB%S4!(J$S-J$2%q#MPG%"m(KZTK3'c$6"paFJRIcr5(h-%F0h#([,QQ!emil#D )f*IPpSI#4#jaHh!b-ANT`54B,Ar)%q5m2Y$8(3VlHl()Pq([PjcPpL3ccCH%I4M 'b1I1@TV"K"r+A*)SG($k`T!!3akI`ih#2T6-L)4#6p!G$J1Ae@(*$B%@X&akd1m "+fJ`3#M-6Hi+Ni4*r$1MUKiB#Q23KU`%Yq+(#2T33[B5`kKBdN5B&2%Mc,Q$K2N 2,S%Z#$N$)Y$[6FSKC%%+R#)rMM@4bXTqSDirP"XlGQH46d!k"+J,`k!Cq8#--*& J,),Bjm%qEdjh*NE+KJf6X[JUL)U!D42KIJ!!$3!+9%e36(-ZFR0bBbjSF!#3%Um $!*!3$B`!!"2h!!!$+2q3"(*cFQ058d9%!3#ZI$#1VRa5@!!!#T%!N!B$J3#3"22 P!*!)JQ)M4!iL+Pp-j%BPCa&VB$IkLpN6c4lfa%T#$q!,!&m!q%+c[ccD'Hi`I,U Kam*1FT)!FL-Y33IPm-MI-Ga[fjD'+fa%He8ZpkU2DNVD!mI99&*0*Eb'9$9lDUT @%RS!I3$k!26TmP-0@pY-0B[B6N!rLJ*kq@cra*UrDB+()96c0jh`d%`eEc,SpPr 5l*QqC#@K"c!4B#,!a'Br66pp6600$d1jrdDK()NBiXT$fA6%e'8eDA3&3Y(LfH* P4D+"mQL+-m0LjN5Lh52%d9#peGdeS()p*+9j006F@@UKBi2"GGh"-[M*(mT`iqb MERM"35h0G+BPQ!Q8#J`4$`98(9T-8Q`2bQk-N3MC"8BI#8"phR&4RXiSNXPCTl4 4dpPDVKZbTVEjciU18F[8Bp58$NP0CU8NCqe"0TFC+5fVa&N[FSBN"FPJCNSfQ-i 0,D[(mL)a,!%6Sp@N)KXT%BPA*+E,'C-&Y$LhmEQbb3d'IXh[4SJb"6%Q1%+UQ*C 1Fp8F(DG8b%XLk!ER3h3MG2"qVJKhhMBZK8MpASpdK*Cq11NF@Be&qYbZ`G*)8b6 $B,'mCjh&JE4PJUQECj3K*QBfNL(pLUbL@'03SDQ@J,FYm)&$(jX,Jc3qBb+c3XA [EiqH%*!!9$&TK5bPTE8N9lQ@Y@F'fElY"NCXETVVQ0YLDcdJ6Be4,0(lHIcI[J# $JV,1BbB,5cUQViEV,+2c"0Ic@H,)",iVmF(dp$JLi`PJJR5"&&CH#BZBS(QqQ+) EZm`8jX)q)9BIBb%0fkmQ*CRB3m8J`eUabNP96XJa56AVf%#+Ub`cSLK)1VGQ!QC J[QaL`GH`2Mid!('VlpLfe)p1SV`b(@2S*-ZEf8Q4CpVR2`bcPjaJfVqKXJ3G&jS $89QA4XNlYk9iIh52R8584qkMLbP(ec*F0q9hE'N%mE)VN5HES[+#CI46Mqh"rUq aeACc+9kr6XIep[rI3'AJF(8-P,T&i5+ZcZKpmc3a9h[@QY9mL,9UH[UG58'1AHA +i$S3ri#@aS)Y-c39p`LQA+RrcJk[[MYcI1'@r(#q(2Bd!8de61cb6NrHKCQ#Xh0 Xd$U0(Ba1,F1B9[IiGc[a(@0!ZRq)j`VLrQr%r+4Yceca0m9%UiM%6b,i&D4e1)N B5-a2eM0kNSU"*6KqFZBHZS,+3IZ"ibHK'ea`hGrP$`8lA",1L+X!)5%499*PFfp eFQ0P8'&bFf9b)-3!N"11!0!"H`)5!*!$!3!!%!B!N!B$+!#3!iB!!!)!rj!%!3# ZHYamVSIFD3#3"M'j!*!'%`(rm2ri!*!'HFJ0$4"869"-8'&bFf9b,P"33bke!*! 2MZS!N"!$+!!!)P%!N!-@rj!%68e38N0A588"!+aHCb'ZKf[C!!!eNJ!!"Ni!!!X 4!!!#D8YZJA-!N!Da,3h!VCpGRXc*ATR*A9MHbJCT&cfq-KH@ZGQQK*fYRAeqfVR T),r02QUHl,6@I)kriUFP1El'#5Yfj$IK(Z'a6AMX0YY(@")HfC5RK&p(ERYN(pY (f'DE%8lidIf5VH3ffic`c#GX5cKKQfebE&0qf4'f'ENYE3@qZT,CfpBRc0[dh'Z Em)Y'@*'YK*("2R,l#4G20M$q"!,3cLX"'!$-5`,iIraV0hY$[eqmN8(ST"rZX)4 1iIrGaUeccD%6mUNbYGCQVl!l4%N3cADleIc-FaV3J-eQVlE@Pa@cXeJ)!mRe"r[ m!hYAVjd'S+m%Z1Z4'8[-S@02l#`[AU1[frV%dhP6%CP8kJhYRQZ'92`Em*p3ZDp AAr8@T$BCkVE5AErqkp@e9EPa&6f66iAmPDXVfh-"iMLp12lTc[!pcap!&iF"PFX "5Rr&-QIK$3hSm@5'1+TB1%dSa#J)QL)I+AEX!&J5SJr"FQ3h6QrcH4e1h`@DrBa K0L5bJjTJhhQJ+DJ)L9LiT"ThQpmMQ!S&`6r-5-dN'$!eQ#BJ1H$0N!",8KER-'p `UlPd`JHaSXaZ+LpBAS$3c2Fdrf+NJaB6i6qLlKME3$Z@2pUp@NK8%5JZq3a)Y6Q FTUSD%hSZNh@Z06[Er-bj,"BkF1H$"q9FalDaFCVlcqBa)TXYQK5f3[XTV"2V5%" 2pKQm0`PV"Jp`rr1RNpl%+6(d5)RB-(R3L2LUdeq"aYZ2baM!!B"'5r!ATr(IB`P DJUqpI0XUp&-TF"Jc2iKR3-m&V-,5qH8ASI'18PKeXJQ#Vaq#i%2V,F'GLIa1F&1 Vc%6QCdUeG&)q5qHZef(PclHFii*)F(1A8YH`U`V#Qrb-qC&IIi0dIQ1+TI0T[+h `Jr69F"MrCrNmp#Bd,MQ+jfFjPfl1q4hB`5ZGMPQ4-AX90(2bX#'a(f[DrAkI'-J V&4`Z3C6bkVcZHr(Xm*M#0bbE[hZD,9UFbjbhc'I1c10XdC4$f)EcL6"cCU3@3S) "$$1-N3iYH$8Q#5c[M@pc`+R`)"`p!r&KLr+2MQV+-C!!i"4dXd@P,e-R-1I%8US *jTHGKQ(k&NKlY'XQ*1Ki2ID`TI`[4bC-3dR56$VI!iL'Lfj-lSDdafG(#TBMGb9 QCDfrb39Mh9(m(fi*rF'#q"bm&`,MK"c%6Z%r&G)lDc(rJCQJdb&Z1T-I%,I,H%k !CIpiYq38h6#a#-Xh)BIlpYBHe!+X$mqIJ2P2(!*MCX4echMR3F[fE`8335%J2Me 2JA(UAPCNX#0f"2PYieUAp[K'16r@Jr)ETi9G'0DIe**ki0BmQa!3IIF*iMV*9"0 `H&d1d@@UF$H,$V%MEq5bVDE#K%+Haj8EB(G6k#$!N`GB,qXY63JGr*NrG2!P2qX qGY4NK2MEFX%&,cCrNI@@Q&j6!Y8e!FAM&B"(2PHj205MUIRQ5S!p6DG*#AT,Z[# r6E-fFcTB$FrMrdHmfYelrC!!2mIL&`A'HL[h$0aPh8pfX4qqa'[#IQ!kcMZfGfN #jYS&E-2rBBiQr,IJIbAqAG3$YjcA!ER!EN(+!p8((E"X(p)"YZkAhe-6d)'8mce !Nb3,FL,1kLKDL!Cb2qM*T5SQYF,YA5H)!liMEM4$,'iYX0XVEPTU-SB&IVp((B# (c9C4'-Z6M**S+QXMCD$5AmU"Fp85P3!Hp9B8!$@!ZPEA9&mQq"'2fZ+'@UfjZF8 [5DKiZaEfD9IAB[6"H+9Q`pZ'3SI(ir0jd64lr2E+fAEP2Jk3!(XepNpQ8KlLS6% l4rJDE2AbG'5`1f3H1V-c1eX9J)I@l"`Tb)Fm4LCm(pE92dcN'JpKrFf4Spb[,Ir Yep3q(KkIXcII$TSA'L$MIT3(YTF4RR%R1PAGlV35Ml$HC"F&[qKc#T,N%d9d`2P "ZXqHAA1#$)r-)eV9m9J2Zd0bi[KQX%(Nr[!l8-h8!AJiKcXNeKrKZZU*ajm9l5S 2M6RUal69`SDrpEddS[Gk,%1"e1CPpf3f4I@qBk6[d`[G%VU'rXDre2FkFiF`c%2 I+!M1PQQF"R%Id!mba`h@UP&rPNT*5U)1cH9cYRmXVGaALC)B080M2+3@6h-X6l+ pq#p944k"GT8!(K3k-hE*[qY+HU*-'KBXA+EH-QR!dPr+FAh5--K$0@$58&9BEKU YKmeH(kZ(fXI%iNT9VdmXSMbZ65a'HBa0,%EV1MDaL2&3AjKBA+k(UX2%BV""2TT Ba(L-65`ZdlJaXBMb8!qB@1M-NV#fDh'3!24HiH8HeRrLKIJ"QQ"S82mMqU%Q-E& 3rjJdA"'Lkj1')HHJ'M"TU(GlljaR@Vp``6mR$8RrF)T)G%6*VMV&+)pV$Qqd(Q- 1,mEMU[1ic11'miMbd*UMUTL!2&!B4NB5FPe&Y!&$6Q-mN4!N4F`Z6aV8!C3X`X2 M(TEArXR38-F5$emc2ZBFiP(9h"VM-FlfVfG#I8eSXq,,4M@!H&qK%l"DA$P'1pl T'IELDF6$ij!!**29eqChH`DU(r'),Q'0+N"GEbT(C1B4RCeFj4&6qPLI443k-0a Q(d45ZH0HahmdD$bI)NXlhdA0jY-&b#LHfAFlim6J""Acm6Gj0&hSQb+V![#`HY" XS!+K[JakMRMd,P6im2X-bM[J1IMd9a@J(RaUU`V!)cbejCI(TVBAkdSmiXbY@2d K(Zrhap8T8S`(l6B!@J(aFErbDC!!+N#Im@Q3!#S!$`Up+S!18HK8!IU$bY'h$-) )1J8jY`k#YKrJ&G`D3@Jba22p%6`V[r%ma!1Ne+&Ipl@,6U&r8Fiebl!%3hjl`S) 0&lE&h!MLd`GHh!Q"2#mNMF1#mVSZK(&+$aJL$rb[1$fP@F*YC-!&'aMKKQ'[p1r QHDqp9([LlVZPJ%1N9p`U$N&Y(0B*(JZ`qIrHiA)@1SfAYpp%`JKDh&5LD1kC)$' 1U2&cS1Iq3[@MNjK4f@@P2K2lb$XN4YD2AE*@H&d+@bI&eZ"cLBDr,N44!@ME-bE VSX8bFe'MA@PMS6&J,PcZS(bU,f(-XPB9&@HCXSS+DJ[`D#qceQDTV(5!TZLDGUM F"ETQ"D&cBQ630E!+N[h1R$1*KYk6f6(3q*Ic!IJNA"bd"PHqc+UTVCk"'IIh8kX [ic0m@UF)iRkBL%FqMTYF$C2aq&R#lTS(Q&HcNc$R*X$9MGUI%,BK!p!rD8m5jVF #[YM5m3'#m%IDcDAE6CMP#1$,&&d2,f-jh)06+XjeH3Gd)XE(N!$j1q"K(0[c4ar ,IJeI!*M&9l&pqM(BJaKIXc9(J+F3`a8jk#bq#Yp(,)q`M3f!Lj!!C[&(hqR&F!3 J+i1`l%ai!l'TK#fSJGmL4L[6S(d#G8c@1X,UaM-FrFdT)b`qQk8MaRH+,IJTQii BVG'"G5[C2-3H)mapNZ8MpKh#dQDc+X4H)+aT%eX"F2Y@hK29$1ZGr6A#'[Ba,kl j%3KEm3Q'lM,R8F)@2XbfS,hN19,RXbm"j,l&Ql'E9K$PpK+NICX`cAE#8ZbLVe9 `"NcBcj,Ejp8AZp`"RkJVmAN$qZ,e!G%K'ILE"b92-Rr$e2F5*BPHZ9Pp,Q'Ti%f -[(MMem)C``aP0LR@GLRJDc-Y%cVZmiNZb9$JT(H2q0Sdd#,TDahL@L&J+'ahHea +`L4kXUp36#@Xb#hKN!"BD'Y'rSQ4pr`mMm)e5AP@kI!+RQ6jp9DiBJTFla#pEZp D5@mYX@(L42Rp,H9,8GkpKK1'mA$'*,jc6kN(B@IV%GPN&%m32M[NqC5k'14&&c* 4!dllqeLQerTmRK)4ZklBkj,[ar%hRIm$!!V!G@c0BkC&MT%T*Ba3-P[*88,aK(C N3#1-(#--cmM+EL9(bDfb`l2eM$!M-h`52&Y2HZDa!qJLamJcFQb0$*L4+5-6GZ3 B'6*bM$`06e$!b$2bM!`CB@4!#5064KJC-%)*)c0+RT%*ZaAi+S#5(@'%5@iPM&" bp"+!%93aB!*`KY8!`1[e1J$!m*`$b(h#mc[ZE$a2i2N8G&J#$8VjHUr226m%pQ% ((X2Yp[#V#38Nd*`Fh@Ndj!'8LTEVc9H$*RGjJ05fi%f0'2PpRQl9UbYMB)&pZeP )G8hrj0'8CUpFVfHmLd*IEX53!$SP$rd$rH-610AJS$fr`-*RVmPIGQph*b1P21f 5G[RK%,kJpk#p4I89N4$+5))3QaR(XU['KKYd$HrZEaRC52FQ+XidDRiSSQ@l226 jJ4C+ii'+)RPa,%#-6'a&rlb[BTT8K!B2ZAISjcM[L4G*)XGH0+lkcAkV&A4EIlf 3!#f3!(Ma5mA-5MIbq4hAmc(MKej)$bFUmTBEYBm&C+hb4m@XGDYFkhHMB--hMX4 JAf3Uj(DNiM3fh(ajBF'`lI+4$0PL%a9&SH+IKKmGb%bK5#9UqmB,N`h#U0qN$@J *959SqrfM0dKYGjUd!6fKUX6%Qm%b'f$E9'L$h5B5TlS`hJV1XB&cEG@K$H4-dBN U9r(QQL1eVMN`P9"9MT!!a9)UJl`TmU5klGAphAH*3l6"YK@qURD1YpCYkHZkMHd UU+U0i`He96DJjl6"AiDJUPm**QFacG$LU#$`j`HDAIGE`f%+`MF-k!de,0Xlra* [CqNrK+C%JVUhK!`GIicDR&hTK26Q2`d0%P95CA0[GA*MC9"KFR0PFLjMF!#3$GF 4!*!3&'F!!#6l!*!$&[q3"&4&@&4$9dP&!3#ZHZ@[VSGT-3!!!4i!!!9S!*!$53! !!I'YG&eK!*!'N!$"%3!)XY&i[UN1L8bri@%Y(VrKKKZdrY)0Fh5T@eHDbE0%#Jd 3N8Q&,b@DkCQ9rQr[Jm1H1$9E)D9r#cjY`E2fMpXSP&E+!J#3!`T1mH3"#$+!QC& Rq-V@)i`-'$Q+Tf4Pj0MC%EBbFV366eDCK"&fC-!)!-%I-&9J3J(b9J,`d5-V1m) NL'*NbJMk%3$F48mTSH%C18UH5Bj'"Sb-'%%,@`R$N`23mm+6b35QQ`Fq-CNNqfD jXV5S2Ab(alZl6q!0PE9%"89CIq-JGi5D$kD&4UkJj$V`06Ni*S8lB'N*j%%ZTI9 J,,31`jdd9'MT9(Sk46JcpJ5N!f9di%RiY'+HbZJ((TK@,j!!QC!!qfP"@UV)"P* A(@Q$cNQZX0K)dSlK[#cpQ%Nf%Na#h#GGUVC#f$UDSc1Y,6'AeU%GeeY#L#'8C8- J&8PTY2-`BhpXN66RCb14q0UDXh3N[SMNA6Lp2Rj,kP0kNGm6)QR#"DBAPAXF114 "m+h`dL-(Xfcf#RfmTV'-Da-1(CMbT!mdqkeeaZCFZ"e$)I059b'`cMi%*ZN8&I5 jarPkBrMmTq)4lh)YNrQ,DbNlF1fYJlV"1L$RZeFkC''E*j!!mfBbhN3H*X*(4Rh Q11cMCR+i0`90kTHbMZdm`SAUfiiMl8Pp4'Z'mjf4b(5Tj*BV-$bA$U[Kr*H,4fa DlF0LjrQMTmAlqB[d6[89ER6Hmrk@G+MabY(PG@1"SKif'PV6rPNRrlPqA2pYXkH +*YCBAHGr!*!$$3d499*PFfpeFQ0P8'&bFf9b,QK`!*!0C&S!N"!L83!!,#%!N!- @rj!%9%9B9%0A588"!+jkj4UZKfS3!!!"(J!!'U3!N!1T!!!'$3X)'Rd!N!C1Ca% !#,,4H$j*"e'F(%RKk535PdJF-86#+HQ4r[eTA#G+FD&ZA@NQca)T0%"%*K@q0!p !QeRal#@dNqq$`jlB-&XKTH1k4P,5L!MMB!SA9"KC$NCS+Nf2#dSD65--"hN'6ad DL3[a$"a+iaR46-lLNN3N"BF%bC*abC5NCd[E#$-TkdK%CXBP1()lFF5ZJ8icSdd (Fq6YiA3b1+k9eMSLQI2hMmp%SE45&J!-6J()V`3C!*a3FUbe+pVD)%)*ehabkc1 2dmM42-Nk)#`M!dE`$"m!p3!)a`G3"#$A1[N4GJ44R%`j36m#J#rahm$VT%db3MG E-djS%FST18iiH8B'R$`MI#8E6aj!6f![I+(!YqF2I,P#JCAplUQ@VEEK[r,9HrF fq#2TYKhKmCVErJ8'330PR[JphR&1Z3Ybh,4P`)qP*llK@RDj00cT1YT`Ar0H)2" G+Yi8@Tii4Ti)rYcA2h)Ri*k[d!q$Te2`dr69eiD$@p85i%Q![Qa*jAM@'hG8Nja f4"!i)+&&aj%U!(2'FFdGF$+AB#9b#dea,*AJ$m5cAZYT6EB!5$T8Ef[r15K*jAU pTZ"EMGdAVZJDkDXllCh"A'#d9#fFbH9Fc`N#hUL+`1pT9e3F(3M0ImlP'%dHb-! dP*(H$d,lpbG6ZkSj'N+9NK1)C1T)LA!Saike&,"#Eha[ESlYIP)M$$1a)CkCfJ" EYrI-NqiQm'-XeFUl[JS-hiGJJ(L3!!UQpaFK)Q!Cmi[Jmd4Udh-mpQUX1a$TUjc iXXQY!-a[maAdVRdMA#1DD,m!(bmD[b0GENkl)V!c[1K")R5%-MNQPBHCJ%B!9[& apB(&N!#1(4aqCmHXqTld2+'$XFKHk8Rp6([[VD@pd**ep&!Cd4TDUX(%Yic98NX iYVS"FkNRR&YIJlQ)8cMA)"Z0e!D1SBe'DJ2Rd%CMb+EL"#kN1DAJJ*!!IDmBc5U eHKA9&Z3aAq'&`T!$3J,lF5J`'MU)9#&9j2&V@bY+K@&K-8*@("j'8-S6(Y"!p"* MjG4V0+C'CPBhV"Zd3bZp,el`CUr6MA@4!'2l(f36RGh[DC'XQC,[Hm*4X8EicPM Tk1JJhT4a)*4+$q[jNM4l8RM01VrPp`bm"YQ+K%YYpG!cQ5i$D#K83Sr3JkrbIT% f`XT8)4UKURNLPX%*f*!!kQkCl&LCSeSGdM,@S'I'kSI&4a3-BE4LlQ1QpXX,P#% @a6qiK`qRmZ2+Y!6*Al(dSLKRl*99'Jl&Ue0XRMM+M81H$8*qdM$B8UGD!BfAb1Q XP[&06S$HeTLh!'2eDj*p56Xp3CNKL[[@Cd5aqM@L[Z4[L%DE&[D26YR[+C2aLaV JChb4q$@p@(&1!,bS'ImE$b$qGcUJiZrK!#NE*qd$acK`41NmXc84TUK"X`i@D&# c4D46lZR!ejKqp!i'mC(UC1F)6M-J9c11%3!I&f$336,He)Cc3,`B`)"jQSm-mLe Z[5'RH1Ef0V3b1"Dj6edR-&Yi+0U*&4Ij,ElbB[9qlZA8Y#fI0kEcGrNbcdqYVbq #lY3mGIJEmjG%k3*`BfVYdY3rDh*hD-SQ3ZD+$JlSLL)$5qJTKX@jbe!&ZYR5F![ *ip*J%FGT)Am5rR(HkZ#X&UDR&Bp0*lLJI@HmiY8+dafd(rXD$eBIJD(+Df$JmSV BkND#M'`Rb0EAcT!!aBY,#JMM!2*UKJa9AL-$PeI)eYF5C'5lMicZ,"0LG$j#BPE J5bL3!-FC,k[c[e!)6c)CVcJ851&,+)3ZViK03i%ZE'I)iP!JK5qK%,Um3MB0KIJ LPe'Mbjq0XNJ%NG$M$"hT!,a4S%912X!$L31K@UDGMddXmY[Ba!BB)`J!NXjY`f[ EK#5G++GYLQkE562,[0"Pmdm[iA([MfelFa#G`l"pk2VpTJf2VKP!ZXdL-"4J5rr "3KIR)@Hd*p5RN!$iL1lG)ALH!NcVpb1m0l(arSD0k&!3R1"YDBB099*S&d'4%#1 I8elfPMl[J-if5Cr$#8pb'5#kiL1J8-*@AALk,-5J-NjFZj2$Bp9AG1*1ld($(Qb pAY4fqN%JUHh`3m%P*9#C,e$EVHNNBV2@4,mT4(Q+Z[K(```@USaKA43$BS8b#5U bh%GPrih)0S[qP8"@+'#c(apQX&!PhAml-Q1&-JNVFYaR4IpSC,$SR`f%&5U!0Vh -H)@+kAU&8c0S**4JLk`$Z)ZN(Ie&!CIKk$L1-%0(qAFAafTPH5H*e0(eppabr&G %DRPj1Ijh)(*2!haRQbq[AKZ-IPbimIFA[qMAJRFE-pS0A(Ml(Qlpbpcr!3d0&99 5CA0[GA*MC9"KFR0PFLj38%-ZY3#3#X19!*!3*2X!!$S$!*!$&[q3"%e08&*$9dP &!3#XAQFKVSGVCJ!!0C)!!!C1!!!,!3!!!R&SCM-D!*!'%"N0`+fIc$bCRf4P*UI F2$`l5hZ2Vmc0HMFM+f'$YE22+fVRTS2-0[ZSHE,6@YRk((r&cmRq08liaBlm*TX GiE&0q(QEl5-X0b1h+8m*[b5h2E,2RQ@56IM4rC+Yj0Q@m-`RE%XBBER*X8hj,E` ME$0b@pS+I(8PXjHr6jLhkERA0Z%AME!Lfb1F$2D4fdQiH,+"m5F3J(CH#F!!B(B U`'I`VprXMraarLB'NC0"Z-N@1BArYaZhcV*%6LLRUR(e0D)FD*2FSY-PbD*NF6V YPXGeS!1(`ePMEiLH+dU4"!D51arl9UkH$'#X!VMe[Yb&PXLaKhBZ,PePV0rkd+2 @5BMNP2XMZfGC)!2r*[`R9chCEDaq!c+D629Ek@l3q0fDZZV#T-UZ#DFL`DU99@f &!%QF@a,r$$'b90acB8M#J+SP!1@[XqaTH%-(4MaC))NU&Nd6L6!+JLBU4iSG1`! @4ZK$F$'b'fed"2`ZGq$G-TpK$0-KK4h8KA[1ji2Sk9+`F+QehV9"RbJ8Lf*`N!# 4PNN`B&S`68"b`*ZKN!#N,-PPfH$9FZQ%$f*CK90BA,5N#+'TlfRqKFJ%25E#Idc G-ED"IL4r[([eN!#L)9"FmKQ3!1&`ZBAU@J(YPQ#ICFr2Ycaq,SZ0$Ycji%%pel0 YE,4ZipNmCQ5c4CI"PZQY@#Hf2KRBeck2ph+`C[!PlRrH24N&6SQK4dV"KV&#)q) V6Rm,'QFH9c#!!`#0Y["[6Z1rbaDfK9pjmFB9k+I5i6"Q[K[2J*i,@+@YrC[23H0 0jE$LC"1%Acd%iA[AfF)l8rLGm$fY#K1&Rj!!B@ZRI,EfADr#mPp[1FF&NI$Q$V@ Z89F9KU2mM2Q4Afq$Y(p[SUhp8EbYmS2-PA!BrfIjh(X8'KFH`I-6R%XRjr`@l1# 9cX5Xb*Lp$,SC9Qa)l-IDYQ!`))@XjD,,)dUbYGl[[422,Tm3[@(Er+26E0lm3ZD qlKEQcMl1jNdmK'ei#a&QlUb-BNJfJ5RA(1[3STF6NX#XVrf!!fk9"q(S'BJ2QlI Jb,#Q(!-C6N%RQeIq)R8#Fim[TjTJIX9TQ+CXJE(hGdb&C!1[aakfL2q9b)E*+%Q kR2-pJ'Ldk1Dd6KLlGhUXB!9+9f*@e[Vl3M$A(m(riCE)Rfb)cm"l%6#2+d$X&2i c),1p$[-IQ!S'!q,#QIb!Z&2"#d)XraHlCEINKI%P@,ja"GbhYhDK&Q"pH2jNc(r L%*LcBkilpkflEGZr(d)%KB$iG$d#jNRl@)R*LGJ,b'mEelUaHcFTqE%HP0mm1HV #X2kNPY3$0eJGBNJ+h#9+Df5K0Z6bHeb54kMd0NXZDEeek,+MYP*!)EGbj3EBh43 j#2$`!GE0ZXZ6)`Gr&B`FI$l)1SmG%F``kXC#m-"cc3q`lM,K&693AC042&i#Z1m V98XLAEVDajB$l'Nk68V3AGD"rffkeGP6`'jk"[mrjpAZh"H%"60X38PNV,YU6pp Ge[P`"r[Cml`Ql'RK11rBlNA*Q'XAX!hABiiQr,IJIcRq2G3$ejhA!DA!AP'fJZD $$YLf$qJ!@r2E(fX*k%$kq4kJ5C)014&RE43Y4!1j(icN8P@6@ZReVa'P2Yq40*` K%6F81Cf9eb`e'F1LB0#R$F$$iDJX6Z4*3dN8+YD5-P$T,qC`1#[,0!*i00K4!,3 !kPT6@h1*i%FmkNUAeZNYc5e"@8E&fc@h4lXkjU-2aLZe'pid&EYm[N$!MkEC&h4 @6AHUph'!h+ecIMDEmK!2RF8pa0IND&#Q)rhGSI!`@0cjqCS!223@pe""2Z3a01( lX+l"35*AHBMVVSdFPAjYq@qrC[6`m!AFh3ZFS(Yf+@4Y4(PJqaMK@6HM8cAX(P[ Q%pF*6NN-5J'h+-X"58)([#"-ppN6Udk3!1&4H-5V1JEViA6*EKcIp$H)dKp"&kU C0J!2pf#(*2SM@PFMmIL,SPhKSE2%rCLq4Yc`plkAKr6HL'8SNYIkf4hC6A'pAcr 8pjR&AKPG3frMAqalJf@p1-M$f#L+lTE*R!Calp-2-XG,lGA$rLb$NT6&(CSRi'l l9&UjVj*N+@k'4RM),ElQ4*idCqPIUiSm3QdD!6`S$"EXN[r8PI4%R66-QAZEGXZ N!8Yr-FI(NiCq(TS"NiEUiXA#F$dFcSC%2E3q*KDAUrVaa#,1iqV%BTM(b-4LZ+i M%iX%$qf&LF@PHQJk6#ck'q5ML8@#amM%iK+06bB@F4lD!4-,Jd8@9hI-$j2HUlb mJrT2["!r3"--(HTr6$qd*#B@fKq6KXY#p2'NBF!jD!C-'KUmrTYR#q[Qc[RAT#( eRdi4L3iTf4@R'1GaeH%0ef2%i59iA(%HPhKmiMcL225@Z#SQ)`m8KU'4K&*A#@h !J0-B3b4%@4@c5j-'E3!PLr(`H3IPYAFb00#aa#23M)mj"hK80lFQH)afr2ZC8%m 61ZciXP%,)0jAk'5X&PH1iBjhq`Dpq&MLiA2*XQ!2V!ekIAh9MhP%MlK+%k#Zej3 M0[1)cdkZm%JSID,2BJSG'Qbc$b*eXHY1erpVd"Jq4CCh[SfDcDF,N!"91VARGYD *rJNUjZ0[mQLkd$0&eJ6JBIHKf8!&3RhTpabMd,Y3iD2[-bK[RqIJdep0J(V`UDd Q!)rSe*CI(TRDAUJVm8LbY',e"hLmhapATNJ*(V6E!'J&a+IpbUG"QJ"paUG"QJ! m+)bD!$T%BG!%k!mU4mmb#$-B916F1JMDIS"AF'X%S@N`LZq2i&RjM@GJ&%$ka4d j9bh$3JcPl3N,,heR@m`R3Aak`!Xl)C!!jcY*Nl#J[+jcBE6D!kEB!rr,6NpYPQJ EQA$"KK,m*RZTGcI2HqfPf41hhbk(A"+piYC`#'VMU%l`Q)20rim19l,3DBbbr5B @CY$MTK*9Fmm%LA&-MAm+4Zi[0$mkLCR9A9ED-r%NHBH%YHUe6UUY`HF55rqf%%8 $S'h2Q+`,&X[#4BhfT)f%cS5jF,Q$qQQqK$R2APe5QLINP469&H(4@@'[bp0Bk3" Gb9AYd,J,G-dU3ZH8f+#VEa8Nqm1X66Nd3T[!MS%ZZ)32`(0`FG!UA2NbVEDZ*KF clZqPeP$"CrLd6K'Nr6!HMh`F0k%'*Z$abi6G1KX`VfiRBHjl!&FhkRp*f)BX32q N2dPBd!liBX[!"`MLRfNhPf%hBES6J#p6$&f%e6i)Gq#8LR1GX!hD%H0M5%Q%Vq, BRMrkq+)2[Ji`MDpLQr)Bl%'-VpQDqa3mJKLZb!&B[a'H3Xa+f#B2i#+NDIc4pm* [``X!H9NmGc'mKYJN`QS+i2m3Sj9T8*P,(C1hKV#FS`a(Ic-U##YiJ'8LaRH+V3U b+BM4'KfSPpKXa"iNV1KTYJ#a(a*frHZX'V&R#I[#AVB-B1C@`QDf-kahrRGi,HF c2c)6#C[c%iEZXZ"q`MkAblDJ[H3jT[q1I31Jm!hHM*fdJUL`Qb$pQi6TYK1@lT3 #VD)l*'!rbpk!heMUmBB#NU%Xi!mC5pH&**GXiQmHe$aTr!e6cdZ89(VPCJpia%@ L2bAfiSeILfD--P6BT0[Ej&"JVA#EZ2kZJ154689ZH[H)Vde$,E+acL@Y&N1QiMD [ck-Q6+8RqbV&$-*+[$)1LF@ecFJr*IDHRqG4ZDDUcbTGIY'ATVcHLPC-K4YFNYr VAbdEl@816*bL[,qPI1RUZpGS`LJHcCM+GqkTp5$XE$eLQia'%B62$RNqY5iQCG' &3Y5%driHPTPeJB#[6-+Z+r9lP2Y*r%hRr`#3!`V!&60mahip4Sk4+5@-8$+Mj#J j2$XbBNFB18BBRT+9h8U1%SBr&Tj6r-8'C)C2!X$@Nj)eMae!&cP'MNQ1VC%")i` -'"N`3XQc)mI)N!!GBH4TH$*LC-6)-r+-$"PKC%!*)e0''"N`3JNM-dUHN3Ql&IK U`&CfK,hN9X,)J+e-!%C3aB!*`"P@!i#Jhqm#!-0c&Q$Q(CkIFHIJZ3r2qe##ik$ "[1lf"b,J%E!h@h!(VR4'(ddS)i'QNYeT013"c&GY2jLc`TE`4BM8MZ6YcaMk,Uq fH-&GqJ)XXdrrP`YG"llaD(l`6NPp-aNMejRcd$mS[Ed("jX#Y)FR@I6J1IR,VQp [M8N&6cZYRENeJJrS2@J[8Ae$*S3bNL,NjNKcQ8Fb&)i[)Lk-i0T2-A)S4c36&EA Q)Sq9JUmCQ+M39rf`0m9RNbHN8AUrUk,Lm5Jf4#5#249j[P)[dN3@+UV0Xl`eD,I $A[Z2)hQk8bqqUcLde)ZjZ1S(($2qfi[F`iN+hIEMcTk!FD[m8P'c,p@A"ldiA1A '9!cfa9K&[Xe8(,CGDkkqX'!i6RdU)fr(LBUU92&A!a6GM!NaCHT9SMErHf5bB43 2@V3",D@U"'fq[[d#UCeZLcC35UNU-FPkH))0EFGUd!BE8LC10@UbG[%a'hVR,RZ d`5k6909pb0SSU"[BAC+UZLjCFmqc)EfR$HLQE('9i@4paFYpAI'JR&*9CT(&#LU $LLRl9IASda[EVe*IDB2r!qQVqNmN0qmqbp+!Qk`Jm1F(QZ2bpQK8J2!0!hT$$FY fMPPi1dVr)FH+BNRG-CjJjH'28CYe'Yf)h[`$!*!$)5%499*PFfpeFQ0P8'&bFf9 b)-3!N"11!0!"H`)5!*!$!3!!,#%!N!F@!*!$KJ!!!J$rN!3"!+jkh(bZKpaT!*! 'bm%!N!BjIIr`rrJ!N!B6H#bK!!!"!*!$!43!N!-8!*!$-QPb!eC[E!a6F'9MB@P X)%ePER8(6h"dD@pZF`4)C@a`%e95CA0[GA*MC9"KFR0PFLjcDA3#!*!YVSR5q`! !1R-!!!&'@@9c6QmJ3@aPFR3%8A9TG!e&C'PdD@pZ)'CTE'9c$P0eBR0MFQPLC5" ZB@eP$d9NDA3J6@9ZG5"dDA4XC34B9%j%#R0dBA*d)'PMEfi*3Qp[E@9bB@jR"%K PE(!)5'pd)%YPHA-&8(*PCR-#6fi$6fCQ"d9iBfaeC'814AKME(9NC3#3!a!!+`! &!4J"pJ#3"J-!N!-"!*!$!43!N!-8!*!$-J'dXPJGBJ#3!a`!-J!!8f9dC`#3!`S !!2rr!*!%!E83c,hA: