home *** CD-ROM | disk | FTP | other *** search
- From: zip-bugs@wkuvx1.wku.edu (Info-ZIP group)
- Newsgroups: comp.sources.misc
- Subject: v44i078: unzip - Info-ZIP portable UnZip, version 5.12, Part13/20
- Date: 18 Sep 1994 23:16:06 -0500
- Organization: Sterling Software
- Sender: kent@sparky.sterling.com
- Approved: kent@sparky.sterling.com
- Message-ID: <35j3a6$qps@sparky.sterling.com>
- X-Md4-Signature: 86063dfa1a7b4e10764aaad844e434ac
-
- Submitted-by: zip-bugs@wkuvx1.wku.edu (Info-ZIP group)
- Posting-number: Volume 44, Issue 78
- Archive-name: unzip/part13
- Environment: UNIX, VMS, OS/2, MS-DOS, MACINTOSH, WIN-NT, LINUX, MINIX, COHERENT, AMIGA?, ATARI TOS, SGI, DEC, Cray, Convex, Amdahl, Sun
- Supersedes: unzip50: Volume 31, Issue 104-117
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # Contents: unzip-5.12/funzip.c unzip-5.12/mac/thinkc.hqx
- # unzip-5.12/unix/Makefile unzip-5.12/vms/makesfx.com
- # Wrapped by kent@sparky on Sat Sep 17 23:33:43 1994
- PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 13 (of 20)."'
- if test -f 'unzip-5.12/funzip.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'unzip-5.12/funzip.c'\"
- else
- echo shar: Extracting \"'unzip-5.12/funzip.c'\" \(14247 characters\)
- sed "s/^X//" >'unzip-5.12/funzip.c' <<'END_OF_FILE'
- X/* funzip.c -- put in the public domain by Mark Adler */
- X
- X#define VERSION "3.83 of 28 August 1994"
- X
- X
- X/* You can do whatever you like with this source file, though I would
- X prefer that if you modify it and redistribute it that you include
- X comments to that effect with your name and the date. Thank you.
- X
- X History:
- X vers date who what
- X ---- --------- -------------- ------------------------------------
- X 1.0 13 Aug 92 M. Adler really simple unzip filter.
- X 1.1 13 Aug 92 M. Adler cleaned up somewhat, give help if
- X stdin not redirected, warn if more
- X zip file entries after the first.
- X 1.2 15 Aug 92 M. Adler added check of lengths for stored
- X entries, added more help.
- X 1.3 16 Aug 92 M. Adler removed redundant #define's, added
- X decryption.
- X 1.4 27 Aug 92 G. Roelofs added exit(0).
- X 1.5 1 Sep 92 K. U. Rommel changed read/write modes for OS/2.
- X 1.6 6 Sep 92 G. Roelofs modified to use dummy crypt.c and
- X crypt.h instead of -DCRYPT.
- X 1.7 23 Sep 92 G. Roelofs changed to use DOS_OS2; included
- X crypt.c under MS-DOS.
- X 1.8 9 Oct 92 M. Adler improved inflation error msgs.
- X 1.9 17 Oct 92 G. Roelofs changed ULONG/UWORD/byte to ulg/ush/uch;
- X renamed inflate_entry() to inflate();
- X adapted to use new, in-place zdecode.
- X 2.0 22 Oct 92 M. Adler allow filename argument, prompt for
- X passwords and don't echo, still allow
- X command-line password entry, but as an
- X option.
- X 2.1 23 Oct 92 J-l. Gailly fixed crypt/store bug,
- X G. Roelofs removed crypt.c under MS-DOS, fixed
- X decryption check to compare single byte.
- X 2.2 28 Oct 92 G. Roelofs removed declaration of key.
- X 2.3 14 Dec 92 M. Adler replaced fseek (fails on stdin for SCO
- X Unix V.3.2.4). added quietflg for
- X inflate.c.
- X 3.0 11 May 93 M. Adler added gzip support
- X 3.1 9 Jul 93 K. U. Rommel fixed OS/2 pipe bug (PIPE_ERROR)
- X 3.2 4 Sep 93 G. Roelofs moved crc_32_tab[] to tables.h; used FOPx
- X from unzip.h; nuked OUTB macro and outbuf;
- X replaced flush(); inlined FlushOutput();
- X renamed decrypt to encrypted
- X 3.3 29 Sep 93 G. Roelofs replaced ReadByte() with NEXTBYTE macro;
- X revised (restored?) flush(); added FUNZIP
- X 3.4 21 Oct 93 G. Roelofs renamed quietflg to qflag; changed outcnt,
- X H. Gessau second updcrc() arg and flush() arg to ulg;
- X added inflate_free(); added "g =" to null
- X getc(in) to avoid compiler warnings
- X 3.5 31 Oct 93 H. Gessau changed DOS_OS2 to DOS_NT_OS2
- X 3.6 6 Dec 93 H. Gessau added "near" to mask_bits[]
- X 3.7 9 Dec 93 G. Roelofs added extent typecasts to fwrite() checks
- X 3.8 28 Jan 94 GRR/JlG initialized g variable in main() for gcc
- X 3.81 22 Feb 94 M. Hanning-Lee corrected usage message
- X 3.82 27 Feb 94 G. Roelofs added some typecasts to avoid warnings
- X 3.83 22 Jul 94 G. Roelofs changed fprintf to FPRINTF for DLLs
- X - 2 Aug 94 - public release with UnZip 5.11
- X - 28 Aug 94 - public release with UnZip 5.12
- X */
- X
- X
- X/*
- X
- X All funzip does is take a zip file from stdin and decompress the
- X first entry to stdout. The entry has to be either deflated or
- X stored. If the entry is encrypted, then the decryption password
- X must be supplied on the command line as the first argument.
- X
- X funzip needs to be linked with inflate.o and crypt.o compiled from
- X the unzip source. If decryption is desired, the full version of
- X crypt.c (and crypt.h) from zcrypt21.zip or later must be used.
- X
- X */
- X
- X#define FUNZIP
- X#include "unzip.h"
- X#include "crypt.h"
- X
- X#ifdef EBCDIC
- X# undef EBCDIC /* don't need ebcdic[] */
- X#endif
- X#include "tables.h" /* crc_32_tab[] */
- X
- X/* PKZIP header definitions */
- X#define ZIPMAG 0x4b50 /* two-byte zip lead-in */
- X#define LOCREM 0x0403 /* remaining two bytes in zip signature */
- X#define LOCSIG 0x04034b50L /* full signature */
- X#define LOCFLG 4 /* offset of bit flag */
- X#define CRPFLG 1 /* bit for encrypted entry */
- X#define EXTFLG 8 /* bit for extended local header */
- X#define LOCHOW 6 /* offset of compression method */
- X#define LOCTIM 8 /* file mod time (for decryption) */
- X#define LOCCRC 12 /* offset of crc */
- X#define LOCSIZ 16 /* offset of compressed size */
- X#define LOCLEN 20 /* offset of uncompressed length */
- X#define LOCFIL 24 /* offset of file name field length */
- X#define LOCEXT 26 /* offset of extra field length */
- X#define LOCHDR 28 /* size of local header, including LOCREM */
- X#define EXTHDR 16 /* size of extended local header, inc sig */
- X
- X/* GZIP header definitions */
- X#define GZPMAG 0x8b1f /* two-byte gzip lead-in */
- X#define GZPHOW 0 /* offset of method number */
- X#define GZPFLG 1 /* offset of gzip flags */
- X#define GZPMUL 2 /* bit for multiple-part gzip file */
- X#define GZPISX 4 /* bit for extra field present */
- X#define GZPISF 8 /* bit for filename present */
- X#define GZPISC 16 /* bit for comment present */
- X#define GZPISE 32 /* bit for encryption */
- X#define GZPTIM 2 /* offset of Unix file modification time */
- X#define GZPEXF 6 /* offset of extra flags */
- X#define GZPCOS 7 /* offset of operating system compressed on */
- X#define GZPHDR 8 /* length of minimal gzip header */
- X
- X/* Macros for getting two-byte and four-byte header values */
- X#define SH(p) ((ush)(uch)((p)[0]) | ((ush)(uch)((p)[1]) << 8))
- X#define LG(p) ((ulg)(SH(p)) | ((ulg)(SH((p)+2)) << 16))
- X
- X/* Function prototypes */
- Xulg updcrc OF((uch *, ulg));
- Xint inflate OF((void));
- Xvoid err OF((int, char *));
- Xvoid main OF((int, char **));
- X
- X/* Globals */
- XFILE *in, *out; /* input and output files */
- Xunion work area; /* inflate sliding window */
- Xuch *outptr; /* points to next byte in output buffer */
- Xulg outcnt; /* bytes in output buffer */
- Xulg outsiz; /* total bytes written to out */
- Xint encrypted; /* flag to turn on decryption */
- Xint qflag = 1; /* turn off messages in inflate.c */
- X
- X/* Masks for inflate.c */
- Xush near mask_bits[] = {
- X 0x0000,
- X 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
- X 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
- X};
- X
- X
- Xulg updcrc(s, n)
- Xuch *s; /* pointer to bytes to pump through */
- Xulg n; /* number of bytes in s[] */
- X/* Run a set of bytes through the crc shift register. If s is a NULL
- X pointer, then initialize the crc shift register contents instead.
- X Return the current crc in either case. */
- X{
- X register ulg c; /* temporary variable */
- X
- X static ulg crc = 0xffffffffL; /* shift register contents */
- X
- X if (s == (uch *)NULL)
- X c = 0xffffffffL;
- X else
- X {
- X c = crc;
- X while (n--)
- X c = crc_32_tab[((int)c ^ (*s++)) & 0xff] ^ (c >> 8);
- X }
- X crc = c;
- X return c ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */
- X}
- X
- X
- Xvoid err(n, m)
- Xint n;
- Xchar *m;
- X/* Exit on error with a message and a code */
- X{
- X FPRINTF(stderr, "funzip error: %s\n", m);
- X exit(n);
- X}
- X
- X
- Xint flush(w) /* used by inflate.c (FLUSH macro) */
- Xulg w; /* number of bytes to flush */
- X{
- X updcrc(slide, w);
- X if (fwrite((char *)slide,1,(extent)w,out) != (extent)w && !PIPE_ERROR)
- X err(9, "out of space on stdout");
- X outsiz += w;
- X return 0;
- X}
- X
- X
- Xvoid main(argc, argv)
- Xint argc;
- Xchar **argv;
- X/* Given a zip file on stdin, decompress the first entry to stdout. */
- X{
- X ush n;
- X uch h[LOCHDR]; /* first local header (GZPHDR < LOCHDR) */
- X int g = 0; /* true if gzip format */
- X#ifdef CRYPT
- X char *s = " [-password]";
- X char *p; /* password */
- X#else /* !CRYPT */
- X char *s = "";
- X#endif /* ?CRYPT */
- X
- X /* skip executable name */
- X argc--;
- X argv++;
- X
- X#ifdef CRYPT
- X /* get the command line password, if any */
- X p = (char *)NULL;
- X if (argc && **argv == '-')
- X {
- X argc--;
- X p = 1 + *argv++;
- X }
- X#endif /* CRYPT */
- X
- X /* if no file argument and stdin not redirected, give the user help */
- X if (argc == 0 && isatty(0))
- X {
- X FPRINTF(stderr, "fUnZip (filter UnZip), version %s\n", VERSION);
- X FPRINTF(stderr, "usage: ... | funzip%s | ...\n", s);
- X FPRINTF(stderr, " ... | funzip%s > outfile\n", s);
- X FPRINTF(stderr, " funzip%s infile.zip > outfile\n", s);
- X FPRINTF(stderr, " funzip%s infile.gz > outfile\n", s);
- X FPRINTF(stderr, "Extracts to stdout the gzip file or first zip entry of\
- X stdin or the given file.\n");
- X exit(3);
- X }
- X
- X /* prepare to be a binary filter */
- X if (argc)
- X {
- X if ((in = fopen(*argv, FOPR)) == (FILE *)NULL)
- X err(2, "cannot find input file");
- X }
- X else
- X {
- X#ifdef DOS_NT_OS2
- X setmode(0, O_BINARY); /* some buggy C libraries require BOTH setmode() */
- X#endif /* call AND the fdopen() in binary mode :-( */
- X if ((in = fdopen(0, FOPR)) == (FILE *)NULL)
- X err(2, "cannot find stdin");
- X }
- X#ifdef DOS_NT_OS2
- X setmode(1, O_BINARY);
- X#endif
- X if ((out = fdopen(1, FOPW)) == (FILE *)NULL)
- X err(2, "cannot write to stdout");
- X
- X /* read local header, check validity, and skip name and extra fields */
- X n = getc(in); n |= getc(in) << 8;
- X if (n == ZIPMAG)
- X {
- X if (fread((char *)h, 1, LOCHDR, in) != LOCHDR || SH(h) != LOCREM)
- X err(3, "invalid zip file");
- X if (SH(h + LOCHOW) != STORED && SH(h + LOCHOW) != DEFLATED)
- X err(3, "first entry not deflated or stored--can't funzip");
- X for (n = SH(h + LOCFIL); n--; ) g = getc(in);
- X for (n = SH(h + LOCEXT); n--; ) g = getc(in);
- X g = 0;
- X encrypted = h[LOCFLG] & CRPFLG;
- X }
- X else if (n == GZPMAG)
- X {
- X if (fread((char *)h, 1, GZPHDR, in) != GZPHDR)
- X err(3, "invalid gzip file");
- X if (h[GZPHOW] != DEFLATED)
- X err(3, "gzip file not deflated");
- X if (h[GZPFLG] & GZPMUL)
- X err(3, "cannot handle multi-part gzip files");
- X if (h[GZPFLG] & GZPISX)
- X {
- X n = getc(in); n |= getc(in) << 8;
- X while (n--) g = getc(in);
- X }
- X if (h[GZPFLG] & GZPISF)
- X while ((g = getc(in)) != 0 && g != EOF) ;
- X if (h[GZPFLG] & GZPISC)
- X while ((g = getc(in)) != 0 && g != EOF) ;
- X g = 1;
- X encrypted = h[GZPFLG] & GZPISE;
- X }
- X else
- X err(3, "input not a zip or gzip file");
- X
- X /* if entry encrypted, decrypt and validate encryption header */
- X if (encrypted)
- X#ifdef CRYPT
- X {
- X ush i, e;
- X
- X if (p == (char *)NULL)
- X if ((p = (char *)malloc(PWLEN+1)) == (char *)NULL)
- X err(1, "out of memory");
- X else if ((p = getp("Enter password: ", p, PWLEN+1)) == (char *)NULL)
- X err(1, "no tty to prompt for password");
- X init_keys(p);
- X for (i = 0; i < RAND_HEAD_LEN; i++)
- X e = NEXTBYTE;
- X if (e != (ush)(h[LOCFLG] & EXTFLG ? h[LOCTIM + 1] : h[LOCCRC + 3]))
- X err(3, "incorrect password for first entry");
- X }
- X#else /* !CRYPT */
- X err(3, "cannot decrypt entry (need to recompile with full crypt.c)");
- X#endif /* ?CRYPT */
- X
- X /* prepare output buffer and crc */
- X outptr = slide;
- X outcnt = 0L;
- X outsiz = 0L;
- X updcrc(NULL, 0L);
- X
- X /* decompress */
- X if (g || h[LOCHOW])
- X { /* deflated entry */
- X int r;
- X
- X if ((r = inflate()) != 0)
- X if (r == 3)
- X err(1, "out of memory");
- X else
- X err(4, "invalid compressed data--format violated");
- X inflate_free();
- X }
- X else
- X { /* stored entry */
- X register ulg n;
- X
- X n = LG(h + LOCLEN);
- X if (n != LG(h + LOCSIZ) - (encrypted ? RAND_HEAD_LEN : 0)) {
- X FPRINTF(stderr, "len %ld, siz %ld\n", n, LG(h + LOCSIZ));
- X err(4, "invalid compressed data--length mismatch");
- X }
- X while (n--) {
- X ush c = getc(in);
- X#ifdef CRYPT
- X if (encrypted)
- X zdecode(c);
- X#endif
- X *outptr++ = (uch)c;
- X if (++outcnt == WSIZE) /* do FlushOutput() */
- X {
- X updcrc(slide, outcnt);
- X if (fwrite((char *)slide, 1,(extent)outcnt,out) != (extent)outcnt
- X && !PIPE_ERROR)
- X err(9, "out of space on stdout");
- X outsiz += outcnt;
- X outptr = slide;
- X outcnt = 0L;
- X }
- X }
- X }
- X if (outcnt) /* flush one last time; no need to reset outptr/outcnt */
- X {
- X updcrc(slide, outcnt);
- X if (fwrite((char *)slide, 1,(extent)outcnt,out) != (extent)outcnt
- X && !PIPE_ERROR)
- X err(9, "out of space on stdout");
- X outsiz += outcnt;
- X }
- X fflush(out);
- X
- X /* if extended header, get it */
- X if (g)
- X {
- X if (fread((char *)h + LOCCRC, 1, 8, in) != 8)
- X err(3, "gzip file ended prematurely");
- X }
- X else
- X if ((h[LOCFLG] & EXTFLG) &&
- X fread((char *)h + LOCCRC - 4, 1, EXTHDR, in) != EXTHDR)
- X err(3, "zip file ended prematurely");
- X
- X /* validate decompression */
- X if (LG(h + LOCCRC) != updcrc(slide, 0L))
- X err(4, "invalid compressed data--crc error");
- X if (LG(h + (g ? LOCSIZ : LOCLEN)) != outsiz)
- X err(4, "invalid compressed data--length error");
- X
- X /* check if there are more entries */
- X if (!g && fread((char *)h, 1, 4, in) == 4 && LG(h) == LOCSIG)
- X FPRINTF(stderr,
- X "funzip warning: zip file has more than one entry--rest ignored\n");
- X
- X exit(0);
- X}
- END_OF_FILE
- if test 14247 -ne `wc -c <'unzip-5.12/funzip.c'`; then
- echo shar: \"'unzip-5.12/funzip.c'\" unpacked with wrong size!
- fi
- # end of 'unzip-5.12/funzip.c'
- fi
- if test -f 'unzip-5.12/mac/thinkc.hqx' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'unzip-5.12/mac/thinkc.hqx'\"
- else
- echo shar: Extracting \"'unzip-5.12/mac/thinkc.hqx'\" \(24586 characters\)
- sed "s/^X//" >'unzip-5.12/mac/thinkc.hqx' <<'END_OF_FILE'
- X(This file must be converted with BinHex 4.0)
- X
- X:$(9ZHQP`,R4SD@jVB`"38Np+5d&)6!#3#%r--XF!N!3"!*!$6I)!!%cb!!!"fJ#
- X3!`)14'9cDh4[F#"'EfaNCA*%!3#3"dakT9J-G@jkDA!ZG'KTEQYMFJ)!N!038Np
- X+5d&)6!%!!*`"!*!$8&*25NY"5%`"!!#F!3#3%kThLmN!N!C2c&4"8NC839)J!3$
- XrN!3!N!49C!#3"&!!N!03!*!,TGA!%+A9`#`!N"-#!!#C"J!8!*!k!r!!N2m!N2m
- X!N2m!N2)9!*!$#!!%rbN"*J#3"4J!N!JM!"3XarP!!)!FM@J!()Ui!*!$#J#3!`J
- X!N!-)!*!&&L0TEQ0XG@4P)$a0B@0)C@&NCA*c2J#3!`&B!!#`"3!!4&*@8J'B!#5
- X+c!!!rc!!YJ#3#%MN!*!$9!!NLX`!!!%!N!-"!*!$$#S!N!0-!#5-!!03i!!!(!"
- X'!!&)390)!*!$%PT26N8!N!-H!!%!!!)!!$)!+NM`!!$rr`)!"#B!+NMN"@eVB@K
- XX!*!$%!!NLX`!!2m`!,B!N!98!#5+c!!!!3#3!`%!N!--+J#3!d`!*)`!!e$J!!!
- XF!%B!!8K"8dJ!N!-5@Np143#3!ai!!3!!!J!!-J!U52!!!2rr!J!%*J!U513&E@Y
- XKD'`!N!-3!#5+c!!!rc!!YJ#3"93!*)V-!!!"!*!$!3#3!``U!*!$6!!NM!!$81!
- X!!"`!4J99ERTTF#!e,M%a-d&&!*!$(J!"!!!#!!!b!#T)m!!!rrm#!!3Q!#T)j!9
- XYDf&SE!#3!a!!*)V-!!$r-!#f!!""8&"-99TTF!!!!J#3!`9!!*!$!J#3!f!!N"-
- X%!*!+CB3!N"%35%%#"!!5!*!$!`#3!f!!N"-%!*!+9a3!N"(f4&)"!J!+!*!$"!#
- X3!f!!N"-%!*!+9+!!N"!"9N4#!`-!#3#3!`8!N!0J!*!6"!#3#Jr#!*!3$@!!+J)
- X%!!%!N!-'!*!$B!#3%`3!N!S)-J#3%%Lm!!!#"!!1!*!$"`#3!f!!N"-%!*!Frrm
- X!!!)%!!X!N!-)!*!$B!#3%`3!N!S+M!#3%4`r2!)%!!`!N!-*!*!$B!#3%`3!N!T
- X1pJ#3%!Db2c`#"!!0!*!'!5!!!#%U!*!$9!#3"J0)!!"Ea!!!5Y!!!#TB!*!9*)V
- X-!3)!%3#3!`S!N!0J!*!6"!#3#P*B!*!3!Hd"r3%#!!B!N!-,!*!$B!#3%`3!N!T
- X1SJ#3%'`!r`!"!J!$!*!$$!#3!f!!N"-%!*!+6rS!N"0)!3)!"!#3!`d!N!0J!*!
- X6"!#3#Nr'!*!3@YB!!3%#!!8!N!-1!*!$B!#3%`3!N!TE#!#3%&C5!CJ"!J!2!*!
- X$$`#3!f!!N"-%!*!+8ii!N"3"!J!3!*!$%!#3!f!!N"-%!*!J!J3!"`#3!a%!N!0
- XJ!*!6"!#3#Y)-!*!3mdJ"!!)%!*!&%J#3!f!!N"-%!*!+9'i!N"!%F!HB!J3!%`#
- X3!a-!N!0J!*!6"!#3#P'@!*!3)&"bE`%#!!)!N!-8!*!$B!#3%`3!N#!$!`!)!*!
- X'%JJ!!'9B!!!&d!#3"M%!N!0ZFJ!!+&!!N"`$!`!8!*!$"J!4!!!JE`#3!aB!d`!
- X$!A`"cJ$6!3i"I!(mP#!!N!Bi!!!Tm+J!+I5S!#Rdb!!Tpe3!+IS%!#RmfJ!TrIJ
- X!+Im5!#Rr5!!U!0)!+J0F!#S&k!!U#(3!+JX#!#S0N!!!+K"N!#S6&J!U%d`!+KC
- X)!#SBd!!U'k!!+K[5!#SEp!!U++J!N,N'`8!!N!d'`6!!N'N'`-3!"X$!!*!$#!!
- X"!%%!J3$"!C!$33'"!F%#!3*"!S%#`3-"!d%$J32""!%%335""-%&!39""B%&`3B
- X""N%'J3E""`%(33H""m%)!3K"#)%)`3N"#8%*J3R"#J%+33U"#X%,!3Y"#i%,`3`
- X"$%%-J3c"$3%033f"$F%1!3j"$S%1`3m"$d%2J3r"!!%!J3'3!i%#!3+"!`%$J33
- X"")%&!3@""J%'J3F""i%)!3L"#3%*J3S"#S%,!3Z"$!%-J3d"$B%1!3k"$`%2J4!
- X"%)%4!4'"%J%5J4-"%i%8!45"&3%9J4B"&S%A!4H"'!%BJ4N"'B%D!4U"'`%EJ4`
- X"()%G!4f"(J%HJ4m"(i%!!##3!h0VDA"`D@jR1L!P,6)bFb!JEQ9PC#!PFb"MEfe
- X`BA3Z)(BPG5iPG5!SBf&Z)'4[)(BPG5iPG5N+!##3!h0VDA"`D@jR1L!P,6)bFb!
- XJBfpYF(*PFh0TEfiJE@9dD'pN)#9N#J!!*A-k)#"LB@3JCQPXC@jKE@8JE'9ZCh4
- XS)#JPFbN+!!!PFcSJ)'*KC#"PH(4bB5"QD@9XC#"XC@jRG'JJ+#9c+3S!CQPXC5!
- XM*@3k)#"LB@3JHQP`CQPXC5"[CQCcCA3J+#9c+6SJ)#9XC!S!*6KcD@jR1L!P,6)
- XbFb!J*A-PF`!PFb!J*A-k)#!PE'3JBRPdCA-JFQ9aG@PbC@3JG'mJG@jMEfe`FQ9
- XcFb"dEb!PE(8JBRPdCA-l#L#3"#9c)*!'Fh9`F'pcC@3JG'mJFQ9aG@PbC5!PE(8
- XJBRPdCA-PFb9c*A-+!!!+*A-k)#"LB@3JCQPX3!!!EfeYC@jd)'aPEQGdD!S!!'a
- X[Bf&X)'KPB@4PFJS!c(q8!!c(q8!!!!%!!2q3#+Te@qi!'!!"!!"8FPT*8%N
- X!#ATTF'PZCQmZB`!!!D5A`JQNPm)*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9
- XbF`#3!`'UG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN!"h9ZHQP`,QJ!!!+N-adpT$-
- XG2D3c(6d!&J!#!!"5f9084%N""h0dC'P[,QJ!!!1N,ErlT#frqk3Y[rX!'!!#!!"
- X5f90*@N8!#(0THQ9IG#jS!(-!!U3VMFUN+ih+T#Z0bJ!@!!)!!&,C3e4C8!%(Bh4
- XjF'8ZD!!!!U3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!U3Y`,1
- XN,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ!F`!#T#apRk3XICqN,(fI!"J
- X!!J!!8YP-58e*!3KXD@eTG(-ZD!"c!!+N,F"!T#h!3+3Y`%!!'!!#!!"5f9084%3
- X"#(0dC'4PCLjS!(-!!k3Y`#+N,F!LT#h!)J!B!!)!!&,C9d0)33!*Gf0SBA*IG#j
- XS!!!#T#j4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3KcG'4XD@)ZD!#3!`+N,E[0T#f
- XlcD3YZmd!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!$!U3arj!!T$(rN!#N-Iq3!!!
- X@!!)!!&,C4N019!%(CQ0ZG'`ZD!!!!UNe"e5T03G8U68(9!!B!!%!!&4b68&$8`!
- X*E@&MFh4KG#jS!!!$T#h!LD3Y`)QN,F#*!"B!!J!!8YP858e&!3CdD@eP,QJ!,J!
- X#U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-Ij3!!8,-I
- Xj3!!!!3!!rj!)URC5B!!B!!%!!&4b49K88J!*CAKdFQ&MG#jM!!!"T*I##D5A`JQ
- XNPm)*!"S!!J!!8aj0380)!3T0B@0)C@&NCA*c!*!$!DTeA+5UG9bNUR9FT!!@!!%
- X!!&4b98jD53!(G@jkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4
- XND@mZD!!!!k3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ!F`!#T#Z
- X0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#N+ibJ!"B
- X!!J!!8YP&8P*1!3GPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP69&**!3K
- XcG(*TEQFZD!"c!!+N,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'aTE@PdFbjS!(-
- X!!U3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h!)U3Y`#+
- XN,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d!'!!#!!"
- X5f9084%`"#(0dC'aTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP(6J%)FfP
- XREQ&X,QJ!N!-#T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfjdE#jS!!!
- X#U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#*T#h!LD3
- XY`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!"!!"8FNe
- X"3d3!#'eKBf4TFLjS!*!$!DTP-PUUC6*DUQ8b@J!@!!%!!&4b3e*C8!!(Bh*jF(3
- XZD!!+!"3XarP!!"3XarP!!!!"!!$rN!LUG9[#!"J!!3!!9(*'58a&!!PQD@aPAfP
- X[,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9
- XFT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B
- X!!J!!8YP69%4*!3GcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!K
- XcDATPAh3ZD!"c!!+N+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+
- XN+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-
- X!'!!#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P
- X053%)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@B
- XZD!"c!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83f
- XN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J
- X!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C
- X$6P3""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3
- XZD!!!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G
- X5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!N!-"UQ8b@UTP-PUUC6*D!"B!!3!
- X!9(*$8PP3!!GMFRP`G#jS!!!"UH+c2URLXckTiV-q!"J!!3!!9(*838*-!!KdB@*
- XXCA-ZD!!!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!)U68(8J!D!!%!!&4b68&$8`!,E@&
- XMFf0bC@9Z,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-
- X!N!-"T"Bj`+3@1F#N&MR!!"S!!J!!8ap498P$!3Y4G@PMDd4bBAFZD!!!!D3c(6f
- XN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4ND@mZD!!!!U3Y[rZN,ErlT#frq`!B!!)
- X!!&,C8dPD43!)FfPkC9pd,QJ!,J!"T#fm%k3Y["1N,E`6!"J!!J!!8YP69%4"!3K
- XcG'4KFQFZD!!Z!!'N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN"#(0dFQPZCbjS!#i
- X+!"3XarP!!"3XarP!!!!"!!$rN!LT03G5!"J!!3!!9(*03806!!PYB@0cG'&d,Q-
- X!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"T&"Z@k4
- X3EPZN8'jE!"J!!J!!8h*3390$!3K`BA0MB@`ZD!"c!!'N,F#cT#h!Xk3Y`,-!'!!
- X#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!
- X)FfPkC9pd,QJ!F`!"U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ
- X!!!+N,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!!8,-Ij3!!8,-I
- Xj3!!!!3!!rj!)T*ceA`!B!!)!!&0k68&$9!!)6@&M9(*KF(-!!!S!c(q8!!c
- X(q8!!!!%!!2q3#+Ne"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLjM!()!!D5A`JQNPm)
- X*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'N&MR!T"Bj`+3@1F!!'!!
- X#!!"6(d958Nm"#%9bFQpbFbjS!(-!!D3c,TUN-bkDT$-ZQJ!@!!)!!&-I4NP-43%
- X(4QPXCA-ZD!!!!D3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!D3
- XZ83fN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!F`!#T#frqk3Y[rZN,Er
- Xl!"J!!J!!8YP659T&!!KcDATPAh3ZD!"c!!+N,F!LT#h!)U3Y`#)!'!!#!!"5f9G
- X$5%%!#AGMD'&bAh3ZD!!!!D3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@j
- XR,QJ!N!-"U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-I
- Xj3!!8,-Ij3!!!!3!!rj!)UQlrNJ!@!!%!!&4b68&83`!(E@&dBfJZB`!!!D5A`JQ
- XNPm)*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'UG9bNUR9FT+TeA+3
- X!&J!"!!"8FP91@NN!"h9ZHQP`,QJ!!!+N-adpT$-G2D3c(6d!&J!#!!"5f9084%N
- X""h0dC'P[,QJ!!!1N,ErlT#frqk3Y[rX!'!!#!!"5f90*@N8!#(0THQ9IG#jS!(-
- X!!U3VMFUN+ih+T#Z0bJ!@!!)!!&,C3e4C8!%(Bh4jF'8ZD!!!!U3VM+#N+ibJT#Z
- X-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!U3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4
- X553%)Fh4bD@jR,QJ!F`!#T#apRk3XICqN,(fI!"J!!J!!8YP-58e*!3KXD@eTG(-
- XZD!"c!!+N,F"!T#h!3+3Y`%!!'!!#!!"5f9084%3"#(0dC'4PCLjS!(-!!k3Y`#+
- XN,F!LT#h!)J!B!!)!!&,C9d0)33!*Gf0SBA*IG#jS!!!#T#j4$D3Z83fN,P%0!"J
- X!!J!!8YP69%4-!3KcG'4XD@)ZD!#3!`+N,E[0T#flcD3YZmd!'!!#!!"5f90*4di
- X"#(0TCfjKE#jS!*!$!U3arj!!T$(rN!#N-Iq3!!!@!!)!!&,C4N019!%(CQ0ZG'`
- XZD!!!!UNe"e5T03G8U68(9!!B!!%!!&4b68&$8`!*E@&MFh4KG#jS!!!$T#h!LD3
- XY`)QN,F#*!"B!!J!!8YP858e&!3CdD@eP,QJ!,J!#U68(8UNe"e+T03G5!"J!!3!
- X!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!)UP'S)J!B!!%
- X!!&4b49K36!!*CAK`E'pNC5jM!!!"T*I##D5A`JQNPm)*!"S!!J!!8aj0380)!3T
- X0B@0)C@&NCA*c!*!$!DTeA+5UG9bNUR9FT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!
- X!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4ND@mZD!!!!k3Y[rZN,ErlT#f
- Xrq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ!F`!#T#Z0bU3VMFUN+ih+!"B!!J!!8YP
- X$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#N+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbj
- XS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP69&**!3KcG(*TEQFZD!"c!!+N,(fIT#a
- XpRk3XICm!'!!#!!"5f8a*68N"#'aTE@PdFbjS!(-!!U3Y`%#N,F"!T#h!3!!B!!)
- X!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!P
- XhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!
- X$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP(6J%)FfPREQ&X,QJ!N!-#T$(rN!#N-Iq
- X3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfjdE#jS!!!#U68(9+Ne"e5T03G8!"J!!3!
- X!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4
- XTE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLjS!!!+!"3
- XXarP!!"3XarP!!!!"!!$rN!LTfrqS!"J!!3!!9(*&6PC"!!PPERCKFQGc,Q-!!!'
- XNPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9FT+TeA+5
- XUG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B!!J!!8YP
- X69%4*!3GcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!KcDATPAh3
- XZD!"c!!+N+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+N+ibJT#Z
- X-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!#!!"
- X5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P053%)E'P
- XYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"c!!1
- XN,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%0T#j
- X4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!!8YP
- X658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3""fC
- XMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!!!k3
- XY`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G5U68(8J!
- XB!!%!!&4b68&$4!!)E@&MC'Pb,QJ!!!S!c(q8!!c(q8!!!!%!!2q3#+ME6B3
- X!'J!"!!"8FP918N8!#R9ZFQ9NG@0P,Q-!N!-"T*I##D5A`JQNPm)*!"S!!J!!8aj
- X0380)!3T0B@0)C@&NCA*c!*!$!DTeA+5UG9bNUR9FT!!@!!%!!&4b98jD53!(G@j
- XkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4%53%(Fh4ND@mZD!!!!k3Y[rZ
- XN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ!F`!#T#Z0bU3VMFUN+ih+!"B
- X!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#N+ibJ!"B!!J!!8YP&8P*1!3G
- XPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP69&**!3KcG(*TEQFZD!"c!!+
- XN,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'aTE@PdFbjS!(-!!U3Y`%#N,F"!T#h
- X!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h!)U3Y`#+N,F!L!"J!!J!!8YP
- XA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d!'!!#!!"5f9084%`"#(0dC'a
- XTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP(6J%)FfPREQ&X,QJ!N!-#T$(
- XrN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfjdE#jS!!!#U68(9+Ne"e5T03G
- X8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#*T#h!LD3Y`)N!&J!#!!"5f94
- X*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLj
- XS!!!+!"3XarP!!"3XarP!!!!"!!$rN!LUG9[3!"S!!3!!9(*96P0)!!TeER0SFQP
- XZDbjM!*!$!D5A`JQNPm)*T*I##3!D!!)!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'
- XUG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN!"h9ZHQP`,QJ!!!+N-adpT$-G2D3c(6d
- X!&J!#!!"5f9084%N""h0dC'P[,QJ!!!1N,ErlT#frqk3Y[rX!'!!#!!"5f90*@N8
- X!#(0THQ9IG#jS!(-!!U3VMFUN+ih+T#Z0bJ!@!!)!!&,C3e4C8!%(Bh4jF'8ZD!!
- X!!U3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*bEQmZD!!!!U3Y`,1N,F#cT#h
- X!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ!F`!#T#apRk3XICqN,(fI!"J!!J!!8YP
- X-58e*!3KXD@eTG(-ZD!"c!!+N,F"!T#h!3+3Y`%!!'!!#!!"5f9084%3"#(0dC'4
- XPCLjS!(-!!k3Y`#+N,F!LT#h!)J!B!!)!!&,C9d0)33!*Gf0SBA*IG#jS!!!#T#j
- X4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3KcG'4XD@)ZD!#3!`+N,E[0T#flcD3YZmd
- X!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!$!U3arj!!T$(rN!#N-Iq3!!!@!!)!!&,
- XC4N019!%(CQ0ZG'`ZD!!!!UNe"e5T03G8U68(9!!B!!%!!&4b68&$8`!*E@&MFh4
- XKG#jS!!!$T#h!LD3Y`)QN,F#*!"B!!J!!8YP858e&!3CdD@eP,QJ!,J!#U68(8UN
- Xe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!!!#J!8,-Ij3!!8,-Ij3!!!!3!
- X!rj!)URC%R!!@!!%!!&4b98jD53!(G@jkDA!ZB`!!!D5A`JQNPm)*T*I##3!D!!)
- X!!&-H68&$5!%+6@&M5'9KC'9bF`#3!`'UG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN
- X!"h9ZHQP`,QJ!!!+N-adpT$-G2D3c(6d!&J!#!!"5f9084%N""h0dC'P[,QJ!!!1
- XN,ErlT#frqk3Y[rX!'!!#!!"5f90*@N8!#(0THQ9IG#jS!(-!!U3VMFUN+ih+T#Z
- X0bJ!@!!)!!&,C3e4C8!%(Bh4jF'8ZD!!!!U3VM+#N+ibJT#Z-S!!@!!)!!&,C49*
- X56J%(CA*bEQmZD!!!!U3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ
- X!F`!#T#apRk3XICqN,(fI!"J!!J!!8YP-58e*!3KXD@eTG(-ZD!"c!!+N,F"!T#h
- X!3+3Y`%!!'!!#!!"5f9084%3"#(0dC'4PCLjS!(-!!k3Y`#+N,F!LT#h!)J!B!!)
- X!!&,C9d0)33!*Gf0SBA*IG#jS!!!#T#j4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3K
- XcG'4XD@)ZD!#3!`+N,E[0T#flcD3YZmd!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!
- X$!U3arj!!T$(rN!#N-Iq3!!!@!!)!!&,C4N019!%(CQ0ZG'`ZD!!!!UNe"e5T03G
- X8U68(9!!B!!%!!&4b68&$8`!*E@&MFh4KG#jS!!!$T#h!LD3Y`)QN,F#*!"B!!J!
- X!8YP858e&!3CdD@eP,QJ!,J!#U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0
- XNDA)ZD!#3!`'UC6*DUQ8b@UTP-PS!&J!"!!"8FN05@9!!"f0bHA"d,QJ!!!'UGMZ
- X@URBlPUTf1jB!'!!"!!"8FPC&8P-!#ACPFR0TEfiZD!!+!"3XarP!!"3XarP!!!!
- X"!!$rN!LU9A9Q!"J!!3!!9(**6NC-!!PTEQCXBA4P,Q-!!!'NPm)*T*I##D5A`JN
- X!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UP&M"UT4B`DU8@-'!"J!!3!!9(*
- X*6NC-!!PTEQCXBA4P,QJ!!!+UG9bNUR9FT+TeA+3!&J!"!!"8FP91@NN!"h9ZHQP
- X`,QJ!!!1N-adpT$-G2D3c(6d!&J!#!!"5f9084%N""h0dC'P[,QJ!!!5N,ErlT#f
- Xrqk3Y[rX!'!!#!!"5f90*@N8!#(0THQ9IG#jS!*!$!k3VMFUN+ih+T#Z0bJ!@!!)
- X!!&,C3e4C8!%(Bh4jF'8ZD!!!!k3VM+#N+ibJT#Z-S!!@!!)!!&,C49*56J%(CA*
- XbEQmZD!!!!k3Y`,1N,F#cT#h!X`!B!!)!!&,C8e4553%)Fh4bD@jR,QJ!N!-$T#a
- XpRk3XICqN,(fI!"J!!J!!8YP-58e*!3KXD@eTG(-ZD!#3!`1N,F"!T#h!3+3Y`%!
- X!'!!#!!"5f9084%3"#(0dC'4PCLjS!*!$"+3Y`#+N,F!LT#h!)J!B!!)!!&,C9d0
- X)33!*Gf0SBA*IG#jS!!!$T#j4$D3Z83fN,P%0!"J!!J!!8YP69%4-!3KcG'4XD@)
- XZD!#3!`1N,E[0T#flcD3YZmd!'!!#!!"5f90*4di"#(0TCfjKE#jS!*!$!k3arj!
- X!T$(rN!#N-Iq3!!!@!!)!!&,C4N019!%(CQ0ZG'`ZD!!!!kNe"e5T03G8U68(9!!
- XB!!%!!&4b68&$8`!*E@&MFh4KG#jS!!!%T#h!LD3Y`)QN,F#*!"B!!J!!8YP858e
- X&!3CdD@eP,QJ!,J!$U68(8UNe"e+T03G5!"J!!3!!9(*0380%!!KYB@0NDA)ZD!#
- X3""3XarP!!"3XarP!!!!"!!$rN!LNR29b!"J!!J!!8hT03808!!P0B@08FQ&`Fc)
- X!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!)UNYjqJ!D!!%!!&4b68&$93!+E@&MG@jkDA!
- XZB`#3!`'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9
- XFT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B
- X!!J!!8YP69%4*!3GcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!K
- XcDATPAh3ZD!"c!!+N+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+
- XN+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-
- X!'!!#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P
- X053%)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@B
- XZD!"c!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83f
- XN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J
- X!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C
- X$6P3""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3
- XZD!!!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G
- X5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!N!-"T"Bj`+3@1F#N&MR!!"B!!J!
- X!8ap88N&3!3G8FQ&`FbjS!!!"T"Bj`+3@1F#N&MR!!"J!!J!!8ap@38a9!3K@B@a
- XeCA-ZD!#3!`+NU-65T+M%dU5Sa0)!&J!#!!"6FP0"6N8""P0"6N8ZD!"S#J!8,-I
- Xj3!!8,-Ij3!!!!3!!rj!)URBr8J!8!!%!!&4b68&$,J!&E@&M,Q-!!!'NPm)*T*I
- X##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdKPB@4PFR-!N!-"UR9FT+TeA+5UG9bN!"B
- X!!3!!9(*96PT*!!GeERTTF#jS!!!#T$-G2D3c(6fN-adp!"B!!J!!8YP69%4*!3G
- XcG'4TEbjS!!!$T#frqk3Y[rZN,Erl!"J!!J!!8YP659T&!!KcDATPAh3ZD!"c!!+
- XN+ih+T#Z0bU3VMFS!&J!#!!"5f808@9!""f0dHA"P,QJ!!!+N+ibJT#Z-S+3VM+!
- X!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN
- X"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P053%)E'PYDA4c,QJ
- X!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"c!!1N,F!LT#h
- X!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%0T#j4$3!B!!)
- X!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!!8YP658G1!3K
- XcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3""fCMER4X,QJ
- X!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!!!k3Y`)QN,F#
- X*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G5U68(8J!B!!%!!&4
- Xb68&$4!!)E@&MC'Pb,QJ!!!S!c(q8!!c(q8!!!!%!!2q3#+Te@l3!&J!"!!"
- X8FN05@9!!"f0bHA"d,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne"3dJ"#NeKBdK
- XPB@4PFR-!N!-"UH+dG+RLY(5TiV4d!"3!!3!!9(*D59!Z!!9kDA!ZD!!!!UTeA+5
- XUG9bNUR9FT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!!!k3c(6fN-adpT$-G23!@!!)
- X!!&,C8e4%53%(Fh4ND@mZD!!!"+3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfP
- XkC9pd,QJ!F`!$T#Z0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!$T#Z
- X-S+3VM+#N+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbjS!!!$T#h!Xk3Y`,1N,F#c!"J
- X!!J!!8YP69&**!3KcG(*TEQFZD!"c!!1N,(fIT#apRk3XICm!'!!#!!"5f8a*68N
- X"#'aTE@PdFbjS!(-!!k3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ
- X!F`!%T#h!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!1N,P%0T#j
- X4$D3Z83d!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!$!k3YZmfN,E[0T#flc3!B!!)
- X!!&,C8dP(6J%)FfPREQ&X,QJ!N!-$T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj
- X8!3GQBfjdE#jS!!!$U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ
- X!!!5N,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!1T03G5U68(8UN
- Xe"e)!'!!"!!"8FNe"3d3!#'eKBf4TFLjS!*!$!DTP-PUUC6*DUQ8b@J!@!!%!!&4
- Xb3e*C8!!(Bh*jF(3ZD!!`!"3XarP!!"3XarP!!!!"!!$rN!LU8D&f!"3!!J!!8Y9
- X"6P0*!!4"6P0*!(S!N!5N+ih+T#Z0bJ!@!!)!N!8"!*!$#!4YB@PZ)*!$!!+N+ib
- XJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!
- X#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3XICqN,(fIT#apR`!B!!)!!&,C6%P053%
- X)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"
- Xc!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%
- X0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!
- X!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3
- X""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!
- X!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'PYC5jS!#i!!UNe"e+T03G5U68
- X(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!!!S!c(q8!!c(q8!!!!%!!2q3#+T
- Xf4*`!&J!"!!"8FP91@NN!"h9ZHQP`,Q-!!!'NPm)*T*I##D5A`JN!'J!#!!"6(Ne
- X"3dJ"#NeKBdKPB@4PFR-!N!-"UR9FT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERT
- XTF#jS!!!#T$-G2D3c(6fN-adp!"B!!J!!8YP69%4*!3GcG'4TEbjS!!!$T#frqk3
- XY[rZN,Erl!"J!!J!!8YP659T&!!KcDATPAh3ZD!"c!!+N+ih+T#Z0bU3VMFS!&J!
- X#!!"5f808@9!""f0dHA"P,QJ!!!+N+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9
- XbFQj[,QJ!!!+N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN"#(0dFQPZCbjS!(-!!U3
- XXICqN,(fIT#apR`!B!!)!!&,C6%P053%)E'PYDA4c,QJ!F`!#T#h!3+3Y`%#N,F"
- X!!"J!!J!!8YP69%4%!3KcG'4NC@BZD!"c!!1N,F!LT#h!)U3Y`#)!'!!#!!"5f9G
- X$5%%!#AGMD'&bAh3ZD!!!!U3Z83fN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'P
- XL,QJ!N!-#T#flcD3YZmfN,E[0!"J!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`+N-Iq
- X3!+3arj!!T$(rN!!!&J!#!!"5f8C$6P3""fCMER4X,QJ!!!+T03G8U68(9+Ne"e3
- X!'!!"!!"8FNe"3e-!#@eKBh0dBA3ZD!!!!k3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P
- X043%'G'PYC5jS!#i!!UNe"e+T03G5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ
- X!N!-"UQ8b@UTP-PUUC6*D!"B!!3!!9(*$8PP3!!GMFRP`G#jS!!!"URBlPUTf1jD
- XUGMZ@!"J!!3!!9(*@49*6!!PfCA*cD@pZ,QJ!#J!8,-Ij3!!8,-Ij3!!!!3!!rj!
- X)UP9eCJ!B!!%!!&4b58j'6!!*D@jQE'&dC5jM!!!"T*I##D5A`JQNPm)*!"S!!J!
- X!8aj0380)!3T0B@0)C@&NCA*c!*!$!DT4B`DU8@-'UP&M"J!B!!%!!&4b58j'6!!
- X*D@jQE'&dC5jS!!!#UR9FT+TeA+5UG9bN!"B!!3!!9(*96PT*!!GeERTTF#jS!!!
- X$T$-G2D3c(6fN-adp!"B!!J!!8YP69%4*!3GcG'4TEbjS!!!%T#frqk3Y[rZN,Er
- Xl!"J!!J!!8YP659T&!!KcDATPAh3ZD!#3!`1N+ih+T#Z0bU3VMFS!&J!#!!"5f80
- X8@9!""f0dHA"P,QJ!!!1N+ibJT#Z-S+3VM+!!&J!#!!"5f8958Ni""f9bFQj[,QJ
- X!!!1N,F#cT#h!Xk3Y`,-!'!!#!!"5f9088NN"#(0dFQPZCbjS!*!$!k3XICqN,(f
- XIT#apR`!B!!)!!&,C6%P053%)E'PYDA4c,QJ!N!-$T#h!3+3Y`%#N,F"!!"J!!J!
- X!8YP69%4%!3KcG'4NC@BZD!#3!`5N,F!LT#h!)U3Y`#)!'!!#!!"5f9G$5%%!#AG
- XMD'&bAh3ZD!!!!k3Z83fN,P%0T#j4$3!B!!)!!&,C8e4%6!%)Fh4NE'PL,QJ!N!-
- X$T#flcD3YZmfN,E[0!"J!!J!!8YP658G1!3KcD@GZB@`ZD!#3!`1N-Iq3!+3arj!
- X!T$(rN!!!&J!#!!"5f8C$6P3""fCMER4X,QJ!!!1T03G8U68(9+Ne"e3!'!!"!!"
- X8FNe"3e-!#@eKBh0dBA3ZD!!!"+3Y`)QN,F#*T#h!L3!@!!)!!&,C9%P043%'G'P
- XYC5jS!#i!!kNe"e+T03G5U68(8J!B!!%!!&4b68&$4!!)E@&MC'Pb,QJ!N!38,-I
- Xj3!!8,-Ij3!!!!3!!rj!)T*ceFJ!B!!)!!&0k68&$9!!*6@&M9(*KF(-b!!S!c
- X(q8!!c(q8!!!!%!!2q3#+T,HIS!'J!"!!"8FNe"3e8!#QeKBh9ZHQP`,Q-!N!-
- X"T*I##D5A`JQNPm)*!"S!!J!!8aj0380)!3T0B@0)C@&NCA*c!*!$!DTeA+5UG9b
- XNUR9FT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,
- XC8e4%53%(Fh4ND@mZD!!!!k3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9p
- Xd,QJ!F`!#T#Z0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3
- XVM+#N+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!
- X!8YP69&**!3KcG(*TEQFZD!"c!!+N,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'a
- XTE@PdFbjS!(-!!U3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!
- X$T#h!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3
- XZ83d!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,
- XC8dP(6J%)FfPREQ&X,QJ!N!-#T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3G
- XQBfjdE#jS!!!#U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1
- XN,F#*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)
- X!'!!"!!"8FNe"3d3!#'eKBf4TFLjS!*!$!D3@1F#N&MR!T"Bj`!!@!!)!!&-I9&*
- X"8!%(9(*KF(-ZD!!!!D3@1F#N&MR!T"Bj`!!B!!)!!&-I9N&-93%)9Q&XG@9c,QJ
- X!N!-#T+M%dU5Sa0+NU-65!"B!!J!!8h*638j&!3C638j&,QJ!D+TeA+5UG9bNUR9
- XFT!!@!!%!!&4b98jD53!(G@jkDA!ZD!!!!U3c(6fN-adpT$-G23!@!!)!!&,C8e4
- X%53%(Fh4ND@mZD!!!!k3Y[rZN,ErlT#frq`!B!!)!!&,C8dPD43!)FfPkC9pd,QJ
- X!F`!#T#Z0bU3VMFUN+ih+!"B!!J!!8YP$9&P3!3GMG(P`C5jS!!!#T#Z-S+3VM+#
- XN+ibJ!"B!!J!!8YP&8P*1!3GPFR*ZEbjS!!!#T#h!Xk3Y`,1N,F#c!"J!!J!!8YP
- X69&**!3KcG(*TEQFZD!"c!!+N,(fIT#apRk3XICm!'!!#!!"5f8a*68N"#'aTE@P
- XdFbjS!(-!!U3Y`%#N,F"!T#h!3!!B!!)!!&,C8e4%4!%)Fh4NC'9Q,QJ!F`!$T#h
- X!)U3Y`#+N,F!L!"J!!J!!8YPA3dK"!!PhBfKKFPpd,QJ!!!+N,P%0T#j4$D3Z83d
- X!'!!#!!"5f9084%`"#(0dC'aTBLjS!*!$!U3YZmfN,E[0T#flc3!B!!)!!&,C8dP
- X(6J%)FfPREQ&X,QJ!N!-#T$(rN!#N-Iq3!+3arj!!!"B!!J!!8YP'3dj8!3GQBfj
- XdE#jS!!!#U68(9+Ne"e5T03G8!"J!!3!!9(*03806!!PYB@0cG'&d,QJ!!!1N,F#
- X*T#h!LD3Y`)N!&J!#!!"5f94*688""R4TE@8ZD!!Z!!+T03G5U68(8UNe"e)!'!!
- X"!!"8FNe"3d3!#'eKBf4TFLjS!!"`D@jR#J"PFR*[FL"E*A0G1L!JBQ&N)'9iG(*
- XK)'CTC@aN)%053b!P-$KXH#!SFfK[G@aN!*!$B!#3!h!!N!G3!*!$)!!F2c`!!DR
- X`"GBr2!!"UI!&kMmm!!'Tm!Aq2c`!!DR`"KSr2!!"UI!'8$mm!!'Tm!C`2c`!!DR
- X`"T)r2!!"UI!'XMmm!!'Tm!NX2c`!!DR`!*!$"!#3"`3!N!F%!*!'#6i!N!-+!*!
- XE&8*i#NUGcNkk!&41ZJ"N,$a*6N4B6VS(1NIkrmSQM%IkrmJQK%kk!'a1ZJ1L6VS
- X(mNkk!0j1ZJ#U3QG)H2rr5'm!"%KA5(J!!5)krl*1ZJ916V8B!#"Y!'a1N!#Tp&(
- Xi#Pj`!%kk"-CR"NU3!'F#S%P1G5!i#RKQ$L`m@Np148kk"Y)J$'!'*N!J+`!J4rV
- XrB#D!6R8X2%4"9%&1ZJDf)%`LH!N))!5J,Nkk"fT(q[p)*S3X2&088P01ZJDB4rV
- Xr0#D-,$a%8N9-6VS'L#"-)!4R$%kk!Ui%J!#3!`aQp%lk"c419[rD3IJ*%#*2F##
- XJ,R!"d"&D%G,!3IS!%R!&S#j9MdK[!!+TPdjH6R8ZFR0bB`"(qJIf*VJ+I#"i#RL
- Xar!#3"'F)4rS(jLDS!"B[1!U!CJ*BMdje@)p)jrri2Lm!1&(i#PjJ#PQ2,`LTT5!
- XIS%!`"dkk!pCRE%IkrTiQL#!3Cq3L3%U4CLkJ+D"*,$a$8N9-6VS&hQG-2Lm!1#"
- X-)!4R$%kk!0S%J!#3!`aQp%kk"S*1ZJ*m)(VqB+"T#!!!"fB%S'5J+8kk!ZBLE`!
- XdABN[53!f60mIre525MJ",@F#UIp1GA!2UFPBMb"[!!3-8%ljCJi`)%kk!e*Rk+!
- XU6VS#J#kI6R91ZJFU6VS!$Nkk"TK1G8kk"aa1G5!k"a"Q!!!b)(J#TR!-d*!!X,J
- X#UQBL)(J+l+!P)&!L5#)BB!T"k!!)G!'%'0$#8FRrp*!!L0#*CJ*1G5)!S#iJH!V
- XX)!'J*#*36qrr`#"23UJ!%M&T!!3!&U!93UG)D3!-)%qTmM)B6VS#lL4BeF%d'#)
- XBEMjR)P*"Ca*53@FQ9N&R!!#Z8N&R!!#B6R8b+2rd6VS#r0056R8b+2rd6VS#c00
- X56R8b+2rd6VS#dY1Urrj1G8kk!T)b+3!-5QN!#QBJ9%*U%&*#CRK`BkR*8N*Qq00
- X56R91ZJ+8dUN!$Y056R91ZJ+XdUN!$Ja#rraRBQeS8N*Q"0056R9$p4J#[P&Qc!a
- XK2caQaP*#CJB+DJ!Arrib)9K")RVmk0+4NNV68Nje-LMrp%kk!QM5MG1Urrj1G6)
- XSrr41ZJ)ddSh6U[rq6R91ZJ)SdUN!$Y+0dkVrrNjedSh6U[rq6R9$p4J#[P&Qm!a
- XK2caQkJTU!!2rr$)KA%%LH[b-dT(5U[rqNNSe3Irq0,a1F8je-KK1ZJ(J4I8B!0A
- XB0"KR-L)BEL4R$P*"CK3b+2rd6VS"k'!B-LMrp%kk!ETJ$M)Srr41ZJ(#B!C1ZJ(
- XLdSh6NNje)KK1ZJ(@de*1G5"kr"BJ1[`@5UJ!!'FS-LJ!+'FL*#J!'&P#3qd!%02
- XS!!69@6,m2ca#'4,S!$dbr+R`88&Ql%(S!%!%J!#3!d"QaNje)(VldL!kqp*brh3
- X!5UJ!!'FD[LJ!2@B80LJ!+%M$C`c8Jl+S!!4P"#)S!!4"k!"!")!!N!0!CY3JH[Z
- XZ)&"`%*+!jSN``HD+!%+!!$$#6R8J8()!-KJ`'!*!IrrRL82e'#!d%@!5)LN!"*+
- X)-X%br$mm-X)br+R`8FMrl'!f)"#J95"!FJ!b'$!B!N"rrqH*3r8B)!aT6[N!!QF
- XB0#N!"'!1-K&)F"!!-X)br%lj)Yp4b2r`)$S!#L"!CJ*K"Nl3!*!%-$bJ[D0')JJ
- X`2+LITdDbL'F'3IS!,'!J$$J!"!%[C3C"qJ!LB")-1!!#!5pP"N(k!"KJ"%(k!"j
- X$q[r#)SK1GD#p6RAdq%je6RS!!JM!!!01H`!#6R9CMbmm3dp%46m!UD!JAe$i#Pi
- XJ#%je+(VkUL*-Np6PJGR"dp41G5KkqT,#r!"!)M3B'#KkqTV5P%je+(VkIX,m!%!
- XL0"J)NVVkJNje+(VkE-,m!%!L0"J3dVVkE%je+(Vk@X,m!%!L0"J%"S%!N!-36R9
- X1Z[qL-LN!$%TT!!TQ"NkkrlKJ"%kkrpE5U3!16R8JAc)B0"L`@&I*rrT+3QIq6[!
- XJr#"I-KJd',#B9mRrqNT#Crj1m#$k)&mb'$3BX%*Z#T!!3@d'd%""m!!#-""RrNl
- X`!!!J,`!%,d%!"#)[!!J[A`!%51Fm!#3!*J&)3X6$+!!U!8K&b-A84%K#N!2!`G#
- X#60m!2#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!*a-h`#-)Kp1G5![!!3[33!
- X%)Lm!##pI!!4)jc%!6VS!I#!"60m!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%k
- Xk!#a-h`#-)Kp1G5![!!3[33!%)Lm!##pI!!4)jc%!6VS!$#!"60m!M#)I6R9+J'S
- XF5S&U$%5!4)&1ZJ!J4)&1G85!6VS!&N5!4)&1G8U"DJT%J8kk!!C%J%je,M`!!2r
- XrXS"M"L)!F!"1GE#(BJb!`8K!-J"#3%K!6R@bKf)D,J"#3%K!J-&)3%K(2J")4il
- X"-!G)4c)(6R8N!#B"iSMLLE+(B[L!`F#(-J2#`#i$5%I1`%K(dSGP#*+#BJ4%J8j
- Xe8d"Jj(i!8IJ+APQ2,`Br"kQJ)"pR!!#Z*N"CMbm,UD8Q(b!,+!054qp(8NFk"f!
- X@@Bm["Mm(UD!J(fF!!)K54`D%!!"rrP@2,`#TTM!I#!!!"@EF82J+AXp&QNGQ(#!
- X$S%![#kQL)"0R!!"D,`ZTNLK6)%ZJ+A!"6R8J"+%H)!KR!!"#+%J[#kQL)"0R!!!
- Xf)%XJ!f!B@Bm["Mm(UD!J(fF!!#*54b"!)$`!!(rq,`JJ8#*-fF#J,UQM8FhrfTR
- X%*Na`!8je)%Y+4@B%S#01GD!I6R8b2+R`3rVj%%kk!,!b2+Rb3rVj[%kk!+3b2+R
- Xa3rVjLNkk!*Jb2+Rc3rVjT#"i#RLar!#3"'F3)#J!&QF+)#J!('F86[S!G%kk!(!
- Xb2+Rd3rVjG%lk!'41ZJ"J-MbTp%2kqA*1qJ"8,`JJE`!),fJ!!J!))$S!GQB!!$`
- XJH!+QF!c3N!#`Z!+UCLa1ZJ"Q-MbTm%kk!%)b2+Ra6VS!1M)mUI*1ZJ!b-MbTmdk
- Xk!#Sb2+Rd6VS!)L"I6R8`!D&'*%K`$+%H-!'J4c$m6VNJb6$m6[NJbNje-!'K4L*
- XS!!LJ(c!")%QJ4dje!*!)6R8J1[rdC`3J3%+3!%je!*!U!3#3!dhb!!"-mJ!!!GS
- X!'cC!"eS!N!-F!G)!%%K"8dJ!N!1+@Np143#3!jC,58j%!*!$SPG-6d-!N!1Z58j
- X%@!#3!lT$6d4&!!3!aN4"9%%!!!%#8e458`!!!3j%8N9-!!!"'P0C69-!!!%Q3dj
- X'4`!!!6*659T&!!!"2N4#8e3!!!&+4%*A8`!!!9C$8N9-!!)"BN4#98F!!J''9%9
- XB9!!!!DS!!3#3"b$b2!!!rrm!!!X)!#$br!!!rrm!!!4%!#$c8!!!rrm!!!2d!#$
- Xc!*!$rrm!!!@J!#$b3!!!rrm!!%--!#$bB!!#rrm!!%0`!#$bG!!%rrm!!%0i!#$
- XbS!!$rrm!!%1!!#$bR!!"rrm8!%1)!#$c%!!!rrm!!%c+!#$bC!!!rrm!!%c1!#$
- Xb-!!!rrm!!%c5!#$bQ!!!rrm!!%c@!#$bE!!'rrm!!!3!!#$b82rr!!B!!!3F!#$
- XbH!#!rrm!!!VN!#$c'!#!rrm!!!VZ!#$c-!!#rrm!!%cD!#$bU!!%rrm!!%cH!#$
- XbV!!$rrm!!%cL!#$bM!!#rrm!!%cQ!#$bP!!%rrm!!%cU!#$c3!!$rrm!!%cZ!#$
- XbA!!!rrm!!!3U!#$bT!9YDf&SE!%f"pi:
- END_OF_FILE
- if test 24586 -ne `wc -c <'unzip-5.12/mac/thinkc.hqx'`; then
- echo shar: \"'unzip-5.12/mac/thinkc.hqx'\" unpacked with wrong size!
- fi
- # end of 'unzip-5.12/mac/thinkc.hqx'
- fi
- if test -f 'unzip-5.12/unix/Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'unzip-5.12/unix/Makefile'\"
- else
- echo shar: Extracting \"'unzip-5.12/unix/Makefile'\" \(27036 characters\)
- sed "s/^X//" >'unzip-5.12/unix/Makefile' <<'END_OF_FILE'
- X#==============================================================================
- X# Makefile for UnZip, UnZipSFX and fUnZip: Unix and MS-DOS ("real" makes only)
- X# Version: 5.12 25 August 1994
- X#==============================================================================
- X
- X
- X# INSTRUCTIONS (such as they are):
- X#
- X# "make vax" -- makes UnZip on a generic Unix VAX in the current directory
- X# "make list" -- lists all supported systems (targets)
- X# "make help" -- provides pointers on what targets to try if problems occur
- X# "make wombat" -- chokes and dies if you haven't added the specifics for your
- X# Wombat 68000 (or whatever) to the systems list
- X#
- X# CF are flags for the C compiler. LF are flags for the loader. LF2 are more
- X# flags for the loader, if they need to be at the end of the line instead of at
- X# the beginning (for example, some libraries). FL and FL2 are the corre-
- X# sponding flags for fUnZip. LOCAL_UNZIP is an environment variable that can
- X# be used to add default C flags to your compile without editing the Makefile
- X# (e.g., -DDEBUG_STRUC, or -FPi87 on PCs using Microsoft C).
- X#
- X# Some versions of make do not define the macro "$(MAKE)"; this is rare, but
- X# if things don't work, try using "make" instead of "$(MAKE)" in your system's
- X# makerule. Or try adding the following line to your .login file:
- X# setenv MAKE "make"
- X# (That never works--makes which are too stupid to define MAKE are also too
- X# stupid to look in the environment--but try it anyway for kicks. :-) )
- X#
- X# Memcpy and memset are provided for those systems that don't have them; they
- X# are in file_io.c and will be used if -DZMEM is included in CF. These days
- X# almost all systems have them.
- X#
- X# Be sure to test your new UnZip (and UnZipSFX and fUnZip); successful compila-
- X# tion does not always imply a working program.
- X
- X
- X#####################
- X# MACRO DEFINITIONS #
- X#####################
- X
- X# Defaults most systems use (use LOCAL_UNZIP in environment to add flags,
- X# such as -DDOSWILD).
- X
- X# UnZip flags
- XCC = cc# try using "gcc" target rather than changing this (if you do,
- XLD = $(CC)# you MUST change LD, too--else "unresolved symbol: ___main")
- XLOC = $(LOCAL_UNZIP)
- XCF = -O -I. $(LOC)
- XLF = -o unzip
- XLF2 = -s
- X
- X# UnZipSFX flags
- XSL = -o unzipsfx
- XSL2 = $(LF2)
- X
- X# fUnZip flags
- XFL = -o funzip
- XFL2 = $(LF2)
- X
- X# general-purpose stuff
- XCP = cp
- XLN = ln
- XRM = rm -f
- XCHMOD = chmod
- XSTRIP = strip
- XE =
- XO = .o
- XM = unix
- XSHELL = /bin/sh
- X
- X# object files
- XOBJS1 = unzip$O crypt$O envargs$O explode$O extract$O file_io$O
- XOBJS2 = inflate$O match$O unreduce$O unshrink$O zipinfo$O
- XOBJS = $(OBJS1) $(OBJS2) $M$O
- XLOBJS = $(OBJS)
- XOBJX = unzipsfx$O crypt$O extract_$O file_io$O inflate$O match$O $M_$O
- XLOBJX = $(OBJX)
- XOBJF = funzip$O crypt_$O inflate_$O
- X#OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj
- X#OBJF_OS2 = $(OBJF:.o=.obj)
- X
- X# installation
- XINSTALL = cp# probably can change this to 'install' if you have it
- X# on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
- Xmanext = 1
- Xprefix = /usr/local
- XBINDIR = $(prefix)/bin# where to install executables
- XMANDIR = $(prefix)/man/man$(manext)# where to install man pages
- XINSTALLEDBIN = $(BINDIR)/funzip$E $(BINDIR)/zipinfo$E $(BINDIR)/unzipsfx$E \
- X $(BINDIR)/unzip$E
- XINSTALLEDMAN = $(MANDIR)/unzip.$(manext) $(MANDIR)/funzip.$(manext) \
- X $(MANDIR)/unzipsfx.$(manext) $(MANDIR)/zipinfo.$(manext)
- X#
- XUNZIPS = unzip$E funzip$E unzipsfx$E
- X# this is a little ugly...well, no, it's a lot ugly:
- XMANS = unix/unzip.1 unix/unzipsfx.1 unix/zipinfo.1 unix/funzip.1
- XDOCS = unzip.doc unzipsfx.doc zipinfo.doc funzip.doc
- X
- X# list of supported systems/targets in this version
- XSYSTEMS1 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo
- XSYSTEMS2 = aviion bcc_dos bsd bsd386 bull coherent convex cray cray_scc
- XSYSTEMS3 = cray_v3 cyber_sgi dec dnix encore eta gcc gcc_dos generic
- XSYSTEMS4 = generic2 generic3 gould hk68 hp hpux linux minix mips msc_dos
- XSYSTEMS5 = next next10 next2x next3x nextfat osf1 pixel ptx pyramid
- XSYSTEMS6 = regulus rs6000 sco sco_dos sco_sl sco_x286 sequent sgi solaris
- XSYSTEMS7 = stellar sun sysv sysv_gcc sysv6300 tahoe ultrix vax v7 wombat
- XSYSTEMS8 = xenix xos
- X
- X####################
- X# DEFAULT HANDLING #
- X####################
- X
- X# By default, print help on which makefile targets to try. (The SYSTEM
- X# variable is no longer supported; use "make <target>" instead.)
- X
- Xhelp:
- X @echo ""
- X @echo\
- X " If you're not sure about the characteristics of your system, try typing"
- X @echo\
- X ' "make generic". If the compiler barfs and says something unpleasant about'
- X @echo\
- X ' "timezone redefined," try typing "make clean" followed by "make generic2".'
- X @echo\
- X ' If, on the other hand, it complains about an undefined symbol _ftime, try'
- X @echo\
- X ' typing "make clean" followed by "make generic3". One of these actions'
- X @echo\
- X ' should produce a working copy of unzip on most Unix systems. If you know'
- X @echo\
- X ' a bit more about the machine on which you work, you might try "make list"'
- X @echo\
- X ' for a list of the specific systems supported herein. (Many of them do'
- X @echo\
- X " exactly the same thing, so don't agonize too much over which to pick if"
- X @echo\
- X ' two or more sound equally likely.) Also check out the INSTALL file for'
- X @echo\
- X ' notes on compiling various targets. As a last resort, feel free to read'
- X @echo\
- X ' the numerous comments within the Makefile itself. Note that to compile'
- X @echo\
- X ' the decryption version of UnZip, you must obtain the full versions of'
- X @echo\
- X ' crypt.c and crypt.h (see the "Where" file for ftp and mail-server sites).'
- X @echo\
- X ' Have a mostly pretty good day.'
- X @echo ""
- X
- Xlist:
- X @echo ""
- X @echo\
- X 'Type "make <system>", where <system> is one of the following:'
- X @echo ""
- X @echo " $(SYSTEMS1)"
- X @echo " $(SYSTEMS2)"
- X @echo " $(SYSTEMS3)"
- X @echo " $(SYSTEMS4)"
- X @echo " $(SYSTEMS5)"
- X @echo " $(SYSTEMS6)"
- X @echo " $(SYSTEMS7)"
- X @echo " $(SYSTEMS8)"
- X# @echo ""
- X# @echo\
- X# 'Targets for related utilities (ZipInfo and fUnZip) include:'
- X# @echo ""
- X# @echo " $(SYS_UTIL1)"
- X# @echo " $(SYS_UTIL2)"
- X @echo ""
- X @echo\
- X 'For further (very useful) information, please read the comments in Makefile.'
- X @echo ""
- X
- Xgeneric_msg:
- X @echo ""
- X @echo\
- X ' Attempting "make generic" now. If this fails for some reason, type'
- X @echo\
- X ' "make help" and/or "make list" for suggestions.'
- X @echo ""
- X
- X
- X###############################################
- X# BASIC COMPILE INSTRUCTIONS AND DEPENDENCIES #
- X###############################################
- X
- X# this is for GNU make; comment out and notify zip-bugs if it causes errors
- X.SUFFIXES: .c $O
- X
- X.c$O:
- X $(CC) -c $(CF) $*.c
- X
- X# this doesn't work...directories are always a pain with implicit rules
- X#.1.doc: unix/$<
- X# nroff -Tman -man $< | col -b | uniq | \
- X# sed 's/Sun Release ..../Info-ZIP /' > $@
- X
- X
- X# these rules are specific to Suns and are really intended only for the
- X# authors' use in creating non-Unix documentation files (which are pro-
- X# vided with both source and binary distributions). We should probably
- X# add a ".1.man" rule for more generic systems...
- X
- Xunzip.doc: unix/unzip.1
- X nroff -Tman -man unix/unzip.1 | col -b | uniq | \
- X sed 's/Sun Release ..../Info-ZIP /' > $@
- X
- Xunzipsfx.doc: unix/unzipsfx.1
- X nroff -Tman -man unix/unzipsfx.1 | col -b | uniq | \
- X sed 's/Sun Release ..../Info-ZIP /' > $@
- X
- Xzipinfo.doc: unix/zipinfo.1
- X nroff -Tman -man unix/zipinfo.1 | col -b | uniq | \
- X sed 's/Sun Release ..../Info-ZIP /' > $@
- X
- Xfunzip.doc: unix/funzip.1
- X nroff -Tman -man unix/funzip.1 | col -b | uniq | \
- X sed 's/Sun Release ..../Info-ZIP /' > $@
- X
- X
- Xall: generic_msg generic
- Xunzips: $(UNZIPS)
- Xdocs: $(DOCS)
- Xunzipsman: unzips docs
- Xunzipsdocs: unzips docs
- X
- X# this really only works for Unix targets, unless specify E and O on cmd line
- Xclean:
- X rm -f $(OBJS) $(OBJF) $(OBJX) $(UNZIPS)
- X
- Xinstall: $(UNZIPS) $(MANS)
- X $(INSTALL) $(UNZIPS) $(BINDIR)
- X $(RM) $(BINDIR)/zipinfo$E
- X $(LN) $(BINDIR)/unzip$E $(BINDIR)/zipinfo$E
- X $(INSTALL) unix/unzip.1 $(MANDIR)/unzip.$(manext)
- X $(INSTALL) unix/unzipsfx.1 $(MANDIR)/unzipsfx.$(manext)
- X $(INSTALL) unix/zipinfo.1 $(MANDIR)/zipinfo.$(manext)
- X $(INSTALL) unix/funzip.1 $(MANDIR)/funzip.$(manext)
- X $(CHMOD) 755 $(INSTALLEDBIN)
- X $(CHMOD) 644 $(INSTALLEDMAN)
- X
- X# alternatively, could use zip method: -cd $(BINDIR); rm -f $(UNZIPS) [etc.]
- Xuninstall:
- X rm -f $(INSTALLEDBIN) $(INSTALLEDMAN)
- X
- X
- X# EDIT HERE FOR PARALLEL MAKES on Sequent (and others?)--screws up MS-DOS
- X# make utilities if default: change "unzip$E:" to "unzip$E:&"
- X
- Xunzip$E: $(OBJS) # add `&' for parallel makes
- X $(LD) $(LF) $(LOBJS) $(LF2)
- X
- Xunzipsfx$E: $(OBJX) # add `&' for parallel makes
- X $(LD) $(SL) $(LOBJX) $(SL2)
- X
- Xfunzip$E: $(OBJF) # add `&' for parallel makes
- X $(LD) $(FL) $(OBJF) $(FL2)
- X
- Xzipinfo$E: unzip$E
- X @echo\
- X ' This is a Unix-specific target. ZipInfo is not enabled in some MS-DOS'
- X @echo\
- X ' versions of UnZip; if it is in yours, copy unzip.exe to zipinfo.exe'
- X @echo\
- X ' or else invoke as "unzip -Z" (in a batch file, for example).'
- X $(LN) unzip$E zipinfo$E
- X
- X
- Xcrypt$O: crypt.c unzip.h zip.h crypt.h
- Xenvargs$O: envargs.c unzip.h
- Xexplode$O: explode.c unzip.h
- Xextract$O: extract.c unzip.h crypt.h
- Xfile_io$O: file_io.c unzip.h crypt.h tables.h
- Xfunzip$O: funzip.c unzip.h crypt.h tables.h
- Xinflate$O: inflate.c inflate.h unzip.h
- Xmatch$O: match.c unzip.h
- Xunreduce$O: unreduce.c unzip.h
- Xunshrink$O: unshrink.c unzip.h
- Xunzip$O: unzip.c unzip.h crypt.h version.h
- Xzipinfo$O: zipinfo.c unzip.h
- X
- Xcrypt_$O: crypt.c unzip.h zip.h crypt.h # funzip only
- X $(CP) crypt.c crypt_.c
- X $(CC) -c $(CF) -DFUNZIP crypt_.c
- X $(RM) crypt_.c
- X
- Xextract_$O: extract.c unzip.h crypt.h # unzipsfx only
- X $(CP) extract.c extract_.c
- X $(CC) -c $(CF) -DSFX extract_.c
- X $(RM) extract_.c
- X
- Xinflate_$O: inflate.c inflate.h unzip.h crypt.h # funzip only
- X $(CP) inflate.c inflate_.c
- X $(CC) -c $(CF) -DFUNZIP inflate_.c
- X $(RM) inflate_.c
- X
- Xmsdos$O: msdos/msdos.c unzip.h # MS-DOS only
- X $(CC) -c $(CF) msdos/msdos.c
- X
- Xmsdos_$O: msdos/msdos.c unzip.h # MS-DOS unzipsfx only
- X $(CP) msdos\msdos.c msdos_.c > nul
- X $(CC) -c $(CF) -DSFX msdos_.c
- X $(RM) msdos_.c
- X
- X#os2$O: os2/os2.c unzip.h # OS/2 only
- X# $(CC) -c $(CF) os2/os2.c
- X
- Xunix$O: unix/unix.c unzip.h # Unix only
- X $(CC) -c $(CF) unix/unix.c
- X
- Xunix_$O: unix/unix.c unzip.h # Unix unzipsfx only
- X $(CP) unix/unix.c unix_.c
- X $(CC) -c $(CF) -DSFX unix_.c
- X $(RM) unix_.c
- X
- Xunzipsfx$O: unzip.c unzip.h crypt.h version.h # unzipsfx only
- X $(CP) unzip.c unzipsfx.c
- X $(CC) -c $(CF) -DSFX unzipsfx.c
- X $(RM) unzipsfx.c
- X
- X
- Xunix_make:
- X# @echo\
- X# '(Ignore any errors from `make'"' due to the following command; it's harmless.)"
- X -@2>&1 $(LN) unix/Makefile . > /dev/null || echo > /dev/null
- X
- X
- X################################
- X# INDIVIDUAL MACHINE MAKERULES #
- X################################
- X
- X##### TABS ARE REQUIRED FOR MANY VERSIONS OF "MAKE"! #####
- X
- X
- X#----------------------------------------------------------------------------
- X# Generic targets (can't assume make utility groks "$(MAKE)")
- X#----------------------------------------------------------------------------
- X
- Xgeneric: unzips # first try if unknown
- X
- Xgeneric2: unix_make # second try if unknown: hope make is called "make"
- X make unzips CF="$(CF) -DBSD"
- X
- Xgeneric3: unix_make # third try if unknown: hope make is called "make"
- X make unzips CF="$(CF) -DSYSV"
- X
- X#----------------------------------------------------------------------------
- X# "Normal" group (both big- and little-endian, structure-padding or not):
- X#----------------------------------------------------------------------------
- X
- X386i: unzips # sun386i, SunOS 4.0.2
- X3Bx: unzips # AT&T 3B2/1000-80; should work on any WE32XXX machine
- X#aix_rt: unzips # IBM RT 6150 under AIX 2.2.1
- Xapollo: unzips # Apollo Domain/OS machines
- Xbull: unzips # Bull DPX/2, BOS 2.00.45 (doesn't require -Xk switch)
- Xconvex: unzips # Convex C-120 and C-210 (-O is enough; -ext is default)
- Xcray: unzips # Cray-2 and Y-MP, using default (possibly old) compiler
- Xdec: unzips # DEC 5820 (MIPS RISC), test version of Ultrix v4.0
- Xencore: unzips # Multimax
- Xeta: unzips # ETA-10P*, hybrid SysV with BSD 4.3 enhancements
- Xgould: unzips # Gould PN9000 running UTX/32 2.1Bu01
- Xhp: unzips # HP 9000 series (68020), 4.3BSD or HP-UX A.B3.10 Ver D
- Xhpux: unzips # (to match zip's makefile entry)
- Xmips: unzips # MIPS M120-5(?), SysV.3 [error in sys/param.h file?]
- Xnext10: unzips # NeXT (generic; use next2x or next3x for better opt.)
- Xosf1: unzips # DECstation, including Alpha-based; DEC OSF/1 v1.x
- Xpyr_: unzips # [failsafe target for pyramid target below]
- Xpyr_ucb: unzips # Pyramids running BSD universe by default (see below)
- Xsco: unzips # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0.
- Xstellar: unzips # gs-2000
- Xsun: unzips # old target; no good with solaris...use "sunos" now
- Xsunos: unzips # Sun 3, 4; SunOS 4.x (SOME SYSTEMS ARE SYSTEM V!)
- Xtahoe: unzips # tahoe (CCI Power6/32), 4.3BSD
- Xultrix: unzips # VAXen, DEC 58x0 (MIPS guts), DECstation 2100; v4.x
- Xvax: unzips # general-purpose VAX target (not counting VMS)
- Xxenix: unzips # Xenix/386 (tested on 2.3.1); SCO Unix 3.2.0.
- X
- X#----------------------------------------------------------------------------
- X# BSD group (for timezone structs [struct timeb]):
- X#----------------------------------------------------------------------------
- X
- Xbsd: _bsd # generic BSD (BSD 4.2 & Ultrix handled in unzip.h)
- Xbsd386: _bsd # BSDI BSD/386 version 1.0
- X
- X_bsd: unix_make
- X $(MAKE) unzips CF="$(CF) -DBSD"
- X
- X#----------------------------------------------------------------------------
- X# SysV group (for extern long timezone and ioctl.h instead of sgtty.h):
- X#----------------------------------------------------------------------------
- X
- Xaix_rt: _sysv # IBM RT 6150 under AIX 2.2.1
- Xamdahl: _sysv # Amdahl (IBM) mainframe, UTS (SysV) 1.2.4 and 2.0.1
- Xaviion: _sysv # Data General AViiONs, DG/UX 4.3x
- Xpyr_att: _sysv # Pyramids running AT&T (SysV) universe by default
- Xsgi: _sysv # Silicon Graphics Iris 4D, Irix 3.3.2, 4.0.x (5.x?)
- Xsolaris: _sysv # Sun SPARC & x86, Solaris 2.x
- Xsysv: _sysv # generic System V Unix (Xenix handled in unzip.h)
- Xxos: _sysv # Olivetti LSX-3005..3045, X/OS 2.3 and 2.4
- X
- X_sysv: unix_make
- X $(MAKE) unzips CF="$(CF) -DSYSV"
- X
- X#----------------------------------------------------------------------------
- X# Version 7 group (old/obsolescent):
- X#----------------------------------------------------------------------------
- X
- Xpixel: _v7 # Pixel 80, 100 (68000-based, V7/mostly BSD4.1 compat.)
- Xv7: _v7 # generic Unix Version 7 box (prob. only Pixel...)
- X
- X_v7:
- X make unzips CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM"
- X
- X#----------------------------------------------------------------------------
- X# "Unique" group (require non-standard options):
- X#----------------------------------------------------------------------------
- X
- X# AT&T 7300 (M68000/SysV.3) (add -DSYSV? -DNO_LIMITS?)
- X7300: unix_make
- X $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP"
- X
- X7300_gcc: unix_make
- X $(MAKE) unzips CC=gcc LD=gcc LF2="" \
- X CF="-O2 -I. -DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP $(LOC)"
- X $(STRIP) $(UNZIPS)
- X
- X# IBM AIX 3.x on an RS/6000: see rs6000 target below
- Xaix: rs6000
- X
- X# Amdahl UTS 2.1.4 with "extended file types" filesystem (aarrrggghhhh...)
- Xamdahl_eft: unix_make
- X $(MAKE) unzips CF="$(CF) -eft -DSYSV"
- X
- X# MS-DOS: Borland C++ 3.0 (can change UnZip memory model to small for more
- X# speed but no ZipInfo support [-ml -> -ms in _bcc_dos], but may run out of
- X# memory when inflating--should not be true anymore in 5.11)
- Xbcc_dos: _bcc_dos fu_bcc sfx_bcc
- X
- X_bcc_dos: bcc_rsp # v-- change to -ml for large model
- X $(MAKE) unzip.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\
- X O=.obj M=msdos LOBJS="" LF="@bcc_rsp" LF2=""
- X del bcc_rsp
- X
- Xbcc_rsp:
- X echo $(OBJS1:.o=.obj) > bcc_rsp
- X echo msdos.obj $(OBJS2:.o=.obj) >> bcc_rsp
- X
- Xfu_bcc:
- X $(MAKE) funzip.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\
- X O=.obj FL="" FL2="" CP=copy RM=del
- X
- Xsfx_bcc:
- X $(MAKE) unzipsfx.exe CF="-w -ms -O2 -I. $(LOC)" CC=bcc LD=bcc E=.exe\
- X O=.obj SL="" SL2="" CP=copy RM=del
- X
- X# Coherent 3.x/4.x, Mark Williams C. ``For Coherent's CC, it needs either
- X# -T0 or -T150000 (or bigger) added to the CFLAGS, otherwise the compiler
- X# runs out of memory and dies in zipinfo.c.'' [Fred "Fredex" Smith, 940719]
- Xcoherent: unix_make
- X $(MAKE) unzips CF="$(CF) -T0"
- X
- X# Cray-2 and Y-MP, running Unicos 5.1 to 6.1 (SysV + BSD enhancements)
- X# and Standard (ANSI) C compiler 1.5, 2.0 or 3.0.
- Xcray_scc: unix_make
- X $(MAKE) unzips CC=scc LD=scc
- X
- X# Ditto, for Cray Standard C 3.0 or later.
- Xcray_v3: unix_make
- X $(MAKE) unzips CC="scc" LD="scc" CF="$(CF) -h scalar3 -h vector3"
- X
- X# The unzip41 build on a Cyber 910/SGI running Irix v3.3.3 was successful
- X# with the following change to Makefile:
- Xcyber_sgi: unix_make
- X $(MAKE) unzips CF="$(CF) -I/usr/include/bsd"\
- X LF="-lbsd $(LF)" SL="-lbsd $(SL)"
- X
- X# 680x0, DIAB dnix 5.2/5.3 (a Swedish System V clone)
- X#
- X# Options for the dnix cc:
- X# -X7 = cc is strict ANSI C
- X# -X9 = warnings if a function is used without a declaration
- X#
- Xdnix: unix_make
- X $(MAKE) unzips CF="$(CF) -X7 -X9 -DDNIX"
- X
- X# Generic BSDish Unix gcc. ``The -O2 only works with the latest version of
- X# gcc; you may have to use -O only for earlier versions. I have no idea why
- X# -s causes this bug in gcc.'' [Bug: "nm: unzip: no name list", "collect:
- X# /usr/bin/nm returned 1 exit status".] If you don't have strip, don't
- X# worry about it (it just makes the executable smaller and can be replaced
- X# with "echo" instead).
- X#
- Xgcc: unix_make
- X $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. $(LOC)" LF2=""
- X $(STRIP) $(UNZIPS)
- X
- X# MS-DOS with D.J. Delorie's djgpp 1.12. Note that earlier versions of go32
- X# (< 1.11) don't support DOS function 0x38 (necessary for "unzip -v foobar").
- X# Note also that this set of targets has work-arounds for three bugs in the
- X# older version (3.69) of GNU make formerly distributed with djgpp: (1) it
- X# sets the MAKE variable incorrectly for spawning with COMMAND.COM (forward
- X# slashes instead of backslashes--fixed in 3.71 by not spawning COMMAND.COM),
- X# so the usual $(MAKE) has been replaced by "make"; (2) it doesn't handle
- X# makefile continuation lines correctly, most likely because of the MS-DOS
- X# CR-LF line-endings (seems to be fixed in 3.71?), so long lines are used;
- X# and (3) it doesn't handle quotes as in CF="-O2 -Wall etc." correctly, so
- X# these macros have been changed to "CF=-O2 -Wall etc." where necessary. The
- X# newer GNU make (version 3.71) does not handle quotes correctly and has no
- X# known work-around, so don't bother to use it. Likewise, the emx version
- X# of GNU make 3.71 which is maintained by Kai Uwe Rommel has other fatal bugs
- X# involving the shell (necessary for recursive targets like this one).
- X# GRR 940430, 940723, 940814
- X#
- Xgcc_dos: _gcc_dos fu_gcc sfx_gcc
- X
- X# this target may be used with djgpp 1.12m1 or later; replace "_gcc_dos" above
- X# with "_gcc_dos_new":
- X
- X_gcc_dos_new: gcc_rsp
- X make unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)" LOBJS="" "LF=-o unzip @gcc_rsp" LF2=""
- X $(STRIP) unzip
- X coff2exe unzip
- X# use this instead if you want to create a stand-alone executable (bigger)
- X# coff2exe -s go32.exe unzip
- X stubedit unzip.exe globbing=no
- X# del gcc_rsp
- X# del unzip
- X coff2exe -g zipinfo
- X stubedit zipinfo.exe runfile=unzip.exe globbing=no
- X
- X_gcc_dos: gcc_rsp
- X make unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)" LOBJS="" "LF=-o unzip @gcc_rsp" LF2=""
- X# $(MAKE) unzip CC=gcc LD=gcc M=msdos "CF=-O2 -Wall -I. $(LOC)"\
- X# LOBJS="" LF="-o unzip @gcc_rsp" LF2=""
- X $(STRIP) unzip
- X coff2exe unzip
- X# use this instead if you want to create a stand-alone executable (bigger)
- X# coff2exe -s go32.exe unzip
- X stubedit unzip.exe globbing=no
- X# del gcc_rsp
- X# del unzip
- X#
- X# @echo Ignore the following bogus error message:
- X# -@copy < nul > zipinfo
- X -@find " " < nul > zipinfo
- X coff2exe zipinfo
- X stubedit zipinfo.exe runfile=unzip.exe globbing=no
- X del zipinfo
- X
- Xgcc_rsp:
- X echo $(OBJS1) > gcc_rsp
- X echo $(OBJS2) msdos.o >> gcc_rsp
- X
- Xfu_gcc:
- X make funzip CC=gcc LD=gcc "CF=-Wall -O2 -I. $(LOC)" FL2="" CP=copy RM=del
- X# $(MAKE) funzip CC=gcc LD=gcc "CF=-Wall -O2 -I. $(LOC)" FL2=""\
- X# CP=copy RM=del
- X coff2exe funzip
- X# use this instead if you want to create a stand-alone executable (bigger)
- X# coff2exe -s go32.exe funzip
- X# del funzip
- X
- Xsfx_gcc:
- X make unzipsfx CC=gcc LD=gcc M=msdos "CF=-Wall -O2 -I. $(LOC)" SL2="" CP=copy RM=del
- X# $(MAKE) unzipsfx CC=gcc LD=gcc M=msdos "CF=-Wall -O2 -I. $(LOC)"\
- X# SL2="" CP=copy RM=del
- X $(STRIP) unzipsfx
- X coff2exe unzipsfx
- X# use this instead if you want to create a stand-alone executable (bigger)
- X# coff2exe -s go32.exe unzipsfx
- X stubedit unzipsfx.exe globbing=no
- X# del unzipsfx
- X
- X# Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000
- Xhk68: unix_make
- X $(MAKE) unzips CC="gcc" LD="gcc"\
- X LF="-n $(LF)" SL="-n $(SL)" FL="-n $(FL)"\
- X CF="-ga -X138 -I. $(LOC) -Dlocaltime=localti -Dtimezone=timezon"
- X
- X# Rules needed to build the unzip program for an SGI Iris Indigo running
- X# Irix Version 4.0.1
- X#indigo:
- X# $(MAKE) unzips CF="-cckr $(CF) -DSYSV $(LOC)"
- X
- X# Linux pre-0.96 + gcc 2.1; also 0.99.13 + gcc 2.4.5. Linux is Posix
- X# (almost SysV but not quite). [apparently don't need -DSHORT_NAMES]
- Xlinux: unix_make
- X $(MAKE) unzips CC=gcc LD=gcc
- X# $(MAKE) unzips CF="$(CF) -DLINUX" CC=gcc LD=gcc (linux pre-defined?)
- X
- X# Minix 1.5 PC for the 386. Invoke as is to use default cc, or as "make
- X# minix CC=gcc" to use gcc. Try "make linux" if you have a working termios.h.
- Xminix: unix_make
- X $(MAKE) unzips CF="$(CF) -DMINIX -DSHORT_NAMES" CC=$(CC) LD=$(CC)
- X
- X# MS-DOS: Microsoft C 6.0 and NMAKE. "nmake msc_dos" works fine, aside
- X# from an irrelevant message (possibly) about the creation of a temporary
- X# file. Environment variable LOCAL_UNZIP (or CL) should be set via "SET
- X# LOCAL_UNZIP=-FPi87" if you use the 80x87 library; also add -G2 or -G3 if
- X# using a 286/386/486. Note that setting too many things via LOCAL_UNZIP
- X# may make the command line too long for the default COMMAND.COM shell, so
- X# use CL instead in that case. With VC++ Pro, -O2 instead of -Oait seems to
- X# work OK and makes the executables slightly faster. Use at your own risk.
- X#
- Xmsc_dos: _msc_dos fu_msc sfx_msc
- X
- X# can change UnZip memory model (-AS) to large (-AL) if necessary, but should
- X# no longer be necessary in UnZip 5.11 and later
- X_msc_dos: msc_rsp
- X $(MAKE) unzip.exe CF="-AS -W3 -Oait -Gs -nologo -I. $(LOC)" CC=cl\
- X LD=link E=.exe O=.obj M=msdos LOBJS="" LF="@msc_rsp" LF2=""
- X del msc_rsp
- X
- Xmsc_rsp:
- X echo $(OBJS1:.o=.obj) + > msc_rsp
- X echo msdos.obj $(OBJS2:.o=.obj)/noi/e/st:0x0c00; >> msc_rsp
- X
- Xfu_msc:
- X set CL=-AS -Oait -Gs -nologo -I.
- X $(MAKE) funzip.exe CF="$(LOC)" CC=cl LD=link E=.exe O=.obj\
- X FL="/noi/nol/e" FL2=",funzip;" RM=del CP=copy
- X
- Xsfx_msc:
- X set CL=-AS -Oait -Gs -nologo -I.
- X $(MAKE) unzipsfx.exe CF="$(LOC)" CC=cl LD=link E=.exe O=.obj M=msdos\
- X SL="/noi/nol/e" SL2=",unzipsfx;" RM=del CP=copy
- X
- X# $(NOD): intended to be used as SET NOD=-link /nod:slibcep to allow the
- X# use of default library names (slibce.lib) instead of protected-mode
- X# names (slibcep.lib), but it fails: MSC adds its own /nod qualifier,
- X# and there seems to be no way to override this. Typical...
- X#
- X# THIS TARGET RETAINED AS AN EXAMPLE ONLY. USE MAKEFILE.OS2.
- X#
- X#msc_os2: # 16-bit OS/2 (1.x) with MSC 6.00 (use makefile.os2)
- X# $(MAKE) -nologo unzips CC=cl LD=cl E=.exe O=.obj\
- X# OBJS="$(OBJS_OS2)" OBJZ="$(OBJZ_OS2)"\
- X# CF="-nologo -AC -Ocegit -G2s -DOS2 -DMSC $(LOC)"\
- X# LF="-nologo -AC $(LOC) -Lp -F 2000"\
- X# LF2="unzip.def -o unzip.exe $(NOD)" CP=copy RM=del\
- X# ZL="-nologo -AC $(LOC) -Lp -Fb" ZL2="zipinfo.def -o zipinfo.exe"
- X
- X# NeXT info.
- Xnext:
- X @echo
- X @echo\
- X ' Please pick a specific NeXT target: "make next10" will create a generic'
- X @echo\
- X ' NeXT executable; "make next2x" will create a smaller executable (for'
- X @echo\
- X ' NeXTstep 2.0 and higher); "make next3x" will create a small executable'
- X @echo\
- X ' with significantly better optimization (NeXTstep 3.0 and higher only);'
- X @echo\
- X ' "make nextfat" will create a fat, multi-architecture (NeXT plus Intel)'
- X @echo\
- X ' executable (NeXTstep 3.1 and higher only).'
- X @echo
- X
- X# 68030 BSD 4.3+Mach. NeXT 2.x: make the executable smaller.
- Xnext2x: unix_make
- X $(MAKE) unzips LF2="-object -s"
- X
- X# NeXT 3.x: as above, plus better optimization.
- Xnext3x: unix_make
- X $(MAKE) unzips CF="-O2 -I. $(LOC)" LF2="-object -s"
- X
- X# NeXT 3.1+: make the executable fat (multi-architecture binary [MAB],
- X# for "black" [NeXT] and "white" [x86] hardware, so far).
- Xnextfat: unix_make
- X $(MAKE) unzips CF="-O2 -I. $(LOC) -arch i386 -arch m68k" \
- X LF2="-arch i386 -arch m68k -object -s"
- X
- X# Sequent Symmetry running Dynix/ptx (sort of SysV.3): needs to link
- X# with libseq to get symlink().
- Xptx: unix_make
- X $(MAKE) unzips CF="$(CF) -DSYSV -DTERMIO -DPTX" LF2="$(LF2) -lseq"
- X
- X# Pyramid 90X (probably all) under >= OSx4.1, either universe. (This is an
- X# experimental target! If it fails, use either pyr_ucb or pyr_att instead.)
- X# The make in the BSD half is too stupid to understand $(MAKE), sigh...
- Xpyramid: unix_make
- X -make pyr_`universe`
- X
- X# REGULUS: 68040-based, "real-time" SysV.3 mutant; uses gcc, with "REGULUS"
- X# predefined.
- Xregulus: unix_make
- X $(MAKE) unzips CF="$(CF) -traditional -DSYSV -DNO_MKDIR"
- X
- X# IBM RS/6000 under AIX 3.2
- Xrs6000: unix_make
- X $(MAKE) unzips CF="$(CF) -DBSD -D_BSD -DUNIX" LF2="-lbsd"
- X
- X# SCO cross compile from Unix to DOS. Tested with Xenix/386 and OpenDeskTop.
- X# Should work with Xenix/286 as well. (davidsen) Note that you *must* remove
- X# the Unix objects and executable before doing this! (Piet Plomp: gcc won't
- X# recognize the -M0 flag which forces 8086 code.) (GRR: may need to reduce
- X# stack to 0c00h if using 286/small-model code...?)
- Xsco_dos: unix_make
- X $(MAKE) unzips CF="-O -I. $(LOC) -dos -M0" M=msdos\
- X LF="-dos -F 2000" LF2="-o unzip.exe"\
- X FL="-dos" FL2="-o funzip.exe" SL="-dos" SL2="-o unzipsfx.exe"
- X
- X# SCO UNIX with shared libraries and no international support. If you are
- X# not using a USA-style keyboard and display, you may want to remove -nointl
- X# to get support. It adds quite a bit to the size of the executable.
- Xsco_sl: unix_make
- X $(MAKE) unzips LF="$(LF) -nointl" LF2="$(LF2) -lc_s"\
- X SL="$(SL) -nointl" FL="$(FL) -nointl"
- X
- X# SCO Xenix/286 2.3.3 with 2.2.1 development system
- Xsco_x286: unix_make
- X $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DTERMIO" LF="$(LF) -Mel2 -LARGE"
- X
- X# Sequent Symmetry with Dynix. (386, but needs -DZMEM)
- X# This should also work on Balance but I can't test it just yet.
- Xsequent: unix_make
- X $(MAKE) unzips CF="$(CF) -DBSD -DZMEM"
- X
- X# Generic System V + GNU C
- Xsysv_gcc: unix_make
- X $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. -DSYSV $(LOC)" LF2=""
- X $(STRIP) $(UNZIPS)
- X
- X# AT&T 6300+, System V.2 Unix: run-time out-of-memory error if don't use -Ml;
- X# also compile-time error if work arrays dimensioned at HSIZE+2 (>32K)
- Xsysv6300: unix_make
- X $(MAKE) unzips CF="$(CF) -Ml -DSYSV" LF="$(LF) -Ml"\
- X SL="$(SL) -Ml" FL="$(FL) -Ml"
- X
- X# Wombat 68000 (or whatever).
- X# I didn't do this. I swear. No, really.
- Xwombat: unix_make
- X @echo
- X @echo ' Ha ha! Just kidding.'
- X @echo
- END_OF_FILE
- if test 27036 -ne `wc -c <'unzip-5.12/unix/Makefile'`; then
- echo shar: \"'unzip-5.12/unix/Makefile'\" unpacked with wrong size!
- fi
- # end of 'unzip-5.12/unix/Makefile'
- fi
- if test -f 'unzip-5.12/vms/makesfx.com' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'unzip-5.12/vms/makesfx.com'\"
- else
- echo shar: Extracting \"'unzip-5.12/vms/makesfx.com'\" \(1126 characters\)
- sed "s/^X//" >'unzip-5.12/vms/makesfx.com' <<'END_OF_FILE'
- X$!
- X$! MAKESFX.COM: command-procedure to create self-extracting ZIP archives
- X$! usage: @MAKESFX foo (foo.zip -> foo.exe)
- X$!
- X$! Martin P.J. Zinser 940804
- X$!
- X$!
- X$! For this to work a symbol unzipsfx has to be defined which contains the
- X$! location of the unzip stub (e.g., unzipsfx:== device:[dir]unzipsfx.exe)
- X$!
- X$! The zipfile given in p1 will be concatenated with unzipsfx and given a
- X$! filename extension of .exe. The default file extension for p1 is .zip
- X$!
- X$! Use at your own risk, there is no guarantee here. If it doesn't work,
- X$! blame me (m.zinser@gsi.de), not the people from Info-ZIP.
- X$!
- X$!
- X$ inf = "''p1'"
- X$ usfx = f$parse("''unzipsfx'") - ";"
- X$ file = f$parse("''inf'",,,"DEVICE") + f$parse("''inf'",,,"DIRECTORY") + -
- X f$parse("''inf'",,,"NAME")
- X$ finf = "''file'" +f$parse("''inf'",".ZIP",,"TYPE") + -
- X f$parse("''inf'",,,"VERSION")
- X$!
- X$! [GRR 940810: what is the point of 'name'? example? commented out...]
- X$! $ name = f$extract(12,2,f$time()) + f$extract(15,2,f$time()) + -
- X$! f$extract(18,2,f$time()) + f$extract(21,1,f$time())
- X$!
- X$ copy 'usfx','finf' 'file'.exe
- X$ exit
- END_OF_FILE
- if test 1126 -ne `wc -c <'unzip-5.12/vms/makesfx.com'`; then
- echo shar: \"'unzip-5.12/vms/makesfx.com'\" unpacked with wrong size!
- fi
- # end of 'unzip-5.12/vms/makesfx.com'
- fi
- echo shar: End of archive 13 \(of 20\).
- cp /dev/null ark13isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 20 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-