Calculating the CPU Load

We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Is there a better approach?

Bill Shadid <bshadid@neptec.com> wrote:

We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Is there a better approach?

You could try sysmon from www.parse.com it displays the top CPU processes
in a manner similar to VAX/VMS’s “mon proc/topc” :slight_smile:

If that’s not quite what you want, the source is there as well, and you
can see how it’s done. Basically, I get the amount of CPU used once
per second and do the same trick with idle, but the code’s there rather
than doing it manually.

You’ll most likely want to grab the “idle” replacement on that site as
well, 'cuz QNX 4 only uses a 32-bit value for tracking CPU time, and
it’s in milliseconds, so 2^32 milliseconds runs out after 49.7 days
up idle time. Mine does the same thing, but you it exits periodically,
so you can simply run it in a loop.

Cheers,
-RK


Robert Krten, PARSE Software Devices +1 613 599 8316.
Realtime Systems Architecture, Consulting and Training at www.parse.com
Email my initials at parse dot com.

nospam93@parse.com wrote:

Bill Shadid <> bshadid@neptec.com> > wrote:
We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Is there a better approach?

You could try sysmon from > www.parse.com > it displays the top CPU processes
in a manner similar to VAX/VMS’s “mon proc/topc” > :slight_smile:

If that’s not quite what you want, the source is there as well, and you
can see how it’s done. Basically, I get the amount of CPU used once
per second and do the same trick with idle, but the code’s there rather
than doing it manually.

You’ll most likely want to grab the “idle” replacement on that site as
well, 'cuz QNX 4 only uses a 32-bit value for tracking CPU time, and
it’s in milliseconds, so 2^32 milliseconds runs out after 49.7 days
up idle time. Mine does the same thing, but you it exits periodically,
so you can simply run it in a loop.

Man, I really should check what I write! So many typos! :frowning:

-RK

Robert Krten, PARSE Software Devices +1 613 599 8316.
Realtime Systems Architecture, Consulting and Training at www.parse.com
Email my initials at parse dot com.

Bill Shadid <bshadid@neptec.com> wrote:

We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Hm… you could use “sin ti” to get the time used for the idle process.

Or, do it in software, use qnx_psinfo() to get the times for the
idle process before and after running your system for a while. Probably
a LOT easier than using dejaview for this – and you can automate the
collection of the data, rather than having to do it manually.

-David

QNX Training Services
I do not answer technical questions by email.

David Gibbs <dagibbs@qnx.com> wrote:

Bill Shadid <> bshadid@neptec.com> > wrote:
We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Hm… you could use “sin ti” to get the time used for the idle process.

Or, do it in software, use qnx_psinfo() to get the times for the
idle process before and after running your system for a while.

you want psinfo.un.proc.times.tms_utime

-David

QNX Training Services
I do not answer technical questions by email.

“Bill Shadid” <bshadid@neptec.com> wrote in message
news:9vqe4f$rnl$1@inn.qnx.com

We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and
then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Is there a better approach?

It may be possible to write a program that parse the output
of monitor help program. I don’t recall the name at this time, but
there is a program that converts the output of monitor into
a text based output. Parsing the text based output may be
the give you very precise info.

By write a program that parses the text (i don’t think
it would be very difficult) you could repeat the process at will

Maybe there are specs somewhere for the output
format of monitor?

Please see topcpu.c in sysmon.

Bill Shadid <bshadid@neptec.com> ÚÁÐÉÓÁÎÏ × ÓÔÁÔØÀ
<9vqe4f$rnl$1@inn.qnx.com>…

We are using QNX 4.25.
I have a req’t to check our CPU loading on each s/w release.
So far I have been using dejaview to take a snapshot of our system and
then
viewing the idle task’s running time over a 1 second period.
This is a very lengthy process!!!

Is there a better approach?



begin 600 sysmon.tar.gz

