www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - std.string.toupper/tolower failed with mixture of Engish and Chinese characters

reply Shawn Liu <Shawn_member pathlink.com> writes:
std.string.toupper() and std.string.tolower() give a wrong result when deal with
a mixture of upper/lower English and Chinese characters. e.g.
char[] a = "AbCdÖŠeFgH";
char[] b = std.string.toupper(a);
char[] c = std.string.tolower(a);

The length of a is 11, but the length of b,c is 18 now.
Nov 21 2005
next sibling parent reply "Kris" <fu bar.com> writes:
"Shawn Liu" <Shawn_member pathlink.com> wrote...
 std.string.toupper() and std.string.tolower() give a wrong result when 
 deal with
 a mixture of upper/lower English and Chinese characters. e.g.
 char[] a = "AbCdÖŠeFgH";
 char[] b = std.string.toupper(a);
 char[] c = std.string.tolower(a);

 The length of a is 11, but the length of b,c is 18 now.
Phobos doesn't supports non-ascii conversions/comparisons at this time?
Nov 21 2005
parent Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[follow up set to: digitalmars.D.bugs]

Kris schrieb am 2005-11-22:
 "Shawn Liu" <Shawn_member pathlink.com> wrote...
 std.string.toupper() and std.string.tolower() give a wrong result when 
 deal with
 a mixture of upper/lower English and Chinese characters. e.g.
 char[] a = "AbCdÖŠeFgH";
 char[] b = std.string.toupper(a);
 char[] c = std.string.tolower(a);

 The length of a is 11, but the length of b,c is 18 now.
