[Patch] Pear::Benchmark
| From: | Jean-Marc Fontaine | Date: | Sun, 06 Apr 2003 11:49:32 +0000 |
| Subject: | [Patch] Pear::Benchmark | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-14948@lists.php.net to get a copy of this message | ||
Hello,
I am using Pear::Benchmark class called Benchmark_Profiler in one of my
projects and I felt it was great but was also lacking a way to get the
profiling informations in an array in order to use it my own way instead of
having it displayed in a built-in way.
So I added a getSectionInformations() method which returns an array
containing the profiling informations.
The structure of the array is as follow :
Array
(
[time] => 0.0757499933243
[percentage] => 96.03
[calls] => Array
(
[Abstraction layer] => 1
)
[num_calls] => 1
[callers] => Array
(
[Global] => 1
)
)
I also added a method called getAllSectionsInformations() to get the
profiling informations for all sections at the same time.
The array returned has the following structure :
Array
(
[Abstraction layer] => Array
(
[time] => 0.0260549783707
[percentage] => 29.97
[calls] => Array
(
)
[num_calls] => 1
[callers] => Array
(
[prepend file] => 1
)
)
[prepend file] => Array
(
[time] => 0.0775829553604
[percentage] => 89.24
[calls] => Array
(
[Abstraction layer] => 1
)
[num_calls] => 1
[callers] => Array
(
[Global] => 1
)
)
[Global] => Array
(
[time] => 0.086942076683
[percentage] => 100.00
[calls] => Array
(
[prepend file] => 1
)
[num_calls] => 1
[callers] => Array
(
)
)
)
I modified the _getOutput() method in order to use the new method
getAllSectionsInformations().
I add a couple of checks in order to avoid PHP notices when having
ERROR_REPORTING set to E_ALL and I also fixed some typos.
I think this modifications may be worth adding them to the official package.
Now let's speak your mind :-)
Jean-Marc
PS: I am quite new to Pear developpement. I tried to learn as much as I
could from the documentation and this newsgroup but I could do things
wrongly so please be comprehensive but feel free to let me know the right
way to do things regarding Pear :-)
begin 666 diff.txt
M+2TM(%!R;V9I;&5R+G!H< DR,# S+3 T+3 V(#$S.C$Y.C(P+C P,# P,# P
M," K,#(P, HK*RL@4')O9FEL97(N;F5W"3(P,#,M,#0M,#8@,3,Z,S$Z-#DN
M,# P,# P,# P("LP,C P"D! ("TV,BPW("LV,BPW($! "B!C;&%S<R!"96YC
M:&UA<FM?4')O9FEL97(@97AT96YD<R!014%2('L*( H@(" @+RHJ"BT@(" @
M("H@0V]N=&%I;G,@=&AE('1O=&%L(&5X+B!T:6UE(&]F(&5A8VAE('-E8W1I
M;VX**R @(" @*B!#;VYT86EN<R!T:&4@=&]T86P@97@N('1I;64@;V8@96%C
M:"!S96-T:6]N"B @(" @("H*(" @(" @*B! =F%R("
@(&%R<F%Y"B @(" @
M("H@0&%C8V5S<R!P<FEV871E"D! ("TX-BPW("LX-BPW($! "B @("
@=F%R
M("1?;G5M7V-A;&QS(#T@87)R87DH*3L*( H@(" @("\J*@HM(" @(" J($YO
M=&5S(&9O<B!E86-H92!S96-T:6]N(&AO=R!O9G1E;B!I="!C86QL<R!W:&EC
M:"!S96-T:6]N"BL@(" @("H@3F]T97,@9F]R(&5A8V@@<V5C=&EO;B!H;W<@
M;V9T96X@:70@8V%L;',@=VAI8V@@<V5C=&EO;@H@(" @(" J"B @(" @("H@
M0'9A<B @("!A<G)A>0H@(" @(" J($!A8V-E<W,@<')I=F%T90I 0"
M.30L
M-R K.30L-R! 0 H@(" @('9A<B D7V-A;&QS(#T@87)R87DH*3L*( H@(" @
M("\J*@HM(" @(" J($YO=&5S(&9O<B!E86-H92!S96-T:6]N(&AO=R!O9G1E
M;B!I="!W87,@8V%L;&5D(&)Y('=H:6-H('-E8W1I;VX**R @(" @*B!.;W1E
M<R!F;W(@96%C:"!S96-T:6]N(&AO=R!O9G1E;B!I="!W87,@8V%L;&5D(&)Y
M('=H:6-H('-E8W1I;VX*(" @(" @*@H@(" @(" J($!V87(@(" @87)R87D*
M(" @(" @*B! 86-C97-S('!R:79A=&4*0$ @+3$P,BPW("LQ,#(L-R! 0 H@
M(" @('9A<B D7V-A;&QE<G,@/2!A<G)A>2@I.PH@"B @("
@+RHJ"BT@(" @
M("H@075T;RUS=&%R="!A;F0@<W1O<"!P<F]F:6QE<@HK(" @("
J($%U=&\M
M<W1A<G1S(&%N9"!S=&]P<R!P<F]F:6QE<@H@(" @(" J"B @("
@("H@0'9A
M<B @("!B;V]L96%N"B @(" @("H@0&%C8V5S<R!P<FEV871E"D!
("TQ,S8L
M,30@*S$S-BPU.2! 0 H@(" @(" J($!A8V-E<W,@<')I=F%T90H@(" @(" J
M+PH@(" @(&9U;F-T:6]N(%]"96YC:&UA<FM?4')O9FEL97(H*2!["BT@(" @
M(" @(&EF("@D=&AI<RT^875T;RD@>PHK(" @(" @("!I9B
H:7-S970H)'1H
M:7,M/F%U=&\I*2!["B @(" @(" @(" @("
D=&AI<RT^<W1O<"@I.PH@(" @
M(" @(" @(" @)'1H:7,M/F1I<W!L87DH*3L*(" @(" @(" @?0H@("
@('T*
M( H@(" @("\J*@HM(" @(" J(%)E='5R;B!F;W)M871T960@<')O9FEL:6YG
M(&EN9F]R;6%T:6]N+@HK(" @(" J(%)E='5R;G,@<')O9FEL:6YG(&EN9F]R
M;6%T:6]N<R!F;W(@82!G:79E;B!S96-T:6]N+@HK(" @(" J"BL@(" @("H@
M0&%C8V5S<R!P=6)L:6,**R @(" @*B\**R @("!F=6YC=&EO;B!G971396-T
M:6]N26YF;W)M871I;VYS*"1S96-T:6]N(#T@)T=L;V)A;"<I('L**R @(" @
M(" @:68@*&ES<V5T*"1T:&ES+3Y?<V5C=&EO;G-;)'-E8W1I;VY=*2D@>PHK
M"BL@(" @(" @(" @(" D8V%L;',@/2!A<G)A>2@I.PHK(" @("
@(" @(" @
M:68@*&ES<V5T*"1T:&ES+3Y?8V%L;'-;)'-E8W1I;VY=*2D@>PHK(" @(" @
M(" @(" @(" @("1C86QL<R
]("1T:&ES+3Y?8V%L;'-;)'-E8W1I;VY=.PHK
M(" @(" @(" @(" @?2 @(" @(" @"BL@(" @(" @("
@(" **R @(" @(" @
M(" @("1C86QL97)S(#T@87)R87DH*3L**R @(" @(" @(" @(&EF("AI<W-E
M="@D=&AI<RT^7V-A;&QE<G-;)'-E8W1I;VY=*2D@>PHK(" @(" @("
@(" @
M(" @("1C86QL97)S(#T@)'1H:7,M/E]C86QL97)S6R1S96-T:6]N73L**R @
M(" @(" @(" @('T**R @(" **R @(" @(" @("
@("1I;F9O<FUA=&EO;G,@
M/2!A<G)A>2@I.PHK(" @(" @(" @(" @)&EN9F]R;6%T:6]N<ULG=&EM92==
M(#T@)'1H:7,M/E]S96-T:6]N<ULD<V5C=&EO;ET["BL@(" @(" @(" @("
D
M:6YF;W)M871I;VYS6R=P97)C96YT86=E)UT@/2!N=6UB97)?9F]R;6%T*#$P
M," J("1T:&ES+3Y?<V5C=&EO;G-;)'-E8W1I;VY=("\@)'1H:7,M/E]S96-T
M:6]N<ULG1VQO8F%L)UTL(#(L("<N)RP@)R<I.PHK(" @(" @(" @(" @)&EN
M9F]R;6%T:6]N<ULG8V%L;',G72 ]("1C86QL<SL**R @(" @(" @(" @("1I
M;F9O<FUA=&EO;G-;)VYU;5]C86QL<R==(#T@)'1H:7,M/E]N=6U?8V%L;'-;
M)'-E8W1I;VY=.PHK(" @(" @(" @(" @)&EN9F]R;6%T:6]N<ULG8V%L;&5R
M<R==(#T@)&-A;&QE<G,["BL**R @(" @(" @(" @(')E='5R;B
D:6YF;W)M
M871I;VYS.PHK(" @(" @("!](&5L<V4@>PHK(" @(" @(" @("
@)'1H:7,M
M/G)A:7-E17)R;W(H(E1H92!S96-T:6]N("<D<V5C=&EO;B<@9&]E<R!N;W0@
M97AI<W1S+EQN(BP@;G5L;"P@4$5!4E]%4E)/4E]44DE'1T52+"!%7U5315)?
M5T%23DE.1RD[(" @(" @(" **R @(" @(" @?0HK(" @('T@("
@"BL**R @
M(" O*BH**R @(" @*B!2971U<FYS('!R;V9I;&EN9R!I;F9O<FUA=&EO;G,@
M9F]R(&%L;"!S96-T:6]N<RX**R @(" @*@HK(" @(" J($!A8V-E<W,@<'5B
M;&EC"BL@(" @("HO"BL@(" @9G5N8W1I;VX@9V5T06QL4V5C=&EO;G-);F9O
M<FUA=&EO;G,H*2!["BL@(" @("
@("1I;F9O<FUA=&EO;G,@/2!A<G)A>2@I
M.PHK(" @(" @("!F;W)E86-H*"1T:&ES+3Y?<V5C=&EO;G,@87,@)'-E8W1I
M;VX@/3X@)'1I;64I('L**R @(" @(" @("
@("1I;F9O<FUA=&EO;G-;)'-E
M8W1I;VY=(#T@)'1H:7,M/F=E=%-E8W1I;VY);F9O<FUA=&EO;G,H)'-E8W1I
M;VXI.PHK(" @(" @("!]"BL**R @(" @("
@<F5T=7)N("1I;F9O<FUA=&EO
M;G,["BL@(" @?2 @(" **R @(" **R @(" O*BH**R @(" @*B!2971U<FYS
M(&9O<FUA='1E9"!P<F]F:6QI;F<@:6YF;W)M871I;VXN"B @("
@("H*(" @
M(" @*B! <V5E(" @(&1I<W!L87DH*0H@(" @("
J($!A8V-E<W,@<')I=F%T
M90I 0" M,3<S+#4U("LR,3@L-3,@0$ *(" @(" @(" @(" @("1O=70@+CT@
M(G!E<F-T7&XB.PH@(" @(" @(" @(" @)&]U=" N/2
D9&%S:&5S.PH@(" @
M(" @("!]"BT@(" @("
@(&9O<F5A8V@H)'1H:7,M/E]S96-T:6]N<R!A<R D
M;F%M92 ]/B D=&EM92D@>PHM(" @(" @(" @(" @)'!E<B ](#$P,"
J("1T
M:6UE("\@)'1H:7,M/E]S96-T:6]N<ULB1VQO8F%L(ET["BL@(" @(" @( HK
M(" @(" @(" D:6YF;W)M871I;VYS(#T@)'1H:7,M/F=E=$%L;%-E8W1I;VYS
M26YF;W)M871I;VYS*"D[(" @(" @(" **R @(" @(" @9F]R96%C:"@D:6YF
M;W)M871I;VYS(&%S("1N86UE(#T^("1V86QU97,I('L**R @(" @(" @(" @
M("1P97)C96YT86=E(#T@)'9A;'5E<ULG<&5R8V5N=&%G92==.PH@(" @(" @
M(" @(" @)&-A;&QS7W-T<B ]("(B.PHM(" @(" @(" @("
@:68@*"1T:&ES
M+3Y?8V%L;'-;)&YA;65=*2!["BT@(" @(" @(" @(" @("
@9F]R96%C:"@D
M=&AI<RT^7V-A;&QS6R1N86UE72!A<R D:V5Y(#T^("1V86PI('L*+2 @(" @
M(" @(" @(" @(" @(" @:68@*"1C86QL<U]S='(I('L*+2 @("
@(" @(" @
M(" @(" @(" @(" @("1C86QL<U]S='(@+CT@(BP@(CL*+0D)("
@('T*+2 @
M(" @(" @(" @(" @(" @(" @)&-A;&QS7W-T<B N/2 B)&ME>2
H)'9A;"DB
M.PHK(" @(" @(" @(" @9F]R96%C:"@D=F%L=65S6R=C86QL<R==(&%S("1K
M97D@/3X@)'9A;"D@>PHK(" @(" @(" @(" @("
@(&EF("@D8V%L;'-?<W1R
M*2!["BL@(" @(" @(" @(" @(" @("
@("1C86QL<U]S='(@+CT@(BP@(CL*
M(" @(" @(" @(" @(" @("!]"BL@(" @(" @(" @("
@(" @)&-A;&QS7W-T
M<B N/2 B)&ME>2 H)'9A;"DB.PH@(" @(" @(" @(" @?0H@("
@(" @(" @
M(" @)&-A;&QE<G-?<W1R(#T@(B(["BT@(" @(" @(" @("!I9B
H)'1H:7,M
M/E]C86QL97)S6R1N86UE72D@>PHM(" @(" @(" @(" @(" @(&9O<F5A8V@H
M)'1H:7,M/E]C86QL97)S6R1N86UE72!A<R D:V5Y(#T^("1V86PI('L*+2 @
M(" @(" @(" @(" @(" @("
@:68@*"1C86QL97)S7W-T<BD@>PHM(" @(" @
M(" @(" @(" @(" @(" @("
@)&-A;&QE<G-?<W1R("X]("(L("(["BT)"2 @
M("!]"BT@(" @(" @(" @(" @(" @(" @("1C86QL97)S7W-T<B
N/2 B)&ME
M>2 H)'9A;"DB.PHM(" @(" @(" @(" @(" @('T**R @("
M>@(" @(" @(&9O
M<F5A8V@H)'9A;'5E<ULG8V%L;&5R<R==(&%S("1K97D@/3X@)'9A;"D@>PHK
M(" @(" @(" @(" @("
@(&EF("@D8V%L;&5R<U]S='(I('L**R @(" @(" @
M(" @(" @(" @("
@)&-A;&QE<G-?<W1R("X]("(L("(["BL@(" @"0D@(" @
M?0HK(" @(" @(" @(" @(" @("1C86QL97)S7W-T<B N/2 B)&ME>2
H)'9A
M;"DB.PH@(" @(" @(" @(" @?0H@(" @(" @(" @("
@:68@*"1H='1P*2![
M"B @(" @(" @(" @(" @(" @)&]U=" N/0HM(" @("
@(" @(" @(" @(" @
M(" B/'1R/CQT9#X\8CXD;F%M93PO8CX\+W1D/CQT9#XD=&EM93PO=&0^/'1D
M/GLD=&AI<RT^7VYU;5]C86QL<ULD;F%M95U]/"]T9#XB+@HM(" @(" @(" @
M(" @(" @(" @("
B/'1D(&%L:6=N/5PB<FEG:'1<(CXB+FYU;6)E<E]F;W)M
M870H)'!E<BP@,BP@)RXG+" G)RDN(B4\+W1D/EQN(CL**R @(" @(" @(" @
M(" @(" @("
@(CQT<CX\=&0^/&(^)&YA;64\+V(^/"]T9#X\=&0^>R1V86QU
M97-;)W1I;64G77T\+W1D/CQT9#Y[)'9A;'5E<ULG;G5M7V-A;&QS)UU]/"]T
M9#XB+@HK(" @(" @(" @(" @(" @(" @("
B/'1D(&%L:6=N/5PB<FEG:'1<
M(CY[)'9A;'5E<ULG<&5R8V5N=&%G92==?24\+W1D/EQN(CL*(" @(" @(" @
M(" @(" @("
D;W5T("X]("(\=&0^)&-A;&QS7W-T<CPO=&0^/'1D/B1C86QL
M97)S7W-T<CPO=&0^/"]T<CXB.PH@(" @(" @(" @("
@?2!E;'-E('L*(" @
M(" @(" @(" @(" @("
D;W5T("X]('-T<E]P860H)&YA;64L("1T:&ES+3Y?
M<W1R;&5N7VUA>"P@)R G*3L*+2 @(" @(" @(" @(" @("
D;W5T("X]('-T
M<E]P860H)'1I;64L(#(R*3L*+2 @(" @(" @(" @(" @("
D;W5T("X]('-T
M<E]P860H)'1H:7,M/E]N=6U?8V%L;'-;)&YA;65=+" R,BD["BL@(" @(" @
M(" @(" @(" @)&]U="
N/2!S=')?<&%D*"1V86QU97-;)W1I;64G72P@,C(I
M.PHK(" @(" @(" @(" @(" @("1O=70@+CT@<W1R7W!A9"@D=F%L=65S6R=N
M=6U?8V%L;',G72P@,C(I.PH@(" @(" @(" @(" @(" @("1O=70@+CT*+2 @
M(" @(" @(" @("
@("!S=')?<&%D*&YU;6)E<E]F;W)M870H)'!E<BP@,BP@
M)RXG+" G)RDN(B5<;B(L(#@L("<@)RP**R @(" @(" @(" @("
@("!S=')?
M<&%D*"1V86QU97-;)W!E<F-E;G1A9V4G72XB)5QN(BP@."P@)R G+ H@(" @
M(" @(" @(" @(" @(" @(" @(" @("
@(%-44E]0041?3$5&5"D["B @(" @
M(" @(" @("!]"B @(" @(" @('T*(" @(" @("
@)&]U=" N/2 B/"]T86)L
M93XB.PH@(" @(" @("!R971U<FX@)&]U=#L@(" @(" @( HM("
@('T**R @
M("!](" @( H@"B @(" @+RHJ"BT@("
@("H@4F5T=7)N(&9O<FUA='1E9"!P
M<F]F:6QI;F<@:6YF;W)M871I;VXN"BL@(" @("H@4F5T=7)N<R!F;W)M871T
M960@<')O9FEL:6YG(&EN9F]R;6%T:6]N+@H@(" @(" J"B @("
@("H@0&%C
M8V5S<R!P=6)L:6,*(" @(" @*B\*(" @("!F=6YC=&EO;B!D:7-P;&%Y*"D@
M>PHM(" @(" @("!P<FEN="
M>D=&AI<RT^7V=E=$]U='!U="@I.PHK(" @(" @
M("!E8VAO("1T:&ES+3Y?9V5T3W5T<'5T*"D["B @(" @?0H@"B
@(" @+RHJ
M"BT@(" @("H@16YT97(@(D=L;V)A;"(@<V5C=&EO;BX**R @(" @*B!%;G1E
M<G,@(D=L;V)A;"(@<V5C=&EO;BX*(" @(" @*@H@(" @(" J($!S964@("
@
M96YT97)396-T:6]N*"DL('-T;W H*0H@(" @(" J($!A8V-E<W,@<'5B;&EC
M"D! ("TR,S$L-R K,C<T+#<@0$ *(" @("!]"B *(" @(" O*BH*+2
@(" @
M*B!,96%V92 B1VQO8F%L(B!S96-T:6]N+@HK(" @(" J($QE879E<R B1VQO
M8F%L(B!S96-T:6]N+@H@(" @(" J"B @(" @("H@0'-E92 @("!L96%V95-E
M8W1I;VXH*2P@<W1A<G0H*0H@(" @(" J($!A8V-E<W,@<'5B;&EC"D!
("TR
M-#$L-R K,C@T+#<@0$ *(" @("!]"B *(" @(" O*BH*+2 @(" @*B!%;G1E
M<B!C;V1E('-E8W1I;VXN"BL@(" @("H@16YT97)S(&-O9&4@<V5C=&EO;BX*
M(" @(" @*@H@(" @(" J($!P87)A;2 @<W1R:6YG("!N86UE(&]F('1H92!C
M;V1E('-E8W1I;VX*(" @(" @*B! <V5E(" @('-T87)T*"DL(&QE879E4V5C
M=&EO;B@I"D! ("TR-#DL,3 @*S(Y,BPR-2! 0 H@(" @(" J+PH@(" @(&9U
M;F-T:6]N(&5N=&5R4V5C=&EO;B@D;F%M92D@>PH@(" @(" @("!I9B H8V]U
M;G0H)'1H:7,M/E]S=&%C:RDI('L*+2 @(" @(" @(" @("1T:&ES+3Y?8V%L
M;&5R<ULD;F%M95U;)'1H:7,M/E]S=&%C:UMC;W5N="@D=&AI<RT^7W-T86-K
M*2 M(#%=6R)N86UE(EU=*RL["BT@(" @(" @(" @(" D=&AI<RT^7V-A;&QS
M6R1T:&ES+3Y?<W1A8VM;8V]U;G0H)'1H:7,M/E]S=&%C:RD@+2 Q75LB;F%M
M92)=75LD;F%M95TK*SL**R @(" @(" @(" @(&EF("AI<W-E="@D=&AI<RT^
M7V-A;&QE<G-;)&YA;65=6R1T:&ES+3Y?<W1A8VM;8V]U;G0H)'1H:7,M/E]S
M=&%C:RD@+2 Q75LB;F%M92)=72DI('L**R @(" @(" @(" @(" @(" D=&AI
M<RT^7V-A;&QE<G-;)&YA;65=6R1T:&ES+3Y?<W1A8VM;8V]U;G0H)'1H:7,M
M/E]S=&%C:RD@+2 Q75LB;F%M92)=72LK.PHK(" @(" @(" @(" @?2!E;'-E
M('L**R @(" @(" @(" @(" @("
D=&AI<RT^7V-A;&QE<G-;)&YA;65=6R1T
M:&ES+3Y?<W1A8VM;8V]U;G0H)'1H:7,M/E]S=&%C:RD@+2 Q75LB;F%M92)=
M72 ](#$["BL@(" @(" @(" @("!]"BL@(" @(" @( HK("
@(" @(" @(" @
M:68@*&ES<V5T*"1T:&ES+3Y?8V%L;'-;)'1H:7,M/E]S=&%C:UMC;W5N="@D
M=&AI<RT^7W-T86-K*2 M(#%=6R)N86UE(EU=6R1N86UE72DI('L**R @(" @
M(" @(" @(" @(" D=&AI<RT^7V-A;&QS6R1T:&ES+3Y?<W1A8VM;8V]U;G0H
M)'1H:7,M/E]S=&%C:RD@+2 Q75LB;F%M92)=75LD;F%M95TK*SL**R @(" @
M(" @(" @('T@96QS92!["BL@(" @(" @(" @(" @("
@)'1H:7,M/E]C86QL
M<ULD=&AI<RT^7W-T86-K6V-O=6YT*"1T:&ES+3Y?<W1A8VLI("T@,5U;(FYA
M;64B75U;)&YA;65=(#T@,3L**R @(" @(" @(" @('T*(" @(" @(" @?0HM
M(" @(" @(" D=&AI<RT^7VYU;5]C86QL<ULD;F%M95TK*SL**R @(" @(" @
M"BL@(" @("
@(&EF("AI<W-E="@D=&AI<RT^7VYU;5]C86QL<ULD;F%M95TI
M*2!["BL@(" @(" @(" @(" D=&AI<RT^7VYU;5]C86QL<ULD;F%M95TK*SL*
M*R @(" @(" @?2!E;'-E('L**R @(" @(" @("
@("1T:&ES+3Y?;G5M7V-A
M;&QS6R1N86UE72 ](#$["BL@(" @(" @('T@(" @(" @"BL*("
@(" @(" @
M)&UI8W)O=&EM92 ](&5X<&QO9&4H(B B+"!M:6-R;W1I;64H*2D["B @(" @
M(" @("1M:6-R;W1I;64@/2 D;6EC<F]T:6UE6S%=+G-U8G-T<B@D;6EC<F]T
M:6UE6S!=+" Q*3L*(" @(" @("
@87)R87E?<'5S:"@D=&AI<RT^7W-T86-K
M+ I 0" M,C8P+#<@*S,Q."PW($! "B @(" @?0H@"B @("
@+RHJ"BT@(" @
M("H@3&5A=F4@8V]D92!S96-T:6]N+@HK(" @(" J($QE879E<R!C;V1E('-E
M8W1I;VXN"B @(" @("H*(" @(" @*B! <&%R86T@('-T<FEN9R
@;F%M92!O
M9B!T:&4@;6%R:V5R('1O(&)E('-E= H@(" @(" J($!S964@(" @('-T;W H
M*2P@96YT97)396-T:6]N*"D*0$ @+3(W-"PW("LS,S(L,3(@0$ *(" @(" @
M(" @("
@("1T:&ES+3YR86ES945R<F]R*")R96%C:&5D(&5N9"!O9B!S96-T
M:6]N("1N86UE(&)U="!E>'!E8W1I;F<@96YD(&]F("(N"B @("
@(" @(" @
M(" @(" @(" @(" @(" @(" @("
@)'A;(FYA;64B72XB7&XB+&YU;&PL4$5!
M4E]%4E)/4E]$244I.PH@(" @(" @("!]"BT@(" @("
@("1T:&ES+3Y?<V5C
M=&EO;G-;)&YA;65=("L]("1M:6-R;W1I;64@+2 D>%LB=&EM92)=.PHK"BL@
M(" @(" @(&EF("AI<W-E="@D=&AI<RT^7W-E8W1I;VYS6R1N86UE72DI('L*
M*R @(" @(" @("
@("1T:&ES+3Y?<V5C=&EO;G-;)&YA;65=("L]("1M:6-R
M;W1I;64@+2 D>%LB=&EM92)=.PHK(" @(" @("!](&5L<V4@>PHK("
@(" @
M(" @(" @)'1H:7,M/E]S96-T:6]N<ULD;F%M95T@/2 D;6EC<F]T:6UE("T@
C)'A;(G1I;64B73L**R @(" @(" @?0H@(" @('T*( H@?0H`
`
end