[comp.sources.amiga] v89i069: hangman - classic guess-the-word game, Part01/02

page@swan.ulowell.edu (Bob Page) (03/17/89)

Submitted-by: brant@uf.msc.umn.edu (Gary Brant)
Posting-number: Volume 89, Issue 69
Archive-name: fun/hangman.1

This is a hangman program based on the popular *NIX game, with an
accompanying dictionary.  (The dictionary is not usable with any
program that needs a real dictionary).

[uuencoded executable included.  I split the dictionary into two
files, so after unshar'ing, you need to 'cat' or 'join' words1 and
words2 to make a file called 'words'.  ..Bob]

#	This is a shell archive.
#	Remove everything above and including the cut line.
#	Then run the rest of the file through sh.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar:    Shell Archiver
#	Run the following text with /bin/sh to create:
#	readme
#	makefile
#	hangman.c
#	hangman.uu
#	words2
# This archive created: Thu Mar 16 11:01:47 1989
cat << \SHAR_EOF > readme
This is a hangman program based on the popular *NIX game.  The
accompanying dictionary is strictly for use with this game and would
not be usable with any program that needs a real dictionary.

The play is pretty self-explanatory.  To exit, type 'n' after you have 
completed a word or after you're hung.  Alternately, hangman will exit
if you type ^C at any time.  The overall average displayed on the right is
the average number of incorrect guesses for all words so far.  Current
average is the best you can do on this word if you make no incorrect 
guesses.

The whole shebang is freely distributable, as long as you leave my name in
the source & don't sell it for a profit.


		Gary Brant

	US mail: 1355 Eustis St. #1
		 St. Paul, MN 55108

	ARPA:	 brant@uf.msc.umn.edu

SHAR_EOF
cat << \SHAR_EOF > makefile

# Makefile for 'hangman'.
#

CFLAGS=+L

hangman: hangman.o
	ln hangman.o -ls32 -lm32 -lc32

clean:
	rm -f hangman.o

SHAR_EOF
cat << \SHAR_EOF > hangman.c
/* hangman.c - a hangman game similar to one seen on some *nix machines.*
 *									*
 * hangman [wordlist]							*
 *	    if wordlist is not specified, reads words in current 	*
 *	    directory if it exists, else reads dict:words.		*
 *									*
 * hangman (C) 1989 by Gary L. Brant					*
 *									*
 * :ts=8								*/

#include <ctype.h>
#include <stdio.h>
#include <time.h>
#include <stat.h>

char word[30];
char dead_man[][4] = {
	" O ",
	"/|\\",
	" | ",
	"/ \\"
};

char guessed[28];	/* letters already guessed */
int count = 0;		/* count of letters in guessed */
char blimp[30];		/* string of -'s length of word */
char dictionary[30];	/* file name of dictionary */
float curavg = 0.0;
float overavg = 0.0;
int wordno = 0;
long totalwrong = 0L;
int done = 0;
int raw_mode = 0;	/* true if currently in raw mode */
FILE *dict, *fopen ();
struct stat statbuf;
long size;


main (argc, argv)
int argc;
char *argv[];
{
    int i;

    if (argc > 1) {
	if ((dict = fopen (argv[1], "r")) == NULL) {
	    printf ("can't open %s\n", argv[1]);
	    exit (20);
	} else
	    strcpy (dictionary, argv[1]);
    } else if ((dict = fopen ("words", "r")) == NULL) {
	if ((dict = fopen ("dict:words", "r")) == NULL) {
	    printf ("can't find dictionary\n");
	    exit (20);
	} else
	    strcpy (dictionary, "dict:words");
    } else
	strcpy (dictionary, "words");
    if ((stat (dictionary, &statbuf)) == -1) {
	printf ("can't get info for %s\n", dictionary);
	quit (10);
    }
    size = statbuf.st_size;
    srand ((int) time ((long *) 0));	/* use time as random seed */

    do {		/* loop until user says no more */
	getword ();	/* get word from dictionary */

	set_raw ();
	raw_mode = 1;
	hangman ();	/* play one word game */
	newgame ();
	set_con ();
	raw_mode = 0;
    } while (!done);

    quit (0);
}


/* get a random number. */

long getran () 
{
    long time ();
    unsigned long i, j;

    i = rand ();
    j = rand ();
    i += 65536 * j;	/* fabricate a random long int */
    return (i);
}


/* get a word from the dictionary for use in the game */

getword ()
{
    register int i, len;
    long num;
    long position;

    for (;;) {
	num = getran ();	/* get an random long integer */ 
	position = num % size;

	if ((fseek (dict, position, 0)) != 0) {
	    printf ("can't seek on %s\n", dictionary);
	    quit (10);
	}
	fgets (word, 29, dict);
	if (fgets (word, 29, dict) == NULL)
	    continue;

	if ((len = strlen (word) - 1) < 4)
	    continue;

	for (i = 0; i < len; i++)
	    if (word[i] < 'a' || word[i] > 'z')
		goto nogood;
	word[len] = '\0';
	return;			/* return word found */
nogood:
	continue;
    }
}


/* play one word game, return as soon as guesses used up or word guessed.
 * Display a congratulatory message before exiting if player guessed the
 * word, else display the word.
 */

hangman ()
{
    char guess;			/* the current guess */
    int i;
    int togo;			/* number of letters still to be guessed */
    int wrong = 0;		/* number of incorrect guesses */

    char getcharacter ();	/* get user's input */


    nextword ();
    redraw ();

    togo = strlen (word);
    while (togo > 0) {		/* haven't guessed all the characters */
	int dup = 0;		/* if letter was guessed before */
	for (;;) {		/* do until guess is a character */
	    scr_curs (12, 8);
	    scr_eol ();
	    fflush (stdout);

	    guess = getcharacter ();
	    putc (guess, stdout);
	    if (guess == '\f')	/* redraw screen if ^L */
		redraw	();
	    else if (!isalpha (guess)) { /* disallow non-alpha characters */
		scr_beep ();
		scr_curs (12, 8);
		scr_eol ();
		scr_curs (13, 0);
		fputs ("Not a valid guess, ", stdout);
		if (guess < ' ') {
		    char bad[4];

		    bad[0] = '^';
		    bad[1] = guess + 'A' - 1;
		    bad[2] = '\0';
		    fputs (bad, stdout);
		} else
		    putc (guess, stdout);
	    } else
		break;			/* drop out of loop if alpha */
	}

	for (i = 0; guessed[i]; i++)
	    if (guess == guessed[i]) {
		dup = 1;
		break;
	    }
	scr_curs (13, 0);
	scr_eol ();
	if (dup) {			/* if previously guessed */
	    printf ("Already guessed %c", guess);
	    dup = 0;
	} else {
	    int inword = 0;		/* if guess in word */
	    for (i = 0; word[i]; i++) {
		if (guess == word[i]) {
		    inword = 1;
		    togo--;
		    blimp[i] = guess;
		    scr_curs (11, i+8);
		    putc (guess, stdout);	/* place letter in word */
		    if (togo == 0) {		/* if word completed */
			insert (guess);
			scr_curs (13, 0);
			fputs ("You got it!", stdout);
			return;
		    }
		}
	    }
	    if (!inword) {
		wrong++;			/* scorekeeping */
		totalwrong++;
		curavg += 1.0 / ((float) wordno);
		scr_curs (6, 49);	/* update current average on screen */
		printf ("%8.4f", curavg);
		switch (wrong) {
		case 1: scr_curs (3, 10);
			putc ('O', stdout);
			dead_man[0][1] = 'O';
			break;
		case 2: scr_curs (4, 10);
			putc ('|', stdout);
			dead_man[1][1] = '|';
			break;
		case 3: scr_curs (5, 10);
			putc ('|', stdout);
			dead_man[2][1] = '|';
			break;
		case 4: scr_curs (6, 9);
			putc ('/', stdout);
			dead_man[3][0] = '/';
			break;
		case 5: scr_curs (4, 9);
			putc ('/', stdout);
			dead_man[1][0] = '/';
			break;
		case 6: scr_curs (4, 11);
			putc ('\\', stdout);
			dead_man[1][2] = '\\';
			break;
		case 7: scr_curs (6, 11);
			putc ('\\', stdout);
			dead_man[3][2] = '\\';
			scr_curs (13, 0);
			fputs ("The word was:  ", stdout);
			fputs (word, stdout);
			return;
		}
	    }
	    insert (guess);
	}
    }
    return;
}


/* game over; inquire from player whether to play another */

newgame ()
{
    char c;

    scr_curs (14, 0);
    fputs ("Another word? ", stdout);
    for (;;) {
	fflush (stdout);
	c = getcharacter ();
	if (c == 'n') {
	    done = 1;
	    return;
	} else if (c == 'y')
	    return;
	scr_curs (15, 0);
	fputs ("Please type 'y' or 'n'", stdout);
	scr_curs (14, 15);
    }
}


/* redraw display at beginning of new word or at user request (^L) */

redraw ()
{
    int i;

    scr_clear ();

    scr_curs (1, 5);
    fputs ("______", stdout);

    scr_curs (2, 5);
    fputs ("|    |", stdout);

    scr_curs (3, 5);
    putc ('|', stdout);
    scr_curs (3, 10);
    putc (dead_man[0][1], stdout);
    scr_curs (3, 32);
    fputs ("Guessed:  ", stdout);
    fputs (guessed, stdout);

    scr_curs (4, 5);
    putc ('|', stdout);
    scr_curs (4, 9);
    for (i = 0; i < 3; i++)
	putc (dead_man[1][i], stdout);

    scr_curs (5, 5);
    putc ('|', stdout);
    scr_curs (5, 9);
    for (i = 0; i < 3; i++)
	putc (dead_man[2][i], stdout);
    scr_curs (5, 32);
    printf ("Word #:  %d", wordno);

    scr_curs (6, 5);
    putc ('|', stdout);
    scr_curs (6, 9);
    for (i = 0; i < 3; i++)
	putc (dead_man[3][i], stdout);
    scr_curs (6, 32);
    printf ("Current Average: %8.4f", curavg);

    scr_curs (7, 3);
    fputs ("__|_____", stdout);
    scr_curs (7, 32);
    printf ("Overall Average: %8.4f", overavg);

    scr_curs (8, 3);
    putc ('|', stdout);
    scr_curs (8, 10);
    fputs ("|___", stdout);

    scr_curs (9, 3);
    fputs ("|_________|", stdout);

    scr_curs (11, 1);
    fputs ("Word:  ", stdout);
    fputs (blimp, stdout);

    scr_curs (12, 0);
    fputs ("Guess:", stdout);

    fflush (stdout);
}


/* reset stuff for next word */

nextword ()
{
    int i, j;

    for (i = 0; i < 4; i++)
	for (j = 0; j < 3; j++)
	    dead_man[i][j] = ' ';

    for (i = 0; i < strlen (word); i++)
	blimp[i] = '-';
    blimp[i] = '\0';

    for (i = 0; i < 28; i++)
	guessed[i] = '\0';

    count = 0;
    wordno++;
    overavg = curavg;
    curavg = ((float) totalwrong) / ((float) wordno);
}


/* get user's input */

char getcharacter ()
{

    while (!WaitForChar (Input (), 100L) &&
	   stdin->_bp >= stdin->_bend);
    return (tolower (getc (stdin)));
}


/* insert letter just guessed into list of guessed letters; also update list
 * on screen for player.
 */

insert (guess)
register char guess;
{
    if (count == 0) {			/* first guess ? */
	guessed[count++] = guess;
	scr_curs (3, 42);
	putc (guess, stdout);
    } else {
	register int i, j;

	for (i = 0; i < count; i++)
	    if (guessed[i] > guess)
		break;
	for (j = count; j > i; j--)
	    guessed[j] = guessed[j-1];
	guessed[i] = guess;		/* add the guess to list of */
					/* previously guessed letters*/
	scr_curs (3, i+42);
	fputs (&guessed[i], stdout);	/* update list on screen */
	count++;
    }
}


/* needed, since Manx version apparently doesn't work */

 scr_eol ()
{
    static char clr[] = {0x9b, 'K', '\0'};

    fputs (clr, stdout);
}


/* in order to have a chance at cleaning up & exiting gracefully */

_abort ()
{
    puts ("^C");
    quit (0);
}


quit (code)
int code;
{
    if (dict)
	fclose (dict);
    set_con ();
    exit (code);
}


_wb_parse ()
{
}
SHAR_EOF
cat << \SHAR_EOF > hangman.uu

begin 777 hangman
M```#\P`````````#``````````(```K]````_@````$```/I```*_4[Z',Q.R
M5?_\#*T````!``AO2DAZ`1H@;0`,+R@`!$ZZ&`I03RE`@YAF'B!M``PO*``$A
M2'H`_$ZZ#.I03TAX`!1.NB=F6$]@$B!M``PO*``$2&R#>DZZ%)Q03V!<2'H`7
MYTAZ`-U.NA?$4$\I0(.89CI(>@#@2'H`T4ZZ%[!03RE`@YAF%DAZ`,Y.N@R8+
M6$](>``43KHG%%A/8`Y(>@#/2&R#>DZZ%$Y03V`.2'H`RDAL@WI.NA0^4$](*
M;(.<2&R#>DZZ'^103["\_____V882&R#>DAZ`*A.N@Q*4$](>``*3KH+HEA/*
M*6R#HH.F0J=.NB!\6$\O`$ZZ%$I83TZZ`+Y.NAI,*7P````!@"I.N@&&3KH%S
MHDZZ&GI"K(`J2JR`)F?:0J=.N@M>6$].74YU<@!C86XG="!O<&5N("5S"@!WL
M;W)D<P!R`&1I8W0Z=V]R9',`<@!C86XG="!F:6YD(&1I8W1I;VYA<GD*`&1ID
M8W0Z=V]R9',`=V]R9',`8V%N)W0@9V5T(&EN9F\@9F]R("5S"@``3E7_^$ZZS
M$WHK0/_\3KH3<BM`__@@+?_X<A#CH-&M__P@+?_\3EU.=4Y5__A(YPP`8<XK)
M0/_\(BR#IB`M__Q.NB!V*T#_^$*G+RW_^"\L@YA.NA0N3^\`#$J`9QA(;(-ZZ
M2'H`C$ZZ"RA03TAX``I.N@J`6$\O+(.82'@`'4AL@R).NA-J3^\`#"\L@YA(D
M>``=2&R#(DZZ$U9/[P`,2H!G2$AL@R).NA+(6$\J`%.%NKP````$;3)X`&`:1
M0>R#(@PP`&%(`&TB0>R#(@PP`'I(`&X64H2XA6WB0>R#(D(P6`!,WP`P3EU.L
M=6``_T9@\F-A;B=T('-E96L@;VX@)7,*`$Y5_^I"K?_R3KH("$ZZ!+9(;(,B?
M3KH26%A/*T#_]DJM__9O``.N0JW_[DAX``A(>``,3KH*+%!/3KH)A$AX__](M
M;(%P3KHA/%!/3KH(AAM`__](;(%P$"W__TB`2,`O`$ZZ(#!03PPM``S__V8(7
M3KH$5&```(X0+?__2(!(P$'L@-D2,`@`PCP``V9T3KH)D$AX``A(>``,3KH)*
MQE!/3KH)'D*G2'@`#4ZZ";903TAL@7!(>@,B3KH2CE!/#"T`(/__;"8;?`!>A
M_^H0+?__T#P`0!M`_^M"+?_L2&R!<$AM_^I.NA)B4$]@%$AL@7`0+?__2(!(1
MP"\`3KH?F%!/8`)@!&``_R9"K?_Z8"`@+?_Z0>R#0!(M__^R,`@`9@HK?```T
M``'_[F`24JW_^B`M__I![(-`2C`(`&;20J=(>``-3KH)'E!/3KH(=DJM_^YG=
M'!`M__](@$C`+P!(>@*.3KH)+E!/0JW_[F```F1"K?_J0JW_^F```(P@+?_Z:
M0>R#(A(M__^R,`@`9G0K?`````'_ZE.M__8@+?_Z0>R#7!&M__\(`"`M__I0%
M@"\`2'@`"TZZ"*Y03TAL@7`0+?__2(!(P"\`3KH>S%!/2JW_]F8N$"W__TB`*
M2,`O`$ZZ!S183T*G2'@`#4ZZ"'A03TAL@7!(>@(+3KH14%!/3EU.=5*M__H@`
M+?_Z0>R#(DHP"`!F`/]H2JW_ZF8``:92K?_R4JR`(B`L@!Y.N@^,(@`@/(``/
M`$%.N@]V(@`@+(`63KH/,"E`@!9(>``Q2'@`!DZZ"!)03T*G+RR`%DAZ`:].J
MN@@P3^\`#"`M__)@``%"2'@`"DAX``-.N@?J4$](;(%P2'@`3TZZ'@Y03QE\>
M`$^``V```2Y(>``*2'@`!$ZZ!\103TAL@7!(>`!\3KH=Z%!/&7P`?(`'8``!G
M"$AX``I(>``%3KH'GE!/2&R!<$AX`'Q.NAW"4$\9?`!\@`M@``#B2'@`"4AXQ
M``9.N@=X4$](;(%P2'@`+TZZ'9Q03QE\`"^`#F```+Q(>``)2'@`!$ZZ!U)0,
M3TAL@7!(>``O3KH==E!/&7P`+X`&8```EDAX``M(>``$3KH'+%!/2&R!<$AXK
M`%Q.NAU04$\9?`!<@`A@<$AX``M(>``&3KH'"%!/2&R!<$AX`%Q.NATL4$\9*
M?`!<@!!"ITAX``U.N@;H4$](;(%P2'H`C4ZZ#\!03TAL@7!(;(,B3KH/LE!/#
M8`#^8``"_K#^UO[\_R+_2/]N_Y*PO`````AD"N.`,#L`Y$[[```0+?__2(!(*
MP"\`3KH%1EA/8`#\3F``_B9.;W0@82!V86QI9"!G=65S<RP@`$%L<F5A9'D@N
M9W5E<W-E9"`E8P!9;W4@9V]T(&ET(0`E."XT9@!4:&4@=V]R9"!W87,Z("``D
M`$Y5__Y"ITAX``Y.N@8T4$](;(%P2'H`:$ZZ#PQ03TAX__](;(%P3KH=.E!/J
M3KH$A!M`__\,+0!N__]F#"E\`````8`F3EU.=0PM`'G__V8"8/)"ITAX``].J
MN@7F4$](;(%P2'H`*4ZZ#KY03TAX``](>``.3KH%RE!/8*)@QD%N;W1H97(@S
M=V]R9#\@`%!L96%S92!T>7!E("=Y)R!O<B`G;B<`3E7__$ZZ!7)(>``%2'@`]
M`4ZZ!8I03TAL@7!(>@*V3KH.8E!/2'@`!4AX``).N@5N4$](;(%P2'H"H4ZZ@
M#D903TAX``5(>``#3KH%4E!/2&R!<$AX`'Q.NAMV4$](>``*2'@``TZZ!390R
M3TAL@7`0+(`#2(!(P"\`3KH;5%!/2'@`($AX``-.N@444$](;(%P2'H"3DZZJ
M#>Q03TAL@7!(;(-`3KH-WE!/2'@`!4AX``1.N@3J4$](;(%P2'@`?$ZZ&PY0&
M3TAX``E(>``$3KH$SE!/0JW__$AL@7`@+?_\0>R`!A(P"`!(@4C!+P%.NAK@M
M4$]2K?_\#*T````#__QMUDAX``5(>``%3KH$DE!/2&R!<$AX`'Q.NAJV4$](Z
M>``)2'@`!4ZZ!'903T*M__Q(;(%P("W__$'L@`H2,`@`2(%(P2\!3KH:B%!/*
M4JW__`RM`````__\;=9(>``@2'@`!4ZZ!#I03R\L@!Y(>@%_3KH$6E!/2'@`^
M!4AX``9.N@0>4$](;(%P2'@`?$ZZ&D)03TAX``E(>``&3KH$`E!/0JW__$AL2
M@7`@+?_\0>R`#A(P"`!(@4C!+P%.NAH44$]2K?_\#*T````#__QMUDAX`"!(Q
M>``&3KH#QE!/0J<O+(`62'H!%4ZZ`^1/[P`,2'@``TAX``=.N@.F4$](;(%P8
M2'H!#DZZ#'Y03TAX`"!(>``'3KH#BE!/0J<O+(`:2'H`^4ZZ`ZA/[P`,2'@`S
M`TAX``A.N@-J4$](;(%P2'@`?$ZZ&8Y03TAX``I(>``(3KH#3E!/2&R!<$AZ_
M`-9.N@PF4$](>``#2'@`"4ZZ`S)03TAL@7!(>@"_3KH,"E!/2'@``4AX``M.4
MN@,64$](;(%P2'H`KTZZ"^Y03TAL@7!(;(-<3KH+X%!/0J=(>``,3KH"[E!/^
M2&R!<$AZ`(].N@O&4$](>/__2&R!<$ZZ&?103TY=3G5?7U]?7U\`?"`@("!\E
M`$=U97-S960Z("``5V]R9"`C.B`@)60`0W5R<F5N="!!=F5R86=E.B`E."XT#
M9@!?7WQ?7U]?7P!/=F5R86QL($%V97)A9V4Z("4X+C1F`'Q?7U\`?%]?7U]?:
M7U]?7WP`5V]R9#H@(`!'=65S<SH`3E7_^$*M__Q"K?_X("W__.6`T*W_^$'L'
M@`(1O``@"`!2K?_X#*T````#__AMWE*M__P,K0````3__&W,0JW__&`2("W_^
M_$'L@UP1O``M"`!2K?_\2&R#(DZZ"@)83R(M__RR@&W<("W__$'L@UQ",`@`K
M0JW__"`M__Q![(-`0C`(`%*M__P,K0```!S__&WF0JR`$E*L@!XI;(`6@!H@Z
M+(`B3KH(_B\`("R`'DZZ"/0B`"`?3KH(XBE`@!9.74YU3E4``$AX`&1.NAX8^
M+P!.NAYZ4$]*@&8,(&R!6K'L@5YE`F#@2&R!6DZZ"YA83R\`3KH)T%A/2(!(<
MP$Y=3G5.50``2.<.`!@M``M*K(`29C(@+(`24JR`$D'L@T`1A`@`2'@`*DAXC
M``-.N@$D4$](;(%P$`1(@$C`+P!.NA=$4$]@8GH`8`Y![(-`$#!8`+`$;@A2W
MA;JL@!)M["PL@!)@$$'L@S]#[(-`$[!H`&@`4X:\A6[L0>R#0!&$6``@14AH*
M`"I(>``#3KH`QE!/2&R!<$'L@T`B1=/(+PE.N@F84$]2K(`23-\`<$Y=3G5.8
M50``2&R!<$AL@"Y.N@EZ4$].74YU3E4``$AZ`!).NA`>6$]"IV$*6$].74YUQ
M7D,``$Y5``!*K(.89PHO+(.83KH6_%A/3KH.]B\M``A.NAL&6$].74YU3E4`.
M`$Y=3G5.50``2'@``4AZ`!)(>``!3KH:,$_O``Q.74YU!P!.50``2'@`!DAZC
M`!)(>``!3KH:$D_O``Q.74YU&UM(&UM*``!.50``("T`#%*`+P`@+0`(4H`O0
M`$AZ``Y.N@`43^\`#$Y=3G4;6R5D.R5D2```3E4``$AM``PO+0`(2'H5FDZZP
M`)!/[P`,3EU.=4Y5``!(YP@@)&T`$`RM````!``49@@@;0`(*!!@%$JM``QO5
M""!M``@H$&`&(&T`""@00JT`%$JM``QL$D2M``Q*A&P*1(0K?`````$`%"(M@
M``P@!$ZZ%-!![(`R4XH4L`@`(BT`#"`$3KH4R"@`9MY*K0`49P93BA2\`"T@E
M"DS?!!!.74YU3E7_%$CG"#`D;0`()FT`#$*M__@K;0`0__P@2U*+$!!(@$C`-
M*`!G``.FN+P````E9@`#@$(M_R(K?`````'_]"M\````(/_P*WP``"<0_^P@$
M2U*+$!!(@$C`*`"PO````"UF$$*M__0@2U*+$!!(@$C`*`"XO````#!F%"M\6
M````,/_P($M2BQ`02(!(P"@`N+P````J9AH@;?_\6*W__"M0_^@@2U*+$!!(W
M@$C`*`!@-$*M_^A@(G(*("W_Z$ZZ&J[0A)"\````,"M`_^@@2U*+$!!(@$C`V
M*`!![(#9"#```D@`9M*XO````"YF8B!+4HL0$$B`2,`H`+"\````*F8:(&W_4
M_%BM__PK4/_L($M2BQ`02(!(P"@`8#1"K?_L8")R"B`M_^Q.NAI$T(20O```L
M`#`K0/_L($M2BQ`02(!(P"@`0>R`V0@P``)(`&;2*WP````$_^2XO````&QFZ
M%B!+4HL0$$B`2,`H`"M\````!/_D8!2XO````&AF#"!+4HL0$$B`2,`H`"`$*
M8``!!"M\````"/_@8!PK?`````K_X&`2*WP````0_^!@""M\____]O_@+RW_#
MY$AM_R(O+?_@+RW__$ZZ_;(K0/_<("W_Y-&M__Q/[P`08```SB!M__Q8K?_\V
M(E`K2?_<(`E*&6;\D\!3B2M)_^1@``"Z($1(:/^;#*T``"<0_^QF!'`&8`0@\
M+?_L+P!(;?\4(&W__%"M__Q"IR\03KH!K$'M_Q0K2/_<(`A*&&;\D<!3B"M(&
M_^0K?````,C_[$_O`!1@9B!M__Q8K?_\*!!![?\A*TC_W!"$8$3_J/\&_U;_I
M5O]6_[+_LO^R_[+_LO^R_[+^Z/^R_[+_LO\V_[+^\O^R_[+^_)"\````8["\(
M````%F2ZXX`P.P#"3OL``$'M_R*1[?_<*TC_Y"`M_^2PK?_L;P8K;?_L_^1*H
MK?_T9W`@;?_<#!``+6<*(&W_W`P0`"MF-`RM````,/_P9BI3K?_H(&W_W%*M8
M_]P0$$B`2,`O`$Z2L+S_____6$]F"G#_3-\,$$Y=3G5@&"\M__!.DK"\____)
M_UA/9@1P_V#B4JW_^"`M_^A3K?_HL*W_Y&[:0JW_X&`D(&W_W%*M_]P0$$B`6
M2,`O`$Z2L+S_____6$]F!'#_8*I2K?_@(&W_W$H09PH@+?_@L*W_[&W*("W_1
MX-&M__A*K?_T9BI@&DAX`"!.DK"\_____UA/9@9P_V``_W!2K?_X("W_Z%.ML
M_^BPK?_D;MA@&"\$3I*PO/____]83V8&</]@`/](4JW_^&``_$X@+?_X8`#_,
M.$Y5__!(YP@P)&T`$$'L@$0F2"`M`!12@"M`__!"K?_\(BT`"$ZZ`F!L%"`MV
M``A.N@),*T``""!*4HH0O``M(BT`"$ZZ`D)O0B(K``0@+0`(3KH"(&P4(A,@)
M+0`(3KH"6BM```A3K?_\8-XB$R`M``A.N@(`;10B$R`M``A.N@(F*T``"%*M&
M__Q@X`RM`````@`89B`K;0`4__`,K?____S__&T*("W__+"M`!1O!$*M`!A@F
M$@RM`````0`89@@@+?_\T:W_\$JM__!M0@RM````$/_P;P1P$&`$("W_\%*`Y
MY8`B,P@`("T`"$ZZ`7PK0``((A-.N@%\;10K:P`$``A2K?_\2JT`&&<$4JW_>
M\$JM`!AG3DJM__QL/"!*4HH0O``P($I2BA"\`"X@+?_\1(`H`%.$2JW_\&X$S
M*"T`%"`$4X1*@&<*($I2BA"\`#!@[D*M__1@"B`M__Q2@"M`__1@""M\````"
M`?_T2JW_\&]J>`"XO````!!L.B`M``A.N@$0*T#_^"`M__C0O````#`@2E**K
M$(`@+?_X3KH!$B(`("T`"$ZZ`/0B$TZZ`0PK0``(8`@@2E**$+P`,%.M__!G?
M&$JM__1G#E.M__1F""!*4HH0O``N4H1@F$JM`!AF?B!*4HH0O`!E2JW__&P.\
M1*W__"!*4HH0O``M8`@@2E**$+P`*PRM````9/_\;21R9"`M__Q.N@YRT+P`K
M```P($I2BA"`<F0@+?_\3KH.A"M`__QR"B`M__Q.N@Y.T+P````P($I2BA"`>
M<@H@+?_\3KH.8-"\````,"!*4HH0@$(23-\,$$Y=3G4O//___[Y.^@!2+SS__
M___63OH`2"\\____Q$[Z`#XO//___]!.^@`T+SS____B3OH`*B\\____N$[ZN
M`"`O//___ZQ.^@`6+SS____<3OH`#"\\____LD[Z``)*K(.J9C)(Y\#`0J=(I
M>@!"3KH`=%!/*4"#JF88+SP````02'H`/$ZZ`$@O`$ZZ`$I.NO?:3-\#`R\(V
M(&\`!"].``0L;(.J3K:(`$S?00!.=6UA=&AF9G`N;&EB<F%R>0!N;R!M871H$
M(&QI8G)A<GD*+&R#KD[N_\1,[P`.``0L;(.N3N[_T"QL@[(B;P`$("\`"$[N]
M_=@@;P`$(`@B;P`($-EF_$YU(&\`!"`(2AAF_)'`(`A3@$YU3E4``"(\0<9.;
M;2`L@(Q.NA0.T+P``#`Y*4"`C"`L@(QR$.*HP+P``'__3EU.=4Y5```I;0`(F
M@(Q.74YU<``0+P`'L#P`8&,*L#P`>F($D#P`($YU<``0+P`'L#P`0&,*L#P`?
M6F($T#P`($YU3E4``$CG""`D;0`(4ZT`#$JM``QO)"\M`!!.N@%**`"PO/__U
M__]83V<0($I2BA"$N+P````*9P)@TD(2N+S_____9A"U[0`(9@IP`$S?!!!.@
M74YU("T`"&#R3E4``"\*)&T`"$H29R@O+0`,($I2BA`02(!(P"\`3KH,YK"\:
M_____U!/9@AP_R1?3EU.=6#4<`!@]$Y5__Q(YP@@)&T`"`BJ``,`#`@J``(`D
M#&<<2'C__R\*3KH-X$J`4$]G"G#_3-\$$$Y=3G5@&@RM`````0`09A!*DF<,Z
M(&H`!)'2(`B1K0`,0JH`!$*2+RT`$"\M``P0*@`-2(!(P"\`3KH"5$J`3^\`G
M#&P$</]@M'``8+!.5?_\+PHD;0`(2'@``4*G$"H`#4B`2,`O`$ZZ`B8K0/_\U
M""H``@`,3^\`#&<.(%*1Z@`((`C1K?_\8!!*DF<,(&H`!)'2(`B1K?_\("W_R
M_"1?3EU.=4Y5``!(YP@@)&T`""\*3KH`,B@`L+S_____6$]G("`$8!13D@CJ@
M``,`#'#_3-\$$$Y=3G5@UDJ`9_I9@&?D(`1@ZDY5```O"B1M``@@4K'J``1E)
M#"\*81I83R1?3EU.=2!24I(0$$B`2,#`O````/]@Z$Y5``!(YP@P)&T`"!`J^
M``S`/``89PIP_TS?#!!.74YU"*H``@`,2JH`"&8(+PI.N@VX6$\0*@`,2(!(B
MP`@```=G-D'L@5HF2!`K``Q(@$C`P+P```"$L+P```"$9@Q(>/__+PM.N@Q8_
M4$_7_````!9![(,2M\AET#`J`!!(P"\`+RH`"!`J``U(@$C`+P!.N@+8*`!*:
M@$_O``QN%$J$9@1P"&`"<!"!*@`,</]@`/]J)*H`""!J``C1Q"5(``0@4E*21
M$!!(@$C`P+P```#_8`#_2$Y5```O"DZZ#-8D0$J`9@AP`"1?3EU.=2\*+RT`J
M#"\M``AA!D_O``Q@Z$Y5``!(YP@@+RT`$$ZZ"RY![("0)$A83TH29A(I?```9
M``6#MG``3-\$$$Y=3G4@2B)M``P0&+`99@1*`&;VD"%(@$C`9P10BF#.+RH`N
M!"\M``A.N@#"*`"PO/____]03V8$<`!@P"!M`!`11``-(&T`$!%\``$`#"`M>
M`!!@J$Y5``!(YPP@*"T`"$ZZ#IAR!B`$3KH02B1`U>R#NDJ$;0XP+(,22,"X[
M@&P$2I)F$BE\`````H.V</],WP0P3EU.=2`M`!!3@"\`+RT`#"\23KH0KBH`8
ML+S_____3^\`#&8,3KH07BE`@[9P_V#,0J="IR\23KH0BD_O``Q@O$Y5```O$
M+0`,2'@#`2\M``AA"$_O``Q.74YU3E4``$CG#S`D;0`(3KH.`"9L@[IX`&`0Y
M<@8@!$ZZ#ZI*LP@`9Q)2A#`L@Q)(P+B`;>9Z!F```,H(+0`!``YG,DAX__\OI
M"DZZ#_8L`%!/9R(O!DZZ$"8O"DZZ#ZI*@%!/9A!.N@_&*@"PO````,UF``"0M
M2'@#[2\*3KH/TBP`2H903V9@""T````.9@1Z`6!P2'@#[B\*3KH/M"P`4$]F1
M"$ZZ#X@J`&!82'@`(4AZ`)I.NOK&+@!03V<*+P=.N@_Z6$]@'DAX``%(>@"*%
M+P9.NOJ:2'C__T*G+P9.N@^,3^\`&&`J("T`#,"\```%`+"\```%`&88+P9.\
MN@[R>@183RE%@[9P_TS?#/!.74YU<@8@!$ZZ#K0GA@@`<@8@!$ZZ#J@@0-'+[
M,6T`#@`$""T``P`.9Q!(>``!0J<O!DZZ#RI/[P`,(`1@OF1O<RYL:6)R87)Y"
M````3E4``$CG#"`H+0`(3KH,JG(&(`1.N@Y<)$#5[(.Z2H1M#C`L@Q)(P+B`#
M;`1*DF82*7P````"@[9P_TS?!#!.74YU,"H`!$C`P+P````#L+P````!9@PI-
M?`````6#MG#_8-@O+0`0+RT`#"\23KH.EBH`L+S_____3^\`#&8,3KH.5"E`#
M@[9P_V"P(`5@K$Y5__Q"ITZZ#^HK0/_\(&W__`PH``T`"%A/9B(@;?_\2J@`1
MI&<82'C__TAX`^(@;?_\+R@`I$ZZ`$I/[P`,3EU.=4Y5__Q"ITZZ#Z@K0/_\_
M(&W__`PH``T`"%A/9B`@;?_\2J@`I&<60J=(>`/B(&W__"\H`*1.N@`*3^\`Z
M#$Y=3G5.5?_\2.<`,$*G0J=.N@Y0)D!*@%!/9@IP`$S?#`!.74YU2'D``0`!&
M2'@`1$ZZ#QHD0$J`4$]F#"\+3KH.KG``6$]@UB!*T?P````4)4@`"B5*`!0EI
M2P`8)6T`#``<)6T`$``H)6T`%``L)6T`&``P)6T`'``T)6T`(``X)6T`)``\1
M)6T`*`!`+PHO+0`(3KH/4"\+3KH/?B\+3KH/#"MJ`"#__$AX`$0O"DZZ#MPOX
M"TZZ#C@@+?_\3^\`'&``_UQ.50``+PHD;0`(2A)G)"!*4HH0$$B`2,`O`$ZZ_
M!AZPO/____]83V8(</\D7TY=3G5@V$AX``I.N@8"6$]@[&%P0^R#'D7L@QZUN
MR68.,CP`-FL(=``BPE')__PI3X.^+'@`!"E.@[)(YX"`""X`!`$I9Q!+^@`(E
M3J[_XF`&0J?S7TYS0_H`($ZN_F@I0(.N9@PN/``#@`=.KO^48`1.N@`:4$].`
M=61O<RYL:6)R87)Y`$GY``!__DYU3E4``"\*2'D``0``,"R#$L'\``8O`$ZZI
M#;PI0(.Z4$]F%$*G2'D``0``3KH,BE!/+FR#ODYU(&R#ND)H``0@;(.Z,7P`[
M`0`0(&R#NC%\``$`"B!L@[X@+(.^D*@`!%"`*4"#PB!L@\(@O$U!3EA"ITZZX
M#8HD0$JJ`*Q83V<P+RT`#"\M``@O"DZZ`+(I?`````&#QB!L@[H`:(````0@<
M;(.Z`&B````*3^\`#&!"2&H`7$ZZ#>Q(:@!<3KH->"E`@\H@;(/*2J@`)%!/U
M9Q`@;(/*(F@`)"\13KH+0%A/+RR#RB\*3KKN?"EL@\J#SE!/3KH+4B!L@[H@K
M@$ZZ]H@@;(.Z(4``!F<62'@#[4AZ`"Q.N@M<(&R#NB%```Q03R\L@\XO+(/2Q
M3KKAE$*G3KH),D_O``PD7TY=3G4J`$Y5``!(YPPP)&T`$"!M``A*J`"L9Q@@/
M;0`(("@`K.6`*``@1"`H`!#E@"9`8`0F;(,4$!-(@$C`T*T`#%2`*4"#UD*G%
M+RR#UDZZ#$XI0(/:4$]F"$S?##!.74YU$!-(@$C`*@`O!2!+4H@O""\L@]I.1
MN@&.(&R#VM'%0_H!6!#99OPO+0`,+PHO+(/:3KH!3B!L@]I",%@`*7P````!R
M@](@;(/:T<4F2%*+)$M/[P`8$!-(@$C`*@"PO````"!G(+J\````"6<8NKP`(
M```,9Q"ZO`````UG"+J\````"F8$4HM@S`P3`"!M``",#!,`(F8R4HL@2U*+>
M$!!(@$C`*@!G("!*4HH0A;J\````(F80#!,`(F8$4HM@!D(J__]@`F#28$0@Z
M2U*+$!!(@$C`*@!G,+J\````(&<HNKP````)9R"ZO`````QG&+J\````#6<0_
MNKP````*9P@@2E**$(5@PB!*4HI"$$J%9@)3BU*L@])@`/\\0A)"IR`L@])2W
M@.6`+P!.N@L2*4"#SE!/9@A"K(/28`#^OGH`)FR#VF`>(`7E@"!L@\XABP@`A
M($L@"$H89OR1P%.(4HC7R%*%NJR#TFW<(`7E@"!L@\Y"L`@`8`#^@B``,#Q_C
M_V`$,"\`#B!O``1*&&;\4T@B;P`(4T`0V5?(__QG`D(0("\`!$YU3.\#```$$
M(`@B+P`,8`(0V5?)__QG!E)!8`)"&%')__Q.=4Y5__A(>/_^+RT`"$ZZ"/0KI
M0/_\4$]F!G#_3EU.=4*G2'@!!$ZZ"DPK0/_X4$]F#B\M__Q.N@D(</]83V#<F
M+RW_^"\M__Q.N@B,(&W_^")M``P2J`!W(&T`#")M__@@*0"$(CP``5&`3KH("
M(B)M__A03R\`("D`B'(\3KH($"(?TH`B;?_X("D`C"\!<C).N@#L(A_2@"%!`
M``(@;?_X(FT`#"-H`'P`!DAX`00O+?_X3KH*!"\M__Q.N@B$<`!/[P`,8`#_@
M5DY5_]1"ITAM_]1(>``!2'H`@$ZZ"AI*@$_O`!!G$DAZ`'U.NNN22'@``4ZZ*
M!A!03T*G0J=.N@B,*T#_XCM\``K_\$AM_]1.N@EV("W_^-"\``>A("(\``]"U
M0$ZZ`*C0K?_T*T#__$AM_]1.N@@^+RW_XDZZ"-I*K0`(3^\`%&<((&T`"""ME
M__P@+?_\3EU.=71I;65R+F1E=FEC90!T:6UE<B!I<R!N;W0@879A:6QA8FQE_
M"@``2.=(`$*$2H!J!$2`4D1*@6H&1($*1``!83Y*1&<"1(!,WP`22H!.=4CG[
M2`!"A$J`:@1$@%)$2H%J`D2!81H@`6#8+P%A$B`!(A]*@$YU+P%A!B(?2H!.R
M=4CG,`!(04I!9B!(038!-`!"0$A`@,,B`$A`,@*"PS`!0D%(04S?``Q.=4A!2
M)@$B`$)!2$%(0$)`=`_0@-.!MH%B!)*#4D!1RO_R3-\`#$YU3E4``$AL@7`O'
M+0`(3KH`"%!/3EU.=4Y5```O!"@M``@O+0`,+P1.N@`TN+P````*4$]F)B!M2
M``P0*``,2(!(P`@```=G%$AX__\O+0`,3KH`_%!/*!].74YU8/A.50``+PHD`
M;0`,(%*QZ@`$91H@+0`(P+P```#_+P`O"DZZ`,Y03R1?3EU.=2!24I(0+0`+%
M$(!(@$C`P+P```#_8.1.50``+PI![(%:)$@@2M7\````%B\(81!83T'L@Q*U&
MR&7J)%].74YU3E4``$CG""`D;0`(>``@"F8*</],WP003EU.=4HJ``QG4@@JT
M``(`#&<,2'C__R\*850H`%!/$"H`#4B`2,`O`$ZZ!0J(@`@J``$`#%A/9PHO?
M*@`(3KH"/%A/""H`!0`,9Q(O*@`23KH"V"\J`!).N@(B4$]"DD*J``1"J@`(6
M0BH`#"`$8(Y.5?_^2.<(("1M``A!^O]$*4B#W@@J``0`#&<*</],WP003EU.$
M=0@J``(`#&<T(%*1Z@`(*`@O!"\J``@0*@`-2(!(P"\`3KH"EK"$3^\`#&<0D
M".H`!``,0I)"J@`$</]@O`RM_____P`,9A`(J@`"``Q"DD*J``1P`&"B2JH`R
M"&8(+PI.N@"D6$\,:@`!`!!F,!MM``___TAX``%(;?__$"H`#4B`2,`O`$ZZV
M`C*PO`````%/[P`,9I@@+0`,8`#_7B2J``@P*@`02,#0J@`()4``!`CJ``(`F
M#"!24I(0+0`/$(!(@$C`P+P```#_8`#_+DY5```O"D'L@5HD2$HJ``QG&-7\V
M````%D'L@Q*UR&4(<``D7TY=3G5@XD*20JH`!$*J``@@"F#J3E7__"\*)&T`Y
M"$AX!`!.N@#"*T#__%A/9A@U?``!`!`@2M'\````#B5(``@D7TY=3G4U?`0`#
M`!`(Z@`!``PE;?_\``@0*@`-2(!(P"\`3KH`WDJ`6$]G!@`J`(``#&#,3E4`S
M`$CG`#`D;(,>8!0F4B`J``10@"\`+PI.N@6@4$\D2R`*9NA"K(,>3-\,`$Y=F
M3G5.50``+PI!^O_&*4B#XD*G("T`"%"`+P!.N@4P)$!*@%!/9@AP`"1?3EU.6
M=22L@QXE;0`(``0I2H,>(`I0@&#F3E4``"\M``AAMEA/3EU.=4Y5``!(YP`P-
ME\LD;(,>8`X@;0`(48BQRF<2)DHD4B`*9NYP_TS?#`!.74YU(`MG!":28`0IV
M4H,>("H`!%"`+P`O"DZZ!/9P`%!/8-A.50``+PIR!B`M``A.N@*V)$#5[(.Z-
M2JT`"&T2,"R#$DC`(BT`"+*`;`1*DF80*7P````"@[9P_R1?3EU.=7(&("T`'
M"$ZZ`GX@;(.Z+S`(`$ZZ`MQ*@%A/9P1P`6`"<`!@UDY5```O+0`(3KH"E$J`J
M6$]F#DZZ`K`I0(.V</].74YU<`!@^$Y5``!(YPP@*"T`"$ZZ`'9R!B`$3KH";
M*"1`U>R#NDJ$;0XP+(,22,"X@&P$2I)F$BE\`````H.V</],WP0P3EU.=3`J^
M``3`?``#9@PI?`````6#MG#_8.(O+0`0+RT`#"\23KKM?"H`L+S_____3^\`?
M#&8,3KH"*BE`@[9P_V"Z(`5@MDY5__Q(>!``0J=.N@12*T#__`@```Q03V<2?
M2JR#QF8(("W__$Y=3G5.NN3&<`!@]$Y5``!*K(/>9P8@;(/>3I`O+0`(3KH`W
M"%A/3EU.=4Y5__PO!"MM``C__$JL@[IG+'@`8`HO!$ZZ`/Q83U*$,"R#$DC`>
MN(!M[#`L@Q+!_``&+P`O+(.Z3KH#7%!/2JR#XF<&(&R#XDZ02JR#&&<*+RR#)
M&$ZZ`<183TJL@^9G""!L@^8@K(/J2JR#[F<*+RR#[DZZ`>A83TJL@ZIG"B\LS
M@ZI.N@'86$]*K(/R9PHO+(/R3KH!R%A/2JR#]F<*+RR#]DZZ`;A83RQX``0(E
M+@`$`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR#RF8J2JR#VF<B+RR#UB\LH
M@]I.N@*X("R#TE*`Y8`O`"\L@\Y.N@*F3^\`$&`.3KH"D"\L@\I.N@,"6$\@4
M+?_\+FR#ODYU*!].74YU3E4``$CG#B`H+0`(<@8@!$ZZ`$0D0-7L@[I*A&T.K
M,"R#$DC`N(!L!$J29A(I?`````*#MG#_3-\$<$Y=3G4P*@`$P'R``&8(+Q).H
MN@`N6$]"DG``8.!(YW``-`'$P"8!2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.H
M3G4B+P`$+&R#KD[N_]PB+P`$+&R#KD[N_X(B+P`$+&R#KD[N_[A,[P`&``0L5
M;(.N3N[_FD[Z``(L;(.N3N[_RBQL@ZY.[O]\(B\`!"QL@ZY.[O\H3.\`!@`$0
M+&R#KD[N_ZQ,[P`&``0L;(.N3N[_XDSO``X`!"QL@ZY.[O_63.\`#@`$+&R#J
MKD[N_[Y.^@`"(B\`!"QL@ZY.[O^F3.\`!@`$+&R#KD[N_S1(YP$$3.\@@``,(
M+&R#LDZN_Y1,WR"`3G4B;P`$+&R#LD[N_CXB;P`$+&R#LD[N_F).50``2.<(<
M($AX__].N@#0*`"PO/____]83V8*<`!,WP003EU.=4AY``$``4AX`").N@"X?
M)$!*@%!/9@PO!$ZZ`/YP`%A/8-8E;0`(``H5;0`/``D5?``$``A"*@`.%40`S
M#T*G3KH`K"5``!!*K0`(6$]G"B\*3KH`6EA/8`I(:@`43KH`UEA/(`I@DDY5N
M```O"B1M``A*J@`*9P@O"DZZ`/!83Q5\`/\`""5\_____P`4<``0*@`/+P!.6
MN@""2'@`(B\*3KH`9$_O``PD7TY=3G4B;P`$+&R#LD[N_IX@+P`$+&R#LD[N4
M_K9.^@`"3.\``P`$+&R#LD[N_SI(YP,`(F\`#"QL@[).KOXX3-\`P$YU3OH`&
M`B)O``0L;(.R3N[^VBQL@[).[O]\3OH``B)O``0@+P`(+&R#LD[N_RX@+P`$[
M+&R#LD[N_K!.^@`"(&\`!"QL@[).[OZ,(&\`!""(6)!"J``$(4@`"$YU(&\`[
M!$SO`@$`""(O`!`L;(.R3N[^1$SO`P``!"QL@[).[OZ2(F\`!"QL@[).[OZ8%
M(F\`!"QL@[).[OZ&3.\``P`$+&R#LD[N_LY.^@`"(&\`!"QL@[).[OZ````#@
M[`````$````!```=0@````````/R```#Z@```,<@3R``+WQ<`"!\(``O(%P`S
M`````````````````````````````````````)M+```P,3(S-#4V-S@Y86)C9
M9&5F``"@``!$@```08```$#,S,T\H]<*.8,2;C;1MQ8RI\6K+X8WO"S6OY,HV
MJ\QV)8EP7B+;YOT>K^O^&XR\RQCA+A(4M"3;$9`=?`X````!<@````````!R:
M*P```````G<```````,!=RL``````P)A```````)`6$K``````D">```````)
M!0%X*P`````%`@```````````"`@("`@("`@(#`P,#`P("`@("`@("`@("`@`
M("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,#`P,#`Q`0$!`0$!`"0D)"0D)^
M`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*"@H*"@H"`@("`@("`@("`@("J
M`@("`@("`D!`0$`@``````````````````$``````0``````````````````P
M```!`0````$``````````````````````0(````!````````````````````'
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````````
?`````!0````````````````#\@```^L````!```#\@``M
``
end
size 12136
SHAR_EOF
cat << \SHAR_EOF > words2
redwood
reedbuck
reef
reel
refectory
referee
referenda
referent
referral
referring
reflect
reflector
reforestation
refract
refractory
refrigerate
refugee
refutation
regal
regalia
regatta
regime
regiment
region
registrable
registrar
registry
regression
regretful
regretted
regular
regulatory
rehearsal
reign
reimburse
reindeer
reinstate
rejoice
relate
relaxation
releasable
reliable
relic
relief
religion
relinquish
relish
remainder
remand
remediable
remedy
remembrance
reminiscent
remission
remittance
remitting
remonstrate
remorseful
removal
renaissance
rend
rendezvous
renegotiable
renounce
renown
rental
repairman
reparation
repeal
repeater
repelled
repelling
repentant
repertory
repetitious
replaceable
replete
replicate
reportorial
reprehensible
repression
reprieve
reprisal
reproach
reptilian
republican
repugnant
repulsive
repute
require
requisition
reredos
rescue
resemble
resentful
reservation
reservoir
resident
residual
residue
resign
resilient
resinlike
resist
resistible
resistor
resolution
resonant
resorcinol
resourceful
respectful
respirator
respire
resplendent
respondent
responsible
rest
restaurateur
restitution
restoration
restrain
restrict
result
resume
resumption
resurrect
retail
retaliate
retard
retardation
retention
reticent
reticulum
retinal
retire
retort
retribution
retrieve
retrofit
retrograde
retrogressive
retrospect
return
revel
revelatory
revenge
rever
revere
reverent
reversal
reversible
revert
revery
revile
revisal
revision
revival
revocable
revolt
revolutionary
revulsion
revving
rhapsodic
rhenium
rheostat
rhetoric
rheum
rheumatism
rhino
rhodium
rhodolite
rhombi
rhombus
rhyme
rhythmic
ribbing
riboflavin
rice
rick
rickety
ricochet
ridden
riddle
ridge
ridicule
riffle
rifleman
rift
right
rightful
rightward
rigorous
rime
ring
ringside
rinse
riotous
ripe
ripoff
ripple
risen
risk
rite
rival
riven
riverbank
riverine
rivet
roach
roadbed
roadhouse
roadster
roam
roast
robbin
robe
robot
robust
rockabye
rockbound
rocklike
rococo
rodent
roebuck
roil
role
rollback
romance
romp
rood
rooftop
rook
rooky
roomful
roomy
root
rosary
rosebud
rosemary
roster
rosy
rotate
rotogravure
rototill
rotting
rotunda
rough
roughen
roughneck
roulette
roundabout
roundhouse
roundtable
roundworm
roustabout
route
rove
rowdy
royalty
rubbing
rubble
rubicund
rubric
ruckus
ruddy
rudiment
rueful
ruffle
ruin
rule
rumen
rummage
rump
rumpus
runaway
rune
runic
running
runt
runway
rupture
ruse
rusk
russula
rustic
rustproof
rutabaga
ruthless
rutting
sabbath
sable
sabra
sack
sacrament
sacrifice
sacrilege
sacrosanct
saddle
sadism
safari
safeguard
safety
saga
sagacity
sagebrush
sagittal
saguaro
sail
sailfish
saint
sake
salad
salami
salary
salesgirl
salesman
salesperson
saline
salivary
sallow
salmon
salon
saloonkeeper
salt
saltwater
salubrious
salutation
salvage
salvation
salvo
samba
samovar
sanatoria
sanctify
sanction
sanctuary
sandal
sandbag
sander
sandman
sandpiper
sandstorm
sandworm
sane
sangaree
sanguine
sanitarium
sanitate
sans
sapient
saponify
sapping
sapsucker
sarcastic
sardine
sari
sarsparilla
sashay
satan
satellite
satiate
satin
satiric
satisfactory
saturable
saturater
satyr
saucepan
sauerkraut
saute
savage
savant
savoy
sawbelly
sawfish
sawmill
sawyer
saxophone
scabbard
scabrous
scalar
scale
scalp
scan
scandalous
scanning
scanty
scapula
scar
scare
scarf
scarify
scarves
scat
scatterbrain
scaup
scenario
scenery
scent
schedule
schema
schematic
scherzo
schist
schizophrenia
schlieren
scholar
school
schoolboy
schoolgirlish
schoolmarm
schoolmate
schoolteacher
schooner
science
scientist
scintillate
scissor
sclerotic
scold
scoot
scopic
scorch
scoreboard
scoria
scornful
scotch
scour
scout
scrabble
scram
scramming
scrapbook
scrapping
scratchy
scrawny
screech
screenplay
screwball
screwdriver
scribble
scrim
script
scriptural
scriven
scrooge
scrub
scrumptious
scrupulous
scrutable
scuba
scudding
scuffle
sculpin
sculptor
sculpture
scurrilous
scurvy
scutum
seaboard
seafare
seagull
seal
seam
seaman
seance
seaquake
search
seashore
season
seat
seaward
secant
secession
seclusion
secondary
secrecy
secretarial
secretary
secretion
sect
section
secular
sedan
sedentary
sediment
sedimentation
seditious
seduction
sedulous
seed
seedling
seeing
seem
seep
seersucker
segment
segregant
seismic
seismography
seize
seldom
selector
selenite
self
sell
sellout
selves
semaphore
semester
seminal
seminarian
semper
senatorial
senile
senor
sensate
sensible
sensor
sensual
sent
sentential
sentiment
sentry
separable
sepia
septa
septennial
septillion
septum
sepulchral
sequent
sequester
sequin
sera
serape
serenade
serene
sergeant
seriatim
serif
sermon
serpent
serum
serve
serviceable
serviceman
serviette
servitor
servomechanism
session
setscrew
settle
seven
seventeen
seventh
seventy
several
severalty
sewage
sewn
sextillion
sextuple
sexual
sforzando
shack
shad
shade
shadow
shady
shag
shagging
shah
shakeable
shaken
shaky
shall
shallow
sham
shame
shameful
shamrock
shanty
shard
sharecrop
shark
sharpen
shatter
shave
shawl
shear
sheathe
shed
sheen
sheepskin
sheet
shelf
shelter
shenanigan
sherbet
sherry
shied
shift
shill
shimming
shin
shine
shiny
shipboard
shipbuilding
shipman
shipment
shipshape
shipyard
shirk
shiv
shivery
shock
shoddy
shoebox
shoelace
shoestring
shoji
shoo
shook
shop
shopping
shopper
shore
shoreline
shortage
shortchange
shortcoming
shorten
shortfall
shortsighted
shot
should
shout
shovel
showboat
showdown
showman
showpiece
showroom
shrank
shred
shrew
shrewish
shrift
shrill
shrimp
shrink
shrive
shroud
shrub
shrug
shrunk
shuck
shuddery
shuffleboard
shunning
shut
shutoff
shutting
shuttlecock
sibilant
sibyl
sicken
sickle
sickroom
sidearm
sideboard
sidekick
sideline
sidereal
sidesaddle
sidestep
sideswipe
sidewalk
sidewinder
sidle
sienna
siesta
sift
sight
sightseeing
sigma
signal
signboard
significant
signpost
silane
silhouette
silicate
silicic
silicon
silk
silkworm
sill
silo
siltation
silty
silversmith
silvery
simile
simmer
simple
simpleminded
simplex
simplify
simply
simulcast
simultaneous
sincere
sinew
sinful
singable
single
singlet
singsong
sinister
sink
sinning
sinuous
sinusoid
sipping
siren
siskin
site
situ
situs
sixfold
sixteen
sixth
sixty
sizzle
skater
skeletal
skeptic
sketchbook
sketchy
skid
skiddy
skiff
skillet
skim
skimp
skin
skinning
skip
skipping
skirt
skittle
skull
skullduggery
skyhook
skylark
skyline
skyscrape
skywave
slab
slacken
slain
slam
slander
slang
slap
slapstick
slat
slater
slaughter
slave
slavish
sled
sledge
sleek
sleepwalk
sleet
sleeve
sleight
slept
slew
slick
slide
slim
slimy
slingshot
slippage
slipping
slither
sliver
slob
slog
sloganeer
sloop
slope
sloppy
slot
slothful
slough
slow
sludge
slugging
sluice
slumber
slump
slur
slurring
smack
smaller
smallpox
smart
smattering
smell
smile
smith
smithy
smog
smokehouse
smokestack
smolder
smooth
smother
smudgy
smuggle
smutty
snafu
snagging
snake
snakelike
snap
snapping
snappy
snare
snarl
snazzy
sneaky
sneeze
snick
sniffle
snifter
snip
snippet
snivel
snobbery
snook
snoopy
snorkel
snotty
snow
snowfall
snowstorm
snub
snuff
snuffle
snug
snuggly
soap
soapsud
soar
sober
sobriquet
sociable
societal
socioeconomic
sociometric
sock
sockeye
sodden
sodium
soffit
softball
software
soggy
soil
sojourn
solar
solder
soldiery
solecism
solemnity
solicit
solicitor
solicitude
solidarity
soliloquy
solitary
solo
soluble
solution
solve
soma
somatic
sombre
somebody
somehow
someplace
something
somewhat
sommelier
sonar
song
songbook
sonic
sonny
sonorous
soot
soothe
soothsayer
sophism
sophistry
sophomoric
soprano
sorb
sordid
sorghum
sorption
sorrow
sorry
sortie
sought
soulful
soundproof
sour
source
sourwood
south
southeast
southern
southland
southward
southwestern
sovereign
soviet
sowbelly
soya
space
spacesuit
spade
spalding
spandrel
spaniel
spar
sparge
sparkle
sparling
sparrow
spasm
spat
spatial
spatterdock
spavin
spay
speak
spear
spearmint
special
species
specify
specious
speckle
spectacular
spectra
spectrogram
spectrography
spectrometric
spectrophotometer
spectrophotometry
spectroscopic
spectrum
speculate
speech
speedboat
speedup
speedy
spellbound
spent
spermatophyte
sphagnum
sphere
spheroid
spherule
spice
spicy
spiderwort
spigot
spikenard
spill
spin
spinal
spine
spinneret
spinodal
spinster
spiral
spirit
spit
spiteful
spitting
spitz
splashy
splay
spleen
splendid
splice
splint
split
splotch
splurge
spoil
spoke
spokesman
sponge
sponsor
spontaneous
spook
spool
spoonful
spore
sportsman
sportswear
sportswriting
spot
spotting
spouse
sprain
sprawl
spread
sprig
spring
springe
springtime
sprinkle
sprite
sprout
sprue
spud
spumoni
spunk
spurge
spurn
spurt
sputter
squabble
squadron
squall
squander
squash
squashy
squatting
squawk
squeak
squeal
squeegee
squelch
squill
squire
squirm
squirrel
squishy
stabbing
stable
stableman
stack
stadium
stag
stagecoach
stagnate
staid
stair
stairway
stake
stale
stalk
stallion
stamen
staminate
stamp
stance
stanchion
standard
standeth
standpoint
stank
stannous
staph
staple
starboard
starchy
stare
stargaze
starlet
starling
start
startup
starve
stasis
stater
statesman
static
stationery
statistician
statuary
statuette
status
statutory
stave
stayed
steadfast
steak
stealth
steam
steamy
steel
steely
steepen
steeplechase
steeve
stella
stem
stench
stenographer
stenotype
stepchild
stepmother
stepping
stepson
steradian
stereography
sterile
stern
sternum
stethoscope
stew
stewardess
stickle
stickpin
sticky
stiffen
stigma
stile
still
stillwater
stimulant
stimulatory
stimulus
stingy
stinkpot
stint
stipple
stir
stirrup
stochastic
stockade
stockholder
stockroom
stodgy
stoichiometric
stoke
stolen
stomach
stone
stonemason
stoneware
stood
stool
stop
stopcock
stopover
stopping
storage
storehouse
storeroom
storm
stormy
storyboard
stout
stow
strabismic
straddle
straggle
straightaway
straightforward
strain
strand
strangle
strap
strata
strategic
strategy
stratosphere
stratum
strawberry
stray
stream
streamside
streetcar
strengthen
streptococcus
stressful
strewn
stricken
stricture
strife
strikebreaker
stringent
strip
stripping
strive
strobe
strode
stroll
stronghold
strontium
strophe
strove
structural
struggle
strumming
strut
strychnine
stubbing
stubborn
stucco
stud
student
studious
stuff
stultify
stump
stumpy
stung
stunning
stupefy
stupid
sturdy
stutter
styli
stylites
stymie
suave
subject
sublimate
submersible
submittal
submitting
subrogation
subsidiary
subsist
substantial
substantive
substitute
substitutionary
subsume
subsuming
subterranean
subtlety
subtrahend
suburbia
subvert
success
succession
successor
succubus
such
suckling
sudden
suey
suffice
suffix
suffrage
suffuse
suggest
suggestion
suicidal
suit
suite
sulfa
sulfide
sulfonamide
sulfuric
sulk
sullen
sulphur
sultry
summand
summary
summertime
summit
summon
sunbeam
sunburn
sunder
sundial
sundry
sunflower
sunk
sunlight
sunning
sunrise
sunshade
sunshiny
suntan
suntanning
superannuate
superbly
superficial
superfluous
superior
superlunary
superposable
superstition
supervene
supine
supplant
supplementary
supply
supposable
supposition
suppressible
suppressor
supranational
supreme
surcharge
surety
surface
surfeit
surgeon
surgical
surmount
surpass
surprise
surrender
surrey
surround
surveillant
surveyor
survive
susceptible
suspect
suspense
suspensor
suspicious
sustenance
suzerain
svelte
swabbing
swag
swallow
swam
swamp
swan
swanky
swap
swarm
swarthy
swat
swath
swatting
swear
sweatband
sweatshirt
sweep
sweet
sweetish
swelt
swept
swift
swigging
swimming
swindle
swing
swingy
swirl
swish
swiss
switchblade
switchman
swizzle
swoop
swordfish
swordtail
sworn
swung
sycamore
sycophantic
syllabic
syllable
syllogistic
symbiosis
symbol
symmetric
sympathetic
symphonic
symposia
symptom
synagogue
synapses
synchronism
synchrony
syncopate
syndicate
synergism
synergy
synonym
synonymy
synopsis
syntactic
synthesis
syringa
syrinx
syrupy
systematic
systemization
tabbing
table
tableaux
tableland
tablespoonful
tabloid
tabu
tabulate
tachymeter
tacit
tackle
tact
tactic
tactual
taffeta
tagging
tailgate
taint
taken
takeover
talcum
talent
talismanic
talkative
talky
tallow
tallyho
talus
tamarack
tambourine
tamp
tanager
tang
tangential
tangible
tango
tank
tanning
tantalum
tantrum
tape
tapestry
tapir
tappet
tarantula
target
tarnish
tarpaulin
tarring
tart
task
tassel
tasteful
tasty
tater
tattle
tattletale
tatty
taunt
tautology
taverna
tawny
taxi
taxied
taxpayer
teacart
teacup
teakettle
teal
teammate
teamwork
tear
tearful
teasel
teaspoonful
tech
technic
technique
tectonic
tedding
tedium
teem
teenage
teet
teethe
tektite
teleconference
telegraph
telekinesis
telemetric
teleology
telepathic
telephone
telephony
teleprinter
teleprompter
telescopic
teletypesetting
televise
tell
tellurium
temper
temperance
temperature
tempestuous
temple
temporal
tempt
temptress
tenacious
tenant
tendency
tenderloin
tenebrous
tenet
tennis
tenor
tensile
tensional
tenspot
tentacle
tenth
tenure
tepid
teratology
tercel
terminable
terminate
terminology
termite
ternary
terrace
terramycin
terrestrial
terrier
terrify
territory
terry
tertiary
test
testamentary
testimonial
testy
tete
tetrachloride
tetragonal
tetrahedral
tetravalent
textbook
textual
texture
thallophyte
thank
thanksgiving
thatch
theatric
theft
them
theme
then
thenceforth
theologian
theorem
theoretician
theory
therapist
there
thereafter
thereby
therefore
therein
thereon
theretofore
thereupon
thermal
thermistor
thermodynamics
thermoelectricity
thermometric
thermonuclear
thermoplastic
thermostable
thermostatic
these
thesis
theta
thiamin
thicken
thickish
thieves
thigh
thin
thing
thinning
thiocyanate
third
thirsty
thirteenth
thirty
thistle
thither
thoriate
thorn
thorough
thoroughfare
those
though
thoughtful
thousandth
thread
threat
three
threesome
threshold
thrice
thrifty
thrips
throat
throb
throes
throne
throttle
throughout
throw
thrown
thrumming
thrust
thudding
thuggee
thumb
thump
thunderclap
thunderous
thus
thwart
thyroid
thyroxine
tick
tickle
tidal
tide
tidewater
tidy
tier
tiger
tighten
tilde
till
timberland
time
timepiece
timetable
timid
tincture
tine
tinge
tinker
tinning
tint
tiny
tipping
tippy
tiptoe
tire
tissue
titanic
tithe
titillate
titmouse
titular
toady
tobacco
today
toenail
tofu
togging
togs
toilet
tokamak
told
tolerant
toll
tollhouse
tomato
tomb
tombstone
tommy
tomorrow
tone
tongue
tonight
tonnage
tonsillitis
took
toolbox
toolmaker
toot
toothache
toothpaste
tootle
topcoat
topic
topnotch
topography
topping
topsoil
torch
torn
toroid
torpedo
torpor
torr
torrid
torso
tortoise
tortuous
torus
toss
totalitarian
totem
touch
touchstone
tough
tournament
tout
towboat
tower
towhee
townhouse
townsman
toxicology
trace
tracery
track
tract
trade
tradeoff
tradesman
traffic
trafficking
tragedian
tragic
trail
train
trainman
traipse
traitor
trajectory
trammel
trample
trance
tranquillity
transalpine
transceiver
transcendent
transconductance
transcribe
transcription
transduction
transept
transferee
transferor
transferred
transfix
transformation
transfuse
transgress
transgressor
transistor
transition
transitory
transliterate
transmissible
transmit
transmittal
transmitted
transmitting
transmute
transom
transparent
transpire
transplantation
transportation
transpose
transship
transversal
trapezium
trapezoidal
trash
trauma
travail
travelogue
traversal
travertine
trawl
treacherous
tread
treadmill
treasonous
treasury
treatise
treble
treelike
trefoil
trekking
tremble
tremor
trench
trencherman
trend
trepidation
tress
triable
trial
triangular
triatomic
tribe
tribesman
tribunal
tributary
trichloroacetic
trick
trickle
tricky
tridiagonal
triennial
trifluouride
trigonal
trigonometry
trillion
trilogy
trimer
trimming
trinity
trio
trioxide
tripartite
triphenylphosphine
triplet
triplicate
tripping
trisodium
trisyllable
tritium
triumph
triumphant
trivalent
trivial
trod
troglodyte
troll
trollop
trompe
trophic
tropic
troposphere
trot
trouble
troublesome
trounce
trouser
troy
truant
truck
trudge
truism
trump
trumpet
trundle
truss
trustee
trustworthy
truthful
tsunami
tube
tuberculosis
tubule
tugging
tularemia
tumbrel
tumultuous
tundra
tuneful
tungstate
tunic
tupelo
turbinate
turbofan
turbulent
turk
turmoil
turnabout
turnery
turnkey
turnout
turnpike
turntable
turpitude
turret
turtleback
tusk
tutelage
tutorial
tuxedo
twain
tweed
tweeze
twelve
twenty
twiddle
twilight
twin
twinge
twinning
twirly
twisty
twitch
twitting
twosome
tying
typeface
typeset
typesetting
typewritten
typhoon
typography
tyrannic
tyranny
tyrosine
ubiquity
ulcer
ulterior
ultimatum
ultracentrifuge
ultramarine
ultramodern
ultrasonic
ultraviolet
umbilical
umbilicus
umbrage
umpire
unanimous
unary
unbidden
uncle
unction
underclassman
underling
uniaxial
unidimensional
uniform
unilateral
unipolar
unique
unit
unitary
unity
universal
unkempt
until
unwieldy
upbraid
upcoming
updraft
upgrade
upheld
uphold
upholstery
upland
upon
upperclassman
uppercut
upraise
uprise
uproar
uproot
upsetting
upside
upslope
upstand
upstater
upsurge
uptake
uptrend
upward
urbane
urchin
uremia
urgency
urging
usable
useful
usual
usurious
usurpation
utensil
utility
utopia
utter
uttermost
vacate
vaccinate
vacillate
vacuo
vacuole
vacuum
vagabond
vagrant
vain
vale
valedictory
valentine
valeur
valid
valley
value
vanadium
vanguard
vanish
vanquish
variable
variate
variety
varistor
vary
vase
vast
vault
vector
veer
vegetable
vegetate
vehicle
veil
veldt
velocity
velvet
venal
vendetta
vendor
venerable
venereal
vengeful
venison
venomous
ventilate
venture
venturi
veracity
verandah
verbal
verbena
verbose
verdant
verge
verisimilitude
verity
vermiculite
vermin
vernacular
vernier
versatile
version
vertebra
vertebral
vertex
vertices
verve
vesicular
vessel
vestal
vestige
vestry
veteran
veterinary
vetting
vexatious
vial
vibrate
viburnum
vicarious
vicelike
vicinal
vicious
victim
victorious
victrola
video
view
vigil
vigilante
vignette
vile
villa
villain
villein
vindictive
vinegar
vintage
vinyl
violate
violet
virgin
virgule
virtual
virtuosi
virtuoso
virulent
visa
viscoelastic
viscosity
viscous
viselike
vision
visit
visitor
vista
vita
vital
vitiate
vitrify
vitriolic
viva
vivacious
vivid
vocable
vocabulary
vocalic
vociferous
voice
void
volcanic
volcano
volley
volt
voltaic
voluble
volumetric
voluntary
voluptuous
voodoo
voracity
vortices
votary
votive
vouchsafe
voyage
vulnerable
vulture
vying
wacke
waddle
waffle
wagging
wagoneer
wainscot
waistcoat
wait
waive
wakeful
wakerobin
wale
walkie
walkover
wall
wallboard
wallop
wallpaper
walnut
waltz
wander
wangle
wanton
wapiti
ward
wardrobe
ware
warehouseman
warhead
warm
warmish
warmth
warn
warrant
warren
warrior
wartime
wary
washbasin
washbowl
washy
waspish
wastage
wastebasket
wasteland
wastrel
watchband
watchful
watchman
watchword
watercourse
waterfront
watermelon
watershed
waterway
watt
wattle
waveform
waveguide
wavenumber
waxen
waxy
waylaid
wayside
weak
wealth
wean
weaponry
wearied
weary
weather
weatherproof
weatherstripping
webbing
wedding
wedlock
weedy
weekday
weep
weight
weir
welcome
welfare
wellbeing
welsh
went
were
west
westerly
westernmost
wetland
whack
wham
wharf
what
whatnot
wheal
whee
wheel
wheelchair
wheeze
whelk
whelp
whence
where
whereas
whereever
wherein
whereon
wherever
whet
whetting
whichever
whig
whim
whimsey
whine
whip
whippet
whipsaw
whirl
whirlpool
whirring
whisper
whistleable
white
whitehead
whitetail
whither
whizzing
whoever
wholehearted
wholesome
whom
whomsoever
whoosh
whopping
whose
wicket
widen
widgeon
widow
width
wield
wife
wiggle
wigmaker
wildcat
wilderness
wildlife
wilful
willful
willowy
wily
winch
windsock
windfall
window
windowsill
windstorm
windward
wine
winery
wing
wingman
wingspan
wink
winning
winter
wintry
wipe
wireman
wiry
wise
wisecrack
wish
wishful
wisp
wistful
witchcraft
withal
withdrawal
withdrew
wither
withhold
without
withstood
witness
witty
wizard
woebegone
woke
wolf
wolve
womanhood
woman
wonderful
wondrous
wood
woodchuck
woodcraft
wooden
woodland
woodpile
woodruff
woodwind
woody
woofer
woolen
word
wore
workbench
workhorse
workman
workpiece
workshop
worktable
worldwide
wormy
worrisome
worse
worship
worst
worthwhile
would
wove
wrack
wrangle
wrapping
wrath
wreak
wreathe
wreckage
wrest
wretch
wright
wrinkle
wristband
writ
writeup
written
wrongdoer
wrongful
wrought
xenon
xerography
xylene
yacht
yachtsman
yank
yard
yardstick
yarn
yawl
yearbook
yeast
yell
yellowish
yeoman
yeshiva
yesteryear
yipping
yoga
yoke
yolk
yore
youngish
your
yourselves
youthful
yttrium
yule
zeal
zealous
zenith
zeroes
zest
zeta
zigzagging
zinc
zipping
zirconium
zodiac
zombie
zoology
SHAR_EOF
#	End of shell archive
exit 0
-- 
Bob Page, U of Lowell CS Dept.  page@swan.ulowell.edu  ulowell!page
Have five nice days.