###############################################################################
# Copyright (c) 2004, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
swt_copyright=/*******************************************************************************\n \
 * Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved.\n \
 * The contents of this file are made available under the terms\n \
 * of the GNU Lesser General Public License (LGPL) Version 2.1 that\n \
 * accompanies this distribution (lgpl-v21.txt).  The LGPL is also\n \
 * available at http://www.gnu.org/licenses/lgpl.html.  If the version\n \
 * of the LGPL at http://www.gnu.org is different to the version of\n \
 * the LGPL accompanying this distribution and there is any conflict\n \
 * between the two license versions, the terms of the LGPL accompanying\n \
 * this distribution shall govern.\n \
 * \n \
 * Contributors:\n \
 *     IBM Corporation - initial API and implementation\n \
 *******************************************************************************/\n
 
