# Backupfiles from mergetools #
*.orig

# Java Class Files #
*.class

# Package Files #
*.jar
*.war
*.ear
*.zip

*.log

# DebugClasses
*_gitignore.js
*_gitignore.java

# Eclipse #
.project
.classpath
bin
classes

# IntelliJ IDEA #
/.idea/**/workspace.xml
/.idea/**/tasks.xml
/.idea/**/usage.statistics.xml
/.idea/**/dataSources.local.xml
/.idea/**/jarRepositories.xml
/.idea/**/shelf
/.idea/sonarlint
/.idea/**/dataSources/
/.idea/httpRequests/
/.idea/libraries/
/.idea/artifacts/
*.iml

# Maven #
target/
.surefire-*
.flattened-pom.xml

# node
node_modules
pnpm-lock.yaml
