# Files start with .
\..*

# Data/doc files
.*\.conf
.*\.json
.*\.txt
.*\.BUILD
.*\.patch


_helpers\.tpl
autogen\.sh
description
heron\.iml

# Directories
bazel-.*
m4
META-INF
# website and website2 are not part of the release
website

# UI resources
# Apache 2.0 licenses & MIT Licenses
jquery.*\.js
# Apache 2.0 licenses & MIT Licenses
bootstrap\.min\.css
bootstrap\.min\.js
# MIT licenses
glyphicons-halflings-regular\.svg
# MIT licenses & BSD 3-Clause licenses
d3.*\.js
# MIT licenses
html5-trunk\.js
# MIT licenses
list\.min.*.js
# MIT licenses
moment\.min.*\.js
# MIT licenses
underscore-min.*\.js
underscore-min.*\.map
# Open Font License
trykker-v8-latin-ext_latin-regular\.svg


# Thirdparty
# 3-Clause BSD License
cpplint\.py
# BSD 3-Clause licenses
cloudpickle.py
# Boost Software License, Version 1.0
kashmir
# BSD License
semver