M’XL("/I^33PW-Y<VUO;BYT87(`[%S[>ANW<N^_Y%/ 2FV1NE D)4NV&:6U M)=E6HUM$)?'Y;'WZEEQ0W&@OS%XD,JV?*@]PVO/U)=JGZ6\&P%[(I6PGEG/2 MH_UL$0L,!@-@,!C,#-:S'+_1_Z<[?9K-YN;FAJ!?/-._S:W6^H9H/MYLMO%_ MJ_E8-%OMU@:5WRU9ZDFBV I!2A@$\6UP'RJ?[MR?Y*FN+57%4N7P^?Y18P<I M>OGNZ(W86!$J3T1#Z;KB6H:1$_BBV6@VUS5<;:<N=H+1)'0NA[%H/7W:6J&_ M;=&;B-.@)\-8?!O&TE\1%C P5"1"&<GP6MH-C>1LZ$3""^S$E2@;4;$/L'@H MA0?>-$6#(.2\:!+%TA,C&2+'L_R^)"1>X#LQ(&K=OW0/CX_J(HD=UXDGA49& M87 96IZX<4"-[40CUYJ(:RMT@B1*\5J D#$Z*P`[&CI]D%Y$HU$+)/T@%HZ/ M'MK29@I'01@[_J6(`Q& VE <=Q>C4B*L?E^.T$]+] ,/_;"%Z_@2+W[D1(PC M&'"'!X'K!C?((!3!*,8D1,\TQLI;:]N*X]#I);$\%V^][:_U2)Q-1O(;Y#C; M1%]X;;FU2 *Y'=61NPQ*8J;C7&.BR1/-IZ+=K)PVU*Q5*OU06K&T"^7M7+EG MV1)C8,N6"'QW@FE&-T+I2BO">& ,OOM^?Z=;J+Z>JV[9-&P9A2**D\$@!6^A M1AY\X(P!GD36)3A#1OR+-I((3!';,@RY^7?A8J11M"%((%=R*%+::*X&H935 MI;5J]2O'[[L)NK(`)L#X-88+U2JD0NST*]>!8U<JJM$:"*UWBB68$,QHG\M6 M1']HA6)I"4!52E:6:+9],)<38-L@7.KJHYUK>^%96A2/"#(CG&4/@5A4<ON4Z% MGK4ELP0;?0&J-604ATD_%A=!Y/@#,%VT:\46F@<Y3!S2)CG,DDZ6] !,7:GR M8JM9X64?\QA>7M<5"&48DI<HOU/]]VK6[1Q\IUIQ!J(&LKP+-[!L4:N+[6VQ MVJH+U*B,0N!#^<+#Z)D0F"Y,`8'Q<D$=QP<'4"<:[_R%%6%&CM!61@J\=O3] MP0%GR+$3BUJ+TN^K%6[RVK%E< $)5:-<SNICME'K;._T\&+GH'O1W3E]G18: M>IHK`O]HJ%;$@A(?XH>'T8J8E6[3<@UDZCE)L0[<)!HJ$J(;)^XC38/,0] ' MZU6ZAW$PZH^29^B%'9P=G^R<?*_@*STLMZM."D=\)B,%USU[?K;7+8<C?%B# M*<+#O4-16^POSH&UP2!3L/8\6$]Z4Z!>*>AH"-XVL">O,8@$7 89RDN('ADJ MT-.]5_M=3,\4[/N/F3]L%)!SDJN^USP\0-]<4?.BR[IF622983\-WQ2SOGQ^ M]OQ [)V>'I_B[6'TSG\7YEAT15"#J)5QY7LC0 33I>6'K]>4SR3I':>VP!), M"0>SB'RU9A1"7['Y%,ZR)7C;DN4BIZ,3J/TR2'P;JY\;?$"55*.:6+.X:&5 M?/&@'1V?'CX_Z'#F$)E-E720;*NDAZ1A<=T7PBR^$5H,D.2M48561SCB:\'$ M"F=Y616GA&GL%8/B&GO9^=OF.8F4Q=5%#9T'1RY7>"^DBQ$MJ[=<6F]9US.M MF;(2V%J65NBX9KK4T_9:YZ8R\_WB</$9OYF!RX:?<PWCX['EP$K<6(/GYV(* M\'VNKZJI0H];JL?;:8]GB6RF1&HJ+4.E8HDHZEM^#J=8%FW(R(=C\/XC8HMZ M6G]:O#L^]G/'%D,Y%JF"4B+82SNINE;LK:;0^3@*;4VA\V$*4^4#_Y//0:(W M16(<]KW1#(EJA2SDZ9M=/:JEC)WG(5,[13DR5?8)R)38GTL9RCX-&>U-\_N) MPD]#1]O77'0V*S\?C4YO6^7H=.$GH#-[6SD^4SJ%< Y[)M -@QLZ_:B#30Q] M7KQ#V;N%`HLJP6^(^$2&+<J:V3IY6%6_2/14A?=&BK[7V]4??;:]?S[\>-:5 M'#BNO,LV/F#_:36W-@3^M]?;6UNMY@;9?QYO;-[;?[[$4_VJ^E7%, &?B_49 M2)LY4,X@1T&,(P:ES@)!\&R<,%:A>&C%9!"A,[4[(>.*VO.MGDLBRK:5[0:9 M_B4CJ:SNBB.R'/ ;CO%4OO/RX/FK+DFTQ)-^W* RW31;$Q++CQ,/TG&AYRU0 M<U9JC%$$^/U0>JGY2!,'#'[BX=2&\NP,W8!:C\X&22A&23@*(HDCWS[J.?Z5 MN)$"BH7 <>%:`B0F$JF!0>+WR0##XP3YW&@TJM7C%_^VMW/6A9"G(W0#7>'] M&PDB+L*OVH-5";84)/3F@I39%AI!57<?1^9C6ZS>K LS1F*U7:WVZ7#R3/QS M3;=7!U$]+^L0CEA]E"HD=;%Z*%8#P96R*CD3PJK+IV[7Z455"'*)(XQ8[:L* M>"5\48"#[M>4T_"LD?@&?ZJ5T!,FYUZ^_S]X#"?>I0O@`_)_<VMK,[/_M]C^ MO]5JW\O_+_%H^[\VVA1=`'=EYG>X>$2F[E[.M$^L2/9V`7X,PHDQT3>F3=3M MN2;JWV7Q+=A>C7Z=&E]9MN<MKQ]AHS6@9'%1MM@IJ^U(66U'QFH[SYJK3<ZF M.,*>0>7X)0#QMK5YGMJET9BX.I'A#N@K9/KD8(C2+$5_A &4_KX'13XMB88D M^!/,SJ7/=OSX4'K?=E0'\<9V6L"Z+DK57*V(*\<->A-L<]QQME#E38&I!<JG M=J-.9H^J5G[VQZ;'9(U]I+K-ACG5-!E,.*^!##1(9Q*%ATPRJE^48CL>;[8- M[/@787 3B57Q&,>Q);%%UB0S+@`VJ-=$2I$I75[N<%>WMUO,-H];[2OV+3QN MLI,&B@**VES6VCSDHO9C5<2]1^5J!1P920SC"%H#EH4::/;O!*[4KHX*0RO; M)!21&A96<Z[U>N^X.V.\QK&SW4JMUR=F`1VJ!;2K?5RUZ4E[:'];QR%2C\$, MUO6\25SHYW__^[,\?V4;9VH%W%!6P#E3AY-E9AHLD.CD27S8?.*^^55\EN=7 MC$O-#?S+.A&X*C:(>71&RCY+HM5L;QPP6QWDG1"EY!G4__EY1O!_%DJ\#<K4 M6LLM9]9'79<LQ',7!G6@56<W#;M6E(56&=$7^D'BVOYB+!@+ZAH>=@C]@NJV MGLI.1]5EGNWFB%"&?:O?3[S$!0[-F2I;"_A"7N1*.0)C<Y^X4[:\OG BM=QK MS;IX]$A<RAC=BF+;\9GXQ9^-F3,U6;PO,9F74)=9QE?$3YUJCC.;BC.UU,S8 MD %^4@`_`6"+?E/S=7X"WCH\OF)9_'1.=F:QJ F[#:I99NLO&3\B?.38%W$% MDB/$F>=D?]=(5<A26X[)Z4(^`%?&;':JYB#9_CX]=_E2DLEZ=ZJ=G![O7"![ M160@$--JUV)&UQL13R!-61Y5Y@'D(AF&?D"Y>_M'/SP_,):R4,9)J+912%X[ M\'%LO R$=0/Q!2&9&984GZNV&P/7NHS$(U&[.#EY>7&(YOY#</*'_5W%UDW= M`/=4C8N:.IW^6F^^C<1OD#NEX4?0&/IQ@!U!PZ1SRTVG>ZXJ/$]IN#@Y?'GQ MZN#X1=8I/?0T]Z\6.R4&-&.2GXNT.6ZN%XWTS6<\0FKHP>PV;S\WH8/UJ0:J MT.Z/BV7&/,;4FL%$3OPR)*?SD;05DAT<4W/DR+'L)^4$[<S'M9['95#,H^E- M*9[WF2&RXEGA55=>DCV !W=VE"W;#E?$3+;/>LR*4(W5.WGNRS@;6H)>J3,- MD2(+O,XO,D52I1VD0@4=E:12[:0S"]2((CJ0Q!@!=@]E.>,5P;\3DPN ,8.E M.7B=T$)G.-*(J$&H.+7IG:O.[DKETE) RTQO?1ZPQCE!!85\36E4BK(T]Z'* M)9J01PVLI3ECG:-@M/!)$4XZ8H+5R+T1DX*PI8H$:"#%OPC=[#-2E\182^%Q MN12>&/DZ)OEJ!EOO$!_=`M,^SC7R,6W,"/+I'2^=\TEA1)IJ,,S>,RE5@29H M;F-%/,W4H(C<7B5TG>=5E$QG8 L]A%X<-(9W>L;\P/F_28?][/R_2>?_]<W6 M_?G_2SSF_']Z?';<>#WWQ/^;S_HX\,0X.BN+[/.C[KY@CB-_5C1SLB\+/LN= MHU7(5>Y821GUSG1Q%E527FZ":<I+34C.W%)NF03W=*E6G-7!>J;0&1]1()@N M-K%BTV#0;(M@K.--0ZE8K:F0L]\V_[1G>W?J_5'K?^.V^-\6Q?^VUMOKK<V- M=?;_M-OW\;]?Y#$.8^7UT6]=%9ITJ)S/58&LCS4"5JO5W;WNSNG^R=D^\*UF M3[5Z!A&@O4LF#'9H1:)'ATI;IN8F/G#>"$NP$9*\$2'E8FE N13!M0P!4+UV MY(V)D=6A5,#EL!LJ3'S?\2\;0IP%(T'+.7:PJ$C!EQ%[>F+D*]-5E? C!T?* M%?;Z]*2Q/%)TJ@\Z\@8<S_)]&3:JU=<RE,H'90)XHP2_H0Z#M:A'_=#A@%U# MIPDV#D;H`P?Y0DI2C!]'@WD`?*LC?,^1]>.0FDAS-'$$3-:$J5A?G4N/JE<H M-1W#N0JT/,L!TZ,<5N:-PZ/3N(.AY+&:'<,B"N7B*J P$=8TB[J6!IMI'3-Q M:^O:()Q$-&1S*-#1)+>AX?(/(:$8DMN0</FM2+1+I6PL+$&>-,T-T_9N#J<H MHC+>P1)4C$$/JP&+<A-;G'\=ZA'10C+!1V!B!9Z%@^?J:^,A,7A:+-C5*P66 MI]3![AESZP42#3E:G;(R9/K8E(77"[*-TE(&>CH/$3J)Q6$S-C :UNZI_#EQ MH%M@"L(<KG@(7D[MK0`W?@(AE*>8/;68,6];=71%'2)+9@O'[R$(@$8=A.1% MOF2=(U1-M-1X]X.$7-%Z9*SMK]-XMOR:VY4#)H>YQ$0S]P.7_,MIA8B,63P/ M- UZ3.HD2YR8I8'E3\25G*B&.?A3B\N>U;\2VDNNI")ZXXV8KM.]@[WGW3WQ M&DK/\>E?\B)7B=UFH]5L5JL_I#<X\$J2BV\7.&&$:4EZ+HXHVEE"8ZK:Q9#N M*_O?3<0*GYKJZ@##E-#,N,1V+"4)64[BK0ATF#,SYLK<YSP?-T%X%57S$X7F MCOG6Q/(PA;78O<\#`OFEK@RP@X)N9:!K[6+7\,I[2N'F!"E)8#$*3P@\C)R\ M9BFL?34L?@-]&\&U>M*ED=9J8(YX$#J4O/N1EZ*UUE:"OE7GZJH).UW\Z3(- M>$6H`"X,G_&7@$9%'S=?J>Q4M!3 Q/39`J(N4U@VQ5 0Q*L<Q*4;]"R7<D]S MN7;1E$/%/Y87IS8C@GDSTW3>^,*]RX;!1U]L(QH<")0($@P;H>=)V\'BT17, M<$2!6H\+/R]D7+W"%V=^@N9E.#XW`]YV*O1HS+@$NZ0S<'+H#,<416(/JC#? MVE$+NSVFDTG@)L1'C5P3N5LQYT)MKUBMF6RBJ:9S2X@)TJ(,O(T6*$9=QC<L MYBQOY.((PRN$[O4$$7LSH5H,@^1RR%T,)>D&ZGI0+?$!#^%3F02)YD@MQ+7T M`:OTM&RMT\N0HD\@B-(05;#/+S(,,"W X@51%I""HU150$T[8TJ5B$FK@;JV MT+=_--SS$JS$(4[$BUT2`^5F8D6K5D9;8QQ!3YWZ4E)Y>@<#V0=7T"+GI1Q; MT15:K50@J0[V=_:.NGO5G$*(1J-@$-]82IDB#RUI;;2=0'3VI=JS4RU1^VUM MM3H\FG,I#'=4*2^)M-8&QKKA3>%LJ#4U'TLQ&=&NI?@CUO>Q[*0?*X2 <!VK MIP*?2+>+H-,!WPUX+@HD;5=<D[S7Z*:1R(F2F7E\&.?#B;K -@CZ$#:,#7M- M+/M#GW=]<@5BGBQ?[580Z^TU_-E8^^&PNR*H`0?"[Q>*F*I!5KKVC6/+NI&U MF7##T%DD1*IYM0'X65U+'Q]\"X%+%<S#BC6SP<#JRWQ]]%MZ/<AH%UR:D"7) MW(:+,B PVK6#&;)#YYI5CYGZ=(LNU0"P73F%'-4TI'$\53L.+3]R+;+!FZS( M8?='+D>HK0:G`I]TZ:"(PG-L1Q0??490`6,.ZZJ06-,5V3B!?3M')BWAA*:, M%UK:F80D!<0+?E"&X=\?"%K9O@3#Z+GE:WQ:EEC@%UHP&#*.--,:.::J/T0- M2^T#A:-4I=+>W-R$'G0)=4)T8RR.> 6YQW%LW4"4\WGMV_8+L?GF"5([EH_= M@K LM\1F:UT\:3\13YX^?L+&C+ZL%TL>;SUIBUJO!VIZ5F*3B;.]T6P2U'<) M9GKMA3->0_$S\-.5ID<E_A5J"U07&3? VKXS;E# @W4?[_MG?"#B[_KZ]X?L MO^TFQ7P9^V^[*9JMUM;CK7O[SY=XM/WW=.]5]^Z"OTJO_W[&T*U"YIHM>\FE MOL1;&F<U)\SJ]O"JM!@KYD*E0>)E\?KL'+?\';K>TRNQ?Y]^=ZIU<4%=XEFY M& ]D.*=7%[M[+[Y_=0%.O#BE3F)PE1,U&-20KG-W@?<!]XRI5ZZPVL+#-IW\ M(O%PH['ACI^IG]*WW_E#=V]4RU-1`W051P\HY&E$QZS+AC-2OY%^C_2[K=^A M"*1UK+'*Z^G?OOZU]6_DZ'?]V].X!JYR4%-807%,5C>?DD-PX0@'$>O:<EPZ M2#8X;F>>*_N/%D;WSQ=_TOL'=Z@$W+[_MZ !Y+[_TJ:=8+W9OM__O\B3[?_L M,_U#`\!3Q^V\R._YZL-LN4<6`#+D7K'1>_=L]WCWU1ZWM1!1+/?"9]$\;#;\ M5@ZM\6LK&N[A8(2S)<1P:Y-WU"$RJ;MD5"%[#=F#>V0V(XRY+XF(+,3OU)B_ M9K\W@E'S@FNY*RU;MU0&I$<OPZ-=V7<0X3XOP%UG.!^*>/_ 5TSRT>N)9T35 M`4?%*&IP<J!)LHQ#P'@A0)O6T7+Z&FV81<QFC,Y2%\H+JW_5(S?9V^*4GG?2 MJ/;<5ROR'U9(P[Y5X':@[=\I=,]@-NS.O!$K\RX'@D_'GA8IR,6@SA+KG#=\ M#*90@;PZ-/?3PM"G1YB"Y,NCLIN=SQBTGHZ/=C@MS, 7PM$YR&G!!*/_+8V* MGDI]TI^_SK:Y,=OFKX(C,\2O8J<KA-@_0:I+J2ZE=KOXLT=_GK_!GQ?T9X?^ M[-*?[CZEZ,\+`+^$^OSK;)N/9]LT(>/_E?9N*O5)?VZ)''_ 7TM@YJ(47X&@ M]:7#L:%V>^P[(T;*Z?."/H\5-1H-/BS,A(/KVHR[& >>"2=U>[Q$L+7R,>(9 MO H,_QC,[7F8V[=A_KPAYV5TC:PHJJM/M5"R,R>4.Y5-E:51'$YEA/+Z'_E8 M2?U'GQ[-"L(<K1P^/3COI/'?&$94XKJKWPB2EQU!>0^TU!0*H*:QXZUN`/,A MX 2%;$P9D90UF 9JSWREI9JK6;AK8?J?(XD(R+:EI7IZB\-D=J<O;%2R.QL[ M,W<VM&N/+RS+FRR@@#<?LN,J@9M&39>,$<\A1=] C2(<7,O$9.<'0Q3XMY(+ M>M-0ZHL5)6=G38(!*^QDFC+3$%8,$<@+9XZ!81Z#3UL8#%D8E*AN; VTR*<- M/:GM(<_^AB+U'1GSN:)"@/\41.N#H>1YT5$BN,HD1_I=IX^1%Q^M8<Q?8 XO MJ!(V0>[-D#XB4,NMJ9RH>+"4XP(SAFF\8Y%#4J;*HN\+2X^8X('B@G0VBFLH MQTJ:%Z'X,()ZR3RE"[[(;[,]+)/QLQO)[/>V1OGY$&J"(/71PF;G4Z:%B9JK M_MTZ!P5=8U30-5:?-)Y$XF%SPWWSC/_.IG_;7V,MRTUN/H,6'EO+\N]D-<N_ M1U/ET6@6AST%8RQK^3RRL.7?>U/O_:EW>SR+@ZQP!9BI]]X4[<8ZIYEIBB>9 MHY>7Q3<SIQO#U-E.DGY71]6BVP&E=3*]?*3U\EL5\SFW`NZ??Y1'?YOD3EV M'_#_J6_^I/:_=?[^3VOCWO[W)1YM_U-W(O+6OR]H^].1JKF06O/)G&D#8.M/ M\^F'_%>"N3.'YA/5VAJ7!^#[^5T50CUMK2/CU^^QK2EB];<?C DK_9YL]FW4 MSV#*H8#)$SV!7?U-PA+#2D[SR#XJ\+>IW_]K[TIWVSB2\/ZEGJ+#A6*1.DQ2 MIBB;D@+#4A+#<A)$2H) $ **'$9T>"CBR'8V\!/M3^<%LHL\Q&)WL:^R74>? MTS,\3%*6P_EABSW=/=W55W755U73/ $Y3M7YW%MJED A#N!ZQ;MX#0B(<':< MS_U3M^P/[_]IGM^2GZMYO3L\>GR(+4MOX>YB6_C0:^'7LH7?9[>P['ADGGL+ MR^4-=X8<?3&*AN7*8ENXO>'1\,G1TV^/,EOX8+$MK/HM_.IXU"CO++:%-;>% MGQ\=CQSEW<6V\*$W#Y]^]L7CX\P65A:[4BK>2OGN\=/3$32L+':E5+R5<HI^ M;[);Z*P4XZ+E=^__:9Z@O#WGR\@=YL#V@<+"[1G*I+4W@3BBX^_LX;GC$"IW M<=,69Y72>=T5<7B-#,@WHNMFU(_1C=2*)8U73(WC](>E' ]MP88NCRX)VMU! M(RX(NZ6=<_1'4-H"%P6!][OGYK*KW?#((A6Q+N3BASU;B3NJX!_:K9OHKLI) M*D"^U=76UFH+%#%6\^Z#KU_WMQ:4>W4&Y"Y6BRIZVN'GD$,C<(XEFC*\F5-2 M@WA2.+7C3%K4=LT:R:=*`0*#F.5TIA.2+^Y:0^P-IG)U\_XJ,1RNG"74\U9L MV$3BPI@D"]?.44Z<*CO&A>JVV55/NZN%!V#<$9,%UO>]15-?^GF^\X^Z!<_S M&R/D/]O5'<O_1P7]?U2KU:7\9Q&/DO^0O>?G8Z&_9N,,A URE'UUK]'OM $C M!=@4L(HBF_RQ?810/YX,>F!&ST*>H2ORV0-6:;!U>> F=3L7;EH3# _];""> M<M/PV'"3;OH=62&DV641D_[2JU FRM,,CMWDBY^BZW[43:;3T9=,'Z2D@PG8 M,)G,`/D#`U_[YBF<$CGM\U,>&N8=^(*R7P*C: O2V(507HW!"<JCP#Z8R,_U MG*+%YBD><BBP(A/.4R_#"3B;4*I8+E,HK/!?A@.1_Y)F6HD,Y:D*)S"RL6!3 MJ=ZR=>4:&O!J.U9PO% P!3!(UUFY=EZWJ\14S-,=-'^2'VU%W;A!%>.?Z!?! MSH#G;]WRE*HS8+- :8LO7UUVFI>DQT2SP5>-H>@VY.Q7]HM01E&L:-3PH$)" M-?SK&'7NDDA#:"2J\\%T7)9[4W>(WHMZ%M$YP<O@$QVR$-$Q\WA$'T%#='L& M-LC/F(!@6Q%T'TM9P?*3LZ(1:#CKE'1%HKP#78UN71%6IR3RG%BTU;DD=4V) MF= W"5M '21FUK /B'$%MY9I28=E$,] A500'<F0RQP0`F68%Y]@5DO=372> M@,R\D;@G!/J,<K84%2LGERM;::0[R.4J7CXYB7*Y;3<1)F$N]\!-E),CEZM: M:6S4G\OM6(F*IKE<337X>>-UIW?3<QLI$[]2KB=R.P_>,VZ9/2_<HOZO7"N7 M;/N_&O)_VTO_;PMY>.:2NXM;1?_+)N!IR7":=PE,2FX>W,-^UD%!C7A$PW!< M+#Y>O,%2O'$=*:=R?**+8G%#F+\];2 3X! 8#,\;72#;Y[J7H4QMR4)?G@RN MXXR*4HT*QK%N2#-N6* W?4ZX#&A(.46,L/CT-*>6RA0"M_Y[MD\^8=A ,T&; M-8RT:]!EF0= @8SCZQ_.[=V2.-LM&?DN,%5*5*8GS;<0]<[-HI<-2L]3WIV0 M^Q/3%<6KTGDRAA6%#GV:%";KKW#'4BPKE%^R#,,*<NO1D?P#^M*8V-#"[TW MS")G#T*:4*UDU:G&QI:!3F&K84T:$)M6ZS-4Y*NM6/,M`LT1,'CE)R*_IJ=/ M(2\>B?P$)AL)]?X_0HDCGW$M-D#:R\H?,MX@?=7J%'K_\0PV2,654&O]$4H< M^?RFX\$"Y6GVZ!#+GED.>.^HFABJ*CHK*8#,]$(OS1V88Q_Q5 J=8VAZX:Y" MKL_='/Q$WA4X.;C7\#NW4\FCK$#7"_01Q;X?XT[<C4@HQ-8F:1\>TP;%]'<\ M2Q'G0!YEAN(1<Z2!2Z!RH)$["( 5!2\MEN["$#%,1GR1-1(,=PZ.-DZ=N5G$ M&!*-:1&CY2$$U#8_E]8P"-;W3ZOWP19&9;CN#* :ZIH2RM6=/"11TS!I$J4Y M.6+>=#P+$A)SQKVA//S@[T"A]:Q"PRD*35,FT+A0G\6FL-_69V14I.\;QJ2( M):[O8E#$?O@68DXTQER:TN)HHHDUS;R:8EI-,:N\255"F1O06/L^A=WG7JQ< M"_Z"3N(^\HCOFU\Y'"[IH+-,LN9AVS1JYY_8KBG)V-<_!*LF9Z@V-^NSLW0" MC9 GS #DBE;,B&)1[E1Z8(H7-("P$14;!3,K#\1:\<+\5O;L<$"*M4UDB:Q0 MVV[9O:RR=E$[O53P)J!I,!/K6+(^'MXI(39),>G2=;%!%V^\NEIGW[4V7D^_ M!7MRT;G-IP7E&KD?6Q]7T)ZKE%OI""NSE+MOYHJPNWYVM;Y^;LVUH T4F33] MC*%F;<+)U6(,,@V5-H0S!PFHQ .'4ANHPNA)@G9Z+J?MC*O2XDD^N-]B\4<( MWY:<'C*?*91";T=:8ZAME8-MWJ9@Y]SF`MZX5:[Y=2)7CJFN>, .HH=;5MHW M`NR[!V\7Z\();?=VM51MO5W=+.]LE7>&;RDPO5^WW/""Z?H8S@2QN<A $$P: M?&!:1Y)(04-D%^FGY@O"_;9E5R;"_(6(`X!2HHZIVQ2U<7ZX]9M*/Q9PE8 3 M>]"2!&L-V%L_.!0>@E"KV][$.0XQJG_43A=26K$K__=[P(/V7^,#+%2T5O/0 M@?X]L]-VEJH>9F#+#H0VCPY?.F&*6VM)W7U$,H9B8K+9+C$2L-S?0XDCGW\% M)"QT::2PE)Z<S8M(:0G<:MQ8.H8S)_0;YYCJM&G)ACXUW5=."F9C];''S"Z8 MP4ONH(@`1KDQJX8"4@5;J7,]D QH/ZC5X9+*A78BC,#%((X'/:C)"2&PM6(, MJ)R=VVF"VK=?JRW:A-#B$'\8%^RA%;(+NX81NDJO6Q?LX:0-;JO1JS,*7<&' M.$N7,'OMH8.4M*O>M:I60EV*_Z5^R.$J$TI29Z@A\C*\-NZ+\D[M6'WJ%Q1B M8""P;0P()I=.Q0N+5@[T$J>4W9Y]\8NV)[8IT%02"73'#S<RV&-$0],@9[-B M5HU[H0HYO*4693AK.>Q(2'81=E+YE]R<RNXZAXK71=E&)V=7YE@:E)+"VA1? M1HX92GG<8HZMQM_SCKB499%X\?'$I>OI(U\M'8_98OO39D60/WJQV@7?Z! B M1V[ZP)J@O^N_H>]JL5IIK:Y*VOI-W5#GJM?<^XF<A8!!PQ(`?)<?@KO<)OZC M4BG5M@W^8[M$]M^5)?YC$8_!?SP_>G[K^ ^*K8<Q2"A:"89YP!MNP>)%$J#@ MRGSLPB?">V1C*<*@$.POPQ$5*(3_S@!RV+$/,X C=K9W<E2Y>"R'@6Y,YSDR M:/O.I!KAYAL1CD6Y+6K\Q_]F_.0Y[F]1\K_Z(_^9\9-$F=!./RN4"<9@$AH3 M'@_BYU'O&?/4)$[O`(Z_VXU:8>BNA1Q!-"ZU+PLY8JTAGNH0W,R!E."<!Z!H M@6@<8P9+QI.!)8&R,W32Z?=G3.P(:"9Y-D.<J8]I2B/?1326^2AM2R;(+X"H MQB('2.Z(*I-C2JPI,C?OG[<`#5D,3D,%<\?9!S,`@YK?:]Y[9##L)IKY*/3- MEX=',"&__/I[6:.WG%9;SPKY#;7FDI*HQ4!AM)R0^MGB?B*L?^Q^'CX^?7RW M^MGC?LK-^W*L+BZJ=SAE\("Q^X $QA-A1.\F<-ZJPI>/AVQ1N_(HQ(RJ=3PP MCEOKO" JJDWC`U3(L$2K*?DGJBG9^K[3;T6OYPI788[F;B!6G#/R?4"LS )H M03R\`[0`*ZMW!%I 7,F[Y+=U0N" AB^ C9A1%:(=F :KX52@-40\&/^]EVC> M4-[SFA#?3>71`E+RU:#8?GIYKF>OG'85'[Y$;0`#>+]4'_E9'@E;T^[V9F11 MGS;TQ8.#?6"XF('HOX3+MAS-9SR*SB>R\\X)E9&QW4V'RO!8YOH2E3$^*@,/ M1(W*8#D"H3)H8!B5H3A5Z];@,JP6?$(A+F@^;@J%R,#?!9O["Q2BB6D*X6]3 MJ.<6<C^U+IQ:0$NPYGP<<]CU!H >3 ,'Z.&]A;&2QWP&`(3XC%0`"'TC&P"B M9#HA`(@Z*XI:,4?[9;DP2Q!(^K5R&%\WK\ ^F@BQQ>KP/9S$5/%!7BD/(<.5 M=G>M4M06K7ZK'9SOJ9#,%U5DU.S+JF3*>LR4N;7=WQ<5Q*\-+R$XK-4:H6+P MXE4#)(1XM\)MSFT!UF%?M$E?70)]U<=ZX!$@H_FOB0`RH0M^YN8T-X ,SR(; M("/G+:EG)!$/,5H#RGA^_?3I\9$HMJ_J(-QY41?MJ_WVX"KJK^7),<#@)LYO MY!MRS"5!UE[LE^HO]CKU%[+SO[8YNEC[:D->28CNJ]T6C03\L89G6@'BI%F- M/7MQOGF \\I/Q+%.I/(^\:;=[ Z&D?R:_-L2&8T-]7$6;W))U\?;"IW*GD"7 MU\+W7S\O'O>AO+UD7G73\.YD<O1"GW<V([26'P59<M!)2EHW":#(D@V-`RBB M\^$#`!31;G0G`$5CH7EN%V:CH"ZVI-% 75*0+I,Y,$\#N826YON_CICYN?OK MB$[DY3KZL-:1/K8F6TEPC"5327?W/JPZVO1E^;NZ))%/F-WQYH[1#->[LXGT M((2R^RE[B4*?;G>30*K:N%IJ8AJD%VEU8&5G?._6HRWQ*B(C'+E\(F*?XX$" M3"KICK/!>M5N.M7>QWM.&F4"1+'_MM"DV2AB[+Z%)#8?49IL@IY:HHVT/F!5 MB^N#1[U"N!=*Z3\9//I/>Q#<-G1I^<S@N1E&\P7__66D_\_*`_#YI/%_@-BJ ME,JE)?YO$0_C_[XY.5I$\!?'`>C-$(X%B"L*_P,OA[!#P;Y(YQ'[I=V*VN*' M'[XY>?S9T<KJD]P9Z*$'_>'YRLIWEY$\B76":#;ZXB)ZM+("NO+>_AY[H0,) MT0$EPD.EG)=<DJUW'IF\\+"Y-#^OP/9 N[>S7-J 6:XQVG5J(.]V3@V*;0#R MN0%T_&^#!C'KVRQ@O1E:L7B2M:#8+Z,6?#^B#F1Y,NK ]UEUL$^^$!T:HM>X M$FQ3`ODZ37EQT'V3L\VI23M'3-:$%3!%5;:A&5%WW.7<:MQT8PPWGJ>!SF^M M4.YUC:0WI3G@\5"V-V$:`S#,:W$UN$;@OF,>(X:7@U=L4Z/K8M6>N&K(2B+T M]!C%8O R`G0?7,>@MNBZ,T"?BS"]MH3X.OKYIB.7*S*ANBJ(F:X`@4/(K4"W M0GPQB"-X'U/8IGWJY ;!?9+#A%8U#>."]4=<M=?TA3)1N@E7-46EQOY>(XZO M.Q<WL;W(#A&Z2IL&\":=?@,*=@&CJO,/`0&"`P#T9WH49,U?]IL1.*?4CH81 M7GS9B6,@8O[G/#4D>MV!=OPUZK<Z[3\/;P/V(7,._S;J_"\_J%K^'[<Q_MOV MTO_W8AYU_I\^/5Y(^#?-`;QLR&WA1J9WALVHVVWT(_B%YDIQYRZ'?LO&K1-6 M60-L,/0'"G<4)ORFK>#AV!*0J]%/4A.B<*R/*#<0C-%?K(XE!2+JQ-;!Y6%7 M'A9K2G+$*LDBZR3OW;^'\C'XJ6 2\)LKW-L7Y9V"UG82:('>,78$;Y]%QD3) MVG1>]5[IE;&+A(5042HT$H,%+)U6P>FS<88,W0^#WU!2%G+2I&F;B5HBE(B! MAVBI@U)_@[3N(+^A@"$?:J +/77G^(T1^W^IM%VV]O\J[/\[M:7_WX4\SH8& ?ABBEK4II)U__$.?Z\ED^RV?Y+!_S_!_"Q>X/`-8/\J
`
end