www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - D array, frequently used operations.

reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
Attached file is my attempt to implement standard set of array
operations:

pop
    - remove last element and return it
ins
    - insert element into array
insr
    - insert array into array
cut
    - remove element and return it
cutr
    - remove range and return its content
remove
    - just remove range
index
    -  find index of the element in array

provided template allows to use these fiunctions as methods of array types:

char[] s = "world";
s.ins("hello ",0);
char c = s.pop();

assert( s == "hello worl" && c == 'd' );

Any comments will be gladly appreciated.
E.g. I would like to be able to mixin these definitions
for any arbitrary T[] but no luck so far - see commented
section at the bottom of the file.

Would be also extremely nice if ~ operations will allow
to do something like this:

char c = 'a';
char[] s = "abc";
s = s[0..1] ~ c ~ s[1..s.length];

Now it does not compile. Seems like a bug in DMD.

Andrew Fedoniouk.
http://terrainformatica.com
Mar 20 2005
parent reply "Andrew Fedoniouk" <news terrainformatica.com> writes:
oops, attachment is here 


begin 666 darray.d
M<')I=F%T92!I;7!O<G0 <W1D+G-T<FEN9SL-" T*+R]\#0HO+WP 87)R87D 
M+2!S:6UP;&4 9'EN86UI8R!A<G)A>0T*+R]\#0IC;&%S<R!A<G)A>2A4*2 -
M"GL #0H ('!R;W1E8W1E9#H-"B  ("!4(&)U9EM=.R!U:6YT('5S960[( T*
M("!P=6)L:6,Z#0H ("  =&AI<RAU:6YT('!R96%L;&]C871E9" ](#(U-BD 
M#0H ("  >R -" D ("  =7-E9" ](# [#0H)("  (&)U9BYL96YG=&  /2!P
M<F5A;&QO8V%T960[#0H ("  ?0T*("  ("\O?G1H:7,H*2![(&1E;&5T92!B
M=68[('T-" T*("  ("\O("YL96YG=&  <')O<&5R='D-"B  ("!U:6YT(&QE
M;F=T:" I('L <F5T=7)N('5S960[('T-"B  ("!V;VED(&QE;F=T:"AU:6YT
M(&XI( T*("  ('L #0H ("  ("!I9B H;B \('5S960I( T*("  ("  (&)U
M9EMN+BYU<V5D72 ](&-A<W0H5"EN=6QL.R O+R!T;R!M86ME($=#(&AA<'!Y
M#0H)("!E;'-E(&EF("AN(#X 8G5F+FQE;F=T:"D #0H ("  ("![#0H ("  
M("  ("  =6EN="!N97=?86QL;V-A=&5D(#T 8G5F+FQE;F=T:"HR.PT*"2  
M("  (&EF("AN(#X ;F5W7V%L;&]C871E9"D ;F5W7V%L;&]C871E9" ](&X[
M#0H)("  ("  8G5F+FQE;F=T:" ](&YE=U]A;&QO8V%T960[#0H)("!]#0H 
M("  ("!U<V5D(#T ;CL-"B  ("!]("  ( T*#0H ("  =F]I9"!P=7-H*%0 
M=BD #0H ("  >PT*"2  ("!I;G0 =&]P(#T =7-E9#L ;&5N9W1H*'1O<"LQ
M*3L 8G5F6W1O<%T /2!V.PT*("  ('T-" T*("  ('9O:60 <'5S:"A46UT 
M=F$I( T*("  ('L-" D ("  :6YT('1O<" ]('5S960[#0H)("  (&QE;F=T
M:"AT;W  *R!V82YL96YG=& I.PT*"2  ("!B=69;=&]P+BYT;W  *R!V82YL
M96YG=&A=(#T =F%;,"XN=F$N;&5N9W1H73L-"B  ("!]#0H-"B  ("!4('!O
M<" I( T*("  ('L #0H)("  (&%S<V5R="AU<V5D("$](# I.PT*"2  ("!R
M971U<FX 8G5F6RTM=7-E9%T[#0H ("  ?0T*#0H ("  =F]I9"!I;G-E<G0H
M:6YT(&%T+"!4('8I#0H ("  >PT*("  ("  :68H870 /CT =7-E9"D >R!P
M=7-H*'8I.R!R971U<FX[('T-"B  ("  (&QE;F=T:"AU<V5D*S$I.PT*("  
M("  ;65M;6]V92 F8G5F6V%T*S%=+"9B=69;871=+"AU<V5D+6%T*2I4+G-I
M>F5O9BD[#0H ("  ("!B=69;871=(#T =CL-"B  ("!]#0H-"B  ("!V;VED
M(&EN<V5R="AI;G0 870L(%1;72!V82D-"B  ("![#0H ("  ("!I9BAA=" ^
M/2!U<V5D*2![('!U<V H=F$I.R!R971U<FX[('T-"B  ("  (&QE;F=T:"AU
M<V5D("L =F$N;&5N9W1H*3L-"B  ("  (&UE;6UO=F4H)F)U9EMA="MV82YL
M96YG=&A=+"9B=69;871=+"AU<V5D+6%T*2I4+G-I>F5O9BD[#0H ("  ("!B
M=69;870N+F%T*W9A+FQE;F=T:%T /2!V85LP+BYV82YL96YG=&A=.PT*("  
M('T-" T*("  (&)O;VP 96UP='DH*2![(')E='5R;B!U<V5D(#T](# [('T-
M" T*("  ('9O:60 8VQE87(H*2![('5S960 /2 P.R!]#0H-"B  ("!4(&]P
M26YD97 H=6EN="!I*2 O+R!O=F5R;&]A9', =B ](&%;:5T[#0H ("  >PT*
M"2  ("!A<W-E<G0H:2 \('5S960I.PT*"2  ("!R971U<FX 8G5F6VE=.PT*
M("  ('T-" T*("  (%0 ;W!);F1E>$%S<VEG;BA4('8L('5I;G0 :2D +R\ 
M;W9E<FQO861S(&%;:5T /2!V.PT*("  ('L-" D ("  87-S97)T*&D /"!U
M<V5D*3L-" D ("  <F5T=7)N(&)U9EMI72 ]('8[#0H ("  ?0T*("  #0H 
M("  5%M=(&]P4VQI8V4H*2 O+R!O=F5R;&]A9', 85M=#0H ("  +R]!5%1.
M(2!D;VXG="!F;W)G970 =&\ 9'5P('1H92!R97-U;'0-"B  (" O+R  ("  
M(&EF('EO=2!N965D('1O('-T;W)E(&ET('-O;65W:&5R90T*("  ("\O("  
M("  ;7EH87-H6R)S<W,B72 ](&%;72YD=7 [( T*("  ('L-"B  ("  (')E
M='5R;B!B=69;,"XN=7-E9%T[#0H ("  ?0T*#0H)("!46UT ;W!3;&EC92AU
M:6YT(&PL('5I;G0 :"D)+R\ ;W9E<FQO861S(&%;:2 N+B!J70T*("  ('L-
M"B  ("  (&%S<V5R="AL(#P]('5S960I.PT*("  ("  87-S97)T*&  /#T 
M=7-E9"D[#0H ("  ("!R971U<FX 8G5F6VPN+FA=.PT*("  ('T-" T*("  
M(&%R<F%Y(&]P0V%T07-S:6=N*%0 =BD >R!P=7-H*'8I.R!R971U<FX =&AI
M<SL ?2 O+R!O=F5R;&]A9', 87)R87D ?CT 5" -"B  ("!A<G)A>2!O<$-A
M=$%S<VEG;BA46UT =F$I('L <'5S:"AV82D[(')E='5R;B!T:&ES.R!]("\O
M(&]V97)L;V%D<R!A<G)A>2!^/2!46UT #0H-"B  ("!A<G)A>2!O<$-A="A4
M('8I('L <'5S:"AV*3L <F5T=7)N('1H:7,[('T +R\ ;W9E<FQO861S(&%R
M<F%Y(#T 87)R87D ?B!4#0H ("  87)R87D ;W!#870H5%M=('9A*2![('!U
M<V H=F$I.R!R971U<FX =&AI<SL ?2 O+R!O=F5R;&]A9', 87)R87D /2!A
M<G)A>2!^(%1;70T*#0H ("  87)R87D ;W!#871?<BA4('8I('L :6YS97)T
M*# L=BD[(')E='5R;B!T:&ES.R!]("\O(&]V97)L;V%D<R!A<G)A>2 ](%0 
M?B!A<G)A>2 -"B  ("!A<G)A>2!O<$-A=%]R*%1;72!V82D >R!I;G-E<G0H
M,"QV82D[(')E='5R;B!T:&ES.R!]("\O(&]V97)L;V%D<R!A<G)A>2 ](%1;
172!^(&%R<F%Y( T*?0T*#0H`
`
end
Mar 20 2005
parent "Andrew Fedoniouk" <news terrainformatica.com> writes:
Wrong one :)

Here is what I mean in fact 


begin 666 xarray.d
M+R]\#0HO+WP <W1D($0 87)R87D 97AT96YD97)S#0HO+WP-"B\O?"!A=71H
M;W(Z($%N9')E=R!&961O;FEO=6L 0"!T97)R86EN9F]R;6%T:6-A+F-O;0T*
M+R]\#0IT96UP;&%T92!X87)R87E4*%0I#0I[#0H ("\O(')E;6]V92!L87-T
M(&5L96UE;G0 86YD(')E='5R;B!I= T*("!4('!O<"AI;F]U="!46UT 96QE
M;65N=',I#0H ("  ("![#0H ("  ("  (&EN="!L(#T 96QE;65N=',N;&5N
M9W1H("T ,3L-"B  ("  ("  87-S97)T*&P /CT ,"D[( T*("  ("  ("!4
M('0 /2!E;&5M96YT<UML73L-"B  ("  ("  96QE;65N=',N;&5N9W1H(#T 
M;#L-"B  ("  ("  <F5T=7)N('0[#0H ("  ("!]#0H-"B  +R\ :6YS97)T
M(&5L96UE;G0 :6YT;R!A<G)A>0T*("!V;VED(&EN<RAI;F]U="!46UT 96QE
M;65N=',L(%0 =BP =6EN="!A=" ](# I#0H ("  ("![#0H ("  ("  ('5I
M;G0 ;" ](&5L96UE;G1S+FQE;F=T:#L-"B  ("  ("  :68H870 /CT ;"D 
M>R!E;&5M96YT<R!^/2!V.R!R971U<FX[('T-"B  ("  ("  +R\ 9F]R('-O
M;64 <F5A<V]N<R!T:&ES(&1O97, ;F]T(&-O;7!I;&4Z#0H ("  ("  ("\O
M(&5L96UE;G1S(#T 96QE;65N='-;,"XN871=('X =B!^(&5L96UE;G1S6V%T
M+BYE;&5M96YT<RYL96YG=&A=.PT*("  ("  (" O+R!S;R!W92!U<V4 0R!W
M87DZ#0H ("  ("  (&5L96UE;G1S+FQE;F=T:" ](&P *R Q.PT*("  ("  
M("!M96UM;W9E*"9E;&5M96YT<UMA="LQ72PF96QE;65N='-;871=+"AL+6%T
M*2I4+G-I>F5O9BD[#0H ("  ("  (&5L96UE;G1S6V%T72 ]('8[#0H ("  
M("!]#0H ( T*(" O+R!I;G-E<G0 87)R87D :6YT;R!A<G)A>0T*("!V;VED
M(&EN<W(H:6YO=70 5%M=(&5L96UE;G1S+"!46UT =F$L('5I;G0 870 /2 P
M*0T*("  ("  >PT*("  ("  ("!U:6YT(&P /2!E;&5M96YT<RYL96YG=& [
M#0H ("  ("  (&EF*&%T(#X](&PI('L 96QE;65N=', ?CT =F$[(')E='5R
M;CL ?0T*("  ("  ("!E;&5M96YT<RYL96YG=&  /2!L("L =F$N;&5N9W1H
M.PT*("  ("  ("!M96UM;W9E*"9E;&5M96YT<UMA=" K('9A+FQE;F=T:%TL
M)F5L96UE;G1S6V%T72PH;"UA="DJ5"YS:7IE;V8I.PT*("  ("  ("!E;&5M
M96YT<UMA="XN870K=F$N;&5N9W1H72 ]('9A.PT*("  ("  ?0T*#0H ("\O
M(')E;6]V92!E;&5M96YT(&%N9"!R971U<FX :70-"B  5"!C=70H:6YO=70 
M5%M=(&5L96UE;G1S+"!U:6YT(&%T*0T*("  ("  >PT*("  ("  ("!U:6YT
M(&P /2!E;&5M96YT<RYL96YG=&  +2 Q.PT*("  ("  ("!I9BAA=" ^/2!L
M*2!R971U<FX <&]P*&5L96UE;G1S*3L-"B  ("  ("  5"!T(#T 96QE;65N
M='-;871=.R -"B  ("  ("  ;65M;6]V92 F96QE;65N='-;871=+"9E;&5M
M96YT<UMA="LQ72PH;"UA="DJ5"YS:7IE;V8I.PT*("  ("  ("!E;&5M96YT
M<RYL96YG=&  /2!L.PT*("  ("  ("!R971U<FX =#L-"B  ("  ('T-" T*
M(" O+R!R96UO=F4 <F%N9V4 86YD(')E='5R;B!I=', 8V]N=&5N= T*("!4
M6UT 8W5T<BAI;F]U="!46UT 96QE;65N=',L('5I;G0 870L('5I;G0 96YD
M*0T*("  ("  >PT*("  ("  ("  (&%S<V5R="AA=" \/2!E;F0I.PT*("  
M("  ("  (&EF*&%T(#T](&5N9"D <F5T=7)N(&YU;&P[#0H ("  ("  ("  
M5%M=('0 /2!E;&5M96YT<UMA="XN96YD72YD=7 [( T*("  ("  ("  ('5I
M;G0 ;" ](&5L96UE;G1S+FQE;F=T:" M("AE;F0 +2!A="D[#0H ("  ("  
M("  :68H870 /"!L*2![(&5L96UE;G1S+FQE;F=T:" ](&%T.R!R971U<FX 
M=#L ?0T*("  ("  ("  (&UE;6UO=F4H)F5L96UE;G1S6V%T72PF96QE;65N
M='-;96YD72PH;"UA="DJ5"YS:7IE;V8I.PT*("  ("  ("  (&5L96UE;G1S
M+FQE;F=T:" ](&P[#0H ("  ("  ("  <F5T=7)N('0[#0H ("  ("!]#0H 
M("\O(&IU<W0 <F5M;W9E(')A;F=E#0H ('9O:60 <F5M;W9E*&EN;W5T(%1;
M72!E;&5M96YT<RP :6YT(&%T+"!I;G0 96YD*0T*("  ("  >PT*("  ("  
M("  (&%S<V5R="AA=" \/2!E;F0I.PT*("  ("  ("  (&EF*&%T(#T](&5N
M9"D <F5T=7)N.PT*("  ("  ("  ('5I;G0 ;" ](&5L96UE;G1S+FQE;F=T
M:" M("AE;F0 +2!A="D[#0H ("  ("  ("  :68H870 /CT ;"D >R!E;&5M
M96YT<RYL96YG=&  /2!A=#L <F5T=7)N.R!]#0H ("  ("  ("  ;65M;6]V
M92 F96QE;65N='-;871=+"9E;&5M96YT<UME;F1=+"AL+6%T*2I4+G-I>F5O
M9BD[#0H ("  ("  ("  96QE;65N=',N;&5N9W1H(#T ;#L-"B  ("  ('T-
M" T*(" O+R!F:6YD(&EN9&5X(&]F('1H92!E;&5M96YT(&EN(&%R<F%Y+" M
M,2!I9B!N;W0 9F]U;F0-"B  :6YT(&EN9&5X*&EN(%1;72!E;&5M96YT<RQ4
M('0I#0H ("  ("![#0H ("  ("  :6YT(&D /2!E;&5M96YT<RYL96YG=&  
M+2 Q.PT*("  ("  (&9O<B [(&D /CT ,#L +2UI*0T*("  ("  ("  (&EF
M*"!E;&5M96YT<UMI72 ]/3T =" I(&)R96%K.PT*("  ("  (')E='5R;B!I
M.PT*("  ("  ?0T*?0T*#0H-"F%L:6%S('AA<G)A>50A*&)Y=&4I+G!O<"  
M("  <&]P.PT*86QI87, >&%R<F%Y5"$H=6)Y=&4I+G!O<"  ("!P;W [#0IA
M;&EA<R!X87)R87E4(2AS:&]R="DN<&]P("  ('!O<#L-"F%L:6%S('AA<G)A
M>50A*'5S:&]R="DN<&]P("  <&]P.PT*86QI87, >&%R<F%Y5"$H:6YT*2YP
M;W  ("  ("!P;W [#0IA;&EA<R!X87)R87E4(2AU:6YT*2YP;W  ("  ('!O
M<#L-"F%L:6%S('AA<G)A>50A*&QO;F<I+G!O<"  ("  <&]P.PT*86QI87, 
M>&%R<F%Y5"$H=6QO;F<I+G!O<"  ("!P;W [#0IA;&EA<R!X87)R87E4(2AF
M;&]A="DN<&]P("  ('!O<#L-"F%L:6%S('AA<G)A>50A*&1O=6)L92DN<&]P
M("  <&]P.PT*86QI87, >&%R<F%Y5"$H<F5A;"DN<&]P("  ("!P;W [#0IA
M;&EA<R!X87)R87E4(2AI9FQO870I+G!O<"  ('!O<#L-"F%L:6%S('AA<G)A
M>50A*&ED;W5B;&4I+G!O<"  <&]P.PT*86QI87, >&%R<F%Y5"$H:7)E86PI
M+G!O<"  ("!P;W [#0IA;&EA<R!X87)R87E4(2AC9FQO870I+G!O<"  ('!O
M<#L-"F%L:6%S('AA<G)A>50A*&-D;W5B;&4I+G!O<"  <&]P.PT*86QI87, 
M>&%R<F%Y5"$H8W)E86PI+G!O<"  ("!P;W [#0IA;&EA<R!X87)R87E4(2AC
M:&%R*2YP;W  ("  ('!O<#L-"F%L:6%S('AA<G)A>50A*'=C:&%R*2YP;W  
M("  <&]P.PT*86QI87, >&%R<F%Y5"$H9&-H87(I+G!O<"  ("!P;W [#0H-
M"F%L:6%S('AA<G)A>50A*&)Y=&4I+FEN<R  ("  :6YS.PT*86QI87, >&%R
M<F%Y5"$H=6)Y=&4I+FEN<R  ("!I;G,[#0IA;&EA<R!X87)R87E4(2AS:&]R
M="DN:6YS("  (&EN<SL-"F%L:6%S('AA<G)A>50A*'5S:&]R="DN:6YS("  
M:6YS.PT*86QI87, >&%R<F%Y5"$H:6YT*2YI;G, ("  ("!I;G,[#0IA;&EA
M<R!X87)R87E4(2AU:6YT*2YI;G, ("  (&EN<SL-"F%L:6%S('AA<G)A>50A
M*&QO;F<I+FEN<R  ("  :6YS.PT*86QI87, >&%R<F%Y5"$H=6QO;F<I+FEN
M<R  ("!I;G,[#0IA;&EA<R!X87)R87E4(2AF;&]A="DN:6YS("  (&EN<SL-
M"F%L:6%S('AA<G)A>50A*&1O=6)L92DN:6YS("  :6YS.PT*86QI87, >&%R
M<F%Y5"$H<F5A;"DN:6YS("  ("!I;G,[#0IA;&EA<R!X87)R87E4(2AI9FQO
M870I+FEN<R  (&EN<SL-"F%L:6%S('AA<G)A>50A*&ED;W5B;&4I+FEN<R  
M:6YS.PT*86QI87, >&%R<F%Y5"$H:7)E86PI+FEN<R  ("!I;G,[#0IA;&EA
M<R!X87)R87E4(2AC9FQO870I+FEN<R  (&EN<SL-"F%L:6%S('AA<G)A>50A
M*&-D;W5B;&4I+FEN<R  :6YS.PT*86QI87, >&%R<F%Y5"$H8W)E86PI+FEN
M<R  ("!I;G,[#0IA;&EA<R!X87)R87E4(2AC:&%R*2YI;G, ("  (&EN<SL-
M"F%L:6%S('AA<G)A>50A*'=C:&%R*2YI;G, ("  :6YS.PT*86QI87, >&%R
M<F%Y5"$H9&-H87(I+FEN<R  ("!I;G,[#0H-"F%L:6%S('AA<G)A>50A*&)Y
M=&4I+FEN<W( ("  (&EN<W([#0IA;&EA<R!X87)R87E4(2AU8GET92DN:6YS
M<B  ("!I;G-R.PT*86QI87, >&%R<F%Y5"$H<VAO<G0I+FEN<W( ("  :6YS
M<CL-"F%L:6%S('AA<G)A>50A*'5S:&]R="DN:6YS<B  (&EN<W([#0IA;&EA
M<R!X87)R87E4(2AI;G0I+FEN<W( ("  ("!I;G-R.PT*86QI87, >&%R<F%Y
M5"$H=6EN="DN:6YS<B  ("  :6YS<CL-"F%L:6%S('AA<G)A>50A*&QO;F<I
M+FEN<W( ("  (&EN<W([#0IA;&EA<R!X87)R87E4(2AU;&]N9RDN:6YS<B  
M("!I;G-R.PT*86QI87, >&%R<F%Y5"$H9FQO870I+FEN<W( ("  :6YS<CL-
M"F%L:6%S('AA<G)A>50A*&1O=6)L92DN:6YS<B  (&EN<W([#0IA;&EA<R!X
M87)R87E4(2AR96%L*2YI;G-R("  ("!I;G-R.PT*86QI87, >&%R<F%Y5"$H
M:69L;V%T*2YI;G-R("  :6YS<CL-"F%L:6%S('AA<G)A>50A*&ED;W5B;&4I
M+FEN<W( (&EN<W([#0IA;&EA<R!X87)R87E4(2AI<F5A;"DN:6YS<B  ("!I
M;G-R.PT*86QI87, >&%R<F%Y5"$H8V9L;V%T*2YI;G-R("  :6YS<CL-"F%L
M:6%S('AA<G)A>50A*&-D;W5B;&4I+FEN<W( (&EN<W([#0IA;&EA<R!X87)R
M87E4(2AC<F5A;"DN:6YS<B  ("!I;G-R.PT*86QI87, >&%R<F%Y5"$H8VAA
M<BDN:6YS<B  ("  :6YS<CL-"F%L:6%S('AA<G)A>50A*'=C:&%R*2YI;G-R
M("  (&EN<W([#0IA;&EA<R!X87)R87E4(2AD8VAA<BDN:6YS<B  ("!I;G-R
M.PT*#0IA;&EA<R!X87)R87E4(2AB>71E*2YC=70 ("  (&-U=#L-"F%L:6%S
M('AA<G)A>50A*'5B>71E*2YC=70 ("  8W5T.PT*86QI87, >&%R<F%Y5"$H
M<VAO<G0I+F-U="  ("!C=70[#0IA;&EA<R!X87)R87E4(2AU<VAO<G0I+F-U
M="  (&-U=#L-"F%L:6%S('AA<G)A>50A*&EN="DN8W5T("  ("  8W5T.PT*
M86QI87, >&%R<F%Y5"$H=6EN="DN8W5T("  ("!C=70[#0IA;&EA<R!X87)R
M87E4(2AL;VYG*2YC=70 ("  (&-U=#L-"F%L:6%S('AA<G)A>50A*'5L;VYG
M*2YC=70 ("  8W5T.PT*86QI87, >&%R<F%Y5"$H9FQO870I+F-U="  ("!C
M=70[#0IA;&EA<R!X87)R87E4(2AD;W5B;&4I+F-U="  (&-U=#L-"F%L:6%S
M('AA<G)A>50A*')E86PI+F-U="  ("  8W5T.PT*86QI87, >&%R<F%Y5"$H
M:69L;V%T*2YC=70 ("!C=70[#0IA;&EA<R!X87)R87E4(2AI9&]U8FQE*2YC
M=70 (&-U=#L-"F%L:6%S('AA<G)A>50A*&ER96%L*2YC=70 ("  8W5T.PT*
M86QI87, >&%R<F%Y5"$H8V9L;V%T*2YC=70 ("!C=70[#0IA;&EA<R!X87)R
M87E4(2AC9&]U8FQE*2YC=70 (&-U=#L-"F%L:6%S('AA<G)A>50A*&-R96%L
M*2YC=70 ("  8W5T.PT*86QI87, >&%R<F%Y5"$H8VAA<BDN8W5T("  ("!C
M=70[#0IA;&EA<R!X87)R87E4(2AW8VAA<BDN8W5T("  (&-U=#L-"F%L:6%S
M('AA<G)A>50A*&1C:&%R*2YC=70 ("  8W5T.PT*#0IA;&EA<R!X87)R87E4
M(2AB>71E*2YC=71R("  ("!C=71R.PT*86QI87, >&%R<F%Y5"$H=6)Y=&4I
M+F-U='( ("  8W5T<CL-"F%L:6%S('AA<G)A>50A*'-H;W)T*2YC=71R("  
M(&-U='([#0IA;&EA<R!X87)R87E4(2AU<VAO<G0I+F-U='( ("!C=71R.PT*
M86QI87, >&%R<F%Y5"$H:6YT*2YC=71R("  ("  8W5T<CL-"F%L:6%S('AA
M<G)A>50A*'5I;G0I+F-U='( ("  (&-U='([#0IA;&EA<R!X87)R87E4(2AL
M;VYG*2YC=71R("  ("!C=71R.PT*86QI87, >&%R<F%Y5"$H=6QO;F<I+F-U
M='( ("  8W5T<CL-"F%L:6%S('AA<G)A>50A*&9L;V%T*2YC=71R("  (&-U
M='([#0IA;&EA<R!X87)R87E4(2AD;W5B;&4I+F-U='( ("!C=71R.PT*86QI
M87, >&%R<F%Y5"$H<F5A;"DN8W5T<B  ("  8W5T<CL-"F%L:6%S('AA<G)A
M>50A*&EF;&]A="DN8W5T<B  (&-U='([#0IA;&EA<R!X87)R87E4(2AI9&]U
M8FQE*2YC=71R("!C=71R.PT*86QI87, >&%R<F%Y5"$H:7)E86PI+F-U='( 
M("  8W5T<CL-"F%L:6%S('AA<G)A>50A*&-F;&]A="DN8W5T<B  (&-U='([
M#0IA;&EA<R!X87)R87E4(2AC9&]U8FQE*2YC=71R("!C=71R.PT*86QI87, 
M>&%R<F%Y5"$H8W)E86PI+F-U='( ("  8W5T<CL-"F%L:6%S('AA<G)A>50A
M*&-H87(I+F-U='( ("  (&-U='([#0IA;&EA<R!X87)R87E4(2AW8VAA<BDN
M8W5T<B  ("!C=71R.PT*86QI87, >&%R<F%Y5"$H9&-H87(I+F-U='( ("  
M8W5T<CL-" T*86QI87, >&%R<F%Y5"$H8GET92DN<F5M;W9E("  ("!R96UO
M=F4[#0IA;&EA<R!X87)R87E4(2AU8GET92DN<F5M;W9E("  (')E;6]V93L-
M"F%L:6%S('AA<G)A>50A*'-H;W)T*2YR96UO=F4 ("  <F5M;W9E.PT*86QI
M87, >&%R<F%Y5"$H=7-H;W)T*2YR96UO=F4 ("!R96UO=F4[#0IA;&EA<R!X
M87)R87E4(2AI;G0I+G)E;6]V92  ("  (')E;6]V93L-"F%L:6%S('AA<G)A
M>50A*'5I;G0I+G)E;6]V92  ("  <F5M;W9E.PT*86QI87, >&%R<F%Y5"$H
M;&]N9RDN<F5M;W9E("  ("!R96UO=F4[#0IA;&EA<R!X87)R87E4(2AU;&]N
M9RDN<F5M;W9E("  (')E;6]V93L-"F%L:6%S('AA<G)A>50A*&9L;V%T*2YR
M96UO=F4 ("  <F5M;W9E.PT*86QI87, >&%R<F%Y5"$H9&]U8FQE*2YR96UO
M=F4 ("!R96UO=F4[#0IA;&EA<R!X87)R87E4(2AR96%L*2YR96UO=F4 ("  
M(')E;6]V93L-"F%L:6%S('AA<G)A>50A*&EF;&]A="DN<F5M;W9E("  <F5M
M;W9E.PT*86QI87, >&%R<F%Y5"$H:61O=6)L92DN<F5M;W9E("!R96UO=F4[
M#0IA;&EA<R!X87)R87E4(2AI<F5A;"DN<F5M;W9E("  (')E;6]V93L-"F%L
M:6%S('AA<G)A>50A*&-F;&]A="DN<F5M;W9E("  <F5M;W9E.PT*86QI87, 
M>&%R<F%Y5"$H8V1O=6)L92DN<F5M;W9E("!R96UO=F4[#0IA;&EA<R!X87)R
M87E4(2AC<F5A;"DN<F5M;W9E("  (')E;6]V93L-"F%L:6%S('AA<G)A>50A
M*&-H87(I+G)E;6]V92  ("  <F5M;W9E.PT*86QI87, >&%R<F%Y5"$H=V-H
M87(I+G)E;6]V92  ("!R96UO=F4[#0IA;&EA<R!X87)R87E4(2AD8VAA<BDN
M<F5M;W9E("  (')E;6]V93L-" T*86QI87, >&%R<F%Y5"$H8GET92DN:6YD
M97  ("  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H=6)Y=&4I+FEN9&5X("  
M(&EN9&5X.PT*86QI87, >&%R<F%Y5"$H<VAO<G0I+FEN9&5X("  (&EN9&5X
M.PT*86QI87, >&%R<F%Y5"$H=7-H;W)T*2YI;F1E>"  (&EN9&5X.PT*86QI
M87, >&%R<F%Y5"$H:6YT*2YI;F1E>"  ("  (&EN9&5X.PT*86QI87, >&%R
M<F%Y5"$H=6EN="DN:6YD97  ("  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H
M;&]N9RDN:6YD97  ("  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H=6QO;F<I
M+FEN9&5X("  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H9FQO870I+FEN9&5X
M("  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H9&]U8FQE*2YI;F1E>"  (&EN
M9&5X.PT*86QI87, >&%R<F%Y5"$H<F5A;"DN:6YD97  ("  (&EN9&5X.PT*
M86QI87, >&%R<F%Y5"$H:69L;V%T*2YI;F1E>"  (&EN9&5X.PT*86QI87, 
M>&%R<F%Y5"$H:61O=6)L92DN:6YD97  (&EN9&5X.PT*86QI87, >&%R<F%Y
M5"$H:7)E86PI+FEN9&5X("  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H8V9L
M;V%T*2YI;F1E>"  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H8V1O=6)L92DN
M:6YD97  (&EN9&5X.PT*86QI87, >&%R<F%Y5"$H8W)E86PI+FEN9&5X("  
M(&EN9&5X.PT*86QI87, >&%R<F%Y5"$H8VAA<BDN:6YD97  ("  (&EN9&5X
M.PT*86QI87, >&%R<F%Y5"$H=V-H87(I+FEN9&5X("  (&EN9&5X.PT*86QI
M87, >&%R<F%Y5"$H9&-H87(I+FEN9&5X("  (&EN9&5X.PT*#0HO*B!S=7!P
M;W-E9"!T;R!B92!U<V5D(&%S#0H-"G1E;7!L871E('AA*%0I#0I[#0H (&%L
M:6%S('AA<G)A>50A*%0I+G!O<"  ("  <&]P.PT*("!A;&EA<R!X87)R87E4
M(2A4*2YI;G, ("  (&EN<SL-"B  86QI87, >&%R<F%Y5"$H5"DN:6YS<B  
M("!I;G-R.PT*("!A;&EA<R!X87)R87E4(2A4*2YC=70 ("  (&-U=#L-"B  
M86QI87, >&%R<F%Y5"$H5"DN8W5T<B  ("!C=71R.PT*("!A;&EA<R!X87)R
M87E4(2A4*2YR96UO=F4 (')E;6]V93L-"B  86QI87, >&%R<F%Y5"$H5"DN
M:6YD97  ("!I;F1E>#L-"GT-"FUI>&EN('AA(2AI;G0I.PT*;6EX:6X >&$A
M*&-H87(I.PT*;6EX:6X >&$A*'=C:&%R*3L-"BXN+BX-"F)U="!$340N97AE
?(')E<&]R=', ;F%M92!C;VYF;&EC=',-" T**B\-" ``
`
end
Mar 20 2005