Date: Fri, 7 Oct 1994 15:03:45 -0500 From: resnick@uiuc.edu (Pete Resnick) Subject: RFC 1123 (822) date formatter (C source code) --========================_12660869==_ Content-Type: text/plain; charset="us-ascii" This archive contains C source code and an associated resource file for functions that convert between the ASCII version of Internet standard format (RFC 822 and 1123) date strings and the Macintosh time format (number of seconds since January 1, 1904). It is a little more lenient in strings that it accepts, in that it will convert some time zone specifiers that are not allowed in RFC 1123 (but are used by some broken mail systems) instead of just ignoring them. But the strings it produces are strict RFC 1123 date format strings. I wrote this mainly as an exercise to try out some of the International Utilities like StringToDate, StringToTime, ExtendedToString, and StringToExtended. It is certainly not the fastest code to do this, but the code size is pretty small, and it's a nice educational piece of code. If you use this code in a project, please remember to give me proper credit in the documentation or splash screen. pr -- Pete Resnick - resnick@uiuc.edu --========================_12660869==_ Content-Type: application/mac-binhex40; name="RFC_1123_Date.sit" Content-Disposition: attachment; filename="RFC_1123_Date.sit" (This file must be converted with BinHex 4.0) :%9*'3b!a-6)c)%4KG'8ZFfPd!&0*9#&6593K!!!!!#3p!!!!!)Cl8dP8)3!#!!! N2A*-BA8"NJ!!!"B"1J)#$9*'3c%a-M0%BA4P,Q0P,Q-!!!!!J!!!#!!!!$!!!%Z B0`!!!!!!!!!!!!!!!!!!!!!!!!!!'k%!!!!!rrrrre4&@&4,38K-!3#T9k`PUVT 0&3!!!ZJ!!$0G!!!#*`!!'25SEXAY!!!!!!!!d%J!!!3)#%#!Qi!"$JE83e!K!!i #)fSKq#EL3)3!a"$X!m&*Q6Y5M!b*%82'$#*Kk*4a-HD1J))!U"6"3Q9*%#4-"Vk 85G-QcSXd#!SG5M4JULZX5J5Fd5@J!(3`!h)`-+6*%cKP)LSJk+(*P$*dUXb*+)% JL$0Sk%#S'P%$34&0M+4a3fC)4"%%5FJC8fDYP)JU#*V!-f')P#C()XSJU+,0'cY P%YJGU)-JLb&Kf)aTNR@J%))X&@"Q`bDLNU%%!"J!N!!k)!)!#3J-H81Q$"@#Yem '"R$K(!"@!ESBB38S),F!4J,%%P#(%JLL#mLNY*fQc8SfC!#J#0MlGh!M')S$J"G !5B"L![)i*jT!ZNSUeFXm$iJ%GT-hEX+-U9Ld[rq!Uk8@f!!"G#0!(`$J!!!&!9J M!"#Uk0)%AUTY!D#&rFQL@N!(h1-D!KF3&!-)Aida"a9[K$4555G04j!!"!i%*-% ()3BN!`JUNQ355Zqp8H*B!C@J)!!P$"%"3613!%L(('R!-F@5Fje"d!VE",4#1c8 #3!-)4i"Pa"YbY*'5&'A-m8BGHj8Cd!Yf!I$#%dF'9!-)5EL4"Ke*d-''&(2X"@3 -m338Jcm6%'3$MQ@#PHHHICT)d%8&+C333AS%-%%,L+aJ"8%3-64!%93%m9P!)K4 KK"1h"H4#%e"-m4GP4&"K448%56%!1rrmdpm!kq4+d'X%$G#1V`'9&Z`la!+!Le! Yj+TV3"3)"5p80!#K)X'8-Q2Q8(NMaFL3!"JaC-`J%SC1'43T"KCXq$$La)TP&Kj -L&'MaJ4*h)#JJbE0("BJlT3"8@I16*Bcjq5CBl%0L$4Z,-Ta8c(0'k*X3-Kj8iF 1d$*c9Vi"-HDSR6*bk)!38iD1c$)U1B+!+2%NLM"Zb)!3Ld1'M"48hl5"`bB0@Ue N3,j`fLBR(6P!cd4&UpC0REk!ai$)Dh&`fT9TqXjaXEC-R$TTj%!p'@C-eEPSm`3 'B5B0QjPhdV!%F8)e'aJRB,DQ`bC'E0DZDG`qBD4*%#Uh#E2@mX6*L"0+S6+9-`D U#j-%%k3#!DAV6#P3hD3CX`BQ4""+d0B*)bI2f"`jD&!f8UC-8M1DEdkYH4-0e*P ,QcjpZE8TL$0TA!9#AbI"X43F@&'P'4QUrD35'@q-F4KBG"4ee%pQJ*!!"e1,[8& C%P5KY49qCA4QReSAiJ4#5N+jd49R@UNB"KPND$C(9#,BU"eh3'"@aaJZP%&'(5) m4p"*90M(@Qqr)@IMFXh&&%C8BfJ'NPUTVAD9((-BT9)-,X$J3J`J[*&K%pZK%BC l)##"%"TdR"!9Ne5!8!5$G,`KadPQk&RC((HU"Y0d-D!h`iGDZ34#'(D%B9SBBTa 'fP)qXI%'(9'CZDJE4qA4"P0c8J(&SXbeG09Nd"8dK*TZR!'9$LHe)1ZXXTi8%3M XL5((H1@GPji1#34"Sj!!)%ca9aT`'!YBUe+"`"0JF-694Pp"1BCP5ih"dGP-60& KC%%*K#ZZ%jI@9e'aabCl,,-3CRH#9[5"X#1*Fd!*&8aG!@RV$5!d3GiBD2K+!l$ "$U[@%9dCS@FE&@&AEah-3E@T@LISFG4a),"+4PfYITX!#$38@`BF2A%PKm$!VSU @UfVP5C00`a@(mC-30dHC4Lmdd-!)3)h"4KeNc-4$%A)XaD8,D2L`Fmmr"`d#$df 8m@Pj5#[0XaXq!bfd`rC1P[65@$FYp"4"1&&%e@"Rl6329*5""ae91-@'edSh%"! )6Q`h8pP6J'MJTCIQJ@"8+Z6ma"4%Rcb53J`j40C(&U(!a&&R8'34&C(0T!*ICF" N+E0RY%((%fDBB4-G-#NE'"4r1E[Z'5RXd)$UV5jNH4R'9P66@SjlG,Y)#-f"!Ze RX(lbXi("0(QV[fG1%1Ha0f$('fQSTEUkbjiar1['6bSAmDPchhUHa%GrH1)J)%b (`R)`6!IA081&JK1(XHmqm35TS)*KEGKI%8a)))bN91#D!+EP0*kMh20)ClUZ4'p ke9Z4GZL3!!6D5'%1c"(H(0#J*kfSB%YL-"j-0YK"JP62H!qNRPSFeT8+XZ'#'83 "#E0#%"#+d&NFT#%"bB"#fGP0)0%K3KP+ik+9+)PQ%9X4%FU8)4A0jM@lFBeYC*1 EhG!T1)mj!A'-ib6Pa'm1I2+6@"kh'*!!S)SJ14Y"d)JiNb3iJ3T-q))8LM#&*e4 "#N1JB`)LJJ1Gh@d)9V+)[-T`KhkCk#Q6'i1&9&)[)f+P$(+5ee4F4#bAGHN-+R' E44iM"[0S$)d0S)2JK$4%eqeU$&VC3`-5B!3jG%BVE#J+(E3Q1eDk%T8Jq"b!CKQ d@MlV4kPFC3*dZCLj#C%0&3+"$N#!JeS18i'KSm-aNlP-'G#JPRhiMqL-%%["b#k E6L#N[`#'b!JYdSGh8aB`)6B6S-5-LmPj@-3SNk5C3'&+LN`+mTLP+'eaKeM#+F0 9h0!#E4Q--S8,j5MAD%TJJN#9#CLK9LcQ)M3CTM'e9*B-DP!$%&#d$%i)3eqq54! Y(+8-+HQ6mG#T!K!-`5TBLC(c,2Nk8*k[D#*,b%)imVMESB"c-)NQ!dmh`YGPT!( ,Uaa)-0HAjf9Z"`Qi'e2P%aFhE!PemM)0KUJ#-Fd%"6*0&3i8T"#%*M#aJ9U"Mec 5ei3k*C5B3LhGkD!DeCB1Y5X1FKC#MN+'U+M9*dGS+bL*elepRJ'UkDbTbc3cbk' !XJ%36HVYKQ#('0PRUR5YDf@U)JHep1PN%LSDKF#UZC`C4(`Rk`Rf!T0CU8S0$RS LMhN-#mS%'("MlD60E8q6@FhZGLDIa3eYG"02Hp@@Q+-V(8cS`!5`p2CZGp@+F%l 6UY8%&bJY@Q3BNP+K5*9fPI6Vhm)U3McX+%Crr2-I(4$E8[JPX5T"FC4fQ-8jMjk 8012eS'R9QlYCqV@r0@PYHlX#-8C@b,p-*+epLrKCpcQ&@3Q0D!ke-SFf@!%VBTM $&QE3"CL%0JP%d$#(fGZQ0l!KD&c#,fLl1YST9!PC@[%A89ae[+im@$#ePDJfkB# %1U4P3FqeUecaqPHfeXQG)N#$MfY%,!j#E!iL8,(lDUY*X!50$$L!`Bjlr'-KCCQ ZGb[#fka-V1$#GdYGZP#%)93(lhj"+p(N-T2*N!!$'`MB6Q015jRpG'DXT&NP%El TbE!LKjIf8PcKZKYf'UZ5UMJY`UZmQrSFb9A4IV@qBL@V@Ff%9Zm"9V"TD++5kUZ Y'a(V$P2++KX3DYT3rp4j2HL"UZ%#d35%m`lME)Q,%VR)A%E)QF,%cSailC5MS!! &Z5kR)SX0k"5B`&*ML&kiiYTT@82E"G(NCKJ%Jfh466--2J`A6UD+Y&@c!3PT1%2 !C!d$*ML6d)DHLDb&6BEQpHAB2VkNLp4#6"8iHpbC+lF,f$#j1dJl!Dk'paZF&J* CFbTa'4%AB`X-!SAh8TMePE8*!0iA&i`"QkZ-G%Z0N!!CRZJ9AY&b@Eb@ik$X-RZ laIeLE91L'KI#N!!N&Ek`($,XBBL"H!i(&lP,B8T$6$q'-93GSdHNI#lD4PLb)#( HUrX#%dMT5U#h+fVfB+)G0NKEYIL60@eA!!)8U'$XBj&f8UFUGD#ZC&HG@mPV`6I V@TkpTLZ3!2AQjSlhXGJGl$@90A*18%[!C`m%BZqlfG%HJqJ*IG)U3Q*cSZ+b"Tp ,4IAp+*@,&Qr%TbpKqAA[j&&JJ[6Q&bBQ++!!ilja"MSHi@C!JFAPlI!h32bK1NZ d3-)9RHKkfXJrLFSCU%IIUA!PVbUb[&C%%!XdS'&D)KMK9"LfKTR%HFN,%QCdBJ! $,A-Z+[`c@B+GR'+kl#lm#G*8'i$5&1GS2m)*Z(kAe5*VDTm1"#m!J3eJi%cjcaN %*5"VqpGpr5FkFVBJRSF#rSH!*D"r-!!AC(GX#dJXqEGrF0&5h2H!Y54-%dKR0Z" j(HK-H&"RHB)(@8Ck(9KRU0H"@5CY`R3hkN9TR(Cr44CB4aB88a%'TM3Dm1GU++" H$P-(b%3&Sj3#BVC*9bB5Vi1#"SKpAJB$-,%rpA0kC4GH*R02@8%i+@"fURG!-d& fb@8'+E"FI*FpF0&`T+&H6l!%Y#C-#6"lRUFYVY3'LH0-fH3H-&0V#A"hKjGhce1 'Sd&f-H"-HfKiSb&iV''(Up3(ZDGSpf&Cl438@%%8,jF8NLFa,R-(DJ+*jL%6QM% LRr9G#F"#&'4"')4c&SCKr2&K)5CY%qGBXrG0IY45,f99-E@$a8GDP(%3-q&Ld"* MD,&Y#3)K#D&LbF&S)0!S2b-a#88mYK0e"lBl218l5r8'Lb0$Vl0FQA08K08kKN9 Lq1-bIDC$130ePq-mQr08QM99cI++J*BcN!#e5X48"mhP"L08Md%'!P9J%fSK(+( P944@8p4e"UX4BC0P)Q9JARUL&NJh"!J*CV5)N!$'5$`bF$X6JblC)`2Xq(58Fc[ Q98ER1&,LiSLFe6*6`8%R"T)c)4ce&@%kPR1UZ'%G9QNr*j-NKJ3QKQ*qa@FXpP@ q#'1'0'-*FMSh4MLQT@24C&(Y0`Ij1)0ij8lVGe%58i1#&@(1q!Dh!f"4`41k`j5 k9aR)U)ae))Urp41kYAVj@*E"p86%GBQe9CBIp9YTZAV'Q(Rh"44p8PXQj5)Tp3E Gme%V0C)Y"3A%*a4ek6bDKjG6%@()a8#ppC@qGef51"6Da9f3!$*!TK9Hr28k(iP H8pJq&8&LSMF6m&8K3$%DGXPJq99EQpQ9T+'9GlCS&-H9#+BTU3PFqA9M9*CR9jC P@qD%@-CrN!!jC'P&+F$R6XhhI$kaCNcKCR$@K20AChGfK'6Q@Aa'G(p@@aV&8A) h&m56PMQC)-(PBjp",4DK&NjR@N*(FPb5+"1dA@QJ"k3TNF&&N4BT("5jNDd@Hc3 R65$KN!!!Fa%Qd*!!#(Q'Y3Ga`Z51)4)8p"BhTU%DD3!9i5C9pX&)H&8(+6FI--0 bf$@*P4Pc%@18Up5I0RH+'T5+1lH+2YH+%cTJRb)Jfj88j8NKeP*aEq0+-B%Y1H& 2`'@F+T+HUh3p8QGBC1LG4Z9,JGHGUp8U,ITjN!"BD3#C5f""N!!"BjY+!U349Bq HaiH"X3)Vd+5eH&@8KR3J))GDBD9qFAJZSi2QQ*!!#*&Md4J9XRD92S8#+%5NcP+ 2U%HJ!BTkp!J@HlT8feK,VKB#f1LD*N!D&E&GpPB'+G#'i6*fXZDPIqS'cM3(@YS #XPDT'rL9BAU,Q1FmCTTJ2kTB13J#EGUCTK94FHTj9cP9ahDRfCLRJ!S#!rUI#1Q RHQUV5$G9dXD)3TF%'F)T&9FdHX)I330c@4)`SGT8QMHUD)U,Ci"'#E"+KAUS#*D SCV#SE0#SF'%#L5T$@SU'$`LTV0U(QiU2`S5TB!%#QNS6@LU)cX5Pc#*fk[U#,G@ IGP%AmNPTYhP@pqFbmVN8Y49rSU18MH&jr*GlQP9"F5'%DR&m5*DFd-GdL5*U-c' 3!+ZK+"h9Jl((VLS4Db"3!d`!U@iSDAJ9H9i8SXfLI$*)R,pRJ`8,HbLJ2N#iXU0 AHTrT2UMAKEL&HQ%)&b,lF%9MVY@+D(p%G%p+@fZD5Ea*,1Kh-[!A,QDJPDlk1JY "RAT'"YLiG34KHU#*1Qli-5"3YQClYQLEYQJl2iGaKH5"+35aK34dPPi)!Q$SHL` `YQUlYhaVYLE!JKV)X*jk'Z4"DB6Q*l#9&9k5B,5j1e2,USM+ERM3I8CJ"1%QQ#Z #XCp)(M1K56J+-16a5Rj@9+D4&2'L)Q)TLZ,LJcFl"d*)"d5))#P3YDdUXP8,"a" M&$@K-PaLY*(DUR`JDjk,&Q8!+X6$P'1E!,6VQV*Q"QUi")5B!)b)D'2,ZU%(&Dm EZikk[!KQZmrVZjVeU8@R*"6V%bi6P8YC@mPVJM"3JRA'K$`'R&QfJY!jCh9fF1+ 5P1bAX29A[`XLRB)lE3Hl[a)MD`Si`&)C&3fBJ4"BGJG-"`JV-IR(`!6KJ2MlZj% ,!Rj`'QB`1P[#ZmL,D(Fi0c1KKaL-B-%V&GAR"R8iYY-E,L1FKf2EZ&'4`SV%S#9 #"JjD&diKS@li`YN8FPmTV'BT*A2J"Zq59mcRI"@VI#28(PZP'T(N6LULHA9KFQl TXFF'XL#!KM8!&hc!"`j-Tp$BP9Y)`lDU`Q"aHb+l2GRcM"DKP5Q3!#FV$(&'Hl) Y"AP+BX8ZS49C[+S*%*Gd+@[U-jSSS%8bFaYZ"%Gb4%GfK%GdK,qZ*XKe1l5QiEY SE-0hdD"b!k%q,#iaA-*M1lBSZl6ab5dBZf!CfmFcQkAY+QXT`6&PS$kr03@RM!+ 8M&XA$*LYBm"lL9*ZS&*rN3)UN!$,["A!Gc-jEl!'Lk)9*3)`&4F8[8,&HhaI9ka IBkZ*TR%4[(`b2&"f[pbA+'4fa[b&Y1S'MiTlL(Dd5*Z[UDaj4#%CT&)I15&5FAH kQlKM%4`9UG[+0&X%Pl&G3cUVhG`#2["4)89eLNV#b`9hk@c#!Jc""#bRUQ`m"[e 4qabp*l`l*L"V'ca%(S`9)+c4#A"eBE!''JfXkh`h`Y)S@$-6hG`X+Z)LEa20If% HMa[)*p8p[Ra5iMc-X6V--8efA5+ICL*$%pE!"Ah3*jA3CE!&-0!&VpI1KP4pcX* 1&GdkLR)(#pN#m)P*3V)$KL[0%6SBRfK39qE22UK,+4$6LGTikVc1-Gh6I"R-IJR 8GLV81pdkJRM"dZ[#2ba-d`ZXeKTlKSV'fXUYhQUZq!S#`Y+2EQ!H6PQFDb@c8$R 4"GZV!AGL,S#qJZ5(qT[!`1DT5NYTQP'5-MeUk,LUE3Smm09AT+IC#Jdp)#GdT%K T(8UCP3LLNpFXQRKjpY'*M`5+HL++T&LL-356+GTcF["cVNKJMNA$X[K$*h%pCH) I-5SYjPQM`jZMUV'Mfr*lTCSpp0358C%I$cB6DJ*'dD%L-aS8q$)(LS3J&hNCj8) 9DR*,3K%9q8d'MNBX3-%61CaJA$%DlR5*Ce334#`6-6(F`cFD((3',C!!'LQjV,J pQC6S*6#(h[X"%`aH&4$l-[4m%Lc#"JZa`VF-&aaH4#i$)8EN%KqL%LU5fe"aTKR bhmjbbPA(53J4"[4"iN&KiXX-&LQqS%QX-C,L)J+Z&Zq0+4iq%blH)#Tb'G["c-, ")&R4L@'3!!IINM-3C$hT)R9r4AINBe3kdidR-qD[)cYS,KAIU6-3pC,i50Ae*+A 99D@T6&XF(#2cJ69bBCij0Q%JB0m@m9)qYPjI@HG4Qf"[J#!U3HJ5Fjh63U1"AN* 3-GpKMERD0UdZ!a3-XQbG+ppKJ#"NX%aNdKGS!AkA8R'L6ZVDL9UN8EVIU9P"S+5 ae5Z`PGZT$H8e$K5pKU9#m!BQ9L)U%8XmF38k#T'idNh0iZRE!4+8CZaD!EVkR5# S&KADR#hK(@&#N!!(JQ4P[(YRGHicE`!cN!"H*U$ejk0&lD)VYHUT@AUFX91k'Y' +T9bXGfUH29lDUDA""Q`3GQlHGi-SMe0#"mMqhCkhV54F5j!!EZKIa@keT-fR)Dl YkJ-Jm)$Uh0Lj3d2G%K1U%6$%HZQMVVSLlqUb0[$VQLA3,(YT`EYEQZq"`GMLSNJ `F`+(V%aZ52-cF3)*J"b`-[06X[1XJI2L3XSYYBrFiJCX)0P&0!FmDScCACVT9JH JiYhD(LAqU1l9dXU&+Zd(Ea(JU`,prZq[ik@H0hM4qm,Ki[8kkRPr-CE4Dr5S+Z` TK`EjS@id%44DaH#Z`ZGMM5)hV[9`qlJZ$Y&cS2*SB(B`hbTH#Vi*S21XFI-r[mi dqrD1'YH8hr"-m99q@2*KRE``A(%NM2P!Ar-Ti21J(bkDIqMZ+VbYr[Q8rpH8[dB qMNa%6rQH6hpqPrSQMG+J$rNR`!9FJ2UaRrXJi!8RRp)Zl0d6,bYFE2&D"Uk$6[@ &[[PD!IdAh2Z%#2aE32cL!ZljIICG3(Jj(r5X)3,HVrV8A`B1VaA*liDdrlUh(bk &Rl`q+2DbA[CNKqq83Mb0MhL#4rLGJ)LccS`ImYYp"C!!K)%qirIq4"McZ`M16dY "2eZ9U&EI9jQ!i%T[U5h&erpU#KS#Ii8VM,%k6%Grf-fMLPjX$q%eVqeL%k+A"A4 r&dm4bEl0BBf5e0M$(bfJl*5j2T4fTTZJF9+YUfZJ!,$&Xmc5Z9Npbb@k("A0P&r +bj[5(e*)[)3Yf9'@jYB4p%+bSpq%SEN#jeE*$ia&mNL"-"IRXNUkR5""!rfP$(5 UZk'[i&1rmPQ5`Q9dRGTL"FZ5`c%0Dc#2T5`PiE,F8R"4%C-YCP8Pda)&Bj!!!@1 #BFX*RKGr8mK`eNAJ$Ei"1-#%44C(jNJGZ50jC!T)'eG6#&F6'ZSk*ZXVq3ZVjVS q%B1$%%J-PT3lHLB[GYDjS'Bci@p-(K%9,Y$JJC%hE8*pT-&MmeZ)'4'X#!F(#C! !#bJ!-9`&,e`p[Y!9dS'JmjALA9`3,EKNdCNTbR1CHY4DF5*9K,HT,[94iNB6&DL '-U30$)'H4!Gq%XNB)@h!#Q%&,)3T[U&hJ3P`-1jX`Di!Y1U4#a+&*fdQr%+YJ,[ NJ+ZSKS[L$-LAJS8%$N)j[)A(d!XP3bPB"'dK52K93S`6aN-!1'[L'KbD0e!KFHJ *M1"-h0'aJ81Id2B8,4$`!iT9S9Ni-f'Cf!KbX6if(aQ!L-$UbdQ3!*TMLQ+)$IN ,m*!!K``cRD&M2JL'#8`XV@KXZ34M$S'48$SC))6bj$21KGp@"V&)+$haK2`&%K- %K+*Nba"k)YhiZU53!,T%9$b5-#8%a%fQF1-6Gila-(YLT`d84A8S"dL-cK%$aZL *`!CY5!G[SKa!Lmj#,EiBNR%lP0eEM)Y5T)[)NbJ4BFTL#1PPHE%SRMMRmTAqiPV +KRmXppM&eJF#C%!Yq5`S3#`D*PNc!m5DV0#-#3)0YB"""!*#)EcEJk5*(*iFh53 FjJ#Mb#h)4dQ3!!GAFK@95#5"2c[N,1krXL048S!Zh)Yd`!U3!!Hli&h#i6Ld018 31%BKZmJ-0BY"E"BV"f+d(!qefa"F`6+)49%i!JC`@''1)d!ULX[a*ri&,c8*hdJ PG'5B-*+"R!3`"!KAF`YbS`P!f3H1f!"LSJVj%bfN*T)%ZjJ683K2&(5'%5LfP+T )'iNLF!a+`JJTUL)MFLl8K)$J#Zd+G,@+TjJcSU*1E)ZdcLSb1X!!)*!!3M,D,Q2 *+mBj33FDff,Z`B`Pd[0d4RI9!P+ND#50TM'GS-CLF5"P6),mN!$,+#U)JFl!c$* 42X-*`Zd6`4rX#"be)h'FH0f4(),('L)Hlq)+L%*5d8P#42ES(VZK)j52&b&kp!% #!""54N-a-6)c4'&dC5jbFh*M!!!!$3!!!!!!!!!3!!!!KG)!!!!!!!!!!!!!!!! !!!!!!"B!!!!!!!!!!2rrrrpbFh*M8P0&4!%!U4AemDU2m4`!!!VK!!!!!!!!##` !!!!!f")!!!!!!!!!!''l!!!%#!JJJEH!#!i+(#!!4"!P+%J&1#1J6kH*%T!!e+* (jP#EB3&Jm&N5!!5#*&QDB&P!*JbG-LjbZC!!-dI1'!%!F0+d+@9+%5)$#3)+U,2 QQ*irJ`BF5V#T8kHT+Y5,pe4"1#L!DN!*%%$5R`"5d+KaT3E2(`(R!)9`p53!!Je rb1*"UpB9&EFH''e*!830(#T9"%#B)!8)(LYE!iK4*#A!#`TE%FJ!Xd*,%bB"rK' D3qJ,Ak!!p,`,`1!)QcB6bB$kNmY!@JD`bXLKqGD-Jp@j#+3&!3H""e!MiUS*-%8 X(P!i!i*``@)(LB$`!!"k!3$Fdi!kVK--'S#DJ5Peh,6-Saf!J5C[a)FKVrd!P6T PjScARZ"+'6*ZiXphLS!+QMSdlHH8!8E)NBD!6b%`K8X!)NM3!8U%i8BGBFM"AS* 'P#''("4DH&d"693i"KVP!9"!%(!Bb%D*!i4iBAN%+"&H'58#%'-GE,aiR3&"e(& '(A2389i#8j3"adYYL#(E8`Fm-3BGEbJTKhB)12''(@8NZ@5#4*3a4TC5DKF1!!- da3))bK'%jR8"S2,*!3%T*C!!(J3P&`!IGFET"d%Ha-N*36,%k3a""MKe`!$JZG& LHJ1m9mB!pT(4k(m$&*J'SLi"`-!!%5UDS4JY9MJ!LR+%QJHRiD(+aUJq)QVN!%l 5-B#9GJc3j4Jj"G"#!#l%L8`"4V!4aKPc)('&&%333%8HF*4"K40"0#&!%N33F5` 4"eJKfaaTT'FXXJ5q)8FE,PQ,,!*5a#FEPQ3BF5fkkXV"VK&-1('%!95%)3BEmCP ,K!)K`J(#%fDB-8FCG""4la%46%'(J@kF-F3EF13aF-%(*l``!aR5-H,&"L1XX,d 191%'&@qX8BBE)'FmmK%2G'N'&"A5-8I,)LmF`49ST2(5&(#%m5A1'YX,lm(bhNH [dHNL2Hr#&33-!K-VRd%('L#J)%Hml+EJ,V)F1!baa"4E6(A%9fHpYG2hHAhY"4e rI,E9@'[0GGYI%e(bb5Q[2(A99rXEFaNcehcch)&IZh222`Fp01*Sq([dZNUrfc6 Pl9iV3GaB"b''Z(33rI)"!3q"4S9-6%'&&!p-6%BC)%K)"JMjlKXI%N9J384!!p! 6N!$2E0!J(C`#ABF!38c%#8@Fb3ZN$Hmmm)j1MGZ*!3!VQMB&K#!!,&pmH8S95Ve 6!D``3a&'f*!!!`d34+!""LeNi%)("G4[rre%e2""##$`S!-"!!bJ!!G)`!&+`!- 6Z!%1E&6!"MU3!!!8f%%&@-$!"eV3J8jaJSfFJJ)!$S%$)bJ"!))!J"m)S3G!)!J !#H)$JPMJ!Ndi`J!$mJ)Ba%!''f!J%T+JK#@X8)-!B))&+hK"*d`*!#"S!`!SB)) @!!!#Ch$$&!DK"#H'i!`%L%Bl!-!"%Vc"2#a!3MHfL)%5)!%!#M#"'R,#!K@BCdm H-)!h%1%,4kL"#4!`aKP8-!8$q%!#TG(8'4!!J@e%`4Rri!FB-+#"$6#J!!#!34X -m%J!j1!0"0"!p&`!J@)FmKrU%!)'@)!Z3b$!%-Sa3K(8!3!(4'%Cre"&*,C)J4@ FN301U--2m)36!q45-3$3S$!!B!`!)!-!bJ#!,J$J#`!`!`#$NJB!E!%!D`$!&3# 3!!8!9!%!83$!&!$!"J#Ha`d!(-3kiJ!!13"J$J"-MjAX!)!l!"!GH3$!GrB!!$i !S!m!m'-J!4"!!!cJ&Y)%!!)"N!"!!#`3!!d%J!-"m%"*!L##!*!!)!!Q#!!+!U# #!,#!9b%*J!`#3)-!f#!!1!L!$J,!J`$i)!"!#)!3!J!8)`3!#3&33J!`ii3!E+8 aGl&#!,!3!#d%J!X"m%)!`##!(r`J*dk&kP1E1Y@S8P@U@,hU4#YDd3B)i!9Z&)! +U(08M3BJ"3(B3J#k%)!p"+!2!6K'!*!!86jGF63!eJK!,"a6eTDqY!F#i%%2"#) ,!IKJX!'BK3"k-&J"k!#aV3KX#`83!X5')!"qm#K)T4'!DA3R!0@JD!"1%)!G"+! %53h!&c!+dcX&i!F"b%8!3(+,!1JL!,8)!#i#!!Z9"Q!%&Jf!-J+JM3"X)`$F#%! h!N#1!#3M!+8ShJN!-&d[)"-!)iJN!%5i!J!iNB)"f3%!Z!#!AU%!!#NBRhUE-T! !)J#JZqXYRRZG'0q!Z,Hq"G&Z$!!3U"N!3(Je!)!0!(!$!#``"rJP#!0b!S$M+@# L#5!)$m4V(J!Xi)NB,Y5&#E""$T1[H()Uc`-3B)!5'b!"*MB!L8e-%"d83!8`KR( UU##%#@JK2E!M@-K#ei3d61JPFr"A!QkF(a!i)3aY+%-49#H&&mGB"61q,`!ii3m 3$!!13I)(&kj-"MTSH3"Yb$)Q`0aPIiaj$&QQaJ$'8'BeaiF1ri$!!1iM*$+GS3e e&N!GkNbQ2H1+"f"''!$`F)!NKii-33)!,3C`)&PYbJek)!-!!#f')!8!(!1B3j! !qS'+!D!K5!,J`!$ZN!"S3+2K$63#G*,T"'Mmd%%!@#"!'0kF%e'[!G5L9N1L[eF 3K53N6J-)J!,XJ3i@`)%J(1LQLB!(!d!"Elm"m3%9QJ#&j!e%#F!6AN$%B)3Q")% +"('$&TlJK1`'K%j$+F#D"$*X5NJ(!"0Bdd898!pq["Z*![NR[FXC#!!3!8h(%hB pMMN8rT'*V[4qjP"LJ+B$!%2Jd(Kh%J$q8RS6J`$CES!8M$!%%-6JKM1JA4U5V(' 1HacN)###5mV`J)ehr1-b#$R+91D'18M!j5H2ZFL6$!)LPi%!iblh"A!1FjQ2((B q"d%5h'#'0`$XX`!!: