Copyright (C) 2002-2006 The Regents of the University of California.
Produced at Lawrence Livermore National Laboratory, Hewlett-Packard, 
Linux NetworX, and other sites.

Written by:
Ernest Artiaga <ernest.artiaga@bsc.es>
Danny Auble <auble1@llnl.gov>
Susanne Balle <susanne.balle@hp.com>
Daniel Christians <Daniel.Christians@hp.com>
Chris Dunlap <cdunlap@llnl.gov>
Joey Ekstrom <ekstrom1@llnl.gov>
Jim Garlick <garlick@llnl.gov>
Mark Grondona <grondona1@llnl.gov>
Christopher Holmes <cholmes@hp.com>
Takae Hatazaki <takao.hatazaki@hp.com>
Nathan Huff <nhuff@geekshanty.com>
David Jackson <jacksond@clusterresources.com>
Greg Johnson <gjohnson@lanl.gov>
Morris Jette <jette1@llnl.gov>
Jason King <king49@llnl.gov>
Chris Morrone <morrone2@llnl.gov>
Brian O'Sullivan <bos@pathscale.com>
Daniel Palermo <dan.palermo@hp.com>
Dan Phung <phung4@llnl.gov>
Andy Riebs <Andy.Riebs@hp.com>
Jeff Squyres <jsquyres@lam-mpi.org>
Keven Tew <tew1@llnl.gov>
Jay Windley <jwindley@lnxi.com>

UCRL-CODE-226842.

This file is part of SLURM, a resource management program.
For details, see <http://www.llnl.gov/linux/slurm/>.

SLURM is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.

SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
details.

You should have received a copy of the GNU General Public License along
with SLURM; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.


OUR NOTICE AND TERMS OF AND CONDITIONS OF THE GNU GENERAL PUBLIC LICENSE

Our Preamble Notice

A. This notice is required to be provided under our contract with the U.S.
Department of Energy (DOE). This work was produced at the University 
of California, Lawrence Livermore National Laboratory under Contract 
No. W-7405-ENG-48 with the DOE.

B. Neither the United States Government nor the University of California 
nor any of their employees, makes any warranty, express or implied, or 
assumes any liability or responsibility for the accuracy, completeness, or 
usefulness of any information, apparatus, product, or process disclosed, or 
represents that its use would not infringe privately-owned rights.

C. Also, reference herein to any specific commercial products, process, or 
services by trade names, trademark, manufacturer or otherwise does not 
necessarily constitute or imply its endorsement, recommendation, or 
favoring by the United States Government or the University of California. 
The views and opinions of authors expressed herein do not necessarily 
state or reflect those of the United States Government or the University of 
California, and shall not be used for advertising or product endorsement 
purposes.

The precise terms and conditions for copying, distribution and modification 
is provided in the file named "COPYING" in this directory.
