# Copyright (c) 2006-2012, 2016, 2017 Eike Stepper (Loehne, Germany) 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:
#    Eike Stepper - initial API and implementation

# NLS_MESSAGEFORMAT_VAR

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               about.html,\
               plugin.properties,\
               test.xml,\
               about.ini,\
               about.mappings,\
               about.properties,\
               modeling32.png,\
               plugin.xml,\
               .options,\
               sslKey/
src.includes = about.html,\
               pom.xml

generateSourceReferences = true
