home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / dcom / modems / 20141 < prev    next >
Encoding:
Internet Message Format  |  1993-01-28  |  13.0 KB

  1. Path: sparky!uunet!spool.mu.edu!darwin.sura.net!udel!intercon!psinntp!sunic!news.funet.fi!fuug!kiae!isknews!izhmar!newsserv
  2. From: Paul O. Lazarev <paul@ars.udmurtia.su>
  3. Newsgroups: comp.dcom.modems
  4. Subject: modem stuff (was Re: RS-232 and DTR when system dies)
  5. Date: Thu, 28 Jan 93 17:25:48 +0400
  6. Distribution: world
  7. Organization: Scientific & Production Firm ARSENAL
  8. Message-ID: <AASxzPhCZ7@ars.udmurtia.su>
  9. Sender: news-service@izhmark.udmurtia.su
  10. Reply-To: paul@ars.udmurtia.su
  11. References: <1jp7ssINN52g@smurf.sub.org>
  12. Lines: 215
  13.  
  14.   This opus describe small library, what work with modems.
  15.  
  16.   After some attempts of using standard serial port DOS
  17. routines I find, what DOS routines is very silly here,
  18. and decide, like many communication programs do, use FOSSIL
  19. driver to control port on physical level.
  20.  
  21.   Really, the FOSSIL drivers work better, especially with
  22. multitasker and network. Moreover, one can control multyport
  23. cards. Some part (~20%) of fossil interface I take from UUPC.
  24.  
  25.   Based on FOSSIL interface, I wrote some modules to work with
  26. modem. This is "caller", or callup module to call (initialization,
  27. dial number and wait response), "answer", or callin (initialization,
  28. wait ring, and answer), and sipmle terminal program(recieve chars from
  29. modem, send it to stdout, test keyboard, send chars to modem).
  30.  
  31.   Main difficulty was with response modem code monitoring, but now
  32. all works correctly. One work with word response code (ATV1 command),
  33. not with digital (one byte, ATV0 command)! The terminal program with
  34. callup was tested and work good by calling some BBS (without file transfer,
  35. of course). All modules except terminal use only Unix-compatable functions,
  36. without anything interrupt handler. Terminal use kbhit() to check key press
  37. and getch() to get key code from Borland C lib.
  38.  
  39.    That's all,  Paul.
  40.  
  41. begin 666 modem.zip
  42. M4$L#!!0``(`(``:(/!JZTT9&CP(``#\%```(````0T%,3$E.+D-M4^]OVC`0
  43. M_5PD_H=KJI4`49N0_D!D^<!*IR%!M:E=-6U4D><X8#6QD>VL'ZK^[[,3DAI4
  44. M$:'GNW?O[A*_DY1DE!%83N=WW<X)93@O4P).P5-2G&V<;J?;H4Q!@2AS#4!B
  45. MC3W`&R1@H/&_/T_];N>U)@FB$JP+/4@Y(U&W4S))UXRDD'$I:9YLN5`Z+)4H
  46. ML=8T/9(4*51#G?DZ7]S"@)5Y9!HW>K&OCSH89WQ+F.MHZ'B.&#K]BI9MA>Z>
  47. MN5*E1`C/6;&;Z6(QOP,J`<%6\+5`A1Y!U&T`,?E"Q!FLV*K;>21"4LX`*?@D
  48. MS;-BCI<D#_/E;9)H,)L^:%`WHIE;[0^?801Z;0!X/6S^4Z(UF<!N`FMO(]R/
  49. MS#LJ!8,@>JM&?\_'2''J5J\T>#+]:`;N<4,01!*F3!=>*L_6[>M!CG:JHZ;,
  50. MO*<$\Z(IL/C>Q=CWO=ZRY_7N>E[@]68]6R*L-JT_/V54^8E4>L-U[$P?OOU>
  51. M"2>RLX&5O3U,CJSDCU\7C\'I37`Z&RT/>:'%^P*/`=P'?AR,X?XZ#GU8^"'8
  52. M%:G@V[9@.!SJL?;2%.66WNS[\<@?AU>7-D<0N>5,DD31@O!2Q1<1P/E`$LQ9
  53. M*@?G>UH-Y\K_F(21$)2().=2M>31Q]P71%5B1FN)H5_+PF5!&;PS[8NQ;Y[=
  54. M"D8$\Y*I.&B#>FV"BKC^YFW4&*=Q5,:%:[P9^]%QY='J%K]65[FU;XQ1GE/F
  55. MPFGM%W,935Z^4(4W;LO;60`J@2.,)`%_HI$.((DI3101Q9Z*257M@]WAKQ[X
  56. M.6JJPTF#KEITW:+QY*`F)1DJ<S4YT*U'>C-`__$LVW#^O#<&SKDDMCWV_*0)
  57. M6<5P69F;T\X9S=HZ4GG7_/X#4$L#!!0``(`(``*(/!HIQ9X#N@(``(,%```(
  58. M````0T%,3%50+D-M5&UOFS`0_MQ(^0]7JA62H!:2KHW"^-`UG58IC3KU1=-&
  59. MA1PPB36PD6WVHJK_?;8)E$25HO#X[KE[SA>>'*4X(Q3#[>7-LM\[(C3)JQ2#
  60. M5;`4%R<;J]_K]PB54"!"'0T07R<N)!O$8:CP[Y_/@W[OI29Q+.-$%;J0,HJ#
  61. M?J^B@JPI3B%C0I`\+AF7*BPDKQ+54VO$*9*HABKSY69Q#4-:Y8$6;OJ%GCJJ
  62. M8)BQ$E/'4M!R+3ZR!H:6E5RI9XZ0*>;<M2)Z=;E8/-X!$8"@Y&S-4:%&X)"@
  63. M/"=T#7+#6;7>U+(G$-&HWWO"7!!&`4GX(/0GHI8;QP\WM]=QK,#\\D&!6I%D
  64. MCED$?((QJ/L#P,O^%(\"K?$,MJ-T%@`I07E,JV*%N=(8!'IO%:?@!Z_F.F_4
  65. M$$E&'+-F_UE+DPR<PX;`L<!4:D%62;<K,5`S'6R[CILRO;LX8453T.&[9U//
  66. M<^VE[4Y=W[7G=K?!Q%RY7A6A1'JQD.JJZ]"Z?/CZ(^)6T,WZG>SU?G+<27[[
  67. M?O;D'U_YQ_/Q[3YOTN%]ABA:^O#DP[WOA?X4[B_"B0<+;P+=LI2SLJT:C49J
  68. MMIVTWODVK1X)TGLS#R4QO[-<L^3Q\\"U5-F@K>-8E(P*'$M28%;)\"P`.!T*
  69. MG#":BN'I3O^&<^Z]3TH0YP3S.&="MN2/[W.[;\&N>^K\"E5IJ'^VMRLBB59$
  70. MBG#:AH1DI0GY;:A$G,A_H;VTV]!?1D-[;G>J.$9%6+\F;53[KS%FQKBC+1YZ
  71. MP:&QNO'`BS%"^R\0:K=5I0/'I@'HI>J\^$-DLG%:WM9`8!H<)$A@\&8*J0`2
  72. M"2&QQ+S8Z:)31M[?'E9JX%]!4SV9->B\11<MFL[V:E*<H2J7L[V^]4BO&J@O
  73. M1C>,_=J9(LF9P%U#[3A0$3+#<&B5Z]/63<VM5<2XO=_[#U!+`P04``"`"`!&
  74. M63L:I@4&D9````#-`0``!@```$1%1E,N2)7/30K",!`%X+W@'09R`3V"B[IR
  75. MY<\!K)FT`S*!M$5Z^V822Q*S*))%>6_F(ZDBPQH-3,3C?@>@?"#&D&'B@3I&
  76. M#6&HD#49_UW)T%M7HM`D]EVHX*M_NL))D5@<5^IMN2N4%$G%\:]JYQ%S)'GK
  77. MIH]U.C>2MW_JK^?)6>7]^FAR*!F.]0WGT^56+(8"#FES`5!+`P04``"`"`!L
  78. M;3H:T!KWJZ$*``#W+```"````$9/4U-)3"Y#[5IM4]M($OZL5/$?&E]!;%9@
  79. M`YLLB^-<.5@FOA";LD5@"SB5+(^P@BVYI!$X2_+?;WIF).O-0`BYNP])I2AK
  80. MNJ>[GYZ>GIZ7?SBN-0E'!-X$=.1X6^.W*R\6;=29DDQ3CL>V7#K)M!'?=[-\
  81. M3/[$&>8:?<>]RC2.O("W)-LLS\UJ+ME>$#A,=0E9;SQG!-0WW6#J4&,6^E>D
  82. M#*$;.%<N&4&EOO+"<2FXY-80W0SZ94:@`7K_1*NC`"1+4D!-&@;EN+<=&#//
  83. MIY65%W<K+Y206>)"7SL<@./ZY"I0P0LI_N!R%-&X-=XRQTQ^>V`<:KHQT)OZ
  84. MR:"^(,^W1G-&EJ*1X!,:^BZ4F52Z][K<[@T&G2,5UB,EZU)+!<%\BTR.(5MC
  85. MT\^9K`(V@_54T_5^LSOXV-&-@_?-?L)ZQC%A'-;/!"1B8QFD#49FJ`#N\`^@
  86. M#G#JXK?M^:BU48,Z,+9SYY+]<'[[K2+(D'%:+%CP5J04:;X0FC?/]6Y-A_X\
  87. MCW=[I\V._M_QN4\LXMR0XAAZ*I*^=J!U/FG9T%EJ\T,6)PV>$7)MF&-BCI[-
  88. MW&--^V`TWVO-UG,:&UOG,UN-X<2SK@M")FZY-5U*1E&(#T/[,6B4@/JA16'`
  89. MZ0&YNG=0FBWCW5'OX,.]*&."A01A%=<DA&^1`,4=&P/ML(Q6IH4Y@MAKMR-B
  90. M<CZAY^;+7<=^22UY)][Z#B7_!UX\[7=T[7_@QE3T?9\/^?H8$&I/O-L"W^&D
  91. MFGONHQP5]YZ:P;7TD`UET5U1L#6=`<YZW:_)U,:^40Z9!"3=X4!GG?3!$J^W
  92. MCWJGQD&OJ_=[1_F\R*5\A=J\77M@3!XW<U=>8!G@6"#C@HEP7-N##;@BE/]\
  93. M4NI9%F9*L3;\<T]9T>FV>_>B+8JT=12Z/-8*R#Q\`^=OXMEE3H5-V*T#5#?@
  94. MO6E=PWNMKZVNKL+$#"CL@NMAI45&9`0;U<CECP[719BO2_1R/!(5VLPG`7%I
  95. MN=TYTG@I0,QI(@$\83SBX94ZE9"K"PR?W#BL!_LU->>VJR(CNH(W>?@+N7FJ
  96. M&8;V^<ZKUY>)X40A(\_%2G-S.V;<"!;3AE-7D<QGCX2.K8)']FXWCP:B4%66
  97. M%K'Y&.ET.[K1ZG<^:?<OP3%AB`0^@:2+6)LIVI3J!GPTKPD$X]`GB9&]?S))
  98. MF"EQJ]RX0>>PV]1/^AH"YX6<4H`M`J[DT?6.6EF$C[%(>=@@88QBSWPFSRY'
  99. M`5:Z<`],]R4%RW-=8E&@'@A5@)Z$M=&%>_%'28U<"T)=9E`5Y1L'S,-:B0*+
  100. M08I,&F\-)W5!XM&7)HWKTJ5QSS=H_,?F6;LK#<_9G9XV^_#1G#O3<`KMT+6H
  101. MX[F-M3.&Q8-@:DXF"PQ<O,"0@?!-YB3;8\;%"3&:=])X/D\8'6F;;YUA:/N2
  102. MXJ4H7D1!5++)O#&="30:4..8JE5%&8975U\,28AC_F&P?WFA'PW3V`Q`;.^`
  103. MB=L'(4U8PW3!^4&OW]<.=*UUR=U0D6#CQ2IO/!<A`CUGBM!ZLQ:JZ/*V"VMG
  104. M8Q78]Q8VK6WMU=K!A5M247)1LI$ZIN;G&^+'7XZ;^')&#*3P^$..<-Q92#%+
  105. MV<3?A[41+Y!$-BPB1(8I^93']<G,%`U$.D+B4MV;$=>PO.D#N3K1,C3#J'B;
  106. MF;Y#O_#9@O]4GDY-:@X=&HBB):#>3'SQ#D^M891J%3,[JHZ66PKS):-ZC%/;
  107. M<1VZ#\GIWU@+X5WSI-7`L3UN]COZ7XTU2X564V\VUABD@=X[YC_.>EU&20Z\
  108. M<(%`+E&K":0+E`B0FU6M*M)@:$#2[F22S*;3?V86!=A?DD>_9Z40L_;^M+O:
  109. M*$[X?+LN_`N1@TL=UZ&..7'^-C$WR=0:`O%]ST>G)=-,8F<1KQ0\M2J%8M/I
  110. M.H3>AXQ`UE'6HS7Q%=PZU!I#&5TLTJME!@1V]WZOU4[V5Z+Z]2M?07@KSTI#
  111. MII,'%N?>_G.G@)NW%G#_^;J`&1L+>'_?*^#%QC3OB-AF.*&<4<;,CC25B]DI
  112. M0K.S!$PAEF(H14B*@>P6N3/+^2TQ)&4Q3<28)/!Q:2^[+[/"NKUC<1"14?RR
  113. MEV/MM5I%C%J.4?ND=>^Q,)K`E2(3]_;CO`8)D7A<LE=?D-(V_+&\TQ]+.[U>
  114. MWNGUTDZOEG=Z5=1)%NGQ?(E25O'X;.=<WM4P/1:X?2?+JI_V\JR1^ER1.-!T
  115. M`[-R(GDE=HP/Y+K'5+<18,S,Q;'8$G$S3U6SQ;$U3U8VV:"2N_=HN9A7BE(^
  116. M'Z,/\68[#_N'M\<K\5HO+4WLSYB-?$WZL=5>$6M[\4HOUO=[E_=8.!<;C7,B
  117. MK]^[IA_W^OICU_(GK.&9L/FUKJS\6E=^K2N_UI5,CBU(L?P,UYIX`7G$ANI)
  118. M]R"%^X665KAC2#7_*-YL0BY=N)E*G>,>K>;*=3E`W#<CZAN>^]0K(25S?9S>
  119. M%>0CH*7W,6R[A]GCJ8D\_FYV!AIR)<EY[SS&/=6J$DP(F96WTP?Z'+!M/Q7Q
  120. MO8`?P)N#>]0[U?H1W!^+_65P^:SDL1^=SOXTL`.MVS+>];5F\H9G`7:@-_MZ
  121. MCO[4<NK[M?>.GT?YPK<^L?`*6#CGV2Y53_J'FM'I'I\D"]$?M#0SD,]K:^]$
  122. M?RYCQ5'_U!N1J>&3()S0<B@>!XQ5"&5I.K<879@LKPSBJX3+1@E*3!B>K[!6
  123. M>)-@QR52KA!)!0:2SZTQ7D&@B-IEP\+S8LG*FB+CJAM<R*GI4#"'S'3`YPP&
  124. MOOB!@%A@NE@]$^N:LY&YPZQS+2*L<]SHR8`\-.1,'9O)"/CQ.#))G9O;0L(D
  125. M($P,]4U+TFW?F\KNJ&UE<;M)$^(`3R\#,@)M<`#EVGQ[6(%K\@5&(;X.`;27
  126. M&:_&O1GGYDZ]2,`!]2>;9US&7D6%!?NN8&].)LP.CXZ)+\X_A87X+LJ%6X=1
  127. MAPR!2<EH:^4%WGY@"N).*WYZPU^+"//$^#(=^&U0)NC*<;FOZ\EF*_1]XM($
  128. M(8J7NECD)&MY?2%`WJ[;GE^NUZ,'+G<XOK*0XC<%J7=-T3R!]?A%`&YKC.:G
  129. M9N>H^>Y('L_)T4B]#4DD3?1`0D7B148LG]]JP:.D24D"7=(/8O5+*(*R-6Y<
  130. M$6J5^<A4*JL-K=>NI(RY'HX=6JYPS7=<O>PS+LM#0^1B;0T>4"NI8T0>/HJ,
  131. MV`3?7@6J51%$F0Z[O,.WE`DCQ[8YFB08-3%N\+:1"`]E4?%R$4)8/(6P^=>T
  132. M?>9I*Q^8/712$3\W8\S!^256;"!.)"(4DD4^2;N3F1_S[W:M=JE"<+Z+"9D_
  133. M45.ML8I7).IGUB(>JN%GH\9DRHQ=4_'M6A1-=7#>R*MW?`4"Z^NPBCT2=/FR
  134. M3:08#/5%5HI01)%6EVD$HNV4-8ZGSEVT,]K<%GNT?$V.1R-8C/LDF'DN8Y5R
  135. MQ=D\E-?PC8E5N7!+BYV<NG!EP@HE'=U2\<XRQ1A&442D8RA6R@>5$;Y/^<Y"
  136. M^>XRY3($?XK^W7A$HDF_9&BD0'%B<.&_W&?V6;,OY4`M_?MCJ5)/YX^8T4TQ
  137. M_JN`46ZA`?8#62]`<+Y]V:AE.:5YN7N5M:"D!E$2QQAV9-41?__&Q<6/,\N?
  138. MHZ>9?$I]OF1ZH?Z9AS&_36(4]A_C75TP5=*W1CC;&@LJU--)N2:^O\G'F\EF
  139. M]OD?4$L#!!0``(`(`-EH.AK\A7[Z8P4``*<0```(````1D]34TE,+DBE5EUO
  140. MHT84?7:D_(=1]L6)HB[8<391T@=LQ@DR!FO`R:YVJQ&QAYC&!@O&2=JJ_[US
  141. M!W`8P-JJC;0KSSGWGOLYP*<HC)<L1'3L>IYETWMZ?/1)`%',%$R@4;Q8[Y8,
  142. MG0@Z^V5UHD!)@12NN2?2WO4+Z5O"'M6O>YJ&-`7K7UT(K*O/;V\'IRJC:1W4
  143. M[36)2TGTFX0.\JA[T61Z%Y(9-)F+*\E<-IGK2\E\*1B%<]R906J5N*8)^=[>
  144. M]E4=_(`=H=//"=7%P9[OSFI"_J,KT:Y^>]NKNXSN#3*H.0!VB?0&]@7U&M@5
  145. MZM<4?6(XWM3RZ5?7J8OX'B6^UU%E"!YAZP&#?>>J)D8,R\/4]$E-R78?,9&X
  146. M5O/P?(/X=$BP,:GY0!,*HN$E4).:AF]0X\&P;&-H8Z2]:ZJ`-!K.QV,1VGW`
  147. M9"RR`"NUG'W]#;E>;2ZE82&)IS/_FS"[4,W,D8FTKU=YQMLT>-X$:!LL7KKZ
  148. M*3K[?'R4\72WX"C,:!2'"?KK^*B3K9*4(T%DT9\WXKR+L^@Y9DNT6`4IV@2_
  149. MO[*T!8_B5CP4_\ZB)8OYS5X[>MJ%:>48O`;1^N.<J'2RIU7E["U:\E4+OF+1
  150. M\XHWB:=@MQ3HWS>U5N2=J%\IE_A(>Q^/:SM([!&"-H\':J,]Z\XQ_#F!4>G7
  151. M@_K3QL,^'1ISLP,C;Q\D7`AP;EUO2<(6*.R=4/5\$=8#W;YZG6V36@YL$A$"
  152. MI"-R;O`F5BT&ZN[X!.(Z=QC4+]6LK2DF=&808^I!7E\4=C8G=YBZ<W\V]\'W
  153. MNH6UG((TVMOAN(^&!2,8JLX83ZAQCPW9RI'"P96B(]?QB6M#4K79W4_VZL#J
  154. MM3G(BL9S9P3"NEIN?GEM=S21Y)5"/A++QQ56K=;#CID_."2I5@L#M)RQ*RFU
  155. MT.ID@%5+528'M%E;N*GQ=>P@\5>)`B:?S]`F6;(-2EFV6W.T$`<DW2(>)7%6
  156. MNPM3U\13ZDZJ#_D<&[F.@T=^]3&9$\1R[JK/^AQU7#HR"+%$MI4]S3E,B$M0
  157. M93V5",6;M+*;>T73,FS?=3"J3"LGAW/O&ZHLY=[%<+Q'D4-E@A]90^*5X:E9
  158. MR+=V=6=46KZZ]48S2EJ^O_5&5X:&26U+%*`WFF*[[FQHC"9(;S2FI*@['B.]
  159. MT9@R9E_3*,$V0M571[.UTJ;72*U:=V[22+%:>VYR<(90?VXRJ*Z7.RF&7VF[
  160. MP+R9,<*HW\L_]T)!H*EA.<='\CE^)A>8Y@M,88&___8KO+E.W,F/]$=\<@Z_
  161. MB\@?`$SXX^2XJ-C'#TRFTE!`T"3%L5R[#Q#633')UTP-KL0OQ:&]310ZVD2A
  162. MB4VTKVF?";;;\VYG(&@[`X';&0BN,B?B/_DR9>N,'1\AA-@[9VF,#DY)&L?+
  163. M*#P^BF*.WH)(,,*XNX-CF-%MDO)S!`<>;5BRXZ<W%=.,IU'\W!U;-D9GXL""
  164. MS3E27?/0N6'V_3>184?1*RW`!+2;J79W$ENLA'3QQ?,.V8/U:Q(M$4^#.-N(
  165. M=+:[])EUT?XCH\PU3+(L6HML`[[+NGNZR+&TVLOD#:A9%7DN&M9%#P[8EV4I
  166. M+G$"W?MIB)0M6/3*VO,IC;:,O=!@Q8)EJ\D>2X4%?5HGBY>6N'OD+8@Y6Y:Y
  167. M/^U"1>,MC3C[CR)R4AGCX3IY:W&&4MZ3&"QK7\!GZ)EQ^?-@#XKY;E.6L9C7
  168. MU_&`4[)E,5TDFY^85Q#X7"VJV@9IQ/\X/NH@^7<.@LN`!T\1S_)3QI,MG`J'
  169. MHC;9A<4ZR=B_"+UW6/*4)G%K^1]\&!XV>!(!7F3$ZN7<TRE;P)[EU^>@2.V:
  170. M'>IKQCB%3OV_OA8/B;*G^:GL*80J'US_`%!+`P04``"`"``0@#P:L^6;R)4&
  171. M``"))P``!P```$U/1$5-+D/M6?]/XS@6_[F5^C\\<F+4E$!30+MS]#(K%M`L
  172. MFH5*P&GF-(RB-'&)(;4KQQF&1?SOYV<G;9I^&9CE6+37@IK&?N^3S_MB^\7^
  173. M!V5ADD4$K"&/R'`KMAIU_*-,0A@D239J0BI%%DK0`GX4R`!:^K?=J-\;24&D
  174. M'ZHFAW8;]3`.!+244A>!VBTX06&@C$H:)/2/0%+.H-5NU`WB=,<>*@U&0L$.
  175. MFEI@\YW"(L'0L0X%'\'AQ=DELVP%'DGA\\%8:L#3E";^B`N)O6E"R*C9P9\+
  176. MX,Z)A"H<6X!&O=N`2E^I4G95R+`L<6;%39,O2)HEQBV-.@`X'>>-4D>P=@O.
  177. M"8N,1ZN.,8\`<-%#"YFS:`_64\6\((`H;LX/GR%%P-+A#.49GK.:"Y[Y,6"2
  178. MJ*?V/N3^6N"47/[Q?LDE5?N(LY3XD@X)S^386^DME6$,36IK^7O]'08I@<W.
  179. M7NEFQ]P`9F,F&.QV2YW;1><5EQSF)9Z1?AC;#Q6#P+ID[WD^#,!8`6C%WGIJ
  180. M.3E7JM343_6/%\?J?;!LSW/M,J='QK_S]/AW?CC^9<U5_%]%_+>?'O_M'XY_
  181. M67,5_]<0_Z='?^>'HU_67$7_!:)_J!X,HY@S`BP;]HF`-X#.A(/>Z>G1P85&
  182. M7I8""%!)@4@U_5`&5!2_DP`YP_]-%F@J?Z<,R+UEV6N>J^G?8_P;]6.`B(0T
  183. M(B#C0`(CWPP6T%3=D`@4R5LN;D#9'C?J5DJ$3ADN)*0C%+C.4DD'--3<+0?Z
  184. MF:)V9]BEBL@5XX*`-4\8`A9!,)!$*.0BXSZICP7%,#1D0LXD91DQ5#AKU#6<
  185. M`VDP)*!X5Z8NC-Q6HWX2W/6)`W<\$[FWM'Y$!P,B")-*GRN[E:DF`6YIDH"@
  186. M5[%4RICT[19&:H$OX9\_N:YE@_%H+0]V2J3?#[*H&K39%%0Z8#Z.AAK+C`)!
  187. MY=WX%E]T^E2F9?DQ.!]AEPV_@`M[T`&3/$"2E"SDO?OVV7@CU(OQWMY]-MX(
  188. M]6*\.]O/QANA7HSWSK/1WGE!UNZKIOW**(%>V_&:LW)UQT.C/M?'O_[[_#^3
  189. M)62L]'-W@?QI#PZ/]W^_Z)T>S5'[:8G:P?[9V?'1V1RMG45:1V=GO7D*NTL>
  190. MLW]Z_G'N4]X62OE]1]<8ZF9/?V-3L=>D>A[,7A4NJ)QMQIS?Y.M-,P[850K9
  191. MR#8+RE=.(^`,);ZWG57>O5I8"1Q]HW(M+X'^Q+Y0:4NHM%O5;C^B=K,V-C:L
  192. M)]9Y@H]FZ[RJ<=:)]F#O=/.W7N_#T>$2,Y^]UO\SE==4-K3VSP^.CT$2,:0L
  193. M2$I)$*0AI3YV/&9?,XP=ZEP[$6?$R<GZ02CI5\P^(Q`(?\@9E1P]T\WSIY\-
  194. M/G=<]PN.=]3S)?3)%67:8DUVP$4383VW`JP:JJB>"P[UW"ZLH09TBT)23R0(
  195. MU%V[Z<=4-NVN7<POV%_30V]$R(T?Q"2(YFUM@N?!9L<VD]=],8>AWMHT+WLR
  196. MOZ%8#2JT<:2JUHF9'GXU78Q-H?A0_,RGY`(/VNTP)N$-&@/X8LP'!;P&13I8
  197. M/6K$'-:9/,F&=UYN6A@(08GP$Y[*(KW`UB#XJ3JV,TM.7R;\QBX)8T^0D"A3
  198. M?419L$UL9!>\0JV'EA/&$S$TJ\)HQLLH0]^=['_R3WJGQQ>]LZ/#PIS[L5G5
  199. M#.HN-+C412<W#_J:&ST-K5.9?O'"N%MIV^A\*</I1+SV7.C"S.C_?/WE,PZ&
  200. MZXV-22S*ZX("G)TSE):MQ6N:3FWBUU1&1`C'6C=O$!`124*)+R9]08(;B/@M
  201. MPWE+J]5JSEQ&H`.!L&9A,7</)7X;&R4'S4N42</8(!RAMJ%1K/5A[%T1&<9-
  202. MNUL25*V>^ZWSUH9V"PZD2#8_3=[Z:V-*)K[%',\X3L/SYGB35WD1\5`^P:'L
  203. M>S-=Y0P'J`.8+&EW=9:S.LOYZW?S-+RWVRUOX*CFOV!W9W5RLXKVZISF_SG:
  204. MJU.9OT>LEVA_Q',8?!$Y.SY]G^,@P-;6EI4O^+=3(M-[YCI#N&CJ"LISN_H*
  205. M_RJVA/#6#WG&Y-1KW+-$K10XC::?58T<2E6B9^K]2?1JD]C5*I&K3<6M-HE:
  206. M[3L1&U?)U=T@=*%EVZ;BU!5W7FZW6\79&!\81Z?TB@5)6BKW`Y;>*H$EH_*2
  207. MK4>+M*6X*Q`NV>7/EJ,Y+"TR)T/<VK_8OQ2/W8(I23_YA*V<<#/G@Z_S^.WU
  208. M#/7'',A-D79STE.<'TPZ\BG_.Q`F7)F2<#[2L5AFB?E;LI'Y7U!+`P04``"`
  209. M"`!V8CH:K"UM^E`!``!6`P``!P```$U/1$5-+DB-DD]KW#`01\]=R'<8MI?&
  210. MA]TT/3H$`ME`('^@]-";D*7Q>H@]8S12DE+ZW;MV<&*O-R$Z>9[?2#\-^DKL
  211. MZN01SC3ZFHI5=7ZTF$"2/1:IP9D6B+=[T`GO]RX]EKJJEF-4BBK5/=SAG4",
  212. M<'OQV]S>WUW_NO^YN833D^[?[I#D(C3BL3'>1@M_CQ9?7&4#9,043\Q+C'Q"
  213. MOQ^DIP?ICQGU0=HY)%N/('$$"*BML*+IIB,IYM"O=:;HA+UFZ\'LNZ?6.Z:S
  214. M(1`&4XO&4<<!\\E2-%V>Z<93,['2EM'#R\1-*R'F8U[8Y(<+=?,M*.I0:Y1V
  215. MJ/LIM#90_/-:/@L/:I_#2>+Q]799.#4%!I"R-Q0*+"4@6-8G#'W"J^N;#60:
  216. M`]HF?ZTYU5WQ+^\>07>`LW6=VF\P?Q!9_WV<OWG$'WN/0AZ$*Y&'3XA6'9&)
  217. M&)J/Y?]02P$"%``4````"``&B#P:NM-&1H\"```_!0``"``````````!`"``
  218. M````````0T%,3$E.+D-02P$"%``4````"``"B#P:*<6>`[H"``"#!0``"```
  219. M```````!`"````"U`@``0T%,3%50+D-02P$"%``4````"`!&63L:I@4&D9``
  220. M``#-`0``!@`````````!`"````"5!0``1$5&4RY(4$L!`A0`%`````@`;&TZ
  221. M&M`:]ZNA"@``]RP```@``````````0`@````208``$9/4U-)3"Y#4$L!`A0`
  222. M%`````@`V6@Z&OR%?OIC!0``IQ````@``````````0`@````$!$``$9/4U-)
  223. M3"Y(4$L!`A0`%`````@`$(`\&K/EF\B5!@``B2<```<``````````0`@````
  224. MF18``$U/1$5-+D-02P$"%``4````"`!V8CH:K"UM^E`!``!6`P``!P``````
  225. I```!`"````!3'0``34]$14TN2%!+!08`````!P`'`'8!``#('@``````
  226. `
  227. end
  228.  
  229.