# eclipse conf file
.settings
.classpath
.project
.manager
.scala_dependencies
.cache

# idea conf files
.idea
*.iml
*.ipr
*.iws

# building
target
[Bb]uild/
null
tmp
temp
dist
test-output
build.log
release
out
gen
bin-debug

#Apache Flex Projects
lib/
libs/
in/
swfobject/
ide/
flex2/
thirdparty/
external/
META-INF/
3.0.33/

*.pbj
*.vms
*.ser
*.mxp
*.report
bundles.properties
empty.properties
css_*.properties
FXGException_*.properties
FXGLog_*.properties
FABridge.js
frameworks/projects/spark/manifest.xml
env.properties
local.properties
flex-sdk-description.xml

#OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#CVS files
.svn
.git

# Office Temp Files
~$*

#Binaries
*.dll
*.bin
*.com
*.exe
*.class
*.jar
*.swf
*.swc

#Compressed Files
*.zip
*.rar
*.tar
rc
*.flexProperties
*.flexLibProperties
*.project
*.actionScriptProperties
bin-release
Squiggly/main/generated/
flex-installer/deps
MD5Checker/MD5CheckerLog.txt

node_modules
npm-flexjs.iml