Phobos doesn't supports non-ascii conversions/comparisons at this time?
Phobos does, at least the simple conversions. No matter what cases are treated, the untreated data shouldn't get corrupted. The attached zipped string.d fixes toupper/tolower and extends the unittests. (Yes I know, it isn't the fastest possible algorithm ...) Thomas begin 644 string.d.zip M4$L#!!0`` `(`)!$>S/6 H"N<D8``)1+`0`(`!4`<W1R:6YG+F155`D``_]A MB4.NZH=#57 $`. #9`#M?6MWVT:2Z&?-.?,?VKSK4+1(BJ1LQ[$LSRJR/>-$ M2;Q^3&8B*3D "4J008`!0$NRX_WMMQ[]Q(,$*28[<^\JL40"7=75W=75U=55 MU7_^T^Z]>W_^D[ GWF1)$)V+"R\:A_AA,H]&61!':1=?4Y&WL1C%LQL1)R** M,Y'QU[_0NQ\O_$AX&DIDWGL_A0<IH_7P\\Q+O*F?^4E;0"TB\;-Y$IE";4(4 MI"*[\#(%F%WX( 4HQ("? V V5R_;8AJ/ TG C^&QF(7>R&\#<0I-D`%J78(I MGQ20_$6\A2?/A)<DW V4BC[X$;4 2`E1`P$[<=2Y2H+,;W2A..">^EXD"0TF MT!NRGI%'70;(?#&.(R`'JB,T<1*<!Y$7JG9M0R>F83""3 *B JPE1EXDAK[L M%7_<%2\GT$TW+F;"Y6#7``IS #V*1)N!^\X;)7'Z&#]O_?CRVY?B`(9[S"-. M!8Z .!!XD7&95_,AD":>Q5,OB/#)[I__]&? %'$XSR[B1"+R0AA*\37!M<4S M:%\&[?O.2]*VN+JZZH[YR10>=$?QU.#9I2X?Q6,?B456BF=9,`T^0B,FV"\S MWQ^WN7>O C`$IOS ([M=>4%&\',8HI!:/_;3X!P'2Z1Q&/!8=[$6Z+9Y"+R3 MC;O<,?M<]] ?SL\/Y*.M+4(&U$UAU+$*[$L!HT_%SK$_9U`RFS13!(?/'[P, MR)[.XB23R,=!O%_Z:K3T91 ,R]_.LTG%BR H?T'\6_X*^G3J915D9#<S?[^J M95["W>9?PU!'8ONH]><_?8*!A!_HN!=*1(A)$D]I.(X$-"GQ$F(^^(&N0[X, M_6A[=.$EXEYKWWDQFL[DB[9P"^"W>U3$RRJ*((ZI/T4<'^) C`74WSF\RQ4+ MBG6YY? 9UCB[64`4%8'_EQ497;A%" 66E,"6Y0JX]');L1C0NZ #=,%I_,&O M5S+ULVV[0+&G:&S\)(F3;?G&]/;5*,41ORH.%[S!8;A2K;**?)8RYI[](YY? MC_P9,]D]]T=+$Q0G27Q%TY8(2G$YD-+07L9&H9>F<J'3>,5C4X=F[ QD//7\ MR9F8IN>M+:SE"+!DR7R4T1(#/U!X*YW/_&0;R\A6?JYJ"8%[45;5D!&^IZX] MZ3\\$Q?^-0G0%(1UH]<?[-U_\/#+1U\=?GWT[/F+!D NHJG7[7YUV.V^<,%[ M9T+"PH\#[ `Z0(_.A(A'6;%.`E$P7SHP`Z`SC*]\F*.ICS#><#3V)^<7P>7[ M<!K%LU]AHLP_7%W??`0LB,+K=C\64,QG,X."&_C7O[W\YMOC[[[_X=5_O7[S M]MW??_S'/W^2**"Y/SDH' R`"C\#"95R<Q> !';VH)2RRG%: K4`K%7%Z`& MI#/0-;`J<9J=?CA-3J/3B>[:PS='+U]:Y<S CHG;C]\`9/-T/N -'C6YLG=O M7X# C&"Y\E%)( ZS05X9D*\L$"Q[GGBS"QL.66_I#ZWZKZ4"=N> AUK,"%=1 MFVS)F#AO Y1>;#,Y([,,L/8AMD?BR8'H77_YHB7^(B9!--XVF$!XM:`2T>EC M]PO^>8PP!P?8M-]^$_3Q^(TE!VJUX`C5M<0HBS$*&?_<3[J:^C!&]3.+`S6? MTP+Q]G+<I:)9S%+BXW;:6H&F!70EOA<:HO`;$C5QB-*2U8_&LRS95T1"V<1/ MYV&FA2Q_!9Z`"K(X'#L$M\47C*"U[S13X_B\"I,<Q=,9*IS952R;DW8%R'!D M%IJSJ1^E019\ &$.[.=!I-]T;79C[?%)Y U!/1O&R=A/#OIBY(?AS!N/`?_! M??J&K(/?>D\E0/)4/,G&\$OTMNA#VH?/Z2#W^L!Z#4Q5>/_4>O]4O]XE>IXZ M3*\4!AR?/J_`^'% &" %G?67#*1/A&/1[\*'\^S"6N]RX[:[R]KD= -Q-^]V M[Z7-MN"_K=.HT::*H`:%8B*VTX%$"XV%#U#YEJQOX-:GF4+J1(RJ34`6/E4, M^ EQ:2 8M(R6<MT.T;$>%BI;BZ>($<9!EL6N>-E\5Z_4=3!94]0%MG\,HCVL M5"WO=I\&%9WZ.8<#!/G\VL*!6YIM27Z`[+D/?X ^+"S U1A,4UT_R0X0W&9 M#N!#2[[!$ELL?/O4`?!NWSP;"%F>VK^UA8B X%-8-0Z;XHLO$`H$=/.G9DO) M8'BR8XUZTVO:XPU ^QK1P$8T*"`:U$%4Y#, P"HW&NCZN*C&/P0)^'Y?] -T M]M9GI]]_9YZ&#1>H%FFF&;&$UVBSN,W2L274%.?O7>":KD("4[R5GZW(5:B. MP.2G/ZH`Z*JPA#A-*P.-YF'8%OA[1<`&5KAJ;1:AXPK8)PM`QXL;^71IK2M7 M.ES6L;+.4IU]R?*.AA9E.(HG)+127.L]<=1)LQM8WGH"M-)I$,'.6MEG>"U\ MYL\2?X2/'P/!9+H:BZL`^-.LY"VC+XQU<:DA9/$1_/U8K=/8"L&:2E6N82G4 M4ZMQO)N19"HJ+$)Y$FGY:$WE>)Y9LU^)/5<D?#(C*`T+\ATM]G)"MY2XD"7E MBL E08"W34G-ZSFQ,HS'-X8&23Z:U5C"DJ16,D7)':O_&PTNM[LCWD6P`F1S M[*?PIDU[2U"2HB:*D3!`M:/+L#^B46P>CL74>^]SN:LX>8\23BJ2(:C4B1>R M 7$VSQ N0)GEC3MQ%-[ 0A4G-V1 O0(D('0('H '=+,81!,9"2-< ;=HJ^ME M9#`CZF$&O/+]]["S`#C0(G'X`;:-.(*LF8I>&ZV=9";EY2[R1WZ:LL6'=?M[ MXOLX\]E\EY&A;SH+0C]A6QY:7CW ':H!7ZM:,B\+1 :'U#795$Q68-C=>.>^ M\,(P'N%6IQJ?P0*((_\*ND5"R0ET<M9,#;V[\A/S[`Q$QQ?I">RA=S27[%OK M\[V9'N\MM8'`]SN[/."[XGL?JH&I0L/(MEAD(31`'R`Y3(+FGAW1IZ4<"YS` M'EN].,,U7;^PG_;V:9&CNB5+2LXM6:\6+DYZ N:7*-O0 SUB9G)C$L=Y62IG MXHQFTYYCQX+2)V=L&QA^A.WUQYN&?.VBQ7)[W>Z#LT6H!RYI*)&0P0]XNA61 MXML</C5\J^WJC'3$O2U.!_ C?J'?DR`!&N+1:`X",QKY)#(M$Q2?H(A$0B86 M:.C5 +2J95B<_.[6:Y\)TMAUB<6;L)?1V+^F^F#?[R,,"HE)/$=4G3X?;63\ MH.LH[+3#5S*]+0IF`<DXCC9N3`12KN)<>15Z4#]L8=EL`GP]DSN8BV0;,(_: MKE!'1+.<K)TII4X:$VG2^&'JN\4Z?7N>2!OVB,]+ /M1H,%.&W%X(Q"S7`1$ MM^^-+L0V;5-T2P?[>BE32Q29,$:#'&V!NTFP25ECNF*WE\]4(L]\ SZD(6+M MD#J'*$?M/#<A`J2[T]=;1`7:&/N3QKJP,-F]6L"].O5.2D$'> ZO/HM+MJ"_ M(TM;^S9UY`*2ERRGVR,>PZT\HSE\IC>(O-$K(AFT["5JU#>\N&4Q8D[%X2FB MZ5XT%;;&;AN $%3^+ J.%S9BO*05>31K->.6<RI895(%MYA5P6VFE00^7&M> M5=;\HGIB.:ML^BKD0P$\W7U,:A8L" DH+Z_CT7NQ#2P?^:""ZW/`-_.HVRCI M.9N&I7,[#TQ4.,"ORH'WBHTOPK[^`X1*LDRH*+/0.E*%[$K80JVEBJ#30<M1 M;[] 5$*;$DXFFDO:HO+9Z)'!&HLC->S^F1C.)_NN5B:_9FJ>9Q.<YV]?/-J& MLG >D#.Y\!C!YJBUWB1.5IG$R2TF<7*;29RLN#CNU:IYV>JX ;7Q=^7CFJOC M8EY7VPU>6K0A=,TUTYX O_>"6;-=UX5V$=775A]OP4X1M_=SGQU;TO?!#-3G M`'<6(^5JHWI=84`47P"&HQZ;0JX?]2I0`7C4 6UZ0A8$F,R=1VP:TA1)+KA$ MJ:OZ=FP-BY0$8Q]]?W"Z7^HA6$<EJ! E2Z"MHPZL)$J"V\B2X%;"1$&#2G"X MNC2IKON/U`F26RD%2<7*_EUY\^^7M+\(_*84^'[O%GI!/9-!.A^BD<YL_D_. M5C(<5,'_&Y /U*?YL%7/$"QG U1R/IOM_B?7[MM#Z2A!OOA"Z,."U)P&0:66 M(:["</Q%>L*P9VT$:%M0-0W(4C0"G+(96S LD[)Y7[0I]TI,ST\/#$YGBT52 MEVLYZ9W9,M2IHU\\8+RWV`)C3#!Y&PQ93>V#.K-FFBJ4IC#UKJUECP?"C(,\ MQH25Y[6/3JAC/]$\; C]E4RU\(P-J%L:1:<C$52<O6+M^O"5^LQTFMW\+W#% MI2X >CLBX"Y077F'^\&L1%M*OCC]H<M+=IIA$]OBU[8U=L:H[&QUMSZ[!Y]; MI<:L/\B.U/`:JQF/5 "02G$%1*69J#%I5"X5N?(3?S*9G!/,I!QJKP+J'`$6 MP#W<I*[];R,;V1]""D;1[2H4.Q8<R\L-R< MPYSK"<LGKJS,&X_T7L01F^4B M4V^NC85!;FMUEQ?V0!IH%1DHM^*E8M#6QN;#2)+=Q['0F*P- ]YLE$E!+:"Q MDR]-JTX"1(=%SU0#J4LN#9\5.A)*H$O(I2XL627`9A$Z9A*;1R)+`N:T>&<] M0?JYDA+67MZQ*_>&37TYY6L17F9U^<,LE[7$<K"R(`]6EN3!JJ(\6$^6!ZL* M\\WL=&P<"(LX?KR(3YNI.&U^=R->>!]BC"K"H!E0LKWH+Z?-,JMIRD$UC>_^ M*2:'?_=K#X6"FQ+<#TGPMASVRTI[:6-ZF+QY7'< %5#RP^C;4IC^ IK>09^5 M;KWZE3#TIY(V;<9\>^%%[\DSY\A+PC 5;[PH\TB8?MTE_X*/5QY%0KGLDLXQ MT.LRAG5-C.($)ID7Q6E7O/&%/QUZR<A+,.0`_D<W!* \AODJGLV'7B!N&FV8 MY8V9=^YW2#OL#'T\'5DP=I]_'YOSO\/FBIPMM'?.6ALL7KD=Y6"!>X[MV%&Z MW'=+MDAY8S6OAKR.1+R_*&T[KB]/>9WI=!9:YIUEQW0/K9NPV,B]CMT[4%&_ MQ )4N7,H=6\,ZGDVEEK*"K9NC+,820D_JI:XB^'&:P)>-U:PRCN`-^M"E N^ MWF8/JY/_?W<)XS]NI >YJ5ZIT(^J#R\L77,E&>&( B)N%!LM<Z+WR;8R5&C; M3F?K78)Z6ML`D>.3VS:M1+GNKJA=_R["+5 HW0)GZA_5%V\5 ,]6A5Q%P`7K M2[A 51'W/ZLX(]PRXD?K=G6=14A"BAPH_A$+->_BR834W5\';Y^+J?>ZO,\7 MG&DT7OPP?_WV8L%85=1X=?&#[.A_UE#\'5CZ4PFSRO)7%D8G/=!)`-+YA.MN M3F^EY"VXQ5,\%^P#SOWQOBL++%Y+I,>M?HC%I;]MF<G`.K0ELX&KBYH#6Q)T M&#\#2\>( FBL&!I;&;PCZ]12<HM(ZH[G,Q7L(TGJY\T+">F1 'D'UBASG$7! M.%!UF67J:7$A&ZN>&^<]-_8&2DJK!<-:W-CIBU?F\6 ?P`MR_HXZW`W2=U'P M#D-^`:!EHHC4>;/J?OL'>R$YZ=$:<:9[0U9<J->LAN-1^:GR>&3L^*J5?D2G MT EZ-[3TRK=5B#YR0I)*3YZ3]4Z>)?-6>V)3<!R*PA?Q<5Y*#G3)=$`NT%)- MZ.=F(ZVV`S1_Q&&CY4QGY7`]H."SOBN9N&+O=-[K]WI?TY_^6!%1LTJ&[ \5 M=&7UF,VC;]INZK[_D.J^_W"MN %LJ*"7U_UY$[**0MNK9!6]_->455Y>5GW\ M7615Y]]!5FF142ZKMK8V)YVT6/Q7E$[$KAN23LSZU=/UQ0_':XB':M&TK+Y# M&[KW;*.BJ4[=&KI6W:M:"I6(\F:8D"GXZ$L'%.VOQ %82G"U97P7Q;EF[CM" MM% )&^EJ? _9E O+4"<^VB?1"LS8TN[GVE80Z-UDM2\Z3\*1ZW>&:Z()[OA4 M(N!(#.#YRO[B#7.EI]O2"O-25WD'.E0H=2DM"*3\1IZJ<65X4=J,!JW]A5)D M73EBN.0VDL3BM07"9)&JDY_0!:S<CX.S:NQ5R+NS+*&HU'Y79N.PA<;DA]`1 M%!MLRNIVQJ*$\,(0HT_':9E+VFL?4TG!ZNJ-*;L?AF F7D")`TW>%U66PIL) M8>K_. ?>XJ1W5B8=BGSVT%7U''.V:>"<6"%Z2H2*$ANV1(FP<(F(X6PVZ,5J M#MKHJZ4[,?`:RE0*#2&I)#,WZ#F/SG1-T7SL?#_-\ \F^0=)_D&4?_"!'K!P M([)='2,1_^VRUHEL+<D&RYO);G).N5#ZEC_QYF&FJ[M35A]9F+O&QP+%(E`` M;3=5J>X.BK7W2U2;8KH'7;%.T[&TE4YHPVUEF&+%&LK0:3:)8^$-1]O>L]8] M(4XS(;9_%:_>OA5BN6QCAC?B8'>7LE!.P AHP3+-NVFS86>,*0J,6!QB[6.H M'2O.,DN`K*E(L!>HR>Y)H=Z8KPIZ/94AXYC6P*>`ZTADP=1/"Q.:"UB'&'(M MCRQM`08[LM)Z4+5RC77>]ZWW:5&9T$'7$4:6=XUGC#Z%RY\")!2T+!WX\K[_ M;BX:QXFSPN$0Z^6$+^ 8(W/1?#+;(67]AC=<[]ER_7WE&!GJ[\4\:S 0]S0\ M0`U,!`=,5EAR**3`2CQ2`E.ZD`%;TFMW(2N!'BR`7H8!P.]7 <-/-2B[R-Q? MU-CUU]<XPB0$F`J"UD/.:T")#G"9I>E.IH%S'UXEE*9!Q!&GD)4Y2\6<7+=G M4$[FQ-7)WPI3[#(.(CG!X!NA-V>%_JPLNY)L]IP2=,+2[3X)["^7N8E63,#$ M4E*O!DI<\\3I[=L!,'*BV!".-Q;"P-3A+ *MUIYT3"?.&W]F'?=)$(<*/B^_ M9YIFIPO28 *GH=PT*$)!6P'59#M+YKX]=ZDCKKCV4MI,2IJ32YSEES#+K^0T M5P!*\;^D%C)=O"[N[-B;`CI'R_5IS :0KXK;><9]X]2C>X"66\GFY-57S&U5 M+S/20NF#K+A0]F"[:,F<88KHW-J(+P?T$E20DG=[^.[23Y(;]^7)GF3[_6I- M41/"P]%3(Z..$OEQ7ST>.(\'ZO&>BFB$[S3MY&QKM)V#0TI#TY:-;&-KVDSV M1DY-5"[O61ADG/,%!8 7F5P^3!65FJ>NNJ[$R= / RDFFLF+$Q0:B+E$`R\* M!ZUCEVKDKDRRW!;_GU&\>>_TWV17M731C2G<FU6DMZK)M>:_&JQUIS]Q3[]4 M\:!DJC0I!$Z*TXQF14Y%/G$G<\GL13E'+)H_A736 +Q[**4DEI-?S<WE1Y\& MJD]0*)E6`!H T/_LW*>9;O2(^A-?*Q$$4LSII983>JU#E4Q/E#KV:!FRI;6+ MK1(Y899D6W'/GTXX-3MQ3N;$ YLO0W2HSD Q46_?#8<RH3SR&6:MPBB?G9S^ MG]<3C$! W+R ;ZE413+.:$8Q1H2T(V9U8HQF%B(*R,)&( )]2/%IRZDQ!_]9 MBP=W9D R51I)5&[ N^YRT_G5#2V-G[+TK_(8*FWE9().J%K>"]'NR-ZUE;>& M-9NRT*MRC)=N <#N45S$90R&Y5?EI)A;2#3EHUK0Z9948C>M`]7SK44!="5< MNAK/7:K`IGROMN54=AILQW 48MQVN(OLB5:GMY9SI2,)G^2"#W\?EEV_6S;# MMN6PR!D+F73-(5B189>/1TUNMOST[&7\5MK$H%*;:.=5[/;ZRH2CQE=H%`\6 M:!2K*Q.KJB"#=520O1HJ2!'J_N(6&8.*/(*RM]YGF+Q>A/$,])&).3-HMIMK M]_O]]=MFD]IW9ZM-ICKFN`V5M]`W<T9BXFW)W,S=DKW;C2KV14-PVY!HLI#G M!.G=,>4 =RP,_\OT*S"]3,/-;#\P?#^HY/L*ELJ-V._&^I+ 4-P%???BM9; M3(#-[H+PG UG%W3TNBV.7^#-8?"Q<_RB?#M$=U;I1RJ;3A"-POF8+R!#&$1> MM7NBBE>WG;#*1\#Y]4L]Y,=<9E7CB1,XE?<#HYR6:`S1=W2 (<3>:W&EEIE2 MVR24^FP\&A2N+[[ MW88"3Q3<4YV-<;W02H^C-_45YX/7E)Q!\A`+!:17$;U ME#;XGIUP&67P*/1EX8SXC^A<(D)1)LI,2?\N0\"]L;P]5EN<$ULI$]2P''#7 MY-8HJ5NJ67$KO9*05.J6IPF)K-,(/J"U"CZ1O`6`JCE:U#$5BUG"(2TNT79# MS1)=UGS91RZ`M43G<+*A^VX87JL;2`QF$LOJ4QE^>.S$7.5D.Y>INZ [B`<U M$.^MMNXST/T5%<*ZNNMI]#\SG*NW;N5C2WTQZ"S5: "(O1)7'UH]AW%V43B" MQ)DU"Q<M>ZM9^K5_+L?#!2G5SX;_5LX!MGB"5;(K_YPGUG+)%GC3E R_7$)V M:D>[F6"WY603:]4BO:?E9('FA23K:ZZH<7)`K(NM5I.1!%\6%V?Y$!2%7<J7 M50&E#>RT^#03A7.QE,(2XB4,O+N>MPI?8)'2M:V*?[4Z)V\X\"*^-!6O7K7> MJ:/_-O0D^KU9&!S=$3]86!SGM8O8NN'(-9^3/LFNHZ[GBZMM\FOBI\)U2(4\ M8LK#Q,D$AL?:+,C<'))**VC1!7;XS(_8[^_H-2[X`$8)M;0YT :+2L".7]AZ M P97E+&FH8C1M2M;$Y=GI-SAK)>76Y+DM)`G]KEDG2*?*\WH]`6G!`[&U^(^ M7]**)D"*]>M\N+$FIQS-6?G<7F\J$E<MF8IF^C$/EMP45.K(PZ4;%WX8%J][ MP![(O<K#6-2L`I6L![5F;='"^BRD)9#1FI#)XCJ3!75>7U\OJ19*-%H5HUYZ M2]3RL0>AO(`!&HO 9NL,2J."SEJ0C07<VEC7=6OY0J(#*6 !R" 9)O1K+(T! MN)Y0QDZ\1%&7Y5M\2+313=X1*5#TD,7>N&P9F>6OC*Q>"92`Y\7`EG-8&*3A MH$P21TW[Z<"1SZ6"CNU;ZO(;:.J5W\3VHX-H!AV$1A=/Y M6#N!M,?1&[\5\ M9CRKMBU"2A(2?S)^8&8Q4FW1*0(RO`F8MO4JE.%=-M'W^VXW NB#%P9CNCU5 MT:)<&[<^2V^P8OOZ2\3V&H)[);F]DMA>+K4;%1`KRM'5Q. :,X_FSK$_R<3E M/,V"R0UH8'C;O/D*>M?(CU!%RH4H`?=-`C_$2]7&,*GX"C/X7(PK""4R2SNC M,T2$<_4Q6Y%0K^LX'5-9[4I3=L43OT M58-AU!6&'!])/O1EGL"6RJ_J_\,; MI8G&W!]6\TKI/\F7=)J<UFXFC_T?U$C$'2(SHDMICG[8=HF!VQE8M+H#")$L M93F1N`R1>[DR7ZQH_&*66>P +K0PJ.-1B9VIYQ<,SZ,R5TA"AW=R+S'+4)CM M,F3PM53XE2&3W%.)2A)6!]7'21"&E9AZO=X2HM8TS7A3\MK4O=*"=76.Z;4Q M>`MCJIJ]9C'P HG]5Y(,O=M*AC5T.8Y*XQSJ.B8-,]& 8P#?Q"GSJ<NHMUSL M"H(7=_2(0'_)XD*,VJQ>2)HQ&*J:Y&71SA]Y971;U K559U62!U+/G\B2ISR M`\L'1EOE+4<8K$-GP0K<_&'L]I7S'G5<7_)QZ5N%XO+3CCP)H/=93!7*-WRB M 72X]_:Z2MELS1MDN)^72[^W?'\GJ+08V87_0B`P)PXIH]$!F[-R5^/$^#R% M&7A36X0J'B ;:4O,&,H(O?Q-U-W&I.:&?/UBQWQAQ"E]57,F#8.1;^;'6`QO MU.<I2-OJF?0&`;<MDV9T;B)5\%U;N`"(KH79\/3P G;P=S\!,<BT&5(\[`;N M%WQF`MI)5Y0]GL:V2+K7XJ(=YQ$'X+AZ;DRI*8J&?LE6EJ6_S770!T1>.`5P M0+"T6[!X,:95`=X#$*.ND`.`\64OVT_EL3KK--^^9]DTPJ6GX[9QQQZV_!Y5 MQJSP 4M\IG'I)\[-SB=`*CTN17IFI L^+4"6P9BLA+86QB04.I7JMIMZMI\/ M*[U%E(P]&Q:+(IZ%%=H8CYYN!+EWW#_+X[!$"T\_->_DA&L,/;.O<Q8L1WN# M4INTV2N)\S)**9^.O-8$Y";:76!BTT6^>/4PYD._+ B4(.) OWQ8*97.9<JT MI(>=[Y**TADY?7CB7BR=GU(5.2 M3:D\SM0I-1\ZN;OQTF(]L<PD<M+A%Z:S M$^BJ$)R53C-JV)F5)H*^N[.%&Z]>NJD9.9%F67F[&`(;0OC`7R'-1^%N8/+P MR"^<-M5KK&0;=4M]#UC;+XW<\JE$C3U!#N/]2HR4*W`-C.AXY4\J4&+RP15P MLH%X0:O7H*_G6G+S3=ZLS%`!MG,8V?F,HFN!G,Q3FKVY'LE60J1L&"%853K= MXA5WBH,NK<^$(I^CINI$6WEN6UFNC2*^P!D="5(JN.6%[BC71(CM06/-+GJW MYED3 JZF'=-_9=HQ-(.5XTECO^J^`AZ25+=Y0Q=UEFP!,V^8RAW?!6RG9[,D MAK9CB'8TGPYE<B0\K9<7>6-YS)`22#?! +E,#/WLRO<C?(^7U<^*&V__>N9% M8X3/:[K8?H7W0#PR7#>,XU#F^,'^G7AAZE?(?D<]998,Y]/(>A!Q,^IE46(V M*(98CHKQE3*><DOBQZQ7LBV8X(VH$'?5,W.%B,QEE!8N89*-Q3 -D]-(+W$R MQ=+6<B5T1[483?B5,($IERNC/"YR&JD5Q:F6/A6N(?$ A$IY0A$2,HB'PS;E M!2L.'9747593IX.\JVJ570_"QL:0BS*M&?#ZZHWS]9B^JAI4 ,UY#&K:<;\\ MA)7+&K_!X[Z.;"UEA$*V[2T5J8_)7G1GJ*[=RB>ODM<)E*;+^UR1$>86VH>9 MW#6EY&D6I*>9DI2G6;FLK-98+&E297BD>L >)!.IRLI47E5598VUW:JMY"R* M\ES9SW, !=?YI,S++P]4N$&&JK$>YP%.LW((U=XJ0(%%O.%IYJ7CB6B4I=M) M3+:=I*(.D/OTT$4AWO[P[(?'H`?[?.R(C$%S:/TC,;5R2>%F$G3I52R>9<'4 M"ZT5C!B3'=G5J;4$1X\^7`+IP!:]"0M'T.*5EWA3>>NCWGF^D8: 6*4+I+); M9AE["QW"DYZ/NM4;6:\W\P!&/Y6B NYI>51<.B,H][NNFH5ETDD(AE&7Z.V8 M>VC)/W98D ^XWU=?9RG?+LBG#W$PE W8SEWKF%L<2]?&I4MC5:$ ET=DT0+( MQ^6N6D#TEVD&U'G* 1RS-G$?%R6^HQ1LJ2Z0P9VB:OF$!3Z_2-*8$6,?B.UM MI8;H<BU+(S%+*)[CR:>+5V0L5+T>XUM:C:']^R88EQ (5V,BJTBRRWCN(GZ M-:D=0[<FUJBE&U_B48(E<\I;A*Z-QNG%%1]Z8*F5*XQK3KVS&:\PQ(3[K';" M#-6?RM6EJ(L:SY$_ `D5.3N6>MS_%^0XX]TIFCK9B#.#+5#YI*#E.N)R*7M+ M+,X)44XQ_.2XK-IJ84XKM)7"A3IA7 FLS>DZ]9SF]179=W-*)P[L4HN7I?/0 M,EI; :/2*^AN7+Z>VL9E"YJ9`[((XKH<Y#2[+H<JT\X*"AQK (L0+,< %J+` M!)`U<(A*+)CX[L'#+P%113_+`J>97:($P08P;`+%1G!L!LF&L&P*S<;PU$)D MEZFS:UGQ< 006/-1AC(U2D,^OP%20Y_,I.HI++*\X?CZW5\?BS *;S#8^+TT MSQV^.7KY,K\QF'KO?0+?KO3`J$A.9#D28%]DL9W8HJ0,+#G]P2-UYQ\K]$J+ M)^>(XNUI9IU2BUH!DBA<"K?PVD-LIWWV,WCP\"QW77+>%IV5I5C,Y+4,VB^G M`MCVP'#AR7TF.#NCO/<<ZFK.N#([J'/5._#>* ZQ_:?9FB_#N)F;1 DGG1W> M6)PAF>J9'_H2`<&._9`^JZS6]9G.\&OAS(!>`2UVC`_54LV("L1B1AC"A;FR MK,5]2Y\^X)=AD-'X8[6`D >`/U-&6[45+C*B1:>Y8H,!1V?6AI.W??9Q1Q%7 M06&[HS&U6.E39Q1;.:^)D[MC4F/OCIIM?:8B_2- VRSS2>%SVV7;YGYZ>;9_ M6QIU^)+"2%W``P5%]DN:\3GO0YZLG^%&<]A"Y4ZY&?%M8T5/(X$O#[\^>O;\ M1?X(1O!+S&KPZSP8O1?C^!QD\74>21UK)':RF6UY%Z5$]1Q-&) IH(`WWI^7 MI"-A&YL.14[*39K/D>`C\2P6+^+KW^<0D6^_R&+9[)*[>]CXM0W335AGA'+< MA^(OHH'SI2$>BP9-N4:U$[-&QIS9*O?5<01\[J2>(KE'[C/*5]HK.USGS4G_ M;-U[8"QJ6\M-W44/N'2PGS.+%6[N0+O2 !P$8?]6J# G&0W_(.N494/'-"<' M)K;T<]E(SH<WL#; ?9/BD^HO4R4NB1CYV\(2^^*S6#",\_0B!NZ9IZTEF-(\ MIH7<08''<QGT0R_Q21<-!_$$N';O3`SGDPG%DJ+YT#9=CH/S(+-]=C6WE.=N ME "VL1,$Y!S6_CY92X#*0S)1IEF<>.>4S%IYY:"VD`;3&5[DD`%!]NZ8T9[, MD0'GE&FBF%W=1`3-\U>L` 5WD0*`9)=A3L$L=O%&0YT. RLQ8IE[Y83_6+MQ M+J>FCHPI+?C1R%+[^BTMHXMQ8O.<5V<;3Z?LL$5K39\7C:0W+W5;KW,NI'%\ M58KCJY5PP':D%`L\7R;H%TR<,`;UT)TY^*ADZMQFSJ 9TKON_]*#'_IEN7B5 MB`#=UN)\LZ:`UOE*9X#%_0[GU^-ZARD7\+ZUL-R"_3?*]SB$&V#\<!.<'VZ& M]</U>+^ E.!*MF`AH]5GZ3+&JUCU(D985EO":"#L>=A'=__216RU><<73"^> M;('I>%Y*H8\[07'&R^39ZT["FJN-/5?M7=Y2Z&:GN?]O.6$WLDYM8+)N9*JN M/%%+T'0VT)I.:7,ZJ[6G4]& SJV675IU"[-]\<*[H>E.2T/0LE17+;&(_J`2 M-"\H6'7X7TGQATJ*S:SLFUC8-[.NAYN1%N$FQ$6X(7D1;EY 3,+8R\2D4N$8 MQ_-AZ+> Q+Y8AHO+BG'.F#+H60)'NG5++N3'T(B[YXTV`+I\;70K*M:2EVHN M(P-CST2R#A''Y[8!['94!,MZ-EBE:X.JONW7Z=M <YT;E/=NOU;O!IOKWM&R M[AVMTKVC2M:E?)T[ C_4Z>L=V=W=Q,??G,9^`^VMX.I5Z3L&`N5`$(7)BA2N M:=7]X(5S'VV[TI$QB,0OB3<.K 7])ELO`?##Z3S-Q-`7G 0DD_L`X?<>\K$1 M/\=H`'GVY'$([GD$G_DE'2J!'L(HH6B_9Y(*6P=:AP(3V,S/+\1/Y#$Y3P$% M5)7X,UA9_4A2C_"ZI"1CMT(#(X`V;WFH^M*P-R9,^4GQMR<' +LJX(V+X,4J MI7H8U=K:)^^Q"R\:HS&0.P3/D%/N$+04,IY^KWS8+75.MH.;4-OJ\SNTGBHB MO$:/?9338SE)I-:FRI(R,6,\D;5!M>K!A7_-NI9U;X/L%_V*ZT=EC#_LJ*1^ MI&3%*M\NV[2M],-<^BY7BLHE/U`O=LV+ ),L26V0SH7Q5)J4V;^($2NTXC%_ M.FRB)YLR77U6VK!D`O=H1"*TTNG9D_HVQB`>YELKCIU^[[ -K9F7.DS`VT:5 MIO<`X`;SM9S'^4K*"KRW0%N%LW>-GA^'+["E#]?$30 ::Q^UY<3R42?-;H!K M0+#YR32(2)*JI$[F*$ZY,5>>R/']3&GA3"X%ME5)?;,$6&\[;9TA`RMOAY.S MEG2?ONVIV+U;\V!5V.1*:CJ>=YWV2J,YEV=976<\]9B^B),I:$1><C[',/M4 M)N$OC)T>O0D!;'>[W<+IIXE6HP.GV3P;;8_U2:D^+73]/%/IXNFX=V(9KJ [ MCIG$[2\07UO\HDGES_*Z]O)4;QOO&,GE3X*GZ9/=X"F*S]&%5CQ"*,T7P/H1 M+? `<1&'8XKSD"ZFH$<D\17H#WC)P=?Q/!JGSY,$EE=8:8),7E;0M9,8/A:I MJS6D< R,0XL<#3?T=?E0%/QS/^5O,'5N)#(9^_+$X^32I[^2/)VKCP94^BNI M[SL[ 3K(D_Z_VO1TGQ;H?1-% 6T<&L_QH3C0&0.S^-W;%X]0Y52.PH;Z'3$T MU]EML!W=;K!C!]</3W36'`H6ML+^"V[+M^/K?%;I%22?;I2L?16AM[MC));D MO-6%WLYN`8DCVFJ+O%(T=^]6(;J[*B;T2F >-2O0':V"[FZ*.8<:^>P<%D9X M+E9L+2,51"?AY1#]1>B%_;Y>-XB[F!6 RMJ,!3HUK6(%I`MP+K=)K>DF],:G M_-)Z^P:Z<)"JBV!F'DR%)%+A<_2%`^ H2.X0I;TL0S(?0^:M2VJL/>%T#HM! M&+S'+2 `Z3>$9Q1"DQ !&E_/Y[!:8&`CK`MI$$=I%[:4*L^IBY?!H4Y88LZ# M#WZ$D?90$VQ>94**+NU.FYVFP&)F"^K!+B'B)6G+0=EFX([?,*7E#>68J$XV MUZZ!<`#$Y+#SHM?YRH%3]Z/#IL>J T%>4I)=,0D2]$K6`T")9E4UT*/-GYLR MLZXU)(0`5T3_''7,M BZ?E<T?J;ZIS[F]<7 #X/5I_2Q )GV7DP`]LQD'HW0 MXP7'7(YP6SP9/B6O0'*E?+([?$J/9-YX\Y"0P+X87Z8P//Y''Y_38[S?7=*: M&FO$]W'F/Q8ON2F3.0AOOVTW2Z0W4>9=BRDP$`QI,)TE&+_)(9DQ/IK&B<^, M5&04FXN1I7PK>0%?WBQ;J!9\[=XJJ[=2!^)66QTXV+&2Q#76,\:$>9%'RS,2 MS/:MFFQ5 RX^A8'F*VU4.-<G^]2CGU_#Z8)"-4.M-5RNB1S\-&O1?1_HS701 MSTG?`JY!2U`D?%S7_V+I&M(F` VT-1Z[Q29?,388]:,1DDR?9OH&H)E-AVS` MS]P`IRIN=4>V^JDJ:EWK4VQ>GBK=+:,XRH)(>_=NN2G^9[G$SRY5W)H#G==P MD8?3.JJ%9KQR[:*8-\1P:O,:9G^CW$.T;Z\6>9`:%\/E0/*;R%7A&S_?K$'F M]?4:4#]7 BTFL#)C3U5M/Q/8SRM5Q3"K5^/]O'I'>)V/JP,==GY:I^\JJEH, M5557%8$=;M7J,%#32N1Y"/2QXZU4T\=U *X7`?V^"ER`N8%3GU9XRI]PD5N5 MEZ^-9G54N?K-VEA<\=SU=-\&=2X1,M7AE>%R32RL>;W2I*O.DKA<7.^NF7\K M%Z+#^3A!88=FVGIQ(0,7Z4?%D)J"BF'#%#MR7.9.SK$ .S9W6=VW/%G6.FO7 M I19J 5FFZQ27G$?T.Z+IG-ADS5R;M/,PW'.ZJLX"<=T<T=2#;[V(+\V]TG9 MB6`Y7 K5=FO\91J1A2R '7VP:%T>L')8VC=.<<"X<GZ7W7Q9+^-5_9EFAZ)S MA>Y-B: ,4I_H2XT2DVOQ4IUX%,/3;8/3Y[PV=L>JZI/.!3*V-;E+E<*C>!^C M*HT'7)JT,JK*\FNOP_T\G"O$IMOCOX#_D_RU%P78I7, T9=3B*MPW*B+:%R- MATLU;FD^+YE=5W27C-K"I[S%-2N6C("D0VG)H?("#,[A([,P\\P4&"<9^CHO M(B]KGB6O]6TUUB::,T,&F9. QYWEQ4O_>$M;.8T+UYV5S&9W>VC-9GQD>^,E M\ZA4`*P^XP$3S ^YISD0HV+J'3W=W.V8VUVXG5LJ/+"RW-XT+TN6"!+JB/K" MQ,Z+0:`R]YV"0X[CLY-`PZGMW2AO6'<:T?OC&E$IV/)#J2LLK:]<_;F-N),L MO^A6G[8K[]0DR5VNL](A+("ZU_)P9M7]8BUIF1A-'=#KFX\?:X%V9QE5GW;I M0`'-)-)&<JF]92B'=%5CQ7D<CX<WOD_RV5\D5\^IX"TDZP*5!77Z9CH? 6!- MXZ0I.,>T%H)TP(;W#4UCQ\R(MMK.1]B>]3I?M>7Y6A"-$LHI+J4MA7G?$^ R M2\F4XD0&OW41,\"<^Y&?>!GF08,227(CK7E)C-0`2O9!\F?L4V0RNT7DO(2( M ^G4'U.B4KPHIBB$H6$E]ZXZ::C18)1Z832?VG<?\GVD^5AS2D4MYZD2IKAB M6E?D\H&:=/_H*T5E;%U!::ZMED^QZ>8<SLDFIO4I3E?U%:<24UJO=*B6^:H` M"S[KFV><BU+A5T ^,A+^\I.-L7.`#Z`5S<,B8DXWR= T3&*=/UKV19U22M-? MFJ4A,5E*^QQ.OJ4B>37-\*3O7#P)=<JR5E*%+2T=F0IYVZ:]^\/O=G8LS0C6 MC;3,!J.63+4)C;.R/5DBLD(6KWV5I1&AP+`KZ(O$WZ6IC$H41"K<N/.?_^<_ M[I9+&_>5`>F7%Q^4%/VJ(L=*KZSL5Y6E>V7E/WZL`O`\3T+<[FY#4A73_-X] M([Z](*<%NM./;\ A&)))HSA)_'061V/G(D2VH^`-.GC*D<B;$XW+`A0F')9+ MB)-E<AJ/ TF`>`ZTXPCJJ^IY[B1+?*?*$WL_X60 PS 9^\E!7XQ *<$D7H#D MH$??9MX8"3YX\)3+)T_%D^SBJ4)#7Y[YZ2 )Z.9`J]#X*9[QX&D-?3F*,=09 M)3^U#M.IY [PK$YSD8PUDM?R7F':(.?ZD7HYBG,=;=UBH7HZCSXMH/?&EQY> M>B5`BL/R3*N/-'?IK8+=KX!OEWKR*4F0EU;W:_)AKLDC.^NHS:0===`IEI!G M5.0$VL.EL=]=6$$49T*?/D9C>3.3W)H`'-<K'V;>>_CV"Y]YZ<-'+Y6#L%Y- M%`R)9ZY0EZ?&4S58EO&O,S\:FSMOL(-9V_#E08F[<4,XIN9KO/=37CVE:\5. MPI,9#T]V.>NG3'0#;0*:.WQ N&7=/8H.M?ZU1['W4,+KZ':E-U$<W4SCN>0G M?`N*(KX&$K:^]P.\M%1X(WG4J6Y[AW(_$P[H/SP;5?6/#-?'$QX!-4FW\?Q2 MTLC31/<TI7H"6=(JNN\E5F[7JLNT]$=;..2NS0:"X.TOHWWW^SCW/2VWO^*F M4".OE_M\U'R\13729DXNN)P)5G614WXLRX_SY<><G6 >.5,Q=8!3"9SF :5Z M;2;V6!30Y/V&</U'35+N64$5O$.$81OIEBKL_L(27` E P$KQ(*YZ2OM0^!I MG<-?.SFN&H4M`T%^7.9K9KX"42.5$BG2ES%P`BM+92W+8^6D/2)D$\LG;.S3 M=I09TFR/[;W::3:1N[4VZZ?TB>BE;WB6P;\#>0L4>:Z DYDL)BT3W0!4(,IV M9!'H^*%-K--?KN#. 07+Q\!.^QQU6O75=;:DB5MN^TQ;W#8J3'*G*MLRDB], MOG^&=TZ^N823?Y7RU8,Z+EMF9^Y')#376$5E#1]$] 2=[7**OWE&BC%GP2=" M.X:)ME23Z"]UGDSL9$[$]9RQLH]"]T]<`X<ARY# 4):CRC;**"*T?Z),AZJ2 MH-[1R,MQN_FGHS08XP*3B2:5:.*=2;,X#> DJZ<F&Y/R6%W;_"*(V*,TDK?E M.LL4E;%9P1I\8N8&CW?+GHK7/#,K)I].MR>GGIYV69$G4?0'S S(<C, *Y\! M)J>?S?]$VJ):2O ^J^#[K- 15%SS?Z:Z!8:I<R!A.D9P<:)BS!N2FP8 RH0J MOX.SPIH(D >DM&,.5U2:7JAB9=V+YN)L9F199V8QK*HCSZ^9*L>T7N<>\!94 M,;!>5O+>)G8C]3( N-;'%G"*`SK%7PS!$W94AK(BXR_"T3!,E=%5F395"RTD MA XYRQY7(V:LCIUT:JUY&\GX8W) );6<;!>9$.V<;-LJ<5Q;-.C&IL;1LXI- MYO#HF;QJJ K!L$,8ONY4H?AZ(8KS"XGD0F*Y7H3F_+HVHJ.-8?IZ?50-OJH+ M?M^CSBY' [OQ);W,OQ><1FD_'1>#8W9%\!!]B/ELIY%6&F`=^VL=C(WKQB*$ MU^+\N )?_W[GFWG8>?0EG_NA?14_">JO"H0"($0)KD,^/3P\/,0___CG3^7 M_Y`NS-IP(M8ZL?L[;!9P;>6?Q^)#K[M'+P[G&>P;A7[QS/L0C,5Q5S3?S&*8 MQ>.WP;F?-.DYFS&>H37W2,:1`L1>O_N==]/M/1!H9PA"C"Z%A?HM"`!E%!Y/ MQUAC?_#`8)!FC#% Z/6[W\PCQ*`?9I;S*D63<(`F[5,! _OSV/H<3+WS(/*2 M&R*"-SC7 L*?.[,8E>XE",9>YJ&U4=Y$DBM(SXZ#$3DK*^!7\R'L:,2S>(H; MX5V,%P-9.)QG'!G[#(WJ7BB^\Y)4;RIWY<"<!-&9248HG9W9=QS!I>EC$ ,C M7]%AJW=C?+3%RRCS87C$CQ<Q],[W9-) &K=1I\'8RK:8\Q^R#\`W^3=`:\B< M?G-D(O87Q[$R8<V=YF^ OIS1F<!VVCIY]]OQ;^^.SW3E<AN?/D;_=?)O?W=, M?^#W#GYC1_IC#?`"1P$:T7E%`U$ ET8)=A 47=ZF6W&!3ODT4(^13HJKKZ*S M>W:B/I^=G/B=W_R=,_, ^&T"[3B&/\'9F1EBJ/XD\J+?X%_P6Q!-?NO`K[*V M8LNZW+)NKT_M[>[YG7YO8G\.K"_4`<(T<R1;-+);-%J_13MG#J>>;+`CX-?. MTAZ!`MP?T-B=^P\>=K^B5 ?,!?Y.OX=/N4?PDT9!O$_WX`P/D;_?^#/NIA>8 MCA1M5/(\ *^,OT)+5NI3TE/,7(K[ARN\1EZ:A'"BL,'6G\'F((MM"RS(Z`9U M=..7ACS]$L8BQ!7`=ZB6<5B0\MQPR(5G,YB6Y,Q &92&/AH&I/$+7?,)AW3) MXZN'2/P:?WQR<L]BF,#;+<Q$2W,#/R*-/BAJW,G8#\J9FQM+M\$;G_O#,(T% MC`/:7D`5)(=[V$Q%L;["*.'4EU?ZU,\FG*L!BMF)`WZ3D2W(FJDQL;7U-1-M M9`\?INT8C8A4`_!2F[%D%W,RG]]`<V(=&UBOS]!QG9"H'J*:L"<7=*(QT4U` MY(?,2D$*<L5/ M%V$)EC;12D.4Z3B:9=PQS^.?8CZTK;?>NZ)OCSS!_AK54L MP=QKFU21Y]>S./(K7Q_)-:GTSJ?T6N0RRN+()7B^+1PJ+X6EP=.F5%BN>K9V M;3J$ZV S):KYL.:$L&;?L1/K/Y_.LAL]->3& (I;":ZHFWAOID2/75)BTSB/ M+OS1>S*O?N]]+[:_C]&&RTM`RSKUI80-#1`I#?10,5^#W'<22XUBW3(%N'I: M4OW+:(([SYM"I2#>[$I0W"VI0&,_I-01=.HNIQJGT^"YUG?,Z J,:Z;C5+83 M4-7J^T[3JOI29]9RV\59[V4>ATLV6N"XJ)3WTIR .AX^_I$NY:8-]"$9YP\ M"\4%*LQMO6,%TJ'K<)(ZY?5I/^Z,+?>L;E?L6Z2S,>HIG85KDUKSJV9+N`TJ MV=KFQLW8]*\%*FA2$Y (VOZZQ.'Q""\(D]`[3PE>-P,?#P""3X"Z=C^X827N M(%CQP<#T.?(_N5_%$E'AE*N0%TX9(S1R#%[2?_;CS^Y7D\/8_BF9MD5>4YR. M_,W<C6X>OJ)]!IPMC]06=* /XVZ]S?4:320<&8V5AE9+H(ADAKJW+C\NNA]; MMVBA&X+%LZFU=*B!\.,X)C:]\I*Q9E<4"II-2\&F0:H.S"*.WI(G?*J=W2*8 M%!P!YS"ZHXV,[K,"[];LBW(6^52.R^;="L8DBD%^%?N9$[$4'G\N'Y5RNG"Q MXM-FD+6-YXT:O%+H V)]GQ<S_9 GMN#]I,7Y?*"+&9$J9T"W*5K+)X!;PTJS MP)8ZJ\T$]UM>?)4,;XG,^9R7%T9^^SQ.(> EB6>[YN+]`^UY.VP'[7G8AJU3 M&#3:#A*<0:":>KA\HH+93/`J:\1&V:?T4D3^!Z-,[^&[)</`V351>>F(P<*A M*-M<%SL<9UVWBPAIX6[,PP9.QD+/;]]Q>Q3/,LWTH6]2R+>JAZUD$/! I&Q? M79P]1&Z!WHG2K-S',`8MH*I\/N?8#.%-4_#+6BW1--;MT V18J1`H6>/U,[/ MT]R`VQ+N\3;M>`HP,B <VI+.)Y/ 6N[!/GAAP"O#$%TIQ`IMAV94C$/%8-8L M'3H*=,T!*A7C%5+E\Y+YU]_`_)-R==[4`<K-L-DJYY??<0ZRG$/O7([8(T>K MHC^-V?X6,`3*]^S7>9"`5&L&36%G4BCC%DUNN9;`W1$LT00J%FZJI(8*4;Y\ MK"J6U,B949Q8GX/F>L)H]6%</N%+6EIORE<T?6G+5YVBZT[/"IX&&K5!S3(G ME70#JS^!]J]#HX-D]Q)%Q1AB6+G VV^IT;]8'=!NE UBQ7:GIH1R./:S]=E- M\<C=J[,XLA9(-JGA):H9E$03>V;JTQ3-V9^<5&$2IWE;D?=(U\:=3SJGR2.B M*VL3S\5HK$O9+H ]?Q[%(#FZHD#*6U"&7D83]-FSZ_W _4+.H*K^?*P37L&% M5YRJ#.+R\55J/QVK2^3TTT4V*.R4 LD)^<'0Y5S=6FE<*H.4QA-4_8*Q2G90 M1&&H 0X`X#NJZ+;JB)9UY\_".JYJ5))+VJ7JO"I46KO6\?JUCM>OE4XH%AK$ MEA/.689MZXF-1<_`I8CH"&4!GIIH^+RK$DU-+(N1U"<&=VRW;M)B)+5IH5/" M#2#:%!XZQ-1XC+)HI(5.&$#IZGIGF#&6>9YAMW/9Y<HFC9TD)<V%W"\E<64* MA2'QCZ$PV,`4#C8VAX,-3>+1!EHUVEBK1IMJ%=Y=6+3AEW-3GIT(N(2=2I:) M57GHJH*PJPK*KG*D7:U`F[N$7:6M58D=.\1:0S*VJ'7('>?(':]-[KA`[N[N M\E'W+?$-6F`5&]9`-5^*R^K$W!;.U987^ ** C- R0EL[LQQ402RI3^2#Q%G MNBFB;.ES8#?MCBZ)87%Z;Y%/SF.5ZO;JE?,[-1'B?>77\//H*XF9&KT`XL'# M+X]KH48/FUH%R3NE^^#AI!X!_4%WK_N ^[!>:8'%'SRLBWI/U,8,A?>>=_H[ M,";0VT&^J0O`NKW>\\X#]#>YW[W_`'`,CBWPA34"J.^"!L<6N2O``LV#^2JP MSUW8<%Z`70`_J=O`L%;!#OEJU2*>7*`>O*O=TDG=D<BWOZ)LV8V[J`-T(R]J M+:^J#+Q#\(%T#5 3"7D[#7A$OWQT'+AHK"P&_S%XT.M^]56G48G]I-_MIB9J M?7!6 Z(:HP%+A(.W?U;6X2AYR9J%(IHVZ^K8/+>/7R*!^VWR"5Q.>G/0K%'H MNEFCA:0?DS;=NW[PI0V`S6K^V*P!M_>E10UU1_/+A7!J*]_HWP=9]V4-=N?; MHERP=W7F$_0HWMK:Q?F_O)H*R; <4$^GI25S,\<N7RO8F]/<X0FG?RV\\#Q. M NQB:AS<,(UMX;5T!T-_%<QJ-.8D]??S$==#+R57''$17Q'_4MF4\IZ+V44< M^5F`['W#>82#L>^Q&=[+V*/M"MWH?.)_F2*. ($0=-\CN]N%]\&*X964FDMW MVBI5/F7M)12J-=+9EXXPR?UU_O'CC8ZO5AZ$$:"U<NS:`>CR).%`O)$Y0V+5 M+_A15:/S%=/=UYP;6-_"_0.%CGNA[#N9W1F 9^P/:4+A[:9M;3FQXUE,&4/8 M4Y^!2'VD#N#RLD)EJ91W<?/ <`9E;^8F_S<YC..YY< I*=1'OJ:5%/0)ZJ'* M?RP1<>0HG\ D/KM75/2-\=LP$?\J"^,OZ&C)1/W']O'+[[\=B(LLFST&13SJ M7 7O QGF.>G&R?DN?MN5-;3%C^I=JUT&?75UU?42&/$/,,KG\8?=&3F3$SWI M+F= "=$5+>Z$OC<)_2S=??" >Y%-H:_MN?$2?],XW:29/VUIXK^>G\O>_`&- MR3`%WJ?BBA*+82<^C\[#(+VP^`Q[':W\\"_FD&O88'C#$`/B,4=4<3JF;<E5 M&?NPH).$/,["-%YC](F!9\7T+XQHV[DW18=0:R:5\=/%2Y'NR")XY.-<!OGT M0-R7$B &HF0DE)M 1C]307<J[L(-#9:8W+>XTT*?MD-RO#'/GE""EI:,*72# MMF4I2I9R_TS%A>F4AWD7N8=-:_>8O^`I188=R5O-'IX)'(T#XXWX]=&SYR_^ M^K>7WWQ[_-WW/[SZK]=OWK[[^X__^.=/:H/7Z,%Z`/]ZO<' _H,'\.DA?N\- M>H.&D[AXF/<RM9.=%9HH=X+YBS:P:9[5M(]-'15'*6T\*Z6-=2QF.GBD.M8* M "ZY1D-%N-%?'5Y8ECZ:#J!,)FXKWE"R%`4Z& 94 >3W=6H >4E4S[G=8\A! ML796,AB9DQ$W[ZPB09DY!/R;=>[U([6V$!MI"A]:A9];GU]:GW^P/K]CA`LZ MJ81<4^4=BS_OY((;/YG>.AF:?$.R.]S(0SMOI!Z&^V[D,*P?^X4D:F:\',% M6?BL"VMYDND43(CQ<<DE7R5ACNYU+/;U '*J*J%%4 EI*LGOH\HT&DM+X$S\ M^8N??[YW[XN?EY=^/ _]A(LUGM]_6+A:51<4ST,H>2/JE/VK-T]36?"O ]Z" M A=Q>E&GX-^"<` /9-&_W>\_K"[J0]DDCJ(ZA;^-YIDBX-L'>]4$?.M%>(&- MG,S+RQ^'\<U8(C[>6]"R8V]<K]S\O9<&_E4P^IBCXW P&%2#!6GJ7<9S-1P+ M"[^.K4Y^W7^X5UUR/JM=<AA$NN"#Z ;^Z*6HIF:Q*OWCX,&"=OF^:E%O$8/- ML\!/$O^C8K*]A]4X7TT"T'34;' UV*OFFV^\T?M44_K-8$&[WMY,1Q^]][+H MVP<+^O\PO1 EWD3UZ^' H7V97:'#\+X;[JE%7?`J",^38*I:=7]0W:H7N"^Y MA']7>)ZN.N+%_07C\.KYX>LWSQ7RAX,%=+Q\_OJH7DG8!OIU"AX=OOW;/V7! MHT63YUNKX+>+"GX#6J6:*M\\6%#U97P1`0-891]42R105_4<^-O#O>J2WWD) M+,Z:6[]396^;7_<(*(5--+J8X%TT:3P*0-_[X,O-#R702#.9; S&GH.XAL/$ M_Q#PSH%WFK"L_3KW0]Q4SBAJ3N]M**D67]1J;[79_QQVI)-YB"7X)E2.#4- M>)-P'JF9/Y+AK7C<P(DD(U+\*?WO^RB^XF`]^"JK9$]XF4'R'+:Q< /MAS.H M+KSA5LRSF*,\,M]VEXLQX):\JT:![^9OIQWXT/<C>0,=/%39O'4'P-8>]*C) MC=H=6KN0$_YS)CMP6R?&Y^[).\7HXKDD^:!W?^?1#4BC>'8C Q7CA$8IC6'# M)8-XQ=$//])1R2C`\$GIHBSOS#U08S*>S[H(G<_&SJ]_T6=7LK 3JF;G(-9% M?BDK J$[03Y#0_3!/9$)/]C9C\KRI+ UT!O"K/,B24S.3:XRSR:G=GD#>V1, M#)6J9"P$+Y/_]O<97;$F>DR13J3_1Q\,<GKEJ+!<^YU<"5;TK0L(<NE +KF9 MEZIRG1'F$K/UY/(22XO/9:ME7^P'#5=TJ3SF^TZR'M7:W%BAZGXIGD*SNN;! M!VQ!]$$A8K?(K:UM.=H5*,("BM" D/?YT.[TPYDBU;V/ 6_S=5[J_,STY8/U MRDGA=;NT(F2'X8FY**V(GJW[SG3Z;Y6BM['*\T8>N9[Q3A('*2ZDE-C/D?/> MOTDI\RQ^L-+6TU=G9LM%A5[DC`ZYU_)\%TDL>]M7;\/2UP/]NOS]GGD?%]68 MY$124$6"+-`_RZ,IEAG4*+-7*+/ZHBK7TNELCE=,Q^%\&JE('=#:X+>Z7GVB M;_'-O"13"2<)'-,6<VYE E?F7,I(AYCH!F"/Q3Q%./?<FU<8+&_APC>9-T09 M`TSRR(U!9I#%*>=<,\N"W'^GF<PFS,W'*[+YTXXBH"5V-2WWU*=]6RRZ"!-" M:#V(W`>OWCA?C]^X]??*4-MY?[FD-!W8DKGL^A/94VL(%88M%RK**,=CIS?Z MO?P])?Q>;O*KWI[*_<&CBO?><+2L"+D4//SRD2K7?[C.E=;$SS\FJ`IBR*Z\ M\!A=BD$9FUT4K+-7\'3;CJ!7K(F"[5'/I,!$U^0 &G,8H$IX*E^ZSZL9W\G= MN.],!NL;YS2P`^J#",]T["?L*>T$K,FU'$O29#5R/)<&TFJ*27V=4Z^6PS % M3\[<,B<J^GI$#C%RB%6J+C4G]U>_&2)(031EOLR.[=QH3'U4N/Z%B'(SNIE4 M;<8."V1B+.P.ANYT3!^V0*V0[.#BD"<QL):B:- O/N9^,/G+[7[ =TX_6`11 M/6X5HND VI&9TQC&E$M/-.'Z+F$2-73?DMTN3GA'/68%9&]M*;;23_(7X.0- MR26];FB0:I.I2')K2>)R*^6"PNB8U\WX6`?[]C`=V..D;\4HC%+5(%GM$V5] M7]G):2[GZF=[6E U;TQ/1(&U4*"31-/BO&%YG]D%&B`5AUC71%E/\?MX8A6W M8QMDYKH":'NOM0Q[6^SI"DXCIX8"R* `<QK!RA'5I6LX&B\ES"JC:X%G5B52 M"?N_4$L!`A<#%``"`` `D$1[,]:" *YR1 ``E$L!`` `#0```````0```*2! M`````'-T<FEN9RYD550%``/_88E#57 ``%!+!08``````0`!`$,```"M1 `` "```` ` end -----BEGIN PGP SIGNATURE----- iD8DBQFDiWW63w+/yD4P9tIRAoivAKCOEqwj78WeAvdHJXPVXnHfbidBhgCbBER5 ZJRVONC+QoNFxKQzvqWTDSQ= =ABr2 -----END PGP SIGNATURE-----
Nov 26 2005
prev sibling parent Derek Parnell <derek psych.ward> writes:
On Tue, 22 Nov 2005 02:19:50 +0000 (UTC), Shawn Liu wrote:

 std.string.toupper() and std.string.tolower() give a wrong result when deal
with
 a mixture of upper/lower English and Chinese characters. e.g.
 char[] a = "AbCdÖŠeFgH";
 char[] b = std.string.toupper(a);
 char[] c = std.string.tolower(a);
 
 The length of a is 11, but the length of b,c is 18 now.
If it isn't ASCII then DMD doesn't want to know about it. Try the Mango library for its ICU bindings, I think that might have it. -- Derek (skype: derek.j.parnell) Melbourne, Australia 22/11/2005 1:33:24 PM
Nov 21 2005