                            COPYRIGHT


Certain rules apply to the distribution of the Zoo archiver.

The following rules apply only to the zoo archiver itself.
Currently, all extract-only programs, and all supporting utili-
ties, are fully in the public domain and are expected to remain so
for the forseeable future.

"This program" refers to version 1.50 and separately to each sub-
sequent version of the Zoo archiver and to all derivative works
thereof.  "Distribution right" refers to any copyright, compila-
tion copyright, license, or other right to control distribution or
copying.  "Compiled code" refers to software that can be executed
by a computer system.

This program is copyrighted but its distribution for noncommercial
purposes is permitted, with the following restrictions.

   - You are prohibited from distributing this program as part of
     any package over which you claim a distribution right.  This
     restriction does not apply if any distribution right is
     claimed only over individual items that you own or for which
     the distribution right has been explicitly assigned to you,
     and not over the package as a collection.

   - You are prohibited from making this program available for
     downloading via telecommunications if you charge a total of
     more than $7.00 per hour at 1200 bps.

   - You are prohibited from distributing this program as compiled
     code unless you also distribute the source code from which
     the compiled code was derived.  This restriction does not
     apply if the compiled code was created by me.

   - You are prohibited from creating, from this program, any
     derivative work over which you claim a distribution right.

The above restrictions may be relaxed by special agreement;
please contact me for details.

                              -- Rahul Dhesi 1987/07/12
                                 UUCP:    iuvax!bsu-cs!dhesi or
                                          pur-ee!bsu-cs!dhesi
                                 GEnie:   DHESI
                                 Plink:   OLS806
                                 Phone:   +1 317 285 8641 daytime EST
                                 US mail: 720 W. Centennial Ave #15,
                                          Muncie, Indiana 47303

