{{ data_get($resource, 'Names') }}
@@ -152,11 +154,14 @@
-
- @else
- No resources found.
@endif
-
+ @else
+ @if ($activeTab === 'managed')
+ No managed resources found.
+ @elseif ($activeTab === 'unmanaged')
+ No unmanaged resources found.
+ @endif
+ @endif
diff --git a/resources/views/livewire/server/show-private-key.blade.php b/resources/views/livewire/server/show-private-key.blade.php
index 86bf2568e..f84086bff 100644
--- a/resources/views/livewire/server/show-private-key.blade.php
+++ b/resources/views/livewire/server/show-private-key.blade.php
@@ -1,5 +1,5 @@
-
+
Private Key
@@ -9,29 +9,25 @@
-
- @if (data_get($server, 'privateKey.uuid'))
-
- @else
- No private key attached.
- @endif
-
+
+ Change your server's private key.
- Choose another Key
-
+
@forelse ($privateKeys as $private_key)
-
+
{{ $private_key->name }}
{{ $private_key->description }}
+ @if (data_get($server, 'privateKey.uuid') !== $private_key->uuid)
+
+ Use this key
+
+ @else
+
+ Currently used
+
+ @endif
@empty
No private keys found.
diff --git a/resources/views/livewire/server/show.blade.php b/resources/views/livewire/server/show.blade.php
index 4a2729d3c..458d8cd2f 100644
--- a/resources/views/livewire/server/show.blade.php
+++ b/resources/views/livewire/server/show.blade.php
@@ -3,11 +3,75 @@
{{ data_get_str($server, 'name')->limit(10) }} > Server Configurations | Coolify
-
- @if ($server->isFunctional() && $server->isMetricsEnabled())
-
-
+
+
+
+ @if ($server->isFunctional())
+
+ @endif
+
+ @if ($server->isFunctional())
+
+
+
+
+
+ @endif
+ @if (!$server->isLocalhost())
+
+ @endif
- @endif
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @if ($server->isFunctional() && $server->isMetricsEnabled())
+
+
+
+ @else
+ No metrics available.
+ @endif
+
+ @if (!$server->isLocalhost())
+
+
+
+ @endif
+
+
diff --git a/resources/views/livewire/settings/index.blade.php b/resources/views/livewire/settings/index.blade.php
index f9293e7d7..cb7dfd5ac 100644
--- a/resources/views/livewire/settings/index.blade.php
+++ b/resources/views/livewire/settings/index.blade.php
@@ -41,7 +41,8 @@
-
+
+
+
+
+
DNS Validation
@@ -83,7 +92,7 @@
API
-
- Update
+ Update
@if (!is_null(env('AUTOUPDATE', null)))
@@ -119,6 +128,34 @@
helper="Cron expression for auto update frequency (automatically update coolify). You can use every_minute, hourly, daily, weekly, monthly, yearly.
Default is every day at 00:00" />
@endif
-
+ Advanced
+
+
+
+
+
+ Confirmation Settings
+ @if ($disable_two_step_confirmation)
+
+
+
+ @else
+
+ @endif
+
+ Warning!
+ Disabling two step confirmation reduces security (as anyone can easily delete anything) and increases the
+ risk of accidental actions. This is not recommended for production servers.
+
+
diff --git a/routes/api.php b/routes/api.php
index db07921a4..b63fde871 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -147,8 +147,11 @@ Route::group([
if (! $server) {
return response()->json(['message' => 'Server not found'], 404);
}
+ if ($server->settings->sentinel_token !== $naked_token) {
+ return response()->json(['message' => 'Unauthorized'], 401);
+ }
$data = request()->all();
- $server->update(['sentinel_update_at' => now()]);
+
PushServerUpdateJob::dispatch($server, $data);
return response()->json(['message' => 'ok'], 200);
diff --git a/storage/pail/.gitignore b/storage/pail/.gitignore
new file mode 100644
index 000000000..d6b7ef32c
--- /dev/null
+++ b/storage/pail/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/templates/compose/azimutt.yaml b/templates/compose/azimutt.yaml
index 314d4479a..4b498e423 100644
--- a/templates/compose/azimutt.yaml
+++ b/templates/compose/azimutt.yaml
@@ -9,9 +9,9 @@ services:
postgres:
image: postgres:15
environment:
- - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- - POSTGRES_USER=$SERVICE_USER_POSTGRES
- - POSTGRES_DB=azimutt
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_DB=${POSTGRES_DB:-azimutt}
volumes:
- azimutt-postgres-data:/var/lib/postgresql/data
healthcheck:
@@ -80,8 +80,8 @@ services:
- PHX_SERVER=true
- PHX_HOST=$SERVICE_URL_AZIMUTT
- PORT=${PORT:-4000}
- - DATABASE_URL=ecto://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres/azimutt
- - SECRET_KEY_BASE=$SERVICE_BASE64_64_AZIMUTT
+ - DATABASE_URL=ecto://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres/${POSTGRES_DB:-azimutt}
+ - SECRET_KEY_BASE=${SERVICE_BASE64_64_AZIMUTT}
- FILE_STORAGE_ADAPTER=${FILE_STORAGE_ADAPTER:-s3}
- AUTH_PASSWORD=${AUTH_PASSWORD:-true}
- SKIP_ONBOARDING_FUNNEL=${SKIP_ONBOARDING_FUNNEL:-true}
diff --git a/templates/compose/bookstack.yaml b/templates/compose/bookstack.yaml
index 0bfe4f8e9..dd9719471 100644
--- a/templates/compose/bookstack.yaml
+++ b/templates/compose/bookstack.yaml
@@ -10,24 +10,34 @@ services:
environment:
- SERVICE_FQDN_BOOKSTACK_80
- APP_URL=${SERVICE_FQDN_BOOKSTACK}
+ - APP_KEY=${SERVICE_PASSWORD_APPKEY}
- PUID=1000
- PGID=1000
- TZ=${TZ:-Europe/Berlin}
- DB_HOST=mariadb
- DB_PORT=3306
- - DB_USER=${SERVICE_USER_MYSQL}
- - DB_PASS=${SERVICE_PASSWORD_MYSQL}
+ - DB_USERNAME=${SERVICE_USER_MYSQL}
+ - DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
- DB_DATABASE=${MYSQL_DATABASE:-bookstackapp}
- QUEUE_CONNECTION=${QUEUE_CONNECTION}
# You will need to set up an authentication provider as described at https://www.bookstackapp.com/docs/admin/third-party-auth/.
- GITHUB_APP_ID=${GITHUB_APP_ID}
- GITHUB_APP_SECRET=${GITHUB_APP_SECRET}
+ # SMTP Mail variables as per https://www.bookstackapp.com/docs/admin/email-webhooks/#email-configuration/.
+ - MAIL_DRIVER=${MAIL_DRIVER:-smtp}
+ - MAIL_HOST=${MAIL_HOST}
+ - MAIL_PORT=${MAIL_PORT:-587}
+ - MAIL_ENCRYPTION=${MAIL_ENCRYPTION:-tls}
+ - MAIL_USERNAME=${MAIL_USERNAME}
+ - MAIL_PASSWORD=${MAIL_PASSWORD}
+ - MAIL_FROM=${MAIL_FROM}
+ - MAIL_FROM_NAME=${MAIL_FROM_NAME:-BookStack}
volumes:
- 'bookstack-data:/config'
healthcheck:
test:
- CMD-SHELL
- - 'wget -qO- http://127.0.0.1:80/'
+ - 'curl -f http://127.0.0.1:80/'
interval: 5s
timeout: 20s
retries: 10
diff --git a/templates/compose/calcom.yaml b/templates/compose/calcom.yaml
index c7ea7744c..89f3376ee 100644
--- a/templates/compose/calcom.yaml
+++ b/templates/compose/calcom.yaml
@@ -7,6 +7,7 @@
services:
calcom:
image: calcom.docker.scarf.sh/calcom/cal.com
+ platform: linux/amd64
environment:
# Some variables still uses Calcom previous name, Calendso
#
@@ -21,9 +22,9 @@ services:
- NEXTAUTH_URL=${SERVICE_FQDN_CALCOM}/api/auth
# It is highly recommended that the NEXTAUTH_SECRET must be overridden and very unique
# Use `openssl rand -base64 32` to generate a key
- - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-$SERVICE_BASE64_CALCOM_SECRET}
+ - NEXTAUTH_SECRET=${SERVICE_BASE64_CALCOMSECRET}
# Encryption key that will be used to encrypt CalDAV credentials, choose a random string, for example with `dd if=/dev/urandom bs=1K count=1 | md5sum`
- - CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY:-$SERVICE_BASE64_CALCOM_KEY}
+ - CALENDSO_ENCRYPTION_KEY=${SERVICE_BASE64_CALCOMKEY}
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- POSTGRES_DB=${POSTGRES_DB:-calendso}
@@ -54,14 +55,11 @@ services:
environment:
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- - POSTGRES_DB=${POSTGRES_DATABASE:-calcom}
+ - POSTGRES_DB=${POSTGRES_DB:-calendso}
volumes:
- calcom-postgresql-data:/var/lib/postgresql/data
healthcheck:
- test:
- - CMD-SHELL
- - pg_isready -U ${SERVICE_USER_POSTGRES} -d ${POSTGRES_DATABASE:-calcom}
- interval: 10s
- timeout: 5s
- retries: 5
- restart: unless-stopped
+ test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
+ interval: 5s
+ timeout: 20s
+ retries: 10
diff --git a/templates/compose/dify.yaml b/templates/compose/dify.yaml
index a801426c1..fb4e971b5 100644
--- a/templates/compose/dify.yaml
+++ b/templates/compose/dify.yaml
@@ -1,3 +1,4 @@
+# ignore: true
# documentation: https://docs.dify.ai
# slogan: Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, letting you quickly go from prototype to production.
# tags: ai, weaviate, openai, gpt, llm, lmops, dify, redis, postgres, qdrant, RAG, agent
@@ -335,7 +336,7 @@ services:
# cache_dir ufs /var/spool/squid 100 16 256
# upstream proxy, set to your own upstream proxy IP to avoid SSRF attacks
- # cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default
+ # cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default
################################## Reverse Proxy To Sandbox ################################
http_port 3129 accel vhost
diff --git a/templates/compose/edgedb.yaml b/templates/compose/edgedb.yaml
new file mode 100644
index 000000000..c305895ee
--- /dev/null
+++ b/templates/compose/edgedb.yaml
@@ -0,0 +1,41 @@
+# ignore: true
+# documentation: https://www.edgedb.com
+# slogan: An open-source database designed as a spiritual successor to SQL and the relational paradigm. Powered by the Postgres query engine under the hood.
+# tags: db database sql
+# logo: svgs/edgedb.svg
+# port: 5656
+
+services:
+ edgedb:
+ image: edgedb/edgedb
+ environment:
+ - SERVICE_FQDN_EDGEDB_5656
+ - EDGEDB_SERVER_ADMIN_UI=${EDGEDB_SERVER_ADMIN_UI:-enabled}
+ - EDGEDB_SERVER_BACKEND_DSN=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-edgedb}
+ - EDGEDB_SERVER_SECURITY=${EDGEDB_SERVER_SECURITY:-strict}
+ - EDGEDB_SERVER_PASSWORD=${SERVICE_PASSWORD_EDGEDB}
+ - POSTGRES_DB=${POSTGRES_DB:-edgedb}
+ depends_on:
+ postgresql:
+ condition: service_healthy
+ volumes:
+ - edgedb-data:/dbschema
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:5656/server/status/alive"]
+ interval: 5s
+ timeout: 20s
+ retries: 10
+
+ postgresql:
+ image: postgres:16-alpine
+ volumes:
+ - edgedb-postgresql-data:/var/lib/postgresql/data
+ environment:
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - POSTGRES_DB=${POSTGRES_DB:-edgedb}
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
+ interval: 5s
+ timeout: 20s
+ retries: 10
diff --git a/templates/compose/grafana-with-postgresql.yaml b/templates/compose/grafana-with-postgresql.yaml
index 25276468e..0ccdd235d 100644
--- a/templates/compose/grafana-with-postgresql.yaml
+++ b/templates/compose/grafana-with-postgresql.yaml
@@ -39,4 +39,3 @@ services:
interval: 5s
timeout: 20s
retries: 10
-
diff --git a/templates/compose/mindsdb.yaml b/templates/compose/mindsdb.yaml
new file mode 100644
index 000000000..72dc5a2d0
--- /dev/null
+++ b/templates/compose/mindsdb.yaml
@@ -0,0 +1,48 @@
+# documentation: https://docs.mindsdb.com/what-is-mindsdb
+# slogan: MindsDB is the platform for building AI from enterprise data, enabling smarter organizations.
+# tags: mysql, postgresdb, machine-learning, ai
+# logo: svgs/mindsdb.svg
+# port: 47334
+
+services:
+ mindsdb:
+ image: mindsdb/mindsdb:latest
+ environment:
+ - SERVICE_FQDN_MINDSDB_47334
+ - SERVICE_FQDN_API_47335=/api
+ - MINDSDB_DOCKER_ENV=true
+ - MINDSDB_STORAGE_DIR=/mindsdb/var
+ - FLASK_DEBUG=${FLASK_DEBUG:-1} # This will make sure http requests are logged regardless of log level
+ - OPENAI_API_KEY=${OPENAI_API_KEY}
+ - LANGFUSE_HOST=${LANGFUSE_HOST}
+ - LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY}
+ - LANGFUSE_SECRET_KEY=${LANGFUSE_SECRET_KEY}
+ - LANGFUSE_RELEASE=${LANGFUSE_RELEASE:-local}
+ - LANGFUSE_DEBUG=${LANGFUSE_DEBUG:-False}
+ - LANGFUSE_TIMEOUT=${LANGFUSE_TIMEOUT:-10}
+ - LANGFUSE_SAMPLE_RATE=${LANGFUSE_SAMPLE_RATE:-1.0}
+ - MINDSDB_DB_CON=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql/${POSTGRES_DB:-mindsdb-db}
+ volumes:
+ - mindsdb-data:/mindsdb/var
+ depends_on:
+ postgresql:
+ condition: service_healthy
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:47334/api/util/ping"]
+ interval: 30s
+ timeout: 5s
+ retries: 15
+
+ postgresql:
+ image: postgres:16-alpine
+ volumes:
+ - mindsdb-postgresql-data:/var/lib/postgresql/data
+ environment:
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - POSTGRES_DB=${POSTGRES_DB:-mindsdb-db}
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
+ interval: 10s
+ timeout: 5s
+ retries: 15
diff --git a/templates/compose/mosquitto.yaml b/templates/compose/mosquitto.yaml
new file mode 100644
index 000000000..1ec6f0cdc
--- /dev/null
+++ b/templates/compose/mosquitto.yaml
@@ -0,0 +1,48 @@
+# documentation: https://mosquitto.org/documentation/
+# slogan: Mosquitto is lightweight and suitable for use on all devices, from low-power single-board computers to full servers.
+# tags: mosquitto, mqtt, open-source
+# logo: svgs/mosquitto.svg
+# port: 1883
+
+services:
+ mosquitto:
+ image: eclipse-mosquitto
+ environment:
+ - SERVICE_FQDN_MOSQUITTO_1883
+ - MQTT_USERNAME=${SERVICE_USER_MOSQUITTO}
+ - MQTT_PASSWORD=${SERVICE_PASSWORD_MOSQUITTO}
+ - REQUIRE_CERTIFICATE=${REQUIRE_CERTIFICATE:-false}
+ - ALLOW_ANONYMOUS=${ALLOW_ANONYMOUS:-true}
+ volumes:
+ - mosquitto-config:/mosquitto/config
+ - mosquitto-certs:/certs
+ healthcheck:
+ test: ["CMD-SHELL", "exit 0"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+
+ entrypoint: 'sh -c "
+ if [ ''$REQUIRE_CERTIFICATE'' = ''true'' ]; then
+ echo ''listener 8883'' > /mosquitto/config/mosquitto.conf &&
+ echo ''cafile /certs/ca.crt'' >> /mosquitto/config/mosquitto.conf &&
+ echo ''certfile /certs/server.crt'' >> /mosquitto/config/mosquitto.conf &&
+ echo ''keyfile /certs/server.key'' >> /mosquitto/config/mosquitto.conf;
+ else
+ echo ''listener 1883'' > /mosquitto/config/mosquitto.conf;
+ fi &&
+ echo ''require_certificate ''$REQUIRE_CERTIFICATE >> /mosquitto/config/mosquitto.conf &&
+ echo ''allow_anonymous ''$ALLOW_ANONYMOUS >> /mosquitto/config/mosquitto.conf &&
+ if [ -n ''$SERVICE_USER_MOSQUITTO''] && [ -n ''$SERVICE_PASSWORD_MOSQUITTO'' ]; then
+ echo ''password_file /mosquitto/config/passwords'' >> /mosquitto/config/mosquitto.conf &&
+ touch /mosquitto/config/passwords &&
+ chmod 0700 /mosquitto/config/passwords &&
+ chown root:root /mosquitto/config/passwords &&
+ mosquitto_passwd -b -c /mosquitto/config/passwords $SERVICE_USER_MOSQUITTO $SERVICE_PASSWORD_MOSQUITTO &&
+ chown mosquitto:mosquitto /mosquitto/config/passwords;
+ fi &&
+ exec mosquitto -c /mosquitto/config/mosquitto.conf
+ "'
+ labels:
+ - traefik.tcp.routers.mqtt.entrypoints=mqtt
+ - traefik.tcp.routers.mqtts.entrypoints=mqtts
diff --git a/templates/compose/peppermint.yaml b/templates/compose/peppermint.yaml
index c079ee48b..228389eb4 100644
--- a/templates/compose/peppermint.yaml
+++ b/templates/compose/peppermint.yaml
@@ -1,3 +1,4 @@
+# ignore: true
# documentation: https://docs.peppermint.sh/
# slogan: Open source helpdesk solution designed to enhance the user experience for teams currently utilizing costly software alternatives
# tags: helpdesk, open-source, peppermint, postgres
diff --git a/templates/compose/plausible.yaml b/templates/compose/plausible.yaml
index e02e92d38..a37dcaf6e 100644
--- a/templates/compose/plausible.yaml
+++ b/templates/compose/plausible.yaml
@@ -10,31 +10,60 @@ services:
command: 'sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"'
environment:
- SERVICE_FQDN_PLAUSIBLE
- - "DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@plausible_db/plausible"
- - BASE_URL=$SERVICE_FQDN_PLAUSIBLE
- - SECRET_KEY_BASE=$SERVICE_BASE64_64_PLAUSIBLE
- - TOTP_VAULT_KEY=$SERVICE_REALBASE64_32_TOTP
+ - DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@plausible-db:5432/${POSTGRES_DB:-plausible-db}
+ - CLICKHOUSE_DATABASE_URL=http://plausible-events-db:8123/plausible_events_db
+ - BASE_URL=${SERVICE_FQDN_PLAUSIBLE}
+ - SECRET_KEY_BASE=${SERVICE_BASE64_64_PLAUSIBLE}
+ - TOTP_VAULT_KEY=${SERVICE_REALBASE64_32_TOTP}
depends_on:
- - plausible_db
- - plausible_events_db
- - mail
+ plausible-db:
+ condition: service_healthy
+ plausible-events-db:
+ condition: service_healthy
+ mail:
+ condition: service_healthy
+ healthcheck:
+ test:
+ [
+ "CMD",
+ "wget",
+ "--no-verbose",
+ "--tries=1",
+ "--spider",
+ "http://127.0.0.1:8000/api/health",
+ ]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+ start_period: 45s
+
mail:
image: bytemark/smtp
+ platform: linux/amd64
+ healthcheck:
+ test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/25' || exit 1"]
+ interval: 5s
+ timeout: 10s
+ retries: 20
- plausible_db:
+ plausible-db:
image: "postgres:16-alpine"
volumes:
- - "db-data:/var/lib/postgresql/data"
+ - plausible-postgres-data:/var/lib/postgresql/data
environment:
- - POSTGRES_DB=plausible
- - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
+ - POSTGRES_DB=${POSTGRES_DB:-plausible-db}
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
+ interval: 5s
+ timeout: 20s
+ retries: 10
- plausible_events_db:
+ plausible-events-db:
image: "clickhouse/clickhouse-server:24.3.3.102-alpine"
volumes:
- - type: volume
- source: event-data
- target: /var/lib/clickhouse
+ - plausible-events-data:/var/lib/clickhouse
- type: bind
source: ./clickhouse/clickhouse-config.xml
target: /etc/clickhouse-server/config.d/logging.xml
@@ -49,3 +78,10 @@ services:
nofile:
soft: 262144
hard: 262144
+ healthcheck:
+ test:
+ [
+ "CMD-SHELL",
+ "wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1",
+ ]
+ start_period: 30s
diff --git a/templates/compose/windmill.yaml b/templates/compose/windmill.yaml
index a14854ba0..1ce3a4652 100644
--- a/templates/compose/windmill.yaml
+++ b/templates/compose/windmill.yaml
@@ -11,10 +11,11 @@ services:
volumes:
- db-data:/var/lib/postgresql/data
environment:
- - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- - POSTGRES_DB=${POSTGRES_DB:-windmill}
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_DB=${POSTGRES_DB:-windmill-db}
healthcheck:
- test: ["CMD-SHELL", "pg_isready -U postgres"]
+ test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
@@ -23,16 +24,16 @@ services:
image: ghcr.io/windmill-labs/windmill:main
environment:
- SERVICE_FQDN_WINDMILL_8000
- - DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
- - MODE=${MODE:-server}
- - BASE_URL=$SERVICE_FQDN_WINDMILL
+ - DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db/${POSTGRES_DB:-windmill-db}
+ - MODE=server
+ - BASE_URL=${SERVICE_FQDN_WINDMILL}
depends_on:
db:
condition: service_healthy
volumes:
- worker-logs:/tmp/windmill/logs
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/api/version || exit 1"]
+ test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
@@ -40,9 +41,9 @@ services:
windmill-worker-1:
image: ghcr.io/windmill-labs/windmill:main
environment:
- - DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
- - MODE=${MODE:-worker}
- - WORKER_GROUP=${WORKER_GROUP:-default}
+ - DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db/${POSTGRES_DB:-windmill-db}
+ - MODE=worker
+ - WORKER_GROUP=default
depends_on:
db:
condition: service_healthy
@@ -51,7 +52,7 @@ services:
- worker-dependency-cache:/tmp/windmill/cache
- worker-logs:/tmp/windmill/logs
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/api/version || exit 1"]
+ test: ["CMD-SHELL", "exit 0"]
interval: 30s
timeout: 10s
retries: 3
@@ -59,9 +60,9 @@ services:
windmill-worker-2:
image: ghcr.io/windmill-labs/windmill:main
environment:
- - DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
- - MODE=${MODE:-worker}
- - WORKER_GROUP=${WORKER_GROUP:-default}
+ - DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db/${POSTGRES_DB:-windmill-db}
+ - MODE=worker
+ - WORKER_GROUP=default
depends_on:
db:
condition: service_healthy
@@ -70,7 +71,7 @@ services:
- worker-dependency-cache:/tmp/windmill/cache
- worker-logs:/tmp/windmill/logs
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/api/version || exit 1"]
+ test: ["CMD-SHELL", "exit 0"]
interval: 30s
timeout: 10s
retries: 3
@@ -78,9 +79,9 @@ services:
windmill-worker-3:
image: ghcr.io/windmill-labs/windmill:main
environment:
- - DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
- - MODE=${MODE:-worker}
- - WORKER_GROUP=${WORKER_GROUP:-default}
+ - DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db/${POSTGRES_DB:-windmill-db}
+ - MODE=worker
+ - WORKER_GROUP=default
depends_on:
db:
condition: service_healthy
@@ -89,7 +90,7 @@ services:
- worker-dependency-cache:/tmp/windmill/cache
- worker-logs:/tmp/windmill/logs
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/api/version || exit 1"]
+ test: ["CMD-SHELL", "exit 0"]
interval: 30s
timeout: 10s
retries: 3
@@ -97,18 +98,18 @@ services:
windmill-worker-native:
image: ghcr.io/windmill-labs/windmill:main
environment:
- - DATABASE_URL=postgres://postgres:$SERVICE_PASSWORD_POSTGRES@db/windmill
- - MODE=${MODE:-worker}
- - WORKER_GROUP=${WORKER_GROUP:-native}
- - NUM_WORKERS=${NUM_WORKERS:-8}
- - SLEEP_QUEUE=${SLEEP_QUEUE:-200}
+ - DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db/${POSTGRES_DB:-windmill-db}
+ - MODE=worker
+ - WORKER_GROUP=native
+ - NUM_WORKERS=8
+ - SLEEP_QUEUE=200
depends_on:
db:
condition: service_healthy
volumes:
- worker-logs:/tmp/windmill/logs
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/api/version || exit 1"]
+ test: ["CMD-SHELL", "exit 0"]
interval: 30s
timeout: 10s
retries: 3
@@ -122,3 +123,4 @@ services:
interval: 30s
timeout: 10s
retries: 3
+ start_period: 20s
\ No newline at end of file
diff --git a/templates/compose/zep.yaml b/templates/compose/zep.yaml
index 75e7558aa..1bc0912a3 100644
--- a/templates/compose/zep.yaml
+++ b/templates/compose/zep.yaml
@@ -1,3 +1,4 @@
+# ignore: true
# documentation: https://help.getzep.com/concepts
# slogan: Zep enhances your AI agent's knowledge through continuous learning from user interactions, enabling personalized experiences and improved accuracy.
# tags: lowcode, nocode, ai, llm, openai, anthropic, machine-learning, rag, agents, chatbot, api, team, bot, flows, memory
diff --git a/templates/service-templates.json b/templates/service-templates.json
index 664eb1ade..cc03e2e1d 100644
--- a/templates/service-templates.json
+++ b/templates/service-templates.json
@@ -162,7 +162,7 @@
"bookstack": {
"documentation": "https://www.bookstackapp.com/docs/?utm_source=coolify.io",
"slogan": "BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information",
- "compose": "c2VydmljZXM6CiAgYm9va3N0YWNrOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL2Jvb2tzdGFjazpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fQk9PS1NUQUNLXzgwCiAgICAgIC0gJ0FQUF9VUkw9JHtTRVJWSUNFX0ZRRE5fQk9PS1NUQUNLfScKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gREJfSE9TVD1tYXJpYWRiCiAgICAgIC0gREJfUE9SVD0zMzA2CiAgICAgIC0gJ0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdEQl9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ0RCX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWJvb2tzdGFja2FwcH0nCiAgICAgIC0gJ1FVRVVFX0NPTk5FQ1RJT049JHtRVUVVRV9DT05ORUNUSU9OfScKICAgICAgLSAnR0lUSFVCX0FQUF9JRD0ke0dJVEhVQl9BUFBfSUR9JwogICAgICAtICdHSVRIVUJfQVBQX1NFQ1JFVD0ke0dJVEhVQl9BUFBfU0VDUkVUfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Jvb2tzdGFjay1kYXRhOi9jb25maWcnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjgwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIG1hcmlhZGI6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvbWFyaWFkYjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWJvb2tzdGFja30nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgdm9sdW1lczoKICAgICAgLSAnYm9va3N0YWNrLW1hcmlhZGItZGF0YTovY29uZmlnJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "compose": "c2VydmljZXM6CiAgYm9va3N0YWNrOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL2Jvb2tzdGFjazpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fQk9PS1NUQUNLXzgwCiAgICAgIC0gJ0FQUF9VUkw9JHtTRVJWSUNFX0ZRRE5fQk9PS1NUQUNLfScKICAgICAgLSAnQVBQX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfQVBQS0VZfScKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gREJfSE9TVD1tYXJpYWRiCiAgICAgIC0gREJfUE9SVD0zMzA2CiAgICAgIC0gJ0RCX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnREJfREFUQUJBU0U9JHtNWVNRTF9EQVRBQkFTRTotYm9va3N0YWNrYXBwfScKICAgICAgLSAnUVVFVUVfQ09OTkVDVElPTj0ke1FVRVVFX0NPTk5FQ1RJT059JwogICAgICAtICdHSVRIVUJfQVBQX0lEPSR7R0lUSFVCX0FQUF9JRH0nCiAgICAgIC0gJ0dJVEhVQl9BUFBfU0VDUkVUPSR7R0lUSFVCX0FQUF9TRUNSRVR9JwogICAgICAtICdNQUlMX0RSSVZFUj0ke01BSUxfRFJJVkVSOi1zbXRwfScKICAgICAgLSAnTUFJTF9IT1NUPSR7TUFJTF9IT1NUfScKICAgICAgLSAnTUFJTF9QT1JUPSR7TUFJTF9QT1JUOi01ODd9JwogICAgICAtICdNQUlMX0VOQ1JZUFRJT049JHtNQUlMX0VOQ1JZUFRJT046LXRsc30nCiAgICAgIC0gJ01BSUxfVVNFUk5BTUU9JHtNQUlMX1VTRVJOQU1FfScKICAgICAgLSAnTUFJTF9QQVNTV09SRD0ke01BSUxfUEFTU1dPUkR9JwogICAgICAtICdNQUlMX0ZST009JHtNQUlMX0ZST019JwogICAgICAtICdNQUlMX0ZST01fTkFNRT0ke01BSUxfRlJPTV9OQU1FOi1Cb29rU3RhY2t9JwogICAgdm9sdW1lczoKICAgICAgLSAnYm9va3N0YWNrLWRhdGE6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnY3VybCAtZiBodHRwOi8vMTI3LjAuMC4xOjgwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIG1hcmlhZGI6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvbWFyaWFkYjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWJvb2tzdGFja30nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgdm9sdW1lczoKICAgICAgLSAnYm9va3N0YWNrLW1hcmlhZGItZGF0YTovY29uZmlnJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"free-and-open-source",
"mfa",
@@ -224,6 +224,21 @@
"minversion": "0.0.0",
"port": "10000"
},
+ "calcom": {
+ "documentation": "https://cal.com/docs?utm_source=coolify.io",
+ "slogan": "Scheduling infrastructure for everyone.",
+ "compose": "c2VydmljZXM6CiAgY2FsY29tOgogICAgaW1hZ2U6IGNhbGNvbS5kb2NrZXIuc2NhcmYuc2gvY2FsY29tL2NhbC5jb20KICAgIHBsYXRmb3JtOiBsaW51eC9hbWQ2NAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX0NBTENPTV8zMDAwCiAgICAgIC0gTkVYVF9QVUJMSUNfTElDRU5TRV9DT05TRU5UPWFncmVlCiAgICAgIC0gTk9ERV9FTlY9cHJvZHVjdGlvbgogICAgICAtICdORVhUX1BVQkxJQ19XRUJBUFBfVVJMPSR7U0VSVklDRV9GUUROX0NBTENPTX0nCiAgICAgIC0gJ05FWFRfUFVCTElDX0FQSV9WMl9VUkw9JHtTRVJWSUNFX0ZRRE5fQ0FMQ09NfS9hcGkvdjInCiAgICAgIC0gJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfRlFETl9DQUxDT019L2FwaS9hdXRoJwogICAgICAtICdORVhUQVVUSF9TRUNSRVQ9JHtTRVJWSUNFX0JBU0U2NF9DQUxDT01TRUNSRVR9JwogICAgICAtICdDQUxFTkRTT19FTkNSWVBUSU9OX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X0NBTENPTUtFWX0nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1jYWxlbmRzb30nCiAgICAgIC0gREFUQUJBU0VfSE9TVD1wb3N0Z3Jlc3FsCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AJHtEQVRBQkFTRV9IT1NUOi1wb3N0Z3Jlc3FsfS8ke1BPU1RHUkVTX0RCOi1jYWxlbmRzb30nCiAgICAgIC0gJ0RBVEFCQVNFX0RJUkVDVF9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QCR7REFUQUJBU0VfSE9TVDotcG9zdGdyZXNxbH0vJHtQT1NUR1JFU19EQjotY2FsZW5kc299JwogICAgICAtIENBTENPTV9URUxFTUVUUllfRElTQUJMRUQ9MQogICAgICAtICdFTUFJTF9GUk9NPSR7RU1BSUxfRlJPTX0nCiAgICAgIC0gJ0VNQUlMX0ZST01fTkFNRT0ke0VNQUlMX0ZST01fTkFNRX0nCiAgICAgIC0gJ0VNQUlMX1NFUlZFUl9IT1NUPSR7RU1BSUxfU0VSVkVSX0hPU1R9JwogICAgICAtICdFTUFJTF9TRVJWRVJfUE9SVD0ke0VNQUlMX1NFUlZFUl9QT1JUfScKICAgICAgLSAnRU1BSUxfU0VSVkVSX1VTRVI9JHtFTUFJTF9TRVJWRVJfVVNFUn0nCiAgICAgIC0gJ0VNQUlMX1NFUlZFUl9QQVNTV09SRD0ke0VNQUlMX1NFUlZFUl9QQVNTV09SRH0nCiAgICAgIC0gJ05FWFRfUFVCTElDX0FQUF9OQU1FPSJDYWwuY29tIicKICAgICAgLSAnQUxMT1dFRF9IT1NUTkFNRVM9WyIke1NFUlZJQ0VfRlFETl9DQUxDT019Il0nCiAgICBkZXBlbmRzX29uOgogICAgICAtIHBvc3RncmVzcWwKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWNhbGVuZHNvfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NhbGNvbS1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "calcom",
+ "calendso",
+ "scheduling",
+ "open",
+ "source"
+ ],
+ "logo": "svgs/calcom.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
"castopod": {
"documentation": "https://docs.castopod.org/main/en/?utm_source=coolify.io",
"slogan": "Castopod is a free & open-source hosting platform made for podcasters who want engage and interact with their audience.",
@@ -407,28 +422,6 @@
"minversion": "0.0.0",
"port": "8080"
},
- "dify": {
- "documentation": "https://docs.dify.ai?utm_source=coolify.io",
- "slogan": "Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, letting you quickly go from prototype to production.",
- "compose": "eC1zaGFyZWQtZW52OgogIExPR19MRVZFTDogJyR7TE9HX0xFVkVMOi1JTkZPfScKICBERUJVRzogJyR7REVCVUc6LWZhbHNlfScKICBGTEFTS19ERUJVRzogJyR7RkxBU0tfREVCVUc6LWZhbHNlfScKICBDT05TT0xFX1dFQl9VUkw6ICcke0NPTlNPTEVfV0VCX1VSTDotfScKICBDT05TT0xFX0FQSV9VUkw6ICcke0NPTlNPTEVfQVBJX1VSTDotfScKICBTRVJWSUNFX0FQSV9VUkw6IG51bGwKICBBUFBfV0VCX1VSTDogJyR7QVBQX1dFQl9VUkw6LX0nCiAgQ0hFQ0tfVVBEQVRFX1VSTDogJyR7Q0hFQ0tfVVBEQVRFX1VSTDotaHR0cHM6Ly91cGRhdGVzLmRpZnkuYWl9JwogIE9QRU5BSV9BUElfQkFTRTogJyR7T1BFTkFJX0FQSV9CQVNFOi1odHRwczovL2FwaS5vcGVuYWkuY29tL3YxfScKICBGSUxFU19VUkw6ICcke0ZJTEVTX1VSTDotfScKICBGSUxFU19BQ0NFU1NfVElNRU9VVDogJyR7RklMRVNfQUNDRVNTX1RJTUVPVVQ6LTMwMH0nCiAgQVBQX01BWF9BQ1RJVkVfUkVRVUVTVFM6ICcke0FQUF9NQVhfQUNUSVZFX1JFUVVFU1RTOi0wfScKICBNSUdSQVRJT05fRU5BQkxFRDogJyR7TUlHUkFUSU9OX0VOQUJMRUQ6LXRydWV9JwogIERFUExPWV9FTlY6ICcke0RFUExPWV9FTlY6LVBST0RVQ1RJT059JwogIERJRllfQklORF9BRERSRVNTOiAnJHtESUZZX0JJTkRfQUREUkVTUzotMC4wLjAuMH0nCiAgRElGWV9QT1JUOiAnJHtESUZZX1BPUlQ6LTUwMDF9JwogIFNFUlZFUl9XT1JLRVJfQU1PVU5UOiAnJHtTRVJWRVJfV09SS0VSX0FNT1VOVDotfScKICBTRVJWRVJfV09SS0VSX0NMQVNTOiAnJHtTRVJWRVJfV09SS0VSX0NMQVNTOi19JwogIENFTEVSWV9XT1JLRVJfQ0xBU1M6ICcke0NFTEVSWV9XT1JLRVJfQ0xBU1M6LX0nCiAgR1VOSUNPUk5fVElNRU9VVDogJyR7R1VOSUNPUk5fVElNRU9VVDotMzYwfScKICBDRUxFUllfV09SS0VSX0FNT1VOVDogJyR7Q0VMRVJZX1dPUktFUl9BTU9VTlQ6LX0nCiAgQ0VMRVJZX0FVVE9fU0NBTEU6ICcke0NFTEVSWV9BVVRPX1NDQUxFOi1mYWxzZX0nCiAgQ0VMRVJZX01BWF9XT1JLRVJTOiAnJHtDRUxFUllfTUFYX1dPUktFUlM6LX0nCiAgQ0VMRVJZX01JTl9XT1JLRVJTOiAnJHtDRUxFUllfTUlOX1dPUktFUlM6LX0nCiAgQVBJX1RPT0xfREVGQVVMVF9DT05ORUNUX1RJTUVPVVQ6ICcke0FQSV9UT09MX0RFRkFVTFRfQ09OTkVDVF9USU1FT1VUOi0xMH0nCiAgQVBJX1RPT0xfREVGQVVMVF9SRUFEX1RJTUVPVVQ6ICcke0FQSV9UT09MX0RFRkFVTFRfUkVBRF9USU1FT1VUOi02MH0nCiAgREJfVVNFUk5BTUU6ICRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICBEQl9QQVNTV09SRDogJFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICBEQl9IT1NUOiAnJHtEQl9IT1NUOi1kYn0nCiAgREJfUE9SVDogJyR7REJfUE9SVDotNTQzMn0nCiAgREJfREFUQUJBU0U6IGRpZnkKICBTUUxBTENIRU1ZX1BPT0xfU0laRTogJyR7U1FMQUxDSEVNWV9QT09MX1NJWkU6LTMwfScKICBTUUxBTENIRU1ZX1BPT0xfUkVDWUNMRTogJyR7U1FMQUxDSEVNWV9QT09MX1JFQ1lDTEU6LTM2MDB9JwogIFNRTEFMQ0hFTVlfRUNITzogJyR7U1FMQUxDSEVNWV9FQ0hPOi1mYWxzZX0nCiAgUE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TOiAnJHtQT1NUR1JFU19NQVhfQ09OTkVDVElPTlM6LTEwMH0nCiAgUE9TVEdSRVNfU0hBUkVEX0JVRkZFUlM6ICcke1BPU1RHUkVTX1NIQVJFRF9CVUZGRVJTOi0xMjhNQn0nCiAgUE9TVEdSRVNfV09SS19NRU06ICcke1BPU1RHUkVTX1dPUktfTUVNOi00TUJ9JwogIFBPU1RHUkVTX01BSU5URU5BTkNFX1dPUktfTUVNOiAnJHtQT1NUR1JFU19NQUlOVEVOQU5DRV9XT1JLX01FTTotNjRNQn0nCiAgUE9TVEdSRVNfRUZGRUNUSVZFX0NBQ0hFX1NJWkU6ICcke1BPU1RHUkVTX0VGRkVDVElWRV9DQUNIRV9TSVpFOi00MDk2TUJ9JwogIFJFRElTX0hPU1Q6ICcke1JFRElTX0hPU1Q6LXJlZGlzfScKICBSRURJU19QT1JUOiAnJHtSRURJU19QT1JUOi02Mzc5fScKICBSRURJU19VU0VSTkFNRTogJyR7UkVESVNfVVNFUk5BTUU6LX0nCiAgUkVESVNfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgUkVESVNfVVNFX1NTTDogJyR7UkVESVNfVVNFX1NTTDotZmFsc2V9JwogIFJFRElTX0RCOiAwCiAgQ0VMRVJZX0JST0tFUl9VUkw6ICdyZWRpczovLzokU0VSVklDRV9QQVNTV09SRF9SRURJU0ByZWRpczo2Mzc5LzEnCiAgQlJPS0VSX1VTRV9TU0w6ICcke0JST0tFUl9VU0VfU1NMOi1mYWxzZX0nCiAgV0VCX0FQSV9DT1JTX0FMTE9XX09SSUdJTlM6ICcke1dFQl9BUElfQ09SU19BTExPV19PUklHSU5TOi0qfScKICBDT05TT0xFX0NPUlNfQUxMT1dfT1JJR0lOUzogJyR7Q09OU09MRV9DT1JTX0FMTE9XX09SSUdJTlM6LSp9JwogIFNUT1JBR0VfVFlQRTogJyR7U1RPUkFHRV9UWVBFOi1sb2NhbH0nCiAgU1RPUkFHRV9MT0NBTF9QQVRIOiBzdG9yYWdlCiAgUzNfVVNFX0FXU19NQU5BR0VEX0lBTTogJyR7UzNfVVNFX0FXU19NQU5BR0VEX0lBTTotZmFsc2V9JwogIFMzX0VORFBPSU5UOiAnJHtTM19FTkRQT0lOVDotfScKICBTM19CVUNLRVRfTkFNRTogJyR7UzNfQlVDS0VUX05BTUU6LX0nCiAgUzNfQUNDRVNTX0tFWTogJyR7UzNfQUNDRVNTX0tFWTotfScKICBTM19TRUNSRVRfS0VZOiAnJHtTM19TRUNSRVRfS0VZOi19JwogIFMzX1JFR0lPTjogJyR7UzNfUkVHSU9OOi11cy1lYXN0LTF9JwogIEFaVVJFX0JMT0JfQUNDT1VOVF9OQU1FOiAnJHtBWlVSRV9CTE9CX0FDQ09VTlRfTkFNRTotfScKICBBWlVSRV9CTE9CX0FDQ09VTlRfS0VZOiAnJHtBWlVSRV9CTE9CX0FDQ09VTlRfS0VZOi19JwogIEFaVVJFX0JMT0JfQ09OVEFJTkVSX05BTUU6ICcke0FaVVJFX0JMT0JfQ09OVEFJTkVSX05BTUU6LX0nCiAgQVpVUkVfQkxPQl9BQ0NPVU5UX1VSTDogJyR7QVpVUkVfQkxPQl9BQ0NPVU5UX1VSTDotfScKICBHT09HTEVfU1RPUkFHRV9CVUNLRVRfTkFNRTogJyR7R09PR0xFX1NUT1JBR0VfQlVDS0VUX05BTUU6LX0nCiAgR09PR0xFX1NUT1JBR0VfU0VSVklDRV9BQ0NPVU5UX0pTT05fQkFTRTY0OiAnJHtHT09HTEVfU1RPUkFHRV9TRVJWSUNFX0FDQ09VTlRfSlNPTl9CQVNFNjQ6LX0nCiAgQUxJWVVOX09TU19CVUNLRVRfTkFNRTogJyR7QUxJWVVOX09TU19CVUNLRVRfTkFNRTotfScKICBBTElZVU5fT1NTX0FDQ0VTU19LRVk6ICcke0FMSVlVTl9PU1NfQUNDRVNTX0tFWTotfScKICBBTElZVU5fT1NTX1NFQ1JFVF9LRVk6ICcke0FMSVlVTl9PU1NfU0VDUkVUX0tFWTotfScKICBBTElZVU5fT1NTX0VORFBPSU5UOiAnJHtBTElZVU5fT1NTX0VORFBPSU5UOi19JwogIEFMSVlVTl9PU1NfUkVHSU9OOiAnJHtBTElZVU5fT1NTX1JFR0lPTjotfScKICBBTElZVU5fT1NTX0FVVEhfVkVSU0lPTjogJyR7QUxJWVVOX09TU19BVVRIX1ZFUlNJT046LXY0fScKICBURU5DRU5UX0NPU19CVUNLRVRfTkFNRTogJyR7VEVOQ0VOVF9DT1NfQlVDS0VUX05BTUU6LX0nCiAgVEVOQ0VOVF9DT1NfU0VDUkVUX0tFWTogJyR7VEVOQ0VOVF9DT1NfU0VDUkVUX0tFWTotfScKICBURU5DRU5UX0NPU19TRUNSRVRfSUQ6ICcke1RFTkNFTlRfQ09TX1NFQ1JFVF9JRDotfScKICBURU5DRU5UX0NPU19SRUdJT046ICcke1RFTkNFTlRfQ09TX1JFR0lPTjotfScKICBURU5DRU5UX0NPU19TQ0hFTUU6ICcke1RFTkNFTlRfQ09TX1NDSEVNRTotfScKICBPQ0lfRU5EUE9JTlQ6ICcke09DSV9FTkRQT0lOVDotfScKICBPQ0lfQlVDS0VUX05BTUU6ICcke09DSV9CVUNLRVRfTkFNRTotfScKICBPQ0lfQUNDRVNTX0tFWTogJyR7T0NJX0FDQ0VTU19LRVk6LX0nCiAgT0NJX1NFQ1JFVF9LRVk6ICcke09DSV9TRUNSRVRfS0VZOi19JwogIE9DSV9SRUdJT046ICcke09DSV9SRUdJT046LX0nCiAgVkVDVE9SX1NUT1JFOiAnJHtWRUNUT1JfU1RPUkU6LXdlYXZpYXRlfScKICBXRUFWSUFURV9FTkRQT0lOVDogJyR7V0VBVklBVEVfRU5EUE9JTlQ6LWh0dHA6Ly93ZWF2aWF0ZTo4MDgwfScKICBXRUFWSUFURV9BUElfS0VZOiAkU0VSVklDRV9QQVNTV09SRF9XRUFWSUFURQogIFJFTFlUX0hPU1Q6ICcke1JFTFlUX0hPU1Q6LWRifScKICBSRUxZVF9QT1JUOiAnJHtSRUxZVF9QT1JUOi01NDMyfScKICBSRUxZVF9VU0VSOiAkU0VSVklDRV9VU0VSX1JFTFlUCiAgUkVMWVRfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1JFTFlUCiAgUkVMWVRfREFUQUJBU0U6ICcke1JFTFlUX0RBVEFCQVNFOi1wb3N0Z3Jlc30nCiAgVElEQl9WRUNUT1JfSE9TVDogJyR7VElEQl9WRUNUT1JfSE9TVDotdGlkYn0nCiAgVElEQl9WRUNUT1JfUE9SVDogJyR7VElEQl9WRUNUT1JfUE9SVDotNDAwMH0nCiAgVElEQl9WRUNUT1JfVVNFUjogJFNFUlZJQ0VfVVNFUl9USURCCiAgVElEQl9WRUNUT1JfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1RJREIKICBUSURCX1ZFQ1RPUl9EQVRBQkFTRTogJyR7VElEQl9WRUNUT1JfREFUQUJBU0U6LWRpZnl9JwogIEFOQUxZVElDREJfS0VZX0lEOiAnJHtBTkFMWVRJQ0RCX0tFWV9JRDotfScKICBBTkFMWVRJQ0RCX0tFWV9TRUNSRVQ6ICcke0FOQUxZVElDREJfS0VZX1NFQ1JFVDotfScKICBBTkFMWVRJQ0RCX1JFR0lPTl9JRDogJyR7QU5BTFlUSUNEQl9SRUdJT05fSUQ6LX0nCiAgQU5BTFlUSUNEQl9JTlNUQU5DRV9JRDogJyR7QU5BTFlUSUNEQl9JTlNUQU5DRV9JRDotfScKICBBTkFMWVRJQ0RCX0FDQ09VTlQ6ICcke0FOQUxZVElDREJfQUNDT1VOVDotfScKICBBTkFMWVRJQ0RCX1BBU1NXT1JEOiAnJHtBTkFMWVRJQ0RCX1BBU1NXT1JEOi19JwogIEFOQUxZVElDREJfTkFNRVNQQUNFOiAnJHtBTkFMWVRJQ0RCX05BTUVTUEFDRTotZGlmeX0nCiAgQU5BTFlUSUNEQl9OQU1FU1BBQ0VfUEFTU1dPUkQ6ICcke0FOQUxZVElDREJfTkFNRVNQQUNFX1BBU1NXT1JEOi19JwogIFRFTkNFTlRfVkVDVE9SX0RCX1VSTDogJyR7VEVOQ0VOVF9WRUNUT1JfREJfVVJMOi1odHRwOi8vMTI3LjAuMC4xfScKICBURU5DRU5UX1ZFQ1RPUl9EQl9BUElfS0VZOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9BUElfS0VZOi1kaWZ5fScKICBURU5DRU5UX1ZFQ1RPUl9EQl9USU1FT1VUOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9USU1FT1VUOi0zMH0nCiAgVEVOQ0VOVF9WRUNUT1JfREJfVVNFUk5BTUU6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1VTRVJOQU1FOi1kaWZ5fScKICBURU5DRU5UX1ZFQ1RPUl9EQl9EQVRBQkFTRTogJyR7VEVOQ0VOVF9WRUNUT1JfREJfREFUQUJBU0U6LWRpZnl9JwogIFRFTkNFTlRfVkVDVE9SX0RCX1NIQVJEOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9TSEFSRDotMX0nCiAgVEVOQ0VOVF9WRUNUT1JfREJfUkVQTElDQVM6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1JFUExJQ0FTOi0yfScKICBVUExPQURfRklMRV9TSVpFX0xJTUlUOiAnJHtVUExPQURfRklMRV9TSVpFX0xJTUlUOi0xNX0nCiAgVVBMT0FEX0ZJTEVfQkFUQ0hfTElNSVQ6ICcke1VQTE9BRF9GSUxFX0JBVENIX0xJTUlUOi01fScKICBFVExfVFlQRTogJyR7RVRMX1RZUEU6LWRpZnl9JwogIE1VTFRJTU9EQUxfU0VORF9JTUFHRV9GT1JNQVQ6ICcke01VTFRJTU9EQUxfU0VORF9JTUFHRV9GT1JNQVQ6LWJhc2U2NH0nCiAgVVBMT0FEX0lNQUdFX0ZJTEVfU0laRV9MSU1JVDogJyR7VVBMT0FEX0lNQUdFX0ZJTEVfU0laRV9MSU1JVDotMTB9JwogIFNFTlRSWV9EU046ICcke0FQSV9TRU5UUllfRFNOOi19JwogIFNFTlRSWV9UUkFDRVNfU0FNUExFX1JBVEU6ICcke0FQSV9TRU5UUllfVFJBQ0VTX1NBTVBMRV9SQVRFOi0xLjB9JwogIFNFTlRSWV9QUk9GSUxFU19TQU1QTEVfUkFURTogJyR7QVBJX1NFTlRSWV9QUk9GSUxFU19TQU1QTEVfUkFURTotMS4wfScKICBOT1RJT05fSU5URUdSQVRJT05fVFlQRTogJyR7Tk9USU9OX0lOVEVHUkFUSU9OX1RZUEU6LXB1YmxpY30nCiAgTk9USU9OX0NMSUVOVF9TRUNSRVQ6ICcke05PVElPTl9DTElFTlRfU0VDUkVUOi19JwogIE5PVElPTl9DTElFTlRfSUQ6ICcke05PVElPTl9DTElFTlRfSUQ6LX0nCiAgTk9USU9OX0lOVEVSTkFMX1NFQ1JFVDogJyR7Tk9USU9OX0lOVEVSTkFMX1NFQ1JFVDotfScKICBNQUlMX1RZUEU6ICcke01BSUxfVFlQRTotcmVzZW5kfScKICBNQUlMX0RFRkFVTFRfU0VORF9GUk9NOiAnJHtNQUlMX0RFRkFVTFRfU0VORF9GUk9NOi19JwogIFNNVFBfU0VSVkVSOiAnJHtTTVRQX1NFUlZFUjotfScKICBTTVRQX1BPUlQ6ICcke1NNVFBfUE9SVDotNDY1fScKICBTTVRQX1VTRVJOQU1FOiAnJHtTTVRQX1VTRVJOQU1FOi19JwogIFNNVFBfUEFTU1dPUkQ6ICcke1NNVFBfUEFTU1dPUkQ6LX0nCiAgU01UUF9VU0VfVExTOiAnJHtTTVRQX1VTRV9UTFM6LXRydWV9JwogIFNNVFBfT1BQT1JUVU5JU1RJQ19UTFM6ICcke1NNVFBfT1BQT1JUVU5JU1RJQ19UTFM6LWZhbHNlfScKICBSRVNFTkRfQVBJX0tFWTogJyR7UkVTRU5EX0FQSV9LRVk6LXlvdXItcmVzZW5kLWFwaS1rZXl9JwogIFJFU0VORF9BUElfVVJMOiAnaHR0cHM6Ly9hcGkucmVzZW5kLmNvbScKICBJTkRFWElOR19NQVhfU0VHTUVOVEFUSU9OX1RPS0VOU19MRU5HVEg6ICcke0lOREVYSU5HX01BWF9TRUdNRU5UQVRJT05fVE9LRU5TX0xFTkdUSDotMTAwMH0nCiAgSU5WSVRFX0VYUElSWV9IT1VSUzogJyR7SU5WSVRFX0VYUElSWV9IT1VSUzotNzJ9JwogIFJFU0VUX1BBU1NXT1JEX1RPS0VOX0VYUElSWV9IT1VSUzogJyR7UkVTRVRfUEFTU1dPUkRfVE9LRU5fRVhQSVJZX0hPVVJTOi0yNH0nCiAgQ09ERV9FWEVDVVRJT05fRU5EUE9JTlQ6ICcke0NPREVfRVhFQ1VUSU9OX0VORFBPSU5UOi1odHRwOi8vc2FuZGJveDo4MTk0fScKICBDT0RFX0VYRUNVVElPTl9BUElfS0VZOiAnJHtTQU5EQk9YX0FQSV9LRVk6LWRpZnktc2FuZGJveH0nCiAgQ09ERV9NQVhfTlVNQkVSOiAnJHtDT0RFX01BWF9OVU1CRVI6LTkyMjMzNzIwMzY4NTQ3NzU4MDd9JwogIENPREVfTUlOX05VTUJFUjogJyR7Q09ERV9NSU5fTlVNQkVSOi0tOTIyMzM3MjAzNjg1NDc3NTgwOH0nCiAgQ09ERV9NQVhfU1RSSU5HX0xFTkdUSDogJyR7Q09ERV9NQVhfU1RSSU5HX0xFTkdUSDotODAwMDB9JwogIFRFTVBMQVRFX1RSQU5TRk9STV9NQVhfTEVOR1RIOiAnJHtURU1QTEFURV9UUkFOU0ZPUk1fTUFYX0xFTkdUSDotODAwMDB9JwogIENPREVfTUFYX1NUUklOR19BUlJBWV9MRU5HVEg6ICcke0NPREVfTUFYX1NUUklOR19BUlJBWV9MRU5HVEg6LTMwfScKICBDT0RFX01BWF9PQkpFQ1RfQVJSQVlfTEVOR1RIOiAnJHtDT0RFX01BWF9PQkpFQ1RfQVJSQVlfTEVOR1RIOi0zMH0nCiAgQ09ERV9NQVhfTlVNQkVSX0FSUkFZX0xFTkdUSDogJyR7Q09ERV9NQVhfTlVNQkVSX0FSUkFZX0xFTkdUSDotMTAwMH0nCiAgU1NSRl9QUk9YWV9IVFRQX1VSTDogJyR7U1NSRl9QUk9YWV9IVFRQX1VSTDotaHR0cDovL3NzcmZfcHJveHk6MzEyOH0nCiAgU1NSRl9QUk9YWV9IVFRQU19VUkw6ICcke1NTUkZfUFJPWFlfSFRUUFNfVVJMOi1odHRwOi8vc3NyZl9wcm94eTozMTI4fScKc2VydmljZXM6CiAgYXBpOgogICAgaW1hZ2U6ICdsYW5nZ2VuaXVzL2RpZnktYXBpOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICBTRUNSRVRfS0VZOiAkU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVRLRVkKICAgICAgSU5JVF9QQVNTV09SRDogJFNFUlZJQ0VfVVNFUl9JTklUUEFTU1dPUkQKICAgICAgTE9HX0xFVkVMOiAnJHtMT0dfTEVWRUw6LUlORk99JwogICAgICBERUJVRzogJyR7REVCVUc6LWZhbHNlfScKICAgICAgRkxBU0tfREVCVUc6ICcke0ZMQVNLX0RFQlVHOi1mYWxzZX0nCiAgICAgIENPTlNPTEVfV0VCX1VSTDogJyR7Q09OU09MRV9XRUJfVVJMOi19JwogICAgICBDT05TT0xFX0FQSV9VUkw6ICcke0NPTlNPTEVfQVBJX1VSTDotfScKICAgICAgU0VSVklDRV9BUElfVVJMOiBudWxsCiAgICAgIEFQUF9XRUJfVVJMOiAnJHtBUFBfV0VCX1VSTDotfScKICAgICAgQ0hFQ0tfVVBEQVRFX1VSTDogJyR7Q0hFQ0tfVVBEQVRFX1VSTDotaHR0cHM6Ly91cGRhdGVzLmRpZnkuYWl9JwogICAgICBPUEVOQUlfQVBJX0JBU0U6ICcke09QRU5BSV9BUElfQkFTRTotaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MX0nCiAgICAgIEZJTEVTX1VSTDogJyR7RklMRVNfVVJMOi19JwogICAgICBGSUxFU19BQ0NFU1NfVElNRU9VVDogJyR7RklMRVNfQUNDRVNTX1RJTUVPVVQ6LTMwMH0nCiAgICAgIEFQUF9NQVhfQUNUSVZFX1JFUVVFU1RTOiAnJHtBUFBfTUFYX0FDVElWRV9SRVFVRVNUUzotMH0nCiAgICAgIE1JR1JBVElPTl9FTkFCTEVEOiAnJHtNSUdSQVRJT05fRU5BQkxFRDotdHJ1ZX0nCiAgICAgIERFUExPWV9FTlY6ICcke0RFUExPWV9FTlY6LVBST0RVQ1RJT059JwogICAgICBESUZZX0JJTkRfQUREUkVTUzogJyR7RElGWV9CSU5EX0FERFJFU1M6LTAuMC4wLjB9JwogICAgICBESUZZX1BPUlQ6ICcke0RJRllfUE9SVDotNTAwMX0nCiAgICAgIFNFUlZFUl9XT1JLRVJfQU1PVU5UOiAnJHtTRVJWRVJfV09SS0VSX0FNT1VOVDotfScKICAgICAgU0VSVkVSX1dPUktFUl9DTEFTUzogJyR7U0VSVkVSX1dPUktFUl9DTEFTUzotfScKICAgICAgQ0VMRVJZX1dPUktFUl9DTEFTUzogJyR7Q0VMRVJZX1dPUktFUl9DTEFTUzotfScKICAgICAgR1VOSUNPUk5fVElNRU9VVDogJyR7R1VOSUNPUk5fVElNRU9VVDotMzYwfScKICAgICAgQ0VMRVJZX1dPUktFUl9BTU9VTlQ6ICcke0NFTEVSWV9XT1JLRVJfQU1PVU5UOi19JwogICAgICBDRUxFUllfQVVUT19TQ0FMRTogJyR7Q0VMRVJZX0FVVE9fU0NBTEU6LWZhbHNlfScKICAgICAgQ0VMRVJZX01BWF9XT1JLRVJTOiAnJHtDRUxFUllfTUFYX1dPUktFUlM6LX0nCiAgICAgIENFTEVSWV9NSU5fV09SS0VSUzogJyR7Q0VMRVJZX01JTl9XT1JLRVJTOi19JwogICAgICBBUElfVE9PTF9ERUZBVUxUX0NPTk5FQ1RfVElNRU9VVDogJyR7QVBJX1RPT0xfREVGQVVMVF9DT05ORUNUX1RJTUVPVVQ6LTEwfScKICAgICAgQVBJX1RPT0xfREVGQVVMVF9SRUFEX1RJTUVPVVQ6ICcke0FQSV9UT09MX0RFRkFVTFRfUkVBRF9USU1FT1VUOi02MH0nCiAgICAgIERCX1VTRVJOQU1FOiAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIERCX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICBEQl9IT1NUOiAnJHtEQl9IT1NUOi1kYn0nCiAgICAgIERCX1BPUlQ6ICcke0RCX1BPUlQ6LTU0MzJ9JwogICAgICBEQl9EQVRBQkFTRTogZGlmeQogICAgICBTUUxBTENIRU1ZX1BPT0xfU0laRTogJyR7U1FMQUxDSEVNWV9QT09MX1NJWkU6LTMwfScKICAgICAgU1FMQUxDSEVNWV9QT09MX1JFQ1lDTEU6ICcke1NRTEFMQ0hFTVlfUE9PTF9SRUNZQ0xFOi0zNjAwfScKICAgICAgU1FMQUxDSEVNWV9FQ0hPOiAnJHtTUUxBTENIRU1ZX0VDSE86LWZhbHNlfScKICAgICAgUE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TOiAnJHtQT1NUR1JFU19NQVhfQ09OTkVDVElPTlM6LTEwMH0nCiAgICAgIFBPU1RHUkVTX1NIQVJFRF9CVUZGRVJTOiAnJHtQT1NUR1JFU19TSEFSRURfQlVGRkVSUzotMTI4TUJ9JwogICAgICBQT1NUR1JFU19XT1JLX01FTTogJyR7UE9TVEdSRVNfV09SS19NRU06LTRNQn0nCiAgICAgIFBPU1RHUkVTX01BSU5URU5BTkNFX1dPUktfTUVNOiAnJHtQT1NUR1JFU19NQUlOVEVOQU5DRV9XT1JLX01FTTotNjRNQn0nCiAgICAgIFBPU1RHUkVTX0VGRkVDVElWRV9DQUNIRV9TSVpFOiAnJHtQT1NUR1JFU19FRkZFQ1RJVkVfQ0FDSEVfU0laRTotNDA5Nk1CfScKICAgICAgUkVESVNfSE9TVDogJyR7UkVESVNfSE9TVDotcmVkaXN9JwogICAgICBSRURJU19QT1JUOiAnJHtSRURJU19QT1JUOi02Mzc5fScKICAgICAgUkVESVNfVVNFUk5BTUU6ICcke1JFRElTX1VTRVJOQU1FOi19JwogICAgICBSRURJU19QQVNTV09SRDogJFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMKICAgICAgUkVESVNfVVNFX1NTTDogJyR7UkVESVNfVVNFX1NTTDotZmFsc2V9JwogICAgICBSRURJU19EQjogMAogICAgICBDRUxFUllfQlJPS0VSX1VSTDogJ3JlZGlzOi8vOiRTRVJWSUNFX1BBU1NXT1JEX1JFRElTQHJlZGlzOjYzNzkvMScKICAgICAgQlJPS0VSX1VTRV9TU0w6ICcke0JST0tFUl9VU0VfU1NMOi1mYWxzZX0nCiAgICAgIFdFQl9BUElfQ09SU19BTExPV19PUklHSU5TOiAnJHtXRUJfQVBJX0NPUlNfQUxMT1dfT1JJR0lOUzotKn0nCiAgICAgIENPTlNPTEVfQ09SU19BTExPV19PUklHSU5TOiAnJHtDT05TT0xFX0NPUlNfQUxMT1dfT1JJR0lOUzotKn0nCiAgICAgIFNUT1JBR0VfVFlQRTogJyR7U1RPUkFHRV9UWVBFOi1sb2NhbH0nCiAgICAgIFNUT1JBR0VfTE9DQUxfUEFUSDogc3RvcmFnZQogICAgICBTM19VU0VfQVdTX01BTkFHRURfSUFNOiAnJHtTM19VU0VfQVdTX01BTkFHRURfSUFNOi1mYWxzZX0nCiAgICAgIFMzX0VORFBPSU5UOiAnJHtTM19FTkRQT0lOVDotfScKICAgICAgUzNfQlVDS0VUX05BTUU6ICcke1MzX0JVQ0tFVF9OQU1FOi19JwogICAgICBTM19BQ0NFU1NfS0VZOiAnJHtTM19BQ0NFU1NfS0VZOi19JwogICAgICBTM19TRUNSRVRfS0VZOiAnJHtTM19TRUNSRVRfS0VZOi19JwogICAgICBTM19SRUdJT046ICcke1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgQVpVUkVfQkxPQl9BQ0NPVU5UX05BTUU6ICcke0FaVVJFX0JMT0JfQUNDT1VOVF9OQU1FOi19JwogICAgICBBWlVSRV9CTE9CX0FDQ09VTlRfS0VZOiAnJHtBWlVSRV9CTE9CX0FDQ09VTlRfS0VZOi19JwogICAgICBBWlVSRV9CTE9CX0NPTlRBSU5FUl9OQU1FOiAnJHtBWlVSRV9CTE9CX0NPTlRBSU5FUl9OQU1FOi19JwogICAgICBBWlVSRV9CTE9CX0FDQ09VTlRfVVJMOiAnJHtBWlVSRV9CTE9CX0FDQ09VTlRfVVJMOi19JwogICAgICBHT09HTEVfU1RPUkFHRV9CVUNLRVRfTkFNRTogJyR7R09PR0xFX1NUT1JBR0VfQlVDS0VUX05BTUU6LX0nCiAgICAgIEdPT0dMRV9TVE9SQUdFX1NFUlZJQ0VfQUNDT1VOVF9KU09OX0JBU0U2NDogJyR7R09PR0xFX1NUT1JBR0VfU0VSVklDRV9BQ0NPVU5UX0pTT05fQkFTRTY0Oi19JwogICAgICBBTElZVU5fT1NTX0JVQ0tFVF9OQU1FOiAnJHtBTElZVU5fT1NTX0JVQ0tFVF9OQU1FOi19JwogICAgICBBTElZVU5fT1NTX0FDQ0VTU19LRVk6ICcke0FMSVlVTl9PU1NfQUNDRVNTX0tFWTotfScKICAgICAgQUxJWVVOX09TU19TRUNSRVRfS0VZOiAnJHtBTElZVU5fT1NTX1NFQ1JFVF9LRVk6LX0nCiAgICAgIEFMSVlVTl9PU1NfRU5EUE9JTlQ6ICcke0FMSVlVTl9PU1NfRU5EUE9JTlQ6LX0nCiAgICAgIEFMSVlVTl9PU1NfUkVHSU9OOiAnJHtBTElZVU5fT1NTX1JFR0lPTjotfScKICAgICAgQUxJWVVOX09TU19BVVRIX1ZFUlNJT046ICcke0FMSVlVTl9PU1NfQVVUSF9WRVJTSU9OOi12NH0nCiAgICAgIFRFTkNFTlRfQ09TX0JVQ0tFVF9OQU1FOiAnJHtURU5DRU5UX0NPU19CVUNLRVRfTkFNRTotfScKICAgICAgVEVOQ0VOVF9DT1NfU0VDUkVUX0tFWTogJyR7VEVOQ0VOVF9DT1NfU0VDUkVUX0tFWTotfScKICAgICAgVEVOQ0VOVF9DT1NfU0VDUkVUX0lEOiAnJHtURU5DRU5UX0NPU19TRUNSRVRfSUQ6LX0nCiAgICAgIFRFTkNFTlRfQ09TX1JFR0lPTjogJyR7VEVOQ0VOVF9DT1NfUkVHSU9OOi19JwogICAgICBURU5DRU5UX0NPU19TQ0hFTUU6ICcke1RFTkNFTlRfQ09TX1NDSEVNRTotfScKICAgICAgT0NJX0VORFBPSU5UOiAnJHtPQ0lfRU5EUE9JTlQ6LX0nCiAgICAgIE9DSV9CVUNLRVRfTkFNRTogJyR7T0NJX0JVQ0tFVF9OQU1FOi19JwogICAgICBPQ0lfQUNDRVNTX0tFWTogJyR7T0NJX0FDQ0VTU19LRVk6LX0nCiAgICAgIE9DSV9TRUNSRVRfS0VZOiAnJHtPQ0lfU0VDUkVUX0tFWTotfScKICAgICAgT0NJX1JFR0lPTjogJyR7T0NJX1JFR0lPTjotfScKICAgICAgVkVDVE9SX1NUT1JFOiAnJHtWRUNUT1JfU1RPUkU6LXdlYXZpYXRlfScKICAgICAgV0VBVklBVEVfRU5EUE9JTlQ6ICcke1dFQVZJQVRFX0VORFBPSU5UOi1odHRwOi8vd2VhdmlhdGU6ODA4MH0nCiAgICAgIFdFQVZJQVRFX0FQSV9LRVk6ICRTRVJWSUNFX1BBU1NXT1JEX1dFQVZJQVRFCiAgICAgIFJFTFlUX0hPU1Q6ICcke1JFTFlUX0hPU1Q6LWRifScKICAgICAgUkVMWVRfUE9SVDogJyR7UkVMWVRfUE9SVDotNTQzMn0nCiAgICAgIFJFTFlUX1VTRVI6ICRTRVJWSUNFX1VTRVJfUkVMWVQKICAgICAgUkVMWVRfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1JFTFlUCiAgICAgIFJFTFlUX0RBVEFCQVNFOiAnJHtSRUxZVF9EQVRBQkFTRTotcG9zdGdyZXN9JwogICAgICBUSURCX1ZFQ1RPUl9IT1NUOiAnJHtUSURCX1ZFQ1RPUl9IT1NUOi10aWRifScKICAgICAgVElEQl9WRUNUT1JfUE9SVDogJyR7VElEQl9WRUNUT1JfUE9SVDotNDAwMH0nCiAgICAgIFRJREJfVkVDVE9SX1VTRVI6ICRTRVJWSUNFX1VTRVJfVElEQgogICAgICBUSURCX1ZFQ1RPUl9QQVNTV09SRDogJFNFUlZJQ0VfUEFTU1dPUkRfVElEQgogICAgICBUSURCX1ZFQ1RPUl9EQVRBQkFTRTogJyR7VElEQl9WRUNUT1JfREFUQUJBU0U6LWRpZnl9JwogICAgICBBTkFMWVRJQ0RCX0tFWV9JRDogJyR7QU5BTFlUSUNEQl9LRVlfSUQ6LX0nCiAgICAgIEFOQUxZVElDREJfS0VZX1NFQ1JFVDogJyR7QU5BTFlUSUNEQl9LRVlfU0VDUkVUOi19JwogICAgICBBTkFMWVRJQ0RCX1JFR0lPTl9JRDogJyR7QU5BTFlUSUNEQl9SRUdJT05fSUQ6LX0nCiAgICAgIEFOQUxZVElDREJfSU5TVEFOQ0VfSUQ6ICcke0FOQUxZVElDREJfSU5TVEFOQ0VfSUQ6LX0nCiAgICAgIEFOQUxZVElDREJfQUNDT1VOVDogJyR7QU5BTFlUSUNEQl9BQ0NPVU5UOi19JwogICAgICBBTkFMWVRJQ0RCX1BBU1NXT1JEOiAnJHtBTkFMWVRJQ0RCX1BBU1NXT1JEOi19JwogICAgICBBTkFMWVRJQ0RCX05BTUVTUEFDRTogJyR7QU5BTFlUSUNEQl9OQU1FU1BBQ0U6LWRpZnl9JwogICAgICBBTkFMWVRJQ0RCX05BTUVTUEFDRV9QQVNTV09SRDogJyR7QU5BTFlUSUNEQl9OQU1FU1BBQ0VfUEFTU1dPUkQ6LX0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX1VSTDogJyR7VEVOQ0VOVF9WRUNUT1JfREJfVVJMOi1odHRwOi8vMTI3LjAuMC4xfScKICAgICAgVEVOQ0VOVF9WRUNUT1JfREJfQVBJX0tFWTogJyR7VEVOQ0VOVF9WRUNUT1JfREJfQVBJX0tFWTotZGlmeX0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX1RJTUVPVVQ6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1RJTUVPVVQ6LTMwfScKICAgICAgVEVOQ0VOVF9WRUNUT1JfREJfVVNFUk5BTUU6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1VTRVJOQU1FOi1kaWZ5fScKICAgICAgVEVOQ0VOVF9WRUNUT1JfREJfREFUQUJBU0U6ICcke1RFTkNFTlRfVkVDVE9SX0RCX0RBVEFCQVNFOi1kaWZ5fScKICAgICAgVEVOQ0VOVF9WRUNUT1JfREJfU0hBUkQ6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1NIQVJEOi0xfScKICAgICAgVEVOQ0VOVF9WRUNUT1JfREJfUkVQTElDQVM6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1JFUExJQ0FTOi0yfScKICAgICAgVVBMT0FEX0ZJTEVfU0laRV9MSU1JVDogJyR7VVBMT0FEX0ZJTEVfU0laRV9MSU1JVDotMTV9JwogICAgICBVUExPQURfRklMRV9CQVRDSF9MSU1JVDogJyR7VVBMT0FEX0ZJTEVfQkFUQ0hfTElNSVQ6LTV9JwogICAgICBFVExfVFlQRTogJyR7RVRMX1RZUEU6LWRpZnl9JwogICAgICBNVUxUSU1PREFMX1NFTkRfSU1BR0VfRk9STUFUOiAnJHtNVUxUSU1PREFMX1NFTkRfSU1BR0VfRk9STUFUOi1iYXNlNjR9JwogICAgICBVUExPQURfSU1BR0VfRklMRV9TSVpFX0xJTUlUOiAnJHtVUExPQURfSU1BR0VfRklMRV9TSVpFX0xJTUlUOi0xMH0nCiAgICAgIFNFTlRSWV9EU046ICcke0FQSV9TRU5UUllfRFNOOi19JwogICAgICBTRU5UUllfVFJBQ0VTX1NBTVBMRV9SQVRFOiAnJHtBUElfU0VOVFJZX1RSQUNFU19TQU1QTEVfUkFURTotMS4wfScKICAgICAgU0VOVFJZX1BST0ZJTEVTX1NBTVBMRV9SQVRFOiAnJHtBUElfU0VOVFJZX1BST0ZJTEVTX1NBTVBMRV9SQVRFOi0xLjB9JwogICAgICBOT1RJT05fSU5URUdSQVRJT05fVFlQRTogJyR7Tk9USU9OX0lOVEVHUkFUSU9OX1RZUEU6LXB1YmxpY30nCiAgICAgIE5PVElPTl9DTElFTlRfU0VDUkVUOiAnJHtOT1RJT05fQ0xJRU5UX1NFQ1JFVDotfScKICAgICAgTk9USU9OX0NMSUVOVF9JRDogJyR7Tk9USU9OX0NMSUVOVF9JRDotfScKICAgICAgTk9USU9OX0lOVEVSTkFMX1NFQ1JFVDogJyR7Tk9USU9OX0lOVEVSTkFMX1NFQ1JFVDotfScKICAgICAgTUFJTF9UWVBFOiAnJHtNQUlMX1RZUEU6LXJlc2VuZH0nCiAgICAgIE1BSUxfREVGQVVMVF9TRU5EX0ZST006ICcke01BSUxfREVGQVVMVF9TRU5EX0ZST006LX0nCiAgICAgIFNNVFBfU0VSVkVSOiAnJHtTTVRQX1NFUlZFUjotfScKICAgICAgU01UUF9QT1JUOiAnJHtTTVRQX1BPUlQ6LTQ2NX0nCiAgICAgIFNNVFBfVVNFUk5BTUU6ICcke1NNVFBfVVNFUk5BTUU6LX0nCiAgICAgIFNNVFBfUEFTU1dPUkQ6ICcke1NNVFBfUEFTU1dPUkQ6LX0nCiAgICAgIFNNVFBfVVNFX1RMUzogJyR7U01UUF9VU0VfVExTOi10cnVlfScKICAgICAgU01UUF9PUFBPUlRVTklTVElDX1RMUzogJyR7U01UUF9PUFBPUlRVTklTVElDX1RMUzotZmFsc2V9JwogICAgICBSRVNFTkRfQVBJX0tFWTogJyR7UkVTRU5EX0FQSV9LRVk6LXlvdXItcmVzZW5kLWFwaS1rZXl9JwogICAgICBSRVNFTkRfQVBJX1VSTDogJ2h0dHBzOi8vYXBpLnJlc2VuZC5jb20nCiAgICAgIElOREVYSU5HX01BWF9TRUdNRU5UQVRJT05fVE9LRU5TX0xFTkdUSDogJyR7SU5ERVhJTkdfTUFYX1NFR01FTlRBVElPTl9UT0tFTlNfTEVOR1RIOi0xMDAwfScKICAgICAgSU5WSVRFX0VYUElSWV9IT1VSUzogJyR7SU5WSVRFX0VYUElSWV9IT1VSUzotNzJ9JwogICAgICBSRVNFVF9QQVNTV09SRF9UT0tFTl9FWFBJUllfSE9VUlM6ICcke1JFU0VUX1BBU1NXT1JEX1RPS0VOX0VYUElSWV9IT1VSUzotMjR9JwogICAgICBDT0RFX0VYRUNVVElPTl9FTkRQT0lOVDogJyR7Q09ERV9FWEVDVVRJT05fRU5EUE9JTlQ6LWh0dHA6Ly9zYW5kYm94OjgxOTR9JwogICAgICBDT0RFX0VYRUNVVElPTl9BUElfS0VZOiAnJHtTQU5EQk9YX0FQSV9LRVk6LWRpZnktc2FuZGJveH0nCiAgICAgIENPREVfTUFYX05VTUJFUjogJyR7Q09ERV9NQVhfTlVNQkVSOi05MjIzMzcyMDM2ODU0Nzc1ODA3fScKICAgICAgQ09ERV9NSU5fTlVNQkVSOiAnJHtDT0RFX01JTl9OVU1CRVI6LS05MjIzMzcyMDM2ODU0Nzc1ODA4fScKICAgICAgQ09ERV9NQVhfU1RSSU5HX0xFTkdUSDogJyR7Q09ERV9NQVhfU1RSSU5HX0xFTkdUSDotODAwMDB9JwogICAgICBURU1QTEFURV9UUkFOU0ZPUk1fTUFYX0xFTkdUSDogJyR7VEVNUExBVEVfVFJBTlNGT1JNX01BWF9MRU5HVEg6LTgwMDAwfScKICAgICAgQ09ERV9NQVhfU1RSSU5HX0FSUkFZX0xFTkdUSDogJyR7Q09ERV9NQVhfU1RSSU5HX0FSUkFZX0xFTkdUSDotMzB9JwogICAgICBDT0RFX01BWF9PQkpFQ1RfQVJSQVlfTEVOR1RIOiAnJHtDT0RFX01BWF9PQkpFQ1RfQVJSQVlfTEVOR1RIOi0zMH0nCiAgICAgIENPREVfTUFYX05VTUJFUl9BUlJBWV9MRU5HVEg6ICcke0NPREVfTUFYX05VTUJFUl9BUlJBWV9MRU5HVEg6LTEwMDB9JwogICAgICBTU1JGX1BST1hZX0hUVFBfVVJMOiAnJHtTU1JGX1BST1hZX0hUVFBfVVJMOi1odHRwOi8vc3NyZl9wcm94eTozMTI4fScKICAgICAgU1NSRl9QUk9YWV9IVFRQU19VUkw6ICcke1NTUkZfUFJPWFlfSFRUUFNfVVJMOi1odHRwOi8vc3NyZl9wcm94eTozMTI4fScKICAgICAgTU9ERTogYXBpCiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnZGlmeS1zdG9yYWdlOi9hcHAvYXBpL3N0b3JhZ2UnCiAgICBuZXR3b3JrczoKICAgICAgLSBzc3JmX3Byb3h5X25ldHdvcmsKICAgICAgLSBkZWZhdWx0CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9oZWFsdGgnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICAgICAgc3RhcnRfcGVyaW9kOiA0MHMKICB3b3JrZXI6CiAgICBpbWFnZTogJ2xhbmdnZW5pdXMvZGlmeS1hcGk6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIExPR19MRVZFTDogJyR7TE9HX0xFVkVMOi1JTkZPfScKICAgICAgREVCVUc6ICcke0RFQlVHOi1mYWxzZX0nCiAgICAgIEZMQVNLX0RFQlVHOiAnJHtGTEFTS19ERUJVRzotZmFsc2V9JwogICAgICBDT05TT0xFX1dFQl9VUkw6ICcke0NPTlNPTEVfV0VCX1VSTDotfScKICAgICAgQ09OU09MRV9BUElfVVJMOiAnJHtDT05TT0xFX0FQSV9VUkw6LX0nCiAgICAgIFNFUlZJQ0VfQVBJX1VSTDogbnVsbAogICAgICBBUFBfV0VCX1VSTDogJyR7QVBQX1dFQl9VUkw6LX0nCiAgICAgIENIRUNLX1VQREFURV9VUkw6ICcke0NIRUNLX1VQREFURV9VUkw6LWh0dHBzOi8vdXBkYXRlcy5kaWZ5LmFpfScKICAgICAgT1BFTkFJX0FQSV9CQVNFOiAnJHtPUEVOQUlfQVBJX0JBU0U6LWh0dHBzOi8vYXBpLm9wZW5haS5jb20vdjF9JwogICAgICBGSUxFU19VUkw6ICcke0ZJTEVTX1VSTDotfScKICAgICAgRklMRVNfQUNDRVNTX1RJTUVPVVQ6ICcke0ZJTEVTX0FDQ0VTU19USU1FT1VUOi0zMDB9JwogICAgICBBUFBfTUFYX0FDVElWRV9SRVFVRVNUUzogJyR7QVBQX01BWF9BQ1RJVkVfUkVRVUVTVFM6LTB9JwogICAgICBNSUdSQVRJT05fRU5BQkxFRDogJyR7TUlHUkFUSU9OX0VOQUJMRUQ6LXRydWV9JwogICAgICBERVBMT1lfRU5WOiAnJHtERVBMT1lfRU5WOi1QUk9EVUNUSU9OfScKICAgICAgRElGWV9CSU5EX0FERFJFU1M6ICcke0RJRllfQklORF9BRERSRVNTOi0wLjAuMC4wfScKICAgICAgRElGWV9QT1JUOiAnJHtESUZZX1BPUlQ6LTUwMDF9JwogICAgICBTRVJWRVJfV09SS0VSX0FNT1VOVDogJyR7U0VSVkVSX1dPUktFUl9BTU9VTlQ6LX0nCiAgICAgIFNFUlZFUl9XT1JLRVJfQ0xBU1M6ICcke1NFUlZFUl9XT1JLRVJfQ0xBU1M6LX0nCiAgICAgIENFTEVSWV9XT1JLRVJfQ0xBU1M6ICcke0NFTEVSWV9XT1JLRVJfQ0xBU1M6LX0nCiAgICAgIEdVTklDT1JOX1RJTUVPVVQ6ICcke0dVTklDT1JOX1RJTUVPVVQ6LTM2MH0nCiAgICAgIENFTEVSWV9XT1JLRVJfQU1PVU5UOiAnJHtDRUxFUllfV09SS0VSX0FNT1VOVDotfScKICAgICAgQ0VMRVJZX0FVVE9fU0NBTEU6ICcke0NFTEVSWV9BVVRPX1NDQUxFOi1mYWxzZX0nCiAgICAgIENFTEVSWV9NQVhfV09SS0VSUzogJyR7Q0VMRVJZX01BWF9XT1JLRVJTOi19JwogICAgICBDRUxFUllfTUlOX1dPUktFUlM6ICcke0NFTEVSWV9NSU5fV09SS0VSUzotfScKICAgICAgQVBJX1RPT0xfREVGQVVMVF9DT05ORUNUX1RJTUVPVVQ6ICcke0FQSV9UT09MX0RFRkFVTFRfQ09OTkVDVF9USU1FT1VUOi0xMH0nCiAgICAgIEFQSV9UT09MX0RFRkFVTFRfUkVBRF9USU1FT1VUOiAnJHtBUElfVE9PTF9ERUZBVUxUX1JFQURfVElNRU9VVDotNjB9JwogICAgICBEQl9VU0VSTkFNRTogJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICBEQl9QQVNTV09SRDogJFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgREJfSE9TVDogJyR7REJfSE9TVDotZGJ9JwogICAgICBEQl9QT1JUOiAnJHtEQl9QT1JUOi01NDMyfScKICAgICAgREJfREFUQUJBU0U6IGRpZnkKICAgICAgU1FMQUxDSEVNWV9QT09MX1NJWkU6ICcke1NRTEFMQ0hFTVlfUE9PTF9TSVpFOi0zMH0nCiAgICAgIFNRTEFMQ0hFTVlfUE9PTF9SRUNZQ0xFOiAnJHtTUUxBTENIRU1ZX1BPT0xfUkVDWUNMRTotMzYwMH0nCiAgICAgIFNRTEFMQ0hFTVlfRUNITzogJyR7U1FMQUxDSEVNWV9FQ0hPOi1mYWxzZX0nCiAgICAgIFBPU1RHUkVTX01BWF9DT05ORUNUSU9OUzogJyR7UE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TOi0xMDB9JwogICAgICBQT1NUR1JFU19TSEFSRURfQlVGRkVSUzogJyR7UE9TVEdSRVNfU0hBUkVEX0JVRkZFUlM6LTEyOE1CfScKICAgICAgUE9TVEdSRVNfV09SS19NRU06ICcke1BPU1RHUkVTX1dPUktfTUVNOi00TUJ9JwogICAgICBQT1NUR1JFU19NQUlOVEVOQU5DRV9XT1JLX01FTTogJyR7UE9TVEdSRVNfTUFJTlRFTkFOQ0VfV09SS19NRU06LTY0TUJ9JwogICAgICBQT1NUR1JFU19FRkZFQ1RJVkVfQ0FDSEVfU0laRTogJyR7UE9TVEdSRVNfRUZGRUNUSVZFX0NBQ0hFX1NJWkU6LTQwOTZNQn0nCiAgICAgIFJFRElTX0hPU1Q6ICcke1JFRElTX0hPU1Q6LXJlZGlzfScKICAgICAgUkVESVNfUE9SVDogJyR7UkVESVNfUE9SVDotNjM3OX0nCiAgICAgIFJFRElTX1VTRVJOQU1FOiAnJHtSRURJU19VU0VSTkFNRTotfScKICAgICAgUkVESVNfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICAgIFJFRElTX1VTRV9TU0w6ICcke1JFRElTX1VTRV9TU0w6LWZhbHNlfScKICAgICAgUkVESVNfREI6IDAKICAgICAgQ0VMRVJZX0JST0tFUl9VUkw6ICdyZWRpczovLzokU0VSVklDRV9QQVNTV09SRF9SRURJU0ByZWRpczo2Mzc5LzEnCiAgICAgIEJST0tFUl9VU0VfU1NMOiAnJHtCUk9LRVJfVVNFX1NTTDotZmFsc2V9JwogICAgICBXRUJfQVBJX0NPUlNfQUxMT1dfT1JJR0lOUzogJyR7V0VCX0FQSV9DT1JTX0FMTE9XX09SSUdJTlM6LSp9JwogICAgICBDT05TT0xFX0NPUlNfQUxMT1dfT1JJR0lOUzogJyR7Q09OU09MRV9DT1JTX0FMTE9XX09SSUdJTlM6LSp9JwogICAgICBTVE9SQUdFX1RZUEU6ICcke1NUT1JBR0VfVFlQRTotbG9jYWx9JwogICAgICBTVE9SQUdFX0xPQ0FMX1BBVEg6IHN0b3JhZ2UKICAgICAgUzNfVVNFX0FXU19NQU5BR0VEX0lBTTogJyR7UzNfVVNFX0FXU19NQU5BR0VEX0lBTTotZmFsc2V9JwogICAgICBTM19FTkRQT0lOVDogJyR7UzNfRU5EUE9JTlQ6LX0nCiAgICAgIFMzX0JVQ0tFVF9OQU1FOiAnJHtTM19CVUNLRVRfTkFNRTotfScKICAgICAgUzNfQUNDRVNTX0tFWTogJyR7UzNfQUNDRVNTX0tFWTotfScKICAgICAgUzNfU0VDUkVUX0tFWTogJyR7UzNfU0VDUkVUX0tFWTotfScKICAgICAgUzNfUkVHSU9OOiAnJHtTM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIEFaVVJFX0JMT0JfQUNDT1VOVF9OQU1FOiAnJHtBWlVSRV9CTE9CX0FDQ09VTlRfTkFNRTotfScKICAgICAgQVpVUkVfQkxPQl9BQ0NPVU5UX0tFWTogJyR7QVpVUkVfQkxPQl9BQ0NPVU5UX0tFWTotfScKICAgICAgQVpVUkVfQkxPQl9DT05UQUlORVJfTkFNRTogJyR7QVpVUkVfQkxPQl9DT05UQUlORVJfTkFNRTotfScKICAgICAgQVpVUkVfQkxPQl9BQ0NPVU5UX1VSTDogJyR7QVpVUkVfQkxPQl9BQ0NPVU5UX1VSTDotfScKICAgICAgR09PR0xFX1NUT1JBR0VfQlVDS0VUX05BTUU6ICcke0dPT0dMRV9TVE9SQUdFX0JVQ0tFVF9OQU1FOi19JwogICAgICBHT09HTEVfU1RPUkFHRV9TRVJWSUNFX0FDQ09VTlRfSlNPTl9CQVNFNjQ6ICcke0dPT0dMRV9TVE9SQUdFX1NFUlZJQ0VfQUNDT1VOVF9KU09OX0JBU0U2NDotfScKICAgICAgQUxJWVVOX09TU19CVUNLRVRfTkFNRTogJyR7QUxJWVVOX09TU19CVUNLRVRfTkFNRTotfScKICAgICAgQUxJWVVOX09TU19BQ0NFU1NfS0VZOiAnJHtBTElZVU5fT1NTX0FDQ0VTU19LRVk6LX0nCiAgICAgIEFMSVlVTl9PU1NfU0VDUkVUX0tFWTogJyR7QUxJWVVOX09TU19TRUNSRVRfS0VZOi19JwogICAgICBBTElZVU5fT1NTX0VORFBPSU5UOiAnJHtBTElZVU5fT1NTX0VORFBPSU5UOi19JwogICAgICBBTElZVU5fT1NTX1JFR0lPTjogJyR7QUxJWVVOX09TU19SRUdJT046LX0nCiAgICAgIEFMSVlVTl9PU1NfQVVUSF9WRVJTSU9OOiAnJHtBTElZVU5fT1NTX0FVVEhfVkVSU0lPTjotdjR9JwogICAgICBURU5DRU5UX0NPU19CVUNLRVRfTkFNRTogJyR7VEVOQ0VOVF9DT1NfQlVDS0VUX05BTUU6LX0nCiAgICAgIFRFTkNFTlRfQ09TX1NFQ1JFVF9LRVk6ICcke1RFTkNFTlRfQ09TX1NFQ1JFVF9LRVk6LX0nCiAgICAgIFRFTkNFTlRfQ09TX1NFQ1JFVF9JRDogJyR7VEVOQ0VOVF9DT1NfU0VDUkVUX0lEOi19JwogICAgICBURU5DRU5UX0NPU19SRUdJT046ICcke1RFTkNFTlRfQ09TX1JFR0lPTjotfScKICAgICAgVEVOQ0VOVF9DT1NfU0NIRU1FOiAnJHtURU5DRU5UX0NPU19TQ0hFTUU6LX0nCiAgICAgIE9DSV9FTkRQT0lOVDogJyR7T0NJX0VORFBPSU5UOi19JwogICAgICBPQ0lfQlVDS0VUX05BTUU6ICcke09DSV9CVUNLRVRfTkFNRTotfScKICAgICAgT0NJX0FDQ0VTU19LRVk6ICcke09DSV9BQ0NFU1NfS0VZOi19JwogICAgICBPQ0lfU0VDUkVUX0tFWTogJyR7T0NJX1NFQ1JFVF9LRVk6LX0nCiAgICAgIE9DSV9SRUdJT046ICcke09DSV9SRUdJT046LX0nCiAgICAgIFZFQ1RPUl9TVE9SRTogJyR7VkVDVE9SX1NUT1JFOi13ZWF2aWF0ZX0nCiAgICAgIFdFQVZJQVRFX0VORFBPSU5UOiAnJHtXRUFWSUFURV9FTkRQT0lOVDotaHR0cDovL3dlYXZpYXRlOjgwODB9JwogICAgICBXRUFWSUFURV9BUElfS0VZOiAkU0VSVklDRV9QQVNTV09SRF9XRUFWSUFURQogICAgICBSRUxZVF9IT1NUOiAnJHtSRUxZVF9IT1NUOi1kYn0nCiAgICAgIFJFTFlUX1BPUlQ6ICcke1JFTFlUX1BPUlQ6LTU0MzJ9JwogICAgICBSRUxZVF9VU0VSOiAkU0VSVklDRV9VU0VSX1JFTFlUCiAgICAgIFJFTFlUX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9SRUxZVAogICAgICBSRUxZVF9EQVRBQkFTRTogJyR7UkVMWVRfREFUQUJBU0U6LXBvc3RncmVzfScKICAgICAgVElEQl9WRUNUT1JfSE9TVDogJyR7VElEQl9WRUNUT1JfSE9TVDotdGlkYn0nCiAgICAgIFRJREJfVkVDVE9SX1BPUlQ6ICcke1RJREJfVkVDVE9SX1BPUlQ6LTQwMDB9JwogICAgICBUSURCX1ZFQ1RPUl9VU0VSOiAkU0VSVklDRV9VU0VSX1RJREIKICAgICAgVElEQl9WRUNUT1JfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1RJREIKICAgICAgVElEQl9WRUNUT1JfREFUQUJBU0U6ICcke1RJREJfVkVDVE9SX0RBVEFCQVNFOi1kaWZ5fScKICAgICAgQU5BTFlUSUNEQl9LRVlfSUQ6ICcke0FOQUxZVElDREJfS0VZX0lEOi19JwogICAgICBBTkFMWVRJQ0RCX0tFWV9TRUNSRVQ6ICcke0FOQUxZVElDREJfS0VZX1NFQ1JFVDotfScKICAgICAgQU5BTFlUSUNEQl9SRUdJT05fSUQ6ICcke0FOQUxZVElDREJfUkVHSU9OX0lEOi19JwogICAgICBBTkFMWVRJQ0RCX0lOU1RBTkNFX0lEOiAnJHtBTkFMWVRJQ0RCX0lOU1RBTkNFX0lEOi19JwogICAgICBBTkFMWVRJQ0RCX0FDQ09VTlQ6ICcke0FOQUxZVElDREJfQUNDT1VOVDotfScKICAgICAgQU5BTFlUSUNEQl9QQVNTV09SRDogJyR7QU5BTFlUSUNEQl9QQVNTV09SRDotfScKICAgICAgQU5BTFlUSUNEQl9OQU1FU1BBQ0U6ICcke0FOQUxZVElDREJfTkFNRVNQQUNFOi1kaWZ5fScKICAgICAgQU5BTFlUSUNEQl9OQU1FU1BBQ0VfUEFTU1dPUkQ6ICcke0FOQUxZVElDREJfTkFNRVNQQUNFX1BBU1NXT1JEOi19JwogICAgICBURU5DRU5UX1ZFQ1RPUl9EQl9VUkw6ICcke1RFTkNFTlRfVkVDVE9SX0RCX1VSTDotaHR0cDovLzEyNy4wLjAuMX0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX0FQSV9LRVk6ICcke1RFTkNFTlRfVkVDVE9SX0RCX0FQSV9LRVk6LWRpZnl9JwogICAgICBURU5DRU5UX1ZFQ1RPUl9EQl9USU1FT1VUOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9USU1FT1VUOi0zMH0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX1VTRVJOQU1FOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9VU0VSTkFNRTotZGlmeX0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX0RBVEFCQVNFOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9EQVRBQkFTRTotZGlmeX0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX1NIQVJEOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9TSEFSRDotMX0nCiAgICAgIFRFTkNFTlRfVkVDVE9SX0RCX1JFUExJQ0FTOiAnJHtURU5DRU5UX1ZFQ1RPUl9EQl9SRVBMSUNBUzotMn0nCiAgICAgIFVQTE9BRF9GSUxFX1NJWkVfTElNSVQ6ICcke1VQTE9BRF9GSUxFX1NJWkVfTElNSVQ6LTE1fScKICAgICAgVVBMT0FEX0ZJTEVfQkFUQ0hfTElNSVQ6ICcke1VQTE9BRF9GSUxFX0JBVENIX0xJTUlUOi01fScKICAgICAgRVRMX1RZUEU6ICcke0VUTF9UWVBFOi1kaWZ5fScKICAgICAgTVVMVElNT0RBTF9TRU5EX0lNQUdFX0ZPUk1BVDogJyR7TVVMVElNT0RBTF9TRU5EX0lNQUdFX0ZPUk1BVDotYmFzZTY0fScKICAgICAgVVBMT0FEX0lNQUdFX0ZJTEVfU0laRV9MSU1JVDogJyR7VVBMT0FEX0lNQUdFX0ZJTEVfU0laRV9MSU1JVDotMTB9JwogICAgICBTRU5UUllfRFNOOiAnJHtBUElfU0VOVFJZX0RTTjotfScKICAgICAgU0VOVFJZX1RSQUNFU19TQU1QTEVfUkFURTogJyR7QVBJX1NFTlRSWV9UUkFDRVNfU0FNUExFX1JBVEU6LTEuMH0nCiAgICAgIFNFTlRSWV9QUk9GSUxFU19TQU1QTEVfUkFURTogJyR7QVBJX1NFTlRSWV9QUk9GSUxFU19TQU1QTEVfUkFURTotMS4wfScKICAgICAgTk9USU9OX0lOVEVHUkFUSU9OX1RZUEU6ICcke05PVElPTl9JTlRFR1JBVElPTl9UWVBFOi1wdWJsaWN9JwogICAgICBOT1RJT05fQ0xJRU5UX1NFQ1JFVDogJyR7Tk9USU9OX0NMSUVOVF9TRUNSRVQ6LX0nCiAgICAgIE5PVElPTl9DTElFTlRfSUQ6ICcke05PVElPTl9DTElFTlRfSUQ6LX0nCiAgICAgIE5PVElPTl9JTlRFUk5BTF9TRUNSRVQ6ICcke05PVElPTl9JTlRFUk5BTF9TRUNSRVQ6LX0nCiAgICAgIE1BSUxfVFlQRTogJyR7TUFJTF9UWVBFOi1yZXNlbmR9JwogICAgICBNQUlMX0RFRkFVTFRfU0VORF9GUk9NOiAnJHtNQUlMX0RFRkFVTFRfU0VORF9GUk9NOi19JwogICAgICBTTVRQX1NFUlZFUjogJyR7U01UUF9TRVJWRVI6LX0nCiAgICAgIFNNVFBfUE9SVDogJyR7U01UUF9QT1JUOi00NjV9JwogICAgICBTTVRQX1VTRVJOQU1FOiAnJHtTTVRQX1VTRVJOQU1FOi19JwogICAgICBTTVRQX1BBU1NXT1JEOiAnJHtTTVRQX1BBU1NXT1JEOi19JwogICAgICBTTVRQX1VTRV9UTFM6ICcke1NNVFBfVVNFX1RMUzotdHJ1ZX0nCiAgICAgIFNNVFBfT1BQT1JUVU5JU1RJQ19UTFM6ICcke1NNVFBfT1BQT1JUVU5JU1RJQ19UTFM6LWZhbHNlfScKICAgICAgUkVTRU5EX0FQSV9LRVk6ICcke1JFU0VORF9BUElfS0VZOi15b3VyLXJlc2VuZC1hcGkta2V5fScKICAgICAgUkVTRU5EX0FQSV9VUkw6ICdodHRwczovL2FwaS5yZXNlbmQuY29tJwogICAgICBJTkRFWElOR19NQVhfU0VHTUVOVEFUSU9OX1RPS0VOU19MRU5HVEg6ICcke0lOREVYSU5HX01BWF9TRUdNRU5UQVRJT05fVE9LRU5TX0xFTkdUSDotMTAwMH0nCiAgICAgIElOVklURV9FWFBJUllfSE9VUlM6ICcke0lOVklURV9FWFBJUllfSE9VUlM6LTcyfScKICAgICAgUkVTRVRfUEFTU1dPUkRfVE9LRU5fRVhQSVJZX0hPVVJTOiAnJHtSRVNFVF9QQVNTV09SRF9UT0tFTl9FWFBJUllfSE9VUlM6LTI0fScKICAgICAgQ09ERV9FWEVDVVRJT05fRU5EUE9JTlQ6ICcke0NPREVfRVhFQ1VUSU9OX0VORFBPSU5UOi1odHRwOi8vc2FuZGJveDo4MTk0fScKICAgICAgQ09ERV9FWEVDVVRJT05fQVBJX0tFWTogJyR7U0FOREJPWF9BUElfS0VZOi1kaWZ5LXNhbmRib3h9JwogICAgICBDT0RFX01BWF9OVU1CRVI6ICcke0NPREVfTUFYX05VTUJFUjotOTIyMzM3MjAzNjg1NDc3NTgwN30nCiAgICAgIENPREVfTUlOX05VTUJFUjogJyR7Q09ERV9NSU5fTlVNQkVSOi0tOTIyMzM3MjAzNjg1NDc3NTgwOH0nCiAgICAgIENPREVfTUFYX1NUUklOR19MRU5HVEg6ICcke0NPREVfTUFYX1NUUklOR19MRU5HVEg6LTgwMDAwfScKICAgICAgVEVNUExBVEVfVFJBTlNGT1JNX01BWF9MRU5HVEg6ICcke1RFTVBMQVRFX1RSQU5TRk9STV9NQVhfTEVOR1RIOi04MDAwMH0nCiAgICAgIENPREVfTUFYX1NUUklOR19BUlJBWV9MRU5HVEg6ICcke0NPREVfTUFYX1NUUklOR19BUlJBWV9MRU5HVEg6LTMwfScKICAgICAgQ09ERV9NQVhfT0JKRUNUX0FSUkFZX0xFTkdUSDogJyR7Q09ERV9NQVhfT0JKRUNUX0FSUkFZX0xFTkdUSDotMzB9JwogICAgICBDT0RFX01BWF9OVU1CRVJfQVJSQVlfTEVOR1RIOiAnJHtDT0RFX01BWF9OVU1CRVJfQVJSQVlfTEVOR1RIOi0xMDAwfScKICAgICAgU1NSRl9QUk9YWV9IVFRQX1VSTDogJyR7U1NSRl9QUk9YWV9IVFRQX1VSTDotaHR0cDovL3NzcmZfcHJveHk6MzEyOH0nCiAgICAgIFNTUkZfUFJPWFlfSFRUUFNfVVJMOiAnJHtTU1JGX1BST1hZX0hUVFBTX1VSTDotaHR0cDovL3NzcmZfcHJveHk6MzEyOH0nCiAgICAgIE1PREU6IHdvcmtlcgogICAgZGVwZW5kc19vbjoKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2RpZnktc3RvcmFnZTovYXBwL2FwaS9zdG9yYWdlJwogICAgbmV0d29ya3M6CiAgICAgIC0gc3NyZl9wcm94eV9uZXR3b3JrCiAgICAgIC0gZGVmYXVsdAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjZWxlcnkgaW5zcGVjdCBwaW5nJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCiAgd2ViOgogICAgaW1hZ2U6ICdsYW5nZ2VuaXVzL2RpZnktd2ViOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9XRUJfMzAwMAogICAgICAtICdDT05TT0xFX0FQSV9VUkw9JHtTRVJWSUNFX0ZRRE5fV0VCfScKICAgICAgLSAnQVBQX0FQSV9VUkw9JHtTRVJWSUNFX0ZRRE5fQVBJfScKICAgICAgLSAnU0VOVFJZX0RTTj0ke1dFQl9TRU5UUllfRFNOOi19JwogICAgICAtICdORVhUX1RFTEVNRVRSWV9ESVNBQkxFRD0ke05FWFRfVEVMRU1FVFJZX0RJU0FCTEVEOi0wfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnaHR0cDovL3dlYjozMDAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCiAgZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE1LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICBQT1NUR1JFU19EQjogZGlmeQogICAgICBQR0RBVEE6IC92YXIvbGliL3Bvc3RncmVzcWwvZGF0YS9wZ2RhdGEKICAgIGNvbW1hbmQ6ICJwb3N0Z3JlcyAtYyAnbWF4X2Nvbm5lY3Rpb25zPSR7UE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TOi0xMDB9J1xuICAgICAgICAgLWMgJ3NoYXJlZF9idWZmZXJzPSR7UE9TVEdSRVNfU0hBUkVEX0JVRkZFUlM6LTEyOE1CfSdcbiAgICAgICAgIC1jICd3b3JrX21lbT0ke1BPU1RHUkVTX1dPUktfTUVNOi00TUJ9J1xuICAgICAgICAgLWMgJ21haW50ZW5hbmNlX3dvcmtfbWVtPSR7UE9TVEdSRVNfTUFJTlRFTkFOQ0VfV09SS19NRU06LTY0TUJ9J1xuICAgICAgICAgLWMgJ2VmZmVjdGl2ZV9jYWNoZV9zaXplPSR7UE9TVEdSRVNfRUZGRUNUSVZFX0NBQ0hFX1NJWkU6LTQwOTZNQn0nXG4iCiAgICB2b2x1bWVzOgogICAgICAtICdkaWZ5LWRiLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHBnX2lzcmVhZHkKICAgICAgICAtICctVScKICAgICAgICAtICRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgICAtICctZCcKICAgICAgICAtIGRpZnkKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjYtYWxwaW5lJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIFJFRElTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9SRURJUwogICAgdm9sdW1lczoKICAgICAgLSAnZGlmeS1yZWRpcy1kYXRhOi9kYXRhJwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLXJlcXVpcmVwYXNzICIkU0VSVklDRV9QQVNTV09SRF9SRURJUyInCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSAnLWEnCiAgICAgICAgLSAkU0VSVklDRV9QQVNTV09SRF9SRURJUwogICAgICAgIC0gcGluZwogIHNhbmRib3g6CiAgICBpbWFnZTogJ2xhbmdnZW5pdXMvZGlmeS1zYW5kYm94OmxhdGVzdCcKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgZW52aXJvbm1lbnQ6CiAgICAgIEFQSV9LRVk6ICcke1NBTkRCT1hfQVBJX0tFWTotZGlmeS1zYW5kYm94fScKICAgICAgR0lOX01PREU6ICcke1NBTkRCT1hfR0lOX01PREU6LXJlbGVhc2V9JwogICAgICBXT1JLRVJfVElNRU9VVDogJyR7U0FOREJPWF9XT1JLRVJfVElNRU9VVDotMTV9JwogICAgICBFTkFCTEVfTkVUV09SSzogJyR7U0FOREJPWF9FTkFCTEVfTkVUV09SSzotdHJ1ZX0nCiAgICAgIEhUVFBfUFJPWFk6ICcke1NBTkRCT1hfSFRUUF9QUk9YWTotaHR0cDovL3NzcmZfcHJveHk6MzEyOH0nCiAgICAgIEhUVFBTX1BST1hZOiAnJHtTQU5EQk9YX0hUVFBTX1BST1hZOi1odHRwOi8vc3NyZl9wcm94eTozMTI4fScKICAgICAgU0FOREJPWF9QT1JUOiAnJHtTQU5EQk9YX1BPUlQ6LTgxOTR9JwogICAgdm9sdW1lczoKICAgICAgLSAnLi92b2x1bWVzL3NhbmRib3gvZGVwZW5kZW5jaWVzOi9kZXBlbmRlbmNpZXMnCiAgICBuZXR3b3JrczoKICAgICAgLSBzc3JmX3Byb3h5X25ldHdvcmsKICAgICAgLSBkZWZhdWx0CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS84MTk0JyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMwogIHNzcmZfcHJveHk6CiAgICBpbWFnZTogJ3VidW50dS9zcXVpZDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9zc3JmX3Byb3h5L3NxdWlkLmNvbmYudGVtcGxhdGUKICAgICAgICB0YXJnZXQ6IC9ldGMvc3F1aWQvc3F1aWQuY29uZi50ZW1wbGF0ZQogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICJhY2wgbG9jYWxuZXQgc3JjIDAuMC4wLjEtMC4yNTUuMjU1LjI1NVx0IyBSRkMgMTEyMiBcInRoaXNcIiBuZXR3b3JrIChMQU4pXG5hY2wgbG9jYWxuZXQgc3JjIDEwLjAuMC4wLzhcdFx0IyBSRkMgMTkxOCBsb2NhbCBwcml2YXRlIG5ldHdvcmsgKExBTilcbmFjbCBsb2NhbG5ldCBzcmMgMTAwLjY0LjAuMC8xMFx0XHQjIFJGQyA2NTk4IHNoYXJlZCBhZGRyZXNzIHNwYWNlIChDR04pXG5hY2wgbG9jYWxuZXQgc3JjIDE2OS4yNTQuMC4wLzE2IFx0IyBSRkMgMzkyNyBsaW5rLWxvY2FsIChkaXJlY3RseSBwbHVnZ2VkKSBtYWNoaW5lc1xuYWNsIGxvY2FsbmV0IHNyYyAxNzIuMTYuMC4wLzEyXHRcdCMgUkZDIDE5MTggbG9jYWwgcHJpdmF0ZSBuZXR3b3JrIChMQU4pXG5hY2wgbG9jYWxuZXQgc3JjIDE5Mi4xNjguMC4wLzE2XHRcdCMgUkZDIDE5MTggbG9jYWwgcHJpdmF0ZSBuZXR3b3JrIChMQU4pXG5hY2wgbG9jYWxuZXQgc3JjIGZjMDA6Oi83ICAgICAgIFx0IyBSRkMgNDE5MyBsb2NhbCBwcml2YXRlIG5ldHdvcmsgcmFuZ2VcbmFjbCBsb2NhbG5ldCBzcmMgZmU4MDo6LzEwICAgICAgXHQjIFJGQyA0MjkxIGxpbmstbG9jYWwgKGRpcmVjdGx5IHBsdWdnZWQpIG1hY2hpbmVzXG5hY2wgU1NMX3BvcnRzIHBvcnQgNDQzXG5hY2wgU2FmZV9wb3J0cyBwb3J0IDgwXHRcdCMgaHR0cFxuYWNsIFNhZmVfcG9ydHMgcG9ydCAyMVx0XHQjIGZ0cFxuYWNsIFNhZmVfcG9ydHMgcG9ydCA0NDNcdFx0IyBodHRwc1xuYWNsIFNhZmVfcG9ydHMgcG9ydCA3MFx0XHQjIGdvcGhlclxuYWNsIFNhZmVfcG9ydHMgcG9ydCAyMTBcdFx0IyB3YWlzXG5hY2wgU2FmZV9wb3J0cyBwb3J0IDEwMjUtNjU1MzVcdCMgdW5yZWdpc3RlcmVkIHBvcnRzXG5hY2wgU2FmZV9wb3J0cyBwb3J0IDI4MFx0XHQjIGh0dHAtbWdtdFxuYWNsIFNhZmVfcG9ydHMgcG9ydCA0ODhcdFx0IyBnc3MtaHR0cFxuYWNsIFNhZmVfcG9ydHMgcG9ydCA1OTFcdFx0IyBmaWxlbWFrZXJcbmFjbCBTYWZlX3BvcnRzIHBvcnQgNzc3XHRcdCMgbXVsdGlsaW5nIGh0dHBcbmFjbCBDT05ORUNUIG1ldGhvZCBDT05ORUNUXG5odHRwX2FjY2VzcyBkZW55ICFTYWZlX3BvcnRzXG5odHRwX2FjY2VzcyBkZW55IENPTk5FQ1QgIVNTTF9wb3J0c1xuaHR0cF9hY2Nlc3MgYWxsb3cgbG9jYWxob3N0IG1hbmFnZXJcbmh0dHBfYWNjZXNzIGRlbnkgbWFuYWdlclxuaHR0cF9hY2Nlc3MgYWxsb3cgbG9jYWxob3N0XG5pbmNsdWRlIC9ldGMvc3F1aWQvY29uZi5kLyouY29uZlxuaHR0cF9hY2Nlc3MgZGVueSBhbGxcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBQcm94eSBTZXJ2ZXIgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbmh0dHBfcG9ydCAzMTI4XG5jb3JlZHVtcF9kaXIgJHtDT1JFRFVNUF9ESVJ9XG5yZWZyZXNoX3BhdHRlcm4gXmZ0cDpcdFx0MTQ0MFx0MjAlXHQxMDA4MFxucmVmcmVzaF9wYXR0ZXJuIF5nb3BoZXI6XHQxNDQwXHQwJVx0MTQ0MFxucmVmcmVzaF9wYXR0ZXJuIC1pICgvY2dpLWJpbi98XFw/KSAwXHQwJVx0MFxucmVmcmVzaF9wYXR0ZXJuIFxcLyhQYWNrYWdlc3xTb3VyY2VzKSh8XFwuYnoyfFxcLmd6fFxcLnh6KSQgMCAwJSAwIHJlZnJlc2gtaW1zXG5yZWZyZXNoX3BhdHRlcm4gXFwvUmVsZWFzZSh8XFwuZ3BnKSQgMCAwJSAwIHJlZnJlc2gtaW1zXG5yZWZyZXNoX3BhdHRlcm4gXFwvSW5SZWxlYXNlJCAwIDAlIDAgcmVmcmVzaC1pbXNcbnJlZnJlc2hfcGF0dGVybiBcXC8oVHJhbnNsYXRpb24tLiopKHxcXC5iejJ8XFwuZ3p8XFwueHopJCAwIDAlIDAgcmVmcmVzaC1pbXNcbnJlZnJlc2hfcGF0dGVybiAuXHRcdDBcdDIwJVx0NDMyMFxuXG5cbiMgY2FjaGVfZGlyIHVmcyAvdmFyL3Nwb29sL3NxdWlkIDEwMCAxNiAyNTZcbiMgdXBzdHJlYW0gcHJveHksIHNldCB0byB5b3VyIG93biB1cHN0cmVhbSBwcm94eSBJUCB0byBhdm9pZCBTU1JGIGF0dGFja3NcbiMgY2FjaGVfcGVlciAxNzIuMS4xLjEgcGFyZW50IDMxMjggMCBuby1xdWVyeSBuby1kaWdlc3Qgbm8tbmV0ZGItZXhjaGFuZ2UgZGVmYXVsdCBcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBSZXZlcnNlIFByb3h5IFRvIFNhbmRib3ggIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbmh0dHBfcG9ydCAzMTI5IGFjY2VsIHZob3N0XG5jYWNoZV9wZWVyICR7U0FOREJPWF9IT1NUfSBwYXJlbnQgJHtTQU5EQk9YX1BPUlR9IDAgbm8tcXVlcnkgb3JpZ2luc2VydmVyXG5hY2wgc3JjX2FsbCBzcmMgYWxsXG5odHRwX2FjY2VzcyBhbGxvdyBzcmNfYWxsXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3NzcmZfcHJveHkvZG9ja2VyLWVudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9kb2NrZXItZW50cnlwb2ludC5zaAogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICIjIS9iaW4vYmFzaFxuXG4jIE1vZGlmaWVkIGJhc2VkIG9uIFNxdWlkIE9DSSBpbWFnZSBlbnRyeXBvaW50XG5cbiMgVGhpcyBlbnRyeXBvaW50IGFpbXMgdG8gZm9yd2FyZCB0aGUgc3F1aWQgbG9ncyB0byBzdGRvdXQgdG8gYXNzaXN0IHVzZXJzIG9mXG4jIGNvbW1vbiBjb250YWluZXIgcmVsYXRlZCB0b29saW5nIChlLmcuLCBrdWJlcm5ldGVzLCBkb2NrZXItY29tcG9zZSwgZXRjKSB0b1xuIyBhY2Nlc3MgdGhlIHNlcnZpY2UgbG9ncy5cblxuIyBNb3Jlb3ZlciwgaXQgaW52b2tlcyB0aGUgc3F1aWQgYmluYXJ5LCBsZWF2aW5nIGFsbCB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzIHRvXG4jIGJlIHByb3ZpZGVkIGJ5IHRoZSBcImNvbW1hbmRcIiBwYXNzZWQgdG8gdGhlIHNwYXduZWQgY29udGFpbmVyLiBJZiBubyBjb21tYW5kXG4jIGlzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLCB0aGUgZGVmYXVsdCBiZWhhdmlvciAoYXMgcGVyIHRoZSBDTUQgc3RhdGVtZW50IGluXG4jIHRoZSBEb2NrZXJmaWxlKSB3aWxsIGJlIHRvIHVzZSBVYnVudHUncyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gWzFdIGFuZCBydW5cbiMgc3F1aWQgd2l0aCB0aGUgXCItTllDXCIgb3B0aW9ucyB0byBtaW1pYyB0aGUgYmVoYXZpb3Igb2YgdGhlIFVidW50dSBwcm92aWRlZFxuIyBzeXN0ZW1kIHVuaXQuXG5cbiMgWzFdIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaXMgY2hhbmdlZCBpbiB0aGUgRG9ja2VyZmlsZSB0byBhbGxvdyBsb2NhbFxuIyBuZXR3b3JrIGNvbm5lY3Rpb25zLiBTZWUgdGhlIERvY2tlcmZpbGUgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5cbmVjaG8gXCJbRU5UUllQT0lOVF0gcmUtY3JlYXRlIHNuYWtlb2lsIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHJlbW92ZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3NcIlxuaWYgWyAhIC1mIC9ldGMvc3NsL3ByaXZhdGUvc3NsLWNlcnQtc25ha2VvaWwua2V5IF07IHRoZW5cbiAgICAvdXNyL3NiaW4vbWFrZS1zc2wtY2VydCBnZW5lcmF0ZS1kZWZhdWx0LXNuYWtlb2lsIC0tZm9yY2Utb3ZlcndyaXRlID4gL2Rldi9udWxsIDI+JjFcbmZpXG5cbnRhaWwgLUYgL3Zhci9sb2cvc3F1aWQvYWNjZXNzLmxvZyAyPi9kZXYvbnVsbCAmXG50YWlsIC1GIC92YXIvbG9nL3NxdWlkL2Vycm9yLmxvZyAyPi9kZXYvbnVsbCAmXG50YWlsIC1GIC92YXIvbG9nL3NxdWlkL3N0b3JlLmxvZyAyPi9kZXYvbnVsbCAmXG50YWlsIC1GIC92YXIvbG9nL3NxdWlkL2NhY2hlLmxvZyAyPi9kZXYvbnVsbCAmXG5cbiMgUmVwbGFjZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlIGFuZCBvdXRwdXQgdG8gdGhlIHNxdWlkLmNvbmZcbmVjaG8gXCJbRU5UUllQT0lOVF0gcmVwbGFjaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgdGVtcGxhdGVcIlxuYXdrICd7XG4gICAgd2hpbGUobWF0Y2goJDAsIC9cXCR7W0EtWmEtel9dW0EtWmEtel8wLTldKn0vKSkge1xuICAgICAgICB2YXIgPSBzdWJzdHIoJDAsIFJTVEFSVCsyLCBSTEVOR1RILTMpXG4gICAgICAgIHZhbCA9IEVOVklST05bdmFyXVxuICAgICAgICAkMCA9IHN1YnN0cigkMCwgMSwgUlNUQVJULTEpIHZhbCBzdWJzdHIoJDAsIFJTVEFSVCtSTEVOR1RIKVxuICAgIH1cbiAgICBwcmludFxufScgL2V0Yy9zcXVpZC9zcXVpZC5jb25mLnRlbXBsYXRlID4gL2V0Yy9zcXVpZC9zcXVpZC5jb25mXG5cbi91c3Ivc2Jpbi9zcXVpZCAtTnpcbmVjaG8gXCJbRU5UUllQT0lOVF0gc3RhcnRpbmcgc3F1aWRcIlxuL3Vzci9zYmluL3NxdWlkIC1mIC9ldGMvc3F1aWQvc3F1aWQuY29uZiAtTllDIDFcbiIKICAgICAgLSAnc3NyZl9wcm94eV92YXJfbG9nX3NxdWlkOi92YXIvbG9nL3NxdWlkJwogICAgICAtICdzc3JmX3Byb3h5X3Zhcl9zcG9vbF9zcXVpZDovdmFyL3Nwb29sL3NxdWlkJwogICAgZW50cnlwb2ludDoKICAgICAgLSAvYmluL3NoCiAgICAgIC0gL2RvY2tlci1lbnRyeXBvaW50LnNoCiAgICBlbnZpcm9ubWVudDoKICAgICAgSFRUUF9QT1JUOiAnJHtTU1JGX0hUVFBfUE9SVDotMzEyOH0nCiAgICAgIENPUkVEVU1QX0RJUjogJyR7U1NSRl9DT1JFRFVNUF9ESVI6LS92YXIvc3Bvb2wvc3F1aWR9JwogICAgICBSRVZFUlNFX1BST1hZX1BPUlQ6ICcke1NTUkZfUkVWRVJTRV9QUk9YWV9QT1JUOi04MTk0fScKICAgICAgU0FOREJPWF9IT1NUOiAnJHtTU1JGX1NBTkRCT1hfSE9TVDotc2FuZGJveH0nCiAgICAgIFNBTkRCT1hfUE9SVDogJyR7U0FOREJPWF9QT1JUOi04MTk0fScKICAgIG5ldHdvcmtzOgogICAgICAtIHNzcmZfcHJveHlfbmV0d29yawogICAgICAtIGRlZmF1bHQKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBzcXVpZAogICAgICAgIC0gJy1rJwogICAgICAgIC0gY2hlY2sKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDQwcwogIG5naW54OgogICAgaW1hZ2U6ICduZ2lueDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9uZ2lueC9uZ2lueC5jb25mLnRlbXBsYXRlCiAgICAgICAgdGFyZ2V0OiAvZXRjL25naW54L25naW54LmNvbmYudGVtcGxhdGUKICAgICAgICByZWFkX29ubHk6IHRydWUKICAgICAgICBjb250ZW50OiAiIyBQbGVhc2UgZG8gbm90IGRpcmVjdGx5IGVkaXQgdGhpcyBmaWxlLiBJbnN0ZWFkLCBtb2RpZnkgdGhlIC5lbnYgdmFyaWFibGVzIHJlbGF0ZWQgdG8gTkdJTlggY29uZmlndXJhdGlvbi5cblxudXNlciAgbmdpbng7XG4gICAgd29ya2VyX3Byb2Nlc3NlcyAgJHtOR0lOWF9XT1JLRVJfUFJPQ0VTU0VTfTtcblxuICAgIGVycm9yX2xvZyAgL3Zhci9sb2cvbmdpbngvZXJyb3IubG9nIG5vdGljZTtcbiAgICBwaWQgICAgICAgIC92YXIvcnVuL25naW54LnBpZDtcblxuXG4gICAgZXZlbnRzIHtcbiAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb25zICAxMDI0O1xuICAgIH1cblxuXG4gICAgaHR0cCB7XG4gICAgICAgIGluY2x1ZGUgICAgICAgL2V0Yy9uZ2lueC9taW1lLnR5cGVzO1xuICAgICAgICBkZWZhdWx0X3R5cGUgIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtcblxuICAgICAgICBsb2dfZm9ybWF0ICBtYWluICAnJHJlbW90ZV9hZGRyIC0gJHJlbW90ZV91c2VyIFskdGltZV9sb2NhbF0gXCIkcmVxdWVzdFwiICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJyRzdGF0dXMgJGJvZHlfYnl0ZXNfc2VudCBcIiRodHRwX3JlZmVyZXJcIiAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdcIiRodHRwX3VzZXJfYWdlbnRcIiBcIiRodHRwX3hfZm9yd2FyZGVkX2ZvclwiJztcblxuICAgICAgICBhY2Nlc3NfbG9nICAvdmFyL2xvZy9uZ2lueC9hY2Nlc3MubG9nICBtYWluO1xuXG4gICAgICAgIHNlbmRmaWxlICAgICAgICBvbjtcbiAgICAgICAgI3RjcF9ub3B1c2ggICAgIG9uO1xuXG4gICAgICAgIGtlZXBhbGl2ZV90aW1lb3V0ICAke05HSU5YX0tFRVBBTElWRV9USU1FT1VUfTtcblxuICAgICAgICAjZ3ppcCAgb247XG4gICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplICR7TkdJTlhfQ0xJRU5UX01BWF9CT0RZX1NJWkV9O1xuXG4gICAgICAgIGluY2x1ZGUgL2V0Yy9uZ2lueC9jb25mLmQvKi5jb25mO1xuICAgIH1cbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vbmdpbngvcHJveHkuY29uZi50ZW1wbGF0ZQogICAgICAgIHRhcmdldDogL2V0Yy9uZ2lueC9wcm94eS5jb25mLnRlbXBsYXRlCiAgICAgICAgcmVhZF9vbmx5OiB0cnVlCiAgICAgICAgY29udGVudDogIiMgUGxlYXNlIGRvIG5vdCBkaXJlY3RseSBlZGl0IHRoaXMgZmlsZS4gSW5zdGVhZCwgbW9kaWZ5IHRoZSAuZW52IHZhcmlhYmxlcyByZWxhdGVkIHRvIE5HSU5YIGNvbmZpZ3VyYXRpb24uXG4gIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaG9zdDtcbiAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Gb3IgJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7XG4gIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTtcbiAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiXCI7XG4gIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gIHByb3h5X3JlYWRfdGltZW91dCAke05HSU5YX1BST1hZX1JFQURfVElNRU9VVH07XG4gIHByb3h5X3NlbmRfdGltZW91dCAke05HSU5YX1BST1hZX1NFTkRfVElNRU9VVH07XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL25naW54L2h0dHBzLmNvbmYudGVtcGxhdGUKICAgICAgICB0YXJnZXQ6IC9ldGMvbmdpbngvaHR0cHMuY29uZi50ZW1wbGF0ZQogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICIjIFBsZWFzZSBkbyBub3QgZGlyZWN0bHkgZWRpdCB0aGlzIGZpbGUuIEluc3RlYWQsIG1vZGlmeSB0aGUgLmVudiB2YXJpYWJsZXMgcmVsYXRlZCB0byBOR0lOWCBjb25maWd1cmF0aW9uLlxuXG5saXN0ZW4gJHtOR0lOWF9TU0xfUE9SVH0gc3NsO1xuc3NsX2NlcnRpZmljYXRlICR7U1NMX0NFUlRJRklDQVRFX1BBVEh9O1xuc3NsX2NlcnRpZmljYXRlX2tleSAke1NTTF9DRVJUSUZJQ0FURV9LRVlfUEFUSH07XG5zc2xfcHJvdG9jb2xzICR7TkdJTlhfU1NMX1BST1RPQ09MU307XG5zc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1xuc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxMG07XG5zc2xfc2Vzc2lvbl90aW1lb3V0IDEwbTtcbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vbmdpbngvZG9ja2VyLWVudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9kb2NrZXItZW50cnlwb2ludC1tb3VudC5zaAogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICIjIS9iaW4vYmFzaFxuXG5pZiBbIFwiJHtOR0lOWF9IVFRQU19FTkFCTEVEfVwiID0gXCJ0cnVlXCIgXTsgdGhlblxuICAgICMgQ2hlY2sgaWYgdGhlIGNlcnRpZmljYXRlIGFuZCBrZXkgZmlsZXMgZm9yIHRoZSBzcGVjaWZpZWQgZG9tYWluIGV4aXN0XG4gICAgaWYgWyAtbiBcIiR7Q0VSVEJPVF9ET01BSU59XCIgXSAmJiBcXFxuICAgICAgWyAtZiBcIi9ldGMvbGV0c2VuY3J5cHQvbGl2ZS8ke0NFUlRCT1RfRE9NQUlOfS8ke05HSU5YX1NTTF9DRVJUX0ZJTEVOQU1FfVwiIF0gJiYgXFxcbiAgICAgIFsgLWYgXCIvZXRjL2xldHNlbmNyeXB0L2xpdmUvJHtDRVJUQk9UX0RPTUFJTn0vJHtOR0lOWF9TU0xfQ0VSVF9LRVlfRklMRU5BTUV9XCIgXTsgdGhlblxuICAgICAgICBTU0xfQ0VSVElGSUNBVEVfUEFUSD1cIi9ldGMvbGV0c2VuY3J5cHQvbGl2ZS8ke0NFUlRCT1RfRE9NQUlOfS8ke05HSU5YX1NTTF9DRVJUX0ZJTEVOQU1FfVwiXG4gICAgICAgIFNTTF9DRVJUSUZJQ0FURV9LRVlfUEFUSD1cIi9ldGMvbGV0c2VuY3J5cHQvbGl2ZS8ke0NFUlRCT1RfRE9NQUlOfS8ke05HSU5YX1NTTF9DRVJUX0tFWV9GSUxFTkFNRX1cIlxuICAgIGVsc2VcbiAgICAgICAgU1NMX0NFUlRJRklDQVRFX1BBVEg9XCIvZXRjL3NzbC8ke05HSU5YX1NTTF9DRVJUX0ZJTEVOQU1FfVwiXG4gICAgICAgIFNTTF9DRVJUSUZJQ0FURV9LRVlfUEFUSD1cIi9ldGMvc3NsLyR7TkdJTlhfU1NMX0NFUlRfS0VZX0ZJTEVOQU1FfVwiXG4gICAgZmlcbiAgICBleHBvcnQgU1NMX0NFUlRJRklDQVRFX1BBVEhcbiAgICBleHBvcnQgU1NMX0NFUlRJRklDQVRFX0tFWV9QQVRIXG5cbiAgICAjIHNldCB0aGUgSFRUUFNfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBjb250ZW50IG9mIHRoZSBodHRwcy5jb25mLnRlbXBsYXRlXG4gICAgSFRUUFNfQ09ORklHPSQoZW52c3Vic3QgPCAvZXRjL25naW54L2h0dHBzLmNvbmYudGVtcGxhdGUpXG4gICAgZXhwb3J0IEhUVFBTX0NPTkZJR1xuICAgICMgU3Vic3RpdHV0ZSB0aGUgSFRUUFNfQ09ORklHIGluIHRoZSBkZWZhdWx0LmNvbmYudGVtcGxhdGUgd2l0aCBjb250ZW50IGZyb20gaHR0cHMuY29uZi50ZW1wbGF0ZVxuICAgIGVudnN1YnN0ICcke0hUVFBTX0NPTkZJR30nIDwgL2V0Yy9uZ2lueC9jb25mLmQvZGVmYXVsdC5jb25mLnRlbXBsYXRlID4gL2V0Yy9uZ2lueC9jb25mLmQvZGVmYXVsdC5jb25mXG5maVxuXG5pZiBbIFwiJHtOR0lOWF9FTkFCTEVfQ0VSVEJPVF9DSEFMTEVOR0V9XCIgPSBcInRydWVcIiBdOyB0aGVuXG4gICAgQUNNRV9DSEFMTEVOR0VfTE9DQVRJT049J2xvY2F0aW9uIC8ud2VsbC1rbm93bi9hY21lLWNoYWxsZW5nZS8geyByb290IC92YXIvd3d3L2h0bWw7IH0nXG5lbHNlXG4gICAgQUNNRV9DSEFMTEVOR0VfTE9DQVRJT049JydcbmZpXG5leHBvcnQgQUNNRV9DSEFMTEVOR0VfTE9DQVRJT05cblxuZW52X3ZhcnM9JChwcmludGVudiB8IGN1dCAtZD0gLWYxIHwgc2VkICdzL14vJC9nJyB8IHBhc3RlIC1zZCwgLSlcblxuZW52c3Vic3QgXCIkZW52X3ZhcnNcIiA8IC9ldGMvbmdpbngvbmdpbnguY29uZi50ZW1wbGF0ZSA+IC9ldGMvbmdpbngvbmdpbnguY29uZlxuZW52c3Vic3QgXCIkZW52X3ZhcnNcIiA8IC9ldGMvbmdpbngvcHJveHkuY29uZi50ZW1wbGF0ZSA+IC9ldGMvbmdpbngvcHJveHkuY29uZlxuXG5lbnZzdWJzdCA8IC9ldGMvbmdpbngvY29uZi5kL2RlZmF1bHQuY29uZi50ZW1wbGF0ZSA+IC9ldGMvbmdpbngvY29uZi5kL2RlZmF1bHQuY29uZlxuXG4jIFN0YXJ0IE5naW54IHVzaW5nIHRoZSBkZWZhdWx0IGVudHJ5cG9pbnRcbmV4ZWMgbmdpbnggLWcgJ2RhZW1vbiBvZmY7J1xuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9uZ2lueC9kZWZhdWx0LmNvbmYudGVtcGxhdGUKICAgICAgICB0YXJnZXQ6IC9ldGMvbmdpbngvY29uZi5kL2RlZmF1bHQuY29uZi50ZW1wbGF0ZQogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICIjIFBsZWFzZSBkbyBub3QgZGlyZWN0bHkgZWRpdCB0aGlzIGZpbGUuIEluc3RlYWQsIG1vZGlmeSB0aGUgLmVudiB2YXJpYWJsZXMgcmVsYXRlZCB0byBOR0lOWCBjb25maWd1cmF0aW9uLlxuXG5zZXJ2ZXIge1xuICAgIGxpc3RlbiAke05HSU5YX1BPUlR9O1xuICAgIHNlcnZlcl9uYW1lICR7TkdJTlhfU0VSVkVSX05BTUV9O1xuXG4gICAgbG9jYXRpb24gL2NvbnNvbGUvYXBpIHtcbiAgICAgIHByb3h5X3Bhc3MgaHR0cDovL2FwaTo1MDAxO1xuICAgICAgaW5jbHVkZSBwcm94eS5jb25mO1xuICAgIH1cblxuICAgIGxvY2F0aW9uIC9hcGkge1xuICAgICAgcHJveHlfcGFzcyBodHRwOi8vYXBpOjUwMDE7XG4gICAgICBpbmNsdWRlIHByb3h5LmNvbmY7XG4gICAgfVxuXG4gICAgbG9jYXRpb24gL3YxIHtcbiAgICAgIHByb3h5X3Bhc3MgaHR0cDovL2FwaTo1MDAxO1xuICAgICAgaW5jbHVkZSBwcm94eS5jb25mO1xuICAgIH1cblxuICAgIGxvY2F0aW9uIC9maWxlcyB7XG4gICAgICBwcm94eV9wYXNzIGh0dHA6Ly9hcGk6NTAwMTtcbiAgICAgIGluY2x1ZGUgcHJveHkuY29uZjtcbiAgICB9XG5cbiAgICBsb2NhdGlvbiAvIHtcbiAgICAgIHByb3h5X3Bhc3MgaHR0cDovL3dlYjozMDAwO1xuICAgICAgaW5jbHVkZSBwcm94eS5jb25mO1xuICAgIH1cblxuICAgICMgcGxhY2Vob2xkZXIgZm9yIGFjbWUgY2hhbGxlbmdlIGxvY2F0aW9uXG4gICAgJHtBQ01FX0NIQUxMRU5HRV9MT0NBVElPTn1cblxuICAgICMgcGxhY2Vob2xkZXIgZm9yIGh0dHBzIGNvbmZpZyBkZWZpbmVkIGluIGh0dHBzLmNvbmYudGVtcGxhdGVcbiAgICAke0hUVFBTX0NPTkZJR31cbn1cbiIKICAgICAgLSAnLi9uZ2lueC9zc2w6L2V0Yy9zc2wnCiAgICAgIC0gJy4vdm9sdW1lcy9jZXJ0Ym90L2NvbmYvbGl2ZTovZXRjL2xldHNlbmNyeXB0L2xpdmUnCiAgICAgIC0gJy4vdm9sdW1lcy9jZXJ0Ym90L2NvbmY6L2V0Yy9sZXRzZW5jcnlwdCcKICAgICAgLSAnLi92b2x1bWVzL2NlcnRib3Qvd3d3Oi92YXIvd3d3L2h0bWwnCiAgICBlbnRyeXBvaW50OgogICAgICAtIHNoCiAgICAgIC0gJy1jJwogICAgICAtICJjcCAvZG9ja2VyLWVudHJ5cG9pbnQtbW91bnQuc2ggL2RvY2tlci1lbnRyeXBvaW50LnNoICYmIHNlZCAtaSAncy9cciQkLy8nIC9kb2NrZXItZW50cnlwb2ludC5zaCAmJiBjaG1vZCAreCAvZG9ja2VyLWVudHJ5cG9pbnQuc2ggJiYgL2RvY2tlci1lbnRyeXBvaW50LnNoIgogICAgZW52aXJvbm1lbnQ6CiAgICAgIE5HSU5YX1NFUlZFUl9OQU1FOiAkU0VSVklDRV9GUUROX05HSU5YCiAgICAgIE5HSU5YX0hUVFBTX0VOQUJMRUQ6ICcke05HSU5YX0hUVFBTX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgTkdJTlhfU1NMX1BPUlQ6ICcke05HSU5YX1NTTF9QT1JUOi00NDN9JwogICAgICBOR0lOWF9QT1JUOiAnJHtOR0lOWF9QT1JUOi04MH0nCiAgICAgIE5HSU5YX1NTTF9DRVJUX0ZJTEVOQU1FOiAnJHtOR0lOWF9TU0xfQ0VSVF9GSUxFTkFNRTotZGlmeS5jcnR9JwogICAgICBOR0lOWF9TU0xfQ0VSVF9LRVlfRklMRU5BTUU6ICcke05HSU5YX1NTTF9DRVJUX0tFWV9GSUxFTkFNRTotZGlmeS5rZXl9JwogICAgICBOR0lOWF9TU0xfUFJPVE9DT0xTOiAnJHtOR0lOWF9TU0xfUFJPVE9DT0xTOi1UTFN2MS4xIFRMU3YxLjIgVExTdjEuM30nCiAgICAgIE5HSU5YX1dPUktFUl9QUk9DRVNTRVM6ICcke05HSU5YX1dPUktFUl9QUk9DRVNTRVM6LWF1dG99JwogICAgICBOR0lOWF9DTElFTlRfTUFYX0JPRFlfU0laRTogJyR7TkdJTlhfQ0xJRU5UX01BWF9CT0RZX1NJWkU6LTE1TX0nCiAgICAgIE5HSU5YX0tFRVBBTElWRV9USU1FT1VUOiAnJHtOR0lOWF9LRUVQQUxJVkVfVElNRU9VVDotNjV9JwogICAgICBOR0lOWF9QUk9YWV9SRUFEX1RJTUVPVVQ6ICcke05HSU5YX1BST1hZX1JFQURfVElNRU9VVDotMzYwMHN9JwogICAgICBOR0lOWF9QUk9YWV9TRU5EX1RJTUVPVVQ6ICcke05HSU5YX1BST1hZX1NFTkRfVElNRU9VVDotMzYwMHN9JwogICAgICBOR0lOWF9FTkFCTEVfQ0VSVEJPVF9DSEFMTEVOR0U6ICcke05HSU5YX0VOQUJMRV9DRVJUQk9UX0NIQUxMRU5HRTotZmFsc2V9JwogICAgICBDRVJUQk9UX0RPTUFJTjogJyR7Q0VSVEJPVF9ET01BSU46LX0nCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwaQogICAgICAtIHdlYgogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG5naW54CiAgICAgICAgLSAnLXQnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICAgICAgc3RhcnRfcGVyaW9kOiA0MHMKICB3ZWF2aWF0ZToKICAgIGltYWdlOiAnc2VtaXRlY2hub2xvZ2llcy93ZWF2aWF0ZToxLjE5LjAnCiAgICBwcm9maWxlczoKICAgICAgLSAnJwogICAgICAtIHdlYXZpYXRlCiAgICB2b2x1bWVzOgogICAgICAtICdkaWZ5LXdlYXZpYXRlLWRhdGE6L3Zhci9saWIvd2VhdmlhdGUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgUEVSU0lTVEVOQ0VfREFUQV9QQVRIOiAnJHtXRUFWSUFURV9QRVJTSVNURU5DRV9EQVRBX1BBVEg6LS92YXIvbGliL3dlYXZpYXRlfScKICAgICAgUVVFUllfREVGQVVMVFNfTElNSVQ6ICcke1dFQVZJQVRFX1FVRVJZX0RFRkFVTFRTX0xJTUlUOi0yNX0nCiAgICAgIEFVVEhFTlRJQ0FUSU9OX0FOT05ZTU9VU19BQ0NFU1NfRU5BQkxFRDogJyR7V0VBVklBVEVfQVVUSEVOVElDQVRJT05fQU5PTllNT1VTX0FDQ0VTU19FTkFCTEVEOi1mYWxzZX0nCiAgICAgIERFRkFVTFRfVkVDVE9SSVpFUl9NT0RVTEU6ICcke1dFQVZJQVRFX0RFRkFVTFRfVkVDVE9SSVpFUl9NT0RVTEU6LW5vbmV9JwogICAgICBDTFVTVEVSX0hPU1ROQU1FOiAnJHtXRUFWSUFURV9DTFVTVEVSX0hPU1ROQU1FOi1ub2RlMX0nCiAgICAgIEFVVEhFTlRJQ0FUSU9OX0FQSUtFWV9FTkFCTEVEOiAnJHtXRUFWSUFURV9BVVRIRU5USUNBVElPTl9BUElLRVlfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIEFVVEhFTlRJQ0FUSU9OX0FQSUtFWV9BTExPV0VEX0tFWVM6ICRTRVJWSUNFX1BBU1NXT1JEX1dFQVZJQVRFCiAgICAgIEFVVEhFTlRJQ0FUSU9OX0FQSUtFWV9VU0VSUzogJFNFUlZJQ0VfVVNFUl9XRUFWSUFURQogICAgICBBVVRIT1JJWkFUSU9OX0FETUlOTElTVF9FTkFCTEVEOiAnJHtXRUFWSUFURV9BVVRIT1JJWkFUSU9OX0FETUlOTElTVF9FTkFCTEVEOi10cnVlfScKICAgICAgQVVUSE9SSVpBVElPTl9BRE1JTkxJU1RfVVNFUlM6ICRTRVJWSUNFX1VTRVJfV0VBVklBVEUKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxLy53ZWxsLWtub3duL2xpdmUnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICAgICAgc3RhcnRfcGVyaW9kOiA0MHMKbmV0d29ya3M6CiAgc3NyZl9wcm94eV9uZXR3b3JrOgogICAgZHJpdmVyOiBicmlkZ2UKICAgIGludGVybmFsOiB0cnVlCnZvbHVtZXM6CiAgc3NyZl9wcm94eV92YXJfbG9nX3NxdWlkOiBudWxsCiAgc3NyZl9wcm94eV92YXJfc3Bvb2xfc3F1aWQ6IG51bGwK",
- "tags": [
- "ai",
- "weaviate",
- "openai",
- "gpt",
- "llm",
- "lmops",
- "dify",
- "redis",
- "postgres",
- "qdrant",
- "rag",
- "agent"
- ],
- "logo": "svgs/dify.png",
- "minversion": "0.0.0",
- "port": "3000"
- },
"directus-with-postgresql": {
"documentation": "https://directus.io?utm_source=coolify.io",
"slogan": "Directus wraps databases with a dynamic API, and provides an intuitive app for managing its content.",
@@ -1523,6 +1516,20 @@
"minversion": "0.0.0",
"port": "8081"
},
+ "mindsdb": {
+ "documentation": "https://docs.mindsdb.com/what-is-mindsdb?utm_source=coolify.io",
+ "slogan": "MindsDB is the platform for building AI from enterprise data, enabling smarter organizations.",
+ "compose": "c2VydmljZXM6CiAgbWluZHNkYjoKICAgIGltYWdlOiAnbWluZHNkYi9taW5kc2RiOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9NSU5EU0RCXzQ3MzM0CiAgICAgIC0gU0VSVklDRV9GUUROX0FQSV80NzMzNT0vYXBpCiAgICAgIC0gTUlORFNEQl9ET0NLRVJfRU5WPXRydWUKICAgICAgLSBNSU5EU0RCX1NUT1JBR0VfRElSPS9taW5kc2RiL3ZhcgogICAgICAtICdGTEFTS19ERUJVRz0ke0ZMQVNLX0RFQlVHOi0xfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtPUEVOQUlfQVBJX0tFWX0nCiAgICAgIC0gJ0xBTkdGVVNFX0hPU1Q9JHtMQU5HRlVTRV9IT1NUfScKICAgICAgLSAnTEFOR0ZVU0VfUFVCTElDX0tFWT0ke0xBTkdGVVNFX1BVQkxJQ19LRVl9JwogICAgICAtICdMQU5HRlVTRV9TRUNSRVRfS0VZPSR7TEFOR0ZVU0VfU0VDUkVUX0tFWX0nCiAgICAgIC0gJ0xBTkdGVVNFX1JFTEVBU0U9JHtMQU5HRlVTRV9SRUxFQVNFOi1sb2NhbH0nCiAgICAgIC0gJ0xBTkdGVVNFX0RFQlVHPSR7TEFOR0ZVU0VfREVCVUc6LUZhbHNlfScKICAgICAgLSAnTEFOR0ZVU0VfVElNRU9VVD0ke0xBTkdGVVNFX1RJTUVPVVQ6LTEwfScKICAgICAgLSAnTEFOR0ZVU0VfU0FNUExFX1JBVEU9JHtMQU5HRlVTRV9TQU1QTEVfUkFURTotMS4wfScKICAgICAgLSAnTUlORFNEQl9EQl9DT049cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzcWwvJHtQT1NUR1JFU19EQjotbWluZHNkYi1kYn0nCiAgICB2b2x1bWVzOgogICAgICAtICdtaW5kc2RiLWRhdGE6L21pbmRzZGIvdmFyJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjQ3MzM0L2FwaS91dGlsL3BpbmcnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTUKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdtaW5kc2RiLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW1pbmRzZGItZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "mysql",
+ "postgresdb",
+ "machine-learning",
+ "ai"
+ ],
+ "logo": "svgs/mindsdb.svg",
+ "minversion": "0.0.0",
+ "port": "47334"
+ },
"minecraft": {
"documentation": "https://github.com/itzg/docker-minecraft-server?utm_source=coolify.io",
"slogan": "Minecraft Server that will automatically download selected version at startup.",
@@ -1583,6 +1590,19 @@
"minversion": "0.0.0",
"port": "8080"
},
+ "mosquitto": {
+ "documentation": "https://mosquitto.org/documentation/?utm_source=coolify.io",
+ "slogan": "Mosquitto is lightweight and suitable for use on all devices, from low-power single-board computers to full servers.",
+ "compose": "c2VydmljZXM6CiAgbW9zcXVpdHRvOgogICAgaW1hZ2U6IGVjbGlwc2UtbW9zcXVpdHRvCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTU9TUVVJVFRPXzE4ODMKICAgICAgLSAnTVFUVF9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9NT1NRVUlUVE99JwogICAgICAtICdNUVRUX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NT1NRVUlUVE99JwogICAgICAtICdSRVFVSVJFX0NFUlRJRklDQVRFPSR7UkVRVUlSRV9DRVJUSUZJQ0FURTotZmFsc2V9JwogICAgICAtICdBTExPV19BTk9OWU1PVVM9JHtBTExPV19BTk9OWU1PVVM6LXRydWV9JwogICAgdm9sdW1lczoKICAgICAgLSAnbW9zcXVpdHRvLWNvbmZpZzovbW9zcXVpdHRvL2NvbmZpZycKICAgICAgLSAnbW9zcXVpdHRvLWNlcnRzOi9jZXJ0cycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnZXhpdCAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICBlbnRyeXBvaW50OiAic2ggLWMgXCIgaWYgWyAnJFJFUVVJUkVfQ0VSVElGSUNBVEUnID0gJ3RydWUnIF07IHRoZW4gZWNobyAnbGlzdGVuZXIgODg4MycgPiAvbW9zcXVpdHRvL2NvbmZpZy9tb3NxdWl0dG8uY29uZiAmJiBlY2hvICdjYWZpbGUgL2NlcnRzL2NhLmNydCcgPj4gL21vc3F1aXR0by9jb25maWcvbW9zcXVpdHRvLmNvbmYgJiYgZWNobyAnY2VydGZpbGUgL2NlcnRzL3NlcnZlci5jcnQnID4+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mICYmIGVjaG8gJ2tleWZpbGUgIC9jZXJ0cy9zZXJ2ZXIua2V5JyA+PiAvbW9zcXVpdHRvL2NvbmZpZy9tb3NxdWl0dG8uY29uZjsgZWxzZSBlY2hvICdsaXN0ZW5lciAxODgzJyA+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mOyBmaSAmJiBlY2hvICdyZXF1aXJlX2NlcnRpZmljYXRlICckUkVRVUlSRV9DRVJUSUZJQ0FURSA+PiAvbW9zcXVpdHRvL2NvbmZpZy9tb3NxdWl0dG8uY29uZiAmJiBlY2hvICdhbGxvd19hbm9ueW1vdXMgJyRBTExPV19BTk9OWU1PVVMgPj4gL21vc3F1aXR0by9jb25maWcvbW9zcXVpdHRvLmNvbmYgJiYgaWYgWyAtbiAnJFNFUlZJQ0VfVVNFUl9NT1NRVUlUVE8nXSAmJiBbIC1uICckU0VSVklDRV9QQVNTV09SRF9NT1NRVUlUVE8nIF07IHRoZW4gZWNobyAncGFzc3dvcmRfZmlsZSAvbW9zcXVpdHRvL2NvbmZpZy9wYXNzd29yZHMnID4+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mICYmIHRvdWNoIC9tb3NxdWl0dG8vY29uZmlnL3Bhc3N3b3JkcyAmJiBjaG1vZCAwNzAwIC9tb3NxdWl0dG8vY29uZmlnL3Bhc3N3b3JkcyAmJiBjaG93biByb290OnJvb3QgL21vc3F1aXR0by9jb25maWcvcGFzc3dvcmRzICYmIG1vc3F1aXR0b19wYXNzd2QgLWIgLWMgL21vc3F1aXR0by9jb25maWcvcGFzc3dvcmRzICRTRVJWSUNFX1VTRVJfTU9TUVVJVFRPICRTRVJWSUNFX1BBU1NXT1JEX01PU1FVSVRUTyAmJiBjaG93biBtb3NxdWl0dG86bW9zcXVpdHRvIC9tb3NxdWl0dG8vY29uZmlnL3Bhc3N3b3JkczsgZmkgJiYgZXhlYyBtb3NxdWl0dG8gLWMgL21vc3F1aXR0by9jb25maWcvbW9zcXVpdHRvLmNvbmYgXCIiCiAgICBsYWJlbHM6CiAgICAgIC0gdHJhZWZpay50Y3Aucm91dGVycy5tcXR0LmVudHJ5cG9pbnRzPW1xdHQKICAgICAgLSB0cmFlZmlrLnRjcC5yb3V0ZXJzLm1xdHRzLmVudHJ5cG9pbnRzPW1xdHRzCg==",
+ "tags": [
+ "mosquitto",
+ "mqtt",
+ "open-source"
+ ],
+ "logo": "svgs/mosquitto.svg",
+ "minversion": "0.0.0",
+ "port": "1883"
+ },
"n8n-with-postgresql": {
"documentation": "https://n8n.io?utm_source=coolify.io",
"slogan": "n8n is an extendable workflow automation tool.",
@@ -1908,20 +1928,6 @@
"logo": "svgs/coolify.png",
"minversion": "0.0.0"
},
- "peppermint": {
- "documentation": "https://docs.peppermint.sh/?utm_source=coolify.io",
- "slogan": "Open source helpdesk solution designed to enhance the user experience for teams currently utilizing costly software alternatives",
- "compose": "c2VydmljZXM6CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BlcHBlcm1pbnQtcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotcGVwcGVybWludC1kYn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcGVwcGVybWludDoKICAgIGltYWdlOiAncGVwcGVybGFicy9wZXBwZXJtaW50OmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1BFUFBFUk1JTlRfMzAwMAogICAgICAtIFNFUlZJQ0VfRlFETl9QRVBQRVJNSU5UXzUwMDMKICAgICAgLSAnREJfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdEQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtIERCX0hPU1Q9cG9zdGdyZXMKICAgICAgLSAnREJfTkFNRT0ke1BPU1RHUkVTX0RCOi1wZXBwZXJtaW50LWRifScKICAgICAgLSAnU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9QRVBQRVJNSU5UfScKICAgICAgLSAnQVBJX1VSTD0ke1NFUlZJQ0VfRlFETl9QRVBQRVJNSU5UXzUwMDN9Jwo=",
- "tags": [
- "helpdesk",
- "open-source",
- "peppermint",
- "postgres"
- ],
- "logo": "svgs/peppermint.png",
- "minversion": "0.0.0",
- "port": "3000"
- },
"phpmyadmin": {
"documentation": "https://phpmyadmin.net?utm_source=coolify.io",
"slogan": "phpMyAdmin is a web-based database management tool for administering your MySQL and MariaDB databases through a user-friendly interface.",
@@ -2624,7 +2630,7 @@
"windmill": {
"documentation": "https://www.windmill.dev/docs/?utm_source=coolify.io",
"slogan": "Windmill is a developer platform to build production-grade multi-steps automations and internal apps.",
- "compose": "c2VydmljZXM6CiAgZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgc2htX3NpemU6IDFnCiAgICB2b2x1bWVzOgogICAgICAtICdkYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXdpbmRtaWxsfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSBwb3N0Z3JlcycKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgd2luZG1pbGwtc2VydmVyOgogICAgaW1hZ2U6ICdnaGNyLmlvL3dpbmRtaWxsLWxhYnMvd2luZG1pbGw6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9XSU5ETUlMTF84MDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovL3Bvc3RncmVzOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiL3dpbmRtaWxsJwogICAgICAtICdNT0RFPSR7TU9ERTotc2VydmVyfScKICAgICAgLSBCQVNFX1VSTD0kU0VSVklDRV9GUUROX1dJTkRNSUxMCiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnd29ya2VyLWxvZ3M6L3RtcC93aW5kbWlsbC9sb2dzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjgwMDAvYXBpL3ZlcnNpb24gfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLTE6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovL3Bvc3RncmVzOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiL3dpbmRtaWxsJwogICAgICAtICdNT0RFPSR7TU9ERTotd29ya2VyfScKICAgICAgLSAnV09SS0VSX0dST1VQPSR7V09SS0VSX0dST1VQOi1kZWZhdWx0fScKICAgIGRlcGVuZHNfb246CiAgICAgIGRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAnd29ya2VyLWRlcGVuZGVuY3ktY2FjaGU6L3RtcC93aW5kbWlsbC9jYWNoZScKICAgICAgLSAnd29ya2VyLWxvZ3M6L3RtcC93aW5kbWlsbC9sb2dzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjgwMDAvYXBpL3ZlcnNpb24gfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLTI6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovL3Bvc3RncmVzOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiL3dpbmRtaWxsJwogICAgICAtICdNT0RFPSR7TU9ERTotd29ya2VyfScKICAgICAgLSAnV09SS0VSX0dST1VQPSR7V09SS0VSX0dST1VQOi1kZWZhdWx0fScKICAgIGRlcGVuZHNfb246CiAgICAgIGRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAnd29ya2VyLWRlcGVuZGVuY3ktY2FjaGU6L3RtcC93aW5kbWlsbC9jYWNoZScKICAgICAgLSAnd29ya2VyLWxvZ3M6L3RtcC93aW5kbWlsbC9sb2dzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjgwMDAvYXBpL3ZlcnNpb24gfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLTM6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovL3Bvc3RncmVzOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiL3dpbmRtaWxsJwogICAgICAtICdNT0RFPSR7TU9ERTotd29ya2VyfScKICAgICAgLSAnV09SS0VSX0dST1VQPSR7V09SS0VSX0dST1VQOi1kZWZhdWx0fScKICAgIGRlcGVuZHNfb246CiAgICAgIGRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAnd29ya2VyLWRlcGVuZGVuY3ktY2FjaGU6L3RtcC93aW5kbWlsbC9jYWNoZScKICAgICAgLSAnd29ya2VyLWxvZ3M6L3RtcC93aW5kbWlsbC9sb2dzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjgwMDAvYXBpL3ZlcnNpb24gfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLW5hdGl2ZToKICAgIGltYWdlOiAnZ2hjci5pby93aW5kbWlsbC1sYWJzL3dpbmRtaWxsOm1haW4nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vcG9zdGdyZXM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAZGIvd2luZG1pbGwnCiAgICAgIC0gJ01PREU9JHtNT0RFOi13b3JrZXJ9JwogICAgICAtICdXT1JLRVJfR1JPVVA9JHtXT1JLRVJfR1JPVVA6LW5hdGl2ZX0nCiAgICAgIC0gJ05VTV9XT1JLRVJTPSR7TlVNX1dPUktFUlM6LTh9JwogICAgICAtICdTTEVFUF9RVUVVRT0ke1NMRUVQX1FVRVVFOi0yMDB9JwogICAgZGVwZW5kc19vbjoKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3dvcmtlci1sb2dzOi90bXAvd2luZG1pbGwvbG9ncycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FwaS92ZXJzaW9uIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIGxzcDoKICAgIGltYWdlOiAnZ2hjci5pby93aW5kbWlsbC1sYWJzL3dpbmRtaWxsLWxzcDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdsc3AtY2FjaGU6L3Jvb3QvLmNhY2hlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdleGl0IDAnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMK",
+ "compose": "c2VydmljZXM6CiAgZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgc2htX3NpemU6IDFnCiAgICB2b2x1bWVzOgogICAgICAtICdkYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotd2luZG1pbGwtZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgd2luZG1pbGwtc2VydmVyOgogICAgaW1hZ2U6ICdnaGNyLmlvL3dpbmRtaWxsLWxhYnMvd2luZG1pbGw6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9XSU5ETUlMTF84MDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRiLyR7UE9TVEdSRVNfREI6LXdpbmRtaWxsLWRifScKICAgICAgLSBNT0RFPXNlcnZlcgogICAgICAtICdCQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9XSU5ETUlMTH0nCiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnd29ya2VyLWxvZ3M6L3RtcC93aW5kbWlsbC9sb2dzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjgwMDAvaGVhbHRoJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLTE6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRiLyR7UE9TVEdSRVNfREI6LXdpbmRtaWxsLWRifScKICAgICAgLSBNT0RFPXdvcmtlcgogICAgICAtIFdPUktFUl9HUk9VUD1kZWZhdWx0CiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJ3dvcmtlci1kZXBlbmRlbmN5LWNhY2hlOi90bXAvd2luZG1pbGwvY2FjaGUnCiAgICAgIC0gJ3dvcmtlci1sb2dzOi90bXAvd2luZG1pbGwvbG9ncycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnZXhpdCAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLTI6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRiLyR7UE9TVEdSRVNfREI6LXdpbmRtaWxsLWRifScKICAgICAgLSBNT0RFPXdvcmtlcgogICAgICAtIFdPUktFUl9HUk9VUD1kZWZhdWx0CiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJ3dvcmtlci1kZXBlbmRlbmN5LWNhY2hlOi90bXAvd2luZG1pbGwvY2FjaGUnCiAgICAgIC0gJ3dvcmtlci1sb2dzOi90bXAvd2luZG1pbGwvbG9ncycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnZXhpdCAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLTM6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRiLyR7UE9TVEdSRVNfREI6LXdpbmRtaWxsLWRifScKICAgICAgLSBNT0RFPXdvcmtlcgogICAgICAtIFdPUktFUl9HUk9VUD1kZWZhdWx0CiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJ3dvcmtlci1kZXBlbmRlbmN5LWNhY2hlOi90bXAvd2luZG1pbGwvY2FjaGUnCiAgICAgIC0gJ3dvcmtlci1sb2dzOi90bXAvd2luZG1pbGwvbG9ncycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnZXhpdCAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgd2luZG1pbGwtd29ya2VyLW5hdGl2ZToKICAgIGltYWdlOiAnZ2hjci5pby93aW5kbWlsbC1sYWJzL3dpbmRtaWxsOm1haW4nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AZGIvJHtQT1NUR1JFU19EQjotd2luZG1pbGwtZGJ9JwogICAgICAtIE1PREU9d29ya2VyCiAgICAgIC0gV09SS0VSX0dST1VQPW5hdGl2ZQogICAgICAtIE5VTV9XT1JLRVJTPTgKICAgICAgLSBTTEVFUF9RVUVVRT0yMDAKICAgIGRlcGVuZHNfb246CiAgICAgIGRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtICd3b3JrZXItbG9nczovdG1wL3dpbmRtaWxsL2xvZ3MnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIGxzcDoKICAgIGltYWdlOiAnZ2hjci5pby93aW5kbWlsbC1sYWJzL3dpbmRtaWxsLWxzcDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdsc3AtY2FjaGU6L3Jvb3QvLmNhY2hlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdleGl0IDAnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICAgICAgc3RhcnRfcGVyaW9kOiAyMHMK",
"tags": [
"windmill",
"workflow",
@@ -2677,31 +2683,6 @@
"logo": "svgs/wordpress.svg",
"minversion": "0.0.0"
},
- "zep": {
- "documentation": "https://help.getzep.com/concepts?utm_source=coolify.io",
- "slogan": "Zep enhances your AI agent's knowledge through continuous learning from user interactions, enabling personalized experiences and improved accuracy.",
- "compose": "c2VydmljZXM6CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ2doY3IuaW8vZ2V0emVwL3Bvc3RncmVzOnBvc3RncmVzLTE1JwogICAgc2htX3NpemU6IDEyOG1iCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICB2b2x1bWVzOgogICAgICAtICdwZ19kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtaCBsb2NhbGhvc3QgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgcG9zdGdyZXMnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgbmxwOgogICAgaW1hZ2U6ICdnaGNyLmlvL2dldHplcC96ZXAtbmxwLXNlcnZlcjowLjQnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTkxQXzU1NTcKICAgICAgLSAnWkVQX09QRU5BSV9BUElfS0VZPSR7T1BFTkFJX0FQSV9LRVl9JwogICAgICAtICdaRVBfQVVUSF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FVVEhTRUNSRVR9JwogICAgICAtICdaRVBfU0VSVkVSX1dFQl9FTkFCTEVEPSR7WkVQX1NFUlZFUl9XRUJfRU5BQkxFRDotZmFsc2V9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICJ0aW1lb3V0IDEwcyBiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvNTU1NycgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiA0NXMKICB6ZXA6CiAgICBpbWFnZTogJ2doY3IuaW8vZ2V0emVwL3plcDpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBubHA6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9aRVBfODAwMAogICAgICAtICdaRVBfU1RPUkVfUE9TVEdSRVNfRFNOPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi9wb3N0Z3Jlcz9zc2xtb2RlPWRpc2FibGUnCiAgICAgIC0gJ1pFUF9OTFBfU0VSVkVSX1VSTD1odHRwOi8vbmxwOjU1NTcnCiAgICAgIC0gJ1pFUF9FWFRSQUNUT1JTX0RPQ1VNRU5UU19FTUJFRERJTkdTX1NFUlZJQ0U9JHtFWFRSQUNUT1JTX0RPQ1VNRU5UU19FTUJFRERJTkdTX1NFUlZJQ0U6LW9wZW5haX0nCiAgICAgIC0gJ1pFUF9FWFRSQUNUT1JTX0RPQ1VNRU5UU19FTUJFRERJTkdTX0RJTUVOU0lPTlM9JHtFWFRSQUNUT1JTX0RPQ1VNRU5UU19FTUJFRERJTkdTX0RJTUVOU0lPTlM6LTE1MzZ9JwogICAgICAtICdaRVBfRVhUUkFDVE9SU19NRVNTQUdFU19FTUJFRERJTkdTX1NFUlZJQ0U9JHtFWFRSQUNUT1JTX01FU1NBR0VTX0VNQkVERElOR1NfU0VSVklDRTotb3BlbmFpfScKICAgICAgLSAnWkVQX0VYVFJBQ1RPUlNfTUVTU0FHRVNfRU1CRURESU5HU19ESU1FTlNJT05TPSR7RVhUUkFDVE9SU19NRVNTQUdFU19FTUJFRERJTkdTX0RJTUVOU0lPTlM6LTE1MzZ9JwogICAgICAtICdaRVBfRVhUUkFDVE9SU19NRVNTQUdFU19TVU1NQVJJWkVSX0VNQkVERElOR1NfU0VSVklDRT0ke0VYVFJBQ1RPUlNfTUVTU0FHRVNfU1VNTUFSSVpFUl9FTUJFRERJTkdTX1NFUlZJQ0U6LW9wZW5haX0nCiAgICAgIC0gJ1pFUF9FWFRSQUNUT1JTX01FU1NBR0VTX1NVTU1BUklaRVJfRU1CRURESU5HU19ESU1FTlNJT05TPSR7RVhUUkFDVE9SU19NRVNTQUdFU19TVU1NQVJJWkVSX0VNQkVERElOR1NfRElNRU5TSU9OUzotMTUzNn0nCiAgICAgIC0gJ1pFUF9PUEVOQUlfQVBJX0tFWT0ke09QRU5BSV9BUElfS0VZfScKICAgICAgLSAnWkVQX0FVVEhfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9BVVRIU0VDUkVUfScKICAgICAgLSAnWkVQX1NFUlZFUl9XRUJfRU5BQkxFRD0ke1pFUF9TRVJWRVJfV0VCX0VOQUJMRUQ6LWZhbHNlfScKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy55YW1sCiAgICAgICAgdGFyZ2V0OiAvYXBwL2NvbmZpZy55YW1sCiAgICAgICAgY29udGVudDogImxsbTpcbiAgIyBvcGVuYWkgb3IgYW50aHJvcGljXG4gIHNlcnZpY2U6IFwib3BlbmFpXCJcbiAgIyBPcGVuQUk6IGdwdC0zLjUtdHVyYm8sIGdwdC00LCBncHQtMy41LXR1cmJvLTExMDYsIGdwdC0zLjUtdHVyYm8tMTZrLCBncHQtNC0zMmssIGdwdC00by1taW5pLCBncHQtNG8tbWluaS0yMDI0LTA3LTE4OyBBbnRocm9waWM6IGNsYXVkZS1pbnN0YW50LTEgb3IgY2xhdWRlLTJcbiAgbW9kZWw6IFwiZ3B0LTRvLW1pbmlcIlxuICAjIyBPcGVuQUktc3BlY2lmaWMgc2V0dGluZ3NcbiAgIyBPbmx5IHVzZWQgZm9yIEF6dXJlIE9wZW5BSSBBUElcbiAgYXp1cmVfb3BlbmFpX2VuZHBvaW50OlxuICAjIGZvciBBenVyZSBPcGVuQUkgQVBJIGRlcGxveW1lbnQsIHRoZSBtb2RlbCBtYXkgYmUgZGVwbG95ZWQgd2l0aCBjdXN0b20gZGVwbG95bWVudCBuYW1lc1xuICAjIHNldCB0aGUgZGVwbG95bWVudCBuYW1lcyBpZiB5b3UgZW5jb3VudGVyIGluIGxvZ3MgSFRUUCA0MDQgZXJyb3JzOlxuICAjICAgXCJUaGUgQVBJIGRlcGxveW1lbnQgZm9yIHRoaXMgcmVzb3VyY2UgZG9lcyBub3QgZXhpc3QuXCJcbiAgYXp1cmVfb3BlbmFpOlxuICAjIGxsbS5tb2RlbCBuYW1lIGlzIHVzZWQgYXMgZGVwbG95bWVudCBuYW1lIGFzIHJlYXNvbmFibGUgZGVmYXVsdCBpZiBub3Qgc2V0XG4gICMgYXNzdW1pbmcgYmFzZSBtb2RlbCBpcyBkZXBsb3llZCB3aXRoIGRlcGxveW1lbnQgbmFtZSBtYXRjaGluZyBtb2RlbCBuYW1lXG4gICMgICBsbG1fZGVwbG95bWVudDogXCJncHQtNG8tbWluaS1jdXN0b21uYW1lXCJcbiAgIyBlbWJlZGRpbmdzIGRlcGxveW1lbnQgaXMgcmVxdWlyZWQgd2hlbiBaZXAgaXMgY29uZmlndXJlZCB0byB1c2UgT3BlbkFJIGVtYmVkZGluZ3NcbiAgIyAgIGVtYmVkZGluZ19kZXBsb3ltZW50OiBcInRleHQtZW1iZWRkaW5nLWFkYS0wMDItY3VzdG9tbmFtZVwiXG4gICMgVXNlIG9ubHkgd2l0aCBhbiBhbHRlcm5hdGUgT3BlbkFJLWNvbXBhdGlibGUgQVBJIGVuZHBvaW50XG4gICAgbGxtX2RlcGxveW1lbnQ6XG4gICAgZW1iZWRkaW5nX2RlcGxveW1lbnQ6XG4gIG9wZW5haV9lbmRwb2ludDpcbiAgb3BlbmFpX29yZ19pZDpcbm5scDpcbiAgc2VydmVyX3VybDogXCJodHRwOi8vbG9jYWxob3N0OjU1NTdcIlxubWVtb3J5OlxuICBtZXNzYWdlX3dpbmRvdzogMTJcbmV4dHJhY3RvcnM6XG4gIGRvY3VtZW50czpcbiAgICBlbWJlZGRpbmdzOlxuICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgY2h1bmtfc2l6ZTogMTAwMFxuICAgICAgZGltZW5zaW9uczogMzg0XG4gICAgICBzZXJ2aWNlOiBcImxvY2FsXCJcbiMgICAgICBkaW1lbnNpb25zOiAxNTM2XG4jICAgICAgc2VydmljZTogXCJvcGVuYWlcIlxuICBtZXNzYWdlczpcbiAgICBzdW1tYXJpemVyOlxuICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgZW50aXRpZXM6XG4gICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgIGVtYmVkZGluZ3M6XG4gICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgICAgZGltZW5zaW9uczogMzg0XG4gICAgICAgIHNlcnZpY2U6IFwibG9jYWxcIlxuICAgIGVudGl0aWVzOlxuICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgIGludGVudDpcbiAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICBlbWJlZGRpbmdzOlxuICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgZGltZW5zaW9uczogMzg0XG4gICAgICBzZXJ2aWNlOiBcImxvY2FsXCJcbiMgICAgICBkaW1lbnNpb25zOiAxNTM2XG4jICAgICAgc2VydmljZTogXCJvcGVuYWlcIlxuc3RvcmU6XG4gIHR5cGU6IFwicG9zdGdyZXNcIlxuICBwb3N0Z3JlczpcbiAgICBkc246IFwicG9zdGdyZXM6Ly9wb3N0Z3Jlczpwb3N0Z3Jlc0Bsb2NhbGhvc3Q6NTQzMi8/c3NsbW9kZT1kaXNhYmxlXCJcbnNlcnZlcjpcbiAgIyBTcGVjaWZ5IHRoZSBob3N0IHRvIGxpc3RlbiBvbi4gRGVmYXVsdHMgdG8gMC4wLjAuMFxuICBob3N0OiAwLjAuMC4wXG4gIHBvcnQ6IDgwMDBcbiAgIyBJcyB0aGUgV2ViIFVJIGVuYWJsZWQ/XG4gICMgV2FybmluZzogVGhlIFdlYiBVSSBpcyBub3Qgc2VjdXJlZCBieSBhdXRoZW50aWNhdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBlbmFibGVkIGlmXG4gICMgWmVwIGlzIGV4cG9zZWQgdG8gdGhlIHB1YmxpYyBpbnRlcm5ldC5cbiAgd2ViX2VuYWJsZWQ6IHRydWVcbiAgIyBUaGUgbWF4aW11bSBzaXplIG9mIGEgcmVxdWVzdCBib2R5LCBpbiBieXRlcy4gRGVmYXVsdHMgdG8gNU1CLlxuICBtYXhfcmVxdWVzdF9zaXplOiA1MjQyODgwXG5hdXRoOlxuICAjIFNldCB0byB0cnVlIHRvIGVuYWJsZSBhdXRoZW50aWNhdGlvblxuICByZXF1aXJlZDogdHJ1ZVxuICAjIERvIG5vdCB1c2UgdGhpcyBzZWNyZXQgaW4gcHJvZHVjdGlvbi4gVGhlIFpFUF9BVVRIX1NFQ1JFVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzaG91bGQgYmVcbiAgIyBzZXQgdG8gYSBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgc2VjcmV0LiBTZWUgdGhlIFplcCBkb2NzIGZvciBkZXRhaWxzLlxuICBzZWNyZXQ6IFwiZG8tbm90LXVzZS10aGlzLXNlY3JldC1pbi1wcm9kdWN0aW9uXCJcbmRhdGE6XG4gICMgIFB1cmdlRXZlcnkgaXMgdGhlIHBlcmlvZCBiZXR3ZWVuIGhhcmQgZGVsZXRlcywgaW4gbWludXRlcy5cbiAgIyAgSWYgc2V0IHRvIDAgb3IgdW5kZWZpbmVkLCBoYXJkIGRlbGV0ZXMgd2lsbCBub3QgYmUgcGVyZm9ybWVkLlxuICBwdXJnZV9ldmVyeTogNjBcbmxvZzpcbiAgbGV2ZWw6IFwiaW5mb1wiXG5vcGVudGVsZW1ldHJ5OlxuICBlbmFibGVkOiBmYWxzZVxuIyBDdXN0b20gUHJvbXB0cyBDb25maWd1cmF0aW9uXG4jIEFsbG93cyBjdXN0b21pemF0aW9uIG9mIGV4dHJhY3RvciBwcm9tcHRzLlxuY3VzdG9tX3Byb21wdHM6XG4gIHN1bW1hcml6ZXJfcHJvbXB0czpcbiAgICAjIEFudGhyb3BpYyBHdWlkZWxpbmVzOlxuICAgICMgLSBVc2UgWE1MLXN0eWxlIHRhZ3MgbGlrZSA8Y3VycmVudF9zdW1tYXJ5PiBhcyBlbGVtZW50IGlkZW50aWZpZXJzLlxuICAgICMgLSBJbmNsdWRlIHt7LlByZXZTdW1tYXJ5fX0gYW5kIHt7Lk1lc3NhZ2VzSm9pbmVkfX0gYXMgdGVtcGxhdGUgdmFyaWFibGVzLlxuICAgICMgLSBDbGVhcmx5IGV4cGxhaW4gbW9kZWwgaW5zdHJ1Y3Rpb25zLCBlLmcuLCBcIlJldmlldyBjb250ZW50IGluc2lkZSA8Y3VycmVudF9zdW1tYXJ5PjwvY3VycmVudF9zdW1tYXJ5PiB0YWdzXCIuXG4gICAgIyAtIFByb3ZpZGUgYSBjbGVhciBleGFtcGxlIHdpdGhpbiB0aGUgcHJvbXB0LlxuICAgICNcbiAgICAjIEV4YW1wbGUgZm9ybWF0OlxuICAgICMgYW50aHJvcGljOiB8XG4gICAgIyAgIDxZT1VSIElOU1RSVUNUSU9OUyBIRVJFPlxuICAgICMgICA8ZXhhbXBsZT5cbiAgICAjICAgICA8UFJPVklERSBBTiBFWEFNUExFPlxuICAgICMgICA8L2V4YW1wbGU+XG4gICAgIyAgIDxjdXJyZW50X3N1bW1hcnk+e3suUHJldlN1bW1hcnl9fTwvY3VycmVudF9zdW1tYXJ5PlxuICAgICMgICA8bmV3X2xpbmVzPnt7Lk1lc3NhZ2VzSm9pbmVkfX08L25ld19saW5lcz5cbiAgICAjICAgUmVzcG9uc2Ugd2l0aG91dCBwcmVhbWJsZS5cbiAgICAjXG4gICAgIyBJZiBsZWZ0IGVtcHR5LCB0aGUgZGVmYXVsdCBBbnRocm9waWMgc3VtbWFyeSBwcm9tcHQgZnJvbSB6ZXAvcGtnL2V4dHJhY3RvcnMvcHJvbXB0cy5nbyB3aWxsIGJlIHVzZWQuXG4gICAgYW50aHJvcGljOiB8XG5cbiAgICAjIE9wZW5BSSBzdW1tYXJpemVyIHByb21wdCBjb25maWd1cmF0aW9uLlxuICAgICMgR3VpZGVsaW5lczpcbiAgICAjIC0gSW5jbHVkZSB7ey5QcmV2U3VtbWFyeX19IGFuZCB7ey5NZXNzYWdlc0pvaW5lZH19IGFzIHRlbXBsYXRlIHZhcmlhYmxlcy5cbiAgICAjIC0gUHJvdmlkZSBhIGNsZWFyIGV4YW1wbGUgd2l0aGluIHRoZSBwcm9tcHQuXG4gICAgI1xuICAgICMgRXhhbXBsZSBmb3JtYXQ6XG4gICAgIyBvcGVuYWk6IHxcbiAgICAjICAgPFlPVVIgSU5TVFJVQ1RJT05TIEhFUkU+XG4gICAgIyAgIEV4YW1wbGU6XG4gICAgIyAgICAgPFBST1ZJREUgQU4gRVhBTVBMRT5cbiAgICAjICAgQ3VycmVudCBzdW1tYXJ5OiB7ey5QcmV2U3VtbWFyeX19XG4gICAgIyAgIE5ldyBsaW5lcyBvZiBjb252ZXJzYXRpb246IHt7Lk1lc3NhZ2VzSm9pbmVkfX1cbiAgICAjICAgTmV3IHN1bW1hcnk6YFxuICAgICNcbiAgICAjIElmIGxlZnQgZW1wdHksIHRoZSBkZWZhdWx0IE9wZW5BSSBzdW1tYXJ5IHByb21wdCBmcm9tIHplcC9wa2cvZXh0cmFjdG9ycy9wcm9tcHRzLmdvIHdpbGwgYmUgdXNlZC5cbiAgICBvcGVuYWk6IHwiCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogInRpbWVvdXQgMTBzIGJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS84MDAwJyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDQwcwo=",
- "tags": [
- "lowcode",
- "nocode",
- "ai",
- "llm",
- "openai",
- "anthropic",
- "machine-learning",
- "rag",
- "agents",
- "chatbot",
- "api",
- "team",
- "bot",
- "flows",
- "memory"
- ],
- "logo": "svgs/zep.png",
- "minversion": "0.0.0",
- "port": "8000"
- },
"zipline": {
"documentation": "https://github.com/diced/zipline?utm_source=coolify.io",
"slogan": "A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!",
diff --git a/tests/Browser/ExampleTest.php b/tests/Browser/ExampleTest.php
deleted file mode 100644
index 15dc8f5f1..000000000
--- a/tests/Browser/ExampleTest.php
+++ /dev/null
@@ -1,20 +0,0 @@
-browse(function (Browser $browser) {
- $browser->visit('/')
- ->assertSee('Laravel');
- });
- }
-}
diff --git a/tests/Browser/LoginTest.php b/tests/Browser/LoginTest.php
new file mode 100644
index 000000000..cac9a65fe
--- /dev/null
+++ b/tests/Browser/LoginTest.php
@@ -0,0 +1,32 @@
+browse(function (Browser $browser) use ($password, $email) {
+ $browser->visit('/login')
+ ->type('email', $email)
+ ->type('password', $password)
+ ->press('Login')
+ ->assertPathIs('/')
+ ->screenshot('login');
+ });
+ }
+}
diff --git a/tests/DuskTestCase.php b/tests/DuskTestCase.php
index 8628871a1..98e90fa79 100644
--- a/tests/DuskTestCase.php
+++ b/tests/DuskTestCase.php
@@ -39,7 +39,7 @@ abstract class DuskTestCase extends BaseTestCase
})->all());
return RemoteWebDriver::create(
- $_ENV['DUSK_DRIVER_URL'] ?? 'http://localhost:9515',
+ 'http://localhost:4444',
DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY,
$options
@@ -50,23 +50,8 @@ abstract class DuskTestCase extends BaseTestCase
/**
* Determine if the browser window should start maximized.
*/
- protected function shouldStartMaximized(): bool
- {
- return isset($_SERVER['DUSK_START_MAXIMIZED']) ||
- isset($_ENV['DUSK_START_MAXIMIZED']);
- }
-
- /**
- * Determine whether the Dusk command has disabled headless mode.
- */
- protected function hasHeadlessDisabled(): bool
- {
- return isset($_SERVER['DUSK_HEADLESS_DISABLED']) ||
- isset($_ENV['DUSK_HEADLESS_DISABLED']);
- }
-
protected function baseUrl()
{
- return rtrim(config('app.url'), '/');
+ return 'http://localhost:8000';
}
}
diff --git a/versions.json b/versions.json
index 7d8a9b2d1..e24038001 100644
--- a/versions.json
+++ b/versions.json
@@ -1,7 +1,7 @@
{
"coolify": {
"v4": {
- "version": "4.0.0-beta.361"
+ "version": "4.0.0-beta.360"
},
"nightly": {
"version": "4.0.0-beta.362"
@@ -11,6 +11,9 @@
},
"realtime": {
"version": "1.0.3"
+ },
+ "sentinel": {
+ "version": "next"
}
}
}
|