# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# In src/:
# --------

# Generated files basically; see details in the files:
freemarker-manual/src/main/docgen/en_US/docgen-misc/googleAnalytics.html
freemarker-manual/src/main/docgen/zh_CN/docgen-misc/googleAnalytics.html

# Binaries/archives created in the FreeMarker project:
src/main/misc/overloadedNumberRules/prices.ods
freemarker-manual/src/main/docgen/en_US/docgen-originals/figures/overview.odg
freemarker-manual/src/main/docgen/en_US/docgen-originals/figures/model2sketch_with_alpha.png
freemarker-manual/src/main/docgen/en_US/docgen-originals/figures/tree_with_alpha.png
freemarker-manual/src/main/docgen/en_US/favicon.png
freemarker-manual/src/main/docgen/en_US/figures/model2sketch.png
freemarker-manual/src/main/docgen/en_US/figures/overview.png
freemarker-manual/src/main/docgen/en_US/figures/tree.png
freemarker-manual/src/main/docgen/en_US/logo.png
freemarker-manual/src/main/docgen/zh_CN/favicon.png
freemarker-manual/src/main/docgen/zh_CN/figures/model2sketch.png
freemarker-manual/src/main/docgen/zh_CN/figures/overview.png
freemarker-manual/src/main/docgen/zh_CN/figures/tree.png
freemarker-manual/src/main/docgen/zh_CN/logo.png

# Rat thinks it's a binary, but it's UTF-16 text:
src/test/resources/freemarker/test/templatesuite/expected/output-encoding2.txt

# Tooling/IDE generated files:
# ----------------------------

ide-dependencies/**
archive
.git/**
.ivy/**
.bin/**
bin/**
buildSrc/build/**
build/**
.build/**
out/**
.out/**
target/**
.settings/**
.classpath
.project
.settings
.idea/**
*.iml
*.iws
*.ipr
.idea_modules/**
.out/**
.gradle/**
gradle/**
.DS_Store*
.AppleDouble
.LSOverride
.directory
.Trash*

# Well known files that need no license note:
# -------------------------------------------

README.md
gradlew.bat
