Xref: lysator.liu.se comp.dcom.modems:4629 comp.sys.sun.misc:1920 comp.sys.sun.admin:3261 comp.protocols.ppp:248 Newsgroups: comp.dcom.modems,comp.sys.sun.misc,comp.sys.sun.admin,comp.protocols.ppp Path: lysator.liu.se!isy!liuida!sunic!mcsun!fuug!anon From: an236@anon.penet.fi Subject: Re: sun serial >38400 (2nd try) Message-ID: <1993Jan14.011526.15672@fuug.fi> Sender: anon@fuug.fi (The Anon Administrator) Organization: Anonymous contact service X-Anonymously-To: comp.dcom.modems,comp.sys.sun.misc,comp.sys.sun.admin,comp.protocols.ppp References: <1993Jan6.213927.2788@ukw.uucp> <1igu0rINNsvt@grapevine.EBay.Sun.COM> <1993Jan7.194405.15843@colorado.edu> <1993Jan8.122742.3793@hemlock.cray.com> Date: Wed, 13 Jan 1993 19:30:46 GMT In article <5d72c2b5.1bc5b@pisa.citi.umich.edu> Jim Rees writes: >>>Huh? Since when did an interrupt every 13us or so become an unbearable >>>load? For well-designed and trim interrupt routines, this is nothing. I've >> >>Go ahead, write a trim interrupt routine & PPP stack, you'll >>be a hero. > >The ppp stack doesn't have to be trim, only the interrupt routine. > >The problem of missing interrupts is a real one. If your mtu is 1500, then >you have to catch every one of 1500 interrupts in a row. If you miss even >one, the packet is lost. While processing an interrupt in 13 us may be >easy, guaranteeing that you can get to it in time is not, at least in a >general purpose computer. Hmmn. Looks like the anon server has some bugs (-: (Eats lines below a line starting with any dashes) I meant to send this out a while ago, but a full news partition on the posting host caused the posting to get dumped on the floor, and I never got around to it again. Looks like from the above discussion that it's about time to unleash this out on the world ... Forwarded Article: ~Newsgroups: comp.dcom.modems,comp.sys.sun.misc,comp.sys.sun.admin,comp.protocols.ppp ~Subject: Re: Serial Port Hangs (SunOS 4.1.2) Summary: Patched zs_async.o ~References: <-t3nc_j.qualtrak@netcom.com> Followup-To: comp.sys.sun.misc Distribution: world Keywords: zs_async.o In article <-t3nc_j.qualtrak@netcom.com> jb@QualTrak.COM writes: >I'm using one of the serial ports on my SPARCstation IPC for bidirectional >communication, and have the port occasionally get itself in a snit and >not allow any outbound communications programs to open the port. i.e. >uucico fails with the generic open result, and tip tells me "all ports busy". > >I go though the drill of power cycling the modem ( a TB3000 ) but >invariably I have to reboot the system to get back access to the port. > >I've tried killing getty and all that to no avail. > >hangs the port when a ^S is received right before a detach. >... >Does anybody have a solution for this other than the reboot? This particular problem was addressed by one of the Sun patches; but I don't remember the number (100315 or 100358 or 100???). Since there are something like 3 or 4 different serial port related patches, try this one instead. It's a version of /usr/sys/sun4c/OBJ/zs_async.o (that drives the on-board CPU serial ports on SPARCstations) that was built from a 4.1.2 base (probably not much changed in 4.1.3) that incorporates the old known serial patches all into one binary, AND it adds a special hack to suck in all of the available characters from the FIFO if there are some left (i.e., basically adds a "do { original code } while (characters available)" to the "zsa_rxint()" routine, that's all). This is useful for things like PPP where you want to suck things in fast as you can at 38,400 baud, and it helps reduce the number of "zs0: silo overflow" messages that are all too familar to those of you doing high-speed asynch serial I/O ... I built in an absolute path into the uuencode "begin" line, so MAKE SURE TO BACK UP YOUR ORIGINAL /usr/sys/sun4c/OBJ/zs_async.o before uudecoding this if you decide to try it out. No warranties or guarantees, written or otherwise. But I used a kernel with this version for 6 months with no trouble at all, and it kept me from suffering from the original "Oh no, DTR didn't come back!" port lockout problem that is described above ... [ Addendum: 1/12/93 ] Since I originally composed this article, I have since obtained a SPARCstation class machine for home use. I was doing non-trivial UUCP downloads from this machine that I'm posting from down to my home machine, and seeing only around 52-53 Kb per minute, i.e. ~900 cps. My home machine is still running 4.1.1, for the moment anyway. I decided to put this kernel module in, and see what happened. Two things happened: (1) The module will not link on a 4.1.1 kernel by itself. It needs the "libprom.a" module from a 4.1.2/4.1.3 system, which I think lives in /usr/sys/sun4c itself. If you are running 4.1.1 and want to try this out, what you'll have to do is get yourself a copy of the 4.1.2/4.1.3 "libprom.a" module, as well as the newer version of /usr/sys/sun4c/conf/Makefile.src from the same 4.1.2/4.1.3 system. Place the libprom.a in /usr/sys/sun4c and move the original /usr/sys/sun4c/conf/Makefile.src to a backup name, and put the 4.1.2/4.1.3 version in its place. Then, what you need to do is to extract the strrchr module from /usr/lib/libc.a, via "ar xv /usr/lib/libc.a strrchr.o". Once you've extracted that, ADD it to the aforementioned "libprom.a" archive file, via "ar qv /usr/sys/sun4c/libprom.a strrchr.o". This needs to be done because "libprom.a" contains an unresolved reference to "strrchr()". Once you have done this, you can link a new kernel. (2) Once I'd built a new kernel and rebooted, I downloaded a 700 Kbyte file in 8.5 minutes. In a 2 minute stretch right before it finished, I saw download rates of 1433-1450 cps (84-85 Kb/minute). Compare that with 52-53 Kb/minute. Also, I only got *one* "zs1: silo overflow" message the whole time (8 minutes 31 seconds), even doing manual "sync"s during that time. This is not snake oil. I don't promise 50% speedups either (the machine I was talking to is usually heavily serial-port bound, as it has 4 TrailBlazer Plusses and many newsfeeds, and usually 3 or all of the 'Blazers are in use), but it should help. BTW, if you're sitting there pouting because the previous keeps saying "sun4c", do not fret. You can probably use this on a Sun-4, but I didn't test it. I don't think there is any "#ifdef sun4c" code in zs_async.c. But again, no warranties/guarantees, implied or otherwise. If you want to test it, just change the "4c" to a "4" on the "begin ... " line below. Finally, to keep the lawyers off my back. First, I'm flat broke, so you won't get anything anyways (-: Secondly, I look at this in much the same way as, say, the LBL folks distributing nit_if.o so that "traceroute"/"tcpdump" would work. It's just a few tiny changes to enable a useful feature. Last but not least, "What about patch 100513-02?". Yes, what about it? (-: That is a "Serial Port Jumbo Patch" and it *may* contain one or two of the patches contained herein, but it doesn't contain *all* of them, and more importantly, it doesn't contain the "do{ ... } while (characters waiting)" hack to zsa_rxint(). Begin uuencoded object file: begin 644 /usr/sys/sun4c/OBJ/zs_async.o M 0,!!P )" $H !I .W -B=X[\@D >_@$ "2 M$"" @*(__Q* 2X$" $( (KH0( 1 D!(@ $ "2![^ @) "#* M !NZ$" 0 $ "V$ (@*;__R* !6Z$" 0 $ "Z$ (@) M'2* FW+N !T$] ("0 @B@ %MR[@ ?I/0 "X)V!AMR[@ ;8&P!R I@ ; M,H YH0( ":$" !NA #8''X B1Z =G>._() 'OX! DA @@("B/_\2 M@ $N! @ !" "*Z$" $0 ) 2( ! D@>_@("0 @R@ ;NA @ $ M ! MA "("F__\B@ 5NA @ $ ! NA "("0 !TB@ )MR[@ M =!/0 " D ((H !;@ '9WCOZ 1 T (@ ("0 @R@ .UE8@%!$ #0 M B D2H@!),J( *0 @ )DRI@ I " E DA @ !4 #0(J UE8@%!L M #: V ERK@!)DJX *6 L ,F2L@ I8"P RZ T +\"=@#"$ #@!" (P M .($8 I H"0 $> G8#CF5B 4Z 4@ .A- !. D 4(H !O!6(!3L!V 0 MK!6@ NPG8!#P5B 4?___?I 0 !B D (,H ") 0 !U___^DD! &("0 @B M@ %,P ) 0 !T0@ .DA @@O(&8 " D 9(H "9(0( #T!V 0@(Z@ B* M 62$" D! '1" .2$"""D! '4 !6^4$" @@ )WCOZ"S+F 0LSY@ M$*X0 !D5 U *@ +H-X'^ IT *)H !+LO8 00@ #:NA __YDO8 *Z!T , MF2L@ AL #: V N@= #+H#0!WX!V ,@) '"* ,^Z$#__0 "$ "V M$ ($P )(28 "0$ <0 /HG(!A D! &^ $( " D 0 H "2, M # )& %0 -0"H 1 D!(@ $ "2$" 0 "< !2F%. $M Z M$ZP0 BV#>" Z = ("-( (R@ BV =@$$ K P"]@1\ O8$9 MP#=@0.I58 " ID 5 H !A$ #04B @*9 "#* 6X$" -?___D) 0 !>X M$ (DR\@$)(20!R2$F&@P"=@'-(G8"# )V PP#=@)L W8"C -V JP#=@+, G M8#1 -&D! '1" ". D ;@(L@ 2* !* D ;&P -H#8 #: V-DV@-@ M3-H38 * D -(H "H"0 !M D! %B4 #D!* IA @$+H0/_\0@ !] MYBRCM"* Z D ;Z = ("-( 0R@ *@) &T "0$ 6*P .H%8 "0 M$" 0NA __Q" &_0+6.T(H !I00( #2!T DA)@#-(G0 "4$" DA @@D M!,&0$ =U =@$("*H (R@ *U@= )00( .2$" 0 $N9 0 !V BB ((H M!M@'8!#6!T EA+@"-8G0 #8!V 0@(L@ C* : D :V@=@()H39 #:)V @ M@) &C* #'4!T W@=@(("+Z R@ MU = . '0 " C" ((H $N@'0 #B M!T @(Q@!"* ;D!T @) &R* OH!T Y = (",H (B@ LF@8@).97 M8 2 ID 3(H *)H&("3H!T DA A'*@5( 'H)T 0 ) 0 !V D ((K__ M?>@'0 #J!T D! ':H-?_[J)T E! @ $ !(*2$" $0 - "( "2$" $ MTBHCM$ "0$ 6$( '[H0/_^ BJ $(H #9H&("2 CF" ,H "IH&("07 M U@+@ )@0(!#8*N.T0 ) 0 !80@ 1NA ___ G8!3:)V 8N! '?@F M(#CX)B 4W@= ) 0 !:>"__^WB= . '0 "@%" "X"= $ #R-V $NA M&8''X B1Z =G>._H/H&(!2 D = H A1$ #04B TE=@!("B D2@ * M%0 -12H 7 UE+@ ("B@ L"@ $ 0 $ ! 0 $ #X M!V ,M! "-@'0 " BR ((H $N /("7:5V!,@) #32 <1 W@= ("+ MX. B@ *X \@)1$ "0$B 0 )(0(1R D ((K__\-@'0 #@#R E@(P@ M$"* W -V!,X@= )(0( 6B#'^_XB= .0/("6D#*#OE R@_]0O("5 MT <@$, W8$SH5V $*P .I58 " I0 5(H +-H'0 #L5V $+P .Y5X " MI8 7(H )MH'0 #R!T L@Y@ X"F8 (R@ +%P -('8"" BF0 ,H !Q< M #4!T @(JD "* !G:!T %P -8"X " D +(H "9(0( #8!V 0@(L@ M B* 62$" D! '1" .2$"""D! '4 _N4$" $0 ) 2( ! MDA A'("0 @R@ 2P"= -H'0 " BV #,H #L G0 ! 0 -X/("&2 M$" !G@O@[Y0+X/_4+R A0 - '(!! 0 , G0 # -V $0 ) ' M8!#B!V T@) $2* :X$" 0 - '8#3 )V TN! @ /@F(#CX)B 40 M ) 0 !U D! &H''X B!Z G>._H/H&(!30!F 4%0 - *( V HB", M&( N9,R( 23*F !D@) ")(*8 ^9*F #E!*@ -8# J HL ((H M)@# J MHO__ H K9@#( @0O__YF L@>- '0 "0$B 0T"= $ "0$ 9$( RP$ M ! 0 -('0 "P$ (@(I@$ * \! U = )0*O^_4)T UE=@ M3("0 L$@ & 0 $ XF0$ =$( ! $ ! +ZD! '4 "0$ 8 M0 ) 0 !D0@ "Q 0 )(0 !E D! &$ N^0$ =$( J@$ #8 M!F ,$R $E=@# "2 F #@*, "0*___03( 25D@)@!("C D"O__P$R )%9(" M8 J HP ) K__[!,@"162 F +@*, "0*__^@3" 5D@)@!8"C DBO__EDA M&900 !F2$ 80 IY 0 !T0@ "- 0 -H&8 S:"T @(M@ B* !?D!F , M0 $ #@!T N! "(",(( "@ # 0 , W8$Q 0 ) 0 !A M DA @ $ "0$ <^ 9@#.(/ "B#&#]H@Q@_^(O #D!F ,Y R (", MH $"@ / 0 $ ! N! ") F("1 DA @ $ "0$ @ )WCOZ"Q+B $DRX@ K & F3*F "%0 -0"H "P!@ )D * &, B(#32 M B 8@) "0* @! U (@,("0 H"@ $ 0 $ 3 (B P@__$ 0&0$ 8$( S^ ' MO_S8!@ F!,D !" ,K8)@ $R !'9("8&6 H@ ) K__^1,@!)62 F "@*( M"0*___$3( 25D@)@ X"B D"O__M$R $E9("8 2 H@ ) K__Z1,@"162 F ) M@*( "0*__^43( D5D@)@"H"B D"O__A$R )%9("8 N H@ ) K__W0$ 0 M@ "LX >__, GO_S0!L D@)@:X"B D"@ "3$R !'9("8&R H@ ) H A1,@ M 1V2 F!M@*( "0* '<3" 5D@)@!8"B D"@ V$P@ '9("8"2 H@ ) H M$1,( !V2 F!Z@*( "0* %T3" =D@)@>X"B D"@ !+$Q !'9("8&J H@ ) M(H @900( .>$" 9$( AMXGO_P? WE/@ .!6( 2 H\ 0(H @> 'O_PC M XE1@ .16( 2 I$ 2,H !N96( 1 0 !" '?@![_\I@S@?X"D MX (B@ -D! @&>I6( 2J#6!_@*5@ R* B0$" 9T%8@!-(6X 1 U!;@ M!A" &?0)[_\$( 9= GO_S2!J (T@)@#-("0 " D ),H 8. 'O_Q M^@8@#-@/8"6N$ (F!,@$)0+(/_4+V ET =@$$ "2$" %%0 -0"H 1 M GSJ@ 9\SX!Z4 \ *E3J@ I 2( ! DA &. & "0$ 7H!0@0$ M #@)@ $( 1> 'O_Q \ 8@#.(.("6X$ (HA1@$)0,8/_4+B ET 8@ M$$ "2$" %0 ) 0 !P0@ WX >__$ #P!B ,Y@X@);@0 BF#.#O ME S@_]0N("70!B 00 )(0( 5 D! '!" "G@![_\T :@"- "( Q M QT ( )(0 B0$ 80 !^)00( 0@ ?X >__- &H C0 B ,0 )] " M "2$ (D! &$ >Z4$" !$( %> 'O_S0!J (T (@#$ !W0 @ DA M") 0 !A 'DE! @ A" O@![_\DA @ $ =^0$ 80 ) $ #8!J ( MV ,@#- C #@![_\@) $"* >2$ :X";@$.0&H!2F$"""YBR@#9(0 !I M D! &8''X B!Z @(H@0 * .:$" FA @"("*(" B@ $@(H@!)H3 M8"" BB $(H !("*( *:$V "@(H@ @* ,! FA-@@('#X B0 -@(H@ M" * .:$" FA @0("*(" B@ $@(H@ IH38"" BB "(H !("*((":$V $ M@(H@@ * ,! FA-@ H'#X B0 -G>._H$ ! ^ 8@#.H&(""V M$ (J@U@#X"0 !4R@ (U%8@!)00( "2$" 0 !FY 0 !@0@ #6 0 !< M #64N K! @$X"B@ L"@ , 0 -A6( 0; VE-@ ("C T"@ & 0 M -X&("" B^" (H [00( "T$" !\@\@)2< #F!. L@Y@@H"0 !.Z$"! M H %;(68 B I6 $,H $] &(""N$"!#K! @%[06H("R%F! $( *ZX5X @0 M@ 5T 8@(+06H( 0@ 1LA9@0+06H$ 0@ .LA9@(!" RR%F!@T 8@()"* M(# "O__T@*(@$ *___2 HB @ K__]8"B(# BO__VM!:@P- &("" BB$ (H M#M8&("#2!B <@(I@$"* 34!B @K! @%]0&(""Z$"!!@(JB #* 36!B @ MNA=@ M8&("" BN! (H ZX0( 2N$" ,KA7 '=@&(" ;( @(L #2* 3> M#R MM!:@(-X/("WB#R LY@\@(9\KX B I8 3$H %:($0 _H#R C@*: %#* M !+:!@ T \@)("EP @R@ .V@8 -(/("6 ID ),H "MH& 7 EA+@ M )4M8 '4$H +@*1 "@* &L! V@8 )(0( &:$V$ VB8 $ #0!R 0 M@(H@ 1* !.Z$"/HNB=@ 8"0 !TD@ 0P"\@(T "0$ ;0 ) 0(&1 M 0 +80 C0!R 00 )(0( & BB !(K__\KHG8 ' +R CT <@$)00 M( ! DA @ ]X'(!"@$" 0X"O .('(!"D$" PY"Q .8'(!"2$" !YDS@ M M '(! E T$H@ M0'(!"D%* U$J@ I0-H/_4+R A0 - '(!"4#>#_ MU"\@)- '(!! DA @!)0.H/_4+R CT <@$$ "2$" #E Y@_]0O("70 M!R 00 )(0( 6K+6 !^A5 $J@0(%#H+R KT <@$)(0( M E! @4) 0 M( +0+R NT <@$)(0( Y E! @ I0/8/_4+R LT <@$$ "2$" ,NS]@ M")0/8/_4+R MT <@$$ "2$" -F! @ ]@O("[0!R 0DA @#D "4$" # MV@8 )H+?O_:)@ WE8@3("0 \$@ $ 0 $ *J0$ 80 ) 0 !N! MQ^ (@>@ )WCOZ#Z!B ,T 8 ("*($ B@ /U@8 $ ! T@]@);80 M B2"F#OE I@_]0O8"70!V 00 )(0( 5 D! &]8& "0$ 8E@K_ MGT 36)@ @ 0 .X'8 SZ M!V (@) '0* 22$ =0 ) 0 !M 0 .XF($CX-B!,V :@$-@+ M " BR $(H #.@& #Z!B!(N@=@ ?HF($CT!J 0^@]___HNH +F5B!,IB3@ M >8V($SH!@ J!4@@.@F ! D! &8''X B!Z V@(@#-H#8!#4"T M@(J@! * !4! U@H@3H"0 LB@ &PE(@3-(*($[2*V "$( #< J($Z MD !!( "@$ #8 B!(F ,@ =@B($C8"S__V"M@ L12($R$(* !Q#(@3('# MX @! G>._H/8&( RH'G__0 $ #Z#N EU@;@$)@0(!#8*L V@;@ M$*P0 C:"T D! &H"B( .:"V HN@]@@KH70 V1*B "&( $[@0 !T3 MDA)@ - " F!P@ 0 0@ (NA &1" :Z M%T 9$( !+H/0!00@ G 0 ", #B!& Z@8@.) O !V BB" H ZHD M0!7B)B XN"] '("/(( B@ /U@[@)14 #4 J @*5 "C: K6#N E0 M ) 0 !81 D!(@ $ "2$" 8$+__QP$ "8#V""E@K@?98*X/_6+N E MW@[@)9@+(/^>$\ ,E O@_]0NX"70!N 00 )(0( 5 D! %H''X B1 MZ =G>._H/H&(!CX!B 0T \ ("*( 0B@ BZE=@1-(/8$Z D )(H #-I7 M8$S4!T @(JA #* :8$" HU@]@3M8O( (0@ EP"]@3A" "/8+P @) M#22 !'J5V!$W@= ("+X1 R@ +J! @*/ '8$BP!B !\"=@2/ ./__P+R " MYE=@3*8DX $0@ 3YC=@3!" !'H+P K! @**H%8 'J-V!$["\ .Y.(# S M KA7@ >XN(##R!F @) &1* 4W M! @ 4 #T)N @@1- 'H$32 B 8TB>__-0'H$36 J 0UB>_^-@'O_C:"P VB^_ M]]X'O_S@"^!/X@^_]Z0<0!#D+[_VY@>__.@/O_?H+.!/Z@>_^*P0(!#L+4 M[@^_]H"-X( "@ S 0 / /O_> CB" $H +P$ #R![_\]%9@/K0&H 'T M-F ^]@>_^/@.X +X+[_U^@>_^) 0(##0+T T@>__-128 07 UE+@ ("B M@ L2@ > 0 !D #8 R @(L@0 * !$" !(0 -XD( 0@ / 0 !$ #0 B 0 $ C/_ $ MXB>_\,('O_"?P$ 0 !" 0! 0 $ #D![_\YE2@1*8$X 'F M-*!$Z >__.I5($*J!6 !ZC4@0NP'H$3N3: PKA7@ >XMH# Q \ 8@ ("0 M !@2@ ' 0 +(0( $U \B:@ $ ! @"^#_ MWB]@1IXCP!*>"^#_G@O@_Q" !3T+D /$( $M8O8$':#V!&FB- #)H+8/^ MHV#_.H "YH0( '2#V!&D@) $9(*8/_2+V!&DB) $)(*8/^2"F#_$( _0N M0 G:+V!!WE=@1)X#X '>-V!$T = ("*(@ R@ 3TDX@,-('8!R BF0 (H M"-@/8$?6#V DM@[@?X"FP LB@ *TDX@,-@/8$?:#V!&FB- #)H+8/^ HV" M*H #]H-P #23B P%0 )(20!;2+B PU *@ ("0 HR@ 'V@W !D "6 M$" !0 -8C( #:#< @(M@ 3*__Y7T#> "@!V <@(O@""* ";J#V!'X ]@1^(/8$:B)$ 0H@Q@_X"D8/TZ M@ =J! @ >@/8$:4$"#_J 4@ :@-(/_H+V!&J"4@ :@-(/^H#2#_K =@4-0M M@!36#V!&E@+@ 98*X/_6+V!&EB+@ 98*X/^6"N#_P"V "^ /8$:@!" !H P@ M_^ O8$:@)" !H P@_Z ,(/\0@ 5[BV $!" !/H+V!![ ]@1JPE@!6L#:#_ M@*6@_SJ R@$" !U ]@1I@'8%"4 J !E J@_]0O8$:4(J !E J@_Y0*H/\0 M@ #P"L "N O8$'B5V!$)P *($8 'B-V!$P#=@/.1.(#"D%* !Y"X@,.8$ MX " D 3,H $H".8" K J! @ 4 #H)6 $( #(".8"#0#V!&D"( M%H"*(/\B@ '@(Y@(-0/8$:4(J !E J@_]0O8$: CF @EA @, * !+6+H MF! @ =@O8$#:5V!$(0 )H#8 ':-V!$WDX@,)X3X '>+B PX 0@ ("0 ! 2 M@ %)0 *(0( % XB2@ (''X B!Z G>._H/ &(!A !'D! &("0 M @"@ $ 0 $ 20$" !@ M5V!$N <@ ;DO(!"> ^ !WC=@1+D_(!! D! &Q, #2 F %P -8" MX "3*F $E2I@ I("0 J5*J "D@) "I8"P FZ!V%0@*= "RJ__^':5V!$@) M'#*__] 7 @) &!* <5 U *@ !$ "0$B 0 )(0( "!Q^ ( M@>@ )WCOZ#Z!B ,^@=@$-16($* D *(H 0-!6(#[ -B!"U@] ("*X @R M@ 'V@8 -@&(!" BR "(H %. & #:!@ @(M@"#* #/05B ^W@8 )X3 MX C>)@ T 8@%("0 @"@ % 0 - "( Q DA @C4 "0$ 8$( M)=!6(#Z C" ((H '^@& #B!B @@(QH #* !OH!@ E! @ I(0((!___VC MD! &$ ! Y 8 +@0 B C*" (H !.8& # -B!,Y@8 ) 0 !RF M#/_O0 .8F #0!B 4@) ""* ;H!@ T (@#$ "2$"")Z 8 *@- M/_?H)@ T%8@/H"0 @B@ /Z@8@%/H/0 " CV" ,H "^H&(!3 -B ^T 8@ M%("0 @B@ &Z@8@%- "( Q DA @".H&(!2 D 5(H 0L N($?4#B!' MU@X@1I8BP J6"N#_ERK@$+LZX!"X$ =@) '"2 #K@5B!,@*<@$"2 22 M$" "NA @$)(0( ) D! ';00 B D :(H *-X.($= T 5@#("0 M @B@ >DA %:P&(%"N$" !LA @ >(&H!"Z)V !H@1@ >(FH!#F#B!'NR]@ M$*8$P!>F#.#_YBX@1Z8DP!FF#.#_I@S@_^8-@!.[/V 0@) '1*___'F+'__ MP@5@#)(0 !K" $ P@! )_ 0 #0!6 ,$( !]X.($= D 8@$$ "0 M$ :W@X@1[H/8/^> \ =G@O@_Q" />+B!'P"X@1N!6($R D 0-( #N8. M($#B!@ @(Q@@"* KF#B! 0 - &( CD!@ D! &*0,OW]___R"Y"8 M .8.($" D 3(H #M .($'H!@ @(T@ B* G +B! U%8@!!, "2$F ME J@?T "0$" #P"X@0- .($& D ((H #M0.($?2!@ @(I@ B* G M+B!!U%8@!!, "2$F E J@?T "0$" #P"X@0=0.($?P#B!&L"8 "K . M(/^!Q^ (@>@ $ H(REZ X !@ " P # M #__P@ ( M M M 7IS &QD=&5R;0!T=&-O;7!A= !ZT (< 6X;___>0 (C 7X;___=T M (E +H;___=L (I /X;___=< (O (;___:P )8 6X;___:@ )L +X;___90 )N >(;___9( ) MS )H;___8T *; 6X;___64 *C +H;___5T *F 6(;___5H M *H +X;___5@ *T +H;___4P *X 6(;___4@ *Z +X;_ M__48 *] >8;___4, +! >(;___3\ +( )H;___3@ +. M6X;___3( +5 +X;___2L +7 >(;___2D +; 6X;___24 + MB +X;___1X +D >(;___1P +V >(;___0H +Z >(;___08 M ," ! ( L< ,$ ! ( OH ,& ! ( OH ,( ! ( M OH ,* ! ( OH ,, ! ( OH ,. ! ( I8 ,0 M! ( E$ ,2 ! ( L< ,4 ! ( E@ ,6 ! ( OH , M8 ! ( LX ,: ! ( L< ,< ! ( N\ ,> ! ( GD M ,@ ! ( ML ,H ,8@ ,I ,8L ,^ >(;_ M__,( -% 08;___+L -/ 8;__^\4 M 1D 6X;__^YP 1S 0H@ 1T 0HL 1Z 9(@ M 1[ 9(L 2% !@@ "1P 2& !@L "1P 37 M!@@ "1$ 38 !@L "1$ 3B ,(;__^QX 3K +X;__^Q4 3 MM #8;__^Q, 3O 6X;__^Q$ 3S ,(;__^PT 3[ 7X;__^P4 M 4' !@@ "1$ 4* !@L "1$ 4. 7X;__^O( 43 7X;_ M_^NT 48 7X;__^N@ 4= 7X;__^N, 4E 7X;__^ML 4K M7X;__^M4 4P 7X;__^M 4V 7X;__^LH 4\ 7X;__^L0 5 M' +X;__^KD 51 6X;__^J\ 59 7X;__^J< 5; +X;__^J4 M 5E +H;__^IL 5P 6X;__^I 6# "8;__^GT 68 >(;_ M_^F@ 6A 7X;__^E\ 6C 4(@ 6D 4(L 6E M! @ !4L 6J ! L !4L 6K (8;__^E4 6P >(;__^E 6 MU ! @ !4L 6W ! L !4L 6Y (8;__^D< 6^ >(;__^D( M 7+ 5X;__^C4 74 5X;__^BP 76 6X;__^BH 7K +X;_ M_^A4 8- 6X;__^?, 8> ! @ !B, 8? ! L !B, 8C M! ( !B< 8D ! ( !BD 8E ! ( !BL 8F ! ( !BT 8 MO .H@ 8P .HL 8[ !@@ "1L 8\ !@L "1L M 9 +X;__^< 9" 18@ 9# 18L 9$ 6H;_ M_^;P 92 7X;__^:X 94 +X;__^:P :$ 'H@ :' M'HL :* 'H@ :, :8;__^70 :- 'HL : MZ 9(@ :[ 9(L :_ *H@ ; *HL M ;$ =(@ ;% =(L ;* 5(@ ;+ 5(L M ;. 8X@ ;/ 8XL ;0 ?X;__^3 ;9 M"H;__^2< ;G 'H@ ;H 'HL ;M 'H@ ; MN 'HL ;O :8;__^1$ <( ,(;__^/@ == 'H@ M =@ 'HL =D 'H@ =F :8;__^)H =G 'HL M =R ,(;__^(X ?# 'H@ ?* 'HL ?. M'H@ ?0 :8;__^# ?1 'HL ?D 'H@ ? MJ 'HL ?M 'H@ ?O :8;__^!$ ?P 'HL M ?_ ,8@ @ ,8L @! BX@ @" BXL M @# ,8L @0 BX@ @1 +8;__]^\ @? M+X;__]^$ @A BX@ @B BXL @C ,8@ @ MD ,8L @Q ,8@ @T !@@ "1D @U !@L "1D M @V ! @ !_X @W ! L !_X @X (8;__]\@ A8 =X;_ M_]Z@ A: H;__]Z8 AI 6X;__]Y< AT +X;__]XP A[ M=X;__]X4 B. =X;__]W( BC 1(;__]UT BI 38;__]U< C M* 0(;__]S8 C, >(;__]S0 C= *(;__]R, CM !@@ "41 M CN !@L "41 CP ?8;__]Q C\ !@@ "4F C] !@L M "4F C_ ?8;__]P$ 6 !@( "3X 9 )H( ; M! ( ,L < ! ( ;$ > !@( "1T @ ! ( CL ME !@( "1T G !@( "3[ H !@( "4" J !@( "2$ M K !@( "2@ N !@( "2\ O ! ( %8 P ! ( M !E@ Q ! ( !I R ! ( !O, S ! ( !VX T M! ( !_, ! $ $ "0$ $ $0$ M&0$ $ )@$ $ + $ $ -@$ ( M 0 $ $ 2@$ $ 5 $ 6@$ M :@$ $ 0$ !?P$ $ !B $ M !CP$ " !E@$ $ !H0$ $0 !K $ M " !M@$ !O $ !P@$ ! MR $ !T0$ !V@0 ;$ !XP0 SD M ![ 0 !&, !]0< "1D !_@0 !4L "!P0 M !60 "$ 8 "2@ "&08 "2$ "(@$ ( "* $ M $ "+@$ $ ". $ $ "0@$ $ " M30$ "7@$ ";P$ "@ $ " M "B@$ "GP$ "IP$ $ "K@$ M $ "O0< "3< "R@0 "UP0 "#P "Y 0 M !_, "\0$ ! "^0$ $ # 0$ # M"0$ $ #$ $ $ #%P$ $ #&P$ $ M #(P$ $ #*P0 !#\ #,P$ #/@$ M #5P$ #< $ #=P$ #?P$ M ! #A@$ #C0$ #E $ ! # MH $ $ #J@0 !>\ #M $ #O@8 "1T M #R $ #T@$ $ #W0$ #Y $ M " #[ $ #]P$ $#0$ $ $%@$ M , $'P$ $*@$ $ $+@$ +T $ M-P$ $0 < "1P $3@0 "L $7 $ $ M $9 $ " $;0$ $ $=0$ $@ $ M $ $C $ $F $ $L@$ ( $M@$ M $O@$ $QP$ $SP$ $ $ MUP$ $ $WP$ ! $YP$ $[ 8 "0@ M $] $ $_ $ %! $ %#P0 M R, %&@< "1$ %)00 !VX %, 0 !O, %.P0 M !I %1@0 !E@ %408 "2\ %7 < "1L % M9P$ $ %< $ %>%]P:'H 7W=A;G1I;@!?=V%K975P M %]H;W-T;F%M96QE;@!?9FEL90!?8G5F86QL;V, 7V)O;W1T:6UE %]B=69C M:&%I;@!?8F-L;FQIG-M8W1L M %]ZG-W<'5T %]P:61H87-H %]P:'ES;65M %]P M:'ES;6%X %]FG)E860 7WIS86QI;F4 M7WIS8VQOG-O<'-?87-Y;F, 7WIS7VES7W-T9&EN %]ZG-A M7W-O9G1I;G0 7V-UG, 7VMA9&)?=V%N= !?<')O M;5]G971?G-R97-U;64 7WIS>G=R:71E %]ZG-O<&EN:70 7W!R;V-.4%)/0P!?=75N:7@ 7VMB9&1E=@!?G-S;V9T %]QG-B,3,T7W=E:7)D %]Z M&UE;0!?8V]NG-R96EO8W1L %]ZG-A7W)X:6YT %]Z'-I;G0 7WIS85]T>&EN= !?>G-M;V1L:7-T %]Z :