Hello, All!
Please, tell me, what Smalltalk version has implementation of MD5 message-digest algorithm? Or did anybody succeed to port it to Dolphin? Dmitry |
Dmitry,
> Please, tell me, what Smalltalk version has implementation of MD5 > message-digest algorithm? Or did anybody succeed to port it to Dolphin? Although Dolphin doesn't have a direct implementation of MD5 it does have a version of the SHA algorithm as part of the DolphinSure package. SHA will produce a 160bit hash compared with the 128bits of MD5. The SecureHashAlgorithm class is available in all versions of Dolphin 4 (but not in earlier versions). You'll find that for speed the SHA is coded in an external C DLL and called from the Smalltalk code. Best Regards, Andy Bower Dolphin Support http://www.object-arts.com --- Are you trying too hard? http://www.object-arts.com/Relax.htm --- |
In reply to this post by Dmitry Zamotkin-3
Doesn't Windows have a crypto package that includes MD5
among other things ( I heard that it sucks and is really slow but it is better than nothing ) the funny thing is that it appears even microsoft apps don't use the public crypto api they provide. "Dmitry Zamotkin" <[hidden email]> wrote in message news:<9gkje5$l2v$[hidden email]>... > Hello, All! > > Please, tell me, what Smalltalk version has implementation of MD5 > message-digest algorithm? Or did anybody succeed to port it to Dolphin? > > Dmitry |
In reply to this post by Dmitry Zamotkin-3
"Dmitry Zamotkin" <[hidden email]> schrieb im Newsbeitrag
news:9gkje5$l2v$[hidden email]... > Hello, All! > > Please, tell me, what Smalltalk version has implementation of MD5 > message-digest algorithm? Or did anybody succeed to port it to Dolphin? > > Dmitry Dmitry, though I have no ST implementation of MD5 digest, there is an OpenSource for it. I have it run on Linux and Win2000/Cygwin. IMHO it's not too hard to create a DLL from this C Source, then calling it through an ExternalLibrary interface. Ingo |
In reply to this post by sharris
"steve" <[hidden email]> schrieb im Newsbeitrag
news:[hidden email]... > Doesn't Windows have a crypto package that includes MD5 > among other things ( I heard that it sucks and is really > slow but it is better than nothing ) the funny thing is > that it appears even microsoft apps don't use the public > crypto api they provide. Steve, honestly, *WHO* would use a _ClosedSource_ cryptographic package, provided by Microsoft ??? What do you want to know today ? Ingo |
In reply to this post by Ingo Blank
"Ingo Blank" <[hidden email]> wrote in message
news:3b2eabb2$0$137$[hidden email]... > IMHO it's not too hard to create a DLL from this C Source, then calling it > through an ExternalLibrary interface. Yes, I've found RFC 1321 with reference implementation: http://deesse.univ-lemans.fr:8003/Connected/RFC/1321 I'm not looking for easy way :) , but counting on native Smalltalk implementation. Is Smalltalk too slow to run this algorithm? > Ingo Dmitry |
"Dmitry Zamotkin" <[hidden email]> schrieb im Newsbeitrag
news:9gmol0$srd$[hidden email]... > > "Ingo Blank" <[hidden email]> wrote in message > news:3b2eabb2$0$137$[hidden email]... > > > IMHO it's not too hard to create a DLL from this C Source, then calling it > > through an ExternalLibrary interface. > > Yes, I've found RFC 1321 with reference implementation: > http://deesse.univ-lemans.fr:8003/Connected/RFC/1321 > > I'm not looking for easy way :) , but counting on native Smalltalk > implementation. Is Smalltalk too slow to run this algorithm? > > > Ingo > I can't say whether ST is *too* slow, but all these cryptographic algorithms are pretty expensive. So I estimate, you get a performance increase measurable in orders of magnitude, using a C (or Assembler :-) implementation. All high level languages, that implement MD5 ( I know MIT Scheme, and some LISP dialects), use *external* - I assume C - libraries. I myself implemented an SHA-256 this way. N.B. that was before I "discovered" the SHA-160 in Dolphin =:) Ingo |
"Ingo Blank" <[hidden email]> wrote in message
news:3b2f473a$0$29840$[hidden email]... > I can't say whether ST is *too* slow, but all these cryptographic algorithms > are pretty expensive. So I estimate, you get a performance increase > measurable in orders of magnitude, using a C (or Assembler :-) > implementation. > > All high level languages, that implement MD5 ( I know MIT Scheme, and some > LISP dialects), use *external* - I assume C - libraries. > > I myself implemented an SHA-256 this way. > N.B. that was before I "discovered" the SHA-160 in Dolphin =:) > > > Ingo There is my implementation of MD5 algorithm with using external DLL and SUnit tests. Dmitry begin 666 MD5Crypto.zip M4$L#!!0``@`(`$R:U"K%5R2)0"P```!R```-````;60U8W)Y<'1O+F1L;.Q] M"WA3Q[7NEK5E;ULRDHG\`$P06&F=&(B+(#$1$$&,,8D)\@,Y*<3@8!-;,3:1 MMX#T.M2.K,321"D]3=NTI;<XIJ?D<=OTG.:4O(@V"I:!D/ (X944$])D&X78 M$.('`>NN-7O+E@UIS_WNO=_]SOT\WS>>/3-KUOQKS9J9-;.W8-D/MS)*AF%8 MB.$PP^QBI&!A_GEHA#ANRAOCF+_$'YRZ2U%P<&I)576]88.C[A%'^7K#VO+: MVCK>\'"EP>&L-537&G*7%QO6UU54SDQ,3##*/*R+&:9 H6+\N[/-$;Z=S+BI M:BAC[H!,@51V*!W^Z+ !S>KH<XR$FV&&4\8_G(F122GM4"JS*6:8.LQL9YC, M?R3DJPPS3\G\+X<3VVG3[PPS^<K-/*0]<V1 =T0+(04#PZR9Z:@HY\L9YAVE M+#O2W#62#L;*,E,B8_I1BVL82:@%U]'Y9U9+A$^QDNQ,+,1U-Z!S5-;4K079 M64D'E*[F.KI%S%CX+QU(KI$U[?/DZSWYNB"CR%C\2-#">EX^V!VT<(,?O_%\ MT*+96#)+%]@JA^(59)51;RLE#4:]3_\)9;%<1P1!5/HT)UV==YOW>Y;KZI7A M)7JR24\."%V3E1<]F_2[<4')ZC'_S;&4E!C3;+[<G+0BJ^A+8!C7NQK?\K3" M4O$0,OO*U7ZWZUW._'5].A+Z<F<)UE+Q-:ARM5N@PK778O[:\9G)'XHQ72 % MQK2L3Y1=Q;Z2G+051>("B=WJLH=6RHA=7W*^7"-#`:?9.=\FG<TJ;HJ'CF*! M$% #Y-=SD'M_CD/U^F9$V5%8E;V&T96*VG XC.@*C)R=`X#AP7 80!F@S*XK M+1)OCZ?=V1^P,Z7BI_%RWP!R2%W0OP5 YA>OL!'>:"VU6WPE1CV))5M84L:1 M6DUAD2?7N$:<@X@^`-YK2 "8]!W."&8<5 O05*<4?,_$;-YA/PY*[HP3NB9 M\0?*(#F4T=%W)..H>C^TTBOW^YY+M/TU*)+]PEF-<%ZOWJ_L(%WD<-^QC$,9 MW>ICI,:8ICSFVW;3Z0T&(SDJG-<*YY+41\E)Y6%R/N,4D(GJ3X H7?F);]N4 MK]Y_6R#?"MT)PKD4];?DE/(*Z<XX`T1=E,@`1,UI?](V?$-.".?B!'&"^@0) M*L^04$8`B,ZK]P*14;G7]XSBMO:GER!PC="E5PO*`!%)!Y <`$P'@2A3>=#W M7,)->=D[`7B75O@T">0YA- S$'J(`I\.P-]*5?P\[QHY+IQ/$+Y(41\G`Q3X M%0K\&A!E*Z_YMIE//-]8#<"_B!-"$VX`?+8$O"^7(' 8?KWZ!, .`/#@$/ < M"OS/*V&LP:RUPMDDT/@!A)Z!T"7@\RCPW<=7>1!X@O!IR@V 6RCP:4E;'P7@ MG\8)W1-N`#R7`O_98\]?0^ :(:17?PNPSY#NOJ.>5<:2C). "\'G*S\AW0#_ MV7L>_U> '](*G4D2_(Q0WR$PHP<R]E !"J@`4[F_+$4!$H2S*=222D"$;M"\ M2 70*P^2$(CP\"TW]Z+1J(3SDZ@M/:#L`)/IH@)D*H\1L0^%L/R[Q9_1A6+$ M"]VIZN,@Q)6,?BK /.4UT@5$V\R%/RS[7L9Y%&.<$!HOB9%QDH+7`?CS0-2< M]E+P/[HRNE$`C= )^B=[E&<R`A&3`:F/`?B'=+=_E!%"PU$)79.HQ0<R.BCP M'*KY8GUN#,*.%\ZG`NP0:![U+L*$.$95$ '>]'GK"0GX.*%[_ C@AB'@'=\> M_8("[]8(YT#_,"VN9)R)F(P,_/.#9Z=2X.=4@CAI!/#\(> ?Q=T9D(#'"UVI MU.([,CZ@P--1XT#T7,+3B<<N9]"I.DXX/YY.U<,R\&QJ,A?T/UQ,CA-1.*\1 MOM"#T?0K4;HK,"RRR<C 55WG7I0TKA)"DT8`3QL"WM_6?54"'B^(J;+)2*8R M?0CXR9BZ1R3@XX2N\2. 6Y3XUPC O06W^=#>-<*GL,*0H\H.TR'3824%#K 7 MS;T21DVS0G>Z!-HT8+I"[;NI][&G$:9:""4#3+0:, [32=,IV:JGE?]V/4+4 M":(.(9I"9*]ICS+7F _@-#E_OX:V'"^<3:6VK%<&3**RR_?<;;GG=^_ L41M MLL+Y]%&PI@.L%S_XVWT(2RUT)TL&8.HW#5!8:^Y[LQ=AZ8203EHO3+"*F;J4 M8&>^5S(WO/7.;K(7^_U[*M57KC)H.J&D!NW;-J%]RV\R88N#?D/IZ@/D#/1[ MPG025]")5[[?>IX<Q5$'@:%K]5'H]U2D>HH[N_M#Z#>D@ZY']9L)_:HFM[ C M^IT]U*\%^IU[Z,.3-^H7#1_Z_ONO3G\.2_RG5-=1_:)10-_]#2],&2VS7 U" MI57:7GF7!+#O<ZGJ`%0'^XZJ3YC.`.YG)N1.N_4R.2F<BQ6Z)JI/*D^@ALD' M?8?5!TP=U$KRP4I^&;[M'AR.!.&\M"H>Z#NB/FPZ2@?$" /RAXSG7L8!T0K= M26 GWX)Q'U=?P2&A`C;GS-W^LZND7^A6"YW)ZGXB**_T'5('P1Q0%^F^;<K M@RLK`61GK!":.!(DKA `]%_>T_P$@28(72GJD[!\G(@"J0>03USN#B-(K7 ^ M:21(`'CXH68W[C5JX8MDM.WK0!8`R.5;=M8!R"]B!7'B=2 S`63GY],'$62" M$$JY#F0N@-3?HVA#D%JA*^DZD 8`V9K$W8_S32U\FGR=)N<!T">W%/>A)F.% M[HG7@4P#D',NW?4V@DP0Q)21( '@FT>.WX;&10)VB]"I%4))$DP[,P2TEE.* M@/2G1Y\*D9N5I\AA5,K99/5A<C_KN9F4:92'P+]*4^Y7GK%ZH*B6\Y1IQ(^8 M(3_,]:YEV!O:NA7],)T[O'$![#0<3&2-S?5^V+=(D77)F^02V!9KF!1>%<YS M+3J:ZEJL"OJ0UF*-<?E9GS[6?-SQ8=GJ",\5:+7N"QL7(J_2=\!!"Z.GI?,M MC,D:,.TS'?%6*;S6L)>#QL)93KT?2JQ77.U2QG/_59\FSGS0<:QL]4.4)6WL M[MUX$SC&%%]6AU>O:-%9[G?VE0$%%KGW;?R>%ZI+BT$8C?<$.>S]%L=9MXX$ M5@I=,5^_3/:[SBJ_?@E0(AM7OT+K#N,!._FS[8R.)#[_-*-KVPY_W/N<"^8I MG4DOXFF:3[#'B*MTJ#FVBK,RNG!R)Y"[_?S$*CCZZ:SAY(^E?()=(9HD0O%E M+<.X_4[E'@U#$I&GZ0@1O,=NP?X\R:]@3SOAC]#)*?<(7;JV'9#Q4$+1H*1- M$\0_``^3'SB$DV>W0H.>WT#MI41P21/QL>T9"I7/AJZGBV_ B5#<"Y6BCH,_ MD^+@ST8%P[2V`)6E#?_N@BP#[,2;H0=Q:80[]#6/4KG]6V:2CM83\+C4[?<D M8IE3)39",_%1.&B*G\/174R"=A%.M+VK7^E,L#/B\THJ>J1N:W20'&V]N[>4 M5CMO(I0[*#K>Y$=[1#TU&-/Q%.,:5/ JUV",,Y,D7OX-%5%5:BL.'P8Y-? @ MW@WF!*"'6V+A_G'0^Z""B$Z-^X*3*[46BZE(UXN\E,YI2!,K-803BOL"KVNE MS/U\'#(_1,359*_$#O"V/@?HP$#X1* ?YYJ/IJ$`7?#CI+.957QIG&01D@%M M@(,)Y(:F5.N7$N^8\*$J'=15<?!'_)X"VW!5+)8P6**72@+(T\[8%59QFC1' M`R/4M]6N@%I&5$4J09\BW@FU?@S <*X!5N>X%>'DGNW4(K]$@\Z%(\TJ8YK; M'U3AF*+B6R9_B(.Z@"2*DF:GD3F?P9/K*]9\T9%,8@$S!\J@U;2P/E25CG#U M"+>2D00P8HD!2XJE$O=I/EZ\$Y[QB+<BJ/I8[B^<+ *2X7/?D#R)XH"6*C 0 MR5?KHO)H+1Q=E,Q]]5H*"U0)ZX.YSW%Q=5G )B9HD?O5[3A,X38>L/"+[#S, MP*E),$0]B*F7SV[%"ALHI%^:HE-L8B%%S(:3+T.1)S:8Q\+B%*9F618P^<LH M`/$T#"]M#-SY)&# P P,JK $R4>)@^L)&[18>QX&(@L.*C.2PE8:3M8`!])/ MF0(_#G,][EYG$47]J&X8]1TDD<(N'()MM(F_IH=>&7;I$.YP,HN,VD$G=IVX M^!HE*HTJE>U1%D7;_"Q@H]J%KA.C</#5),\(7<5;Q9]((T'R,J7\CR/Y;"E? M%\GG2/G5D;Q%RB^/Y'.E_-U2WB;>(3U0,'9&'A4*T?4EGL5+JQIQ%?LQU84) M)3'WP=(R25Q_E<KE>PKK/7,Z?\WHS#U!52<8J0'D^?>$^HSV/)8)QJ)&6LI4 MGBT<240J5[NQ2<!&8-V?X!F_*)R<#A*OF]M@S-,V7Y.N6O+-06WS17SF?)O9 MI@$&5E /G/%]T[4-7##7J,,"H(,]`KLT=SRQ8?=GP%V">P@7TGT(5N +2#)2 M>&)=>PP>^NC;2KO?4S^EW0((&8KP`94GGR,I+K^Q:8]4[3C;BM2P_>K0RO<T MM(7&R;R@*!1CVH?]FWK-PI;[R#+&-1#F[_#&[53PV3LYIQHL):V56LI4\CYI M%P94KLXI/KV?L#[4`C3PL5L]G#>UQ<HBG[PEKKVLN:?A-3)9#^U,%R1M^7(O M,+[9381M`E-QEK@O@%*;G'&[>@%S*('LS>\[,<GO\G]C#1\E_:YPF+^M=*CC M*=+6ML#5'^.,\^:Q&DLH#7>&%'SF0AJI2(5)8TL>N]AU3=G@D22$,=$!$\DM MR0_(]UDS#%!F*WV3"F "`[U+&GYS3_T4WQ8-67(5>E66AH\1]= HNX)&&.C/ MR$U%XOY$:FM!>DGL"K!-WV)7#:])EU"%)!EW3[ Y;XRIM]E?RD^>-Y]7Y)$K MKGUAD__2'_L.+_7F)BA\)0F*9K_SG(]]#6]<K>*Y1&F>LNY>#[@DGCEOX7J: M8(\7]PU0&R4SD+%W!=-\A%]+K@VS(R?O:;PRGU]<+/Y.@N:)Q5T>6OY$;ADA MQA'J.YPU0 Z3/I*#GLOOJ><"OM+7.SQHACW>DLF,,M1\Q/G;5NS.*I[62.*J M,(LB!_%FF$%I'PS0^S:872PL3%6=3^/D"R<;<>+/1T<BJ'H/RK"\\6[&J7H' MG\![I!=LUD+<>$K%E3@[2N \EVM,=[VK]VF>+!2/:X9T`7)P8K!?D@.:P533 M%%$>^F>M1;92<9(TT[!MOF?.7Z"'U6VOPE_Y6@Y%+J9.(ZY-:;CR&]T7@G%4 M$D8A-=:_B6/ QWN<(+L''.G&G&E.FS=?86D<F,;G-._C9S>=12ML_E57"^P' M6I*Z"(8IE8_U<BWC\BR1K,JK:TG)D]LY.R+%;'LLDT=96D+%P[38U,M96@J, M1E" L>E3VL.O1_8@L01^!CX><,0W#L0[WVK>YU3FAW!%9]OSPHSI"$QE8V,. MHVU6@D1>#JE52*FTA"[2\A"P!M=D6$+0I2&L\*:9]C5^N^IMZCHE>!]06!9" MEN]%L+?T"@KGS>XCT.=FQ31DA1>PJXQ&TQ'W:>US>[#/PUWDY%+8HI,64BRQ MJ_+(E'N6>J8X>[P<H'W(?<29@&!*``R_' `L!KK;R,FF<RAKKPME9?GXEG%$ MFV=9Z-&B3N 1GBQ=:V!MD+3>VR31Q1(M$H7C+%WWA*D'1C5+M'CV64C'T*/M MNHR^V 4^+K@X<N%M`&,EW,J%'C (UY=ZW _L$\0C<;1R.AB6552!`TK$UB\] MU-LRBZ"B3*<>J*9SU/PECQ!L+ `KY5?:YDO V71DUT[8;^9F:IN3T-OR9R^: M_WPYHW-<`/O6%8+/E-E*?3VM^TT@?QUOQ$W^=T20Y>N77W*!"Z+8^!B<*U*: M_?R=8->IW@30V0R37Y+:NRAL%C;IO<^C\(T'V!;Z8#$+&[_T+E*X]L3 \G&0 M>A<1$DXFF8_-'5TK/#-0'O%QZ@JR;3V0"6D\<[#0,P=SIB/V"9[D?LPG7Z5_ M&2\TR(D;)?/<.2R4\Q/$9X$5*"5U- &4*:4R5T<X4A@ML"^]"&0VA85SK._E M7: U[V*&? ."9WOO5X#4MPY)'0M")WE_N1UHN*T1B;_QYL6XVE'B0[#!<*XP MZ]@-8Y=I;:,2_A+'F;P"3<C/7EV#!QHH];E>D7QG3R)*2"R<)*1]0AN5LBAV ME!##_I8*Q:7+>_^@4R=EJ=-Y2S8=T6LC"Z?3PJM.;>M6+Q-5$Y#YJ5:AE]$_ M?M/W3?N\+6_="IZ>T;<3DEU)8+.!72R'?\=+S_C7Y _XH/IG$'\%\7<0?P^1 M85E6P4:%&.76TE%F!>)0G5 5M*'@;2@T%1GQV*^)`Y+/(\G;JO'B;D5FS,-- MT=1K.EU*YEOHSNN\)7R<.G!QU,I"2; CGH"IWYP*V5WXLK4-&U,#QQ& Q5HC MM= V7\:WC*X%#&GGQ[O\,>M<.8RS+_+P55:[G3G<;['#E,--8(4-_X:3<ZD? MZP[S"TK%#V%TR G<`D[SM].=HCB:#-"IX;PF#^%I6S@Y!QL'Z"8LYZ21#:#? M4.4^[>0D^/PJKYH$P.1TN$[#2MHOISU9`0OIL8D_Q)Y%[/F"<UQQ./G$]B%6 MX )]301R3=HY.XKQT+]#HB![*07\,?FCSR1VI@I-"7$74-QM[X+;X50$Q#VQ M]#2N;<4"<%GS*>3 KI$^O@V&PPHUNS>OA4[RZ&U %;Z)1S?W.+FC:1 KG'^/ MYC+DG,OVUX:'3+EH]"%ZQ'ET9N0\>DO552 3I^!!4.>ELT@^<^(<%>.8H1,5 M["-LTY<[T2*VEU._I]1TP<SQ:I>?6SP_&XXMCHMFS06LT[I_C=<&<H?:YOL5 M5 &)<J?:YOE0T#2 /6N;Z^#9UVS\"V2H=V&->!;0(N5U/*[N[BF"2?X6)?GZ M]^M^OT-^IKZ.;QM]1O_(-3!OXXSA.NHRV97DI.\9(QYT75WFJB^!D_)DL7B& M^CJ:U]'#V7T(V3<8]28_<H>6Y%MLFS5 W^B=)'U8= 6<J@/+)7LX@!5@$E4Z M@X+Y>L<[[P$#N<.L@:H=D .OZR1U!$>U2J>&1.9=V%$>U>3&U+F4VOKU#K%5 M/73IUO0NCD"@%5U:/&B3#?FNP3#X3I?#R7IZ#B-ZRAQW)CM3&.V-%A;!?"F1 MW629T;#]MO(PA#8RYX%6-*^/2&(%Y OA(;GD872P/VJ=_3"MD6T.[17]Z]TX M]/1X/;-I$'GPWVL:Q+;\S4V#V)1/:1K$IOPXM.-8J^B(D3:0=K9I$(^[#0)) M+*&='2?)%;2SXQ0-TB?.EFJB35V^'_RRE#S!$?9M! #&4FRSIXE/Q40[E$GB MQJ_H$@A/[X$C(1-3([<YM>%D%-8SFQ:&./&DM'\"\13)[LOD!C#=5J'>'@J, MZ)\LYHC&G4T!)J\!@NOKYV]WP<28/)]YBM%M2IF!.:%?Y?*G6T6S=!Q_*.#R M&^0.KF_OZM<_,8Z2:R+D9+'F1BW^:7_WC>QOS3_I+_VZ_D:V* 8/4:/]TRHC MM\+F^K:S=%.2^_1&SA70NL[UA%1OXJY*9E3@4M<+U9M6F"=O`S";YL%I92&^ M;0\`<T$$CTRIDL[Z/5#SAT':*6Q%:>2 R0_'E\'H:U<8U.ET_2NV<U98Y?'R M8U+K*UXZ%\87BR+]2@`&U^F5EO'VX0\&"O%8H '.*Z&?=Z1;#OF(PEH+;>); M].Y1`XP,X*1KK'B_6P3^(BM]"1 OJB5L90\&(#,(#$@B0L%K"9AHX>0JD+7L MP>'[.X1%*'-1)UUQC;!@>H/B&@3%S08I5+OI"05<12C:I+:),R0+!%?<#^+< M!'NEUB9R0_*=Q(TJ,/K^R%;JVZ!M13V[/N\Q]VR:`4@_!"> O(_*[F(+Q5]( M-ZRD'VKNDI0`K%4D"-Q(,LH#PL!INF+4[@+RM,#V`T/='RYUQKV->U%H,AV+ M*H-!VJ1H(R*Z+VB;LT :,K\&\G:V"C]WJL*/BF!EC_(:L$9':Q2,+7S<[=<V M?P#%3=?H/I?9B@D>;X,J?,+8VB 5?3^H:I"+0I/ ^Z<[9B(6>9:QGAGX0%:P MGMM\3V&OOF5IOI\_CT>&Q7J/$T@XSPH-^%$7J6?OZM=I?[OG7I? 91R_U^(I M[/<\?G4^?HO5<.YU_ X*C' 0[&^Q3H4XS3WUF:_WX(=389^-P]<B*2U/]>/( MK= UM:,X37LHW27'&>HH!.0M'%9>W-PEX7C)%5A!E59%-6WR/S1J?:/V(;<& M=\ J,9@[YWD876<\OJ1)Q$?)+0";M;$D%L;.$T/&P;.GD(TX"M0N`T$5CA]> M'<FCBALXF8^Z<OU8%]8VXR=CI@N^O^)UV)M,S]U,TP(4U+F$+-%5H2:4`3I> M,A"8)S.DRS*2_!Q8^KT>FI E.(-8<_M&I6>3!D_<B_,]\)=/; IA:]=7G/OT M$SO(<?)C<+OXF:X?I86=F=17\=UK<,T-.]46& MI!'IHXHPO$KNEN6>F>'G* M%^SE)XN@^\@,QZFV"W5ASM=M5)GS]0XU8>93Y=P5"O4*6J>)'(:CMQ;&Z K> M!S@R\$T5Z MF.Q%N87K"X:P.3TQ3%U8*`[ X*#ATT*/F%]Y+V$Q'LO)UPH"& M\!UIOMP./&#KO$G*2Y[L=@5#N*"%1<MJ&J#:F]B*6K&X^@UM^ ![DDY\4EY( M1@YX(:'C29=5&!J\/"0+I0M7-QK8XYSOQ308&]*7=='U59HPJ!0^URA[S-?J M9Y(X<Z!ATMS5[,:48JM-O*205S+G6L3F6<VZ@IQDG>9KCB.DFB./ZWR/I9F_ M@::QM&D9;5HJ_G6HZ4+:M QV::XI2)M^`TWC6Q&CN0/1\7=VK<3A1SH*G:1F M'?6D>A[GI"NCJ(H4J$CQ/"97T,4#W)*YRW1\'.PNT%L262]/?&US)QY!SD$Y M<<(A`8PG+>L:T;FZTX2P4OA"HQR$@_EA)ZR3NB?4Q,J!^YEG/LSWD'8[*W1J M)!LMA6:&<#(N0.:@UGU NGI*HQ>@^]R]9/^66;XEK,_*!AD<)H_U:GLCKDGA MH +SP85T#%748@7N?N<Q^L6:&_7OF2&IH'X<6"L?!]7F#L=E<\<D?X;@6:QI M60W+"T<2L@YX$L@2-BO@*YC">9:P'JWO:30L207B'Z_@>R1^#LG7M3S(^4HF M<&W(UI/T!O:?=52Z-X%93*QIH#QKFJ]IN+5T]GAPI/V@&=,Y#9XL=$RTYCTP M2GIRT?<[7* <=_G8I)8D<Z!>1^Z$>N6EK#V>.P%82.,KY8)+Z!>JGE0?^V,? MVT@.^19R0B>;M8?.+J70F,/P,:3'QZ:8`_A"J-[IC84S^KS&+0K&EZ=XG5XK MQ5D6(MV >7_]7'P7;_[&&>]9#AL[.1B:D'72?$K[Y!X<"$35$XJCM[W*'M_T M%-_3B- L.EX*388N)," -#YKOR<..(0>]RWG/-K0H[XZCGQCOEB_Q:>)-.JH M?XQ"R?@N*#=CSXZ"J![-O%'O>%L^Z=VPOWC/[;)&0!\M*3Y]HR\O2A_7G?WH M_O@\GJ_AA.KVESH75>44XVO>#9%7(W8R'U_Q5DV'8KK9M2$Y7UR5+A54<9BV M;8/"\/&V[9"T;I/<&C9\B)YFQ[5NEPI4^*KQ!)AR&M5DB5%G+2R"XRLR7%V& MZ"@X^MK<O8__D:T83A<@<E^[4G8QG''@5#GK0E.]L7DM<4N6\K<T^_E;I7IG MB)S$VD+7.26?*!% [>WW.;_&V;.R;'6@C]Z(\^.QJ;;9"\]2B?,KJ6D-5-SG MO+*R#%VHU0%/JBO(+N7_]$9X<' +B54><O6$37M("OC_+S(*11/_M^8C_/3F M7O[F/C"/,,-K,&7"SG9/:B@-5NPP&F9HG'1M"D^LZ0CE:?(OY1-,?D\<\G?V M`V"G.X+QO?=:_>C,P-H2MPN_%P\EH&N;L$N/MQE890?7,^<;7(FYME>I9ITS M[:Q='U1A+9*)$T96:^T3Q>\!G-97I8.RZ<CKZ%^'5+3 H]&Y!(-K#]LT8 #G MN^&\:=\;K^+B=Y$(PB"^32&S7Z.O2%@_89_"EX+HR,4&8W 3=>TQ+&RZHFN& MAN_+[P\)6/)V?-<*ZE=US1C]0K!UIV0.>MSX"L.'I)-[K'2K`-O6"IL]QG1! M/'8)`*-$NY621VENWU(E']V*_]U%H1/V56B:U_R AM=:Q7/2*0@!*A:[!O4- M,T@BI=+_&5#BV8SF-*\6BCLOX_8OJR/(_AO.&-I9GKFG8<?*U?88VC\ZG'O+ M1CDXU+^QB7,8V:7E5:X.\$U(GJ;W70L_'ET>D9-.BOC.:/C%:N3\0?UYO,7* MTY ..!XT#L0X\U[D`#U_-\GCR(*L?G=XRVQBTY5:B\2'*"N-.0CDSM2=C?PD MXS78WCS0.(_SQ.*%TLJ QN Z$):*@GG2BAB[F@3*<*[;%6(\$_5^N9#>@/3: M8SPPMT#1-1=E1>-'")*>&T;HMP+UNQKVYVF7\.P@:0W.KW\F^9KF`_PL5UCA MU%O%SR3O`-4_)0S6')K@#CN3>X48'A02'*ITQJA%2?6$_3=@.I_JF1O2_E.@ M^P<!$KI*V"*L@ 5\;^1ESM#[<=<'X=X\C877!/,T]!(]2%^-WWV1]F,34QCY MO& 3?R.548I1[5W\O3;Q40D;DN*+-!A >N'.*^4!?D(+Q-'=D+QT4 M(52[9 M2# O7:J3B4:=/_#EF[2_Z<S]]0TD" =;WW0W?;D7Q.FUC/'-]@N?Q_3F_H!5 M\"M+Q5M5Z)AC[[VYLZ HJU1LI\<Y%IQ87KIB2I#?JO? 2:L7%NID,2,6ACU; MU,3B>R,ZY.^'2\5E\BD53Y0!L1MRJZ7:,C!;-&V*3U(*G!*6D'8X='5.$094 MPR]1>W.W`HKI-G$K2[?!-/S &Y@6%L'X2=]EH/8^E3!2'8EN502&Z*6/5#-T MJHS<?YJ^3(=VQ62;<3JD*TP7;.9/2CTUX(/5& W.1&F[:WH7B0+D&6,V0A!0 MA?,D%0J UM-@-))428MHUKVY*:R!U]AC5A2*Z2H)8)RRO=?"-FJ;2_",]XIQ M-C *PF:$N-RGR37M4R[<-W.-F>2#K(/F`_697NV2QH$$9R+HQM#.).99@+6A MA;. EU%@S,PZ#.XX>ON'P+\H,6;BO5?6)7Q/!L<C(,@F,;9"@J_.](HBZ?X* MCXI!^6T@[G_*0^9V?,?=P)%@UEYSP-&$^QUN!4#I?D:B3 -;`S]<Y32*/V"' M='H'?:0?Q4CO,V0-6<5GE-&O.2**0QQ)J!8+?U/C$\S$48H5/U(B/[1C\;0R M,ES7\<#W5%E"I$"R0'1TNW+1H<:[N_05H-H<J(5E9DAJ/ADECB@;7^-VI=(/ M.(;:<Y"+GB]#]CC_N^UQFDUD8N3/*^X<GNZK8J*L,!PSI#%6>6,KE+JRB17# MV\>BH>^P)L+J>9\B<O40(]XM/9O[^9MMXBQ%9$YN'CDG^V%.AFVB`P>PW?7Y M%+1632_RT%.;=8?;<[TLPVM+Q;\IAD<KL!JW"HH'%ON=+OZ6G1P_%=9TJ]AW M`?0+Z]6[["U]WX9QJ0?_(=8#.T#>Z/,8;JM4A\4V<T=I_;KK)DMDHGA7S6)] M[*PW<.-M/L7/=^6$^9RYR7C5[9SJZ@)':2D?O]298F?LET,)\/>;$'ZHU1M. M;D AXX)L-@XBVM'*@/ASQ9"F\1)]M:1J7&1&.9ST/"I]3"+43X4=<-3@>@NV M`JRMO8*"5Q*PS'G#C!<JHBPS^GQ;'&$#R^QLRL67+B7S_,(7,<H^4"*,3Z8] M27SB/&J2DVZC$GTV39%TFQK.XZ#VS'EI+U#Z"G(TA?+M:=D("2C^ZU#["K9J MY,O4T?<AHE<Z/'"F7@^W"WTL,\<7X/%O/GX(Z+CH&KC),=XU8-R4*"ZG+_T3 MZ0=930-OX?DGN6E@/Z10.8M6<K12O(5F4J0,SBNB^<8(O,L\(Z_KMHK_[13( MY!\J%1^E^:'/[(;L?WB+3A*#,+#R)D(M,^*Q%]J9(K#W1FKEKG#8R4DF+UWW MH1>6*%V_RLV&K5\V?1\8OK? RS:>O=;"T3DZ^O=?2^M+[B^!]-%*1VUEC6G6 MS(H:^BL_A[.6KUY?::AT..H<<)Y-3&"8DH+EQ<52"6:9XJ7W+XG*,KG+ERU< M>O]P2=$=V;-R$A-F&)RUY0_75!KX.D-U;35?75Y3_:-*0U5E^0:I'=+=B73X M<]'*VCKG(U6&^@WE:RL-ZZ#OFKI-U5$-R_GJNMKA=G=\9[MZON(?M)N#[38X M'96&C=4.WEE>8UCGK%V+-(:UY34UE!#I9G\G_]5UM96;J_G;RWE,##R*.,3_ M!W-'REVWH1(8U]76UT&^HG)C]=HH6EE'E9LW5*[E*RNH9J+UBC1WCJ)9[ZSA MJ_DJ1V5Y!6AH[:.CZ;];+W(C_!DHD"<FE#]<6^=8#PJ(_&Z7KW2LKZX=J:_L MN=_)K[(6-%A7N[ZRE@=RI,WY3MIRQR-.)*R/Z#=[%M*NJZF#[FH?,6RHJZ[E M:5,HJ:BLD/I?5KW645=?MXXWV*KK<:CNR<HR%,D&6E#]L*/<\3C2):#-R<6+ M41U3$Q*LDE!WX==[,V?.9.9%I*PM!RIG[:.U=9MJ%S#,DDJ^H+R>7P@FL+'2 M6K?!N8&62?G2ZMJ*NDW,LLKZ^O)'*A?5;5[(..LK'<.S962(_);Y%\4,_:)( M*<?-D&^&N!5BIT[ZW6\VQ!V0_Q\07\-O7*%%#+.^8LY:Q^,;^#K:P;+<.7DP M(/1A*=@SIBLVP !6_A_^,:@Y\@MID"'J>?1OOO]W0L]DZ7H9`Y/PS^D5,?@U M!.@(%+CFR<>?G"J7_^L9*6W]O90V_:[S*OU-\I9&FNX$>J'M5)OA._@V#<J_ M89;3U_Z3] OE]#^ _H,7/GMA(O/W%\075GXW_RVM]*D0G,?"4V6G#,SJ4_93 MLZZG/WKB;YT##/.#+7)+W?!OV!N*&/S4GK%"BIN$$5)I8C(Z)/NPD-$EH8X@ M'8]C!.E-D)9 BGM5.J03(+UL9703(7T+4OQ,KAE2]$%708H_?"V %"?2/$A_ M!.ET2%&9F?A;!$C3K!*J-.^-;2,2\D?5KQF5S_XG[?]O!A@&OUI^G@S/D9_< M_R+JV0?/G/S\;-3S3Z*>MT8]_S3J^5^BGG\6]8SS'S^30#WCV$5>5FV58V1. MX+WNQ;&?I8^%L3 6QL)8& MC82R,A;$P%L;"6!@+8V$LC(6Q,!;&PE@8"V-A M+(R%L3 6QL)8& O_7P3\-J!3P3!^^5L)3!6**((;?$&!WXHH_@'/&";R?R*, MA;'PGPMH3RE1MJ.44_Q6!K\MPF_B\0-:_"<R\-LD_,8%?Y;!R6F\G";(=>JH MNA2Y+:9:F:].+L/OF<;+$<NGRN5SY/Q".7^/G+?*;8KD\F(Y+97Y/RCW72.7 MKV?H_Z_!;("(WT Y9*RQ,GVCC+E)3I^4ZUUR?;/,YZ<0;X7XW^5\JXQGA]S? M'^3RO\KXWI?KC\OU:7&2+OY?A<SM46O.#NG_+;E1&'R!87X-PKT"T0_Q?8@? M0^R!R$+=1(B9$&=#7 #Q?HBK(-9 W +Q68C;(/X18CO$CR&*$"]!; $>:6T, M,POBO1 K(/X(8@O$7T#<`?%5B.]!_ SB58@<8-5#-$*<#3$?H@WBNAW_-?&^ MA%^;WE.W?GUY;45!=6WE0B9%`2561]W:A145CLKZ>I ):9;553AK*O.!K :( MF *DLE4ZZJOK:AGF46;QYFK:"!ODQ93(G_)61HJ8H[0?I\-163M$]U%460G] M.GAI!</<%U-24U\,S,MKG)7,_VSOVF+B*L+P@*@E]J%$&R1M@ ?!%G@X,^?L MGC,[Y\QT64#NY19IBL&L[$&6;G=A+^K:-@J"Z$,O8-I2+TA:8HD2I(+6"U6) MIC&V7DI(%6M "FVEDBH*P;2D\<PN6-/:5Q,3YFEF_OG_F?_[_\S,PS>9;-ZR MND)_PN3P>I97UT%\9&F8-QNBVQIH<,E#RSISRZS:)>DZ/CJ\<ILGX/8#D,)7 M7^IWA#L!^)5K9#E=>EFP3@<;PE*[UQ^HRW%7>ZP@'V3H+MVOV[Q.O[/*[BK5 M0Y1ML'@#&:Y=:-_.L3D2\JN(JX+70FQ>F[%-1'.KFS,+>/T`X&YDWF PE_J] M3O?C/BLX>!M).9C@EFX5@,E_[S<V('=DN=.AVVKLWC)/`>=MIP?].G!%9.OV MN@S=Y_=Z@J VU+(9X'-6;V7DPV%6>@CE'9'EAK\AST P(N=O"OW-*&P!F6Z_ M[KVY&^R-R-?M3]PR'-2$Y@P'U1VJAZ8#%<NS+\5[7T2^Q^Y8(EI;.2<RRQ7P MU?#UI >JJXWDXV>!S>7Q+>4EV,@C_8^XQO$V'U_$"=ZZD0MYF26%F?FW8U"O ME/^LK F?=;'00P+D:=)..LA1TDN^)N-DBLR2!;)&7:LFJDEJGEJLUJL[U69U M4EVEZ5J#MD_KTX:TT]H9;4R;U#923#?1(KJ5/D9=M('NIFWT==I%/Z5?T@U, M8#FLF#G8\ZR-M;/C;(2=8^=9^!#F3P2!L$I8)Z0*5J%8J!7&A$M"/$R&&? 1 M> @>AA_!DW .WHT0RD6UR(O>0M/H-Q0EWB.6B57BF^*@F"I9I JI2G)*'LDG M[9+&I0O2)M-ATQ[S>^9XN5!^5-XN-\K]\J!\5AZ7K\C7Y#N4:.5>)4Y)4&3% MIS0IW4JO\JUR3IE0+BHSRKQR7;D3)V,39C@7E^%*[,"-^$7<C7MP'Q[ [^-1 M/(6G\17\!_X3QUCB+$F60LNKEL\LHY9+%D3*R [22%XB+Y,!\@$9)J/D)S)/ M8@PDD5JANM4GU49UOWI"/:6NU5*T;5I0ZS!0_%V[IL522!5JI;FTA#JHDP;H M+MILH/D&[:7'Z2?T"WJ9QK(DEL:RV6;F9'6LA>UA^UF?@><"N\XQ%0`8X7<S M(5$H$9J%-F%4N"PX8#UL@%>AA"@J1I5(1S[T'/H0#:%3Z!LT@L;0>?0+FD57 M4:MX4.P0N\5A\7MQ4IP6(Z5H*49*-O#=)GFEL]*\=)?I!5.KJ=]4;G:;6\RO MF/O-4?)6^9A<CY_!S;@5'\"=^"A^&[^+!_$0'L:S.(*L)VG$0O)(!=&)RT"G MB>PWL#E))LAJ-4%]4"TP<*E5@VI :]$ZM0O:@G:&_DP360JK9WM9Z),SPZ=4 MX3NA!WX%9V $2D #Z&,TCC+%+>*SXA'QHK@HIDLY1OQW2^]()XP<F)&(J<MT MS/2#B?^)EL'OG<+]0IW0!7O@`!R$G\/3< 3^"*<,>W-P$4:AU>@^M!X]@-*0 MA,J0`_G14^).PWJ3&+X4\OMIN]AIH+.R=:R4_W_Y"U!+`P04``(`" #CF=4J MSRM['94%``"!$@``#0```$U$-4-R>7!T;RYP86/%6&USVD80_DQF\A\6\@%P M0@(4$RK:S&"P$\\D)N/8:3J>I'.2#KA62/3NE)C&^>_=>P-)%@Y-.NW8,Z#; MW6?W=I_;6W$#*Q+\0>84;N[?<U^]G^&U_1J3)?6@_FIR..;KE4SJC[=J*W+] MEG+!DMB#]O#^O8I/! O&R7))8XE&2G>KK846=F-F=6JC, 2YH)M@1,#92HI: M3AA$1 @=D7@$49(("DLJ%TGHUN91XI/(/7$JDI0'9@\*RH%KG#.UB#&3,/3@ M@=K?].SB^-W%,+>F]_R2^9SP=4[R@HC%*)HGG,G%4DG6Z$O0:);;LPDO[^J- MY"R>0^L9/"#B!;U^2Z*4BIT09D\.HE3%;;14J7;$8@P>GIO<G!5RX6OI\ZT3 M#QIOJ(28?LH@-1&J=N[R6<0@472>#6$G1+;0G'+Z9\H$D[<+)*A\G9$KP-,0 M.<7D>@NLLUF?)-%JP>+Z\)8K"U;5;L>:.A,Z8S&3R#Q1T^M3_W<:2!"IKSE1 M4EJ$9;&0) [H6\(9\2.WQWH=9=JL3+!*DFC"`N4+I7G]TUV &-/QM:0\)I'E M7"&T'!__K]"0P&D@4TZ+P9D#]%^'57NI.\$K?=1L7:OVD)GS)TX2KI<SYPV1 M;T!(3LE2=3Y\M _8^QK6&GGF@2(4"/87A0/H-N$3LH*^T:J/E9&2$G&TEG3$ M.5DCKUDLT<L4FYO8J.'_!^<M2&*)7!95J&X##8BDBG%4Q>KE.D/UH)7&.@ML MQFA87:5^Q )MC9L_CD-(9IN^&6X8;A*A_HJ4Q@@V';I:JC!/&9ZMQO/+TPG, M>+(T0:+^YW[_:'(R:'=;_<-1O]7I3 Y;1Z/!TU:[W1Z,GPY^'/6ZO2_UIBG" M;<?97>HC6;W,;DUGY)95H8@+%+ZB0N!V/2 F-%U-G=AK"2&;4R%M5=TBEG5+ M455951:KB;)LQ3M]W3\JQ?.FDDO22**HL@P/3S'/GG,ZM(N7JQ#WN%E6-=>9 MLW%J(N6?G.4)-N+(<\%;^PV0B>B#$V?I49ZT(J&R6;N34980^9V7,":OL)LQ MDW;OL#_JM9$Q@]$>C"DXWI,Q>:L"8[;9)9-">LG8?-/IK<''A(6*)UH=&FDL MV#RF(00+PN&JTW__2$E_&U^\@X/F$/1X4OE)R## .] KF$<KK'Z&=0?/5 EU MQV#Q1Q*Q<(Q6+D)#IQWQ*"$T]G&M-3,^X4ZGCJ[.[4Z^XD<A)&.:">H1Y-.5 M7<">>$?,%BH;M<E=^"GA8?D&R@M?9/VF\J[@2'WLT$OLD!_O[*Q[0>N2_:N( MMAZV"CKY^^*7>M!33^$TS)BY/TU'T9/]^:^O+Z;U76%JD&*P#J6*F55W,]YG MI6W$-MRR!F)%7[ULVOM>-AMG^S8-JU](D)_.9I2;]-ACH.+"R14';36+^GC; M"U#3IEV#A]#M-3/&>&1B,UMJF!LS0-RH@4%]P0O'R4&!J>,%+>C DN'8T.C_ M@+-&1TVQE8T:IZN(!%0-&F(Z\\#$H.+RH'L(,L&/'L:A\;$@7&+<(TQX1\$8 M;8*/2OX0#58I/K1UR$&2QM+>+T91G[N1G,YF.(FK"W&K5]C9#GT#[S2U-<8D MZ5U>VENU?9RT"SZ*12T2UA3F:P?T3F/O&ZUUXK[']EL=ZV1^CZWW]8;CS,M: MC9Y&Z0FC4:@&[II<KRBNJ5L&WR#@LQI]+D_/+GJ@O5WUW@\KE<J3`_,(C='1 M>-*$@R=;/9V.JZ[3B].E3[D:@'TF\95_F81IE$#W0[\'C4CX,&-<2 >1OY], M3:_ZRBE"L1CY9!>-_A=WUP_-Q:7N( 63V97+$ZB=>?K%P;P:Z9<!K6)%DU^F MYQ.(:#R7"P]ZS>%M)+VW?XK4+4.RN]A"82\P$,ZL;R-PW<>#P0`;Q6U6E#;_ M;%UW70!0_.G!OIIM?D:PSW\#4$L#!!0````(`(":U2I"=;.IO@0``* ,```1 M````5&5S=$U$-4-R>7!T;RYP86.]5EMOVS84?DZ!_@?:?5 \U 5)72@YZ(,O M29JMR;JDR6[8`T52ME99<B5Y=;KN3^X7;,,"!&M6K"TP[&% =R1+LNS8:8$- M`PR;XCGGX[E\'ZT7:,+%$SY4Z,7M6^6R<Q\]*I8A'ZL.TAZK)#T<F/WX?))& MVKV%ZX3/SE2<^%'807CG]JTMER>^Z$?CL0I3",Q\%]ZYL8"NP@J?9E=*E(Y4 ME5 B8G^2)LTEHPAXDN19)7=1$$6)0F.5CB)9[@V#R.5!^12K))K&8EY'!E6" MYSA'V2;DS*7LH#M%C0]X,NH&PRCVT]%X9\EZDL9^.,SVS@$U48&W5-T\D1)T MK<L\NQM=RI37.C5[?LCC<[0_K_)HI2HWM^XO#NF@[1.5HE ]JR&U`*IY7'9F M%8,'P7$]A8T0]9'%*E9/IW[BI]=;G:CT4<V>`1Y(8(>?GB^ \R9K"XI5C==. M3D,_I=K.M=,+_$:>23_GQ4!Y/G@#K9)FOI]-K<^!),G4S4>^8<X`[H=)RD.A MSGCL<S<HB]<TL.6AZPR3* H&OLA.!.NR_\$FP,;FO.8,^[^S:3[,A728\[?H M7',WE"CR*C7*JK5S>]G=U4XBL=!^8Z/3<.K#;+?W3P\&R(NC\;QNB/G>&?0- MVL>X;5G4;!,R,-N]KLW:&&.[SVRG:U#C!ZV50S?6)\!3E:U5LA?%.2\:IV'> M`]_SE6R@QJ;(N8"SL!P>N)I"^UZ@L32SZQ'6V0INQVN10&+@Y-:=;?B";TU# MFC2(M(5T; ]CEV)#.3;&CF,KX=D&94IK%;X<G+$0A)FN([!'7(O;.A&ZXRAJ M.8Q1RR(+9U> NX,Q,;%CZT)2PW.QM!Q+]YBDMB+,8U1KH<(?AISDX_.'4 V$ M>H[E`JIDPF6.;DN3FIQZ.N'<(Q:1N'X2S'PX\K]]$HS#:/(T3M+I=\]FY\\! M1>B>D+ID%G&H,C!FTG,-QQ*"6TP1W:U0NKW^8'=O_\'!QY\\/#SZ]-%GQR>/ M3\\^_^++KS;C8T)UP[1@V%D;"3.XZ]B2,B8=S^2F18B@PO$,XL!&=5(5A/^; M%9QM,B4]@U/J*ETXILF%X4A.%268N1;C^=DM)*,.^AIUXNA9QI*MK>R*0D W M%8,*MC/*C( LA_-)=%#FY_E0;0O=SQ\2)2(0&T].)Q,5"[@6,BY]`RS=3-4E MDL/ED7&U\5%[6B?Z9.H&OLA!%GJ=*VVM2@O39FV:K,MZS#3;9H_MM8VNI;=[ MQ-QM,S8P'=KO[>T.\)(VR\,^5)&%_QH==I,':G;&@VGVGUA7&A ,)F40N!;T MB@M M&QSU]@S%X0F6P0V=8(='?2$FC]>O'YS^<?;BROT^O+JEU<OT?:;GWY^ M^_+=GY?O6N@U^NW5KZ^N[J*KB]___NOR"A&K^?YA5Z.%G2K?I2GGDZVJ&OCS M2WFI)*1Q[KHBTWFYP*BU;),U(UDU:C6O)>,J[/K(]4;Y`9&%5\TXNYXNK8?. M5O.E*_G.EHZEJ\?.ZAG3]1G/-L26*<\6UO=IN39@68RN4Y=PJ>ATY,>RT' Y MZZ,H'O/ ?P[#WH+/$K"&.$*<PR\*2S> TCAL:O>NZ6.=^&L"N>$>>!]*2<A_ M`5'5>>-UA%;?9<O7CO+=LWC^!U!+`0(4`!0``@`(`$R:U"K%5R2)0"P```!R M```-````````````( "V@0````!M9#5C<GEP=&\N9&QL4$L!`A0`% `"``@` MXYG5*L\K>QV5!0``@1(```T``````````0`@`+:!:RP``$U$-4-R>7!T;RYP M86-02P$"% `4````" " FM4J0G6SJ;X$``"@# ``$0`````````!`" `MH$K J,@``5&5S=$U$-4-R>7!T;RYP86-02P4&``````,``P"U````&#<````` ` end |
In reply to this post by Dmitry Zamotkin-3
Dmitry Zamotkin <[hidden email]> wrote in message
news:9gkje5$l2v$[hidden email]... > Hello, All! > > Please, tell me, what Smalltalk version has implementation of MD5 > message-digest algorithm? Or did anybody succeed to port it to Dolphin? > IBM Smalltalk has an MD5 implementation implemented completely in Smalltalk(AbtMD5Engine). It appears to be a very straightforward (not particularly objectized) implementation of the specification. It is 11 methods in AbtMD5Engine and a couple of methods added to ByteArray and Integer. It looks like it could be implemented in Dolphin as a straightforward port, although IBM might frown on it. Is it too slow? That all depends on how big your messages are and how many messages you need to make digests for. On my Pentium 233 (I think I need a raise) it creates a digest for a 1000 character String in between 82 and 85 milliseconds. Performance is linear; a 10000 character String takes about 825 milliseconds. I think that's plenty fast for some things, but not what you'd want in a packet switch. Doug Swartz [hidden email] |
Free forum by Nabble | Edit this page |