##
#  Copyright (c) 2009, 2018 Thales Corporate Services S.A.S.
#
#  This program and the accompanying materials
#  are made available under the terms of the Eclipse Public License 2.0
#  which accompanies this distribution, and is available at
#  https://www.eclipse.org/legal/epl-2.0
#
#  SPDX-License-Identifier: EPL-2.0
# 
#  Contributors:
#      Thales Corporate Services S.A.S - initial API and implementation
##

bin.includes = .,\
               icons/,\
               META-INF/,\
               plugin.xml,\
               plugin.properties,\
               about.html
jars.compile.order = .
source.. = generated/
output.. = bin/
src.includes = about.html
