[![Join our Telegramm group](https://img.shields.io/badge/Join%20us-Telegram-blue?&logo=telegram&?link=http://right&link=http://t.me/artipie)](http://t.me/artipie)

[![Javadoc](http://www.javadoc.io/badge/com.artipie/artipie.svg)](http://www.javadoc.io/doc/com.artipie/artipie)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/artipie/artipie/blob/master/LICENSE.txt)
[![codecov](https://codecov.io/gh/artipie/artipie/branch/master/graph/badge.svg)](https://app.codecov.io/gh/artipie/artipie)
[![Hits-of-Code](https://hitsofcode.com/github/artipie/artipie)](https://hitsofcode.com/view/github/artipie/artipie)
![Docker Pulls](https://img.shields.io/docker/pulls/artipie/artipie)
![Docker Image Version (latest by date)](https://img.shields.io/docker/v/artipie/artipie?label=DockerHub&sort=date)

Artipie is a binary artifact management tool, similar to
[Artifactory](https://jfrog.com/artifactory/),
[Nexus](https://www.sonatype.com/product-nexus-repository),
[Archiva](https://archiva.apache.org/),
[ProGet](https://inedo.com/proget),
and many others.
The following set of features makes Artipie unique among all others:

  * It is open source ([MIT license](https://github.com/artipie/artipie/blob/master/LICENSE.txt))
  * It is horizontally scalable, you can add servers easily
  * It is written in reactive Java (using [Vert.x](https://vertx.io/))
  * It supports
    [Maven](https://github.com/artipie/artipie/wiki/maven),
    [Docker](https://github.com/artipie/artipie/wiki/docker),
    [Rubygems](https://github.com/artipie/artipie/wiki/gem),
    [Go](https://github.com/artipie/artipie/wiki/go),
    [Helm](https://github.com/artipie/artipie/wiki/helm),
    [Npm](https://github.com/artipie/artipie/wiki/npm),
    [NuGet](https://github.com/artipie/artipie/wiki/nuget),
    [Composer](https://github.com/artipie/artipie/wiki/composer),
    [Pip](https://github.com/artipie/artipie/wiki/pypi),
    [Rpm](https://github.com/artipie/artipie/wiki/rpm),
    [Debian](https://github.com/artipie/artipie/wiki/debian),
    [Anaconda](https://github.com/artipie/artipie/wiki/anaconda)
    and [others](https://github.com/artipie/artipie/wiki/Configuration-Repository#supported-repository-types)
  * It can host the data in the file system, [Amazon S3](https://aws.amazon.com/s3/) or in a storage defined by user

Learn more about Artipie in our [Wiki](https://github.com/artipie/artipie/wiki).

**Publications about Artipie:**
- [An Easy Way to Get Your Own Binary Repository](https://dzone.com/articles/easy-way-to-get-your-own-binary-repository#)
- [Private Remote Maven Repository With Artipie](https://dzone.com/articles/private-remote-maven-repository-with-artipie-1)
- [Deployment of NPM Repositories with Artipie](https://dev.to/andpopov/deployment-of-npm-repositories-with-artipie-30co)
- [How I use Artipie, a PyPI repo](https://opensource.com/article/22/12/python-package-index-repository-artipie)
- [Готовим приватные репозитории с помощью Artipie](https://habr.com/ru/post/687394/)

# Quickstart

Artipie is distributed as Docker container and as fat `jar`. The `jar` file can be downloaded on the
GitHub [release page](https://github.com/artipie/artipie/releases) and here is a
[Wiki page](https://github.com/artipie/artipie/wiki#how-to-start-artipie-service-with-a-maven-proxy-repository) describing how to start it.
The fastest way to start Artipie is by using Docker container. First, make sure you have already installed [Docker Engine](https://docs.docker.com/get-docker/).
Then, open command line and instruct Docker Engine to run Artipie container:

```bash
docker run -it -p 8080:8080 -p 8086:8086 artipie/artipie:latest
```

It'll start a new Docker container with latest Artipie version, the command includes mapping of two
ports: on port `8080` repositories are served and on port `8086` Artipie Rest API and Swagger
documentation is provided.
A new image generate default configuration, prints a list of running repositories, test
credentials and a link to the [Swagger](https://swagger.io/) documentation to console. To check
existing repositories using Artipie Rest API:
- go to Swagger documentation page `http://localhost:8086/api/index.html`,
choose "Auth token" in "Select a definition" list,
- generate and copy authentication token for user `artipie/artipie`,
- switch to "Repositories" definition, press "Authorize" button and paste the token
- then perform `GET /api/v1/repository/list` request.
Response should be a json list with three default repositories:
```json
[
  "my-bin",
  "my-docker",
  "my-maven"
]
```
Artipie server side (repositories) is served on `8080` port and is available on URI
`http://localhost:8080/{reponame}`, where `{reponame}` is the name of the repository.
Let's put some text data into binary repository:
```commandline
curl -X PUT -d 'Hello world!' http://localhost:8080/my-bin/test.txt
```
With this request we added file `test.txt` containing text "Hello world!" into repository. Let's check
it's really there:
```commandline
curl -X GET http://localhost:8080/my-bin/test.txt
```
"Hello world!" should be printed in console.

To dive in deeper into Artipie configuration, features, explore repositories and storages settings,
please, address our [Wiki](https://github.com/artipie/artipie/wiki).

Default server configuration in Docker Container refers to `/var/artipie/repo` to look up for
repository configurations. You may want to mount local configurations `<your-local-config-dir>`
to `/var/artipie/repo` to check and edit it manually.

> **Important:** for provided Artipie docker containers `<your-local-config-dir>` should have directory ownership set to `2021:2020`. To change it correctly use `sudo chown -R 2021:2020 <your-local-config-dir>`.

If you have any question or suggestions, do not hesitate to [create an issue](https://github.com/artipie/artipie/issues/new) or contact us in
[Telegram](https://t.me/artipie).
Artipie [roadmap](https://github.com/orgs/artipie/projects/3).

## How to contribute

Fork repository, make changes, send us a pull request. We will review
your changes and apply them to the `master` branch shortly, provided
they don't violate our quality standards. To avoid frustration, before
sending us your pull request please run full Maven build:

```
$ mvn clean install
```

To avoid build errors use Maven 3.2+ and please read
[contributing rules](https://github.com/artipie/artipie/blob/master/CONTRIBUTING.md).

Thanks to [FreePik](https://www.freepik.com/free-photos-vectors/party) for the logo.

## How to release

Artipie service is released in several formats:
- [docker image in DockerHub](https://hub.docker.com/r/artipie/artipie)
- [docker image based on Ubuntu](https://hub.docker.com/r/artipie/artipie-ubuntu)
- jar archive with dependencies in GitHub release page ([example](https://github.com/artipie/artipie/releases/tag/v0.30.1))
- asto modules, artipie-core, http-client, vertx-server and each adapter are released as jars into Maven central

All these distributions are created by GitHub [workflows](.github/workflows). To
publish release, push tag starting with `v` into this repository masted branch:
```bash
git tag v1.2.0
git push --tags origin
```


# Apache Hadoop Connectors

[![GitHub release](https://img.shields.io/github/release/GoogleCloudDataproc/hadoop-connectors.svg)](https://github.com/GoogleCloudDataproc/hadoop-connectors/releases/latest)
[![GitHub release date](https://img.shields.io/github/release-date/GoogleCloudDataproc/hadoop-connectors.svg)](https://github.com/GoogleCloudDataproc/hadoop-connectors/releases/latest)
[![codecov](https://codecov.io/gh/GoogleCloudDataproc/hadoop-connectors/branch/master/graph/badge.svg)](https://codecov.io/gh/GoogleCloudDataproc/hadoop-connectors)

Libraries and tools for interoperability between Apache Hadoop related
open-source software and Google Cloud Platform.

## Google Cloud Storage connector for Apache Hadoop (HCFS)

[![Maven Central](https://img.shields.io/maven-central/v/com.google.cloud.bigdataoss/gcs-connector/hadoop1.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:com.google.cloud.bigdataoss%20AND%20a:gcs-connector%20AND%20v:hadoop1-*)
[![Maven Central](https://img.shields.io/maven-central/v/com.google.cloud.bigdataoss/gcs-connector/hadoop2.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:com.google.cloud.bigdataoss%20AND%20a:gcs-connector%20AND%20v:hadoop2-*)
[![Maven Central](https://img.shields.io/maven-central/v/com.google.cloud.bigdataoss/gcs-connector.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.google.cloud.bigdataoss%22%20AND%20a:%22gcs-connector%22)

The Google Cloud Storage connector for Hadoop enables running MapReduce jobs
directly on data in Google Cloud Storage by implementing the Hadoop FileSystem
interface. For details, see [the README](gcs/README.md).

## Building the Cloud Storage connector

> Note that build requires Java 11+ and fails with older Java versions.

To build the connector for specific Hadoop version, run the following commands
from the main directory:

```bash
./mvnw clean package
```

In order to verify test coverage for specific Hadoop version, run the following
commands from the main directory:

```bash
./mvnw -P coverage clean verify
```

The Cloud Storage connector JAR can be found in `gcs/target/` directory.

## Adding the Cloud Storage connector to your build

Maven group ID is `com.google.cloud.bigdataoss` and artifact ID for Cloud
Storage connector is `gcs-connector`.

To add a dependency on Cloud Storage connector using Maven, use the following:

```xml
<dependency>
  <groupId>com.google.cloud.bigdataoss</groupId>
  <artifactId>gcs-connector</artifactId>
  <version>3.0.0</version>
</dependency>
```

## Resources

On **Stack Overflow**, use the tag
[`google-cloud-dataproc`](https://stackoverflow.com/tags/google-cloud-dataproc)
for questions about the connectors in this repository. This tag receives
responses from the Stack Overflow community and Google engineers, who monitor
the tag and offer unofficial support.


![MoSKito](https://www.moskito.org/static-int/img/logo.png "MoSKito Monitoring")

# What is MoSKito?

[![Join the chat at https://gitter.im/anotheria/moskito](https://badges.gitter.im/anotheria/moskito.svg)](https://gitter.im/anotheria/moskito?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.anotheria/moskito/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.anotheria/moskito)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)

MoSKito is an open source system for monitoring performance and behavior of Java web applications.

### [moskito.org](http://moskito.org) | [Documentation](https://confluence.opensource.anotheria.net/display/MSK/Home) | [Blog](https://anotheria.net/blog/category/msk/)

# What the Project does?
This Project is the heart of MoSKito system. It's what you need to fully monitor a single-node (one JVM) application: collect performance data, view, analyse and store some of it.

We also refer to this project as **MoSKito-Essential**, since it contains the most basic MoSKito functionality.

## Why is it good?

**Multi-purpose:** collects any possible type of performance data, including business-related (registrations, payments, conversion, etc).

**Non-invasive:** does not require any code change.

**Supports all major app servers:** Tomcat, Jetty, JBoss, Glassfish, WebLogic and others.

**Interval-based:** works simultaneously with short (from 1min) & long (up to 24h) time intervals, allowing instant comparison.

**Data privacy:** keeps collected data locally, with no 3rd party resources involved.

**Performance thresholds:** reports a selected parameter's health  with the traffic-light-like notification system.

**Analysis tools:** displays accumulated performance data in charts.

**Live profiling:** records user actions as system calls.

**Support for mobile platforms:** free iOS apps, Android app's coming soon.

[Read more about the Project and its features](https://confluence.opensource.anotheria.net/display/MSK/MoSKito-Essential+Overview)

## Why do I trust it?

1. MoSKito started at 2007 and never stopped developing since then.
2. Since 2008, it's absolutely stable and production-ready.
3. MoSKito's being used on many production systems ([Allyouneed](https://www.allyouneed.com), [friendscout24](http://www.friendscout24.de), [c-date.com](http://www.c-date.com), [parship.de](http://www.parship.de) and others).

## What's inside?

In MoSKito, we differentiate between Projects (which can be release as standalone applications) and Components (which are parts of a project in *maven* sense). [Read more...](http://blog.anotheria.net/?p=485&preview=true)

Below is the list of **components** that make up this Project.

[**MoSKito-Core**](https://github.com/anotheria/moskito/tree/master/moskito-core) is the main MoSKito engine that does all performance counting.

[**MoSKito-Web**](https://github.com/anotheria/moskito/tree/master/moskito-web) contains support for web applications: base classes for filters and servlets.

[**MoSKito-WebUI**](https://github.com/anotheria/moskito/tree/master/moskito-webui) is the embedded  web-based user interface.

[**MoSKito-Aop**](https://github.com/anotheria/moskito/tree/master/moskito-aop) contains annotations for *aop-style* integration for *AspectJ* and *spring-aop*.

[**MoSKito-Integration**](https://github.com/anotheria/moskito/tree/master/moskito-integration) offers specific integration tools for CDI (JBoss, Glassfish), SQL, etc.

# Install & Config

MoSKito doesn't need any operations with your code. It plugs into any application via filters, proxies, annotations, inheritance, AOP, class loaders or plain calling.

[Get it](https://www.moskito.org/download.html)

Setup & integrate
 * [Different configuration options](https://confluence.opensource.anotheria.net/display/MSK/Integration+Guide)
 * [Example for aop based integration for spring etc](http://blog.anotheria.net/msk/the-complete-moskito-integration-guide-step-1/)
 * [Without source code change with a javaagent](http://blog.anotheria.net/msk/monitoring-existing-application-using-moskito-javaagent/)

[Configure it](https://confluence.opensource.anotheria.net/display/MSK/Configuration+Guide)

**Enjoy!**

# [ChangeLog](https://confluence.opensource.anotheria.net/display/MSK/Change+Log)

# License

MoSKito is free and open source (MIT License). Use it as you wish.

[Read License](https://github.com/anotheria/moskito/blob/master/LICENSE)

# Project resources

#### [Webpage](http://www.moskito.org/)
#### [FAQ](https://confluence.opensource.anotheria.net/display/MSK/MoSKito+FAQ)
#### [Documentation](https://confluence.opensource.anotheria.net/display/MSK/MoSKito-Essential)

# Support and Feedback

**We're willing to help everyone.**

For any questions, write to [support@moskito.org](mailto: support@moskito.org).

# Other MoSKito Projects

### [MoSKito-Central](https://github.com/anotheria/moskito-central)

### [MoSKito-Control](https://github.com/anotheria/moskito-control)


# ![HUD Logo](https://raw.githubusercontent.com/zaproxy/zap-hud/main/assets/images/hud_logo_128px.png) ZAP Heads Up Display
![Release: Beta](https://img.shields.io/badge/release-beta-brightgreen.svg)
[![Known Vulnerabilities](https://snyk.io/test/github/zaproxy/zap-hud/badge.svg?targetFile=package.json)](https://snyk.io/test/github/zaproxy/zap-hud?targetFile=package.json)
[![CodeQL](https://github.com/zaproxy/zap-hud/actions/workflows/codeql.yml/badge.svg)](https://github.com/zaproxy/zap-hud/actions/workflows/codeql.yml)

# The HUD is no longer under active development

Unfortunately the HUD is no longer under active development due to the fact no one is focusing on it.

The HUD is a unique and innovative interface that we know some people love.
But it also needs a non trivial amount of maintenance and we just don’t have enough volunteers to maintain it right now.

If you would like to get involved please get in touch via the [ZAP HUD Group](https://groups.google.com/group/zaproxy-hud).

In order to keep maintaining the HUD we do not actually need anyone with Java experience - we have that covered.
We need someone with good Java Script experience and the confidence to dive into non trivial browser issues.

The HUD is a very unconventional project, and does unusual things in order to get around browser security features.
Browser changes often break the HUD in strange ways.

We know that the HUD no longer loads reliably all of the time in Firefox and Chrome, and the integration tests we have for it have been broken for some time.

If you are up for a challenge then [let us know](https://groups.google.com/group/zaproxy-hud)!

<img align="center" alt="Welcome to the HUD" src="assets/images/ZAP-HUD-Welcome-banner.png" width="100%">

The HUD is an interface that provides the functionality of ZAP **directly in the browser**.

Learn more:

* Blog: [Hacking with a Heads Up Display](https://segment.com/blog/hacking-with-a-heads-up-display/)
* Video: [The ZAP HUD - Usable Security Tooling](https://youtu.be/ztfgip-UhWw)
* Wiki: [Inside the HUD](../../wiki)

![](https://raw.githubusercontent.com/zaproxy/zap-hud/main/assets/images/hud-break.gif)

## Using the HUD

### Downloading
You can try out ZAP enabled with the HUD via any of:

* Download and run the latest [ZAP Release](https://www.zaproxy.org/download/)

or

* Run it from this repo using:
    ```
    git clone https://github.com/zaproxy/zap-hud.git
    cd zap-hud
    ./gradlew runZap
    ```

In all cases you will need Java 11+ installed.

You'll see the HUD Radar icon ![Radar Icon](https://raw.githubusercontent.com/zaproxy/zap-hud/main/src/main/resources/org/zaproxy/zap/extension/hud/resources/radar.png) in the toolbar. When the icon is selected the HUD will be added to your browser.

![Toolbar with Radar](https://raw.githubusercontent.com/zaproxy/zap-hud/main/assets/images/toolbar_radar.png)

### Starting the HUD
1. Quick Start: Select either `Firefox` or `Chrome` on the `Quick Start` tab and click on the `Launch Browser` button.

![](https://raw.githubusercontent.com/zaproxy/zap-hud/main/assets/images/ZAP-Launch-browser.png)

2. Manually: You can also configure Firefox or Chrome to proxy via ZAP manually, but you will need to import the ZAP Root CA Certificate (and may require other setting changes in up-to-date browsers).

The first time the HUD is launched you'll be prompted with the HUD Tutorial. We recommend that you follow the tutorial even if you have read the above blog post and watched the video.

## Getting Involved

ZAP is a community project and so we are always very keen to hear from anyone who'd like to contribute, just post to the [ZAP HUD Group](https://groups.google.com/group/zaproxy-hud)

We'd also love to hear some feedback, which you can also give via that group.

## Limitations

This is still early days and there are some known issues and limitations with the current release. Development on the HUD is active and we recommend you check in often for new features and improvements. :)

You should **NOT** use it on sites you do not trust!
However it **is** in scope for the ZAP bug bounty on [BugCrowd](https://bugcrowd.com/owaspzap)

Limitations while running:
* Only a limited amount of ZAP functionality is available
* Firefox has been tested more than Chrome, but both should work
* The code to support the HUD in multiple browser tabs is _very_ new so might be buggy
    * In particular don't close the first tab on Firefox or the HUD _will_ stop working (weird, we know. See [#199](https://github.com/zaproxy/zap-hud/issues/199) for details)
* Using the HUD with browser dev tools open can significantly affect performance
* Behaviour using the browser back button is currently undefined

Issues and todos in code:
* We're using Vue.js in dev mode, which prevents us from using a suitably strong CSP
* JavaScript code still needs to be formatted and linted
* Documentation could, of course, be better
* Async functions are handled as via Promises as opposed to using 'await' pattern

These lists aren't exhaustive, but do highlight some of the larger restrictions.


#  OpenTracks: a sport tracker

_OpenTracks_ is a sport tracking application that completely respects your privacy.

[![Awesome Humane Tech](https://codeberg.org/teaserbot-labs/delightful-humane-design/raw/branch/main/humane-tech-badge.svg)](https://delightful.club/delightful-humane-design/#health)

        Free (F-Droid)
        Free (Nightly for F-Droid)
        Donations

Translations are hosted on
hosted.weblate.org.

## Screenshots

## Features
* __Tracking:__ track your sport and outdoor activities
* __Voice announcements__
* __Photos and Markers:__ mark interesting locations while tracking
* __Export:__
    * export tracks either as [KMZ 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html) (incl. photos), [KML 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html), or [GPX 1.1](https://www.topografix.com/GPX/1/1/)
    * export automatically after each recording (e.g., to sync via [Nextcloud](https://nextcloud.com/))
    * avoid duplication: each exported file contain a random unique identifier (i.e., `opentracks:trackid`)
* __Altitude:__
    * gain/loss via barometric sensor (internal if present or via Bluetooth's Environmental Sensing Service)
    * shown in EGM2008 (above mean sea level); exported as WGS84
* __Bluetooth LE sensors:__
    * heart rate
    * cycling: speed and distance
    * cycling: cadence
    * cycling: power meter
    * running: speed and cadence
    * support for BLE sensor training only (i.e., without GPS) for indoor training

  An overview of tested sensors: [README_TESTED_SENSORS.md](README_TESTED_SENSORS.md)

### Gadgetbridge integration

OpenTracks can be used with [Gadgetbridge](https://www.gadgetbridge.org/):
* shows statistics via notification on smart watches (requires Gadgetbridge 0.56.1 or later), and
* Gadgetbridge's GPX exporter generates `opentracks:trackid` to avoid duplication (Gadgetbridge 0.53.0 or later).

### Privacy
* __No Internet access:__ Internet is not used
* __No advertising__
* __No in-app analytics__
* __No use of Google Play Services__

__Only required permissions:__
* _ACCESS_FINE_LOCATION_: required to use the GPS.
* _ACCESS_BACKGROUND_LOCATION_: required to start recording with GPS while phone is in standby. (e.g. when triggered by Public API from an external device)

### Public API

OpenTracks includes an API for starting/stopping recording by another installed application (e.g., [Automate](https://llamalab.com/automate/), [Tasker](https://tasker.joaoapps.com), or [Easer](https://github.com/renyuneyun/Easer)).
The API can be invoked by sending an explicit Intent to start an activity.

`Package`  (depends on the variant installed):
* F-Droid: `de.dennisguse.opentracks`
* GooglePlay: `de.dennisguse.opentracks.playStore`
* Debug: `de.dennisguse.opentracks.debug`
* Nightly: `de.dennisguse.opentracks.nightly`

`Class`:

* **Start a recording:**  `de.dennisguse.opentracks.publicapi.StartRecording`
* **Stop a recording:**  `de.dennisguse.opentracks.publicapi.StopRecording`

For testing via adb: `adb shell am start -e someParameter someValue -n "package/class"`

`StartRecording` supports the following parameters:

* Set track data: `TRACK_NAME`, `TRACK_DESCRIPTION`, `TRACK_CATEGORY`, and `TRACK_ICON` (non-localized identifier see [/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38](/src/main/java/de/dennisguse/opentracks/util/TrackIconUtils.java#L38)).
  NOTE: if `TRACK_ICON` is not present, `TRACK_CATEGORY` will be used to determine the icon (localized).
* Send recorded data to another application via _Dashboard API_: `STATS_TARGET_PACKAGE` and `STATS_TARGET_CLASS`

The Public API is disabled by default to protect the user's privacy, but it can easily be enabled in the settings.

## File formats compatibility with open-source software
|                                                           | [GPX 1.1](https://www.topografix.com/GPX/1/1/)                                 | [KML 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html) | [KMZ 2.3](https://docs.opengeospatial.org/is/12-007r2/12-007r2.html) |
|-----------------------------------------------------------|--------------------------------------------------------------------------------|----------------------------------------------------------------------|----------------------------------------------------------------------|
| [OpenLayers 7.1.0](https://openlayers.org/)               | ?                                                                              | [no](https://github.com/openlayers/openlayers/issues/14104)          | [no](https://github.com/openlayers/openlayers/issues/14104)          |
| [Golden Cheetah 3.5](https://www.goldencheetah.org/)      | ?                                                                              | [no](https://github.com/GoldenCheetah/GoldenCheetah/issues/4271)     | [no](https://github.com/GoldenCheetah/GoldenCheetah/issues/4271)     |
| [GpxPod](https://apps.nextcloud.com/apps/gpxpod)          | ?                                                                              | ?                                                                    | ?                                                                    |
| [OsmAnd](https://github.com/osmandapp/OsmAnd)             | ?                                                                              | [no](https://github.com/osmandapp/OsmAnd/issues/15271)               | [no](https://github.com/osmandapp/OsmAnd/issues/15271)               |
| [FitTrackee](https://github.com/SamR1/FitTrackee)         | yes                                                                            | n/a                                                                  | n/a                                                                  |
| [SportsTracker](https://github.com/ssaring/sportstracker) | yes, [single tracks only](https://github.com/ssaring/sportstracker/issues/260) | no                                                                   | no                                                                   |
| [ExifTool](https://exiftool.org)                          | [yes](https://exiftool.org/forum/index.php?topic=15972.0)                      | no                                                                   | no                                                                   |

## Dashboard API (incl. map)

As of v3.3.1, OpenTracks supports custom dashboards for displaying previously recorded and live
tracks.

The reference implementation is [OSMDashboard](https://github.com/OpenTracksApp/OSMDashboard), which
presents an OpenStreetMap map (showing the current track, incl. updates). The Dashboard API is also
used by [Gadgetbridge](https://codeberg.org/Freeyourgadget/Gadgetbridge/) for displaying live track
statistics on supported wearables.

Alternatively, recorded tracks can be shared as KMZ/GPX with installed applications (
e.g., [OsmAnd](https://play.google.com/store/apps/details?id=net.osmand)). However, this is rather
slow and does not provide updates while recording.

The developer documentation is in [README_API.md](README_API.md).

## Project history

_OpenTracks_ is based upon Google _My Tracks app_ ([code](https://code.google.com/archive/p/mytracks/)).
_My Tracks_ was initially released by Google in 2010 as [open-source software](http://google-latlong.blogspot.fr/2010/05/code-for-my-tracks-is-now-yours.html).
In 2016, [Google decided to discontinue](https://support.google.com/maps/answer/6333516) _My Tracks_ and stopped distributing it via the Google Play store in April 2016.
Then [Plonk42](https://github.com/plonk42) conducted some maintenance work until 2016, so _My Tracks_ could still be used (based upon version _Google's MyTracks_ version 2.0.6).
Plonk42's version is available [here](https://github.com/Plonk42/mytracks).
In 2019, _OpenTracks_ was forked from Plonk42's _My Tracks_ and major rework was conducted.

Rework of _OpenTracks_ included:
* removing Google's analytics code,
* removing integration into Google Drive,
* removing Google Maps integration,
* removing Google Earth integration,
* removing use of Google Play service,
* removing calorie estimation and activity estimation,
* removing support for ANT+ and Classic Bluetooth,
* adding support for Bluetooth LE heart rate sensors,
* removing Protobuf (store sensor data in SQLite columns directly), and
* removing Android Service API for other apps.

Artwork, logos and user interface remained more or less unchanged.

More information about _Google My Tracks_:
* [Wikipedia page](https://en.wikipedia.org/wiki/MyTracks)
* [Google code archive](https://code.google.com/archive/p/mytracks/)


# Code snippets for the Twilio API documentation
[![Build Status](https://travis-ci.org/TwilioDevEd/api-snippets.svg?branch=master)](https://travis-ci.org/TwilioDevEd/api-snippets)

## Guidelines

1. Snippets should use environmental variables to store user account information
   instead of placeholders. For example (in NodeJS):
   ```
   accountSid = process.env.TWILIO_ACCOUNT_SID
   ```
   Instead of:
   ```
   accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
   ```
   As the latter impose a high security risk for users who push their own credentials
   on public repositories.

1. Critical user account information that should be stored on environmental variables is:
    - Account SID
    - Sub accounts SIDs
    - Authentication Token
    - API key SID
    - API key Secret

   Any other information such as Call SID, etc. can have placeholders on them:

   ```
   Call SID:    CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   ```

   In the case of phone numbers, the following should be used:

   ```
   Destination Phone Number: +15558675310
   From/Twilio Number: +15017122661
   ```

1. **Snippet file names are important**. A snippet's file extension is the only
   way to mark them for a specific language. This is important because the
   language will be visible on the docs. Also, you must mark snippets with the
   twilio-client version that is used in that particular snippet.

   For example, a java snippet that uses `twilio-java` v7.x should be named as:
   ` snippet-example-1.7.x.java`

   The same applies to the rest of languages and library versions, and this is
   the list of currently supported languages and versions:

   ```
   snippet-example-1.6.x.java
   snippet-example-1.7.x.java
   snippet-example-1.2.x.js
   snippet-example-1.5.x.js
   snippet-example-1.7.x.rb
   snippet-example-1.6.x.cs
   snippet-example-1.4.x.php
   snippet-example-1.8.x.php
   snippet-example-1.9.x.py
   ```

   And the full structure should look like this:

   ```
   rest/
   |-- resource-example/
       └── snippet-example-1/
           |-- output/
           |   └── snippet-example-1.json
           |-- snippet-example-1.7.x.java
           |-- snippet-example-1.<sdk-version>.x.<language>
           |-- snippet-example-1.json.curl
           |-- snippet-example-1.xml.curl
           └── meta.json
   ```

   Client version is important, as that is how the test harness knows which
   version of the client it should use for testing.

## Continuous Integration
All snippets are run in a container-based environment for each language
(see [.travis.yml](.travis.yml#L32) file), so the first check we do is for
syntax error.

There're two kind of snippets we test:
- **API/REST snippets:**
  For these cases we only check syntax error. But, these snippets also do a
  request to Twilio's endpoints, so we mock this behaviour using a
  [fake API server](https://github.com/TwilioDevEd/twilio-api-faker).

  **Note:** The test doesn't check if the http request body is well formed to
  do what the intended snippet is supposed to do, e.g.,
  if you have a snippet doing `resource.update(propA=True)`, but the expected
  result is to update `propB`, the test may go green because there's no syntax
  error. That's because some attributes are optional to update, so the request
  body may or may not has the parameters needed to update the resource
  according to the expected result.

- **TwiML snippets:**
  When running TwiML snippets, the snippets should print the `xml` result to the
  standard output, so we can capture that output and compare it with the
  expected `xml` sample. We read this `/output/sample.xml` file which is
  placed in the same folder of the snippet.

### How to mark specific folders as testable
If you want a snippet folder to be tested, there are two ways to mark it as
testable:

1. Using a `meta.json` file:
   This file is required and must live in all snippet folders, inside you
   can enable its specific folder for testing, adding `"testable": true`
   like so:

   ```json
   {
     "title": "Snippet title",
     "type": "server",
     "testable": true
   }
   ```

1. Using a `test.yml` file:
   This file is optional and can live inside any folder, it's used to specify
   a deep recursive testing for all folders inside. So, if the marked directory
   contains several snippets, all of them will be marked as testable
   recursively. You just need to add `testable: true` to the file like so:

   ```yaml
   testable: true
   ```

**Notes:**
- For testing TwiML snippets the option available is:

  ```
  meta.json -> "test_output": true
  test.yml -> test_output: true
  ```

  This will compare the output of the snippet with the `output/sample.xml` file
  inside the same directory of the snippet.

- You can mark a directory or a snippet to be not testable too.
  ```
  meta.json -> "testable": false
  test.yml -> testable: false
  ```
  This way, you can mark snippets or directories to be tested or not,
  by exception.

- For a snippet to be testable, it has to contain the basic things a program in
  that language should have. For example in Java, the code snippet should have a
  public class and a `main` method in it.

- Specific dependencies are supported for snippets. If a new dependency is
  introduced, the testing scripts should be modified to support it.

### Local Snippet Testing

The next steps describe how to run the snippets test locally in a UNIX based
operating system (examples will be provided for Debian based Linux distributions
and OSX using [Homebrew](http://brew.sh/)). **This has not been tested in a
Windows OS.**

#### Setting Up the Environment

Make sure you have the following dependencies installed on your system.

1. Install Node.js. The best option for this is to use
   [nvm](https://github.com/creationix/nvm#install-script)

   ```bash
   curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash \
   export NVM_DIR="$HOME/.nvm" \
   [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" \
   nvm install --lts
   npm install
   ```

1. Install Python and PIP.

   - On Linux:
   ```bash
   sudo apt-get install python-pip python2.7-dev build-essential \
   sudo pip install --upgrade pip
   ```

   - On OSX:

   ```bash
   brew install python
   ```

   Once you have python and pip ready, run the command below

   ```
   pip install -r requirements.txt
   ```

1. Install JDK8 and Gradle. The best option for this is to use
   [sdkman](http://sdkman.io/install.html)

   ```bash
   curl -s "https://get.sdkman.io" | bash \
   source "$HOME/.sdkman/bin/sdkman-init.sh" \
   sdk install java \
   sdk install gradle
   ```

1. Install PHP 5 with CURL.

   - On Linux:

   ```bash
   sudo add-apt-repository ppa:ondrej/php -y
   sudo apt-get update
   sudo apt-get install -y --force-yes php5.6
   ```

   - On OSX:

   ```bash
   brew install php56
   ```

   Once you have php ready, please install
   [Composer](https://getcomposer.org/download/)

   ```bash
   curl -sS https://getcomposer.org/installer | \
   sudo php -- --install-dir=/usr/local/bin --filename=composer
   ```

1. Install Ruby and RubyGems.

   ```bash
   curl -sSL https://get.rvm.io | bash -s stable --ruby
   ```

1. Install MonoDevelop.

   - On Linux (http://www.mono-project.com/docs/getting-started/install/linux/#usage):
   ```bash
   sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
   echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list \
   sudo apt-get update \
   sudo apt-get install mono-complete -y
   ```

   - On OSX:
   ```bash
   brew install mono
   ```

#### Install Language Dependencies

The testing and installation scripts use ruby. Before installing language
dependencies you need to install the following gems:

```bash
gem install json colorize nokogiri
```

You can use the following command to install language dependencies, which will
download the latest version of the helper libraries for each language:

```bash
ruby tools/snippet-testing/model/dependency.rb
```

**Note:** That file specifies the latest version for every helper library for
each language, but for java the files to specify the versions are located in:
`tools/snippet-testing/language_handler/file-templates/build.<version>.gradle`
where `<version>` should be `6` or `7`.

Another option is to use the `snippet_tester.rb` file and pass the `-i` flag,
this will try to install whatever dependency is needed before running the tests:

```bash
ruby tools/snippet-testing/snippet_tester.rb -i
```

**Note:** This will also install missing dependencies before running the tests.
`sudo` will be used within the dependency installation script so you might need
to enter your password.
**DO NOT** run the whole script with `sudo` as it would install dependencies for
the wrong user.

#### Run the Tests

1. Clone and run the fake-api server in a different terminal session.

   ```bash
   git clone git@github.com:TwilioDevEd/twilio-api-faker.git \
   cd twilio-api-faker \
   sudo gradle run
   ```

1. Make your system trust the fake server's self signed certificate.

   - On Linux:
   ```bash
   sudo apt-get install ca-certificates \
   sudo cp twilio-api-faker/keystore/twilio_fake.pem /usr/local/share/ca-certificates/twilio_fake.crt \
   sudo update-ca-certificates
   ```

   - On OSX:
   Use the system's keychain to trust the provided certificate in the `keystore`
   directory of the fake-api repo. Go [here](https://support.apple.com/kb/PH18677?locale=en_US)
   for more information.

1. Change your hosts file.

   Edit your `/etc/hosts` file. Add the following entries:
   ```
   127.0.0.1 api.twilio.com
   127.0.0.1 chat.twilio.com
   127.0.0.1 fax.twilio.com
   127.0.0.1 ip-messaging.twilio.com
   127.0.0.1 lookups.twilio.com
   127.0.0.1 messaging.twilio.com
   127.0.0.1 monitor.twilio.com
   127.0.0.1 notifications.twilio.com
   127.0.0.1 notify.twilio.com
   127.0.0.1 pricing.twilio.com
   127.0.0.1 preview.twilio.com
   127.0.0.1 sync.twilio.com
   127.0.0.1 taskrouter.twilio.com
   127.0.0.1 video.twilio.com
   127.0.0.1 wireless.twilio.com
   ```

1. Make a copy of the `.env.example` file.

   ```bash
   cp .env.example .env
   ```

1. Set the necessary environment variables.

   Change environment variables in the `.env` file to match your configuration
   and then use the `source` command to export the variables.

   ```bash
   source .env
   ```

1. Finally, run the tests.

   ```bash
   ruby tools/snippet-testing/snippet_tester.rb
   ```

   **Note:** Remember to mark the directories you want to be tested with a
   `test.yaml` file. For more information go [here](#continuous-integration).

   You can also specify a directory to be tested (relative or absolute path).
   If a directory is specified, then the default testing behavior for that
   directory and everything it contains is `true`.

   ```bash
   ruby tools/snippet-testing/snippet_tester.rb -d rest/making-calls
   ```


# jte: Java Template Engine

<img align="left" alt="jte" src="docs/jte.svg" width="128">jte (**J**ava **T**emplate **E**ngine) is a secure and lightweight template engine for Java and Kotlin. jte is designed to introduce as few new keywords as possible and builds upon existing language features, making it straightforward to reason about what a template does. The [IntelliJ plugin][intellij-plugin] offers full completion and refactoring support for Java parts and jte keywords.

[![Build Status](https://github.com/casid/jte/workflows/Test%20all%20JDKs%20on%20all%20OSes/badge.svg)](https://github.com/casid/jte/actions)
[![Coverage Status](https://codecov.io/gh/casid/jte/branch/main/graph/badge.svg)](https://codecov.io/gh/casid/jte)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://raw.githubusercontent.com/casid/jte/master/LICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/gg.jte/jte.svg)][maven-central]

🚀 jte 3 is here! Check out the [release notes](https://github.com/casid/jte/releases/tag/3.0.0) for exciting new features, improved performance, and streamlined dependencies.

## Features

- Intuitive and easy syntax, you'll rarely need to check the [documentation](https://jte.gg/)
- Write plain Java or Kotlin for expressions. You don't need to learn yet another expression language
- Context-sensitive [HTML escaping](https://jte.gg/html-rendering/#html-escaping) at compile time
- [IntelliJ plugin][intellij-plugin] with completion and refactoring support
- Hot reloading of templates during development
- Blazing fast execution ([see benchmarks](https://jte.gg/#performance))

## tl;dr

jte gives you the same productive, typesafe experience you're used to from writing Java or Kotlin. Here is a quick demo of the [IntelliJ jte plugin][intellij-plugin]:

![jte plugin in IntelliJ](docs/jte-intellij.gif)

## Documentation

Documentation lives in the [jte website](https://jte.gg/).

## Framework integration

- [Javalin](https://javalin.io/tutorials/jte)
- [Eclipse Vert.x](https://github.com/vert-x3/vertx-web/tree/master/vertx-template-engines/vertx-web-templ-jte)
- [Spring Boot](https://github.com/casid/jte-spring-boot-demo)
- [Spring Web MVC](https://github.com/izogfif/demo-spring-jte)
- [Ktor](https://ktor.io/docs/jte.html)
- [Micronaut](https://micronaut-projects.github.io/micronaut-views/latest/guide/#jte)
- [Quarkus](https://github.com/renannprado/quarkus-jte-extension/)
- [Severell](https://github.com/severell/severell-jte-plugin)
- [http4k](https://www.http4k.org/guide/reference/templating)

## Websites rendered with jte

- [Mazebert TD (game website)](https://mazebert.com)
- [Javalin website example with login and multiple languages](https://github.com/casid/jte-javalin-tutorial)
- [FlowCrypt Admin Panel](https://flowcrypt.com/docs/technical/enterprise-admin-panel/usage/ui-overview.html)

[intellij-plugin]: https://plugins.jetbrains.com/plugin/14521-jte "IntelliJ jte Plugin"
[template-benchmark]: https://github.com/casid/template-benchmark/ "Template Benchmarks"
[maven-central]: https://search.maven.org/artifact/gg.jte/jte "jte in Maven Central"


# librespot-java
[![Maven build / deploy](https://github.com/librespot-org/librespot-java/actions/workflows/maven.yml/badge.svg?branch=dev)](https://github.com/librespot-org/librespot-java/actions/workflows/maven.yml)
[![time tracker](https://wakatime.com/badge/github/librespot-org/librespot-java.svg)](https://wakatime.com/badge/github/librespot-org/librespot-java)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/xyz.gianlu.librespot/librespot-java/badge.svg)](https://maven-badges.herokuapp.com/maven-central/xyz.gianlu.librespot/librespot-java)

`librespot-java` is a port of [librespot](https://github.com/librespot-org/librespot), originally written in Rust, which has evolved into the most up-to-date open-source Spotify client. Additionally, this implementation provides a useful API to request metadata or control the player, more [here](api).

## Disclaimer!
We (the librespot-org organization and me) **DO NOT** encourage piracy and **DO NOT** support any form of downloader/recorder designed with the help of this repository and in general anything that goes against the Spotify ToS. If you're brave enough to put at risk this entire project, just don't publish it. This is meant to provide support for all those devices that are not officially supported by Spotify.

> [!WARNING]
> `librespot-java` is no longer being actively developed. Development efforts have been moved to [go-librespot](https://github.com/devgianlu/go-librespot) to provide a better experience for embedded devices. No features or fixes requiring a lot of effort will be done here. If you are not using a feature specific to this project, you are encouraged to move to `go-librespot`.

## Features
This client is pretty much capable of playing anything that's available on Spotify.
Its main features are:
- Tracks and podcasts/episodes playback
- Stations and dailymixes support
- Local content caching
- Zeroconf (Spotify Connect)
- Gapless playback
- Mixed playlists (cuepoints and transitions)
- DACP metadata pipe
- Execute commands for various events
- Android compatible (see [librespot-android](https://github.com/devgianlu/librespot-android))
- Optional HTTP API (see [librespot-api](api))
- Supports custom sinks and decoders
- ~~Actively developed and up-to-date with the latest internal API~~

## The library
The `lib` module provides all the necessary components and tools to interact with Spotify. More [here](lib).

## The player
The `player` module provides the full player experience. You can use it from Spotify Connect, and it operates in full headless mode. More [here](player).

## Protobuf generation
The compiled Java protobuf definitions aren't versioned, therefore, if you want to open the project inside your IDE, you'll need to run `mvn compile` first to ensure that all the necessary files are created. If the build fails due to missing `protoc` you can install it manually and use the `-DprotocExecutable=/path/to/protoc` flag.
The `com.spotify` package is reserved for the generated files.

## Logging
The application uses Log4J for logging purposes, the configuration file is placed inside `lib/src/main/resources`, `player/src/main/resources` or `api/src/main/resources` depending on what you're working with. You can also toggle the log level with `logLevel` option in the configuration.

## Snapshots
Snapshots for all variants are available [here](https://oss.sonatype.org/content/repositories/snapshots/xyz/gianlu/librespot/).

## Related Projects
- [go-librespot](https://github.com/devgianlu/go-librespot)
- [librespot](https://github.com/librespot-org/librespot)
- [ansible-role-librespot](https://github.com/xMordax/ansible-role-librespot/tree/master) - Ansible role that will build, install and configure librespot-java.
- [spocon](https://github.com/spocon/spocon) - Install librespot-java from APT
- [librespot-android](https://github.com/devgianlu/librespot-android) - Run librespot-java on your Android device
- [MMM-LibrespotJava](https://github.com/l3d00m/MMM-LibrespotJava) - Show the current librespot-java playback on your [MagicMirror](https://github.com/MichMich/MagicMirror)

# Special thanks
- All the developers of [librespot](https://github.com/librespot-org/librespot) which started this project in Rust
- All the contributors of this project for testing and fixing stuff
-  that provided a free license for their [Java Profiler](https://www.yourkit.com/java/profiler/)


[![GitHub issues](https://img.shields.io/github/issues/CraftTweaker/CraftTweaker?style=flat-square)](https://github.com/CraftTweaker/CraftTweaker/issues)
[![GitHub license](https://img.shields.io/github/license/CraftTweaker/CraftTweaker?color=0690ff&style=flat-square)](https://github.com/CraftTweaker/CraftTweaker/blob/1.21/LICENSE)
[![Jenkins](https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fci.blamejared.com%2Fjob%2FJared%2Fjob%2FMinecraft%2520Mods%2Fjob%2FCraftTweaker%2Fjob%2F1.21%2F&style=flat-square)](https://ci.blamejared.com/job/Jared/job/Minecraft%20Mods/job/CraftTweaker/job/1.21/)
[![Discord](https://img.shields.io/badge/Discord-%237289DA?style=flat-square&logo=Discord&logoColor=white)](https://discord.blamejared.com/)
[![](http://cf.way2muchnoise.eu/crafttweaker.svg?badge_style=flat)](https://minecraft.curseforge.com/projects/crafttweaker)

## Table of Contents

- [Introduction](#introduction)
- [Feedback](#feedback)
- [License](#license)
- [Setup](#setup)
- [Build](#build)
- [Maven](#maven)

## Introduction

CraftTweaker is a Minecraft mod which allows modpacks and servers to customize the game. With CraftTweaker you can change recipes, script events, add new commands and even change item properties! When used with other mods the possibilities become endless! Ranging from custom machine recipes to entirely new blocks and items!

## Feedback

If you're looking for help with the mod, or just want to come hang out, we have a [Discord server](https://discord.blamejared.com).
If you're running into a bug or have a feature request, please don't be afraid to make an [issue on the tracker](https://github.com/CraftTweaker/CraftTweaker/issues).

## License

Distributed under the MIT License. See the [LICENSE](https://github.com/CraftTweaker/CraftTweaker/blob/1.21/LICENSE) file for more information.

## Setup

To set up the CraftTweaker development environment you must clone the repo and initialize the submodule.

```bash
git clone --recurse-submodules https://github.com/CraftTweaker/CraftTweaker.git
```

After the project has been cloned and initialized you can directly import it into your IDE of choice.

## Build

Building the project is as easy as running a Gradle command!
Simply run:
```bash
gradlew build
```
and the outputted `.jar` files will be put in `build/libs/` folder of each subproject (`Common/build/libs/`, `Fabric/build/libs/` and `Forge/build/libs/`).

CraftTweaker also has automated markdown documentation, the output of that will be in the `docsOut/` folder.

## Maven

Every push to this repository is built and published to the [BlameJared](https://maven.blamejared.com) maven, to use these builds in your project, first add the BlameJared maven to your `repositories` block in your build.gradle file like so:

```groovy
repositories {
    maven {
        url = 'https://maven.blamejared.com'
        name = 'BlameJared Maven'
    }
}
```

Then, depending on what modloader you are using, you can use the following snippets, just replace `[VERSION]` with the latest version for each artifact.

### Fabric [![Maven](https://img.shields.io/maven-metadata/v?color=C71A36&label=Latest%20version&logo=Latest%20version&metadataUrl=https%3A%2F%2Fmaven.blamejared.com%2Fcom%2Fblamejared%2Fcrafttweaker%2FCraftTweaker-fabric-1.21%2Fmaven-metadata.xml&style=flat-square)](https://maven.blamejared.com/com/blamejared/crafttweaker/CraftTweaker-fabric-1.21/)

```groovy
dependencies {
    modCompileOnly('com.blamejared.crafttweaker:CraftTweaker-fabric-1.21:[VERSION]')
    // Example:
    // modCompileOnly('com.blamejared.crafttweaker:CraftTweaker-fabric-1.21:17.0.0')
}
```

### Forge [![Maven](https://img.shields.io/maven-metadata/v?color=C71A36&label=Latest%20version&logo=Latest%20version&metadataUrl=https%3A%2F%2Fmaven.blamejared.com%2Fcom%2Fblamejared%2Fcrafttweaker%2FCraftTweaker-forge-1.21%2Fmaven-metadata.xml&style=flat-square)](https://maven.blamejared.com/com/blamejared/crafttweaker/CraftTweaker-forge-1.21/)

```groovy
    compileOnly(fg.deobf('com.blamejared.crafttweaker:CraftTweaker-forge-1.21:[VERSION]'))
    // Example:
    // compileOnly(fg.deobf('com.blamejared.crafttweaker:CraftTweaker-forge-1.21:17.0.0'))
}
```

### Common [![Maven](https://img.shields.io/maven-metadata/v?color=C71A36&label=Latest%20version&logo=Latest%20version&metadataUrl=https%3A%2F%2Fmaven.blamejared.com%2Fcom%2Fblamejared%2Fcrafttweaker%2FCraftTweaker-common-1.21%2Fmaven-metadata.xml&style=flat-square)](https://maven.blamejared.com/com/blamejared/crafttweaker/CraftTweaker-common-1.21/)

If you are in a multi-modloader environment (Such as [MultiLoader](https://github.com/jaredlll08/MultiLoader-Template)), you can bring the Common artifact (code that does not depend on any specific mod loader but rather just the vanilla game) into your Common project like so:

```groovy
dependencies {
    compileOnly('com.blamejared.crafttweaker:CraftTweaker-common-1.21:[VERSION]')
    // Example:
    // compileOnly('com.blamejared.crafttweaker:CraftTweaker-common-1.21:17.0.0')
}
```


# Bank of Anthos

![GitHub branch check runs](https://img.shields.io/github/check-runs/GoogleCloudPlatform/bank-of-anthos/main)
[![Website](https://img.shields.io/website?url=https%3A%2F%2Fcymbal-bank.fsi.cymbal.dev%2F&label=live%20demo
)](https://cymbal-bank.fsi.cymbal.dev)

**Bank of Anthos** is a sample HTTP-based web app that simulates a bank's payment processing network, allowing users to create artificial bank accounts and complete transactions.

Google uses this application to demonstrate how developers can modernize enterprise applications using Google Cloud products, including: [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine), [Anthos Service Mesh (ASM)](https://cloud.google.com/anthos/service-mesh), [Anthos Config Management (ACM)](https://cloud.google.com/anthos/config-management), [Migrate to Containers](https://cloud.google.com/migrate/containers), [Spring Cloud GCP](https://spring.io/projects/spring-cloud-gcp), [Cloud Operations](https://cloud.google.com/products/operations), [Cloud SQL](https://cloud.google.com/sql/docs), [Cloud Build](https://cloud.google.com/build), and [Cloud Deploy](https://cloud.google.com/deploy). This application works on any Kubernetes cluster.

If you are using Bank of Anthos, please ★Star this repository to show your interest!

**Note to Googlers:** Please fill out the form at [go/bank-of-anthos-form](https://goto2.corp.google.com/bank-of-anthos-form).

## Screenshots

| Sign in                                                                                | Home                                                                                |
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| [![Login](/docs/img/login.png)](/docs/img/login.png) | [![User Transactions](/docs/img/transactions.png)](/docs/img/transactions.png) |

## Service architecture

![Architecture Diagram](/docs/img/architecture.png)

| Service                                                 | Language      | Description                                                                                |
| ------------------------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| [frontend](/src/frontend)                              | Python        | Exposes an HTTP server to serve the website. Contains login page, signup page, and home page.                                                |
| [ledger-writer](/src/ledger/ledgerwriter)              | Java          | Accepts and validates incoming transactions before writing them to the ledger.                                                               |
| [balance-reader](/src/ledger/balancereader)            | Java          | Provides efficient readable cache of user balances, as read from `ledger-db`.                                                                |
| [transaction-history](/src/ledger/transactionhistory)  | Java          | Provides efficient readable cache of past transactions, as read from `ledger-db`.                                                            |
| [ledger-db](/src/ledger/ledger-db)                     | PostgreSQL    | Ledger of all transactions. Option to pre-populate with transactions for demo users.                                                         |
| [user-service](/src/accounts/userservice)              | Python        | Manages user accounts and authentication. Signs JWTs used for authentication by other services.                                              |
| [contacts](/src/accounts/contacts)                     | Python        | Stores list of other accounts associated with a user. Used for drop down in "Send Payment" and "Deposit" forms.                              |
| [accounts-db](/src/accounts/accounts-db)               | PostgreSQL    | Database for user accounts and associated data. Option to pre-populate with demo users.                                                      |
| [loadgenerator](/src/loadgenerator)                    | Python/Locust | Continuously sends requests imitating users to the frontend. Periodically creates new accounts and simulates transactions between them.      |

## Interactive quickstart (GKE)

The following button opens up an interactive tutorial showing how to deploy Bank of Anthos in GKE:

[![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://ssh.cloud.google.com/cloudshell/editor?show=ide&cloudshell_git_repo=https://github.com/GoogleCloudPlatform/bank-of-anthos&cloudshell_workspace=.&cloudshell_tutorial=extras/cloudshell/tutorial.md)

## Quickstart (GKE)

1. Ensure you have the following requirements:
   - [Google Cloud project](https://cloud.google.com/resource-manager/docs/creating-managing-projects#creating_a_project).
   - Shell environment with `gcloud`, `git`, and `kubectl`.

2. Clone the repository.

   ```sh
   git clone https://github.com/GoogleCloudPlatform/bank-of-anthos
   cd bank-of-anthos/
   ```

3. Set the Google Cloud project and region and ensure the Google Kubernetes Engine API is enabled.

   ```sh
   export PROJECT_ID=<PROJECT_ID>
   export REGION=us-central1
   gcloud services enable container.googleapis.com \
     --project=${PROJECT_ID}
   ```

   Substitute `<PROJECT_ID>` with the ID of your Google Cloud project.

4. Create a GKE cluster and get the credentials for it.

   ```sh
   gcloud container clusters create-auto bank-of-anthos \
     --project=${PROJECT_ID} --region=${REGION}
   ```

   Creating the cluster may take a few minutes.

5. Deploy Bank of Anthos to the cluster.

   ```sh
   kubectl apply -f ./extras/jwt/jwt-secret.yaml
   kubectl apply -f ./kubernetes-manifests
   ```

6. Wait for the pods to be ready.

   ```sh
   kubectl get pods
   ```

   After a few minutes, you should see the Pods in a `Running` state:

   ```
   NAME                                  READY   STATUS    RESTARTS   AGE
   accounts-db-6f589464bc-6r7b7          1/1     Running   0          99s
   balancereader-797bf6d7c5-8xvp6        1/1     Running   0          99s
   contacts-769c4fb556-25pg2             1/1     Running   0          98s
   frontend-7c96b54f6b-zkdbz             1/1     Running   0          98s
   ledger-db-5b78474d4f-p6xcb            1/1     Running   0          98s
   ledgerwriter-84bf44b95d-65mqf         1/1     Running   0          97s
   loadgenerator-559667b6ff-4zsvb        1/1     Running   0          97s
   transactionhistory-5569754896-z94cn   1/1     Running   0          97s
   userservice-78dc876bff-pdhtl          1/1     Running   0          96s
   ```

7. Access the web frontend in a browser using the frontend's external IP.

   ```sh
   kubectl get service frontend | awk '{print $4}'
   ```

   Visit `http://EXTERNAL_IP` in a web browser to access your instance of Bank of Anthos.

8. Once you are done with it, delete the GKE cluster.

   ```sh
   gcloud container clusters delete bank-of-anthos \
     --project=${PROJECT_ID} --region=${REGION}
   ```

   Deleting the cluster may take a few minutes.

## Additional deployment options

- **Workload Identity**: [See these instructions.](/docs/workload-identity.md)
- **Cloud SQL**: [See these instructions](/extras/cloudsql) to replace the in-cluster databases with hosted Google Cloud SQL.
- **Multi Cluster with Cloud SQL**: [See these instructions](/extras/cloudsql-multicluster) to replicate the app across two regions using GKE, Multi Cluster Ingress, and Google Cloud SQL.
- **Istio**: [See these instructions](/extras/istio) to configure an IngressGateway.
- **Anthos Service Mesh**: ASM requires Workload Identity to be enabled in your GKE cluster. [See the workload identity instructions](/docs/workload-identity.md) to configure and deploy the app. Then, apply `extras/istio/` to your cluster to configure frontend ingress.
- **Java Monolith (VM)**: We provide a version of this app where the three Java microservices are coupled together into one monolithic service, which you can deploy inside a VM (eg. Google Compute Engine). See the [ledgermonolith](/src/ledgermonolith) directory.

## Documentation

<!-- This section is duplicated in the docs/ README: https://github.com/GoogleCloudPlatform/bank-of-anthos/blob/main/docs/README.md -->

- [Development](/docs/development.md) to learn how to run and develop this app locally.
- [Environments](/docs/environments.md) to learn how to deploy on non-GKE clusters.
- [Workload Identity](/docs/workload-identity.md) to learn how to set-up Workload Identity.
- [CI/CD pipeline](/docs/ci-cd-pipeline.md) to learn details about and how to set-up the CI/CD pipeline.
- [Troubleshooting](/docs/troubleshooting.md) to learn how to resolve common problems.

## Demos featuring Bank of Anthos
- [Tutorial: Explore Anthos (Google Cloud docs)](https://cloud.google.com/anthos/docs/tutorials/explore-anthos)
- [Tutorial: Migrating a monolith VM to GKE](https://cloud.google.com/migrate/containers/docs/migrating-monolith-vm-overview-setup)
- [Tutorial: Running distributed services on GKE private clusters using ASM](https://cloud.google.com/service-mesh/docs/distributed-services-private-clusters)
- [Tutorial: Run full-stack workloads at scale on GKE](https://cloud.google.com/kubernetes-engine/docs/tutorials/full-stack-scale)
- [Architecture: Anthos on bare metal](https://cloud.google.com/architecture/ara-anthos-on-bare-metal)
- [Architecture: Creating and deploying secured applications](https://cloud.google.com/architecture/security-foundations/creating-deploying-secured-apps)
- [Keynote @ Google Cloud Next '20: Building trust for speedy innovation](https://www.youtube.com/watch?v=7QR1z35h_yc)
- [Workshop @ IstioCon '22: Manage and secure distributed services with ASM](https://www.youtube.com/watch?v=--mPdAxovfE)


# camellia（[ENGLISH](README-en.md)）
Camellia是网易云信开发的服务器基础组件，所有模块均已应用于网易云信线上环境

<img src="/docs/img/logo.png" width = "500"/>

![GitHub](https://img.shields.io/badge/license-MIT-green.svg)
![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.netease.nim/camellia/badge.svg)

## 模块介绍

Camellia提供了一系列简单易用的服务器组件，包括但不限于：

### 独立部署的中间件服务（server）

* [redis代理](/docs/redis-proxy/redis-proxy-zh.md)
* [发号器](/docs/id-gen/id-gen.md)
* [延迟队列](/docs/delay-queue/delay-queue.md)
* [热点key探测](/docs/hot-key/hot-key.md)

更多：
* 以上中间件默认使用java8/spring-boot2运行，如果要使用java21/spring-boot3，请参考：[camellia-jdk21-bootstraps](https://github.com/caojiajun/camellia-jdk21-bootstraps)
* 以上中间件支持使用prometheus/grafana对服务进行监控，请参考：[prometheus/grafana](docs/prometheus_grafana.md)

### 增强的三方库（sdk）

此外，还包括其他众多简单易用的三方库（基于开源版本进行二次增强）：
* [redis客户端](/docs/redis-client/redis-client.md)
* [hbase客户端 ](/docs/hbase-client/hbase-client.md)
* [微服务feign客户端](/docs/feign/feign.md)
* [数据库缓存框架](/docs/cache/cache.md)
* [工具类](/docs/tools/tools.md)

## 功能简介

### camellia-redis-proxy
基于netty4开发的一款高性能redis代理
* 支持redis-standalone/redis-sentinel/redis-cluster
* 支持其他proxy作为后端（如双写迁移场景），如 [twemproxy](https://github.com/twitter/twemproxy) 、[codis](https://github.com/CodisLabs/codis) 等
* 支持 [kvrocks](https://github.com/apache/kvrocks) 、 [pika](https://github.com/OpenAtomFoundation/pika) 、 [tendis](https://github.com/Tencent/Tendis) 等作为后端
* 支持使用hbase/obkv/tikv等作为底层存储，构建一个类redis的系统，具体见：[kv](docs/redis-proxy/kv/kv.md)
* 支持普通的GET/SET/EVAL，也支持MGET/MSET，也支持阻塞型的BLPOP，也支持PUBSUB和TRANSACTION，也支持STREAMS/JSON/SEARCH/BloomFilter/CuckooFilter，也支持TAIR_HASH/TAIR_ZSET/TAIR_STRING
* 支持SCAN命令，即使后端是redis-cluster或者自定义分片，也可以透明的扫描到所有key
* 支持SELECT命令，从而可以使用多database
* 所有支持的命令: [supported_commands](docs/redis-proxy/supported_commands.md)
* 支持SSL/TLS（client到proxy支持，proxy到redis也支持）
* 支持unix-domain-socket（client到proxy支持，proxy到redis也支持）
* 支持使用http协议访问proxy，类似于 [webdis](https://github.com/nicolasff/webdis) ，但是接口定义不一样，具体见：[http](/docs/redis-proxy/other/http.md)
* 支持自定义分片、读写分离、双（多）写、双（多）读
* 支持多租户（可以同时代理多组路由，可以通过不同的登录密码来区分）
* 支持多租户动态路由，支持自定义的动态路由数据源（内置：本地配置文件、nacos、etcd等，也可以自定义）
* 支持读从节点（redis-sentinel、redis-cluster都支持）
* 高可用，可以基于lb组成集群，也可以基于注册中心组成集群，也可以伪装成redis-cluster组成集群，也可以伪装成redis-sentinel组成集群
* 支持自定义插件，并且内置了很多插件，可以按需使用（包括：大key监控、热key监控、热key缓存、key命名空间、ip黑白名单、速率控制等等）
* 支持丰富的监控，如TPS、RT、热key、大key、慢查询、连接数等
* 支持使用prometheus/grafana来监控proxy集群
[快速开始](/docs/redis-proxy/redis-proxy-zh.md)

### camellia-id-gen
提供了多种id生成算法，开箱即用，包括：
* 雪花算法（支持设置单元标记）
* 严格递增的id生成算法（步长支持动态调整）
* 趋势递增的id生成算法（支持设置单元标记，支持多单元id同步）
* 支持使用prometheus/grafana来监控id-gen-server集群
[快速开始](/docs/id-gen/id-gen.md)

### camellia-delay-queue
基于redis实现的延迟队列服务：
* 独立部署delay-queue-server服务器，支持水平扩展，支持多topic，以http协议对外提供服务（短轮询or长轮询），支持多语言客户端
* 提供了一个java-sdk，并且支持以spring-boot方式快速接入
* 支持丰富的监控数据
* 支持使用prometheus/grafana来监控delay-queue-server集群
[快速开始](/docs/delay-queue/delay-queue.md)

### camellia-hot-key
热key探测和缓存服务：
* 支持热key探测，也支持热key缓存，也支持topN统计
* 支持丰富的自定义扩展口（热key通知、topN通知、热key规则数据源、热key缓存命中统计）
* 支持自定义数据源（内置：本地配置文件、nacos、etcd，也可以自己实现）
* 支持自定义注册中心（内置：zk、eureka，也可以自己实现）
* 支持丰富的监控数据
* 支持使用prometheus/grafana来监控hot-key-server集群
[快速开始](/docs/hot-key/hot-key.md)

## RELEASE版本
最新版本是1.2.27，已经发布到maven中央仓库（2024/03/13）
[更新日志](/update-zh.md)

## SNAPSHOT版本
当前最新是1.2.28-SNAPSHOT
```xml
<repositories>
  <repository>
    <id>sonatype-snapshots</id>
    <name>Sonatype Snapshot Repository</name>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>
```

## 谁在使用Camellia
如果觉得 Camellia 对你有用，欢迎Star/Fork
欢迎所有 Camellia 用户及贡献者在 [这里](https://github.com/netease-im/camellia/issues/10) 分享您在当前工作中开发/使用 Camellia 的故事

## 联系方式
微信: hdnxttl（加此微信拉进技术交流群）
email: zj_caojiajun@163.com

## Stargazers Over Time

[![Stargazers Over Time](https://starchart.cc/netease-im/camellia.svg)](https://starchart.cc/netease-im/camellia)


# Micronaut Security

[![Maven Central](https://img.shields.io/maven-central/v/io.micronaut.security/micronaut-security.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22io.micronaut.security%22%20AND%20a:%22micronaut-security%22)
![Snapshot](https://img.shields.io/badge/dynamic/xml?color=yellow&label=Snapshot&query=%2F%2Fmetadata%2Fversioning%2Flatest&url=https%3A%2F%2Fs01.oss.sonatype.org%2Fcontent%2Frepositories%2Fsnapshots%2Fio%2Fmicronaut%2Fsecurity%2Fmicronaut-security%2Fmaven-metadata.xml)
[![Build Status](https://github.com/micronaut-projects/micronaut-security/workflows/Java%20CI/badge.svg)](https://github.com/micronaut-projects/micronaut-security/actions)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=micronaut-projects_micronaut-security&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=micronaut-projects_micronaut-security)
[![Revved up by Develocity](https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A)](https://ge.micronaut.io/scans)

The official Micronaut security solution.

## Known Vulnerabilities (by ![Snyk](https://res.cloudinary.com/snyk/image/upload/v1468845142/favicon/favicon.png) Snyk)

[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/micronaut-projects/micronaut-security/security/build.gradle?label=micronaut-security)](https://snyk.io/test/github/micronaut-projects/micronaut-security?targetFile=security/build.gradle)
[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/micronaut-projects/micronaut-security/security-jwt/build.gradle?label=micronaut-security-jwt)](https://snyk.io/test/github/micronaut-projects/micronaut-security?targetFile=security-jwt/build.gradle)
[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/micronaut-projects/micronaut-security/security-ldap/build.gradle?label=micronaut-security-ldap)](https://snyk.io/test/github/micronaut-projects/micronaut-security?targetFile=security-ldap/build.gradle)
[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/micronaut-projects/micronaut-security/security-oauth2/build.gradle?label=micronaut-security-oauth2)](https://snyk.io/test/github/micronaut-projects/micronaut-security?targetFile=security-oauth2/build.gradle)
[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/micronaut-projects/micronaut-security/security-session/build.gradle?label=micronaut-security-session)](https://snyk.io/test/github/micronaut-projects/micronaut-security?targetFile=security-session/build.gradle)

## Documentation

See the [Documentation](https://micronaut-projects.github.io/micronaut-security/latest/guide) for more information.

[Snapshot Documentation](https://micronaut-projects.github.io/micronaut-security/snapshot/guide).

## Build and Run tests Locally

`./gradlew -Dgeb.env=firefox build`


<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Endava/cats/master/images/cats_logo_dark.svg" />

</picture>

![CI](https://img.shields.io/github/actions/workflow/status/Endava/cats/main.yml?style=for-the-badge&logo=git&logoColor=white)
[![Commits](https://img.shields.io/github/commit-activity/m/Endava/cats?style=for-the-badge&logo=git&logoColor=white)](https://github.com/Endava/cats/pulse)

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=alert_status)](https://sonarcloud.io/dashboard?id=cats)
[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=sqale_index)](https://sonarcloud.io/dashboard?id=cats)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=coverage)](https://sonarcloud.io/dashboard?id=cats)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=bugs)](https://sonarcloud.io/dashboard?id=cats)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=cats&metric=code_smells)](https://sonarcloud.io/dashboard?id=cats)

> CATS documentation is available at [https://endava.github.io/cats/](https://endava.github.io/cats/)

**REST API fuzzer and negative testing tool. Run thousands of self-healing API tests within minutes with no coding effort!**

- **Comprehensive**: tests are generated automatically based on a large number scenarios and cover **every** field and header
- **Intelligent**: tests are generated based on data types and constraints; each Fuzzer has specific expectations depending on the scenario under test
- **Highly Configurable**: high amount of customization: you can filter specific Fuzzers, HTTP response codes, HTTP methods, request paths, provide business context and a lot more
- **Self-Healing**: as tests are generated, any OpenAPI spec change is picked up automatically
- **Simple to Learn**: flat learning curve, with intuitive configuration and syntax
- **Fast**: automatic process for write, run and report tests which covers thousands of scenarios within minutes

> Short on time? Check out the [1-minute Quick Start Guide](https://endava.github.io/cats/docs/intro)!

# Overview
By using a simple and minimal syntax, with a flat learning curve, CATS (**C**ontract **A**PI **T**esting and **S**ecurity) enables you to generate thousands of API tests within minutes with **no coding effort**.
All tests are **generated, run and reported automatically** based on a pre-defined set of **100+ Fuzzers**.
The Fuzzers cover a wide range of boundary testing and negative scenarios from fully random large Unicode values to well crafted, context dependant values based on the request data types and constraints.
Even more, you can leverage the fact that CATS generates request payloads dynamically and write simple end-to-end functional tests.

## HTML Report

## Command Line

# Tutorials on how to use CATS

This is a list of articles with step-by-step guides on how to use CATS:
* [Testing the GitHub API with CATS](https://ludovicianul.github.io/2020/10/05/github-api-testing/)
* [How to write self-healing functional tests with no coding effort](https://ludovicianul.github.io/2020/09/09/cats/)

# Some bugs found by CATS

- https://github.com/hashicorp/vault/issues/13274 | https://github.com/hashicorp/vault/issues/13273
- https://github.com/hashicorp/vault/issues/13225 | https://github.com/hashicorp/vault/issues/13232
- https://github.com/go-gitea/gitea/issues/19397  | https://github.com/go-gitea/gitea/issues/19398
- https://github.com/go-gitea/gitea/issues/19399

# Installation

## Homebrew

```shell
> brew tap endava/tap
> brew install cats
```

## Manual
CATS is bundled both as an executable JAR or a native binary. The native binaries do not need Java installed.

After downloading your OS native binary, you can add it to PATH so that you can execute it as any other command line tool:

```shell
sudo cp cats /usr/local/bin/cats
```

You can also get autocomplete by downloading the [cats_autocomplete](cats_autocomplete) script and do:

```shell
source cats_autocomplete
```

To get persistent autocomplete, add the above line in `.zshrc` or `.bashrc`, but make sure you put the fully qualified path for the `cats_autocomplete` script.

You can also check the `cats_autocomplete` source for alternative setup.

There is no native binary for Windows, but you can use the uberjar version. This requires Java 17+ to be installed.

You can run it as `java -jar cats.jar`.

Head to the releases page to download the latest version: [https://github.com/Endava/cats/releases](https://github.com/Endava/cats/releases).

## Build from sources

You can build CATS from sources on you local box. You need [Java 17+](https://sdkman.io/jdks). Maven is already bundled.

> Before running the first build, please make sure you do a `./mvnw clean`. CATS uses a fork of [OKHttp](https://square.github.io/okhttp/) which will install locally
under the `4.11.0-CATS` version, so don't worry about overriding the official versions.

You can use the following Maven command to build the project as an uberjar:

`./mvnw package -Dquarkus.package.type=uber-jar`

You will end up with a `cats-runner.jar` in the `target` folder. You can run it wih `java -jar cats-runner.jar ...`.

You can also build native images using a [GraalVM Java version](https://www.graalvm.org/).

`./mvnw package -Pnative`

### Notes on Unit Tests

You may see some `error` log messages while running the Unit Tests. Those are expected behaviour for testing the negative scenarios of the Fuzzers.

## Experimental: Maven dependency for programmatic use
CATS doesn't have explicit support (yet) for programmatic use via JUnit or TestNG.
You can however experiment with running the `CatsMain` class with the same arguments as you would run in the command line.

You must add these 2 dependencies:

```xml
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.11.0</version>
</dependency>
<dependency>
    <groupId>com.endava</groupId>
    <artifactId>cats</artifactId>
    <version>9.0.3</version>
</dependency>
```

> Please not that you also need to explicitly add the `okhttp` dependency.
> CATS uses a fork of okhttp that is not published in Maven central.
> When using CATS as a dependency, HTTP header fuzzers that prefix/suffix header values with spaces won't properly work.

# Contributing
Please refer to [CONTRIBUTING.md](CONTRIBUTING.md).


Confluent REST Utils
====================

Confluent REST Utils provides a small framework and utilities for writing Java
REST APIs using Jersey, Jackson, Jetty, and Hibernate Validator.

See the [`examples/`](examples/) directory for a simple demo service.

Security
--------
The REST `Application` can support both http and https. https is disabled by default. Use the `listeners` configuration
parameter to control which protocol is used.

The https implementation is similar to Kafka, where the server specifies a keystore and trust store. When SSL
client auth is configured, the client must authenticate -- the key in the client's keystore must be trusted by
the server's trust store.

Metrics
-------
One metrics group exists that spans all listeners. Meaning, when using multiple listeners and observing metrics, the
values of each metric are a combination of all listeners. For example, if the maximum latency for a http listener
is 50ms and the maximum latency for a https listener is 100ms, the `request-latency-max` metric will be 100ms, the max
across all listeners.

Contribute
----------

- Source Code: https://github.com/confluentinc/rest-utils
- Issue Tracker: https://github.com/confluentinc/rest-utils/issues

License
-------

The project is licensed under the Apache 2 license.


score
=====

The CloudSlang Orchestration Engine (Score) is a general-purpose orchestration engine which is process-based, embeddable, lightweight, scalable and multilingual.

[![Build Status](https://travis-ci.org/CloudSlang/score.svg?branch=master)](https://travis-ci.org/CloudSlang/score)
[![Maintainability](https://api.codeclimate.com/v1/badges/45981e8ab04cec2b9bbb/maintainability)](https://codeclimate.com/github/CloudSlang/score/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/45981e8ab04cec2b9bbb/test_coverage)](https://codeclimate.com/github/CloudSlang/score/test_coverage)

Score is the core engine for running workflows. It supports multiple workflow  languages (DSL) using a pluggable compiler approach. Adding a new workflow DSL requires adding a new compiler that will translate the DSL (written in xml, yaml, etc.) to a generic workflow representation called an ExecutionPlan.

***For an example compiler and DSL see the*** [CloudSlang project](https://github.com/cloudslang/cloud-slang).

Latest Maven Central release versions
-------------------------------------

| Module | Release |
| ----- | ----- |
| score-parent | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-parent/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-parent)
| engine | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/engine/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/engine)
| data | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/data/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/data)
| score-data-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-data-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-data-api)
| score-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-api)
| score-facade | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-facade/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-facade)
| orchestrator | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/orchestrator/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/orchestrator)
| score-orchestrator-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-orchestrator-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-orchestrator-api)
| node | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/node/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/node)
| score-node-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-node-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-node-api)
| queue |  [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/queue/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/queue)
| score-queue-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-queue-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-queue-api)
| score-orchestrator-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-orchestrator-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-orchestrator-impl)
| score-queue-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-queue-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-queue-impl)
| score-node-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-node-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-node-impl)
| score-engine-jobs | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-engine-jobs/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-engine-jobs)
| score-data-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-data-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-data-impl)
| worker | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/worker/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/worker)
| worker-execution | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/worker-execution/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/worker-execution)
| score-worker-execution-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker-execution-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker-execution-api)
| worker-manager | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/worker-manager/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/worker-manager)
| score-worker-manager-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker-manager-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker-manager-api)
| score-worker-execution-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker-execution-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker-execution-impl)
| score-worker-manager-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang.content/cs-xml/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang.content/cs-xml)
| package | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/package/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/package)
| score-worker | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-worker)
| score-all | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-all/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-all)
| score-samples | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-samples/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-samples)
| control-action-samples | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/control-action-samples/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/control-action-samples)
| score-tests | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-tests/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/score-tests)
| hello-score | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/hello-score/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/hello-score)
| dependency-management | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/dependency-management/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/dependency-management)
| dependency-management-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/dependency-management-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/dependency-management-api)
| dependency-management-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/dependency-management-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/dependency-management-impl)
| runtime-management | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/runtime-management/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/runtime-management)
| runtime-management-api | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/runtime-management-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/runtime-management-api)
| runtime-management-impl | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/runtime-management-impl/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.cloudslang/runtime-management-impl)

#### Building and Testing from Source

The Score project uses Maven to build and test.

###### Prerequisites:

1. Maven version >=3.0.3
2. Java JDK version >=8

###### Steps:

1. ```git clone``` the source code
2. ```mvn clean install```


  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://support.crowdin.com/assets/logos/symbol/png/crowdin-symbol-cWhite.png">
    <source media="(prefers-color-scheme: light)" srcset="https://support.crowdin.com/assets/logos/symbol/png/crowdin-symbol-cDark.png">

  </picture>

# Crowdin CLI [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Fcrowdin%2Fcrowdin-cli&text=Crowdin%20CLI%20is%20an%20open-source%20command-line%20tool%20that%20allows%20you%20to%20manage%20and%20synchronize%20your%20localization%20resources%20with%20your%20Crowdin%20project) [![GitHub Repo stars](https://img.shields.io/github/stars/crowdin/crowdin-cli?style=social&cacheSeconds=1800)](https://github.com/crowdin/crowdin-cli/stargazers)

Crowdin CLI is a command line tool that allows you to manage and synchronize your localization resources with your Crowdin project. Using CLI, you can:

- automate the process of updating your source files in your Crowdin project
- download translations from Crowdin and automatically save them in the correct locations
- upload all your existing translations to Crowdin in minutes
- manage your localization resources without leaving the terminal
- integrate Crowdin CLI with GitHub, GitLab, Jenkins, CircleCI, and other software

It is cross-platform and runs in a terminal on Linux-based and macOS operating systems, or in the command prompt on Windows.

[**`Docs`**](https://crowdin.github.io/crowdin-cli/) |
[**`Configuration File`**](https://developer.crowdin.com/configuration-file/) |
[**`Getting started with CLI`**](https://www.youtube.com/watch?v=0duN4khpWjM)

[![Docker Pulls](https://img.shields.io/docker/pulls/crowdin/cli?logo=docker&cacheSeconds=2000)](https://hub.docker.com/r/crowdin/cli)
[![npm](https://img.shields.io/npm/dt/@crowdin/cli?logo=npm&cacheSeconds=2000)](https://www.npmjs.com/package/@crowdin/cli)
[![homebrew downloads](https://img.shields.io/homebrew/installs/dy/crowdin?logo=homebrew)](https://formulae.brew.sh/formula/crowdin)
[![Chocolatey](https://img.shields.io/chocolatey/dt/crowdin-cli?logo=chocolatey&cacheSeconds=2000)](https://community.chocolatey.org/packages/crowdin-cli)
[![GitHub all releases](https://img.shields.io/github/downloads/crowdin/crowdin-cli/total?label=assets%20downloads&logo=github&cacheSeconds=2000)](https://github.com/crowdin/crowdin-cli/releases)
[![GitHub Used by](https://img.shields.io/static/v1?label=used%20by&message=1.5k&color=brightgreen&logo=github&cacheSeconds=10000)](https://github.com/crowdin/crowdin-cli/network/dependents)

[![build-test](https://github.com/crowdin/crowdin-cli/actions/workflows/build-test.yml/badge.svg?branch=main)](https://github.com/crowdin/crowdin-cli/actions/workflows/build-test.yml)
[![CodeQL](https://github.com/crowdin/crowdin-cli/actions/workflows/codeql-analysis.yml/badge.svg?branch=main)](https://github.com/crowdin/crowdin-cli/actions/workflows/codeql-analysis.yml)
[![codecov](https://codecov.io/gh/crowdin/crowdin-cli/branch/main/graph/badge.svg)](https://codecov.io/gh/crowdin/crowdin-cli)

[![GitHub contributors](https://img.shields.io/github/contributors/crowdin/crowdin-cli?cacheSeconds=1000)](https://github.com/crowdin/crowdin-cli/graphs/contributors)
![GitHub](https://img.shields.io/github/license/crowdin/crowdin-cli?cacheSeconds=50000)

[

](https://crowdin.com)

## Usage

Visit the [documentation](https://crowdin.github.io/crowdin-cli/) for more details.

## Seeking Assistance and Contributing

If you find any problems or would like to suggest a feature, please read the [How can I contribute](/CONTRIBUTING.md#how-can-i-contribute) section in our contributing guidelines.

## License

The Crowdin CLI is licensed under the MIT License.
See the LICENSE file distributed with this work for additional
information regarding copyright ownership.

Except as contained in the LICENSE file, the name(s) of the above copyright
holders shall not be used in advertising or otherwise to promote the sale,
use or other dealings in this Software without prior written authorization.


![osudroid](https://github.com/osudroid/osu-droid/assets/52914632/8747ab50-c77d-4808-91aa-5058891e4bcd)

#  osu-droid
[![Official International Discord](https://discordapp.com/api/guilds/316545691545501706/widget.png?style=shield)](https://discord.gg/nyD92cE)
[![Android CI](https://github.com/osudroid/osu-droid/workflows/Android%20CI/badge.svg?branch=master)](https://github.com/osudroid/osu-droid/actions?query=workflow%3A"Android+CI")
[![CodeFactor](https://www.codefactor.io/repository/github/osudroid/osu-droid/badge)](https://www.codefactor.io/repository/github/osudroid/osu-droid)

osu!droid is a free-to-play circle clicking rhythm game for Android devices. It was a game hatched many years ago by the [osu!](https://osu.ppy.sh/home) community. This project is now being developed by a small group of fans and also with the help of foreign friends.

## Status

osu!droid is still work-in-progress. Some features are going to be implemented in the future but it's still playable and fun!

### Downloading the source code

Clone the repository:

```sh
git clone https://github.com/osudroid/osu-droid.git
```
Open the folder in Android Studio.

To update the source code to the latest commit, run the following command inside the osu-droid directory:

```she
git pull
```
Coding Languages:

You can code for the project in `Java` or `Kotlin`.

### Building

In Android Studio you can `Build` a debug release to test your changes. The output directory of your `.apk` is inside `build/output` of osu-droid's directory.

Or if you prefer the command line and you are on Linux, run `chmod +x gradlew` and `./gradlew assembleDebug` inside the directory to build the debug `.apk` files but make sure that you are using Java 8.

## Contributing

We welcome any sort of contributions, as long as they're helpful. Those who aren't able to contribute code may instead suggest small changes like grammar fixes, new features or report client issues via [Feature request](https://github.com/osudroid/osu-droid/issues/11) or [GitHub issues](https://github.com/osudroid/osu-droid/issues).

## License

osu-droid is licensed under the [Apache License 2.0](https://opensource.org/licenses/Apache-2.0). Please see the licence file for more information.


Snowflake JDBC Driver
*********************

.. image:: https://github.com/snowflakedb/snowflake-jdbc/workflows/Build%20and%20Test/badge.svg?branch=master
      :target: https://github.com/snowflakedb/snowflake-jdbc/actions?query=workflow%3A%22Build+and+Test%22+branch%3Amaster

.. image:: https://codecov.io/gh/snowflakedb/snowflake-jdbc/branch/master/graph/badge.svg?token=Mj6uPxk0pV
     :target: https://codecov.io/gh/snowflakedb/snowflake-jdbc

.. image:: http://img.shields.io/:license-Apache%202-brightgreen.svg
    :target: http://www.apache.org/licenses/LICENSE-2.0.txt

.. image:: https://maven-badges.herokuapp.com/maven-central/net.snowflake/snowflake-jdbc/badge.svg?style=plastic
    :target: https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc/

Snowflake provides a JDBC type 4 driver that supports core functionality, allowing Java program to connect to Snowflake.

Prerequisites
=============

The Snowflake JDBC driver requires Java 1.8 or higher. If the minimum required version of Java is not installed on the client machines where the JDBC driver is installed, you must install either Oracle Java or OpenJDK.

Installation
============

Maven
-----
Add following dependency for fat-jar

.. code-block:: xml

    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc</artifactId>
      <version>{version}</version>
    </dependency>

or for FIPS compliant fat-jar

.. code-block:: xml

    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc-fips</artifactId>
      <version>{version}</version>
    </dependency>

or for experimental thin-jar

.. code-block:: xml

    <dependency>
      <groupId>net.snowflake</groupId>
      <artifactId>snowflake-jdbc-thin</artifactId>
      <version>{version}</version>
    </dependency>

Build from Source Code
----------------------
1. Checkout source code from Github by running:

.. code-block:: bash

    git clone https://github.com/snowflakedb/snowflake-jdbc.git

2. Build the fat-jar and install it in local maven repository by running:

.. code-block:: bash

    ./mvnw clean verify
    ./mvnw org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile=target/snowflake-jdbc.jar -DpomFile=./public_pom.xml

3. Build the FIPS compliant fat-jar and install it in local maven repository by running:

.. code-block:: bash

    cd FIPS
    ../mvnw clean verify
    ../mvnw org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile=target/snowflake-jdbc-fips.jar -DpomFile=./public_pom.xml
    cd -

4. Build the experimental thin-jar and install it in local maven repository by running:

.. code-block:: bash

    ./mvnw clean verify -Dnot-self-contained-jar -Dthin-jar
    ./mvnw org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file -Dfile=target/snowflake-jdbc-thin.jar -DpomFile=./thin_public_pom.xml -Dnot-self-contained-jar -Dthin-jar

- ``thin-jar`` enables thin jar profile
- ``not-self-contained-jar`` turns off fat jar profile (enabled by default)

5. **Note that the built dependencies are installed with version 1.0-SNAPSHOT**

Usage
=====

Load Driver Class
-----------------

.. code-block:: java

    Class.forName("net.snowflake.client.jdbc.SnowflakeDriver")

Datasource
----------

javax.sql.DataSource interface is implemented by class

.. code-block:: java

    net.snowflake.client.jdbc.SnowflakeBasicDataSource

Connection String
-----------------

US(West) Region:

.. code-block:: bash

    jdbc:snowflake://<account>.snowflakecomputing.com/?<connection_params>

EU(Frankfurt) Region:

.. code-block:: bash

    jdbc:snowflake://<account>.eu-central-1.snowflakecomputing.com/?<connection_params>

Documentation
=============

For detailed documentation, please refer to https://docs.snowflake.net/manuals/user-guide/jdbc.html

Development
=============

Run the maven command to check the coding style.

.. code-block:: bash

    mvn -P check-style validate

Follow the instruction if any error occurs or run this command to fix the formats.

.. code-block:: bash

    mvn com.spotify.fmt:fmt-maven-plugin:format

You may import the coding style from IntelliJ so that the coding style can be applied on IDE:

- In the **File** -> **Settings/Plugins**, and install `google-java-format` plugin.
- Enable `google-java-format` for the JDBC project.
- In the source code window, select **Code** -> **Reformat** to apply the coding style.
- Additionally configure IDE in **File** -> **Editor** -> **Code Style** -> **Java** to
  - not use wildcard imports (tab **Imports**):
    - **Use single class import**
    - **Class count to use import with '*'** to 1000
    - **Names count to use static import with '*'** to 1000
  - always use braces in ``if/while/for/do..while`` in (tab **Wrapping and Braces**)

Tests
=====

Run Tests
---------

Set the environment variables to specify the target database.

.. code-block:: bash

    export SNOWFLAKE_TEST_HOST=<your_host>
    export SNOWFLAKE_TEST_ACCOUNT=<your_account>
    export SNOWFLAKE_TEST_USER=<your_user>
    export SNOWFLAKE_TEST_PASSWORD=<your_password>
    export SNOWFLAKE_TEST_DATABASE=<your_database>
    export SNOWFLAKE_TEST_SCHEMA=<your_schema>
    export SNOWFLAKE_TEST_WAREHOUSE=<your_warehouse>
    export SNOWFLAKE_TEST_ROLE=<your_role>

Run the maven ``verify`` goal.

.. code-block:: bash

    mvn -DjenkinsIT -DtestCategory=net.snowflake.client.category.<category> verify

where ``category`` is the class name under the package ``net.snowflake.client.category``.

Set new version
---------------

1. Run maven command with passing specific version:

.. code-block:: bash

   mvn -f parent-pom.xml versions:set -DnewVersion=... -DgenerateBackupPoms=false

2. Set manually the same version in field ``implementVersion`` in ``src/main/java/net/snowflake/client/jdbc/SnowflakeDriver.java`` when it's version for release or without ``-SNAPSHOT`` suffix between releases
3. Add entry in ``CHANGELOG.rst`` for release versions

Test Class Naming Convention
----------------------------

The test cases are fallen into a couple of criteria:

- The unit test class names end with ``Test``. They run part of the JDBC build jobs.
- The integration test class names end with ``IT``. They run part of the ``verify`` maven goal along with the test category specified by the parameter ``testCategory`` having ``net.snowflake.client.category`` classes.
- The manual test class names end with ``Manual``. They don't run in the CI but you can run them manually.

Aside from the general test criteria, the test case class names ending with ``LatestIT`` run only with the latest JDBC driver.
The main motivation behind is to skip those tests for the old JDBC driver. See ``./TestOnly`` directory for further information.

Support
=============

Feel free to file an issue or submit a PR here for general cases. For official support, contact Snowflake support at:
https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge