Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

v01i082: xconq - multiplayer strategy game for X-windows, Part02/07

22 views
Skip to first unread message

games-...@tekred.uucp

unread,
Jul 9, 1987, 8:53:13 PM7/9/87
to
Submitted by: "Stanley T. Shebs" <shebs%or...@cs.utah.edu>
Comp.sources.games: Volume 1, Issue 82
Archive-name: xconq/Part02


#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 2 (of 7)."
# Contents: mkmap.6 mkmap.c preshar.7.u
# Wrapped by billr@tekred on Thu Jul 9 17:45:39 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f mkmap.6 -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"mkmap.6\"
else
echo shar: Extracting \"mkmap.6\" \(2051 characters\)
sed "s/^X//" >mkmap.6 <<'END_OF_mkmap.6'
X.TH MKMAP 6 Utah
X.SH NAME
Xmkmap - random map generator
X.SH SYNOPSIS
X.B mkmap
Xwidth height [+][bcfshad]*[2-7]
X.SH DESCRIPTION
X.I Mkmap
Xis used by
X.I xconq(6)
Xto generate random world maps complete with randomly
Xnamed cities. The resulting map is written to standard output, in a format
Xunderstood by
X.I xconq.
XThe output can also be piped into
X.I xmap(6)
Xfor display. The width and height are integer values, between 20 and
X299, inclusive.
X.PP
XThe optional argument is a key to enable/disable various processing stages
Xwithin the generator. The + sign indicates that the remainder of the
Xkey lists the stages that are enabled; otherwise, the key lists
Xstages to be disabled.
X.TP 5
X.B b
XControl creation of blobs prior to fractal subdivision.
X.TP 5
X.B c
XControl creation of curves prior to fractal subdivision.
X.TP 5
X.B f
XControl fractal subdivision.
X.TP 5
X.B s
XControl smoothing after subdivision.
X.TP 5
X.B h
XControl histogram computation.
X.TP 5
X.B a
XControl anomaly fixup.
X.TP
X.B d
XSuppress final map generation and produce a relief map instead.
XThe relief map is tagged differently and will be recognized as such by
X.I xmap(6);
Xbut
X.I xconq(6)
Xwill simply fail.
X.TP
X.B 2-7
XPlace exactly as many large cities on the map as given by the number.
XOtherwise, the number of cities is a fixed percentage of the map size.
X.PP
XThe keys are intended for debugging and testing the generation algorithms,
Xalthough they could be used to generate (very) unusual maps.
X.SH AUTHOR
XStan Shebs (sh...@cs.utah.edu)
X.SH "SEE ALSO"
Xxconq(6), xmap(6)
X.SH DIAGNOSTICS
XWill complain if there are insufficient city names to go around; this
Xhappens only on very large maps.
X.SH BUGS
XThe fractal algorithm has a persistent tendency to generate
X"Mediterranean worlds" or "Pangaean worlds", in which the entire map is
Xcharacterized by having either a huge sea or huge landmass in the middle.
XAttempts to fix this have been only partly successful.
X
XNot all combinations of keys will work. The serious experimenter
Xshould consult the source code to understand what will work.
X
END_OF_mkmap.6
if test 2051 -ne `wc -c <mkmap.6`; then
echo shar: \"mkmap.6\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f mkmap.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"mkmap.c\"
else
echo shar: Extracting \"mkmap.c\" \(17689 characters\)
sed "s/^X//" >mkmap.c <<'END_OF_mkmap.c'
X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */
X/* This program may be used, copied, modified, and redistributed freely */
X/* for noncommercial purposes, so long as this notice remains intact. */
X
X/* RCS $Header: mkmap.c,v 1.2 87/06/06 20:04:49 shebs Exp $ */
X
X/* This program uses a fractal terrain generation method adapted from the */
X/* Carpenter et al subdivision algorithms (CACM June 82). This rendition */
X/* has been integerized for speed and includes some pre-/post-processing */
X/* steps to produce maps more suitable for conquest. */
X
X#include <stdio.h>
X#include <math.h>
X
X#define TRUE (1)
X#define FALSE (0)
X
X#ifndef BSD
X#define index strchr
X#endif BSD
X
X/* This is just the collection of names for random cities. */
X
X#include "mkmap.h"
X
X/* Largest map allowed. */
X
X#define SIZE 300
X
X#define CONTOURS 64
X#define WCONTOURS 4
X
X#define MAXALT 16384
X#define BUCKETS 1024
X#define BUCKSIZE 16
X
X/* Special elevations being used as flags - outside allowed range */
X
X#define TOWN 32001
X#define CITY 32002
X
X#define avg(a,b) (((a) + (b)) / 2)
X
X#define abs(a) (((a) >= 0) ? (a) : -(a))
X
X#define sgn(a) (((a) < 0) ? -1 : (((a) > 0) ? 1 : 0))
X
X#define random(n) (rand() % (n))
X
X#define init_random() (srand(getpid()))
X
X#define flip_coin() (random(2))
X
Xint cnameused[MAXCITYNAMES];
X
Xint world[SIZE][SIZE], height, width, aux[SIZE][SIZE];
Xint water[SIZE][SIZE];
Xint histo[BUCKETS], contours[CONTOURS], wcontours[4];
Xint sealevel, mtnlevel, icelevel, desertlevel, forestlevel;
Xint curvize, blockize, fractalize, smoothout, histify, deanomalize;
Xint dumpraw;
Xint numtowns, numcities, rawnum, numnames;
X
Xmain(argc, argv)
Xint argc;
Xchar *argv[];
X{
X int deflt = FALSE;
X
X curvize = blockize = fractalize = smoothout = histify = deanomalize = TRUE;
X dumpraw = FALSE;
X rawnum = 0;
X
X switch (argc-1) {
X case 3:
X if (index(argv[3], '+') != NULL) {
X blockize = fractalize = smoothout = histify = deanomalize = FALSE;
X deflt = TRUE;
X }
X if (index(argv[3], 'b') != NULL) blockize = deflt;
X if (index(argv[3], 'c') != NULL) curvize = deflt;
X if (index(argv[3], 'f') != NULL) fractalize = deflt;
X if (index(argv[3], 's') != NULL) smoothout = deflt;
X if (index(argv[3], 'h') != NULL) histify = deflt;
X if (index(argv[3], 'a') != NULL) deanomalize = deflt;
X if (index(argv[3], 'd') != NULL) dumpraw = TRUE;
X if (index(argv[3], '2') != NULL) rawnum = 2;
X if (index(argv[3], '3') != NULL) rawnum = 3;
X if (index(argv[3], '4') != NULL) rawnum = 4;
X if (index(argv[3], '5') != NULL) rawnum = 5;
X if (index(argv[3], '6') != NULL) rawnum = 6;
X if (index(argv[3], '7') != NULL) rawnum = 7;
X case 2:
X width = atoi(argv[1]);
X height = atoi(argv[2]);
X break;
X default:
X fprintf(stderr, "Usage: mkmap width height [+][bcfshad]*[2-7]\n");
X exit(1);
X }
X if (width < 20 || height < 20 || width >= SIZE || height >= SIZE) {
X fprintf(stderr, "Cannot generate a %dx%d map\n", width, height);
X exit(1);
X }
X numtowns = width * height / 100;
X numcities = numtowns / 5;
X if (rawnum) numcities = rawnum;
X init_random();
X init_map(world, 0);
X if (blockize) {
X add_blocks(world);
X limit_map(world, MAXALT, 0);
X if (smoothout) smooth_map(world);
X }
X if (curvize) {
X add_curves(world);
X limit_map(world, MAXALT, 0);
X/* if (smoothout) smooth_map(world); */
X }
X if (fractalize) {
X init_map(aux, MAXALT/4);
X gen_fractal(aux, MAXALT/4, .8);
X limit_map(aux, MAXALT, 0);
X add_maps(world, aux, world);
X }
X if (smoothout) smooth_map(world);
X limit_map(world, MAXALT, 0);
X sealevel = 0;
X mtnlevel = 32000;
X if (histify)
X set_levels(world, &sealevel, .7, &mtnlevel, .95, contours, CONTOURS);
X icelevel = mtnlevel + 2000;
X add_border(world, icelevel);
X if (deanomalize) reduce_fragments();
X init_map(water, MAXALT/2);
X gen_fractal(water, MAXALT/2, .6);
X desertlevel = 0;
X forestlevel = 32000;
X if (histify)
X set_levels(water, &desertlevel, .2, &forestlevel, .8, wcontours, 4);
X water_coasts();
X write_header();
X if (dumpraw) {
X dump_relief_map();
X } else {
X place_cities();
X dump_map();
X }
X}
X
X/* fill in with some initial values */
X
Xinit_map(map, value)
Xint map[SIZE][SIZE], value;
X{
X int x, y;
X
X for (x = 0; x < width; ++x)
X for (y = 0; y < height; ++y)
X map[x][y] = value;
X}
X
X/* Put in random large blobs. Should be polygons instead of rectangles. */
X
Xadd_blocks(map)
Xint map[SIZE][SIZE];
X{
X int i, x, y, x0, x1, x2, y0, y1, y2, dx, dy, flag, elev, blocks;
X float relelev;
X
X blocks = width * height / 200;
X for (i = 0; i < blocks; ++i) {
X dx = random(width/5) + 2;
X x0 = random(width - dx);
X x1 = x0 + dx;
X x2 = x0 + dx / 2;
X dy = random(height/5) + 2;
X y0 = random(height - dy);
X y1 = y0 + dy;
X y2 = y0 + dy / 2;
X flag = flip_coin() ? 1 : -1;
X for (y = y0; y < y1; ++y) {
X for (x = x0; x < x1; ++x) {
X relelev = ((abs(x - x2) / ((float) dx)) +
X (abs(y - y2) / ((float) dy)));
X elev = MAXALT/32 - relelev * MAXALT/24;
X map[x][y] += flag * (MAXALT/32 + elev);
X }
X }
X }
X /* add some spikes which will get averaged in */
X flag = (height / 40) * (width / 50);
X for (i = 0; i < flag; ++i) {
X x0 = random(width-2)+1; y0 = random(height-2)+1;
X map[x0][y0] = MAXALT/2;
X }
X}
X
Xfloat
Xexpt(f, i)
Xfloat f;
Xint i;
X{
X float rslt;
X
X rslt = 1;
X while (i-- > 0) rslt = rslt * f;
X return rslt;
X}
X
X/* Put in random Bezier mountain chains. Number and size are scaled to */
X/* the size of the map. */
X
Xadd_curves(map)
Xint map[SIZE][SIZE];
X{
X int i, j, k, n, x, y, flag, curves;
X float u, f, cpx[4], cpy[4], px[SIZE], py[SIZE];
X
X curves = width * height / 2000;
X for (n = 0; n < curves; ++n) {
X cpx[0] = 1.0 * (random(width-2)+1);
X cpy[0] = 1.0 * (random(height-2)+1);
X for (j = 1; j < 4; ++j) {
X cpx[j] = cpx[0] + (random(height) - height/2);
X if (cpx[j] > width-1) cpx[j] = width-1;
X if (cpx[j] < 0) cpx[j] = 0;
X cpy[j] = cpy[0] + (random(height) - height/2);
X if (cpy[j] > height-1) cpy[j] = height-1;
X if (cpy[j] < 0) cpy[j] = 0;
X }
X for (i = 0; i < 40; ++i) {
X u = (1.0 * i) / 40;
X px[i] = py[i] = 0.0;
X for (j = 0; j < 4; ++j) {
X f = comb(3,j)*expt(u,j)*expt(1-u,3-j);
X px[i] += cpx[j]*f;
X py[i] += cpy[j]*f;
X }
X }
X flag = random(3) ? 1 : -1;
X for (i = 0; i < 40; ++i) {
X x = px[i]; y = py[i];
X/* map[x][y] += flag * MAXALT/4; */
X map[x][y] = flag * MAXALT/4 + flip_coin() * MAXALT/16;
X }
X }
X}
X
Xcomb(n, i)
Xint n, i;
X{
X if (i <= 0) return 1;
X else if (n <= 0) return 0;
X else return (comb(n-1, i) + comb(n-1,i-1));
X}
X
X/* Ensure that map values stay within given range */
X
Xlimit_map(map, hi, lo)
Xint map[SIZE][SIZE], hi, lo;
X{
X int x, y;
X
X for (x = 0; x < width; ++x) {
X for (y = 0; y < height; ++y) {
X if (map[x][y] > hi) map[x][y] = hi;
X if (map[x][y] < lo) map[x][y] = lo;
X }
X }
X}
X
X/* Put a fractal surface into a given array */
X
Xgen_fractal(map, range, scale)
Xint map[SIZE][SIZE], range;
Xfloat scale;
X{
X subdivide(map, 0, 0, width-1, height-1, range, scale);
X}
X
X/* Recursive subdivision step of fractalization */
X
Xsubdivide(map, x0, y0, x2, y2, range, scale)
Xint map[SIZE][SIZE], x0, y0, x2, y2, range;
Xfloat scale;
X{
X int dx, dy, x1a, y1a, x1b, y1b, newmax, wx2, avalt, fudge, var;
X
X dx = x2 - x0; dy = y2 - y0;
X x1a = (x0 + x2) / 2; y1a = (y0 + y2) / 2;
X x1b = x1a + dx % 2; y1b = y1a + dy % 2;
X wx2 = x2 % (width-1);
X avalt = (map[x0][y0] + map[x0][y2] + map[wx2][y0] + map[wx2][y2]) / 4;
X var = normal(range);
X map[x1a][y1a] = avalt + var;
X map[x1b][y1a] = avalt + var;
X map[x1a][y1b] = avalt + var;
X map[x1b][y1b] = avalt + var;
X fudge = range / 10;
X map[x0][y1a] = avg(map[x0][y0], map[x0][y2]) + normal(fudge);
X map[x0][y1b] = avg(map[x0][y0], map[x0][y2]) + normal(fudge);
X map[x1a][y0] = avg(map[x0][y0], map[wx2][y0]) + normal(fudge);
X map[x1b][y0] = avg(map[x0][y0], map[wx2][y0]) + normal(fudge);
X map[x1a][y2] = avg(map[x0][y2], map[wx2][y2]) + normal(fudge);
X map[x1b][y2] = avg(map[x0][y2], map[wx2][y2]) + normal(fudge);
X map[wx2][y1a] = avg(map[wx2][y0], map[wx2][y2]) + normal(fudge);
X map[wx2][y1b] = avg(map[wx2][y0], map[wx2][y2]) + normal(fudge);
X
X newmax = range * scale;
X if (dx < 4 && dy < 4) {
X return;
X } else if ((dx == 2 || dx == 3) && dy > 3) {
X subdivide(map, x0, y0, x2, y1a, newmax, scale);
X subdivide(map, x0, y1b, x2, y2, newmax, scale);
X } else if ((dy == 2 || dy == 3) && dx > 3) {
X subdivide(map, x0, y0, x1a, y2, newmax, scale);
X subdivide(map, x1b, y0, x2, y2, newmax, scale);
X } else {
X subdivide(map, x0, y0, x1a, y1a, newmax, scale);
X subdivide(map, x0, y1b, x1a, y2, newmax, scale);
X subdivide(map, x1b, y0, x2, y1a, newmax, scale);
X subdivide(map, x1b, y1b, x2, y2, newmax, scale);
X }
X}
X
X/* compute a normal (actually binomial) distribution */
X
Xnormal(range)
Xint range;
X{
X int k, sum = 0;
X
X for (k = 0; k < 10; ++k)
X sum += random(range * 2) - range;
X return sum / 10;
X}
X
X/* form point-by-point sum of two maps */
X
Xadd_maps(m1, m2, rslt)
Xint m1[SIZE][SIZE], m2[SIZE][SIZE], rslt[SIZE][SIZE];
X{
X int x, y;
X
X for (x = 0; x < width; ++x) {
X for (y = 0; y < height; ++y) {
X rslt[x][y] = m1[x][y] + m2[x][y];
X }
X }
X}
X
X/* average out things to keep peaks from getting too sharp */
X
Xsmooth_map(map)
Xint map[SIZE][SIZE];
X{
X int x, y, ix, iy, sum;
X
X for (x = 1; x < width-1; ++x) {
X for (y = 1; y < height-1; ++y) {
X sum = 0;
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X sum += map[ix][iy];
X aux[x][y] = sum / 9;
X }
X }
X for (x = 1; x < width-1; ++x) {
X for (y = 1; y < height-1; ++y) {
X map[x][y] = aux[x][y];
X }
X }
X}
X
X/* histogram and use to compute sea level and mountain level */
X
Xset_levels(map, lev1p, level1, lev2p, level2, contours, numconts)
Xint map[SIZE][SIZE], *lev1p, *lev2p, contours[], numconts;
Xfloat level1, level2;
X{
X int i, k, x, y, sum;
X
X for (i = 0; i < BUCKETS; ++i)
X histo[i] = 0;
X for (k = 0; k < numconts; ++k)
X contours[k] = 0;
X for (x = 0; x < width; ++x) {
X for (y = 0; y < height; ++y) {
X ++histo[(map[x][y]/BUCKSIZE)];
X }
X }
X sum = 0;
X k = 0;
X for (i = 0; i < BUCKETS; ++i) {
X sum += histo[i];
X if (sum > ((k+1) / (float) numconts * width * height))
X contours[k++] = i * BUCKSIZE;
X if (k >= numconts) break;
X }
X sum = 0;
X for (i = 0; i < BUCKETS; ++i) {
X sum += histo[i];
X if (sum > (level1 * width * height)) {
X *lev1p = i * BUCKSIZE;
X break;
X }
X }
X sum = 0;
X for (i = 0; i < BUCKETS; ++i) {
X sum += histo[i];
X if (sum > (level2 * width * height)) {
X *lev2p = i * BUCKSIZE;
X break;
X }
X }
X}
X
X/* Make sea for northern and southern edges of world */
X
Xadd_border(map, value)
Xint map[SIZE][SIZE], value;
X{
X int x;
X
X for (x = 0; x < width; ++x) {
X map[x][0] = value;
X map[x][height-1] = value;
X }
X}
X
X/* Correct some anomalous conditions that fractals don't care about, */
X/* but which are undesirable for the game */
X
Xreduce_fragments()
X{
X int x, y;
X
X for (y = 1; y < height-1; ++y) {
X for (x = 0; x < width; ++x) {
X /* Remove most of single-square islands */
X if (small_island(x, y) && random(2))
X world[x][y] = sealevel - 100;
X /* Remove most of single-square lakes */
X if (small_lake(x, y) && random(2))
X world[x][y] = avg(avg(world[x-1][y], world[x+1][y]),
X avg(world[x][y-1], world[x][y+1]));
X /* Diagonals of land and sea are strange - get rid of most */
X if (world[x][y] > sealevel && world[x+1][y+1] > sealevel &&
X world[x+1][y] < sealevel && world[x][y+1] < sealevel)
X if (flip_coin())
X world[x][y] = sealevel - 100;
X else
X world[x+1][y+1] = sealevel - 100;
X /* Diagonals in opposite direction */
X if (world[x][y] < sealevel && world[x+1][y+1] < sealevel &&
X world[x+1][y] > sealevel && world[x][y+1] > sealevel) {
X if (flip_coin())
X world[x+1][y] = sealevel - 100;
X else
X world[x][y+1] = sealevel - 100;
X }
X }
X }
X}
X
X/* predicate to detect a single-square island */
X
Xsmall_island(x, y)
Xint x, y;
X{
X int ix, iy;
X
X if (world[x][y] < sealevel) return FALSE;
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (ix != x && iy != y && world[ix][iy] > sealevel) return FALSE;
X return TRUE;
X}
X
X/* predicate to detect a single-square lake */
X
Xsmall_lake(x, y)
Xint x, y;
X{
X int ix, iy;
X
X if (world[x][y] > sealevel) return FALSE;
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (ix != x && iy != y && world[ix][iy] < sealevel) return FALSE;
X return TRUE;
X}
X
X/* Some places along coast line are arable */
X
Xwater_coasts()
X{
X int x, y;
X
X for (y = 0; y < height; ++y) {
X for (x = 0; x < width; ++x) {
X if (adj_water(x, y) && water[x][y] < desertlevel && !random(4))
X water[x][y] = desertlevel + 10;
X }
X }
X}
X
Xadj_water(x, y)
Xint x, y;
X{
X int ix, iy;
X
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (world[ix][iy] < sealevel) return TRUE;
X return FALSE;
X}
X
X/* place towns and cities */
X
Xplace_cities()
X{
X int i, j, x, y, dx, dy, dx2, dy2, tries;
X
X numnames = numcities;
X for (i = 0; i < numcities; ++i) {
X while (TRUE) {
X x = random(width-4)+2; y = random(height-4)+2;
X if (!(world[x][y] < sealevel || world[x][y] >= icelevel ||
X close_city(x, y) ||
X (inland(x, y) && random(4)) || in_waste(x, y)))
X break;
X }
X world[x][y] = CITY;
X for (j = 0; j < 5; ++j) {
X tries = 0;
X while (tries++ < 500) {
X dx = random(7)-3; dy = random(7)-3;
X if ((abs(dx) > 1 || abs(dy) > 1) &&
X x+dx > 0 && y+dy > 0 && x+dx < width && y+dy < height &&
X (world[x+dx][y+dy] > sealevel || !random(4)) &&
X (world[x+dx][y+dy] < icelevel) &&
X (!adj_city(x+dx, y+dy)))
X break;
X }
X world[x+dx][y+dy] = TOWN;
X dx2 = sgn(dx); dy2 = sgn(dy);
X if (world[x+dx-dx2][y+dy-dy2] != TOWN)
X world[x+dx-dx2][y+dy-dy2] = sealevel + 100;
X }
X numnames += 5;
X }
X numtowns -= 5 * numcities; /* makes numtowns = 0 all the time? */
X if (numtowns < 0) numtowns = 0;
X numtowns += (width * height) / 500;
X numnames += numtowns;
X for (i = 0; i < numtowns; ++i) {
X while (TRUE) {
X x = random(width); y = random(height);
X if (!(world[x][y] < sealevel || world[x][y] >= icelevel ||
X adj_city(x, y) ||
X (inland(x, y) && random(4)) ||
X (in_waste(x, y) && random(10))))
X break;
X }
X world[x][y] = TOWN;
X }
X for (y = 0; y < height; ++y) {
X for (x = 0; x < width; ++x) {
X if (world[x][y] == CITY || world[x][y] == TOWN && !random(4))
X deforest_vicinity(x, y);
X }
X }
X}
X
Xadj_city(x, y)
Xint x, y;
X{
X int ix, iy;
X
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (world[ix][iy] == CITY || world[ix][iy] == TOWN) return TRUE;
X return FALSE;
X}
X
Xclose_city(x, y)
Xint x, y;
X{
X int ix, iy;
X
X for (ix = x-4; ix <= x+4; ++ix)
X for (iy = y-4; iy <= y+4; ++iy)
X if (world[ix][iy] == CITY || world[ix][iy] == TOWN) return TRUE;
X return FALSE;
X}
X
Xin_waste(x, y)
Xint x, y;
X{
X int ix, iy;
X
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (world[ix][iy] < mtnlevel && water[ix][iy] > desertlevel)
X return FALSE;
X return TRUE;
X}
X
Xinland(x, y)
Xint x, y;
X{
X int ix, iy;
X
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (world[ix][iy] < sealevel) return FALSE;
X return TRUE;
X}
X
Xdeforest_vicinity(x, y)
Xint x, y;
X{
X int ix, iy;
X
X for (ix = x-1; ix <= x+1; ++ix)
X for (iy = y-1; iy <= y+1; ++iy)
X if (flip_coin())
X water[ix][iy] = forestlevel - 10;
X}
X
X/* print final result */
X
X/* Decrementing the width seems strange, but it makes reading work */
X
Xwrite_header()
X{
X printf("%c %d %d 0 0 100\n", (dumpraw ? 'R' : 'M'), width, height);
X}
X
Xdump_map()
X{
X int i, n, x, y;
X
X for (y = height-1; y >= 0; --y) {
X for (x = 0; x < width; ++x) {
X printf("%c", terrain(x, y));
X }
X printf("\n");
X }
X /* Now dump out names of cities */
X for (i = 0; i < MAXCITYNAMES; ++i)
X cnameused[i] = FALSE;
X if (numnames > MAXCITYNAMES) {
X fprintf(stderr, "Not enough names for %d places\n", numnames);
X exit(1);
X }
X for (i = 0; i < numnames; ++i) {
X while (cnameused[(n = rand() % MAXCITYNAMES)]);
X cnameused[n] = TRUE;
X printf("%s\n", citynames[n]);
X }
X}
X
Xterrain(x, y)
Xint x, y;
X{
X int elev, moisture;
X
X elev = world[x][y];
X moisture = water[x][y];
X
X if (elev == TOWN)
X return '*';
X else if (elev == CITY)
X return '@';
X else if (elev >= icelevel ||
X (elev > mtnlevel &&
X (y > height-height/10 || y < height/10) &&
X random(10)))
X return '_';
X else if (elev > mtnlevel)
X return '^';
X else if (elev > sealevel) {
X if (moisture < desertlevel)
X return '~';
X else if (moisture > forestlevel)
X return '%';
X else
X return '+';
X } else if (elev > sealevel - 30)
X return ',';
X else
X return '.';
X}
X
X/* The following is used for other displays */
X
Xdump_relief_map()
X{
X int k, x, y;
X
X printf("%d %d %d %d %d %d %d\n",
X sealevel, mtnlevel, icelevel,
X desertlevel, forestlevel, CONTOURS, WCONTOURS);
X for (k = 0; k < CONTOURS; ++k)
X printf("%d ", contours[k]);
X printf("\n");
X for (k = 0; k < WCONTOURS; ++k)
X printf("%d ", wcontours[k]);
X printf("\n");
X for (y = height-1; y >= 0; --y) {
X for (x = 0; x < width; ++x) {
X if (histify) {
X for (k = 0; k < CONTOURS; ++k) {
X if (world[x][y] < contours[k]) break;
X }
X } else k = world[x][y] / 128;
X printf("%d ", k);
X for (k = 0; k < WCONTOURS; ++k) {
X if (water[x][y] < wcontours[k]) break;
X }
X printf("%d ", k);
X }
X printf("\n");
X }
X printf("\n");
X}
END_OF_mkmap.c
if test 17689 -ne `wc -c <mkmap.c`; then
echo shar: \"mkmap.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f preshar.7.u -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"preshar.7.u\"
else
echo shar: Extracting \"preshar.7.u\" \(32178 characters\)
sed "s/^X//" >preshar.7.u <<'END_OF_preshar.7.u'
Xbegin 644 preshar.7.Z
XM'YV0(T*`>"$FC9L7<]`H&`&""IHT<T!`!!$&1,(R;-A0E#/FH9TR+$"T*1/&
XMC<$S.A:"B.$"A)0R;=Y\!%'FHYP\=!ZZ.4-1C,PR('("#3BPX,&$(-@8+.-"
XMI8R64\+,%`I"3IDY==C0.1FT#!XZ$MU0!&$F#1NF*F>T+(*GS)@Z=(!2+7L6
XMQ)TT.8L:1(@&!`HW;\".29@BZ!L08ZR&B1L4#5"Z5U..2*!4#$(X2NDLI)S&
XMLE4U;PQNKOPB\>(R<ERT"0-G=.<7).7D9+FZ]632L7,^K>W:<IDZ<M[`8<K[
XM]NLS5MT29]W[!9PP8]*4':.:N7'/;T96M\W9,AW:UKN_H+,[/&DZ:HN+IT-C
XM>W,Z-=Q?'V]#_GHTR>V3OG-'QN_@P[DPQQANJ.301&%PY!%0B9$4%QDZ@-#$
XM&V(I48=8(.``@@PRZ`!##CK$D,-*.>!P@P)>P?&&;"!`$0052.S0XHM(]$"0
XM03J0X"*,"DC7U1Q@M6`&"">0-@=F>)V@@%`%)N`6&H<EE&"$=V4$`F!@_21'
XM"W?(@1=07D&TU4YDF064"$6^=F1F)XB`(AMSE*'`&(N!P`,/('`Q!1)!2/%%
XM$4\8`8(/1!J))!U*,D0$1'&.`59%M=F%5U]L4,B34FY<%18=A\&1AG(1W957
XM0BN"A>E5"LP)!P@DQ!!4&ZTI8,:*)'5$TU=^N2H#"#.`0`,(-8!@`P@W9`A"
XM#BDHD,!;08X10PLWC$@'K(.VZ@()7FFV+%P@M#`&#C"T`,*KJ_HP+1PR*-N&
XM'>3N>BZ*;I"1JAQMD)OJGGW^&>B<:,1$!@@KX%&HFH<J618(#)41+PAO#*EE
XMEWAQU9%;:_0X9%Q`=CMDFIZ5`9I!2C*I[)-1HC&EI%9BR;!-7'K)6)A`<@49
XM"&B2]EEH;K3Y9IQSUGEGGOCZ":B@A'+\PLT@JP0%MU1Y"BK#0T+*&@AB0+>&
XM86>4(90<"CP')%`MD"$"%S"(P"I+6\0@PPPTU&###3CDT$6U,2A`[]DNI+UV
XMVV_'W<6]?`J];T?^`BRPT4CG+&L:"-.T<,,KHP;QF#Q-/$;%/F(<Y,:DF197
XM:K6%[%B3)%MDLAQ4FJ61REJV_.6M8LIL)LU&>X[:=CICQ#.=8/VL9^#Z$CVP
XM9;:#SIJ23?`:[`S!P@""\S'``(,"7U1O_?789Z^]]@JXX/WWX(<O_OCC=T_^
XM^2ZLL`+ZX)O/OO@KL`"_^N&[_S[YZN>_@A]^M'__^2K0G_[DYSW[_<][`A2@
XM'PC8E`."KP0E2.``OV=`]JF@!"X`@OH"*$'_.1"!$M2?!QGX/@ZNP(3Y(V$#
XM7<"__T4PA.NKWP==\,(.BJ^"XF/!"C#H`A;44(#DPV'X=@C!"T(P@><3X@,A
XMR,0FYH^'Y7N?#YLXQ2:B3XE+A&(/F<@^^ZW`"V#T@A;'!\'WN>^+801C&<FX
XM1O"I0(;I2V,:V_@])X(OAAX,(P9+,,?P-?&%.@RB]\*(0#FVT8GY`T+Z;CA(
XM,+I`!7KDHQB]AT@1/A*.842C&)EX0>]-48'[0V`>Y;A)+M[1A)#TPPDM:3[U
XMS=&*X\N?'\+(/_[%\(Q>H!\LQZ?#_=52E;4L(/F.6$)?VA*.XGOA_=2GRBCF
XM,'\S9.3\=AA-9(*OEWBLY@J?J<WV;>^;X-R>`JQP$S$`YPP*:(*8PK"&,G`!
XM!$-(3L6@D*`PK.8,=2!#&A1`A3>\`2-R$@)&*G6'.;S3"&'(R!P4$`0ZL"$,
XM<S"G'-`9!#*\00SN!$$0&K10*#RD4JO)R3B]=`8@A4%>5PC#&<Y@SY(H(`ME
XM*(/)[O!."[G!46F@D`*JD!!.892?JK.G/RN&A##@9)]">,,[/5HII-9!#WI(
XM$!D,"@(A&%4!00O>XAJGL']![F$NDYAC+F>Q'VUN>+!)T&QPMZ31C:PC)3M9
XME587F,AM:7)@PD/LR#2SFKTF-V@`#QQR!R<Y\<Y.>/I=OH8V*+0"5K#(XY4-
XMH,>AE8!+6-"3'O7"R=G.>O:SH`VM:$=+VM*:]K2H3:UJ5\M:<<X0B3%$X_G`
XMF#TPPO"VL<5M-O\7PCM&<[?_<^1OS_?%$*I`A>%[HVZ7F[\O,/>YT(VN=)\[
XM1/HY$(O++*X#O>`"+U@OE],5X?J@B43>PA"$P.VF>F.9WN]!,WT3]&3\F`M?
XMZ:(PO/C-+WT/",0/"K&]U:TF=[O[!?#JE[STLZ1YE[O>!K-7N.\3(`-UB$W=
XMWO>Y!CZP_BZLX?TZT(8'Q"YQK0O?[79W!07NL`"/V-M8HK>^YW6PC!L)X/JB
XM=\+YXS!N-?A<%.KXMC_&<(;#JTT0_T_$U25Q-UU98/`RT;;13=\?:;A')BKY
XMCE/&[8S72S\-!G#$.E3D,Y_+X_/>=LC0+7-^N:MA47ZXO-?E;XV[Z=T4JP^"
XMF83N'_=<21+?F<\83'!_M_Q:Z^88S"R0'S99X./\PCB!N41ECB<-9$<_&K^_
XM'?0BY[Q-_"V2T&Z.9`2?#.55PK",/.0BH(F)0$!3.=#BO3*HT7=H[_%XFFK>
XML'$3&&3RZKC7N&VT!$M=7A5+F-,;KJ8!Q_OI6?N6AJ_6'Y[1',(]4G+5B&PU
XMMG_X:&=G5]#JT^#W<IU("0+;V.@>M@#?B-X-JCB0['OO,AG);&_?#X,%9O&=
XMP0CL"%+YU=LN(Q$!K65[QSO)*WA!NU7`P1^F&X;G1G>><QMQZ<+[X$5&LL'K
XMR$,UUE",U$X@J@$>\#^CVLHQYO3&03C$AKN;TLO-=<4?#FD!YA*\Q,;OKU-8
XM8EJO5^,K?_4CB^M*/D*7@_!%^<#UO6<%LU?607?QA1T^[(G3G+D[SY_5-1ER
XMYG8=AO*#^I:!'O789EB2!W9OR1&<8/<Z/>H(+_>Z5VE;#F;XZP',]="O#L.<
XM:_WK9\:Z)57^<[@?$(-`&++1,9UD@N/Q[8]FM^'A]V-2HO'EK@0\$/E^9LW/
XM7;?@K;A[B2MCLD<]@D,&N>?-S/8GUO#2?IZ\G*N>QLN'L-0H3'2%>1V_1'>0
XMP6Z']-85J,H0_E*_S[:WZ8-^0C2KL<W-[C:/]0UCV;_YB)`$;YE[>5\YRCN%
XMN]?T[H-_V_I.W/L2_*4MB:_^XDN0W)!W\8R7OW+4WUGK>-;Z<N_+\OK>VH9B
XM9WWHXW)?!$DHU$.NA'DOYUOAIVF71GZX97E<1TJYU'X6V'Z,EWP]-W8"B#ZC
XMMC_"MWCV]6*#IVF$-WES%VF1YF?0U$NV=7/Q-T0Y=T>P=7M#9G=RU&1@=($\
XMJ'[[]WG`I6;>1G\;-VJUI']HA'JK5X*W-G0H)&8=F%U69UM#U&[R!679ETO+
XMY'W7%%UI]&7P15O?58$]6(9$AC^]9'!$:'`0Q(,ZQ&)X]WXV!GLQ&(7)A68<
XM)'F49UTZM'50^':4IH7?$W['IS^)5WN7)X9-9DQEV(,[MFYVV&F12$E?Q(/9
XM)TE+N&OW!8632&N:)(3S0X,)5G>^UVZ=9V"2QWZ%2'M_YWV-Z(@P9VAP1CY@
XMJ(:=*(H[.$OJAW,%!G\*.&DH5$/B=HOQ9FYNYG;P<X79!(0OV'S-!UY)QH.9
XM)X&O6(V/&$-@B'3%N')K:'!TQS]>`(ZJA'-^MVL2Q&)`<'&R=X((5&9Y]F&#
XM6(`(A(,U1TK:Z';2N$%A5#V95(VO:&%/%V]ZJ'S$.&ZN5$OAF)"VA(BZ=FPB
XM1WWLZ&P1:60#>&6".%[Z4W=(F$G02(/%EX]HQ(]I5(T4>(T#M%M-.#[W:(L%
XMB5[A*(WEB'D5UG!BE&PM&6'X0VX#*3X#-GH8.8\66&I;YP<J$)0Y*)(4*$<7
XM&$8S-VCRYD9U2&C=N'&R)(U9=Y(KAF8W.6]0.8U0IH$T&'T>N8JVAT*-N(\%
XM=CU).9)&.7P-.4`DE'>B6&Y!-Y7>N`(:!(M]AY4F-XM;B3^T1VQ+%EL8V(I>
XM]X5)J8-KN9@YYXL<E&A@>4(9%)$.9I<KQXA%69C5ICXS:6I/^9>T2'?4>'P-
XMQHA'^'>JZ'XE.8VUQ9AK:7&AN8&&9YGVAHV-^'XII%O\U8'IE9&TI)=7]IGC
XMDY<8B(->P$$7N%Q'J9:NR9"5QF/(U7\"2)L;QS\L4$N9293K=UL-*)R@65U9
XM^)+^N%L'"#[#"%\6:'-0EIR_.&G+B3W-F8GSY6E12)W5V4/`:8Z\]IV>B$;^
XM6(AFF9SI<YN&"8+L"82MB):M^9HZ-ID2MH[W8Y\&9YTL=*"F]H?KHWNZ%X#\
XM>9#_^:'\`P0M))[YV$C@E9_&%)AUMJ#H%VZLMT%;V4HWF4T4^DO9Z7[>&3[8
XMQ)^;]CT@^J,6V%T5VH/?,V066IBY%I\M:F[M*7_UR:-#ND!12I:$MY(\:II`
XMFJ7>\XIS27RIB:,JNIAG>),2NG+6::$GR*$MB:59^J&9N:5<.DTI6I7')VF'
XM&9,`*3X[.9U<V8D+=)W%F:.QI%P\VJ:&JGYP6H8L-'JFZ*)SRJ3M:7NUUY2@
XM6:9FVC^`2I;1I(XW>:B'^J932J056F-4*EWD*)_6Q6[L2)G*!J7ATT+768FS
XM)*A2Q*I1YZFXVC^A2J``MG["5FD):'+ZQGO?9ZO<6$W&.FN99T*\Q:SQ.*.Y
XMBI!`ZJ,_VJO2]7^A]T=:QHF7%*/=M*?65UP9]D&T&HELZJF_^9_><Z/J.F)[
XM%XM.1W2NUY"EZ*H49*_$!4FV)Z<C5HO$&*U+2:*-2*T?NF`%!X':&I4\:I=J
XMJJS5%4:))YFB.'O$>*X`ZX_@`Z(&&V-QE[#Q,X_X*DPA^W3!^GBT*K&F]F4!
XMQ*F&9[$76XT$&Z?_XXL<*FT)2T`UZZTC.V('JTTL6W8O"Z3R!K-OEH<*^W)-
XMIW(-RZ<[VY\VFZQ56)OX$[2WN7XXFK&*2JXMYHE)E[011D>W:*EK^D5[UDT_
XM>Y<N6ZWZ4ZJ_6(L\.)@*2T:NQTESMK2D-X1-J[7\MDNO%9U;1IYKFZOZU9'R
XM"K6-.D,_I*WLHT%^:X=BNY4F9$K5=+;>IEOI"4.:"5WON$I_NTK@>DU^Y)EV
XM]+7(2I!Y6TT!Y&^UFHPH"*ETJI_,Q+81^(Z@YH#T28GU-;I@!FW$^+C?N4,U
XM-EZ-NXZ<YX6E%HK'2*[.RCXDI+KI8T1+NSY@Z[BG6V10%T"Y5&%B5F_K2'7%
XM:X/CVFW#%7R\]4!)]KF4%';HR[356[KKFEO9VW4="+W?VW?.Z9?(JDM29+Y1
XMZX&*QKT^%W6^VZ'Y\P+2!H/G:+?.IG3UZYO'Z98*C''3R[I2]D$E,&&2.XD#
XM#*6YM4/'*:Q\)H`,#*^P&UY+:KOK-<$>:*P7S&K]RUN*-KP1VKXS=D)HQV?"
XMVH'89D0EP,,!1W7#ZL#R2VB=9,$G"$477,$-ID(?&TT;C*]D6TH>ZW%+-WE_
XMY,-^],/;9H,<&X7`^[7.:V\RW$4T+&,%N'0,['$05$6R-T9L]$8]',=:/,*Z
XM*<)K?&WQ9F7?^<3VFGUH',1_S$1C+,(D-\?#2H<1[&P^=%R/Y,98MDG\R<<<
XM;%LXO&*K-L@Z;,A)BY'[&8E3%':._&HU&<E+5L9A&,A,M\6@J<E-]W6WZ$-=
XM5EU/IL?\ZVV0>;<>9,KYFTNLC,.8;'V`YL/85GZW*+W*E,5X1LM3IL@4]LN2
XMJ,N^U5[ZB,K:VG3:ZD/%?&U[5D6K=FGAVY(LALR*Z\:[)7#K=<MQYJ30_&#4
XMS,J,EL&1R&?<O&HKJ(!_6417UG3:W$9X!,]P)\F@R6AJ/,>]U\*Z%\*\F46"
XM_,,7B<+$2'T0V,3^O$3[#%RQQ8'K3*Z47$0!=UQOZ$/S[&KQ3$4!1[C!RI_A
XM?$V)MK*4Q+L4K<VB9K@SG-$?MM&];,@2RZB&M\;"#&A=M[Z=Z,(>^&\1YL&;
XM)&NAW*HTS5\V?=.K1LS`W--/W<4XJ<,J)WE)/8A51,6)MDM9?61++6=-[=1T
XM3)$H.,?=*=,MJTA=_=52U-;3UI%^Y-*O!="@:7MD7=9;&Z[M;&7="=1CRTEN
XM/4R>Y-/.7+YV?==CK<G1!=@4W&`-%\1.Y'M[/;+FS$/8#,N>!-(D!->Z!V$4
XM3)EVK=:5N]A;G(%\?5OZEM;0C$'RD\0]%-N\A,X]I*\!_&&)K=A.MG:6YL73
XM%7YA[4#1^=41F=NZ#<*;C-J\:6$)!-P%2=ISG=2PC;?![4#A:;-]-EV.397A
XMY=S1!]VW&-EC--W.AD,`7-WN=;]Z#5V=B%_>'9:ZO&+)--CJ9=QW/8&HVK,=
XMN)UIA[S5"V["R<;4G=`5JTG=E=]47<,?=)J-;;O+F[>XI7L]](;T348SC=YZ
XM^\`-GN#6Q]^];7Z)/+8)Y.$;2D3=Y-9E"MYV.(&>J=P"R.#3]6""V+0+E'XP
XM3MDV7,I7A.':-$N+V-^1"./,K3Y?`)B<V[29BJ,^"-6@9M^NZN-VIMWE:GA"
XM[F'S0X4CFVCCR>2OM>,\'DU0CN`.W>&G^9%@BK_I+=<O+.)IN^0<#IA@/;[5
XM/4O>A>`&5I"\BN9A..-@6>!?NN5QN^:"].4SY.-X&GCG>8O6:-9[KN)H&[A9
XMJN?=Y.0\6I1U/EV)CN?_R.AQ%.*^#>EM*NE*3>@'!(Y1SM[?N>AU..7_&K2B
XM/D.4SI]A7L+N5JAF..8Z_>2NCNO^1>H.9.@?3%VVGH^@:,I4>^:EM[../CZ&
XM+EU0BJ*>WJ&[7FL-%NN_"\%<#IJ9FWG13L`OR^FP[NM,G8G^.NS\;7?+WMZQ
XM&ZU(V*=)).Y;F&'G%K)NKG_;/;*@_I_GJG_)#N_Q=NC@GNI5WNT<#.J^-.*%
XMR)YJ7M_^;D%G3*R\KNUGSNK5:T*GR;-T6JK]WO"]J:\PI$A6BJ\7%O+K_.;(
XMN.YGSJV%U_#$!?#IWKJ^'N@^>4(>+O,AQO*`Z7DX#^\@:'/E7FC6M/,@I'GW
XM+O3QK9X$OZY!O_-(F.U&C^$"5.S6F\M&W_01__10+YM<9EW6/J.%>_58'_9%
XMC4==/[;4)O9HO_7WBO4E:_-I']84S[795/;/?6*O_O;HK5UP*TU8[W=XC_,Y
XM_5J1YDQ]KY5_?_CC@^6$;_27'O>(7_@!2/?%S`)#]OB6#]^#;O24;_A/__*$
XMSFF2WXE;=_FD;T:=3_E@7_J/'_J3*)BJW^5HS_HKCOHY>MZO__>R'XG'>_N\
XMO_983_GUVONWG_OFVH<++_R63_SFJO6EB?Q?KOS.'_WL*_W4W_#07_W8OW'7
XMG_W</VN;U5K@'_[B/_[D7_[F?_[H?UI8Q2F7`R5L4"],H#`G(0<GI0)24`=S
XM,`=IX%).D`9Z8!)JX)U0`95B%D"``E`"">(-S(&'8@<8QQ*@?W,`,*B!!#$'
XMKH8"D`)I@*6`@".P(M9`'E`!58#^*862``*F@$T@`Y7"#E3`AG`"ZL!(R!D-
XM(3NL0`5P!![*'#@#;^`.J(`I,`;JBA,H`W>`3@")NC`$A(/",!E9PPVH`")0
XM$H#"A!@0.=#^X3_]1P*=@$Q0@)TA#<B!"K@#.P-JV'\%`@ED!8VP!"A$!HPH
XMJ($G6`&S8!+P'SQQ#`_%**S`)7!.2"`4T!H`0BJDP!7X!-K`'(0)J.$*&L`B
XM0`9B@AO@%&*!"-0!,8`I)$1)F!A?0P[L0,<`!QR#'/@71:4-2)0SH`(RX29$
XM#1N0#)2$"J@LU(D;6(%"0`Z<@%%X->B@&A`#>>`BL(LFH%),`J?`@5OP:E@5
XM.>`&PD!6``%6T`Z\@37P5#+%Y3"`XR(9M@@7\$Z6@#WI"(MA#:0!-6``F0"%
XML"A*,!5&#*0@!0+#YQ"%;6`)P@5;(5#D`*90`4<`-:P&L9!2MF`8N`,@(`G(
XM`6)(!U;@$'@(=*`B*(`AD%!8RDT``41`2P#$4M$&+L2_*`+Y3V&`@"=@%=S`
XM)@0!5>"AN(%W4@7(`%!0`*EP"NH.$&`$Z)\;6`-F`#B`!2A`__`)4%@"G\(.
XM@,`U0/\,`A@$`4O@=*P!F5!5'@H._`@)86)\1)@H`[/#&V`#)V`&6H%'^`;J
XM@$U0`?RP%^H3$G@%#())&`X\(?Z]DZ)B!ZP"3*PG+"5>5`2>@BB:H3U1&&\`
XM%\Y`>N(EYH`*Z(@*PU9,`3H`%^B`/P0+3>!"I`%;L0851B\$B)D"#@`(/"@3
XM5F!`-(9K0`58@9^8%16`,AP7@Y$-X$#D<%+>8!BH&L%!!5K`*>`@'$H9V(&5
XM\2R\CK7(#$&`$G@#:"!G1`0G4!(P1E7))ZSA*H"%B!@&2L([L2KY,$&`@"B0
XM!N)`&C`9H%`!/`&+F/\J0A``$O0/&BH.*%`J).*_F!"'4#&P@1<0!>I`&<`H
XM8P`$,($\0"$DA%DH"2H@">3#$2@6M(!*L0IB``04%=1@%%0`+;PI:``X@,%T
XMXA1)@HI0"G.@!7#&I>(+-4(_"0Z'\`T@Q9)P4EYB4KF$)*$."(S^-P:`0CH$
XM#!5!H"A&^F<13R,TM`H9@SVR@3O@"]L)4!`"9J%J'(9^DA6*8IQPA%NP#*@.
XM31$$WE\8:`$-I2+<PY)P!CK"A0`!5N"AZ!-A""2&(3(\C%$!#JB(X*`"@H!!
XMJ`,*@`CP1;Q@'N?B0\B*%E$.G$8S8`82RF'HAI#P<U05!8@(54`6*`E78PHT
XMC/W'$>7`A=`#%[$/A@&3\0;GHDK1C_?03.)`EW(86T2I.`S>L22^@:A251)$
XM@:P4=[$;CH1X:%(<8E90`50`.%P-*E`0X"/C&(`)H9T<0D`I*%^@8<21H^,,
XMY`$6:1X?87KT$B1P1>X$-6`0#&!4T`KOA`FPDXPR!/!"'H`G9^$C&,<6@1?J
XMX2;L"S^0IH"`+-`!54"L?">T<AZBAD>I#&DA&?`29&`'/@>3(%4:@F/HC7@R
XM#4C#.DD,Z^0;T"=D(@CX1"]A`(6D&SB*1;!2,$@2Z`Q/(41Y)Z62#IS*)!`O
XMP"!K^(D3H53>%*>X&!B'1[F.%I$-5,+]IP*:XZCD&FUR*)Z%=:D/VV00^(CU
XM!`04`3F@!X"#"_2,J*$FD$"!,@U/0J5$C^J1!#)!+:@0H0!UW`F3DDQ@%>A`
XM_UX@IRB!=*`S6L,Z,!%22D(X"8CPG1"!(:`"A`!P")">0SI"!)^@!(FC;*@#
XM)I%G^$LF$1&2@!YH`UJP(3Q&+Z$'`"+^*PD8I2&`04XI%BBC5F0<&W,B=LE'
XM"!%ZX'Y4"K."%[[$IM@1\$)%H"=G@5X<AHK"'WEE,AR`:2`/U`'L.`5,QBED
XM')2Q*+(!%5`&%8-8Z'\9<#'HPT`))RH":4P(#3`C``4K*`=F!1NX&B7R#'R*
XM+=@0Y&)$*)%E0$<>!EJ8$$S&O\`"+I%,=,LP$%4H)$-A`^8D#CA'.2`Z@<(3
XM6`,/!4JL!G!I*LWFN&"(V#%Q?D$22`5DBD?,CA[Q)6J!2*D'H$0=@(D4<E-V
XMRJ4Q![!CW20)8J&?>$#]B`"'Y560$]:0JOS+K'$6S.+T!"B`X2J:$XV`.5>A
XM$J0"7C`?B@4L\%1\IWC4@@KP(:R&A5@\UT`84`'-LPGR#(_R3TR"P,"0].(D
XMF(QZT5`D8CZ$)Q#E,4I$.L$1RT#1-`)U@!@.P_<9/S,%SX@*4G-1E`$<"!`3
XMB@U\`4:`#KR3*U`JT`"@]`JT$R.\DR#0`%5B$I@#]`\C,`ZK<@;0@"@\B'.@
XM2;I-URD>UZ9!J((E@6ERPK99&B\$.@F4@Z$Z%@$V0!_GP.1,$/2OG9!#A=%"
XM.2?C@)QXH"3\2GI9!"0E'-@*)#`*2-$Q*1M%)92PB@K@5BY$<X@\(P("O!Q&
XM]%J.R(;@)=XCXXB+6B%31DHR\#NO0!UPFW03#)X!^;A/(.@(S8\FX3`@`0]9
XM)6MG%!4+_!!]JH`JF@>NZ$N\AQ3"-NZ$'0@F7605/`D:T@"FR?0X)M<F0,0(
XM#R$[EDLYRB*E!#"TE"S2``Y`6.$;YX#:!`L(,`W``>!P%=W`+%62"+1W%L53
XM2B;3"87X'%;A5*H3>^(`ZTG7U"@9@8M6C7]!3^C`7:2#;@!H1LLY$#Q98!B0
XMI2(2*>J$Y\E0^L5)>8SUCYY(PSZY0J'$<]`(3'`,$-`CL#9W@BZM`Y3T2;33
XMJ!DJ2295(8Z<0O])QS`P%<'I7>2';(!9Y,.6R403BB/4B@_E5`[2G=`,+85@
XMG(N<`E,6B,/H#$&C_KL0"F"A_L2L\#N;@%L@H%,`.-0)TG@&;JEX/)&`(0T\
XM5*W1"T<"SV"GW_2A3$#Z5P)+X_[#@>_$(H++1:@//:I>Z8&L4UR:QS!!)\2"
XM%4`-'/.IG%1EN4L5`$K<"352+-A,.M`"?&$+((D&H4#6U/RH,K/#23@,?M0S
XMMM,IJ0F-BBA=BE+5G]Q%))`'DB0X_1>N4PJP2+7J5$\'ISB8OW$DT%0FV`)Z
XMX4[@)Q.T#D0'EB(O*P(3=)]*\CQ>Q[-H%F2I07@#]+2FL@$[<%)6A$:QB&+!
XMJNP$)VD5?24$K),[8296C/.H4CRI55D-,[&6'H8BF`;*:D0%"AX%,+2!JWH$
XM,6(]<0.B,Z@`T.`(46IJ&F@!.!"1/D<@24]:*C^%)Z82GE`(=O(/G\`9\`DQ
XM@51<5H@P0BUBU8`G@A4N5`0ZN!KTJ0(HKBT%7/)'C>!1XV4CW"BF89_BP(B0
XM+;.#3]`H!8$,3$"Q@!'#8F#XFJ6BGW*$HL@B`N+:?"BS,@P4Q7@A)P#J&RT#
XMHE`LT,&$<ER9@`LTJ;Z4I>B3A``DI\!).)=6H5(F5)?2!'P":G2?!K`YX@7(
XMJB!APE5DI0"6-*+/@D`W%4;&;!$)!294#8T)4R=E;M4(22"WYM.#Z@LC@F:=
XMJ=VU4RH`(U`J8BR=?*I2HGA*"/<:0%NL&\B8Z41OZA.(J`9\Z%+I*JGT`+(3
XMM?(^R24VO`KKD0ENB:L@'QFL/?&4(K5J3,JS2B'`K$MY"='!#``%![M%W:1L
XM>"<3`D+"0NFX"%U@U3B9U;"U5H1/25DMBI(,D@GB+F16_YD'.FL8F*\:4`&(
XM2OJH!UHFNFR`))`#@D$N&37S(;CTDD4SD?+"A?(I9R9P.)7_4GSR1R\A##$B
XM1E`JXG%%^+]?>AE3(41IK&\VI^34C((`,X4BM;7ZCSLRE/S8)%F*2:FIL):>
XM=,B6"0%Q;8'XC1<B.E`(%4`62ZM1R93J<2M<UWVX(BS*=?V,;M.!;L(=6!1S
XMP@@U`UZBJ&+$LCAC+V,0P']T0`2NQZD*:R$G<@`*1!;6[L*:^$_:P*PXA"*2
XMOBI".3!C861">0XMT8A*B*XR)[?B1P0,=T"JHH:\T&EOZF%PF6!1>E),ZSE1
XM%,:8>(G(,2XT0(NX6E.C`,R!:?7."DRE$%4P"L6=`FTU4WS`=PL<$\I+K"@8
XMX9HVR*2(4>0`_8NR<F#7$M$6\5#^Y[N]'*LRG6`$#\L+W2V\E;<D<)!"1K!P
XM#\LB'7"1"@*K`(^AL542QN-P&#9A<H@5BE%6-(?&<"QJ!0V4A\'25A3&6X$2
XMID.NJ(XK45=:!UZ!'3&#K\P.O^(;TN[:)2R[PV<DEJS"6(H&;O"[;"5YQ(#+
XM8@-Z10YP'C/`><@`S8+Q.%F',7))[]L,GD;5P)R==*)Z<4<V(1^29?MJ6-1S
XM,TVI\SJE]")BQ$Y&\KQQQ_%5M9FWC%1OE+E=2V]B>1K4='LCFNRE-0-)D>R6
XMJ$?"6ASGX5J+#_.-/3&'R'YO@!F^EC?=!)GFB^MRU+(12YH7%?66&F3R=A->
XMBKYJAF8%F[<$K%#=8^-[7*:00!]DY&#DCNNRO?HMSK7?R:3S&I7PI3A;SU$1
XMG0!R8=1,ZD4W3LST<CN(TW;,C`"V>K%(?+4>8\-ADM>%*TT%JOQ$7T[6N?93
XMNPL?6&X!2]_8T^O,F+BZ7X8(P*DXB@3@5)5[`4.T+LU4MJ+WS`;32](D9$99
XM.:IG8X(YKW"Y.E:HSSW@]:)!Q-.!$[^I[X/P']:EJC`/(6E4(+CWECM6):$\
XM5-N[+9G.])X26=/!B(V&`U^6A@6IO!T,@0<>S?)&".0(+9/M]'6P71V[(U'X
XMYA$:'B.[W%XTN3`,[O-^C^R$[F974G)=G,AP/:Y04HC@3VUJ<VXN5(V7<J2D
XMG-ZD\S;]8Q6=W[\%I$14(D947BE=?=](G$D:E`,>=:"FA6PGE81]N["A"E41
XMK>8EJ!,FE;C;\:M-GBI1(:HN=:>T$73#+BPXYW4\1P>(N11[8L7Z%T'I8&W2
XM>B%P+5(R@J83DZMH]4@P$.EE09NWO#&?@'>)/PPQ3D\JR=3HJ1CTBN&.7P)O
XMM9AHK6*2=8S]6[5+;1@'=2VY(P3H6`B?`TS@JL7IJ7#,A:TQ]-W%W\;#33S@
XMDUU(CW#B7E`KUM7>&0RW#@SGPV5$.!D1'I5C[6S.W2M&<^N":"[7QX[A,?M=
XM>>;*XQWD\W'%]IG'4D]W;C"ILXVWX@`/H9EJ2"]9\9#@%,8JTR3Z>G_L(SL>
XM9GQOQHL>(B(JSLD]'M.VS&0,2'Y>F1=W/3)8`[7(GKFBR67+P50RENQ`PMC`
XM$4MM)P!W9%YVQ88R!`XVH";D&9K#E<Z\&%`N:_G7$,_?17S2>I276\HC2+W0
XMX\IUC*#O^AA(`*;LV1[SVX^U<KB2OW;(CPF[K"R!6]=%Z\`_V>4YWV.\M7*R
XMP6K&3DKR<9VQ;+V`CU\>>^\ED;&^M=Q]%]P\!L:>K[X,O*K<WO!42FHP]6X?
XMYSH/G._<CQHN9H>.T%PNS2R#45Z]P[TB"S2[Y1YWFA^R:%9UA&<Q#['7['Z\
XMS*T"=`3YN<WFUQR$,;.^6UJRV;@X&QP5B[D,;&['5KFR$;&]O%X"B"-:/VD8
XM_4XBB3R)EYH#`B:;&#D+H"?,\<!>Z$/)+*\ZXZ3OG)$M'_T@S\PYHS4LGZSN
XM3O';(S&"6?$A/B43GP\SO*O/O4\PV^?[7.#RLY_C?=N/]`7HRS>@D]]:?`/M
XM[R>&PREP!Q`L1.@+\<\D[`0&*07SWWJL@1`%!^I`'A@8V*L1=`-(4&$LP9+P
XMH'TI%-2!]\]"9]H.^`%3-!5LFB=P#P9&%_T2@R$6+`BYL$*_Z'W8#Q/$!TR*
XM_9$$6L-X,6V+P$Z`CWVA')[#=$@OF"(%?(?4%ETF!&7A"F&A+-31+[$/<D$+
XMVW-?HCRDAUO:"TK4($D0#>(+0(AQ0@DRZ74($U/B2FR)Q+)`4,;%8!DQ(YW6
XMC(PAY"K'_>@&!&N6#)DU!32*1EL)!,N"G$@`9!$BG,6&2!<_A1OHA3WRZ?I'
XMU#@<@$0G]*$)8CTF@+](,5Y`3$P0,U$E5@&6>$WCM$:IN<+Q!##*>>@H36&F
XM.)?P43X":AC[)UWU5;BOF56PG@[5*`77X4L<CP37(#Q,K+L>U8E$S([;\27&
XMR/Y((SG%C)Z"ZS%-T@D<V"/UJID4"R=4?&[/53U.^P*A;*SZ#QV6@16A.%U*
XM`D"4:$!1@@6&J4.UZ5+XD#ER1S)/UB`_Y808S96!,0A8ZZ+J"*=HL)P"P_)!
XMNX3L<!FUH\UU*6&U(U)-**@"'DH:(`-5XQA:2VSY$U?$-VT23&!F3MNIBC.=
XMXX=L**/#+!X!>:)1`";]X]8".V[^R>/I4DRF3C@#*1,@LDR)`C/I'UA(G(O3
XM>BK&V9D\;2=VE(<DFG8.0^H(/^FU`Y433#"9FD5#2@*?0/MDH$:;FT;//TH]
XMKX(*<']L(`_<`7_R+_AA\62$C_!]YED$S:^5`&HXFF<A')[0%*H4E`4+=:'U
XM#VC;1A!@1_%HFCS:)=!M-E&5>K>YZ2"%M].6:2/2:\HC&:DCE9B@5*5ZV9<(
XM3:4I)^S;/&.8`DVDR%/#H*5HJ),4<LL)C<H&.&HG?(?7]%=+!?Y(N0LN0!6H
XM77:4BH6BDE)7JC/]BI&;J,+:</D!?>JU]HP/6Q2B@1?@4=7I^PP"]$\,U->R
XM^@$7=]1MJTAUF9[5ERA7=X):;9G`P:4B[2TK"<5IOX:`RWMALDC1V@5AMQ,D
XMT0^%L2H%3P$8>#1O-8M'-5,4S)S;-*]I<'7=+55JGTF1[3:OJ4M)*CAPH+97
XM37ASU>G)[G]9`U-BE0N[(R\C+=RP!4+%!@<6NP1<+(?EC_BO6G-.,R@Q$T0+
XM(+.?LC6&PP'H!J)*G-:RB'6@>MDVNZ/AK'2HM<U6V$Y5/$LK(LH'I">SU*5D
XM[-5`;<\VIBT0&!#6ZE3/V`1_;0I?C^"V)(C;<T)NX0(:.+?IE@32PEG**2HE
XM$T>>W_5-CM"S<&^9[:WECG96@ZY<__<8M88'U9)&7*.@VVO-HX?#R8VX13PO
XM!($QSJ_OH&SPH#17_P$%F$L&9&ZDKKG"%H)B46J=)L_"PG2.@$'C0L@>V7$/
XMH4ODL$N7OV:*.QYO#[:<WKK[XF!X7:\"=B5'6"$3E@-S7`S5>':-QG\P@FQ%
XM9#@)N!)W40?*H"M9@F7<79A!.<I$7>"[L`$X@/+0X29TAV$1O$`#D@L/3R[+
XM`T3H2">6A;(XCV'.*Z;'29[+?!G^*G,80O>0N9Q:YM`\A!3DWIO,H[DUG^9L
XM^9E;\VV^`BB=B^.\Q)>;=UZ9/*:T^>81Y^-\N<%><XZ+T3G?(><Q#O,&)W?>
XMP+SY-Z\^[9R>TQS[=GDWECY_Y^K\GOO>?\YY]'%XB<X#G:!?'7O^>QHS.%?H
XM`#VU-?0S;,XA>D07R^1K]O27Q'SW+'K]8E@=+$W-(F0LJ&211R_HG'E5C?0)
XM'+P2^DE7,0QK#FFMS[2:7?I+US"TB2@KWX3NFGO.3;_H;3D]YW/7C*`Z#!#6
XMYS%](@/DOKR/?SI*Q^B].<FT<Z+NU(O75&(VZ3E>B;JJ;M4]\,_;6+'7:7'U
XMAT-_%(Q2GTO?;<J-=:"NT2-:IDG*+P8QKW5T`W1$,$O/7Q>-`FO>'U1\YWHW
XM?S,U**X7&ORKTOVZL:GK)-@-LYS<4K0,^V$'[-_'%&6:S0SG$)F=<NS/A>S@
XMK[/.?@-0?_F_$/VA9W9_3H6C.O-CYX:]\DJ7ULOA.#M.GL/%JJCW&/T"VI5S
XM/F<NV(7).?1IK(&I[UR7Z]`EMU.UW?Z\?#N'J>WH?*\'=[FNVEF=!L;L%!TA
XM1Y><;HC)#'1GQB9]M8MEPBQ*=`X!)K_&5[9_+^F.7ZXZ=\_N1HO_7G?;+MJG
XM>TI'8>'=@:UW</?8Z7*XZ<03N/O,=TY'U^U[_'GN^SW^MG?MCM<A7D[#/.U=
XMO4LYBT[>RWO^VE/`Y<?0H2!V7T9>^4WN#7ZZ;+#IDMU">SG/\+C=WBAX!:_:
XM.CP]M^D"OK+[]OQAGY;P;-\@V@JY\YT!S]U5/(JW3Y`YOP`R#$_CH[N-'_!K
XM:*.W+?L2VF/OAR?M"60J'77>0^+SBXR/YT9>H%=T"1+DK3MS>_+%2YX#N>9^
XM6ZI\@']S-`?$2_/FK&'4>X7?YN2GQ,QXX)[DV^]^-_*W??UJ>0%"FU*7]^+J
XM<'[.R_EJKCZH^XYW\LJ<9RGW#\?E^[P9>R$SY_^N)A7CK@;[D>?SU.GAQ"?P
XM3NC=_*./\BS^`(OW4\28CB^AJ?13WM#+F*:$0@IQEB_-ZUS/9_KWOI";4_V2
XM2%+>I3=AXR6!ECFLO_28_J^;L15OG,3<P[GUN+Z]XWB6SL4`4@.KP%L^UZ_Z
XM:-S8A0RU*4]JWBL9&TW/Z'N\KL_U8EW=W!TS_'B"SPD+]ETJ>;ES\R;@00]*
XMQG9?'<8D86JNVJT]_"7WT1W8:-]GU)'\\#/_]MF<SQ-T\[;N=8VOS_'P78B!
XM^CB_[V6<7A[,,#C%)V!M?O!-WEB']PD?]-RO\,%CMO!#QWC_7M5[=(B/@"L/
XM0W+TU7?:N_N"GUPT3#."1Q>_T,<XS%Y!)(Y(-UD=?<L;]I9OA_$]O_LVMYW-
XM3_2F[M=I_N=I439?SL`/\:ORS?K(/^G+!B,CHB3%D%AP;]+*"G^^VX]>;X8G
XM/K5W:%%_O9^1Z3+ZBHS.G^<]B]CW?!3OS"'[^R#Z*;^T:WWW`H1-B"_JQV`=
XMG[-W@N_4O4BRG^D#V:QG=ZR_XAD,.K?[D0HJ3Q-AK'L73',7\W/Y[]-]`9_N
XM`Q)@%^M?GZ*/^\5_L%B5[#U9V)W=3_ZC;XSVGM82\]F^M2M^$'+F^WI.MOP3
XM"3`W7\S'\Z.Y$F'W[GBOUV-\OI%%ODP?[46?VD$HS4OX'3_""?507MDO^]`$
XM\;9SZ<6\Y8N\"_]43_:%.W&W]*9=L1LYX(_K=8MP+\Y7OW3M9^K/_`E^@';M
XMR)^TA7F5G]N?LLG:R/PJI;/Z:@_I!;U&3SO2;/LC^W1CL/[+U4-XFV[N_RX<
XMC)>Q/2L^5-*?NL/_?6:4GVEFJ)AV`N``R(79+^D*P,+K1&;;W7AG^HAV2LFQ
XM@P":*\?>\:<`2'P"BP4HU!E_QYX<5D`P@+G(L2/DX#NJEV!'00@Q%:`)"./L
XM?]'(8T;_R70K("56`KJ`<1BJY]^]+B&@K+$!4B`XX"V&ZG4[?TX0V'Y4*#<$
XM*6$$9BY#H$YW:2R!1,N0H@`T@%`@$[C^[7S/114(HB@`6B"O<O6I&%W@?\(%
XMAH'_"/27;@039&`/,@:F@;=.5D=S!!-3RJY2!:Z!;&#^=_F]@7#@+R$'0H%T
XM8!WXFT%VZ,8JA@:R@7V@'[CEO'_&QA&XI<0L6F`A:`B.)TB>AA&DB`]DH"/X
XM"-J!GAT>J`B^*EV@)7@)_F9@W\/QME""C>`GZ*FH7J,@*<@'FH(`8.<EJJB"
XM1J`GR`K"9M_+*P@+XH"RX"R8Y]2"MB`G&`2N/YW1'?0Y1!3GQ/J#H*T![D\;
XM<`'E34O6B:8`$$(&P:LT3GP)"E"6%!/L2Z10$30<@&@JA=OE48T$;(!3)1-D
XM3VL0&]`+B8,F04G1<Z$3#A9T]*>)0%C!PL`$=7`9D'5T"K5",I%,D%'9$YO0
XMN@4(-4UQ`1TP)AA+*T*!H*2)!L11FD:W/6GP4"JD&K4`&1NG(!FQ2O=@FU83
XM\&@)D4;`N@$&-D%5X26=0G?!,40+G0'653&HKT5"X)"D=0U51W'1*?0Y1'&R
XMP1P0$X1Q`5%'F&HU:'+`JG`%B$BK@9(4_\A2>D`]V`YB"M]5UC83Y@4`U345
XM$1`!$!)FY1%>!0_%[Q1/0`<YD'0D#-D!W%:E<`9D"MP6(Z0P'%`>$4@D$M5)
XMC=9O(%+<0^01?X5.)!4=TE8X9ZU1&5%&.!K9$\"!I)514$56D;[FJ$4$M)!!
XM4#211*550`$A@052@&/06D4$1]4E]")Y5'1`T?0$O#]P@1[P765J$<%:U!:]
XM125;1`$=*`36D)?@<8%,$!#3Q1-8%4YA1%0OR%5;0411'=5%CUH8$$:51II"
XM2V@D\1/\E8\%46`$IY$H5*EI!EJ`>F0KQ#\7Q<051M4$J,%H]!N8`=!07(!C
XM/6H1A9=$5D!)CD'6!!8<2`H3/^$9?@V2UL4T3L@_!1*W]1'>1?^11>0+"0R!
XMDI<@%AAK#]PAM#;95A=3IJ!1-$!;874TLH%%7N$&!!:YAAQ2I8#_S'&N40GT
XM'$$46%2!D!_J%+10B#0B101&@+:4%@44YX0"I!OM2)S"/I0&H$9DP#O1#4U1
XM.)!MQ1&\6N>@9_6P38-`4R`D:6ELR1.#91-4!/W$66!1V%:B$&A0-.E+:='^
XM`Q-J<;00E%`@\$.R03=X#HI*ZY5_&#@10=W61>$:\D/Z1-$TLO%'HA`-U!F(
XM0/D0UX``,4FN(10E10EPA%<DQSA,<E"#72%V87)CA29G5G1RI,&]I1R$<F[%
XM*`=W20FFW%Q!=Z5RJ('K\#+H%7D73]!7&`UB8H&$.]1RA47/T#L,7KI<8T$G
XM)@=VXB^G>.$`P4+T0,Q!#S9`TO=G&!+'#'%!X2@I2<D?P2C^>>S?R-*3>`$^
XM'Q'Q2C2*:(BF""F2$DW$IGCGV7Z68I&2*7J*:DRY(JQ\BJ)&7"/%>'H[RZ5X
XM*@X<D43<XGNXBDJ*I"@JCHJC5],B*_)E<8V^L;YP)K3BIQ@J3HKK3?#G*YJ*
XMR5RP^'K$&Q1&L9@KXHJM(AW#V\`H[<NOV"R^$CE+^D#9Z(JLXF*";:PE00P-
XMHRV:<Z3&\[&JW(J82+CH+H**(XRYR"Q.>:XBIYA=4#CMXKL8+EYDC1^^\BN>
XM?Q,>)B+4"#>+HKX8GPPS`>!6\B_J><$BP;-O[(M.C?Y7*@X2&Z#K=8[,$0XC
XMM7@P$C3,31DC*PZ,"5V[:"^2*^GBQOC#P'[+(L4(,AIY(N->)BT:BR=CV:>L
XM8'\'Q,>HIE0;&.-99W)`C'O&HN?C%6;/GS9A,YH73%],HK4<BP:CSUC3#7I,
XM':$Q-")Y5A_>ARHFC;5>T$AZ*8T7X&QA*D8P#&#"N$IHC%2CE0/9+2E5HRS2
XM8"R,U@WX\LT<C?DBU=CON6&CF'*29PQA0N.\^%M<&"W*6P<V)HWY7L[#[9&`
XME8^`P2P:+BQ@;_8PYHH(7X'2\,TA5X9Q$HF-8EO'DJ+Z)3Y;8](C?!B-Q811
XMPUTP)IB(Z3>`S1T<!,ACJKPF-J#@$?^Q&[+BZ:?T.70%HR/!E.@1><K/2/;9
XM@-3&VV@Z#AN5(V3CC$A[^E_K2"Y"*ES>__!CU'9E(^VH]*41E:/XYYN@9#%(
XMZD*!D!HU!+17W`U^C1^MU_!%8'@CJY@\NGGF!]%CT6B.A@2W4X25=&N.BX>"
XML8!8HXJAI&R/%9C?\ZZ`??GBM,'MP!Y%3?]ALIP;Z:/UN.XQ)LDC>&-",&3!
XMQTN&WWP<X\JD,3E*)E@>IW<]XC?A8O\X_^T^4ATN@HA8'=%,,U9OF##8SM_(
XM.Z*/VB/%F##Z'/L*>X$_."<O")\#U\EARZ/<F#_JCQPDI)@[5BY$1Z%QPGPE
XM#L\0T8-Q>W=8NG%^Z(OL(ZQWCFTC^(U!1IE<CMO>OV?RO8L]I`SFGM$B84@6
XM4G.T=+^?XBBF'!V03JO70'J0\I\,$NPD?P*?$QAWY!DY9,@!;&1F"J0+B45&
XM9L%*T5-N#!^N&$+FS121Z(<&B?\-/&KC^GA&WB5K(U<2\24@7MD`\FG$=Y`C
XM.8)?D)%5!^VXEB21$@DJ,D/\CUV?G*%<`(Y@I!%)2!Z/=F1WL0$N8]A?"CGX
XMY&"38WMG\^D7;9@AR3]2C&5'LH*1>3P19.^70'XOWD=S8C=^>JDDT%A^/#C=
XM77>'>;@C*R0]ID(:%XO)@7,N_F%$('J1BL`7909EAWK-CHECL;'2J8UUY"%Y
XMX+R2M8L*J+RH,W/':2>9O"53I'*S>V20G^(S24H.%U!'LD'RD"O"I.=BBCR2
XM\H?EQ6$4CR&=!('.X#@<H!D)86"*;]V1TV)\@*3?-.*BO!&76<U"21H875^$
XM0]FD-2VD:R)H_)+"8WO"D00^S4_W2+N<8`[9^_)):AD;3B`YZ<DB"&4D:)AL
XM&:D(]F);W!IHF3')N=PI;DD`Z>RQBK%=1JE1NA(TX_+%K#AW9AG@6,=8D::>
XMD*=U0),@'_BGM]B3PU<M>3[`'Q<EU[>:R)'MY!>!4^:4M<X?!H.8?Z)D#GE2
XM$I7;%Z2!2"*5>`D,^<%$+.@?<.?J%8YARNPR4TJ59V2QDE-Z&U^&N")V9",6
XMC1,"2;HE9>-$2>]!9;>'J1B'.5_2H\/276`OT$TSV4R2CO9,HZ.;&("RXFE2
XM3!9F8%@<<=IU*Y')^-A.HA\2I$'93J8YRX6N$I3(E2<@!]-)(AMWF=O!A5PY
XMG=Y.8K(<.HC*9$DQ+CE0#'?#=7PNX4E)TI^4(Q?(KA)8DI8ART"&>WF6=&,L
XMD4,B9&@&D2):6I*72\C24L)VWR.,4K=\?%^?HK);8HJ])>QSNOAE<",<)JJT
XM'Z]E83+903@!76<6I$"7E&5QTOWH>[T@.))=:BIY3\L2X6$N&,L@\5W"EK'E
XM.)E5WGIZ'I`27:*7L>76X:S\ENZ.JFCC?"CO)7]#PSR.^"1P!]3<E_CE>9DU
XMLCFEI#Z)61:!9\EY67SP/@F*PA*@N)<*)@18W3PC,L_]D8T=EWU@%DGJ*';`
XMRX6)78Z6/LAVZ8F\$&U*?JEA_CVI2\8#HIB8$J;88V$:*OFE*D%?EC[TBX>Y
XMBT28)V;:TV':F#<FB!F(B9A8AHJY8BJ8ZP>0Z4;\$"4FD>F9`9GWEP$X9/J8
XM5N!V:5T^F;QE&RAE.ID_2HRY[;28,8]U<:AHF5MFCMEE>IDPII*IE]26I<^4
XM264BEZ<@I??WJ)D!)I1)M?27-(AZZ:H@F'%FE6D"?I!37M,"9^:9;&802-KT
XM&B@@EIEEFIG?CEHC9((I=V95L@?^)V#FG.F!@21B)F>6!Y:9<B8.J&BZ+'QF
XM@7EI)IF9IJ8ITZ0MG>;*X9S!@8_F*Q)INH"6(R8X8")[>J`J=FB&FD:@U\AC
XM%B*EC*!!VV1[@B"FJ6>F...@9Z.H5FPO!GW5[3W])DBNJ6O&6C6@7&/L`FBL#JE
XM"((1V_0>X%P0N&J&@6N+)^("2G7<A^4UX9!^8>"U^0A"9D'@X9*A5!\XRZ)I
XM!(J;GZ"ZN0128!R='\ANZH+`IHV1H;B;4."\26\"F]3FG[D$ZIO[)AEX0L@/
XMR(DA"'`&G`(G>O((RHK_4@]T#NY&5P%6L%!X5+V1)B3`!0'O4;+D&EI8@,%P
XM<`$1;/9/=B##,0KXS["U%>!50)/$R4\@4=#!#951(55C@!^W5/Q29M(SZ"F`
XM0WT:>]40/6R:`H94/!U"CD&+\`4!G6Z0$)`'>'`G9SAD="*=2P$--2Z<;HX!
XM-J1<B4L6&QN5&A5,"T40,$&%`4!!$"`&N%7P!%*E<@X!+A#7"0RY1U*:1@$K
XM/`1NU&@T%Q%L2U%5,2GD`6V0,HAQ_D0:I[&D#J&()H,1%1%,1_K/:M`U^49!
XMEFN8$95+%U6]P!C:B+!5IG8P$4A<)WZ8('A<!U,3T&CY<5&<_H,-<4ELU:]T
XM(;!%]<)C2'?F!&X0950C/4ZPD$6Q4,0_;4`@QT:]`1\0%1`<S%?>X1C0:!E6
XMS])R5;+9GC^7,*A"500<T"4T(2J##H%Z]$19G"WG[X9\2ELCD4H10,D)BV<>
XMT'I^36D07:@,QA.!077T+T$'$=7P*2$<%?N2G,"A/131P<&$!,"<F*>0)"\]
XM!"M7Y+D/F0P!U40P$CI07%)4('R:1?;GA`5RJ5!Q`5=(&M4!SX&CX`8Y!,^1
XMU4:`%EP#$TZ`'W"="<"XL#'M207B8F`CEDD*4`G4!C1:O5`"T(`:0!3GSUD1
XM%(83E/?93*50&D4(>C!96+9G=61KR7)B01%0"5T%)6=QM2(41!'!$)4NR5I`
XM)U*$@^8$^Z<_Y!OQ3#T2D[`>96Q96]7P&]0+E%'6<&P-0"SH$4H0IEMNT/9)
XM$C0$&9-KZ!W9GD1G1"!ZP@I<$O"V7A%RBM-,H'4J3G=15!!=Q4,]$-#D`O%H
XMJM;"15@)!U*:!KJ!`E990T5@K&D-$=P=*C[)H0XH<&C(F00;*!_J*=V>;T&<
XML`,1HD>35'4ZF)T`&Y<E+'%9&,)WE0=4"A$!652!DD9X0`5J><8+;E!1H130
XM";P01"%Q\DFCJ!;P&YP!JP&/UA/>4!N0`NI]#D!;4,F)(^8$W>!^],810*::
XM1T6)*E>D%KJD@3J@'L5M"!_YAYB"&V0`)0$)12SD!F$!I5%Z-`?,H4N``HI4
XMN010@NKY??Y<J59.T1'T2(8<@C8ZR`DIVG#PBU9#`I8^42"%`7/H$)`'Q)P4
XM'#0:R/F=\9#X5'HR6"DG0\$@X3_CZ&18"2E`^6@YA!/@HW/H`$0G#`=511[`
XM".&C#JB%A0WEHU1`60@H-5I@T!P:%8@!-ALZ.H?&/X[4,PJ-EH690CYZ?AX)
XM7]`SZH`>`9R31>J`2HGQ`J;4(YT%A]04Q?_X0I[#1'`'=6Z)I]*U=DX$YZ=2
XM`(?"1UK78F$E<A5?EY9XR54.76+9Q<D)"6A%`"H=S$5DHMME)L85:>+<Q3JH
XM<BY#7K%7R(E[E]&@E$X'=^+.<,OMB;F<3[K+D09;*5,J*&X(D\5*D);F`,T#
XML#`][)O!G^QH9,(Z<*GF%UQ6FLY/+LALBHT6I$XYEU(0=6F--^?]I9-.8)KX
XM97N$J;)AF.X76-^K*6+JI6Q@K]B-):;^Q6+:-X9UE.EU89GRI9-I9GID;*9R
XM*6;JF48H;F-IFDL2=WAI7FJ:KJ90Y0,XFBH;K"EK&NN]IK!I;&J:SJ:T*:QC
XMF]ZFN&EN&F+LIJ6I9.J;3CK`J=OH:'"9V^446)SRC2M?:OJ8+J<&XYXWG#HQ
XMT*F[".0@I]R/<EJ=UI3]W'3*BVVGX:)TZIWZ%^`I=WKWC:?717G:Z<V`Z"EU
XMJIZVILIB>WI==!@+Y*DGGSHQZB./E_RY+X\I?:J?W@\S9G\*Z#&/\-=;EIQ>
XM=P'&?3J?JA@SQY)GEZ:5L.2!BMDEJ`IJB!%>/'D5Q[QC2V*GW4_%:'%P'C.'
XM[U>A1BCN#4$9`GIC(ZH9H8*!'R9JF(=LR*=,V&5ZW#&HEU^*:J$*IIP?D[*2
XM.*>$Z?%W0W"F!:"/QZ-FIJ`/CAJD+HTVJE02FBY_0NJ1DZ1.ET%$BJ?Q\:5>
XM8YK)UUP12.J1:KN4FD]JE"HQYG[%%W(1[7"IM*F'^D%2>D;J8->E)A%>)+JH
XMR:A_:^J/.F#&,4!`E<'*F'_;F?2C`*0TZH7D<M/\EM)8G'I#E&0S!ED3`0JJ
XMY4.%$TV0-33C]^7%1#][JKUAJ'I]'&IVJJ@NJD[-H5JI4C^1:I_J@3014@VV
XMH5X\DC[JB-JIGCCL@RGQIGI]$&79P:E>JIAJJF'(8'01I8)ZJFH37PT\\\-D
XMDCT*8[>F/C$3S`_SM_1^]RFPZLCP&3R,CB.=#*EY:0KS/J@PVXP*XT(D%WWD
XMKUJ$I*I\2S7AR%25I:I\>DE*JKFJM'IXB)#B7V):,8*K68VX.JWB7ILJ@$9G
XMSC?BJN$RV,@Q7:J'NL`('6T,R5&O\JF@QD3#AH@T2:J9"J[>JX3-M0''%&6Y
XMZ9XZ,JIDL.KLA:U:&T]J]T"H]JO^JK9*WU2LMBK<49/UJ=GJL1JGEBD;Z[J2
XMK5JL01FBFOD4JAVK'-.P6F08J\F:FFT9&VO)BKB4+2MKBNJ[\"TA:RW#1LBL
XM%!FB>K/2JP8K'7&Q`JP\3U@CMLBJ?FK+JM`<BR.KRYI[P:P93-.ZLY:,4JO3
XM^K(N,#59Q7IR((T\:S(Q82XU`PS2"DM8?"RKLXC0M#1XC,\JJ9:M;HU/,]!$
XMK5VKLL.?%2$B32CCMDHQ0FO-ZJV>'D%9*./#1(I1*ZY*U$RG`,W9.DP@C<BB
XMSNJONC%QJV6IR]@U4LVG"C;JJG9J4=:X>JJECUVS9Q0Q=NODRKCBK.--+3.R
XM*JU9C'^FL?:MTTO)^$J(,^KJLZI%7*ZNJX!FQ1BNAX3G6KH.KA:,5[-J%&=Z
XMJZ^3VVRNK6M3!K:H&NIJLKJT%C)$Z[B*^!@WR:OKFKI6KFQ$JLJV;AL6S/(*
XMS,"NN:LVP['V,O?&P8K[9#*DJ_"8:J"MV^NLBJVN/E$(1V.3O:Y0ZQQ#OKXT
XMUFOZVKH*KHC+^\IQN*_WJS\SO\ZMDTB=NK\.-0U&Y[JJTC7S3>PSB301_NL<
XMMD:,'-?JU-K1**H0Z],C^00<9&NAZD+@K_6K!`O."#:&:_5JX1"PA^L`J[R"
XML/SK/</16!%M:P2[O;*L\"KC^JR*@+YKWL)N$*]^ZCZSOHZNX>M<8TP^/QC.
XM_XJP#B`H;!U!3I:PU<M$4\3,KJK&3$>L&JVMC15S;_BP1D^!UIV).U)L_8&I
XM9J<XCZIZJ4*Q.JL!:_2(JB$L%HOSA*HM:PXKN[(\`<?#VKN^/54LU@K&4F1F
XM+('V^0!\]R0<R\#N?AE-&QL!<G2GQMA3M9)E3"R&DZ6$JSDK=[/$-BUZ;#5A
XMJ*2K':SI&MS@*@)L(5M8TC2)[*^3:@Z;NDJ4`JH:J.M,)?L_:&(`"];26C:K
XM2XT)F&KBL=",)WL_L('V2KL*E^DR?B`G*_15*C2-'QB@LCRJ[/EP":(@;\;"
XM4L;LF[7+J'G+FBXT#L+90GQZW1[8FK<8L[%FYX+>5++,;#/KS`8W;>PC%LUJ
XM8E&9*UN7T#O7["28_.`KW6S[492<L;I..+L)QJ_EK#F[C1T^5:PZ.\JRL]RL
XM.[O.LK'QK#M+IE8W[:P\FP-^K_:*/KO/XCW5K#_[KE*S]:P^VR]&L2.+/NN8
XM/K,)K3R[T.*S.XM#>\]JLRQ)01O.WK.!K$5[S6*T&:U&:\P^M!!M1*O.<K3*
XM;#%[J-R"TPZSBLC*L#_*KY-H#K0$K4E;7KJT#B!(&](VM&$F$7C.B:?T+$Z;
XMTYJ2?&Q^@=!YL3ZM-"N%;1KG*4"[S!JU$2HV(IQ>)M5++FN7#7S>R#`[>4BU
XMRQ@RV:9.LR,+5DN\='^Q7U>K^H![IN8A6Y!XM5/M9>J.4;1*&>GS\5B-,&01
XMYLO>/MR72AOZL;7:F5N;S/9G,>1<:[4Z/)>'O8+6XCTVK?9#DMY1[1(OY1HF
XM`6NG0=6XG02(EN]F'S)-=%OY5!2]AH\:9'NZM45#(CZ4#P57/,%Y)`HE5"#`
XM[I1#Z5'[8%\5&BQ5+<`^^E<5%4P5D+0&L4C"T7<56-E6"5&GU+SA0#J%&`04
XMP*+D)Z+55Z52BM5#85N%5C82;,0B011V(4NA!W@*JF@+X!$I!%'!;Q5<*0!)
XM@$Y:*>Q#PQ6B15E!5ND0N991]!,1%W:K(B@$Y16W]%\U6`]67<AQLA0%7!1G
XMR/%'65)+81XFB?1$@C4:VEQKP',P+&E9_)N6-2G=4JXAV"1CI5(_5H(09(D%
XM^AK-=`&!4UG!3E%E,51"IU;T5]5.G=L:X'+Y4"`<EW7<TE%D`F74$Z92HI+X
XMF69=6R]%6#0IA7"NX0''(LV(2Y:>E0<@6G*`HL6C:4&G$&T8<<T!/Z*)2UF%
XM44712.`:0DG(H#UQ1>D4VI!FR!6Z<2(%'2=S,13QDLXE)UP!>EO"M$\<7:B3
XM%*5T@4Z*W&_K"WE$+,5P*"M!`49AN:40``YB:=?E.%!R0FG$P"6279G#4<HY
XMO`;!@7;PRXERI0.:F#JD#'475?HZL'*RPRN'.!!L7:DMIR<B%F&IX#"6TKF$
XM[EFZ>$$/T</S(.E&7@Q=K/?E+7?5)5BKU7YYE>Y.2Y1=NNZ=1%?70GV@+NY'
XMJ]*`.E]<QY*5NLL%2,=)LGFLWYBS][&Z5!Z<2MJ%)0$/S$?KCGE07;`)B*"F
XMNRXS9P8F,N%DTPC?!+O"[@XX[(J5FRZKF]0-F*T?"Z*E@KK/KAL8[0*,.>JE
XM>]4AM4`M'>M/(KNX1:3G,OZZ40FX:_W5DVZ=HY?6K6?F;I>'[E)E>-^ZRS2V
XMNZ)>/3;JCJE3F5X7^9F[FEU#)TU2+/8F($CO#G\@7N@%]/BJ*V6[V^\:?>++
XMY]=)VH\#;[+KSVESTV4F&-1.J'V?N\LT3A-V9J,7^F6\"AV8JO'>M<4NATG2
XM-;LO'<D;XJF\.1\@"/*F=HA?N(OX87KFQ<N+H.Z[(V_E5>CA?.TN(KCR*KL6
XM8\1;MQ25IFZ!Y_2(?<%NS/OS&KT)SJP+[HJ\K>X5^/0)O0!&?;?'ZGY5"-4;
XM_\%T.^`]1M*9NU,J@<?T,G6K%]BK\F*ZZJZ@4W#TO$IOU`M,4I2_'5F+\M:[
XM3:`$5M7-O0K,UYOSJCT%H,V+YOF]$YG:)_%"8$$JX`O-3;OWWUW*Z]:31"][
XM<]-Q?VEJV'OMC;V81LH+^0*I^I[^X.6]>'9OD7?Y8KZ;[N;+Z#%XF2^XA_;*
XMDL@'09?FV76D8NY'W<%_[ER>E^V"OM37ZPO[_KV^%]2+,L9YMF_JR_J^>NY?
XMVRLSAGKB[OIEZP$8!ZWDNS3NO4'=X:OYU;W#+^_[!1:H&:\5XNC4=OONL,?-
XMD7T/"/0;^<J\4N_X-?[]E23M[#OO3KY,Y=\+]\*T>*_2,OAVO41>M4?V:IA/
XMK;*G_?YZ@*3@)]AMM0B9C`>FOGZ%W:_7_L:4(.WXE_%R?"&?`>ST=J?%"*&R
XM[G)S"#":0Z/J.08P8FKX?B_PWO2%^`IY<V/I&Y]^OH%@EA(!2X!I3GFV`3=F
XMT%R;,@(K@#3(Q,%>K)*?2S2G`GO`[-Y@^70@(KJO[&C-S<`@<.1+LCR4-+"'
XM(<[QP"?PEYI\A&3`EX;19+Y?]0L1/``;P?MO"BG\]BRK)"@I`O?`M*_;(4#R
XM7@?F^GOMIL!7,)-JW<VR:%@$AOSJDOEDX&=[.<$7,!2L@TFI65_GU?<YP0#8
XM]!OT&IA;;P;(7!#!K>\06Y%4-AOD@X/TNJA[<!C\/E*UB-F^"X'0D(+OJW=/
XM^IMJX!/L,%(\-B7\`D'FP+<OG.%LEB&`'R*<",M^JBX>O'L]>1GO$OQ[T,'U
XM+WDQ]CQ^1D[=,04GDYONQ7=K\@^=\*.7_&9T`*\LAED&&7FC%MQ[=1"H<*^(
XM^DTDWVX>R:A`DC1=%B9"\,$\;2Y,!JMZ?_#/"'U`$\RP)[R?]K+P2/78Q7!@
XMHIV#FENPP87OE<K<O<$A'4#6!@\:J*8_@D5$OU"M%'+\3;U/AV?9!\N:/`@L
XM)J52)6_$=L-'"CJ(I<Y;!"L0Y,,KXOR%=P5F]'>/W&5[;?`K"0/$`3$G[$9F
XMNK;*3P)#0L)92T,<"1,P7*IXP>KA*NC#16P.%W@]W66)+4)_HQZ>.6PR._4P
XM`,$UCK[3WU8R1YZTJVPM8?\%.C6?4(*'V+7I+S'6_[7`B=U>Z3,&CB/+?1'*
XM4F::96OZ+OJE&"!%W*Z\LN]C>>J:0BXF<9MRX?R3RRG_>\PIQ2UM(N:E6I3`
XMZ3W\EP"8%PNU4CXTE;%I%GR3.)=42Z*2!&ZGNV\Q8Y;Q-Z;LD+(6[Z:]Z;O;
XMZWHF6B"<,A>7IJXF4MS_ZK3CA2&(!-8/?F!A.^#Q%\7D)TBP0*:"IE_,I%:_
XM@3&]R1A7@?:9NAD5+YB;,"$X"_:7F;&^<VI:LY?@9-P%(L6SL(!B3,`IS,0E
XMBPLRLYQ=:0R-,2)P2CBB&KN`HO&XR34Z@&'8ISD;FX"UL2%H\W3&B\Z`TLQF
XMLFE@;^P;4\+XYH<2&3.UN_'+8AP?QY3&B($;&X`H<2DXT@YWR;%RC)&<LXQ@
XM+.C/BF*7\;.I<#+'S7&N\AQ_QZV@<#S/=L>T,7H\&JO'Y'%Y?*B<Q^YQFV(]
XMO+,H[;'S#$H4T,$:.J1!2\.GI`47:`TR(EJX!9%P,6C?"1$(R"3AA;"&EE<Y
XMA42TA@8!-Y:(-&AI06IHO2![7ITE)\=I!-%`%,)ZZ&`5HB-4QQ8SN`12@5VT
XM<3I)O5#7F7%2<%&6A38"O8;XD8I$(?1)8X)P4!<TG+=G&/5VC@1+D7>H_[P%
XM;0`*\`,D"[!H</0DB9P`4:,5'#T$!Y,Z&A06HL"0F402#(>PVD1`@")+9A"=
XMH!L92BH"5G&!AJ)U$BR$)P5)@%"\M?]T%`G%^N2"'DM1:#<Z>$I(>&C6R3/!
XM6.]/CYS!U:,D*6^T<%EH>9)CH#@=3(5A[CEQ,E@@%<*5#V$5B.B'Y(^R10L%
XM^+03+,BS:(C&3S1:LBC763PI!I*5:TB21A6V+4T:(*NC#9&<@)*ZI#;IO+1Z
XM1DZI(9Y5"VV<NIR:VU5DB6"%FTN4PKF;7,:`E!H-WT%32CJ0<GKN*;<FVA5N
XMHE4:)[IR9P*O#%G@B8$76*I8*+I^XGD`60!S-0#DU99F%M-#^A-.=#W<<B32
XM+5,OX/*3$BYW(-A%!8L^F,O2F?7Q+8O+[#*Y["V_R^/R]",OJ\OP<KL\+\L>
XMZ[*['"_3R_LROEPOD\O:,CAA%YH!F@$&U$)I!E6B$2`K!Z6U<BN7R1FENO*<
XMZQW\76W7KWPFG@Y[+BI'+*]R<&(K-R>>!W\7L_R5(KK/<O`0+;\&Y$'BY99N
XM"*X",6<HYLOW\E7[+\?,L\G,S"^+J*RP=G;?11.7&1G3$JNI3+&_W"_+S$-S
XMS5PT_S,VL]!<G\0_!/,R>##WI(KNPLSF-LQC%UD1YT;,:`5ZX"N_75!IQCPL
XMVUU5*=[E,6>EYT%Z<#R(S(>N[Y`PG\S>@=G,=B4/U;*OT#)+NB]STDPTV\LW
XML[Z,-RO-SYS>@='H>Z48^4"SH,OASI0:.)->?O/\83<;S7OSW:PW/\XT,])\
XM-`LPB[/DW#@SSI!SWAPY4\Z3\S;;.1\KG[/V4SESSI>SY4PN]Q.M`=-<,&=`
XM:(!FD%0(A-D!U*Q52')K+JT<=@VEB$%1>C6?%;QR>W#GEHEY+L8L+$^E;2+'
XM?)4BR[3#>>`[G\U>:=K,)XJE;/-XL#R_S2NS##`W8\LPL^:L/?/-F[/G7#J3
XMSMY#"U`"S"KX;B52`K0`/O/W(#Z3SX3S<'*0G,_I<_@\/IO`@%TX`C]_99DS
XM][P].\[=,^C\/7O/^?-5JSH[S:VS[,QUT<ZS\E=Q.]O*N3.N_"7NRN=!?/`[
XM.Z7!L]S%Y[*)=T78#.CJ78)N!%WHYHF'A=K<)QI>*+,$?3Q0R\X##7`]KP24
XM5^A<T0;0F'/_+#H7S2\'C]'QMK7`W^$L/OA?AH@.K>SYT'6FHW)#%\[_L_\,
XM0YO.,O0+G403LT<T^+Q$#SA--`#]1"MC+C03/45[/Z.S%+T_Q]!;-!+=13O1
XMZK(3<`70AJV!$U`$#,R:P1#@<>U*!G,!/06,T:\SIZ`,3@%G=,(L-=O.EAP#
XM_3#OSF`BREP?3-`6<]<\//>YQ;,&W3$'NLGR>?!',\^&;@C]/$/+)+1WL$A3
XMSW&S"BWI8L\!\S>1/>O/G#3_O#WC)E9Q\I4&FR,<F59;2ML:/;1!DDB<TB`O
XM*]W7T9*'F#EG0S^T2IY)5D5#T5=TDY-%&]&Y-!#=27/1O[07'4R#T<.T%EU,
XM\])?M#'M21_3,W01W4P#S)DT]X`ZAU%7`#!T1JO.')$_42<I26TTPEQ-T]'U
XM%>Q<+U@5DN$=)*$9T#\IEJA`Y]$.L^Z<*_/.YP%^$%-LS4]I*><U$\\9])][
XM2'/0B33*+$\O!X,%VNQ()[HF<R0]'OS3*G,,,`-H",S#)<U"9\O1=$0M46,/
XM@^U?4E'K+,DID'E1DRD:=4?]F.HH$@[<H:$8'B.U$AU?+&.<R5K;Q$#1&\K*
XMTLR\/"UU[R%3VS*^ATL]4__-"$AS,^$<-@2C3AU2@QH-2`S#4\?/"$@>XD?L
XMFC*&#F%4/Q!(M8.A5(_$Z<M0?;("*AT)`:&A2-7H`U7-AVPV/W52#8YLU3MU
XM4XU#4]702`P3Q_X/9#7]8%9SL?=#6GUNPC6G-)TC;_@0/Z2,(5>3&'1UNG-7
XMXQ%Y-4=FZ3PF*LT%@54#$+,$8*W5"-9$3&&=4A_6Y$TL':5`+$I&5S-8PX*0
XM=38A6<\8OT1EK=(TUI@8.-+XD`\4AEU-Y]@9H/5*O5YXUJ0U+V%:X]"%A&TA
XM5M<NF<1K_>G%UI,U_EQ(V-3,QP<3_'@CNC7E`I')%QQJ&D)2XZ5GA'!==AC7
XMS`=R;45G/QMU2])<G[4>=4;]44_7TG5UW:%.U-BU1/T,`HCO!.&4%Z@39``*
XME%%XUWW!3@@D=-<=U'9]7A-=I5H-REV?5`27905>B]=+A<-V"EE'X?59H%_Y
XM!%R#>:W%D;GM-=VF&NW7*X)ZK<4)27$"BU`$O-?ZTEEP*BW8Z_4)91RQ1_EU
XM1H%@3USX-7UM<`E.PE3NIE_S21.V?ZTR/4\L@HC=8)<!IY*(#6)KN1`VC5BJ
XM+5(`(LCE86<4?:$2-%]C<2IVC:T"^-?K48O]3H!QW_6,_6.;N0+V>@UD4[>Q
XM,@+-,"_0[;0#;79!T*\!?^`?]'),P8"@.."YP++PK";BT\6RV(Q()\]1=G_P
XMR04(5C;@-3*+T-"S02UEC]E5-H&@)$P!ES2*D';5#0JIIK`KU`TEDE*`*E@/
XM"@#T(.E6R]*#0WTHK@2$MJM@:!?:B+:KP%#`B=]/GTUH.P^`]J`]:!_:E':B
XMC6A+B%N!IG`#3`^_T2NE`.P*DE<,X"J8"(3VKC!Y2;HW;G#P:4NZD]>(\'C1
XMS;X",6<=RE+HTJIM:.<`PT(.,#?K"K+VJ2S`@=HLL_.0`]S9O$*LC6H+%#N!
XMR1`4VMH;0J`];+/:S3:J72`F44\"LQT#W`"[PK/M9Y_:SL.094!9VS?`KY`#
XM_`K;MJSMM0E081NXG6W_"L0VMVT`P4X%`K']Z!X+PT*YC6I#3I+3JMT"Z`K7
XM]K%0+.S;K+:L'2B9!`N%O/UJYP#%0J\0++C;GY/B5!Q:VSB`XU4L0%[&=K=-
XM-IV#NP+`;3T'"R5"MS`W,]P&KMAD;><`CI>&\"OPVO<VS\1L3UZ.UXB00D?;
XMW7;&IAH6"+T"]'`#N`HYP(AP:-,`O;;)YAIFW/SVG1UH`]R2EZP-(_)+^K:A
XM'2T\U!YWP(UJ;\G%4[(D#:W<,$"O$#WLVC`W!WI2`$L*0*\`<%_;P\+5W72G
XMT+)VMH8T1;A>-Z^M(40/0+>DRW.CVGJ2G&!P6]TPP*Y@=6?=&N*=M%PEW9:%
XMT-UV%]VH=IQT)H'*;?>UK7/7W6,WWDUOK=HVMZ&->-O;W;:65!;\W*5VU<U"
XMW]V]`L-=(,8)!R+$?7+#`+_"PHUW#XC[(<3M>)_<E?>QG2$)6'SWM5TL1`^_
XM`M&-=[M,#Y)J1'6'W3"`Z)UYR]H*$F-D$5'=F46AZ"O@W0?2&T!Y&]HXP-J=
XM>PL+J7>W32#)W84V#H![!PO#@JG->W=;`1(>`&X?WFVI]1UX?T?/T<B->]?;
XMP`+>C1[2W-'WX5U]$]IO=\RM'<K;.,#G/2QDWK,WI69[&]R'MX9@:N/=I!'`
XM57`7VG`#"ZTA0-X&4&*T&#%(C/>&(`-\WCIW\UTMM5ED1<W-,K_>'T*I77%7
XM2WG17A1O]445`["]<;/0#?CNC6JSAAAWH8UK@^"PMN8M%W4$([?C[7([X.O/
XM9:A60-R'MZN-62C>E&'7'7T+W2."W7V!VX4G554$?2/?D*[D-7PSW)_:/*0/
XM>N`Q0-@M:F\(,#A*=!%*X-8SI.LJW-WMMP$$&)I$(_?)_803X$-66!@2R08T
XM^$KPA</@<6&<`"=`W%;W&8YR=]MHFML%?Z_=:@,4_H8_X+)!010O0-RO=QU^
XM=S/<_[%.(8$;WF:X#[XK9.$*0#M4/-T!5+>AK5"GX+PW:D`4WMTB0AON>*W,
XMB'@W)!"B!BDA)1Y_F^&]PJ\@BLO:IA`IY('#`'TXN0V#'P$)EBEN@M/AJO@=
XMO@]J0L6@)ZYSQP"_@O[]@Y]'4=*N-(C?`*FXL7"(R]J*$",D&@#;UW8;SF[#
XMX.5@&_1_%]V%8@S0ELKB95`ZB`9-%,"W&3Z-F]\*4`_$B%/A_;:HO7X/XZBV
XM-G@$Z8@C]YW=A#/?HSBJC:'=0#F0#FYS1^/DMZN`B`>?'I`\KH"WX<7"B)"6
XM9N)Y4P(^>7GAQ<+\C7=':///22&05^!J`Z1=?C/<58`M%!$,<^BTPJQD3\U,
X8=M5<,4P&1AJ;>Q%8"7;2@H`BZ!5@P?1P
X`
Xend
END_OF_preshar.7.u
if test 32178 -ne `wc -c <preshar.7.u`; then
echo shar: \"preshar.7.u\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 2 \(of 7\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 7 archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0

0 new messages