[comp.sources.amiga] v89i211: utils - unix-like du, tee, cut, tail

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