page%swap@Sun.COM (Bob Page) (11/13/89)
Submitted-by: dg3i+@andrew.cmu.edu (David Gay) Posting-number: Volume 89, Issue 211 Archive-name: unix/utils2.1 [Yet another rendition of some unix favorites. I think the archives now have a minimum of about 4 implementations of each... uuencoded executables and docs included. ..bob] # This is a shell archive. # Remove anything above and including the cut line. # Then run the rest of the file through 'sh'. # Unpacked files will be owned by you and have default permissions. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: SHell ARchive # Run the following text through 'sh' to create: # README # cut.c # cut.doc.uu # cut.uu # du.c # du.doc.uu # du.uu # getoptx.3 # getoptx.c # lmkfile # tail.c # tail.doc.uu # tail.uu # tee.c # tee.doc.uu # tee.uu # This is archive 1 of a 1-part kit. # This archive created: Sun Nov 12 19:29:11 1989 echo "extracting README" sed 's/^X//' << \SHAR_EOF > README XHere are a few unix-like utilities which I wrote. Included are: cut, tail, Xhead & du. X XAlso present is getoptx (used by cut), which recently came over some Xnewsgroup or the other (alt.sources ?). X XTo uudecode everything, type X X lmk decode X X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XDavid Gay X "(p.suiv :=: q.prec.suiv).prec :=: q.prec" X You don't want to know about this language ! X XGAY_D@ELMA.EPFL.CH, or GAY_D%ELMA.EPFL.CH@CLSEPF51.bitnet X X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ X X SHAR_EOF echo "extracting cut.c" sed 's/^X//' << \SHAR_EOF > cut.c X/* X*/ X#include <stdio.h> X#include <stdlib.h> X#include <string.h> X#include <ctype.h> X#include <error.h> X#include <ios1.h> X#include <proto/dos.h> X X#define TRUE 1 X#define FALSE 0 X X#define WARN 10 X#define ERROR 20 X X#define MAXLEN 255 /* Max line length */ X#define MAXDELIM 20 X#define MAXLIST 260 /* > MAXLEN */ X X#define isoctal(c) ((c) >= '0' && (c) <= '7') X#define hexdigit(c) ((c) <= '9' ? (c) - '0' : tolower(c) - 'a') X Xextern char *optarg; Xextern int opterr, optind; Xextern int _bufsiz; Xint err; X Xchar delims[MAXDELIM] = "\t "; Xint suppress, column, field, delim, unique; Xchar use[MAXLIST]; X Xint nextfield(char *field, char *line, char **pos) X{ X static int done; X char *end; X X if (*pos == NULL) X { X if (unique) X *pos = line; X else X *pos = line + strspn(line, delims); X done = FALSE; X } X if (done) return EOF; X X end = strpbrk(*pos, delims); X X if (!end) X { X strcpy(field, *pos); X done = TRUE; X X return '\0'; X } X else X { X field[end - *pos] = '\0'; X strncpy(field, *pos, end - *pos); X if (unique) X *pos = end + 1; X else X *pos = end + strspn(end, delims); X X return *end; X } X} X Xchar *extract_list(char *to, char *from) X{ X char *ret = to; X int pos = 0; X X while (pos < MAXLIST - 1 && from[pos]) X { X if (use[pos + 1]) X *to++ = from[pos]; X pos++; X } X *to++ = '\n'; /* Shouldn't be here, but ... */ X *to = '\0'; X return ret; X} X Xchar *expand_tabs(char *dest, char *src, int maxlen) X{ X int spos = 0, dpos = 0; X X while (src[spos] && dpos < maxlen - 1) X { X if (src[spos] != '\t') dest[dpos++] = src[spos++]; X else X { X int pad = 8 - spos % 8; X X if (dpos + pad <= maxlen - 1) X { X memset(&dest[dpos], ' ', 8 - spos % 8); X dpos += pad; X spos++; X } X else break; X } X } X dest[dpos] = '\0'; X return dest; X} X Xvoid cut(FILE *file) X{ X char line[MAXLEN + 1], detabbed[MAXLEN + 1], out[MAXLEN + 2]; X X line[MAXLEN] = '\0'; X X while (errno == 0 && fgets(line, MAXLEN, file) && errno == 0) X { X int l = strlen(line); X X if (l > 0 && line[l - 1] == '\n') line[l - 1] = '\0'; X X if (column) X { X expand_tabs(detabbed, line, MAXLEN + 1); X extract_list(out, detabbed); X fputs(out, stdout); X } X else X if (strpbrk(line, delims) != NULL) X { X int pos = 1, del, lastdel = 0; X char *next = NULL; X X while (errno == 0 && pos < MAXLIST && (del = nextfield(out, lin Xe, &next)) != EOF) X { X if (use[pos]) X { X if (lastdel) fputc(lastdel, stdout); X lastdel = del; X if (errno == 0) fputs(out, stdout); X } X pos++; X } X if (errno == 0) fputc('\n', stdout); X } X else if (!suppress) X { X fputs(line, stdout); X fputc('\n', stdout); X } X } X if (errno != 0) X { X perror("cut failed"); X err = ERROR; X } X} X Xchar *c_str(char *to, char *from, int cnt) X{ X char *ret = to; X X while (from[0] && --cnt) X { X if (from[0] == '\\' && from[1]) X { X switch (*++from) X { X case 'n': X *to++ = '\n'; X break; X case 'r': X *to++ = '\r'; X break; X case 't': X *to++ = '\t'; X break; X case 'b': X *to++ = '\b'; X break; X case 'f': X *to++ = '\f'; X break; X case 'x': X if (isxdigit(from[1]) && isxdigit(from[2])) X { X *to++ = hexdigit(from[1]) << 4 | hexdigit(from[2]); X from += 2; X } X else X fputs("Bad hex char\n", stderr); X break; X case '0': case '1': case '2': case '3': X case '4': case '5': case '6': case '7': X if (isoctal(from[1]) && isoctal(from[2])) X { X *to++ = (from[0] - '0') << 6 | (from[1] - '0') << 3 | X (from[2] - '0'); X from += 2; X } X else X fputs("Bad octal char\n", stderr); X break; X default: X *to++ = *from; X break; X } X from++; X } X else X *to++ = *from++; X } X *to = '\0'; X return ret; X} X Xint analyse_range(char *range) X{ X int last, first; X X range = stpblk(range); X X if (*range == '-') first = 1; X else X { X if (!isdigit(*range)) return FALSE; X range += stcd_i(range, &first); X range = stpblk(range); X } X if (*range == '-') X { X range++; X if (isdigit(*range)) X range += stcd_i(range, &last); X X else X last = MAXLIST - 1; X } X else last = first; X X if (*stpblk(range) == '\0' && first > 0 && first <= last && last < MAXLIST) X X { X int i; X X for (i = first; i <= last; i++) use[i] = TRUE; X X return TRUE; X } X else X return FALSE; X} X Xint analyse_list(char *list) X{ X int i; X char *end; X X for (i = 1; i < MAXLIST; i++) use[i] = FALSE; X X while (end = strchr(list, ',')) X { X *end = '\0'; X if (!analyse_range(list)) return FALSE; X list = end + 1; X } X return analyse_range(list); X} X Xvoid main(int argc, char **argv) X{ X int usage = TRUE, ch; X X /* Setup stdout */ X if (IsInteractive(chkufb(fileno(stdout))->ufbfh)) X setvbuf(stdout, NULL, _IOLBF, _bufsiz); X X /* Analyse command line */ X while (usage && (ch = getoptx(argc, argv, "c:d:f:su")) != EOF) X { X switch (ch) X { X case 'c': X column = TRUE; X usage = analyse_list(optarg); X break; X case 'd': X delim = TRUE; X c_str(delims, optarg, MAXDELIM); X break; X case 'f': X field = TRUE; X usage = analyse_list(optarg); X break; X case 's': X suppress = TRUE; X break; X case 'u': X unique = TRUE; X break; X default: X usage = FALSE; X break; X } X } X if (!(column && !(delim || field || suppress) || field && !column)) X usage = FALSE; X X if (!usage) X { X fprintf(stderr, "Usage:\t%s -clist [files]\n\t%s -flist [-dchar] [-su] X[files]\n", argv[0], argv[0]); X err = WARN; X } X else X /* Do cut */ X if (argc == optind) X cut(stdin); X else X { X int i; X X for (i = optind; err < ERROR && i < argc; i++) X { X FILE *f = fopen(argv[i], "r"); X X if (!f) X { X fprintf(stderr, "Error opening %s", argv[i]); X perror(""); X err = WARN; X } X else X { X cut(f); X fclose(f); X } X } X } X exit(err); X} SHAR_EOF echo "extracting cut.doc.uu" sed 's/^X//' << \SHAR_EOF > cut.doc.uu X Xbegin 644 cut.doc XM"B`@("`@0U54*#$I("`@("`@("`@("`@("`@("`@("`@("!5<V5R(&UA;G5A) XM;"`@("`@("`@("`@("`@("`@("`@("`@($-55"@Q*0H*"@H@("`@()LQ;4Y!J XM344*("`@("`@("`@()LP;6-U="`M(&-U="!O=70@<&%R=',@;V8@96%C:"!L- XM:6YE(&]F(&$@9FEL90H*("`@("";,6U364Y/4%-)4PH@("`@("`@("`@8W5T] XM()LP;2V;,6UC()LP;6QI<W0@6R!F:6QE<R!="B`@("`@("`@("";,6UC=70@/ XMFS!M+9LQ;68@FS!M;&ES="!;("V;,6UD()LP;6-H87)S(%T@6R`MFS%M<W4@L XMFS!M72!;(&9I;&5S(%T*"B`@("`@FS%M1$530U))4%1)3TX*("`@("`@("`@; XM()LP;9LT;6-U=)LP;2`@8V%N(&-U="!O=70@8V]L=6UN<R!O<B!F:65L9',@' XM9G)O;2!E86-H(&QI;F4@;V8@82!F:6QE+@H@("`@("`@("`@0V]L=6UN<R!A] XM<F4@<W!E8VEF:65D("!B>2`@8VAA<F%C=&5R("!P;W-I=&EO;G,@("AW:71HW XM("!T86)S"B`@("`@("`@("!E>'!A;F1E9"DL(&9I96QD<R!A<F4@<V5P87)A= XM=&5D(&)Y(&1E;&EM:71E<G,@*&1E9F%U;'0@FS1M=&%BFS!M("8*("`@("`@2 XM("`@()LT;7-P86-EFS!M("D@(&%N9"`@>6]U("!S96QE8W0@('1H92`@9&5S6 XM:7)E9"!O;F5S+B`@26YP=70@:7,@9G)O;0H@("`@("`@("`@FS1M<W1D:6Z;* XM,&T@:68@;F\@9FEL97,@87)E(&=I=F5N+@H*("`@("`@("`@(%1H92!F;VQL] XM;W=I;F<@;W!T:6]N<R!A<F4@<F5C;V=N:7-E9#H*"B`@("`@("`@("";-&ULA XM:7-TFS!M(&ES(&$@8V]M;6$M<V5P87)A=&5D(&QI<W0@(&]F("!N=6UB97)S% XM("!O<B`@<F%N9V5S("`H96<*("`@("`@("`@("`@("`@FS1M,2PS+36;,&T@% XM<F5P<F5S96YT<R`Q+"`S+"`T("8@-2DN("";-&TM-ILP;2!I<R!S:&]R="!FV XM;W(@FS1M,2TVFS!M(&%N9`H@("`@("`@("`@("`@("";-&TT+9LP;2!F;W(@B XMFS1M-)LP;2V;-&UI;F9I;FET>9LP;2X*"B`@("`@("`@("`MFS%M8Z";,&V;Q XM-&UL:7-TFS!MH*"@(%1H92";-&UL:7-TFS!M('-P96-I9FEE<R!W:&EC:"!C7 XM;VQU;6YS('1O('1A:V4@9G)O;2!T:&4*("`@("`@("`@("`@("`@9FEL97,L$ XM("!E9R`@+9LT;6,RFS!M+9LT;3$PFS!M("!W;W5L9"!T86ME(&-O;'5M;G,@U XM,B!T;R`Q,"P@86YD("V;-&UCFS!M+0H@("`@("`@("`@("`@("!W;W5L9"!TO XM86ME('1H92!W:&]L92!F:6QE*',I+"!W:71H('1A8G,@(&5X<&%N9&5D("!I9 XM;G1O"B`@("`@("`@("`@("`@('-P86-E<RX*"B`@("`@("`@("`MFS%M9J";# XM,&V;-&UL:7-TFS!MH*"@("!396QE8W0@(&9I96QD<R`@<W!E8VEF:65D(&)YK XM('1H92";-&UL:7-TFS!M+"!W:&EC:"!A<F4*("`@("`@("`@("`@("`@<V5P: XM87)A=&5D(&)Y('1H92!D96QI;6ET97)S("AS964@("V;-&UDFS!M*2X@()LT/ XM;4QI;F5SFS!M("";-&UW:71HFS!M("";-&UB99LP;0H@("`@("`@("`@("`@U XM("";-&UL969TFS!M()LT;75N=&]U8VAE9)LP;2P@FS1M97AC97!TFS!M()LTZ XM;6EFFS!M()LT;71H99LP;2`MFS1M<YLP;2!O<'1I;VX@:7,@=7-E9"X*"B`@% XM("`@("`@("`MFS%M9*";,&V;-&UC:&%R<YLP;:"@($-H86YG92!T:&4@9&5F] XM875L="!D96QI;6ET97)S("AS964@86)O=F4I+@H*("`@("`@("`@("V;,6US^ XMH)LP;:"@("!3=7!P<F5S<R!L:6YE<R!W:71H(&YO(&1E;&EM:71E<G,@*&]T. XM:&5R=VES92!T:&5Y(&%R90H@("`@("`@("`@("`@("!L969T(&-O;7!L971EW XM;'D@86QO;F4I+@H*("`@("`@("`@("V;,6UUH)LP;:"@($-O;G-E8W5T:79E: XM(&1E;&EM:71E<G,@87)E(&YO<FUA;&QY(&-O;G-I9&5R960@87,@(&]N90H@8 XM("`@("`@("`@("`@("`H=7-E9G5L(&EF("!Y;W4@:&%V92!A(&)L86YK('-EM XM<&%R871E9"!F:6QE*2X@($AO=V5V97(L"B`@("`@("`@("`@("`@(&EF("!YV XM;W4@('=A;G0@('5N:7@@("!B96AA=FEO=7(L("`@9VEV92`@('1H:7,@("!OE XM<'1I;VX*("`@("`@("`@("`@("`@*&-O;G-E8W5T:79E(&1E;&EM:71E<G,@6 XM(&EN9&EC871E("!B;&%N:R!F:65L9',I+B`@*"`MFS1M9ILP;0H@("`@("`@0 XM("`@("`@("!O<'1I;VX@;VYL>2D*"B`@("`@FS%M0E5'4PH@("`@("`@("`@, XMFS!M3&EN97,@;&]N9V5R('1H86X@,C4U(&-H87)A8W1E<G,@=VEL;"!B92!SS XM<&QI="X*"@H*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/ X'("`M,2T*"@H*S X`` Xend Xsize 2122 SHAR_EOF echo "extracting cut.uu" sed 's/^X//' << \SHAR_EOF > cut.uu X Xbegin 644 cut XM```#\P`````````#``````````(```M-`````````<L```/I```+321()`!)\ XM^0````!'^0```Y1R`"`\````YF`")L%1R/_\+'@`!"E.`\PI3P/40JP#T"9NS XM`11P`"(\```P`$ZN_LXI:P"8`\A*JP"L9P``<"`/D*\`!`:`````@"E``YAAG XM``$N(&L`K-'(T<@B:``0T\G3R2`"<@`2&2E)`]S0@5*`0F=2@`)`__Z?P%6`+ XM0G<(`"`"4X#4@1^R```@`%."4<C_]A^\`"`@`%."'[$@`"``4<K_^")/+PE@Z XM``!X*6L`.@.8<']2@-&L`YAA``#"0>L`7$ZN_H!!ZP!<3J[^C"E``]`O`"1`\ XM("H`)&<2+&P''"!`(B@``"E!`\A.KO^"(BH`(&<:)#P```/M3J[_XBE``]AG# XM"N6(($`G:``(`*0@;`/0+PA(;`.4(&@`)"EH``0#W$ZZ"JQ.N@]L<`!@!"`OW XM``0O`"`L`\!G!"!`3I!.NBM$+'@`!")L!QQ.KOYB3KH*@DJL`]!G&B(L`]AG% XM!$ZN_]PL>``$3J[_?")L`]!.KOZ&(!\N;`/43G5P9&"T0_H`$'``3J[]V"E`M XM!QQG[$YU9&]S+FQI8G)A<GD`3E4``$CG`#`F;P`4)&\`&$J29B)*K`/X9P0D< XMBV`22&P``"\+3KH;+E!/($O1P"2(<``I0`/@2JP#X&<$</]@9DAL```O$DZZU XM&:I03R9`(`MF%"!2(FT`"!+89OQP`2E``^!P`&!`(`N0DB!M``A",`@`+P`O) XM$B\(3KH8(D_O``Q*K`/X9PA!ZP`!)(A@$DAL```O"TZZ&KY03R!+T<`DB!`3X XM2(!(P$S?#`!.74YU3E7_]$CG`3`F;P`@($M^`"](``Q@&$'L`_U*,'@`9PP@V XM2R9*(FT`#!"Q>`!2AT7K``$,AP```0-L"B!M``Q*,'@`9M(6O``*0A(@+P`,T XM3-\,@$Y=3G5.5?_L2.</,"XO`#QX`'H`8#`0$W()L`%G"%*%4H04@&`@(`1R1 XM"$ZZ)F!P")"!VH"ZAFXJ<B`B2F`"$L%3@&3Z4H0@;0`,T<0F2"!M``C1Q21(^ XM2A-G""P'4X:ZAFVT0A(@+0`(3-\,\$Y=3G5.5?SJ2.<',"9O`S)"+?_O8``!N XM#$'M_O`B2$H99OQ3B9/(+@E*AV\00>W^[]'')$AP"K`29@)"$DJL`^QG,$AXH XM`0!(;?[P2&W]\&$`_TA(;?WP2&W\[V$`_N9(;`%>2&W\[TZZ'VA/[P`<8```Q XMLDAL``!(;?[P3KH8"E!/2H!G?'X!?`!"K?SJ8#)![`/\2C!X`&<F2H9G#$AL# XM`5XO!DZZ'UQ03RP%2JP'&&8.2&P!7DAM_.].NA\64$]2ATJL!QAF)`R'```!+ XM!&P<2&W\ZDAM_O!(;?SO80#]N$_O``PJ`'#_NH!FI$JL!QAF,DAL`5Y(>``*Q XM3KH?!E!/8")*K`/H9AQ(;`%>2&W^\$ZZ'L!(;`%>2'@`"DZZ'N1/[P`02JP'_ XM&&8>+PM(>`#_2&W^\$ZZ(7!/[P`,2H!G"$JL!QAG`/[42JP'&&<02&P`%$ZZ^ XM&TY83W`4*4`#Y$S?#.!.74YU3E7_Z$CG.S`N+P!$)&T`#"!M``@O2``D8``"= XM$$?J``%P7+`29@`!]DHJ``%G``'N)&T`"!`32(!R5%U!:P`!SK![$`AF]$[[` XM$`0`-V```68`-F```6``-6```5H`-&```50`,V```4X`,F```4@`,6```4(`S XM,&```3P`>&```'``9F```%H`8F```$0`=&```"X`<F```!@`;F````)!Z@`!C XM%+P`"BM(``A@``%J0>H``12\``TK2``(8``!6D'J``$4O``)*T@`"&```4I!+ XMZ@`!%+P`""M(``A@``$Z0>H``12\``PK2``(8``!*A`K``%(@$C`0>P"C0@PG XM``<(`&<``*(2*P`"2(%(P4'L`HT(,``'&`!G``",0>H``2M(``@4*P`!=CFTY XM`VX*2()(PG@PE(1@*$'L`HT(,```"`!G#A`K``%(@$C`="#0@F`($"L``4B`F XM2,!T89"")`#I@BP"$"L``K`#;@I(@$C`=#"0@F`F0>P"C0@P```8`&<.$"L`< XM`DB`2,!R(-"!8`@0*P`"2(!(P')AD($B!H*`%(%4BV!R2&P!@$AL`"!.NAR^I XM4$]@8A`K``%R,+`!;3YT-[`";C@6*P`"M@%M,+8";BQ!Z@`!2(-(PW(PEH%(* XM@$C`D('G@!032()(PI2![8*$@(2#%()4BRM(``A@&DAL`8!(;``N3KH<9E!/T XM8`I!Z@`!%),K2``(1>L``6`.($HD2R)M``@2T"M)``A*$F<&4X=F`/WJ(&T`B XM"$(0("\`)$S?#-Q.74YU3E7_\$CG`1`F;0`(+PM.NA3F6$\F0!`3<BVP`68(E XM<@$K0?_P8"Y(@$C`0>P"C0@P``((`&8&<`!@``"82&W_\"\+3KH6,B!+T<`N6 XMB$ZZ%*A03R9`$!-R+;`!9BY2BQ`32(!(P$'L`HT(,``""`!G$$AM__0O"TZZ' XM%?Y03]?`8!`K?````0/_]&`&*VW_\/_T+PM.NA1B6$\@0$H09C(@+?_P2H!O= XM*B(M__2P@6XB#($```$$;!HN`&`,0>P#_!&\``%X`%*'OJW_]&_N<`%@`G``H XM3-\(@$Y=3G5.5?_T2.<!,"9O`"!P`2M`__0P/`$"<@!![`/]$,%1R/_\8!9"& XM$B\+80#^_%A/2H!F!'``8!Q'Z@`!2'@`+"\+3KH30%!/)$`@"F;8+PMA`/[6[ XM3.T,@/_H3EU.=4CG!S(N+P`<)F\`('P!+RP!>DZZ(W!83R!`(B@`!"QL!QQ.\ XMKO\H2H!G``"P+RP#D$AX`$!"ITAL`5Y.NA503^\`$&```)8@!7(H!$$`"&L`( XM`(BPNQ`(9O).^Q`&````=6```&X```!S8```7@```&9@``!"````9&```!X`@ XM``!C8````G`!*4`#["\L!01A`/\46$\L`&!"<`$I0`/T2'@`%"\L!01(;```8 XM80#[V$_O``Q@)G`!*4`#\"\L!01A`/[D6$\L`&`2<`$I0`/H8`IP`2E``_A@A XM`GP`2H9G&DAL`#XO"R\'3KH`W$_O``PJ`'#_NH!F`/]02JP#[&<22JP#]&8,D XM2JP#\&8&2JP#Z&<.2JP#\&<&2JP#[&<"?`!*AF8>(%,O""\(2&P`2$AL`8!._ XMNAJ.3^\`$'`**4`#Y&!ROJP`H&8,2&P!/&$`^=A83V!@+"P`H"`&Y8#7P&!&2 XM2&P`A"\33KH:FE!/)$`@"F8B+Q-(;`"&2&P!@$ZZ&D1(;`"83KH6/$_O`!!PF XM"BE``^1@#B\*80#YCBZ*3KH<C%A/4H98BPRL````%`/D;`2\AVVL+RP#Y$ZZ\ XM',Q83TS?3.!.=0``3E7_[DCG!S`N+P`N)F\`,G`!L*P`I&9$("P`H+"';!;E6 XM@"1S"``O0``4<BVR$F8&2BH``68&</]@``'@2&P`J"`O`!@O,P@`3KH0TE!/X XM2H!F"E*L`*!P_V```<`@+`"@Y8`@<P@`T>P`I!P02(9(QBE&!0!P.KR`9QAP& XM*KR`9Q(O!B\M`!!.NA#:4$\D0$J`9GI*K`"<9TP@!AM`__(;?``*__,O$TZZS XM$&`N@"\32'@``DZY```+Y$AL`,).NA!*+H!(;`"L2'@``DZY```+Y'`"+H!(> XM;?_R+P!.N0``"^1/[P`@4JP`I"`L`*`B`.6!(',8`-'L`*1*$&8*4JP`H'`!< XM*4``I'`_8``!$!HJ``%(A4C%("P`H"(`Y8$D<Q@`<BJZ@68VU>P`I"X`4H=*8 XM*@`!9Q`I1P"@0>H``2E(!01@``#60>P`V"E(!00B!RE!`*!P`2E``*1@``"^< XM<CJZ@68``)K5[`"D*@!2A4HJ``%G#BE%`*!!Z@`!*4@%!&!T*44`H+J';5Q*A XMK`"<9TP@!AM`__(;?``*__,O$TZZ#VHN@"\32'@``DZY```+Y$AL`/Q.N@]4& XM+H!(;`#:2'@``DZY```+Y'`"+H!(;?_R+P!.N0``"^1/[P`@<`$I0`"D<#]@* XM-B`L`*#E@%*L`*`I<P@`!01P`2E``*1@'%*L`*0@+`"D2C((`&8*<`%2K`"@A XM*4``I$*L!00@!DS?#.!.74YU``!.=4YU2.<',"XO`!@F;P`<+"\`("\'3KH?9 XMA%A/)$`@"F8$</]@-@@J``,``V<02'@``D*G+P=.NA6P3^\`#"\&+PLO*@`$; XM3KH:J$_O``PJ`$JL`ZQG!'#_8`(@!4S?#.!.=0``````````<&%.5?_$2.<GK XM,"9O`%PD;P!@?@!\`'H`<``;?``@__MR`"M!__9T_RM"__)![?_0&T#_\1M`P XM__PK0?_D*T'_Z"M(_\Q*$V="<``0$W(874%K.+![$`AF]D[[$`0`(V```"``> XM(&```!8`*V````P`+6````)^`6`.?`%@"GH!8`8;?``!__Q2BV"Z$!-R,+`!Q XM9@92BQM!__MP*K`39A`@4D/H``0DB2M0__92BV`.2&W_]B\+3KH0.%!/U\`0U XM$W(NL`%F)E*+<"JP$V80(%)#Z``$)(DK4/_R4HM@#DAM__(O"TZZ$`I03]?`= XM$!-R;+`!9@H;?``!__%2BV`(<FBP`68"4HL0&W(`$@`;0/_P<#!=0&L``E2RH XM>P`(9O1.^P`$`&-@``(J`'-@``'H`%A@``%^`'A@``%X`'!@``%>`&]@``$,H XM`'5@``#B`&1@```"2BW_\6<,(%)#Z``$)(D@$&`*(%)#Z``$)(D@$"M`_^QL_ XM"G(!1*W_["M!_^A*K?_H9P1P+6`*2@9G!'`K8`)P(!M`_]!P`!`&(BW_Z(*`L XM<``0!8*`9PA2K?_,4JW_Y"\M_^PO+?_,3KH-UE!/*T#_R"`M__)*@&H&<@$KB XM0?_R("W_R"(M__*2@$CM``+_Q&\N(&W_S")(T\%@`A+84X!D^G``$"W_^R(MX XM_\0@;?_,8`(0P%.!9/H@+?_R*T#_R-&M_^1![?_0*TC_S$H'9P`!4!M\`"#_* XM^V```49*+?_Q9PP@4D/H``0DB2`08`H@4D/H``0DB2`0*T#_[&``_V)*+?_Q@ XM9PP@4D/H``0DB2`08`H@4D/H``0DB2`0*T#_[$HM__QG$B!M_\P0_``P<@$K, XM0?_D*TC_S"\`+RW_S$ZZ#3!03RM`_\A@`/\H&WP`,/_[("W_\DJ`:@9P""M`Q XM__)*+?_Q9PP@4D/H``0DB2`08`H@4D/H``0DB2`0*T#_[$HM__QG%B!M_\P0> XM_``P$/P`>'("*T'_Y"M(_\PO`"\M_\Q.N@T,4$\K0/_(<%BP+?_P9@#^ODAMD XM_]!.N@JP6$]@`/ZP(%)#Z``$)(DB4"M)_\QF"$'Z`-PK2/_,(&W_S$H89OQ3W XMB)'M_\PK2/_D("W_\DJ`:RJQP&\F*T#_Y&`@<`$K0/_D(%)#Z``$)(D@$!M`P XM_]!"+?_18`9P`&```(P@+?_D(BW_]K*`;`AT`"M"__9@!)&M__9*!V<V4ZW_$ XMY&T8<``@;?_,$!@O`"M(_\P@;0`03I!83V#B4ZW_]FU(<``0+?_[+P`@;0`0' XM3I!83V#H4ZW_]FT2<``0+?_[+P`@;0`03I!83V#H4ZW_Y&T8<``@;?_,$!@O( XM`"M(_\P@;0`03I!83V#B(`M,WPSD3EU.=0``3E7_]DCG`3`F;P`>)&\`(BMM. XM`!#_]AX:2@=G-'`EO@!F(K`29@12BF`:+PM(;?_V+PIA`/O,3^\`#"M`__IG@ XM!"1`8-)P`!`'+P!.DUA/8,9,WPR`3EU.=4Y5__!(YR$R)F\`+`RL````(`:"8 XM;```AA`3<B"P`6<,<@FP`6<&<@JP`68$4HM@Z$H39V@@+`:"Y8!2K`:"0>P&^ XMBM'`)$AP(K`39B92BR2+2A-G"G`BL!-G!%*+8/)*$V8,2'@``4ZZ&S183V">] XM0AM@FB2+2A-G&!`3<B"P`6<0<@FP`6<*<@JP`6<$4HM@Y$H39@)@!D(;8`#_\ XM<DJL!H)F!B!L`]!@!$'L!HHI2`:&2JP&@F9\0?H!)$/L!D@BV"+8(M@BV#*0` XM(FP#T"!I`"1(>``H+R@`!$AL!DA.N@CJ3^\`#$'L!D@B""0\```#[BQL!QQ.6 XMKO_B*4`%#"E`!11R!"E!!1`I0`4<*4$%&.6`D\DL>``$*T#_\$ZN_MH@;?_PD XM(D`C:``(`*1^`"M`__1@*BQL!QQ.KO_**4`%#$ZN_\0I0`440?H`IB(()#P`E XM``/M3J[_XBE`!1Q^!"`'`$"``8&L!0@@!P!`@`*!K`40`*P``(`#!1A*K`&D- XM9P1P`&`&(#P``(``+@!"K`%8(`<`0``!*4`!5'`!*4`!>B`'`$```BE``79P& XM`BE``9P@!P!``(`I0`&80?H7GBE(`\0O+`:&+RP&@DZZ]8I"ETZZ%`A,[4R$P XM_]Q.74YU8V]N.C$P+S$P+S,R,"\X,"\`*@``````````````````````````H XM```````````````````````O"R9O``A*JP`49PP(*P`#`!MF!'``8#8O+`.0" XM3KH/_EA/)T``!"=``!!*@&8*<`PI0`<8</]@%B=L`Y``%'#SP:L`&'``)T``Y XM#"=```@F7TYU``````````````````!.5?_L2.<O$"XO`#0F;P`X*`=P,<"K8 XM`!AG!G#_8``"<`@K``<`&E;`1`!(@$C`+`!*JP`49@``A`@K``(`&V9Z<``GJ XM0``,<O^^@6<``D(O"TZZ_TY83TJ`9PP(ZP`%`!MP_V```BH(ZP`!`!M*!F<.\ XM("L`%"(`1($G00`,8`@@*P`4)T``#%.K``QM%B!K``1#Z``!)TD`!"`'$(!R9 XM`!(`8!(@!W(`$@`O"R\!80#_4E!/(@`@`6```=8(*P`"`!MG6'#_OH!F!G``\ XM8``!PB`'&T#__TH&9R)R"KZ!9AQR`B\!2'H!LB\K`!PK0?_P3KKWW$_O``PJR XM`&`:<@$O`4AM__\O*P`<*T'_\$ZZ]\!/[P`,*@!^_V```.`(ZP`!`!M*!F=2I XM</^^@&=,5*L`#'(*OH%F)B!K``1#Z``!)TD`!!"\``TB*P`,2H%K"B\++P!A= XM`/ZN4$]2JP`,(&L`!$/H``$G20`$(`<0@"(K``Q*@6L``1Q^_R`K``20JP`0] XM*T#_\&=R""L`!@`:9U)(>``"0J<O*P`<3KH-&$_O``PK0/_L2@9G.%.M_^QMT XM,D*G+RW_["\K`!Q.N@SX2'@``4AM__TO*P`<3KH*D$_O`!A*K`.L9@H0+?_]2 XM<AJP`6?(+RW_\"\K`!`O*P`<3KKVX$_O``PJ`&`">@!P_[J`9@@(ZP`%`!M@/ XM#+JM__!G!@CK``0`&TH&9PXB*P`4)`%$@B="``Q@&`@K``(`&V<(<@`G00`,$ XM8`@B*P`4)T$`#"!K`!`G2``$OH!G+E.K``QM%B!K``1#Z``!)TD`!"`'$(!R# XM`!(`8!(@!W(`$@`O"R\!80#]D%!/(@!P,,"K`!AG!'#_8`QP_[B`9@1P`&`"4 XM(`1,WPCT3EU.=0T*`````$CG!Q`F;P`4""L`!P`:5L!$`$B`2,`N`'`PP*L`V XM&&<*0JL`"'#_8``!6`@K``<`&V<4""L`!@`;9PPO"TAX__].NOTB4$]*JP`4$ XM9C9"JP`(""L``@`;9Q)P`2=``!1!ZP`@)T@`$&```(0O"TZZ_)983TJ`9W8(? XMZP`%`!MP_V```0!*!V=F5*L`""`K``A*@&Y:(&L`!$/H``$G20`$?``<$"`&B XM#(`````:9RX,@`````UF,E.K``AM%"!K``1#Z``!)TD`!'``$!!@``"T+PMAA XM`/\N6$]@``"H".L`!``;</]@``"<(`9@``"6""L``0`;9DX(ZP```!LO*P`4T XM+RL`$"\K`!Q.N@BT3^\`#"H`2H5J!@CK``4`&TJ%9@8(ZP`$`!M*A6\:2@=G' XM"B`%1(`G0``(8`0G10`((&L`$"=(``1P,L"K`!AG%DH'9PAP_R=```A@!G``> XM)T``"'#_8"!3JP`(;1(@:P`$0^@``2=)``1P`!`08`@O"V$`_H183TS?".!.O XM=0``56YK;F]W;B!E<G)O<B!C;V1E``!5<V5R(&ES(&YO="!O=VYE<@!.;R!S1 XM=6-H(&9I;&4@;W(@9&ER96-T;W)Y`$YO('-U8V@@<')O8V5S<P!);G1E<G)U. XM<'1E9"!S>7-T96T@8V%L;`!)+T\@97)R;W(`3F\@<W5C:"!D979I8V4@;W(@` XM861D<F5S<P!!<F<@;&ES="!I<R!T;V\@;&]N9P``17AE8R!F;W)M870@97)RQ XM;W(`0F%D(&9I;&4@;G5M8F5R`$YO(&-H:6QD('!R;V-E<W,``$YO(&UO<F4@! XM<')O8V5S<V5S(&%L;&]W960`3F\@;65M;W)Y(&%V86EL86)L90!!8V-E<W,@( XM9&5N:65D`$)A9"!A9&1R97-S`$)U;&L@9&5V:6-E(')E<75I<F5D``!297-ON XM=7)C92!I<R!B=7-Y``!&:6QE(&%L<F5A9'D@97AI<W1S`$-R;W-S+61E=FEC2 XM92!L:6YK`$YO('-U8V@@9&5V:6-E``!.;W0@82!D:7)E8W1O<GD`27,@82!D[ XM:7)E8W1O<GD``$EN=F%L:60@87)G=6UE;G0``$YO(&UO<F4@9FEL97,@*'5NI XM:71S*2!A;&QO=V5D`$YO(&UO<F4@9FEL97,@*'5N:71S*2!A;&QO=V5D(&9OE XM<B!T:&ES('!R;V-E<W,``$YO="!A('1E<FUI;F%L``!497AT(&9I;&4@:7,@8 XM8G5S>0!&:6QE(&ES('1O;R!L87)G90!.;R!S<&%C92!L969T`%-E96L@:7-S' XM=65D('1O('!I<&4`4F5A9"UO;FQY(&9I;&4@<WES=&5M`%1O;R!M86YY(&QI[ XM;FMS``!"<F]K96X@<&EP90!-871H(&9U;F-T:6]N(&%R9W5M96YT(&5R<F]R8 XM``!-871H(&9U;F-T:6]N(')E<W5L="!I<R!O=70@;V8@<F%N9V4``$CG(#`F* XM;P`0)$M*$F<D<``0$D'L`HT(,``!"`!G"G(`$@!T()*"8`1R`!(`%(%2BF#82 XM(`M,WPP$3G4``````````'!A(F\`""!O``0@+P`,(@A@!!#99PA3@&3X8`9"^ XM&%.`9/H@`4YU3E7_^$CG`S`F;P`@)&\`)"XO`"@@2DH89OQ3B)'*+`@@2TH8_ XM9OQ3B)'+(`@B2]/`*TG_^+R'8P(L!R`&($I@`A+84X!D^B!M__A",&@`(`M,I XMWPS`3EU.=2!O``0@"$H89OQ32)'`(`A.=0``(&\`!")O``@2&+(99@A*`6;VE XM<`!.=6X$</].=7`!3G5(YP$0)F\`#"XO`!!P`!`3L(=F!"`+8`@0&TH`9NYP9 XM`$S?"(!.=4CG`1`F;P`,+B\`$"\'+PMAR%!/3-\(@$YU2.<!,"9O`!`N+P`4H XME<I*$V<.<``0$["'9@(D2U*+8.X@"DS?#(!.=4Y5__Q(YP`P)F\`%"1O`!A*\ XM$V<@*TK__"!M__Q*$&<0$!"P$V8$(`M@#%*M__Q@Z%*+8-QP`$S?#`!.74YUW XM2.<`,"9O``PD;P`0+PHO"V&P4$],WPP`3G4O"R9O``AP`!`30>P"C0@P``,(I XM`&<$4HM@["`+)E].=2`O``@@;P`$3E7_]")/<@I.N@V`!D$`,!+!2H!F\"`)< XM$.&_R6;Z0A"0CTY=3G4``"`O``@@;P`$3E7_]")/(@`"00`'!D$`,!+!YHAFS XM\"`)$.&_R6;Z0A"0CTY=3G4``#`Q,C,T-38W.#EA8F-D968@+P`((&\`!$/O/ XM``0R``)!``\2^Q#<Z(AF\B`)(@]8@1#ALHEF^D(0D(%.=4Y5__A(YP$P)F\`] XM'"1O`"!^`$H39RHK2O_\(&W__$H09PP0$+`39P92K?_\8.P@;?_\2A!F!"`') XM8`A2AU*+8-(@!TS?#(!.74YU3E7_^$CG`3`F;P`<)&\`('X`2A-G(BM*__P@N XM;?_\2A!G$!`0L!-F!"`'8`Y2K?_\8.A2AU*+8-H@!TS?#(!.74YU2.<`,"9O- XM``PD;P`0+PHO"V$`_V)03TS?#`!.=4CG`#`F;P`,)&\`$"\*+PMAD%!/3-\,: XM`$YU```@;P`$(DAR`'``+P(,$``K9P8,$``M9@)22!`8!```,&T2#```"6X,\ XM)`'E@=*"TH'2@&#F#!$`+68"1($D'R`(4X`@;P`(((&0B4YU2.<#,"9O`!0D" XM;P`8+B\`'"PO`"`@!PR`````!&=,2H!G$`R`````0&9,".L`!@`;8`8(JP`&7 XM`!L@"F<$2H9N!'``8#HO"TZZ`#Q83PBK``(`&PCK``,`&R!*)T@`!"=(`!`G% XM1@`4<`!@%"\+3KH`%EA/<`!@"'`6*4`'&'#_3-\,P$YU+PLF;P`(""L``@`;S XM9P1P`&`^2JL`%&<6""L``P`;9@XO*P`4+RL`$$ZZ`2)03T'K`"`G2``0<``G( XM0``4<K?#JP`8".L``@`;)T``#"=```@F7TYU3E7_Z$CG`3(N+P`T2H=N!G#_N XM8```TG`(OH!D`BX`(`=6@"X``D?__"1M``@@;0`(T<??K`$T0^P!,"91*TC_Z XM\"M)__0@"V<``)`@2R`K``31P"M(_^PB;?_PM\EC$"2+)4<`!"QM__0LBG``D XM8'BWR68:+%,DCB`K``0B`-*')4$`!"QM__0LBG``8%JUR&0(GZP!-'#_8$ZUD XMR&8L2I-G#B!3L\AC")^L`31P_V`XWZL`!$J39PZSTV8*("D`!-&K``0FD7``6 XM8!XK2__T*VW_[/_H)E-@`/]N(&W_]""*0I(E1P`$<`!,WTR`3EU.=0``````: XM````<&%(YP$0)F\`#"XO`!`O!R\+3KK^]E!/3-\(@$YU2.<',"XO`!@F;P`<L XM+"\`("\'3KH+^%A/)$`@"F8$</]@'B\&+PLO*@`$3KH'_$_O``PJ`$JL`ZQG? XM!'#_8`(@!4S?#.!.=0``2.<!$"9O``Q*K`<89U@@+`<8L*P!J&X";`1^`&`"Y XM+@!(;`&`2'@`"DZZ`S9(;`&`+PM.N@+\2&P!@$AZ`#1.N@+P(`?E@$AL`8!!* XM[`&L+S`(`$ZZ`MQ(;`&`2'@`"DZZ`P!/[P`H("P'&$S?"(!.=3H@````````1 XM``````````!.5?_F2.</,"9O`#HN+P`^0BW__T*L`ZPK;`<8__)Z`[JL`2!L! XM$B`%YX!![`4(2K`(`&<$4H5@Z"`L`2"PA68,<!@I0`<8</]@``$J(`7G@$'L[ XM!0C1P"1(2JT`$&<(""T``@`39PHK?````^S_[F`(*WP```/N_^X@/```@`#`' XMK`$XL8<(!P`#9PP@!P)`__PN``!'``(@!W(#P($,@`````)G#`R``````6<$3 XM2H!F!BP'4H9@#'`6*4`'&'#_8```M"`'`H````,`9P``B`@'``IG%AM\``'_& XM_R\M_^XO"TZZ!Q)03R@`8#P(!P`)9A9(>`/M+PM.N@:T4$\H`$J$:@0(QP`)A XM"`<`"6<:&WP``?__*6W_\@<8+RW_[B\+3KH'.%!/*`!*+?__9S8@!W)XTH'`< XM@4J`9RI*A&LF+P1.N@>`2'@#[2\+3KH&8D_O``PH`&`.2'@#[2\+3KH&4%!/> XM*`!*K`.L9P1P_V`()(8E1``$(`5,WPSP3EU.=0``````````````````````@ XM`'!A2.</$"XO`!@L+P`<*B\`("\'3KH)H%A/)D`@"V8$</]@'B\%+P8O*P`$! XM3KH%*$_O``PH`$JL`ZQG!'#_8`(@!$S?"/!.=0``2.<#,"XO`!1*AVX&<`!@Z XM``"D<`B^@&0"+@`@!U:`+@`"1__\1>P!,"92(`MG0"`K``2PAVTRL(=F#"!3* XM)(B?K`$T(`M@;B`K``20AW((L(%E%B!+T<<DB"1()),E0``$GZP!-"`+8$PDG XM2R938+P@!R(L`CC0@5.`3KH&KB(L`CA.N@:&+`!0AB`&5H`L``)&__PO!DZZU XM"AY83R9`(`MG$B\&+PM.NONF+H=A`/]44$]@`G``3-\,P$YU``````````!PU XM82\'+B\`""\'3KK_,EA/+A].=0``2.<!,"9O`!`D;P`4?@`>&TJ'9Q(O"B\'^ XM3KH`%E!/4H!FZG#_8`)P`$S?#(!.=0``2.<!$"XO``PF;P`0""L`!@`;9Q)PE XM"KZ`9@PO"R\'3KKOX%!/8#!3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`29 XM(`=R`!(`+PLO`4ZZ[[)03R(`(`%,WPB`3G5(YP$@+B\`#%*L!Q0@;`<04Z@`& XM#&T6(F@`!$7I``$A2@`$(`<2@'(`$@!@$B`'<@`2`"\(+P%.NN]L4$\B`$S?+ XM!(!.=4Y5``!(YP`P)F\`$"1O`!1"K`<4*4L'$$AM`!`O"DAZ_YQ.NNQP+HM(I XM>/__3KKO,B`L!Q1,[0P`__A.74YU``!.5?_X2.<`,$?L`3P@"V<,2JL`&&<&Q XM)$LF4V#P(`MF(DAX`").NOZV6$\F0$J`9@1P`&`<)(MP(7(`($L0P5'(__POG XM"R\M``PO+0`(3KH`#DSM#`#_\$Y=3G4``$Y5__!(YP\P)F\`-"1O`#A*J@`8O XM9P@O"DZZ`;)83RHL`:1^`7``$#-X``Q``&)G"@Q``&%F#'H`8`8J/```@`!2% XMAW(KLC-X`%?`1`!(@$C`*`!P`!`3#$``=V<``(@,0`!R9T(,0`!A9@``ODAX1 XM``PO/```@0(O+0`(3KK[:$_O``PL`'#_O(!F!G``8```T$J$9P9P0-"`8`)P# XM`BX``$=``&```(A*A&<$<`)@`G```$"``$AX``PO`"\M``A.NOLD3^\`#"P`8 XM</^\@&8&<`!@``",2H1G!G!`T(!@`G`!+@!@2$J$9P1P`F`"<`$`0(```$`!6 XM``!``@!(>``,+P`O+0`(3KKZWD_O``PL`'#_O(!F!'``8$9*A&<&<$#0@&`"_ XM<`(N`&`$<`!@,I'()4@`$'``)4``%"5&`!PE:@`0``0E0``,)4``"$J%9@8@H XM/```@``B!X*`)4$`&"`*3-\,\$Y=3G4``$CG#S`F;P`<+B\`("1O`"0H"U.'$ XM+`=*AFLT4ZH`"&T2(&H`!$/H``$E20`$<``0$&`(+PI.NN_"6$\J`'#_NH!G= XM#%.&(`46P'(*NH%FR$(3O(=F!'``8`0@1"`(3-\,\$YU``!(YP,P)F\`%`@K/ XM``$`&V<0+PM(>/__3KKLX%!/+@!@`GX`("L`&$*`9Q1*JP`49PXO*P`4+RL`R XM$$ZZ^/I03R\K`!Q.N@306$\L`'#_OH!G!DJ&9@)P`$S?#,!.=4CG`Q`N+P`0Y XM1^P!/"`+9S0(*P`"`!MF*`@K``$`&V<@("L`!)"K`!`L`$J&9Q(O!B\K`!`O' XM*P`<3KKE+D_O``PF4V#(+P=.N@5\6$],WPC`3G4``$CG-Q`N+P`<)F\`("POH XM`"1*K`/$9P1.N@340JP#K"(')`LF!BQL!QQ.KO_0*@!P_[J`9@Y.KO]\*4`#] XMK'`%*4`'&"`%3-\([$YU``!(YS\`+B\`'"PO`"`J+P`D2JP#Q&<$3KH$B$*LY XM`ZP@!5.`(@<D!B8`+&P''$ZN_[XH`'#_N(!F#DZN_WPI0`.L<!8I0`<8(`4,E XM@`````)G%@R``````6<(2H!F&"`&8!0@!-"&8`XB!W0`=@`L;`<<3J[_ODS?W XM`/Q.=0``2.<W$"XO`!PF;P`@+"\`)$JL`\1G!$ZZ!`Q"K`.L(@<D"R8&+&P'B XM'$ZN_]8J`'#_NH!F#DZN_WPI0`.L<`4I0`<8(`5,WPCL3G4``$CG(Q`F;P`42 XM+B\`&$JL`\1G!$ZZ`\1"K`.L(@LD!RQL!QQ.KO_B+`!*AF823J[_?"E``ZQPL XM`BE`!QAP_V`"(`9,WPC$3G4``$Y5__Q(YR$0)F\`&$JL`\1G!$ZZ`WQ"K`.LR XM(@MT_BQL!QQ.KO^L+@!*AV<*(@=.KO^F</]@)B(+)#P```/N3J[_XBX`2H=FP XM$DZN_WPI0`.L<`(I0`<8</]@`B`'3-\(A$Y=3G5.5?_\2.<A$"9O`!A*K`/$@ XM9P1.N@,80JP#K"(+=/XL;`<<3J[_K"X`2H=G#"('3J[_IB(+3J[_N"(+)#P`5 XM``/N3J[_XBX`2H=F$DZN_WPI0`.L<`(I0`<8</]@`B`'3-\(A$Y=3G4``"\'A XM+B\`"$JL`\1G!$ZZ`K8B!RQL!QQ.KO_<<``N'TYU2.<P`"0`)@%(0DA#Q,'&2 XMP,#!U$-(0D)"T(),WP`,3G5*@&H``!Y$@$J!:@``#$2!80``($2!3G5A```80 XM1(!$@4YU2H%J```,1(%A```&1(!.=2\"2$$T`68``")(0$A!2$(T`&<```:$W XMP3`"2$`T`(3!,`)(0C(")!].=2\#=A`,00"`9```!N&944,,00@`9```!NF9H XM64,,02``9```!N6954-*06L```;CF5-#-`#FJ$A"0D+FJDA#@,$V`#`"-`-(J XM0<3!D()D```(4T/0@63^<@`R`TA#Y[A(0,%!)A\D'TYU3E7_GDCG,S)^`"!L1 XM`]P>*/__<$^^@&\"+@`@!T/M_Z]@`A+84X!D^D(U>*^3R2QX``1.KO[:)D!*G XMJP"L9TP@*P"LY8`D0"PJ`#A*AF8$+"L`H$J&9S0B!D'Z`+(D"'8++&P''$ZNM XM_]`@1U*'(`@;O``*"*\B!D'M_Z\D""8'+&P''$ZN_]!P_V!.2JP'#&820_H`- XMAG``+'@`!$ZN_=@I0`<,0>W_KRE(`EQ(>``\2'@`^G``+P`O`$AL`GA(;`)DB XM2&P"4$*G3KH!2$_O`"!3@&<$</]@`G``3-],S$Y=3G4J*B!5<V5R($%B;W)TY XM(%)E<75E<W1E9"`J*@``0T].5$E.544``$%"3U)4`"HJ*B!"<F5A:SH@`&EN7 XM='5I=&EO;BYL:6)R87)Y````````````````````2.<!$"XO``PO!TZZ`#Q8J XM3R9`(`MF!'#_8"@(*P`"``-G!G``)H!@&B\K``1.NOV66$]P`":`2JP#K&<$\ XM</]@`G``3-\(@$YU+P<N+P`(<``I0`.L2H=K(KZL`2!L'"`'YX!![`4(2K`(5 XM`&<.(`?G@$'L!0C1P"`(8`AP"2E`!QAP`"X?3G4``$CG`0)P`"(\```P`"QXS XM``1.KO[.+@`"AP``,`!*AV8$<`!@($JL`\1G&"!L`\1.D$J`9@1P`&`,2'@`; XM%$ZZ`$983R`'3-]`@$YU8;1.=0``2.<P,BQL!PP@;P`8(F\`'"1O`"`F;P`DR XM("\`*"(O`"PD+P`P)B\`-$ZN_J1,WTP,3G4``$CG!P`N+P`0("P!(%.`+`!*] XM1FLP(`9(P.>`0>P%""HP"`!*!6<:"`4``F84(`9(P.>`0>P%""\P"`1.NOQ\E XM6$]31F#,+P=.NM2V6$],WP#@3G4``$CG`#(F;`<@(`MG%"13(DL@*P`(+'@`$ XM!$ZN_RXF2F#HD<@I2`<D*4@'($S?3`!.=4CG`3(N+P`4<`S>@"`'<@`L>``$: XM3J[_.B9`(`MF!'``8#HG1P`(1>P'("!J``0G2``$D<@FB$J29@(DBTJJ``1GB XM!B)J``0BBR5+``1*K`$D9@0I2P$D0>L`#"`(3-],@$YU````````````````O XM``````/L````!@````````N.```+?@``"V8```J8```*B```"G`````"````X XM`@````P````&`````````_(```/I`````````_(```/J````Y0D@````````E XM````````````````8W5T(&9A:6QE9```0F%D(&AE>"!C:&%R"@!"860@;V-TR XM86P@8VAA<@H`8SID.F8Z<W4``%5S86=E.@DE<R`M8VQI<W0@6V9I;&5S70H)2 XM)7,@+69L:7-T(%LM9&-H87)=(%LM<W5=(%MF:6QE<UT*`'(`17)R;W(@;W!E0 XM;FEN9R`E<P````````````$````!`````2TM```Z(&EL;&5G86P@;W!T:6]NN XM("TM(```.B!I;&QE9V%L(&]P=&EO;B`M+2``````.B!O<'1I;VX@<F5Q=6ER, XM97,@86X@87)G=6UE;G0@+2T@`#H@;W!T:6]N(')E<75I<F5S(&%N(&%R9W5M2 XM96YT("TM(````````"@`````````````````````````````@`````%>````H XM```````````````````````````````````````!@```````````````````! XM````````````````````````````````````````````````````````````` XM````````````@``````B```7/```%U```!=B```7?```%XP``!>D```7K@``+ XM%\@``!?>```7\```&````!@2```8+```&$```!A.```86@``&'```!B"```8+ XME@``&*@``!BX```8R```&-@``!CJ```9"```&3@``!E(```96@``&6P``!EZ6 XM```9C@``&:0``!FT```9P```&=X```0`__\````.``X````````JW`````#_D XM_P````0`!``````````````"//__````!``$````````*O@`````__\````$O XM``0````````K`@``````("`@("`@("`@*"@H*"@@("`@("`@("`@("`@("`@9 XM("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!`0$!: XM`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@("`@("> XM`@("$!`0$"`@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`06 XM$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!9 XM`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0= XM(````````@````/L````)@````````*$```"<````D@```(T```",````BP`/ XM``(H```")````B````(<```"&````A0```(0```"#````@@```($```"````R XM`?P```'X```!]````?````'L```!Z````>0```'@```!W````=@```'4```!$ XMT````<P```'(```!Q````<````&\```!N````;0```&P```!K`````,````"Z X4```"8````5X```$\`````````_*\O X`` Xend Xsize 12800 SHAR_EOF echo "extracting du.c" sed 's/^X//' << \SHAR_EOF > du.c X#include <exec/types.h> X#include <string.h> X#include <proto/exec.h> X#include <proto/dos.h> X#include <libraries/dos.h> X XBPTR stdin, stdout; Xint subdisp = TRUE, verbose = FALSE; X Xchar *error_message[] = { X "No default directory", /* 201 */ X "Object in use", X "Object exists", X "Directory not found", X "Object not found", X "Bad stream name", X "Object too large", X "Unknown error 208", X "Action not known", X "Invalid component name", X "Invalid lock", X "Object is of wrong type", X "Disk not validated", X "Disk write protected", X "Rename across devices", X "Directory not empty", X "Too many levels", X "Device not mounted", X "Seek error", X "Comment too big", X "Disk full", X "Delete protected", X "Write protected", X "Read protected", X "Not a DOS disk", X "No disk" X}; X Xvoid MemCleanup() { } X Xvoid disp_error(int err, char *s) X{ X printf("%ls -- ", s); X X if (err >= 201 && err <= 226) X printf(error_message[err - 201]); X else X switch (err) { X case 0: X printf("No error!!!"); X break; X case ERROR_NO_FREE_STORE: X printf("No free store"); X break; X case ERROR_NO_MORE_ENTRIES: X printf("No more entries"); X break; X default: X printf("Unknown error %ld", err); X break; X } X putchar('\n'); X} X Xchar *pathcat(to,from) Xregister char to[], from[]; X{ X register int l; X X l = strlen(to) - 1; X if (l < 0 || to[l] == ':' || to[l] == '/') X strcat(to,from); X else X strcat(strcat(to, "/"), from); X X return (to); X} X Xstruct FileInfoBlock *GetInfo(char *name, long access, BPTR *lock) X{ X struct FileInfoBlock *fib; X X *lock = Lock(name, access); X if (*lock == NULL) X return (NULL); X X fib = (struct FileInfoBlock *)AllocMem(sizeof(struct FileInfoBlock), 0); X if (fib == NULL) { X UnLock(*lock); X return (NULL); X } X X if (Examine(*lock, fib)) return (fib); X return (NULL); X} X Xvoid FreeInfo(struct FileInfoBlock *fib, BPTR lock) X{ X FreeMem((char *)fib, sizeof(struct FileInfoBlock)); X UnLock(lock); X} X Xint check_size(char *name, long *bytes, long *blocks, long *files, int display) X X{ X struct FileInfoBlock *fib; X BPTR l; X int err = 0; X long byt = 0, blk = 0, fil = 0; X X fib = GetInfo(name, SHARED_LOCK, &l); X if (fib == NULL) X return (IoErr()); X X if (fib->fib_DirEntryType > 0) /* Directory */ X { X while (err == 0 && ExNext(l, fib)) /* Scan all files */ X { X byt += fib->fib_Size; X blk += fib->fib_NumBlocks + 1; X X if (fib->fib_DirEntryType > 0) /* File is a directory */ X { X int len = strlen(name) + strlen(fib->fib_FileName) + 2; X char *newname = AllocMem(len, 0); X X if (newname) X { X pathcat(strcpy(newname, name), fib->fib_FileName); X err = check_size(newname, &byt, &blk, &fil, subdisp); X FreeMem(newname, len); X } X else err = ERROR_NO_FREE_STORE; X } X else fil++; X } X } X else X { X byt = fib->fib_Size; X blk = fib->fib_NumBlocks + 1; X fil = 1; X } X if (err == 0) err = IoErr(); X X FreeInfo(fib, l); X X if (err != ERROR_NO_MORE_ENTRIES) { X return (err); X } X if (display) X { X char *dirname = *name ? name : "."; X X if (verbose) X printf("%ls: %ld bytes, approximately %ld blocks in %ld files\n", X dirname, byt, blk, fil); X else X printf("%ld\t%ls\n", blk, dirname); X } X *bytes += byt; X *blocks += blk; X *files += fil; X X return 0; X} X X/* du [-s] [-v] [names] */ Xint analyse_opts(int argc, char **argv, int *nargc, char ***nargv) X{ X char *pname = *argv; X X argv++; X argc--; X X while (argc != 0 && **argv == '-') X { X if ((*argv)[2] == '\0') X switch ((*argv)[1]) X { X case 's': X subdisp = FALSE; X break; X case 'v': X verbose = TRUE; X break; X default: X goto help; X } X else X goto help; X X argv++; argc--; X } X *nargc = argc; *nargv = argv; X return TRUE; X Xhelp: X printf("Usage: %ls [-s] [-v] [names]\n", pname); X return FALSE; X} X Xvoid main(int argc, char *argv[]) X{ X int err; X long bytes = 0, blocks = 0, files = 0; X X stdin = Input(); X stdout = Output(); X X if (analyse_opts(argc, argv, &argc, &argv)) X { X if (argc == 0) X err = check_size("", &bytes, &blocks, &files, TRUE); X else X do X { X bytes = blocks = files = 0; X err = check_size(*argv, &bytes, &blocks, &files, TRUE); X } X while ((argv++, --argc) && err == 0); X X if (err) disp_error(err, "failed"); X } X} X SHAR_EOF echo "extracting du.doc.uu" sed 's/^X//' << \SHAR_EOF > du.doc.uu X Xbegin 644 du.doc XM"B`@("`@1%4H,2D@("`@("`@("`@("`@("`@("`@("`@("!5<V5R(&UA;G5A6 XM;"`@("`@("`@("`@("`@("`@("`@("`@("!$52@Q*0H*"@H@("`@()LQ;4Y!W XM344*("`@("`@("`@()LP;61U("T@<W5M;6%R:7-E(&1I<VL@=7-A9V4*"B`@$ XM("`@FS%M4UE.3U!325,*("`@("`@("`@(&1U()LP;5L@+9LQ;7,@FS!M72!;@ XM("V;,6UV()LP;5T@6R!N86UE<R!="@H@("`@()LQ;41%4T-225!424]."B`@8 XM("`@("`@("";,&V;-&UD=9LP;2!R97!O<G1S('1H92!N=6UB97(@;V8@8FQO0 XM8VMS(&-O;G1A:6YE9"!I;B!T:&4@9&ER96-T;W)I97,*("`@("`@("`@('-P8 XM96-I9FEE9"!I;B`@FS1M;F%M97.;,&TN("`@($EF("!N;VYE("!A<F4@<W!EU XM8VEF:65D+"!T:&4@8W5R<F5N=`H@("`@("`@("`@9&ER96-T;W)Y(&ES('5SW XM960N"@H@("`@("`@("`@5&AE(&9O;&QO=VEN9R!O<'1I;VYS(&%R92!R96-OJ XM9VYI<V5D.@H*("`@("`@("`@("V;,6USH)LP;:"@('1H92!T;W1A;',@9F]RX XM('1H92!S=6(M9&ER96-T;W)I97,@(&%R92`@;F]T("!P<FEN=&5D+`H@("`@* XM("`@("`@("`@("!O;FQY('1H92!G<F%N9"!T;W1A;"!F;W(@96%C:"!D:7)E/ XM8W1O<GD@:6X@FS1M;F%M97.;,&TN"@H@("`@("`@("`@+9LQ;7:@FS!MH*`@F XM('-W:71C:&5S("!O;B`@=F5R8F]S92!M;V1E+"!W:&5R92!T:&4@;G5M8F5R3 XM(&]F(&9I;&5S"B`@("`@("`@("`@("`@(&%N9"!B>71E<R!I<R!A;'-O(&=I' XM=F5N+@H*("`@("";,6U"54=3"B`@("`@("`@("";,&U4:&4@<VEZ97,@;V8@; XM9FEL97,@9VEV96X@87,@87)G=6UE;G1S(&%R92!N;W0@;&ES=&5D+@H*("`@& XM("`@("`@()LT;61UFS!M(&%S<W5M97,@=&AA="!E86-H(&9I;&4@:&5A9&5R9 XM(&-O;G-U;65S("!O;F4@(&)L;V-K+"`@=&AI<PH@("`@("`@("`@;6%Y(&YO, XM="!N96-E<W-A<FEL>2!B92!T<G5E+@H*("`@("`@("`@(%1H92!C=7)R96YT# XM(&1I<F5C=&]R>2!I<R!P<FEN=&5D(&%S("XL(&YO="!A<R!A(&)L86YK+@H*% XL"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@+3$M"@H*S X`` Xend Xsize 1034 SHAR_EOF echo "extracting du.uu" sed 's/^X//' << \SHAR_EOF > du.uu X Xbegin 644 du XM```#\P`````````#``````````(```'J`````````-$```/I```!ZB1()`!)G XM^0````!'^0```NQR`"`\````%F`")L%1R/_\+'@`!"E.`R0I3P,L0JP#*"9N" XM`11P`"(\```P`$ZN_LXI:P"8`R!*JP"L9P``<"`/D*\`!`:`````@"E``O!A6 XM``$N(&L`K-'(T<@B:``0T\G3R2`"<@`2&2E)`S30@5*`0F=2@`)`__Z?P%6`C XM0G<(`"`"4X#4@1^R```@`%."4<C_]A^\`"`@`%."'[$@`"``4<K_^")/+PE@Z XM``!X*6L`.@+P<']2@-&L`O!A``#"0>L`7$ZN_H!!ZP!<3J[^C"E``R@O`"1`" XM("H`)&<2+&P#0"!`(B@``"E!`R!.KO^"(BH`(&<:)#P```/M3J[_XBE``S!G3 XM"N6(($`G:``(`*0@;`,H+PA(;`+L(&@`)"EH``0#-$ZZ!91.N@64<`!@!"`O_ XM``0O`"`L`QAG!"!`3I!.N@!<+'@`!")L`T!.KOYB3KH%:DJL`RAG&B(L`S!G] XM!$ZN_]PL>``$3J[_?")L`RA.KOZ&(!\N;`,L3G5P9&"T0_H`$'``3J[]V"E`= XM`T!G[$YU9&]S+FQI8G)A<GD`3G5.50``+P<N+P`,+RT`#$AL`C1.N@2R4$]PF XM-D8`OH!M''!QT("^@&X4(`?E@$'L_J@O,`@`3KH$D%A/8$8@!PR`````Z&<D) XM#(````!G9Q!*@&8D2&P"/$ZZ!&Y83V`D2&P"2$ZZ!&)83V`82&P"5DZZ!%98F XM3V`,+P=(;`)F3KH$2%!/2'@`"DZZ!%HN+?_\3EU.=4Y5__A(YP$P)F\`'"!+* XM2AAF_%.(D<L@""X`4X=M$B1+U<<0$G(ZL`%G!G(OL`%F#B\M``PO"TZZ!1A0^ XM3V`82&P">"\+3KH%"BZM``PO`$ZZ!0!/[P`,(`M,WPR`3EU.=4Y5``!(YR`RG XM)F\`&"1O`"`B"R0M``PL;`-`3J[_K"2`9@1P`&`Z(#P```$$<@`L>``$3J[_Z XM.B9`(`MF#B(2+&P#0$ZN_Z9P`&`6(A(D"RQL`T!.KO^:2H!G!"`+8`)P`$S?% XM3`1.74YU3E4``"\.(FT`""`\```!!"QX``1.KO\N(BT`#"QL`T!.KO^F+%].7 XM74YU3E7_W$CG(3(F;P!`?@!P`"M`__`K0/_L*T#_Z$AM__1(>/_^+PMA`/]&J XM3^\`#"1`2H!F#"QL`T!.KO]\8``!<"`J``1*@&\``,)@``"D("H`?-&M__`@M XM*@"`4H#1K?_L("H`!$J`;P``A"!+2AAF_%.(D<M#Z@`(+$E*'F;\4XZ=R2`(Y XM(@[0@52`+T``&"])`!QR`"QX``1.KO\Z+T``%$J`9T0@2R)`$MAF_"!`+R\`. XM'"\(80#^6"ZL``!(;?_H2&W_[$AM__`O+P`H80#_,D_O`!@N`")O`!0@+P`8L XM+'@`!$ZN_RY@"'YG8`12K?_H2H=F+"(M__0D"BQL`T!.KO^42H!F`/](8!8K] XM:@!\__`@*@"`4H`K0/_L<`$K0/_H2H=F"BQL`T!.KO]\+@`O+?_T+PIA`/Z@2 XM4$]P=-"`OH!G!"`'8&A*K0`89T)*$V<$($M@!$'L`GHD2$JL``1G'"\M_^@O^ XM+?_L+RW_\"\*2&P"?$ZZ`<Y/[P`48!(O"B\M_^Q(;`*T3KH!ND_O``P@+?_P< XM(&T`#-&0("W_["!M`!#1D"`M_^@@;0`4T9!P`$S?3(1.74YU3E7_\$CG`3`F7 XM;0`,+BT`""!31>L`!%.'+T@`#&`H2BL``F8^$"L``4B`#$``=F<,#$``<V8L- XM0JP``&`&<`$I0``$6(I3ATJ'9P@F4G`ML!-GS"!M`!`@AR!M`!0@BG`!8`XO6 XM+P`,2&P"ODZZ`2!P`$SM#(#_Y$Y=3G5.5?_P2.<!`G``*T#_^"M`__0K0/_PL XM+&P#0$ZN_\HI0`,X3J[_Q"E``SQ(;0`,2&T`""\M``PO+0`(80#_2D_O`!!*W XM@&=R2JT`"&8@2'@``4AM__!(;?_T2&W_^$AL`MQA`/UN3^\`%"X`8#QP`"M`L XM__`K0/_T*T#_^$AX``%(;?_P2&W_]$AM__@@;0`,+Q!A`/T^3^\`%"X`6*T`A XM#%.M``AG!$J'9\1*AV<,2&P"WB\'80#[F%!/3-]`@$Y=3G4``$CG`#HH;P`4) XM(&\`&")O`!Q%^@`Z3^__="9/+'D````$3J[]]G#_2AM7R/_\1H!G$B\`2&\`> XM!$A43KD```:L3^\`#$_O`(Q,WUP`3G46P$YU("\`!$AO``@O`"\Y```#/$ZY_ XM```&)$_O``Q.=1`O``=(@$C`+P!(>0```NA.N0``!G10CTYU``!(YS`"+'D`0 XM``-`3.\`#@`03J[_T$S?0`Q.=0``3G5.=4Y5_W1(YP$P)F\`H'X`<""^@&P`* XM`((0$W(@L`%G#'()L`%G!G(*L`%F!%*+8.A*$V=D(`?E@%*'0>W_=-'`)$AP+ XM(K`39B92BR2+2A-G"G`BL!-G!%*+8/)*$V8,2'@``4ZZ^A!83V"F0AM@HB2+7 XM2A-G&!`3<B"P`6<0<@FP`6<*<@JP`6<$4HM@Y$H39@)@!D(;8`#_>DJ'9P9!O XM[?]T8`0@;`,H+P@O!TZZ_>Q"ETZZ^<),[0R`_VA.74YU````````<&$B;P`(Y XM(&\`!"`(2AAF_%.($-EF_$YU``````/L`````P````````:B```&A@``!EX`R XM```%`````@``!K(```:<```&@`````P````&`````````_(```/I````````: XM`_(```/J````NP````$`````3F\@9&5F875L="!D:7)E8W1O<GD``$]B:F5CX XM="!I;B!U<V4`3V)J96-T(&5X:7-T<P!$:7)E8W1O<GD@;F]T(&9O=6YD`$]B" XM:F5C="!N;W0@9F]U;F0``$)A9"!S=')E86T@;F%M90!/8FIE8W0@=&]O(&QA] XM<F=E``!5;FMN;W=N(&5R<F]R(#(P.`!!8W1I;VX@;F]T(&MN;W=N``!);G9A< XM;&ED(&-O;7!O;F5N="!N86UE``!);G9A;&ED(&QO8VL``$]B:F5C="!I<R!O? XM9B!W<F]N9R!T>7!E`$1I<VL@;F]T('9A;&ED871E9```1&ES:R!W<FET92!P% XM<F]T96-T960``%)E;F%M92!A8W)O<W,@9&5V:6-E<P!$:7)E8W1O<GD@;F]T& XM(&5M<'1Y`%1O;R!M86YY(&QE=F5L<P!$979I8V4@;F]T(&UO=6YT960``%-E6 XM96L@97)R;W(``$-O;6UE;G0@=&]O(&)I9P!$:7-K(&9U;&P`1&5L971E('!RD XM;W1E8W1E9```5W)I=&4@<')O=&5C=&5D`%)E860@<')O=&5C=&5D``!.;W0@4 XM82!$3U,@9&ES:P``3F\@9&ES:P`````(````'@```"P````Z````3@```&``T XM``!P````@@```)0```"F````O@```,P```#D````^````0X```$D```!.```_ XM`4@```%<```!:````7@```&"```!E````:0```&T```!Q"5L<R`M+2``3F\@Z XM97)R;W(A(2$`3F\@9G)E92!S=&]R90!.;R!M;W)E(&5N=')I97,`56YK;F]W% XM;B!E<G)O<B`E;&0`+P`N`"5L<SH@)6QD(&)Y=&5S+"!A<'!R;WAI;6%T96QY? XM("5L9"!B;&]C:W,@:6X@)6QD(&9I;&5S"@``)6QD"25L<PH``%5S86=E.B`E\ XM;',@6RUS72!;+79=(%MN86UE<UT*````9F%I;&5D`````"5L8P````/L````0 XM&@````(```(P```"+````B@```(D```"(````AP```(8```"%````A````(,< XM```""````@0```(````!_````?@```'T```!\````>P```'H```!Y````>``* X;``'<```!V````=0```'0```!S`````````/R> X`` Xend Xsize 2952 SHAR_EOF echo "extracting getoptx.3" sed 's/^X//' << \SHAR_EOF > getoptx.3 X.TH GETOPTX 3 local X.SH NAME Xgetoptx - decode command line options X.SH SYNOPSIS X.B "char getoptx(argc, argv, optstring) X int argc; X char *argv[]; X char *optstring; X extern int optind, opterr; X extern char *optarg; X.SH DESCRIPTION X.I getoptx Xreturns a character which is either (a) one of the known option characters Xspecified in X.IR optstring , X(b) a question mark character (?) if the option is unknown or Xincorrectly specified, or X.B EOF Xif all options have been returned. If the caller has specified that an Xoption requires or accepts an argument, the string value of the argument Xis returned in X.IR optarg . XIn the case of an optional argument X.I optarg Xmay point to an empty ("") string. X.SS Format of optstring X.I optstring Xcontains the values of the option characters which are recognized. In Xaddition any character may be followed by a colon (:) is it requires an Xargument, or an asterisk (*) if it accepts an optional argument. X.SS Format of the command line XThe command line parsed by X.I getoptx Xconsists of the command name, followed by zero or more options separated Xby blanks, followed by arguments to the command. The options are ended Xby any of (a) the end of data on the command line, (b) a token which Xdoes not start with a hyphen (-), or (c) the special token --. X.SS Using ? as a valid option XAlthough X.I getoptx Xreturns the ? as an indication of an unknown option, or one used Xwithout a required argument, the ? may be included in the X.I optstr Xso that ? becomes a known option. The effect is that specifying any Xinvalid option will generate an error message, while using -? as an Xoption does not. In either case a ? returned from X.I getoptx Xcan be used to display a usage message. X.br X.ne 1.5i X.SH EXAMPLES X.tr ~ X cval = getoptx(argc, argv, "al:sD*"); X XThe options 'a' and 's' are returned without arguments. The option 'l' Xrequires an argument, which may be part of the same command line token Xas the option (as:~-l40) or as the following token (as:~-c~40). The Xoption 'D' may be immediately followed by an argument, and if there is Xno argument it must be the last option in the token. X.br X.ne 1.5i X.SH WARNINGS XA warning message is displayed on X.B stderr Xand the character ? is returned is either (a) an option character not in X.I optstr Xis found, or (b) a known option which requires an argument does not have Xone. If the variable X.I opterr Xis set to zero the warning message will not be displayed. X.br X.ne 1.5i X.SH SEE ALSO X.SH LIMITATIONS XThe characters colon (:) and asterisk (*) may not be option characters. X.br X.ne 1.5i X.SH AUTHOR XMan page by Bill Davidsen (davidsen@crdos1.crd.ge.com). Original getopt Xsource attributed to AT&T public domain version from 1985 UNIFORUM, Xchanges by Bill Davidsen. All original work by Bill Davidsen is hereby Xplaced in the public domain. SHAR_EOF echo "extracting getoptx.c" sed 's/^X//' << \SHAR_EOF > getoptx.c X/* X** @(#)getopt.c 2.5 (smail) 9/15/87 X*/ X X/* X * NOTE: this source has been hacked to allow * in the optstring, X * meaning "an optional argument which must follow the option X * character without a blank." Read the comments following with X * that in mind. X * bill davidsen (davidsen@crdos1.crd.ge.com) June 1989 X */ X X#define OptArgFlg '*' X X/* X * Here's something you've all been waiting for: the AT&T public domain X * source for getopt(3). It is the code which was given out at the 1985 X * UNIFORUM conference in Dallas. I obtained it by electronic mail X * directly from AT&T. The people there assure me that it is indeed X * in the public domain. X * X * There is no manual page. That is because the one they gave out at X * UNIFORUM was slightly different from the current System V Release 2 X * manual page. The difference apparently involved a note about the X * famous rules 5 and 6, recommending using white space between an option X * and its first argument, and not grouping options that have arguments. X * Getopt itself is currently lenient about both of these things White X * space is allowed, but not mandatory, and the last option in a group can X * have an argument. That particular version of the man page evidently X * has no official existence, and my source at AT&T did not send a copy. X * The current SVR2 man page reflects the actual behavor of this getopt. X * However, I am not about to post a copy of anything licensed by AT&T. X */ X X/* for SysV use strchr instead of index */ X#if defined(USG) || defined(AMIGA) X#define index strchr X#define rindex strrchr X#endif X X/*LINTLIBRARY*/ X#define NULL 0 X#define EOF (-1) X#define ERR(s, c) if(opterr){\ X extern int write();\ X char errbuf[2];\ X errbuf[0] = c; errbuf[1] = '\n';\ X (void) write(2, argv[0], (unsigned)strlen(argv[0]));\ X (void) write(2, s, (unsigned)strlen(s));\ X (void) write(2, errbuf, 2);} X. Xextern char *index(); X Xint opterr = 1; Xint optind = 1; Xint optopt; Xchar *optarg; X Xint Xgetoptx(argc, argv, opts) Xint argc; Xchar **argv, *opts; X{ X static int sp = 1; X register int c, ch; X register char *cp; X X if(sp == 1) X if(optind >= argc || X argv[optind][0] != '-' || argv[optind][1] == '\0') X return(EOF); X else if(strcmp(argv[optind], "--") == NULL) { X optind++; X return(EOF); X } X. X optopt = c = argv[optind][sp]; X if(c == ':' || c == OptArgFlg || (cp=index(opts, c)) == NULL) { X ERR(": illegal option -- ", c); X if(argv[optind][++sp] == '\0') { X optind++; X sp = 1; X } X return('?'); X } X if((ch = *++cp) == OptArgFlg) { X if(argv[optind][sp+1] != '\0') X optarg = &argv[optind++][sp+1]; X else { X optarg = ""; X optind++; X sp = 1; X } X } X else if(ch == ':') { X if(argv[optind][sp+1] != '\0') X optarg = &argv[optind++][sp+1]; X else if(++optind >= argc) { X ERR(": option requires an argument -- ", c); X sp = 1; X return('?'); X } else X optarg = argv[optind++]; X sp = 1; X } else { X if(argv[optind][++sp] == '\0') { X sp = 1; X optind++; X } X optarg = NULL; X } X return(c); X} SHAR_EOF echo "extracting lmkfile" sed 's/^X//' << \SHAR_EOF > lmkfile Xall: cut tee tail du X echo "All done" X Xcut: cut.c getoptx.o X lc -v -O -Lcdv+getoptx.o cut X Xgetoptx.o: getoptx.c X lc -v -O getoptx X X Xtee: tee.c X lc -v -O -Lcdv tee X Xtail: tail.c X lc -v -O -Lcdv tail X Xdu: du.c X lc -v -O du X blink from lib:c.o+du.o to du lib lib:amiga.lib+lib:lc.lib define __main = X__tinymain sc sd nd X Xcode: X uuencode cut cut >cut.uu X uuencode tee tee >tee.uu X uuencode tail tail >tail.uu X uuencode du du >du.uu X uuencode cut.doc cut.doc >cut.doc.uu X uuencode tee.doc tee.doc >tee.doc.uu X uuencode tail.doc tail.doc >tail.doc.uu X uuencode du.doc du.doc >du.doc.uu X Xdecode: X uudecode cut.doc.uu X uudecode tee.doc.uu X uudecode tail.doc.uu X uudecode du.doc.uu X uudecode cut.uu X uudecode tee.uu X uudecode tail.uu X uudecode du.uu X Xshar: X shar -p X README cut.c cut.doc.uu cut.uu tee.c tee.doc.uu tee.uu tail.c tai Xl.doc.uu tail.uu du.c du.doc.uu du.uu getoptx.3 getoptx.c lmkfile >utils.shar X X SHAR_EOF echo "extracting tail.c" sed 's/^X//' << \SHAR_EOF > tail.c X#include <stdio.h> X#include <string.h> X#include <stdlib.h> X#include <ctype.h> X X#define BUG X#define LINESIZE 256 X#define FALSE 0 X#define TRUE 1 X XFILE *in; Xlong nb = 10; Xint charmode = FALSE; Xint keeplast = TRUE; X Xvoid charnofirst() X{ X int c; X X while (--nb > 0 && getc(in) != EOF) ; X X while ((c = getc(in)) != EOF && putchar(c) != EOF) ; X} X Xvoid linenofirst() X{ X char buf[LINESIZE + 1]; /* Ensure NULL byte at end ... */ X X while (--nb > 0 && fgets(buf, LINESIZE, in)) ; X X while (fgets(buf, LINESIZE, in) && fputs(buf, stdout) == 0) ; X} X Xvoid charlast() X{ X char *buf; X int buffull; X long readsize; X X buf = malloc(nb); X if (!buf) X { X fputs("No memory !\n", stderr); X exit(10); X } X X buffull = FALSE; X X while ((readsize = fread(buf, 1, nb, in)) == nb) buffull = TRUE; X X if (buffull) if (!fwrite(buf + readsize, nb - readsize, 1, stdout)) return; X X fwrite(buf, readsize, 1, stdout); X} X Xvoid linelast() X{ X typedef char LINEBUF[LINESIZE + 1]; X LINEBUF *buf, *bufpos, *bufend, *scanbuf; X int buffull; X X#ifdef BUG X nb++; X#endif X X buf = (LINEBUF *)malloc(nb * (LINESIZE + 1)); X if (!buf) X { X fputs("No memory !\n", stderr); X exit(10); X } X X bufend = buf + nb; X bufpos = buf; buffull = FALSE; X X while (fgets(*bufpos, LINESIZE, in)) X { X bufpos++; X if (bufpos == bufend) X { X bufpos = buf; X buffull = TRUE; X } X } X X X if (buffull) X for (scanbuf = bufpos; scanbuf != bufend; scanbuf++) X if (fputs(*scanbuf, stdout) != 0) return; X X for (scanbuf = buf; scanbuf != bufpos; scanbuf++) X if (fputs(*scanbuf, stdout) != 0) return; X} X X/* X +nb<l/c> X -nb<l/c> X -l/c X*/ X Xint analyse_opts(opt) Xchar *opt; X{ X if (opt[0] != '+' && opt[0] != '-') return(FALSE); X X if (opt[0] == '+') X { X int l; X X l = stcd_l(++opt, &nb); X if (l == 0) return(FALSE); X opt += l; X keeplast = FALSE; X } X else X if (isdigit(*++opt)) opt += stcd_l(opt, &nb); X X if (opt[0] == 'l') opt++; X else if (opt[0] == 'c') { charmode = TRUE; opt++; } X X return(opt[0] == '\0'); X} X Xvoid main(argc, argv) Xint argc; Xchar **argv; X{ X int usage = TRUE; X X if (argc == 1) X { X in = stdin; X usage = TRUE; X } X else if (argc == 2) X { X in = stdin; X usage = analyse_opts(argv[1]); X } X else if (argc == 3) X { X if (usage = analyse_opts(argv[1])) X { X in = fopen(argv[2], "r"); X if (!in) X { X fputs("Couldn't open file\n", stderr); X exit(10); X } X } X } X else usage = FALSE; X X if (!usage) X fputs("Usage: tail [+/-number][l/c] [file]\n", stderr); X else X { X if (charmode) X if (keeplast) X charlast(); X else X charnofirst(); X else X if (keeplast) X linelast(); X else X linenofirst(); X } X} X SHAR_EOF echo "extracting tail.doc.uu" sed 's/^X//' << \SHAR_EOF > tail.doc.uu X Xbegin 644 tail.doc XM"B`@("`@5$%)3"@Q*2`@("`@("`@("`@("`@("`@("`@("!5<V5R(&UA;G5AG XM;"`@("`@("`@("`@("`@("`@("`@("`@5$%)3"@Q*0H*"@H@("`@()LQ;4Y!( XM344*("`@("`@("`@()LP;71A:6P@+2!E>'1R86-T(&5N9"!O9B!F:6QE"@H@F XM("`@()LQ;5-93D]04TE3"B`@("`@("`@("!T86EL()LP;5L@*R\M(%L@;G5MZ XM8F5R(%T@FS%M;&,@FS!M72!;(&9I;&4@70H*("`@("";,6U$15-#4DE05$E/N XM3@H@("`@("`@("`@FS!MFS1M=&%I;)LP;2`@8V]P:65S("!P87)T("!O9B`@] XMFS1M9FEL99LP;2`@*&]R("!S=&%N9&%R9"`@:6YP=70@(&EF("!N;VYE"B`@G XM("`@("`@("!S<&5C:69I960I('1O('-T86YD87)D(&]U='!U="X*"B`@("`@\ XM("`@("!4:&4@9FER<W0@;W!T:6]N('-P96-I9FEE<R!W:&5R92!T;R!S=&%RU XM="!C;W!Y:6YG+"!E:71H97(@870*("`@("`@("`@(&QI;F4@*&]R(&-H87)A) XM8W1E<BD@;B`H;W!T:6]N(&ES("N;-&UNFS!M*2!O<B!N(&QI;F5S("AC:&%R( XM86-T97)S*0H@("`@("`@("`@8F5F;W)E('1H92!E;F0@*&]P=&EO;B!I<R`M* XMFS1M;ILP;2DN("";-&ULFS!M('-P96-I9FEE<R`@=&AA="`@=6YI=',@(&]FM XM"B`@("`@("`@("!L:6YE<R!A<F4@=7-E9"P@FS1M8YLP;2!M96%N<R!C:&%RC XM86-T97)S+@H*("`@("";,6U%6$%-4$Q%4PH*("`@("`@("`@("`@("`@FS!MH XM=&%I;"`M,VP@9VQU<',*"B`@("`@("`@("!O=71P=71S('1H92!L87-T(#,@! XM;&EN97,@;V8@9FEL92";-&UG;'5P<YLP;2X*"B`@("`@("`@("`@("`@(&QI& XM<W0@?"!T86EL("LR-6,*"B`@("`@("`@("!P<FEN=',@(&%L;"!B=70@=&AE; XM(&9I<G-T(#(T("AO=71P=70@FS%M<W1A<G1S()LP;6%T(&-H87)A8W1E<B`R- XM-2D*("`@("`@("`@(&-H87)A8W1E<G,@(&]F("!T:&4@(&]U='!U="`@;V8@$ XM()LT;6QI<W2;,&T@("AW:71H("!A;B`@87!R;W!R:6%T90H@("`@("`@("`@$ XM<VAE;&PI+@H*("`@("";,6U"54=3"B`@("`@("`@("";,&U486EL<R`@<F5L/ XM871I=F4@('1O("!T:&4@(&5N9"`@;V8@('1H92`@9FEL92!A<F4@<W1O<F5DS XM(&EN(&$*("`@("`@("`@(&)U9F9E<BP@=VAI8V@@:7,@86QL;V-A=&5D(&%T5 XM(')U;BUT:6UE+"!A;F0@=&AU<R!A<F4@;&EM:71E9`H@("`@("`@("`@:6X@5 XM;&5N9W1H+@H*("`@("`@("`@($QI;F5S(&QO;F=E<B!T:&%N(#(U-2!C:&%RK XM86-T97)S('=I;&P@8F4@<W!L:70N"@H@("`@("`@("`@5VAE;B!O;FQY(&]N` XM92!A<F=U;65N="!I<R!S<&5C:69I960L(&ET(&ES(&%S<W5M960@=&\@8F4@Q XM=&AE"B`@("`@("`@("!O<'1I;VYS+@H*"B`@("`@("`@("`@("`@("`@("`@C X7("`@("`@("`@("`@("`@("`@+3$M"@H*I X`` Xend Xsize 1328 SHAR_EOF echo "extracting tail.uu" sed 's/^X//' << \SHAR_EOF > tail.uu X Xbegin 644 tail XM```#\P`````````#``````````(```;]`````````2X```/I```&_21()`!)U XM^0````!'^0```DAR`"`\````G&`")L%1R/_\+'@`!"E.`H`I3P*(0JP"A"9NU XM`11P`"(\```P`$ZN_LXI:P"8`GQ*JP"L9P``<"`/D*\`!`:`````@"E``DQA- XM``$N(&L`K-'(T<@B:``0T\G3R2`"<@`2&2E)`I#0@5*`0F=2@`)`__Z?P%6`^ XM0G<(`"`"4X#4@1^R```@`%."4<C_]A^\`"`@`%."'[$@`"``4<K_^")/+PE@Z XM``!X*6L`.@),<']2@-&L`DQA``#"0>L`7$ZN_H!!ZP!<3J[^C"E``H0O`"1`5 XM("H`)&<2+&P$J"!`(B@``"E!`GQ.KO^"(BH`(&<:)#P```/M3J[_XBE``HQGR XM"N6(($`G:``(`*0@;`*$+PA(;`)((&@`)"EH``0"D$ZZ!!1.N@1\<`!@!"`OW XM``0O`"`L`G1G!"!`3I!.NAH$+'@`!")L!*A.KOYB3KH#ZDJL`H1G&B(L`HQGW XM!$ZN_]PL>``$3J[_?")L`H1.KOZ&(!\N;`*(3G5P9&"T0_H`$'``3J[]V"E`3 XM!*AG[$YU9&]S+FQI8G)A<GD`+P=3K```;RX@;`*44Z@`"&T6(&P"E"!H``0BU XM;`*44JD`!'``$!!@"B\L`I1.N@CJ6$]2@&;,(&P"E%.H``AM%B!L`I0@:``$G XM(FP"E%*I``1P`!`08`HO+`*43KH(O%A/+@!2@&<P4ZP`KFT2(&P`IE*L`*8@Z XM!Q"`<@`2`&`4(`=R`!(`2&P`HB\!3KH%\%!/(@!2@6:@+A].=4Y5_OY3K```% XM;Q@O+`*42'@!`$AM_O].NA(>3^\`#$J`9N(O+`*42'@!`$AM_O].NA(&3^\`! XM#$J`9Q)(;`"B2&W^_TZZ#Z)03TJ`9]9.74YU2.<#$"\L``!.N@T\6$\F0"`+* XM9AA(;`#$2&P`#$ZZ#WA(>``*3KH2@$_O``Q^`&`"?@$O+`*4+RP``$AX``$O. XM"TZZ#N1/[P`0+`"\K```9^!*AV<B($O1QB`L``"0ADAL`*)(>``!+P`O"$ZZQ XM#DI/[P`02H!G%$AL`*)(>``!+P8O"TZZ#C)/[P`03-\(P$YU3E7_^$CG`3!2) XMK```("P``"(\```!`4ZZ%)HO`$ZZ#)A83R9`($LO2``0(`MF&$AL`,1(;``:7 XM3KH.SDAX``I.NA'63^\`#"`L```B/````0%.NA1@($O7P")+)$A^`"])``Q@, XM#M3\`0&URV8&)&\`$'X!+RP"E$AX`0`O"DZZ$-A/[P`,2H!FW$J'9QXF2F`49 XM2&P`HB\+3KH.;E!/2H!F*-;\`0&W[P`,9N8F;P`08!1(;`"B+PM.N@Y.4$]*3 XM@&8(UOP!`;?*9NA,WPR`3EU.=4Y5__A(YR$0)FT`"!`3<BNP`6<*="VP`F<$K XM<`!@:!`;L`%F'DAL```O"TZZ"()03RX`2H=F!'``8$S7QT*L``A@(!`32(!(# XMP$'L`4$(,``""`!G#DAL```O"TZZ"%)03]?`$!-R;+`!9@12BV`.<F.P`68(' XM<@$I00`$4HM*$U?`1`!(@$C`3-\(A$Y=3G5(YP$0+B\`#"9O`!!P`;Z`9@Q!; XM[`"`*4@"E"X`8&)P`KZ`9A9![`"`*4@"E"\K``1A`/]`6$\N`&!&<`.^@&8^1 XM+RL`!&$`_RQ83RX`2H=G,$AL`"@O*P`(3KH-VE!/*4`"E&8<2&P`Q$AL`"I.8 XMN@TZ2'@`"DZZ$$)/[P`,8`)^`$J'9A!(;`#$2&P`/DZZ#1I03V`H2JP`!&<2) XM2JP`"&<&80#]<&`680#\@&`02JP`"&<&80#][F`$80#]"$S?"(!.=0``3G5.$ XM=4CG!S`N+P`8)F\`'"PO`"`O!TZZ%-Q83R1`(`IF!'#_8#8(*@`#``-G$$AX] XM``)"IR\'3KH*K$_O``PO!B\++RH`!$ZZ$`!/[P`,*@!*K`)@9P1P_V`"(`5,& XMWPS@3G4``````````'!A3E7_\$CG(3(F;P`L#*P````@!!)L``"&$!-R(+`!Z XM9PQR";`!9P9R"K`!9@12BV#H2A-G:"`L!!+E@%*L!!)![`0:T<`D2'`BL!-F2 XM)E*+)(M*$V<*<"*P$V<$4HM@\DH39@Q(>``!3KH4Y%A/8)Y"&V":)(M*$V<8& XM$!-R(+`!9Q!R";`!9PIR"K`!9P12BV#D2A-F`F`&0AM@`/]R2JP$$F8&(&P"2 XMA&`$0>P$&BE(!!9*K`029GQ!^@$D0^P#V"+8(M@BV"+8,I`B;`*$(&D`)$AX! XM`"@O*``$2&P#V$ZZ!;I/[P`,0>P#V"(()#P```/N+&P$J$ZN_^(I0`*<*4`"Y XMI'($*4$"H"E``JPI00*HY8"3R2QX``0K0/_P3J[^VB!M__`B0"-H``@`I'X`[ XM*T#_]&`J+&P$J$ZN_\HI0`*<3J[_Q"E``J1!^@"F(@@D/````^U.KO_B*4`"I XMK'X$(`<`0(`!@:P"F"`'`$"``H&L`J``K```@`,"J$JL`.AG!'``8`8@/```I XM@``N`$*L`)P@!P!```$I0`"8<`$I0`"^(`<`0``"*4``NG`"*4``X"`'`$``G XM@"E``-Q!^A%.*4@">"\L!!8O+`023KK]!D*73KH-N$SM3(3_W$Y=3G5C;VXZM XM,3`O,3`O,S(P+S@P+P`J````````````````````````````````````````E XM`````````"\+)F\`"$JK`!1G#`@K``,`&V8$<`!@-B\L`D1.N@E26$\G0``$J XM)T``$$J`9@IP#"E`!*1P_V`6)VP"1``4<//!JP`8<``G0``,)T``""9?3G4`1 XM`````````````````$Y5_^Q(YR\0+B\`-"9O`#@H!W`QP*L`&&<&</]@``)P; XM""L`!P`:5L!$`$B`2,`L`$JK`!1F``"$""L``@`;9GIP`"=```QR_[Z!9P`") XM0B\+3KK_3EA/2H!G#`CK``4`&W#_8``"*@CK``$`&TH&9PX@*P`4(@!$@2=!% XM``Q@""`K`!0G0``,4ZL`#&T6(&L`!$/H``$G20`$(`<0@'(`$@!@$B`'<@`2: XM`"\++P%A`/]24$\B`"`!8``!U@@K``(`&V=8</^^@&8&<`!@``'"(`<;0/__P XM2@9G(G(*OH%F''("+P%(>@&R+RL`'"M!__!.NOPT3^\`#"H`8!IR`2\!2&W_] XM_R\K`!PK0?_P3KK\&$_O``PJ`'[_8```X`CK``$`&TH&9U)P_[Z`9TQ4JP`,@ XM<@J^@68F(&L`!$/H``$G20`$$+P`#2(K``Q*@6L*+PLO`&$`_JY03U*K``P@F XM:P`$0^@``2=)``0@!Q"`(BL`#$J!:P`!''[_("L`!)"K`!`K0/_P9W((*P`&U XM`!IG4DAX``)"IR\K`!Q.N@9L3^\`#"M`_^Q*!F<X4ZW_[&TR0J<O+?_L+RL`1 XM'$ZZ!DQ(>``!2&W__2\K`!Q.N@043^\`&$JL`F!F"A`M__UR&K`!9\@O+?_P, XM+RL`$"\K`!Q.NOLX3^\`#"H`8`)Z`'#_NH!F"`CK``4`&V`,NJW_\&<&".L`W XM!``;2@9G#B(K`!0D`42")T(`#&`8""L``@`;9PAR`"=!``Q@""(K`!0G00`,_ XM(&L`$"=(``2^@&<N4ZL`#&T6(&L`!$/H``$G20`$(`<0@'(`$@!@$B`'<@`2U XM`"\++P%A`/V04$\B`'`PP*L`&&<$</]@#'#_N(!F!'``8`(@!$S?"/1.74YU> XM#0H`````2.<'$"9O`!0(*P`'`!I6P$0`2(!(P"X`<##`JP`89PI"JP`(</]@* XM``%8""L`!P`;9Q0(*P`&`!MG#"\+2'C__TZZ_2)03TJK`!1F-D*K``@(*P`"] XM`!MG$G`!)T``%$'K`"`G2``08```A"\+3KK\EEA/2H!G=@CK``4`&W#_8``!T XM`$H'9V94JP`(("L`"$J`;EH@:P`$0^@``2=)``1\`!P0(`8,@````!IG+@R`. XM````#68R4ZL`"&T4(&L`!$/H``$G20`$<``0$&```+0O"V$`_RY83V```*@(^ XMZP`$`!MP_V```)P@!F```)8(*P`!`!MF3@CK````&R\K`!0O*P`0+RL`'$ZZX XM`CA/[P`,*@!*A6H&".L`!0`;2H5F!@CK``0`&TJ%;QI*!V<*(`5$@"=```A@? XM!"=%``@@:P`0)T@`!'`RP*L`&&<62@=G"'#_)T``"&`&<``G0``(</]@(%.KX XM``AM$B!K``1#Z``!)TD`!'``$!!@""\+80#^A%A/3-\(X$YU``!.5?_X2.<#4 XM,"9O`"`D;P`D+B\`*"!*2AAF_%.(D<HL""!+2AAF_%.(D<L@"")+T\`K2?_XR XMO(=C`BP'(`8@2F`"$MA3@&3Z(&W_^$(P:``@"TS?#,!.74YU(&\`!")(<@!PU XM`"\"#!``*V<&#!``+68"4D@0&`0``#!M$@P```EN#"0!Y8'2@M*!TH!@Y@P1! XM`"UF`D2!)!\@"%.`(&\`"""!D(E.=4Y5_^A(YP$R+B\`-$J';@9P_V```-)P_ XM"+Z`9`(N`"`'5H`N``)'__PD;0`((&T`"-''WZP`>$/L`'0F42M(__`K2?_TU XM(`MG``"0($L@*P`$T<`K2/_L(FW_\+?)8Q`DBR5'``0L;?_T+(IP`&!XM\EF+ XM&BQ3)(X@*P`$(@#2AR5!``0L;?_T+(IP`&!:M<AD")^L`'AP_V!.M<AF+$J3@ XM9PX@4[/(8PB?K`!X</]@.-^K``1*DV<.L]-F"B`I``31JP`$)I%P`&`>*TO_5 XM]"MM_^S_Z"938`#_;B!M__0@BD*2)4<`!'``3-],@$Y=3G4``````````'!AX XM2.<!$"9O``PN+P`0+P<O"TZZ_O903TS?"(!.=4CG!S`N+P`8)F\`'"PO`"`O% XM!TZZ#"183R1`(`IF!'#_8!XO!B\++RH`!$ZZ""A/[P`,*@!*K`)@9P1P_V`"7 XM(`5,WPS@3G4``$Y5_^9(YP\P)F\`.BXO`#Y"+?__0JP"8"ML!*3_\GH#NJP`O XM9&P2(`7G@$'L`IA*L`@`9P12A6#H("P`9+"%9@QP&"E`!*1P_V```2H@!>>`W XM0>P"F-'`)$A*K0`09P@(+0`"`!-G"BM\```#[/_N8`@K?````^[_[B`\``"`! XM`,"L`'RQAP@'``-G#"`'`D#__"X``$<``B`'<@/`@0R``````F<,#(`````!K XM9P1*@&8&+`=2AF`,<!8I0`2D</]@``"T(`<"@````P!G``"("`<`"F<6&WP`Z XM`?__+RW_[B\+3KH'OE!/*`!@/`@'``EF%DAX`^TO"TZZ!V!03R@`2H1J!`C'Q XM``D(!P`)9QH;?``!__\I;?_R!*0O+?_N+PM.N@?D4$\H`$HM__]G-B`'<GC29 XM@<"!2H!G*DJ$:R8O!$ZZ""Q(>`/M+PM.N@<.3^\`#"@`8`Y(>`/M+PM.N@;\& XM4$\H`$JL`F!G!'#_8`@DAB5$``0@!4S?#/!.74YU````````````````````R XM````<&%(YP$P+B\`$$JL!)QG%B1L!)PO$B\L!)Q.NOWR4$^1R"E(!)Q*AV8$8 XM<`!@'EB'+P=.N@$J6$\F0$J`9@1P`&`*)$LDAT'K``0@"$S?#(!.=4CG#Q`NY XM+P`8+"\`'"HO`"`O!TZZ"?Q83R9`(`MF!'#_8!XO!2\&+RL`!$ZZ!81/[P`,K XM*`!*K`)@9P1P_V`"(`1,WPCP3G4``$CG`S`N+P`42H=N!G``8```I'`(OH!DL XM`BX`(`=6@"X``D?__$7L`'0F4B`+9T`@*P`$L(=M,K"'9@P@4R2(GZP`>"`+I XM8&X@*P`$D(=R"+"!918@2]'')(@D2"23)4``!)^L`'@@"V!,)$LF4V"\(`<B\ XM+`#LT(%3@$ZZ!PHB+`#L3KH&XBP`4(8@!E:`+``"1O_\+P9.N@IZ6$\F0"`+E XM9Q(O!B\+3KK[UBZ'80#_5%!/8`)P`$S?#,!.=0``````````<&$O!RXO``@OP XM!TZZ_S)83RX?3G4``$Y5__1(YP\P)F\`+"XO`#0D;P`X?`"\AVQ**BT`#$J%_ XM;SYX`!@;4ZH`#&T6(&H`!$/H``$E20`$(`00@'(`$@!@$B`$<@`2`"\*+P%.9 XMNO:.4$\B`%*!9@0@!F`*4X5@OE*&8+(@!DS?#/!.74YU``!.5?_T2.</,"9O` XM`"PN+P`T)&\`.$JM``QF!'``8$A\`+R';$`J+0`,2H5O-%.J``AM$B!J``1#B XMZ``!)4D`!'``$!!@""\*3KKXP%A/*`!P_[B`9@0@!F`.(`06P%.%8,A2AF"\N XM(`9,WPSP3EU.=0``2.<!,"9O`!`D;P`4?@`>&TJ'9Q(O"B\'3KH`%E!/4H!F, XMZG#_8`)P`$S?#(!.=0``2.<!$"XO``PF;P`0""L`!@`;9Q)P"KZ`9@PO"R\': XM3KKUK%!/8#!3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`+PLO5 XM`4ZZ]7Y03R(`(`%,WPB`3G5.5?_X2.<`,$?L`(`@"V<,2JL`&&<&)$LF4V#P0 XM(`MF(DAX`").NOY:6$\F0$J`9@1P`&`<)(MP(7(`($L0P5'(__PO"R\M``POU XM+0`(3KH`#DSM#`#_\$Y=3G4``$Y5__!(YP\P)F\`-"1O`#A*J@`89P@O"DZZ] XM`;)83RHL`.A^`7``$#-X``Q``&)G"@Q``&%F#'H`8`8J/```@`!2AW(KLC-X9 XM`%?`1`!(@$C`*`!P`!`3#$``=V<``(@,0`!R9T(,0`!A9@``ODAX``PO/```' XM@0(O+0`(3KKZO$_O``PL`'#_O(!F!G``8```T$J$9P9P0-"`8`)P`BX``$=`6 XM`&```(A*A&<$<`)@`G```$"``$AX``PO`"\M``A.NOIX3^\`#"P`</^\@&8&+ XM<`!@``",2H1G!G!`T(!@`G`!+@!@2$J$9P1P`F`"<`$`0(```$`!``!``@!() XM>``,+P`O+0`(3KKZ,D_O``PL`'#_O(!F!'``8$9*A&<&<$#0@&`"<`(N`&`$- XM<`!@,I'()4@`$'``)4``%"5&`!PE:@`0``0E0``,)4``"$J%9@8@/```@``B" XM!X*`)4$`&"`*3-\,\$Y=3G4``$CG#S`F;P`<+B\`("1O`"0H"U.'+`=*AFLT( XM4ZH`"&T2(&H`!$/H``$E20`$<``0$&`(+PI.NO826$\J`'#_NH!G#%.&(`46R XMP'(*NH%FR$(3O(=F!'``8`0@1"`(3-\,\$YU``!(YP,P)F\`%`@K``$`&V<0" XM+PM(>/__3KKS,%!/+@!@`GX`("L`&$*`9Q1*JP`49PXO*P`4+RL`$$ZZ^,Y0D XM3R\K`!Q.N@306$\L`'#_OH!G!DJ&9@)P`$S?#,!.=4CG`Q`N+P`01^P`@"`+] XM9S0(*P`"`!MF*`@K``$`&V<@("L`!)"K`!`L`$J&9Q(O!B\K`!`O*P`<3KKOJ XMUD_O``PF4V#(+P=.N@5\6$],WPC`3G4``$CG-Q`N+P`<)F\`("PO`"1*K`)XP XM9P1.N@340JP"8"(')`LF!BQL!*A.KO_0*@!P_[J`9@Y.KO]\*4`"8'`%*4`$9 XMI"`%3-\([$YU``!(YS\`+B\`'"PO`"`J+P`D2JP">&<$3KH$B$*L`F`@!5.`! XM(@<D!B8`+&P$J$ZN_[XH`'#_N(!F#DZN_WPI0`)@<!8I0`2D(`4,@`````)GL XM%@R``````6<(2H!F&"`&8!0@!-"&8`XB!W0`=@`L;`2H3J[_ODS?`/Q.=0``6 XM2.<W$"XO`!PF;P`@+"\`)$JL`GAG!$ZZ!`Q"K`)@(@<D"R8&+&P$J$ZN_]8JI XM`'#_NH!F#DZN_WPI0`)@<`4I0`2D(`5,WPCL3G4``$CG(Q`F;P`4+B\`&$JLB XM`GAG!$ZZ`\1"K`)@(@LD!RQL!*A.KO_B+`!*AF823J[_?"E``F!P`BE`!*1PF XM_V`"(`9,WPC$3G4``$Y5__Q(YR$0)F\`&$JL`GAG!$ZZ`WQ"K`)@(@MT_BQL5 XM!*A.KO^L+@!*AV<*(@=.KO^F</]@)B(+)#P```/N3J[_XBX`2H=F$DZN_WPIT XM0`)@<`(I0`2D</]@`B`'3-\(A$Y=3G5.5?_\2.<A$"9O`!A*K`)X9P1.N@,8K XM0JP"8"(+=/XL;`2H3J[_K"X`2H=G#"('3J[_IB(+3J[_N"(+)#P```/N3J[_O XMXBX`2H=F$DZN_WPI0`)@<`(I0`2D</]@`B`'3-\(A$Y=3G4``"\'+B\`"$JL, XM`GAG!$ZZ`K8B!RQL!*A.KO_<<``N'TYU2.<P`"0`)@%(0DA#Q,'&P,#!U$-(3 XM0D)"T(),WP`,3G5*@&H``!Y$@$J!:@``#$2!80``($2!3G5A```81(!$@4YU\ XM2H%J```,1(%A```&1(!.=2\"2$$T`68``")(0$A!2$(T`&<```:$P3`"2$`T: XM`(3!,`)(0C(")!].=2\#=A`,00"`9```!N&944,,00@`9```!NF964,,02``" XM9```!N6954-*06L```;CF5-#-`#FJ$A"0D+FJDA#@,$V`#`"-`-(0<3!D()D= XM```(4T/0@63^<@`R`TA#Y[A(0,%!)A\D'TYU3E7_GDCG,S)^`"!L`I`>*/__K XM<$^^@&\"+@`@!T/M_Z]@`A+84X!D^D(U>*^3R2QX``1.KO[:)D!*JP"L9TP@N XM*P"LY8`D0"PJ`#A*AF8$+"L`H$J&9S0B!D'Z`+(D"'8++&P$J$ZN_]`@1U*'; XM(`@;O``*"*\B!D'M_Z\D""8'+&P$J$ZN_]!P_V!.2JP$H&820_H`AG``+'@`R XM!$ZN_=@I0`2@0>W_KRE(`1!(>``\2'@`^G``+P`O`$AL`2Q(;`$82&P!!$*G4 XM3KH!2$_O`"!3@&<$</]@`G``3-],S$Y=3G4J*B!5<V5R($%B;W)T(%)E<75EL XM<W1E9"`J*@``0T].5$E.544``$%"3U)4`"HJ*B!"<F5A:SH@`&EN='5I=&EO3 XM;BYL:6)R87)Y````````````````````2.<!$"XO``PO!TZZ`#Q83R9`(`MF2 XM!'#_8"@(*P`"``-G!G``)H!@&B\K``1.NOV66$]P`":`2JP"8&<$</]@`G``J XM3-\(@$YU+P<N+P`(<``I0`)@2H=K(KZL`&1L'"`'YX!![`*82K`(`&<.(`?G: XM@$'L`IC1P"`(8`AP"2E`!*1P`"X?3G4``$CG`0)P`"(\```P`"QX``1.KO[.2 XM+@`"AP``,`!*AV8$<`!@($JL`GAG&"!L`GA.D$J`9@1P`&`,2'@`%$ZZ`$98O XM3R`'3-]`@$YU8;1.=0``2.<P,BQL!*`@;P`8(F\`'"1O`"`F;P`D("\`*"(O1 XM`"PD+P`P)B\`-$ZN_J1,WTP,3G4``$CG!P`N+P`0("P`9%.`+`!*1FLP(`9(' XMP.>`0>P"F"HP"`!*!6<:"`4``F84(`9(P.>`0>P"F"\P"`1.NOQ\6$]31F#,< XM+P=.NN7V6$],WP#@3G4``$CG`#(F;`2L(`MG%"13(DL@*P`(+'@`!$ZN_RXF% XM2F#HD<@I2`2P*4@$K$S?3`!.=4CG`3(N+P`4<`S>@"`'<@`L>``$3J[_.B9`T XM(`MF!'``8#HG1P`(1>P$K"!J``0G2``$D<@FB$J29@(DBTJJ``1G!B)J``0B( XMBR5+``1*K`!H9@0I2P!H0>L`#"`(3-],@$YU``````````````````````/LL XM`````@````(````,````!@````````/R```#Z0````````/R```#Z@```)(`K XM```*``````````%.;R!M96UO<GD@(0H``$YO(&UE;6]R>2`A"@``<@!#;W5L2 XM9&XG="!O<&5N(&9I;&4*`%5S86=E.B!T86EL(%LK+RUN=6UB97)=6VPO8UT@` XM6V9I;&5="@``````*`````````````````````````````"``````*(`````L XM``````````````````````````````````````#$````````````````````$ XM````````````````````````````````````````````````````````````` XM``````````"`````!`#__P````X`#@```````!F<`````/__````!``$````9 XM``````````#P__\````$``0````````9N`````#__P````0`!````````!G"H XM```````@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0@ XM$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!L XM`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0("`@Z XM("`@("`@("@H*"@H("`@("`@("`@("`@("`@("`@2!`0$!`0$!`0$!`0$!`00 XM$(2$A(2$A(2$A(00$!`0$!`0@8&!@8&!`0$!`0$!`0$!`0$!`0$!`0$!`0$02 XM$!`0$!""@H*"@H("`@("`@("`@("`@("`@("`@("`A`0$!`@```````"````F XM`^P````#`````````3@```$D````_`````,````"```!%````*(```"`````( X%`````_(#X X`` Xend Xsize 7880 SHAR_EOF echo "extracting tee.c" sed 's/^X//' << \SHAR_EOF > tee.c X/* Xtee file1 file2 ... X Xcopies standard input to standard output and file1, file2, ... X*/ X X#include <stdio.h> X#include <stdlib.h> X#include <string.h> X#include <error.h> X#include <ios1.h> X#include <proto/dos.h> X X#define STR(x) # x X X#define TRUE 1 X#define FALSE 0 X X#define WARN 10 X#define ERROR 20 X X#define MAXLEN 256 /* Max line length */ X#define MAXF 10 X Xextern int _bufsiz; Xint err; X Xvoid main(int argc, char **argv) X{ X FILE *files[MAXF]; X int i, f, nb; X char line[MAXLEN + 1], *mode; X X /* Setup stdout */ X if (IsInteractive(chkufb(fileno(stdout))->ufbfh)) X setvbuf(stdout, NULL, _IOLBF, _bufsiz); X X if (argc >= 2 && strcmp(argv[1], "-a") == 0) X { X argc--; X argv++; X mode = "a"; X } X else X mode = "w"; X X if (argc > MAXF) X { X fputs("No more than " STR(MAXF) " files\n", stderr); X nb = MAXF; X } X else X nb = argc; X X for (i = 1, f = 0; i < nb; i++) X { X files[f] = fopen(argv[i], mode); X X if (!files[f]) X { X char buf[81]; X X buf[80] = '\0'; X strcpy(buf, "Error opening "); X strncat(buf, argv[i], 80 - strlen(buf)); X perror(buf); X fflush(stderr); X err = WARN; X } X else X f++; X } X X line[MAXLEN] = '\0'; X while (fgets(line, MAXLEN, stdin) && err < ERROR) X { X fputs(line, stdout); X for (i = 0; i < f && err < ERROR; i++) X { X fputs(line, files[i]); X if (errno != 0) err = ERROR; X } X } X fflush(stdout); X X for (i = 0; i < f && err < ERROR; i++) X { X fclose(files[i]); X if (errno != 0) err = ERROR; X } X if (err >= ERROR) perror("tee failed"); X /* Any files left open will be closed */ X exit(err); X} X SHAR_EOF echo "extracting tee.doc.uu" sed 's/^X//' << \SHAR_EOF > tee.doc.uu X Xbegin 644 tee.doc XM"B`@("`@5$5%*#$I("`@("`@("`@("`@("`@("`@("`@("!5<V5R(&UA;G5A[ XM;"`@("`@("`@("`@("`@("`@("`@("`@(%1%12@Q*0H*"@H@("`@()LQ;4Y!< XM344*("`@("`@("`@()LP;71E92`M('!I<&4@9FET=&EN9PH*("`@("";,6U3" XM64Y/4%-)4PH@("`@("`@("`@=&5E()LP;5L@+9LQ;6$@FS!M72!;(&9I;&5SZ XM(%T*"B`@("`@FS%M1$530U))4%1)3TX*("`@("`@("`@()LP;9LT;71E99LPU XM;2`@8V]P:65S("!S=&%N9&%R9"`@:6YP=70@=&\@<W1A;F1A<F0@;W5T<'5TV XM('=H:6QE(&UA:VEN9PH@("`@("`@("`@8V]P:65S(&]F(&ET(&EN()LT;69IQ XM;&5SFS!M+@H*("`@("`@("`@("V;,6UAH)LP;:"@(&-A=7-E<R!T:&4@8V]P$ XM:65S("!T;R`@8F4@(&%P<&5N9&5D("!T;RP@(')A=&AE<B`@=&AA;@H@("`@V XM("`@("`@("`@("!R97!L86-I;F<L()LT;69I;&5SFS!M+@H*("`@("";,6U"% XM54=3"B`@("`@("`@("";,&U-;W-T("!U<V5F=6P@(&EF("!Y;W4@(&AA=F4@8 XM82!S:&5L;"!T:&%T('-U<'!O<G1S('!I<&EN9R`H96<*("`@("`@("`@(%=3) XM:&5L;"P@05-H96QL*2X*"@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@? X/("`@("`@("`@("TQ+0H*? X`` Xend Xsize 600 SHAR_EOF echo "extracting tee.uu" sed 's/^X//' << \SHAR_EOF > tee.uu X Xbegin 644 tee XM```#\P`````````#``````````(```<R`````````0<```/I```',B1()`!)Z XM^0````!'^0```;!R`"`\````FV`")L%1R/_\+'@`!"E.`>@I3P'P0JP!["9N0 XM`11P`"(\```P`$ZN_LXI:P"8`>1*JP"L9P``<"`/D*\`!`:`````@"E``;1A; XM``$N(&L`K-'(T<@B:``0T\G3R2`"<@`2&2E)`?C0@5*`0F=2@`)`__Z?P%6`E XM0G<(`"`"4X#4@1^R```@`%."4<C_]A^\`"`@`%."'[$@`"``4<K_^")/+PE@Z XM``!X*6L`.@&T<']2@-&L`;1A``#"0>L`7$ZN_H!!ZP!<3J[^C"E``>PO`"1`* XM("H`)&<2+&P$#"!`(B@``"E!`>1.KO^"(BH`(&<:)#P```/M3J[_XBE``?1GD XM"N6(($`G:``(`*0@;`'L+PA(;`&P(&@`)"EH``0!^$ZZ`D1.N@*L<`!@!"`O( XM``0O`"`L`=QG!"!`3I!.NAK8+'@`!")L!`Q.KOYB3KH"&DJL`>QG&B(L`?1G3 XM!$ZN_]PL>``$3J[_?")L`>Q.KOZ&(!\N;`'P3G5P9&"T0_H`$'``3J[]V"E`A XM!`QG[$YU9&]S+FQI8G)A<GD`3E7^=$CG!S(N+P&L)F\!L"\L`)I.NAE.6$\@' XM0"(H``0L;`0,3J[_*$J`9Q8O+`&L2'@`0$*G2&P`?DZZ"[1/[P`0<`*^@&T>3 XM(&L`!$/L```0&+`99A!*`&;V9@I3AUB+1>P`!&`$1>P`!BM*_L9P"KZ`;Q)(" XM;`"@2&P`"$ZZ$-903WP*8`(L!WH!?@!%[?_,6(M@:"\M_L8O$TZZ$4103R2`3 XM2H!F3D(M_L5![``B0^W^=1+89OQ![?YU(DA*&6;\4XF3R"`)<E"2@"\!+Q,O3 XM"$ZZ"L9(;?YU3KH-2DAL`*!(>/__3KH#QD_O`!AP"BE``?Q@!%*'6(I2A5B+9 XMNH9ME$(M_\M@0$AL`'Y(;?[+3KH01%!/?`!'[?_,8!PO$TAM_LM.NA`P4$]*M XMK`0(9P9P%"E``?Q2AEB+O(=L"@RL````%`'\;=9(;`!<2'@!`$AM_LM.NA)0( XM3^\`#$J`9PH,K````!0!_&V>2&P`?DAX__].N@,Z4$]\`$?M_\Q@&"\33KH2\ XMAEA/2JP$"&<&<!0I0`'\4H98B[R';`H,K````!0!_&W:#*P````4`?QM"DAL^ XM`#).N@QP6$\O+`'\3KH2IDSM3.#^7$Y=3G4``$YU3G5(YP<P+B\`&"9O`!PL@ XM+P`@+P=.NA>`6$\D0"`*9@1P_V`V""H``P`#9Q!(>``"0J<O!TZZ#C!/[P`,H XM+P8O"R\J``1.NA*D3^\`#"H`2JP!R&<$</]@`B`%3-\,X$YU``````````!PH XM84Y5__!(YR$R)F\`+`RL````(`-Z;```AA`3<B"P`6<,<@FP`6<&<@JP`68$& XM4HM@Z$H39V@@+`-ZY8!2K`-Z0>P#@M'`)$AP(K`39B92BR2+2A-G"G`BL!-G@ XM!%*+8/)*$V8,2'@``4ZZ%XA83V">0AM@FB2+2A-G&!`3<B"P`6<0<@FP`6<*K XM<@JP`6<$4HM@Y$H39@)@!D(;8`#_<DJL`WIF!B!L`>Q@!$'L`X(I2`-^2JP#K XM>F9\0?H!)$/L`T`BV"+8(M@BV#*0(FP!["!I`"1(>``H+R@`!$AL`T!.N@B", XM3^\`#$'L`T`B""0\```#[BQL!`Q.KO_B*4`"!"E``@QR!"E!`@@I0`(4*4$"U XM$.6`D\DL>``$*T#_\$ZN_MH@;?_P(D`C:``(`*1^`"M`__1@*BQL!`Q.KO_*/ XM*4`"!$ZN_\0I0`(,0?H`IB(()#P```/M3J[_XBE``A1^!"`'`$"``8&L`@`@5 XM!P!`@`*!K`((`*P``(`#`A!*K`#$9P1P`&`&(#P``(``+@!"K`!X(`<`0``!4 XM*4``='`!*4``FB`'`$```BE``)9P`BE``+P@!P!``(`I0`"X0?H3\BE(`>`O9 XM+`-^+RP#>DZZ^_Y"ETZZ$%Q,[4R$_]Q.74YU8V]N.C$P+S$P+S,R,"\X,"\`: XM*@`````````````````````````````````````````````````O"R9O``A*+ XMJP`49PP(*P`#`!MF!'``8#8O+`&L3KH,UEA/)T``!"=``!!*@&8*<`PI0`0(9 XM</]@%B=L`:P`%'#SP:L`&'``)T``#"=```@F7TYU``````````````````!.( XM5?_L2.<O$"XO`#0F;P`X*`=P,<"K`!AG!G#_8``"<`@K``<`&E;`1`!(@$C`+ XM+`!*JP`49@``A`@K``(`&V9Z<``G0``,<O^^@6<``D(O"TZZ_TY83TJ`9PP(( XMZP`%`!MP_V```BH(ZP`!`!M*!F<.("L`%"(`1($G00`,8`@@*P`4)T``#%.K, XM``QM%B!K``1#Z``!)TD`!"`'$(!R`!(`8!(@!W(`$@`O"R\!80#_4E!/(@`@3 XM`6```=8(*P`"`!MG6'#_OH!F!G``8``!PB`'&T#__TH&9R)R"KZ!9AQR`B\!M XM2'H!LB\K`!PK0?_P3KK\-$_O``PJ`&`:<@$O`4AM__\O*P`<*T'_\$ZZ_!A/^ XM[P`,*@!^_V```.`(ZP`!`!M*!F=2</^^@&=,5*L`#'(*OH%F)B!K``1#Z``!G XM)TD`!!"\``TB*P`,2H%K"B\++P!A`/ZN4$]2JP`,(&L`!$/H``$G20`$(`<0J XM@"(K``Q*@6L``1Q^_R`K``20JP`0*T#_\&=R""L`!@`:9U)(>``"0J<O*P`<C XM3KH)\$_O``PK0/_L2@9G.%.M_^QM,D*G+RW_["\K`!Q.N@G02'@``4AM__TO" XM*P`<3KH':$_O`!A*K`'(9@H0+?_]<AJP`6?(+RW_\"\K`!`O*P`<3KK[.$_O, XM``PJ`&`">@!P_[J`9@@(ZP`%`!M@#+JM__!G!@CK``0`&TH&9PXB*P`4)`%$, XM@B="``Q@&`@K``(`&V<(<@`G00`,8`@B*P`4)T$`#"!K`!`G2``$OH!G+E.KP XM``QM%B!K``1#Z``!)TD`!"`'$(!R`!(`8!(@!W(`$@`O"R\!80#]D%!/(@!P? XM,,"K`!AG!'#_8`QP_[B`9@1P`&`"(`1,WPCT3EU.=0T*`````$CG!Q`F;P`4; XM""L`!P`:5L!$`$B`2,`N`'`PP*L`&&<*0JL`"'#_8``!6`@K``<`&V<4""L`@ XM!@`;9PPO"TAX__].NOTB4$]*JP`49C9"JP`(""L``@`;9Q)P`2=``!1!ZP`@M XM)T@`$&```(0O"TZZ_)983TJ`9W8(ZP`%`!MP_V```0!*!V=F5*L`""`K``A*J XM@&Y:(&L`!$/H``$G20`$?``<$"`&#(`````:9RX,@`````UF,E.K``AM%"!K# XM``1#Z``!)TD`!'``$!!@``"T+PMA`/\N6$]@``"H".L`!``;</]@``"<(`9@" XM``"6""L``0`;9DX(ZP```!LO*P`4+RL`$"\K`!Q.N@6,3^\`#"H`2H5J!@CKT XM``4`&TJ%9@8(ZP`$`!M*A6\:2@=G"B`%1(`G0``(8`0G10`((&L`$"=(``1PU XM,L"K`!AG%DH'9PAP_R=```A@!G``)T``"'#_8"!3JP`(;1(@:P`$0^@``2=)T XM``1P`!`08`@O"V$`_H183TS?".!.=0``56YK;F]W;B!E<G)O<B!C;V1E``!5@ XM<V5R(&ES(&YO="!O=VYE<@!.;R!S=6-H(&9I;&4@;W(@9&ER96-T;W)Y`$YO% XM('-U8V@@<')O8V5S<P!);G1E<G)U<'1E9"!S>7-T96T@8V%L;`!)+T\@97)RY XM;W(`3F\@<W5C:"!D979I8V4@;W(@861D<F5S<P!!<F<@;&ES="!I<R!T;V\@, XM;&]N9P``17AE8R!F;W)M870@97)R;W(`0F%D(&9I;&4@;G5M8F5R`$YO(&-H` XM:6QD('!R;V-E<W,``$YO(&UO<F4@<')O8V5S<V5S(&%L;&]W960`3F\@;65M# XM;W)Y(&%V86EL86)L90!!8V-E<W,@9&5N:65D`$)A9"!A9&1R97-S`$)U;&L@Q XM9&5V:6-E(')E<75I<F5D``!297-O=7)C92!I<R!B=7-Y``!&:6QE(&%L<F5A] XM9'D@97AI<W1S`$-R;W-S+61E=FEC92!L:6YK`$YO('-U8V@@9&5V:6-E``!.` XM;W0@82!D:7)E8W1O<GD`27,@82!D:7)E8W1O<GD``$EN=F%L:60@87)G=6UES XM;G0``$YO(&UO<F4@9FEL97,@*'5N:71S*2!A;&QO=V5D`$YO(&UO<F4@9FEL\ XM97,@*'5N:71S*2!A;&QO=V5D(&9O<B!T:&ES('!R;V-E<W,``$YO="!A('1E- XM<FUI;F%L``!497AT(&9I;&4@:7,@8G5S>0!&:6QE(&ES('1O;R!L87)G90!.N XM;R!S<&%C92!L969T`%-E96L@:7-S=65D('1O('!I<&4`4F5A9"UO;FQY(&9I& XM;&4@<WES=&5M`%1O;R!M86YY(&QI;FMS``!"<F]K96X@<&EP90!-871H(&9U2 XM;F-T:6]N(&%R9W5M96YT(&5R<F]R``!-871H(&9U;F-T:6]N(')E<W5L="!IP XM<R!O=70@;V8@<F%N9V4``$Y5__A(YP,P)F\`("1O`"0N+P`H($I*&&;\4XB14 XMRBP(($M*&&;\4XB1RR`((DO3P"M)__B\AV,"+`<@!B!*8`(2V%.`9/H@;?_XC XM0C!H`"`+3-\,P$Y=3G5(YP,P)F\`%"1O`!@N+P`<+"\`("`'#(`````$9TQ*( XM@&<0#(````!`9DP(ZP`&`!M@!@BK``8`&R`*9P1*AFX$<`!@.B\+3KH`/%A/) XM"*L``@`;".L``P`;($HG2``$)T@`$"=&`!1P`&`4+PM.N@`66$]P`&`(<!8IH XM0`0(</],WPS`3G4O"R9O``@(*P`"`!MG!'``8#Y*JP`49Q8(*P`#`!MF#B\KZ XM`!0O*P`03KH!(E!/0>L`("=(`!!P`"=``!1RM\.K`!@(ZP`"`!LG0``,)T``7 XM""9?3G5.5?_H2.<!,BXO`#1*AVX&</]@``#2<`B^@&0"+@`@!U:`+@`"1__\L XM)&T`""!M``C1Q]^L`%1#[`!0)E$K2/_P*TG_]"`+9P``D"!+("L`!-'`*TC_# XM[")M__"WR6,0)(LE1P`$+&W_]"R*<`!@>+?)9AHL4R2.("L`!"(`TH<E00`$K XM+&W_]"R*<`!@6K7(9`B?K`!4</]@3K7(9BQ*DV<.(%.SR&,(GZP`5'#_8#C?0 XMJP`$2I-G#K/39@H@*0`$T:L`!":1<`!@'BM+__0K;?_L_^@F4V``_VX@;?_T" XM((I"DB5'``1P`$S?3(!.74YU``````````!P84CG`1`F;P`,+B\`$"\'+PM.@ XMNO[V4$],WPB`3G5(YP<P+B\`&"9O`!PL+P`@+P=.N@MT6$\D0"`*9@1P_V`>3 XM+P8O"R\J``1.N@=X3^\`#"H`2JP!R&<$</]@`B`%3-\,X$YU``!(YP$0)F\`6 XM#$JL!`AG6"`L!`BPK`#(;@)L!'X`8`(N`$AL`*!(>``*3KH#-DAL`*`O"TZZL XM`OQ(;`"@2'H`-$ZZ`O`@!^6`2&P`H$'L`,PO,`@`3KH"W$AL`*!(>``*3KH#1 XM`$_O`"@@+`0(3-\(@$YU.B```````````````````$Y5_^9(YP\P)F\`.BXOP XM`#Y"+?__0JP!R"ML!`C_\GH#NJP`0&P2(`7G@$'L`@!*L`@`9P12A6#H("P`J XM0+"%9@QP&"E`!`AP_V```2H@!>>`0>P"`-'`)$A*K0`09P@(+0`"`!-G"BM\N XM```#[/_N8`@K?````^[_[B`\``"``,"L`%BQAP@'``-G#"`'`D#__"X``$<`_ XM`B`'<@/`@0R``````F<,#(`````!9P1*@&8&+`=2AF`,<!8I0`0(</]@``"T# XM(`<"@````P!G``"("`<`"F<6&WP``?__+RW_[B\+3KH&CE!/*`!@/`@'``EF' XM%DAX`^TO"TZZ!C!03R@`2H1J!`C'``D(!P`)9QH;?``!__\I;?_R!`@O+?_ND XM+PM.N@:T4$\H`$HM__]G-B`'<GC2@<"!2H!G*DJ$:R8O!$ZZ!OQ(>`/M+PM.I XMN@7>3^\`#"@`8`Y(>`/M+PM.N@7,4$\H`$JL`<AG!'#_8`@DAB5$``0@!4S?O XM#/!.74YU````````````````````````<&%(YP\0+B\`&"PO`!PJ+P`@+P=.R XMN@D<6$\F0"`+9@1P_V`>+P4O!B\K``1.N@2D3^\`#"@`2JP!R&<$</]@`B`$V XM3-\(\$YU``!(YP,P+B\`%$J';@9P`&```*1P"+Z`9`(N`"`'5H`N``)'__Q%P XM[`!0)E(@"V=`("L`!+"';3*PAV8,(%,DB)^L`%0@"V!N("L`!)"'<@BP@6467 XM($O1QR2()$@DDR5```2?K`!4(`M@3"1+)E-@O"`'(BP!6-"!4X!.N@8J(BP!N XM6$ZZ!@(L`%"&(`96@"P``D;__"\&3KH)FEA/)D`@"V<2+P8O"TZZ^Z8NAV$`4 XM_U103V`"<`!,WPS`3G4``````````'!A+P<N+P`(+P=.NO\R6$\N'TYU``!(8 XMYP$P)F\`$"1O`!1^`!X;2H=G$B\*+P=.N@`64$]2@&;J</]@`G``3-\,@$YUN XM``!(YP$0+B\`#"9O`!`(*P`&`!MG$G`*OH!F#"\++P=.NO,(4$]@,%.K``QM> XM%B!K``1#Z``!)TD`!"`'$(!R`!(`8!(@!W(`$@`O"R\!3KKRVE!/(@`@`4S?H XM"(!.=4Y5__A(YP`P1^P`7"`+9PQ*JP`89P8D2R938/`@"V8B2'@`(DZZ_SI81 XM3R9`2H!F!'``8!PDBW`A<@`@2Q#!4<C__"\++RT`#"\M``A.N@`.3.T,`/_PG XM3EU.=0``3E7_\$CG#S`F;P`T)&\`.$JJ`!AG""\*3KH!LEA/*BP`Q'X!<``0Q XM,W@`#$``8F<*#$``868,>@!@!BH\``"``%*'<BNR,W@`5\!$`$B`2,`H`'``% XM$!,,0`!W9P``B`Q``')G0@Q``&%F``"^2'@`#"\\``"!`B\M``A.NOOL3^\`8 XM#"P`</^\@&8&<`!@``#02H1G!G!`T(!@`G`"+@``1T``8```B$J$9P1P`F`"H XM<```0(``2'@`#"\`+RT`"$ZZ^ZA/[P`,+`!P_[R`9@9P`&```(Q*A&<&<$#0> XM@&`"<`$N`&!(2H1G!'`"8`)P`0!`@```0`$``$`"`$AX``PO`"\M``A.NOMBN XM3^\`#"P`</^\@&8$<`!@1DJ$9P9P0-"`8`)P`BX`8`1P`&`RD<@E2``0<``EO XM0``4)48`'"5J`!``!"5```PE0``(2H5F!B`\``"``"('@H`E00`8(`I,WPSPM XM3EU.=0``2.</,"9O`!PN+P`@)&\`)"@+4X<L!TJ&:S13J@`(;1(@:@`$0^@`M XM`25)``1P`!`08`@O"DZZ\VY83RH`</^Z@&<,4X8@!1;`<@JZ@6;(0A.\AV8$U XM<`!@!"!$(`A,WPSP3G4``$CG`S`F;P`4""L``0`;9Q`O"TAX__].NO",4$\ND XM`&`"?@`@*P`80H!G%$JK`!1G#B\K`!0O*P`03KKY?E!/+RL`'$ZZ!-!83RP`9 XM</^^@&<&2H9F`G``3-\,P$YU2.<#$"XO`!!'[`!<(`MG-`@K``(`&V8H""L`1 XM`0`;9R`@*P`$D*L`$"P`2H9G$B\&+RL`$"\K`!Q.NNTR3^\`#"938,@O!TZZ7 XM!7Q83TS?",!.=0``2.<W$"XO`!PF;P`@+"\`)$JL`>!G!$ZZ!-1"K`'((@<DG XM"R8&+&P$#$ZN_]`J`'#_NH!F#DZN_WPI0`'(<`4I0`0((`5,WPCL3G4``$CGZ XM/P`N+P`<+"\`("HO`"1*K`'@9P1.N@2(0JP!R"`%4X`B!R0&)@`L;`0,3J[_1 XMOB@`</^X@&8.3J[_?"E``<AP%BE`!`@@!0R``````F<6#(`````!9PA*@&889 XM(`9@%"`$T(9@#B('=`!V`"QL!`Q.KO^^3-\`_$YU``!(YS<0+B\`'"9O`"`LP XM+P`D2JP!X&<$3KH$#$*L`<@B!R0+)@8L;`0,3J[_UBH`</^Z@&8.3J[_?"E`( XM`<AP!2E`!`@@!4S?".Q.=0``2.<C$"9O`!0N+P`82JP!X&<$3KH#Q$*L`<@BD XM"R0'+&P$#$ZN_^(L`$J&9A).KO]\*4`!R'`"*4`$"'#_8`(@!DS?",1.=0``P XM3E7__$CG(1`F;P`82JP!X&<$3KH#?$*L`<@B"W3^+&P$#$ZN_ZPN`$J'9PHBK XM!TZN_Z9P_V`F(@LD/````^Y.KO_B+@!*AV823J[_?"E``<AP`BE`!`AP_V`"0 XM(`=,WPB$3EU.=4Y5__Q(YR$0)F\`&$JL`>!G!$ZZ`QA"K`'((@MT_BQL!`Q.H XMKO^L+@!*AV<,(@=.KO^F(@M.KO^X(@LD/````^Y.KO_B+@!*AV823J[_?"E`G XM`<AP`BE`!`AP_V`"(`=,WPB$3EU.=0``+P<N+P`(2JP!X&<$3KH"MB('+&P$O XM#$ZN_]QP`"X?3G5(YS``)``F`4A"2$/$P<;`P,'40TA"0D+0@DS?``Q.=4J`I XM:@``'D2`2H%J```,1(%A```@1(%.=6$``!A$@$2!3G5*@6H```Q$@6$```9$1 XM@$YU+P)(030!9@``(DA`2$%(0C0`9P``!H3!,`)(0#0`A,$P`DA",@(D'TYUD XM+P-V$`Q!`(!D```&X9E10PQ!"`!D```&Z9E90PQ!(`!D```&Y9E50TI!:P``] XM!N.94T,T`.:H2$)"0N:J2$.`P38`,`(T`TA!Q,&0@F0```A30]"!9/YR`#(#? XM2$/GN$A`P4$F'R0?3G5.5?^>2.<S,GX`(&P!^!XH__]P3[Z`;P(N`"`'0^W_, XMKV`"$MA3@&3Z0C5XKY/)+'@`!$ZN_MHF0$JK`*QG3"`K`*SE@"1`+"H`.$J&Z XM9@0L*P"@2H9G-"(&0?H`LB0(=@LL;`0,3J[_T"!'4H<@"!N\``H(KR(&0>W_6 XMKR0()@<L;`0,3J[_T'#_8$Y*K`0$9A)#^@"&<``L>``$3J[]V"E`!`1![?^O' XM*4@!?$AX`#Q(>`#Z<``O`"\`2&P!F$AL`81(;`%P0J=.N@%(3^\`(%.`9P1PC XM_V`"<`!,WTS,3EU.=2HJ(%5S97(@06)O<G0@4F5Q=65S=&5D("HJ``!#3TY4G XM24Y510``04)/4E0`*BHJ($)R96%K.B``:6YT=6ET:6]N+FQI8G)A<GD`````, XM``````````````!(YP$0+B\`#"\'3KH`/%A/)D`@"V8$</]@*`@K``(``V<&A XM<``F@&`:+RL`!$ZZ_9983W``)H!*K`'(9P1P_V`"<`!,WPB`3G4O!RXO``APR XM`"E``<A*AVLBOJP`0&P<(`?G@$'L`@!*L`@`9PX@!^>`0>P"`-'`(`A@"'`)- XM*4`$"'``+A].=0``2.<!`G``(CP``#``+'@`!$ZN_LXN``*'```P`$J'9@1PG XM`&`@2JP!X&<8(&P!X$Z02H!F!'``8`Q(>``43KH`1EA/(`=,WT"`3G5AM$YUG XM``!(YS`R+&P$!"!O`!@B;P`<)&\`("9O`"0@+P`H(B\`+"0O`#`F+P`T3J[^K XMI$S?3`Q.=0``2.<'`"XO`!`@+`!`4X`L`$I&:S`@!DC`YX!![`(`*C`(`$H%X XM9QH(!0`"9A0@!DC`YX!![`(`+S`(!$ZZ_'Q83U-&8,PO!TZZY2)83TS?`.!.J XM=0``2.<`,B9L!!`@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B1R"E(!!0I2`00) XM3-],`$YU2.<!,BXO`!1P#-Z`(`=R`"QX``1.KO\Z)D`@"V8$<`!@.B='``A%= XM[`00(&H`!"=(``21R":(2I)F`B2+2JH`!&<&(FH`!"*+)4L`!$JL`$1F!"E+I XM`$1!ZP`,(`A,WTR`3G4``````````````````````^P````"`````@````P`= XM```&`````````_(```/I`````````_(```/J````;"UA``!A`'<`3F\@;6]R& XM92!T:&%N($U!6$8@9FEL97,*``!%<G)O<B!O<&5N:6YG(```=&5E(&9A:6QE2 XM9``````````H`````````````````````````````(``````?@``````````* XM`````````````````````````````````*``````````````````````````@ XM````````````````````````````````````````````````````````````` XM`````(``````(@``"GP```J0```*H@``"KP```K,```*Y```"NX```L(```+. XM'@``"S````M````+4@``"VP```N````+C@``"YH```NP```+P@``"]8```OH= XM```+^```#`@```P8```,*@``#$@```QX```,B```#)H```RL```,N@``#,X`; XM``SD```,]```#0````T>```$`/__````#@`.````````&G``````__\````$2 XM``0``````````````5S__P````0`!````````!J,`````/__````!``$````3 XM````&I8````````"`````^P````F`````````:0```&0```!:````50```%0, XM```!3````4@```%$```!0````3P```$X```!-````3````$L```!*````20`S XM``$@```!'````1@```$4```!$````0P```$(```!!````0````#\````^```- XM`/0```#P````[````.@```#D````X````-P```#8````U````-````#,````@ X9`P````(```&`````?@```%P````````#\MP`Q X`` Xend Xsize 8080 SHAR_EOF echo "End of archive 1 (of 1)" # if you want to concatenate archives, remove anything after this line exit